我最近了解到,为Rmd
PDF报告gives access to some neat customisation修改默认(Pandoc?)模板。
因此,为了修改默认模板,我首先使用以下命令将其移动到工作目录中:
file.copy(system.file("rmd/latex/default-1.17.0.2.tex", package ="rmarkdown"), "template.tex")
接下来,我键入我的Rmd
文件:
---
output:
pdf_document:
template: template.tex
keep_tex: true
latex_engine: xelatex
includes:
in_header: in_header.tex
number_sections: true
---
This is a rmd kind of document.
in_header.tex
仅包含一行
\geometry{a4paper, top=38mm, left=45mm, right=45mm}
我首先只想按原样使用模板运行Rmd
文件(希望没有更改),但是如果且仅当我包括模板时,报表无法编译-否则,运行没有问题。
错误是
! Undefined control sequence.
l.58 \geometry
[...]
问题
如何使用template参数在工作文件夹中的可编辑模板上构建,而不会对当前设置进行任何其他更改。
信息
> R.Version()[["version.string"]]
[1] "R version 3.5.1 (2018-07-02)"
> packageVersion("rmarkdown")
[1] ‘1.10’
> packageVersion("knitr")
[1] ‘1.20’
答案 0 :(得分:7)
由于您已经从R中获得了成功,因此您也可以使用rticles软件包设置的(优秀)示例,该软件包为(学术)论文提供了大量的LaTeX自定义。
然后您就可以运行它们了。例如,在过去两年中,我添加了以下软件包:
这允许您
template.tex
我发现这比复制我以前做过的节(例如幻灯片)更好。
答案 1 :(得分:4)
使用rmarkdown::pdf_output
模板时,default
函数的功能似乎有所不同。例如,它设置变量graphics=yes
。我怀疑它也设置了geometry
,但是我还没有看到它在哪里设置。无论如何,如果您要使用基于默认模板的自定义模板,那么您将与模板中的该块“打架”:
$if(geometry)$
\usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry}
$endif$
仅在定义几何头时才装入geometry
包。一种简单的解决方案是将几何图形定义从标头包含移动到YAML标头:
---
geometry:
- a4paper
- top=38mm
- left=45mm
- right=45mm
output:
pdf_document:
template: template.tex
keep_tex: true
latex_engine: xelatex
includes:
in_header: in_header.tex
number_sections: true
---
This is a rmd kind of document.
您可以从\geometry{...}
中删除in_header.tex
。