我正在生成一堆 TeX 表(使用 Stata),其中某一行必须突出显示(粗体)。但是我只能修改其中的第一列,因此我想在列的第一个单元格中放置一个命令以使其变为粗体(或不变为粗体)
到目前为止我一直在使用这个“将表格第一行全部设为粗体“,这正是我想要的。
\documentclass[12pt]{standalone}
\usepackage{dcolumn}
\newcolumntype{X}{>{\rowstyle{\relax}}l}
\newcolumntype{Y}{>{\currentrowstyle}c}
\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}}
\begin{document}
\begin{tabular}{XYY}
normal row & 1.1 & 2.2\\
bold row \rowstyle{\bfseries} & 1.1 & 2.2\\
\end{tabular}
\end{document}
现在,我决定改用dcolumn
,这很好,但会破坏粗体解决方法,因为它会在数学模式中包装单元格。David 在此处提供的解决方案 (表格中的小数以粗体显示时与列不对齐) 实际上也不起作用,因为它需要\multicolumn{1}{B}{...}
在每个粗体单元格中使用。
简单地使用mathbf
似乎不起作用。任何建议都非常感谢。
答案1
\documentclass[12pt]{standalone}
\usepackage{dcolumn}
\makeatletter
\newcolumntype{X}{>{\rowstyle{\relax}}l}
\newcolumntype{D}[3]{>{\currentrowstyle\DC@{#1}{#2}{#3}}c<{\DC@end}}
\makeatother
\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}}
\begin{document}
\begin{tabular}{XD..{-1}D..{-1}}
normal row & 1.1 & 2.2\\
bold row \rowstyle{\bfseries\boldmath} & 1.1 & 2.2\\
\end{tabular}
\end{document}
答案2
使用包的解决方案siunitx
:
\documentclass[12pt]{standalone}
\usepackage{array}
\usepackage{siunitx}
\newcolumntype{X}{%
>{\rowstyle{\relax}}l%
}
\newcolumntype{Y}{%
>{\currentrowstyle}S[detect-weight]%
}
\newcommand{\rowstyle}[1]{%
\protected\gdef\currentrowstyle{#1}%
}
\begin{document}
\begin{tabular}{XYY}
normal row & 1.1 & 2.2\\
normal row & 12.34 & 56.78\\
bold row \rowstyle{\bfseries} & 1.1 & 2.2\\
bold row \rowstyle{\bfseries} & 12.34 & 56.78\\
\end{tabular}
\end{document}