PracTeX Journal 2007-1

ข่าวแรกที่น่าสนใจคือ videos การสอน \TeX ของ Don Knuth เจ้าพ่อ
อัลกอริทึม คนที่เป็นแฟน \TeX เห็นแล้วอาจจะน้ำตาไหล ดูแล้วน้ำตาก็ไหล
เหมือนกันเพราะ Don Knuth พูดมากกว่าสอน ดูไปสิบนาทีก็ยังไม่สอนอะไรเลย ไป
ดูกันเองแล้วกันนะครับ โดยส่วนตัวคิดว่ามันเหมาะกับนักสะสมมากกว่า

ฉบับนี้มีเรื่องน่าสนใจหลายเรื่องแต่โดยส่วนใหญ่เป็นเรื่องที่ค่อนข้างจะลึกไปซักหน่อย
เช่นเรื่อง Creating book covers with PSTricks หรือ Hacking DVI files และ เรื่อง Square concepts ที่เกี่ยวกับหมากรุกสากล แต่ก็น่าสนใจดีไม่ใช่น้อย

ส่วนเรื่องทั่วไปที่น่าสนใจเช่น  Graphics in LaTeX กับ Graphics with PGF and TikZ ก็อาจจะทำให้คุณน้ำลายสอก็ได้

ฉบับหน้าเดือนพฤษภาคม เป็นเรื่องที่คนอยากแต่งหนังสือไม่ควรพลาด เพราะเป็นการ
สอนวิธีสร้างหนังสือให้พร้อมพิมพ์ สำหรับฉบับนี้ใครสนใจก็ไปดูได้ที่  The PracTeX journal ได้เลยครับผม

Advertisements

มาวาดรูปด้วย TikZ กับ PGF กันดีกว่า

หลายคนคงรู้จัก PsTricks แล้ว และก็คงรู้ว่ามันไม่ portable  กล่าวคือไม่สามารถใช้
กับ pdfTeX ได้ (pdfTeX ดูเหมือนจะมาแทนที่ dvi-dvips-ps2pdf ในเร็ววัน) ทำให้
เอกสารหลายอันเมื่อต้องการจะคอมไพล์ด้วย pdfTeX แล้วทำไม่ได้ ซึ่งตัว pgf นั้น
ถูกสร้างขึ้นมาเพื่อเป็นตัวแทน PsTricks คำว่า “PGF”  ย่อมาจากคำเต็มเท่ ๆ ว่า “pretty, good, functional” ส่วนชื่อเชย ๆ ก็มาจาก “portable graphics format”
ตัวภาษาต้องการสร้างขึ้นมาเพื่อให้สามารถสร้างรูปภาพแบบแทรกบรรทัดลงใน \LaTeX ได้โดยตรง ตัวอย่างเช่น

\tikz \draw (0pt,0pt) — (20pt,6pt); 

ก็จะได้เส้นที่ลากจากจุด (0,0) ไปยังจุด (20,6) หรือ

\tikz \fill[orange] (1pt,1pt) circle (5pt);

ก็จะได้วงกลมที่มีจุดศูนย์กลางที่ (1,1) รัศมี 5 โดยที่คำสั่งเหล่านี้แทรกเข้าไปที่
บรรทัดไหนของ \LaTeX ก็ได้ ข้อที่ดีที่สุดเห็นจะเป็นข้อที่ตัวเอกสารนั้น
สามารถจะคอมไพล์ด้วย \LaTeX หรือ pdfTeX ก็ได้

ใครใจร้อนก็ไปอ่านคู่มือได้ก่อนที่ TikZ and PGF ซึ่งความสามารถของโปรแกรมนี้ไม่
ด้อยไปกว่า PsTricks เลย แต่ก็ยังด้อยกว่าเยอะเหมือนกัน เราลองมาวาดรูปง่าย ๆ
กันก่อนดีไหน

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
   \draw (0,0) circle (1cm);
\end{tikzpicture}
\end{document}

รหัสต้นข้างบนก็จะได้วงกลมรัศมี 1 cm ไม่แสดงให้ดูแล้วกันครับเพราะว่ามันง่าย

 

ทีนี้มาลองวาดรูปนิวเคลียสง่าย ๆ ดังรูปข้างบน โดยสีแดงคือโปรตรอน และสีเขียวคือ
นิวตรอน

ยังไม่เสร็จ

LaTeX and Xfig

เอกสารของ Xfig มีได้บอกวิธีการใช้งานร่วมกัน \LaTeX เอาไว้ ซึ่งวิธีการ
ค่อนข้างยุ่งยากพอสมควร และแยกกันระหว่าง dvips และ pdftex ในตอนนี้จะนำเสนอ
วิธีที่ยุ่งยากกว่าแต่ไร้ขบวนท่ามากกว่า คือใช้กับอะไรก็ได้ ได้ลองนั่งคิดดูแล้วก็พบว่าโดย
ปกติในตอนแรกที่เราวาดรูปนั้นก็เป็นจุดที่เสียเวลามากอยู่แล้ว ถ้าแค่เสียเวลาเพิ่มอีกนิด
หน่อยในการแก้ไขไฟล์เล็กน้อยก็ไม่น่าจะมีปัญหาอะไร

มาเริ่มจาก Xfig ก่อน โดยปกติแล้วข้อความใน Xfig จะเป็นฟอนต์แบบ Postscript นั่น
หมายความว่ามันไม่สนใจคำสั่งของ \LaTeX ที่เราใส่ลงไปในรูปภาพ ซึ่งแทนที่
ข้อความ $x^2+y^2 = z^2$ จะปรากฎเป็น x^2+y^2=z^2 ตามที่ตั้งใจมันก็
ไม่ ในการปรับให้ Xfig เข้าใจคำสั่งของ \LaTeX นั้นจำเป็นต้องปรับตัวเลือก
ของ Xfig ซึ่งยุ่งยากพอสมควร เพื่อลดความยุ่งยากในการเลือกตัวเลือกเราสามารถทำ
ได้สองวิธีคือ เรียก Xfig พร้อมตัวเลือก

xfig -specialtext -latexfonts -startlatexFont default

หรือจะไปเพิ่มที่ไฟล์ .bashrc ดังนี้

alias xfig=’xfig -specialtex -latexfonts -startlatexFont default’

ก็สะดวกดี หรืออาจจะสะดวกที่สุด

วิธีที่สองก็เพิ่มสองบรรทัดนี้เข้าไปใน .Xresources

Fig.latexfonts: true
Fig.specialtext: true

Fig.customization: -color

สำหรับผู้ใช้ Xfig ผ่าน cygwin ให้เรียก Xwindow โดยใช้คำสั่ง startxwin.sh เท่านั้น
จากนั้นก็วาดรูปได้เลย ตรงไหนต้องการสมการคณิตศาสตร์ก็ใส่คำสั่งนั้น ๆ เข้าไป ข้อเสีย
เท่าที่เห็นสำหรับวิธีการนี้ก็คือการปรับตำแหน่งข้อความอาจจะเสียเวลาหน่อย เพราะ
สมการกับคำสั่งมันยาวไม่เท่ากัน

หลังจากนั้นให้ทำดังนี้ (ได้แนวคิดมาจากเว็บนี้)

  1. ให้ export โดยใช้ตัวเลือก Combined PS/LaTeX (both parts) โดยแทนที่จะ
    เก็บไฟล์ให้มีนามสกุลเป็น .pstex ตามค่าตั้งต้น ก็ให้เก็บเป็น .eps เลย ตรงนี้ไฟล์
    .pstex_t ก็จะเปลี่ยนเป็น .eps_t ด้วย
  2. ใช้ epstopdf เปลี่ยนไฟล์ .eps เป็น .pdf ทั้งนี้เราจะสามารถใช้งานได้ทั้ง dvi และ
    pdftex โดยไม่ต้องแก้ไข .tex ไฟล์
  3. แก้ไขไฟล์ .eps_t ในบรรทัด \includegraphics{xxxx.eps} เป็น \includegraphics{xxxx} ไม่ต้องใส่นามสกุล
  4. เวลาเรียกรูปภาพก็ให้ใช้ \input{file.eps_t} แทน \includegraphics{file.eps}
  5. ปรับขนาดรูปภาพได้โดยคำสั่ง \resizebox{3cm}{!}{\input foo.pdftex} % sets the width to 3cm ซึ่งตรงนี้สามารถเขียน
    \newcommand ทีหลังได้
  6. รูปทั้งหมดให้เก็บไว้ใน directory ย่อยต่างหาก แล้วใช้คำสั่ง
    \graphicspath{{mygraphics/}} เพื่อแจ้งให้เอกสารรู้ว่าจะไปหารูปภาพ
    ได้ที่ไหน กรณีที่มีหลาย directory ก็
    \graphicspath{{myg1/},{myg2/}} หรือจะใส่แบบเต็ม ๆ ก็ได้ในกรณีที่มี
    คลังรูปภาพเก็บไว้ใช้หลายงาน

ข้อดีของวิธีการนี้คือ เวลาเรารูปแบบฟอนต์ก็จะเปลี่ยนตาม ไม่ต้องไปคอยแก้ไข
ตลอดเวลา และเนื่องจากไฟล์ .eps_t นั้นจะเก็บไฟล์ข้อความไว้ เวลาแก้ไข
สมาการคณิตศาสตร์เล็ก ๆ น้อย ๆ ก็แก้ที่ไฟล์นี้ได้โดยตรง ไม่ต้องไปแก้ที่ Xfig

ด้วยวิธีการนี้จะใช้ latex หรือ pdftex คอมไพล์ไฟล์ก็ได้แล้ว แต่จริง ๆ แล้วสำหรับ
โปรแกรมวาดรูปพวก TpX หรือ circuit_macro เราก็สามารถแก้ option เพื่อให้ใช้
ฟอนต์ของสมการกับเอกสารเป็นไปในแนวเดียวกันก็ได้ แต่กรณี TpX นั้นยังขาดความ
สามารถในการ import ไฟล์ jpg, png หรือ gif นำมาแก้ไข ดังนั้นการรู้วิธีการใช้ Xfig ไว้
ก็ไม่เสียหลายครับ