我正在寻找一种自然的方法来选择性地在数组的单元之间添加水平和垂直线。
这是一个例子。
+-----------+
| A B C | D E
| +-------+
| F G H | I J |
+-----------+ |
K L M | N O |
| |
P Q R | S T |
+-------+
我知道我可以使用多列和多行命令来实现这一点,但是它既不高效也不优雅,而且生成的代码看起来很糟糕。
由于每个相当现代的所见即所得文字处理器都有一种直观的方式来添加这些行,我相信 LaTeX 中也有一个同样舒适的方法。我只是还不知道。
答案1
该nicematrix
包与 tikz 结合得很好。
请注意,原始数据:A、B 等“未受影响”
\documentclass{article}
\usepackage{nicematrix}
\usepackage{tikz}
\begin{document}
\begin{NiceTabular}{ccccc}[cell-space-limits=5pt] % expand the cells
A&B&C&D&E\\
F&G&H&I&J\\
K&L&M&N&O\\
P&Q&R&S&T
\CodeAfter
\tikz \draw [dotted] (1-|1) -- (1-|4);
\tikz \draw [dotted] (3-|1) -- (3-|4);
\tikz \draw [dashed] (2-|4) -- (2-|6);
\tikz \draw [dashed] (5-|4) -- (5-|6);
\tikz \draw (1-|1) -- (3-|1);
\tikz \draw (1-|4) -- (6-|4);
\tikz \draw (2-|6) -- (5-|6);
\end{NiceTabular}
\end{document}
选择
搭配tabularray
包包,桌子的风格是完全 与内容分离。(表格数组)
还在表格行上方和下方添加额外的空间,以使表格看起来更好。
\documentclass{article}
\usepackage{tabularray}
\begin{document}
\begin{tblr}{% style definition
vline{1} = {1-2}{solid},
vline{4} = {1-5}{solid},
vline{6} = {2-5}{solid},
hline{1} = {1-3}{dotted},
hline{3} = {1-3}{dotted},
hline{2} = {4-6}{dashed},
hline{5} = {4-6}{dashed},
}
A&B&C&D&E\\
F&G&H&I&J\\
K&L&M&N&O\\
P&Q&R&S&T\\
\end{tblr}
\end{document}
答案2
下面的代码怎么样?
\documentclass{article}
\begin{document}
\begin{table}[h]
\begin{tabular}{ccc|cc}
\cline{1-3}
\multicolumn{1}{|c}{A} & B & C & D & E \\ \cline{4-5}
\multicolumn{1}{|c}{F} & G & H & I & \multicolumn{1}{c|}{J} \\ \cline{1-3}
K & L & M & N & \multicolumn{1}{c|}{O} \\
P & Q & R & S & \multicolumn{1}{c|}{T} \\ \cline{4-5}
\end{tabular}
\end{table}
\end{document}
答案3
使用hhline
和一些缩写。
\documentclass{article}
\usepackage{hhline}
\newcommand{\RR}[1]{\multicolumn{1}{c|}{#1}}
\newcommand{\LR}[1]{\multicolumn{1}{|c}{#1}}
\begin{document}
\begin{tabular}{ccccc}
\hhline{|---|~~}
\LR{A} & B & \RR{C} & D & E \\
\hhline{|~~~|--|}
\LR{F} & G & \RR{H} & I & \RR{J} \\
\hhline{|---|~~|}
K & L & \RR{M} & N & \RR{O} \\
P & Q & \RR{R} & S & \RR{T} \\
\hhline{~~~|--|}
\end{tabular}
\end{document}
在参数中,连\hhline
字符表示“此列中的规则”,波浪号表示“无规则”。其中|
之一指定“满足”规则。
答案4
nicematrix
Simon Dispa 给出了一个解决方案。这是另一个解决方案nicematrix
。它使用命令\Block
。该命令旨在合并单元格(水平和垂直),并将内容放在结果矩形的中心。但是,也可以在没有内容的情况下使用它,以便只使用键draw
。
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
\begin{NiceTabular}{ccccc}[cell-space-limits=5pt]
\Block[draw]{2-3}{}
A & B & C & D & E \\
F & G & H & \Block[draw]{3-2}{}
I & J \\
K & L & M & N & O \\
P & Q & R & S & T
\end{NiceTabular}
\end{document}