Listings ตอนที่ 2 ภาษาที่รองรับ

จากตอนที่แล้ว listings ตอนที่ 1 เรียกน้ำย่อย ได้เกริ่นนำถึงประโยชน์ของ listings รวม
ไปถึงวิธีการใช้งานเบื้องต้น มีข่าวที่น่ายินดีจาก CTAN Announcements ว่าวันนี้เองตัว
แพ็กเกจ listings ได้มีการปรับปรุงหลังจากที่ไม่ได้ทำมาสามปี โดยตอนนี้คนที่มารับช่วง
ดูแลคือ Brooks Moses และได้มีการแก้ไขบักทั้งใหญ่และน้อย รวมถึงเพิ่มภาษาโปรแกรม
ที่สามารถรองรับเข้าไปอีก ซึ่งตอนนี้เลขเวอร์ชันเปลี่ยนเป็น 1.4 แล้ว ทำให้ผมจะอ้างอิง
ถึงเลขเวอร์ชันนี้แล้วนะครับ ใครอยากใช้เวอร์ชันนี้แล้วไม่รู้วิธีติดตั้งก็รอ Miktex upgrade
แพ็กเกจซึ่งก็คงอีกไม่นาน ใครรู้วิธีก็ไปดาว์นโหลดได้ที่ CTAN-listings แต่โดยหลัก ๆ
คิดว่าเวอร์ชัน 1.3 กับ 1.4 คงไม่มีอะไรต่างกันมาก ถึงแม้จะห่างกันถึงสามปีก็ตาม

มาดูภาษาที่ listings สามารถรองรับได้นั้นว่ามีอะไรบ้าง แน่นอนต้อง \LaTeX
และ \TeX เป็นของตายอยู่แล้ว ส่วนภาษาอื่น ๆ ที่รองรับก็ครอบคุมที่ผมรู้จัก
ทั้งหมดแม้กระทั้ง Matlab, octave เรื่องนี้สำคัญเพราะตัว listings เองไม่ได้แสดงรหัส
ของภาษานั้น ๆ อย่างธรรมดา แต่มีการเน้นข้อความที่เป็นคำสั่งของแต่ละภาษาด้วย เช่น

จะเห็นได้ว่าคำสั่งของ Matlab จะถูกแสดงเป็นตัวหนาให้โดยอัตโนมัติ

โดยเพิ่มคำสั่งง่าย ๆ ตามรหัสต้นด้านขวามือ โดยสี DarkGreen นั้นต้องเพิ่มแพ็กเกจ
\usepackage[svgnames]{xcolor} เข้าไปด้วย

 

ถ้าจะให้มีกรอบ มีสี มีเงา มีเลข ก็เพิ่มตัวเลือกตามข้างบน ง่ายไหมหล่ะ

Listings ตอนที่ 1 เรียกน้ำย่อย

อยากรู้ไหมครับว่าเอกสารแบบข้างบนเขาทำอย่างไรกัน สำหรับ \LaTeX
แล้ววิธีการที่ง่ายที่สุดก็วางรูปก่อนแล้วใช้ environment verbatim ใส่ fill box ให้
เรียบร้อย ก็จะได้ดังต้องการ สำหรับคนที่ไม่รู้ pstricks และ verbatim ก็ให้ไปศึกษา
ก่อน แล้วค่อยมาอ่านต่อแล้วกัน หรือจะใช้ตัวอย่างอื่นที่ไม่ใช้ pstricks ก็ได้

วิธีการขั้นต้นนั้นคือใช้ package listings ในขั้นต้นจะพูดถึงเฉพาะการแสดง code
ใน block มีกรอบสีเหลือง สิ่งที่ต้องการคือ

\usepackage[svgnames]{xcolor} %สำหรับสี LightYellow

\usepackage{listings}

\lstset{%
    frame=single,   %กำหนดให้มีกรอบแบบเส้นเดี่ยว
    backgroundcolor=\color{LightYellow},%ใส่สี background
    numbers=left,  % ให้ใส่ตัวเลขบรรทัดด้วย
    linewidth=5.5in, % กำหนดความกว้าง 5.5 นิ้ว
    breaklines=true, % ให้ขึ้นบรรทัดใหม่ถ้าข้อความยาวเกินกรอบ
    stringstyle=\ttfamily, % เลือกฟอนต์สำหรับ string
    basicstyle=\small\ttfamily % เลือกฟอนต์สำหรับคำสั่ง

}

ถ้าต้องการรูปภาพแบบข้างบนก็ลอก code แล้วปิดหัวท้ายด้วย \begin{center} … \end{center} ตามด้วย \begin{lstlistings} … \end{lstlistings} ในส่วนที่ต้องการ
แสดงคำสั่ง ก็จะได้สิ่งที่วาดฝันไว้

คราวหน้าจะนำเสนอวิธีการใช้ package listings ที่ลึกกว่านี้ ไว้เจอกันครับ