我有兴趣找到一种更好的方法来解决以下问题:
- 在所有页面的图像上创建黑色蒙版
- 同时删除(或用白色覆盖)所有文本和其他元素
- 但仍然允许
memoir
产生其修剪痕迹showtrim
。
这用于在图像上打印一层光泽清漆层(黑色遮罩所在的位置)。有些打印机称之为“UV 遮罩”。
之前和之后:
为此,我做了:
- 将图像文件替换为 .pdf 文件,这些文件是与相应图像大小相同的黑色方块
- 复制 .tex 文件并删除所有文本
- 插入
\hspace
和其他命令以使其\includegraphics
保持在同一位置
这曾经有效,但找到一种不那么黑客化的方法会更好。
也许可以以某种方式保存图像的位置和大小,用白色方块覆盖页面并在图像的位置放置矩形?谁知道呢。
你能想出一个好方法吗?理想情况下,可以将其抽象为文档类选项[varnishmask=true]
或类似的东西。
答案1
这只是部分答案,但是:
实际上,将所有图像转换为黑色矩形是比较容易的部分:只需说
\usepackage[demo]{graphicx}
。这显然是为了其他目的,但在这里应该可以正常工作。对于文本,我会尝试 Nils L 在评论 (
\color{white}
) 中的建议。如果这不起作用,我会研究该chickenize
包(使用 LuaLaTeX)。如果您不能使用 LuaLaTeX(因为例如您使用了一些不适用于 LuaLateX 的包),我的第三次尝试是将所有字体(暂时)默默地转换为“白色”(即没有任何实际打印)对应物,但保留.tfm
文件(以便排版相同)。
答案2
看起来,实施一个通用的解决方案会相当复杂(vonbrand建议该beamer
包具有某种机制可以使文本“消失”。
我最终只使用了一个条件\ifvarnishmask
和一个\placeholder
命令,虽然不是那么通用,但仍然允许通过简单地改变条件来生成同一文档的两个版本。
\documentclass[10pt]{article}
\makeatletter
\usepackage{geometry}
\geometry{paperwidth=70mm, paperheight=100mm, vmargin=3mm, hmargin=5mm, nohead, nofoot}
\usepackage{fontspec}
\setmainfont{TeX Gyre Pagella}
% Toggle normal or varnish mask version
\newif\ifvarnishmask
\varnishmasktrue
%\varnishmaskfalse
\usepackage{graphicx}
\usepackage{calc}
\usepackage{xcolor}
\newlength\tmp@height
\newlength\tmp@width
% #1 -- color of rectangle (optional, default white)
% #2 -- text or \includegraphics command
\newcommand\placeholder[2][white]{
\ifvarnishmask
\settowidth{\tmp@width}{#2}
\settototalheight{\tmp@height}{#2}
{\color{#1}\rule{\tmp@width}{\tmp@height}}%
\else
#2
\fi
}
\pagestyle{empty}
\makeatother
\begin{document}
{\centering
\placeholder{%
\begin{minipage}{\linewidth}
\begin{verse}
\ldots\\
And I struggle and shriek ere the daybreak, being driven to madness with fright.\\
\emph{Nemesis, H.P. Lovecraft}
\end{verse}
\end{minipage}
}
\bigskip
\placeholder[black]{%
\includegraphics[keepaspectratio, height=5cm]{the-scream.jpg}
}
}
\end{document}