Aislar página para desactivar el encabezado

Aislar página para desactivar el encabezado

Tengo encabezados en cada página que utilizo \usepackage{fancyhdr}en todo mi documento, que quiero desactivar en ciertas páginas con figuras grandes. Si lo uso \thispagestyle{empty}correctamente, elimina el encabezado, pero solo en una página aleatoria. Pensé que podría aplicar el efecto a la página correcta colocándola \newpagejusto antes de mi figura y luego usando \thispagestyle{empty}, pero el resultado sigue siendo el mismo. ¿Tengo que crear uno nuevo .texsolo para la figura o hay una forma más sencilla de hacerlo?

En mi main.texdocumento tengo \begin{document}, y luego \pagestyle{fancy}, \fancyfoot{}, \lhead{\thepage}, \rhead{\nouppercase{\rightmark}}seguido de varios .texdocumentos. Al mirar un .texdocumento específico, tengo mucho texto con gráficos insertados de la siguiente manera:

\begin{figure}
\centering
\hbox{\hspace{-15mm} \includegraphics[scale=0.9]{my-image}}
\caption{my caption}
\label{myfigure}
\end{figure}

Intenté poner \newpageseguido de \thispagestyle{empty}justo antes de la imagen, pero lo aplica a la página incorrecta. También intenté \clearpagelo sugerido en los comentarios pero sucedió lo mismo.

Respuesta1

Esto parece funcionar (aunque no conocemos su solución \documentclassni mucho más sobre las soluciones de prueba y error):

ingrese la descripción de la imagen aquíingrese la descripción de la imagen aquí

\documentclass{article}

\usepackage{graphicx}
\usepackage{fancyhdr}
\usepackage{lipsum} % For text

\begin{filecontents}[overwrite]{chapter1.tex}
    \clearpage
    \thispagestyle{empty}
    \begin{figure}[p]
    \centering
    \hbox{\hspace{-15mm} \includegraphics[scale=0.9]{example-image-a}}
    \caption{my caption}
    \label{myfigure}
    \end{figure}
\end{filecontents}

\fancyhead{}
\fancyfoot{}
\fancyhead[L]{\thepage}
\fancyhead[R]{\nouppercase{\rightmark}}
\renewcommand{\headrulewidth}{0pt}

\pagestyle{fancy}

\begin{document}

\section{Test}
\lipsum[1-8]

\include{chapter1}

\lipsum[1-8]

\end{document}

Las partes que aparecen filecontentsson solo un ejemplo de uno de los .texarchivos que creé.


Para poner el número de página en la [p]página use esto:

ingrese la descripción de la imagen aquí

\documentclass{article}

\usepackage{graphicx}
\usepackage{fancyhdr}
\usepackage{lipsum} % For text

\begin{filecontents}[overwrite]{chapter1.tex}
    \clearpage
    \thispagestyle{floatp}
    \begin{figure}[p]
    \centering
    \hbox{\hspace{-15mm} \includegraphics[scale=0.9]{example-image-a}}
    \caption{my caption}
    \label{myfigure}
    \end{figure}
\end{filecontents}

\fancyhead{}
\fancyfoot{}
\fancyhead[L]{\thepage}
\fancyhead[R]{\nouppercase{\rightmark}}
\renewcommand{\headrulewidth}{0pt}

% ------------ Added
\fancypagestyle{floatp}{%redefining plain pagestyle
    \fancyfoot{}
    \fancyhead{}
    \fancyfoot[R]{\thepage}         % Page number in bottom right
}

\pagestyle{fancy}

\begin{document}

\section{Test}
\lipsum[1-8]

\include{chapter1}

\lipsum[1-8]

\end{document}

Respuesta2

¿Qué pasa con \floatpagestyle{empty}el uso solo [p]para flotadores grandes?

Véase también \rotfloatpagestyley \thisfloatpagestyle en el manual del floatpagpaquete.

Tenga en cuenta también que fancyhdrproporciona \iffloatpage{valor para la página flotante}{valor para otras páginas}.

\documentclass[twoside]{article}
\usepackage{graphicx}
\usepackage{floatpag}\floatpagestyle{empty}
\usepackage{lipsum}
\usepackage{fancyhdr}
\pagestyle{fancy}
\begin{document}
\section{foo1}\subsection{foo}\lipsum[1]
\section{foo}\subsection{foo}\lipsum[1]
\section{foo}\subsection{foo}\lipsum[1-2]
\begin{figure}[h]\includegraphics[]{example-image-9x16}\caption{foo}\end{figure}
\section{foo}\subsection{foo}\lipsum[1]
\begin{figure}[p]\centering\includegraphics[]{example-image-9x16}\caption{foo}\end{figure}
\section{foo}\subsection{foo}\lipsum[1]
\section{foo}\subsection{foo}\lipsum[1]
\end{document}

Respuesta3

Es necesario que la directiva \pagestyle{empty}se emita después de que se envíe la página anterior a la página que contiene la figura.

  • Con una versión reciente de LaTeX, puede usar el gancho shipout/afterpara ejecutar el código inmediatamente después de que LaTeX envíe alguna página. (Según las \changesentradas enltshipout.dtxese gancho se agregó el 8 de enero de 2021).

  • Puedes usar el paquete.zrefpara almacenar y recuperar el valor del llamado "número de página absoluto" de la página donde LaTeX coloca la figura en cuestión.

  • Además, puede definir una macro \CodeAfterShipoutOfAbsolutePagedonde puede especificar un número de página absoluto y algún código para que se agreguen directivas al gancho shipout/afterpara ejecutar el código solo después del envío de la página cuyo número de página absoluto tiene el valor especificado.

  • En el siguiente ejemplo, el número de página absoluto se puede especificar haciendo que TeX realice cálculos que pueden implicar el acceso a una etiqueta zref. Por lo tanto, en el siguiente ejemplo \CodeAfterShipoutOfAbsolutePageno se toman solo dos argumentos, sino tres argumentos, uno de los cuales indica una lista de etiquetas zlabel separadas por comas que deben definirse para que funcione la especificación del número de página absoluto. Si uno de esos zlabels no está definido, como en cualquier caso ocurre en la primera compilación, el código tampoco se ejecutará.

    !! Por lo tanto, se necesitan al menos dos compilaciones para que todo coincida. !!

Entonces la sintaxis de \CodeAfterShipoutOfAbsolutePagees:

\CodeAfterShipoutOfAbsolutePage
  {<comma-list of zref-labels that must exist for the code to be carried out>%
    % Here you specify both those zref-labels that are needed for the
    % <expression for computing the absolute page number of the page after 
    % whose shipping-out code shall be carried out> to work out and probably
    % also those zref-labels that are needed for the <code to carry out after
    % the page has been shipped out> to work out.
  }%
  {<expression for computing the absolute page number of the page after 
    whose shipping-out code shall be carried out>}%
  {<code to carry out after the page has been shipped out>%
    % Be aware that you cannot use this for adding visible material
    % or glue to a page. You can use this only for doing abstract actions
    % like calculations or directives like `\thispagestyle{...}`.
  }%

Aquí viene un ejemplo de trabajo mínimo.
En el ejemplo shipout/afterse utiliza el gancho.
De acuerdo con la\changes entradas enltshipout.dtxese gancho se agregó el 8 de enero de 2021.
Por lo tanto, el ejemplo definitivamente no funciona con versiones de LaTeX anteriores al 8 de enero de 2021, pero con versiones de LaTeX anteriores no recibe mensajes de error.
Esto se debe a que asignar código a un gancho que no existe en el sentido de que su uso no se implementa no genera mensajes de advertencia o error. El ejemplo funciona, por ejemplo, con TeX Live 2022. Por lo tanto, es compilable, por ejemplo, conAl dorsosi en el menú del dorso se selecciona TeX Live 2022.

\NeedsTeXFormat{LaTeX2e}[2021/01/08]
% (According to \changes-entry in ltshipout.dtx the hook
%  shipout/after  was added in January 8, 2021.)
\makeatletter
\RequirePackage[abspage]{zref}
\ExplSyntaxOn
%...............................................................................
% Save the  value of abspage-counter to a zref-label:
%...............................................................................
\cs_new_protected:Npn \saveabspage #1 {\zref@labelbyprops{#1}{abspage}}
%...............................................................................
% Obtain the saved abspage-counter-value from zref-label if possible, otherwise
% deliver -1:
%...............................................................................
\cs_new_protected:Npn \getabspage #1 {\zref@extractdefault{#1}{abspage}{-1}}
%...............................................................................
% Map over comma-list #1 denoting zref-labels and execute code #2 in case all of
% them are defined, otherwise execute code #3; this is for doing calculations 
% with zref-labels which can only be done in case all of them are defined:
%...............................................................................
\cs_new:Npn \CheckWhetherAllZlabelsDefined #1 
  {
    \exp:w
      \clist_map_function:nN {#1} \mystuff_checkzlabel:nwnn
      \exp_after:wN\exp_end:\use_i:nn
  }
\cs_new:Npn \mystuff_checkzlabel:nwnn #1#2 \exp_after:wN\exp_end:\use_i:nn #3#4
  {
    \int_compare:nNnTF {\getabspage{#1}}={-1}
      {#2 \exp_after:wN\exp_end:\use_i:nn {#4}}
      {#2 \exp_after:wN\exp_end:\use_i:nn {#3}}{#4}%
  }
%...............................................................................
% Map over comma-list denoting zref-labels and generate warning for each 
% undefined zref-label:
%...............................................................................
\cs_new_protected:Npn \WarnForUndefinedZlabels #1
  {
    \clist_map_function:nN {#1}\zref@refused
  }
%...............................................................................
% Provide code to execute on background-picture-environment of page whose
% absolute page number is to be specified:
%...............................................................................
\cs_new_protected:Npn \CodeAfterShipoutOfAbsolutePage#1#2#3{ 
  % #1 = comma-list of zref-labels that must exist for the code (#3) to be 
  %      carried out.
  % #2 = expression for computing the absolute page number of the page 
  %      after whose shipout the code #3 shall be carried out:
  % #3 = code to carry out after shipping out the specified page
  \AddToHook{shipout/after}{
    \WarnForUndefinedZlabels{#1}
    \int_compare:nNnT {\CheckWhetherAllZlabelsDefined{#1}{#2}{-1}}
                      =
                      {\value{abspage}}
                      {#3}
  }
}
\ExplSyntaxOff
\makeatother



\documentclass{article}
\usepackage{lipsum}
\pagestyle{headings}

\CodeAfterShipoutOfAbsolutePage{Some ABS label}%
                               {\getabspage{Some ABS label}-1}%
                               {\thispagestyle{empty}}%

\begin{document}
\section{Some headings}
\subsection{Some more headings}
\lipsum{1-2}
\begin{figure}
\noindent\rule{\textwidth}{.6\textheight}
\caption{Some figure}\saveabspage{Some ABS label}
\end{figure}
\lipsum{3-18}
\end{document}

ingrese la descripción de la imagen aquí

(Un inconveniente es que no puede usar esto para modificar la primera página porque no habrá una página anterior después de la cual se puedan realizar las cosas de envío).

información relacionada