我正在尝试创建一个包含如下公式的表格
\documentclass{article}
\usepackage{mathtools}
\begin{document}
\begin{center}
\begin{tabular}{ |c|c| }
\hline
cell1 & cell2 \\
\hline
\text{Some text}
\begin{math}
\begin{aligned}
\begin{dcases}
\text{Text1} & \boldsymbol{X1} = \boldsymbol{a1}+\boldsymbol{b1}\boldsymbol{Y1} \\
\text{Text2} & \boldsymbol{X2} = \boldsymbol{a2}+\boldsymbol{b2}\boldsymbol{Y2} \\
\text{Text3} & \boldsymbol{X3} = \boldsymbol{a3}+\boldsymbol{b3}\boldsymbol{Y3} \\
\text{Text4} & \boldsymbol{X4} = \boldsymbol{a4}+\boldsymbol{b4}\boldsymbol{Y4}
\end{dcases}
\end{aligned}
\end{math}
&
$\begin{array}{ll}
\text{Text5} & \boldsymbol{X5} = \boldsymbol{a5}+\boldsymbol{b5}\boldsymbol{Y5} \\
\text{Text4} & \boldsymbol{X6}=
\begin{aligned}
\begin{dcases}
\boldsymbol{a61}+\boldsymbol{b61}\boldsymbol{Y61} \\
\boldsymbol{a62}+\boldsymbol{b62}\boldsymbol{Y62}
\end{dcases}
\end{aligned} \\
\text{Text6} & \boldsymbol{X7} = \boldsymbol{a7}+\boldsymbol{b7}\boldsymbol{Y7} \\
\text{Text7} & \boldsymbol{X8} =
\begin{aligned}
\begin{dcases}
\boldsymbol{a81}+\boldsymbol{b81}\boldsymbol{Y81} \\
\boldsymbol{a82}+\boldsymbol{b82}\boldsymbol{Y82}
\end{dcases}
\end{aligned}
\end{array}$ \\
\hline
\end{tabular}
\end{center}
\end{document}
显然,这个表格看起来很丑。我需要对齐括号内的行,以便每一行都与下一列中的另一行相对应;text1 与 text5 等等:
我是 Latex 的新手,有人能帮我对齐这些文本以美化一下表格吗?也许有更好的包可以用于自动化这个操作?谢谢!
答案1
这是一个{NiceTabular}
使用 的解决方案nicematrix
。
\documentclass{article}
\usepackage{mathtools}
\usepackage{nicematrix}
\begin{document}
\begin{center}
\begin{NiceTabular}{|ccc|cl|}[cell-space-limits=6pt]
\Hline
\Block{1-3}{cell1} & & & \Block{1-2}{cell2} \\
\Hline
\RowStyle[cell-space-top-limit=5mm]{}
\Block{4-1}{Some text}
& Text1 & $\boldsymbol{X1} = \boldsymbol{a1}+\boldsymbol{b1}\boldsymbol{Y1}$
& Text5 & $\boldsymbol{X5} = \boldsymbol{a5}+\boldsymbol{b5}\boldsymbol{Y5}$ \\
& Text2 & $\boldsymbol{X2} = \boldsymbol{a2}+\boldsymbol{b2}\boldsymbol{Y2}$
& Text4 & $\boldsymbol{X6}=
\begin{aligned}
\begin{dcases}
\boldsymbol{a61}+\boldsymbol{b61}\boldsymbol{Y61} \\
\boldsymbol{a62}+\boldsymbol{b62}\boldsymbol{Y62}
\end{dcases}
\end{aligned}$ \\
& Text3 & $\boldsymbol{X3} = \boldsymbol{a3}+\boldsymbol{b3}\boldsymbol{Y3}$
& Text6 & $\boldsymbol{X7} = \boldsymbol{a7}+\boldsymbol{b7}\boldsymbol{Y7}$ \\
\RowStyle[cell-space-bottom-limit=5mm]{}
& Text4 & $\boldsymbol{X4} = \boldsymbol{a4}+\boldsymbol{b4}\boldsymbol{Y4}$
& Text7 & $\boldsymbol{X8} =
\begin{aligned}
\begin{dcases}
\boldsymbol{a81}+\boldsymbol{b81}\boldsymbol{Y81} \\
\boldsymbol{a82}+\boldsymbol{b82}\boldsymbol{Y82}
\end{dcases}
\end{aligned}$ \\
\Hline
\CodeAfter
\SubMatrix{\lbrace}{2-2}{5-2}{.}[extra-height = -5mm]
\end{NiceTabular}
\end{center}
\end{document}
垂直空间的调整(正如 OP 在评论中所要求的)有点棘手:命令\RowStyle[cell-space-top-limit=5mm]{}
和创建垂直空间以及命令的\RowStyle[cell-space-bottom-limit=5mm]{}
键调整括号的大小。[extra-height = -5mm]
\SubMatrix
您需要多次编译(因为nicematrix
在后台使用 PGF/Tikz 节点)。
答案2
首先,如果您想让事物保持一致,您可能需要将所有内容放在一起,这样,制作一个大表,其中每行包含两组表达式。
大花括号有点棘手。我想有一个比我更好的解决方案,例如使用 eg nicematrix
,我认为有人可能会提出那个解决方案,但目前下面的方法也有效。
\raisebox
将包含“一些文本”和括号的框的垂直尺寸减小到零。这样,当其内容降低到实现中间对齐的程度时,不会有任何内容被“推”下。如果您更改内容,则需要计算出新的数字。
\xmathstrut
是一个方便的宏,可以增加额外的垂直空间。如果没有它,最后一个规则dcases
就会太靠近底部规则
\documentclass{article}
\usepackage{array}
\usepackage{booktabs}
\usepackage{mathtools}
\begin{document}
\begin{table}[tbh]
\centering
\renewcommand*{\arraystretch}{1.5}
\begin{tabular}{r@{\;}c@{} r@{\;}>{\(}l<{\)} @{\qquad} r@{\;}>{\(}l<{\)}}
\toprule
& \multicolumn{3}{c}{cell1} & \multicolumn{2}{c}{cell2} \\
\midrule
\raisebox{-2.9\normalbaselineskip}[0pt][0pt]{Some text}
& \raisebox{-2.9\normalbaselineskip}[0pt][0pt]{
\(\left\{
\rule[-3.75\normalbaselineskip]{0pt}{7.5\normalbaselineskip}
\right.\)}
& Text1
& \boldsymbol{X1} = \boldsymbol{a1}+\boldsymbol{b1}\boldsymbol{Y1}
& Text5
& \boldsymbol{X5} = \boldsymbol{a5}+\boldsymbol{b5}\boldsymbol{Y5} \\
&
& Text2
& \boldsymbol{X2} = \boldsymbol{a2}+\boldsymbol{b2}\boldsymbol{Y2}
& Text4 & \boldsymbol{X6} = \begin{dcases}
\boldsymbol{a61}+\boldsymbol{b61}\boldsymbol{Y61} \\
\boldsymbol{a62}+\boldsymbol{b62}\boldsymbol{Y62}
\end{dcases} \\
&
& Text3 & \boldsymbol{X3} = \boldsymbol{a3}+\boldsymbol{b3}\boldsymbol{Y3}
& Text6 & \boldsymbol{X7} = \boldsymbol{a7}+\boldsymbol{b7}\boldsymbol{Y7} \\
&
& Text4 & \boldsymbol{X4} = \boldsymbol{a4}+\boldsymbol{b4}\boldsymbol{Y4}
& Text7 & \boldsymbol{X8} = \begin{dcases}
\boldsymbol{a81}+\boldsymbol{b81}\boldsymbol{Y81} \\
\boldsymbol{a82}+\boldsymbol{b82}\boldsymbol{Y82}
\end{dcases}\xmathstrut[1.25]{0} \\
\bottomrule
\end{tabular}
\caption{Table}\label{tab:table}
\end{table}
\end{document}