我希望列在左侧不齐整,并且靠在左侧。我使用 0pt 宽度的虚拟 (Z) 列和多列标题实现了这一点。
但是,现在我无法在列之间添加任何空格,因为它会干扰对齐。即使尝试添加 0pt 的空格也会导致错位。这是怎么回事?
平均能量损失
\documentclass{report}
\usepackage{inputenc}
\usepackage{array}
\usepackage{booktabs}
\usepackage[singlelinecheck=false]{caption}
\newcommand{\mc}{\multicolumn} % multicolumn is too many letters...
\newcolumntype{Z}{@{}p{0pt}} % dummy column
\begin{document}
% Value column is correctly aligned
\begin{table}[h]
\caption*{\textit{Value} column is correctly aligned}
\begin{tabular}[l]{@{} r@{ }rZ rZ @{}}
\toprule
\mc{3}{@{}l}{Time} & \mc{2}{l@{}}{Value} \\
\midrule
6h & 0m & & -1.1 & \\
19h & 15m & & 26.3 & \\
\bottomrule
\end{tabular}
\end{table}
% With \hskip, Value column is not correctly aligned
\vspace{2em}
\begin{table}[h]
\caption*{\textit{Value} column is not correctly aligned}
\begin{tabular}{@{} r@{ }rZ @{\hskip 20pt} rZ @{}}
\toprule
\mc{3}{@{}l}{Time} & \mc{2}{l@{}}{Value} \\
\midrule
6h & 0m & & -1.1 & \\
19h & 15m & & 26.3 & \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
编辑:图片
编辑2:答案
siunitx 似乎是我想要的。下表是方式对于我想做的事情来说更好。
\begin{tabular}[h!]{
@{}
S[
table-format=2,
table-space-text-post=\si{\hour},
table-number-alignment=left]
@{\hspace{5pt}}
S[
table-format=2,
table-space-text-post=\si{\meter},
table-number-alignment=left]
S[
table-format=-1.1,
table-number-alignment=left]
@{}
}
\toprule
\mc{2}{@{}l}{Time} & {Value} \\
\midrule
6 \si{\hour} & 0 \si{\meter} & -1.1 \\
19 \si{\hour} & 15 \si{\meter} & 26.3 \\
\bottomrule
\end{tabular}
\si{\meter}
有点像 hack,但我更喜欢用分钟m
来表示,因为它占用的空间更少,并且与用天和用小时min
一致。d
h
感谢所有回复的人!
答案1
我不确定您所说的“值列正确对齐”是什么意思,因为它似乎并非如此。
借助以下工具可以更好地处理数字表siunitx
:
\documentclass{report}
\usepackage{array}
\usepackage{siunitx,booktabs}
\begin{document}
Value column is correctly aligned
\begin{tabular}{@{} r@{\,}r S[table-format=-1.1] @{}}
\toprule
\multicolumn{2}{@{}l}{Time} & {Value} \\
\midrule
6h & 0m & -1.1 \\
19h & 15m & 26.3 \\
\bottomrule
\end{tabular}
\medskip
\begin{tabular}{
@{}
r@{\,}r % time columns
@{\hspace{20pt}}
S[table-format=-1.1] % value column
@{}
}
\toprule
\mc{2}{@{}l}{Time} & {Value} \\
\midrule
6h & 0m & -1.1 \\
19h & 15m & 26.3 \\
\bottomrule
\end{tabular}
\end{document}
格式为,-1.2
因为减号比数字宽;如果第一个值是-21.1
,则格式应该是,-2.1
依此类推。
请注意,[l]
选项tabular
不执行任何操作:有意义的选项是c
(默认),t
或b
。\hskip
不建议在 LaTeX 文档中使用:最好使用\hspace
。
答案2
不确定你想要哪种对齐方式,但也许是其中一种
\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage{dcolumn}
\usepackage{booktabs}
\usepackage[singlelinecheck=false]{caption}
\newcolumntype{d}{D..{2.1}}
\newcommand{\mc}{\multicolumn} % multicolumn is too many letters...
%what?\newcolumntype{Z}{@{}p{0pt}} % dummy column
\begin{document}
% Value column is correctly aligned
\begin{table}[htp]
\caption*{\textit{Value} column is correctly aligned}
\begin{tabular}{@{}rr@{\qquad} d @{}}
\toprule
\mc{2}{@{}l}{Time} & \mc{1}{c@{}}{Value} \\
\midrule
6h & 0m & -1.1 \\
19h & 15m & 26.3 \\
\bottomrule
\end{tabular}
\bigskip
\begin{tabular}{@{}rr@{\qquad} r @{}}
\toprule
\mc{2}{@{}l}{Time} & \mc{1}{c@{}}{Value} \\
\midrule
6h & 0m & -1.1 \\
19h & 15m & 26.3 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}