平均能量损失

平均能量损失

我希望列在左侧不齐整,并且靠在左侧。我使用 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一致。dh

在此处输入图片描述

感谢所有回复的人!

答案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(默认),tb\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}

相关内容