Alterando a área de tipo para páginas flutuantes de página inteira sem títulos

Alterando a área de tipo para páginas flutuantes de página inteira sem títulos

Considere um documento com alguns números flutuantes de página inteira. A essas páginas flutuantes você atribuiu o emptyestilo 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):

insira a descrição da imagem aqui

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 headincludeopçã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 @fptopmodificaçã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 \afterpagee \newgeometrypara 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}

informação relacionada