web-dev-qa-db-fra.com

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 je tente de convertir le fichier .html). Cependant, le PDF produit des marges massives (comme ceci http://johnmacfarlane.net/pandoc/demo/example13.pdf ). Comment puis-je faire en sorte que pandoc produise quelque chose avec des marges plus petites? I ont consulté le guide de l'utilisateur pandoc, mais n'ont rien trouvé d'utile.

145
mchangun

Versions récentes de rmarkdown et pandoc

Dans les versions plus récentes de rmarkdown , les paramètres des marges peuvent être définis 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 transféré dans le modèle LaTeX fourni avec Pandoc via l'extrait de code 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 inclut:

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

Pour que des spécifications plus complexes soient transmises au package LaTeX de la géométrie , chaînes d'options 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 dans laquelle Pandoc effectue le rendu PDF via LaTeX - ce à quoi vous avez lié représente les marges par défaut sur un document LaTeX.

La géométrie du paquet LaTeX, par exemple, peut être utilisée pour modifier les marges de la page. Cependant, vous aurez besoin d'un moyen d'indiquer à Pandoc de l'utiliser en l'incluant dans l'en-tête LaTeX appliqué au fichier md converti.

La procédure à suivre est décrite dans le Guide de l'utilisateur Pandoc . Voir notamment le --template=FILE argument de ligne de commande et le 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 rien et placez-le à l'emplacement approprié. voir le --data-dir argument de ligne de commande.


Une autre alternative si vous utilisez une version récente de Pandoc consiste à utiliser l’argument variable (défini avec -V KEY[=VAL] ou --variable=KEY[:VAL]). Le paquetage 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 variable. Par exemple, si vous souhaitez créer un fichier PDF 4 pouces sur 6 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
193
Gavin Simpson

Dans les versions plus récentes de pandoc, vous pouvez définir un certain nombre de paramètres dans le 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

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

93
naught101