所以这个问题实际上是两个,但我认为它们会以相同的方式解决,所以我把它们放在一起。这种形式\textstyle\lim_{n\to\infty}
总是困扰着我,因为它占用了大量的水平空间,而\displaystyle\lim_{n\to\infty}
没有占用太多额外的垂直空间。我试图使用它\DeclareMathOperator*{\mylim}{{\displaystyle\lim}}
来创建一个新的限制命令,这样我就不必输入\displaystyle
一百万次,但它不起作用。有人能帮忙吗?
另外,我尝试用 做类似的事情\DeclareMathOperator*{\mysum}{{\textstyle\sum}}
,但也没有成功。修复方法和上面的一样吗?
梅威瑟:
\documentclass[12pt]{letter}
\usepackage{amsmath,amssymb,amsthm}
\DeclareMathOperator*{\mylim}{{\displaystyle\lim}}
\DeclareMathOperator*{\mysum}{{\textstyle\sum}}
\begin{document}
$\mylim_{n\to\infty} x_n = \displaystyle\lim_{n\to\infty} x_n$
\begin{equation*}
\mysum_{n=1}^\infty x_n = \displaystyle\sum_{n=1}^\infty x_n
\end{equation*}
\end{document}
答案1
amsmath
默认情况下(更具体地说amsopn
):
- 带星号的版本
\DeclareMathOperator*
会创建一个大运算符,将下标/上标放置在像\sum
和 这样\lim
的位置;也就是说,在显示数学中位于下方/上方,而在内联数学中位于右下角/右上方。 - 非星号版本
\DeclareMathOperator
会创建一个大运算符,用于放置下标/上标,如\sin
和\log
;即,总是右下/右上。
因此,如果你想要\sum
1)始终将脚本放在右侧和2)始终存在\textstyle
(后者是比较棘手的部分),你可以简单地这样做
\DeclareMathOperator{\mysum}{\textstyle\sum}% <- The effect of \textstyle is local!
好的,“脚本总是低于/高于”部分是真正棘手的部分,和您希望操作员始终在场\displaystyle
(后者在您当前的设置下是值得怀疑的,因此我将提供两种不同的方法)。
更新:我将 在以下解决方案中 使用一个宏\mustlimits@
,该宏镜像 \nolimits@
自 。由于宏名称包含,因此以下代码片段应包装在 内。amsopn
@
\makeatletter ... \makeatother
你只是想要
\limits
,但实际上又不想要\displaystyle
。由于\lim
本质上只是罗马文字,因此它仅带有一样式。要强制使用以下/以上脚本,只需执行\newcommand{\mylim}{\lim\mustlimits@}
你确实想要
\displaystyle
(尽管\lim
只有一种风格!)好吧,如你所愿:\newcommand{\mydisplaylim}{% \mathop{\hbox{$\displaystyle\m@th\operator@font lim$}}\mustlimits@ } \newcommand{\mydisplaysum}{% \mathop{\displaystyle\sum}\mustlimits@ }
那么它
\mustlimits@
到底是什么呢?它的定义如下:\newcommand*{\mustlimits@}{\@ifnextchar\nolimits{\limits\@gobble}{\limits}}
梅威瑟:
\documentclass[12pt]{letter}
\usepackage{amsmath,amssymb,amsthm}
\DeclareMathOperator{\mysum}{\textstyle\sum}% <- The effect of \textstyle is local!
\makeatletter
\newcommand{\mylim}{\lim\mustlimits@}
\newcommand{\mydisplaylim}{%
\mathop{\hbox{$\displaystyle\m@th\operator@font lim$}}\mustlimits@
}
\newcommand{\mydisplaysum}{%
\mathop{\displaystyle\sum}\mustlimits@
}
\newcommand*{\mustlimits@}{\@ifnextchar\nolimits{\limits\@gobble}{\limits}}
\makeatother
\begin{document}
$\mylim_{n\to\infty} x_n = \lim_{n\to\infty} x_n$
\begin{equation*}
\mysum_{n=1}^\infty x_n = \sum_{n=1}^\infty x_n
\end{equation*}
$\mydisplaylim_{n\to\infty} x_n = \lim_{n\to\infty} x_n$
$\mydisplaysum_{n=1}^\infty x_n = \sum_{n=1}^\infty x_n$
\end{document}
添加\mylim
:正如@DavidCarlisle 在评论中指出的那样,\mydisplaylim
很可能会增加行距。 我会不是建议使用\mylim
、\mysum
或\mydisplaylim
中的任一个\mydisplaysum
。
答案2
您也可以\newcommand
改用,与\limits
和一起使用\nolimits
。
\documentclass[12pt]{letter}
\usepackage{amsmath,amssymb,amsthm}
\newcommand{\mylim}{\lim\limits}
\newcommand{\mysum}{\sum\nolimits}
\begin{document}
$\mylim_{n\to\infty} x_n = \displaystyle\lim_{n\to\infty} x_n$
\begin{equation*}
\mysum_{n=1}^\infty x_n = \displaystyle\sum_{n=1}^\infty x_n
\end{equation*}
\end{document}