如何在 KOMA 脚本中删除 \mainmatter 中的 \cleardoublepage

如何在 KOMA 脚本中删除 \mainmatter 中的 \cleardoublepage

我的理解是该\mainmatter命令包含\cleardoublepage。我希望第一章从“简介 2”结束后的下一页开始,中间没有空白页,目前有两页空白页,其中至少有一页是由于\mainmatter

另一张空白页似乎是由于

\makeatletter
\@openrightfalse
\makeatother

,我使用这个设置,这样“Intro 2”就紧跟在“Intro 1”后面,没有空白页。但使用

\makeatletter
\@openrighttrue
\makeatother

对我的问题没有帮助。

命令\let\cleardoublepage=\clearpage也没有帮助我。这里可能有一个不清除任何页面的替代命令会有所帮助。

以下 MWE 在简介 2 和第一章之间产生两个空白页。我希望没有空白页。

梅威瑟:

%XeLaTeX
\documentclass[11pt]{scrbook}
\usepackage[
    inner=0.5in,
    outer=0.5in,
    twoside,
    showframe
    ]{geometry}
\usepackage{scrlayer-scrpage} 
\usepackage{lipsum}

\begin{document}

\frontmatter

\tableofcontents

\addchap{intro 1}
\lipsum[1]

%make chapter open on left-side (or any side)
%reset it before the next chapter
\makeatletter
\@openrightfalse
\makeatother

\addchap{intro 2}
\lipsum[2-14]

%reset to opening chapter on right-side
%\makeatletter
%\@openrighttrue
%\makeatother

%\let\cleardoublepage=\clearpage
\KOMAoptions{open=left}%I need all chapters from now on to start on left page
\mainmatter

\chapter{First Chapter}

\end{document}

答案1

\mainmatterin class的原始定义scrbook

\newcommand*\mainmatter{%
  \if@twoside\cleardoubleoddpage\else\clearpage\fi
  \@mainmattertrue\pagenumbering{arabic}%
}

\pagenumbering{arabic}将页码计数器重置为 1。这是一个奇数,奇数页码必须在右页。因此,\cleardoubleoddpage用于确保奇数页码为 1 的页面是右页。因此,不可能从左页的页码 1 开始正文。

因此,如果您想\mainmatter在双面文档中使用从左页开始的章节,则在正文的第一章之前至少会有一个空白页(右页,奇数为 1)。


您可以重新定义\mainmatter使用\clearpage而不更改页码系统:

\makeatletter
\renewcommand*\mainmatter{%
  \clearpage
  \@mainmattertrue
}
\makeatother

如果文档中需要阿拉伯页码,那么您也可以使用\frontmatter\pagenumbering{arabic}或重新定义\frontmatter

\renewcommand*{\frontmatter}{%
  \if@twoside\cleardoubleoddpage\else\clearpage\fi
  \@mainmatterfalse
}

但你真的需要\frontmatter\mainmatter吗?

例子:

\documentclass[11pt]{scrbook}
\usepackage[
  inner=0.5in,
  outer=0.5in,
  twoside,
  showframe
  ]{geometry}
\usepackage{scrlayer-scrpage} 
\usepackage{lipsum}

%\makeatletter
%\renewcommand*{\frontmatter}{%
  %\if@twoside\cleardoubleoddpage\else\clearpage\fi
  %\@mainmatterfalse
%}
%\renewcommand*\mainmatter{%
  %\clearpage
  %\@mainmattertrue
%}
%\makeatother

\begin{document}
%\frontmatter
\tableofcontents
\addchap{intro 1}
\lipsum[1]

\KOMAoptions{open=any}% make chapter open on any side
\addchap{intro 2}
\lipsum[2-14]
%\KOMAoptions{open=right}% reset to opening chapter on right-side

\KOMAoptions{open=left}%I need all chapters from now on to start on left page
%\mainmatter
\chapter{First Chapter}
\end{document}

您也可以重新定义\mainmatter为从偶数页开始。然后您必须将主内容中第一页的页码更改为偶数,例如 0 或 2。但这样就会有页码为 0 的页面或缺少第 1 页……太丑了。所以我不推荐以下代码片段

\makeatletter
\renewcommand*\mainmatter{%
  \cleardoubleevenpage
  \@mainmattertrue\pagenumbering{arabic}%
  \setcounter{page}{0}% or another even page number
}
\makeatother

相关内容