sin*_*dur 8 r pandoc knitr r-markdown
我最近了解到,修改Rmdpdf报告的默认(Pandoc?)模板可以访问一些简洁的自定义.
因此,为了修改默认模板,我首先使用以下命令将其移动到我的工作目录:
file.copy(system.file("rmd/latex/default-1.17.0.2.tex", package ="rmarkdown"), "template.tex")
Run Code Online (Sandbox Code Playgroud)
接下来我输入我的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.
Run Code Online (Sandbox Code Playgroud)
其中in_header.tex只包含一行
\geometry{a4paper, top=38mm, left=45mm, right=45mm}
Run Code Online (Sandbox Code Playgroud)
我首先只是希望Rmd使用模板运行该文件(期望没有更改)但是当且仅当我包含模板时报告无法编译- 否则它运行没有问题.
错误是
! Undefined control sequence.
l.58 \geometry
[...]
Run Code Online (Sandbox Code Playgroud)
题
如何使用模板参数在我的工作文件夹中构建可编辑模板,而不会对我当前的设置进行任何其他更改.
信息
> R.Version()[["version.string"]]
[1] "R version 3.5.1 (2018-07-02)"
> packageVersion("rmarkdown")
[1] ‘1.10’
> packageVersion("knitr")
[1] ‘1.20’
Run Code Online (Sandbox Code Playgroud)
使用模板rmarkdown::pdf_output时,该函数似乎做了一些不同的事情default。例如,它设置变量graphics=yes。我怀疑它也会设置geometry,但我还没有看到它在哪里这样做。无论如何,如果您想使用基于默认模板的自定义模板,您将与模板中的此块“战斗”:
$if(geometry)$
\usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry}
$endif$
Run Code Online (Sandbox Code Playgroud)
该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.
Run Code Online (Sandbox Code Playgroud)
有了这个,您可以\geometry{...}从 in_header.tex.
| 归档时间: |
|
| 查看次数: |
942 次 |
| 最近记录: |