我想要一个包含四位数字(如 1234)的 siunitx 表,因此我使用它,S[table-format=3.0]
但它给出了以下代码的溢出 hbox
\documentclass{article}
\usepackage{siunitx}
\begin{document}
\begin{table}
\begin{tabular}{|l|*{9}{S[table-format=3.0]|}} % http://tex.stackexchange.com/a/340832/13173
\hline
$B_{ij}$ & $B_{11}$ & $B_{22}$ & $B_{33}$ & $B_{44}$
& $B_{21}$ & $B_{31}$ & $B_{32}$
& $B_{123}$ & $n$ \\ \hline
\textit{Arr./AHB} & 47 & 94 & 0 & 2
& 0 & 0 & 2066
& 0 & 47 \\ \hline
\end{tabular}
\end{table}
\end{document}
输出
(/usr/local/texlive/2016/texmf-dist/tex/latex/siunitx/siunitx-abbreviations.cfg
)
Overfull \hbox (5.00002pt too wide) detected at line 16
[1{/home/masi/.texlive2016/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
(./test.tables.aux) )
Heiko 的\begin{tabular}{|l|*{9}{S[table-format=4.0]|}}
提议
(/usr/local/texlive/2016/texmf-dist/tex/latex/siunitx/siunitx-abbreviations.cfg
)
Overfull \hbox (6.16374pt too wide) in paragraph at lines 10--19
[][]
[1{/home/masi/.texlive2016/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
(./test.tables.aux) )
更好的数据更清楚地说明问题
% egrep
% fix for avoiding the overfull
\addtolength{\tabcolsep}{-\dimexpr 6.16374pt/20}
\begin{table}
\begin{tabular}{|l|*{9}{S[table-format=4.0]|}} % http://tex.stackexchange.com/a/340832/13173
\hline
{$B_{ij}$} & {$B_{11}$} & {$B_{22}$} & {$B_{33}$} & {$B_{44}$}
& {$B_{21}$} & {$B_{31}$} & {$B_{32}$}
& {$B_{123}$} & {$n$} \\ \hline % Heiko
\textit{Masit} & 18 & 0 & 0 & 0
& 0 & 0 & 306
& 0 & 18 \\ \hline
\textit{Arr./AHB} & 47 & 94 & 0 & 2
& 0 & 0 & 2066
& 0 & 47 \\ \hline
\textit{Tiramisuta arr.} & 24 & 0 & 0 & 2
& 0 & 0 & 546 & 0 & 24 \\ \hline
\textit{Coca-colaPepsi arr.} & 5 & 0 & 0 & 0
& 0 & 0 & 20
& 0 & 5 \\ \hline
\end{tabular}
\end{table}
输出
(/usr/local/texlive/2016/texmf-dist/tex/latex/siunitx/siunitx-abbreviations.cfg
)
Overfull \hbox (38.51854pt too wide) in paragraph at lines 12--29
[][]
TeXLive:2016年
操作系统:Debian 8.5
答案1
您需要table-format=4.0
,因为一列有四位数字。
接下来,查看日志文件中的过度填充量,即 6.16374pt;因为有十列,所以将多余的部分分配到 20 个列间距中。
\documentclass{article}
\usepackage{siunitx}
\begin{document}
\begin{table}
% fix for avoiding the overfull
\addtolength{\tabcolsep}{-\dimexpr 6.16374pt/20}
\begin{tabular}{|l|*{9}{S[table-format=4.0]|}} % http://tex.stackexchange.com/a/340832/13173
\hline
$B_{ij}$ & $B_{11}$ & $B_{22}$ & $B_{33}$ & $B_{44}$
& $B_{21}$ & $B_{31}$ & $B_{32}$
& $B_{123}$ & $n$ \\ \hline
\textit{Arr./AHB} & 47 & 94 & 0 & 2
& 0 & 0 & 2066
& 0 & 47 \\ \hline
\end{tabular}
\end{table}
\end{document}
仅在表格处于最终形式时才执行此操作。例如,当内容为
\begin{tabular}{|l|*{9}{S[table-format=4.0]|}} % http://tex.stackexchange.com/a/340832/13173
\hline
$B_{ij}$ & $B_{11}$ & $B_{22}$ & $B_{33}$ & $B_{44}$
& $B_{21}$ & $B_{31}$ & $B_{32}$
& $B_{123}$ & $n$ \\ \hline
\textit{Arr./AHB} & 47 & 94 & 0 & 2
& 0 & 0 & 2066
& 0 & 47 \\ \hline
\textit{Masit} & 18 & 0 & 0 & 0
& 0 & 0 & 306
& 0 & 18 \\ \hline
\textit{Arr./AHB} & 47 & 94 & 0 & 2
& 0 & 0 & 2066
& 0 & 47 \\ \hline
\textit{Tiramisuta arr.} & 24 & 0 & 0 & 2
& 0 & 0 & 546 & 0 & 24 \\ \hline
\textit{Coca-colaPepsi arr.} & 5 & 0 & 0 & 0
& 0 & 0 & 20
& 0 & 5 \\ \hline
\end{tabular}
我得到了 44.68217pt 的溢出,因此修复方法应该是
% fix for avoiding the overfull
\addtolength{\tabcolsep}{-\dimexpr 44.68217pt/20}
何时停止?如果过度填充量超过 60pt,则列间距将减少到 3pt(其默认值为 6pt),这仍然可以接受。我不会低于 2pt(这相当于过度填充 80pt)。
在这种情况下,您应该考虑在之前使用\small
或。\footnotesize
\begin{tabular}
答案2
1234
被覆盖S[table-format=4]
。但是表格变得太宽,因为所有列共享相同的设置。然后,列标题不再居中。
以下示例使用单独的设置。它还使用包booktabs
来获得更好的水平规则。它还避免使用垂直线来制作更好看的表格。
\documentclass{article}
\usepackage{booktabs}
\usepackage{siunitx}
\begin{document}
\begin{table}
\begin{tabular}{
l
*{2}{S[table-format=2]}
*{4}{S[table-format=1]}
S[table-format=4]
S[table-format=1]
S[table-format=2]
}
\toprule
$B_{ij}$ & $B_{11}$ & $B_{22}$ & $B_{33}$ & $B_{44}$
& $B_{21}$ & $B_{31}$ & $B_{32}$
& $B_{123}$ & $n$ \\
\midrule
\textit{Arr./AHB}
& 47 & 94 & 0 & 2 & 0 & 0 & 2066 & 0 & 47 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}