几周前(大概是 5 周前?)还\@currname
运行正常。后来我猜我更新了 MikTeX,我经常更新,但现在不行了。MWE:
% scrap.sty
\title{1\@currname2}
% scrap.tex
\documentclass{article}
\usepackage{scrap}
\begin{document}
\maketitle
\end{document}
标题最终变成 12。我这里做错了什么吗?
答案1
写入的默认结果\title{<stuff>}
将<stuff>
存储在 内\@title
,最终由 使用\maketitle
。此外,<stuff>
根本没有扩展,因此使用根据上下文而变化的宏可能会导致不必要的结果。
解决此问题的方法可以是明确地将扩展\@currname
作为标题的一部分。两种方法如下:
\xdef\@title{1\@currname2}
或者
\begingroup\edef\x{\endgroup\noexpand\title{1\@currname2}}\x
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{scrap.sty}
%\xdef\@title{1\@currname2}% Option 1
\begingroup\edef\x{\endgroup\noexpand\title{1\@currname2}}\x% Option 2
\end{filecontents*}
\usepackage{scrap}
\begin{document}
\maketitle
\end{document}