我的问题:我有几个表格,每个表格跨越多页(长表),大约有 100-150 行。我希望表格中的数字格式化,以便它们在小数点处对齐,每个单元格有 2 个 2 个数字,中间有一条垂直线 (|)。此外,一些数字是粗体。| 应该在每个表格中的所有行上对齐。
到目前为止,我设法做到了这一点。但是,问题是,如果数字变大(例如,> 100),则数字后会添加额外的空格,从而导致 MWE 中显示的不良格式。我希望每行中的两个数字都紧密围绕 | ,以便第一个数字右对齐,第二个数字左对齐。
我也尝试了 siunitx 包,因为我读到它更灵活,但我无法让它处理粗体数字。
梅威瑟:
\documentclass{article}
\usepackage{newtxtext}
\usepackage{array}
\newcolumntype{L}[1]{>{\raggedright\let\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{C}[1]{>{\centering\let\\\arraybackslash\hspace{0pt}}m{#1}}
\usepackage{longtable}
\usepackage{dcolumn}
\usepackage{makecell}
\usepackage{calc}
\usepackage{multirow}
\newcommand{\mr}{\multirow}
\newcommand{\mc}{\multicolumn}
\begin{document}
\newcolumntype{.}{D{.}{.}{-1}}
\makeatletter
\newcolumntype{B}[3]{>{\boldmath\DC@{#1}{#2}{#3}}c<{\DC@end}}
\makeatother
\begin{longtable}{L{3.6cm}|>{\centering}m{2.2cm}|.c.|.c.}
\hline\hline
& X & \mc{6}{c}{Some header text}\\
Y & Z & \mc{3}{C{2.75cm}}{A} & \mc{3}{C{2.75cm}}{B}\\
\hline
\endfirsthead
\mc{4}{c}%
{\tablename\thetable\ -- \textit{Continued from previous page}} \\
\hline\hline
& X & \mc{6}{c}{Some header text}\\
Y & Z & \mc{3}{C{2.75cm}}{A} & \mc{3}{C{2.75cm}}{B}\\
\hline
\endhead
\hline \mc{8}{r}{\textit{Continued on next page}}
\endfoot
\hline
\endlastfoot
\mr{2}{*}{A1} & \mr{2}{*}{N1} & \mc{1}{B{.}{.}{-1}}{-2.8} & | & 3.1 & 2.4 & | & 0.8 \\
& & 0.9 & | & 2.4 & 0.8 & | & 3.7 \\
\mr{2}{*}{A2} & \mr{2}{*}{N2} & -200.8 & | & 3.1 & \mc{1}{B{.}{.}{-1}}{-5.4} & | & 0.8 \\
& & 0.9 & | & 2.4 & 0.8 & | & 3.7 \\
\hline
\end{longtable}
\end{document}
答案1
您使用的D..{-1}
总是将 放在.
列的中心。为每列选择更好的格式,因此
D..{4.1} D..{1.1} D..{2.1} D..{1.1}
为了
最宽的条目
-200.8 & 3.1 & -5.4 & 3.7