knitr 如何在文本中标记和调用图形编号

knitr 如何在文本中标记和调用图形编号

作为一名编织初学者,我不知道如何标记和称呼一个图形。

对于我的第一个图,我尝试了以下代码,但没有成功......

<<fig.cap="Dendrogram of GDP (2000-2012)",fig.lp="fig:test">>=  
plot(HClust.1, main= "Cluster Dendrogram GDP")
@

As you can see the figure \ref{fig:test} shows that...

但编译后我得到的figure ??却是figure 1......

答案1

fig.lp不是图形的标签,而是用于创建标签的前缀。从knitr选项描述

fig.lp: ('fig:'; 字符) 图形标签的标签前缀\label{};实际标签由此前缀和块标签连接而成,例如,图形标签默认<<foo-plot>>=fig:foo-plot

如果您没有为块指定名称,它们将获得一个默认名称,例如,unnamed-chunk-1其中数字取决于它在文件中的位置(因此会产生错误的目标标签)。

此外,要将图形放入图形环境中,您需要为其添加标题。再次从选项描述

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

如果没有这个,就没有图形环境,因此也就没有\label{}创造。

综合起来,这就是 MWE:

\documentclass{article}
\begin{document}

<<myfig, fig.cap=''>>=
plot(1:10)
@

As you can see the figure \ref{fig:myfig} shows that...

\end{document}

这将创建一个.tex文件,其中相关(但不完整)的摘录是

\begin{knitrout}
\definecolor{shadecolor}{rgb}{0.969, 0.969, 0.969}\color{fgcolor}\begin{kframe}
\begin{alltt}
\hlfunctioncall{plot}(1:10)
\end{alltt}
\end{kframe}\begin{figure}[]

\includegraphics[width=\maxwidth]{figure/myfig} \caption[]{\label{fig:myfig}}
\end{figure}


\end{knitrout}


As you can see the figure \ref{fig:myfig} shows that...

您现在可以看到\label{}\ref{}已经匹配。

另请参阅有关此问题的更多讨论相关 Stack Overflow 问题

相关内容