
在頁面上後環境結束,我想切換標題樣式。下面的程式碼按照我想要的方式運作。然而,使用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
(via \ps@after
) \aftergroup
in\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}}
}