我之前问过一个问题,关于在使用 siunitx 列定义时在表中给数据加下划线的问题S
(请参阅表格中下划线和 siunitx 的使用)。给出的建议很完美,直到我添加了\sisetup{table-format=2.1}
以减少数字占用的空间量。我现在已经设法将我的表格完美地分开,所以我真的不想删除\sisetup
,但这行意味着表格中任何带下划线的值现在都没有按小数点对齐。
有什么方法可以将下划线与此结合起来吗\sisetup
?
梅威瑟:
\documentclass{article}
\usepackage{etoolbox,siunitx,booktabs,threeparttable,multirow,array,graphicx}
\usepackage[normalem]{ulem}
\robustify\bfseries
\robustify\uline
\sisetup{detect-weight = true,
detect-inline-weight = math,
tight-spacing = true,
table-format = 2.1,
}
\begin{document}
\begin{table}
\caption{Insert caption here}
\centering
\begin{threeparttable}[b]
\begin{tabular}{SS}
\toprule
{Column 1} & {Column 2}\\
\midrule
7.1 & 4.2\\
\uline{8.7} & 6.5\\
9.3 & \uline{1.0}\\
\bottomrule
\end{tabular}
\end{threeparttable}
\end{table}
\end{document}
答案1
在这里,我只是巧妙地使用了\llap
,并将其合并到 中Uline
。不确定它是否能处理所有情况,但我愿意根据需要进一步调整。第一个版本最简单,但如果表格数据不符合 ,可能会造成混淆table-format
:
\documentclass{article}
\usepackage{etoolbox,siunitx,booktabs,threeparttable,multirow,array,graphicx}
\usepackage[normalem]{ulem}
\robustify\bfseries
\robustify\uline
\sisetup{detect-weight = true,
detect-inline-weight = math,
tight-spacing = true,
table-format = 2.1,
}
\def\Uline#1{#1\llap{\uline{\phantom{#1}}}}
\begin{document}
\begin{table}
\caption{Insert caption here}
\centering
\begin{threeparttable}[b]
\begin{tabular}{SS}
\toprule
{Column 1} & {Column 2}\\
\midrule
7.1 & 4.2\\
\Uline{8.7} & 6.5\\
9.3 & \Uline{11.0}\\
\bottomrule
\end{tabular}
\end{threeparttable}
\end{table}
\end{document}
如果数据条目不符合,则此替代版本更为强大。但是,必须根据设置table-format
的定义。以下是一些相应的值:\Decimal
table-format
table-format = 2.0 ---> \def\Decimal{}
table-format = 2.1 ---> \def\Decimal{.0}
table-format = 2.2 ---> \def\Decimal{.00}
已编辑以处理 的情况\Uline{11.}
,自动在小数点后添加零。已重新编辑以将光标置于数据输入的末尾,这样,例如,\Uline{11.2}345
行为符合预期,带有11.2
下划线,而 则345
不然。
\documentclass{article}
\usepackage{etoolbox,siunitx,booktabs,threeparttable,multirow,array,graphicx}
\usepackage[normalem]{ulem}
\robustify\bfseries
\robustify\uline
\sisetup{detect-weight = true,
detect-inline-weight = math,
tight-spacing = true,
table-format = 2.2,
}
\def\Decimal{.00}% This structure should corresponds to the ".2" of "table-format"
\def\Uline#1{\Ulinehelp#1 }
\def\Ulinehelp#1.#2 {%
#1.#2\setbox0=\hbox{#1\Decimal}\hspace{-\wd0}{\if\relax#2\relax%
\uline{\phantom{#1.0}}\else\uline{\phantom{#1.#2}}\fi}%
}
\begin{document}
\begin{table}
\caption{Insert caption here}
\centering
\begin{threeparttable}[b]
\begin{tabular}{SS}
\toprule
{Column 1} & {Column 2}\\
\midrule
\Uline{7.10} & \Uline{544.2123}\\
\Uline{8.777} & 6.5\\
9.3 & \Uline{11.}\\
\bottomrule
\end{tabular}
\end{threeparttable}
\end{table}
\end{document}