我想\hspace*{3pt}
自动在求和符号后添加一些空格,例如 。我找不到执行此操作的命令?
\documentclass{article}
\begin{document}
\[
\sum_{i=1}^{n} x_i \quad \sum_{i=1}^{n} \hspace*{3pt} x_i
\]
\[
\sum x_i \quad \sum \hspace*{3pt} x_i
\]
\end{document}
有什么建议吗?
答案1
您可以定义\sum
使用原始宏\sum
并添加所需空间的特殊宏:
\let\orisum=\sum
\protected\def\sum{\orisum\futurelet\next\sumA}
\def\sumA{\ifx\next_\expandafter\sumB\else\expandafter\sumE\fi}
\def\sumB_#1{_{#1}\futurelet\next\sumC}
\def\sumC{\ifx\next^\expandafter\sumD\else\expandafter\sumE\fi}
\def\sumD^#1{^{#1}\sumE}
\def\sumE{\kern3pt}
$$
\sum x_i \quad \sum_{i=1}^{n} x_i
$$
\bye
答案2
\documentclass{article}
% Inspired by https://tex.stackexchange.com/questions/361493
%
% See https://tex.stackexchange.com/questions/74353
% for other horizontal spacing macros like \quad
\newcommand{\mySum}[2]{\sum_{#1}^{#2}\quad}
\begin{document}
\begin{equation}
\mySum{i=1}{n} x_i \quad \mySum{i=1}{n} x_i
\end{equation}
\end{document}
答案3
e
使用 的参数类型非常简单xparse
:
\documentclass{article}
\usepackage{amsmath}
\usepackage{xparse}
\let\amsmathsum\sum
\RenewDocumentCommand{\sum}{e{_^}}{%
\amsmathsum
\IfValueT{#1}{_{#1}}%
\IfValueT{#2}{^{#2}}%
\hspace{20pt}% exaggerated to show the effect
}
\begin{document}
\begin{gather*}
\amsmathsum_{i=1}^{n} x_i % original
\\
\sum_{i=1}^n x_i % modified
\\
\sum x_i % no limits
\\
\sum_{1\le i\le n} x_i % only subscript
\\
\end{gather*}
\end{document}
使用e{_^}
一个来指定两个形式为_{...}
和的参数^{...}
(可以任意顺序;如果缺少一个或两个,\IfValueT
则不执行任何操作。
20pt 这个值被夸大了只是为了表明达到了想要的效果。