为什么我在 fancyhdr 中看到页面第一部分的标题,而不是最后一部分的标题?

为什么我在 fancyhdr 中看到页面第一部分的标题,而不是最后一部分的标题?

尽管这个问题询问如何从默认的“显示最后部分页眉中的页面”以“显示第一部分在标题中”我遇到了相反的问题:自定义文档类用于fancyhdr设置标题,并且似乎可以神奇地从默认标题切换。现在需求发生了变化,我需要恢复 fancyhdr 默认行为。

我该怎么做才能最后部分奇数页的页眉中存在双页吗?

我没有发现自定义类中的代码有任何错误,所以我想知道他们在哪里改变了行为?

这将启动一个自定义部分称为“Abschnitt”或“Ueberschrift 2”:

\def\my@Abschnitt#1*[#2]#3{%        % ( Ueberschrift 2 )
...
  \markright{%                      %
    {%                              %
      \protect\my@markit\theMyAbschnitt\relax{#2}%
    }%                              %
  }%                                %
...

my@markit

\def\my@markone{}%                      %
\def\my@marktwo{}%                      %
\def\my@markit#1\relax#2{%              %
  \gdef\my@markone{#1}%                 %
  \gdef\my@marktwo{#2}%                 %
}                                       %

fancyhdr配置:

\newcommand\my@rightmark{%             
...
  \relax                            %
  \rightmark\relax                  % contains \my@markit
...
  \my@markone%    number
  \kern1em%       sep
...
  \my@marktwo%    text
...
}%

我在这里只跳过了格式化命令但跳过了神奇的逻辑。

因此,我真的看不到任何改变(所谓的)默认行为的fancyhdr证据最后部分第一部分。但事实上,它就在那里。我怎样才能撤消该更改?

答案1

默认情况下\rightmark打印第一个右标记,而\leftmark打印最后一个左标记。因此,您将获得默认行为。加载 extramarks 包,它定义了一个\lastrightmark命令:

\documentclass[]{book}
\usepackage{fancyhdr}
\usepackage{extramarks}
\pagestyle{fancy}
\lhead{Rightmark: first: \rightmark, last: \lastrightmark}
\begin{document}
abc
\markright{first}
\markright{second}
\markright{last}


\end{document}

相关内容