如果您想在章节标题中包含图像,可以选择以下内容:
\newcommand{\thechapterimage}{}
\newcommand{\chapterimage}[1]{\renewcommand{\thechapterimage}{#1}}
\def\thechapter{\Roman{chapter}}
\def\@makechapterhead#1{%
{\centering \normalfont\sffamily
\ifnum \c@secnumdepth >\m@ne
\if@mainmatter
\vspace*{-3.9cm}\hspace*{-3.1cm}% to position the figure
\includegraphics[width=\paperwidth]{\thechapterimage}\par
\rput[lb](0,2){\sffamily\bfseries\thechapter}}\par
\vspace*{30\p@}%
}
然后,在主文档中,您将在章节命令之前调用图形的名称:
\chapterimage{image.eps}
\chapter{Title}
\thechapterimage
前两个命令及上面的命令具体起什么作用\chapterimage
?
答案1
如果你有编程经验,这样想可能会有所帮助(尽管事实并非如此):
\thechapterimage
是一个变量(存储图像路径),要给这个变量分配一个新值,需要写入\renewcommand\thechapterimage{some value}
。
现在,如果反复执行,这显然非常麻烦,因此我们为这种“赋值”定义了一个快捷方式。快捷方式对应于一个方法(更准确地说,一个 setter 方法):它获取一个参数,套价值:
\newcommand\chapterimage[1]{\renewcommand\thechapterimage{#1}}
显然,这个“setter”执行的是和上面相同的赋值操作。严格来说,你不需要这个\chapterimage
宏,但它可以让代码更简单、更清晰。
答案2
您可能想说“为什么不直接在文档中使用,\renewcommand\thechapterimage{image}
而是绕道使用\chapterimage
”。这也是可能的,但
- 更长和
- 意味着用户必须
\renewcommand
经常使用。在这种情况下,软件包编写者通常会编写一个包装器命令,以向用户隐藏\def
/ 。此类包装器命令的其他示例包括和。\renewcommand
\title
\author
答案3
\chapterimage
(重新)定义\thechapterimage
在内部使用的内容\chapter
。