这段xparse代码如何写得更优雅?

这段xparse代码如何写得更优雅?

我目前正在尝试使用 xparse 编写一个命令,它转换成

\A
\A{Test}

\mathbb{A}
\mathbb{A}(Test)

成对分隔符的全部功能也应该可以工作(\A[\Big]{Test}\A*{Test})。我已经找到了一种实现所需行为的方法:

\usepackage{xparse}

\DeclarePairedDelimiter{\parens}{(}{)}
\NewDocumentCommand{\A}{sog}{%
    \operatorname{\mathbb{A}}%
    \IfValueT{#3}{%
    \IfBooleanTF{#1}%
    {\parens*{#3}}%
    {\parens[#2]{#3}}}
}

现在,我想知道是否有办法更优雅地编写此代码(例如,无需手动传递星号)。

答案1

我的一个包semantex,就是为创建具有这种语法的函数而构建的。请注意,我使用g-type 参数,尽管 LaTeX3 团队有官方建议。我个人有争议的观点是g-type 参数完全是自然的,不应被弃用。欢迎您同意 LaTeX3 团队的意见。

\documentclass{article}

\usepackage{semantex,amsfonts}

\NewVariableClass\MyVar

\NewObject\MyVar\A{\mathbb{A}}

\begin{document}

$ \A $

$ \A{Test} $

$ \A[par=\big]{Test} $

$ \A[par=auto]{ \displaystyle\int } $

\end{document}

在此处输入图片描述

相关内容