Как удалить \cleardoublepage внутри \mainmatter в скрипте KOMA

Как удалить \cleardoublepage внутри \mainmatter в скрипте KOMA

Насколько я понимаю, \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

Связанный контент