Vraag Stel de marge in bij het converteren van Markdown naar PDF met pandoc


Ik heb een RMarkdown-bestand gemaakt in RStudio en het met knitr in een HTML- en .md-bestand gebreid. Vervolgens heb ik pandoc gebruikt om het .md-bestand in een PDF-bestand te converteren (ik krijg een foutmelding als ik probeer het te converteren vanuit het .html-bestand). De geproduceerde PDF heeft echter enorme marges (zoals deze http://johnmacfarlane.net/pandoc/demo/example13.pdf). Hoe kan ik ervoor zorgen dat pandoc iets produceert met kleinere marges? Ik heb de gebruikersgids van pandoc bekeken, maar ik heb niets nuttigs gevonden.


120
2017-11-22 15:31


oorsprong


antwoorden:


Recente versies van rmarkdown en pandoc

In recentere versies van rmarkdown, de instellingen van marges kunnen worden gedaan in de YAML-header via het element op het hoogste niveau geometry. Wat u opgeeft in de geometry tag wordt doorgestuurd naar de LaTeX-sjabloon die wordt geleverd met Pandoc via het volgende LaTeX-fragment

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

Als u bijvoorbeeld marges wilt opgeven die 2 cm breed zijn, zou er één moeten zijn

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

Voor meer complexe specificaties die moeten worden doorgegeven aan de geometrie LaTeX-pakket, tekenreeksopties samen op dezelfde manier als met LaTeX:

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

Origineel antwoord

Dit is een LaTeX-vraag terwijl Pandoc wordt weergegeven in PDF via LaTeX. De koppeling waarnaar u verwijst, vertegenwoordigt de standaardmarges op een LaTeX-document.

De geometrie LaTeX-pakket kan bijvoorbeeld worden gebruikt om de marges van de pagina te wijzigen. Je hebt echter wel een manier nodig om Pandoc dit te laten gebruiken door het op te nemen in de LaTeX-header die is toegepast op het geconverteerde md-bestand.

Hoe u dit doet, is gedocumenteerd in de Pandoc gebruikershandleiding. Zie met name de --template=FILE opdrachtregelargument en de Sjablonen sectie. In wezen zoekt u naar de standaardsjabloon en wijzigt deze om de LaTeX-instructies die u wilt gebruiken, of start u uw eigen sjabloon helemaal opnieuw en plaatst u deze op de juiste locatie; zie de --data-dir opdrachtregelargument.


Een ander alternatief als u een recente versie van Pandoc gebruikt, is het variabele argument gebruiken (ingesteld met of -V KEY[=VAL] of --variable=KEY[:VAL]). De geometry pakket is in mei 2012 toegevoegd aan de standaard LaTeX-sjabloon (zie deze discussie). Als zodanig, als u de paginamarges wilt wijzigen, kunt u het volgende gebruiken:

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

U kunt ook meerdere variabelewaarden opgeven. Als u bijvoorbeeld een pdf van 4 bij 6 inch met marges van een halve inch wilt maken, kunt u het volgende gebruiken:

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

163
2017-11-22 15:40



In recentere versies van pandoc kunt u een aantal parameters in de YAML-header. U kunt de geometrie hier instellen, bijvoorbeeld:

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

body text of document

Wanneer pandoc het converteert naar een pdf, zou het correcte marges moeten hebben.


86
2017-10-15 00:14