作为一名编织初学者,我不知道如何标记和称呼一个图形。
对于我的第一个图,我尝试了以下代码,但没有成功......
<<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{}
);如果NULL
或NA
,它将被忽略,否则图形环境将用于块中的绘图(输出在\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 问题。