对于单面文档,我需要在偶数页上显示章节标题,在奇数页上显示节标题。对于双面文档,我可以轻松实现这一点。但对于单面文档,它要么在所有页面上显示章节标题,要么在所有页面上显示节标题,但不能在交替页面上同时显示两者。我尝试了以下代码。
\documentclass[a4paper,12pt,oneside]{book}
\usepackage{fancyhdr}
\usepackage{lipsum}
\begin{document}
\pagestyle{fancy}
\fancyhf{}
\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
\renewcommand{\sectionmark}[1]{\markright{#1}{}}
\lhead[E]{\leftmark}
\lhead[O]{\rightmark}
\cfoot{\thepage}
\lipsum
\lipsum
\end{document}
答案1
这个怎么样:
\documentclass[a4paper,12pt,oneside]{book}
\usepackage{fancyhdr}
\usepackage{lipsum}
\pagestyle{fancy}
\renewcommand{\chaptermark}[1]{\def\thechaptername{#1}}
\renewcommand{\sectionmark}[1]{\def\thesectionname{#1}}
\lhead{\ifodd\thepage\thesectionname\else\thechaptername\fi}
\cfoot{\thepage}
\begin{document}
\chapter{One}
\section{First}
\lipsum
\lipsum
\section{Second}
\lipsum
\lipsum
\chapter{Two}
\section{twofer}
\lipsum
\end{document}
答案2
建议:
\documentclass[a4paper,12pt,oneside]{book}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
\renewcommand{\sectionmark}[1]{\markright{#1}{}}
\fancyhead[L]{\ifodd\value{page}\rightmark\else\leftmark\fi}
\fancyfoot[C]{\thepage}
\usepackage{blindtext}% only for dummy text
\begin{document}
\blinddocument
\blinddocument
\end{document}
页眉和页脚的定义应在序言中完成。