![减少 siunitx 列宽](https://linux22.com/image/348314/%E5%87%8F%E5%B0%91%20siunitx%20%E5%88%97%E5%AE%BD.png)
我正在尝试使用该包制作表格siunitx
。但是,每列都填充了大量空格。通过更改tabcolsep
,我可以减少每列右侧的空格量,但无法更改左侧的空格量。更改table-column-width
只会导致 hbox 溢出,同时保留多余的空格。
以下是 MWE:
\documentclass{article}
\usepackage{siunitx}
\usepackage{lscape}
\begin{document}
\setlength{\tabcolsep}{0.2em}
\begin{landscape}
\centerline{
\begin{tabular}{
S |
S |
S |
S |
S |
S |
S |
S |
S |
S |
S
}
3 & 3.20E+01 & 3.13E-02 & 1.25E-01 & 3.75E+08 & 5.07E+05 & 1.50E+01 & 6.67E-02 & 1.25E-01 & 3.75E+08 & 5.07E+05 \\
\end{tabular}
}%//centerline
\end{landscape}
\end{document}
table-column-width
以下是明确设置的版本:
\documentclass{article}
\usepackage{siunitx}
\usepackage{lscape}
\begin{document}
\setlength{\tabcolsep}{0.2em}
\begin{landscape}
\centerline{
\begin{tabular}{
S[table-column-width=8em] |
S[table-column-width=8em] |
S[table-column-width=8em] |
S[table-column-width=8em] |
S[table-column-width=8em] |
S[table-column-width=8em] |
S[table-column-width=8em] |
S[table-column-width=8em] |
S[table-column-width=8em] |
S[table-column-width=8em] |
S[table-column-width=8em]
}
3 & 3.20E+01 & 3.13E-02 & 1.25E-01 & 3.75E+08 & 5.07E+05 & 1.50E+01 & 6.67E-02 & 1.25E-01 & 3.75E+08 & 5.07E+05 \\
\end{tabular}
}%//centerline
\end{landscape}
\end{document}
请指教如何删除每个数字左侧的空白,以便表格可以放在一页上。谢谢。
答案1
下面我为所有列使用了相同的格式,这意味着在较短的数字(如)周围有多余的数字3
。如果您希望它们更接近,请分别调整每列的格式。
当前格式1.2e-1
意味着
1
小数点前的数字2
小数点后面的数字e
需要空间-
需要空间1
指数中的数字
作为Mico 建议在评论中:为了获得更紧密的间距,您可以将tight-spacing=true
其用作siunitx
包的选项或在S
列中使用它。
\documentclass{article}
\usepackage[tight-spacing=true]{siunitx}
\usepackage{lscape}
\begin{document}
\setlength{\tabcolsep}{0.2em}
\begin{landscape}
\centering
\begin{tabular}{
c|
*{10}{S[table-format=1.2e-1]|}
}
3 & 3.20E+01 & 3.13E-02 & 1.25E-01 & 3.75E+08 & 5.07E+05 & 1.50E+01 & 6.67E-02 & 1.25E-01 & 3.75E+08 & 5.07E+05 \\
\end{tabular}
\end{landscape}
\end{document}
答案2
我们还可以尝试不同的数字格式:有些数字有负指数,有些则没有。如果每个单元格内容代表其列,则会出现第二个表格:
\documentclass{article}
\usepackage{siunitx}
\usepackage{lscape}
\begin{document}
\begin{landscape}
\centering
\setlength{\tabcolsep}{4pt}
\sisetup{table-format=1.2e-1,table-number-alignment=center}
\begin{tabular}{|l |*{10}{S|}}
3 & 3.20E+01 & 3.13E-02 & 1.25E-01 & 3.75E+08 & 5.07E+05 & 1.50E+01 & 6.67E-02 & 1.25E-01 & 3.75E+08 & 5.07E+05 \\
\end{tabular}
\vspace*{1cm}
\begin{tabular}{|l|S[table-format =1.2e1]|*{2}{S|}*{3}{S[table-format =1.2e1]|}*{2}{S|}*{2}{S[table-format =1.2e1]|}}
3 & 3.20E+01 & 3.13E-02 & 1.25E-01 & 3.75E+08 & 5.07E+05 & 1.50E+01 & 6.67E-02 & 1.25E-01 & 3.75E+08 & 5.07E+05 \\
\end{tabular}
\end{landscape}
\end{document}
答案3
这里还有另一个建议:(a)采用tabular*
环境(目标宽度为\textwidth
),(b)设置选项tight-spacing
和exponent-product={\mkern1mu\cdot}
(节省空间),(c)摆脱所有垂直规则(仍然节省空间),(d)使用选项table-format
指定每列的最小宽度格式。
通过此设置,可能不需要切换到横向模式来排版表格。
\documentclass{article}
\usepackage[margin=2.5cm]{geometry}
\usepackage{array,siunitx}
\newcolumntype{T}[1]{S[tight-spacing,
exponent-product={\mkern1mu\cdot},
table-format=1.2e#1]}
\begin{document}
\begingroup % localize the scope of the next instruction
\setlength{\tabcolsep}{0pt}
\noindent
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}
l T{1} *{2}{T{-1}} *{3}{T{1}} *{2}{T{-1}} *{2}{T{1}} }
3 & 3.20E+01 & 3.13E-02 & 1.25E-01 & 3.75E+08 & 5.07E+05
& 1.50E+01 & 6.67E-02 & 1.25E-01 & 3.75E+08 & 5.07E+05 \\
\end{tabular*}
\endgroup
\end{document}