我正在尝试使用包的 S 列类型在表中对齐一些钱siunitx
,但 € 符号一直在乱跑(对齐不一致)。
使用该eurosym
包有助于对齐,但会将货币符号放在前面,而我希望将其放在数字后面。有什么建议吗?
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[locale = DE]{siunitx}
\usepackage[gen]{eurosym}
\begin{document}
\begin{table}[h]
\centering
\begin{tabular}{|S|S|S|S|}
\hline
{A} & {B} & {C} & {D} \\
\hline
-199,37 € & 0,00 € & 33,27 € & 166,10 € \\
252,56 € & 0,00 € & -409,58 € & 157,02 € \\
104,67 € & 0,00 € & -40,18 € & -64,48 € \\
0,17 € & 0,00 € & -2,52 € & 2,35 € \\
0,00 € & 0,00 € & 0,00 € & 0,00 € \\
\hline
\end{tabular}
\end{table}
\begin{table}[h]
\centering
\begin{tabular}{|S|S|S|S|}
\hline
{A} & {B} & {C} & {D} \\
\hline
\euro{-199,37} & \euro{0,00} & \euro{33,27} & \euro{166,10} \\
\euro{252,56} & \euro{0,00} & \euro{-409,58} & \euro{157,02} \\
\euro{104,67} & \euro{0,00} & \euro{-40,18} & \euro{-64,48} \\
\euro{0,17} & \euro{0,00} & \euro{-2,52} & \euro{2,35} \\
\euro{0,00} & \euro{0,00} & \euro{0,00} & \euro{0,00} \\
\hline
\end{tabular}
\end{table}
\end{document}
答案1
那这个呢?
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[locale = DE]{siunitx}
\usepackage{textcomp}
\usepackage{booktabs, makecell}
\newcommand\mc[1]{\multicolumn{1}{c}{#1}}
\begin{document}
\begin{table}[h]
\centering
\setcellgapes{3pt}
\makegapedcells
\sisetup{table-space-text-post={\,€},
table-align-text-post=false}
\begin{tabular}{S[table-format=-3.2]<{\,€}
S[table-format= 1.2]<{\,€}
*{2}{S[table-format=-3.2]<{\,€}}
}
\toprule
\mc{A} & \mc{B} & \mc{C} & \mc{D} \cr
\midrule
-199,37 & 0,00 & 33,27 & 166,10 \cr
252,56 & 0,00 & -409,58 & 157,02 \cr
104,67 & 0,00 & -40,18 & -64,48 \cr
0,17 & 0,00 & -2,52 & 2,35 \cr
0,00 & 0,00 & 0,00 & 0,00 \cr
\bottomrule
\end{tabular}
\end{table}
\end{document}
答案2
我想建议一个替代解决方案:将欧元符号放在列标题中。
而且egreg建议不要使用eurosym
该gen
选项,这样欧元符号会更美观。
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[locale = DE]{siunitx}
\usepackage{eurosym}
\usepackage{booktabs}
\begin{document}
\begin{table}[h]
\centering
\begin{tabular}{SSSS}
\toprule
{A (\euro)} & {B (\euro)} & {C (\euro)} & {D (\euro)} \\
\midrule
-199,37 & 0,00 & 33,27 & 166,10 \\
252,56 & 0,00 & -409,58 & 157,02 \\
104,67 & 0,00 & -40,18 & -64,48 \\
0,17 & 0,00 & -2,52 & 2,35 \\
0,00 & 0,00 & 0,00 & 0,00 \\
\bottomrule
\end{tabular}
\end{table}
Or:
\begin{table}[h]
\centering
\begin{tabular}{SSSS}
\toprule
{A} & {B} & {C} & {D} \\
{(\euro)} & {(\euro)} & {(\euro)} & {(\euro)} \\
\midrule
-199,37 & 0,00 & 33,27 & 166,10 \\
252,56 & 0,00 & -409,58 & 157,02 \\
104,67 & 0,00 & -40,18 & -64,48 \\
0,17 & 0,00 & -2,52 & 2,35 \\
0,00 & 0,00 & 0,00 & 0,00 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
答案3
使用适合table-format
各个单元格的选项以及和table-space-text-post=€
,table-align-text-post=true
您可以获得以下输出:
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[locale = DE]{siunitx}
\usepackage[gen]{eurosym}
\begin{document}
\begin{table}[h]
\sisetup{table-space-text-post=€, table-align-text-post=true}
\centering
\begin{tabular}{|S[table-format=-3.2]|
S[table-format=1.2]|
S[table-format=-3.2]
|S[table-format=-3.2]|}
\hline
{A} & {B} & {C} & {D} \\
\hline
-199,37 € & 0,00 € & 33,27 € & 166,10 € \\
252,56 € & 0,00 € & -409,58 € & 157,02 € \\
104,67 € & 0,00 € & -40,18 € & -64,48 € \\
0,17 € & 0,00 € & -2,52 € & 2,35 € \\
0,00 € & 0,00 € & 0,00 € & 0,00 € \\
\hline
\end{tabular}
\end{table}
\end{document}
为了避免一遍又一遍重复 € 符号,我会将其放入相应列的列标题中,甚至放入表格的标题中。
答案4
基本上相同的解决方案,但略有改进,在数字和欧元之间有一个薄的不可破坏的空间,并且在行末有一些填充\extrarowheight
:
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[locale = DE]{siunitx}
\usepackage{textcomp}
\setlength{\extrarowheight}{2pt}
\begin{document}
\begin{table}[h]
\centering
\sisetup{table-format =-3.2, table-number-alignment=center, table-space-text-post=€, table-align-text-post=false}
\begin{tabular}{|S|S|S|S|}
\hline
{A} & {B} & {C} & {D} \\
\hline
-199,37\,€ & 0,00 \,€ & 33,27 \,€ & 166,10 \\
252,56 \,€ & 0,00 \,€ & -409,58 \,€ & 157,02 \,€ \\
104,67 \,€ & 0,00 \,€ & -40,18 \,€ & -64,48 \,€ \\
0,17 \,€ & 0,00 \,€ & -2,52 \,€ & 2,35 \,€ \\
0,00 \,€ & 0,00 \,€ & 0,00 \,€ & 0,00 \,€ \\
\hline
\end{tabular}
\end{table}
\end{document}