สวัสดี บล็อกนี้จะค่อนข้าง geek เล็กน้อยถึงปานกลาง แต่อาจจะมีประโยชน์ (มั้ง) ต่อผู้ที่สนใจหรือกำลังอยากลองอะไรแปลกใหม่ จริงๆ คืออยากทำเหมือนเป็นบันทึกไว้ว่าเคยลองทำอะไรแล้วต้องทำยังไง เผื่อวันนึงลืมจะได้ย้อนกลับมาดูได้ แต่ก็นั่นแหละ ขี้เกียจ.. กว่าจะได้เขียนอีกก็หลายเดือนผ่านมา
บล็อกนี้ก็อย่างที่กล่าวไว้ค่อนข้างจะเฉพาะทาง คือเกี่ยวข้องกับภาษา LaTeX แล้วก็ text editor นามว่า Atom (ยกตัวอย่างที่ทุกคนน่าจะรู้จักดีก็เช่น Notepad บน Windows) ถ้าใครไม่ได้รู้จักกับทั้งคู่มาก่อน แต่บังเอิญอยากรู้จักก็… ถ้านึกครึ้มจะมาเขียนบล็อกเพิ่ม เอ้ย ถ้าอยากรู้จักก็ลองไปอ่านดูได้ตามลิงค์ด้านล่าง ส่วนใครที่รู้จักแล้วอยากข้ามไปเนื้อหาหลักเลยก็เลื่อนลงไปเข้าเรื่องเลยเจ้า
ช่วงแนะนำ
Atom
LaTeX
แต่ถึงจะรู้จักแล้วมันก็ยังคงไม่จบง่ายๆ เพราะยังมีเรื่องของการติดตั้งอยู่อีก ในบล็อกนี้จะเขียนถึงการใช้บน Windows กับ Mac เป็นหลัก คนใช้ Ubuntu คงจะสามารถติดตั้งเองได้ในระดับหนึ่งล่ะนะ ในส่วนของตัวติดตั้ง Atom ก็ไม่ต้องคิดเยอะ ไปดาวน์โหลดเวอร์ชันล่าสุดได้ ที่นี่เลย แล้วก็กดติดตั้งไปตามเรื่อง แปปเดียวก็เสร็จ แต่ LaTeX อาจจะดูงงๆ ไปสักนิดสำหรับผู้เริ่มต้น แต่ผมจะลองสรุปไว้ซึ่งก็ไม่น่าจะยากเท่าไหร่ ถ้าติดอะไรลองเมล์มาถามก็ได้ครับ
LaTeX on Windows
สำหรับ LaTeX บนวินโดว์สามารถไปอ่านคำอธิบายได้เอง ที่นี่ ซึ่งเค้าจะให้ไปดาวน์โหลด proTeXt ที่ ลิงค์นี้ โดย proTeXt มีขนาดประมาณ 1.8 GB ประกอบไปด้วย
- ตัวติดตั้ง MiKTeX ซึ่งเป็น TeX distribution สำหรับ Windows
- ตัวติดตั้ง TeXStudio ซึ่งก็คือ LaTeX editor นั่นเอง
จริงๆ ลงสองตัวที่ proTeXt ให้มาก็เขียน LaTeX ได้แล้วแหละ แต่เราอยากเขียนบน Atom ไง เนาะ
LaTeX on Mac
บนแมคนี่จะมีตัวเลือกมากกว่านิดนึงคือจะลงตัวเต็มๆ หรือจะลงแค่สิ่งจำเป็นแล้วค่อยมาเลือกลงแพคเกจต่างๆ เอาเองทีหลัง เพื่อเป็นการประหยัดพื้นที่ (คนใช้แมค 128 กับ 256 GB น่าจะเข้าใจอารมณ์นี้) โดย distribution สำหรับแมคนั้นก็มีชื่อว่า MacTeX นั่นเอง ไปดาวน์โหลดตัวเต็มๆ กันได้ ที่นี่ ใหญ่สะใจ 2.5GB เลย แต่ก็แนะนำให้มือใหม่โหลดมาใช้นะ เพราะมันครบดี ส่วนใครที่อยากลองติดตั้งแพคเกจเอง ก็ไปอ่านวิธีการติดตั้ง BasicTeX ได้ ที่นี่
เข้าเรื่อง
โอเค ก็จบกันไปสำหรับการเกริ่นนำ ทีแรกก็ว่าจะไม่เขียน แต่พอเริ่มเขียนเท่านั้นแหละ เขียนเกริ่นด้วยซะงั้น ส่วนพวกคำถามว่าทำไมต้องมาเขียนบน Atom ด้วยก็จะยกประโยชน์ที่พอจะคิดได้สักนิด เช่น ปกติใช้ Atom เป็น editor หลัก ถ้าไม่ต้องไปเขียน LaTeX ที่อื่นได้ก็คงดี แล้วก็การพรีวิวแบบอยู่ข้างๆ กดปุ่มลัดทีเดียวตัวอย่างขึ้นเลยอะไรงี้ (จริงๆ editor อื่นก็มีทำได้นะ) อะไรประมาณนี้ ซึ่งเอาเข้าจริงๆ ก็ยังมีสิ่งที่รอการอัพเดทอยู่ประมาณนึง ถึงจะใช้สำหรับการเขียน LaTeX ได้สมบูรณ์ ซึ่งจะกล่าวถึงต่อไป ดังนั้นจุดประสงค์หลักในคราวนี้ก็คือเพราะอยากลอง แล้วก็อยากบันทึกไว้อะเนาะ
เริ่มติดตั้งแพคเกจสำหรับ Atom
ตัว Atom จริงๆ แล้วก็เป็น text editor ธรรมดาๆ เนี่ยแหละ แต่ด้วยความที่มันเป็น open-source, มีขนาดเล็กและสามารถติดตั้งแพคเกจเสริมอื่นๆ ได้ ทำให้มันค่อนข้างน่าใช้งานสำหรับนักเขียนโค้ดหลายๆ คน
การติดตั้งแพคเกจใน Atom ก็ทำได้โดยไปที่หน้า Preferences หรืออาจกดคีย์ลัด ⌘
,
บนแมคหรือ Ctrl
,
บนวินโดว์แล้วเลือก + Install ทางด้านซ้ายมือ โดยแพคเกจที่จำเป็นสำหรับการเขียน LaTeX ก็ได้แก่
language-latex
สำหรับการรองรับภาษา LaTeXlatex
สำหรับคอมไพล์ไฟล์.tex
ให้เป็น.pdf
pdf-view
สำหรับดูไฟล์.pdf
ใน Atom
จริงๆ แล้วยังมี latexer
อีกตัว สำหรับ autocomplete แต่ดูเหมือนจะมีประโยชน์สำหรับการเขียน BibTeX มากกว่า ไม่ค่อยช่วย complete อะไรในการเขียนมากนักเช่น คำสั่งเบื้องต้น \textbf{}
, \emph{}
, \textit{}
หรือ \underline{}
เหล่านี้ก็ไม่ได้ช่วย complete แต่อย่างใด
ตั้งค่าแพคเกจ latex
หลังจากติดตั้งแพคเกจ latex
เสร็จเรียบร้อยก็ให้กดเข้าไปจะเจอหน้าตั้งค่าหน้าตาประมาณนี้
ส่วนการตั้งค่าที่เราจะสนใจก็คือ
- Always Open Result In Atom เลือกอันนี้ไว้เพื่อให้ตัว pdf เปิดมาใน Atom เลย
- Builder จะมี
latexmk
กับtexify
ส่วนตัวใช้latexmk
มาตลอดเลยไม่รู้ว่ามันต่างกันยังไง - Engine จะมี
pdflatex
,lualatex
และxelatex
ซึ่งโดยปกติผมใช้pdflatex
กับxelatex
ส่วนเบื้องลึกเบื้องหลังว่าอะไรเป็นยังไงอันนี้ตอนนี้ยังไม่เข้าใจถึงขั้นนั้น เอาเป็นว่าใช้pdflatex
ไปก่อนตอนนี้ - TeX Path คือ path ไปยัง
bin
ของ TeX distribution ที่ติดตั้งอยู่ในเครื่องเรานั่นเอง โดยส่วนตัวตรงนี้ก็ไม่ต้องใส่อะไรบนแมคแต่สำหรับวินโดว์จะต้องใส่ประมาณนี้ ก็ให้ลองเช็คที่เครื่องตัวเองดูก่อนว่าเป็นเวอร์ชันอะไรแล้วก็ใส่ตามนั้น
ลองเขียน .tex
เสร็จละ เริ่มเขียน LaTeX บน Atom ได้ เฮ~ เนื้อหาหลักมีนิดเดียวเองไม่เห็นจะยากตรงไหน มาลองเขียนเลยดีกว่า เปิดไฟล์ใหม่ขึ้นมาตั้งชื่ออะไรก็ได้แต่ลงท้ายด้วย .tex
เสร็จปั๊บก็ลองคำสั่งพื้นฐานทั่วไปประมาณนี้
\documentclass[a4paper]{article}
\begin{document}
\noindent
Here goes \LaTeX~on Atom!
\\\\
let's test some basic commands from \textbf{bold} to \textit{italic} and then
\underline{underline} to \textsc{smallcaps} or \emph{emphasize}
\end{document}
ทีนี้มาลองพรีวิวกันเลยดีกว่า กด ctrl
alt
b
ปุ๊บก็น่าจะเจอหน้าตาดังนี้
ซึ่งถ้าเราดูดีๆ ที่ directory ของไฟล์ .tex
ของเราก็จะพบว่ามันสร้างไฟล์ไม่พึงประสงค์มาเพียบจากการคอมไพล์
แต่ก็ไม่ต้องกังวลไปเพราะเราสามารถเคลียร์ไฟล์พวกนี้ได้ด้วยการกด ctrl
alt
c
เท่านี้ก็เป็นอันเสร็จสิ้นกระบวนการ
สิ่งที่ยังไม่สมบูรณ์
อย่างแรกนั้นจะเห็นได้ว่าเรายังไม่มีแพคเกจสำหรับ autocomplete คำสั่งต่างๆ ได้อย่างครบถ้วนสำหรับภาษา LaTeX ซึ่งก็ทำได้แค่รอการพัฒนาต่อไป หรืออาจใช้ฟีเจอร์ของ Atom โดยการเพิ่ม Snippets เข้าไปเอง (อาจมาเขียนในภายภาคหน้า) ซึ่งก็ต้องใช้เวลาประมาณนึง เพื่อที่จะครอบคลุมคำสั่งที่เราต้องการใช้งาน
ต่อมาเป็นเรื่องของการพรีวิวที่จริงๆ แล้วไม่น่าจะต้องมากดคอมไพล์ ctrl
alt
b
ทุกครั้งหลังจากที่ผ่านการคอมไพล์ครั้งแรกมาแล้ว น่าจะแค่กดเซฟไฟล์แล้วก็คอมไพล์เองอัตโนมัติเลย ซึ่งฟีเจอร์ที่ว่านี่ก็มีคนเสนอเข้าไปที่แพคเกจ latex
แล้ว และมีคนทำเสร็จแล้วด้วย ซึ่งตอนนี้รอการ pull-request จากเจ้าของแพคเกจอยู่ ก็หวังว่าจะได้ใช้ในเร็วๆ นี้
สุดท้ายคือปัญหาของแพคเกจ pdf-view
ซึ่งก็อย่างที่เห็นคือมันจะไม่ปรับขนาดให้พอดีกับหน้าจอที่แสดงมันอยู่ตั้งแต่แรก ถึงแม้เราจะสามารถปรับขนาดการแสดงผลได้โดย ctrl/⌘
+/-
หรือกด ctrl
ค้างแล้วหมุน scroll ของเม้าส์ แต่ถ้ามันเริ่มมาพอดีเลยแต่แรกก็น่าจะดีกว่าใช่ปะ ซึ่งปัญหานี้ก็มีคนแจ้งไปแล้วเช่นกัน ก็รอการอัพเดทกันต่อไป
สรุป
Atom ตอนนี้ถือว่าเร็วขึ้นกว่าช่วงแรกๆ มาก แม้จะลงแพคเกจไปจำนวนมาก แต่ไม่ค่อยมีปัญหาช้าหรือหน่วงขณะเขียนเหมือนแต่ก่อน ที่จะเพิ่มคือเวลาโหลดตอนเริ่มเปิดแค่นั้น แต่ยังไงก็ตาม การสนับสนุนภาษา LaTeX ก็ยังไม่ถึงจุดที่จะเรียกได้ว่าสมบูรณ์พร้อม แต่ก็จัดได้ว่าพอใช้ได้ดี ด้วยหลายๆ อย่างในตัวมัน และเนื่องจากบล็อกนี้ตั้งใจจะเขียนอย่างย่อและรวบรัด (แต่ก็รวบได้แค่นี้แหละ) จึงไม่ได้ครอบคลุมหลายๆ อย่างที่เกี่ยวกับ LaTeX และ Atom ไป คิดว่าคงได้มาเขียนเพิ่มเติมอีกถ้าไม่ลืมไปซะก่อน
Happy Coding :)