这可能是一个简单的修复,但我找不到方法。(图片和 MWE 在最后)
我有一个命令
\newcommand{\glsbi}[1]{$\left| \quad \begin{aligned}#1\end{aligned}\quad \right|$}
能够将方程系统包含在内\left|
并\right|
位于同一行。
当这样定义时,它可以工作,但是它会将方程系统与它之前的文本垂直居中。
当我将命令更改为
\newcommand{\glsbt}[1]{$\left| \quad \begin{aligned}[t]#1\end{aligned}\quad \right|$}
它将第一个等式与文本对齐,但是\left|
和\right|
上升得太远了。
我怎样才能使\left|
和\right|
具有与第一个命令相同的高度,但具有第二个命令的垂直对齐?
梅威瑟:
\documentclass{article}
\usepackage{amsmath}
\newcommand{\glsbi}[1]{$\left| \quad \begin{aligned}#1\end{aligned}\quad \right|$}
\newcommand{\glsbt}[1]{$\left| \quad \begin{aligned}[t]#1\end{aligned}\quad \right|$}
\begin{document}
Works as intended: \glsbi{x &= y \\ x &= 2y + 3}\\[1cm]
Works not as intended: \glsbt{x &= y \\ x &= 2y + 3}
\end{document}
图片:
答案1
一些盒子操作:
\documentclass{article}
\usepackage{amsmath}
\newcommand{\glsbi}[1]{$\left| \quad \begin{aligned}#1\end{aligned} \quad \right|$}
\makeatletter
\newcommand{\glsbt}[1]{%
\sbox\z@{$\begin{aligned}#1\end{aligned}$}%
\sbox\tw@{$\begin{aligned}[t]#1\end{aligned}$}%
\raisebox{\dimexpr\dp\z@-\dp\tw@\relax}{$\left| \quad \copy\z@ \quad \right|$}%
}
\makeatother
\begin{document}
Works as intended: \glsbi{x &= y \\ x &= 2y + 3}\\[1cm]
Works also as intended: \glsbt{x &= y \\ x &= 2y + 3}
\end{document}
答案2
为了提出与张瑞熙的精彩回答不同的策略,您可以使用delarray
:
\documentclass{article}
\usepackage{amsmath}
\usepackage{delarray}
\newcommand{\glsbi}[1]{$\left|\quad\begin{aligned}#1\end{aligned}\quad\right|$}
\newcommand{\glsbt}[1]{%
$\begin{array}[t]|{@{\quad}c@{\quad}}|
\begin{aligned}[t]#1\end{aligned}
\end{array}$%
}
\begin{document}
Works as intended: \glsbi{x &= y \\ x &= 2y + 3}
\bigskip
Works as intended: \glsbt{x &= y \\ x &= 2y + 3 }
\end{document}