阵列单元之间的线

阵列单元之间的线

我正在寻找一种自然的方法来选择性地在数组的单元之间添加水平和垂直线。

这是一个例子。

 +-----------+
 | 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 等“未受影响”

C

\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}

在此处输入图片描述

这是由https://www.tablesgenerator.com

在此处输入图片描述

答案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

nicematrixSimon 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}

上述代码的输出

相关内容