Когда используешь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}