我想将表格中的一些小数列按小数点对齐。我尝试使用 dcolumn 包来实现这一点,但当我按照下面所列的方式使用它时,我的列宽变得过大,以至于无法容纳在页面上(A4)。
\usepackage{dcolumn}
\usepackage{hhline, multirow, array, cellspace}
\setlength{\cellspacetoplimit}{3pt}
\setlength{\cellspacebottomlimit}{3pt}
\newcolumntype{.}{D{.}{.}{-2}}
...
{\setlength{\doublerulesep}{1em}
\centering
\begin{tabular}{*{3}{ | Sc | Sc | S. |}}
\hhline{---||---||---}
\multicolumn{1}{|Sc|}{\multirow{2}{*}{\textbf{Symbol}} } &
\multicolumn{2}{Sc||}{\textbf{Probability}} &
\multicolumn{1}{Sc|}{\multirow{2}{*}{\textbf{Symbol}} } &
\multicolumn{2}{Sc||}{\textbf{Probability}} &
\multicolumn{1}{Sc|}{\multirow{2}{*}{\textbf{Symbol}} } &
\multicolumn{2}{Sc|}{\textbf{Probability}} \\
\hhline{|~|--||~|--||~|--}
& \textbf{abs.} & \textbf{rel. [\%]} &
& \textbf{abs.} & \textbf{rel. [\%]} &
& \textbf{abs.} & \textbf{rel. [\%]} \\
\hhline{---||---||---}
A & 22 & 81.16 & J & 3 & 0.16 & S & 34 & 6.32 \\
B & 104 & 1.49 & K & 58 & 0.77 & T & 33 & 9.05 \\
\hhline{---||---||---}
\end{tabular}}
没有 dcolumn 对齐:
\begin{tabular}{*{3}{ | Sc | Sc | Sc |}}
使用 dcolumn 对齐:
\begin{tabular}{*{3}{ | Sc | Sc | S. |}}
有人可以帮我以紧凑的方式对齐十进制值吗?
答案1
两个建议:
将单元格标题 --
\textbf{rel. [\%]}
--放在\multicolumn{1}{c||}{...}
包装器中定义一个新的列类型——例如
d
——它接受一个参数,但除此之外对小数点进行对齐。使用\newcolumntype{.}{D{.}{.}{-2}}
simply 提供的设置无法实现真正紧凑的数字列。我还会对“abs.”列中的(隐含的)小数标记进行对齐。
在下面的代码中,请注意第一对小数对齐列的规范与其他两对小数对齐列的规范不同。
\documentclass{article}
%% simplified code to bare minimum
\usepackage{dcolumn, hhline, geometry}
\newcolumntype{d}[1]{D{.}{.}{#1}}
\renewcommand\arraystretch{1.5}
\begin{document}
\setlength{\doublerulesep}{1em}
\centering
\begin{tabular}{ |c|d{3.0}|d{2.2}| *{2}{ |c|d{2.0}|d{1.2}|} }
\hhline{---||---||---}
Symbol & \multicolumn{2}{c||}{Probability} &
Symbol & \multicolumn{2}{c||}{Probability} &
Symbol & \multicolumn{2}{c|}{Probability} \\
\hhline{|~|--||~|--||~|--}
& \multicolumn{1}{c|}{abs.} & \multicolumn{1}{c||}{rel.\ [\%]}
& & \multicolumn{1}{c|}{abs.} & \multicolumn{1}{c||}{rel.\ [\%]}
& & \multicolumn{1}{c|}{abs.} & \multicolumn{1}{c|}{rel.\ [\%]} \\
\hhline{---||---||---}
A & 22 & 81.16 & J & 3 & 0.16 & S & 34 & 6.32 \\
B & 104 & 1.49 & K & 58 & 0.77 & T & 33 & 9.05 \\
\hhline{---||---||---}
\end{tabular}
\end{document}