KOMA スクリプトで \mainmatter 内の \cleardoublepage を削除する方法

KOMA スクリプトで \mainmatter 内の \cleardoublepage を削除する方法

私の理解では、\mainmatterコマンドには が含まれています\cleardoublepage。第 1 章を「Intro 2」の終わりの次のページから開始し、間に空白ページがないようにしたいのですが、現在 2 つの空白ページがあり、そのうち少なくとも 1 つは によるものです\mainmatter

もう1つの空白ページは、

\makeatletter
\@openrightfalse
\makeatother

、私は「イントロ2」が「イントロ1」の直後に空白ページなしで続くように使用しています。しかし、これを通常の状態に戻すと、

\makeatletter
\@openrighttrue
\makeatother

私の問題は解決しません。

コマンド\let\cleardoublepage=\clearpageも役に立ちませんでした。ページをクリアしない代替コマンドが役立つかもしれません。

次の MWE では、Intro 2 と最初の章の間に 2 つの空白ページが生成されます。空白ページをゼロにしたいです。

MWE:

%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

\mainmatter本来のin classの定義scrbook

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

\pagenumbering{arabic}ページ カウンターを 1 にリセットします。これは奇数であり、奇数ページ番号は右ページになければなりません。したがって、\cleardoubleoddpage奇数ページ番号 1 のページが右ページであることを確認するために使用されます。したがって、メイン マターを左ページでページ番号 1 から開始することはできません。

したがって、左ページから章が始まる両面文書で使用する場合\mainmatter、本文の最初の章の前に少なくとも 1 ページの空白ページ (奇数番号 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

関連情報