![表格中跨多行的括号和水平对齐](https://linux22.com/image/265427/%E8%A1%A8%E6%A0%BC%E4%B8%AD%E8%B7%A8%E5%A4%9A%E8%A1%8C%E7%9A%84%E6%8B%AC%E5%8F%B7%E5%92%8C%E6%B0%B4%E5%B9%B3%E5%AF%B9%E9%BD%90.png)
我是一名初学者,尝试在表格内做一个跨越多行的支架。
我认为实现此目的的最佳方法是创建一个两行表格环境,并在多行内为下一行创建一个数组环境。我执行此操作的代码如下:
\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
进行实际绘制。
笔记:
这确实需要两次运行。第一次确定位置,第二次进行绘图。
来自
\tikzmark
在正文旁边添加大括号。
代码:
\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}