如何对文本标签进行条件引用

如何对文本标签进行条件引用

我想对我的 latex 文档中的可选标签进行条件引用,请参阅下面的最小工作示例。因此,如果标签存在于文档中的某个位置,那么将在文档中的其他位置对该标签进行引用。我正在使用“etool”包,但我不确定那里的任何命令是否对我的目的有用。

\documentclass{article}

\begin{document}

\section{Method}
...the method is based on Anderson et. al 2012,
% CONDITIONAL FUNCTION 
% IF \label{sec-appendix} EXISTS THEN:
{a summary of which is given in Appendix \ref{sec-appendix}.}
% ELSE
{not explained here.}
% END OF CONDITIONAL FUNCTION

\appendix
\section{Appendix}
\label{sec-appendix}

\end{document}

答案1

\label{xyz}我们可以利用定义的事实\r@xyz

\documentclass{article}

\makeatletter
\newcommand{\iflabelexists}[3]{\@ifundefined{r@#1}{#3}{#2}}
\makeatother

\begin{document}

\section{Method}
...the method is based on Anderson et. al 2012,
\iflabelexists{sec-appendix}
  {a summary of which is given in Appendix~\ref{sec-appendix}.}
  {not explained here.}

\appendix
\section{Appendix}
\label{sec-appendix}

\end{document}

当然,经过几次运行后,情况就会稳定下来。如果你\end{document}之前添加\appendix,你会看到。

etoolbox更简单,但本质上是等效的:

\usepackage{etoolbox}
\newcommand{\iflabelexists}[3]{\ifcsundef{r@#1}{#3}{#2}}

相关内容