新页面之后的页面颜色会影响新页面之前的页面

新页面之后的页面颜色会影响新页面之前的页面

\pagecolor在某些情况下,使用after似乎\newpage会影响之前的页面\newpage,例如浮动图形。

这是一个简单的例子:

\documentclass{scrreprt}
\usepackage{graphicx}
\usepackage{blindtext}
\usepackage{xcolor}
\newcommand{\normalpagestyle}{
  \newpage
  \pagecolor{white}
  \color{black}
  \addtokomafont{chapter}{\color{red}\fontsize{16}{16}\selectfont}
}
\newcommand{\specialpagestyle}{
  \newpage
  \pagecolor{red}
  \color{white}
  \addtokomafont{chapter}{\color{white}\fontsize{16}{16}\selectfont}
}
\begin{document}
\normalpagestyle
\chapter{Test}

\begin{figure}[ht]
  \centering
  \rule{10cm}{10cm}
\end{figure}

\begin{figure}[ht]
  \centering
  \rule{10cm}{10cm}
\end{figure}

\begin{figure}[ht]
  \centering
  \rule{10cm}{10cm}
\end{figure}

\begin{figure}[ht]
  \centering
  \rule{10cm}{10cm}
\end{figure}

\specialpagestyle
\blinddocument

\begin{figure}[ht]
  \centering
  \rule{10cm}{10cm}
\end{figure}

\begin{figure}[ht]
  \centering
  \rule{10cm}{10cm}
\end{figure}

\begin{figure}[ht]
  \centering
  \rule{10cm}{10cm}
\end{figure}

\begin{figure}[ht]
  \centering
  \rule{10cm}{10cm}
\end{figure}
\normalpagestyle
\blinddocument
\end{document}

有没有什么办法可以解决这个问题?

答案1

对我来说,用 替换两个实例\newpage似乎\clearpage有效:

\documentclass{scrreprt}
\usepackage{graphicx}
\usepackage{blindtext}
\usepackage{xcolor}
\newcommand{\normalpagestyle}{
  \clearpage
  \pagecolor{white}
  \color{black}
  \addtokomafont{chapter}{\color{red}\fontsize{16}{16}\selectfont}
}
\newcommand{\specialpagestyle}{
  \clearpage
  \pagecolor{red}
  \color{white}
  \addtokomafont{chapter}{\color{white}\fontsize{16}{16}\selectfont}
}
\begin{document}
\normalpagestyle
\chapter{Test}

\begin{figure}[ht]
  \centering
  \rule{10cm}{10cm}
\end{figure}

\begin{figure}[ht]
  \centering
  \rule{10cm}{10cm}
\end{figure}

\begin{figure}[ht]
  \centering
  \rule{10cm}{10cm}
\end{figure}

\begin{figure}[ht]
  \centering
  \rule{10cm}{10cm}
\end{figure}

\specialpagestyle
\blinddocument

\begin{figure}[ht]
  \centering
  \rule{10cm}{10cm}
\end{figure}

\begin{figure}[ht]
  \centering
  \rule{10cm}{10cm}
\end{figure}

\begin{figure}[ht]
  \centering
  \rule{10cm}{10cm}
\end{figure}

\begin{figure}[ht]
  \centering
  \rule{10cm}{10cm}
\end{figure}
\normalpagestyle
\blinddocument
\end{document}

答案2

Skillmon 已经说明了如何解决这个问题,但是解释了发生了什么,这\pagecolor并不影响之前的页面,而是在页面颜色改变后插入图形。

因此[ht]浮动元素不允许出现在浮动页面上,它们只允许出现在包含文本的页面上。由于没有文本,它们都堆放在队列中,等待有可以放置它们的页面。

然后将\specialpagestye页面颜色更改为红色,但仍然没有将浮点数插入到文档中。

最后,\chapter问题 a \clearpage,与 不同,\newpage \clearpage作为紧急操作刷新所有浮动,有效地强制p进入其可选位置并忽略所有限制。因此,到该点为止的所有浮动都会被输出(但页面已经是红色的)。

在较旧的 latex 版本中,如果您以这种方式堆叠浮点数,则如果您使用超过 18 个“没有空间容纳新浮点数”,则会收到错误消息,但最近的版本使用 etex 扩展寄存器,因此您可以堆叠几千个浮点数而不会出现该错误。

相关内容