\equationautorefname 不起作用(hyperref 包)

\equationautorefname 不起作用(hyperref 包)

我花了一个小时尝试将参考名称从“公式 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}

结果: enter image description here

答案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}

enter image description here

答案2

此答案基于schtandard 的回答 谁说

有点肮脏的黑客行为,但只要hyperref不改变其\autoref实现,它就可以起作用。

a

\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}

相关内容