วันอังคารที่ 31 สิงหาคม พ.ศ. 2553

การเขียนบันทึกข้อความ (หนังสือราชการภายใน) โดยใช้ Latex (เพิ่มเติม)

คราวที่แล้วเขียนคลาสขึ้นมา (อันที่จริงก็เรียกแพคเกจหลายแพคเกจมาช่วย) สำหรับบันทึกข้อความ พบข้อบกพร่องดังนี้
  1. ผมใช้คำสั่ง \tabular สำหรับส่วนหัวของบันทึกข้อความ ทำให้หาก "เรื่อง" หรือ "เรียน" ซึ่งอยู่คอลัมน์ที่หนึ่งมีความยาวมาก เบอร์โทรศัพท์ของหน่วยงาน และวันที่ จะตกขอบขวา เพราะมันอยู่คอลัมน์ที่สองทั้งคู่
  2. คราวที่แล้ว ผมลืมสร้างคำสั่งสำหรับเขียนคำลงท้ายลงตำแหน่งที่เหมาะสม เช่น ด้วยความนับถือ เป็นต้น
  3. การทำบันทึกข้อความข้ามหน่วยงานภายในที่ถูกต้อง จะต้องให้หัวหน้าหน่วยงานรับทราบด้วยทุกครั้ง โดยการ เรียน [ใครก็แล้วแต่ที่อยู่นอกหน่วยงาน] ผ่าน [หัวหน้าหน่วยงานของท่าน] ซึ่งหัวหน้าหน่วยงานจะต้องลงนามรับทราบด้วย ในคลาสเดิมมันไม่มีคำสั่งสำหรับการนี้
ปัญหาที่ส่วนหัวของจดหมาย
ปัญหาแรก แก้ได้โดยใช้แพคแกจ multirow ซึ่งเรียกใช้โดยเพิ่ม
 \RequirePackage{multirow}
เข้าไปในคลาส แล้วแก้ไขคำสั่ง \opening เป็น
\newcommand{\openning}{%
\noindent \parbox{0.2\textwidth}{\raggedright{\includegraphics[width=20mm]{Tra-Khrut.eps}}} \hfill {\Large\bf บันทึกข้อความ} \hfill \parbox{0.2\textwidth}{\qquad}
\begin{tabular}{@{}ll}
{\bfส่วนราชการ} \@officeunit & {\bf โทร.} \@telephonenum \\
{\bfที่} \@unitid / \@memoreg & \@date \\
\multicolumn{2}{@{}l}{{\bfเรื่อง} \@title} \\
\multicolumn{2}{@{}l}{{\bfเรียน} \@letterto}
\end{tabular} % เว้นหนึ่งบรรทัดข้างล่างนี้ห้ามลบ

}
โปรดสังเกตคำสั่ง \multicolumn{2}{@{}l}{ข้อความที่จะใส่ในตาราง} ที่บรรทัดที่ 4 และ 5 จากบรรทัดสุดท้าย เลข 2 หมายถึงข้อความนี้อยู่ใน 2 คอลัมน์ พารามิเตอร์ {@{}l} หมายถึงชิดซ้ายโดยไม่เว้นขอบตาราง

ในโอกาสต่อไป หากทราบชัดเจนว่าหมายเลขโทรศัพท์และวันที่ควรอยู่ตำแหน่งใด ก็สามารถกำหนดได้โดยกำหนดความกว้างของตารางได้ทันที

ปัญหาเรื่องคำลงท้าย
ก็เพิ่มคำสั่งเข้ามาเลย เหมือนคำสั่งอื่น ๆ คือสร้างคำสั่งเพื่อรับคำลงท้ายจากเอกสาร tex เข้ามา
\newcommand*{\closingphrase}[1]{\def\@closingphrase{#1}}
แล้วก็กำหนดตำแหน่งให้เขียนในตำแหน่งที่ตรงกับการลงนามท้ายหนังสือ
\newcommand{\closing}{%
\vskip 0.5em
\parbox{0.3\textwidth}{\qquad}\parbox{0.7\textwidth}{\centering \@closingphrase}
}
ในอนาคต อาจเก็บตัวเลข 0.3 0.7 ที่เห็นข้างบนนี้ เป็นตัวแปร แล้วกำหนดค่าตัวแปรทีเดียวที่ต้นคลาสเลยก็น่าจะทำได้



ปัญหาที่การลงนามของหัวหน้าหน่วยงาน
เพิ่มคำสั่งเพื่อรับชื่อและตำแหน่งของหัวหน้าหน่วยงานโดย
\newcommand*{\approvalperson}[1]{\def\@approvalperson{#1}}
แล้วนำไปเขียนใต้ชื่อผู้ลงนามเอกสาร ให้ตำแหน่งตรงกันกับผู้ลงนาม เหมือนกับคำลงท้าย
\newcommand{\approvalsigned}{%
\vskip 3em
\parbox{0.3\textwidth}{\qquad}\parbox{0.7\textwidth}{\centering \@approvalperson}
}
ในส่วนของหัวหน้าหน่วยงานนี้เป็นตัวเลือก ถ้าไม่เรียกคำสั่ง \approvalsigned ก็ไม่มีอะไรเกิดขึ้น

ท่านสามารถดาวน์โหลดแฟ้มข้อมูลของคลาสที่ปรับปรุงแล้ว พร้อมตัวอย่างการใช้งาน ได้จากห้องทำงานของผมครับ

2 ความคิดเห็น:

ไม่ระบุชื่อ กล่าวว่า...

เรียน อ. กิตติพงษ์

ขอบคุณอย่างสูง ที่ช่วยสร้าง cls สำหรับบันทึกข้อความ ไว้พบปัญหา หรือมีข้อแนะนำใดๆ จะแจ้งให้ทราบครับ

สาธก

jark กล่าวว่า...

ยินดีที่มีประโยชน์ครับผม
และขอขอบคุณล่วงหน้าสำหรับคำแนะนำเพื่อปรับปรุงให้ cls ใช้งานได้ง่ายและกว้างขวางมากขึ้นครับ