MathTools 中的垂直间距

MathTools 中的垂直间距

当使用mathtools该选项时showonlyrefs,我发现一个虚假的垂直间距。我发现了一个相似的问题,但问题有一个很长的方程,这不是我的情况。考虑 MWE

\documentclass{minimal}
\usepackage{mathtools}
\mathtoolsset{showonlyrefs}
\begin{document}
\begin{equation}
\label{eq}
a=b
\end{equation}
This is an equation %\refeq{eq}
\end{document}

如果取消注释\refeq,公式后面的垂直空间就会减少。有什么想法吗?

答案1

mathtools在1.23 版本发布之前,这里有一个补丁可以修复此问题

标签必须始终具有非零宽度,否则equation可能会添加空白行。但处理分支并未showonlyref涵盖所有情况

\usepackage{xpatch}

\MHInternalSyntaxOn

\xpatchcmd{\MT_extended_tagform:n}{
  \@ifundefined{MT_r_\df@label}{}
}{%
 \@ifundefined{MT_r_\df@label}{\kern1sp}
}{}{\typeout{patch failed}}

\xpatchcmd{\MT_extended_tagform:n}{
\@ifundefined{MT_r_\df@label}{\global\MH_set_boolean_F:n {manual_tag}}
}{%
\@ifundefined{MT_r_\df@label}{\global\MH_set_boolean_F:n {manual_tag}\kern1sp}
}{}{\typeout{patch failed}}

\MHInternalSyntaxOff

答案2

这可能是有问题的方程环境的一个“特性”(请参阅​​本网站上的多篇文章)。它在以下示例中消失了。

\documentclass{minimal}
\usepackage{mathtools}
\mathtoolsset{showonlyrefs}
\begin{document}
\begin{gather}
\label{eq}
a=b
\end{gather}
This is an equation %\refeq{eq}
\end{document}

答案3

这个autonum包似乎做得更好:

\documentclass{article}
\usepackage{amsmath}
\usepackage{autonum}

\usepackage{lipsum} % for mock text

\begin{document}

\lipsum*[2]
\begin{equation}
\label{eq1}
a=b
\end{equation}
This is an equation \eqref{eq1}.
\lipsum*[2]
\begin{equation}
\label{eq2}
a=b
\end{equation}
\lipsum[2]

\end{document}

在此处输入图片描述

答案4

使用align而不是equation

\begin{align}\label{eq}
    a &= b
\end{align}
This is an equation \refeq{eq}

相关内容