请考虑以下示例,如果plain
页面样式已用 进行修改\fancypagestyle
,则\pagestyle{fancy}
如果之前已应用过 则不起作用\pagestyle{plain}
。
\documentclass{article}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[R]{\rightmark}
\fancyhead[L]{\leftmark}
\fancypagestyle{plain}{\fancyhf{}}
\begin{document}
\pagestyle{plain} % with this, '\pagestyle{fancy}' below doesn't work
\section{Test}
\clearpage
\pagestyle{fancy} % doesn't work
\subsection{test}
\end{document}
第二页应该是这样的
但现在
我怎样才能解决这个问题?
答案1
精美的页面样式默认从环境中获取其设置。因此,如果您更改某些标题,它也会更改。如文档中所述,您可以改用以下样式fancydefault
:
\documentclass{article}
\usepackage{fancyhdr}
\pagestyle{fancy}
%
\fancyhf{}
\fancyhead[R]{\rightmark}
\fancyhead[L]{\leftmark}
\fancypagestyle{plain}{\fancyhf{}}
\begin{document}
\pagestyle{plain} %
\section{Test}
\clearpage
\pagestyle{fancydefault} %
\subsection{test}
\end{document}
另一种方法是用以下方法定义 fancy \fancypagestyle
:
\documentclass{article}
\usepackage{fancyhdr}
\fancypagestyle{fancy}{%
\fancyhf{}%
\fancyhead[R]{\rightmark}%
\fancyhead[L]{\leftmark}}
\pagestyle{fancy}
\fancypagestyle{plain}{\fancyhf{}}
\begin{document}
\pagestyle{plain} %
\section{Test}
\clearpage
\pagestyle{fancy} %
\subsection{test}
\end{document}
答案2
不幸的是,这就是\pagestyle
工作原理。\pagestyle{plain}
执行其定义中给出的所有命令(除了 fancyhdr 设置),因此\fancyhf{}
在全局上下文中执行。
稍后\pagestyle{fancy}
不会撤消此操作。仅当\pagestyle{plain}
在本地上下文中给出时,其更改才仅限于该上下文。例如,在 中\thispagestyle
,或者在组中给出时\pagestyle{}
(请参阅解决方案 1)。否则,您必须在 pagestyle 中明确放置标题定义fancy
(请参阅解决方案 2)。
在下一个版本中fancyhdr
我将对此提供更好的解决方案,但现在您可以使用以下解决方案之一。
解决方案 1:使用组。笔记\clearpage 必须位于组内,否则原始标题将泄漏到前一页中。
\documentclass{article}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[R]{\rightmark}
\fancyhead[L]{\leftmark}
\fancypagestyle{plain}{\fancyhf{}}
\begin{document}
\begingroup
\pagestyle{plain} % with this, '\pagestyle{fancy}' below doesn't work
\section{Test}
\clearpage
\endgroup
\pagestyle{fancy} % doesn't work
\subsection{test}
\end{document}
解决方案 2:将标题定义放入页面样式中fancy
。笔记这只在 fancyhdr 版本 4 中有效,否则您将必须使用不同的页面样式名称。
\documentclass{article}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancypagestyle{fancy}{
\fancyhead[R]{\rightmark}
\fancyhead[L]{\leftmark}
}
\fancypagestyle{plain}{\fancyhf{}}
\begin{document}
\pagestyle{plain} % with this, '\pagestyle{fancy}' below doesn't work
\section{Test}
\clearpage
\pagestyle{fancy} % doesn't work
\subsection{test}
\end{document}