我正在尝试制作包含特殊标题的 LaTeX 表格。表格代码如下所示:
\begin{table}[ht]
\centering
\scalebox{0.70}{
\begin{tabular}{lddcdd}
\toprule
&\multicolumn{2}{c}{M1} &
& \multicolumn{2}{c}{M2} \\
\cmidrule{2-3} \cmidrule{5-6}
& \multicolumn{1}{c}{1-2}
& \multicolumn{1}{c}{7-8} &
& \multicolumn{1}{c}{1-2}
& \multicolumn{1}{c}{7-8} \\
\midrule
A & \textbf{0.0021} & \textbf{0.0033} & & -2.37 & 0.00 \\
B & \textbf{0.0052} & \textbf{0.0042} & & -1.23 & 0.67 \\
C & \textbf{0.0082} & \textbf{0.0057} & & -0.21 & 1.08 \\
D & 0.0107 & 0.0097 & & 0.74 & 1.41 \\
E & \textbf{0.0080} & 0.0088 & & 5.05 & 5.05 \\
F & 0.0140 & 0.0148 & & -2.37 & 0.00 \\
G & 0.0128 & 0.0176 & & -1.23 & 0.67 \\
H & 0.0157 & 0.0164 & & -0.62 & 1.10 \\
I & 0.0145 & 0.0155 & & -0.21 & 1.08 \\
K & 0.0236 & 0.0225 & & 5.05 & 5.05 \\
\bottomrule
\end{tabular}}
\smallskip
\caption{My Caption}
\label{tab:table1}
\end{table}
它会创建一个如下表:
但我希望加粗的数字与未加粗的数字很好地对齐...我怎样才能使加粗的数字以正确的方式与其他数字对齐?谢谢,
答案1
使用S
列(在siunitx
包中定义)和强大的命令用粗体数字标记单元格:
\documentclass{article}
\usepackage[skip=1ex]{caption} % <---
\usepackage{booktabs}
\usepackage{siunitx} % <---
\usepackage{etoolbox} % <---
\newrobustcmd\B{%
\DeclareFontSeriesDefault[rm]{bf}{b}\bfseries} % <===
\begin{document}
\begin{table}[ht]
\sisetup{detect-weight,
mode=text, % <===
table-format=1.4}
\centering
\begin{tabular}{l SS S[table-format=-1.2]S[table-format=1.2]}
\toprule
& \multicolumn{2}{c}{M1} & \multicolumn{2}{c}{M2} \\
\cmidrule(r){2-3}
\cmidrule(l){4-5}
& {1-2} & {7-8} & {1-2} & {7-8} \\
\midrule
A &\B 0.0021 &\B 0.0033 & -2.37 & 0.00 \\
B &\B 0.0052 &\B 0.0042 & -1.23 & 0.67 \\
C &\B 0.0082 &\B 0.0057 & -0.21 & 1.08 \\
D & 0.0107 & 0.0097 & 0.74 & 1.41 \\
E &\B 0.0080 & 0.0088 & 5.05 & 5.05 \\
F & 0.0140 & 0.0148 & -2.37 & 0.00 \\
G & 0.0128 & 0.0176 & -1.23 & 0.67 \\
H & 0.0157 & 0.0164 & -0.62 & 1.10 \\
I & 0.0145 & 0.0155 & -0.21 & 1.08 \\
K & 0.0236 & 0.0225 & 5.05 & 5.05 \\
\bottomrule
\end{tabular}
\caption{My Caption}
\label{tab:table1}
\end{table}
\end{document}
笔记:
不要使用
\scalebox
,它也会缩放表格中的字体(你无法控制它们的大小)确定 5 列并用 和 标记组就足够
\cmidrule(r){2-3}
了\cmidrule(l){4-5}
编辑:
在定义中
\newrobustcmd\B{\DeclareFontSeriesDefault[rm]{bf}{b}\bfseries}
表示{b}
“非扩展粗体”。这就是为什么用 标记的文本\B
与常规粗细文本占用相同宽度的原因。此属性——正如@Mico 评论中指出的那样——正是在表格设置中显示数字所需要的。它可以被利用siunitx
,它必须在 中text-mode
。
答案2
解决方案在这里找到--https://tex.stackexchange.com/a/318416/197451
我没有使用d
列,而是使用S
列来指定第二列中的数字
\documentclass[preview,border=1pt]{standalone}
\usepackage{booktabs}
\usepackage{siunitx}
\usepackage{etoolbox} % <-- new
\usepackage{xparse} % <-- new
\NewExpandableDocumentCommand\mc{O{1}m} % <--
{\multicolumn{#1}{c}{#2}}
\begin{document}
\begin{table}
\sisetup{ input-open-uncertainty= , % <-- new
input-close-uncertainty= , % <-- new
table-space-text-pre=(, % <-- new
table-space-text-post=), % <-- new
table-align-text-pre=false,% <-- new
detect-weight,
mode=text, % <-- new
table-format=1.4}
\renewcommand{\bfseries}{\fontseries{b}\selectfont} % <-- new
\newrobustcmd{\B}{\bfseries} % <-- changed
\caption{My Caption}
\centering
\begin{tabular}{ l S} % <--- changed
\toprule[2pt]
\mc[2]{Panel A} \\
\midrule
&\mc{M1}\\
\midrule
B & 0.0140\\
\addlinespace
C &\B 0.0140 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}