使用 fancyhdr 创建 pagestyle plain 的自定义副本?

使用 fancyhdr 创建 pagestyle plain 的自定义副本?

考虑这个 MWE (用 编译pdflatex -shell-escape test.tex):

\documentclass{book}
\usepackage{filecontents}
\begin{filecontents*}{insert.tex}
  \documentclass{article}
  \usepackage{lipsum}
  \begin{document}
  \thispagestyle{empty}
  \lipsum[1-2]
  \end{document}
\end{filecontents*}

\usepackage{pdfpages}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{} %delete everything
\renewcommand{\headrulewidth}{0pt} %remove the horizontal line in the header
\fancyhead[RE]{\small\nouppercase\leftmark} %even page - chapter title
\fancyhead[LO]{\small\nouppercase\rightmark} %uneven page - section title
\fancyfoot[CE,CO]{AX-\thepage} %page number on all pages

\immediate\write18{pdflatex insert.tex} % compile this, to insert as pdf

\begin{document}

\chapter{Test chapter}
\thispagestyle{fancy}
\section{Test section}

So, blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah ...

\clearpage

\includepdf[pages=-,pagecommand=\thispagestyle{plain}]{insert.pdf}

\end{document}

这里,第一页输出“AX-1”作为页码;但包含的 pdf 只显示“2”,因为我使用了pagecommand=\thispagestyle{plain}

我也希望第二页上有页码“AX-2” - 但是如果我使用pagecommand=\thispagestyle{fancy},虽然我在那里得到了“AX-2”,但我也会得到我不想要的节标题。

我理想中想要的是制作plain页面样式的“副本”,命名为plainB,并仅为\fancyfoot[CE,CO]{AX-\thepage}它重新定义;这样我就可以使用它,pagecommand=\thispagestyle{plainB}并且只输出自定义的页码“AX-2”。

这完全有可能做到吗?如果可以,我该怎么做?

答案1

您可以定义新的页面样式。例如:

\fancypagestyle{customplain}{%
\fancyhf{}%
\fancyhf[cf]{<whatever>}%
\renewcommand*\headrulewidth{0pt}}

然后按照你想要的方式使用它。

答案2

要复制现有的页面样式,请将其包含在新的页面样式中并重新定义您需要的内容:

在此处输入图片描述

\documentclass{article}
\usepackage{fancyhdr,lipsum}

% fancy page style
\fancyhf{}% Clear header/footer
\fancyhead[L]{LH}\fancyhead[C]{CH}\fancyhead[R]{RH}
\fancyfoot[L]{LF}\fancyfoot[C]{CF}\fancyfoot[R]{RF}

% New fancy page style
\fancypagestyle{newfancy}{
  \pagestyle{fancy}% Duplicate fancy page style
  \fancyhead[C]{ch}% Update components of fancy
}

\begin{document}
\pagestyle{fancy}
\lipsum[1-5]

\lipsum[1-5]
\pagestyle{newfancy}

\end{document}

\pagestyle{<style>}(和\thispagestyle{<style>})纯粹是执行一组宏(包含在 内\ps@<style>)的指令。这就是为什么在另一个页面样式中调用页面样式是可以的 - 它会设置与原始样式相关的“默认值”,以及您在其后包含的任何修改。

相关内容