我目前正在尝试使用 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}