วันศุกร์ที่ 13 สิงหาคม พ.ศ. 2553

ประสบการณ์การสร้าง Template ของ Latex สำหรับการเขียนบทความวิจัย

จากที่เป็นเพียงผู้ใช้ Latex มานาน ในที่สุดผมก็มีความต้องการออกแบบเอกสารใหม่มากเพียงพอที่จะก้าวข้ามระดับ "ขั้นต้น" ไปสู่ "ขั้นกลาง" ซึ่งก็คือการทำ Customize Latex และการสร้าง Class ไฟล์ ที่ผมใฝ่ฝันที่จะทำให้ได้มานานแล้วนั่นเอง

สำหรับท่านที่ยังไม่ทราบขออธิบายตามความเข้าใจของผมเองสักนิดว่า Class File (xxx.cls) คืออะไร ในระดับที่ผมเข้าใจ Class File คือไฟล์ที่กำหนดพฤติกรรมของคำสั่งต่าง ๆ ของ Latex พฤติกรรมเหล่านี้อาจรวมถึง ขนาดกระดาษ กั้นหน้า กั้นหลัง แบบอักษร ฯลฯ หลายคนก็เรียก Class File ที่ทำหน้าที่เหล่านี้ว่า Template (แต่ผมคิดว่าไม่ใช่ชื่ออย่างเป็นทางการในวงการ Latex)

บางคนก็อาจสงสัยว่า ที่ผมว่าผมใฝ่ฝันที่จะทำเป็นมานานนั้น ทำไมมันนานนัก? มันยากนักรึ? คำตอบคือมันก็ไม่ยาก แต่มันก็ไม่ง่ายครับ แต่ที่ทำไม่ได้สักทีเพราะ
  • แต่เดิมนั้นผมยึดติดกับ Syntax ของ Latex มากเกินไป พอมี Syntax แปลก ๆ เราก็ปิดกั้นสมองเลย ไม่พยายามทำความเข้าใจ
  • อันที่จริงมันก็ไม่ยากมาก แต่ผมไม่อ่านรายละเอียดที่เขามีให้อ่าน เอาแต่อ่านผ่าน ๆ หวังจะเจอ Quick Solution ตอนนี้เริ่มเข้าใจแล้วว่าโลกนี้ไม่ใช่มาม่า ไวไว ไม่มีอะไรง่ายกว่าที่มันควรจะเป็น
ตอนนี้มีความต้องการสร้าง Class File มาก ก็เลยไม่เสียเวลาหา Quick Solution แล้วลุยตามคำแนะนำในอินเตอร์เนตเลย จากการค้นดูพบเอกสารที่สำคัญ 3 รายการด้วยกันคือ
บทความที่ควรอ่านก่อนสำหรับผมก็คือบทความแรก บทความนี้นำเสนอแนวคิดว่า Latex มีคนเขียน Package ต่าง ๆ เยอะแล้ว ถ้าต้องการปรับแต่งเอกสาร ทำผ่าน Package พวกนี้โดยไม่ต้องไปเขียน Code หน้าตาแปลก ๆ ก็ได้ เพราะงานส่วนใหญ่ที่เราอยากทำนั้น เราไม่ใช่คนแรกแน่ ๆ เช่นการตั้งกั้นหน้า กั้นหลัง มันต้องมีคนเขียนโปรแกรมเพื่อจัดการงานเหล่านี้ไว้แล้ว สิ่งที่เราต้องทำก็คือ รู้ให้ชัดว่าเราต้องการอะไร แล้วก็หาโปรแกรม (Package) ที่สอดคล้องกับความต้องการของเรามาใช้งาน

บทความที่สองจะช่วยเวลาเราไม่รู้ว่าคำสั่งนี้ทำงานอย่างไร บทความที่สองจะมี Code ที่สำคัญของ Class article ให้อ่านพร้อมอธิบายผลของมัน ทำให้เข้าใจกลไกการทำงานของ Class มากขึ้น

บทความที่สาม อืม...อันที่จริง ผมยังไม่ค่อยได้อ่านบทความที่สามนี้เท่าไรนะ

เอกสารอีกฉบับเป็นหนังสือเลยคือ The LaTeX Companion
หากไม่มีอธิบายในเอกสาร 3 ฉบับข้างต้น ผมจะมาไล่ดูใน Index ของหนังสือเล่มนี้ (แน่ะ! Quick Solution อีกแล้ว - แหมหนังสือมันหนาตั้ง 1090 หน้าเชียวนะครับ)

ตอนนี้ผมต้องการสร้าง Class File สำหรับการเขียนบทความวิจัยสำหรับการประชุมวิชาการทางวิศวกรรมไฟฟ้า (Electrical Engineering Conference - EECON) สิ่งที่ต้องทำจึงประกอบด้วย
  1. เรียกใช้ Class proc ซึ่งมีอยู่แล้ว จากนั้นจึงปรับแก้พารามิเตอร์ต่าง ๆ
  2. ตั้งค่าขอบกระดาษ ทำได้โดยใช้ Package geometry
  3. ตั้งค่าแบบอักษรเป็นแบบ Times Roman ทำได้โดยใช้ Package mathptmx
  4. ตั้งค่าระยะห่างระหว่างชื่อบทความกับชื่อผู้แต่ง ทำได้โดยใช้คำสั่ง renewcommand กับ maketitle
  5. ตั้งค่าระยะห่างระหว่างชื่อผู้แต่งกับเนื้อบทความ ทำได้โดยใช้คำสั่ง renewcommand กับ maketitle
  6. สร้างคำสั่งที่จะผูกชื่อผู้แต่งกับสถาบันไว้ด้วยกัน
  7. สร้างคำสั่งที่จะบังชื่อผู้แต่งกับสถาบัน สำหรับฉบับที่จะส่งให้ Reviewer อ่าน
  8. สร้างคำสั่ง Keyword
  9. ตั้งค่าระยะห่างระหว่าง หมายเลขหัวข้อกับชื่อหัวข้อ ทำได้โดยใช้ Package titlesec
  10. ทำให้ย่อหน้าแรกหลังจากหัวข้อ มีย่อหน้า (Indent) ทำได้โดยใช้ Package indentfirst
  11. จัดการกับระบบอ้างอิง
  12. สร้างคำสั่งเติมรูปและประวัติผู้เขียน
ตอนนี้ทำส่วนที่ง่ายเสร็จไปบางส่วนแล้ว หากทำได้ทั้งหมดก็จะนำมาแบ่งปันประสบการณ์กันต่อไปครับ

สิ่งที่ได้มาจากการ "ลงมือทำ" ก็คือ คำสั่งที่เคยดูแปลกตาเมื่อสมัยก่อน ตอนนี้ผมก็เริ่มรู้สึกคุ้น ๆ กับมันมากขึ้น และเริ่ม "อ่านออก" หลายคำสั่งแล้ว

หากสามารถสร้าง Class File สำหรับ EECON ภาษาอังกฤษได้ ต่อไปจะพยายามทำ Class File สำหรับ EECON ภาษาไทยดู อันนี้ดูจะยากกว่าทั้งในเรื่องต้องมี Title 2 หัว คือทั้งภาษาไทยและภาษาอังกฤษ ต้องมีทั้งบทคัดย่อภาษาไทย และ Abstract ภาษาอังกฤษ ต้องจัดการระบบอ้างอิงเอกสารภาษาไทยปนกับภาษาอังกฤษด้วย ก็จะค่อย ๆ ลองทำไป ใครมีคำแนะนำอะไรก็ยินดีเรียนรู้และขอขอบคุณล่วงหน้าครับ

ไม่มีความคิดเห็น: