我正在做一个项目,需要在 LaTeX 中叠加两个 PDF 文档并控制每个图层的不透明度。具体来说,我想在一页中包含两个 PDF 页面,并调整每个 PDF 的可见程度。我熟悉基本的 LaTeX 命令,但之前从未做过这样的事情。
有人能指导我如何实现这一点吗?LaTeX 中是否有特定的包或命令可以叠加具有可调整不透明度设置的 PDF?任何示例代码或类似项目的参考资料都将不胜感激。
答案1
通过在 PDF 上叠加一个或多或少不透明的填充矩形来提供提示。
\documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{geometry}
\geometry{a4paper}
\geometry{landscape}
\usepackage{graphicx}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node(img){\includegraphics[width=0.48\textwidth]{imagePDF.pdf}};
\draw[fill=yellow,opacity=0.2] (img.north east) rectangle (img.south west);
\end{tikzpicture}
\begin{tikzpicture}
\node(img){\includegraphics[width=0.48\textwidth]{imagePDF.pdf}};
\draw[fill=yellow,opacity=0.8] (img.north east) rectangle (img.south west);
\end{tikzpicture}
\end{document}
答案2
以下pdflatex
示例使用TikZ
。三个图形与各种透明度重叠:(1)最左边的图形完全不透明,显示原始图形的外观。(2)右边的图形与 alpha 值 0.75 重叠,但原始图形的每个对象都单独变为半透明。(3)最后,第三个图形放在透明度组中,并整体变为半透明。您很可能希望在覆盖 PDF 文档时使用后者。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node (N1) at (0,0) {\includegraphics{figure.pdf}};
\node[opacity=.75] (N2) at (3cm,0) {\includegraphics{figure.pdf}};
\begin{scope}[transparency group, opacity=.75]
\node (N3) at (1.5 cm,-3cm) {\includegraphics{figure.pdf}};
\end{scope}
\end{tikzpicture}
\end{document}
解释
opacity
TiKZ 中给绘图命令提供的键设置当前阿尔法描边操作(如绘制线条)和其他绘画操作(如填充区域或绘制位图图像)的值。其值介于 1.0(不透明,默认值)和 0.0(透明)之间。
在右图中(第二个包含项,节点 N2),每条线或区域都用半透明颜色描边或填充,甚至那些旨在遮挡图形其他部分的颜色(设计师经常使用覆盖而不是剪切)。请参见下面的示例:右侧带有字母 B 的蓝色方块未覆盖下面的虚线红色圆圈(12 点和 3 点之间的弧线),字母 A 下方的“隐藏文本”也显示出来。此外,如果包含的 PDF 已经使用了透明度,它将覆盖我们的设置,并将不透明度重置为原始文件中给出的任何值。这通常不是人们想要的。
下面的数字(第三个包含,节点 N3)被放置在所谓的透明集团。它本质上是一个scope
带有选项transparency group
和不透明度值的环境。首先正常绘制图形,然后整体变为半透明。因此,字母 A 下方的“隐藏文本”不会显示出来,蓝色方块正确地隐藏了红色弧线。字母 B 下方的红色弧线来自第二个包含(6 点和 7 点之间的弧线)。这是人们通常想要的。可能,您想将两个包含的 PDF 放在单独的透明度组中。除了opacity
,您可能还想尝试blend mode=multiply
透明度组中的选项。这将混合包含的 PDF 图像,而不会用白色背景给它们着色。
在上面的例子中,示例输入figure.pdf
由以下代码生成:
%%% This is figure.tex.
\documentclass{article}
\usepackage[papersize={45mm,45mm}]{geometry}
\usepackage{tikz}
\pagestyle{empty}
\begin{document}
\begin{tikzpicture}[remember picture, overlay]
\node[scale=2, anchor=north, align=center] (C) at (current page) {Hidden\\text};
\node[circle, draw, line width=10pt, color=red, loosely dotted, fill=green!20,
scale=6] (A) at (current page) {A};
\node[draw, line width=12pt, color=blue!50!black, fill=white, anchor=north east,
scale=4, outer sep=1.5pt] (B) at (current page.north east) {B};
\end{tikzpicture}
\end{document}