有没有办法定义如下命令:
\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}
您会看到参数中的单个项被正确地处理为下标。