ลองเล่น TikZ #1
PGF และ TikZ เป็นแพคเกจของ LaTeX ซึ่งใช้ในการวาดภาพ (เช่น แผนภาพแบบต่างๆ) ในลักษณะเดียวกับ PSTricks แต่ PGF/TikZ ถูกออกแบบมาให้สนับสนุน pdfTeX ซึ่งทำให้ได้ผลที่ได้ออกมาเป็น PDF อันที่จริง PGF/TikZ นี้พัฒนาจากคนๆ เดียวกับคนพัฒนาแพคเกจ Beamer เพื่อให้เป็นแพคเกจพื้นฐานของในการแสดงผลรูปต่างๆ
เนื่องจากตอนนี้ผมอยู่ระหว่างการพยายาม ลด ละ เลิก Mac OS X และหันมาใช้ Linux (Ubuntu) แบบ 100% (ทั้งๆ ที่ยังใช้เครื่อง MacBook อยู่นี่แหละ) จุดอ่อนของ Ubuntu ที่ทำให้ผมยังไม่สามารถเปลี่ยนมาใช้ทำงานได้ครบถ้วน ก็คือ ขาดซอฟท์แวร์สำหรับสร้างแผนภาพ เวลาที่ผมต้องทำรูปประกอบสำหรับสไลด์ หรือเอกสารต่างๆ ซอฟท์แวร์ที่มีอยู่ยังไม่ถูกใจผม (เมื่อเทียบกับ OmniGraffle ที่ใช้อยู่ในปัจจุบัน) แต่ผมก็ยังไม่มีเวลา(และความสามารถ) ที่จะไปปรับปรุงซอฟท์แวร์พวกนั้นให้มันดีขึ้นจนผมพอใจ ตามหลักการของซอฟท์แวร์เสรี ผมจึงคิดว่าจะใช้ PGF/TikZ กับ GraphViz เป็นทางออก ก็เลยมานั่งเขียนบลอกอันนี้ไว้ เผื่อว่าจะเป็นประโยชน์กับคนอื่นๆ ที่จะหันมาใช้วิธีเดียวกับผม
เริ่มวาดภาพด้วย TikZ
TikZ รวบรวมคำสั่งที่เกี่ยวข้องกับการวาดแผนภาพเบื้องต้น จึงใช้งานได้ง่ายกว่า PGF ที่เป็นระบบจัดการพื้นฐานทั้งหมด ดังนั้นเราจะเริ่มกันด้วยคำสั่งต่างๆ ของ TikZ เริ่มต้นเราจะต้องเรียกใช้แพคเกจ tikz ด้วยคำสั่ง \usepackage{tikz} ไว้ที่ต้นไฟล์ จะวาดรูปทรงที่ส่วนใดของเอกสาร ก็ให้ใช้ environment ชื่อว่า tikzpicture โดยคำสั่งของ TikZ ทั้งหมดที่เราจะใช้จะต้องระบุไว้ใน environment นี้
\documentclass{article} \usepackage{tikz} \begin{document} Hello, World! \begin{tikzpicture} ... \end{tikzpicture} \end{document}
คำสั่งพื้นฐานสำหรับการวาดรูปทรงต่างๆ ก็คือ \draw โดย TikZ จะใช้ระบบพิกัด (x,y) ในการระบุตำแหน่งของรูปทรงที่เราจะสร้างขึ้น เช่น
\begin{tikzpicture} \draw (0,0) -- (5,5); \draw (5,0) -- (0,5); \end{tikzpicture}
เมื่อคอมไพล์ด้วย LaTeX ก็จะได้เอกสารที่ประกอบด้วยรูปนี้ (ไม่รวมเส้นกริดสีเทาๆ นะ) คือเป็นรูปเส้นตรงสองเส้นตัดกัน เนื่องจากคำสั่งข้างบน กำหนดให้ลากเส้นตรงสองเส้น จากจุด (0,0) ไปยัง (5,5) และจากจุด (0,5) ไปยัง (5,0) ในที่นี้มีจุดสังเกตที่คำสั่ง \draw จะต้องลงท้ายด้วยเครื่องหมาย semi-colon (;) เสมอ

ระบบพิกัดของ TikZ และการสร้าง Path
อย่างที่บอกไปแล้วว่าพิกัดใน TikZ จะแทนด้วยรูปแบบ “(x,y)” ถ้าไม่ระบุหน่วยความยาวไว้ ก็จะใช้หน่วยเป็น cm โดยปริยาย และ TikZ จะใช้ระบบพิกัดแบบคณิตศาสตร์ คือตำแหน่ง (0,0) จะอยู่ที่มุมล่างซ้ายของภาพ คำสั่ง \draw ตามตัวอย่างข้างบน จึงลากเส้นจากมุมล่างซ้ายไปมุมบนขวาก่อน แล้วจึงลากเส้นจากมุมบนซ้ายไปยังมุมล่างขวา และภาพนี้จะมีขนาด 5 คูณ 5 ซม. เมื่อสร้างเป็นเอกสารแบบ PDF นี่คือจุดเด่นของการสร้างภาพโดยใช้คำสั่ง เพราะเราสามารถระบุตำแหน่งต่างๆ ได้พอดี รูปที่ได้มีขนาดตามต้องการและแม่นยำสูงกว่าการลากด้วยเมาส์
การสร้าง Path หรือเส้นต่างๆ จะใช้เครื่อง “–” เพื่อระบุว่าต้องการให้ลากเส้นตรงเชื่อมระหว่างจุด เราสามารถกำหนดจุดหลายๆ จุดได้ในคำสั่งเดียว เช่น
\draw (0,0) -- (5,5) -- (0,5) -- (5,0);

เราสามารถกำหนดรูปแบบต่างๆ สำหรับรูปทรงที่เราสร้างขึ้นโดยระบุเป็นพารามิเตอร์ของคำสั่ง \draw เช่น กำหนดสีโดยระบุชื่อสี (PGF/TikZ จะใช้วิธีการกำหนดสีคล้ายๆ กับ xcolor เช่น red, red!20) กำหนดรูปแบบเส้น (dashed, dotted), กำหนดลูกศรที่ปลายเส้น (-> สำหรับลูกศรที่ปลายเส้น, <-> ถ้าต้องการทั้งสองปลาย, ใช้ >=latex สำหรับกำหนดรูปแบบหัวลูกศร), กำหนดความหนาของเส้น (เช่น very thick, thick, thin, very thin) ตามตัวอย่าง
\draw [red,very thick] (0,0) -- (5,5); \draw [blue,thick,->] (5,5) -- (0,5); \draw [green!80!black,very thick,>=latex,<->] (2.5,2.5) -- (5,0);

นอกจากนี้เรายังสามารถหมุนรูปทรงที่สร้างขึ้นได้ โดยใช้พารามิเตอร์ rotate around แล้วกำหนดมุมที่ต้องการให้หมุนรูป และองศาที่ต้องการหมุน เช่น
\draw [->] (0,-5) -- (0,5) node[above] {$y$}; \draw [->] (-5,0) -- (5,0) node[right] {$x$}; \draw [->,dashed,rotate around={30:(0,0)}] (0,-5) -- (0,5) node[above] {$y$}; \draw [->,dashed,rotate around={30:(0,0)}] (-5,0) -- (5,0) node[right] {$x$};

จะเห็นว่าแกนที่เป็นเส้นประ จะหมุนทวนเข็มไปจากแกนปกติ 30 องศาตามที่กำหนดให้ rotate around ส่วนคำสั่ง node ใช้สำหรับกำหนดข้อความ หรือป้ายที่จุดปลายของ path โดยสามารถกำหนดได้ว่าจะให้ข้อความนั้น วางอยู่ที่ตำแหน่งใดของจุดปลาย เช่น right, left, above, below
ตอนนี้ขอจบไว้เพียงเท่านี้ก่อน แล้วพรุ่งนี้ผมจะพยายามมาเขียนต่อ คิดว่าอีกประมาณ 2-3 ตอนก็น่าจะจบ
อ้างอิง Tikz & PGF Manual








Recent Comments