我有以下代码
\documentclass[12pt,a4paper,oneside,openany]{book}
\usepackage[utf8]{inputenc}
\usepackage[left=1in,right=1in,top=1.25in,bottom=1.25in,headsep=30pt,heightrounded]
{geometry}
\usepackage[x11names, svgnames, dvipsnames]{xcolor}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsthm}
%==============================================================
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[LE,RO]{\thepage}
\fancyhead[LO]{\small\nouppercase{\rightorleftmark}}
\fancyhead[RE]{\small\nouppercase{\leftmark}}
\renewcommand\chaptermark[1]{\markboth{\thechapter\hspace{0.25cm} #1}{}}
\renewcommand\sectionmark[1]{\markright{\thesection\hspace{0.4cm}#1}{}}
\renewcommand{\headrulewidth}{0pt}
\makeatletter
\newcommand{\rightorleftmark}{%
\begingroup\protected@edef\x{\rightmark}%
\ifx\x\@empty
\endgroup\leftmark
\else
\endgroup\rightmark
\fi}
\makeatother
%===============================================================
\usepackage{lipsum}
\begin{document}
\frontmatter
\tableofcontents
\mainmatter
\chapter{Introduction}
\lipsum[1-10]
\chapter{Preliminaries}
\section{Basics}
\lipsum[1-15]
\chapter{$C4$-Modules}
\lipsum[1-30]
\end{document}
在添加oneside
命令之前,第 1 章和第 3 章的章节名称和页码在页眉中互换,而第 2 章的章节名称出现在页眉的右上角。这正是我想要的。添加后oneside
,这种行为发生了变化。我不知道为什么。我该如何解决这个问题?此外,如果我删除oneside
命令,目录后会立即出现一个空白页。我该如何摆脱这个空白页?
如果有人能给我提供此代码的增强形式,我将不胜感激。
答案1
显然您不想要,oneside
因为您有不同的left
风格right
。
通常openany
意味着\clearpage
使用而不是\cleardoublepage
以便页面可以打开到奇数页或偶数页。
然而,这适用于章节和附录,但不适用于\frontmatter
或
\mainmatter
这是由于 1998 年做出的改变,并记录在资料中
% \subsubsection{Front Matter, Main Matter, and Back Matter}
%
% A book contains these three (logical) sections. The switch
% |\@mainmatter| is true iff we are processing Main Matter. When
% this switch is false, the |\chapter| command does not print
% chapter numbers.
%
% Here we define the commands that start these sections.
% \begin{macro}{\frontmatter}
% This command starts Roman page numbering and turns off chapter
% numbering. Since this restarts the page numbering from 1, it
% should also ensure that a recto page is used.
% \changes{v1.3r}{1996/05/26}{Make this command react to the option
% \texttt{openany}}
% \changes{v1.3y}{1998/05/05}{Two years on: Make this command not
% react to the option \texttt{openany} as this makes the
% verso/recto numbering wrong: see pr/2754 for discussion}
参考报告是
https://www.latex-project.org/cgi-bin/ltxbugs2html?pr=latex%2F2754
问题是(与不同\chapter
)\mainmatter
不仅强制使用新页面,还将页码重置为 1。您确实需要将第 1 页放在右侧页面上,否则整个页面标题左/右样式选择将基于奇数页码在右侧页面和偶数页码在左侧页面。
因此,要么接受空白页(如果您编写更多章节并且有更长的目录,则无论如何都会使用空白页),要么oneside
对奇数页和偶数页使用单独的样式,而不是使用单独的样式。
空白页只是暂时的,它会随着您编辑文档而出现和消失。特别是如果您有更多前言(例如标题),那么页面会自然地落在没有空白页的右侧页面上:
\documentclass[12pt,a4paper,openany]{book}
\usepackage[utf8]{inputenc}
\usepackage[left=1in,right=1in,top=1.25in,bottom=1.25in,headsep=30pt,heightrounded]
{geometry}
\usepackage[x11names, svgnames, dvipsnames]{xcolor}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsthm}
%==============================================================
\usepackage{fancyhdr}
\setlength{\headheight}{14.5pt}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[LE,RO]{\thepage}
\fancyhead[LO]{\small\nouppercase{\rightorleftmark}}
\fancyhead[RE]{\small\nouppercase{\leftmark}}
\renewcommand\chaptermark[1]{\markboth{\thechapter\hspace{0.25cm} #1}{}}
\renewcommand\sectionmark[1]{\markright{\thesection\hspace{0.4cm}#1}{}}
\renewcommand{\headrulewidth}{0pt}
\makeatletter
\newcommand{\rightorleftmark}{%
\begingroup\protected@edef\x{\rightmark}%
\ifx\x\@empty
\endgroup\leftmark
\else
\endgroup\rightmark
\fi}
\makeatother
%===============================================================
\usepackage{lipsum}
\begin{document}
\title{something}
\author{somebody}
\frontmatter
\maketitle
\tableofcontents
\mainmatter
\chapter{Introduction}
\lipsum[1-10]
\chapter{Preliminaries}
\section{Basics}
\lipsum[1-15]
\chapter{$C4$-Modules}
\lipsum[1-30]
\end{document}