表格第一行与后续行的对齐方式不同

表格第一行与后续行的对齐方式不同

例如,是否可以将表格的第一行与其他行的对齐方式不同?也许有办法将两个表格合并成一个表格?MWE:

\documentclass{article}
\begin{document}

\begin{table}
  \begin{tabular}{| c | c | c | c |}
    \hline
    & \textbf{S1} & \textbf{S2} & \textbf{S3} \\
    \hline
    \textbf{D1} & 4217 & 5821 & 1102 \\
    \textbf{D2} & 3679 & 5089 & 991 \\
    \textbf{D3} & 2589 & 3301 & 604 \\
    \textbf{D4} & 1418 & 1722 & 294 \\
    \hline
  \end{tabular}
\end{table}

\end{document}

答案1

对齐小表格标题行的标准方法是使用命令\multicolumn,该命令允许您覆盖每行跨度的列规范。在此示例中,我使用了包booktabs,对于任何专业的表格来说,它都是强烈推荐的。

\documentclass{article}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{lrp{1in}}
\toprule
\multicolumn{1}{c}{A} & \multicolumn{1}{c}{B} & \multicolumn{1}{c}{C}\\
\midrule
left & right & 1 inch\\
l & r & foo\\
\bottomrule
\end{tabular}
\end{document}

代码输出

有关标题行的一些更奇特的想法,请参阅将表格第一行全部设为粗体

答案2

这与发布的内容略有不同将表格第一行全部设为粗体

tabular环境是容易地按列格式化。按行格式化则不然。不过,还是有办法解决的。下面是一次尝试。

您可以使用\if...条件来区分标题行和非标题行。\newif\headerrow定义条件\ifheaderrow,该条件可以为真 ( \headerrowtrue) 或假 ( \headerrowfalse)。随后,您可以根据此条件借助array包裹

在此处输入图片描述

\documentclass{article}
\usepackage{array}% http://ctan.org/pkg/array
\newif\ifheaderrow
\newcolumntype{C}{>{\ifheaderrow\bfseries\fi}c}
\begin{document}
\begin{table}
  \global\headerrowtrue
  \begin{tabular}{|>{\bfseries}c | *{3}{C|}}
    \hline
    & S1 & S2 & S3 \\ 
    \hline \global\headerrowfalse
     D1 & 4217 & 5821 & 1102 \\
    D2 & 3679 & 5089 & 991 \\
    D3 & 2589 & 3301 & 604 \\
    D4 & 1418 & 1722 & 294 \\
    \hline
  \end{tabular}
\end{table}

\end{document}​

\headerrowfalse必须重置\global,因为否则修改只会在组内(即调用它的单元格内)有效。

答案3

十一年后……

  • 通过使用makecell包:
\documentclass{article}
\usepackage{booktabs,
            makecell} % for `thead` command
\renewcommand\theadfont{}
\begin{document}
\begin{tabular}{lrp{1in}}
\toprule
\thead{A} & \thead{B} & \thead{C}\\
\midrule
left & right & 1 inch\\
l & r & foo\\
\bottomrule
\end{tabular}
\end{document}

在此处输入图片描述

或者

\documentclass{article}
\usepackage{booktabs,
            makecell}
\renewcommand\theadfont{\normalsize\bfseries}
\begin{document}
\begin{tabular}{lrp{1in}}
\toprule
\thead{A} & \thead{B} & \thead{C}\\
\midrule
left & right & 1 inch\\
l & r & foo\\
\bottomrule
\end{tabular}
\end{document}

在此处输入图片描述

  • 今天有人给我考虑新颖的表格包tabularray
\documentclass{article}
\usepackage{tabularray}
\UseTblrLibrary{booktabs}

\begin{document}
\begin{tblr}{colspec = {l r Q[l, wd=1in]},
             row{1} = {c, font=\bfseries}
             }
    \toprule
A       & B     & C         \\
    \midrule
left    & right & 1 inch    \\
l       & r     & foo       \\
    \bottomrule
\end{tblr}
\end{document}

结果与第二个示例相同。

相关内容