我有一个真的长\longtable
- 大约 150 行。我需要将某些行(其中约 80 行)设为粗体,其他行保持正常。但直接输入{\bf a & b & ... & z} \\
会导致错误。有没有一种优雅、简单的方法可以做到这一点?我搜索过了,但什么也没找到。
以下操作似乎不起作用,至少在我的计算机上不起作用:
\documentclass[12pt]{article}
\usepackage{array,longtable}
\newcolumntype{C}{>{\rowfont}c}
\newcommand\setrowfont[1]{\noalign{\gdef\rowfont{#1}}}
\gdef\rowfont{}
\begin{document}
\begin{longtable}{l||c|c}
\setrowfont{\bfseries}
let's & try & this\\ \hline
\setrowfont{\bfseries\itshape}
and & see & if\\
it & might & work
\end{longtable}
\end{document}
答案1
\documentclass{article}
\usepackage{array,longtable}
\newcolumntype{C}{>{\rowfont}c}
\newcommand\setrowfont[1]{\noalign{\gdef\rowfont{#1}}}
\gdef\rowfont{}
\begin{document}
\begin{longtable}{CCC}
\setrowfont{\bfseries}
a&bb&ccc\\
aa&bbbb&cccccc\\
\setrowfont{\bfseries\itshape}
a&bb&ccc\\
\setrowfont{}
a&bb&ccc\\
a&bbbb&cccccc\\
a&bbbb&cccccc\\
\setrowfont{\bfseries}
a&bb&ccc\\
\setrowfont{}
a&bb&ccc
\end{longtable}
\end{document}
答案2
包array
允许在单元格中插入宏。此宏可以是字体设置命令。在粗体行的开头,它被全局定义为\bfseries
,在行的末尾被重置:
\documentclass{article}
\usepackage{longtable}
\usepackage{array}
\newcommand*{\boldrow}{%
\global\let\rowfont\bfseries
\bfseries
}
\newcommand*{\unboldrow}{%
\global\let\rowfont\relax
\mdseries
}
\newcommand*{\rowfont}{}
\begin{document}
\begin{longtable}{>{\rowfont}l>{\rowfont}l<{\unboldrow}}
1 & a\\
\boldrow 2 & b\\
3 & c\\
\boldrow 4 & d\\
\boldrow 5 & e\\
6 & f\\
7 & g\\
\boldrow 8\\
\unboldrow 9 & h\\
\end{longtable}
\end{document}
评论:
- 在本例中,如果到达最后一个单元格,则会自动重置粗体字体。否则(第 8 行),
\unboldfont
可以在下一行使用。