使用pandoc从Markdown转换为PDF时设置边距大小

我在RStudio中创build了一个RMarkdown文件,并用knitr将它编织成一个HTML和.md文件。 接下来,我使用pandoc将.md文件转换为PDF文件(如果我尝试从.html文件转换,则出现错误)。 但是,生成的PDF格式具有巨大的利润率(如http://johnmacfarlane.net/pandoc/demo/example13.pdf )。 我怎样才能让pandoc生产更小利润的东西? 我已经浏览了pandoc用户指南,但没有发现任何有用的东西。

最近版本的rmarkdown和pandoc

在最近的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一样使用string选项:

 --- 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用户指南中介绍了如何执行此操作 。 特别参见--template=FILE命令行参数和模板部分 。 从本质上讲,要么find并修改默认模板,以包含您要使用的LaTeX指令,要么从头开始创build自己的模板,并将其放在适当的位置; 请参阅--data-dir命令行参数。


如果您使用最新版本的Pandoc,另一种方法是使用variables参数(使用-V KEY[=VAL]--variable=KEY[:VAL] )。 geometry包已于2012年5月添加到默认的LaTeX模板中(请参阅此讨论 )。 因此,如果您想更改页边距,可以使用:

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

您也可以指定多个variables值。 例如,如果您想创build一个半英寸的4 * 6英寸pdf,您可以使用:

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

在更新版本的pandoc中,您可以在YAML标题中设置许多参数。 您可以在这里设置几何graphics,例如:

 --- title: Pandoc nice margins example author: naught101 geometry: margin=3cm --- body text of document 

当pandoc将其转换为pdf时,它应该有正确的边距。