Изменение цвета страницы для плавающей страницы

Изменение цвета страницы для плавающей страницы

Я ищу способ изменить цвет страницы плавающей страницы. Я использую [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выполняется, как только в источнике достигается поплавок, поэтому все страницы до поплавка уже красные.Этот вопросотчасти решает ту же проблему, однако ее решение цепляется к любой отправленной странице float. Я хочу цветной фон только для определенных страниц float, а не для всех. Как изменить цвет страницы только для определенной страницы float?

(Учитывая упомянутый вопрос и решение, я думал добавить условие, которое должно быть установлено для \AddToShipoutPictureBGизменения фона, который я мог бы задать, когда мне нужна цветная плавающая страница. Но это кажется неэлегантным и просто слишком хакерским...)

решение1

Глядя на пакет floatpag, я подумал, что можно использовать тот же трюк для pagecolor. Мне пришлось создать свой on \thispagecolorcommand.

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

Связанный контент