?? 而不是图形编号!

?? 而不是图形编号!

我有以下代码。但是,每当我\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}

相关内容