我希望在章节标题前添加一段很长的引文,使用\epigraphhead
epigraph 包提供的命令可以完美满足我的这个需求。
但是,由于引文很长,它会干扰我的章节标题和正文,如下所示:
文档中提到,这种情况很可能发生在长引文中,可以使用\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}