我正在尝试将几个极限表达式对齐到不同的 x 值。 align 似乎将“极限”部分及其下标视为一个整体对象,然后对齐这些极限,从而生成在“x”而不是“lim”处对齐的表达式:
\documentclass[reqno,12pt]{article}
\usepackage{amsmath,amssymb,amsthm}
\addtolength{\jot}{3em}
\begin{document}
\begin{flalign*}
&\lim_{x \to -2} x =&\\
&\lim_{x \to -1} x =&\\
&\lim_{\phantom{-}x \to 0} x =&\\
&\lim_{\phantom{-}x \to 1} x =&\\
&\lim_{\phantom{-}x \to 2} x =&\\
&\lim_{\phantom{-}x \to \infty} x =&\\
&\lim_{x \to -\infty} x =&
\end{flalign*}
\end{document}
我尝试过将对齐标记放在其他地方,还尝试过使用幻影来伪造它(虽然不太好,但比没有好得多)。有没有办法解决这个问题,让每个表达式在“lim”中的“l”处对齐?
答案1
非常感谢您发布完整的 MWE。
与其\lim
直接重新定义来处理您的特殊对齐目标,不如定义一个新的命令,比如\mylim
。直接修改 LaTeX 用来放置“数学运算符”参数的方式,例如\lim
最终可能会破坏各种事情......
下面定义的宏\mylim
有两个参数:极限被接管的项和 的下标参数\lim
。请注意,参数括在花括号中——没有使用下标符号。在下面的示例代码中,外部array
环境和竖线仅用于说明“lim”和下标参数都左对齐。
\documentclass[12pt]{article}
\newcommand\mylim[2]{%
\begin{array}[t]{@{}l@{}}
\lim #1 \\[-1ex] \scriptstyle #2
\end{array}
}
\begin{document}
\[ \begin{array}{|@{}l}
\mylim{x}{x \to -2} =\\
\mylim{x}{x \to -1} =\\
\mylim{x}{x \to 0} =\\
\mylim{x}{x \to 1} =\\
\mylim{x}{x \to 2} =\\
\mylim{y}{y \to \infty} =\\
\mylim{k}{k \to -\infty} =
\end{array}
\]
\end{document}
附录回答 OP 的后续问题:如果目标是让 LaTeX 忽略(出于水平对齐的目的),即“lim”下方的下标中的任何内容,同时仍将“lim”下方的材料居中,则可以利用 @daleif 提供的注释并使用\smashoperator
宏数学工具包裹:
\smashoperator{\lim_{x\to-2}} f(x)
如果你有很多这样的表达式,并且希望节省打字时间(并减少拼写错误的数量......),你可以定义一个快捷宏,例如,
\newcommand\nlim[1]{\smashoperator{\lim_{#1}}}
然后输入\nlim{x\to-2} f(x)
。请注意,如果下标中的材料足够宽,它将“突出”到左侧的空间中和在“lim”的右侧。我认为你想要的是双面突出。但是,如果你想让下标材料只在左侧突出,而不在右侧突出,请使用选项[l]
,即写
\smashoperator[l]{\lim{k\to-\infty}} k
\documentclass[12pt]{article}
\usepackage{mathtools} % for \smashoperator macro
\newcommand\nlim[1]{\smashoperator{\lim_{#1}}}
\begin{document}
\[ \begin{array}{|@{}l}
\nlim{x \to -2} x =\\
\nlim{x \to -1} x =\\
\nlim{x \to 0} x =\\
\nlim{x \to 1} x =\\
\nlim{x \to 2} x =\\
\nlim{y \to \infty} y =\\
\nlim{k \to -\infty} k =
\end{array}
\]
\end{document}
对美学\mylim
由and生成\nlim
:如果您要努力对齐字符串“lim”上的各行,则不应冒险让 lim 的下标材料突出到字符串的左侧,从而破坏整体外观。因此,在我看来,您应该使用 with\mylim
而不是 with\nlim
来实现对齐目标。
答案2
这种方法使用堆栈,允许使用可选参数来指定“lim”线和下标之间的间隙(默认为 3pt),如 lim 线上所示。
在这种情况下,\mylim
(第 1 列)将参数左对齐,而\myclim
(第 2 列)将下标居中对齐,同时保持与单词“lim”的整体对齐。最后\myclimB
(第 3 列)考虑将参数置于极限时的下标宽度。
修改后的解决方案不仅对齐“lim”,还对齐等号及其后续内容。
\documentclass[12pt]{article}
\usepackage{tabstackengine}
\stackMath
\newcommand\mylim[3][3pt]{%
\def\stackalignment{l}\ensurestackMath{\stackunder[#1]{\lim #2}{\scriptstyle #3}}%
}
\newcommand\myclim[3][3pt]{%
\def\stackalignment{c}\ensurestackMath{\stackunder[#1]{\lim #2}{%
\makebox[0pt]{$\scriptstyle #3$}}}%
}
\newcommand\myclimB[3][3pt]{%
\setbox0=\hbox{$\lim$}%
\setbox1=\hbox{$\scriptstyle #3$}%
\ifdim\wd1>\wd0\kern.5\wd0\kern-.5\wd1\fi%
\def\stackalignment{c}\mathop{\ensurestackMath{\stackunder[#1]{\lim}{%
\scriptstyle #3}}}#2%
}
\begin{document}
\[
\setstackgap{L}{2\baselineskip}\def\stackalignment{l}\TABbinary
\tabbedCenterstack{
\mylim{x}{x \to -2} &=&0\\
\mylim{x}{x \to -1} &=&0\\
\mylim{x}{x \to 0} &=&0\\
\mylim{x}{x \to 1} &=&0\\
\mylim{x}{x \to 2} &=&0\\
\mylim[4pt]{y}{y \to \infty} &=&0\\
\mylim{k}{k \to -\infty} &=&0
}
\quad...\quad
\tabbedCenterstack{
\myclim{x}{x \to -2} &=&0\\
\myclim{x}{x \to -1} &=&0\\
\myclim{x}{x \to 0} &=&0\\
\myclim{x}{x \to 1} &=&0\\
\myclim{x}{x \to 2} &=&0\\
\myclim[4pt]{y}{y \to \infty} &=&0\\
\myclim{k}{k \to -\infty} &=&0
}
\quad...\quad
\tabbedCenterstack{
\myclimB{x}{x \to -2} &=&0\\
\myclimB{x}{x \to -1} &=&0\\
\myclimB{x}{x \to 0} &=&0\\
\myclimB{x}{x \to 1} &=&0\\
\myclimB{x}{x \to 2} &=&0\\
\myclimB[4pt]{y}{y \to \infty} &=&0\\
\myclimB{k}{k \to -\infty} &=&0
}
\]
\end{document}