แพ็กเกจ 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 (เยอะ แล้วอ่านแล้วไม่สื่อความหมาย)  ในที่สุดผมก็แก้ไขได้ครับ โดยใช้รหัสต้นดังนี้

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

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

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

 

ช่วงอ่านหนังสือสอบ ผมได้ทำการปรับปรุงไฟล์ xetexhandout.sty เพิ่มเติมฟังก์ชันพิมพ์สไลด์สองหน้าลงในหนึ่งการดาษ a4 นะครับ  เอาไปใช้กันได้  โดยสั่งใช้งานดังนี้

2 Responses to แพ็กเกจ pgfpages with XeTeX

  1. chakkree says:

    ผมใช้ แพกเกจ pdfpages ทำเอกสาร A5
    เรียงพิมพ์แบบเย็บอก โดยใช้กระดาษ A4
    ดังนั้นต้องเรียงพิมพ์ให้หน้าสลับกัน

    วิธีการคือ ต้องสร้างเอกสารเป็น pdf แบบ A5 เรียงกันก่อน

    แล้วค่อยใช้คำสั่ง includespdf

    \includepdf[pages={ เลขหน้า , เลขหน้า },nup=1x2, landscape, signature=16]{ชื่อไฟล์ต้นฉบัยA5.pdf}

    สำคัญที่ signature ต้อง หารด้วย 4 ลงตัว

    ถ้ามีเวลาเดี๋ยวผมจะไปทำตัวอย่างแล้วมาโพสอีกทีครับ

  2. admin says:

    เยี่ยมมากคุณจักรี ผมเองก็พึ่งรู้ว่าแพ็กเกจ pdfpages นั้นทำอะไรได้มาก ๆ ส่วนใหญ่ใช้ผ่าน pgf (ผ่าน beamer อีกที) ซึ่งการใช้ผ่าน pgf ทำให้มีข้อเสียคือค่าตั้งของหน้ากระดาษนั้นเข้ากันไม่ได้กับของ XeTeX

Leave a Reply

Your email address will not be published. Required fields are marked *