如何测试标签是否存在

如何测试标签是否存在

我曾尝试过另一个问题但我无法让它工作。我的问题是:如何根据参考是否存在来打印文本?

我尝试了以下方法:

\usepackage{etoolbox}
\usepackage{xparse} 

...

\NewDocumentCommand\calledName{m}{%
    \ifcsundef{r@KN:#1}{\ref{FN:#1}}{\ref{KN:#1}}%
}

答案1

\@ifundefined这是使用核心功能的一种方法latex.ltx

如果标签KN:#1未定义,则FN:#1使用对的引用(或至少尝试这样做)。

另一种方法是使用包\getrefnumberrefcount

\documentclass{article}


\makeatletter
\newcommand\calledName[1]{%
  \@ifundefined{r@KN:#1}{%
    \ref{FN:#1}%
  }{%
    \ref{KN:#1}%
  }%
}
\makeatother


\begin{document}

\section{Foo} \label{KN:foostuffwrong}

\section{OtherFoo} \label{FN:foostuff}


\calledName{foostuff}
\calledName{stuff}

\calledName{foostuff}


\end{document}

相关内容