Alterando a cor da página para uma página flutuante

Alterando a cor da página para uma página flutuante

Estou procurando uma maneira de alterar a cor da página flutuante. Estou usando o [p]posicionamento para a respectiva figura. Considere o seguinte 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}

O \pagecolorcomando é executado assim que o float é alcançado na fonte, portanto todas as páginas até o float já estão vermelhas.Essa questãomeio que lida com o mesmo problema, mas sua solução se conecta a qualquer página flutuante enviada. Quero apenas o plano de fundo colorido para certas páginas flutuantes, não para todas. Como posso alterar a cor da página apenas para uma determinada página flutuante?

(Dada a questão e solução referenciada, eu estava pensando em adicionar uma condicional que deve ser definida para \AddToShipoutPictureBGalterar o plano de fundo, que eu poderia definir quando quiser uma página flutuante colorida. Mas parece deselegante e muito hackeado...)

Responder1

Olhando para o pacote floatpag, imaginei que você poderia usar o mesmo truque para pagecolor. Eu tive que criar meu \thispagecolorcomando.

\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}

informação relacionada