将宏与字符串连接起来

将宏与字符串连接起来

我尝试用另一个字符串扩展包含一个字符串的宏。它在文档中,因此我想避免使用@

我尝试使用以下方法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可以用 替换)。\expandonceetoolbox


“抽象”版本:

\newcommand{\augmentstring}[3]{%
    \edef#1{\unexpanded\expandafter{#2}\unexpanded{#3}}%
}

使用序言中的代码,您可以在文档中说,

\augmentstring{\fileAcronym}{\democode}{-acronym}

相关内容