xparse 修饰没有捕获括号内的所有内容

xparse 修饰没有捕获括号内的所有内容

我目前正在学习、使用 xparser,并且以下演示命令部分起作用:

\let\oldlog\log
\RenewDocumentCommand{\log}{s m e{_^}}{%
    \ensuremath{%
        \mathrm{log}%
        \IfValueT{#3}{_#3}%
        \IfValueT{#4}{^#4}%
        \IfBooleanTF{#1}{\!\left(#2\right)}{#2}%
    }%
}

我的问题是当前结果。我期望得到的结果如下\log{x}^{yy}_{zzz}

预期的

但相反,我得到的是:

实际的

为什么修饰参数没有e{_^}捕获括号内的全部内容^{yy}_{zzz}

答案1

哎呀,我算出来了;原来你需要_{#3}^{#4}

\let\oldlog\log
\RenewDocumentCommand{\log}{s m e{_^}}{%
    \ensuremath{%
        \mathrm{log}%
        \IfValueT{#3}{_{#3}}%
        \IfValueT{#4}{^{#4}}%
        \IfBooleanTF{#1}{\!\left(#2\right)}{#2}%
    }%
}

相关内容