更改浮動頁面的頁面顏色

更改浮動頁面的頁面顏色

我正在尋找一種更改浮動頁面的頁面顏色的方法。我正在使用[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 包,我想你可以對頁面顏色使用相同的技巧。我必鬚根據\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}

相關內容