在一般情况下amsmath
,当我在小页面中包装显示方程式时,\abovedisplayskip
如果方程式出现在小页面的开头,则它们会没有任何间距,但如果方程式出现在中间,则会出现普通间距。这是我想要的行为。
我遇到的问题来自于尝试为 minipage 配置对齐方式。如果我使用\raggedright
(或\RaggedRight
),垂直间距将继续按预期工作。但是,如果我使用命令启动 minipage ,则会插入\centering
全部的。\abovedisplayskip
我意识到在显示数学之前发出居中命令似乎有些多余,但我正在尝试设置宏,以便在各种情况下为用户做正确的事情。那么,如果恰好是方程式之前的设置,我该如何设置才能不出现垂直空间呢\centering
?
\documentclass{scrreprt}
\usepackage{multicol}
\usepackage{tikz}
\usepackage{mathtools}
\raggedcolumns
\newcommand{\myformat}{\raggedright}
\newcommand{\qbar}{%
\noindent\begin{tikzpicture}
\node [fill=black!30,minimum width=\linewidth] {};
\end{tikzpicture}
\par\addvspace{4pt}
}
\newcommand{\stimulus}[1]{
\noindent\begin{minipage}{\linewidth}
\myformat#1
\end{minipage}
}
\begin{document}
\begin{multicols}{2}
ragged right
\qbar
\stimulus{Here is some random text with a
\[y = \frac{3}{2}x^2 + 2x -10\]
display equation in the middle of it.}
\qbar
\stimulus{\[y = \frac{3}{2}x^2 + 2x -10\]
\noindent Here is some random text with a
display equation above it.}
\columnbreak
\renewcommand{\myformat}{\centering}
centering
\qbar
\stimulus{Here is some random text with a
\[y = \frac{3}{2}x^2 + 2x -10\]
display equation in the middle of it.}
\qbar
\stimulus{\[y = \frac{3}{2}x^2 + 2x -10\]
\noindent Here is some random text with a
display equation above it.}
\end{multicols}
\end{document}
简而言之,我希望右下角的小页面与其左侧的小页面具有相同的垂直对齐方式。
答案1
基本上,TeX 不支持以显示数学开始一个段落,如果您尝试这样做,它总是强制在显示屏上方出现一个虚假的“白色”段落,看起来像垂直空间,但实际上是一个段落行,因此不会像页面开头的空白那样被丢弃。
在通常情况下,白线只有缩进框和\parfillskip
粘连,因此显示以 开始,\abovedisplayshortskip
但\centering
非零\leftskip
意味着白线被视为长,因此显示前面是(通常较大)\abovedisplayskip
。
如果使用前缀,则可以获得更一致的间距\noindent
\documentclass{scrreprt}
\usepackage{multicol}
\usepackage{tikz}
\usepackage{mathtools}
\showoutput
\raggedcolumns
\newcommand{\myformat}{\raggedright}
\newcommand{\qbar}{%
\noindent\begin{tikzpicture}
\node [fill=black!30,minimum width=\linewidth] {};
\end{tikzpicture}
\par\addvspace{4pt}
}
\newcommand{\stimulus}[1]{%
\noindent\setbox0\hbox{\begin{minipage}{\linewidth}
\myformat#1
\end{minipage}}\showbox0\box0
}
\begin{document}
\begin{multicols}{2}
ragged right
\qbar
\stimulus{\noindent\[y = \frac{3}{2}x^2 + 2x -10\]
\noindent Here is some random text with a
display equation above it.}
\columnbreak
\renewcommand{\myformat}{\centering}
centering
\qbar
\stimulus{\noindent\[y = \frac{3}{2}x^2 + 2x -10\]
\noindent Here is some random text with a
display equation above it.}
\end{multicols}
\end{document}
答案2
您可以使用以下\useshortskip
命令nccmath
:
\documentclass{scrreprt}
\usepackage{multicol}
\usepackage{tikz}
\usepackage{mathtools, nccmath}
\raggedcolumns
\newcommand{\myformat}{\raggedright}
\newcommand{\qbar}{%
\noindent\begin{tikzpicture}
\node [fill=black!30,minimum width=\linewidth] {};
\end{tikzpicture}
\par\addvspace{4pt}
}
\newcommand{\stimulus}[1]{
\noindent\begin{minipage}{\linewidth}
\myformat#1
\end{minipage}
}
\begin{document}
\begin{multicols}{2}
ragged right
\qbar
\stimulus{Here is some random text with a
\[y = \frac{3}{2}x^2 + 2x -10\]
display equation in the middle of it.}
\qbar
\stimulus{\[y = \frac{3}{2}x^2 + 2x -10\]%
\noindent Here is some random text with a
display equation above it.}
\columnbreak
\renewcommand{\myformat}{\centering}
centering
\qbar
\stimulus{Here is some random text with a
\[y = \frac{3}{2}x^2 + 2x -10\]
display equation in the middle of it.}
\qbar
\stimulus{ \useshortskip \[y = \frac{3}{2}x^2 + 2x -10\]
\noindent Here is some random text with a
display equation above it.}
\end{multicols}
\end{document}