我想制作一个表格并使用粗线突出显示其中的某个区域,如下所示。
为了重现上面的表格,我使用了tabu
包来制作粗水平线和垂直线。但是,LaTeX 中没有任何命令可以制作跨越给定行的粗垂直线。基本上,我正在寻找一个垂直版本\tabucline
。这是我的代码和输出:
\begin{table}[h!]
\centering
\renewcommand{\arraystretch}{1.75}
\begin{tabu}{|[1.5pt]c|c|c|c|c|c|c|c|}
\tabucline[1.5pt]{-}
(-4, -4) & (-3, -4) & (-2, -4) & (-1, -4) & (0, -4) & (1, -4) & (2, -4) & (3, -4) \\
\hline
(-4, -3) & (-3, -3) & (-2, -3) & (-1, -3) & (0, -3) & (1, -3) & (2, -3) & (3, -3) \\
\hline
(-4, -2) & (-3, -2) & (-2, -2) & (-1, -2) & (0, -2) & (1, -2) & (2, -2) & (3, -2) \\
\hline
(-4, -1) & (-3, -1) & (-2, -1) & (-1, -1) & (0, -1) & (1, -1) & (2, -1) & (3, -1) \\
\tabucline[1.5pt]{5-8}\hline
(-4, 0) & (-3, 0) & (-2, 0) & (-1, 0) & (0, 0) & (1, 0) & (2, 0) & (3, 0) \\
\tabucline[1.5pt]{2-4}\hline
(-4, 1) & (-3, 1) & (-2, 1) & (-1, 1) & (0, 1) & (1, 1) & (2, 1) & (3, 1) \\
\hline
(-4, 2) & (-3, 2) & (-2, 2) & (-1, 2) & (0, 2) & (1, 2) & (2, 2) & (3, 2) \\
\hline
(-4, 3) & (-3, 3) & (-2, 3) & (-1, 3) & (0, 3) & (1, 3) & (2, 3) & (3, 3) \\
\hline\tabucline[1.5pt]{1-1}
\end{tabu}
\end{table}
答案1
- 不要使用
tabu
。它有缺陷,而且没有维护 - 相反,我建议使用(相对较新的)包
tabularray
- 使用它您可以定义表格序言中的所有水平线和垂直线。
\documentclass{article}
\usepackage{tabularray}
\begin{document}
\begin{table}[ht]
\centering
\begin{tblr}{hlines = {0.1pt}, vlines = {0.1pt},
hline{1} = 1pt,
hline{5}={5-Z}{1pt}, hline{6}={2-4}{1pt}, hline{Z}={1}{1pt},
vline{1}={1pt},
vline{2}={6-Z}{1pt}, vline{5}={5}{1pt}, vline{Z}={1-4}{1pt},
colspec = {*{8}{Q[c, $]}},
}
(-4, -4) & (-3, -4) & (-2, -4) & (-1, -4) & (0, -4) & (1, -4) & (2, -4) & (3, -4) \\
(-4, -3) & (-3, -3) & (-2, -3) & (-1, -3) & (0, -3) & (1, -3) & (2, -3) & (3, -3) \\
(-4, -2) & (-3, -2) & (-2, -2) & (-1, -2) & (0, -2) & (1, -2) & (2, -2) & (3, -2) \\
(-4, -1) & (-3, -1) & (-2, -1) & (-1, -1) & (0, -1) & (1, -1) & (2, -1) & (3, -1) \\
(-4, 0) & (-3, 0) & (-2, 0) & (-1, 0) & (0, 0) & (1, 0) & (2, 0) & (3, 0) \\
(-4, 1) & (-3, 1) & (-2, 1) & (-1, 1) & (0, 1) & (1, 1) & (2, 1) & (3, 1) \\
(-4, 2) & (-3, 2) & (-2, 2) & (-1, 2) & (0, 2) & (1, 2) & (2, 2) & (3, 2) \\
(-4, 3) & (-3, 3) & (-2, 3) & (-1, 3) & (0, 3) & (1, 3) & (2, 3) & (3, 3) \\
\end{tblr}
\end{table}
\end{document}
tabularray
注意:上面的 MWE 使用包版本 2022C进行测试。
答案2
这是一个{NiceTabular}
使用 的解决方案nicematrix
。
在这个环境中,关键的hvlines
是绘制所有的规则。
nicematrix
但是,仍然可以使用在行、列和单元格下创建的 Tikz 节点使用 Tikz 绘制所需的任何规则。
\documentclass{article}
\usepackage{nicematrix,tikz}
\begin{document}
\begin{table}[ht]
\centering
\begin{NiceTabular}[hvlines]{cccccccc}
(-4, -4) & (-3, -4) & (-2, -4) & (-1, -4) & (0, -4) & (1, -4) & (2, -4) & (3, -4) \\
(-4, -3) & (-3, -3) & (-2, -3) & (-1, -3) & (0, -3) & (1, -3) & (2, -3) & (3, -3) \\
(-4, -2) & (-3, -2) & (-2, -2) & (-1, -2) & (0, -2) & (1, -2) & (2, -2) & (3, -2) \\
(-4, -1) & (-3, -1) & (-2, -1) & (-1, -1) & (0, -1) & (1, -1) & (2, -1) & (3, -1) \\
(-4, 0) & (-3, 0) & (-2, 0) & (-1, 0) & (0, 0) & (1, 0) & (2, 0) & (3, 0) \\
(-4, 1) & (-3, 1) & (-2, 1) & (-1, 1) & (0, 1) & (1, 1) & (2, 1) & (3, 1) \\
(-4, 2) & (-3, 2) & (-2, 2) & (-1, 2) & (0, 2) & (1, 2) & (2, 2) & (3, 2) \\
(-4, 3) & (-3, 3) & (-2, 3) & (-1, 3) & (0, 3) & (1, 3) & (2, 3) & (3, 3) \\
\CodeAfter
\tikz \draw [very thick] (1-|1) |- (9-|2) |- (5-|5) |- (4-|last) |- (1-|1) -- cycle ;
\end{NiceTabular}
\end{table}
\end{document}
您需要多次编译(因为 PGF/Tikz 节点)。