如何使 minipage 中的公式间距保持一致,而不管水平对齐方式如何

如何使 minipage 中的公式间距保持一致,而不管水平对齐方式如何

在一般情况下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} 

相关内容