带有条件的新求和命令不起作用

带有条件的新求和命令不起作用

我正在尝试创建一个求和命令,使其格式比仅仅使用 更好\sum,而且不必\sum\limits_a^b每次都使用。我正在使用

\makeatletter
\newcommand{\summ}[3][\@nil]{%
\def\tmp{#1}%
\ifx\tmp\@nnil
   \sum\limits_{#2}^{#3}
\else
     \sum\limits_{#1 = #2}^{#3}
\fi}
\makeatother

else 部分不起作用。如果我使用\summ{1}{2},我会得到

在此处输入图片描述

这是预期的。但如果我使用\summ{1}{2}{3},我会得到

在此处输入图片描述

这是不对的。我做错了什么?

答案1

您设置宏的方式是\summ,采用 1 个可选参数和 2 个必需参数,您可能不应该写\summ{1}{2}{3};相反,请\summ[i]{1}{2}尝试一下。您会发现它扩展为\sum\limits_{i=1}^{2}

我认为定义\summ采用可选参数不必要地复杂。如何放弃条件并简单地设置

\newcommand\summ[2]{\sum\limits_{#1}^{#2}}

\summ{1}{N}这样一来,从 切换到 就没什么大不了的了\summ{i=1}{N},不是吗?

完整的 MWE:

\documentclass{article}
\newcommand\summ[2]{\sum\limits_{#1}^{#2}}
\begin{document}
$\summ{1}{N} \quad \summ{i=1}{N}$
\end{document}

相关内容