我正在尝试使用 将表格列对齐到小数点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}