使用KnitR从R图中获得LaTeX图形标签?

时间:2013-02-20 23:16:43

标签: r latex knitr

我无法让R / KnitR为数字创建LaTeX \label{}语句。 manual似乎表明将通过将图.lp("图:"默认情况下)中的字符串与R代码的标签连接来创建\label{}语句块。然而,我还没有能够让它发挥作用。没有为通过编织下面的MWE创建的第一个数字创建\label{}语句。第二个数字的标签添加了我刚刚发现的变通方法,将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}

好的,我已经通过将R块放在LaTeX的\begin{figure} . . .\end{figure}环境中找到了解决方法。我可以在同一个环境中创建标签。不过,我想了解Yihui打算如何处理KnitR。

1 个答案:

答案 0 :(得分:34)

您需要设置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}

例如

R

我同意description from the website不太明确,因为这是必要的。

  
      
  • fig.env :('figure')用于数字的LaTeX环境,例如:设置fig.env ='marginfigure'来获得\ begin {marginfigure}

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

  •   

虽然graphics manual is clear,但推理有意义

  

图标题

     

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

如果您希望复制{{1}}会话输出,则不希望这些数字偏离定义它们如何创建的代码行。