我正在尝试设置标题,但遇到了一些问题。我希望以以下方式显示它:
(零件编号):(零件名称) ---- (章节编号)。(章节名称)
页眉应显示在除新部分开始的页面之外的所有页面上。
\documentclass[a4paper]{report}
\usepackage{titlesec}
\usepackage{fancyhdr}
\usepackage{lipsum}
\pagestyle{fancy}
\makeatletter
\@addtoreset{chapter}{part}
\makeatother
\begin{document}
\part{Part one}
\chapter{Chapter one}
\lipsum[1]
\section{Section one}
\lipsum[1-4]
\part{Part two}
\chapter{Chapter one}
\lipsum[1]
\section{Section one}
\lipsum[1-4]
\end{document}
答案1
report
不提供零件级别的标记。您可以使用scrreprt
andscrlayer-scrpage
代替report
and fancyhdr
:
\documentclass{scrreprt}
\usepackage[autooneside=false]{scrlayer-scrpage}
\pagestyle{headings}
\automark[chapter]{part}
\chead{}
\ihead{\leftmark}
\ohead{\rightmark}
\renewcommand*{\chapterpagestyle}{headings}% use headings page style also for chapter pages
\usepackage{mwe}
\begin{document}
\tableofcontents
\part{First Part}
\blinddocument
\part{Second Part}
\blinddocument
\end{document}
如果scrreprt
应该更相似,report
您可以使用选项emulatestandardclasses
:
\documentclass[emulatestandardclasses,autooneside=false]{scrreprt}
\renewcommand*{\chaptermarkformat}{\thechapter\autodot\enskip}
\pagestyle{headings}
\automark[chapter]{part}
\chead{}
\ihead{\leftmark}
\ohead{\rightmark}
\renewcommand*{\chapterpagestyle}{headings}% use headings page style also for chapter pages
\usepackage{mwe}
\begin{document}
\tableofcontents
\part{First Part}
\blinddocument
\part{Second Part}
\blinddocument
\end{document}
如果您想要一个头部分隔线,则可以使用选项headsepline
。有关 KOMA-Script 类或包的配置的更多信息,请参阅 KOMA-Script 手册scrlayer-scrpage
。
注意:您不应将titlesec
其与 KOMA-Script 类一起使用scrreprt
。您应改用 KOMA-Script 功能来配置分段命令。
为了获得相同的效果,report
您必须修补该课程:
\documentclass{report}
\usepackage[autooneside=false]{scrlayer-scrpage}
\pagestyle{headings}
\automark[chapter]{part}
\chead{}
\ihead{\leftmark}
\ohead{\rightmark}
\usepackage{xpatch}
\makeatletter
\xpatchcmd{\@part}{\@endpart}{%
\partmark{#2}%
\@endpart
}{}{}
\makeatother
\renewcommand*{\partmarkformat}{\thepart.\enskip}
\renewcommand*{\chaptermarkformat}{\thechapter.\enskip}
\xpatchcmd{\chapter}{\thispagestyle{plain}}{}{}{}% dont use pagestyle plain for chapter pages
\usepackage{mwe}
\begin{document}
\tableofcontents
\part{First Part}
\blinddocument
\part{Second Part}
\blinddocument
\end{document}
注意:您不能组合fancyhdr
和scrlayer-scrpage
。因此,如果您使用scrlayer-scrpage
配置如上所示的页面标题,则不得加载fancyhdr
!
但如果你确实想使用,fancyhdr
你可以用scrlayer-scrpage
一些代码替换最后一个例子的代码fancyhdr
,例如,
\documentclass{report}
\usepackage{xpatch}
\makeatletter
\xpatchcmd{\@part}{\@endpart}{%
\partmark{#2}%
\@endpart
}{}{}
\makeatother
\usepackage{fancyhdr}
\pagestyle{fancy}
\newcommand*{\partmark}[1]{\markboth{\thepart.\enskip \MakeUppercase{#1}}{}}
\renewcommand*{\chaptermark}[1]{\markright{\thechapter.\enskip \MakeUppercase{#1}}}
\renewcommand*{\sectionmark}[1]{}
\lhead{\leftmark}
\rhead{\rightmark}
\xpatchcmd{\chapter}{\thispagestyle{plain}}{}{}{}% dont use pagestyle plain for chapter pages
\usepackage{mwe}
\begin{document}
\tableofcontents
\part{First Part}
\blinddocument
\part{Second Part}
\blinddocument
\end{document}
注意:如果您正在使用软件包,则titlesec
必须使用\renewcommand
来(重新)定义。如果您使用来重新定义,\partmark
修补可能会失败。如果您使用来重新定义,修补可能会失败。\@part
titlesec
\part
\chapter
titlesec
\chapter