我目前使用 fancyhdr 在每页上显示章节名称和页码。但是,我想更改它,以便它在左页显示章节,在右页显示部分。我知道如何手动执行此操作,但这会花费很长时间。有没有快速简便的方法可以做到这一点?
另外,我希望能够添加和更改页面底部的水平线。我猜 0.5 倍文本宽度就够了,但我可能想稍后更改它。另外,我不希望字体全部大写,也不想在顶部包含“第 N 章:”。从顶部删除页码也不错。
因此,在左页上:章节名称,下方的文本宽度处有一条线,然后在右页上,是部分名称。我希望这两个标题都在页面的内部。然后,在底部,我想要一条水平线,下方的中央是页码。
答案1
使用新的现代包scrlayer-scrpage
可以满足您的所有需求。当然,您fancyhdr
也可以将其用于您的文档。使用可以非常轻松地更改规则的长度,
scrlayer-scrpage
但使用时需要付出更多努力,fancyhdr
因为默认宽度与同步headwidth
。
\documentclass[twoside,
footsepline,plainfootsepline,
headsepline]{report}
\usepackage{blindtext}
\usepackage[automark,clines,markcase=nouppercase]{scrlayer-scrpage}
\clearpairofpagestyles
\cfoot[\pagemark]{\pagemark}
\ihead{\headmark}
\KOMAoption{footsepline}{:.5\textwidth}
\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
\usepackage{showframe}
\begin{document}
\blinddocument
\end{document}
使用fancyhdr
\documentclass[twoside,draft]{report}
\usepackage{fancyhdr}
\newlength{\footrulelength}
\setlength{\footrulelength}{.5\textwidth}
\usepackage{showframe}
\makeatletter
\def\footrule{
\if@fancyplain\let\footrulewidth\plainfootrulewidth%
\fi%
\vskip-\footruleskip\vskip-\footrulewidth%
\null\hfill%
\rule{\footrulelength}{\footrulewidth}\hfill\null%
\vskip\footruleskip%
}
\makeatother
\fancypagestyle{plain}{%
\fancyhf{}
\fancyfoot[c]{\thepage}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{.4pt}
}
\usepackage{blindtext}
\fancyhf{}
\fancyhead[ER]{\rmfamily\leftmark}
\fancyhead[OL]{\rmfamily\rightmark}
\fancyfoot[c]{\thepage}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{.4pt}
\renewcommand{\plainfootrulewidth}{.4pt}
\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
\begin{document}
\blinddocument
\end{document}