Некоторое время назад @robintw задал практический вопрос: Сделать первую строку таблицы жирной
Он использует пакет массива для разумного внедрения кода форматирования в столбцы строки заголовка.
Умное решение для форматирования строк таблицы
\usepackage{array}
\newcolumntype{$}{>{\global\let\currentrowstyle\relax}} % Always set currentrowstyle to \relax in case no \rowstyle is used
\newcolumntype{^}{>{\currentrowstyle}} % set \currentrowstyle to \bfseries or whatever (>{\bfseries}c)
\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}% set global definition for \currentrowstyle
#1\ignorespaces
}
Проблемный код
Я хотел бы видеть поддержку нескольких столбцов и нескольких строк. Я попробовал следующее на основеhttps://tex.stackexchange.com/a/4816/13552, что не работает.
\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^c^r}
\rowstyle{\bfseries}
%\multicolumn{2}{^l}{span2} & \multicolumn{2}{^r}{span2} \\ % Uncomment this to see problem
col1 & col2 & col3 & col4 \\
dat1 & dat2 & dat3 & dat4 \\
\end{tabular}
\end{document}
решение1
Проблема заключается в том, что $>
тип столбца вообще никогда не используется в первой строке таблицы.
Вы можете решить эту проблему, используя:
\multicolumn{2}{$l}{}
Для первого набора охватываемых столбцов. Однако проблема в том, что все делается в неправильном порядке. \rowstyle{\bfseries}
теперь находится перед началом первой ячейки. Чтобы решить эту проблему, вы можете включить его в спецификацию первой ячейки
\multicolumn{2}{$l}{\rowstyle{\bfseries}span2}
который производит
что, если я правильно понял, является ожидаемым результатом.
Полный код
\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^c^r}
\multicolumn{2}{$l}{\rowstyle{\bfseries}span2} & \multicolumn{2}{^r}{span2} \\ % Uncomment this to see problem
col1 & col2 & col3 & col4 \\
dat1 & dat2 & dat3 & dat4 \\
\end{tabular}
\end{document}