50 如何正确使用原语`\jot`来修改数学公式的行距?下面的例子中对`\jot`的修改为何失效?

发布于 2025-07-26 17:51:03

描述

如题,在texbook中关于\jot的描述如下:

image.png

texdef \jot
\jot:
\dimen14
\the\jot:
3.0pt

image.png

默认值为\jot=3pt

稍微搜一下源码:

我猜大致修改原理是plain内核在处理「某些环境」内部间距时通过\openup\jot来增加间距,对于这些环境,手动改大\jot可以实现增大间距。

image.png

例子

来看两个例子

\documentclass{ctexart}
\usepackage{amsmath,amsfonts}
\jot=10ex
\begin{document}
    \begin{align}
        a^2 + b^2 &= c^2 \\
        a^2 + b^2 &= c^2 
    \end{align} 
\end{document}

这有效。

image.png

\documentclass{ctexart}
\usepackage{amsmath,amsfonts}
\jot=10ex
\begin{document}
\[
\begin{cases}
    a^2 + b^2 = c^2 \\
    a^2 + b^2 = c^2 
\end{cases} 
\]
\end{document}

很遗憾...这无效。

image.png

问题

  1. 哪些环境的距离可以通过\jot批量修改
  2. 如有我有5个cases环境,希望批量增加其公式内的间距,除了follow this写5次\\[10ex]之外是否有基于\jot的方法
\documentclass{ctexart}
\usepackage{amsmath,amsfonts}
% \jot=10ex 
\begin{document}
\[
\begin{cases}
    \dfrac{1}{1} + \dfrac{2}{2} \neq \dfrac{3}{3} \\[10ex]
    \dfrac{1}{1} + \dfrac{2}{2} = \dfrac{3}{3}
\end{cases}
\]
\[
\begin{cases}
    \dfrac{1}{1} + \dfrac{2}{2} \neq \dfrac{3}{3} \\
    \dfrac{1}{1} + \dfrac{2}{2} = \dfrac{3}{3}
\end{cases}
\]
\[
\begin{cases}
    \dfrac{1}{1} + \dfrac{2}{2} \neq \dfrac{3}{3} \\
    \dfrac{1}{1} + \dfrac{2}{2} = \dfrac{3}{3}
\end{cases}
\]
\[
\begin{cases}
    \dfrac{1}{1} + \dfrac{2}{2} \neq \dfrac{3}{3} \\
    \dfrac{1}{1} + \dfrac{2}{2} = \dfrac{3}{3}
\end{cases}
\]
\[
\begin{cases}
    \dfrac{1}{1} + \dfrac{2}{2} \neq \dfrac{3}{3} \\
    \dfrac{1}{1} + \dfrac{2}{2} = \dfrac{3}{3}
\end{cases}
\]
\end{document}

image.png

查看更多

关注者
0
被浏览
58
1 个回答
Sagittarius Rover
Sagittarius Rover 9小时前
我要成为Typst糕手/(ㄒoㄒ)/~~

需要注意的是:

LaTeX2e内核中定义的\casesamsmath宏包重定义的cases环境并不相同。

\documentclass{article}
\begin{document}
\[
|x|=\cases{x,&if $x\ge0$;\cr 
-x,&otherwise.\cr}
\]
\end{document}

image.png

重点要转到关注amsmath.dtx中的有关定义:

% line 2604~2614
\renewenvironment{cases}{%
  \matrix@check\cases\env@cases
}{%
  \endarray\right.%
}
\def\env@cases{%
  \let\@ifnextchar\new@ifnextchar
  \left\lbrace
  \def\arraystretch{1.2}%
  \array{@{}l@{\quad}l@{}}%
}

cases环境本质是是一个带\lbracearray环境,与\jot并无关系

所以...似乎patch一下\arraystretch即可实现第二个需求:

\documentclass{ctexart}
\usepackage{amsmath,amsfonts}
\makeatletter
\def\env@cases{%
  \let\@ifnextchar\new@ifnextchar
  \left\lbrace
  \def\arraystretch{2.5}%
  \array{@{}l@{\quad}l@{}}%
}
\makeatother
\begin{document}
\[
\begin{cases}
    \dfrac{1}{1} + \dfrac{2}{2} \neq \dfrac{3}{3} \\
    \dfrac{1}{1} + \dfrac{2}{2} = \dfrac{3}{3}
\end{cases}
\]
\[
\begin{cases}
    \dfrac{1}{1} + \dfrac{2}{2} \neq \dfrac{3}{3} \\
    \dfrac{1}{1} + \dfrac{2}{2} = \dfrac{3}{3}
\end{cases}
\]
\[
\begin{cases}
    \dfrac{1}{1} + \dfrac{2}{2} \neq \dfrac{3}{3} \\
    \dfrac{1}{1} + \dfrac{2}{2} = \dfrac{3}{3}
\end{cases}
\]
\[
\begin{cases}
    \dfrac{1}{1} + \dfrac{2}{2} \neq \dfrac{3}{3} \\
    \dfrac{1}{1} + \dfrac{2}{2} = \dfrac{3}{3}
\end{cases}
\]
\[
\begin{cases}
    \dfrac{1}{1} + \dfrac{2}{2} \neq \dfrac{3}{3} \\
    \dfrac{1}{1} + \dfrac{2}{2} = \dfrac{3}{3}
\end{cases}
\]
\end{document}

image.png

嗯...效果并不是很好...

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览