En la paginadespuésCuando finaliza un entorno, me gustaría cambiar el estilo del encabezado. El siguiente código funciona como me gustaría. Sin embargo, el uso de everypage
parece un poco excesivo y me pregunto si hay algún medio integrado en uno de los paquetes cargados (incluido zref
), o si existe una forma "mejor" de lograr lo mismo.
\documentclass{article}
%\usepackage{zref}
\usepackage{enumitem}
\usepackage{titleps}
\usepackage{xparse}
\usepackage{everypage}
\newpagestyle{before}{
\sethead{}{before}{}
}
\pagestyle{before}
\newpagestyle{after}{
\sethead{}{after}{}
}
\ExplSyntaxOn
\int_new:N \g_last_item_page_int
\int_gset:Nn \g_last_item_page_int {\c_max_int}
\newlist{mylist}{enumerate}{1}
\setlist[mylist]{
label = (\arabic*),
after = \int_gset:Nn \g_last_item_page_int {\thepage}
}
\AddEverypageHook{
\int_compare:nT {\thepage > \g_last_item_page_int}
{\pagestyle{after}}
}
\ExplSyntaxOff
\begin{document}
Header should be "before".
\newpage
\begin{mylist}
\item Header should be "before".
\newpage
\item Header should be "before".
\end{mylist}
Header should be "before".
\newpage
Header should be "after".
\end{document}
Respuesta1
Los siguientes usosafterpage
y está influenciado porLos estilos de página solo funcionan para \thispagestyle
menoresafterpage
.
Dado que la configuración de un estilo de página usando \pagestyle
no es global (en comparación con configurarlo usando \thispagestyle
), \afterpage
necesita ayuda. Por lo tanto, configurar el estilo de página en ( after
a través de \ps@after
) proporciona una solución alternativa:\aftergroup
\afterpage
\usepackage{afterpage}% http://ctan.org/pkg/afterpage
...
\makeatletter
\setlist[mylist]{
label = (\arabic*),
after = \afterpage{\aftergroup\ps@after}
}
\makeatother
Lo mejor podría ser utilizar condicionales o secuencias de control como parte de la composición del encabezado/pie de página, ya que estas asignaciones se pueden hacer globales internamente \afterpage
sin ningún tipo de engaño. Por ejemplo:
\def\headertext{before}
\newpagestyle{myheader}{
\sethead{}{\headertext}{}
}
\pagestyle{myheader}
\newlist{mylist}{enumerate}{1}
\setlist[mylist]{
label = (\arabic*),
after = \afterpage{\gdef\headertext{after}}
}