我想在一行文本中插入一个包含数学的大框,并将该框与主行的顶部对齐。奇怪的是,在下面的第一个示例中,参数“[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]
被忽略,只是无法按您希望的方式工作。如果您在 中添加更多文本,您会看到差异,因此minipage
minipage 有多个行。事实上,minipage 只有一行,因此b
和t
是相同的,并将框上的参考点与第一行的基线对齐。在数学表达式的情况下,表达式的基线是 的基线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
在显示器中设置环境。