首先,我非常感谢这个社区迄今为止为我提供的帮助。无论如何,对于我的问题:
我感觉我在这里忽略了一些显而易见的东西。我想要...
\documentclass{article}
\usepackage{hyperref}
\renewcommand{\ref}{\autoref}
\begin{document}
\section{Section Title} \label{anchor}
Blah Blah Blah. \ref{anchor}
\end{document}
打印为...
1 章节标题
啦啦啦。第 1 部分
但相反我得到了......
1 章节标题
啦啦啦啦。1
... so\ref
不会被替换\autoref
。我该如何纠正这个问题?我除了执行查找和替换改为?\ref
\autoref
答案1
好的,找到了解决方案:
笔记:
不使用任何常用的技巧:
\renewcommand{\ref}[1]{\autoref{#1}}
\def\ref#1{\autoref{#1}}
\let\ref\autoref
\LetLtxMacro\ref\autoref
在这种情况下似乎有效。
我怀疑是因为
hyperref
,\AtBeginDocument
所以有些东西在文档开头就被定义了。因此使用\AtBeginDocument
将我们的重新定义放在要执行的命令队列的末尾\AtBeginDocument
。而且由于将
\AtBeginDocument
to be 放在前面\usepackage{hyperref}
不起作用,这证实了怀疑是正确的。
代码:
\documentclass{article}
\usepackage{hyperref}
\AtBeginDocument{\renewcommand{\ref}[1]{\autoref{#1}}}
\begin{document}
\section{Section Title} \label{anchor}
Blah Blah Blah. \autoref{anchor} \ref{anchor}
\end{document}