例如,我想定义这个
\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