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

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

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

โดยเพิ่มคำสั่งง่าย [...]

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

อยากรู้ไหมครับว่าเอกสารแบบข้างบนเขาทำอย่างไรกัน สำหรับ แล้ววิธีการที่ง่ายที่สุดก็วางรูปก่อนแล้วใช้ 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} [...]