我正在尝试为动态文档编写摘要,但是我的\Sexpr{}
通话无法正常工作。
本质上我想做的就是以一个摘要开始文档,该摘要具有从生成的 p 值\Sexpr{value}
其中值是在文档的“下游”确定的。例如
这有效:
\begin{document}
<<foo>>=
value = 10
@
Today I bought \Sexpr{value} Salamanders
\end{document}
这不起作用(以及我正在努力实现的目标)
\begin{document}
Today I bought \Sexpr{value} Salamanders
<<foo>>=
value = 10
@
我没有看到推迟评估的直接解决方案\Sexpr
对代码块进行评估后,但它仍然易于使用\Sexp
稍后在摘要中定义的值:使用单独的文件(myabstract.Rnw
) 对于摘要,添加\input{myabstract}
摘要应该包含在哪里以及knit
myabstract.Rnw
在主文档的最后:
document.Rnw
:
\documentclass{article}
\begin{document}
\begin{abstract}
\input{myabstract}
\end{abstract}
Main text.
<<>>=
answer <- 42
@
\end{document}
<<include = FALSE>>=
knit("myabstract.Rnw")
@
myabstract.Rnw
:
The answer is \Sexpr{answer}.
理解其工作原理的关键是要认识到knitr
在 LaTeX 之前处理文档。因此,LaTeX 命令并不重要\input{myabstract}
包括myabstract.tex
“之前”(不是指时间而是指行号),knit("myabstract.Rnw")
产生myabstract.tex
.
对于更复杂的场景,可以将评估和输出分开:在早期块中进行所有计算并在其所属位置打印结果。要显示源代码,reuse http://yihui.name/knitr/demo/reference/块(设置eval = FALSE
)。使用上面的示例,这意味着:
\documentclass{article}
\begin{document}
<<calculation, include = FALSE>>=
answer <- 42
@
\begin{abstract}
The answer is \Sexpr{answer}.
\end{abstract}
Main text.
<<calculation, eval = FALSE>>=
@
\end{document}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)