ปัญหาเรื่อง bibtex และ two column equation


ปัจจุบันประชุมวิชาการในต่างประเทศเริ่มเข้มงวดกับแบบฟอร์มของเอกสารมากขึ้น
โดยความเข้าใจส่วนตัวคิดว่าคงเพราะต้องการทำงานแบบอัตโนมัติให้มากขึ้น ด้วย
ความที่เอกสารแบบ pdf นั้นเราสามารถตรวจสอบรายละเอียดคุณลักษณะของ
เอกสารได้ทั้งหมด ดังนั้นการตรวจสอบจึงเข้มงวดตั้งแต่เริ่มต้น ลองไปดูที่ Paper Plaza ดูก็ได้ครับ เรื่องนี้ได้สร้างความปวดเศียรเวียนเกล้าให้ผู้คนมากมายทีเดียวฃ
ตัวผมเองนั้นมีปัญหาน้อยเพราะมีความชำนาญพอเอาตัวรอดได้ อีกอย่างคุ้นเคย
กับเครื่องมือที่เป็นมาตรฐานอยู่แล้ว วันนี้เพื่อนร่วมงานเอาปัญหายาก ๆ เกี่ยวกับ
สองเรื่องตามหัวเรื่องมาถาม (ปกติควรจะเป็นหน้าที่ของผู้จัดประชุมวิชาการที่ควร
จะจัดหาไฟล์รูปแบบ สำหรับ \LaTeX ไว้ให้ผู้เขียน ซึ่งต้องประกอบด้วย
.cls สำหรับเอกสาร .bst สำหรับ bibtex) ซึ่งปัญหามีดังนี้ครับ

ผู้จัดประชุมวิชาการต้องการให้อ้างอิงเอกสารในรูปแบบนี้ (Name, 1998) ซึ่งปกติ
ถ้าใครใช้ harvard.sty มันก็จะเป็นแบบนี้อยู่แล้ว แต่ผู้จัดดันสร้างไฟล์รูปแบบไว้
ให้ผู้เขียนใช้ และไฟล์รูปแบบดังกล่าวดันเก่าแก่และไม่สอดคล้องกับ harvard.sty
เวอร์ชันปัจจุบัน วิธีการที่ใช้แก้ไขตอนนั้นก็คือ ใช้ natbib.sty แล้วใช้คำสั่ง \citep
และ \citet แทนที่จะเป็น \cite แบบปกติ ทีนี้เจ้าไฟล์รูปแบบเจ้ากรรมดันไปกำหนด
วงเล็บให้เป็นวงเล็บก้ามปู [ ] ซะอีก แก้อย่างไรก็ไม่หาย บรรณาธิการของประชุม
วิชาการบอกว่าให้แก้ไขไฟล์รูปแบบเอาเอง (บ้าเหรอ) ผมจึงต้องไปพึ่งคู่มือของ
natbib.sty ซึ่งทำไว้ค่อนข้างดีทีเดียว natbib.pdf และพบว่ามีวิธีแก้ไขโดยกำหนด
Citation Punctuation เองโดยใช้คำสั่ง \bibpunct คือถ้าต้องการให้เป็นวงเล็บ
แบบปกติก็ใช้

\bibpunct[;]{(}{)}{,}{a}{}{;} เพื่อเปลี่ยนรูปแบบเป็น (Jone et al. 1990) แทน
ที่จะเป็น [Jone et al. 1990]

ปัญหาที่สองคือการใส่สมการแบบยาว ๆ ที่คร่อมสองคอลัมน์ในเอกสารแบบสอง
คอลัมน์ จริง ๆ แล้วปัญหานี้แก้ง่าย ๆ ด้วยการใช้ \begin{figure*} \end{figure*}
คร่อมสมการ เพื่อบอก \LaTeX ให้ใช้คอลัมน์เดี่ยวสำหรับรูปหรือตาราง
ปัญหาคือเนื่องจากสมการมีขนาดใหญ่ ดังนั้นสมการนี้จะถูกจัดให้วางไว้ที่ส่วนบน
ของหน้าถัดไปเสมอ เวรกรรมจริง ๆ บรรณาธิการก็ไม่ยอมให้ผ่านนะสิครับทีนี้ ร้อน
ถึงผมอีกที่ต้องหาทางแก้ไข โดยคราวนี้ต้องไปศึกษาวิชามารจาก IEEEtran_
HOWTO.pdf
ซึ่งได้อธิบายวิธีการแก้ไขไว้อย่างพิศดารทีเดียว โดยเขาเรียกปัญหา
นี้ว่า Double Column Equation รายละเอียดไปดูเอาเองจากเอกสารที่ว่า โดย
คร่าว ๆ คือ คุณต้องใส่สมการนั้นไว้หน้าก่อนหน้าหนึ่งหน้า เช่น ถ้าต้องการใส่ไว้ที่
หน้า 6 ในรหัสต้นของคุณก็ต้องใส่สมการไว้ที่หน้า 5 ตามลำดับหน้าของผลลัพธ์
การทำเช่นนี้จะทำให้ลำดับตัวเลขของสมการเพี้ยนไป วิธีแก้ก็ต้องเก็บค่าตัวเลข
ของสมการไว้ที่ตัวแปรใดตัวแปรหนึ่งไว้ก่อน เช่น

\newcounter{mytempeqncnt} สร้างตัวแปรมาเก็บค่า counter
ก่อนเขียนสมการก็ต้องเก็บค่า counter ของสมการ ด้วยคำสั่ง
\setcounter{mytempeqncnt}{\value{equation}}
และก็เซ็ตตัวเอง counter ปัจจุบันให้ล่วงหน้าไป เช่นถ้าสมการของเราต้อง
การตัวเลขอ้างอิงสองตัว 6-7 เราก็เซ็ทตัวนับให้เป็นห้าด้วยคำสั่ง
\setcounter{equation}{5}
เมื่อจบสมการเราก็แก้ตัวนับกลับไปเป็นตัวเดิมด้วยคำสั่ง
\setcounter{equation}{\value{mztempeqncnt}}
ทีนี้ไปดูที่ผลลัพธ์ เลขสมการมันจะเหลื่อมกันอยู่ ก็ให้ไปที่ก่อนหน้าสมการที่เลข
มันเหลื่อมกันแล้วใช้คำสั่ง
\addtocounter{equation}{2}
ก็เป็นอันจบเรื่อง

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

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s