我尝试使用 +、* 或 ? 标记 siunitx 表列中的某些条目,但当我这样做时,我收到水平盒过满警告。我尝试使用table-space-text-post
来提供更多空间,但似乎对水平盒过满的情况没有影响。(它也已被弃用,但我不确定如何设置table-format
才能达到相同的效果。)
表格有点被挤压以适合单个列,但是默认的 tabcolsep 仍然导致表格条目中的水平盒子过满。
\documentclass{IEEEtran}
\usepackage{siunitx}
\usepackage{booktabs}
\begin{document}
\begin{table}
\setlength{\tabcolsep}{0.2em}
\newcolumntype{d}{S[input-signs=,input-symbols=+,table-format=3.1,table-space-text-post={$+$}]}
\centering
\begin{tabular}{@{}rdddddddd@{}}
\toprule
Foo & {\% $+$ve} & {\% $-$ve} & {\% $+$ve} & {\% $-$ve} & {\% $+$ve} & {\% $-$ve} & {\% $+$ve} & {\% $-$ve} \\ \midrule
3 & 100.0+ & 0.0 & 13.3* & 4.4 & 100.0+ & 0.0 & 6.7? & 2.2 \\
\end{tabular}
\end{table}
\end{document}
+
溢出的水平盒子与表中的字符相对应:
Overfull \hbox (6.6112pt too wide) detected at line 15
Overfull \hbox (6.6112pt too wide) detected at line 15
从视觉上看,一切看起来还好,但我想知道如何正确设置列宽。
答案1
您的表格太宽,一列无法容纳。看看您是否可以接受规定表格宽度并将列标题重新格式化为两行,如以下 MWWE(最小工作示例)中所做的那样。其中,列之间的距离由 LaTeX 决定:
\documentclass{IEEEtran}
\usepackage{siunitx} % considered is version 3
\usepackage{booktabs}
%---------------- Show page layout. Don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
\usepackage{lipsum}
\begin{document}
\begin{table}[htb]
\sisetup{input-signs=,
input-symbols=+,
table-format=3.1{$+$}
}
\setlength\tabcolsep{0pt}
\centering
% \small
\begin{tabular*}{\linewidth}{@{\extracolsep{\fill}} r @{\quad} *{8}{S} }
\toprule
& \multicolumn{8}{c}{share in \%} \\
\cmidrule{2-9}
Foo & {$+$ve} & {$-$ve} & {$+$ve} & {$-$ve} & {$+$ve} & {$-$ve} & {$+$ve} & {$-$ve} \\
\midrule
3 & 100.0+ & 0.0 & 13.3* & 4.4 & 100.0+ & 0.0 & 6.7? & 2.2 \\
\end{tabular*}
\end{table}
\lipsum
\end{document}