据我所知,定义浮动时,浮动环境的内容会被放入一个框中。在实际排版浮动时,是否可以处理用户定义的命令/宏,例如在特定页面上放置水印(不一定是定义浮动的页面)?
是否需要在浮动环境的定义中添加一些内容,或者是否可以在其主体中使用某些命令?
答案1
如果你只想在出现特定类型浮动的页面上添加水印,那么你可以使用atbegshi
并使用浮点计数器跟踪机制对一些计数器魔法进行条件控制:
\documentclass{article}
\usepackage{atbegshi,refcount,etoolbox,graphicx,xcolor}
\usepackage{lipsum,afterpage}
\newcounter{floatcntr}
\AtEndEnvironment{figure}{\refstepcounter{floatcntr}\label{floatcntr@\roman{floatcntr}}}
\newcounter{floatsearch}\setcounter{floatsearch}{1}
\AtBeginShipout{%
\ifnum\value{page}>\getpagerefnumber{floatcntr@\roman{floatsearch}}
\stepcounter{floatsearch}% In case there are multiple (2) floats on the same page
\fi
\ifnum\value{page}=\getpagerefnumber{floatcntr@\roman{floatsearch}}
\AtBeginShipoutUpperLeft{%
\parbox[t]{\pdfpagewidth}{\centering\bfseries\sffamily%
\vspace{.4\pdfpageheight}%
\resizebox{.7\pdfpagewidth}{!}{\textcolor{red!80}{DRAFT}}}
}%
\stepcounter{floatsearch}
\fi
}
\begin{document}
\lipsum[1-3]
\begin{figure}[ht]
\centering\includegraphics[width=.6\linewidth]{example-image}
\caption{A figure}
\end{figure}
\lipsum[4-12]
\afterpage{\clearpage}% Just to flush the float
\begin{figure}[p]
\centering\includegraphics[width=.6\linewidth]{example-image}
\caption{A figure}
\end{figure}
\lipsum[13-25]
\end{document}
上述 MWE 创建一个计数器floatcntr
,该计数器在每个 的末尾进行步进(和引用)figure
。然后将引用与发货时的页码进行比较,如果匹配,则显示一些背景内容。
警告:上述设置假设figure
每页不超过 2 个。如果存在更多(可能性很小),可能需要进行一些修改。