Establecer el tamaño del margen al convertir de Markdown a PDF con pandoc


He creado un archivo RMarkdown en RStudio y he logrado tejerlo con knitr en un archivo HTML y .md. A continuación, he utilizado pandoc para convertir el archivo .md en un archivo PDF (me sale un error si intento convertir desde el .archivo html). Sin embargo, el PDF que se produce tiene márgenes masivos (como este http://johnmacfarlane.net/pandoc/demo/example13.pdf ). ¿Cómo puedo conseguir que pandoc produzca algo con márgenes más pequeños? He mirado a través de la guía de usuario de pandoc, pero no he encontrado cualquier cosa útil.

Author: neontapir, 2012-11-22

2 answers

Versiones recientes de rmarkdown y pandoc

En versiones más recientes de rmarkdown, la configuración de los márgenes se puede hacer en la cabecera YAML a través del elemento de nivel superior geometry. Lo que especifique en la etiqueta geometry se canalizará en la plantilla LaTeX que se envía con Pandoc a través del siguiente fragmento de LaTeX

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

Por ejemplo, para especificar márgenes de 2 cm de ancho se incluiría

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

Para que las especificaciones más complejas se pasen a la geometry Paquete LaTeX, opciones de cadena juntos como lo haría con LaTeX:

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

Respuesta original

Esta es una pregunta de LaTeX ya que Pandoc se está renderizando a PDF a través de LaTeX: lo que ha vinculado representa los márgenes predeterminados en un documento de LaTeX.

El paquete geometry LaTeX, por ejemplo, se puede usar para alterar los márgenes de la página. Sin embargo, necesitará una forma de decirle a Pandoc que use esto incluyéndolo en el encabezado LaTeX aplicado al archivo md convertido.

Cómo hacer esto está documentado en la Guía del usuario de Pandoc . Vea en particular el argumento de la línea de comandos --template=FILE y la sección de plantillas . Esencialmente, busque y modifique la plantilla predeterminada para incluir las instrucciones de LaTeX que desea usar o inicie su propia plantilla desde cero y colóquela en la ubicación adecuada; consulte el argumento de la línea de comandos --data-dir.


Otra alternativa si está utilizando una versión reciente de Pandoc es usar el argumento variable (establecido con -V KEY[=VAL] o --variable=KEY[:VAL]). El paquete geometry se añadió a la plantilla LaTeX predeterminada en mayo de 2012 (véase esta discusión). Como tal, si desea cambiar los márgenes de la página, puede usar:

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

También puede especificar múltiples valores de variables. Por ejemplo, si desea crear un pdf de 4 por 6 pulgadas con márgenes de media pulgada, puede usar:

pandoc -V geometry:paperwidth=4in -V geometry:paperheight=6in -V geometry:margin=.5in -o output.pdf input.md
 166
Author: Gavin Simpson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-01 01:41:28

En versiones más recientes de pandoc, puede establecer una serie de parámetros en el encabezado YAML. Puede establecer la geometría aquí, por ejemplo:

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

body text of document

Cuando pandoc lo convierte a un pdf, debe tener márgenes correctos.

 88
Author: naught101,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-09 05:37:04