隐藏 KOMA scrbook 中“部分”的标题页

隐藏 KOMA scrbook 中“部分”的标题页

我正在排版一本书,书中的章节标题有精美的插图,并且每个部分都有整页插图(因此第 1 部分的插图包含文字“第 1 部分”等)。我成功地使用以下方法隐藏了章节标题:

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

(这确实有效,但 Koma 抱怨 @makechapterhead 的重新定义。我暂时可以接受,但理想情况下,我想要一个不会惹恼 Koma 的解决方案。)

但是,我想对 \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 部分:标题”的页面和其对面的空白页。文档应直接从目录转到双页,左侧是部分图片,右侧是章节。

创建类似于 \mychapter 的 \newcommand 似乎不会执行任何操作,甚至不会在日志中放置任何有趣的内容:

\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

我不确定我是否理解你到底想要什么。但我建议不要摆弄类的内部结构,而是定义一个命令,它只做你想要做的事情,不做其他事情。据我所知,你想要的是:

  • 开始新的奇数页(用于章节)或新的偶数页(用于部分)
  • 迈步反击
  • 可选添加目录条目和页眉标记
  • 打印图像

我对目录条目和标记使用了可选参数。我还定义了一个星号变体,不增加数字,也不增加目录条目和标记,类似于\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}、、和,但不是。还要注意, KOMA-Script 中没有预定义。\refstepcounter{part}\addtocounter{part}{…}\setcounter{part}{…}\stepcounter{\thepart}\@makeparthead

有关更多信息,\NewDocumentCommand请参阅“面向作者的 LaTeX — 当前版本”有关所使用的 KOMA-Script 命令的更多信息,请参阅 KOMA-Script 手册。

如果您确实想使用\part\chapter您应该恕我直言,重新定义\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的功能。相反,我存储了before\RedeclareSectionCommand的含义,并在 之后恢复它。\chapterlineswithprefixformat\chapter\chapter

对于第一个建议,我只需要 来自 LaTeX 内核的\@afterindentfalse和。这些是类/包作者的常用命令,但不是内部 KOMA-Script 命令。\@afterheading

相关内容