
Насколько я понимаю, \mainmatter
команда содержит \cleardoublepage
. Я хочу, чтобы Первая Глава начиналась на следующей странице после окончания "Введения 2" без пустых страниц между ними. В настоящее время есть две пустые страницы, по крайней мере одна из которых вызвана \mainmatter
.
Другая пустая страница, похоже, возникла из-за
\makeatletter
\@openrightfalse
\makeatother
,который я использую, чтобы "Вступление 2" сразу следовало за "Вступлением 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
Первоначальное определение \mainmatter
в классе 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