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 \newpage
justo antes de mi figura y luego usando \thispagestyle{empty}
, pero el resultado sigue siendo el mismo. ¿Tengo que crear uno nuevo .tex
solo para la figura o hay una forma más sencilla de hacerlo?
En mi main.tex
documento tengo \begin{document}
, y luego \pagestyle{fancy}
,
\fancyfoot{}
,
\lhead{\thepage}
,
\rhead{\nouppercase{\rightmark}}
seguido de varios .tex
documentos. Al mirar un .tex
documento 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 \newpage
seguido de \thispagestyle{empty}
justo antes de la imagen, pero lo aplica a la página incorrecta. También intenté \clearpage
lo sugerido en los comentarios pero sucedió lo mismo.
Respuesta1
Esto parece funcionar (aunque no conocemos su solución \documentclass
ni mucho más sobre las soluciones de prueba y error):
\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 filecontents
son solo un ejemplo de uno de los .tex
archivos que creé.
Para poner el número de página en la [p]
página use esto:
\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 \rotfloatpagestyle
y \thisfloatpagestyle
en el manual del floatpag
paquete.
Tenga en cuenta también que fancyhdr
proporciona
\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/after
para ejecutar el código inmediatamente después de que LaTeX envíe alguna página. (Según las\changes
entradas 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
\CodeAfterShipoutOfAbsolutePage
donde puede especificar un número de página absoluto y algún código para que se agreguen directivas al ganchoshipout/after
para 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
\CodeAfterShipoutOfAbsolutePage
no 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 \CodeAfterShipoutOfAbsolutePage
es:
\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/after
se 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}
(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).