我想让 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
带有库的包booktabs
和siunitx
,将列标题分成两行,其中第一列是多列单元格,第二列是每列的标题。
\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}