我正在做一个需要大量使用数学环境和 TEXpage 环境的项目。我注意到,当公式环境放在 TEXpage 环境中时,会出现错误的间距,就好像我的设置\setupformulae[spacebefore=none, spaceafter=none]
没用一样。这是一个错误还是我做错了什么?
这是我的代码:
\setupformulae[align=flushleft, spacebefore=none, spaceafter=none]
\starttext
%\startTEXpage
Puisque l'on passe d'un rangement à l'autre en effectuant une permutation de \math{n} boules, on a :
\startformula
\#A = n!
\stopformula
Puisque placer \math{n} boules dans \math{n} boîtes revient à prendre une \math{n}-liste d'éléments d'un ensemble à \math{n} éléments, on a :
\startformula
\#\Omega = n^n
\stopformula
On peut ainsi calculer :
\startformula
P(A) = \frac{\#A}{\#\Omega} = \frac{n!}{n^n}
\stopformula
%\stopTEXpage
\stoptext
以下是发生的事情没有TEXpage 环境(\startTEXpage
和\stopTEXpage
(评论):
以下是发生的事情和TEXpage 环境(\startTEXpage
和\stopTEXpage
(未注释):
页面确实被裁剪到内容,但公式前后出现了错误的间距。有什么解释吗?提前感谢您的帮助!
答案1
您可以将新的间距模型反向移植到旧的 ConTeXt。但这不是一个好主意。现在我可能会破坏一些东西。更好更新上下文。
\unexpanded\def\startdisplaymath
{\ifhmode
\par
\fi
\bgroup
\informulatrue
\beforedisplayspace
\setdisplaydimensions
\startinnermath
\begingroup} % less interference with upcoming a \over b
\unexpanded\def\stopdisplaymath
{\endgroup % less interference with upcoming a \over b
\stopinnermath
\afterdisplayspace
\egroup}
\setupformulae[align=flushleft, spacebefore=none, spaceafter=none]
\starttext
\startTEXpage
Puisque l'on passe d'un rangement à l'autre en effectuant une permutation de \math{n} boules, on a :
\startformula
\#A = n!
\stopformula
Puisque placer \math{n} boules dans \math{n} boîtes revient à prendre une \math{n}-liste d'éléments d'un ensemble à \math{n} éléments, on a :
\startformula
\#\Omega = n^n
\stopformula
On peut ainsi calculer :
\startformula
P(A) = \frac{\#A}{\#\Omega} = \frac{n!}{n^n}
\stopformula
\stopTEXpage
\stoptext