Considere um documento com alguns números flutuantes de página inteira. A essas páginas flutuantes você atribuiu o empty
estilo de página, pois considerou desnecessário e perturbador reter, nessas páginas, os cabeçalhos completos e detalhados que você está usando nas páginas de texto normais.
Uma consequência, porém, é que agora o float aparece colocado um pouco baixo demais em relação à área de tipo das páginas de texto. Com as duas linhas extras que foram disponibilizadas ao deixar de fora os cabeçalhos nas páginas flutuantes, é muito estranho ver a parte superior do flutuador sendo alinhada com a primeira linha do corpo do texto (nas páginas de texto):
O que você deseja é modificar a área de texto (nas páginas flutuantes) de forma que seja tão alta quanto a área ocupada pelo corpo do texto mais os cabeçalhos. Pois é esta última área (pelo menos se o nosso cabeçalho for suficientemente longo, formando uma linha de texto adequada) que visualmente percebemos como "a" área de tipo (daí a headinclude
opção, ver scrguide.pdf, capítulo 2).
O que o koma-script nos permite fazer é alterar a área de tipo no meio do documento. Com este pedaço de código:
\KOMAoptions{
footinclude=false,
headinclude=false
}
\recalctypearea
... podemos alternar entre uma área de tipo que inclui e outra que não inclui os cabeçalhos. Na segunda metade do meu MWE, isso nos dá praticamente o efeito desejado na página flutuante, mas é claro que isso não está nem perto de uma solução, já que a questão permanece:
Como podemos, de maneira sólida e robusta, acionar automaticamente uma mudança de área de tipo sempre que um float de página inteira é invocado?
\documentclass[12pt,DIV=9]{scrartcl}
\usepackage{blindtext,floatpag}
\usepackage[automark]{scrlayer-scrpage}
%include header in type area calculation
\KOMAoptions{
footinclude=false,
headinclude=true
}
\recalctypearea
%setup headers/footers
\pagestyle{scrheadings}
\clearscrheadings
\ihead{\headmark}
\ohead{\thepage}
%make sure figure starts at top of text area
\makeatletter
\setlength{\@fptop}{0pt}
\makeatother
%no headers/footers on float pages
\floatpagestyle{empty}
\begin{document}
\section{Text with regular type area}
\Blindtext
\begin{figure}[p]
\rule{\textwidth}{\textheight}
\caption{Float with regular typearea; no headings, float could be taller (using the space taken by the headers}
\end{figure}%
\Blindtext
%changing type area in mid-document. Not very elegant
\KOMAoptions{
footinclude=false,
headinclude=false
}
\recalctypearea
\section{Text with taller type area (no headers)}
\Blindtext
\begin{figure}[p]
\rule{\textwidth}{\textheight}
\caption{Float with tall typearea, as it should be; no headings, float uses the space taken by the headers}
\end{figure}%
\Blindtext
\end{document}
PS
É claro que existe uma abordagem de força bruta. Se estivermos usando a @fptop
modificação de qualquer maneira (o que eu faço), também podemos definir esse valor como algo negativo, como:
\makeatletter
\setlength{\@fptop}{-2\baselineskip}
\makeatother
Isso parece funcionar e até torna desnecessário o uso dos recursos do koma-script, portanto, é uma solução independente de classe. Mas é muito brutal.
Responder1
Esta solução usa \afterpage
e \newgeometry
para ativar a figura de página inteira, e não o contrário.
Nota: Colocar a legenda em uma caixa de salvamento fora do \afterpage
é para garantir que as legendas sejam numeradas corretamente (exagero).
\documentclass[12pt,DIV=9]{scrartcl}
\usepackage{blindtext,floatpag}
\usepackage[automark]{scrlayer-scrpage}
\usepackage{geometry}
\usepackage{afterpage}
\newsavebox{\tempbox}
%include header in type area calculation
\KOMAoptions{
footinclude=false,
headinclude=true
}
\recalctypearea
%setup headers/footers
\pagestyle{scrheadings}
\clearscrheadings
\ihead{\headmark}
\ohead{\thepage}
%make sure figure starts at top of text area
\makeatletter
\setlength{\@fptop}{0pt}
\makeatother
%no headers/footers on float pages
\floatpagestyle{empty}
\begin{document}
\section{Text with regular type area}
\Blindtext
\begin{figure}[p]
\rule{\textwidth}{\textheight}
\caption{Float with regular typearea; no headings, float could be taller (using the space taken by the headers}
\end{figure}%
\Blindtext
\section{Text with taller type area (no headers)}
\Blindtext
\setbox\tempbox=\vbox{\expandafter\def\csname @captype\endcsname{figure}% increment caption counter NOW
\caption{Float with tall typearea, as it should be; no headings, float uses the space taken by the headers}%
}
\afterpage{\newgeometry{noheadfoot}% automatic \clearpage
\begin{figure}[p]
\rule{\textwidth}{\textheight}
\unvbox\tempbox
\end{figure}%
\restoregeometry}
\Blindtext
\end{document}