假设方程是
\begin{equation}
r^2 = x^2 + y^2 \text{.} \label{eq:circ}
\end{equation}
现在,如果我使用
\autoref{eq:circ}
我得到了Equation 1
。我如何获得Equation (1)
(使用 时获得的括号\eqref
)同时仍保持超链接?
根据以下答案进行编辑。
我定义了两个版本的命令,分别用于句首和句中:
\def\chapterautorefname{Chap.}
\def\sectionautorefname{Sec.}
\def\subsectionautorefname{sub--Sec.}
\def\figureautorefname{Fig.}
\def\tableautorefname{Tab.}
\def\equationautorefname{Eq.}
\newcommand{\Autoref}[1]{%
\begingroup%
\def\chapterautorefname{Chapter}%
\def\sectionautorefname{Section}%
\def\subsectionautorefname{Sub--Section}%
\def\figureautorefname{Figure}%
\def\tableautorefname{Table}%
\def\equationautorefname~#1{Equation~(#1)}%
\autoref{#1}%
\endgroup%
}
在使用\Autoref
它时说
的使用
\equationautorefname
与其定义不符\Autoref{eq:llg1}
。
我如何解决它?
答案1
我在我的一份旧文档中发现了这个技巧,但我感觉这个想法来自别人:
\documentclass{article}
\usepackage{hyperref}
\def\equationautorefname~#1\null{Equation~(#1)\null}
\begin{document}
\begin{equation}
\label{eq:circ}
r^2 = x^2 + y^2.
\end{equation}
\autoref{eq:circ}
\end{document}
答案2
Svend Tveskæg 的回答中描述的技巧来自于此回答作者:Heiko Oberdiek。
如果您希望它与您的设置(命令\Autoref
)一起工作,您必须按如下方式使用:
\newcommand{\Autoref}[1]{%
\begingroup%
\def\chapterautorefname~##1\null{Chapter~(##1)\null}%
\def\sectionautorefname~##1\null{Section~(##1)\null}%
\def\subsectionautorefname~##1\null{Sub--Section~(##1)\null}%
\def\figureautorefname~##1\null{Figure~(##1)\null}%
\def\tableautorefname~##1\null{Table~(##1)\null}%
\def\equationautorefname~##1\null{Equation~(##1)\null}%
\autoref{#1}%
\endgroup%
}
完成 MWE
\documentclass{article}
\usepackage[colorlinks]{hyperref}
\def\chapterautorefname~#1\null{Chap.~(#1)\null}
\def\sectionautorefname~#1\null{Sec.~(#1)\null}
\def\subsectionautorefname~#1\null{sub--Sec.~(#1)\null}
\def\figureautorefname~#1\null{Fig.~(#1)\null}
\def\tableautorefname~#1\null{Tab.~(#1)\null}
\def\equationautorefname~#1\null{Eq.~(#1)\null}
\newcommand{\Autoref}[1]{%
\begingroup%
\def\chapterautorefname~##1\null{Chapter~(##1)\null}%
\def\sectionautorefname~##1\null{Section~(##1)\null}%
\def\subsectionautorefname~##1\null{Sub--Section~(##1)\null}%
\def\figureautorefname~##1\null{Figure~(##1)\null}%
\def\tableautorefname~##1\null{Table~(##1)\null}%
\def\equationautorefname~##1\null{Equation~(##1)\null}%
\autoref{#1}%
\endgroup%
}
\begin{document}
\begin{equation}
\label{eq:circ}
r^2 = x^2 + y^2.
\end{equation}
\Autoref{eq:circ} some text \autoref{eq:circ}.
\end{document}
输出
答案3
为了\autoref
自动在方程编号周围插入括号,即使其表现得像\eqref
,您还可以执行以下操作(假定包已加载):修改包的amsmath
宏:\tagform@
amsmath
\let\origtheequation\theequation
\makeatletter
\def\tagform@#1{\maketag@@@{\ignorespaces#1\unskip\@@italiccorr}}
\makeatother
\renewcommand{\theequation}{(\origtheequation)}
请注意,由于@
字符的存在,的重新定义\tagform@
将被包装在\makeatletter
...对中。顺便说一下,\makeatother
宏将继续像以前一样工作。\eqref
完整的 MWE - 请注意,没有必要进一步摆弄以下定义\Autoref
:
\documentclass{article}
\usepackage{amsmath}
\let\origtheequation\theequation
\makeatletter
\def\tagform@#1{\maketag@@@{\ignorespaces#1\unskip\@@italiccorr}}
\makeatother
\renewcommand{\theequation}{(\origtheequation)}
\usepackage[colorlinks=true]{hyperref}
\def\equationautorefname{Eq.}
\newcommand{\Autoref}[1]{%
\begingroup%
\def\equationautorefname{Equation}%
\autoref{#1}%
\endgroup%
}
\setlength{\textwidth}{3in} % just for this example
\begin{document}
\begin{equation} \label{eq:1}
a^2+b^2=c^2.
\end{equation}
Here's a reference to \autoref{eq:1}.
\Autoref{eq:1} shows us that \dots
\end{document}