Theppitak's blog

My personal blog.

26 กรกฎาคม 2552

ThaiLaTeX Now Supports UTF-8

ตามธรรมเนียมปกติ หลังจากออก thaifonts-scalable รุ่นใหม่แล้ว ก็มักจะตามด้วยการ update ฟอนต์มาใช้กับ thailatex ด้วย แต่ปรากฏว่าไม่ได้ทำมาตั้งปีครึ่ง เพราะไม่มีเวลา ตอนนี้ ไหน ๆ ผมก็เริ่มปล่อยมือจากงานแปลแล้ว ทำให้มีเวลากลับมาทำงานพัฒนาอีกครั้ง ก็เลยได้กลับไปปัดฝุ่น thailatex อีก

หลังจาก update ฟอนต์ตามปกติแล้ว ก็มีเรื่องหนึ่งที่คาใจอยู่ คือการใช้ UTF-8 ในเอกสาร LaTeX ซึ่งตามปกติแล้ว thailatex จะรองรับแต่ TIS-620 เท่านั้น เวลาเตรียมเอกสาร จึงยังต้องใช้ xiterm+thai หรือต้องกำหนด editor ให้ใช้ TIS-620 เสียก่อน หรือบางคนก็ใช้วิธีเตรียมเป็น UTF-8 ไปเลย แล้วใช้ iconv แปลงเอา

แต่ตอนนี้ไม่ต้องแล้ว เพราะ LaTeX core นั้น รองรับ UTF-8 เรียบร้อยแล้ว น่าจะนานแล้วแหละ ผ่านแพกเกจ inputenc โดยคุณต้องเพิ่ม preamble ต่อไปนี้ (หลัง babel):

\usepackage[utf8x]{inputenc}

ตรง utf8x นี้ บางระบบอาจใช้ utf8 เฉย ๆ

แต่ปัญหาคือ เท่านี้ยังไม่พอ เพราะตัว thailatex เองนั้น ออกแบบมาใช้กับ TIS-620 โดยเฉพาะ ยังต้องปรับแก้โดยเพิ่มการกำหนด symbol ตามรหัสยูนิโค้ดตามที่ LaTeX ใช้อ้างอักษรไทย แล้วแทนที่คำแปลต่าง ๆ ในข้อกำหนดของ babel ให้ใช้ symbol เหล่านี้แทนการใช้อักขระ TIS-620 โต้ง ๆ เพื่อให้ใช้ได้กับทั้ง TIS-620 และ UTF-8

commit เข้า SVN ไปแล้วครับ ใครสนใจช่วยทดสอบก็เชิญได้ คงรอทดสอบสักพักค่อยออกเป็นรุ่นใหม่ต่อไป

ถึงตอนนั้น คุณจะสามารถเตรียมเอกสาร LaTeX โดยใช้ editor สมัยใหม่ที่เดี๋ยวนี้ใช้ UTF-8 เป็นหลักกันหมดแล้ว ส่วนในขั้นตอนตัดคำด้วย swath นั้น ก็เพิ่มตัวเลือก -u u,u เข้าไปด้วย เพื่อให้ swath พยายามอ่าน input และเขียน output แบบ UTF-8 เช่น:

$ swath -f latex -u u,u < mydoc.tex > mydoc.ttex

แถมอีกเรื่อง ว่า LyX ตั้งแต่รุ่น 1.5 เป็นต้นมา รองรับ UTF-8 แล้ว โดยรองรับภาษาไทยด้วย เพียงแต่ขั้นตอน generate จากซอร์สของ LyX เป็น LaTeX นั้น จะแปลงเป็นรหัส TIS-620 ก่อนถ้าเป็นภาษาไทย ทั้งนี้คงเพราะเขาตรวจสอบจาก thailatex ที่เผยแพร่ที่ CTAN นั่นเอง

ป้ายกำกับ: ,

4 ความเห็น:

  • 27 กรกฎาคม 2552 เวลา 10:45 , Blogger veer แถลง…

    มันสำคัญกับผมมากครับ เพราะว่าต้องเขียนหลายภาษา แต่ก็เจอ babel กับ acm template ขัดกันซะ เศร้าไปเลย

     
  • 27 กรกฎาคม 2552 เวลา 11:45 , Blogger Thep แถลง…

    ใช่ครับ คิดถึงกรณีนี้เหมือนกัน เลยอยากมีกรณีทดสอบแบบ multilingual อย่างนี้ด้วย

    เดี๋ยวพยายามทดสอบเบื้องต้นแล้วออกรุ่นใหม่มาให้ทดสอบเลยดีกว่า

     
  • 27 กรกฎาคม 2552 เวลา 12:54 , Blogger Thep แถลง…

    บั๊กที่พบ: option "thainumber" จะใช้ไม่ได้กับเอกสารที่ใช้ปนกับภาษายุโรปที่ไม่ใช่อังกฤษ โดยมี error ว่า

    LaTeX Error: Command \thaione unavailable in encoding T1.

    ในกรณีที่ใช้ \usepackage[T1]{fontenc} ส่วนถ้าใช้ encoding อื่นก็จะฟ้องในชื่อ encoding นั้น ๆ

    แต่ถ้าไม่ใช้ option นี้ ก็ไม่มีปัญหาอะไร ทดสอบกับเอกสารที่มีภาษาไทย, กรีก, ฝรั่งเศส, สเปน แล้ว ใช้การได้ครับ

    ยังไม่พบวิธีแก้ไข คิดว่าบั๊กนี้ไม่ร้ายแรง อาจจะข้ามไปก่อน หรือถ้าใครมีคำแนะนำเรื่องวิธีแก้ไข ก็จะสามารถแก้ก่อน release ได้ครับ

     
  • 27 กรกฎาคม 2552 เวลา 14:29 , Blogger Thep แถลง…

    Update: บั๊กที่พบ ปรากฏว่าเป็นปัญหาของเอกสารที่ใช้ทดสอบเองครับ คือใช้ \selectlanguage{} โดยไม่ได้ select คืนให้เป็นภาษาปริยาย ถ้าใช้ otherlanguage* environment แทนก็เป็นอันใช้ได้

    สรุปว่าไม่ใช่ bug ของ thailatex ครับ

    แบบนี้ เดี๋ยวคงออกรุ่นใหม่ได้เร็ว ๆ นี้

     

แสดงความเห็น (มีการกลั่นกรองสำหรับ blog ที่เก่ากว่า 14 วัน)

<< กลับหน้าแรก

hacker emblem