定义宏时,是否可以限制参数的值,以便如果后面跟着的是数字,则将其作为参数,如果不是,则它为空。
具体来说,我定义
\newcommand{\R}[1]{\ensuremath{\mathbb{R}^{#1}}}
对于实数向量空间,因此\R2
和\R3
分别给出二维和三维实数空间。但如果我只想输入,该怎么办\R
?
答案1
这是一个 expl3“解决方案”。如果您尝试输入类似\Rt
并吞噬空格的内容,它将失败,因此\R 4
将以 4 作为参数。我不确定如何使用您的语法(无参数)完成 2 位上标,所以我为这种情况在方括号中添加了一个可选参数。
\documentclass{article}
\usepackage{xparse}
\usepackage{amssymb}
\ExplSyntaxOn
\cs_new:Npn \my_R:n #1
{
\ensuremath{\mathbb{R}^{#1}}
}
\NewDocumentCommand \R { o }
{
\IfNoValueTF { #1 }
{
\peek_catcode:NTF 1
{
\my_R:n
}
{
\ensuremath{\mathbb{R}}\
}
}
{
\my_R:n {#1}
}
}
\ExplSyntaxOff
\begin{document}
This is \R and this is \R3 and this is \R 4 and here is \R[23].
\end{document}