表格按小数点对齐,单元格加粗

表格按小数点对齐,单元格加粗

我正在尝试使用 将表格列对齐到小数点dcolumn。一些单元格应该加粗。如果我使用 执行此操作\bm,文档将无法编译,而如果我按此操作\textbf,文档将无法编译,但会错位。(为了使我的示例能够编译,我允许它使用\textbf\bm)。据我了解,这dcolumn会将列置于数学模式,但显然加粗的列不是。如果我尝试使用 手动将它们置于数学模式$...$,我会得到相同的结果(无法使用 编译,在有选择时\bm使用)。\textbf

如何才能实现使某些单元格按小数点对齐并加粗的预期效果?

最小工作示例:

\documentclass{article}
\usepackage[utf8]{inputenc}

\usepackage{booktabs,array,multirow}
\usepackage{dcolumn}
\usepackage{bm} 

%% Column numbers aligned on the decimal - See https://tex.stackexchange.com/questions/34614/in-a-tabular-how-to-left-align-ignoring-minus-signs
\newcolumntype{L}{D{.}{.}{2,3}}

%% Standard way of using bold math or textbf, as needed - proposed at https://tex.stackexchange.com/questions/595/how-can-i-get-bold-math-symbols
\newcommand*{\B}[1]{\ifmmode\bm{#1}\else\textbf{#1}\fi}

\begin{document}

\begin{table}[!t]
\caption{Example table}
\centering
\begin{tabular}{lLLL}
\toprule
\multicolumn{1}{l}{\textbf{\textit{ID}}} & 
\multicolumn{1}{l}{\textbf{A}} & \multicolumn{1}{l}{\textbf{B}} & 
\multicolumn{1}{l}{\textbf{C}}  \tabularnewline
\midrule
i1 (A) & \B{0.989} & 0.191 & 0.649 \tabularnewline
i2 (B) & -0.137 & \B{0.884} & 0.001 \tabularnewline
i3 (B) & 0.111 & \B{0.847} & 0.273\tabularnewline
i4 (C) & 0.181 & 0.327 & \B{0.900}  \tabularnewline

\bottomrule
\end{tabular}
\end{table}
\end{document}

例子

更新:解决方案

我使用了 David Carlisle 建议的方法,并在此提出修改以供参考。

添加到序言中:

\makeatletter
\newcolumntype{B}[3]{>{\boldmath\DC@{#1}{#2}{#3}}c<{\DC@end}}
\makeatother

表格行的更改:

i1 (A) & \multicolumn{1}{B{.}{.}{2,3}}{0.989} & 0.191 & 0.649 \tabularnewline
i2 (B) & -0.137 & \multicolumn{1}{B{.}{.}{2,3}}{0.884} & 0.001 \tabularnewline
i3 (B) & 0.111 & \multicolumn{1}{B{.}{.}{2,3}}{0.847} & 0.273\tabularnewline
i4 (C) & 0.181 & 0.327 & \multicolumn{1}{B{.}{.}{2,3}}{0.900}  \tabularnewline

在此处输入图片描述

答案1

这就是你要找的东西吗?

\documentclass{article}

\usepackage{booktabs}
\usepackage[detect-all]{siunitx}

\begin{document}

\begin{table}[!t]
\caption{Example table}
\centering
\begin{tabular}{l r@{.}l r@{.}l r@{.}l}
    \toprule
    \multicolumn{2}{l}{\textbf{ID}}&\textbf{A}&\multicolumn{2}{c}{\textbf{B}}&\multicolumn{2}{c}{\textbf{C}}
    \tabularnewline
    \midrule
    i1 (A) & \textbf{0}&\textbf{989} & 0&191 & 0&649 \\
    i2 (B) & $-0$&137 & \textbf{0}&\textbf{884} & 0&001 \\
    i3 (B) & 0&111 & 0&847 & 0&273\\
    i4 (C) & 0&181 & 0&327 & \textbf{0}&\textbf{900}\\
    \bottomrule
\end{tabular}
\end{table}

\end{document}

在此处输入图片描述

相关内容