我有一个如下所示的代码:
\documentclass{scrbook}
\usepackage[automark]{scrpage2}
\usepackage{lipsum}
\let\oldchapter\chapter
\newcommand\temphead{}
\newcommand\chaphead{}
\renewcommand\chapter[2][\temphead]{%
\renewcommand\temphead{#2}%
\renewcommand\chaphead{#2}%
\oldchapter[#1]{#2}}
\title{My title}
\makeatletter
\let\titlehead\@title
\makeatother
\cfoot[\rule{6mm}{0.8pt}\\\pagemark]{\rule{6mm}{0.8pt}\\\pagemark}
\ofoot[]{}
\lehead[]{}
\cehead[]{\titlehead}
\cohead[]{\chaphead}
\ohead[]{}
\renewcommand*{\chapterpagestyle}{scrplain}
\begin{document}
\pagestyle{scrheadings}
\chapter{My first chapter}
\lipsum
\lipsum
\chapter{My second chapter}
\end{document}
目标是在右页显示章节名称,在左页显示书名。
现在,当新章节之前的页面是右页时,显示的章节是下一章的章节。我的示例代码显示了这一点,因为第一章的最后一页显示“我的第二章”。
我怎样才能解决这个问题?
答案1
您可以在 之前添加\clearpage
或 (如果需要) 。\cleardoublepage
\chapter{My second chapter}
答案2
常规\chapter
包含\cleardoublepage
(其作用类似于\clearpage
单面文档)。您需要\cleardoublepage
在更改页眉之前添加 以清除上一章的最后一页。\cleardoublepage
中的第二个\oldchapter
不会导致任何空白页。
\renewcommand\chapter[2][\temphead]{%
\cleardoublepage
\renewcommand\temphead{#2}%
\renewcommand\chaphead{#2}%
\oldchapter[#1]{#2}}
这使得您的新\chapter
作品与主文件\input
和或一起工作。\include
答案3
做不是重新定义\chapter
命令以更改章节的标题条目。要从标题标记中删除章节编号,只需重新定义\chaptermarkformat
即可:
\renewcommand\chaptermarkformat{}
请注意,当加载(或)并且为普通页面设置页面样式时,默认scrplain
使用。\chapterpagestyle
scrlayer-scrpage
scrpage2
scrheadings
带有包scrlayer-scrpage
(的后继scrpage2
) 的示例:
\documentclass
[footheight=27.2pt]% as suggested by scrlayer-scrpage
{scrbook}
\usepackage{lipsum}% only for dummy text
\renewcommand\chaptermarkformat{}% remove the chapter number from header entries
\usepackage[automark]{scrlayer-scrpage}% sets pagestyle scrheadings
\clearpairofpagestyles
\cfoot[\rule{6mm}{0.8pt}\\\pagemark]{\rule{6mm}{0.8pt}\\\pagemark}
\cehead{\titleheading}
\cohead{\leftmark}
\makeatletter
\newcommand\titleheading{\@title}
\makeatother
\title{My title}
\begin{document}
\pagestyle{scrheadings}
\chapter{My first chapter}
\lipsum[1-15]
\chapter{My second chapter}
\lipsum[1-200]
\end{document}
过时的包的示例scrpage2
:
\documentclass{scrbook}
\usepackage{lipsum}% only for dummy text
\renewcommand\chaptermarkformat{}% remove the chapter number from header entries
\usepackage[automark]{scrpage2}
\pagestyle{scrheadings}
\clearscrheadfoot
\cfoot[\rule{6mm}{0.8pt}\\\pagemark]{\rule{6mm}{0.8pt}\\\pagemark}
\cehead{\titleheading}
\cohead{\leftmark}
\makeatletter
\newcommand\titleheading{\@title}
\makeatother
\title{My title}
\begin{document}
\pagestyle{scrheadings}
\chapter{My first chapter}
\lipsum[1-15]
\chapter{My second chapter}
\lipsum[1-200]
\end{document}
答案4
问题是我使用了\input
而不是\include
来包含章节文件。这导致\chaphead
宏包含错误的值。欢迎解释为什么会发生这种情况。