我定义了一个特殊命令,名为 \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}