35

R/KnitRに\label{}フィギュアのLaTeXステートメントを作成させることができません。マニュアルには\label{}、fig.lp(デフォルトでは「fig:」)の文字列をRコードチャンクのラベルと連結することによってステートメントが作成されることが示されているようです。しかし、私はこれを機能させることができませんでした。\label{}以下のMWEを編んで作成された最初の図については、ステートメントは作成されません。2番目の図には、先ほど発見した回避策がラベルに追加されており、Rチャンクを図環境に配置し、\labelタグの後ろまたは中に\captionタグを配置しています。

\documentclass[12pt, english, oneside]{amsart}
\begin{document}

Figure \ref{fig:plot} doesn't have it's label.

<<plot>>=
plot(x=0, y=0)
@

Figure \ref{fig:plot2} has its label.

\begin{figure}
\caption{\label{fig:plot2}}
<<>>=
plot(x=1,y=1)
@
\end{figure}

\end{document}

\begin{figure} . . .\end{figure}さて、 LaTeXの環境にRチャンクを配置することで回避策を見つけました。同じ環境でラベルを作成できます。それでも、YihuiがこれをKnitRでどのように処理するつもりかを理解したいと思います。

4

1 に答える 1

35

fig.cap = ''ドキュメントでフィギュア環境が確実に使用されるように設定する必要があります(または任意のものを設定する必要があります) latex。(コンポーネント\begin{figure} ... \end{figure}と一緒に が欠落していることに気付いたかもしれません\label{}

例えば

\documentclass[12pt, english, oneside]{amsart}
\begin{document}
See Figure \ref{fig:plot}.
<<plot, fig.lp="fig:", fig.cap = ''>>=
plot(x=0, y=0)
@
\end{document}

これが必要であることについて、ウェブサイトの説明が明確ではないことに同意します。

  • fig.env: ('figure') Figure の LaTeX 環境。

  • fig.cap: (NULL; 文字) LaTeX の図環境で使用される図のキャプション (\caption{} 内); NULL または NA の場合は無視されます。それ以外の場合は、図環境がチャンク内のプロットに使用されます (\begin{figure} および \end{figure} に出力)。

グラフィック マニュアルは明確ですが、その理由は理にかなっています。

図のキャプション

チャンク オプション fig.cap が NULL または NA でない場合、出力形式が LATEX の場合、プロットは Figure 環境に配置されます。このオプションは、\caption{} を使用してこの環境でキャプションを書き込むために使用されます。他の 2 つの関連するオプションは、短いキャプションと Figure ラベルのプレフィックス文字列を設定する fig.scap と fig.lp です。デフォルトの短いキャプションは、キャプションの最初のピリオドまたはコロンまたはセミコロンで切り捨てられて抽出されます。ラベルは、fig.lp とチャンク ラベルの組み合わせです。Figure はフロート環境であるため、TEX ドキュメントがコンパイルされると、チャンク出力からページの上部または下部などの他の場所にフロートする可能性があります。

セッション出力を複製しRたい場合、図がどのように作成されたかを定義するコード行から離れて浮いてしまうのは望ましくありません。

于 2013-02-21T00:08:52.013 に答える