amsmath 和 setspace 之间的奇怪交互

amsmath 和 setspace 之间的奇怪交互

编译下面的 MWE,您将在输出中观察到以下现象(您可能需要放大):

  • 注释掉amsmath。然后,行之间的间距使得第一行的子索引不会太靠近第二行的超级索引,无论设置 setstretch
  • 现在,加载amsmath。然后,\setstretch{1.0}行距\setstretch{1.05}再次自动调整,以确保第一行的子索引不会太靠近第二行的超级索引。\setstretch{1.15}第一行的子索引几乎与第二行的超索引重叠。

希望我的意思清楚。


\documentclass{article}
\usepackage{setspace}\setstretch{1.0} 
%\usepackage{setspace}\setstretch{1.05}
\usepackage{setspace}\setstretch{1.15}
%\usepackage{amsmath}
\begin{document}
XXXXXXXXXXXX $\Omega^{(\alpha,N)}_{\textup{brannnnnnnn}}$ XXXXXXXXXXXXXXXXXXXXXXXXX

XXXXXXXXXXXX $\Omega^{(\alpha,N)}_{\textup{bran}}$ XXXXXXXXXXXXXXXXXXXXXXXXX
\end{document} 

我是不是出现了幻觉或者行为异常了?

PS:下面的代码不存在这样的问题:


\documentclass{article}
%\usepackage{setspace}\setstretch{1.0}
%\usepackage{setspace}\setstretch{1.05}
\usepackage{setspace}\setstretch{1.15}
\usepackage{amsmath}
\begin{document}
XXXXXXXXXXXX $\Omega^{(\alpha,N)}_{\textup{bran}}$ XXXXXXXXXXXXXXXXXXXXXXXXX

XXXXXXXXXXXX $\Omega^{N^{N^{N^N}}}_{\textup{bran}}$ XXXXXXXXXXXXXXXXXXXXXXXXX
\end{document} 

答案1

添加\showoutput后您将看到\textup文本从 10pt 变为 7pt,您已经间接加载,amstext这使得\text....命令尊重下标并减小字体大小,而不是像\mbox文本大小那样始终使用文本大小。

\documentclass{article}
\usepackage{setspace}\setstretch{1.0} 
%\usepackage{setspace}\setstretch{1.05}
\usepackage{setspace}\setstretch{1.15}
\usepackage{amsmath}
\begin{document}

\showoutput
\showboxdepth3


XXXXXXXXXXXX $\Omega^{(\alpha,N)}_{\textup{brannnnnnnn}}$ XXXXXXXXXXXXXXXXXXXXXXXXX

XXXXXXXXXXXX $\Omega^{(\alpha,N)}_{\textup{bran}}$ XXXXXXXXXXXXXXXXXXXXXXXXX
\end{document} 

您将在日志中看到

...\hbox(10.44443+3.01659)x345.0, glue set - 1.0 []
...\glue(\parskip) 0.0 plus 1.0
...\glue(\baselineskip) 0.33891
...\hbox(10.44443+3.01659)x345.0, glue set 9.70201fil []

这意味着表达式刚好足够小,可以挤进正常基线间距。TeX 在行之间插入的实际跳过是\baselineskip减去一行的深度和下一行的高度,就0.3pt在这里。

如果你注释掉amsmath你会看到

...\hbox(10.44443+5.09993)x345.0, glue set - 1.0 []
...\glue(\parskip) 0.0 plus 1.0
...\glue(\lineskip) 1.0
...\hbox(10.44443+5.09993)x345.0, glue set 9.70201fil []

因此,此处的表达式太高,无法适应正常基线间距,因此此时 TeX 会插入\lineskip胶水,与\baselinesip插入固定值(此处为 1pt)不同,胶水会插入以阻止线条碰撞。

通常,保持均匀的行距被认为是一种良好做法,即使有时会导致行距过近。如果行距过近,那么您可以尝试使用\lineskiplimitTeX 切换到添加胶水来分隔行之前允许的最小间距\lineskip。默认为0pt

相关内容