\newcommand 限制参数的值

\newcommand 限制参数的值

定义宏时,是否可以限制参数的值,以便如果后面跟着的是数字,则将其作为参数,如果不是,则它为空。

具体来说,我定义

\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}

相关内容