显然,如果你把它放入n{=}1
LaTeX 文档中,你就得不到正确的间距n=1
,除了在诸如此类的事情中,\sum_{n=1}^\infty
间距似乎与您书写的间距没有什么不同\sum_{n{=}1}^\infty
。
但如果我没记错的话,在 Walter Rudin 的数学分析原理它不是那样的;它看起来就像你写的一样\sum_{n\,=\,1}^\infty
。
有没有标准方法让它每次都这样做,即把某样东西放在线的上方\begin{document}
?或者如果没有,有没有合理的非标准方法?
答案1
TeX 抑制下标和上标中二进制运算符号周围的空格。
你能恢复它吗?是的,如果你将下标/上标包装在 中\text{$...$}
。
\documentclass{article}
\usepackage{amsmath}
\let\oldsum\sum % for comparison
\makeatletter
\renewcommand{\sum}{\DOTSB\spaced@sum}
\NewDocumentCommand{\spaced@sum}{e{_^}}{%
\sum@\slimits@
\IfValueT{#1}{_{\text{\m@th $#1$}}}%
\IfValueT{#2}{^{\text{\m@th $#2$}}}%
}
\makeatother
\begin{document}
\begin{gather}
\oldsum\dots\oldsum_{n=1}^\infty a_n
\\
\sum\dots\sum_{n=1}^\infty a_n
\end{gather}
\end{document}
如果您正在运行旧版本的 LaTeX,则可能需要\usepackage{xparse}
。
如果你用以下代码替换主定义
\NewDocumentCommand{\spaced@sum}{e{_^}}{%
\sum@\slimits@
\IfValueT{#1}{_{\text{\thickmuskip=3mu \m@th $#1$}}}%
\IfValueT{#2}{^{\text{\thickmuskip=3mu \m@th $#2$}}}%
}
你得到的空间更小了。
您可以抽象该设置:
\documentclass{article}
\usepackage{amsmath}
\let\oldsum\sum % for comparison
\makeatletter
\NewDocumentCommand{\spaced@operator}{me{_^}}{%
\csname #1@\endcsname\slimits@
\IfValueT{#2}{_{\text{\thickmuskip=3mu \m@th $#2$}}}%
\IfValueT{#3}{^{\text{\thickmuskip=3mu \m@th $#3$}}}%
}
\def\operator@list{%
coprod,bigvee,bigwedge,biguplus,%
bigcap,bigcup,prod,sum,bigotimes,%
bigoplus,bigodot,bigsqcup%
}
\@for\next:=\operator@list\do{%
\expandafter\edef\csname\next\endcsname{%
\noexpand\DOTSB\spaced@operator{\next}%
}%
}
\renewcommand\lim{\spaced@lim{lim}}
\renewcommand\liminf{\spaced@lim{lim\,inf}}
\renewcommand\limsup{\spaced@lim{lim\,sup}}
\NewDocumentCommand{\spaced@lim}{me{_^}}{%
\qopname\relax m{#1}%
\IfValueT{#2}{_{\text{\thickmuskip=3mu \m@th $#2$}}}%
\IfValueT{#3}{^{\text{\thickmuskip=3mu \m@th $#3$}}}%
}
\makeatother
\begin{document}
\begin{gather}
\oldsum\dots\oldsum_{n=1}^\infty a_n
\\
\sum\dots\sum_{n=1}^\infty a_n
\\
\prod_{a=1}\lim_{n\to\infty}
\end{gather}
\end{document}