如何定义 \school 并设置 \@school 变量?

如何定义 \school 并设置 \@school 变量?

我想\maketitle通过添加两个新字段来定制:\department\school

我想在自定义中添加它们\def\@maketitle{%。我天真地尝试了这个:

\providecommand{\school}[1]{\newcommand{\@school}[1]{\school}}

答案1

LaTeX 定义\author

\DeclareRobustCommand*\author[1]{\gdef\@author{#1}}

您可以用同样的方式定义\school和:\department

\DeclareRobustCommand*\School[1]{\gdef\@School{#1}}
\DeclareRobustCommand*\Department[1]{\gdef\@Department{#1}}

@可能不会出现在用户级别的宏名称中,因此您必须将定义括在\makeatletter和之间\makeatother(并将命令放入前言中),或者将它们放入文件中mydefs.sty并使用在前言中加载该文件\usepackage{mydefs}

创建新\maketitle命令的最简单方法可能是保留旧命令并在定义中使用它。

\DeclareRobustCommand*\Author[1]{\gdef\@Author{#1}}
\newcommand\Maketitle{%
   \author{\@Author\\\@School, \@Department}%
   \maketitle
}

请注意,我们需要一个新\author命令,因为我们需要原始命令将学校和部门与作者结合起来。

在此处输入图片描述

\documentclass{article}
\makeatletter
\DeclareRobustCommand*\School[1]{\gdef\@School{#1}}
\DeclareRobustCommand*\Department[1]{\gdef\@Department{#1}}
\DeclareRobustCommand*\Author[1]{\gdef\@Author{#1}}
\newcommand\Maketitle{%
  \author{\@Author\\\@School, \@Department}%
  \maketitle
}
\makeatother
\begin{document}
\title{My Article}
\Author{It's me}
\School{my school}
\Department{my department}
\Maketitle
\end{document}

相关内容