让 fancyhdr 准确重现标准配置

让 fancyhdr 准确重现标准配置

哪些论点可以fancyhdr重现确切地使用文档类时的标准页面布局book

标准布局fancyhdr引入了上下栏,将章节和节的名称大写,在标题中的每个章节号前面添加“章节”,并将章节计数器更改为“III.4”而不是“4”。如果您只想将页码移动到底部中央,那么所有这些都会成为噪音。

答案1

大写和数字格式已经与使用headings类的页面样式相同book

默认图书

fancy的页面样式fancyhdr。然而,标题本身是不同的,因为fancyhdr的默认使用\leftmark\rightmark在每个页面上,这非常不常见。您可以使用 来更改它,例如\fancyhead。如果您还希望页码位于外边距,您也可以使用\fancyfoot来更改页脚。如果您还想删除标题下方的规则,您可以设置\headrulewidth为 0pt。所以你会得到类似的东西:

\documentclass{book}
\usepackage{fancyhdr}
\fancyhead[RE]{\slshape\leftmark}% right even head with chapter mark
\fancyhead[LO]{\slshape\rightmark}% left odd head with section mark
\fancyhead[LE,RO]{}% remove left even and right odd head
\fancyfoot[LE,RO]{\thepage}% set left even and right odd foot
\fancyfoot[C]{}% remove centre foot
\renewcommand{\headrulewidth}{0pt}% Note: It's a command not a length!
\pagestyle{fancy}
\usepackage{mwe}
\begin{document}
\blinddocument
\end{document}

倾斜的花式HDR

另一种方法是使用scrlayer-scrpage而不是fancyhdr。此包不会更改 的默认值book。因此,要将页码移到页脚中,只需将其从页眉中移除并放入页脚中:

\documentclass{book}
\usepackage[automark]{scrlayer-scrpage}
\ohead{}% remove page number from head
\ofoot*{\pagemark}% put page number into the foot (also at plain pages)
\usepackage{mwe}
\begin{document}
\blinddocument
\end{document}

结果和上面一样。

如果您不想要大写标题,您可以使用:

\documentclass{book}
\usepackage[markcase=noupper,automark]{scrlayer-scrpage}
\ohead{}% remove page number from head
\ofoot*{\pagemark}% put page number into the foot (also at plain pages)
\usepackage{mwe}
\begin{document}
\blinddocument
\end{document}

scrlayer-scrpage 大小写混合

如果您确实希望页码居中:

\documentclass{book}
\usepackage[markcase=noupper,automark]{scrlayer-scrpage}
\ohead{}% remove page number from head
\cfoot*{\pagemark}% add page number at the centre
\usepackage{mwe}
\begin{document}
\blinddocument
\end{document}

尽管如此,对于双面文档,我更喜欢将标题和页码放在外边距:

\documentclass{book}
\usepackage[pagestyleset=KOMA-Script,markcase=noupper,automark]{scrlayer-scrpage}
\usepackage{mwe}
\begin{document}
\blinddocument
\end{document}

如果你想Chapter从运行头中删除,你可以使用:

\documentclass{book}
\usepackage[pagestyleset=KOMA-Script,markcase=noupper,automark]{scrlayer-scrpage}
\renewcommand*{\chaptermarkformat}{\thechapter.\enskip}
\usepackage{mwe}
\begin{document}
\blinddocument
\end{document}

答案2

如果您确实想保留课程的标准标题book,则不需要fancyhdr

\documentclass[a4paper]{book}
\usepackage{blindtext}

\makeatletter
\renewcommand\@evenhead{\hfil\slshape\leftmark}
\renewcommand\@oddhead{\slshape\rightmark\hfil}
\renewcommand\@evenfoot{\hfil\thepage\hfil}
\renewcommand\@oddfoot{\hfil\thepage\hfil}
\makeatother

\begin{document}

\blinddocument

\end{document}

fancyhdr

\usepackage{fancyhdr}

\pagestyle{fancy}
\fancyhf{} % clear all fields
\fancyhead[RE]{\slshape\leftmark}
\fancyhead[LO]{\slshape\rightmark}
\fancyfoot[C]{\thepage}
\renewcommand{\headrulewidth}{0pt}
% restore the standard \chaptermark and \sectionmark
\makeatletter
\renewcommand\chaptermark[1]{%
  \markboth{%
    \MakeUppercase{%
      \ifnum \c@secnumdepth >\m@ne
        \if@mainmatter
          \@chapapp\ \thechapter. \ %
        \fi
      \fi
      #1%
    }%
  }{}%
}
\renewcommand\sectionmark[1]{%
  \markright{%
    \MakeUppercase{%
      \ifnum \c@secnumdepth >\z@
        \thesection. \ %
      \fi
      #1%
    }%
  }%
}
\makeatother

\headheight如果您使用11pt或类选项,您可能还需要设置12pt:查看日志文件中fancyhdr有关它发出的警告。

我毫不怀疑该选择哪种方法。

相关内容