是否有任何全局设置可以将 \limits 添加到每个 \sum、\bigcup 等?

是否有任何全局设置可以将 \limits 添加到每个 \sum、\bigcup 等?

我想将上标和下标始终放在符号上方或下方,例如\sum\bigcup\inf,即使在内联模式下也是如此,但我不想\limits每次都添加。我尝试了 书中所有数学的\everymath{\displaystyle} 强制\displaystyle,但这会使符号太宽,这是不想要的。是否有任何选项可以使符号看起来就像以前一样\limits?我正在使用amsmath

谢谢您的回答。

答案1

如果你加载,amsmath只需两个定义就可以获得你想要的行为:

\documentclass{article}

\usepackage{amsmath}
\makeatletter
\renewcommand{\slimits@}{\limits}
\renewcommand{\nmlimits@}{\limits}
\makeatother

\begin{document}

\(
\sum_{i=0}^{3} \int_{-5}^{5} \lim_{n\to\infty} \prod_{j=0}^{n} \max_{j}\log_{2} x_{j}
\)

\[
\sum_{i=0}^{3} \int_{-5}^{5} \lim_{n\to\infty} \prod_{j=0}^{n} \max_{j}\log_{2} x_{j}
\]

\end{document}

在此处输入图片描述

但是,你不应该这么做。在线上使用时,有充分的理由将限制放在大型运营商一边。下面显示了一个示例。

\documentclass{article}
\usepackage{amsmath}
\usepackage{lipsum}

\makeatletter
\renewcommand{\slimits@}{\limits}
\renewcommand{\nmlimits@}{\limits}
\makeatother

\begin{document}
\lipsum[2]

Let's see what happens when the above symbols are set with limits
above and below in a paragraph and how ugly white stripes will
$\sum_{k=1}^{n}k^2$ spoil your document so that
reading will be hindered. Don't do it in your documents.

\lipsum[3]

\end{document}

在此处输入图片描述

限制的操作符越多,文档就会越差。

答案2

这应该可以工作,放在序言中:

\let\NOLIMITS\nolimits
\let\nolimits\limits
\let\displaylimits\limits
\usepackage{amsmath}

完全禁止限制到右边,现在唯一可以施加限制的方法是使用\NOLIMITS。必须在加载之前使用调整amsmath,并且必须加载,amsmath因为amsmath重新定义所有运算符宏,这样,将使用调整的限制宏。完整的 MWE:

\documentclass{article}

\let\NOLIMITS\nolimits
\let\nolimits\limits
\let\displaylimits\limits
\usepackage{amsmath}

\begin{document}

\def\xtest{
\sum_{i=0}^{3} \int_{-5}^{5} \lim_{n\to\infty} \prod_{j=0}^{n} \operatorname{log}_2 x_j
}

\( \xtest \)

\[ \xtest \]

\end{document}

但是,请记住:

在行中使用时,将限制设置在大运算符一侧有很好的印刷原因。– egreg

答案3

一个 hack 方法是这么写:

\let\originalsum=\sum
\def\sum{\originalsum\limits}

当然,您必须对要“自动化”限制的每个符号执行此操作。如果您想快速完成此操作,可以一次完成:

\usepackage{etoolbox}
\newcommand\ImposeLimitsOnOperator[1]{%
  \expandafter\let\csname original#1\expandafter\endcsname\csname #1\endcsname%
  \expandafter\edef\csname #1\endcsname{\csname original#1\endcsname\limits}%
}
\newcommand\WithLimits{\forcsvlist{\ImposeLimitsOnOperator}}
\WithLimits{sum,bigcup,inf}

正如我所说,这是一种黑客行为。应该有更好的方法来做到这一点(尽管正如 egreg 所说,你可能不应该这样做:)

相关内容