混合表格边框

混合表格边框

我正在尝试绘制一个表格,其中有些线条有(垂直)边框,有些线条没有。我找不到令人满意的方法来做到这一点。

水平边框显然不是问题,因为我可以决定在哪里需要\hline,但垂直边框似乎是在整个环境的参数中固定的tabular

我能找到的最好的方法是使用multicolumn,但我猜这不是正确的方法,因为它的真正目的是合并单元格。

以下是我目前所做的:

\begin{tabular}{ cccccccc }
    \hline
    \multicolumn{1}{|c|}{7} &
    \multicolumn{1}{|c|}{16} &
    \multicolumn{1}{|c|}{3} &
    \multicolumn{1}{|c|}{-1} &
    \multicolumn{1}{|c|}{9} &
    \multicolumn{1}{|c|}{32} &
    \multicolumn{1}{|c|}{4} &
    \multicolumn{1}{|c|}{2}\\
    \hline
    0 & 1 & 2 & 3 & 4 & 5 & 6 & 7\\
\end{tabular}

我想做的事

这个示例代码确实产生了我需要的布局,但我确信这不是应该做的方式。

总结:我想要制作一个表格,其中第一行有水平和垂直边框,而第二行根本没有任何边框。

答案1

您几乎已经做到了正确的方式。如果您想要更短的代码,您可以定义一个命令来替换所有这些\multicolumns。以下是执行此操作的方法,并对表格进行了一些小改进:

\documentclass{book}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{array}
\usepackage{xparse}
\DeclareExpandableDocumentCommand\fcell{O{c}m}{\multicolumn{1}{>{$}#1<{$}|}{#2}}

\begin{document}

\renewcommand\arraystretch{1.25}
\begin{tabular}{*{8}{>{$}c<{$}}}
    \hline
    \multicolumn{1}{|c|}{7} & \fcell{16} & \fcell{3} & \fcell{-1} & \fcell{9} & \fcell{32} & \fcell{4} & \fcell{2}\\
    \hline
    0 & 1 & 2 & 3 & 4 & 5 & 6 & 7\\
\end{tabular}

\end{document} 

在此处输入图片描述

答案2

你写了

...我能找到的最好的方法是使用\multicolumn,但我猜这不是正确的方法,因为它的真正目的是合并单元格。”

不完全是。我想说的\multicolumn实际目的:(a)合并单元格 - 您提到的目的 - 以及(b)更改列类型它的参数可以是单个单元格或单元格范围。

为了简化列类型之间的切换,设置快捷宏通常很方便。在下面的示例中,宏(\mr我想是“multicolumn-right”的缩写)就是为此目的设置的。

在此处输入图片描述

\documentclass{article}
\usepackage{array}
\newcommand{\mr}[1]{\multicolumn{1}{r|}{#1}}
\begin{document}
$\begin{array}{ *{8}{r} }
    \hline
    \multicolumn{1}{|r|}{7} 
      & \mr{16} & \mr{3} & \mr{-1} & \mr{9} & \mr{32} & \mr{4} & \mr{2}\\
    \hline
    0 & 1 & 2 & 3 & 4 & 5 & 6 & 7\\
    \hline
\end{array}$
\end{document}

答案3

nicematrix

\documentclass{article}
\usepackage{nicematrix}
\begin{document}
$\begin{NiceMatrix}[hvlines,last-row=2]
    7 & 16 & 3 & -1 & 9 & 32 & 4 & 2 \\
    0 & 1  & 2 & 3  & 4 & 5  & 6 & 7 \\
\end{NiceMatrix}$
\end{document}

上述代码的输出

相关内容