siunitx 的 S 列未正确对齐

siunitx 的 S 列未正确对齐

我有下表并且显然有一个问题...我的代码有什么问题?

\documentclass[11pt,a4paper,headings=small]{scrartcl}
\usepackage{siunitx}
\begin{document}
\begin{tabular}{|c
        |S[table-number-alignment = right]
        |S[table-number-alignment = right]
        |S[table-number-alignment = right]
        |S[table-number-alignment = right]
        |S[table-number-alignment = right]
        |}
    \hline
       & {Jahr 1} & {Jahr 2} & {Jahr 3} & {Jahr 5} & {Jahr 5} \\
    \hline
    V1 & 5000     & 5500     & 6050     & 6655     & 7321     \\
    \hline
    V2 & 3,5      & 4        & 4,5      & 5        & 5,5      \\
    \hline
    V3 & 17500    & 22000    & 27225    & 33275    & 40266    \\
    \hline
    V4 & 0,6      & 0,64     & 0,68     & 0,72     & 0,76     \\
    \hline
    V5 & 3000     & 3520     & 4114     & 4792     & 5564     \\
    \hline
    V6 & 2000     & 2000     & 2500     & 2500     & 2500     \\
    \hline
    V7 & 15000    & 15000    & 15000    & 15000    & 15000    \\
    \hline
    V8 & 6250     & 6250     & 6250     & 6250     & 6250     \\
    \hline
\end{tabular}
\end{document}

输出

答案1

默认值不够。由于行是逐行处理的,因此包事先siunitx不知道数字有多长。因此,可以使用选项指定数字的宽度table-format

\documentclass[11pt,a4paper,headings=small]{scrartcl}
\usepackage{siunitx}
\begin{document}
\begin{tabular}{|c
        |S[table-number-alignment = right, table-format=5.1]
        |S[table-number-alignment = right, table-format=5.2]
        |S[table-number-alignment = right, table-format=5.2]
        |S[table-number-alignment = right, table-format=5.2]
        |S[table-number-alignment = right, table-format=5.2]
        |}
    \hline
    & {Jahr 1} & {Jahr 2} & {Jahr 3} & {Jahr 5} & {Jahr 5} \\
    \hline
    V1 & 5000 & 5500 & 6050 & 6655 & 7321 \\
    \hline
    V2 & 3,5 & 4 & 4,5 & 5 & 5,5 \\
    \hline
    V3 & 17500 & 22000 & 27225 & 33275 & 40266 \\
    \hline
    V4 & 0,6 & 0,64 & 0,68 & 0,72 & 0,76 \\
    \hline
    V5 & 3000 & 3520 & 4114 & 4792 & 5564 \\
    \hline
    V6 & 2000 & 2000 & 2500 & 2500 & 2500 \\
    \hline
    V7 & 15000 & 15000 & 15000 & 15000 & 15000 \\
    \hline
    V8 & 6250 & 6250 & 6250 & 6250 & 6250 \\
    \hline
\end{tabular}
\end{document}

结果

此外,还有很多线条。没有垂直线和水平线的表格可以做得更好,请参阅包booktabs

\documentclass[11pt,a4paper,headings=small]{scrartcl}
\usepackage{siunitx}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{c
        S[table-format=5.1]
        S[table-format=5.2]
        S[table-format=5.2]
        S[table-format=5.2]
        S[table-format=5.2]
        }
    \toprule
    & {Jahr 1} & {Jahr 2} & {Jahr 3} & {Jahr 5} & {Jahr 5} \\
    \midrule
    V1 & 5000 & 5500 & 6050 & 6655 & 7321 \\
    V2 & 3,5 & 4 & 4,5 & 5 & 5,5 \\
    V3 & 17500 & 22000 & 27225 & 33275 & 40266 \\
    V4 & 0,6 & 0,64 & 0,68 & 0,72 & 0,76 \\
    V5 & 3000 & 3520 & 4114 & 4792 & 5564 \\
    V6 & 2000 & 2000 & 2500 & 2500 & 2500 \\
    V7 & 15000 & 15000 & 15000 & 15000 & 15000 \\
    V8 & 6250 & 6250 & 6250 & 6250 & 6250 \\
    \bottomrule
\end{tabular}
\end{document}

结果

答案2

您可以缩短代码,并向单元格添加一些垂直填充:

\documentclass[11pt, a4paper, headings=small]{scrartcl}
\usepackage{siunitx}

\begin{document}

\sisetup{table-number-alignment = right, table-format =5.2}
\setlength\extrarowheight{2pt}
\begin{tabular}{|c |S[table-format=5.1] |*{4}{S|}}
    \hline
    & {Jahr 1} & {Jahr 2} & {Jahr 3} & {Jahr 5} & {Jahr 5} \\
    \hline
    V1 & 5000 & 5500 & 6050 & 6655 & 7321 \\
    \hline
    V2 & 3,5 & 4 & 4,5 & 5 & 5,5 \\
    \hline
    V3 & 17500 & 22000 & 27225 & 33275 & 40266 \\
    \hline
    V4 & 0,6 & 0,64 & 0,68 & 0,72 & 0,76 \\
    \hline
    V5 & 3000 & 3520 & 4114 & 4792 & 5564 \\
    \hline
    V6 & 2000 & 2000 & 2500 & 2500 & 2500 \\
    \hline
    V7 & 15000 & 15000 & 15000 & 15000 & 15000 \\
    \hline
    V8 & 6250 & 6250 & 6250 & 6250 & 6250 \\
    \hline
\end{tabular}

\end{document} 

在此处输入图片描述

相关内容