Cambio de área de tipo para flotadores de página completa sin encabezados

Cambio de área de tipo para flotadores de página completa sin encabezados

Considere un documento con un par de flotantes de página completa. A estas páginas flotantes les ha asignado el emptyestilo de página, ya que ha considerado innecesario y molesto retener, en estas páginas, los encabezados completos y detallados que está utilizando en las páginas de texto normales.

Sin embargo, una consecuencia es que ahora el flotador aparece colocado demasiado bajo en relación con el área de texto de las páginas de texto. Con las ~dos líneas adicionales que están disponibles al omitir los encabezados en las páginas flotantes, es bastante incómodo ver la parte superior del flotante alineada con la primera línea del cuerpo del texto (en las páginas de texto):

ingrese la descripción de la imagen aquí

Lo que desea es modificar el área de tipo (en páginas flotantes) de manera que sea tan alta como el área ocupada por el cuerpo del texto más los encabezados. Porque es esa última área (al menos si nuestro encabezado es lo suficientemente largo como para formar una línea de texto adecuada) la que visualmente percibimos como "el" área de tipo (de ahí la headincludeopción, consulte scrguide.pdf, capítulo 2).

Lo que koma-script nos permite hacer es cambiar el área de tipo a mitad del documento. Con este fragmento de código:

\KOMAoptions{
  footinclude=false,
  headinclude=false
}
\recalctypearea

...podemos alternar entre un área de tipo que sí los incluye y otra que no los incluye. En la segunda mitad de mi MWE, eso nos da más o menos el efecto deseado en la página flotante, pero, por supuesto, eso no es una solución cercana, ya que la pregunta sigue siendo:

¿Cómo podemos, de una manera sólida y sólida, activar automáticamente un cambio de área de tipo cada vez que se invoca un flotante de página completa?

\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} 

PD

Por supuesto, existe un enfoque de fuerza bruta. Si usamos la @fptopmodificación de todos modos (lo cual hago), también podemos establecer ese valor en algo negativo, como por ejemplo:

\makeatletter
\setlength{\@fptop}{-2\baselineskip}
\makeatother

Esto parece funcionar, e incluso hace innecesario el uso de las funciones de koma-script, por lo que es una solución independiente de clase. Pero es muy brutal.

Respuesta1

Esta solución utiliza \afterpagey \newgeometrypara activar la figura de página completa, en lugar de al revés.

Nota: Poner el título en un cuadro de guardado fuera del \afterpagees para garantizar que los títulos estén numerados correctamente (exageración).

\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}

información relacionada