10

私の質問は、LaTeX を使用する場合の、knitr オプションの fig.cap についてです。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}

そのチャンクが「x is 5」というキャプションを付けて、.tex ドキュメントにプロットを生成することを本当に望んでいます。代わりに、pdflatex のコンパイル時に「未定義の制御シーケンス」エラーがスローされます。

rinline をエスケープしない場合 (つまり \rinline{x} のみを使用する場合)、コンパイルは行われますが、キャプションは "x is inlinex" です。

私が求めていることは可能ですか?

これは私の最初のSOの質問です(ただし、ここで何度も回答を使用しました。ありがとうございます!)、より良い質問をする方法についてのフィードバックをいただければ幸いです。

助けてくれてありがとう!

4

1 に答える 1

8

fig.cap\rinlineは R 式として評価されるため、 を使用する(したがってキャプションを によって再び解析する)代わりに、Rknitrでキャプション文字列を作成するだけで済みます。

%% 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これを行うもう 1 つの方法は、のチャンクで作成しfig.cap=paste("x is", x)次のチャンクで使用することです。

于 2013-03-29T19:04:28.167 に答える