我创建了一个文档,其中有些页面有背景颜色。我希望页面有裁剪标记,使用包 geometry 的“showcrop”选项(出于某些原因,我不想使用“crop”包)。以下 MWE 显示彩色页面中缺少裁剪标记。
\documentclass{book}
\usepackage{lipsum}
\usepackage{xcolor}
\usepackage{geometry}
\geometry{paper=a4paper, layoutwidth=170mm, layoutheight=240mm, layoutvoffset= 20mm, layouthoffset= 20mm, showcrop=true}
\begin{document}
\lipsum
\newpage \pagecolor{yellow}
\lipsum
\newpage \nopagecolor
\lipsum
\end{document}
有人知道发生了什么事,以及如何解决它吗?
PS:这不是同一个问题使用页面颜色和裁剪来填充出血:我没有使用裁剪包!
答案1
下面的代码有点笨拙,但结果似乎还不错。这个想法是使用源代码showcrop
中的 的定义geometry
,结合自定义页面着色方法,使用零宽度零高度的 着色\vrule
,其定义是从crop
包中复制的。当你绘制vrule
。当您在裁剪标记之前geometry
颜色不会与标记重叠。
因为我不知道如何撤消\AtBeginShipout
对没有颜色的后续页面的定义,所以该\nopagecolorcrop
命令只是将规则的颜色设置为白色。
\documentclass{book}
\usepackage{lipsum}
\usepackage{xcolor}
\usepackage{geometry}
\usepackage{atbegshi}
\geometry{paper=a4paper, layoutwidth=170mm, layoutheight=240mm, layoutvoffset= 20mm, layouthoffset= 20mm}
\makeatletter
\def\mypagecolor{white}
\AtBeginShipout{\setbox\AtBeginShipoutBox=\vbox to\z@{\vskip-1in\vbox{%
\rlap{\smash{{\color{\mypagecolor}\hskip\dimexpr -\hoffset-1in\relax\vrule width\paperwidth height\z@ depth\paperheight}}}%
\baselineskip\z@skip\lineskip\z@skip\lineskiplimit\z@
\vskip1in%
\Gm@pageframes\box\AtBeginShipoutBox}}}
\newcommand{\pagecolorcrop}[1]{
\def\mypagecolor{#1}
}
\newcommand{\nopagecolorcrop}{%
\def\mypagecolor{white}%
}
\Gm@showcroptrue
\makeatother
\begin{document}
\lipsum
\newpage \pagecolorcrop{yellow}
\lipsum
\newpage \nopagecolorcrop
\lipsum
\end{document}