Ändern der Seitenfarbe für eine Float-Seite

Ändern der Seitenfarbe für eine Float-Seite

Ich suche nach einer Möglichkeit, die Seitenfarbe einer Float-Seite zu ändern. Ich nutze die [p]Platzierung für die jeweilige Abbildung. Betrachten Sie das folgende 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}

Der \pagecolorBefehl wird ausgeführt, sobald der Float in der Quelle erreicht ist, alle Seiten bis zum Float sind also bereits rot.Diese Fragebefasst sich mit dem gleichen Problem, die Lösung hängt jedoch von jeder ausgelieferten Float-Seite ab. Ich möchte den farbigen Hintergrund nur für bestimmte Float-Seiten, nicht für alle. Wie kann ich die Seitenfarbe nur für eine bestimmte Float-Seite ändern?

(Angesichts der referenzierten Frage und Lösung dachte ich daran, eine Bedingung hinzuzufügen, die festgelegt werden muss, \AddToShipoutPictureBGdamit der Hintergrund geändert wird. Diese könnte ich festlegen, wenn ich eine farbige schwebende Seite haben möchte. Aber das erscheint mir unelegant und einfach zu hackig …)

Antwort1

Als ich mir das Floatpag-Paket ansah, dachte ich, dass man den gleichen Trick für die Seitenfarbe verwenden könnte. Ich musste meinen eigenen On- \thispagecolorBefehl erstellen.

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

verwandte Informationen