From 1bcb61ec8c01b503740bfeb8cc9d5f62553b3f72 Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Sun, 28 May 2023 19:47:52 +0200 Subject: 2023-05-28 18:57:00 --- tex/context/base/mkii/cont-new.mkii | 2 +- tex/context/base/mkii/context.mkii | 2 +- tex/context/base/mkii/mult-fr.mkii | 2 ++ tex/context/base/mkiv/cont-new.mkiv | 2 +- tex/context/base/mkiv/context.mkiv | 2 +- tex/context/base/mkiv/mult-prm.lua | 1 + tex/context/base/mkiv/status-files.pdf | Bin 24658 -> 24649 bytes tex/context/base/mkiv/status-lua.pdf | Bin 270731 -> 264536 bytes tex/context/base/mkxl/cont-new.mkxl | 2 +- tex/context/base/mkxl/context.mkxl | 2 +- tex/context/base/mkxl/math-act.lmt | 15 +++++++++++++++ tex/context/base/mkxl/math-ini.mkxl | 11 +++++++++++ tex/context/base/mkxl/math-spa.lmt | 2 +- tex/context/base/mkxl/spac-brk.lmt | 1 + tex/context/base/mkxl/spac-brk.mkxl | 18 +++++++----------- tex/context/interface/mkii/keys-fr.xml | 2 ++ tex/context/sample/math/math-knuth-dt.tex | 29 ++++++++++++++++------------- 17 files changed, 62 insertions(+), 31 deletions(-) (limited to 'tex/context') diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii index e2f277db9..f46b8e473 100644 --- a/tex/context/base/mkii/cont-new.mkii +++ b/tex/context/base/mkii/cont-new.mkii @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2023.05.27 23:23} +\newcontextversion{2023.05.28 18:55} %D This file is loaded at runtime, thereby providing an %D excellent place for hacks, patches, extensions and new diff --git a/tex/context/base/mkii/context.mkii b/tex/context/base/mkii/context.mkii index 459078b2f..50f3e71b3 100644 --- a/tex/context/base/mkii/context.mkii +++ b/tex/context/base/mkii/context.mkii @@ -20,7 +20,7 @@ %D your styles an modules. \edef\contextformat {\jobname} -\edef\contextversion{2023.05.27 23:23} +\edef\contextversion{2023.05.28 18:55} %D For those who want to use this: diff --git a/tex/context/base/mkii/mult-fr.mkii b/tex/context/base/mkii/mult-fr.mkii index 6892458b6..fb98d0766 100644 --- a/tex/context/base/mkii/mult-fr.mkii +++ b/tex/context/base/mkii/mult-fr.mkii @@ -832,6 +832,7 @@ \setinterfaceconstant{exitoffset}{decalagesortie} \setinterfaceconstant{expansion}{expansion} \setinterfaceconstant{export}{exporter} +\setinterfaceconstant{extradata}{extradata} \setinterfaceconstant{extras}{extras} \setinterfaceconstant{factor}{facteur} \setinterfaceconstant{fallback}{repli} @@ -955,6 +956,7 @@ \setinterfaceconstant{lastpage}{dernierepage} \setinterfaceconstant{lastpagesep}{sepdernierepage} \setinterfaceconstant{lastpubsep}{sepdernierepub} +\setinterfaceconstant{lasttextseparator}{lasttextseparator} \setinterfaceconstant{layout}{miseenpage} \setinterfaceconstant{left}{gauche} \setinterfaceconstant{leftclass}{leftclass} diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv index b3ef836ce..6c34ef17a 100644 --- a/tex/context/base/mkiv/cont-new.mkiv +++ b/tex/context/base/mkiv/cont-new.mkiv @@ -13,7 +13,7 @@ % \normalend % uncomment this to get the real base runtime -\newcontextversion{2023.05.27 23:23} +\newcontextversion{2023.05.28 18:55} %D This file is loaded at runtime, thereby providing an excellent place for hacks, %D patches, extensions and new features. There can be local overloads in cont-loc diff --git a/tex/context/base/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv index c564ee74c..d5f5241b4 100644 --- a/tex/context/base/mkiv/context.mkiv +++ b/tex/context/base/mkiv/context.mkiv @@ -49,7 +49,7 @@ %D {YYYY.MM.DD HH:MM} format. \edef\contextformat {\jobname} -\edef\contextversion{2023.05.27 23:23} +\edef\contextversion{2023.05.28 18:55} %D Kind of special: diff --git a/tex/context/base/mkiv/mult-prm.lua b/tex/context/base/mkiv/mult-prm.lua index cf83244cf..260a61949 100644 --- a/tex/context/base/mkiv/mult-prm.lua +++ b/tex/context/base/mkiv/mult-prm.lua @@ -659,6 +659,7 @@ return { "setmathspacing", "shapingpenaltiesmode", "shapingpenalty", + "shortinlinemaththreshold", "snapshotpar", "srule", "supmarkmode", diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf index a3b95216b..852d7997a 100644 Binary files a/tex/context/base/mkiv/status-files.pdf and b/tex/context/base/mkiv/status-files.pdf differ diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf index 85a68d14d..6d9904ad2 100644 Binary files a/tex/context/base/mkiv/status-lua.pdf and b/tex/context/base/mkiv/status-lua.pdf differ diff --git a/tex/context/base/mkxl/cont-new.mkxl b/tex/context/base/mkxl/cont-new.mkxl index 81d56e507..4e2817bed 100644 --- a/tex/context/base/mkxl/cont-new.mkxl +++ b/tex/context/base/mkxl/cont-new.mkxl @@ -13,7 +13,7 @@ % \normalend % uncomment this to get the real base runtime -\newcontextversion{2023.05.27 23:23} +\newcontextversion{2023.05.28 18:55} %D This file is loaded at runtime, thereby providing an excellent place for hacks, %D patches, extensions and new features. There can be local overloads in cont-loc diff --git a/tex/context/base/mkxl/context.mkxl b/tex/context/base/mkxl/context.mkxl index 74f8b3bfc..381453997 100644 --- a/tex/context/base/mkxl/context.mkxl +++ b/tex/context/base/mkxl/context.mkxl @@ -29,7 +29,7 @@ %D {YYYY.MM.DD HH:MM} format. \immutable\edef\contextformat {\jobname} -\immutable\edef\contextversion{2023.05.27 23:23} +\immutable\edef\contextversion{2023.05.28 18:55} %overloadmode 1 % check frozen / warning %overloadmode 2 % check frozen / error diff --git a/tex/context/base/mkxl/math-act.lmt b/tex/context/base/mkxl/math-act.lmt index b0243719e..8fdd6ca5a 100644 --- a/tex/context/base/mkxl/math-act.lmt +++ b/tex/context/base/mkxl/math-act.lmt @@ -1190,6 +1190,21 @@ do end + +-- In TeX The Program we find in section 543 a remark about the second use of math +-- italic: it is always added to the width except with respect to the position of +-- the subscript. That paragraph also mentions that the number of different widths +-- is normally small so they can be shared (there is an eight bit index into a width +-- array). Actually the limits of at most 16 heights and depths has as side effect +-- that we get some snapping of sizes. Now, because many math characters have an +-- italic correction, the saving on shared widths is negated by the amount of (at +-- most 64) italics. So in practice there is no gain and the italic correction could +-- have served as bottom kern. We think that the following approach (that we actualy +-- came to by a different reasonsing: inconsistent open type fonts) is quite valid +-- and robust. It's just that the opentype math fonts should never have gone that +-- TeX italic route. Italic usage is more clear from section 543 than from the math +-- rendering code. + do local function wipe(whatever,target,original,parameters,field,move,integrals) diff --git a/tex/context/base/mkxl/math-ini.mkxl b/tex/context/base/mkxl/math-ini.mkxl index eb3801a9b..b8c69b78c 100644 --- a/tex/context/base/mkxl/math-ini.mkxl +++ b/tex/context/base/mkxl/math-ini.mkxl @@ -534,6 +534,14 @@ % \preinlinepenalty 23 \postinlinepenalty 56 x$xx$x\par x$x$x\par x$x^2$x\par x$!$x\par % \preshortinlinepenalty 123 \postshortinlinepenalty456 x$xx$x\par x$x$x\par x$x^2$x\par x$!$x\par +% \immutable\integerdef\defaultpreshortinlinepenalty 150 + +\preshortinlinepenalty 150 + +\appendtoks + \shortinlinemaththreshold\emwidth +\to \everybodyfont + \setmathoptions\mathordinarycode\numexpr \noitaliccorrectionclassoptioncode % +\checkligatureclassoptioncode @@ -638,6 +646,7 @@ +\carryoverrighttopkernclassoptioncode +\carryoverrightbottomkernclassoptioncode +\preferdelimiterdimensionsclassoptioncode + +\shortinlineclassoptioncode \relax \setmathoptions\mathradicalcode\numexpr @@ -648,11 +657,13 @@ +\carryoverrighttopkernclassoptioncode +\carryoverrightbottomkernclassoptioncode +\preferdelimiterdimensionsclassoptioncode + +\shortinlineclassoptioncode \relax \setmathoptions\mathaccentcode\numexpr \defaultmathclassoptions +\autoinjectclassoptioncode + +\shortinlineclassoptioncode \relax % ord spacing but with support for \m{m^2/x__3} diff --git a/tex/context/base/mkxl/math-spa.lmt b/tex/context/base/mkxl/math-spa.lmt index 6cd3b467e..d068ed8e9 100644 --- a/tex/context/base/mkxl/math-spa.lmt +++ b/tex/context/base/mkxl/math-spa.lmt @@ -37,7 +37,7 @@ local getlist = nuts.getlist local setglue = nuts.setglue local setwhd = nuts.setwhd local getdimensions = nuts.dimensions -local getnormalizedline = node.direct.getnormalizedline +local getnormalizedline = nuts.getnormalizedline local getbox = nuts.getbox local setoffsets = nuts.setoffsets local addxoffset = nuts.addxoffset diff --git a/tex/context/base/mkxl/spac-brk.lmt b/tex/context/base/mkxl/spac-brk.lmt index e534faa0e..fd32f7000 100644 --- a/tex/context/base/mkxl/spac-brk.lmt +++ b/tex/context/base/mkxl/spac-brk.lmt @@ -37,6 +37,7 @@ local nodecodes = nodes.nodecodes local penalty_code = nodecodes.penalty local glue_code = nodecodes.glue local disc_code = nodecodes.disc +local kern_code = nodecodes.kern local math_code = nodecodes.math local breakcodes = tex.breakcodes diff --git a/tex/context/base/mkxl/spac-brk.mkxl b/tex/context/base/mkxl/spac-brk.mkxl index 8926e1b4d..0ecff3577 100644 --- a/tex/context/base/mkxl/spac-brk.mkxl +++ b/tex/context/base/mkxl/spac-brk.mkxl @@ -19,25 +19,21 @@ \registerctxluafile{spac-brk}{} +\unprotect + %D This is a very experimental feature and a by product of improving inline math %D crossing lines. As it might evolve: use with care. -% \setuplayout[width=8cm] % \starttext % \setupalign[verytolerant] % \tracinglousiness1 % % \tracinglousiness2 -% \samplefile{ward} \blank -% % \ctxlua{typesetters.breakpoints.show("11=0")} \samplefile{ward} \blank -% % \ctxlua{typesetters.breakpoints.show{ [11] = 0 }} \samplefile{ward} \blank -% \lousiness 1 11 0 \samplefile{ward} \blank -% \silliness 11 \samplefile{ward} \blank -% {\tt \the\lousiness} +% \hsize8cm \lousiness 0 \samplefile{ward} \blank +% {\tt \the\lousiness} \blank +% \hsize8cm \lousiness 1 11 0 \samplefile{ward} \blank +% \hsize8cm \silliness 11 \samplefile{ward} \blank % \stoptext - -\unprotect - -% nothing hereyet +%D These macros are defined a the \LUA\ end. \protect \endinput diff --git a/tex/context/interface/mkii/keys-fr.xml b/tex/context/interface/mkii/keys-fr.xml index e9794ab0b..db5ac7f88 100644 --- a/tex/context/interface/mkii/keys-fr.xml +++ b/tex/context/interface/mkii/keys-fr.xml @@ -838,6 +838,7 @@ + @@ -961,6 +962,7 @@ + diff --git a/tex/context/sample/math/math-knuth-dt.tex b/tex/context/sample/math/math-knuth-dt.tex index e32681437..7babcaf76 100644 --- a/tex/context/sample/math/math-knuth-dt.tex +++ b/tex/context/sample/math/math-knuth-dt.tex @@ -1,13 +1,16 @@ -{\bf 15.} (This procedure maintains four integers $(A, B, C, D)$ with the invariant meaning -that \quotation{our remaining job is to output the continued fraction for $(Ay + B)/(Cy + D)$, -where $y$ is the input yet to come.}) Initially set $j \leftarrow k \leftarrow 0$, $(A, B, C, D) \leftarrow (a, b, c, d)$; -then input $x_j$ and set $(A, B, C, D) \leftarrow (Ax_j + B, A, Cx_j + D, C)$, $j \leftarrow j + 1$, one or -more times until $C + D$ has the same sign as $C$. (When $j > 1$ and the input has not -terminated, we know that $1 < y < \infty$; and when $C + D$ has the same sign as $C$ we -know therefore that $(Ay + B)/(Cy + D)$ lies between $(A + B)/(C + D)$ and $A/C$.) -Now comes the general step: If no integer lies strictly between $(A + B)/(C + D)$ -and $A/C$, output $X_k \leftarrow \lfloor A/C \rfloor$, and set $(A, B, C, D) \leftarrow (C, D, A - X_ k C, B - X_k D)$, -$k \leftarrow k + 1$; otherwise input $x_j$ and set $(A, B,C, D) \leftarrow (Ax_j + B, A, Cx_j + D,C)$, -$j \leftarrow j + 1$. The general step is repeated ad infinitum. However, if at any time the -\emph{final} $x_j$ is input, the algorithm immediately switches gears: It outputs the continued -fraction for $(Ax_j + B)/(Cx_j + D)$, using Euclid's algorithm, and terminates. +{\bf 15.} (This procedure maintains four integers $(A, B, C, D)$ with the +invariant meaning that \quotation{our remaining job is to output the continued +fraction for $(Ay + B)/(Cy + D)$, where $y$ is the input yet to come.}) Initially +set $j \leftarrow k \leftarrow 0$, $(A, B, C, D) \leftarrow (a, b, c, d)$; then +input $x_j$ and set $(A, B, C, D) \leftarrow (Ax_j + B, A, Cx_j + D, C)$, $j +\leftarrow j + 1$, one or more times until $C + D$ has the same sign as $C$. +(When $j > 1$ and the input has not terminated, we know that $1 < y < \infty$; +and when $C + D$ has the same sign as $C$ we know therefore that $(Ay + B)/(Cy + +D)$ lies between $(A + B)/(C + D)$ and $A/C$.) Now comes the general step: If no +integer lies strictly between $(A + B)/(C + D)$ and $A/C$, output $X_k \leftarrow +\lfloor A/C \rfloor$, and set $(A, B, C, D) \leftarrow (C, D, A - X_ k C, B - X_k +D)$, $k \leftarrow k + 1$; otherwise input $x_j$ and set $(A, B,C, D) \leftarrow +(Ax_j + B, A, Cx_j + D,C)$, $j \leftarrow j + 1$. The general step is repeated ad +infinitum. However, if at any time the \emph{final} $x_j$ is input, the algorithm +immediately switches gears: It outputs the continued fraction for $(Ax_j + +B)/(Cx_j + D)$, using Euclid's algorithm, and terminates. -- cgit v1.2.3