10

我的问题是关于 knitr 选项 fig.cap,使用 LaTeX 时。是否可以在 fig.cap 字符串中包含 \rinline 或 \Sexpr ?

例如,我想要类似的东西(我正在使用 .Rtex 文件):

\documentclass{article}
\begin{document}
%% begin.rcode fig.cap="x is \\rinline{x}"
% x <- 5
% p <- seq(0,5)
% q <- x*p
% plot(p,q)
%% end.rcode
\end{document}

我真的很希望该块在我的 .tex 文档中生成一个图,标题为“x 为 5”。相反,它会在 pdflatex 编译时引发“未定义的控制序列”错误。

如果我不转义 rinline(即只使用 \rinline{x}),那么它会编译,但标题是“x 是 inlinex”。

我问的可能吗?

这是我的第一个 SO 问题(虽然在这里多次使用了答案。谢谢!),所以我很感激任何关于如何提出更好问题的反馈。

谢谢您的帮助!

4

1 回答 1

8

fig.cap被评估为 R 表达式,因此您可以在 R 中创建标题字符串,而不是使用\rinline(并因此再次解析标题)。knitr

%% begin.rcode fig.cap=paste("x is", x)

但由于默认情况下在创建之前fig.cap进行评估,因此您需要推迟对 ; 的评估。为此,您可以在文档的开头包含这样的块: xfig.cap

%% begin.rcode setup, include=FALSE
%% opts_knit$set(eval.after = 'fig.cap')
%% end.rcode

它指定fig.cap在评估代码块后评估,即何时x可以在图形标题中使用。请参阅eval.after文档

另一种方法是在前一个块中创建x在下fig.cap=paste("x is", x)一个中使用。

于 2013-03-29T19:04:28.167 回答