我目前正在编写一个从标准类(文章)继承的自定义类,我想重新定义该\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
,然后找到要修补的部分。