sin*_*dur 9 r pandoc knitr r-markdown
我正在寻找方法将变量(或LaTeX宏)添加到YAML标头或不久后,以便它们可以用在.tex作为我的(模块化的)报告的一部分的外部文件中.
我的.rmd档案
---
output:
pdf_document:
latex_engine: xelatex
includes:
before_body: some.tex
params:
cat: "Felix"
numb: 14
---
# chapter
Oh my \textbf{`r params$cat`}.
$x = `r 2*params$numb`^2$
<!-- Trying again to get the parameter -->
\input{some.tex}
Run Code Online (Sandbox Code Playgroud)
我的some.tex档案:
`r params\$cat`
Run Code Online (Sandbox Code Playgroud)
产量
希望输出
我希望能够以某种方式传递来自YAML标头(或者甚至在它下面)的变量以供LaTeX使用,以便可以在一个地方查看和更改所有重要且定期更新的参数.
这只是中途.仍然没有文件作为标题输入...
也许这个答案会让别人有一个想法来建立......
---
output:
pdf_document:
latex_engine: xelatex
params:
cat: "Felix"
numb: 14
header-includes:
- \usepackage{fancyhdr}
- \pagestyle{fancy}
- \fancyhead[CO,CE]{`r params$cat`}
---
# CHAPTER 1
Oh my \textbf{`r params$cat`}.
$x = `r 2*params$numb`^2$
```{r child = 'some.tex'}
```
Run Code Online (Sandbox Code Playgroud)
截图pdf
如果您正在寻找最与R Markdown工作流程保持一致的内容,则可以自定义用于构建LaTeX输出的模板,并将所有其他LaTeX代码直接添加到其中。
1.复制模板
首先,我们必须复制R Markdown使用的模板。以下代码将在您当前的工作目录中创建该代码:
file.copy(system.file("rmd/latex/default-1.17.0.2.tex",
package = "rmarkdown"), "template.tex")
Run Code Online (Sandbox Code Playgroud)
2.添加变量
使用我们的副本,我们可以定义自己的pandoc变量,这些变量将插入到输出文档中。这使我们可以在文档的YAML部分中指定参数,它们将以输出格式进行更新。它是完全一样的机制,使我们能够增加title,author,date并为他们添加到输出格式。
我在第253-255行的文档的开头添加了一些代码。确切的位置无关紧要,但是我也倾向于将自定义项放在\begin{document}参数之前:
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhead[LO, LE]{$params.value$}
\fancyhead[RO, RE]{$yourParam$}
Run Code Online (Sandbox Code Playgroud)
3.从R Markdown调用模板
我们可以将自定义模板引用到我们的R Markdown文档中,如此处所述。这是我的最小示例:
---
output:
pdf_document:
template: template.tex
params:
value: Text
yourParam: "`r Sys.Date()`"
---
`r params$value`
Run Code Online (Sandbox Code Playgroud)
这两个参数将代替$params.value$和和添加到输出中$yourParam$,并导致以下输出:
该示例着重说明了YAML参数不必params像原始问题中指定的那样嵌套在参数中。如果要构建参数化的报告,则在参数中指定它们主要有好处
注意:
$variable$仅在template选项下定义的主模板文件中才可以使用pandoc表示法替换变量。它不适用于任何includes参数或任何其他外部LaTeX文件。有关更多详细信息,请参见此处。
| 归档时间: |
|
| 查看次数: |
755 次 |
| 最近记录: |