假设我有一个计数器,比如 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
结果会是,因为当我执行 时,给出的值是。问题是不会在调用时保存值。我该如何解决这个问题?2
nameref
\thecount
2
\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