
У меня есть пользовательская команда, включающая два экземпляра \@dblfloat
. Я хотел бы изменить цвет страницы на страницах, где это происходит. Я могу сделать это для одного экземпляра \@dblfloat
, но не для большего количества.
В следующем примере первая фигура окрашена в синий цвет (правильно), а последующие — нет. Если я размещу \pagecolor
без \afterpage
before \@dblfloat
, страница, предшествующая float, также будет окрашена.
(Обратите внимание, что в этом примере я использую числовое значение float для предоставления MWE, но мне хотелось бы получить решение для всех float, включая пользовательские.)
\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}