![更改浮动页面的页面颜色](https://linux22.com/image/462028/%E6%9B%B4%E6%94%B9%E6%B5%AE%E5%8A%A8%E9%A1%B5%E9%9D%A2%E7%9A%84%E9%A1%B5%E9%9D%A2%E9%A2%9C%E8%89%B2.png)
我正在寻找一种方法来更改浮动页面的页面颜色。我正在使用[p]
相应图形的位置。考虑以下 MWE:
\documentclass{scrbook}
\usepackage{afterpage}
\usepackage{pagecolor}
\begin{document}
Text on a clean page. %The page is white by default.
\clearpage
Text before figure. %This page is red already.
\begin{figure}[p]
\pagecolor{red}\afterpage{\pagecolor{none}}
Figure text.
\end{figure}
Text after figure.
\clearpage %The float is placed, \afterpage kicks in and restores the page background
Again, text on a clean page.
\end{document}
\pagecolor
一旦在源中达到浮动点,就会执行该命令,因此直到浮动点的所有页面都已变成红色。这个问题处理同样的问题,但是其解决方案与任何发出的浮动页面挂钩。我只想为某些浮动页面设置彩色背景,而不是所有页面。如何更改特定浮动页面的页面颜色?
(考虑到所引用的问题和解决方案,我正在考虑添加一个必须设置的条件才能\AddToShipoutPictureBG
更改背景,当我想要彩色浮动页面时可以设置它。但它似乎不雅观而且太过黑客......)
答案1
查看 floatpag 包,我发现你可以对 pagecolor 使用相同的技巧。我必须创建自己的 on\thispagecolor
命令。
\documentclass{scrbook}
\usepackage{xcolor}
\usepackage{floatpag}
\makeatletter
\newcommand{\@thispagecolor}{none}
\let\@pagecolornone=\@thispagecolor
\newcommand{\thispagecolor}[1]{\gdef\@thispagecolor{#1}}
\AddToHook{shipout/background}{\ifx\@thispagecolor\@pagecolornone\relax
%\put(1in,-1in) {color=none}%
\else
\put(0pt,-\paperheight) {\textcolor{\@thispagecolor}{\rule{\paperwidth}{\paperheight}}}%
\global\let\@thispagecolor=\@pagecolornone
\fi}
\newcommand{\floatpagecolor}[1]{\gdef\at@float@page{\thispagecolor{#1}}}
\makeatother
\floatpagecolor{red}
\begin{document}
Text on a clean page. %The page is white by default.
\clearpage
Text before figure. %This page is red already.
\begin{figure}[p]
Figure text.
\end{figure}
Text after figure.
\clearpage %The float is placed, \afterpage kicks in and restores the page background
Again, text on a clean page.
\end{document}