我想使用\SwapAboveDisplaySkip
该mathtools
包来修复align
环境上方的垂直空间。不幸的是,在加载包时这似乎不起作用autonum
:
! 放错了 \noalign。\SwapAboveDisplaySkip ->\noalign
autonum
需要加载,因为我只想在引用方程式时标记方程式(未在 MWE 中显示,但在文档中需要),并且mathtools
在加载包时该选项不起作用cleveref
。
这是一个平均能量损失会产生所述错误。删除\usepackage{autonum}
或\SwapAboveDisplaySkip
可消除错误。
\documentclass{scrreprt}
\usepackage{mathtools}
\usepackage{cleveref}
\usepackage{autonum}
\begin{document}
\chapter{Chapter}
\section{Section}
Text
\begin{align}
\SwapAboveDisplaySkip
A &= B
\end{align}
\end{document}
答案1
软件包autonum
补丁align
和其他环境在对齐开始后立即执行某些操作(危险),因此所使用的技巧mathtools
变得不可能。
从技术上讲,插入的代码autonum
是在比对的第一个单元格中执行的,但是\SwapAboveDisplayskip
必须是第一个项目,因为它使用了\noalign
。实际上它不必是第一个项目,只要它前面有其他\noalign
项目即可。
\documentclass{scrreprt}
\usepackage{mathtools}
\usepackage{cleveref}
\usepackage{autonum}
\makeatletter
% fix autonum code
\newtoggle{autonum@equation@toggle}
\def\autonum@startChangeEnvironment#1#2{%
\ifstrequal{#1}{split}{%
\GlobalLetLtxMacro\autonum@outerMathEnvironmentLabel\label
}{%
\autonum@saveSubcommands
}%
\ifstrequal{#1}{equation}{%
\global\toggletrue{autonum@equation@toggle}%
}{%
\global\togglefalse{autonum@equation@toggle}%
}%
\csuse{autonum@#1Old}#2%
\iftoggle{autonum@equation@toggle}{}{\noalign\bgroup}%
\ifstrequal{#1}{split}{%
\GlobalLetLtxMacro\label\autonum@outerMathEnvironmentLabel
}{%
\autonum@patchSubcommands{#1}%
}%
\iftoggle{autonum@equation@toggle}{}{\egroup}%
}
\makeatother
\begin{document}
\chapter{Chapter}
\section{Section}
Text Text Text Text Text
\begin{equation}
A = B
\end{equation}
Text Text Text Text Text
\begin{align}
\SwapAboveDisplaySkip
A &= B
\end{align}
Text Text Text Text Text
\begin{align}
A &= B
\end{align}
\end{document}
答案2
当然没有问题,使用showonlyrefs
布尔值mathtools
:
\documentclass{scrreprt}
\usepackage{mathtools}
\mathtoolsset{showonlyrefs}
\usepackage{cleveref}
\begin{document}
\chapter{Chapter}
\section{Section}
Text text text text text text%\useshortskip
\begin{align}
\SwapAboveDisplaySkip
A &= B
\end{align}
More text More text
\begin{align}
A &= B
\end{align}
Still more text
\end{document}
如果您确实需要使用autonum
,那么可以使用\useshortskip
fromnccmath
代替\SwapAboveDisplayskip
,如下所示:
\documentclass{scrreprt}
\usepackage{mathtools, nccmath}
\usepackage{cleveref}
\usepackage{autonum}
\begin{document}
\chapter{Chapter}
\section{Section}
Text text text text text text \useshortskip
\begin{align}
A &= B
\end{align}
More text More text
\begin{align}
A &= B
\end{align}
Still more text
\end{document}