透明.sty 重叠文本在 Acrobat 中呈现为灰色

透明.sty 重叠文本在 Acrobat 中呈现为灰色

我发现 Adob​​e Acrobat(Windows 11 和 Android 版)无法正确呈现通过transparent.styPDFLaTeX 生成的透明度。具体来说,重叠的文本会呈现均匀的灰色。

以下是一个例子:

\documentclass{article}
\usepackage{transparent}
\begin{document}
\vbox{%
  \hbox{\texttransparent{0.5}{hello}}%
  \vskip-\baselineskip
  \hbox{\texttransparent{0.5}{world}}%
}%
\end{document}

Acrobat 屏幕截图:

Acrobat 屏幕截图

Chrome 屏幕截图(与我尝试过的大多数其他 PDF 查看器类似):

Chrome 屏幕截图

我想实现后一种行为,即重叠的文本看起来更暗。也许 Acrobat 使用了错误的透明度混合模式?(它似乎与背景混合得很好\pagecolor。)有办法解决这个问题吗?也许在 LaTeX 中指定透明度的其他方法之一会更好?

答案1

默认情况下,Acrobat 将同一文本对象中的文本视为挖空透明度组中的文本,从而导致观察到的行为。这是一个可配置的图形状态参数(TK对于“扩展您可以关闭此功能:

\DocumentMetadata{}
\documentclass{article}
\usepackage{iftex, transparent}

\ExplSyntaxOn
\pdfmanagement_add:nnn { Page / Resources / ExtGState } { no.text.knockout } { << /TK~false >> }
\ExplSyntaxOff

\ifpdftex
  \newcommand \disabletextknockout {%
    \pdfliteral page {/no.text.knockout gs}%
  }
\else
  \RequireLuaTeX
  \newcommand \disabletextknockout {%
    \pdfextension literal page {/no.text.knockout gs}%
  }
\fi
\begin{document}
\disabletextknockout
\vbox{%
  \hbox{\texttransparent{0.5}{hello}}%
  \vskip-\baselineskip
  \hbox{\texttransparent{0.5}{world}}%
}%
\end{document}

答案2

您可以使用 tikz。它将文本放在 XObjects 中,Adobe 处理该文本的方式与直接在流中的文本略有不同。(在页面组级别使用透明可能可以获得类似的效果,但 pdf 参考中的描述相当长,我没有时间弄清楚需要哪种设置)。

\documentclass{article}
\usepackage{tikz}

\begin{document}
\tikz {
\node[black,opacity=0.5] {hello};
\node[black,opacity=0.5] {world};
}
\end{document}

在此处输入图片描述

答案3

在我的设置中,我想使用相同的框逻辑,但只使用不同的实现\texttransparent(以替换transparent.sty)。我找到了以下基于 PGF 的解决方案,基于https://tex.stackexchange.com/a/565470/245104,以便更好地发挥作用:

\documentclass{article}
\usepackage{pgf}

\newcommand\textopacity[2]{%
  \begin{pgfpicture}%
    \pgfsetfillopacity{#1}%
    \pgfpathmoveto{\pgfpointorigin}%
    \pgftext[base]{#2}%
  \end{pgfpicture}%
}

\begin{document}
\vbox{%
  \hbox{\textopacity{0.5}{hello}}%
  \vskip-\baselineskip
  \hbox{\textopacity{0.5}{world}}%
}%
\end{document}

Acrobat 屏幕截图:

Acrobat 屏幕截图

我还是更喜欢不依赖 PGF 的解决方案。我尝试弄清楚 PGF 如何映射到 PDF XObjects,\pdfxform但失败了。

相关内容