我花了一个小时尝试将参考名称从“公式 1”更改为“(eq.1)”。我发现了以下内容代码
\usepackage{hyperref}
\def\equationautorefname~#1\null{Equation (#1)\null}
但它并没有改变任何东西。我认为这与 amsmath 有冲突,但即使消除它,也不起作用。我该如何实现它而不丢失交叉引用链接或不简单地在括号之间写 ref comand?
正如严格要求的那样,有一个示例代码。
\documentclass{article}
\usepackage[english]{babel}
\usepackage[colorlinks=true, allcolors=blue]{hyperref}
\begin{document}
There is the equation \autoref{eq:test}\\
\begin{equation}
\label{eq:test}
1+1=2
\end{equation}
\end{document}
答案1
使用当前的 LaTeX,您可以使用\labelformat
并且实际上不需要 autoref:
\documentclass{article}
\usepackage{amsmath}
\usepackage{hyperref}
\labelformat{equation}{(eq.~#1)}
\def\equationautorefname#1{}%for autoref, gobble the space
\begin{document}
\begin{equation}
E=mc^2 \label{eq:einstein}
\end{equation}
See the great equation \ref{eq:einstein}, \autoref{eq:einstein}.
\end{document}
答案2
此答案基于schtandard 的回答 谁说
有点肮脏的黑客行为,但只要
hyperref
不改变其\autoref
实现,它就可以起作用。
\documentclass{article}
\usepackage{amsmath}
\usepackage{hyperref}
\renewcommand\equationautorefname{(eq.}
%From https://tex.stackexchange.com/a/584601/161015
\makeatletter
\AtBeginDocument{%
\let\plain@equationautorefname\equationautorefname
\def\equationautorefname{\plain@equationautorefname\@autoref@insert@tagform}%
\def\@autoref@insert@tagform~#1\null{\,#1)\null}%
}
\makeatother
\begin{document}
\begin{equation}
E=mc^2 \label{eq:einstein}
\end{equation}
See the great equation \autoref{eq:einstein}.
\end{document}