我已经在RStudio中创建了一个RMarkdown文件,并设法用knitr将其编织成HTML和.md文件。接下来,我使用pandoc将.md文件转换为PDF文件(如果我尝试从.html文件转换,我会得到一个错误)。然而,生成的PDF页边距很大(就像这个http://johnmacfarlane.net/pandoc/demo/example13.pdf)。我怎样才能让pandoc生产利润率更低的产品呢?我已经浏览了pandoc用户指南,但没有发现任何有用的东西。


当前回答

rmarkdown和pandoc的最新版本

在rmarkdown的最新版本中,页边距的设置可以通过顶级元素几何在YAML头文件中完成。您在几何标记中指定的内容将通过以下LaTeX代码片段导入Pandoc附带的LaTeX模板

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

例如,如果要指定宽度为2cm的边距,则包含

---
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使用它,方法是将它包含在应用于转换后的md文件的LaTeX头文件中。

如何做到这一点在Pandoc用户指南中有详细的说明。请特别注意——template=FILE命令行参数和Templates部分。从本质上讲,要么找到并修改默认模板以包含您想要使用的LaTeX指令,要么从头开始创建自己的模板并将其放置在适当的位置;参见——data-dir命令行参数。


如果您使用的是最新版本的Pandoc,另一种选择是使用变量参数(设置为-V KEY[=VAL]或——variable=KEY[:VAL])。几何包在2012年5月被添加到默认的LaTeX模板中(请参阅本讨论)。因此,如果你想改变页边距,你可以使用:

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时,它应该有正确的边距。

rmarkdown和pandoc的最新版本

在rmarkdown的最新版本中,页边距的设置可以通过顶级元素几何在YAML头文件中完成。您在几何标记中指定的内容将通过以下LaTeX代码片段导入Pandoc附带的LaTeX模板

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

例如,如果要指定宽度为2cm的边距,则包含

---
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使用它,方法是将它包含在应用于转换后的md文件的LaTeX头文件中。

如何做到这一点在Pandoc用户指南中有详细的说明。请特别注意——template=FILE命令行参数和Templates部分。从本质上讲,要么找到并修改默认模板以包含您想要使用的LaTeX指令,要么从头开始创建自己的模板并将其放置在适当的位置;参见——data-dir命令行参数。


如果您使用的是最新版本的Pandoc,另一种选择是使用变量参数(设置为-V KEY[=VAL]或——variable=KEY[:VAL])。几何包在2012年5月被添加到默认的LaTeX模板中(请参阅本讨论)。因此,如果你想改变页边距,你可以使用:

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

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上的设置可以正常工作。