12

\Sexpr{}\begin{document} コマンドの後、\maketitle コマンドの前に、LaTeX ドキュメントのタイトルでKnitr/Sweave インライン呼び出し ( ) を使用したいと思います。インライン R コードは、LaTeX に埋め込んでいる R スクリプトの早い段階で作成された R データ フレームから 1 つまたは 2 つの情報を抽出します。

タイトルに入れたい情報を取得する data.frame を作成する Knitr チャンクがいくつかあります。次のように、これらのチャンクを LaTeX の \begin{document} 呼び出しと \title コードの間に配置しようとしました。

\documentclass
[LaTex Preamble]
\begin{document}
[%% Knitr chunks that initialize an R data-frame]
\title \Sexpr{--a snippet of R code that extracts an element from the data-frame --}
\maketitle
... (rest of the LaTeX document)

また、 \begin{document} ステートメントの前に、LaTeX コードのプリアンブルに Knitr チャンクを入れてみました。

しかし、Knitr では、LaTeX の \maketitle 呼び出しの前に配置されたコード (初期化以外) を無視するように見えるため、インライン スニペットに含まれるタイトルは Latex のエラーのように見え、出力が停止します。

LaTeXドキュメントのタイトルにインラインコードを含めることに関するKnitrドキュメントの情報が見つかりません。

何か案は?


OK: 以下の @ben-bolker からのヒントのおかげで解決策が見つかりました。Ben は、RNW ファイルに出力する前に R チャンクのフォーマットを使用します (2 段階の Knitr プロセス: latex -> rnw -> pdf) 。しかし、TeXShop 内 (Mac OSX 上) から RNW ファイルに移動することなく、LaTeX ファイルをワンステップで PDF にコンパイルしています。RNW 区切り記号 (<<>>=) と 1 ステップのコンパイルを使用して、Ben の例を機能させることができることがわかりました。しかし、通常の LaTeX チャンク区切り文字 (%%begin.rcode と %% end.rcode) と RNW インライン ステートメント フック (\Sexpr{}) を混在させることはできませんでした。後者は、どういじってもうまくいきませんでした。最終的に、LaTeX の正しいインライン フックは\\rinline{}であることがわかりました。

これがLaTeXに必要な形式であることはKnitrのドキュメントではあまり明確ではなく、主にBenの例のおかげで最終的に見つけました。ベスト、ピーター


更新 2 ... そして、RTFM (またはこの場合は「チート シート」) があります: http://cran.r-project.org/web/packages/knitr/vignettes/knitr-refcard.pdf

4

1 に答える 1

6

うーん。次のファイルは私のために働きます:

\documentclass{article}
<<echo=FALSE>>=
x <- 5
@ 
\title{The number is \Sexpr{x^2}}
\begin{document}
\maketitle

Some stuff
\end{document}

Ubuntu 10.04のknitrバージョン0.8で、knit2pdf("knitr_title.Rnw")... を介してここに画像の説明を入力してください

于 2012-10-05T13:08:56.097 に答える