在 displaystyle 模式下,\varprojlim_{i \in I}^{1}
使用
不过,我想看起来更像
以上内容可以通过{\varprojlim_{i \in I}}^{1}
但我想知道是否有某种方法可以创建一个命令(比如说\limit
),以便\limit_{i \in I}^{1}
可以给出所需的结果。
梅威瑟:
\documentclass{article}
\usepackage{amsmath,amssymb}
\begin{document}
\begin{equation*}
\varprojlim_{i \in I}^{1} \text{ vs. } {\varprojlim_{i \in I}}^{1}
\end{equation*}
\end{document}
答案1
您希望下标以 为中心\varprojlim
,而不考虑指数,因此需要进行一些测量。
我建议使用不同的名称,例如\invlim
对于运算符。我还提供了一个修改版,\varprojlim
其中箭头较小。
\documentclass{article}
\usepackage{amsmath}
\makeatletter
% use a smaller arrow
\def\varprojlim{\mathop{\mathpalette\varlim@{\leftarrowfill@\scriptstyle}}\nmlimits@}
\NewDocumentCommand{\invlim}{e{^_}}{%
\IfNoValueTF{#1}{%
\varprojlim\IfValueT{#2}{_{#2}}%
}{%
% measure the exponent
\sbox\z@{$\m@th{}^{#1}\kern-\scriptspace$}
\IfValueT{#2}
{% measure the subscript
\sbox\tw@{$\m@th\scriptstyle#2$}%
% measure the operator
\sbox4{$\m@th\varprojlim$}%
\dimen@=\dimexpr(\wd\tw@-\wd4)/2\relax
% typeset the operator
\mathop{%
\varprojlim\nolimits^{#1}
% backup
\kern-\wd\z@
}\limits_{#2}%
\ifdim\dimen@<\z@
% the subscript doesn't overflow
\kern\wd\z@
\else
\ifdim\dimen@>\wd\z@
% no need to kern
\else
\kern\dimexpr\wd\z@-\dimen@\relax
\fi
\fi
}%
}%
}
\makeatother
\begin{document}
\begin{gather}
x\invlim_{i\in I} M_i \\
x\invlim^1_{i\in I} M_i \\
x\invlim^1_{i\in IJ} M_i \\
x\invlim^1_{i\in IJK} M_i
\end{gather}
\end{document}
这只适用于显示样式。如果需要,我们可以让它也适用于文本样式,并在侧面添加下标。
前面的“x”只是用来显示正确的间距。
答案2
我不确定我是否会这样做,但您可以使用\NewDocumentCommand
e
参数类型。
\documentclass{article}
\usepackage{amsmath,amssymb}
\let\oldvarprojlim\varprojlim
\RenewDocumentCommand\varprojlim{e{^_}}{%
{\oldvarprojlim\IfNoValueF{#2}{_{#2}}}\IfNoValueF{#1}{^{#1}}}
\begin{document}
\begin{equation*}
\varprojlim_{i \in I}^{1} \text{ vs. } {\varprojlim_{i \in I}}^{1}
\end{equation*}
\end{document}