我有一个表格环境,我想做的是在该环境中的单元格之间绘制一条路径 \emph{between}。本质上,我想显示矩阵的分区。
我的表格如下:
\begin{tabular}{c | c c c c c c}
& \textbf{$a_1$} & \textbf{$a_2$} & \textbf{$a_3$} & \textbf{$a_4$} & \textbf{$a_5$} & \textbf{$a_6$} \\
\hline
\textbf{$b_1$} & $a_1 b_1$ & $a_2 b_1$ & $a_3 b_1$ & $a_4 b_1$ & $a_5 b_1$ & $a_6 b_1$ \\
\textbf{$b_2$} & $a_1 b_2$ & $a_2 b_2$ & $a_3 b_2$ & $a_4 b_2$ & $a_5 b_2$ & $a_6 b_2$ \\
\textbf{$b_3$} & $a_1 b_3$ & $a_2 b_3$ & $a_3 b_3$ & $a_4 b_3$ & $a_5 b_3$ & $a_6 b_3$ \\
\textbf{$b_4$} & $a_1 b_4$ & $a_2 b_4$ & $a_3 b_4$ & $a_4 b_4$ & $a_5 b_4$ & $a_6 b_4$ \\
\textbf{$b_5$} & $a_1 b_5$ & $a_2 b_5$ & $a_3 b_5$ & $a_4 b_5$ & $a_5 b_5$ & $a_6 b_5$ \\
\textbf{$b_6$} & $a_1 b_6$ & $a_2 b_6$ & $a_3 b_6$ & $a_4 b_6$ & $a_5 b_6$ & $a_6 b_6$ \\
\end{tabular}
我想要做的是绘制分割这张表的线条。例如,我可能想要绘制一条呈对角线状的路径。这样一来,在 a4b1 的右侧、a4b1 的下方、a3b2 的右侧、a3b2 的下方、a2b3 的右侧、a2b3 的下方、a1b4 的右侧和 a1b4 的下方都会有一条线。
如何实现这一点?此外,是否有办法将某些线条变成虚线、点线等?这不是关键,但如果有就更好了。
答案1
以下是一些可能性:
为了定位短水平和垂直规则,我使用了\cline
和\multicolumn{1}{c|}
。我还使用 增加了行高\setlength\extrarowheight{3pt}
。
为了实现虚线,我arydshln
结合使用了该包\cdashline
和\multicolumn{1}{c:}
由于表格中的所有内容都处于数学模式,并且不受影响\textbf
,因此您也可以考虑使用array
环境。
\documentclass{article}
\usepackage{array}
\usepackage{arydshln}
\usepackage{bm}
\begin{document}
\setlength\extrarowheight{3pt}
\begin{tabular}{c | c c c c c c}
& $a_1$ & $a_2$ & $a_3$ & $a_4$ & $a_5$ & $a_6$ \\
\hline
$b_1$ & $a_1 b_1$ & $a_2 b_1$ & $a_3 b_1$ & \multicolumn{1}{ c|}{$a_4 b_1$} & $a_5 b_1$ & $a_6 b_1$ \\ \cline{5-5}
$b_2$ & $a_1 b_2$ & $a_2 b_2$ & \multicolumn{1}{ c|}{$a_3 b_2$} & $a_4 b_2$ & $a_5 b_2$ & $a_6 b_2$ \\
\cline{4-4}
$b_3$ & $a_1 b_3$ & \multicolumn{1}{ c|}{$a_2 b_3$} & $a_3 b_3$ & $a_4 b_3$ & $a_5 b_3$ & $a_6 b_3$ \\
\cline{3-3}
$b_4$ & \multicolumn{1}{ c|}{$a_1 b_4$} & $a_2 b_4$ & $a_3 b_4$ & $a_4 b_4$ & $a_5 b_4$ & $a_6 b_4$ \\
\cline{2-2}
$b_5$ & $a_1 b_5$ & $a_2 b_5$ & $a_3 b_5$ & $a_4 b_5$ & $a_5 b_5$ & $a_6 b_5$ \\
$b_6$ & $a_1 b_6$ & $a_2 b_6$ & $a_3 b_6$ & $a_4 b_6$ & $a_5 b_6$ & $a_6 b_6$ \\
\end{tabular}
\setlength\dashlinegap{0.75pt}
\begin{tabular}{c | c c c c c c}
& $a_1$ & $a_2$ & $a_3$ & $a_4$ & $a_5$ & $a_6$ \\
\hline
$b_1$ & $a_1 b_1$ & $a_2 b_1$ & $a_3 b_1$ & \multicolumn{1}{ c:}{$a_4 b_1$} & $a_5 b_1$ & $a_6 b_1$ \\ \cdashline{5-5}
$b_2$ & $a_1 b_2$ & $a_2 b_2$ & \multicolumn{1}{ c:}{$a_3 b_2$} & $a_4 b_2$ & $a_5 b_2$ & $a_6 b_2$ \\
\cdashline{4-4}
$b_3$ & $a_1 b_3$ & \multicolumn{1}{ c:}{$a_2 b_3$} & $a_3 b_3$ & $a_4 b_3$ & $a_5 b_3$ & $a_6 b_3$ \\
\cdashline{3-3}
$b_4$ & \multicolumn{1}{ c:}{$a_1 b_4$} & $a_2 b_4$ & $a_3 b_4$ & $a_4 b_4$ & $a_5 b_4$ & $a_6 b_4$ \\
\cdashline{2-2}
$b_5$ & $a_1 b_5$ & $a_2 b_5$ & $a_3 b_5$ & $a_4 b_5$ & $a_5 b_5$ & $a_6 b_5$ \\
$b_6$ & $a_1 b_6$ & $a_2 b_6$ & $a_3 b_6$ & $a_4 b_6$ & $a_5 b_6$ & $a_6 b_6$ \\
\end{tabular}
\[
\begin{array}{c | c c c c c c}
& \bm{a_1} & \bm{a_2} & \bm{a_3} & \bm{a_4} & \bm{a_5} & \bm{a_6} \\
\hline
\bm{b_1} & a_1 b_1 & a_2 b_1 & a_3 b_1 & \multicolumn{1}{c|}{ a_4 b_1 } & a_5 b_1 & a_6 b_1 \\ \cline{5-5}
\bm{b_2} & a_1 b_2 & a_2 b_2 & \multicolumn{1}{c|}{ a_3 b_2 } & a_4 b_2 & a_5 b_2 & a_6 b_2 \\
\cline{4-4}
\bm{b_3} & a_1 b_3 & \multicolumn{1}{c|}{ a_2 b_3 } & a_3 b_3 & a_4 b_3 & a_5 b_3 & a_6 b_3 \\
\cline{3-3}
\bm{b_4} & \multicolumn{1}{c|}{ a_1 b_4 } & a_2 b_4 & a_3 b_4 & a_4 b_4 & a_5 b_4 & a_6 b_4 \\
\cline{2-2}
\bm{ b_5 } & a_1 b_5 & a_2 b_5 & a_3 b_5 & a_4 b_5 & a_5 b_5 & a_6 b_5 \\
\bm{b_6} & a_1 b_6 & a_2 b_6 & a_3 b_6 & a_4 b_6 & a_5 b_6 & a_6 b_6 \\
\end{array}
\]
\end{document}
答案2
{NiceTabular}
这是使用 的解决方案nicematrix
。该环境类似于经典环境{tabular}
(包array
),但在单元格、行和列下创建 PGF/Tikz 节点。然后,可以使用 Tikz 用这些节点绘制您想要的任何规则。
\documentclass{article}
\usepackage{nicematrix}
\usepackage{tikz}
\begin{document}
\setlength\extrarowheight{3pt}
\begin{NiceTabular}{c | c c c c c c}
& $a_1$ & $a_2$ & $a_3$ & $a_4$ & $a_5$ & $a_6$ \\
\hline
$b_1$ & $a_1 b_1$ & $a_2 b_1$ & $a_3 b_1$ & $a_4 b_1$ & $a_5 b_1$ & $a_6 b_1$ \\
$b_2$ & $a_1 b_2$ & $a_2 b_2$ & $a_3 b_2$ & $a_4 b_2$ & $a_5 b_2$ & $a_6 b_2$ \\
$b_3$ & $a_1 b_3$ & $a_2 b_3$ & $a_3 b_3$ & $a_4 b_3$ & $a_5 b_3$ & $a_6 b_3$ \\
$b_4$ & $a_1 b_4$ & $a_2 b_4$ & $a_3 b_4$ & $a_4 b_4$ & $a_5 b_4$ & $a_6 b_4$ \\
$b_5$ & $a_1 b_5$ & $a_2 b_5$ & $a_3 b_5$ & $a_4 b_5$ & $a_5 b_5$ & $a_6 b_5$ \\
$b_6$ & $a_1 b_6$ & $a_2 b_6$ & $a_3 b_6$ & $a_4 b_6$ & $a_5 b_6$ & $a_6 b_6$ \\
\CodeAfter
\tikz \draw (6-|2) -| (5-|3) -| (4-|4) -| (3-|5) -| (2-|6) ;
\end{NiceTabular}
\end{document}