\def 允许多种格式

\def 允许多种格式

例如,我想定义这个

\def\normal(#1,#2){\mathcal N\left( #1, #2 \right)}

这使得编写正态分布变得很方便(例如, \normal(0,1)给出 N(0,1))。

然而,我在很多文章中一直使用以下定义

\newcommand{\normal}[2]{\mathcal N\left( #1, #2 \right)}

根据此公式 \normal{0}{1} 得出 N(0,1)。

因此我想定义一个命令 \normal,它首先查看其参数是否以“(”开头,并据此定义命令。

有什么办法可以做到这一点吗?

答案1

你可以用 LaTeX\@ifnextchar来检测左括号并采取相应的措施

\makeatletter
\newcommand*\normal{\@ifnextchar(\normalB\normalA}
\newcommand\normalA[2]{\mathcal N\left(#1,#2\right)}
\def\normalB(#1,#2){\normalA{#1}{#2}}
\makeatother

相关内容