如何正确使用 table-align-text-post 和 table-number-alignment

如何正确使用 table-align-text-post 和 table-number-alignment

我想使用 siunitx 包创建一个简单的表格。表格的右列应如下所示:

  • T 应该位于所有内容的正上方,位于下方
  • 下面的数字和文字应单独对齐
  • 数字应在小数点处对齐
  • 文本应左对齐

在阅读了 siunitx 的用户指南后,我认为两个合适的命令是:“table-number-alignment = center”将 T 置于其他所有内容之上,“table-align-text-post = true”对齐文本(居中而不是左对齐,但可以稍后弄清楚)。小数点上的对齐已经是默认的

让我们看看结果:

\documentclass[12pt,a4paper,twoside]{scrreprt} 

\usepackage{amsmath} 
\usepackage{amssymb}
\usepackage[english]{babel}
\usepackage{hhline}
\usepackage{siunitx}

\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}
\renewcommand{\arraystretch}{2}

\begin{document} % Dokument beginnen

\sisetup{table-align-text-post = true}
\begin{table}[t!]
\begin{center}
\begin{tabular}{@{}C{0.25\textwidth}@{}S[table-column-width = 0.25\textwidth]@{}}
\hline\hline
 {Type} & {T} \\
\hhline{--}
1 & 2.222 \textsuperscript{a} \\
2 & 3.333 \textsuperscript{b} \\
3 & 4.444 \textsuperscript{c} \\
4 & 5.555 \textsuperscript{d}  \\
5 & 6.66  \textsuperscript{e}  \\
\hline\hline
\end{tabular}
\end{center}
\end{table}

\sisetup{table-number-alignment = center,table-align-text-post = true}
\begin{table}[t!]
\begin{center}
\begin{tabular}{@{}C{0.25\textwidth}@{}S[table-column-width = 0.25\textwidth]@{}}
\hline\hline
 {Type} & {T} \\
\hhline{--}
1 & 2.222 \textsuperscript{a} \\
2 & 3.333 \textsuperscript{b} \\
3 & 4.444 \textsuperscript{c} \\
4 & 5.555 \textsuperscript{d}  \\
5 & 6.66  \textsuperscript{e}  \\
\hline\hline
\end{tabular}
\end{center}
\end{table}

\end{document}

在此处输入图片描述

不知何故,table-align-text-post = true 不会自行对齐帖子文本,如果使用 table-number-alignment = center,它会对齐帖子文本,但会与数字重叠。我的第一个想法是,可以通过为 table-format 选择正确的值来避免重叠,但这不起作用。而且在任何情况下,T 都不会位于数字上方的中心。

答案1

欢迎来到 TeX.SE!

  • 您的最后一个要求不明确。您希望哪些文本左对齐?
  • 不要在浮动中使用center环境。它添加了虚假的垂直空间。相反,它更愿意使用\begin{table}`,如下面的 MWE(最小工作示例)中所做的那样。table\centering command after
  • 列中文本的默认位置S是居中
  • 您需要定义数字格式。您需要在数字处保留注释(指数)的空间(请参阅下面的 MWE)
  • 我宁愿hhline使用bootabs第二个例子中的规则。
  • 由于数字中添加了指数,我猜你喜欢添加(后面的)表格注释。在这种情况下,你会看到“threparttable”。这可能会对你有所帮助。
\documentclass[12pt,a4paper,twoside]{scrreprt}

\usepackage{amsmath}
\usepackage{amssymb}
\usepackage[english]{babel}
\usepackage{booktabs,
            hhline}
\usepackage{siunitx}

\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\renewcommand{\arraystretch}{2}

\begin{document} % Dokument beginnen

\begin{table}[t!]
\sisetup{table-format=1.3{*},
         table-align-text-after=false}
\centering
\begin{tabular}{@{} C{0.25\textwidth} S[table-column-width = 0.25\textwidth] @{}}
    \hhline{==} % <--- changed
Type    &   {T} \\
    \hhline{--}
1   & 2.222 \textsuperscript{a} \\
2   & 3.333 \textsuperscript{b} \\
3   & 4.444 \textsuperscript{c} \\
4   & 5.555 \textsuperscript{d}  \\
5   & 6.66  \textsuperscript{e}  \\
    \hhline{==}
\end{tabular}

\bigskip
\begin{tabular}{@{} C{0.25\textwidth} S[table-column-width = 0.25\textwidth] @{}}
    \toprule
Type    &   {T} \\
    \midrule
1   & 2.222 \textsuperscript{a} \\
2   & 3.333 \textsuperscript{b} \\
3   & 4.444 \textsuperscript{c} \\
4   & 5.555 \textsuperscript{d}  \\
5   & 6.66  \textsuperscript{e}  \\
    \bottomrule
\end{tabular}
\end{table}

\end{document}

上述结果是您所追求的吗?

在此处输入图片描述

附录: 您可以考虑使用tabularray包来写表:

\documentclass[12pt,a4paper,twoside]{scrreprt}
\usepackage{tabularray}
\UseTblrLibrary{booktabs, siunitx}

\begin{document} 
    \begin{table}[t!]
\sisetup{table-format=1.3{*},
         table-align-text-after=false}
\centering
\begin{tblr}{ width=0.5\textwidth,
            colspec={@{} X[c] X[c, si] @{}},
            row{1} ={guard}
            }
    \toprule
Type    &   {T} \\
    \midrule
1   & 2.222 \textsuperscript{a} \\
2   & 3.333 \textsuperscript{b} \\
3   & 4.444 \textsuperscript{c} \\
4   & 5.555 \textsuperscript{d} \\
5   & 6.66  \textsuperscript{e} \\
    \bottomrule
\end{tblr}
\end{table}

\end{document}

在此处输入图片描述

相关内容