フロートページのページカラーを変更する

フロートページのページカラーを変更する

フロート ページのページ カラーを変更する方法を探しています。[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}

関連情報