Подавить титульный лист для "part" в KOMA scrbook

Подавить титульный лист для "part" в KOMA scrbook

Я работаю над набором книги, в которой будут прекрасные иллюстрации для заголовков глав, а также полностраничные иллюстрации для каждой части (так, Часть 1 получит иллюстрацию, включающую текст «Часть 1» и т. д.). Мне удалось скрыть заголовок главы с помощью:

\newcommand{\mychapter}[1]{%
  \begingroup
  \let\@makechapterhead\@gobble % make \@makechapterhead do nothing
  \chapter{#1}
  \endgroup
}

(Это работает, но Кома жалуется на переопределение @makechapterhead. Пока меня это устраивает, но в идеале я хотел бы найти решение, которое не будет раздражать Кому.)

Однако я хотел бы сделать то же самое с \part, а также с \chapter, но у меня не получается.

Вот пример MWE, в котором оглавление и развороты страниц в самый раз, НО я не хочу, чтобы печаталась страница с надписью «Часть 1» или пустая страница напротив нее:

\documentclass[twoside,chapterprefix,headings=big]{scrbook}

\usepackage{blindtext}
\usepackage{mwe}


\makeatletter
\newcommand{\mychapter}[1]{%
  \begingroup
  \let\@makechapterhead\@gobble
  \chapter{#1}
  \endgroup
}
\makeatother

\begin{document}
\tableofcontents

\KOMAoptions{headings=openleft}
\part{It begins}
%beautiful artwork goes... around here somewhere?
\includegraphics[width=\textwidth]{example-image-golden}

\KOMAoptions{headings=openright}
\mychapter{a chapter}
 \begin{figure}[t!]
\centering
%beautiful chapter head artwork goes here
\includegraphics[width=\textwidth]{example-image-a}
\end{figure}
\blindtext

\mychapter{another chapter}
 \begin{figure}[t!]
\centering
%beautiful chapter head artwork goes here
\includegraphics[width=\textwidth]{example-image-b}
\end{figure}
\blindtext

\KOMAoptions{headings=openleft}
\part{The middle bit}
%beautiful artwork goes... around here somewhere?
\includegraphics[width=\textwidth]{example-image-golden}

\KOMAoptions{headings=openright}
\mychapter{yet another chapter}
\includegraphics[width=\textwidth]{example-image-c}

\blindtext
\end{document}

(Мы предполагаем, что «золотое» изображение — это полностраничная иллюстрация, которая будет использоваться вместо LaTeX, выводящего «Часть N: Заголовок».)

Я хочу, чтобы страница с "Часть N: Название" и пустая страница напротив нее были скрыты (не напечатаны). Документ должен идти прямо от оглавления к двухстраничному развороту с иллюстрацией части слева и главой, начинающейся справа.

Создание \newcommand, аналогичной \mychapter, похоже, ничего не делает и даже не записывает ничего интересного в журнал:

\makeatletter
\newcommand{\mypart}[1]{%
  \begingroup
  \let\@makeparthead\@gobble
  \part{#1}
  \endgroup
}
\makeatother

Пытаясь подделать частьопускаякоманду \part{It Begins}и вместо этого допинг ToC с

\addcontentsline{toc}{part}{Part \thepart: It Begins}

приводит к отображению заголовка части в содержаниинижеглава 1, и без номера части, плюс я не вижу, как увеличить \thepart, чтобы последующие части были пронумерованы правильно. Попытка вручную увеличить его с помощью \stepcounter{\thepart}выдает ошибку.

Если в руководстве Koma на английском об этом и говорится, то я, честно говоря, этого пропустил.

Спасибо всем!

решение1

Я не уверен, что понимаю, чего именно вы хотите. Но вместо того, чтобы возиться с внутренностями класса, я бы предложил определить команду, которая делает именно то, что вы хотите, и ничего больше. AFAIK, вы хотите:

  • начать новую нечетную страницу (для глав) или новую четную страницу (для частей)
  • шаг за прилавком
  • необязательно добавьте запись оглавления и отметку для заголовков страниц
  • распечатать изображение

Я использую необязательный аргумент для записи TOC и отметки. И я также определяю вариант звезды без увеличения числа и без записи TOC и отметки, аналогично \part*и \chapter*. Я использую обязательный аргумент для файла изображения:

\documentclass[chapterprefix,headings=big]{scrbook}

\usepackage{blindtext}
\usepackage{mwe}

\makeatletter
\NewDocumentCommand\ArtPart{som}{%
  \cleardoubleevenpage
  \IfBooleanTF{#1}{% star version: no TOC entry or page header
  }{%
    \refstepcounter{part}%
    \IfValueTF{#2}{% optional argument: Use for TOC entry and page header
      \addparttocentry{\thepart.}{#2}%
      \partmark{#2}%
    }{}%
  }%
  \noindent\includegraphics[width=\textwidth]{#3}%
  \par\nobreak
  \@afterindentfalse% don't indent first paragraph after the heading
  \@afterheading% don't allow page break here etc.
}

\NewDocumentCommand\ArtChapter{som}{%
  \cleardoubleoddpage
  \IfBooleanTF{#1}{% star version: no TOC entry or page header
  }{%
    \refstepcounter{chapter}%
    \IfValueTF{#2}{% optional argument: Use for TOC entry and page header
      \addchaptertocentry{\thechapter}{#2}%
      \chaptermark{#2}%
    }{}%
  }%
  \noindent\includegraphics[width=\textwidth]{#3}%
  \par\nobreak
  \@afterindentfalse% don't indent first paragraph after the heading
  \@afterheading% don't allow page break here etc.
}
\makeatother

\begin{document}
\tableofcontents

\ArtPart[It begins]{example-image-golden}


\ArtChapter[a chapter]{example-image-a}
\blindtext

\ArtChapter[another chapter]{example-image-b}
\blindtext

\ArtPart[The middle bit]{example-image-golden}

\ArtChapter[yet another chapter]{example-image-c}

\blindtext
\end{document}

введите описание изображения здесь

Обратите внимание, что \thepartэто не счетчик, а вывод счетчика. Счетчик будет partи, следовательно, для управления счетчиком вам придется использовать \stepcounter{part}, \refstepcounter{part}, \addtocounter{part}{…}, и \setcounter{part}{…}, но не \stepcounter{\thepart}. Обратите внимание, что в KOMA-Script нет предопределенного \@makeparthead.

Для получения более подробной информации \NewDocumentCommandсм.«LaTeX для авторов — текущая версия». Более подробную информацию об используемых командах KOMA-Script см. в руководстве KOMA-Script.

Если вы действительно хотите использовать \partи , \chapterвам IMHO следует переопределить \chapterlineswithprefixformatи \partlineswithprefixformatвместо внутренних команд:

\documentclass[chapterprefix,headings=big]{scrbook}

\usepackage{blindtext}
\usepackage{mwe}

\newcommand\mypart[2]{%
  \begingroup
    \KOMAoption{open}{left}%
    \renewcommand*{\partlineswithprefixformat}[3]{%
      \includegraphics[width=\textwidth]{#2}% this is the second argument of
                                % \mypart not of \partlineswithprefixformat
    }%
    \renewcommand*{\partheademptypage}{}% don't add an empty page after \part
    \part[#1]{#2}%
  \endgroup  
}

\newcommand\mychapter[2]{%
  \KOMAoption{open}{right}%
  \DeclareCommandCopy\ChapterLinesWithPrefixFormat\chapterlineswithprefixformat
  \renewcommand*{\chapterlineswithprefixformat}[3]{%
    \includegraphics[width=\textwidth]{#2}% this is the second argument of
                         % \mychapter not of \chapterlineswithprefixformat
  }%
  \chapter[#1]{#2}%
  \DeclareCommandCopy\chapterlineswithprefixformat\ChapterLinesWithPrefixFormat
}

\begin{document}
\tableofcontents

\mypart{It begins}{example-image-golden}


\mychapter{a chapter}{example-image-a}
\blindtext

\mychapter{another chapter}{example-image-b}
\blindtext

\mypart{The middle bit}{example-image-golden}

\mychapter{yet another chapter}{example-image-c}

\blindtext
\end{document}

введите описание изображения здесь

При этом вы по-прежнему можете использовать \RedeclareSectionCommand, например, для изменения вертикального расстояния до и после заголовка = до и после изображения.

Как вы можете видеть, мне не понадобились никакие внутренние команды для этого второго предложения, а только команды, которые описаны в руководстве KOMA-Script для использования обычными или продвинутыми пользователями или которые описаны в«LaTeX для авторов — текущая версия».

Примечание: Я не использовал \begingroup…\endgroupin \mychapter, потому что это также нарушило бы возможность добавления \labelafter \mychapterи также нарушило бы afterindent=falseфункцию \RedeclareSectionCommand. Вместо этого я сохранил значение \chapterlineswithprefixformatbefore \chapterи восстановил его after \chapter.

Для первого предложения мне нужны были только \@afterindentfalseи \@afterheadingиз ядра LaTeX. Это обычные команды для авторов классов/пакетов, но не внутренние команды KOMA-Script.

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