21 December 2011

\newcommand กับ Optional Argument

\newcommand ใน LaTeX เป็นคำสั่งสำหรับนิยามคำสั่งใหม่ โดยกำหนดให้เป็น macro ของคำสั่งเก่าผสมกัน อย่างเช่น เวลาผมจะเขียนตัวอย่างในเอกสารการสอน ผมจะใช้ \paragraph{Example} เสมอ แทนที่ผมจะพิมพ์แบบนี้ทุกครั้ง ผมก็นิยามคำสั่งขึ้นมาได้ โดยใช้
\newcommand{\example}{\paragraph{Example}}
ทำให้ได้คำสั่ง \example เอาไว้ใช้ได้ทุกครั้ง พิมพ์สั้นกว่าเดิม แล้วจะเปลี่ยนลักษณะรูปแบบก็ทำได้ง่าย ทีนี้คำสั่ง \newcommand ยอมให้เรากำหนด argument ได้ด้วย อย่างเช่น
\newcommand{\mypages}[1]{There are #1 pages in this note.}
เวลาใช้คำสั่ง \mypages{10} ก็จะได้ข้อความ "There are 10 pages in this note." ออกมา LaTeX ยอมให้เรากำหนด argument ได้ถึง 9 อัน แล้วเราก็สามารถระบุให้ argument อันแรกสุดเป็น optional argument ได้ด้วย โดยเราสามารถกำหนดค่า default ของ argument แรกได้เอง เช่น
\newcommand{\mypages}[2][note]{There are #2 pages in this #1.}
ถ้าเรียกใช้ด้วย \mypages{10} ก็จะได้ผลเหมือนเดิม แต่เราสามารถเรียกใช้โดยกำหนดค่าของ optional argument ได้ด้วย เช่น \mypages[examination]{10} ก็จะได้ผลเป็น "There are 10 pages in this examination."