Category Archives: เทคนิค

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

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

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

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

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

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

การแก้ปัญหาฟอนต์ Helvetica ในเอกสารที่สร้างจาก LaTeX แล้วมีปัญหากับ IEEE PDF eXpress

ถ้าใครเขียนบทความวิจัยเพื่อไปตีพิมพ์ในประชุมวิชาการระดับนานาชาติ สิ่งหนึ่งที่ควรจะดูก็คือเรื่องบทความวิจัยของเรามันจะไปอยู่ในฐานข้อมูลหรือไม่ หนึ่งในฐานข้อมูลยอดนิยมก็คือ IEEE Explore นั่นเอง เงินที่เสียเพิ่มขึ้นก็แลกเอาว่าจะให้บทความเราหายไปหรือคงอยู่ ผมได้รับการตอบรับให้ตีพิมพ์ในประชุมวิชาการระดับนานาชาติ ซึ่งต้องจ่ายเงินแล้ว upload บทความตัวสุดท้ายของเราขึ้นไปให้คณะผู้จัดงานได้รวบรวมไปตีพิมพ์ ปกติผมสร้างเอกสารจาก XeLaTeX ได้ตัว pdf มา ก็ upload ได้ไม่มีปัญหา แต่ก็มีเรื่องจนได้ เนื่องจากรูปกราฟของบทความผมที่สร้างขึ้นจากโปรแกรมคำนวณยอดนิยม ดังมีค่าเริ่มต้นของฟอนต์ต่าง ๆ เป็น Helvetica ซึ่งแน่นอนไม่มีบน windows ก็ประเมินไม่ผ่านตามระเบียบ แก้ยังไงน่ะเหรอครับ ก็ง่าย ๆ กลับเข้าไปแก้ที่รูปภาพที่มีอยู่รวม ๆ ประมาณ 20 รูป แต่ละรูปก็แก้ประมาณ 4-5 จุด ทำไปหนึ่งรูป

underscore !

เป็นเรื่องที่ user เก่า(และแก่ด้วย) อย่างผมถึงกับต้องตีอกชกหัวตัวเอง ตกม้าตายเอาง่าย ๆ เรื่องมีอยู่ว่า ผมเข้าใจเอาเองมาตลอดว่าใน LaTeX เขียน underscore '_' ได้เฉพาะใน math mode และจะหมายถึงการใส่ตัวห้อย (subscript) ปัญหาของผมที่เจอบ่อย ๆ ก็คือเวลาที่ผมต้องการจะเขียนชื่อไฟล์ที่มีตัว underscore นี้ ผมมักใช้ท่าพิเศษ เช่นใช้คำสั่ง \verb หรือ \url ซึ่งสามารถใช้งานได้ปกติ แต่ไม่ใช่ท่ามาตรฐาน ออกจะเป็นขบวนท่านอกด่านไปซักหน่อย วันนี้ต้องเขียนเอกสารอธิบายไฟล์ โดยต้องอ้างชื่อไฟล์หลายไฟล์ และบางชื่อไฟล์ต้องไปอยู่ในหลายสถานที่ ๆ ไม่ค่อยจะได้อยู่ เช่น ใน \caption เป็นต้น และนั่นคือที่มาของปัญหาเพราะขบวนท่า

Plot2SVG MATLAB and Inkscape

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

การสร้างกรอบรอบกระดาษ ด้วย XeLaTeX

ช่วงนี้เริ่มจะเปิดภาคการศึกษา ปกติจะทำเอกสารการบ้านสำหรับนักศึกษา ซึ่งทุกครั้งจะใช้โปรแกรมสำนักงานสำหรับจัดทำเอกสารสร้างงานการบ้าน แต่ตอนนี้เห็นว่ามาลองใช้งาน XeLaTeX เลยอยากจะลองสร้างด้วย XeLaTeX แต่จริง ๆ แล้วก็เคยอยากทำมานานแล้วแต่ไม่สำเร็จ เพิ่งสำเร็จเลยนำมาลองให้เพื่อน ๆ ลองทดสอบกันครับ การตบแต่งกรอบกระดาษก็จะใช้คำสั่ง \AddToShipoutPicture{} เพื่อกำหนดส่วนที่จะแสดงทุกหน้า และภายในใช้คำสั่ง \framebox สร้างกรอบสี่เหลี่ยมใหญ่ แล้ววางชิ้นส่วนอื่น ๆ ด้วยคำสั่ง \put ไม่ว่าจะเป็นเส้นที่ใช้คำสั่ง \line หรือ \rule ก็ได้ การกำหนดขอบกระดาษ กำหนดให้สอดคล้องกับโครงกรอบที่เราวาดด้วยแพ็กเก็จ geometry ใช้แพ็กเก็จ lastpage เพื่อให้แสดงค่าเลขหน้าสุดท้าย ใช้คำสั่ง \fontsize{14pt}{16pt}\selectfont ในการกำหนดขนาดของฟอนต์ครับ [crayon-5b74dbceb8511024414076/]   รูปผลการรันอัพรูปไม่ได้ครับแต่โหลดตัวอย่างได้ที่

การใช้ pdfpages ร่วมกับ fancy header สร้างส่วน header+footer ให้กับเอกสาร pdf

ปัญหา มีเหตุจากผมใช้งานโปรแกรม Office แล้วมีปัญหาบางประการในการจัดเลขหน้าและส่วนหัวและส่วนท้าย และจากขนาดของไฟล์ที่ใหญ่มาก ทำให้การทำงานของโปรแกรมไม่เสถียร โปรแกรมจะค้างบ่อย ๆ เมือแก้ไขเอกสารจะค่อยข้างเสียเวลาและเสียอารมณ์เป็นอย่างยิ่ง แนวทางแก้ ทำการสร้างเอกสารใหม่ด้วยโปรแกรม Office ที่ไม่มีส่วนหัวและท้ายกระดาษ และตั้งค่าขอบกระดาษเป็น 25 มม ทั้งหมด แล้วทำการส่งออกเป็นเอกสาร pdf ที่ไม่มีเลขหน้า ใช้งาน pdfLaTeX โดนการเรียกแพกเกจ pdfpages ร่วมกับ fancy header สร้างส่วน header และ footer ให้กับเอกสาร pdf หลังจากนั้นถึงใช้งาน LaTeX ในการแทรกส่วนหัวและท้ายกระดาษ พอจะแก้ปัญหาชั่วคราวไปก่อน ได้รหัสคำสั่งดังแสดงครับ แพกเกจ babel

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

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

เรื่องวุ่น ๆ เกี่ยวกับตาราง ตอนที่ 3 multirow with color

ในตอนที่แล้วได้นำเสนอการสร้างตารางที่มีการผสานตารางในแนวตั้งด้วยแพ็กเกจ multirow ไปแล้ว ซึ่งตอนเก่า ๆ ติดตามได้จาก เรื่องวุ่น ๆ เกี่ยวกับตาราง ตอนที่  1 เรื่องทั่วไป เรื่องวุ่น ๆ เกี่ยวกับตาราง ตอนที่ 2 multirow ในตอนนี้จะเกี่ยวการใช้สี ถ้าใครยังจำการใช้ Word ได้ ก็คงจะจำได้ว่าการใส่ตารางในเอกสาร Word นั้น ง่ายดายมาก แถมยังมีแม่แบบให้เลือกมากมาย และก็จะมีการใช้สีเพื่อให้ง่ายต่อการมองเห็นด้วย (ทั้ง ๆ ที่ขณะนั้นเครื่องพิมพ์สียังอยู่ห่างไกลความจริงพอสมควร) สำหรับ LaTeX และพวกพ้องก็มีการใช้สีสำหรับตารางด้วย การใส่สีลงในตารางนั้นทำได้หลายวิธี และมีแพ็กเกจให้เลือกใช้ แต่ในที่นี้จะแนะนำให้ใช้ความสามารถเกี่ยวกับตารางของแพ็กเกจ xcolor ซึ่งปกติเราก็เรียกใช้กันอยู่แล้ว วิธีการเรียกใช้ความสามารถในการใช้สีในตารางของแพ็กเกจ

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

ใครยังไม่ได้อ่านตอนที่หนึ่งก็ไปอ่านได้ที่ เรื่องวุ่น ๆ เกี่ยวกับตาราง ตอนที่ 1 เรื่องทั่วไป ซึ่งเป็นความรู้เบื้องต้นเกี่ยวกับตาราง  ในวันนี้เป็นตอนที่สองของบทความที่คุณสุขุมส่งมา ซึ่งเป็นเรื่องเกียวกับการผสานแนวตั้ง (merge row) ซึ่งจะว่าเป็นเทคนิคเบื้องต้นก็ไม่ถูกนักเพราะว่าจำเป็นต้องใช้แพ็กเกจพิเศษช่วย นั่นคือแพ็กเกจ multirow นั่นเอง มาดูตัวอย่างกันก่อน จากตัวอย่างในรูปข้างบน จะเห็นว่า คำว่า Defenders, Midfielders, Strikers นั้นจะอยู่ตรงกึ่งกลางของ 4, 3 , 2 แถวตามลำดับ ใน LaTeX นั้นใช่ว่าจะทำกันได้ง่าย ๆ นักเลงรุ่นเก่าจริง ๆ (คนที่ไม่รู้จักแพ็กเกจ multirow) จะใช้คำสั่ง raisebox  ซึ่งยุ่งยากมาก