Définissez la taille de la marge lors de la conversion de Markdown en PDF avec pandoc

J'ai créé un fichier RMarkdown dans RStudio et j'ai réussi à le tricoter avec knitr dans un fichier HTML et .md. Ensuite, j'ai utilisé pandoc pour convertir le fichier. md en un fichier PDF (je reçois une erreur si j'essaie de convertir à partir du .fichier html). Cependant, les PDF qui sont produits ont des marges massives (comme ceci http://johnmacfarlane.net/pandoc/demo/example13.pdf ). Comment puis-je obtenir pandoc pour produire quelque chose avec des marges plus petites? J'ai regardé à travers le guide de l'utilisateur pandoc, mais je n'ai pas trouvé quelque chose d'utile.

125
demandé sur neontapir 2012-11-22 19:31:31

2 réponses

Versions récentes de rmarkdown et pandoc

Dans les versions plus récentes de rmarkdown , les réglages des marges peuvent être effectués dans L'en-tête YAML via l'élément de niveau supérieur geometry. Ce que vous spécifiez dans la balise geometry sera acheminé dans le modèle LaTeX fourni avec Pandoc via L'extrait de LaTeX suivant

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

Par exemple, pour spécifier des marges de 2 cm de largeur, on inclurait

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

Pour des spécifications plus complexes à transmettre au geometry Paquet LaTeX, options de chaîne ensemble comme vous le feriez avec LaTeX:

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

Réponse originale

Ceci est une question LaTeX car Pandoc est rendu au format PDF via LaTeX-ce que vous avez lié représente les marges par défaut sur un document LaTeX.

Le paquetgeometry LaTeX par exemple peut être utilisé pour modifier les marges de la page. Cependant vous aurez besoin d'un moyen de dire à Pandoc de l'utiliser en l'incluant dans L'en tête LaTeX appliqué au fichier MD converti.

La façon dont vous faites cela est documentée dans le guide de l'utilisateur Pandoc . Voir en particulier l'argument de ligne de commande --template=FILE et la section Modèles . Essentiellement, recherchez et modifiez le modèle par défaut pour inclure les instructions LaTeX que vous souhaitez utiliser ou démarrez votre propre modèle à partir de zéro et placez-le à l'emplacement approprié; voir l'argument de ligne de commande --data-dir.


Une Autre alternative si vous utilisez une version récente de Pandoc est d'utiliser l'argument variable (défini avec -V KEY[=VAL] ou --variable=KEY[:VAL]). Le paquet geometry a été ajouté au modèle LaTeX par défaut en mai 2012 (voir cette discussion). En tant que tel, si vous souhaitez modifier les marges de la page, vous pouvez utiliser:

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

Vous pouvez également spécifier plusieurs valeurs de variables. Par exemple, si vous voulez créer un pdf de 4 par 6 pouces avec des marges d'un demi-pouce, vous pouvez utiliser:

pandoc -V geometry:paperwidth=4in -V geometry:paperheight=6in -V geometry:margin=.5in -o output.pdf input.md
166
répondu Gavin Simpson 2017-06-01 01:41:28

Dans les versions plus récentes de pandoc, vous pouvez définir un certain nombre de paramètres dans l'en-tête YAML. Vous pouvez définir la géométrie ici, par exemple:

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

body text of document

Lorsque pandoc le convertit en pdf, il devrait avoir des marges correctes.

88
répondu naught101 2015-12-09 05:37:04