l@addto@macro 未定义

l@addto@macro 未定义

我是否需要使用特殊包l@addto@macro?在下面的 MWE 中,g@addto@macro可以工作,但l@addto@macro会出现“未定义的控制序列”错误。

\documentclass{article}

\begin{document}
    
    % Define Foo
    
        \providecommand\foo{ABC}
    
    % Append to Foo
    
        \makeatletter
        \l@addto@macro\foo{DEF} % g@addto@macro works
        \makeatother
    
    % Call Foo
    
        \foo
    
\end{document}

我的期望是 g@ 将适用于全局范围,而 l@ 将适用于局部范围,并且我有一个更复杂的问题,只需要局部更改。

答案1

您可以只复制具有本地而不是全局定义的版本的定义g@,但 latex 格式在 L3 层已经有了各种版本,这里您想要\tl_put_right:Nn

在此处输入图片描述

\documentclass{article}

\begin{document}
    
    % Define Foo
    
        \providecommand\foo{ABC}
    
    % Append to Foo
    
        \ExplSyntaxOn
        \tl_put_right:Nn\foo{DEF} % g@addto@macro works
        \ExplSyntaxOff
    
    % Call Foo
    
        \foo
    
\end{document}

相关内容