На страницепослесреда заканчивается, я хотел бы изменить стиль заголовка. Код ниже работает так, как мне бы хотелось. Однако использование everypage
кажется немного излишним, и мне интересно, есть ли встроенные средства в одном из загруженных пакетов (включая zref
), или иной "лучший" способ сделать то же самое.
\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}
решение1
Следующие примененияafterpage
и находится под влияниемСтили страниц работают только \thispagestyle
дляafterpage
.
Поскольку настройка стиля страницы с помощью \pagestyle
не является глобальной (по сравнению с настройкой с помощью \thispagestyle
), \afterpage
требуется некоторая помощь. Поэтому настройка стиля страницы на after
(через \ps@after
) \aftergroup
в \afterpage
обеспечивает обходной путь:
\usepackage{afterpage}% http://ctan.org/pkg/afterpage
...
\makeatletter
\setlist[mylist]{
label = (\arabic*),
after = \afterpage{\aftergroup\ps@after}
}
\makeatother
Лучше было бы использовать условные операторы или управляющие последовательности как часть композиции заголовка/подвала, поскольку эти назначения можно сделать глобальными внутри \afterpage
без всяких ухищрений. Например:
\def\headertext{before}
\newpagestyle{myheader}{
\sethead{}{\headertext}{}
}
\pagestyle{myheader}
\newlist{mylist}{enumerate}{1}
\setlist[mylist]{
label = (\arabic*),
after = \afterpage{\gdef\headertext{after}}
}