我想知道是否有任何方法可以在不删除线条的情况下为表格中的某些单元格添加阴影。我使用这个命令开始
\cellcolor[gray]{0.9}
但是单元格的上线消失了。有没有更好的方法给一些单元格上色?PS 我使用 longtable
以下是代码
\documentclass[a4paper,12pt]{mwrep}
\usepackage[MeX]{polski}
\usepackage[cp1250]{inputenc}
\usepackage[left=3.0cm,right=3cm,top=3.0cm,bottom=3.0cm]{geometry}
\usepackage{amsmath,amssymb}
\usepackage{graphicx}
\usepackage{setspace}
\usepackage{algorithmic}
\usepackage{colortbl}
\usepackage{dcolumn}
\usepackage{float}
\usepackage{tabularx}
\usepackage{longtable}
\usepackage[centerlast]{caption}
\usepackage{multirow}
\usepackage[section] {placeins}
\usepackage{booktabs}
\usepackage{xcolor}
\linespread{1.3}
\begin{document}
\begin{longtable}{!{\vrule width 2pt}c!{\vrule width 2pt}c!{\vrule width 2pt}c|c|c!{\vrule width 2pt}c|c|c!{\vrule width 2pt}c!{\vrule width 2pt}c!{\vrule width 2pt}}
\caption{Zależność wydajności algorytmu od jego parametrów.}
\label{tab:parameters}
\\ \hline
\multirow{2}{*}{Parametr} & \multirow{2}{*}{Wartość} & \multicolumn{3}{|c!{\vrule width 2pt}}{\textbf{Czas[s]}} & \multicolumn{3}{|c!{\vrule width 2pt}}{$\rho_{a}$} \\ \cline{3-10}
& & Zestaw 1 & Zestaw 2 & Zestaw 3 & Zestaw 1 & Zestaw 2 & Zestaw 3 \\ \hline
\multirow{4}{*}{$\rho_{select}$} & 0.5 & 58.0 & 266.4 & 131.4 & 0.98 & 0.8 & 0.95 \\ \cline{2-10}
& 0.6 & 55.0 & 270.1 & 145.6 & 0.95 & 0.85 & 0.85 \\ \cline{2-10}
& \cellcolor[gray]{0.9} 0.7 & 55.3 & 256.6 & 143.1 & 0.99 & 0.75 & 0.90 \\ \cline{2-10}
& 0.8 & 72.0 & 347.2 & 156.9 & 1.00 & 0.87 & 0.97 \\ \hline
\end{longtable}
\end{document}
答案1
\cline{...}
此处的问题在与 结合使用时被记为 的“特征” \cellcolor{...}
。colortbl
包裹 文档提到以下内容:
10 乐趣减少
\cline
\cline
如果您使用,则由 生成的线条是彩色的\arrayrulecolor
,但您可能不会注意到,因为它们被下一行中的任何彩色面板覆盖。这是 的“功能”\cline
。如果使用此包,您可能最好在参数-
中使用规则类型\hhline
,而不是\cline
。
因此,我的建议是使用hhline
包裹同一作者(David Carlisle)。请参阅包装文档有关如何指定\hhline
规则的更多详细信息:
\documentclass[a4paper,12pt]{mwrep}
...
\usepackage{hhline}% http://ctan.org/pkg/hhline
\begin{longtable}{!{\vrule width 2pt}c!{\vrule width 2pt}c!{\vrule width 2pt}c|c|c!{\vrule width 2pt}c|c|c!{\vrule width 2pt}c!{\vrule width 2pt}c!{\vrule width 2pt}}
\caption{Zaleznosc wydajnosci algorytmu od jego parametrów.}
\label{tab:parameters}
\\ \hline
\multirow{2}{*}{Parametr} & \multirow{2}{*}{Wartosc} & \multicolumn{3}{|c!{\vrule width 2pt}}{\textbf{Czas[s]}} & \multicolumn{3}{|c!{\vrule width 2pt}}{$\rho_{a}$} \\ \cline{3-10}
& & Zestaw 1 & Zestaw 2 & Zestaw 3 & Zestaw 1 & Zestaw 2 & Zestaw 3 \\ \hline
\multirow{4}{*}{$\rho_{select}$} & 0.5 & 58.0 & 266.4 & 131.4 & 0.98 & 0.8 & 0.95 \\ \cline{2-10}
& 0.6 & 55.0 & 270.1 & 145.6 & 0.95 & 0.85 & 0.85 \\ \hhline{|~|-|-|-|-|-|-|-|}% New line specification
& \cellcolor[gray]{0.9} 0.7 & 55.3 & 256.6 & 143.1 & 0.99 & 0.75 & 0.90 \\ \cline{2-10}
& 0.8 & 72.0 & 347.2 & 156.9 & 1.00 & 0.87 & 0.97 \\ \hline
\end{longtable}
\end{document}
但是,问题并没有完全消失,当您放大第 1 列上的空水平线(通过~
\hhline
说明符)的分布时,您会看到:
我认为这是由于您使用了\vrule width 2pt
列规则/宽度。因此,可能很难规避。这个微小的问题肯定不会在打印中出现,因此可能不是问题。此外,您列中的一些垂直线上也存在类似的错位,但并未引起注意:
这些更容易修复使用
\multicolumn{3}{c!{\vrule width 2pt}}{\textbf{Czas[s]}} &
\multicolumn{3}{c!{\vrule width 2pt}}{$\rho_{a}$} \
代替
\multicolumn{3}{|c!{\vrule width 2pt}}{\textbf{Czas[s]}} &
\multicolumn{3}{|c!{\vrule width 2pt}}{$\rho_{a}$} \
0.7
还请注意,它与其余列条目略有错位。这是因为在单元格颜色定义和实际单元格条目之间留有空格:
\cellcolor[gray]{0.9} 0.7
修复这个问题:
\cellcolor[gray]{0.9}0.7
答案2
的最新版本nicematrix
提供了解决该问题的解决方案。
\documentclass[a4paper,10pt,landscape]{article}
\usepackage{nicematrix,tikz}
\begin{document}
\NiceMatrixOptions
{
custom-line =
{
letter = I ,
tikz = { line width = 2 pt }
}
}
\renewcommand{\arraystretch}{1.2}
\begin{NiceTabular}{Iwc{17mm}Iwc{13mm}Ic|c|cIc|c|cI}[hlines,color-inside]
\Block{2-1}{Parametr} & \Block{2-1}{Wartość} & \Block{1-3}{\textbf{Czas[s]}} &&& \Block{1-3}{$\rho_{a}$} &&\\
& & Zestaw 1 & Zestaw 2 & Zestaw 3 & Zestaw 1 & Zestaw 2 & Zestaw 3 \\
\Block{4-1}{$\rho_{\text{select}}$} & 0.5 & 58.0 & 266.4 & 131.4 & 0.98 & 0.8 & 0.95 \\
& 0.6 & 55.0 & 270.1 & 145.6 & 0.95 & 0.85 & 0.85 \\
& \cellcolor{gray!15}
0.7 & 55.3 & 256.6 & 143.1 & 0.99 & 0.75 & 0.90 \\
& 0.8 & 72.0 & 347.2 & 156.9 & 1.00 & 0.87 & 0.97 \\
\end{NiceTabular}
\end{document}
您需要多次编译。
但是,输出在角落处并不完美(通常没有具有不同宽度规则的框架......)。
可以调整第一个和最后一个水平规则以获得完美的输出。
\documentclass[a4paper,10pt,landscape]{article}
\usepackage{nicematrix,tikz}
\begin{document}
\NiceMatrixOptions
{
custom-line =
{
letter = I ,
tikz = { line width = 2 pt }
}
}
\newcommand{\MyHline}{\Hline[tikz={shorten < = -1pt, shorten > = -0.8pt}]}
\renewcommand{\arraystretch}{1.2}
\begin{NiceTabular}{Iwc{17mm}Iwc{13mm}Ic|c|cIc|c|cI}[color-inside]
\MyHline
\Block{2-1}{Parametr} & \Block{2-1}{Wartość} & \Block{1-3}{\textbf{Czas[s]}} &&& \Block{1-3}{$\rho_{a}$} &&\\
\Hline
& & Zestaw 1 & Zestaw 2 & Zestaw 3 & Zestaw 1 & Zestaw 2 & Zestaw 3 \\
\Hline
\Block{4-1}{$\rho_{\text{select}}$} & 0.5 & 58.0 & 266.4 & 131.4 & 0.98 & 0.8 & 0.95 \\
\Hline
& 0.6 & 55.0 & 270.1 & 145.6 & 0.95 & 0.85 & 0.85 \\
\Hline
& \cellcolor{gray!15}
0.7 & 55.3 & 256.6 & 143.1 & 0.99 & 0.75 & 0.90 \\
\Hline
& 0.8 & 72.0 & 347.2 & 156.9 & 1.00 & 0.87 & 0.97 \\
\MyHline
\end{NiceTabular}
\end{document}