我是个懒人,我想用一个\dsum
操作符来避免使用。我已经做了一个宏,但如果\displaystyle
可以改写 就更好了。\dsum_{k=1}^{n}
\dsum{k=1}{n}
LaTeX 魔法师可以帮助我吗?
\documentclass[12pt]{article}
\newcommand\dsum[2]{{\displaystyle\sum_{#1}^{#2}}}
\begin{document}
$\dsum{k=1}{n} 2^k = \sum_{k=1}^{n} 2^k = 2^{n+1} - 1$
\end{document}
答案1
在几乎所有情况下,第三种设置都比前两种设置更可取
\documentclass[12pt]{article}
\usepackage{xparse}
\NewDocumentCommand\dsumx{e{_^}}{{\displaystyle\sum_{#1}^{#2}}}
\newcommand\dsuml{\sum\limits}
\begin{document}
xparse\\
$\dsumx_{k=1}^{n} 2^k = \sum_{k=1}^{n} 2^k = 2^{n+1} - 1$
limits\\
$\dsuml_{k=1}^{n} 2^k = \sum_{k=1}^{n} 2^k = 2^{n+1} - 1$
standard
\[\sum_{k=1}^{n} 2^k = \sum_{k=1}^{n} 2^k = 2^{n+1} - 1\]
\end{document}
第一个使用显示总和,这对于内联数学来说是不适合的。
第二个使用正确的总和,但限制设置仍然会使表达式太高而无法适应内联设置。
第三,仅使用标准,将表达式设置为具有适当总和布局的显示\sum
。
答案2
您可以使用xparse
的e
类型参数来解析它
这使您可以解析\dsum_{k=1}^{n}
和\dsum^{n}_{k=1}
。
笔记:
- 额外的支撑组确保其
\displaystyle
保持在局部。 - 提供
e{^_}
两个参数,#
1 是提供给的参数^
,#2
是提供给的参数_
(与提供的顺序无关)。如果没有提供任何一种类型的参数,\IfValueT{}
则不会执行其参数。\IfValueT{}
是更有效的形式,\IfValueTF{}{}
当您只需要在一种条件下执行某项操作时很有用。
代码:
\documentclass{article}
\usepackage{xparse}
\NewDocumentCommand{\dsum}{%
e{^_}
}{%
{%
\displaystyle\sum
\IfValueT{#1}{^{#1}}
\IfValueT{#2}{_{#2}}
}
}%
\begin{document}
$\sum_{k=1}^{n} 2^k = \dsum_{k=1}^{n} 2^k = \dsum^{n}_{k=1} 2^k = 2^{n+1} - 1$ .
\end{document}
答案3
我提供\dsum
和\Dsum
,取决于您希望\textstyle
限制的外观。
\documentclass{article}
\usepackage{mathtools}
\DeclareMathSymbol{\Xdsum}{\mathop}{largesymbols}{88}
\DeclareMathSymbol{\Xtsum}{\mathop}{largesymbols}{80}
\DeclareMathOperator*{\dsum}{\mathchoice{\Xdsum}{\Xdsum}{\Xtsum}{\Xtsum}}
\newcommand\Dsum{\dsum\limits}
\begin{document}
\centering
Sum and defined dsum and Dsum:\par
$\sum_{i=1}^2 x_i\quad \dsum_{i=1}^2 x_i \quad \Dsum_{i=1}^2 x_i $
\[\sum_{i=1}^2 x_i\quad \dsum_{i=1}^2 x_i \quad \Dsum_{i=1}^2 x_i\]
\end{document}
GuM 要求我评论为什么使用 的星号版本\DeclareMathOperator
。这是为了表明,在 中\displaystyle
,极限位于运算符的上方和下方,而不是作为上标/下标放置。如果删除 ,*
您将看到 中的所有极限\dsum
并\Dsum
恢复为上标/下标极限。