将表格第一行全部设为粗体

将表格第一行全部设为粗体

我正在尝试做一些我认为相对简单但似乎相当困难的事情。我有一张包含多列的表格,我想让所有标题都以粗体文本显示。显然我可以\textbf依次添加每个标题,但我认为一定有更好的方法来实现这一点(尤其是对于包含多列的表格)。

据我所知,使用纯 LaTeX 无法很好地完成此操作。是否有任何软件包可以使此操作(以及可能的其他与表格相关的问题)更容易?

答案1

以 apan 的评论为例:

\documentclass{article}
\usepackage{array}
\newcolumntype{$}{>{\global\let\currentrowstyle\relax}}
\newcolumntype{^}{>{\currentrowstyle}}
\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}%
  #1\ignorespaces
}

\begin{document}
\begin{tabular}{$l^c^r}
\rowstyle{\bfseries}
a & a & a \\
b & b & b \\
c & c & c \\
\end{tabular}
\end{document}

得出:

在此处输入图片描述

当然,您可以为列类型选择不同的标记。


为了解释发生了什么,第一个“列”是类型$(可以是序言中不需要的任何符号)。这只是设置\currentrowstyle为不执行任何操作,这意味着在每一行中,除非发生其他事情,否则此命令将为无操作。第一个真实的列(此处l)将包含使其加粗的命令(如果需要),但其他列则不然。因此,它们前面带有^,这是用于应用 的另一种虚假列类型\currentrowstyle

在普通行中,\currentrowstyle因此以 开始,\relax并且永远不会改变,因此^不执行任何操作,行保持不变。但是,如果第一列设置\rowstyle,则将其保存为\currentrowstyle(对于后面的列)并应用(对于此列)。^然后将其插入到行中每列的开头,因此所有内容都为粗体。

(由于表格单元格形成组,因此所有操作都是全局的。)

答案2

这是我发现 ConTeXt 界面比 LaTeX 好得多的情况之一。要使表格的第一行加粗,你只需要

\setupTABLE[row][1][style=bold]

并且不会改变表格主体中的任何内容。因此,样式和呈现方式有明显的区分。最小示例:

\setupTABLE[row][1][style=bold]

\开始文本
\开始表
  \NC A \NC B \NC C \NC \NR
  \NC A \NC B \NC C \NC \NR
  \NC A \NC B \NC C \NC \NR
\停止表
\停止文本

答案3

对于多页表,除了锁步解决方案(来自英国常见问题),你也可以在环境中使用\rowfont命令longtabutabu包裹。

\documentclass{article}
\usepackage{longtable}
\usepackage{tabu}

\begin{document}

Some text.

\vspace{42\baselineskip}

\begin{longtabu}{lcr}
\rowfont{\bfseries}
a & a & a \\
b & b & b \\
c & c & c \\
\end{longtabu}

\end{document}

答案4

对于跨越多页的表格,只需合并array(如 Joseph Wright 的回答中所述)和longtable

\documentclass{article}

\usepackage{array}
\newcolumntype{$}{>{\global\let\currentrowstyle\relax}}
\newcolumntype{^}{>{\currentrowstyle}}
\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}%
  #1\ignorespaces
}
\usepackage{longtable}

\begin{document}

Some text.

\vspace{42\baselineskip}

\begin{longtable}{$l^c^r}
\rowstyle{\bfseries}
a & a & a \\
b & b & b \\
c & c & c \\
\end{longtable}

\end{document}

相关内容