我正在使用一个info.tex
包含标题、作者姓名等的文件:
\author{my name}
\title{my title}
\date{\today}
我在其他文件中读到了这个文件:
\documentclass{article}
\input{info}
\begin{document}
\maketitle
\end{document}
现在我有另一个文件,该文件具有相同的作者姓名等,但标题略有不同:对于之前的标题,我必须添加“第二部分”(好像是\title{my title part II}
)。我不想再次重写标题(因为我有许多这样的文件),而是想从此文档编辑标题名称。
我试过
\makeatlettezr
\let\newtitle\@title
\makeatother
\renewcommand{\newtitle}{\@title part II}
\makeatletter
\renewcommand{\@title}{\newtitle}
\makeatother
但正如您所预料的,我得到了错误。有人能帮忙吗?
答案1
您可以使用\edef
尽可能扩展定义的方法来重新定义它。因此,您可以执行以下操作:
\makeatletter
\edef\@title{\@title\ part II}
\makeatother
如果你的\title
宏确实包含不应该扩展的宏,你可以进行设置,以便\@title
只扩展一次\unexpanded\expandafter
:
\makeatletter
\edef\@title{\unexpanded\expandafter{\@title\ part II}}
\makeatother
在这种情况下,只有括号后的第一个标记(\@title
在本例中)将被扩展一次。