使用基于 cleveref 值的 if/then 语句的新命令?

使用基于 cleveref 值的 if/then 语句的新命令?

我定义了一个特殊命令,名为 \Exerref,它作用于标签,与 \Cref 非常相似。是否可以创建一个新命令,我们称之为 \Sref,它根据 \nameref 的值调用 \Exerref 或 \Cref?例如,如果 \nameref 返回“Exercise”,则使用 \Exerref;否则,使用 \Cref。在 LaTeX 中可以实现这样的功能吗?

答案1

refcount 包提供了一个获取 nameref 值的命令:

\documentclass{article}
\usepackage{hyperref,refcount,etoolbox}

\begin{document}
\section{exercise}\label{testA}
\section{öäüß$abc$}\label{testB}

\makeatletter
\protected@edef\test{\getrefbykeydefault{testA}{name}{}}
\ifdefstring{\test}{exercise}{true}{false}

\protected@edef\test{\getrefbykeydefault{testB}{name}{}}
\ifdefstring{\test}{exercise}{true}{false}
\makeatother
\end{document} 

相关内容