Latex 表格标题列与下方行对齐

Latex 表格标题列与下方行对齐

我想让 latex 表中的列值对齐。正如您在下表中看到的,从第 6 列开始的标题列与下面的行值不对齐。

我希望有人能帮助我对齐标题列,使它们稍微向左移动,特别是第 6、7、9 和 10 列!

在此处输入图片描述

\begin{table}[ht!]
\caption{Shapefile movement times (in \textit{seconds}) }
\label{tab:maskingencryptiontimes}
\begin{threeparttable}
\begin{tabular}{lccrrrrrrrr}
\headrow


\multicolumn{1}{c}{Filename} 
& \multicolumn{1}{c}{\begin{tabular}[c]{@{}c@{}}Size \\ (Kb)\end{tabular}} 
& \multicolumn{1}{c}{Points} 
& \multicolumn{2}{c}{\begin{tabular}[c]{@{}c@{}}Neutral \\    \textit{w/o SM}~~~~ \textit{w/ SM} \end{tabular} }                  
& \multicolumn{3}{r}{\begin{tabular}[c]{@{}c@{}}Forward \\ \textit{1 lev}~~~~ \textit{2 lev}~~ \textit{3 lev} \end{tabular} }               
& \multicolumn{3}{r}{\begin{tabular}[c]{@{}c@{}}Backward \\ \textit{1 lev}~~~~ \textit{2 lev}~~ \textit{3 lev}  \end{tabular} } \\
Belgium-points.zip & 363 & 13,427 & 1.37 & 30.52 & 0.63 & 1.32 & 2.39 & 0.36 & 0.46 & 0.57 \\


\hiderowcolors
\hline  % Please only put a hline at the end of the table
\end{tabular}
   
\end{threeparttable}
\end{table}

我还希望行的(灰色背景)颜色从标题级别开始,然后交替。前两行 - 合并为一行 - 应该被着色为一行,下一行应该是无色的(白色背景),然后下一行应该是彩色的。之后我还有几行。我在帖子中附上了一张图片。蓝色矩形包围的区域应该被涂成灰色 - 基本上与我们现在的完全相反。颜色应该与 F. Pantigny 在他的解决方案输出中显示的颜色相同。非常感谢。

在此处输入图片描述

答案1

  • 错过的是MWE(最小工作示例),一个小但完整的文档,它重现了您的问题。
  • 由于缺少 MWE,您的页面布局未知,因此表格可能太宽,无法放在页面上
  • 因此,不完全清楚您为什么使用threeparttable(您的代码片段不包含任何表格注释),您的问题是什么以及您追求什么。

编辑:

  • 显然原始问题并不完整(因此有部分误导)。
  • 关于着色行的额外要求可以使用原始答案通过row{odd[3-Z]} = {gray!30}在表格序言中添加选项来简单满足(参见下面的 MWE)。
  • 所以,现在我猜你可能正在寻找这样的东西:

在此处输入图片描述

对于该表,我使用tabularray带有库的包booktabssiunitx,将列标题分成两行,其中第一列是多列单元格,第二列是每列的标题。

\documentclass{article}
\usepackage{geometry}
\usepackage{xcolor}
\usepackage{tabularray}
\UseTblrLibrary{booktabs, siunitx}

\begin{document}
    \begin{table}[ht]
    \small
\begin{talltblr}[
caption={Shapefile movement times (in \textit{seconds})},
  label={tab:maskingencryptiontimes}
                ]{colsep = 3pt,
                  colspec = {l c 
                                  X[c, si={table-format=2.3}]
                             *{8}{X[c, si={table-format=2.2}]} 
                            },
                  cell{1}{1-3} = {r=2}{},
                  cell{2}{4-Z} = {font=\itshape},
                  row{1}  = {guard, font=\footnotesize\bfseries},
                  row{2}  = {guard, font=\footnotesize}, 
                  row{odd[3-Z]} = {gray!30} % added for "zebra" coloring of table
                  }
    \toprule
Filename
    &   {Size\\ (Kb)}
        &   Points
            &   \SetCell[c=2]{c}    Neutral
                &   &   \SetCell[c=3]{c}  Forward
                        &   &   &   \SetCell[c=3]{c}  Backward
                                        &   &           \\
    \cmidrule[lr]{4-5}
    \cmidrule[lr]{6-8}
    \cmidrule[lr]{9-11}
    &   &   &   w/o SM
                &   w/ SM
                    &   1 lev
                        &   2 lev
                            &   3 lev
                                &   1 lev
                                    &   2 lev
                                        &   3 lev     \\
    \midrule
Belgium-points.zip 
    & 363 
        & 13,427 
            & 1.37 
                & 30.52 
                    & 0.63 
                        & 1.32 
                            & 2.39 
                                & 0.36 
                                    & 0.46 
                                        & 0.57      \\
    \bottomrule
\end{talltblr}
    \end{table}
\end{document}

答案2

这使用多行和普通表格。我找不到你的两个宏。

将标题与列对齐的最简单方法是使用它们。起初我尝试将所有标题居中,然后意识到在大多数情况下这并不重要。

最后,您在文件名上占用了太多宽度。我会尝试使用表格注释来缩写。

\documentclass{article}
\usepackage{threeparttable}
\usepackage{multirow}
\usepackage{showframe}% show margins
\begin{document}

\begin{table}[ht!]
\caption{Shapefile movement times (in \textit{seconds}) }
\label{tab:maskingencryptiontimes}
\begin{threeparttable}
\begin{tabular}{lccrrrrrrrr}
%\headrow% could not find in sty files
\multirow{2}{*}{Filename} 
  & Size
  & \multirow{2}{*}{Points} 
  & \multicolumn{2}{c}{Neutral}            
  & \multicolumn{3}{c}{Forward}               
  & \multicolumn{3}{c}{Backward}
\\
  & (Kb)
  &
  & \textit{w/o SM} & \textit{w/ SM}% widest row
  & \textit{1 lev} & \textit{2 lev} & \textit{3 lev}
  & \textit{1 lev} & \textit{2 lev} & \textit{3 lev}
\\
  Belgium-points.zip & 363 & 13,427 & 1.37 & 30.52 & 0.63 & 1.32 & 2.39 & 0.36 & 0.46 & 0.57 \\
%\hiderowcolors% could not find in sty files
\hline  % Please only put a hline at the end of the table
\end{tabular}
   
\end{threeparttable}
\end{table} 
\end{document}

答案3

{NiceTabular}这是的解决方案nicematrix。您需要进行多次编译。

无论您使用哪种 PDF 查看器,都不会在彩色面板中看到细白线……

\documentclass{article}
\usepackage{geometry}
\usepackage{xcolor}
\usepackage{nicematrix}
\usepackage{booktabs}
\usepackage{caption}

\begin{document}

\begin{table}[ht]

\caption{Shapefile movement times (in \textit{seconds})}

\small
\setlength{\tabcolsep}{2.5pt}

\begin{NiceTabular}{lcc*{8}{X[c]}}
\CodeBefore
\rowcolor{gray!30}{1,2}
\Body
\toprule
\RowStyle{\bfseries}
\Block{2-1}{Filename}
    & \Block{2-1}{Size\\ (Kb)}
        & \Block{2-1}{Points}
            &  \Block{1-2}{Neutral}
                &   & \Block{1-3}{Forward}
                        &   &   & \Block{1-3}{Backward} \\
    \cmidrule(lr){4-5}
    \cmidrule(lr){6-8}
    \cmidrule(lr){9-11}
\RowStyle{\footnotesize}
    &   &   &   w/o SM
                &   w/ SM
                    &   1 lev
                        &   2 lev
                            &   3 lev
                                &   1 lev
                                    &   2 lev
                                        &   3 lev     \\
    \midrule
Belgium-points.zip 
    & 363 
        & 13,427 
            & 1.37 
                & 30.52 
                    & 0.63 
                        & 1.32 
                            & 2.39 
                                & 0.36 
                                    & 0.46 
                                        & 0.57      \\
    \bottomrule
\end{NiceTabular}    

\end{table}

\end{document}

上述代码的输出

相关内容