http://www.ctan.org/tex-archive/macros/latex/contrib/hyperref/已将此说明复制如下:
amsmath
-------------
环境equation
和eqnarray
支持得不是很好。例如,可能存在间距问题(eqnarray
无论如何都不推荐,请参阅 CTAN:info/l2tabu/,的情况equation
不清楚,因为没有人有兴趣调查)。考虑使用包amsmath
提供的环境,例如gather
。equation
环境equation
甚至可以重新定义为使用 gather:\usepackage{amsmath} \let\equation\gather \let\endequation\endgather`
然而,gather
和equation
环境有间距差异,正如 Will 在对齐与方程。因此我的问题是:
在同时使用 hyperref 和 amsmath 的文档中,最好的替代品是什么equation
?
答案1
您可以在以下示例中看到间距问题。使用 hyperref 时,两个方程的间距不同,但没有使用 hyperref 时,间距相同(应该如此):
\documentclass[fleqn]{article}
\usepackage{amsmath}
\usepackage{hyperref}
\begin{document}
This is a test to check the spacing of the equation environment. Too much?
\begin{equation}
a=b
\end{equation}
This is a test to check the spacing of the equation environment.
This is a test to check the spacing of the equation environment. Too much?%
\begin{equation}
a=b
\end{equation}
This is a test to check the spacing of the equation environment.
\end{document}
但我认为这个问题还不足以停止使用方程式环境。如果显示的数学之前的句子很短,其他数学环境会产生太多空间:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
This is a test to check the spacing of the equation environment. Too much? Foo.
\begin{equation}
a=b
\end{equation}
This is a test to check the spacing of the equation environment.
This is a test to check the spacing of the align environment. Too much? Foo.
\begin{align}
a=b
\end{align}
This is a test to check the spacing of the align environment.
\end{document}
这是一个更为常见的问题。
答案2
我代表 amsmath 的维护者写信。我们确实维护着 amsmath 及其朋友和 ams 文档类别所报告的错误列表,并且目前正在积极检查该列表以准备升级整个集合。
这个线程中提到的间距问题似乎是一个错误,虽然与已经报告的任何错误并不相同(方程式和多行之间的垂直间距不匹配在我们的列表中),因此这个例子将被检查,如果被验证,就会被添加到列表中。
更新:
该软件包的维护工作于 2016 年转移到 LaTeX 项目团队。错误报告可在以下网址打开(类别 amslatex) https://latex-project.org/bugs/。
答案3
将以下代码放在文档前言的某处:
\makeatletter
\AtBeginDocument{%
\if@fleqn%
\let\old@equation\equation%
\renewcommand{\equation}{\ifhmode\unskip\fi\old@equation}%
\fi%
}
\makeatother
这应该可以解决使用 AMSLaTeX 的方程环境与 hyperref 包时出现的垂直间距问题。
答案4
我的经验法则是始终align
在任何地方使用数学。与 hyperref 配合使用效果很好 =)
为了抑制过多的空白,请不要在环境后放置双回车符。
bla:
\begin{align}
a^2+b^2=c^2
\end{align}
More text straight away