Monday, March 28, 2005

ลอง Thai LaTeX บน Mac OS X

วันก่อนคอมไพล์ Firefox บน Mac จำเป็นต้องติดตั้งไฟล์เพิ่มเติมจาก Fink (ตัวจัดการแพคเกจ) ก็เลยถือโอกาสติดตั้งแพคเกจ tetex เข้าไปด้วย เผื่อว่าวันหลังจะใช้ TeX บน Mac

หลังจากลองแล้วว่า latex ใช้ได้ดี ก็ไปเอา thailatex-0.3.3.tar.gz มาติดตั้งเพิ่ม กะว่าจะใช้ TeX ภาษาไทยดู

เห็นว่า thailatex-0.3.3.tar.gz มี configure มาให้ ก็เลยสั่ง

$ ./configure
$ make install
อ้าว เห็นแวบๆว่าไฟล์ทั้งหลายถูกคัดลอกไปที่ /usr/local ซึ่งเป็นคนละที่กับตำแหน่งที่ Fink ชอบใช้ คือ /sw ก็เลยลองใหม่
$ ./configure --prefix=/sw
$ make install
คราวนี้ดูเหมือนจะเรียบร้อยดี คือไฟล์ของ TeX ภาษาไทยไปอยู่ในที่เดียวกันกับไฟล์จากแพคเกจ tetex จากนั้นก็เอา cttex บน linux.thai.net มาติดตั้งเพิ่ม (แกะออกมาแล้วสั่ง make เลย) เนื่องจากตัว cttex ที่ใช้อยู่เองไม่มี -W สำหรับ Thai LaTeX แล้วทดลองสร้างเอกสารตัวอย่างภาษาไทย โดย
$ cd doc
$ cttex -W < orchid.tex > orchid.ttex
$ latex orchid.ttex
$ xdvi orchid.dvi
อันสุดท้ายตัวอักษรไทยไม่ขึ้นมาเลย แต่มีข้อความผิดพลาดของ mktexpk บอกว่าสร้างฟอนต์บิตแมพสำหรับ norasi ไม่ได้ ลองสั่ง dvips ก็เจอคล้ายๆกัน คือหาฟอนต์ไทยไม่เจอ

ลองเข้าไปดูๆใน /sw ก็ดูเหมือนจะติดตั้งเรียบร้อยดี เจอไฟล์สำหรับ norasi ทั้งหลายอยู่ในที่ที่มันควรอยู่เรียบร้อยแล้ว ลองเปิด mktexpk ขึ้นมาดู (เป็น shell script) เจอว่าโปรแกรมนี้ไปเรียก gsftopk -t ... อีกที แล้ว gsftopk ดันส่งค่ากลับมาว่าหาฟอนต์ไม่เจอ

อยากรู้ว่า gsftopk หาฟอนต์จากไหน ก็เลยลอง trace ดู พบว่าบน OS X ไม่มี strace (linux) และไม่มี truss (Solaris) แต่เจอคำสั่ง ktrace แทน ซึ่งพอสั่ง ktrace gsftopk -t ... แล้ว จะได้ไฟล์ ktrace.out ออกมา ต้องเปิดดูด้วย kdump -f ktrace.out อีกทีหนึ่ง

จากผลของ kdump พบว่า gsftopk ไปเปิด map ไฟล์ มาจาก /sw/var/lib/texmf/dvips/config/psfonts_t1.map และในไฟล์นี้ ไม่มีชื่อฟอนต์ norasi !

พอดีตอนต้นไฟล์บอกว่า อย่าแก้ไฟล์นี้ด้วยมือ แต่ให้ไปแก้ไฟล์ texmf/web2c/updmap.cfg (อยู่ไหนก็ไม่รู้) แล้วสั่ง updmap อีกที

หาๆดูไปเจอไฟล์ .cfg ที่ /sw/var/lib/texmf/web2c/updmap.cfg ตอนท้ายมีเขียนไว้แล้วว่า

...
# Euro Symbol fonts by Henrik Theiling; CTAN:fonts/eurosym
MixedMap eurosym.map
Map thai.map 
คือมีเพิ่ม thai.map อยู่แล้วนี่หว่า ก็เลยสั่ง updmap อีกทีไปเลย เสร็จแล้วก็ไปดู /sw/var/lib/texmf/dvips/config/psfonts_t1.map คราวนี้มี norasi แล้ว

ลองเรียก xdvi, dvips ตกลงแสดงภาษาไทยได้ สวยงาม :)

แปลกใจว่าทำไมตอนสั่ง configure; make install ทีแรก ถึงไม่ได้จัดการ updmap ให้เอง ? ลองเอา log ไฟล์ที่เก็บไว้มาดู เห็นเขียนไว้ว่า

using config file /sw/var/lib/texmf/web2c/updmap.cfg
/sw/var/lib/texmf/web2c/updmap.cfg unchanged. Map files not recreated.
ไม่รู้ทำไมถึงคิดว่าไม่มีการเปลี่ยนแปลง และไม่สร้าง map ไฟล์ให้ใหม่

สรุป

ขั้นตอนการใช้ Thai Latex บน Mac OS X

  1. ติดตั้ง Fink

  2. ติดตั้ง tetex ผ่าน Fink ลองใช้งานว่าทุกอย่างเรียบร้อยดี

  3. ดาวน์โหลด cttex บน linux.thai.net แล้วติดตั้งโดยแกะออกมา ตามด้วยเรียก make

  4. ดาวน์โหลด thailatex-0.3.3.tar.gz แล้วติดตั้งโดย
    $ ./configure --prefix=/sw
    $ make install
    $ updmap
    

  5. ลองใช้งานโดย
    $ cd doc
    $ cttex -W < orchid.tex > orchid.ttex
    $ latex orchid.ttex
    $ xdvi orchid.dvi
    

5 comments:

bact' said...

ขอบคุณครับ :)

Thep said...

เรื่อง updmap ไม่มีผลใน fresh install เนี่ย เคยเจอเหมือนกันครับ แต่ก็สั่ง updmap ขืนใจมันตลอด คิดว่าจะแกะสักวันเหมือนกัน

วันนี้เห็นพี่ฮุ้ยเขียนถึง ก็เลยลองไปแกะดู ผมลองเพิ่ม updmap --disable thai.map --nohash --nomkmap ก่อนที่จะ updmap --enable Map thai.map ใน CVS แล้วนะครับ เพื่อการันตีว่ามันจะ update font map เสมอ หวังว่าจะได้ผล

McKay said...

ผมใช้ tetex (pdfeTeX) version 3.141592-1.21a-2.2 (Web2C 7.5.4) ลงด้วย Fink บน Mac OS 10.4.1 เมื่อลองลง cttex กับ thailatex ตามที่บอก ก็ไม่มีปัญหาจนมาถึงตอนรัน updmap ก็มีข้อความผิดพลาดแจ้งมาว่า default directory ได้มีการ update เป็น texmf-dist ซึ่งพอลองคัดลอก thai.map ไปใน directory ใหม่นี้ดูก็ยังคงได้ข้อความพลาดเหมือนเดิม ผมก็เลยลองรันเอกสารตัวอย่างแบบทื่อ ๆ
$ cttex -W < orchid.tex > orchid.ttex
$ latex orchid.ttex
$ xdvi orchid.dvi
เอกสาร dvi ก็แสดงภาษาไทยได้สวยงามไม่มีปัญหา แต่พอลองแปลงเป็น PDF ด้วยทั้ง dvipdf หรือ save as... pdf บน xdvi ฟอนต์ภาษาไทยก็กลายเป็นสี่เหลี่ยมเต็มไปหมด แถมมีข้อความเตือนตอนที่ทำ dvipdf มาว่า

Warning: module writet1 of dvips (file lthuni.enc): cannot open encoding file for reading

ผมพยายามหาทางลง LaTeX ภาษาไทยบน ​Mac มาเป็นปีแล้วแต่ไม่เคยประสบผมสำเร็จเลย ครั้งนี้เป็นครั้งที่ใกล้ความจริงมากที่สุดแม้จะไม่ได้ถึง ​PDF แต่แค่เห็นภาษาไทยขึ้นบน xdvi ก็ประทับใจแลัว ไม่ทราบว่าคุณฮุ้ยเห็นว่าควรทำยังไงกับปัญหาการแปลงเป็น PDF ดีครับ

Hui/ฮุ้ย said...

ลองสร้าง PDF ด้วย

pdflatex orchid.ttex

โดยตรงดูหรือยังครับ

เรื่อง dvips/pdf ใช้ไม่ได้ อาจจะเกี่ยวข้องกับที่ updmap ผิดพลาด ซึ่งอาจต้องไปแก้ตรงนั้นก่อน

McKay said...

pdflatex ก็ไม่ work ครับ สงสัยคงต้องแก้ปัญหาที่ updmap ก่อน ผมก็ไม่ค่อยมีความรู้เกี่ยวกับเรื่องพวกนี้ซะด้วย ไม่ทราบว่าคุยฮุ้ยพอจะมีคำแนะนำอะไรไหมครับ