如何使 \dropchapter 与 \chapter* (epigraph 包) 一起工作?

如何使 \dropchapter 与 \chapter* (epigraph 包) 一起工作?

我希望在章节标题前添加一段很长的引文,使用\epigraphheadepigraph 包提供的命令可以完美满足我的这个需求。

但是,由于引文很长,它会干扰我的章节标题和正文,如下所示:

在此处输入图片描述

文档中提到,这种情况很可能发生在长引文中,可以使用\dropchapter降低章节标题,然后使用该\undodrop命令确保后续章节标题再次正常设置。

这就是我的问题所在。考虑以下 MWE(MWE1):

\documentclass[11pt]{report}
\usepackage[bottom=2cm, top=2cm, left=3cm, right=2cm]{geometry}
\usepackage{epigraph}

\usepackage{lipsum}

\begin{document}

\dropchapter{15cm}
\chapter*{Introduction}
\epigraphhead[200]{\lipsum[1]}
\lipsum[1-3]
\undodrop

\chapter*{Method}
\lipsum[4-6]
\end{document}

这仍然会产生以下结果: 在此处输入图片描述

换句话说,什么也没有发生。

现在考虑以下 MWE(MWE2):

(请注意,与 MWE1 的唯一区别是命令\chapter*{}已更改为常规\chapter{}命令)

\documentclass[11pt]{report}
\usepackage[bottom=2cm, top=2cm, left=3cm, right=2cm]{geometry}
\usepackage{epigraph}

\usepackage{lipsum}

\begin{document}

\dropchapter{15cm}
\chapter{Introduction}
\epigraphhead[200]{\lipsum[1]}
\lipsum[1-3]
\undodrop

\chapter{Method}
\lipsum[4-6]
\end{document}

这将产生以下输出:

在此处输入图片描述

换句话说,这正是我所需要的。

所以我已经缩小了问题出现的位置(命令\chapter*{}),但我似乎无法弄清楚如何让\dropchapter命令与 MWE1 一起工作。我想要使用 MWE1,我不想在我的文档中使用“第 X 章”前缀。

有人知道答案吗?提前谢谢大家!

答案1

epigraph包使用了一个糟糕的 hack 来实现\dropchapter:它在 中添加了一个垂直空间\@chapapp,但在\chapter*,但在执行

book这是专门针对和的版本report(其他类别可能有不同的\@makechapterhead\@makeschapterhead命令),但它适用于带星号和不带星号的\chapter命令。

\documentclass[11pt]{report}
\usepackage[bottom=2cm, top=2cm, left=3cm, right=2cm]{geometry}
\usepackage{epigraph}
\usepackage{etoolbox}

\usepackage{lipsum}

\makeatletter
\newlength{\@epidrop}
\newcommand{\@epidropdefault}{50\p@} % the default in report
\patchcmd{\@makechapterhead}{50\p@}{\@epidrop}{}{}
\patchcmd{\@makeschapterhead}{50\p@}{\@epidrop}{}{}
\renewcommand{\dropchapter}[1]{\setlength{\@epidrop}{#1}}
\renewcommand{\undodrop}{\dropchapter{\@epidropdefault}}
\undodrop
\makeatother

\begin{document}

\dropchapter{15cm}

\chapter*{Introduction}
\epigraphhead[200]{\lipsum[1]}
\lipsum[1-3]

\chapter{Introduction}
\epigraphhead[200]{\lipsum[1]}
\lipsum[1-3]
\undodrop

\chapter{Method}
\lipsum[4-6]
\end{document}

这是通过用长度参数替换硬连线的垂直空间\@makechapterhead来实现的\@makeschapterhead,我们可以通过重新定义来控制这个长度参数\dropchapter

当然,使用简短的题词是最好的解决方案。

在此处输入图片描述

答案2

对于 KOMA 脚本类,egreg 的答案不起作用。相反,可以使用

\renewcommand{\chapterheadstartvskip}{\vspace{15cm}}

完整示例:

\documentclass{scrbook}
\usepackage{epigraph}

\let\defaultchapterheadstartvskip\chapterheadstartvskip
\renewcommand{\dropchapter}[1]{ 
  \renewcommand{\chapterheadstartvskip}{\vspace{#1}}
}
\renewcommand{\undodrop}[0]{
  \renewcommand{\chapterheadstartvskip}{\defaultchapterheadstartvskip}
}

\usepackage{lipsum}

\begin{document}


\dropchapter{15cm}
\chapter{Introduction}
\epigraphhead[200]{\lipsum[1]}
\lipsum[1-3]
\undodrop

\chapter{Method}
\lipsum[4-6]
\end{document}

相关内容