问题描述
我正在尝试结合 LaTex 中的 tabularx 和 dcolumn usepackage 来格式化我的表格。我的目标是创建一个表格;
- 拉伸文本的宽度
- 对于包含数值数据的列(即第 2-4 列),列宽固定(2cm)。
- 将数值数据沿小数点左右对齐。
通过使用带有 \textwidth 参数的 tabularx,表格的外部尺寸是正确的。我很难将第 2 点和第 3 点结合起来。表 1 中含有数值数据的列的列宽正确,但它们在小数点附近没有对齐。使用 dcolumn 包创建 \newcolumntype 并将其插入 \multicolumn 会丢弃定义的列宽(表 2)。
我找到了两篇相关的帖子,但它们对解决这个特定问题没有帮助。
将 dcolumn 中定义的列类型与 tabularx 结合起来
dcolumn 和 tabularx,第 2 部分
欢迎提出任何想法!
谢谢
代码
-MiKTeX 2.9
\documentclass[11pt,a4paper]{article}
%preamble
\usepackage{array}
\usepackage{dcolumn}
\usepackage{tabularx}
\begin{document}
\newcolumntype{.}{D{.}{.}{-1}}
\begin{table}[!h]
\caption{correct table layout (column spacing of column 2, 3, 4)}
\begin{tabularx}{\textwidth}{| X | m{2cm} | m{2cm} | m{2cm} |}
\hline
item1 & 3.14 & 12.23 & 1.23\\
\hline
item2 & 31.4 & 0.13 & 74.25\\
\hline
\end{tabularx}
\end{table}
\begin{table}[!h]
\caption{correct cell alignment on decimal point}
\begin{tabularx}{\textwidth}{| X | m{3cm} | m{3cm} | m{3cm} |}
\hline
item1 & \multicolumn{1}{| . |}{3.14} & \multicolumn{1}{ . |}{12.23} & \multicolumn{1}{| . |}{1.23}\\
\hline
item2 & \multicolumn{1}{| . | }{31.4} & \multicolumn{1}{ . |}{0.13} & \multicolumn{1}{| . |}{74.25}\\
\hline
\end{tabularx}
\end{table}
\end{document}
答案1
也许是时候开始使用siunitx
包及其S
列类型了。它提供table-column-width
键并能够在小数点处对齐。
\documentclass[11pt,a4paper]{article}
%preamble
\usepackage{array}
\usepackage{siunitx}
\usepackage{tabularx}
\begin{document}
\begin{table}[!h]
\sisetup{
table-format = 2.2 ,
table-number-alignment = center ,
table-column-width = 2cm ,
}
\caption{correct table layout (column spacing of column 2, 3, 4) and decimal alignment using \texttt{S} column type}
\begin{tabularx}{\textwidth}{| X | S | S | S |}
\hline
item1 & 3.14 & 12.23 & 1.23\\
\hline
item2 & 31.4 & 0.13 & 74.25\\
\hline
\end{tabularx}
\end{table}
\begin{table}[!h]
\caption{correct table layout (column spacing of column 2, 3, 4)}
\begin{tabularx}{\textwidth}{| X | m{2cm} | m{2cm} | m{2cm} |}
\hline
item1 & 3.14 & 12.23 & 1.23\\
\hline
item2 & 31.4 & 0.13 & 74.25\\
\hline
\end{tabularx}
\end{table}
\end{document}