Cambiar automáticamente el estilo del encabezado en un punto específico (pero desconocido) del documento

Cambiar automáticamente el estilo del encabezado en un punto específico (pero desconocido) del documento

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 everypageparece 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 usosafterpagey está influenciado porLos estilos de página solo funcionan para \thispagestylemenoresafterpage.

Dado que la configuración de un estilo de página usando \pagestyleno es global (en comparación con configurarlo usando \thispagestyle), \afterpagenecesita ayuda. Por lo tanto, configurar el estilo de página en ( aftera 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 \afterpagesin 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}}
}

información relacionada