控制仅包含数学的小页面的垂直对齐问题

控制仅包含数学的小页面的垂直对齐问题

我想在一行文本中插入一个包含数学的大框,并将该框与主行的顶部对齐。奇怪的是,在下面的第一个示例中,参数“[t]”被忽略(第二个示例按预期工作):

Beginning of line
\begin{minipage}[t]{40mm}\raggedright
$x = \begin{cases} 0 & \text{blah} \\ 1 & \text{blah} \end{cases}$
\end{minipage}
rest of line.

Beginning of line
\begin{minipage}[t]{4cm}\raggedright
(things work fine as long as the content is text)
\end{minipage}
rest of line here

答案1

(请始终发布显示所用软件包的完整文档,而不仅仅是片段)

不会[t]被忽略,只是无法按您希望的方式工作。如果您在 中添加更多文本,您会看到差异,因此minipageminipage 有多个行。事实上,minipage 只有一行,因此bt是相同的,并将框上的参考点与第一行的基线对齐。在数学表达式的情况下,表达式的基线是 的基线x

最简单的方法是在小页面的顶部放置一个(不可见的)额外行,以便页面与该行对齐,然后将数学向上移动一个基线进行补偿。

在此处输入图片描述

\documentclass{article}

\usepackage{amsmath}

\begin{document}

Beginning of line
\begin{minipage}[t]{40mm}\raggedright
\mbox{}\\[-\baselineskip]
$x = \begin{cases} 0 & \text{blah} \\ 1 & \text{blah} \end{cases}$
\end{minipage}
rest of line.

Beginning of line
\begin{minipage}[t]{4cm}\raggedright
(things work fine as long as the content is text)
\end{minipage}
rest of line here

\end{document}

答案2

环境的顶线cases(几乎)是括号的中心。

您可以定义一个新的环境:

\documentclass{article}
\usepackage{amsmath,calc,delarray}

\makeatletter
\newenvironment{topcases}[1][]
  {\def\topc@lhs{#1}\m@th
   \quad\begin{lrbox}{0}%
   $\let\@ifnextchar\new@ifnextchar
   \def\arraystretch{1.2}%
   \array[t]\{{@{}l@{\quad}l@{}}.}
  {\endarray$\end{lrbox}%
   \ifx\topc@lhs\@empty\else
     \sbox2{$\vcenter{\hbox{$\smash{\topc@lhs{}}\vphantom{=}$}}$}%
     \raisebox{-.5\dp0+.5\height}{\box2}%
   \fi
   \box0\quad
  }
\makeatother



\begin{document}
Beginning of line
\begin{topcases}[x=] 0 & \text{blah} \\ 1 & \text{blah} \end{topcases}
rest of line.

Beginning of line
\begin{topcases}[x=] \dfrac{1}{2} & \text{blah} \\[2ex] 1 & \text{blah} \end{topcases}
rest of line.
\end{document}

环境将我们必须从计算中排除的括号之前的部分作为可选参数。

在此处输入图片描述

但结果似乎不太好。我更喜欢cases在显示器中设置环境。

相关内容