好的,我这里遗漏了什么?为什么S
列没有按小数点对齐:
期望的结果是数据按小数点对齐并在列内居中:
代码:
\documentclass{article}
\usepackage{siunitx}
\begin{document}
\begin{tabular}{S}
\multicolumn{1}{c}{Measured Values} \\
\SI{0.003 1}{\meter} \\
\SI{0.003 123}{\meter} \\
\SI{0.003 45}{\meter} \\
\end{tabular}
\end{document}
答案1
如果您必须对不同的数字使用不同的单位,则可以使用table-space-text-post
和进行以下操作table-align-text-post
:
\documentclass{article}
\usepackage{siunitx}
\begin{document}
\begin{tabular}{S[table-format=1.6,table-space-text-post = \si{\meter}]}
{Measured Values} \\
0.0031\si{\meter} \\
0.003123\si{\meter} \\
0.00345\si{\meter} \\
\end{tabular}
\begin{tabular}{S[table-format=1.7,table-align-text-post = false]} %% note 1.7 here just to align things at center
{Measured Values} \\
0.0031\,\si{\meter} \\
0.003123\,\si{\meter} \\
0.00345\,\si{\meter} \\
\end{tabular}
\end{document}
还有pre
上述命令的版本 -table-align-text-pre
在数字前执行相同的操作。
答案2
列类型旨在以与命令的S
单个强制参数相同的格式接受输入。其他任何内容均被解释为文本(用于标题等)并以小数点位置为中心。siunitx
\num{}
这就是您看到整体居中行为的原因:被\SI{}{}
解释为“非数字”并被格式化为标题文本或其他材料。
要排版单位,请使用s
列,该列以与命令的强制参数相同的形式接受输入\si{}
。仅当表中每行的单位不相同时才应使用此方法。
例子:
\documentclass{article}
\usepackage{siunitx}
\begin{document}
\begin{tabular}{S[table-format=1.6]s}
\multicolumn{2}{c}{Measured Values} \\
0.0031 & \meter \\
0.003123 & \meter \\
0.00345 & \meter \\
\end{tabular}
\end{document}
如果某一列的单位对于每一行都相同(大多数表格都是如此),请使用siunitx
手动的;也就是说,使用无量纲比率表示数字:
\documentclass{article}
\usepackage{siunitx}
\begin{document}
\begin{tabular}{S[table-format=1.6]}
{Measured Values/\si{\meter}} \\
0.0031 \\
0.003123 \\
0.00345 \\
\end{tabular}
\end{document}
或者(我偏爱的):
\documentclass{article}
\usepackage{siunitx}
\begin{document}
\begin{tabular}{S[table-format=1.6]}
{Measured Values (\si{\meter})} \\
0.0031 \\
0.003123 \\
0.00345 \\
\end{tabular}
\end{document}
请注意如何table-format=1.6
使用 来指定每个列条目中整数和小数的最大位数。这允许正确居中数据。另外,我在标题周围使用了花括号来“保护”它并将其标记为非数字数据。这里不需要这样做,因为siunitx
它非常聪明地检测这些情况。花括号保护在某些siunitx
容易混淆的情况下很有用(例如整数索引标题)。