我有以下代码。但是,每当我\ref{PROGRAM:HELLO-WORLD}
在文本中使用时,我都会发现??
而不是图号。
我该如何解决这个问题???
\begin{figure}
\begin{tikzpicture}
\caption{My Figure}
\end{tikzpicture}
\label{PROGRAM:HELLO-WORLD}
\end{figure}
答案1
可以放置\label
不带 的\caption
。所需代码( 也使用\caption
)是\refstepcounter{<counter-type>}
。因此,要为图形设置标签,您可以使用\refstepcounter{figure}\label{PROGRAM:HELLO-WORLD}
。
\documentclass[]{article}
\usepackage{tikz}
\begin{document}
\begin{figure}
\begin{tikzpicture}
\node at (0,0) {Foo};
\end{tikzpicture}%
\refstepcounter{figure}\label{PROGRAM:HELLO-WORLD}%
\end{figure}
\ref{PROGRAM:HELLO-WORLD}
\end{document}
如果您已经使用了\caption
(我无法在 中使用tikzpicture
),那么您会以这种方式获得错误编号的标签。为了补偿额外的步骤,您可以执行\addcounter{figure}{-1}
,因此标签代码将变为:
\addcounter{figure}{-1}\refstepcounter{figure}\label{PROGRAM:HELLO-WORLD}
正如 @JohnKormylo 提到的一种将标题放在 a 内部的方法tikzpicture
(将其包围在 a 中minipage
或像下面的 a 一样),在这种情况下,\parbox
正确的设置方法如下:\label
\documentclass[]{article}
\usepackage{tikz}
\begin{document}
\begin{figure}
\begin{tikzpicture}
\node at (0,0)
{\parbox{.8\textwidth}{\caption{Foo\label{PROGRAM:HELLO-WORLD}}}};
\end{tikzpicture}%
\end{figure}
\ref{PROGRAM:HELLO-WORLD}
\end{document}