กำหนดขนาดมาร์จิ้นเมื่อแปลงจาก Markdown เป็น PDF ด้วย pandoc


179

ฉันได้สร้างไฟล์ RMarkdown ใน RStudio และจัดการถักมันด้วย knitr เป็นไฟล์ HTML และ. md ต่อไปฉันใช้ pandoc เพื่อแปลงไฟล์. md เป็นไฟล์ PDF (ฉันได้รับข้อผิดพลาดหากฉันลองและแปลงจากไฟล์. html) อย่างไรก็ตาม PDF ที่ผลิตนั้นมีระยะขอบขนาดใหญ่ (เช่นhttp://johnmacfarlane.net/pandoc/demo/example13.pdf ) ฉันจะได้รับแพนโดคเพื่อผลิตบางอย่างที่มีระยะขอบเล็ก ฉันดูคู่มือผู้ใช้แบบ pandoc แล้ว แต่ไม่พบสิ่งใดมีประโยชน์

คำตอบ:


241

rmarkdown และ pandoc เวอร์ชันล่าสุด

ในรุ่นล่าสุดของrmarkdownการตั้งค่าของอัตรากำไรขั้นต้นสามารถทำได้ในส่วนหัว YAML geometryผ่านองค์ประกอบระดับบนสุด สิ่งที่คุณระบุในgeometryแท็กจะถูกส่งไปยังเทมเพลต LaTeX ที่มาพร้อมกับ Pandoc ผ่านตัวอย่าง LaTeX ต่อไปนี้

$if(geometry)$
\usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry}
$endif$

ตัวอย่างเช่นหากต้องการระบุระยะขอบที่มีความกว้าง 2 ซม. จะรวมไว้ด้วย

---
title: "Habits"
author: John Doe
date: March 22, 2005
geometry: margin=2cm
output: pdf_document
---

สำหรับข้อกำหนดที่ซับซ้อนยิ่งขึ้นที่จะส่งผ่านไปยังแพ็คเกจ LaTeX เรขาคณิตตัวเลือกสตริงร่วมกันเช่นเดียวกับที่คุณใช้กับ LaTeX:

---
title: "Habits"
author: John Doe
date: March 22, 2005
geometry: "left=3cm,right=3cm,top=2cm,bottom=2cm"
output: pdf_document
---

คำตอบเดิม

นี่เป็นคำถาม LaTeX เนื่องจาก Pandoc แสดงผลเป็น PDF ผ่าน LaTeX - สิ่งที่คุณเชื่อมโยงเพื่อแสดงถึงระยะขอบเริ่มต้นบนเอกสาร LaTeX

เรขาคณิตแพคเกจน้ำยางเช่นสามารถนำมาใช้ในการปรับเปลี่ยนอัตรากำไรขั้นต้นของหน้า อย่างไรก็ตามคุณจะต้องมีวิธีบอก Pandoc ให้ใช้สิ่งนี้โดยรวมไว้ในส่วนหัว LaTeX ที่ใช้กับไฟล์ md ที่แปลงแล้ว

วิธีที่คุณทำเช่นนี้จะถูกบันทึกไว้ในคู่มือการใช้ Pandoc ดู--template=FILEอาร์กิวเมนต์อาร์กิวเมนต์บรรทัดคำสั่งและส่วนเทมเพลตโดยเฉพาะ โดยพื้นฐานแล้วค้นหาและแก้ไขเทมเพลตเริ่มต้นเพื่อรวมคำแนะนำ LaTeX ที่คุณต้องการใช้หรือเริ่มต้นเทมเพลตของคุณเองตั้งแต่เริ่มต้นและวางไว้ในตำแหน่งที่เหมาะสม ดู--data-dirอาร์กิวเมนต์บรรทัดคำสั่ง


อีกทางเลือกหนึ่งหากคุณใช้ Pandoc รุ่นล่าสุดคือใช้อาร์กิวเมนต์ตัวแปร (ตั้งค่าด้วย-V KEY[=VAL]หรือ--variable=KEY[:VAL]) มีการgeometryเพิ่มแพ็คเกจลงในเทมเพลต LaTeX ที่เป็นค่าเริ่มต้นในเดือนพฤษภาคม 2012 (ดูการสนทนานี้ ) ดังนั้นหากคุณต้องการเปลี่ยนระยะขอบของหน้าคุณสามารถใช้:

pandoc -V geometry:margin=1in -o output.pdf input.md

คุณสามารถระบุค่าตัวแปรได้หลายค่าเช่นกัน ตัวอย่างเช่นหากคุณต้องการสร้าง PDF ขนาด 4 x 6 นิ้วที่มีระยะห่างครึ่งนิ้วคุณสามารถใช้:

pandoc -V geometry:paperwidth=4in -V geometry:paperheight=6in -V geometry:margin=.5in -o output.pdf input.md

34
หากคุณใช้ Pandoc รุ่นล่าสุดคุณสามารถตั้งค่านี้โดยใช้variableคำสั่งแทนที่จะต้องสร้างแม่แบบจากขั้นต้นหรือทำการเข้ารหัสขอบแบบถาวรในแม่แบบเริ่มต้น ตัวอย่างเช่นสำหรับอัตรากำไรขั้นต้น 1 pandoc -V geometry:margin=1in -o output.pdf input.mdนิ้วคุณสามารถใช้
A5C1D2H2I1M1N2O1R2T1

@ mrdwab นั่นคือสิ่งที่ฉันต้องการ ขอบคุณมาก. ต้องการโพสต์นั้นเป็นคำตอบเพื่อให้ฉันสามารถยอมรับได้หรือไม่
mchangun

8
@mchangun ฉันได้แก้ไขคำตอบของ Gavin เพื่อรวมความคิดเห็นของฉันเนื่องจากเป็นคำที่ถูกต้องซึ่งอาจเป็นประโยชน์สำหรับผู้ใช้ที่ต้องการใช้แพ็คเกจ LaTeX อื่น ๆ ที่กำหนดเองซึ่งไม่รวมอยู่ในเทมเพลต Pandoc เริ่มต้น
A5C1D2H2I1M1N2O1R2T1

1
pandoc ใหม่มาก ฉันพบว่า-V geometry:margin=1inตัวเลือกไม่มีผลกระทบ ผ่าน googling ฉันพบเอกสาร (ขออภัยสูญเสียการเชื่อมโยง) ที่บอกว่าตัวเลือกนี้ไม่มีผลถ้าใช้แม่แบบเริ่มต้น ฉันแค่ต้องการแปลงไฟล์ markdown หนึ่งหน้าเป็น PDF เพื่อส่งให้ใครบางคนในฐานะนักบิน วิธีการแก้ปัญหาอย่างรวดเร็วของฉัน: \usepackage[margin=1.0in]{geometry}แก้ไขแฟ้มแม่แบบโดยตรงและเพิ่มบรรทัด ในการติดตั้งของฉันไฟล์อยู่ใน:/usr/share/pandoc-1.9.1.1/templates
Steve Koch

มีวิธีจากบรรทัดคำสั่งที่จะส่งผลกระทบต่อหนึ่งในระยะขอบหรือไม่ หนังสือทั้งหมดของฉันมีช่องว่างขนาดใหญ่ที่ด้านล่างและฉันแค่ต้องการส่งผลกระทบต่อส่วนต่างนั้น -V geometry: margin: ด้านล่างดูเหมือนจะไม่ทำงาน
Austin Fatheree

105

ในรุ่นล่าสุดของ pandoc คุณสามารถกำหนดจำนวนของพารามิเตอร์ในส่วนหัว YAML คุณสามารถกำหนดรูปทรงเรขาคณิตได้ที่นี่เช่น:

---
title:  Pandoc nice margins example
author: naught101
geometry: margin=3cm
---

body text of document

เมื่อ pandoc แปลงเป็น pdf ควรมีระยะขอบที่ถูกต้อง


นี่เป็นทางออกที่ดีกว่ามาก! มันค่อนข้างมีประโยชน์เมื่อคุณสร้างเอกสารโดยอัตโนมัติในตัวแก้ไขที่ชอบKileหรือSublime Text 2/3และการเปลี่ยนอาร์กิวเมนต์บรรทัดคำสั่งจะเป็นความเจ็บปวด
Abhinav
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.