ช่วงนี้มีคนถามเกี่ยวกับเรื่องการใช้ LaTeX กับภาษาไทยบ่อยๆ เลยเอามาจดไว้หน่อยล่ะกัน ที่โดนถามๆ มา มักจะเป็นการใช้ LaTeX เขียนเปเปอร์โดยใช้ภาษาอังกฤษเป็นหลัก มีภาษาไทยแทรกเล็กน้อยเท่านั้น จึงทำได้ 2 วิธี
apt-get install thailatex ก็น่าจะจบแล้ว ส่วนวิธีการใช้งาน ก็เพียงแค่เพิ่ม \usepackage[thai,english]{babel} เพื่อระบุว่าจะใช้ภาษาไทยด้วย แต่ให้ใช้ภาษาอังกฤษเป็นภาษาหลัก ฟอนต์ต่างๆ หรือรูปแบบเอกสารจะยังคงเหมือนกับ style file เดิม เวลาจะเขียนภาษาไทยก็ใช้สวิทช์ \thai เพื่อระบุส่วนที่ต้องการให้เป็นภาษาไทย เช่น {\thai ภาษาไทย}\usepackage{fontspec} เพื่อให้กำหนดลักษณะฟอนท์ได้ง่ายๆ แล้วก็แค่ {\fontspace{Thonburi} ภาษาไทย}ช่วงนี้ปิดเทอมแล้ว เริ่มมีเวลาว่างมากขึ้น เลยกะจะเตรียมสไลด์เกี่ยวกับ SVM ไว้สักหน่อย เพราะเห็นเด็กๆ ในแล็บหลายๆ คน ยังไม่ค่อยเข้าใจ SVM กันสักเท่าไหร่ จะทำสไลด์ให้ดีๆ ก็ต้องมีรูปประกอบ แต่เนื่องจากมีเป็นรูปที่เกี่ยวกับพวกสมการเชิงเส้น และเวคเตอร์ต่างๆ ก็เลยกะจะใช้ PGF ซึ่งเป็นคลาสบน LaTeX สำหรับเขียนคำสั่งวาดเส้นต่างๆ ลักษณะก็คล้ายๆ กับ PStricks และ MetaPost แต่ PGF มีข้อดีอยู่ตรงที่สนับสนุน pdfLaTeX โดยตรง ทำให้สร้างผลงานเป็น pdf ได้ง่ายกว่าอย่างอื่น อีกอย่าง PGF เป็นคลาสพื้นฐานของ Beamer ที่เอาไว้ทำสไลด์บน LaTeX อีกด้วย เพราะเขียนด้วยอาจารย์เยอรมันคนเดียวกัน การวาดรูปด้วยคำสั่งแบบนี้มีข้อดีอยู่ที่เราสามารถกำหนดตำแหน่งต่างๆ ได้จริง ได้รูปตามที่เป็นเรขาคณิต แต่ก็มีข้อเสียที่บางครั้งอาจจะต้องใช้การคำนวณด้วย เช่น บางทีอยากได้จุดตัดระหว่างสองเส้น ก็ต้องไปคิดก่อนว่ามันตัดกันตรงไหน แต่ PGF มีจุดเด่นที่สามารถคำนวณค่าต่างๆ พวกนี้ให้ได้ด้วย เช่น
\begin{tikzpicture} \draw[help lines] (0,0) grid (4,4); \coordinate (a) at (0,0); \coordinate (b) at (4,4); \coordinate (c) at (0,4); \coordinate (d) at (4,1); \begin{scope}[blue, thick] \draw (a) -- (b); \draw (c) -- (d); \end{scope} \fill[red] (intersection of a--b and c--d) circle (3pt); \end{tikzpicture} |
![]() |
จะได้รูปเส้นตรง 2 เส้นตัดกัน ก็จุดตัดทำเป็นวงกลมที่แดงไว้ ตำแหน่งจุดตัดนี้ก็หาได้โดยใช้คำสั่งแค่ intersection of a--b and c--d ทำให้ทำงานต่างๆ ได้ง่ายขึ้น เขียนไปเขียนมากลายเป็นเรื่องวิธีใช้ PGF ได้ซะแล้ว แต่จริงๆ ต้องการจะบอกว่าเขาออก PGF เวอร์ชันใหม่ คือ 2.00 แล้วมีฟีเจอร์ใหม่ๆ เพิ่มขึ้นเยอะ ว่าแล้วก็จบลงอย่างห้วนๆ ไว้ ณ ที่นี้

เอกสารแบบปกติใน LaTeX จะไม่มีการแบ่งคอลัมน์ ข้อความทั้งหมดจะถูกจัดไว้ในคอลัมน์เดียว แต่ถ้าก็ต้องให้เอกสารมี 2 คอลัมน์ ก็ทำได้โดยกำหนด option “twocolumn” ลงไปใน documentclass เช่น
\documentclass[twocolumn]{article}
เอกสารก็จะถูกจัดให้กลายเป็น 2 คอลัมน์ แต่บางครั้งเราก็ต้องการกำหนดให้บางส่วนเป็นคอลัมน์เดียวด้วย เช่น ตอนเริ่มเอกสารใช้คอลัมน์เดียวก่อน แล้วค่อยเปลี่ยนเป็น 2 คอลัมน์ทีหลัง จะระบุอย่างนี้ได้โดยใช้คำสั่ง \onecolumn และ \twocolumn โดยใช้เป็นสวิทช์สำหรับเปลี่ยนลักษณะการจัดเอกสาร ข้อความตั้งแต่บรรทัดที่ใช้ \onecolumn เป็นต้นไปจะถูกจัดเป็นคอลัมน์เดียว ถ้าจะเปลี่ยนให้เป็นสองคอลัมน์ก็ใช้ \twocolumn
นอกจากนี้ถ้าต้องการให้มีเส้นคั่นระหว่างคอลัมน์ ก็ให้ไปกำหนดความหนาของเส้นคั่นที่ \columnseprule เช่น
\setlength{\columnseprule}{0.4pt}
และถ้าต้องการจัดเอกสารให้มีมากกว่า 2 คอลัมน์ เห็นเขาว่าต้องใช้แพคเกจชื่อ multicol
Tags: latex
ปกติจะใช้ LaTeX-Beamer สำหรับทำสไลด์ประกอบการสอน เพราะใช้ง่าย และสบายกว่าโปรแกรมพรีเซนเตชันต่างๆ ไม่ว่าจะเป็น MS Powerpoint หรือ Keynote แต่พอใช้มานานๆ ก็รู้สึกว่าสไลด์ที่ได้มันดูยุ่งเหยิงยังไงก็ไม่รู้ อยากได้อะไรที่เรียบง่ายๆ ทำให้เกิดปฎิบัติการตามหา LaTeX class ใหม่ สำหรับทำสไลด์
พอดีไปเจอเว็บเป็น wiki ภาษาญี่ปุ่นแนะนำ class ที่เกี่ยวกับพรีเซนเตชันไว้หลายแบบ สุดท้ายเลยเลือก FoilTeX เพราะดูหน้าตาเรียบง่าย แต่ก็สามารถปรับแต่งได้พอสมควร สำหรับวิธีติดตั้งและใช้งานก็ง่ายมาก
เริ่มจาก เข้าไปที่ CTAN.org เอาแพคเกจรุ่นใหม่สุดมาก่อน หลังจากระเบิดไฟล์ออกมาแล้ว ก็รัน
$ latex foiltex.ins
ก็จะได้ไฟล์ต่างๆ ที่เกี่ยวข้องมาหลายไฟล์ ให้ไปสร้าง directory ไว้ใน texmf tree เช่น /usr/local/texmf.local/tex/latex/foiltex เอาไฟล์ตามระบุไว้ตอนท้ายของโปรแกรมติดตั้ง มาใส่ไว้ทั้งหมด แล้วก็
$ mktexlsr
เพื่อปรับปรุงฐานข้อมูลเกี่ยวกับไฟล์ก็เป็นอันเสร็จสิ้น เอาไฟล์มาลองสร้างสไลด์ได้เลย
\documentclass[30pt,Screen4to3]{foils}
\begin{document}
\foilhead{This is my first slide}
\begin{itemize}
\item \dots
\end{itemize}
\end{document}
สไลด์ที่ได้จะมีหน้าตาเรียบๆ (คือไม่มีอะไรเลย) แต่นี่แหละคือสิ่งที่อยากได้ตอนนี้ (ทั้งๆ ที่ก่อนหน้านี้เสียเวลาปรับแต่ง beamer ได้เป็นวัน)
Tags: latex
วันนี้จะทำตารางอันหนึ่งโดยใช้ tabular environment ของ LaTeX แล้วต้องการเส้นทแยงมุมบางหัวตาราง ลองหาดูพบว่ามีแพคเกจจัดการเรื่องนี้อยู่แล้ว ชื่อ slashbox.sty วิธีใช้งานก็เพียงแค่ใช้คำสั่ง \slashbox{}{} หรือ \backslashbox{}{} ตามแต่ลักษณะของเส้นที่ต้องการ ว่าจะให้ทแยงไปทางไหน รวมทั้งสามารถระบุข้อความในแต่ละส่วนได้ด้วย เช่น
\begin{tabular}{lccccc}
\backslashbox{Day}{Period} & 8:30-10:25 & ...
\end{tabular}
อ้างอิง: http://www.biwako.shiga-u.ac.jp/sensei/kumazawa/tex/slashbox.html
Tags: latex