我有一张表格,其中有一个标题行,我想将其内容加粗并居中。我还想在整个表格的每对列之间设置垂直线。
我喜欢为此创建一个宏的解决方案,如这个答案为了创建仅使用粗体和居中的标题的表格。这让我想到了这个 MWE:
\documentclass{article}
\newcommand*{\thead}[1]{\multicolumn{1}{c|}{\bfseries #1}}
\begin{document}
\begin{tabular}{ l | l }
% Header row
\thead{Left Header} & \thead{Right Header} \\
% Non-header rows. Long cell so we can see centering working
Top Left & Top Right \\
Bottom Left & Bottom Right is looooooooong
\end{tabular}
\end{document}
除了“右标题”右侧任性的垂直规则外,一切看起来都很好。
我知道我可以为该行中的最后一个标题创建一个专用的宏,如下所示:
\newcommand*{\thead}[1]{\multicolumn{1}{c|}{\bfseries #1}}
\newcommand*{\theadlast}[1]{\multicolumn{1}{c}{\bfseries #1}}
但我希望调用的命令在行中尽可能统一...理想情况下,每列都使用相同的命令,参数或命令没有任何变化。有没有合理的方法可以做到这一点?
笔记:我试图坚持使用内置tabular
加上array
和包;我试图了解如何在不借助附加包的情况下tabularx
定制内置环境。tabular
答案1
您可以使用无限胶水来覆盖默认添加的胶水:
\documentclass{article}
\newcommand*{\thead}[1]{%
\hspace*{0pt plus 1filll}% very infinite glue
\bfseries % set boldface
\ignorespaces % emulate tabular
#1% the actual entry
\unskip % emulate tabular
\hspace*{0pt plus 1filll}% very infinite glue
}
\begin{document}
\begin{tabular}{ l | l }
% Header row
\thead{Left Header} & \thead{Right Header} \\
% Non-header rows. Long cell so we can see centering working
Top Left & Top Right \\
Bottom Left & Bottom Right is looooooooong
\end{tabular}
\end{document}
当然最简单的方法就是避免垂直规则。