我想使用 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}