答案1
仅改变的限制\sum
:
您可以使用内部条件\if@display
来amsmath
测试是否\limits
应该插入。下面,我\sum
通过添加\if@display\limits\fi
其定义来重新定义。
\documentclass{article}
\usepackage{amsmath}
\makeatletter %% <- make @ usable in command names
\renewcommand*\sum{\DOTSB\sum@\if@display\limits\fi}
\makeatother %% <- revert @
\begin{document}
Lorem $e^{\sum_{n=1}^\infty \frac1n}$ ipsum
\[
e^{\sum_{n=1}^\infty \frac1n}
\]
\begin{align}
e^{\sum_{n=1}^\infty \frac1n}&
\\
&e^{\sum_{n=1}^\infty \frac1n}
\end{align}
Lorem $e^{\sum_{n=1}^\infty \frac1n}$ ipsum
\end{document}
通过以显而易见的方式进行更改,可以将其调整为适用于其他运算符,例如\prod
、\coprod
、\bigcup
、\bigotimes
等。如果您有一个运算符,例如 ,而不存在,则可以使用以下命令创建它\sum@
\myoperator
\myoperator@
\makeatletter %% <- remove if you paste the next line between \makeatletter/-other
\let\myoperator@\myoperator
\makeatother %% <- remove this one too, then
并按上述步骤进行。
选择:
我原本有另一个解决方案,我对此非常满意,它使用\everydisplay
。此寄存器的内容插入到每个显示数学环境的开头,我使用它\sum
通过包含 来重新定义\limits
。它无需amsmath
(每个人都应该使用)即可工作,但除此之外,我认为它已被上述解决方案取代。
不管怎样,它在这里。以下内容将替换上面的\makeatletter
-\makeatother
块。
\makeatletter %% <- make @ usable in command names
\let\sum@beforelimitmodification\sum
\everydisplay\expandafter{\the\everydisplay %% <- old \everydisplay
\renewcommand*\sum{\sum@beforelimitmodification\limits}% %% <- new addition
}
\makeatother %% <- revert @
更改所有操作员的限制:
\amsmath
我刚刚想到了另一种完全不同的方法,它可以同时影响所有大型运营商(兼容)。
使用amsmath
loaded,所有大运算符(积分除外)都包含\slimits@
在其定义中,它只是扩展为\displaylimits
(在其他数学样式中,它的作用与\limits
in相同\displaystyle
,不执行任何操作)。通过重新定义它,您可以为显示环境中使用的所有运算符赋予限制。
\documentclass{article}
\usepackage{amsmath}
\makeatletter %% <- make @ usable in command names
\renewcommand*\slimits@{\if@display\limits\else\displaylimits\fi}
\makeatother %% <- revert @
\begin{document}
Lorem $e^{\sum_{n=1}^\infty \frac1n}$ ipsum
\[
e^{\sum_{n=1}^\infty \frac1n}
\]
\begin{align}
e^{\sum_{n=1}^\infty \frac1n}&
\\
&e^{\sum_{n=1}^\infty \frac1n}
\end{align}
Lorem $e^{\sum_{n=1}^\infty \frac1n}$ ipsum
\end{document}
↑↑输出看起来相同,请参见上图↑↑
如果这对某些自定义运算符不起作用,比如说\myoperator
,你应该添加\slimits@
它的定义,如下所示:
\makeatletter %% <- make @ usable in command names
\let\myoperator@beforelimitchange
\renewcommand*\myoperator{\DOTSB\myoperator@beforelimitchange\slimits@}
\makeatother %% <- revert @
答案2
我对乳胶还很陌生,所以如果我错了,请原谅我并纠正我。
\sum_{min}^{max}
当在生成的文本中使用该命令时\displaystyle
,会按照您的需要显示符号,其中的索引位于大写希腊字母 sigma 的上方和下方。
https://www.sharelatex.com/learn/Integrals,_sums_and_limits
但是,即使您的整个方程式中\displaystyle
有些部分仍可能以 呈现\textstyle
。当\texstyle\sum_{min}^{max}
调用 时,结果是带有相邻索引的 sigma 符号。要强制求和符号始终具有 sigma 上方和下方的索引,您必须强制命令\sum
为\displaystyle\sum
。如果您只有一两个求和,那么实现此目的的最简单方法是添加命令\displaystyle
。但是,当您拥有大量科学文献时,这会变得乏味。
如果您希望所有总和都有上下指标(就像您在疯狂的方程式示例中所见的那样),最简单的方法是指示 latex 始终渲染\sum
为\dispaystyle\sum
。这可以通过将其重新定义\sum
为来实现\displaystyle\sum
,方法是将其添加到您的序言中:
\let\oldsum\sum
\renewcommand{\sum}{\displaystyle\oldsum}
(归功于这个家伙https://latex.org/forum/viewtopic.php?t=14345)。
请注意,即使您添加内联数学运算,此解决方案也会强制\sum
始终处于中,\display
因此此解决方案并不完美。不过,对于内联情况,您仍然可以调用旧版本\sum
(即)。\oldsum
同样的事情发生在积分和乘积上,同样的解决方案应该有效(虽然我没有在命令之外的任何东西上测试它\sum
)
\let\oldsum\sum
\renewcommand{\sum}{\displaystyle\oldsum}
$$
y = \frac{\sum{x}}{\sum_{i}^{\infty}{x_i}}
\cdot
\frac{\oldsum{x}}{\oldsum_{i}^{\infty}{x_i}}
$$
显示为
为了完整起见,我应该提到,使用\limits
上面引用的 sharelatex 文章中提到的命令可以实现相同的效果。