我使用 hyperref\autoref{}
来引用枚举的标记项。默认情况下,引用显示为“查看第 X 项我更愿意说“看看X“。
我将其重新定义\itemautorefname
为空:
\renewcommand{\itemautorefname}{}
删除了“item”一词,但留下了额外的空间。
\renewcommand{\itemautorefname}{}
\begin{enumerate}
...
\item \label{T:myitem} foo
...
\end{enumerate}
...
% just to compare \ref vs \autoref
Do \autoref{T:myitem} with \ref{T:myitem}.\\
Do 3 with 3. \\
显示为:
我该如何修剪多余的前导空格?
更新:为什么不只是\ref{}
有人可能会(而且有人确实指出)\ref{}
在这种情况下使用它可能会更简单,以产生所需的输出。我坚持使用\autoref
是没有意义的。我只是养成了在任何地方使用它的习惯,\autoref{}
这样就不必担心我引用的东西的类型。如果我改变主意,然后想稍后将所有项目引用前缀为“规则”或其他内容,它可以简化重构。
答案1
\autoref
使用(加载一些宏和扩展后)
\itemautorefname\space
到底。
如果\itemautorefname
定义为不执行任何操作,\space
则仍然处于活动状态,但可以通过它将其删除gobbling
,即吸收以下标记作为参数的“幽灵”宏,在本例中使用\@gobble
。
由于\@gobble
是一个“@”字母命令,因此\makeatletter...\makeatother
文档中需要该字母对。
现在,最后一个问题是:为什么autoref
在这里使用 when\ref
会产生相同的效果?;-)
\documentclass{article}
\usepackage{hyperref}
\makeatletter
\renewcommand{\itemautorefname}{\@gobble}
\makeatother
\begin{document}
\begin{enumerate}
\item \label{T:myitem} foo
\end{enumerate}
Do \autoref{T:myitem} with \ref{T:myitem}.
Do 3 with 3.
\end{document}