ページ上後環境が終了したら、ヘッダー スタイルを切り替えたいと思います。以下のコードは、期待どおりに動作します。ただし、 の使用はeverypage
少々やり過ぎのように感じられ、ロードされたパッケージの 1 つ ( を含む) に組み込まれた手段があるか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}}
}