Category Archives: เทคนิคขั้นสูง

ความลับสวรรค์ 3

ในการทำหนังสือด้วย LaTeX นั้น ปัญหาหนึ่งก็คือเรื่องการตั้งค่าขนาดของฟอนต์ ซึ่งจำกัดมีไม่กี่ขนาด ทั้งนี้เนื่องจาก class book กำหนดไว้แค่นั้น (โดยคนทำ LaTeX ไม่ใช่คนทำ TeX) ได้แลกเปลี่ยนกับเพื่อน และเพื่อนแนะนำให้ใช้ class extbook ใช้อย่างไร ทำอย่างไร หาเอกสารอ่านเอาเองนะครับ [crayon-5b74dc1bb0340767473444/] ความลับที่ 2 ซึ่งไม่ลับอะไรแต่เข้าใจยากหน่อย เกี่ยวกับแพ็กเกจ subfig ซึ่งถ้าใช้งานปกติแบบคนทั่วไปก็ไม่มีปัญหาอะไรครับ แต่ถ้าใช้งานยาก ๆ สลับซับซ้อน ก็มักจะมีปัญหา กรณีนี้คือ caption ที่เป็นตัวอักษรไม่เป็นไปตามหวัง คือหวังให้เป็นภาษาไทย และไม่อยู่ตรงกลาง คือหวังให้อยู่ตรงกลางรูป วิธีแก้ ก็ดูการ \renewcommand{\thesubfigure}{\thalph{subfigure}}

ความลับสวรรค์ 2

เอาด่วน ๆ เร็ว ๆ จดไว้กันลืม โดยปกติ caption ของรูปจะอยู่ข้างล่าง และของตารางจะอยู่ข้างบน แต่จะด้วยเหตุผลอะไรไม่ทราบเวลาแพ็กเกจ caption แล้ว ค่าตั้งต้นมันจะให้ caption อยู่ข้างล่าง วิธีแก้ทำดังนี้ครับ [crayon-5b74dc1bb0d3e752410732/] ก็เป็นอันว่าจบ

ความลับสวรรค์

เนื่องจากไม่ค่อยมีเวลาเขียน โพสนี้เป็นการรวบรวมข้อมูลเล็ก ๆ น้อย ๆ สำหรับจดไว้กันลืมครับ lmodern ต้องลงเอง มันไม่ลงให้อัตโนมัติ สำหรับ MiKTeX นั้น XeLaTeX ต้องใช้ -enable-write18 แทนที่จะเป็น --shell-escape สำหรับหนังสือภาษาไทย ที่มีตัวภาษาอังกฤษ และสมการคณิตศาสตร์ปน ให้ใช้ตัวเลือก no-math \usepackage[no-math]{fontspec}เข้าไปเจอความลับสวรรค์จาก page Thai Students Love LaTeX เพื่อสั่งให้ LaTeX ไม่ใช้ฟอนต์ไทยกับสมการคณิตศาสตร์ ใน beamer ในสมการคณิตศาสตร์ ที่มี $\hat{f}$ เวลาแสดงผลจะเพี้ยน ป้อนกันได้ด้วย \usefonttheme{professionalfonts} แค่นี้ก่อนนะครับ

Plot2SVG MATLAB and Inkscape

หลายคงคงรู้ว่าเวลาเอารูปจาก MATLAB ไปใส่ในเอกสาร LaTeX นั้น ฟอนต์ที่อยู่ในกราฟนั้นจะไม่เหมือนกับเอกสาร ปัญหานี้จะว่าใหญ่ก็ไม่เชิง จะว่าเล็กก็ไม่เชิง ขึ้นอยู่กับมุมมองของแต่ละคน แน่นอนสำหรับผมนั้นแค่เอารูปแบบ pdf หรือ eps ไปใช้ในเอกสารแล้วภาพไม่แตก พิมพ์ออกมาสวยงามกว่าชาวบ้านเขาก็พอแล้ว แต่ปรากฏว่าปัญหานี้ใหญ่พอสมควรสำหรับคนเยอรมันที่ผมทำงานด้วย จริง ๆ มีวิธีแก้ไขหลายวิธีปัญหานี้ได้พูดกันอย่างกว้างขวางที่ What is the best way to include Matlab graphics รวมถึงวิธีแก้ไขด้วยครับ  วิธีที่ดีที่สุดให้ดูคำตอบของคุณ Shuhao Cao ที่มีรูปเยอะ ๆ ซึ่งคุณ Shuhao Cao ได้แสดงปัญหาของการใช้ matlab2tikz ซึ่งมีผู้นิยมใช้กันมาก

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

เป็นเรื่องใหม่ที่พึ่งรู้ว่ามันเป็นปัญหา สืบเนื่องจากการใช้คำสั่ง addcontentsline{toc}{chapter}{bibname} เพื่อเพิ่มรายชื่อบทลงในสารบัญนั้น ซึ่งโดยปกติจะใช้สั่งให้มีรายชื่อของสารบัญตาราง สารบัญรูป และอื่น ๆ ลงในสารบัญ และสิ่งที่ผมพึ่งรู้ก็คือคำสั่งนี้จะแสดงเลขหน้าผิดเสมอ แก้อย่างไรก็ไม่สำเร็จ ค้นไปค้นมาเลยได้ความรู้จาก Patrick Jöckel's ดังนี้ ในการเพิ่มรายชื่อบทที่สร้างขึ้นเองลงในหน้าสารบัญ จำพวกกิจกรรมประกาศ บทคัดย่อ ฯลฯ การใช้คำสั่ง [crayon-5b74dc1bb11d2154846582/] นั้นจะต้องทำหลังคำสั่ง chapter ของบทนั้น ๆ กรณีต้องการเพิ่มรายการของสารบัญให้มี สารบัญ สารบัญตาราง สารบัญรูป และเอกสารอ้างอิง สามารถทำได้โดยใช้แพ็กเกจ tocnatbibind ซึ่งจะทำให้เลขหน้าเป็นไปตามจริง ซึ่งได้ลองกับแพ็กเกจ ThaiLaTeX แล้วไม่มีปัญหาแต่อย่างใดครับ สำหรับวิธีการใช้แพ็กเกจนี้ก็ง่าย ๆ ครับ แค่เรียกใช้แพ็กเกจดังกล่าวก็พอ

เรื่องวุ่น ๆ เกี่ยวกับตาราง ตอนที่ 1

ในการใช้งาน LaTeX นั้นมีอยู่สองเรื่องที่ค่อนข้างเป็นปัญหา  ทั้ง ๆ เป็นเรื่องที่ใช้กันค่อนข้างบ่อยบนโปรแกรม Word Processing  สองสิ่งนี้ก็คือ Tab กับตาราง ในโปรแกรม Word Processing นั้นจะมีส่วนติดต่อกับผู้ใช้จึงทำให้การทำงานร่วมกับตารางนั้นค่อนข้างง่าย แต่สำหรับ LaTeX แล้วต้องทำเองจึงยากและสับสนพอสมควร ในการสร้างตารางในเอกสารวิชาการที่ดีนั้น สามารถหาอ่านได้จากเอกสารของแพ็กเกจ booktabs สำหรับที่เป็นภาษาไทยก็เคยมีคนเขียนไว้ที่ การทำตารางให้สวย โดยคุณ ichris  แต่ช้าก่อนการใช้งานแพ็กเกจ booktabs นั้นดีง่าย แต่เข้ากันไม่ได้กับแพ็กเกจ caption ซึ่งมีประโยชน์มากกว่า ด้วยเหตุผลง่าย ๆ คือของง่าย ๆ แบบที่ booktabs ทำได้นั้น ทำเองได้ไม่ยาก แต่สิ่งที่ caption

ปรับแต่ง item ด้วยแพ็กเกจ enumitem

เคยได้เขียนเรื่องการปรับแต่ง item ไว้ที่ การปรับแต่ง item ง่าย ๆ ด้วย enumitem วันนี้ลองมาเขียนขยายความดูใหม่ ในการสร้าง item บางครั้งเราก็ต้องการรูปแบบของหัวข้อที่แตกต่างกันออกไป รวมไปถึงระยะกั้นหน้ากั้นหลังด้วย ในบทความเก่านั้นได้แสดงให้เห็นถึงวิธีปรกติที่ใช้โดยไม่ต้องผ่านแพ็กเกจใด ๆ ซึ่งยุ่งยากพอสมควร แพ็กเกจ enumitem นั้นสามารถช่วยลดความยุ่งยากเหล่านี้ได้ ในที่นี้จะแสดงวิธีใช้ให้ดูประกอบเพียงสองตัวอย่าง ตัวอย่างที่หนึ่งคือการทำให้หัวข้อ item แบบตัวเลข แสดงเป็นเลขโรมันตัวเล็กและอยู่ใน mathmode ซึ่งนิยมใช้กันในหนังสือคณิตศาสตร์ทั่วไป  ตามรูปที่แสดงข้างล่าง ซึ่งสามารถทำได้ง่าย ๆ โดยใช้แพ็กเพจ enumitem ดังนี้ [crayon-5b74dc1bb21aa590417533/] ซึ่งจะเห็นว่าเราสามารถกำหนดรูปแบบของ item ได้ตามต้องการโดยใช้ตัวเลือก [label=$roman{*}$.] ตัวอย่างที่สองเป็นเรื่องการใช้ภาษาไทย ซึ่งมีข่าวร้ายเพราะแพ็กเกจนี้ใช้กับ

Chapter หรือ Section ที่มี สัญลักษณ์คณิตศาสตร์

Chapter หรือ Section ที่มี สัญลักษณ์คณิตศาสตร์ ในกรณีที่ใช้ Hyperref จะมีคำเตือนจาก LaTeX นะครับ มีคำเตือนมาก ๆ ก็ไม่ดี วิธีแก้ก็คือให้ครอบสมการด้วย texorpdfstring{$สัญญลักษณ์คณิตศาสตร์$}{} คำเตือนก็จะหายไปครับ ยกตัวอย่างเช่น [crayon-5b74dc1bb2679989183811/]

คู่มือการเขียนสมการคณิตศาสตร์ด้วย LaTeX ที่ดีที่สุด

เอกสารที่สร้างด้วย LaTeX นั้น เวลาเขียนจะต้องบอกด้วยว่าเขียนในโหมดไหน ซึ่งใน LaTeX ก็มีโหมดบังคับอยู่สองโหมดคือ Text mode Math mode ค่าตั้งต้นก็เป็น Text mode แต่เวลาต้องการใส่สมการคณิตศาสตร์ เราจะต้องเปลี่ยนเป็น Math mode ก่อน ซึ่งเอกสารที่ดีที่สุดเท่าที่เคยเห็นมาก็เห็นจะเป็นเอกสารของนาย Herbert Voß ซึ่งตามหาได้ที่ Math mode - v.2.43 ซึ่งเอกสารตัวนี้จะอธิบายถึงการใช้เบื้องต้นจนถึงการใช้งานขั้นสูง แต่เนื่องจากตัวเอกสารนั้นมีขนาดหนาถึง 136 หน้า จึงไม่เหมาะอย่างยิ่งสำหรับผู้ที่ยังไม่เคยลอง LaTeX เลย สำหรับผู้เริ่มต้นอาจจะเริ่มจาก The not so short introduction

การแสดงภาพซ้อนภาพ pictures over picture

เรื่องนี้จะเป็นเรื่องแรกที่เขียนสองที่นะครับ ทั้งบน thai-tug และ thailatex โดยในระยะแรกจะเขียนทั้งสองที่ เมื่อเว็บ thai-tug เริ่มอยู่ตัวก็จะเขียนเพียงที่เดียว จะได้ไม่แยกลูกค้ากัน เรื่องนี้ได้รับคำถามจากเพื่อนโดยที่ผมไม่ได้ตอบ และเพื่อนก็จัดการทำเองและได้แนะนำแพ็กเกจ overpic เขียนโดย Rolf Niepraschk ชาวเยอรมันตั้งแต่ปี 1997 และมีการปรับปรุงแก้ไขในสองปีถัดมา ซึ่งแกมีผลงานเกี่ยวกับ LaTeX หลายชิ้นด้วยกัน ที่น่าเศร้าคือไม่มีคู่มือ ถ้าอยากได้คู่มือต้องคอมไพล์เอง ซึ่งคู่มือก็ไม่อธิบายอะไรว่ากันเนื้อ ๆ (จริง ๆ มันคือตัวอย่าง) เริ่มต้นที่การใช้งานแบบสัมพันธ์ง่าย ๆ กันเลยครับ โดยการเริ่มใช้แพ็กเกจ [crayon-5b74dc1bb2b14976416525/] จากนั้นก็ลองใส่รูปดู ในที่นี้ผมมีรูป tina.pdf อยู่ (แพ็กเกจนี้ใช้ได้ทั้ง LaTeX

ปรับแต่ง item ง่าย ๆ ด้วย enumitem

บ่อยครั้งที่เรามีความจำเป็นต้องการปรับแต่งหัวข้อย่อยที่มีชื่อเรียกเฉพาะว่า item ให้มีความเฉพาะเจาะจงเช่น นำหน้าหัวข้อย่อยด้วยตัวเลขโรมัน ฯลฯ ซึ่งในกรณีนี้ทำได้ง่าย ๆ คือ [crayon-5b74dc1bb30f6116154831/] การทำเช่นนี้ก็สะดวกดีแต่มันไม่อัตโนมัติ วันนี้มีแพ็กเกจดี ๆ มาแนะนำครับ นั่นคือ enumitem ซึ่งสามารถใช้ในการปรับแต่ง item ให้เราได้ตามต้องการและง่ายมาก ๆ ในที่นี้ผมจะแนะนำแค่ตัวอย่างเดียวคือการเปลี่ยน item ให้เป็นเลขโรมันตัวเล็ก ส่วนตัวอย่างอื่น ๆ หาอ่านเองได้ในคู่มือตามลิ้งค์ที่ให้ไว้ [crayon-5b74dc1bb3101261654535/] ซึ่งผลที่ได้ก็คือการเปลี่ยนหัวข้อ item เป็นเลขโรมันตัวเล็ก นั่นเอง