![如何在两边写两个*未对齐*的多行括号](https://linux22.com/image/294998/%E5%A6%82%E4%BD%95%E5%9C%A8%E4%B8%A4%E8%BE%B9%E5%86%99%E4%B8%A4%E4%B8%AA*%E6%9C%AA%E5%AF%B9%E9%BD%90*%E7%9A%84%E5%A4%9A%E8%A1%8C%E6%8B%AC%E5%8F%B7.png)
我有一个关于 4 个条件的定理,其中 3 个在一种情况下是等价的,另外三个在另一种情况下是等价的,因此我想排版如下:
\begin{align*}
equivalent if B -{ condition (1) \
{ condition (2) \\ }- equivalent if A
{ condition (3) \\ }
condition (4) \ }
\end{align*}
我可以做一个支架或另一个支架,或者如果一个支架的范围延伸到另一个支架或与另一个支架不相交,则可以同时做两个支架。但在这种情况下我该怎么办?在没有太多黑客攻击的情况下是否可行?
非数学模式的替代方案怎么样?
答案1
\documentclass{article}
\usepackage{amsmath}
\usepackage{stackengine}
\setstackEOL{\#}
\setstackgap{L}{.7\baselineskip}
\begin{document}
\begin{equation*}
\begin{aligned}
&condition (1) &\\
equivalent\ if\ B - \smash{\left\{\Centerstack{\#\#\#}\right.} \, &condition (2) &\\
&condition (3) &\!\!\!\smash{\left\}\Centerstack{\#\#\#}\right.}- equivalent\ if\ A\\
& condition (4) &
\end{aligned}
\end{equation*}
\end{document}
作为后续工作,为了使条件彼此居中,我可以使用环境array
(或tabular
用于文本模式),而不是aligned
。此外,由于 array
和tabular
环境重新定义了\baselineskip
,因此必须将 stackgap 设置为明确的点值,而不是根据来定义它\baselineskip
。
\documentclass{article}
\usepackage{amsmath}
\usepackage{stackengine}
\setstackEOL{\#}
\setstackgap{L}{10pt}
\begin{document}
\begin{equation*}
\arraycolsep=.5ex
\renewcommand\arraystretch{1.2}
\begin{array}{rcl}
&condition\ (1) &\\
equivalent\ if\ B - \smash{\left\{\Centerstack{\#\#\#}\right.} &condition\ (2) &\\
&condition\ (3) &\smash{\left\}\Centerstack{\#\#\#}\right.}- equivalent\ if\ A\\
& centered\ condition\ (4) &
\end{array}
\end{equation*}
{\centering\renewcommand\arraystretch{1.2}
\tabcolsep=.5ex
\begin{tabular}{rcl}
&condition\ (1) &\\
equivalent\ if\ B - $\smash{\left\{\Centerstack{\#\#\#}\right.}$ &condition\ (2) &\\
&condition\ (3) &$\smash{\left\}\Centerstack{\#\#\#}\right.}$- equivalent\ if\ A\\
& centered\ condition\ (4) &
\end{tabular}\par}
\end{document}
答案2
这是一份工作\valign
!虽然我不认为这会给读者带来太多帮助。
\documentclass{article}
\begin{document}
\valign{#\cr
\vbox{\hbox{%
Equivalent if $A$
$\left\{\vphantom{\begin{tabular}{c} A\\B\\C\end{tabular}}\right.$%
}}
\vfill\cr
\hbox{\begin{tabular}{@{}c@{}}
Condition (1) \\
Condition (2) \\
Condition (3) \\
Condition (4)
\end{tabular}}\cr
\vfill
\vbox{\hbox{%
$\left.\vphantom{\begin{tabular}{c} A\\B\\C\end{tabular}}\right\}$
Equivalent if $B$%
}}\cr
}
\end{document}
答案3
array
这是一个仅使用s 来对齐三个部分的解决方案。最外面的array
。最外面的 设置为三列,用于“容纳”三个水平部分。每个水平部分由四行,但左侧和右侧部分的一些单元格(构造为嵌套的array
s,每个单元格由一列组成)是空的。该指令\null
用于创建空单元格。
中间部分目前设置为 atabular
而不是 an,array
因为它似乎主要包含文本。如果这不正确,即如果它也应该主要包含数学,那么您也可以array
对中间部分使用环境。相反,如果左侧和右侧部分主要包含文本,您可能希望使用tabular
s 而不是array
s 来定义它们的布局。
\documentclass{article}
\usepackage{amsmath} %% for "\text" macro
\begin{document}
\[
\begin{array}{c@{}c@{}c} %% outermost array: 3 centered columns
\begin{array}{c} \left. \begin{array}{@{}c} %% a pair of nested arrays
\null \\ \text{equivalent if $B$} \\ \null
\end{array} \right\{ \\ \null \end{array}
&
\begin{tabular}{c}
Condition (1)\\
Condition (2)\\
Condition (3)\\
Condition (4)\\
\end{tabular}
&
\begin{array}{c} %% another pair of nested arrays
\null \\
\left\} \begin{array}{c@{}}%
\null \\ \text{equivalent if $A$} \\ \null
\end{array} \right. \end{array}
\end{array}
\]
\end{document}