我在RStudio里创建了一个RMarkdown文件,并使用knitr将其编织成HTML和.md文件。接着,我使用pandoc将.md文件转换为PDF文件(如果我尝试从.html文件转换会出现错误)。但是生成的PDF文件有巨大的边距(类似于这个)。我该如何让pandoc生成带有更小边距的内容?我已经浏览了pandoc用户指南,但没有找到任何有用的信息。
在较新的rmarkdown版本中,可以通过YAML标题栏中的顶层元素geometry
进行边距设置。您在geometry
标签中指定的内容将通过以下LaTeX代码片段传递到随Pandoc一起发货的LaTeX模板中。
$if(geometry)$
\usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry}
$endif$
---
title: "Habits"
author: John Doe
date: March 22, 2005
geometry: margin=2cm
output: pdf_document
---
如果需要将更复杂的规格传递给 geometry LaTeX 包,请像使用LaTeX一样将字符串选项连接起来:
---
title: "Habits"
author: John Doe
date: March 22, 2005
geometry: "left=3cm,right=3cm,top=2cm,bottom=2cm"
output: pdf_document
---
--template=FILE
命令行参数和Templates section。基本上,您可以找到并修改默认模板以包含要使用的LaTeX指令,或者从头开始创建自己的模板并将其放置在适当的位置; 可以查看--data-dir
命令行参数。-V KEY[=VAL]
或--variable=KEY[:VAL]
设置)。`geometry`包已添加到默认的LaTeX模板中,发布于2012年5月(请参见此讨论)。因此,如果您想更改页面边距,可以使用以下命令:pandoc -V geometry:margin=1in -o output.pdf input.md
你也可以指定多个变量值。例如,如果您想要创建一个4乘6英寸的PDF文件,并带有半英寸的页边距,您可以使用以下代码:
pandoc -V geometry:paperwidth=4in -V geometry:paperheight=6in -V geometry:margin=.5in -o output.pdf input.md
在更新版本的 Pandoc 中,你可以在YAML 头部中设置一些参数。你可以在这里设置页面布局,例如:
---
title: Pandoc nice margins example
author: naught101
geometry: margin=3cm
---
body text of document
当pandoc将其转换为PDF时,它应该具有正确的边距。
Kile
或Sublime Text 2/3
这样的编辑器中自动构建文档并且更改命令行参数会很麻烦时,它非常有用。 - AbhinavFTR:上述“最近版本”似乎包括了Knitr 1.30,而我之前需要以下标题:
---
pdf_document: null
geometry: margin=1cm
output: pdf_document
---
如果没有额外的 pdf_document: null
,那么几何设置将不起作用。有了它,来自https://bookdown.org/yihui/rmarkdown-cookbook/latex-variables.html 的设置可以生效。
variable
命令来设置页面边距,而不必从头开始制作模板或在默认模板中硬编码边距。例如,要设置 1 英寸的边距,可以使用pandoc -V geometry:margin=1in -o output.pdf input.md
。 - A5C1D2H2I1M1N2O1R2T1-V geometry:margin=1in
选项没有效果。在通过谷歌搜索时,我找到了某个(抱歉,我丢失了链接)文档,说明如果使用默认模板,则此选项无效。我只想将一个一页的 markdown 文件转换为 PDF 以便向某人发送宣传单。我的快速解决方案:直接编辑模板文件并添加行\usepackage[margin=1.0in]{geometry}
。在我的安装中,该文件位于/usr/share/pandoc-1.9.1.1/templates
。 - Steve Koch--pdf-engine=wkhtmltopdf
时,似乎不适用于pandoc 2.9.2.1
。 - twitu