\sum_{\substack{n=1\\n\neq i}}^N
使用\substack
将多行作为和的下标添加不会使它们在等号/不等号上对齐。我发现这个问题的一些答案\hphantom
,就像幻影角色或环境一样aligned
;然而,前者对我来说没用,而后者破坏了间距,我宁愿不必手动修复它。
是否存在一个类似于在数学环境中使用与符号简单地对齐两行的包tabular
?
答案1
这本质上是重复\substack
,但添加了一个对齐点。
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\newcommand{\subalign}[1]{%
\vcenter{%
\Let@ \restore@math@cr \default@tag
\baselineskip\fontdimen10 \scriptfont\tw@
\advance\baselineskip\fontdimen12 \scriptfont\tw@
\lineskip\thr@@\fontdimen8 \scriptfont\thr@@
\lineskiplimit\lineskip
\ialign{\hfil$\m@th\scriptstyle##$&$\m@th\scriptstyle{}##$\hfil\crcr
#1\crcr
}%
}%
}
\makeatother
\begin{document}
\[
\sum_{\substack{n=1\\n\neq i}}^N
\sum_{\subalign{n&=1\\n&\neq i}}^N
\sum_{\subalign{uvw&=1\\n&\neq ijk}}^N
\]
\end{document}
看https://tex.stackexchange.com/a/697656/4427与 LuaLaTeX 兼容的版本
答案2
您还可以\mathmakebox
使用mathtools
\mathmakebox[width][pos]{content}
梅威瑟:
\documentclass{article}
\usepackage{mathtools}
\usepackage{calc} %% provides \widthof
\begin{document}
\[
\sum_{\substack{xyz=1\\n\neq 45}}^N
\quad\text{vs.}\quad
\sum_{\substack{xyz=1\\\mathmakebox[\widthof{$xyz$}+2\fboxrule][r]{n} \neq 45}}^N
\]
\end{document}
答案3
array
您可以按照以下示例定义自己的专用环境;第一个表达式使用“常规”\substack
表达式,第二个表达式使用名为的自定义数组环境mysubarray
。(我提前为缺乏数学意义表示深深的歉意——该示例仅用于说明印刷方面。)
\documentclass{article}
\usepackage{array,amsmath}
\newcolumntype{L}{>{\scriptstyle}l}
\newcolumntype{C}{>{\scriptstyle}c}
\newcolumntype{R}{>{\scriptstyle}r}
\newenvironment{mysubarray}{%
\scriptstyle
\setlength\arraycolsep{0pt}%
\setlength\extrarowheight{-1ex}
\renewcommand\arraystretch{0}
\begin{array}{RCL}}{\end{array}}
\begin{document}
\[
\sum_{\substack{xyz=1\\n\neq 45}}^N
\quad\text{vs.}\quad
\sum_{\begin{mysubarray}
xyz&=&1 \\ n&\neq&45
\end{mysubarray}}^N
\]
\end{document}