我想在方程式的几行周围加一个括号,并在其中添加一些文字。它应该看起来像这样:
因此:
文本的 也应该对齐=
。我尝试了以下代码:
\begin{equation}
\begin{aligned}
\text{text1:} & \left\{
\begin{aligned}
a &=b+c\\
d &=e+f
\end{aligned} \right.\\
\text{text2:} & x=y+z
\end{aligned}
\end{equation}
但这会导致:
所以问题是=
s 没有对齐。我尝试添加或删除一些&
,但没有实现完美对齐,我想避免使用\quad
或类似的肮脏解决方法。
你知道怎样实现这个目标吗?
感谢您的帮助
答案1
这里我使用了一种tabstackengine
方法,理论上它允许我精确控制项目之间的垂直距离。然而,1.53
在 stackgap 设置中应该,理论上,正好是 1.5。我认为问题与 的大小有关\left\{
,在默认的 LaTeX 字体中,它不是纯粹可扩展的(见附录)。
该\stackskip
定义是方程线之间基线跳跃的用户设置。
\documentclass{article}
\usepackage{tabstackengine}
\begin{document}
\begin{equation}
\def\stacktype{L}
\def\stackskip{\dimexpr1.3\baselineskip}
\setstackgap{L}{1.53\stackskip}
\Centerstack[l]{text1:$\left\{\rule{0pt}{\stackskip}\right.$\\text2:}
\setstackgap{L}{\stackskip}
\ensurestackMath{\alignCenterstack{
a =& b+c\\
d =& e+f\\
x =& y+z
}}
\end{equation}
\end{document}
方程编号将与第二行对齐:
附录
正如所怀疑的那样,问题出在括号大小上。如果我将括号垂直缩放到所需的精确大小,则无论设置的1.5
大小如何,对齐都可以与堆叠间隙中的值完美配合:\stackskip
\documentclass{article}
\usepackage{tabstackengine,scalerel}
\begin{document}
\begin{equation}
\def\stacktype{L}
\def\stackskip{\dimexpr1.3\baselineskip}
\setstackgap{L}{1.5\stackskip}
\Centerstack[l]{text1:{\raisebox{.5\dimexpr\ht\strutbox-\dp\strutbox}{%
\scaleto[2.5ex]{\raisebox{-.5\dimexpr\ht\strutbox-\dp\strutbox}{\Bigg\{}}{%
\dimexpr\stackskip+\baselineskip}}}\\text2:}
\setstackgap{L}{\stackskip}
\ensurestackMath{\alignCenterstack{
a =& b+c\\
d =& e+f\\
x =& y+z
}}
\end{equation}
\end{document}
答案2
blkarray
和 的解决方案eqparbox
:
\documentclass{article}
\usepackage{mathtools, blkarray}
\usepackage{eqparbox}
\begin{document}
\begin{equation}
\begin{blockarray}{lc@{{}={}}c}
\begin{block}{\BAmultirow{\eqboxwidth{T}}\{c@{{}={}}c}
\eqparbox{T}{Text text 1:} & a &b+c\\
& d &e+f \\
\end{block}
\begin{block}{lc@{{}={}}c}
\eqparbox{T}{Text 2:} & x &y+z \\
\end{block}
\end{blockarray}
\end{equation}
\end{document}