thailatex กับการแสดงผลอักษรไทย
ตอนนี้ผมใช้ Windows XP+Miktex 2.6+ MiKTeX ThaiExtension 0.3.5 ซึ่งสามารถใช้อักษร Angsana New ได้ด้วย ปัญหาของ
ผมมีดังนี้ครับ
ผมพบว่า อักษร Angsana New ที่ผมใช้อยู่ไม่สามารถแสดงผลเป็นตัวหนาได้ ในขณะที่ ตัวธรรมดา ตัวขีดเส้นใต้ หรือว่าตัวเอียง
แสดงผลได้ถูกต้อง ผมลองใช้อักษร Norasi ทดสอบแบบเดียวกันก็สามารถแสดงผลได้ถูกต้อง ปัญหาที่เกิดขึ้นเกิดจากอะไรได้บ้างครับ และจะแก้ไขได้อย่างไร คือผมมีความจำเป็นต้องทำเอกสารที่แสดงผลด้วยอักษร Angsana New

ไฟล์ต้นฉบับเป็นดังนี้ครับ
\documentclass[12pt]{article}
\usepackage[thai]{babel}
\usepackage{thswitch}
\usepackage{geometry}
\geometry{top=1.5in,bottom=1in,left=1.5in,right=1.0in}
\usepackage[T1]{fontenc}
\title{ทดสอบฟ้อนท์}
\author{อุทัย}
\begin{document}
\maketitle
\begin{center}
นี่คืออักษร Norasi\\
นี่คือตัวอักษร Norasi ธรรมดา\\
\textbf{นี่คือตัวอักษร Norasi หนา}\\
\textit{นี่คือตัวอักษร Norasi เอียง}\\
\underline{นี่คือตัวอักษร Norasi ขีดเส้นใต้}
\end{center}
\begin{center}
\def\thairmdefault{angsa}
\usefont{LTH}{angsa}{m}{n}
นี่คืออักษร Angsana New\\
นี่คือตัวอักษร Angsana New ธรรมดา\\
\textbf{นี่คือตัวอักษร Angsana New หนา}\\
\textit{นี่คือตัวอักษร Angsana New เอียง}\\
\underline{นี่คือตัวอักษร Angsana New ขีดเส้นใต้}
\end{center}
\end{document}
Re: thailatex กับการแสดงผลอักษรไทย
ต้องดูที่แฟ้ม font description (*.fd) ที่ใช้นะครับ ว่าลิสต์ฟอนต์ angsana สไตล์ต่าง ๆ ครบหรือเปล่า
Re: thailatex กับการแสดงผลอักษรไทย
ภายในแฟ้ม MiKTeX 2.6/tex/generic/babel/lthangsa.fd ครับ
\ProvidesFile{lthangsa.fd}[2003/5/21 v1.0 Thai font definitions]
% Primary declarations
\DeclareFontFamily{LTH}{angsa}{}
\DeclareFontShape{LTH}{angsa}{m}{n}{<-> [1.5]zangsa}{}
\DeclareFontShape{LTH}{angsa}{m}{it}{<-> [1.5]zangsai}{}
%%%%%%% bold series
\DeclareFontShape{LTH}{angsa}{b}{n}{<-> [1.5]zangsab}{}
\DeclareFontShape{LTH}{angsa}{b}{it}{<-> [1.5]zangsaz}{}
% Substitutions
\DeclareFontShape{LTH}{angsa}{m}{sl}{<->sub * zangsa/m/it}{}
\DeclareFontShape{LTH}{angsa}{b}{sl}{<->sub * zangsa/b/it}{}
\DeclareFontShape{LTH}{angsa}{bx}{sl}{<->sub * zangsa/bx/it}{}
\endinput
%
% EOF
%
Re: thailatex กับการแสดงผลอักษรไทย
ใน MiKTex 2.6/dvips/config/thai.map เป็นอย่างนี้ครับ
zangsa AngsanaNew " LTHEncoding ReEncodeFont "
Re: thailatex กับการแสดงผลอักษรไทย
ไม่มี entry ของ zangsai, zangsab, zangsaz เหรอครับ?
Re: thailatex กับการแสดงผลอักษรไทย
คุณเทพหมายถึงในแฟ้ม thai.map หรือปล่าวครับ ถ้าใช่มีนะครับ ผมเอามาวางแต่คิดว่าคงยาวเกินไปก็เลย
เหลือให้เห็นแค่ zangsa
Re: thailatex กับการแสดงผลอักษรไทย
งั้นต้องลองสืบร่องรอยจากไฟล์ *.log ที่ได้ระหว่างสั่ง "latex" แล้วละมังครับ
Re: thailatex กับการแสดงผลอักษรไทย
ช่วงท้ายๆ แจ้งว่าอย่างนี้ครับ

Re: thailatex กับการแสดงผลอักษรไทย
น่าจะเป็นที่บรรทัดนี้แหละครับ ลองกลับไปแก้ lthangsa.fd ดู โดยเพิ่มบรรทัดนี้:
\DeclareFontShape{LTH}{angsa}{bx}{n}{<->sub * zangsa/b/n}{}แล้วก็ ดูจากบรรทัดนี้ในเนื้อหาแฟ้มข้างบน:
\DeclareFontShape{LTH}{angsa}{bx}{sl}{<->sub * zangsa/bx/it}{}อาจจะมีปัญหากับตัว bold slant ด้วยนะครับ (ลองดูก่อนครับ) ควรจะแก้เป็นอย่างนี้:
\DeclareFontShape{LTH}{angsa}{bx}{sl}{<->sub * zangsa/b/sl}{}(เปลี่ยน /bx/ เป็น /b/ แล้วก็ ตรง /it จะคงไว้ก็ได้ แต่คิดว่าเปลี่ยนเป็น /sl น่าจะชัดเจนกว่า)
แล้วก็เพิ่มบรรทัดนี้ด้วย เพื่อให้ใช้ bold italic ได้ (ข้างบนนั่น จะใช้ได้แต่ slant):
\DeclareFontShape{LTH}{angsa}{bx}{it}{<->sub * zangsa/b/it}{}แล้วก็ น่าจะแจ้งผู้ดูแล MikTeX ThaiExtension ด้วยนะครับ
Re: thailatex กับการแสดงผลอักษรไทย
ใน lthangsa.fd ผมแก้เป็น
\ProvidesFile{lthangsa.fd}[2003/5/21 v1.0 Thai font definitions] % Primary declarations \DeclareFontFamily{LTH}{angsa}{} \DeclareFontShape{LTH}{angsa}{m}{n}{<-> [1.5]angsa}{} \DeclareFontShape{LTH}{angsa}{m}{it}{<-> [1.5]angsai}{} %%%%%%% bold series \DeclareFontShape{LTH}{angsa}{b}{n}{<-> [1.5]angsab}{} \DeclareFontShape{LTH}{angsa}{b}{it}{<-> [1.5]angsaz}{} % Substitutions \DeclareFontShape{LTH}{angsa}{m}{sl}{<->sub * angsa/m/it}{} \DeclareFontShape{LTH}{angsa}{b}{sl}{<->sub * angsa/b/it}{} %\DeclareFontShape{LTH}{angsa}{bx}{sl}{<->sub * angsa/bx/it}{} % เพิ่มโดยคำแนะนำจากคุณเทพ \DeclareFontShape{LTH}{angsa}{bx}{n}{<->sub * angsa/b/n}{} \DeclareFontShape{LTH}{angsa}{bx}{sl}{<->sub * angsa/b/sl}{} \DeclareFontShape{LTH}{angsa}{bx}{it}{<->sub * angsa/b/it}{} \endinput % % EOF %ได้ผลออกมาเป็นแบบนี้ครับ

ขอบคุณ คุณเทพพิทักษ์มากเลยครับ สำหรับตัว MikTex ThaiExtension เดิมๆ ไม่ได้เพิ่มอักษร
ไทยอื่นๆ เข้าไปคงมีเพียง Norasi, Garuda, Purisa และ ttype เท่านั้น แต่ผมได้ทำการเพิ่มเติม
เข้าไปเอง วันก่อนผมได้คุยกับคุณชัยกร (ผู้พัฒนา MiKTex ThaiExtension) ได้ความว่าตอนนี้
แกได้หยุดการพัฒนาแล้ว ผมก็ยังเสียดายอยู่ กะว่าถ้าพอทำได้กะจะพัฒนาต่อ อย่างน้อยก็ทำให้
การติดตั้งง่ายขึ้น มีอักษรให้เลือกมากขึ้น คงต้องรบกวนขอคำแนะนำจากคุณเทพอีก
อีกคำถามหนึ่งนะครับ
ขนาดอักษรที่ใช้กับ latex เช่น 11pt, 12 pt นี่พอจะเทียบกับขนาดของอักษรที่ใช้บน วินโดวส์
ประมาณกี่ point ครับ แล้วถ้าจะกำหนดให้เป็น 11.5 pt นี่จะผิดกติกาของ latex หรือปล่าว
ขอบคุณอีกครั้งครับ
Re: thailatex กับการแสดงผลอักษรไทย
จากที่เคยวัดขนาดฟอนต์อังกฤษ-ไทยเทียบกัน ผมได้สูตรคร่าว ๆ ว่า
เมื่อ T คือ point size ของฟอนต์ไทย, E คือของฟอนต์อังกฤษครับ
สูตรนี้ใช้กับฟอนต์ไทยบนวินโดวส์ แต่ฟอนต์บนลินุกซ์ รวมทั้งฟอนต์ที่มากับ thailatex ได้ปรับขยายมาเรียบร้อยแล้ว
Re: thailatex กับการแสดงผลอักษรไทย
ต้องขอโทษด้วยครับ ที่ถามคลุมเครือ ผมกำลังคิดว่าถ้าหากผมสร้างเอกสารหน้าหนึ่ง
ด้วยโปรแกรม word processor ทั้งหลาย ด้วยฟอนต์ Angsana new 16 pt บ้าง 18 pt บ้าง
แต่ถ้าหากเปลี่ยนมาใช้ latex สร้างเอกสารแทน และ่ใช้ฟอนต์ Angsana new เช่นเดียวกัน
ผมจะกำหนดขนาดของฟอนต์ที่ใช้สักเท่าไหร่ (11 pt, 12 pt........) ดีเพื่อที่จะให้การแสดง
ผลออกมามีขนาดที่เท่ากันทุกประการ คุณเทพพอมีข้อมูล หรือสูตรเทียบเคียงไหมครับ
Re: thailatex กับการแสดงผลอักษรไทย
ตามสูตรข้างบนแหละครับ แต่ถ้าใช้สูตรข้างบนกับ lthangsa.fd ด้วย (โดยแทนที่ factor [1.5] ด้วย [1.33]) ก็จะทำให้เทียบเคียงได้ง่ายเข้า โดยเทียบเคียงเหมือนฟอนต์อังกฤษ-ไทยตามปกติด้วยสูตรเดียวกัน เช่น word ใช้ 16pt, latex ก็ใช้ 16/1.33 = 12pt; word ใช้ 18pt, latex ก็ใช้ 16/1.33 = 13.5pt
แต่ถ้าคุณใช้ factor 1.5 ตามแบบเนื้อหาที่แปะมา ก็เอา 1.5 ไปหารแทน 1.33 ก็จบ เพียงแต่ว่า factor 1.5 จะทำให้ตัวอักษรภาษาอังกฤษของ angsana โตกว่าตัวอักษรของฟอนต์อังกฤษปกติใน latex น่ะครับ แต่ถ้าใช้ 1.33 จะขนาดใกล้เคียงกว่า
Re: thailatex กับการแสดงผลอักษรไทย
กระจ่างขึ้นเยอะ ขอบคุณมากครับ
Re: thailatex กับการแสดงผลอักษรไทย
ดีจังครับที่มี forum กลับมาแล้ว
อยากถามด้วยว่า ถ้าผมจะใช้ฟอนต์ภาษาไทยตัวหนึ่งสมมติว่าเป็นครุฑ ฟอนต์ภาษาอังกฤษอีกตัวเช่น CMR ได้ยังไงครับ
ผมมีปัญหาว่าเอกสารที่ใช้คำสั่ง
\def\thairmdefault{garuda}
มันดูไม่สวยเมื่อในย่อหน้านั้นมีภาษาอังกฤษและมีคณิตศาสตร์ด้วย (เพราะเป็นคนละฟอนต์กัน)
Re: thailatex กับการแสดงผลอักษรไทย
แทนที่จะ \def\thairmdefault{garuda} ผมว่าลองใช้คำสั่ง \sffamily แทนดีไหมครับ เช่น:
\begin{document} \sffamily % เนื้อหาปกติ \end{document}Re: thailatex กับการแสดงผลอักษรไทย
\begin{document} \sffamily สวัสดีครับ ผมชื่อ \rmfamily gtdj \sffamily ครับ วันนี้อยากลองแทน $g=3$ ลงในสมการ... \end{document}เป็นทำนองนี้หรือเปล่าครับ คือเวลาจพิมพ์ภาษาอังกฤษทีก็ต้องใส่ \rmfamily ลงไปทุกครั้ง
แล้วผมจะทำให้ฟอนต์สำหรับตัวอักษรไทยเป็นครุฑ แต่ฟอนต์สำหรับภาษาอังกฤษเป็น CMR ได้โดยไม่ต้องกำหนดเองแบบด้านบนได้หรือเปล่าครับ
Re: thailatex กับการแสดงผลอักษรไทย
อ้าว ต้องการใช้ฟอนต์ปนกันหรอกหรือ? ผมเข้าใจผิดน่ะครับ เพราะเห็นตอนท้ายบอกว่าใช้ฟอนต์ปนกันแล้วไม่สวย เลยไพล่เข้าใจไปว่าพยายามเซ็ต thairmdefault เพื่อให้เป็น san-serif ทั้งเอกสาร แต่ยังเหลือภาษาอังกฤษ.. (จริง ๆ ผมก็งงคำถามอยู่นะครับ เพราะขัดกับตอนต้นที่บอกว่าอยากใช้ฟอนต์ปนกัน)
Re: thailatex กับการแสดงผลอักษรไทย
จริง ๆ คำถามผมควรจะเป็น...
อยากใช้ฟอนต์ san-serif กับตัวหนังสือภาษาไทย แต่ใช้ฟอนต์ serif (roman) กับตัวหนังสือภาษาอังกฤษมากกว่ามั้งครับ