我想要这样的桌子
\documentclass[12pt]{standalone}
\usepackage{spreadtab}
\usepackage{siunitx}
\usepackage{tabularx}
\usepackage{eurosym}
\usepackage{numprint}
\usepackage{booktabs}
\begin{document}
\begin{spreadtab}{{tabularx}{\linewidth}{XS[table-format=4.2]l}}
\toprule
@{Was} & @{Betrag [\euro]} & @{Belegart} \\
\midrule
@Nice People Charity & 300 & Spendenbescheinigung @\\
\midrule
@Summe [\euro] & \textbf{\numprint{:={sum(b2:[0,-1]) }}} & \\
\bottomrule
\end{spreadtab}
\end{document}
但第二行和最后一行的金额没有对齐:
我觉得最后一行没有被包括在内siunitx
。我该如何让它工作?修修补补table-format=4.2
其实不算数,因为我在其他地方的表中也遇到了同样的问题(整个过程都在一个自定义命令中,但现在让我们先保持简单)。
如果有人能帮我解决这个问题
\usepackage{tabu}
而不是 tabularx。我想使用XS[...]
或X[c]{S[...]}
或任何当前命令...通过 Stackexchange 准备就绪让我有点困惑...抱歉。
我尝试使用
\usepackage{dcolumn}
但它没有起作用,因为它不\euro
支持
\usepackage{eurosym}
编辑:从
siunitx:在表格中按小数点对齐数字不适用于粗体或斜体数字
和
siunitx:如何获得粗体、对齐的条目以及如何在单位长度不同时对齐?
我知道数字不对齐的原因是由于粗体和\numprint
。但是,我无法让建议发挥作用——可能是因为我还使用了spreadtab
。
答案1
经过大量的推理和尝试后,我终于找到了解决方案。
我的问题的原因不是由粗体和字母间距引起的,而是因为在应该为单元格的地方放了数字以外的其他东西。在我的例子中,这个“其他东西”是\textbf{\numprint{:={ ... }
。这似乎混淆了spreadtab
-siunitx
组合。\robustify
来自siunitx:在表格中按小数点对齐数字不适用于粗体或斜体数字也无济于事。
解决方案是将整行变为粗体(在不同的地方给出命令 -tabu
正在帮助解决这个问题),然后取消加粗那些不应该加粗的单元格:
\begin{spreadtab}{{tabu} to \linewidth{XS[table-format=4.2]l}}
\toprule
@{Was} & @{Betrag [\euro]} & @{Belegart} \\
\midrule
@Nice People Charity & 300 & Spendenbescheinigung @\\
\midrule
\rowfont\bfseries
{\mdseries @Summe [\euro]} & sum(b2:[0,-1]) & \\
\bottomrule
\end{spreadtab}