Theppitak's blog

My personal blog.

17 มีนาคม 2554

ThaiLaTeX tis620 inputenc and Pali-Sanskrit

จากที่ได้ เพิ่มการรองรับภาษาบาลี-สันสกฤตใน ThaiLaTeX ไปเมื่อปีกลาย ปรากฏว่าตอนนั้นได้ทดสอบกับแค่เอกสารที่เป็น UTF-8 เท่านั้น (pali-sample.tex และ PDF ผลลัพธ์) แต่เมื่อได้ทดสอบกับเอกสารที่เป็น TIS-620 ก็ปรากฏว่า กฎการตัดเชิง ญ ฐ ไม่ทำงาน!

สาเหตุก็คือ กฎที่ใช้ตัดเชิง ญ ฐ นั้น ผมใช้การแปลงอักขระโดยอ้างผ่านโทเคน เช่น \thaiYoYing ไม่ใช่ผ่านอักขระเป็นไบต์ ๆ โดยตรง ซึ่งตรงนี้สำคัญสำหรับการรองรับรหัสอักขระมากกว่าหนึ่งรูปแบบ คือ TIS-620 และ UTF-8 โดยเป็นหน้าที่ของแพกเกจ inputenc ที่จะแปลงกระแสข้อมูลของเอกสารให้เป็นโทเคนอักขระ แล้วการประมวลผลอักขระต่อจากนั้นจึงอยู่ในรูปโทเคนที่ไม่ขึ้นกับรหัสอักขระอีกที

ปัญหาคือ แต่เดิมในสมัยที่ใช้ TIS-620 กันนั้น เราไม่เคยจำเป็นต้องใช้แพกเกจ inputenc กันเลย เนื่องจาก LaTeX จะอ่านข้อมูลทีละไบต์เสมือนหนึ่งเป็น ASCII แล้วส่งไบต์เหล่านั้นผ่านระบบฟอนต์ไปวาดจนได้เอกสารออกมา แต่ถ้าเราจะประมวลผลอักขระกลางทางใน LaTeX แบบที่ทำกับภาษาบาลี-สันสกฤตนี้ ก็คงต้องทำในเทอมของโทเคนอักขระ โดยอาศัยแพกเกจ inputenc ช่วย เหมือนกับภาษาอื่นทั่วไป

ดังนั้น ผมจึงได้สร้างข้อกำหนดสำหรับรหัสอักขระ tis620 เพื่อใช้กับแพกเกจ inputenc เพิ่มใน ThaiLaTeX นี้ ทำให้ตอนนี้เกิดความสมดุลระหว่างการใช้รหัส TIS-620 กับ UTF-8 ในเอกสาร LaTeX โดยถ้าใช้ UTF-8 ก็จะประกาศแบบนี้ (ตามที่ได้เคยบอกไว้เมื่อตอนเพิ่มการรองรับ UTF-8 ใน ThaiLaTeX):

\usepackage[utf8x]{inputenc}

ส่วนถ้าจะใช้ TIS-620 ก็ประกาศแบบนี้:

\usepackage[tis620]{inputenc}

มีแฟ้มตัวอย่าง pali-sample-tis.tex และ PDF ผลลัพธ์

สำหรับตอนนี้ การใช้แพกเกจ inputenc กับเอกสาร TIS-620 จะจำเป็นสำหรับการใช้ภาษาบาลี-สันสกฤตเท่านั้น เอกสารเก่าที่ยังไม่ได้ใช้คำสั่ง \textpali{} ก็ไม่จำเป็นต้องประกาศ แต่ความจริงแล้ว ถ้าจะทำให้ถูกหลักปกติของ LaTeX ก็ควรประกาศไว้ก่อน ถ้าเกรงว่าจะไปคอมไพล์ใน ThaiLaTeX รุ่นเก่าในระบบอื่นไม่ผ่าน ก็อาจจะชะลอไปก่อน จนกว่าคนอื่น ๆ จะใช้รุ่นใหม่ตาม

ตัวเลือก tis620 ใน inputenc นี้จะเริ่มมีผลใน ThaiLaTeX รุ่นหน้าที่จะออกในไม่กี่วันนี้ครับ

ป้ายกำกับ: ,

0 ความเห็น:

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

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

hacker emblem