About Me

I am a physicist by training, financial risk management consultant by day, father by night, and a geek of several kinds.

Search

Looking for something ?

การจัด layout (margins, etc.)

คำถามนึงที่ผมถูกถามบ่อย ก็คือจะจัด layout ของเอกสารได้ยังไง? โดยส่วนใหญ่แล้วคนถามต้องการเปลี่ยนขนาดของ margin ซ้าย ขวา บน ล่าง ให้ได้ตามที่ใครก็ตามกำหนดไว้

ตัวแปรที่ใช้ควบคุมการจัดหน้าของ LaTeX มีอยู่หลายตัวเหมือนกัน ลองดูรูปประกอบข้างล่าง จะเข้าใจง่ายขึ้นว่ามีตัวแปรต่างๆ อะไรบ้าง


เส้นประอยู่ที่ตำแหน่ง 1 นิ้วจากขอบซ้ายและขอบบน
จุดอ้างอิงที่ LaTeX ใช้ในการจัดหน้าคือวงกลมตรงที่เส้นประตัดกัน

ตัวแปรพวกนี้เราสามารถจะเปลี่ยนค่าได้ด้วยการใช้คำสั่ง \setlength เช่น

\setlength{\textwidth}{5in}
\setlength{\headsep}{14pt}

คำสั่งพวกนี้ต้องใช้ก่อนเริ่มต้น \begin{document}

เป็นการตั้งให้ block ตัวอักษรกว้าง 5 นิ้ว และให้ header อยู่ห่างจากเนื้อหาหลัก 14 point

จุดที่น่าสนใจคือ ในการจัดหน้านี้ LaTeX ไม่สนใจว่ากระดาษจริงๆ มีขนาดเท่าไหร่ ถ้าเราตั้งค่าตัวแปรไม่เหมาะสม เช่น \textwidth กว้างมากเกินไป ผลลัพธ์ที่เราได้ก็อาจจะเป็นแบบนี้

ตัวอย่างง่ายๆ ถ้าเราต้องการให้เอกสารมีขอบ ซ้าย ขวา บน 1 นิ้วครึ่ง และขอบล่าง 2 นิ้ว จะทำยังไง

* ขั้นแรกก็ต้องรู้ก่อนว่าเราจะใช้กระดาษขนาดไหน สมมุติว่าเราใช้ A4 (210 x 293mm)

\usepackage[a4paper]{article}

* จากรูปข้างบน จะเห็นว่าเราต้องตั้ง \oddsidemargin เป็น 1/2 นิ้ว
* กระดาษกว่าง 210mm, ขอบซ้ายขวารวมกันได้ 3 นิ้ว = 76mm เพราะฉะนั้นเราตั้ง \textwidth = 210 - 76 = 134mm

\setlength{\oddsidemargin}{0.5in}
\setlength{\textwidth}{134mm}

* สำหรับขอบบน ตัวอักษรของเนื้อหาหลักอยู่ห่างจากขอบกระดาษเท่ากับ 1 นิ้ว + \topmargin + \headheight + \headsep ซึ่งเราต้องการให้ผลรวมนี้เท่ากับ 1.5 นิ้ว ตัวอย่างเช่น

\setlength{\topmargin}{0pt}
\setlength{\headheight}{0.3in}
\setlength{\headsep}{0.2in}

* และเราต้องการขอบล่าง 2 นิ้ว ดังนั้น \textheight ควรจะมีค่าเท่ากับ 293mm - 1.5 นิ้ว - 2 นิ้ว = 205mm

\setlength{\textheight}{205mm}

* เพราะฉะนั้นรวมทั้งหมดแล้ว คำสั่งที่เราจะต้องใช้ (อย่าลืมว่าต้องใช้ก่อน \begin{document} ) คือ

\usepackage[a4paper]{article}
\setlength{\oddsidemargin}{0.5in}
\setlength{\textwidth}
\setlength{\topmargin}{0pt}
\setlength{\headheight}{0.3in}
\setlength{\headsep}{0.2in}
\setlength{\textheight}{205mm}
\begin{document}
. . .

ซึ่งก็จะให้ผลลัพธ์เป็นเอกสารที่มี layout แบบนี้

การจัดหน้าแบบที่อธิบายไปข้างบนนี้ มันก็ไม่ยากเกินไป แต่ก็ไม่ค่อยสะดวกเท่าไหร่ เราสามารถใช้ package ชื่อ geometry ช่วยได้

h2. geometry package

ด้วย package นี้ เราสามารถจัดหน้ากระดาษเหมือนตัวอย่างข้างบน ได้ด้วยคำสั่ง

\documentclass[a4paper]{article}
\usepackage{geometry}
\geometry{top=1.5in,bottom=2in,left=1.5in,right=1.5in}
\begin{document}
. . .

ซึ่งเข้าใจง่ายกว่าเยอะเลย แล้วเราก็ไม่ต้องคิดเลขให้ปวดหัวด้วย จริงๆ package นี้สามารถใช้จัดหน้าเอกสารที่ซับซ้อนกว่านี้ได้ เช่นถ้าเราต้องการกำหนดตำแหน่งและขนาดของ header/footer หรือ margin paragraph ก็ทำได้ง่ายเหมือนกัน

by chris