XeTeX กับภาษาไทย

latexpicหลังปลุกปล้ำกับมันซะนาน ก็ได้รูปแบบที่เหมาะสม อย่างไรก็ตามการตัดคำที่ได้อาจจะยังไม่ดีนัก ต้องปรับแต่งด้วยมือบ้าง ล่าสุดได้รับคำแนะนำจากคุณ Chakkree (ดูความเห็นข้างล่าง) ในเรื่องการแก้ไขปัญหาสระลอย ถึงตอนนี้เราก็สามารถใช้ฟอนต์ Angsana New ได้แล้วครับ

  1. ติดตั้ง MiKTeX 2.7 -2.8 แบบตัวเล็กแล้วค่อยคิดตั้งเอาเพิ่มภายหลัง
  2. ผู้ใช้ WinEDT นั้น ตัวโปรแกรมจะไม่รองรับ UTF-8 สองภาษา ดังนั้นให้ใช้บรรณาธิกรณ์ตัวอื่นเช่น Notepad++, TeXMaker ฯลฯ เพื่อตัดความยุ่งยากในการใช้ TeXMaker ขอแนะนำให้ใช้ Notepad++ บวกกับ command line หรือใช้ texworks ก็จะง่ายที่สุด
  3. การคอมไพล์ควรทำผ่าน Command line (ไม่จำเป็นสำหรับ texworks) เพื่อจะได้สังเกตเห็นข้อผิดพลาดในการคอมไพล์กรณีที่ใช้ TeXMaker เวลาสั่งผ่าน command line ก็ใช้คำสั่ง xelatex file.tex
  4. ตัวอย่างไฟล์

  5. สำหรับ Windows XP ให้ไปที่ Start->run แล้วสั้ง cmd เพื่อเปิดหน้าต่าง command line ขึ้นมา เข้าไปยังโฟลเดอร์ที่เก็บไฟล์ที่ได้สร้างไว้ ในที่นี้คือ test.tex จากนั้นสั่ง xelatex test ส่วนบรรณาธิกรณ์ที่เหมาะสมสำหรับ XeTeX มาก ๆ คือ TeXworks ไว้จะเขียนถึงอีกที
  6. เอกสารที่ได้จะเป็น pdf เรียกดูได้ด้วย Adobe Reader (ซึ่งเร็วและฟรี)
  7. ในกรณีมีการแก้ไขเอกสาร ก่อนสั่งคอมไพล์ให้ปิดเอกสาร pdf นั้น ๆ ก่อน (ไม่จำเป็นสำหรับ texworks) เพราะว่า Adobe Reader จะล็อคไฟล์นั้น ๆ ไม่ให้แก้ไขได้

สำหรับ Notepad++ ให้คัดลอกข้อความทั้งหมดไปใส่ แล้วให้ไปที่เมนู Format และเลือก Encode in UTF-8 จากนั้นให้ลบข้อความที่เป็นภาษาไทยออกทั้งหมดแล้วพิมพ์เข้าไปใหม่ เพื่อให้ข้อความภาษาไทยเป็น UTF-8 จัดเก็บไฟล์ให้มีนามสกุล tex เช่น test.tex

fonttextbf="Angsana New Bold:script=thai" at 16pt

fonttextit="Angsana New Italic:script=thai" at 16pt

25 Responses to XeTeX กับภาษาไทย

  1. [...] MikTeX 2.9(XeLaTeX) + ฟอนต์ TH SarabunPSK บนเครื่องที่ admin [...]

  2. ผมลองดูกับ MikTex2.9 บน Notepad++ แล้ว ปรากฎว่าตัวเอียง ตัวหนาใช้ไม่ได้ครับ ไม่ทราบว่าแก้ปัญหาอย่างไร ขอบคุณครับ

  3. admin says:

    ให้เซ็ทภาษาไทยตามรหัสข้างล่างนี้นะครับ

    \usepackage{xltxtra}

    \XeTeXlinebreaklocale "th"
    \defaultfontfeatures{Scale=1.3}
    \setmainfont[Script=Thai,Ligatures=TeX]{Browallia New}
    \XeTeXlinebreakskip = 0pt plus 1pt \relax %

    เวลาใช้ตัวหนาตัวเอียง จะสามารถใช้คำสั่ง \textbf{} \textit{} ได้โดยตรงครับ

  4. chakkree says:

    ลองทดสอบกับ ชุดนีีดูครับ
    ผมใช้ MixTeX 2.9 + TeXWorks ลอง

    % — TestXeTeX_SetAngsana.tex——-
    % — Chakkree Tiyawongsuwan —-
    %
    % อ้างอิง http://markmail.org/message/ulp3lmxfg5biv7b5
    %
    \documentclass[12pt,a6paper]{book}
    \usepackage{xltxtra}

    \XeTeXlinebreaklocale "th"
    \defaultfontfeatures{Scale=1.23}

    \begin{document}
    \setmonofont[Scale=0.8]{Tahoma:script=thai}

    \fontspec[
    ItalicFont={Angsana New Italic:script=thai},
    BoldFont={Angsana New Bold:script=thai},
    BoldItalicFont={Angsana New Bold Italic:script=thai},
    ]{Angsana New:script=thai}

    \noindent
    ป้า กะ ปู่ กู้อีจู้ ตัวปกติ\\
    {\itshape ป้า กะ ปู่ กู้อีจู้ ตัวเอียง} \\
    {\bfseries ป้า กะ ปู่ กู้อีจู้ ตัวหนา } \\
    {\bfseries\itshape ป้า กะ ปู่ กู้อีจู้ ตัวหนาเอียง} \\

    ทดสอบใช้คำสั่ง \LaTeXe{}\\
    ป้า กะ ปู่ กู้อีจู้ ตัวปกติ\\
    \textbf{ป้า กะ ปู่ กู้อีจู้ ตัวหนา}\\
    \textit{ป้า กะ ปู่ กู้อีจู้ ตัวเอียง}\\
    \textsl{ป้า กะ ปู่ กู้อีจู้ ตัวเอน}\\
    \textbf{\textit{ป้า กะ ปู่ กู้อีจู้ ตัวหนาเอียง}}\\
    \texttt{ป้า กะ ปู่ กู้อีจู้ ตัวพิมพ์}

    \end{document}

  5. chakkree says:

    ลองทดสอบกับ ชุดนีีดูครับ ผมใช้ MixTeX 2.9 + TeXWorks ลอง

    % — TestXeTeX_SetAngsana.tex——-
    % — Chakkree Tiyawongsuwan —-
    %
    % อ้างอิง http://markmail.org/message/ulp3lmxfg5biv7b5
    %
    \documentclass[12pt,a4paper]{book}
    \usepackage{xltxtra}

    \XeTeXlinebreaklocale "th"
    \defaultfontfeatures{Scale=1.23}

    \begin{document}
    \setmonofont[Scale=0.8]{Tahoma:script=thai}

    \fontspec[
    ItalicFont={Angsana New Italic:script=thai},
    BoldFont={Angsana New Bold:script=thai},
    BoldItalicFont={Angsana New Bold Italic:script=thai},
    ]{Angsana New:script=thai}

    \noindent
    ป้า กะ ปู่ กู้อีจู้ ตัวปกติ\\
    {\itshape ป้า กะ ปู่ กู้อีจู้ ตัวเอียง} \\
    {\bfseries ป้า กะ ปู่ กู้อีจู้ ตัวหนา } \\
    {\bfseries\itshape ป้า กะ ปู่ กู้อีจู้ ตัวหนาเอียง} \\

    ทดสอบใช้คำสั่ง \LaTeXe{}\\
    ป้า กะ ปู่ กู้อีจู้ ตัวปกติ\\
    \textbf{ป้า กะ ปู่ กู้อีจู้ ตัวหนา}\\
    \textit{ป้า กะ ปู่ กู้อีจู้ ตัวเอียง}\\
    \textsl{ป้า กะ ปู่ กู้อีจู้ ตัวเอน}\\
    \textbf{\textit{ป้า กะ ปู่ กู้อีจู้ ตัวหนาเอียง}}\\
    \texttt{ป้า กะ ปู่ กู้อีจู้ ตัวพิมพ์}

    \end{document}

  6. chakkree says:

    ทำไม ข้อความที่โพส กับ ที่พิมพ์ ไม่เหมือนกันเนี่ย
    ในที่โพส จะขึ้นบรรทัดใหม่ ???????
    ต้องมีทริค อะไร สำหรับ WordPress เนี่ย ???

  7. chakkree says:

    ขออนุญาติทดสอบอีกทีนะครับ เมื่อกี้ใช้ FireFox โพสข้อความ
    เห็นในเว็บบางที่บอกว่าถ้าใช้ IE อาจจะได้
    คราวนี้ IE

    % — TestXeTeX_SetAngsana.tex——-
    % — Chakkree Tiyawongsuwan —-
    %
    % อ้างอิง http://markmail.org/message/ulp3lmxfg5biv7b5
    %
    \documentclass[12pt,a6paper]{book}
    \usepackage{xltxtra}

    \XeTeXlinebreaklocale "th"
    \defaultfontfeatures{Scale=1.23}

    \begin{document}
    \setmonofont[Scale=0.8]{Tahoma:script=thai}

    \fontspec[
    ItalicFont={Angsana New Italic:script=thai},
    BoldFont={Angsana New Bold:script=thai},
    BoldItalicFont={Angsana New Bold Italic:script=thai},
    ]{Angsana New:script=thai}

    \noindent
    ป้า กะ ปู่ กู้อีจู้ ตัวปกติ\\
    {\itshape ป้า กะ ปู่ กู้อีจู้ ตัวเอียง} \\
    {\bfseries ป้า กะ ปู่ กู้อีจู้ ตัวหนา } \\
    {\bfseries\itshape ป้า กะ ปู่ กู้อีจู้ ตัวหนาเอียง} \\

    ทดสอบใช้คำสั่ง \LaTeXe{}\\
    ป้า กะ ปู่ กู้อีจู้ ตัวปกติ\\
    \textbf{ป้า กะ ปู่ กู้อีจู้ ตัวหนา}\\
    \textit{ป้า กะ ปู่ กู้อีจู้ ตัวเอียง}\\
    \textsl{ป้า กะ ปู่ กู้อีจู้ ตัวเอน}\\
    \textbf{\textit{ป้า กะ ปู่ กู้อีจู้ ตัวหนาเอียง}}\\
    \texttt{ป้า กะ ปู่ กู้อีจู้ ตัวพิมพ์}

    \end{document}

  8. chakkree says:

    ถ้าคุมด้วย tag paergraph ของ html จะผ่านหรือไม่ ?

    % — TestXeTeX_SetAngsana.tex——-
    % — Chakkree Tiyawongsuwan —-
    %
    % อ้างอิง http://markmail.org/message/ulp3lmxfg5biv7b5
    %
    \documentclass[12pt,a6paper]{book}
    \usepackage{xltxtra}

    \XeTeXlinebreaklocale "th"
    \defaultfontfeatures{Scale=1.23}

    \begin{document}
    \setmonofont[Scale=0.8]{Tahoma:script=thai}

    \fontspec[
    ItalicFont={Angsana New Italic:script=thai},
    BoldFont={Angsana New Bold:script=thai},
    BoldItalicFont={Angsana New Bold Italic:script=thai},
    ]{Angsana New:script=thai}

    \noindent
    ป้า กะ ปู่ กู้อีจู้ ตัวปกติ\\
    {\itshape ป้า กะ ปู่ กู้อีจู้ ตัวเอียง} \\
    {\bfseries ป้า กะ ปู่ กู้อีจู้ ตัวหนา } \\
    {\bfseries\itshape ป้า กะ ปู่ กู้อีจู้ ตัวหนาเอียง} \\

    ทดสอบใช้คำสั่ง \LaTeXe{}\\
    ป้า กะ ปู่ กู้อีจู้ ตัวปกติ\\
    \textbf{ป้า กะ ปู่ กู้อีจู้ ตัวหนา}\\
    \textit{ป้า กะ ปู่ กู้อีจู้ ตัวเอียง}\\
    \textsl{ป้า กะ ปู่ กู้อีจู้ ตัวเอน}\\
    \textbf{\textit{ป้า กะ ปู่ กู้อีจู้ ตัวหนาเอียง}}\\
    \texttt{ป้า กะ ปู่ กู้อีจู้ ตัวพิมพ์}

    \end{document}

  9. chakkree says:

    ลองใช้ tag break line สำหรับ HTML ต่อท้ายทุกบรรทัดเอง
    อาจารย์สุดชาย ผมต้องขออภัยด้วยนะครับ อาจจะมี Comment เยอะนิด แต่อยากทราบวิธีโพส ให้ได้รหัสคำสั่งในลักษณะ Pretty Form

    % — TestXeTeX_SetAngsana.tex——-
    % — Chakkree Tiyawongsuwan —-
    %
    % อ้างอิง http://markmail.org/message/ulp3lmxfg5biv7b5
    %
    \documentclass[12pt,a4paper]{book}
    \usepackage{xltxtra}

    \XeTeXlinebreaklocale "th"
    \defaultfontfeatures{Scale=1.23}

    \begin{document}
    \setmonofont[Scale=0.8]{Tahoma:script=thai}

    \fontspec[
    ItalicFont={Angsana New Italic:script=thai},
    BoldFont={Angsana New Bold:script=thai},
    BoldItalicFont={Angsana New Bold Italic:script=thai},
    ]{Angsana New:script=thai}

    \noindent
    ป้า กะ ปู่ กู้อีจู้ ตัวปกติ\\
    {\itshape ป้า กะ ปู่ กู้อีจู้ ตัวเอียง} \\
    {\bfseries ป้า กะ ปู่ กู้อีจู้ ตัวหนา } \\
    {\bfseries\itshape ป้า กะ ปู่ กู้อีจู้ ตัวหนาเอียง} \\

    ทดสอบใช้คำสั่ง \LaTeXe{}\\
    ป้า กะ ปู่ กู้อีจู้ ตัวปกติ\\
    \textbf{ป้า กะ ปู่ กู้อีจู้ ตัวหนา}\\
    \textit{ป้า กะ ปู่ กู้อีจู้ ตัวเอียง}\\
    \textsl{ป้า กะ ปู่ กู้อีจู้ ตัวเอน}\\
    \textbf{\textit{ป้า กะ ปู่ กู้อีจู้ ตัวหนาเอียง}}\\
    \texttt{ป้า กะ ปู่ กู้อีจู้ ตัวพิมพ์}

    \end{document}

  10. chakkree says:

    ถ้าใช้ Tag พิเศษของ WorkPress code

    [code]
    % — TestXeTeX_SetAngsana.tex——-
    % — Chakkree Tiyawongsuwan —-
    %
    % อ้างอิง http://markmail.org/message/ulp3lmxfg5biv7b5
    %
    \documentclass[12pt,a6paper]{book}
    \usepackage{xltxtra}

    \XeTeXlinebreaklocale "th"
    \defaultfontfeatures{Scale=1.23}

    \begin{document}
    \setmonofont[Scale=0.8]{Tahoma:script=thai}

    \fontspec[
    ItalicFont={Angsana New Italic:script=thai},
    BoldFont={Angsana New Bold:script=thai},
    BoldItalicFont={Angsana New Bold Italic:script=thai},
    ]{Angsana New:script=thai}

    \noindent
    ป้า กะ ปู่ กู้อีจู้ ตัวปกติ\\
    {\itshape ป้า กะ ปู่ กู้อีจู้ ตัวเอียง} \\
    {\bfseries ป้า กะ ปู่ กู้อีจู้ ตัวหนา } \\
    {\bfseries\itshape ป้า กะ ปู่ กู้อีจู้ ตัวหนาเอียง} \\

    ทดสอบใช้คำสั่ง \LaTeXe{}\\
    ป้า กะ ปู่ กู้อีจู้ ตัวปกติ\\
    \textbf{ป้า กะ ปู่ กู้อีจู้ ตัวหนา}\\
    \textit{ป้า กะ ปู่ กู้อีจู้ ตัวเอียง}\\
    \textsl{ป้า กะ ปู่ กู้อีจู้ ตัวเอน}\\
    \textbf{\textit{ป้า กะ ปู่ กู้อีจู้ ตัวหนาเอียง}}\\
    \texttt{ป้า กะ ปู่ กู้อีจู้ ตัวพิมพ์}

    \end{document}
    [/code]

    • admin says:

      ถ้าใช้ Tag พิเศษของ WorkPress code

      [code] % — TestXeTeX_SetAngsana.tex——- % — Chakkree Tiyawongsuwan —- % % อ้างอิง http://markmail.org/message/ulp3lmxfg5biv7b5 % \documentclass[12pt,a6paper]{book} \usepackage{xltxtra}

      \XeTeXlinebreaklocale "th" \defaultfontfeatures{Scale=1.23}

      \begin{document} \setmonofont[Scale=0.8]{Tahoma:script=thai}

      \fontspec[ ItalicFont={Angsana New Italic:script=thai}, BoldFont={Angsana New Bold:script=thai}, BoldItalicFont={Angsana New Bold Italic:script=thai}, ]{Angsana New:script=thai}

      \noindent ป้า กะ ปู่ กู้อีจู้ ตัวปกติ\\ {\itshape ป้า กะ ปู่ กู้อีจู้ ตัวเอียง} \\ {\bfseries ป้า กะ ปู่ กู้อีจู้ ตัวหนา } \\ {\bfseries\itshape ป้า กะ ปู่ กู้อีจู้ ตัวหนาเอียง} \\

      ทดสอบใช้คำสั่ง \LaTeXe{}\\ ป้า กะ ปู่ กู้อีจู้ ตัวปกติ\\ \textbf{ป้า กะ ปู่ กู้อีจู้ ตัวหนา}\\ \textit{ป้า กะ ปู่ กู้อีจู้ ตัวเอียง}\\ \textsl{ป้า กะ ปู่ กู้อีจู้ ตัวเอน}\\ \textbf{\textit{ป้า กะ ปู่ กู้อีจู้ ตัวหนาเอียง}}\\ \texttt{ป้า กะ ปู่ กู้อีจู้ ตัวพิมพ์}

      \end{document} [/code]

      Reply

  11. Akaradej says:

    พอดีเพิ่งมาลองใช้ XeTex ในการทำเอกสารนะครับ
    มีข้อสงสัย คือ
    ต้องการใช้ฟอนต์ภาษาไทยแบบเดียวกับฟอนต์ใน LaTex จะทำได้หรือไม่ครับ
    ช่วยแนะนำด้วยครับ

  12. admin says:

    ได้ครับ ไม่มีปัญหาอะไร แค่ลงฟอนต์นั้น ๆ ไป แล้วก็เรียกใช้ครับ

    • Akaradej says:

      ขอบคุณสำหรับคำแนะนำครับ
      แล้วพอจะทราบชื่อของฟอนต์ที่ใช้ใน LaTex(ภาษาไทย) หรือเปล่าครับ
      จะได้หามาลงครับ

    • Akaradej says:

      ขอบคุณสำหรับคำแนะนำครับ
      แล้วพอจะทราบชื่อฟอนต์ภาษาไทยที่ใช้ใน LaTex หรือเปล่าครับ
      จะได้ไปหามาลงในเครื่องครับ

  13. Juta says:

    ใช้ XeLatex ทำหนังสือ จึงต้องการเปลี่ยน "Chapter" เป็น "บทที่" ได้ลองใช้คำสั่ง \renewcommand{\chaptername}{บทที่} ก็ยังแสดงเป็น Chapter เหมือนเดิมค่ะ

  14. chakkree says:

    สำหรับ XeLaTeX ใช้แพ็กเก็จ polyglossia ครับ แล้วเพิ่มคำสั่งให้เป็นภาษาไทยครับ คำว่า chapter จะกลายเป็น บทที่ครับ แต่รู้สึกยังมี bug บ้าง ต้องเขียนคำสั่งปรับปรุงเพิ่ม ถ้าจำไม่ผิด น่าจะเป็น เลขภาคผนวก ไม่เป็น ก ข ค เป็น A B C แต่คำสั่งปรับแก้ อยู่แถว ๆ นี้ ล่ะครับ ต้องหาหน่อย แต่ทำหนังสือด้วย XeLaTeX ถ้าทำได้อย่าลืมมาแบ่งปัน รูปแบบคำสั่งหน่อยนะครับ กำลังพยายามลองอยู่ครับ

    %% แพ็คเก็จทดแทน babel
    \usepackage{polyglossia}
    %% ตั้งให้เป็นไทย
    \setdefaultlanguage{thai}
    \newfontfamily{\thaifont}[Script=thai]{TH Sarabun New}

  15. mbig says:

    "....แต่รู้สึกยังมี bug บ้าง ต้องเขียนคำสั่งปรับปรุงเพิ่ม ถ้าจำไม่ผิด น่าจะเป็น เลขภาคผนวก ไม่เป็น ก ข ค เป็น A B C แต่คำสั่งปรับแก้ อยู่แถว ๆ นี้ ล่ะครับ ต้องหาหน่อย...."

    ผมลอง search หลายทางแล้วครับ ไม่พบเลย ขอรบกวนคำแนะนำด้วยครับ
    ขอบคุณมากครับ

    • chakkree says:

      ตามหาวิธีตั้งเลขภาคผนวกให้เป็น ก ข ค สำหรับ XeLaTeX ได้แล้วครับ ไปหานานเลยเป็นปี

      1) ใช้ แพ็คเก็จ appendix เพิ่มคำสั่งเรียกเข้าไป
      \usepackage[titletoc,toc,title]{appendix}

      2) ส่วนท้ายห้ามใช้ \backmatter คำว่าภาคผนวก ก จะหายไป ใช้ด้วยกันไม่ได้ แต่

      3) ใช้ environment appendices แล้วปรับแต่งนิดนึงก่อนเรียก \chapter ตามคำสั่ง

      \begin{appendices}
      \renewcommand*{\thechapter}{\thaiAlph{chapter}}
      \chapter{ทดสอบภาคผนวก} %% ---------------------
      \chapter{ทดสอบภาคผนวกอีกที} %% ---------------------
      \end{appendices}
      \end{document}

      • chakkree says:

        ที่สำคัญ อย่าลืมแพ็กเก็จ polyglossia ครับ

      • chakkree says:

        เพิ่มคำสั่งนี้ลงในส่วน Premble ด้วยครับ ไม่งั้นสารบัญจะเขียนเป็น Appendices แทน ภาคผนวก

        \AtBeginDocument{
        \renewcommand\appendixtocname{ภาคผนวก}
        }

  16. AmeliaAqfzc says:

    I see your blog needs some unique articles. Writing manually is time consuming, but there is solution for this hard task.
    Just search for: Miftolo's tools rewriter

Leave a Reply

Your email address will not be published. Required fields are marked *