我正在为我们学生的项目准备一个基于 的新模板memoir
。所有这些项目都由一位或多位教授监督(指导),所以我想声明一个类似\author
但名为 的命令\director
。
这样,学生就可以声明\director{My professor}
,模板将放置和格式化名称。
我希望它是相似的\author
,而不仅仅是简单的,\newcommand
因为它可以包括隶属关系、几个名字等等。
我不知道在哪里\author
声明,我应该去哪里看?
答案1
如上所述,\author
并\@author
定义在latex.ltx
, 但memoir
为它们添加一些额外的功能(例如,允许多个作者通过\and
并正确设置它们)。以下最小示例增加了\director
组合:
\documentclass{memoir}% http://ctan.org/pkg/memoir
\makeatletter
\newcommand{\director}[1]{\gdef\@director{#1}}%
\newcommand{\@director}{\@latex@warning@no@line{No \noexpand\director given}}
\addtoiargdef{\director}{%
\begingroup\let\footnote\@gobble}{%
\begingroup
\renewcommand{\thanks}[1]{}
\renewcommand{\and}{\unskip, }
\renewcommand{\andnext}{\unskip, }
\renewcommand{\thanksmark}[1]{}
\renewcommand{\thanksgap}[1]{}
\protected@xdef\thedirector{#1}
\endgroup\endgroup}
\newcommand{\predirector}[1]{\def\@bspredirector{#1}}
\newcommand{\postdirector}[1]{\def\@bspostdirector{#1}}
\renewcommand{\maketitlehookc}{%
{\@bspredirector \@director \@bspostdirector}%
}
\predirector{\begin{center}
\large \lineskip .5em%
\begin{tabular}[t]{c}}
\postdirector{\end{tabular}\par\end{center}}
\makeatother
\title{A Title}
\author{An Author \and Another Author}
\director{My Director \and My other Director}
\date{\today}
\begin{document}
\maketitle
\end{document}
该过程是复制组件\author
并使用提供的钩子将插入到内部\director
。也就是说,有一个钩子:\author
\@maketitle
\@maketitle
\maketitlehooka
前\title
;\maketitlehookb
前\author
;\maketitlehookc
之前\date
;和\maketitlehookd
后\date
。
我已将其重新定义\maketitlehookc
为现在的 be/contain ,并且其格式与is(ed 和)\director
相同。\author
center
\large
答案2
author
定义在latex.ltx
\def\author#1{\gdef\@author{#1}}
\def\@author{\@latex@warning@no@line{No \noexpand\author given}}
您可以使用以下方式在 Linux 下加载文件
gedit `kpsewhich latex.ltx`
但是,memoir
作者的定义更多。查看文件并搜索作者。在标题中使用memoir.cls
宏并将其设置为标题后。\@author
\relax