定义命令的命令

定义命令的命令

如果您想在章节标题中包含图像,可以选择以下内容:

\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”。这也是可能的,但

  1. 更长和
  2. 意味着用户必须\renewcommand经常使用。在这种情况下,软件包编写者通常会编写一个包装器命令,以向用户隐藏\def/ 。此类包装器命令的其他示例包括和。\renewcommand\title\author

答案3

\chapterimage(重新)定义\thechapterimage在内部使用的内容\chapter

相关内容