LaTeX使用KnitR绘制R图的标签?

我无法让R / KnitR为graphics创buildLaTeX \label{}语句。 该手册似乎表明将通过将图.lp中的string(默认为“fig:”)与R代码块的标签连接来创build\label{}语句。 但是,我还没有能够得到这个工作。 对于通过编织下面的MWE创build的第一个graphics,将会创buildNo \label{}语句。 第二个图是标签添加了一个我刚刚发现的解决方法,将R块放在graphics环境中,并将\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} 

好的,我已经find了一个解决方法,把R块放在\begin{figure} . . .\end{figure} \begin{figure} . . .\end{figure} 。LaTeX中的\begin{figure} . . .\end{figure}环境。 我可以在同一个环境中创build标签。 不过,我想了解Yihui打算如何使用KnitR来处理这个问题。

你需要设置fig.cap = '' (或任何你想要的)来确保在latex文档中使用graphics环境。 (您可能已经注意到\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')数字的LaTeX环境,例如设置fig.env ='marginfigure'来获得\ begin {marginfigure}

  • fig.cap:(NULL;字符)图标在LaTeX的graphics环境中使用(在\ caption {}); 如果是NULL或NA,它将被忽略,否则graphics环境将被用于块中的图(在\ begin {figure}和\ end {figure}中输出)

虽然graphics手册是清晰的 ,推理是有道理的

图标题

如果块选项fig.cap不为NULL或NA,则当输出格式为LATEX时,图将放置在graphics环境中,并且此选项用于在此环境中使用\ caption {}写入标题。 另外两个相关的选项是fig.scap和fig.lp,它为数字标签设置短字幕和前缀string。 通过在第一个句点或冒号或分号截断标题提取默认的短标题。 标签是fig.lp和块标签的组合。 因为figure是一个浮动环境,所以当编译TEX文档时,它可以从块输出浮动到其他地方,例如页面的顶部或底部。

如果您希望复制R会话输出,您不希望这些数字从定义如何创build的代码行中浮现出来。