在自定义类中重新定义 \title 命令

在自定义类中重新定义 \title 命令

我目前正在编写一个从标准类(文章)继承的自定义类,我想重新定义该\title命令,以便最终用户可以调用它,并且我能够获取该命令的结果,对其进行微小的修改,然后将其输入到命令\title基类

实际上,在写这个问题的时候,我已经找到了一种方法来做到这一点。这是一个 MWE,带有类文件Test.cls

\ProvidesClass{Test}
\LoadClass{article}

\title{\@testTitle, isn't it?}
\renewcommand*{\title}[1]{\def\@testTitle{#1}}

\endinput

以及用户文件:

\documentclass{Test}

\title{A great article}

\begin{document}
\maketitle
\end{document}

所以最后用户选择了一个标题,但结果输出的是一篇标题被修改的文章。

这是标准做法吗?你会如何改进它?

答案1

如同这个问题, 您可以使用电子工具箱修改\patchcmd命令\maketitle

在此处输入图片描述

\documentclass{Test}  
\title{A great article}  
\begin{document}  
\maketitle  
\end{document}

测试.cls

\ProvidesClass{Test}  
\LoadClass{article}  
\RequirePackage{etoolbox}
\patchcmd{\@maketitle}{\@title}{\@title{}, isn't it?}{}{}
\endinput  

一般来说,您可以使用\show\somecommand来查看的定义\somecommand,然后找到要修补的部分。

相关内容