交替行颜色表上的 hline 问题

交替行颜色表上的 hline 问题

我创建了一个表格,其中的各行颜色交替变化,但是 /hline 的行为异常。

第一和第二个 /hline 正常工作,但是在此之后,交替的 /hline 仅显示为垂直列线旁边的小破折号

\usepackage[table]{xcolor}

\begin{table}[ht] 
  \rowcolors{2}{gray!25}{white}
  \begin{tabular}{l | l|}
    \hline
    \rowcolor{gray!25}
    text part 1 & test part 2  \\               
    Priority & High \\ \hline
    text part 1 & test part 2  \\               
    Priority & High \\ \hline %this hline doesnt show
    text part 1 & test part 2  \\               
    Priority & High \\ \hline
    text part 1 & test part 2  \\               
    Priority & High \\ \hline %this hline doesnt show
    text part 1 & test part 2  \\               
    Priority & High \\ \hline
    text part 1 & test part 2  \\               
    Priority & High \\ \hline
  \end{tabular}
  \end{table}

有人知道我做错了什么吗?谢谢。

答案1

这是一个已记录的问题,会影响 PDF 中线条的显示\hline,并影响一些 PDF 查看器(Adobe 的 Acrobat 可能无法显示线条,而 Apple 的 Preview 可能会显示良好)。在大多数情况下,该问题不会影响您在纸上看到的打印输出。

但是,如果它仍然困扰您,您可以\hline使用\midrulebooktabs 包替换您的来解决这个问题:

\documentclass[]{article}

\usepackage[table]{xcolor}
\usepackage{booktabs}
\setlength{\aboverulesep}{0pt}
\setlength{\belowrulesep}{0pt}

\begin{document}

\begin{table}[ht] 
  \rowcolors{2}{gray!25}{white}
  \begin{tabular}{l | l|}
    \toprule
    \rowcolor{gray!25}
    text part 1 & test part 2  \\               
    Priority & High \\ \midrule
    text part 1 & test part 2  \\               
    Priority & High \\ \midrule
    text part 1 & test part 2  \\               
    Priority & High \\ \midrule
    text part 1 & test part 2  \\               
    Priority & High \\ \midrule
    text part 1 & test part 2  \\               
    Priority & High \\ \midrule
    text part 1 & test part 2  \\               
    Priority & High \\ \bottomrule
  \end{tabular}
  \end{table}

\end{document}

带中规的桌子

也可以看看:\cline 不起作用—— 潜在的问题不同,但解决方法类似。

答案2

该软件包nicematrix有专门用于解决该问题的工具。{NiceTabular}使用nicematrix,无论您使用哪种 PDF 查看器,规则似乎都不会消失(根据设计)。

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

\begin{table}[ht] 
  \begin{NiceTabular}{l|l|}
  \CodeBefore
  \rowcolor{gray!25}{1}
  \rowcolors{2}{gray!25}{white}
  \Body
    \hline
    text part 1 & test part 2  \\               
    Priority & High \\ \hline
    text part 1 & test part 2  \\               
    Priority & High \\ \hline 
    text part 1 & test part 2  \\               
    Priority & High \\ \hline
    text part 1 & test part 2  \\               
    Priority & High \\ \hline 
    text part 1 & test part 2  \\               
    Priority & High \\ \hline
    text part 1 & test part 2  \\               
    Priority & High \\ \hline
  \end{NiceTabular}
\end{table}

\end{document}

但是,您需要进行多次编译(因为nicematrix在后台使用了 PGF/TikZ 节点)。

上述代码的输出

相关内容