我在RStudio中创建了一个RMarkdown文件,并设法用knitr将其编织成HTML和.md文件。接下来,我使用pandoc将.md文件转换为PDF文件(如果我尝试从.html文件转换,我会收到错误)。但是,生成的PDF具有大量边距(如http://johnmacfarlane.net/pandoc/demo/example13.pdf)。如何让pandoc生成边距较小的东西?我查看了pandoc用户指南,但没有找到任何有用的东西。
答案 0 :(得分:189)
在 rmarkdown 的更新版本中,边距设置可以通过顶级元素geometry
在YAML标头中完成。您在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通过LaTeX呈现为PDF - 您链接的内容代表LaTeX文档的默认边距。
例如,几何 LaTeX包可用于更改页面的边距。但是,您需要一种方法来告诉Pandoc使用它,方法是将LaTeX标头应用于转换的md文件。
Pandoc User Guide中记录了如何执行此操作。特别参见--template=FILE
命令行参数和Templates section。基本上,要么找到并修改默认模板以包含您要使用的LaTeX指令,要么从头开始创建自己的模板并将其放在适当的位置;请参阅--data-dir
命令行参数。
如果您使用最新版本的Pandoc,另一种方法是使用变量参数(使用-V KEY[=VAL]
或--variable=KEY[:VAL]
设置)。 2012年5月,geometry
包已添加到默认的LaTeX模板中(请参阅this discussion)。因此,如果您想更改页边距,可以使用:
pandoc -V geometry:margin=1in -o output.pdf input.md
您也可以指定多个变量值。例如,如果您想创建一个半英寸边距的4 x 6英寸pdf,可以使用:
pandoc -V geometry:paperwidth=4in -V geometry:paperheight=6in -V geometry:margin=.5in -o output.pdf input.md
答案 1 :(得分:93)
在更新版本的pandoc中,您可以在YAML header中设置多个参数。您可以在此处设置几何图形,例如:
---
title: Pandoc nice margins example
author: naught101
geometry: margin=3cm
---
body text of document
当pandoc将其转换为pdf时,它应具有正确的边距。
答案 2 :(得分:0)
FTR:在我需要以下标题之前,上面的“最新版本”似乎包含Knitr 1.30:
---
pdf_document: null
geometry: margin=1cm
output: pdf_document
---
没有附加的pdf_document: null
,则几何设置无效。有了它,https://bookdown.org/yihui/rmarkdown-cookbook/latex-variables.html中的设置就起作用了。