表格中粗体行与 d 列对齐

表格中粗体行与 d 列对齐

我正在生成一堆 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}

结果

答案3

我用的是这个:

\newsavebox\CBox
\def\mathBF#1{\sbox\CBox{#1}\resizebox{\wd\CBox}{\ht\CBox}{\ensuremath{\mathbf{#1}}}}
\newcommand{\best}[1]{\mathBF{#1}}  % for table

然后在表格中,只需\best{1.1}在任何地方用粗体显示一些数字。

这是专门用于数学模式的,并且与之配合良好siunitx

灵感来自这里.另请参阅这里

相关内容