如何在不编辑 latex.ltx 的情况下添加新的宏(如 \author{})

如何在不编辑 latex.ltx 的情况下添加新的宏(如 \author{})

我想根据文章类为需要修改标题页的学生家庭作业编写一个新类。

是否可以创建可以在修改后的 \maketitle 代码(例如 \tutor{} 和 \dueDate{})中使用新的宏(例如 \title{} 和 \author{}),而无需编辑 latex.ltx 文件?

在问题中如何创建类似于 \author 的新命令我正在尝试修改 article.cls,而处理的类是 memoir.cls。此外,给出的最佳解决方案是向 \author 宏添加新信息,而不是如何在序言中添加随时可用的新宏。

答案1

在 中latex.ltx,有两行与 相关的内容\author

\def\author#1{\gdef\@author{#1}}
\def\@author{\@latex@warning@no@line{No \noexpand\author given}}

那么你总是可以拥有

\documentclass{article}
\makeatletter
\def\tutor#1{\gdef\@tutor{#1}}
\def\@tutor{\@latex@warning@no@line{No \noexpand\tutor given}}
\makeatother
\begin{document}
\tutor{Al Fh}
\makeatletter\@tutor\makeatother
\end{document}

现在\maketitle使用此命令自\@tutor定义您的

\documentclass{article}
\usepackage{array}
\makeatletter
\def\tutor#1{\gdef\@tutor{#1}}
\def\@tutor{\@latex@warning@no@line{No \noexpand\tutor given}}
\renewcommand\maketitle{%
\begin{center}
\textbf{\Huge\@title}\\[2em]
{\large\begin{tabular}{>{\bfseries}ll}
    Author: & \@author\\
    Tutor: & \@tutor\\
    Date: & \@date
\end{tabular}}
\end{center}\par\vspace{2em}}
\usepackage{lipsum}
\begin{document}
\title{My document}
\author{Your student}
\tutor{Al Fh}
\date{\today}
\maketitle
\lipsum[1]
\end{document}

相关内容