วันศุกร์ที่ 25 พฤศจิกายน พ.ศ. 2554

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

หลังจากที่สร้างคลาสสำหรับการเขียนบันทึกข้อความไปกว่าปี ก็ได้รับคำถาม/ข้อเสนอแนะ 2 ประการคือ
  1. คลาสเดิมต้องใช้กับการเข้ารหัสแบบ TIS-620 เท่านั้น ดูเหมือนว่าโลกกำลังเคลื่อนตัวเข้าสู่ UTF8
  2. คลาสเดิมทำงานได้กับ latex เท่านั้น ไม่สามารถทำงานกับ pdflatex ได้ เพราะ pdflatex ไม่รองรับแฟ้มภาพในรูปแบบ EPS
จึงทำการปรับปรุงดังนี้

การเข้ารหัส
ในคลาสจะมีข้อความภาษาไทยที่เป็น Hardcode อยู่ เช่นคำว่า "บันทึกข้อความ" "เรื่อง" "เรียน" เป็นต้น ดังนั้นหากต้องการใช้ UTF8 ตั้งแต่ในคลาส ก็ต้องเรียกแพคเกจ inputenc ตั้งแต่ในคลาส โดย

\RequirePackage[thai]{babel}
\RequirePackage[utf8x]{inputenc}

ในส่วนหัวของคลาส และเมื่อเรียกใช้แพคเกจตั้งแต่ในคลาสไปแล้วจึงไม่จำเป็นต้องเรียกแพคเกจ Babel และ inputenc ในแฟ้มเอกสารซ้ำอีก

ภาพตราครุฑ
ภาพตราครุฑต้นฉบับอยู่ที่ wikipedia เป็นภาพแบบ GIF ต้องแปลงแฟ้มให้อยู่ในรูปแบบ PNG (สำหรับ pdflatex) และ EPS (สำหรับ latex) เสียก่อน โชคดีที่ Debain/wheezy มีแพคเกจชื่อ sam2p เอาไว้แปลงภาพได้ดังนี้

> sam2p Tra-Khrut.gif Tra-Khrut.png
> sam2p Tra-Khrut.gif Tra-Khrut.eps

ทีนี้ก็ต้องหาทางบอกคลาสว่าผู้ใช้เรียกใช้คำสั่งอะไรระหว่าง pdflatex กับ latex ซึ่งทำได้โดยเรียกใช้แพคเกจ ifpdf และให้คลาสเลือก

\RequirePackage{ifpdf}
\ifpdf
 \includegraphics[width=20mm]{Tra-Khrut.png}
\else
 \includegraphics[width=20mm]{Tra-Khrut.eps}
\fi

หากไม่ชอบแฟ้ม PNG อาจแปลงแฟ้มภาพเป็น JPG ก็ได้