今天开始用siunitx练习,有点好玩,但也遇到了一些麻烦。
我有一张统计表,我想在某些单元格中显示文字句点,这意味着没有获得任何估计值。我还有些单元格中的数字可能被括在括号中,还有一些单元格中带有星号。我已经解决了这些问题,因此下面的 mre 不会强调它们。
不允许单元格本身带有“.” 。我从 siunitx 收到“无效值”错误。
一种解决方法是将句点包装在多列中,这样就不会出现错误。但输出也不太正确
\documentclass[11pt,letterpaper,english]{extarticle}
\usepackage{lmodern}
\renewcommand{\sfdefault}{lmss}
\renewcommand{\ttdefault}{lmtt}
\usepackage{siunitx}
\sisetup{
input-symbols = ()*,
group-minimum-digits = 9
}
\begin{document}
\begin{tabular}{
l
S[table-format=1.3, table-align-text-post=false]
S[table-format=1.3, table-align-text-post=false]
}
\hline
hello &1.333 &33.222\tabularnewline
goodbye &44.1 & \multicolumn{1}{c}{.} \tabularnewline
\hline
\end{tabular}
\end{document}
但是,正如您所预料的,时间段并不一致。
我没有充分的理由要求它们对齐,但如果我能做到的话会很有趣:)
答案1
您可以使用\phantom
。
顺便说一句,您声明了,table-format=1.3
但是您的数字有 2 个整数位置,我在中进行了更正table-format=2.3
,否则您会收到Overfull hbox
警告。
\documentclass[11pt,letterpaper,english]{extarticle}
\usepackage{lmodern}
\renewcommand{\sfdefault}{lmss}
\renewcommand{\ttdefault}{lmtt}
\usepackage{siunitx}
\sisetup{
input-symbols = ()*,
group-minimum-digits = 9
}
\begin{document}
\begin{tabular}{
l
S[table-format=2.3, table-align-text-post=false]
S[table-format=2.3, table-align-text-post=false]
}
\hline
hello &1.333 &33.222\tabularnewline
goodbye &44.1 & \multicolumn{1}{l}{\phantom{00}.} \tabularnewline
\hline
\end{tabular}
\end{document}
答案2
类似于车牌回答:
\documentclass[11pt,letterpaper,english]{extarticle}
\usepackage{lmodern}
\renewcommand{\sfdefault}{lmss}
\renewcommand{\ttdefault}{lmtt}
\usepackage{siunitx}
\sisetup{
input-symbols = ()*,
group-minimum-digits = 9
}
\begin{document}
\begin{tabular}{
l
S[table-format=2.3, table-align-text-post=false]
S[table-format=2.3, table-align-text-post=false]
}
\hline
hello & 1.333 & 33.222 \tabularnewline
goodbye & 44.1 & {.\hphantom{2}} \tabularnewline
\hline
\end{tabular}
\end{document}