我尝试用另一个字符串扩展包含一个字符串的宏。它在文档中,因此我想避免使用@
。
我尝试使用以下方法etoolbox
\expandafter\def\fileAcronym\democodefile
\appto\fileAcronym{-acronym}
它不起作用。\demcocodefile
没有展开(因此\expandafter
)。
答案1
你正在扩展的是\fileAcronym
而不是\democodefile
,因为\expandafter
扩展立即发生的事后下一个标记。您可以使用
\expandafter\def\expandafter\fileAcronym\expandafter{\democodefile}
\appto\fileAcronym{-acronym}
但使用可能更简洁(因为你只使用字符串)
\edef\fileAcronym{\democodefile-acronym}
答案2
假设\democodefile
扩展到你想要附加内容的字符串,创建\fileAcronym
扩展到增强字符串,最简单的方法是说
\let\fileAcronym\democodefile
\appto\fileAcronym{-acronym}
没有\appto
:
\expandafter\def\expandafter\fileAcronym\expandafter{\democodefile-acronym}
字符较少
\edef\fileAcronym{\unexpanded\expandafter{\democodefile}-acronym}
(如果您已经加载,则\unexpanded\expandafter
可以用 替换)。\expandonce
etoolbox
“抽象”版本:
\newcommand{\augmentstring}[3]{%
\edef#1{\unexpanded\expandafter{#2}\unexpanded{#3}}%
}
使用序言中的代码,您可以在文档中说,
\augmentstring{\fileAcronym}{\democode}{-acronym}