我正在排版一本书,书中的章节标题有精美的插图,并且每个部分都有整页插图(因此第 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…\endgroup
in \mychapter
,因为这也会破坏添加\label
after 的可能性\mychapter
,也会破坏afterindent=false
的功能。相反,我存储了before\RedeclareSectionCommand
的含义,并在 之后恢复它。\chapterlineswithprefixformat
\chapter
\chapter
对于第一个建议,我只需要 来自 LaTeX 内核的\@afterindentfalse
和。这些是类/包作者的常用命令,但不是内部 KOMA-Script 命令。\@afterheading