考虑以下图片:
最上面一行是我写极限的方式以及我希望 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}