应用 \pagestyle{plain} 后 \pagestyle{fancy} 不起作用

应用 \pagestyle{plain} 后 \pagestyle{fancy} 不起作用

请考虑以下示例,如果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}

在此处输入图片描述

相关内容