Docbook to LaTeX

จากความจำเป็นที่ต้องเตรียมเอกสาร แนะนำการติดตั้ง RahuNAS เพื่อส่ง มหาวิทยาลัยขอนแก่น ซึ่งได้ผัดผ่อนมานานหลายเดือน เนื่องจากติดภารกิจอะไรหลาย ๆ อย่างที่แทรกเข้ามาเรื่อย ๆ ในทุกช่วงจังหวะของชีวิต จนกระทั่งได้จัดอบรมเจ้าหน้าที่ศูนย์คอมพิวเตอร์ ม.ข. จึงจำเป็นต้องทำเอกสาร แต่ในวันที่อบรม เอกสารยังไม่สมบูรณ์ ซึ่งในการเตรียมเอกสารครั้งนี้ ตั้งใจจะใช้ Docbook และเบื้องต้นก็สามารถทำออกมา และสร้างเป็นเอกสาร HTML ได้ แต่ทว่าในความต้องการที่มากขึ้น คือ ต้องการทำเป็น PDF เพื่อที่จะได้พิมพ์ออกกระดาษ ไปส่งให้ ม.ข. ต่อไปได้ด้วย

พอเริ่มทำก็ไม่ได้ง่ายอย่างที่คิดสักเท่าไร ปัญหาหลาย ๆ อย่างเกิดขึ้น เนื่องจาก เอกสารที่เราเตรียมเป็นภาษาไทย ซึ่งหลาย ๆ โปรแกรมที่ลอง อย่างเช่น xsltproc, jade นั้น อาจจะรองรับภาษาไทย หรือหรือภาษาอื่น ๆ ที่ไม่ใช่ภาษาอังกฤษ แต่ทว่า ผมหาข้อมูลสำหรับการสร้าง PDF ไฟล์โดยใช้โปรแกรมเหล่านี้ ให้แสดงภาษาไทยได้ถูกต้องไม่เจอ จึงค้นไปเรื่อย ๆ

ก็เจอเข้ากับ "dblatex" http://dblatex.sourceforge.net/ ซึ่งใน Debian ก็มี Package สำหรับติดตั้งได้อย่างสะดวก :P
คราวนี้ก็ลองผิดลองถูก ตามคำแนะนำจาก Website หนึ่งที่เป็นภาษาญี่ปุ่น ผมทำ Link หาย -_-'' แต่ว่า ยังจำ Parameters ได้อยู่ (คงแค่ตอนนี้ อิอิ)

$ dblatex -P latex.encoding=utf8 -P latex.babel.language=thai -t tex docbook.xml

ซึ่งหลังจาก Process เสร็จสิ้น เราจะได้ไฟล์ชื่อ docbook.tex ออกมา แต่ว่าเรื่องยังไม่จบครับ หลังจากที่ลองแปลงเอกสาร LaTeX เป็น PDF โดยใช้โปรแกรม pdflatex แล้วนั้น บางส่วนของเอกสาร ไม่แสดงเป็นภาษาไทย คราวนี้ก็งงเป็นไก่ตาแตกเลยครับ (ผมไม่มีความรู้เรื่อง LaTeX มากนัก) แต่ดีที่ผู้เชี่ยวชาญด้าน ThaiLaTeX (พี่เทพ) online อยู่ เลยได้โอกาสลองถามครับ และด้วยประสบการณ์ของพี่เทพ ก็แก้ไขได้อย่างรวดเร็วครับ ซึ่งหลักในการ Workaround ในครั้งนี้ ก็พอจะแสดงเป็น stream edit ให้ดูได้ดังนี้

$ sed -i -e '/\\usepackage\[T2A.*/d' \
    -e '/{babel}/d' \
    -e '/{ucs}/i\ \\usepackage\[thai\]{babel}' \
    docbook.tex

ซึ่งคำสั่งดังกล่าว ก็เป็นการลบการเรียกใช้ Package ที่ไม่จำเป็น (สำหรับงานเอกสารของผม) กับจัดการยก thai-babel ไปไว้ในตำแหน่งที่จะทำให้เวลาสร้างเอกสารเป็น PDF จาก LaTeX แสดงผลได้อย่างถูกต้อง ซึ่งเป็นความโชคดีมาก ๆ ที่จัดทำเอกสารที่เป็น LaTeX ในช่วงที่ ThaiLaTeX มีการ support unicode (UTF-8) แล้ว ทำให้ลดความยุ่งยากในการแปลงเอกสาร ก่อนทำการแปลงเป็น PDF ไปได้อย่างมาก

คราวนี้ ก็ถึงเวลาได้ใช้เครื่องมือที่คนไทยพัฒนาอีกหนึ่งอย่างคือ swath ซึ่งอยู่ในโครงการเดียวกับ ThaiLaTeX นั่นเอง โปรแกรมนี้ ผู้ที่ใช้ LaTeX และต้องเตรียมเอกสารภาษาไทย คงจะคุ้นเคยกันดี เป็นโปรแกรมที่ช่วยตัดคำไทย ให้แยกกันออกเป็นคำ ๆ เพื่อให้ LaTeX Processor ทำการจัดบรรทัด และรูปแบบสำหรับภาษาไทยได้สวยงามเป็นระเบียบยิ่งขึ้น

$ swath -u u,u -f latex < docbook.tex > docbook-wbr.tex

หลังจากนั้น ก็แปลงเป็น PDF ได้อย่างสมบูรณ์

$ pdflatex docbook-wbr.tex

ดูผลงาน :P

$ evince docbook-wbr.tex