黑色背景上白色 \hline 外观不一致

黑色背景上白色 \hline 外观不一致

黑色背景上显示白色文字是否存在已知问题?

当我\hline 在表格中使用多条线时,线条的外观会有所不同。线条可能看起来正常、微弱或完全缺失。只有当我放大到 400% 左右时,我才能始终看到线条。

我假设这是硬件问题,我尝试了另一台显示器,结果出现了同样的情况。我尝试了booktabs包以获取线条的自定义厚度,但是\hrule 如果您有垂直规则,该包会在其周围放置一个空间带,从而导致外观不连续。(booktabs不鼓励在表格中使用垂直规则。)

(最终修改:我最终同意了booktabs,放弃了垂直规则,并在表格的黑底上获得了一致的白色规则。)

示例代码如下整个表格中黑色背景上为白色文字

\documentclass[11pt,letterpaper]{article}
\usepackage[table]{xcolor}
\usepackage{array}
\begin{document}
\begin{table}[H]
  \caption{Caption}
  \label{Table1}
  \begin{center}
    \arrayrulecolor{white}
    \newcolumntype{B}{>{\columncolor{black}\color{white}}c}
    \begin{tabular}{  B  l   | B  p{6in}   }
      \hline\hline
      Text 1 & Text 2 \\
      \hline\hline
      Text 3 & Text 4 \\
      \hline
    \end{tabular}
  \end{center}
\end{table}
\end{document}

答案1

我猜这是因为 PDF 阅读器对黑色填充和白线的处理方式不同,它认为黑色填充比白线更重要,大概对黑色填充的处理方式与通常处理文本的方式类似。

使用 TikZ 绘制表格时(基于TikZ 矩阵作为表格的替代品),则不会出现此问题。 该方法需要更多工作(您必须手动设置列宽),因此可能不太适合您的需求,但如果只是针对需要在所有缩放级别上都能在屏幕上良好显示的简单表格,则可能可以这样做:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix,positioning}
\begin{document}
\begin{tikzpicture}[
    table/.style={
        minimum height=1.5em,
        matrix of nodes,
        row sep=-\pgflinewidth,
        column sep=-\pgflinewidth,
        text depth=0.5ex,
        text height=2ex,
        nodes in empty cells
    }
]


\matrix [
    table,nodes={
        text width=0.5em,
        draw=white,
        text=white,
        fill=black
    },
    column 2/.style={nodes={text width=2em}},
    column 3/.style={nodes={text width=6em}},
    row 1/.style={nodes={text depth=2\baselineskip+0.5ex}},
    row 2/.style={nodes={text depth=\baselineskip+0.5ex}}
]
{
0   &ABC  & This is a long line that will wrap around \\
1   &DEF  & |[align=right]| Woo, right aligned! \\
2   &GHI  & 9 \\
};
\end{tikzpicture}
\end{document}

答案2

该软件包nicematrix包含一些工具,旨在避免某些 PDF 阅读器存在的此类问题。有了nicematrix,无论您使用什么 PDF,无论您使用何种缩放级别,规则似乎都不会消失。

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

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

\begin{center}
\color{white}
\begin{NiceTabular}{cp{2em}p{6em}}[hvlines-except-borders,cell-space-limits=2pt]
\CodeBefore
  \arraycolor{black}
\Body
0   &ABC  & This is a long line that will wrap around \\
1   &DEF  & \Block[r]{}{Woo, right aligned!} \\
2   &GHI  & 9 \\
\end{NiceTabular}
\end{center}

\end{document}

第一个代码的输出

事实上,在这种情况下,可以构建没有白线的表格,也就是说只有黑色单元格(如果有彩色背景,则会在表格的单元格之间看到该背景)。

以下示例使用\pagecolor{gray}

\documentclass{article}
\usepackage{nicematrix,tikz}

\begin{document}

\pagecolor{gray}

\begin{center}
\color{white}
\begin{NiceTabular}{cp{2em}p{6em}}[cell-space-limits=2pt]
\CodeBefore
  \TikzEveryCell{offset=0.35pt,fill=black}
\Body
0   &ABC  & This is a long line that will wrap around \\
1   &DEF  & \Block[r]{}{Woo, right aligned!} \\
2   &GHI  & 9 \\
\end{NiceTabular}
\end{center}

\end{document}

第二段代码的输出

相关内容