Automatisches Wechseln des Kopfzeilenstils an einer bestimmten (aber unbekannten) Stelle im Dokument

Automatisches Wechseln des Kopfzeilenstils an einer bestimmten (aber unbekannten) Stelle im Dokument

Auf der Seitenacheine Umgebung endet, möchte ich den Header-Stil ändern. Der folgende Code funktioniert wie gewünscht. Die Verwendung von everypagekommt mir jedoch etwas übertrieben vor und ich frage mich, ob es ein in eines der geladenen Pakete (einschließlich zref) integriertes Mittel oder eine andere „bessere“ Möglichkeit gibt, dasselbe zu erreichen.

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

Antwort1

Die folgenden Anwendungenafterpageund ist beeinflusst durchSeitenstile funktionieren nur für \thispagestyleunterafterpage.

Da das Setzen eines Seitenstils mit \pagestylenicht global ist (im Gegensatz zum Setzen mit \thispagestyle), \afterpagebedarf es etwas Hilfe. Daher bietet das Setzen des Seitenstils auf after(via \ps@after) \aftergroupin \afterpageeinen Workaround:

\usepackage{afterpage}% http://ctan.org/pkg/afterpage
...
\makeatletter
\setlist[mylist]{
  label = (\arabic*),
  after = \afterpage{\aftergroup\ps@after}
}
\makeatother

Besser wäre es, Bedingungsanweisungen oder Steuersequenzen als Teil der Kopf-/Fußzeilenkomposition zu verwenden, da diese Zuweisungen \afterpageohne großen Aufwand global gemacht werden können. Beispiel:

\def\headertext{before}
\newpagestyle{myheader}{
    \sethead{}{\headertext}{}
}
\pagestyle{myheader}

\newlist{mylist}{enumerate}{1}
\setlist[mylist]{
 label = (\arabic*),
 after = \afterpage{\gdef\headertext{after}}
}

verwandte Informationen