\@currentlabelname 和自定义计数器

\@currentlabelname 和自定义计数器

假设我有一个计数器,比如 count。我可以这样做

\setcounter{count}{0}
\refstepcounter{count}\thecounter{count}\label{cool}
\ref{cool}

这最终会给我“1”。现在,我希望能够nameref以以下方式使用(这不太管用,这也是我问这个问题的原因)

\setcounter{count}{0}
\refstepcounter{count}\thecounter{count}
\@currentlabelname{awesome:\thecount}}\phantomsection\label{cool}
\stepcounter{count}
\nameref{cool}

我希望结果是,但在这种情况下awesome:1结果会是,因为当我执行 时,给出的值是。问题是不会在调用时保存值。我该如何解决这个问题?2nameref\thecount2\thecount

顺便提一下,类似\tag(for equation) 的东西可能会起作用。例如,如果我有\tag{awesome:\thecount}\label{cool}\eqref{cool}然后有,我实际上会得到正确的结果。

答案1

\thecount需要扩展\@currentlabelname。否则,引用包含\thecount,并且当前编号将打印在引用中。

\edef\@currentlabelname{awesome: \thecount}

或者

\protected@edef\@currentlabelname{awesome: \thecount}

如果使用,LaTeX 的常用保护机制(如\protect)将会起作用。\protected@edef

相关内容