使用逗号向命令添加多个参数

使用逗号向命令添加多个参数

有没有办法定义如下命令:

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

其中两个参数用逗号而不是括号分隔?

例如,我想要:

\documentclass[12pt, letterpaper]{article}
\usepackage{amsmath}
%yet to be defined command%

\begin{document}
The sum given by $a=\mysum{n=1, \infty}$
\end{document}

返回相同的内容:

\documentclass[12pt, letterpaper]{article}
\usepackage{amsmath}

\begin{document}
The sum given by $a=\sum\limits_{n=1}^{\infty}$
\end{document}

答案1

expl3\clist_item:nn可能是你的朋友:

\documentclass[12pt, letterpaper]{article}
\usepackage{amsmath}
\ExplSyntaxOn
\cs_new:Npn \mysum #1 {\sum\limits\sb{\clist_item:nn{#1}{1}}\sp{\clist_item:nn{#1}{2}}} 
\ExplSyntaxOff

\begin{document}
The sum given by $a=\mysum{n=1, \infty}$

The sum given by $a=\sum\limits_{n=1}^{\infty}$
\end{document}

在此处输入图片描述

答案2

如果您需要的话,我不会\limits无条件添加并使用 *-variant。

\documentclass{article}
\usepackage{amsmath}

\NewDocumentCommand{\mysum}{s >{\SplitArgument{1}{,}}m}{%
  \sum
  \IfBooleanT{#1}{\limits}%
  \mysumaux#2%
}
\NewDocumentCommand{\mysumaux}{mm}{_{#1}\IfValueT{#2}{^{#2}}}

\begin{document}

$\mysum{n=1,\infty}$ is good.

$\mysum*{n=1,\infty}$ is bad.
\[
\mysum{n=1,\infty}\qquad \mysum{n\ge0}
\]

\end{document}

您会看到参数中的单个项被正确地处理为下标。

在此处输入图片描述

相关内容