แพ็กเกจ pgfpages with XeTeX


วันก่อนอาจารย์ท่านหนึ่งได้ส่งคำถามเรื่องการสร้างเอกสารจาก beamer 4 หน้าลงใน 1 หน้า A4 โดยใช้แพ็กเกจ pgfpages บน XeTeX ซึ่งต้องบอกก่อนว่าแพ็กเกจ นี้สามารถใช้งานกับ LaTeX และ pdfLaTeX ได้เป็นอย่างดี  ส่วนตัวไม่เคยลองกับ XeTeX เลย  พึ่งได้มาลองก็ตอนที่ได้ไฟล์มาจากอาจารย์ท่านที่ส่งคำถามมาเนี่ยแหละครับ (XeTeX เป็นความหวังของชุมชนที่จะสามารถใช้ฟอนต์ภาษาไทยกับ LaTeX ได้อย่างอิสระ)

เมื่อได้ลองแล้วก็หาทางแก้ไข ไม่ว่าจะทางเว็บ stack exchange และที่อื่น ๆ ก็ไม่สามารถแก้ปัญหาได้ แต่ได้รู้ปัญหาคือแพ็กเกจ pgf  ที่แพ็กเกจ pgfpages ใช้นั้น ไม่สนับสนุน XeTeX  วิธีแก้ไขมีทางเดียวครับคือเข้าไปแก้ไข page layout ให้เหมาะสมกับ XeTeX  ในการแก้ไข page layout ของเพ็กเกจ pgf นั้นสิ่งที่ต้องทำคือทำใจยอมรับความทรมานที่จะต้องเข้าไปผจญกับคู่มือของ pgf (เยอะ แล้วอ่านแล้วไม่สื่อความหมาย)  ในที่สุดผมก็แก้ไขได้ครับ โดยใช้รหัสต้นดังนี้

\pgfpagesdeclarelayout{4 on 1 portrait}
{
	\def\pgfpageoptionborder{0pt}
}
{
	\pgfpagesphysicalpageoptions
	{%
		logical pages=4,%
		physical height=\paperwidth,%
		physical width=\paperheight%
	}
	\pgfpageslogicalpageoptions{1}
	{%
		resized width= 0.6\pgfphysicalwidth,%
		resized height= 0.6\pgfphysicalheight,%
		center=\pgfpoint{.33\pgfphysicalwidth}{.64\pgfphysicalheight}%
	}%
	\pgfpageslogicalpageoptions{2}
	{%
		resized width= 0.6\pgfphysicalwidth,%
		resized height= 0.6\pgfphysicalheight,%
		center=\pgfpoint{1\pgfphysicalwidth}{.64\pgfphysicalheight}%
	}%
	\pgfpageslogicalpageoptions{3}
	{%
		resized width= 0.6\pgfphysicalwidth,%
		resized height= 0.6\pgfphysicalheight,%
		center=\pgfpoint{.33\pgfphysicalwidth}{.25\pgfphysicalheight}%
	}%
	\pgfpageslogicalpageoptions{4}
	{%
		resized width= 0.6\pgfphysicalwidth,%
		resized height= 0.6\pgfphysicalheight,%
		center=\pgfpoint{1\pgfphysicalwidth}{.25\pgfphysicalheight}%
	}%
}

\pgfpagesuselayout{4 on 1 portrait}[a4paper,landscape, border shrink=1mm]

เพื่อความสะดวก ผมได้ทำเป็นแพ็กเกจให้ โดยตอนนี้สนับสนุนแค่ 4 on 1 เท่านั้น ไว้มีเวลาว่างจะทำแบบอื่นด้วยครับ

วิธีการใช้คือให้คัดลอกแพ็กเกจ xetexhandout.sty ไปไว้ในโฟลเดอร์ที่บรรจุเอกสาร เวลาเรียกใช้ก็เพิ่มรหัสต้นเข้าไปในไฟล์เอกสารดังนี้ครับ

\usepackage{xetexhandout}
\pgfpagesuselayout{4 on 1 portrait}[a4paper,landscape, border shrink=1mm]

สำหรับไฟล์ตัวอย่างคือ beam.tex และผลที่ได้คือ beam.pdf ครับ ซึ่งผลลัพธ์เป็นไปตามรูปครับ

Advertisements

One comment on “แพ็กเกจ pgfpages with XeTeX

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s