使用该选项时fleqn
,位于“长”文本行(我确切地说)之后的公式前的垂直间距\linewidth
设置不正确。见下文:
从mathmode
用户指南来看,这个问题可能可以通过\topsep
长度来解决。这是正确的做法吗?以下代码重现了这个问题:
\documentclass[12pt,fleqn]{book}
\usepackage{amsmath}
\usepackage{hyperref}
\begin{document}
\chapter{plo}
\section{plo}
eoiu oieu oeiuoe ueoi ueoi ueoiu eoiu oeu oe iupaêio umùaeoiuaem oeiu eoiu eoiu oeee.
eoiu oieu oeiuoe ueoi ueoi ueoiu eoiu oeu oe iupaêio umùaeoiuaemm
\begin{equation}
\cos\pi=-1
\end{equation}
eoiu oieu oeiuoe ueoi ueoi ueoiu eoiu oeu oe iupaêio umùaeoiuaem oeiu eoiu eoiu oeee.
eoiu oieu oeiuoe ueoi ueoi ueoiu eoiu oeu oe iupaêio umùae
\begin{equation}
\cos\pi=-1
\end{equation}
\end{document}
hyperref
、amsmath
和有问题fleqn
。删除其中一个即可解决问题。
答案1
第一个方程式之前的最后一行以空格结尾。这通常不是问题,因为 TeX 在显示的方程式之前以类似于段落结尾的方式结束文本。这意味着,最后一个空格被删除并\parfillskip
添加。
但是,包hyperref
必须在某个时间插入某个内容。它挂接到\refstepcounter
,在显示方程之前调用以更新方程计数器。hyperref
如果引用了方程,则使用它来添加作为链接目标所需的锚点。
但是,前一个文本的最后一个空格无法删除,因为 whatsit/anchor 位于中间,隐藏了空格。由于文本填充了前一行,因此结果是一个换行符,后面跟着一个带有锚点的不可见行。新行开头的空格被删除,但不可见的行仍然存在,占用空间。
作为快速解决方法,可以用百分号线删除空格:
...aemm%
\begin{equation}
更好的方法是自动删除空格并修复锚点的位置,因为上一行末尾的位置不是一个好位置。
\documentclass[12pt,fleqn]{book}
\usepackage{amsmath}
\usepackage[colorlinks]{hyperref}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\equation}{\incr@eqnum\mathdisplay@push}{%
\ifhmode
\unskip
\vadjust{%
\incr@eqnum
\global\let\gfix@incr@eqnum\incr@eqnum
\global\let\gfix@currentlabel\@currentlabel
\global\let\gfix@currentHref\@currentHref
}%
\let\incr@eqnum\gfix@incr@eqnum
\let\@currentlabel\gfix@currentlabel
\let\@currentHref\gfix@currentHref
\else
\incr@eqnum
\fi
\mathdisplay@push
}{}{}
\makeatother
\begin{document}
\chapter{plo}
\section{plo}
eoiu oieu oeiuoe ueoi ueoi ueoiu eoiu oeu oe iupaêio umùaeoiuaem oeiu eoiu
eoiu oeee.
eoiu oieu oeiuoe ueoi ueoi ueoiu eoiu oeu oe iupaêio umùaeoiuaemm
\begin{equation}
\label{eq:first}
\cos\pi=-1
\end{equation}
eoiu oieu oeiuoe ueoi ueoi ueoiu eoiu oeu oe iupaêio umùaeoiuaem oeiu eoiu
eoiu oeee.
eoiu oieu oeiuoe ueoi ueoi ueoiu eoiu oeu oe iupaêio umùae
\begin{equation}
\label{eq:second}
\cos\pi=-1
\end{equation}
Equations \ref{eq:first} and \ref{eq:second}.
\end{document}