我已经在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上的设置可以正常工作。
推荐文章
- 使用pandoc从Markdown转换为PDF时设置空白大小
- 如何显示数学方程在一般github的markdown(不是github的博客)
- ggplot2折线图给出“geom_path:每组只包含一个观测值。你需要调整群体审美吗?”
- 使用Markdown的Sphinx而不是reST
- 导入文本文件为单字符字符串
- 移除jupyter笔记本上的内核
- 提取一个dplyr tbl列作为向量
- 降价和图像对齐
- 如何在R中绘制两个直方图?
- 显示/打印tibble的所有行(tbl_df)
- 我如何做一个数据帧的列表?
- 在常数平摊时间O(1)中将一个对象追加到R中的列表?
- 模拟ggplot2默认调色板
- R在哪里存储包?
- 标准化R中的数据列