summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/strc-mat.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkiv/strc-mat.mkiv')
-rw-r--r--tex/context/base/mkiv/strc-mat.mkiv75
1 files changed, 47 insertions, 28 deletions
diff --git a/tex/context/base/mkiv/strc-mat.mkiv b/tex/context/base/mkiv/strc-mat.mkiv
index c6b277991..775d2aca1 100644
--- a/tex/context/base/mkiv/strc-mat.mkiv
+++ b/tex/context/base/mkiv/strc-mat.mkiv
@@ -566,7 +566,7 @@
\newconstant\c_strc_math_vertical % experiment
\c_strc_formulas_mode \plustwo % 0=native 1=simple (old) 2=align (new)
-\c_strc_formulas_space_model\plusthree % replaces \plusone
+\c_strc_formulas_space_model\plusthree % replaces \plusone, we might use \plusfour in the future
\newconditional\c_strc_formulas_tight
@@ -641,33 +641,6 @@
\directvspacing\p_spaceafter
\fi}
-% \def\strc_math_obey_depth
-% {\ifvmode\ifdim\prevdepth<\zeropoint\else\ifdim\prevdepth<\strutdp
-% % maybe add a tracing option here
-% \ifgridsnapping
-% \directvspacing\v!depth
-% \else
-% \kern\dimexpr\strutdp-\prevdepth\relax
-% \prevdepth\strutdp
-% \fi
-% \fi\fi\fi}
-%
-% \setvalue{\??mathdisplayspacemodel\v!before:3}%
-% {% not ok, try \stopformula\par\startformula vs \stopformula\startformula
-% \ifdim\lastskip>\zeropoint
-% % bah
-% \else
-% \strc_math_obey_depth % somehow \fakenextstrutline doesn't work here
-% \nointerlineskip
-% \fi
-% \ifx\p_spacebefore\v!none
-% % nothing
-% \else\ifx\p_spacebefore\empty
-% \directvspacing\currentvspacing
-% \else
-% \directvspacing\p_spacebefore
-% \fi\fi}
-
\setvalue{\??mathdisplayspacemodel\v!before:3}%
{% not ok, try \stopformula\par\startformula vs \stopformula\startformula
\let\m_spacebefore\empty
@@ -714,6 +687,49 @@
\directvspacing\p_spaceafter
\fi\fi}
+\newconditional\c_math_model_four_indeed
+
+\setvalue{\??mathdisplayspacemodel\v!before:4}%
+ {% not ok, try \stopformula\par\startformula vs \stopformula\startformula
+ \ifvmode
+ \ifinner
+ \csname\??mathdisplayspacemodel\v!before:3\endcsname
+ \else
+ \settrue\c_math_model_four_indeed
+ \forcestrutdepth
+ \nointerlineskip
+ \ifx\p_spacebefore\v!none
+ % nothing
+ \else\ifx\p_spacebefore\empty
+ \directvspacing\currentvspacing
+ \else
+ \directvspacing{\p_spacebefore,\the\scratchdimen}%
+ \fi\fi
+ \fi
+ \else
+ \csname\??mathdisplayspacemodel\v!before:3\endcsname
+ \fi}
+
+\setvalue{\??mathdisplayspacemodel\v!after:4}%
+ {\ifconditional\c_math_model_four_indeed
+ \setfalse\c_math_model_four_indeed
+ \forcestrutdepth
+ \else
+ \prevdepth\strutdp % \directvspacing\v!depth
+ \fi
+ \ifx\p_spaceafter\v!none
+ % nothing
+ \else\ifx\p_spaceafter\empty
+ \directvspacing\currentvspacing
+ \else
+ \directvspacing\p_spaceafter
+ \fi\fi}
+
+\unexpanded\def\setdisplaymathspacemodel[#1]%
+ {\ifcsname\??mathdisplayspacemodel\v!before:\number#1\endcsname
+ \c_strc_formulas_space_model#1\relax
+ \fi}
+
% \newtoks\everybeforedisplay
% \appendtoks\page_sides_check_floats_indeed\to\everybeforedisplay
@@ -785,6 +801,9 @@
{\d_strc_formulas_display_skip_left \zeropoint
\d_strc_formulas_display_skip_right\zeropoint}
+\setvalue{\??formulaoption\v!depth}%
+ {\c_strc_formulas_space_model\plusfour}
+
\setvalue{\??formulaoption\v!line}%
{\ifgridsnapping
\setformulaparameter\c!grid{\v!math:\v!line}%