我正在使用该threeparttable
包排版带有一些脚注的表格。
我想使用 提供的功能对齐每个数字列中的条目siunitx
。但是,当表格条目有脚注标签时,它会弄乱列对齐。
在第一个数字列中领导tnote 标签,对齐不会发生。在第二个数字列中尾随tnote 标签,对齐工作正常,但 tnote 上标标签不接近数字。
我需要的是领导tnote 版本,其中列在小数点对齐,并且上标标签与\thinspace
列中的每个数字保持接近(可能最多带有)。
如何实现?如有必要,我很乐意使用dcolumn
或打包,而不是。pgftables
siunitx
以下是生成上表的代码
\documentclass[a4paper,12pt]{article}
\usepackage[english]{babel}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[a4paper,top=3cm,bottom=2cm,left=3cm,right=3cm,marginparwidth=1.75cm]{geometry}
\usepackage{threeparttable}
\usepackage{booktabs}
\usepackage{siunitx}
\begin{document}
\begin{table}[htb]
\caption{The best table ever}
\label{tbl:importanttable}
\centering
\begin{threeparttable}
\begin{tabular}{@{} l S[table-format=4.2] S[table-format=4.2]} % Works with tnote
\toprule
\multicolumn{1}{@{} l}{Description} & \multicolumn{1}{c}{Experiment 1} & \multicolumn{1}{c}{Experiment 2} \\
\midrule
First thing, & \tnote{a} 1791 & 2427 \tnote{b} \\
Second thing & \tnote{a} 272.8 & 90.2 \tnote{c} \\
third thing & \tnote{d} 82.28 & 43.72 \tnote{d}\\
Fourth thing & \tnote{d} 3 & 130 \tnote{e}\\
\bottomrule
\end{tabular}
\begin{tablenotes}[para,flushleft]
\item[a] blah
\item[b] more blah
\item[c] stuff
\item[d] assumed
\item[e] given
\end{tablenotes}
\end{threeparttable}
\end{table}
\end{document}
更新
使用makebox*{00}[l]\tnote{a}
用户 Bernard 的回答中的技术需要手动调整文本宽度,这对于大于几个单元格的任何内容都是有问题的。例如,这对下表不起作用。
Thing1 & {\tnote{a}}0.31 \\
Thing2 & {\tnote{b}}2.40 \\
Thing3 & {\tnote{d}}6.50 \\
Thing4 & {\tnote{c}}6.00 \\
Thing5 & {\tnote{e}}8.94 \\
Thing6 & {\tnote{f}}26.82 \\
Thing7 & {\tnote{e}}13.41 \\
Thing8 & {\tnote{f}}1.20 \\
Thing9 & {\tnote{g}}0.75 \\
Thing10 & {\tnote{c}}150.60 \\
Thing11 & {\tnote{f}}0.01 \\
Thing12 & {\tnote{g}}0.00 \\
答案1
您需要“告诉”siunitx
命令不要展开:最简单的方法是使用etoolbox
及其\robustify
命令。然后您需要保留一点空间,使用table-space-text-pre
(这将在即将推出的 v3 版软件包中简化)。对于\tnote
,还有一个额外的问题,因为定义本身会进行一些间距处理,这会混淆中的方法siunitx
。因此,我们也需要一个修改过的命令:
\documentclass[a4paper,12pt]{article}
\usepackage[english]{babel}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[a4paper,top=3cm,bottom=2cm,left=3cm,right=3cm,marginparwidth=1.75cm]{geometry}
\usepackage{threeparttable}
\usepackage{booktabs}
\usepackage{siunitx}
\usepackage{etoolbox}
\newrobustcmd{\Tnote}[1]{\textsuperscript {\TPTtagStyle {#1}}}
\begin{document}
\begin{table}[htb]
\caption{The best table ever}
\label{tbl:importanttable}
\centering
\begin{threeparttable}
\begin{tabular}{@{} l S[table-format=4.2,table-space-text-pre=\Tnote{a},table-align-text-pre=false] S[table-format=4.2]} % Works with tnote
\toprule
\multicolumn{1}{@{} l}{Description} & \multicolumn{1}{c}{Experiment 1} & \multicolumn{1}{c}{Experiment 2} \\
\midrule
First thing, & \Tnote{a} 1791 & 2427 \Tnote{b} \\
Second thing & \Tnote{a} 272.8 & 90.2 \Tnote{c} \\
third thing & \Tnote{d} 82.28 & 43.72 \Tnote{d}\\
Fourth thing & \Tnote{d} 3 & 130 \Tnote{e}\\
\bottomrule
\end{tabular}
\begin{tablenotes}[para,flushleft]
\item[a] blah
\item[b] more blah
\item[c] stuff
\item[d] assumed
\item[e] given
\end{tablenotes}
\end{threeparttable}
\end{table}
\end{document}
答案2
表格前注释的对齐似乎存在问题(可能是错误?),但我可以解决表格注释的问题后数字。这是我能得到的最好的结果,添加了caption
包以更好地在标题和表格之间留出空间,并简化了第一行的代码(不需要\multicolumn
):
\documentclass[a4paper, 12pt]{article}
\usepackage[english]{babel}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[a4paper ,top=3cm, bottom=2cm, hmargin=3cm, marginparwidth=1.75cm]{geometry}
\usepackage{threeparttable}
\usepackage{booktabs}
\usepackage{siunitx}
\usepackage{caption}
\begin{document}
\begin{table}[htb]
\caption{The best table ever}
\label{tbl:importanttable}
\centering
\sisetup{table-format=4.2, table-number-alignment=center, table-space-text-pre=\textsuperscript{a}, table-space-text-post=\textsuperscript{a}, table-align-text-post=false}
\begin{threeparttable}
\begin{tabular}{@{} l SS} % Works with tnote
\toprule
Description & {Experiment 1} &{Experiment 2} \\
\midrule
First thing, & {\tnote{a}} 1791 & 2427 \tnote{b} \\
Second thing & {\tnote{a}} 272.8 & 90.2 \tnote{c} \\
third thing & {\tnote{d}} 82.28 & 43.72 \tnote{d}\\
Fourth thing & {\tnote{d}} 3 & 130 \tnote{e}\\
\bottomrule
\end{tabular}
\begin{tablenotes}[para,flushleft]
\item[a] blah
\item[b] more blah
\item[c] stuff
\item[d] assumed
\item[e] given
\end{tablenotes}
\end{threeparttable}
\end{table}
\end{document}
编辑:
以下是对小包进行修改makebox
,使表格注释在第二列靠近数字的位置:
\usepackage{makebox}
....................
\begin{table}[htb]
\caption{The best table ever}
\label{tbl:importanttable}
\centering
\sisetup{table-format=4.2, table-number-alignment=center, table-space-text-pre=a, table-align-text-pre=false, table-space-text-post=\textsuperscript{a}, table-align-text-post=false}
\begin{threeparttable}
\begin{tabular}{@{} l SS} % Works with tnote\textsuperscript{a}
\toprule
Description & {Experiment 1} &{Experiment 2} \\
\midrule
First thing, & {\tnote{a}} 1791 & 2427 \tnote{b} \\
Second thing & {\makebox*{0}[l]{\tnote{a}}} 272.8 & 90.2 \tnote{c} \\
third thing & {\makebox*{0}[l]{\tnote{d}}} 82.28 & 43.72 \tnote{d} \\
Fourth thing & {\makebox*{0}[l]{\tnote{d}}} 3 & 130 \tnote{e} \\
\bottomrule
\end{tabular}
\begin{tablenotes}[para,flushleft]
\item[a] blah
\item[b] more blah
\item[c] stuff
\item[d] assumed
\item[e] given
\end{tablenotes}
\end{threeparttable}
\end{table}