我有一个自定义命令,包含两个 实例\@dblfloat
。我想更改出现这种情况的页面上的页面颜色。我可以对 的单个实例执行此操作\@dblfloat
,但不能对更多实例执行此操作。
在以下示例中,第一个图形被正确着色为蓝色,但后续图形则不是。如果我放置\pagecolor
without \afterpage
before \@dblfloat
,浮动元素之前的页面也会被着色。
(请注意,在此示例中,我使用图形浮点数来提供 MWE,但我希望为所有浮点数(包括自定义浮点数)提供解决方案。)
\documentclass[twocolumn]{article}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{afterpage}
\makeatletter
\newenvironment{dblfigure}{
\afterpage{\pagecolor{blue!50}}
\@dblfloat{figure}
}{
\afterpage{\clearpage\nopagecolor}
\end@dblfloat
}
\newcommand{\dblpagefigure}[2]{
\@dblfloat{figure}
% \pagecolor{blue!50} puts color too early
#1
\end@dblfloat
\@dblfloat{figure}
#2
\end@dblfloat
}
\makeatother
\usepackage{lipsum}
\begin{document}
\lipsum[1-4]
\begin{dblfigure}
\caption{Some other figure}
\includegraphics{example-image}
\end{dblfigure}
\lipsum
Some text to avoid `\lipsum` taking up an exact page.
\lipsum
\dblpagefigure{
\caption{Some figure}
\includegraphics[width=\textwidth]{example-image}
}{
\caption{Another figure}
\includegraphics[width=\textwidth]{example-image}
\afterpage{\clearpage\nopagecolor}
}
\lipsum
\lipsum
\end{document}
答案1
可能上一页的图也是彩色的,因为浮点在乳胶中的工作方式。例如,看绿色页面,它没有这个问题
\documentclass[twocolumn]{article}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{afterpage}
\makeatletter
\newenvironment{dblfigure}{
\pagecolor{blue!50}\afterpage{\nopagecolor}
\@dblfloat{figure}
} {
\end@dblfloat
}
\newenvironment{sglfigure}{
\pagecolor{green!50}\afterpage{\nopagecolor}
\begin{figure}
} {
\end{figure}
}
\newcommand{\dblpagefigure}[2]{
\begin{dblfigure}
#1
\end{dblfigure}
%
\begin{dblfigure}
#2
\end{dblfigure}
}
\makeatother
\usepackage{lipsum}
\begin{document}
\lipsum[1-4]
\begin{dblfigure}
\caption{Some other figure}
\includegraphics{example-image}
\end{dblfigure}
\lipsum
Some text to avoid `\lipsum` taking up an exact page.
\lipsum
\dblpagefigure{
\caption{Some figure}
\includegraphics[width=\textwidth]{example-image}
}{
\caption{Another figure}
\includegraphics[width=\textwidth]{example-image}
}
\lipsum
\lipsum
\lipsum[1]
\begin{sglfigure}
\caption{Some other figure}
\includegraphics[width = 0.5\textwidth]{example-image}
\end{sglfigure}
\lipsum
\end{document}