KOMA 스크립트의 \mainmatter 내의 \cleardoublepage를 제거하는 방법

KOMA 스크립트의 \mainmatter 내의 \cleardoublepage를 제거하는 방법

내 이해는 \mainmatter명령에 \cleardoublepage. "Intro 2"가 끝난 후 바로 다음 페이지에서 첫 번째 장이 시작되도록 하고 싶습니다. 사이에 빈 페이지가 없습니다. 현재 두 개의 빈 페이지가 있으며 그 중 적어도 하나는 \mainmatter.

다른 빈 페이지는 다음으로 인해 발생한 것 같습니다.

\makeatletter
\@openrightfalse
\makeatother

, 빈 페이지 없이 "소개 2"가 "소개 1" 바로 뒤에 오도록 사용합니다. 하지만 이것을 다시 정상으로 재설정하면

\makeatletter
\@openrighttrue
\makeatother

내 문제에 도움이되지 않습니다.

명령 \let\cleardoublepage=\clearpage도 나에게 도움이되지 않았습니다. 여기서는 페이지를 지우지 않는 대체 명령이 도움이 될 수 있습니다.

다음 MWE는 소개 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

\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

관련 정보