我如何引用新命令创建的标签?

我如何引用新命令创建的标签?

我有几对图表。我需要在乳胶中显示这些图表。我正在使用以下方法,效果很好。

\begin{figure}
  \centering
  \begin{subfigure}{.5\textwidth}
    \centering
    \fbox{\includegraphics[width=.8\linewidth]{4-byVar1.png}}
    \caption{``Here's a question?'' (by Var1)}
    \label{fig:4-byVar1}
  \end{subfigure}%
  \begin{subfigure}{.5\textwidth}
    \centering
    \fbox{\includegraphics[width=.8\linewidth]{4-byVar2.png}}
    \caption{``Here's a question?'' (by Var2)}
    \label{fig:4-byVar2}
  \end{subfigure}
  \caption{``Here's a question?''}
  \label{fig:comboFig-4}
\end{figure}

但是,对于每一对这样的数字,都需要重复很多代码。我创建了一个

\newcommand

为我完成工作,但似乎当我尝试引用我的新命令创建的图形时,我收到错误(图未定义)。

有人能建议我如何引用由新命令创建的标签吗?

我创建的新命令如下所示

\newcommand{\graphPairs}[2]{
  \begin{figure}
    \centering
    \begin{subfigure}{.5\textwidth}
      \centering
      \fbox{\includegraphics[width=.8\linewidth]{#2-byCar1.png}}
      \caption{#1 (by Var 1)}
      \label{fig:#2-byVar1}
    \end{subfigure}%
    \begin{subfigure}{.5\textwidth}
      \centering
      \fbox{\includegraphics[width=.8\linewidth]{#2-byVar2.png}}
      \caption{#1 (by Var 2)}
      \label{fig:#2-byVar2}
    \end{subfigure}
    \caption{#1}
    \label{fig:comboFig-#2}
  \end{figure}
}

答案1

没关系,它\label隐藏在 中\newcommand。要引用,您需要依赖于 的第二个参数的标签名称\graphPairs。第一个例子将通过以下方式生成:

\graphPairs{``Here's a question?''}{4}

标签可以引用为

\ref{fig:4-byVar1}
\ref{fig:4-byVar2}
\ref{fig:comboFig-4}

答案2

TeX 是一个宏处理器,因此它只是根据命令的定义对命令进行文本替换,然后\label才进行考虑。所以如果你的命令被调用为

 \graphPairs{cap}{myfile}

那么你的\label三个

\label{fig:myfile-byVar1}

\label{fig:myfile-byVar2}

\label{fig:comboFig-myfile}

因此可以引用为\ref{fig:myfile-byVar1},,\ref{fig:myfile-byVar2}\ref{fig:comboFig-myfile}

与往常一样,需要运行几次才能定义引用。

相关内容