如何处理 amsmath 上的这个超链接注释?

如何处理 amsmath 上的这个超链接注释?

http://www.ctan.org/tex-archive/macros/latex/contrib/hyperref/已将此说明复制如下:

amsmath
-------------
环境equationeqnarray支持得不是很好。例如,可能存在间距问题(eqnarray无论如何都不推荐,请参阅 CTAN:info/l2tabu/,的情况equation不清楚,因为没有人有兴趣调查)。考虑使用包amsmath提供的环境,例如gatherequation环境equation甚至可以重新定义为使用 gather:

\usepackage{amsmath}
\let\equation\gather
\let\endequation\endgather`

然而,gatherequation环境有间距差异,正如 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

相关内容