我发现 Adobe Acrobat(Windows 11 和 Android 版)无法正确呈现通过transparent.sty
PDFLaTeX 生成的透明度。具体来说,重叠的文本会呈现均匀的灰色。
以下是一个例子:
\documentclass{article}
\usepackage{transparent}
\begin{document}
\vbox{%
\hbox{\texttransparent{0.5}{hello}}%
\vskip-\baselineskip
\hbox{\texttransparent{0.5}{world}}%
}%
\end{document}
Acrobat 屏幕截图:
Chrome 屏幕截图(与我尝试过的大多数其他 PDF 查看器类似):
我想实现后一种行为,即重叠的文本看起来更暗。也许 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
答案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 屏幕截图:
我还是更喜欢不依赖 PGF 的解决方案。我尝试弄清楚 PGF 如何映射到 PDF XObjects,\pdfxform
但失败了。