表格中跨多行的括号和水平对齐

表格中跨多行的括号和水平对齐

我是一名初学者,尝试在表格内做一个跨越多行的支架。

我认为实现此目的的最佳方法是创建一个两行表格环境,并在多行内为下一行创建一个数组环境。我执行此操作的代码如下:

\begin{tabular}{ l c r }
$T=0$ & $T=1$ & $T=2$ \\
$-1$ & \multicolumn{2}{l}{$\left\{ 
\begin{array}{l l}
0 & R\\
1 & 0 \\
\end{array} \right.$} \\
\end{tabular}

现在,结果看起来不太像我想要的,因为数组块的最后一列与表的最后一列不对齐(... $T=2$)。我总是可以使用将它们向左推一点~~~,但有没有更简单、更优雅的方式来获得类似的结果?

答案1

对于这种东西我发现最好使用\tikzmark

在此处输入图片描述

我不确定您想要将括号放在哪里,所以下面的括号可能不是您想要的位置。但请像平常一样制作表格并将文本放在正确的位置。包括和\tikzmark{<nameA>}\tikzmark{<nameB>}标记括号两个端点的位置。然后提供这两个标记的名称以\DrawVerticalBrace进行实际绘制。

笔记:

代码:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc,decorations.pathreplacing}

\newcommand{\tikzmark}[1]{%
  \tikz[overlay,remember picture,baseline] \node [anchor=base] (#1) {};}


\newcommand{\DrawVerticalBrace}[3][]{%
    % [<draw options>]{<mark>}{<mark>}
    \begin{tikzpicture}[overlay,remember picture]
        \draw[decorate,decoration={brace,amplitude=1ex}, #1] 
            ($(#3)+(0.0em,-0.5ex)$) to
            ($(#2)+(0.0em,+1.7ex)$);%
    \end{tikzpicture}%
}

\begin{document}
\begin{tabular}{ l c r }
   $T=0$ & $T=1$ & $T=2$ \\
   $-1$ & \multicolumn{2}{l}{$
   \begin{array}{l l}
     \tikzmark{top}0 & R\\
     \tikzmark{bot}1 & 0
   \end{array} $}
\end{tabular}
\DrawVerticalBrace[red, thick]{top}{bot}%
\end{document}

答案2

{NiceTabular}的环境与经典环境(包的)nicematrix类似,但增加了一些功能,包括添加垂直括号的工具。{tabular}array

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

$\begin{NiceArray}{lcl}
  T=0             & T=1 & T=2 \\
  \Block{2-1}{-1} & 0   & R   \\
                  & 1   & 0 
\CodeAfter
  \SubMatrix{\{}{2-2}{3-2}{.}
\end{NiceArray}$

\vspace{2cm}

$\begin{NiceArray}{lcl}
  T=0             & T=1 & T=2 \\
  \Block{2-1}{-1} & 0   & R   \\
                  & 1   & 0 
\CodeAfter
  \SubMatrix{\{}{2-2}{3-2}{.}[slim]
\end{NiceArray}$

\end{document}

上述代码的输出

相关内容