如何在两边写两个*未对齐*的多行括号

如何在两边写两个*未对齐*的多行括号

我有一个关于 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。此外,由于 arraytabular环境重新定义了\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。最外面的 设置为三列,用于“容纳”三个水平部分。每个水平部分由行,但左侧和右侧部分的一些单元格(构造为嵌套的arrays,每个单元格由一列组成)是空的。该指令\null用于创建空单元格。

中间部分目前设置为 atabular而不是 an,array因为它似乎主要包含文本。如果这不正确,即如果它也应该主要包含数学,那么您也可以array对中间部分使用环境。相反,如果左侧和右侧部分主要包含文本,您可能希望使用tabulars 而不是arrays 来定义它们的布局。

在此处输入图片描述

\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}

相关内容