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

mch*_*gun 156 markdown latex r pandoc knitr

我在RStudio中创建了一个RMarkdown文件,并设法用knitr将它编织成HTML和.md文件.接下来,我使用pandoc将.md文件转换为PDF文件(如果我尝试从.html文件转换,我会收到错误).但是,生成的PDF具有巨大的利润(如http://johnmacfarlane.net/pandoc/demo/example13.pdf).如何让pandoc产生边距较小的东西?我查看了pandoc用户指南,但没有找到任何有用的东西.

Rei*_*son 205

最新版本的rmarkdown和pandoc

在更新版本的rmarkdown中,边距的设置可以通过顶级元素在YAML头中完成geometry.您在geometry标签中指定的内容将通过以下LaTeX代码段传输到Pandoc附带的LaTeX模板中

$if(geometry)$
\usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry}
$endif$
Run Code Online (Sandbox Code Playgroud)

例如,要指定宽度为2厘米的边距,则应包括

---
title: "Habits"
author: John Doe
date: March 22, 2005
geometry: margin=2cm
output: pdf_document
---
Run Code Online (Sandbox Code Playgroud)

对于要传递给几何 LaTeX包的更复杂的规范,字符串选项与LaTeX一样:

---
title: "Habits"
author: John Doe
date: March 22, 2005
geometry: "left=3cm,right=3cm,top=2cm,bottom=2cm"
output: pdf_document
---
Run Code Online (Sandbox Code Playgroud)

原始答案

这是一个LaTeX问题,因为Pandoc通过LaTeX渲染为PDF - 您链接的代表LaTeX文档的默认边距.

例如,几何 LaTeX包可用于改变页面的边距.但是,您需要一种方法来告诉Pandoc使用它,方法是将LaTeX标头应用于转换后的md文件.

Pandoc用户指南中介绍了如何执行此操作.请参阅--template=FILE命令行参数和" 模板"部分.基本上,要么找到并修改默认模板以包含您要使用的LaTeX指令,要么从头开始创建自己的模板并将其放在适当的位置; 请参阅--data-dir命令行参数.


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

pandoc -V geometry:margin=1in -o output.pdf input.md
Run Code Online (Sandbox Code Playgroud)

您也可以指定多个变量值.例如,如果您想创建一个半英寸边距的4 x 6英寸pdf,您可以使用:

pandoc -V geometry:paperwidth=4in -V geometry:paperheight=6in -V geometry:margin=.5in -o output.pdf input.md
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用的是最新版本的Pandoc,您也可以使用`variable`命令设置它,而不必从头开始制作模板或硬编码默认模板中的边距.例如,对于1英寸的边距,您可以使用`pandoc -V geometry:margin = 1in -o output.pdf input.md`. (30认同)
  • @mchangun,我编辑了Gavin的答案以包括我的评论,因为它是一个有用的,可能对想要使用默认Pandoc模板中未包含的其他自定义LaTeX软件包的用户有用. (7认同)
  • 对 pandoc 很陌生。我发现“-V Geometry:margin=1in”选项没有效果。通过谷歌搜索,我发现某个地方(抱歉丢失了链接)文档说如果使用默认模板,此选项无效。我只想将一页 Markdown 文件转换为 PDF 以作为传单发送给某人。我的快速解决方案:直接编辑模板文件并添加行“\usepackage[margin=1.0in]{geometry}”。在我的安装中,该文件位于:`/usr/share/pandoc-1.9.1.1/templates` (2认同)

nau*_*101 95

在更新版本的pandoc中,您可以在YAML标头中设置许多参数.您可以在此处设置几何图形,例如:

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

body text of document
Run Code Online (Sandbox Code Playgroud)

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