我正在尝试绘制一个表格,其中有些线条有(垂直)边框,有些线条没有。我找不到令人满意的方法来做到这一点。
水平边框显然不是问题,因为我可以决定在哪里需要\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
您几乎已经做到了正确的方式。如果您想要更短的代码,您可以定义一个命令来替换所有这些\multicolumn
s。以下是执行此操作的方法,并对表格进行了一些小改进:
\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}