PDF Forward/Inverse Search with Sumatra PDF with WinEDT 6

ตั้งใจจะซื้อ WinEDT 6 มาใช้นานแล้ว ยังไม่ได้ซื้อซักที วันนี้ WinEDT 6 ได้ออกเวอร์ชันแก้บักมา ถึงแม้ยังไม่สนับสนุน Unicode เต็มตัวแต่ก็คิดว่าถึงเวลาที่ต้องเปลี่ยนมาใช้แล้ว สิ่งแรกที่ต้องกระทำคือการใช้งาน Forward/Inverse Search กับเอกสาร PDF (จริง ๆ แล้ว ฟังก์ชันนี้ TeXWorks มีและก็เยี่ยมยอดมาก รวมทั้งใช้กับภาษาไทยได้ด้วย) โดยใช้  Sumatra PDF ซึ่งสำหรับการใช้งานร่วมกับ WinEDT 5.6 นั้นทำงานได้ดีอยู่แล้ว พอย้ายมาบน WinEDT 6 ก็มีเรื่องให้ศึกษากันอีก เริ่มแรกทีเดียวคือเรื่องเว็บที่โหลด Sumatra PDF นั้นมีหลายเว็บเหลือเกิน ดังนั้นขอแนะนำให้ไปโหลดที่ Sumatra PDF Binaries ที่จะมีตัวเลือกให้โหลดมากมายรวมทั้งมีคำอธิบายด้วย แน่นอนผมใช้เวอร์ชันล่าสุด (ไม่กลัวบัก) หรือที่  SumatraPDF for TeX users ซึ่งเป็นเวอร์ชันที่มีตัวเลือกให้มากกว่า (ดีกว่า)

การตั้งการใช้งาน Sumatra PDF  นั้นง่ายมากเพราะตั้งค่ามาให้เรียบร้อยแล้ว โดยไปที่ Options->Execution Mode->PDF Viewer

ฃึ่งอนุญาตให้เราสามารถตั้งค่าได้ถึง 4 โปรแกรม ก็เลือกตามชอบใจ เพียงแต่ว่ามี Sumatra PDF ตัวเดียวที่สนับสนุน Inverse Search โดยการดับเบิ้ลคลิ๊กในจุดที่ต้องการ การตั้งค่าก็อย่าลืมเลือกตัวเลือก Use –synctex switch when –sch is enabled ด้วย

ในการเรียกดูไฟล์ PDF จะใช้ไอคอน หรือกด Shift+F8 ก็ได้ แล้วแต่ถนัด Sumatra PDF จะไปที่ส่วนของเอกสารนั้น ๆ ให้พร้อมทั้งไฮไลต์ส่วนของเอกสารที่สอดคล้องกับย่อหน้าของรหัสใน tex  ไฟล์ให้ด้วย (เฉพาะเวอร์ชัน 1.2 ขึ้นไป)

อีกเรื่องที่สำคัญไม่แพ้กันคือในการควบรวมเอกสารในไฟล์หลักของ LaTeX  นั้น ให้ใช้คำสั่ง include{filename} โดยที่ใส่ชื่อไฟล์โดยไม่ต้องใส่นามสกุล tex และห้ามใช้แพ็กเกจ  pdfsync ก็เป็นอันเสร็จพิธี ใครทำได้บ้างไม่ได้บ้างก็มาเล่าสู่กันฟังนะครับ

หมายเหตุ ในกรณีที่ทำแล้วไม่ได้นะครับ ให้ทำดังนี้

  1. ตรวจสอบดูว่ามีไฟล์นามสกุลเหล่านี้อยู่หรือเปล่า .pdfsync , .synctex ถ้ามีลบออกให้หมด
  2. ปิด Sumatra PDF จากนั้นลองคอมไพล์ LaTeX ใหม่
  3. ควรจะได้แล้ว

การเพิ่ม List of Figures กับ List of Tables ลงในสารบัญ

เป็นเรื่องใหม่ที่พึ่งรู้ว่ามันเป็นปัญหา สืบเนื่องจากการใช้คำสั่ง \addcontentsline{toc}{chapter}{\bibname} เพื่อเพิ่มรายชื่อบทลงในสารบัญนั้น ซึ่งโดยปกติจะใช้สั่งให้มีรายชื่อของสารบัญตาราง สารบัญรูป และอื่น ๆ ลงในสารบัญ และสิ่งที่ผมพึ่งรู้ก็คือคำสั่งนี้จะแสดงเลขหน้าผิดเสมอ แก้อย่างไรก็ไม่สำเร็จ ค้นไปค้นมาเลยได้ความรู้จาก Patrick Jöckel’s ดังนี้

  1. ในการเพิ่มรายชื่อบทที่สร้างขึ้นเองลงในหน้าสารบัญ จำพวกกิจกรรมประกาศ บทคัดย่อ ฯลฯ การใช้คำสั่ง
    \addcontentsline{toc}{chapter}{ชื่อบท}

    นั้นจะต้องทำหลังคำสั่ง \chapter ของบทนั้น ๆ

  2. กรณีต้องการเพิ่มรายการของสารบัญให้มี สารบัญ สารบัญตาราง สารบัญรูป และเอกสารอ้างอิง สามารถทำได้โดยใช้แพ็กเกจ tocnatbibind ซึ่งจะทำให้เลขหน้าเป็นไปตามจริง ซึ่งได้ลองกับแพ็กเกจ ThaiLaTeX แล้วไม่มีปัญหาแต่อย่างใดครับ สำหรับวิธีการใช้แพ็กเกจนี้ก็ง่าย ๆ ครับ แค่เรียกใช้แพ็กเกจดังกล่าวก็พอ ส่วนการใช้งานแบบละเอียดก็อ่านได้จากคู่มือของแพ็กเกจครับ

สุดท้ายหวังว่าจะเป็นประโยชน์แก่คนที่กำลังเขียน Thesis ด้วย LaTeX แล้วโดนท้วงติงเรื่องเลขหน้าผิดครับ

Beamer for Human ตอนที่ 1

บทความตอนนี้ขอเขียนวิธีการใช้ Beamer คลาสเอกสารสำหรับสร้างสไลด์ในการนำเสนอผลงานด้วยคอมพิวเตอร์ซักหน่อย ไม่ได้เขียนเรื่องเกี่ยวกับ Beamer มานานแล้ว เนื่องจากไม่ได้ใช้นั่นเอง

การนำเสนอผลงานด้วยคอมพิวเตอร์ผ่านเครื่องฉายสไลด์ที่คนไทยเรียก powerpoint กันติดปากเหมือนเรียกผงซักฟอกว่าแฟ้บ ซึ่งจริง ๆ แล้วมันไม่ใช่ ยังมีโปรแกรมนำเสนอผลงานผ่านคอมพิวเตอร์อีกมากมายหลายโปรแกรมด้วยกัน โปรแกรมอันหนึ่งที่คนที่ทำงานที่มีสมการคณิตศาสตร์เกี่ยวข้องด้วย ไม่มากก็น้อยนิยมกันมาก ๆ ก็คือ Adobe Reader เพราะมันฟรี ที่สำคัญคือ(ส่วนใหญ่)ไม่มีปัญหาเรื่องฟอนต์ และมีในทุกเครื่องคอมพิวเตอร์

ปัญหาอันหนึ่งที่ชาว Beamer ไม่ค่อยจะรู้ว่ามันเป็นปัญหาสำหรับชาวบ้านเขา ก็คือการสร้างสไลด์สำหรับการนำเสนอผ่านคอมพิวเตอร์ที่เต็มไปด้วยรูปภาพ ตามบทบัญญัติของการนำเสนอผลงานสายหนึ่ง (มันไม่ใช่มาตรฐาน และไม่จำเป็นต้องทำตาม) เราลองมาดูกันว่าเราจะใช้ Beamer สร้างสไลด์แบบนั้นได้อย่างไร ตัวอย่างเช่นถ้าเราต้องการสร้างสไลด์เรียงลำดับกันตามรูปข้างล่างสามรูป

เราจะเห็นได้ว่าแนวทางนี้ไม่ใช่แนวทางการทำสไลด์ของ Beamer เพียงแต่ว่าการนำเสนอด้วยรูปภาพนั้นบางครั้งจะสร้างความตื่นตาตื่นใจให้กับผู้รับฟังได้มากกว่า วิธีการทำหน้าสไลด์แบบข้างบนนั้นใช้ความสามารถของคำสั่ง \put ของ LaTeX ธรรมดา นั่นเอง ดังแสดงด้วยรหัสต้นข้างล่าง

\documentclass{beamer}
\begin{document}
\begin{frame}
  \begin{picture}(0,0)
     \put(0,-100){\includegraphics[scale=0.3]{web3}}
     \only<2->{\put(100,-50){\includegraphics[scale=0.3]{web2}}}
     \only<3->{\put(150,-150){\includegraphics[scale=0.3]{web1}}}
  \end{picture}
\end{frame}
\end{document}

ในตอนนี้ขอจบเพียงเท่านี้เพราะสร้างแรงบันดาลใจก่อน ไว้คราวหน้าเราจะมาเรียนรูปวิธีการสร้างสไลด์ตามนิกาย Zen ด้วย Beamer กันครับ

Ghostscript 9.00 และ 3D with Pstricks

ในยุคที่ การควบรวมกิจการ, 3D, และ โดนัท กำลังอยู่ในสายตาของผู้คนอย่างมาก (มากเกินไปโดยเฉพาะอันหลัง) ผมเลยเขียนบทความที่รวมสามเรื่องไว้ในเรื่องเดียวกันซะเลย มาดูกันว่าผมทำได้อย่างไร

เรื่องแรกคือ โปรแกรมค้างฟ้า Ghostscript ได้ออกเวอร์ชันใหม่เป็นเลข 9.00 ซึ่งแน่นอนเป็นเวอร์ชันที่มีการเปลี่ยนแปลงค่อนข้างมาก โดยเฉพาะเรื่องสี ดังนั้นแฟนพันธ์แท้ LaTeX -> divps -> ps2pdf ก็คงต้องใส่ใจกันหน่อย สำหรับคนที่ต้องการใช้งานก็ไปโหลดได้จาก Ghostscript 9.00 แล้วก็ลองกันเองนะครับ

เรื่องถัดมาคือคือสองเรื่องควบนั่นคือ 3D กับ โดนัท ในการวาดรูป 3D ใน LaTeX นั้นน่าจะเป็นเรื่องหนึ่งที่มีประโยชน์มาก ๆ เพราะเราสามารถสร้างและจัดการกับรูปภาพ 3D ที่ใช้ในการเรียนการสอนคณิตศาสตร์ได้แบบฟรี ๆ ที่สำคัญคือรูปภาพนั้น ๆ จะประกอบด้วยสมการคณิตศาสตร์ได้ ผิดแผกจากโปรแกรมวาดรูป 3D ทั่วไป ในตอนนี้ขอแนะนำ pst-solides3d สวนขยายของภาษาวาดรูป pstricks มาดูว่าถ้าเราจะวาดรูปโดนัท ใน pst-solides3d ต้องทำอะไรบ้าง

\documentclass[a4paper]{report}
\usepackage{pst-solides3d}
\begin{document}
\pagestyl{empty}
\begin{pspicture}(-1,-1)(2,2)
    \psset{viewpoint=100 30 20,Decran=100}
    \psSolid[
        r1=2.5,r0=1.5,
        object=tore,
        ngrid=18 36,
        fillcolor=green!30,
        action=draw*]%
    \axesIIID[showOrigin=true](1,1,1)(10,5,3)
\end{pspicture}
\end{document}

จะเห็นว่าเราใช้คำสั่งเพียงไม่กี่คำสั่งก็สามารถสร้างรูปโดนัท รสชาเขียวที่มีแกน x y z ดังรูปข้างล่าง

อนึ่งในการแปลงเอกสารให้เป็น pdf นั้นจะต้องใช้คำสั่งตามลำดับดังนี้ latex->dvips->ps2pdf ตามลำดับ แน่นอนถ้าคอมไพล์เอกสารทุกครั้งที่ทำการแก้ไขเอกสารจะทำให้การคอมไพล์เอกสารนั้นช้ามาก ๆ (เนื่องจากการวาดรูป) แนะนำให้สร้างไฟล์รูปโดด แล้วแปลงเฉพาะรูปเป็น pdf ไฟล์เพื่อใช้ประกอบเอกสารอีกที ขั้นตอนทำง่าย ๆ ดังนี้ (ทุก ๆ โปรแกรมย่อยนั้นมากับ Ghostscript อยู่แล้ว ถ้าติดตั้งถูก จะเรียกใช้จากที่ไหนก็ได้)

  1. สร้างเอกสารแบบ report แล้วตั้งค่าหน้าเป็น \pagestyle{empty}
  2. คอมไพล์เอกสารแล้วสร้างไฟล์ ps
  3. ไปที่คอมมานด์วินโดว ของวินโดวส์ แล้วใช้คำสั่ง
    ps2epsi donut.ps donut.eps

    ในกรณีที่ไฟล์ที่ต้องการแปลงชื่อ donut.ps การทำเช่นนี้เราจะได้รูป eps ที่มีขนาดเท่ากับส่วนของรูปภาพเท่าไม่ใช่ขนาด A4

  4. แปลงรูป eps เป็น pdf โดยใช้คำสั่ง
    epstopdf donut.eps

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

อนึ่งเวลานำรูปไปใช้กับ pdflatex บน MikTeX ครั้งแรกอาจจะมีปัญหา เนื่องจากขาดไฟล์บางไฟล์ ให้ลองไปที่คอมมานด์วินโดว แล้วสั่ง

pdflatex donutpic.tex

ในกรณีที่ไฟล์เอกสารคือ donutpic.tex ไฟล์ที่ขาดจะถูกโหลดโดยอัตโนมัติถ้าเครื่องต่ออินเทอร์เน็ตไว้

โดยส่วนตัวผมว่าส่วนขยายของ pstricks นี้มีประโยชน์มาก ๆ สำหรับครู อาจารย์ ที่ต้องวาดรูปพวกนี้ เพราะมันอ้างอิงกับสมการคณิตศาสตร์ได้ และไม่ต้องไปเรียนรู้โปรแกรมขนาดใหญ่ให้ยุ่งยาก รูปพื้นฐานต่าง ๆ ก็มีมาให้หมด แค่ปรับแก้ตัวเลขเท่านั้นเอง