Subordinate numbering sequences

ในบางครั้งในการเขียนสมการเราก็ต้องการจัดกลุ่มของสมการเช่น 1a 1b … 1e แทนที่จะเรียง
แบบ 1 2 … 5 ซึ่งแบบแรกจะสามารถสื่อสารได้ดีกว่าว่าเป็นสมการเรื่องเดียวกัน ปกติก็ไม่เคย
ใช้หรือคิดจะใช้นะครับ พอดีเห็นคำค้นเรื่องนี้ก็เลยสนใจ พอค้น google ก็มีคนแนะนำว่าใน
package amsmath นั้นมีชุดคำสั่งนี้ให้อยู่แล้ว แถมยังบอกหน้าให้เสร็จสรรพว่าหน้า 10 พอเข้า
ไปก็ลองทำตามที่คู่มือบอก ปรากฏว่าไม่ได้ ก็ไม่ยากครับไปค้น google อีกรอบได้วิธีทำที่
ละเอียดกว่าที่ wikibooks ซึ่งมีวิธีการดังนี้นะครับ

\begin{subequations}
\begin{gather}
a x + b = 0 \\
a x^2 + b x + c = 0 \\
a x^3 + b x^2 + c x + d = 0
\end{gather}
\end{subequations}

ไปลองดูกันเองนะครับ
ถ้าต้องการ 1ก 2ข … ก็ต้องลงแพ็กเกจภาษาไทยก่อนแล้วก็ทำตามนี้นะครับ

\begin{subequations}
\renewcommand{\theequation}{\theparentequation
\thaialph{equation}}
\begin{gather}
a x + b = 0 \\
a x^2 + b x + c = 0 \\
a x^3 + b x^2 + c x + d = 0
\end{gather}
\end{subequations}

โดยการแปลงตัวเลขให้เป็นภาษาไทย โดยใช้คำสั่ง \thaialph{equation} ก็จะได้หน้าตาดังรูป
ข้างล่างนี้

thaieqn

ก็คิดว่าน่าจะมีประโยชน์ในการเขียนเอกสารภาษาไทยบ้างนะครับ

The PracTeX Journal 2008, No. 1

TUG logo

The PracTeX Journal ฉบับเดือนเมษายน ปี 2008 ออกแล้ว ฉบับนี้มีเรื่อง
ที่น่าสนใจมาก ๆ อยู่สองเรื่อง เรื่องแรกคือเรื่อง Writing a thesis with
LaTeX ในบทความมีตัวอย่างการการปรับแต่งรูปแบบวิทยานิพนธ์ของผู้เขียน
ที่น่าสนใจ นอกจากนั้นยังมีเอกสารอ้างอิงที่สามารถอ่านได้ในรูปแบบ pdf

ที่ควรอ่านอีกหลายเรื่องทีเดียว เรื่องที่สองเป็นการตอบคำถามเกี่ยวกับตาราง How do I
create math mode columns in tabular environments? ซึ่งมีการอธิบายการสร้างสิ่งแวด
ล้อมใหม่ ๆ ให้กับตาราง ซึ่งน่าสนใจเป็นอย่างยิ่ง

Xfig reused

จากเรื่องเดิม LaTeX and Xfig ผมถูกข้อร้องแกมบังคับให้
หันมาใช้ Xfig โปรแกรมวาดรูปของคนรัก Xfig ด้วยเหตุและ
ผลที่มีมากมาย และเหตุผลหนึ่งที่ต้องยอมจำนนและเห็นด้วย
ก็คือ ในขณะที่คนกึ่งหนึ่งใช้ Xfig และเป็นคนที่ต้องคอยจัด
การกับเอกสาร เขามีความจำเป็นที่จะต้องนำรูปภาพต่าง ๆ
กลับมาใช้ใหม่ และโปรแกรมที่เขาใช้ก็คือ Xfig

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

เมื่อถูกขอร้องให้ใช้ ก็ต้องใช้ แล้วก็ทำให้นึกถึงวิธีการเดิม ๆ ก็คือสร้างไฟล์ eps และ
pdf ซะเองเลย กล่าวคือเมื่อคุณ export Xfig ให้อยู่ในรูปของ eps กับ tex ไฟล์แล้ว คุณ
จะได้ไฟล์สองไฟล์คือ *.pstex และ *.pstex_t ซึ่งไอ้ไฟล์หลังคือไฟล์ที่คุณต้องแก้ไข

ผมใช้ batch ไฟล์ของ DOS ธรรมดานี่แหละ ทำการคัดลอกไฟล์ *.pstex_t ไปเป็นไฟล์
ชื่อ quick.tex ซะก่อน จากนั้นก็คอมไพล์ไฟล์ที่ชื่อ epshead.tex ซึ่งไฟล์ตัวหลังนี้มี
โครงสร้างดังนี้

\documentclass[a4paper]{article}
\usepackage{amsmath}
\usepackage{pstricks,pstricks-add}
\usepackage{rotating} % For rotated text in figs.
\thispagestyle{empty}
\begin{document}
\input d:/winedtmacro/quick.tex
\end{document}

ซึ่งถ้าเอกสารของคุณต้องการฟอนต์แปลก ๆ ก็เพิ่มเติมเข้าไปในไฟล์นี้ด้วย จากนั้นก็มุก
เดิม

dvips epshead.dvi
ps2epsi epshead.ps epshead.eps
copy epshead.eps %1.eps
del epshead.* % ไฟล์ชั่วคราว ลบได้
epstopdf %1.eps

เราก็จะได้ *.eps และ *.pdf ไว้ใช้งานแล้ว ใครจะทำปุ่มลัดก็ไม่ผิดกติกา

อนึ่งสำหรับผู้ใช้ Notebook สามารถแทนปุ่มกลางของ mouse ได้โดยการกดปุ่น Alt
และ mouse ปุ่มขวาพร้อมกัน

จัดระเบียบ สมการ

นั่งปั่น paper เมื่อคืนจะดึกดื่น พอมีเวลาก็ต้องมาตกแต่งสมการให้เอกสารให้สวยงาม เพื่อไม่
ให้เสียสถิติ ก็เลยมาลองนั่งสรุปดูว่ามีรูปแบบไหนบ้างที่เราใช้บ่อย

ปัญหาที่หลายคนอาจจะเจอแล้วก็ปล่อยไปสำหรับ \LaTeX นั้นก็คือการจัดระเบียบ
ตำแหน่งช่องไฟของสมการ กรณีทั่วไปเราสามารถใช้กรอบคำสั่ง align (ใช้คำว่ากรอบ
แทน environment) เพื่อจัดตำแหน่งช่องไฟของสมการได้ไม่ยากเย็นอะไรนัก
ซึ่งวิธีการใช้กรอบคำสั่งนี้ได้อธิบายไว้อย่างดีในเอกสารของแพ็คเกจ amsmath กรณี
ที่ใช้บ่อยที่สุดเห็นจะเป็นการจัดระเบียบสมการหลายบรรทัดซึ่งจะ

สำหรับกรณีนี้ผมชอบใช้กรอบคำสั่ง aligned ช่วย ด้วยเหตุผลง่าย ๆ ว่าชื่อคำสั่งมันเหมือน
กัน ทำให้ไม่ต้องจำมาก

\begin{align}
\begin{aligned}
x &= \frac{1}{2n}\sum^n_{l=0}(-1)^l(n-l)^{p-2} + \frac{1}{3n}
\sum^n_{l=0}(-1)^l(n-1)^{p-4} \\
&\quad + \frac{1}{4n}\sum^n_{l=0}(-1)^l(n-1)^{p-5}
\end{aligned}
\end{align}

ตัวสีแดงเป็นอักขระที่ช่วยในการจัดระเบียบช่องไฟ อนึ่งมีอีกหลายวิธีที่สามารถจัดสมการแบบ
หลายบรรทัดได้

ปัญหาถัดมา ที่สร้างความปวดหัวค่อนข้างมาก ก็คือการจัดกลุ่มของสมการในแนวตั้ง

การจัดสมการในรูปแบบนี้ ไม่ค่อยเกิดขึ้นบ่อยนัก แต่จำเป็นมาก ๆ เวลาต้องให้ค่าเชิงเลขของ
ตัวแปรหลาย ๆ ตัว ไม่งั้นเอกสารก็จะเยิ่นเย้อไม่น่าดู วิธีการก็ง่าย ๆ ตรงไปตรงมาดังนี้

\begin{align}
x &=y & X &=Y & a &=b+c\\
X’&=y & X’&=Y’ & a’&=b
\end{align}

เช่นเดิมตัวแดงคืออักขระที่ใช้ในการจัดช่องไฟ ต้องใส่ให้ครบนะครับ

ตัวอย่างสุดท้าย ที่พึ่งจะได้ทดลองใช้สด ๆ ร้อน ๆ เมื่อวานนี้เองคือ


มันแปลกตรงไหนหล่ะ เคยคิดตื้น ๆ ว่าน่าจะใช้วิธีการแบบข้างบนได้คือจัดแบบแถวแนวตั้ง
ปรากฏว่าผลที่ได้ไม่ดี ก็เลยต้องใช้บริการคู่มือ amsmath อีกครั้ง (ทำเป็นปกติอยู่แล้ว) ซึ่ง
มีวิธีให้ใช้สองวิธี วิธีแรกคือใช้กรอบคำสั่ง align ดังนี้

\begin{align}

\hat{y}^o(k+1) &= \hat{\Theta}(k)\hat{\phi}(k)
&& \text{ \emph{a priori}} \\
\hat{y}(k+1) &= \hat{\Theta}(k+1)\hat{\phi}(k)
&& \text{ \emph{a posteriori}}
\end{align}

ผลที่ได้ก็เป็นไปตามรูปข้างบน วิธีที่สองคือใช้กรอบคำสั่ง alignat ซึ่งสามารถกำหนดช่องไฟ
ได้

\begin{alignat}{2}
\hat{y}^o(k+1) &= \hat{\Theta}(k)\hat{\phi}(k)
&\quad & \text{ \emph{a priori}} \\
\hat{y}(k+1) &= \hat{\Theta}(k+1)\hat{\phi}(k)
&& \text{ \emph{a posteriori}}
\end{alignat}

ผลที่ได้จะดูดีกว่า ดังนี้


ซึ่งถ้าต้องการเปลี่ยนระยะช่องไฟ ก็สามารถทำได้โดยการเปลี่ยนระยะที่ &\quad & โดยใช้
คำสั่ง \hspace{1cm} ช่วย เป็นต้น

หวังว่าบันทึกช่วยจำนี้คงเป็นประโยชน์ต่อตัวผมเอง และคนอื่น ๆ ที่มาอ่านด้วยนะครับ

Adobe Reader 8.x กับ WinEDT

Get Adobe Readerตั้งแต่ออก Adobe Reader 8.x มา สิ่งที่น่ารำคาญที่สุดก็
คือ WinEDT ไม่สามารถจำหน้าเดิมของไฟล์ pdf ได้
พึ่งรู้เหมือนกันว่า Dr. Alex คนเขียน WinEDT นั้นได้มาตอบคำถามนี้ไว้ตั้งนานแล้ว
และวิธีแก้ก็ง่าย ๆ ดังนี้

  1. ไปที่เมนู Edit->Preferences->Documents ให้ยกเลิกตัวเลือก Show each document in its own window (requires restart) ออก
  2. แค่นั้นแหละ มันเป็นปัญหาของ Adobe Reader ไม่ใช่ WinEDT
  3. อย่าใช้ Adobe Writer นะครับถ้าไม่ได้ซื้อ ใหญ่ ไม่มีประโยชน์สำหรับเรา และ
    ผิดกฎหมาย

เรื่องของ Caption

caption1

เคยเจอปัญหานี้ไหมครับ เอ่อ ไม่ใช่กราฟมันเล็ก ๆ มองไม่เห็นนะครับ แต่ปัญหาที่ว่า
คือ บางทีรูปมันมีความแคบแต่คำอธิบายมันยาวมาก ๆ ทำให้ไม่สวยงาม เป็นต้น การ
จัดการกับปัญหานี้ทำได้ง่าย ๆ โดยการกำหนดระยะให้ Caption ทำอย่างไรหล่ะ

วิธีการก็ใช้ package caption นะครับ เปิดคู่มือแล้วก็อ่านตาม อ้าวไม่ใช่ ทำดังนี้ครับ

กรณีต้องการแก้ไขเฉพาะรูปนั้น ๆ ก่อนคำสั่ง \caption{xxx} ก็ให้ใส่คำสั่ง
\captionsetup{width=xcm} โดยแทน x ด้วยตัวเลข สิ่งที่คุณจะได้ก็ตามรูปข้างล่าง

caption2

ซึ่งคุณจะเห็นว่าเหมาะสมขึ้นในบางกรณี หวังว่าจะเป็นประโยชน์นะครับ

\newcommand ซะหน่อย

ใน \LaTeX นั้นคุณสามารถสร้างคำสั่งใหม่เพื่อใช้ส่วนตัวได้ด้วยคำสั่ง

\newcommand{cmd}[args]{definition}
\newcommand{cmd}[args][default]{definition}

แบบนี้ ซึ่งสะดวกมาก ยกตัวอย่างถ้าคุณต้องการเขียนสมการแบบนี้

x_1 + x_2 + \cdots + x_n

แต่บางครั้งในเอกสารจำเป็นต้องเปลี่ยน x ไปเป็น y บ้าง z
บ้าง และต้องเขียนแบบนี้เยอะมากในรายงาน การทำคำสั่งใหม่ไว้ใช้ก็เป็นความคิดที่ดี
ซึ่งทำได้ดังนี้

\newcommand{\xse}[1][x]{#1_1 + #1_2 + \cdots + #1_n}

เวลาเรียกใช้งานถ้าสั่งแค่ \xse ค่าโดยปริยายก็จะแสดงเป็น x แต่ถ้าสั่งเป็น
\xse[y] เราก็จะได้อนุกรมของ y แทนซึงสะดวกดี

ข้อจำกัดของคำสั่งนี้ก็คือคุณจะใส่ค่าโดยปริยายได้เพียงแค่ค่าแรกค่าเดียวเท่านั้นเอง
ทางแก้ง่าย ๆ ก็คือไม่ต้องมีค่า

สำหรับในกรณีสองตัวแปรเช่นในบางกรณีต้องการเปลี่ยนค่าสุดท้ายจาก n
ไปเป็นแบบอื่น ก็

\newcommand{\xse}[2][x]{#1_1 + #1_2 + \cdots + #1_#2}

ถ้าต้องการได้

z_1+z_2 + \cdots + z_m

ก็สั่ง \xse[z]{m} เป็นต้น

TeX capacity exceeded, sorry

เคยคอมไพล์ \LaTeX แล้ว เจอแบบนี้ไหมครับ

! TeX capacity exceeded, sorry [main memory size=1500000].

bla bla bla

If you really absolutely need more capacity,
you can ask a wizard to enlarge me.

ประโยคสุดท้ายน่ารักไหมครับ มีอีเมลก็น่าจะรู้จักประโยคพวกนี้ดี เข้าเรื่อง ผมเจอ
กรณีนี้เนื่องจากไฟล์สร้างรูปภาพใหญ่เกิน นั่งหาวิธีแก้อยู่นานเหมือนกัน

สำหรับ MiKTeX 2.7 ให้สั่งคำสั่งตามด้วยตัวเลือกเพิ่มหน่วยความจำ เช่น

pdflatex -extra-mem-top=7500000 main.tex

หรือ

latex -extra-mem-top=7500000 main.tex

ตัวเลข 7500000 คือหน่วยความจำที่ยอมให้เพิ่ม สำหรับเวอร์ชันที่ต่ำกว่า 2.7 ก็ต้อง
ไปดูตัวเลือกของ command line เอา มีอยู่แล้วใน release note ของ 2.7

เรื่องของ pdf

ตามจากลิงค์ของ Anddrew Greensted จาก bact มา มีเรื่องน่าสนใจและควรจะบันทึกไว้อยู่สองเรื่อง

  1. การฝังฟอนต์โดยใช้ pdflatex ซึ่งในภายภาคหน้าใครต้องการจะสร้างหนังสือซัก
    เล่มและใช้ฟอนต์แปลก ๆ บางสำนักพิมพ์จะบังคับให้เราต้องฝังฟอนต์ลงไปด้วย
    ซึ่งไม่ใช่ค่าตั้งต้นของ pdflatex เพราะไฟล์มันจะใหญ่มาก ก็ลองไปทำตามที่เขา
    สอนดูนะครับ ตัวผมเองคงไม่ลอง
  2. เรื่องการรวมเล่มไฟล์ pdf อันนี้น่าจะดีมีประโยชน์มาก ๆ สำหรับคนทำ
    proceedings แน่นอนสำหรับคนที่ซื้อ Acrobat ตัวเต็มมาคุณก็ทำได้ แต่ถ้าไม่มี
    เงินจ่ายวิธีนี้ก็เป็นทางเลือกที่ดี แต่จริง ๆ มีวิธีฟรี ๆ ดี ๆ อีกหลายวิธีไว้จะมาบอก
    วันหลัง

สำหรับข้อสองนั้น ชาว \LaTeX ก็มีของให้ใช้นั่นคือ confproc ก็สะดวกดีเหมือน
กัน