答案1
如果不应该使用命令的可选参数\chapter
而是使用“任何”其他自由文本,则有一些方法,例如重新定义\@currentlabelname
以\nameref
继续使用。
我通过强大的包为名为和zref
的新命令 提供了一种方法,并建立了一个新的标签属性并具有更多的灵活性。\labelshort[optional text]{labelname}
\nameshortref
shorttitle
使用可选参数\nameshortref
添加更多解释性文字或正确的语法。
\documentclass{book}
\usepackage{xparse}
\usepackage[user,hyperref]{zref}
\usepackage{hyperref}
\makeatletter
\providecommand{\@currentshorttitle}{}
\zref@newprop{shorttitle}{\@currentshorttitle}
\zref@addprop{main}{shorttitle}
\NewDocumentCommand{\labelshort}{om}{%
\begingroup
\IfValueT{#1}{%
\renewcommand{\@currentshorttitle}{#1}%
\zlabel{#2}%
}%
\endgroup
\label{#2}%
}
\NewDocumentCommand{\nameshortref}{O{}m}{%
\zref@ifrefundefined{#2}{%
}{%
\hyperlink{\zref@extract{#2}{anchor}}{#1\zref@extract{#2}{shorttitle}}%
}%
}
\begin{document}
\chapter{Introduction: this is the first theory}
\labelshort[Introduction]{intro}
\section{Foo section}\labelshort[Foo]{foosect}
\clearpage
See \nameshortref[In the ]{intro} or \nameref{intro} or \nameshortref[in the ]{foosect}
\end{document}