我如何调整 \lim 的垂直定位,以便参数与整个限制堆栈对齐,而不仅仅是单词“lim”?

我如何调整 \lim 的垂直定位,以便参数与整个限制堆栈对齐,而不仅仅是单词“lim”?

考虑以下图片:

在此处输入图片描述

最上面一行是我写极限的方式以及我希望 LaTeX 执行的操作。请注意顶部的“lim”和底部的“x->0”形成的堆栈如何与参数(在本例中为 f(x) 或 f(x)/g(x))对齐。

最下面一行是 LaTeX 所做的。请注意,只有单词“lim”与参数对齐;“x->0”位被视为一种下标。

我明白发生这种情况是因为\lim\sum和以相同的方式处理(运算的参数与运算的符号对齐,\prod并且\int下标和上标不考虑这种对齐),但我想改变这一点。

我想这只是我习惯的。和、积和积分通常在符号上方和下方有内容,或者根本没有内容。唯一常见的例外(至少在我的领域)是当您只写和的索引(因为下限和上限很明显)或当您在积分符号下方写积分区域的符号(因为这比明确写出积分极限更容易,或者您不知道积分极限),在这些情况下,运算符号下方的空间应该包含文本,而上方的空间为空,所以在我看来并不难看。相反,极限永远不会在“lim”符号上方有文本,只会在下方有文本,所以这种不对称在我看来很奇怪。

有没有一种简单的方法可以全局更改此行为?我不想\stackrel每次想要写限制时都使用或类似的东西。

谢谢。

答案1

这里有两个解决方案,它们使用\vcenter\hbox基元来提高\lim_{...}表达式,使其在数学轴上垂直居中。第一个解决方案将参数排版为\textstyle,而第二个解决方案使用参数的标准\scriptstyle。以下屏幕截图还显示了输出\lim。(就我的观点而言,我最喜欢输出\lim。)

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath} % for 'gather*' env.
\newcommand\mylimA[1]{% first solution idea
   \mathop{\vcenter{\hbox{$\thickmuskip0mu\lim\limits_{\textstyle #1}$}}}}
\newcommand\mylimB[1]{% second solution idea
   \mathop{\vcenter{\hbox{$\lim\limits_{#1}$}}}}
\newcommand\ffg{\frac{f(x)}{g(x)}} % handy shortcut macro

\begin{document}
\begin{gather*}
\mylimA{x\to0} f(x) \qquad \mylimB{x\to0} f(x) \qquad \lim_{x\to0} f(x) \\
\mylimA{x\to0} \ffg \qquad \mylimB{x\to0} \ffg \qquad \lim_{x\to0} \ffg
\end{gather*}
\end{document}

答案2

我认为我从未在其他地方见过这种情况。

\usepackage{amsmath}
%\usepackage{xparse}

\NewDocumentCommand{\blim}{e{_}}{%
  \mathop{}\!
  \begin{array}{@{}c@{}}% just for vertical centering
  \operatorname*{lim}\limits\IfValueT{#1}{_{#1}}
  \end{array}\!
  \mathop{}
}

\begin{document}

I'm fearing you want this just to get $\blim_{x\to0}f(x)$ inline. Please,
don't. Here's display mode:
\[
a+\lim_{x\to0}f(x)\qquad a+\blim_{x\to0}f(x)
\]
and with a fraction
\[
a+\lim_{x\to0}\frac{f(x)}{g(x)}\qquad a+\blim_{x\to0}\frac{f(x)}{g(x)}
\]
Left is the standard, right the bad one.

\end{document}

在此处输入图片描述

答案3

我不确定这是否是个好主意,以下是类似的想法。请注意,它\mylim不如正常的那么强大\lim,因此您确实需要添加_<something>

\documentclass{article}
\usepackage{amsmath}
\def\mylim_#1{\mathop{\begin{array}{@{}c@{}}\text{lim}\\[-1.333ex]
\scriptstyle #1\end{array}}}
\begin{document}
New:
\[ \mylim_{x\to0}f(x)\quad\text{and}\quad \mylim_{x\to0}\frac{f(x)}{x}\]
Conventional:
\[ \lim_{x\to0}f(x)\quad\text{and}\quad \lim_{x\to0}\frac{f(x)}{x}\]
\end{document}

在此处输入图片描述

答案4

这是一个解决方案,它将任何运算符的中位数提升或降低为其参数的中位数。

\documentclass{article}
\usepackage{amsmath}
\usepackage{settobox}
\usepackage[noactivechars]{mathstyle}

\newsavebox{\opbox}
\newsavebox{\argbox}
\newlength{\opheight}
\newlength{\opdepth}
\newlength{\argheight}
\newlength{\argdepth}

\newcommand\vcenterop[2]{%
  \edef\savedstyle{\currentmathstyle}
  \savebox{\opbox}{\(\savedstyle #1\)}
  \savebox{\argbox}{\(\savedstyle #2\)}
  \settoboxheight{\opheight}{\opbox}
  \settoboxdepth{\opdepth}{\opbox}
  \settoboxheight{\argheight}{\argbox}
  \settoboxdepth{\argdepth}{\argbox}
  \addtolength{\argheight}{-\opheight}
  \addtolength{\argheight}{-\argdepth}
  \addtolength{\argheight}{\opdepth}
  \mathop{\raisebox{0.5\argheight}{\usebox{\opbox}}} \mathord{\usebox{\argbox}}
}

\begin{document}

\begin{align*}
  &\textstyle\vcenterop{\lim_{x \to 0}}{f(x)} &\textstyle\vcenterop{\lim_{x \to 0}}{\frac{f(x)}{g(x)}} \\
  &\vcenterop{\lim_{x \to 0}}{f(x)} &\vcenterop{\lim_{x \to 0}}{\frac{f(x)}{g(x)}} \\
  &\lim_{x \to 0} f(x)              &\lim_{x \to 0} \frac{f(x)}{g(x)} \\
  &\vcenterop{\log_2}{f(x)^2}       &\vcenterop{\log_2}{\frac{f(x)^2}{g(x)^2}} \\
  &\log_2 f(x)^2      &\log_2 \frac{f(x)^2}{g(x)^2}
\end{align*}

\end{document}

示例布局

也可以提高或降低参数而不是运算符,或者将两者都置于数学轴的中心,就像 Mico 对 所做的那样\lim

应 Sebastiano 的要求

以下是一些手写字体的样子。

\documentclass{article}
\usepackage{unicode-math}
\usepackage{settobox}
\usepackage[noactivechars]{mathstyle}

\defaultfontfeatures{ Ligatures=TeX, Scale=MatchLowercase }
% Tillana is a free font by the Indian Type Foundry, available at:
% https://github.com/itfoundry/tillana/
% VAG Handwritten is a free font by VAG Design, available at:
% https://www.fontsquirrel.com/fonts/VAG-HandWritten
\setmainfont{VAG-HandWritten.otf}
\setmathfont{GFS Neohellenic Math}
\setmathfont[range={"03C0, "2013-"2014, "2018-"201A, "201C-"201E, "2021-"2022,
                    "2026, "2030, "2039-"203A, "2044, "20AC, "20BA, "20BD,
                    "2113, "2122, "2126, "212E, "2202, "2206, "220F, "2211,
                    "2212, "2215, "221A, "221E, "222B, "2246, "2260, "2264,
                    "2265, "25CA}
            ]{Tillana-Regular.otf}
\setmathfont[range=bfup/{Latin,latin,num}
            ]{Tillana-Semibold.otf}
\setmathfont[range={"00-"FF,
                    up/{Latin,latin,Greek,greek},
                    \increment}
            ]{VAG-HandWritten.otf}
\setmathfont[range=up/num
            ]{Tillana-Regular.otf}

\newsavebox{\opbox}
\newsavebox{\argbox}
\newlength{\opheight}
\newlength{\opdepth}
\newlength{\argheight}
\newlength{\argdepth}

\newcommand\vcenterop[2]{%
  \edef\savedstyle{\currentmathstyle}
  \savebox{\opbox}{\(\savedstyle #1\)}
  \savebox{\argbox}{\(\savedstyle #2\)}
  \settoboxheight{\opheight}{\opbox}
  \settoboxdepth{\opdepth}{\opbox}
  \settoboxheight{\argheight}{\argbox}
  \settoboxdepth{\argdepth}{\argbox}
  \addtolength{\argheight}{-\opheight}
  \addtolength{\argheight}{-\argdepth}
  \addtolength{\argheight}{\opdepth}
  \mathop{\raisebox{0.5\argheight}{\usebox{\opbox}}} \mathord{\usebox{\argbox}}
}

\begin{document}

\begin{align*}
  &\textstyle\vcenterop{\lim_{x \to 0}}{f(x)} &\textstyle\vcenterop{\lim_{x \to 0}}{\frac{f(x)}{g(x)}} \\
  &\vcenterop{\lim_{x \to 0}}{f(x)} &\vcenterop{\lim_{x \to 0}}{\frac{f(x)}{g(x)}} \\
  &\lim_{x \to 0} f(x)              &\lim_{x \to 0} \frac{f(x)}{g(x)} \\
  &\vcenterop{\log_2}{f(x)^2}       &\vcenterop{\log_2}{\frac{f(x)^2}{g(x)^2}} \\
  &\log_2 f(x)^2      &\log_2 \frac{f(x)^2}{g(x)^2}
\end{align*}

\end{document}

Tillana/VAG 样品

相关内容