Auf der Seitenacheine Umgebung endet, möchte ich den Header-Stil ändern. Der folgende Code funktioniert wie gewünscht. Die Verwendung von everypage
kommt 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 Anwendungenafterpage
und ist beeinflusst durchSeitenstile funktionieren nur für \thispagestyle
unterafterpage
.
Da das Setzen eines Seitenstils mit \pagestyle
nicht global ist (im Gegensatz zum Setzen mit \thispagestyle
), \afterpage
bedarf es etwas Hilfe. Daher bietet das Setzen des Seitenstils auf after
(via \ps@after
) \aftergroup
in \afterpage
einen 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 \afterpage
ohne 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}}
}