From 352a2686282e95b2869728f8f321688f7e216d80 Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Thu, 7 May 2020 11:47:12 +0200 Subject: 2020-05-07 11:00:00 --- .../general/manuals/luametatex/luametatex-math.tex | 107 +++++++++++++-------- 1 file changed, 66 insertions(+), 41 deletions(-) (limited to 'doc/context/sources/general/manuals/luametatex/luametatex-math.tex') diff --git a/doc/context/sources/general/manuals/luametatex/luametatex-math.tex b/doc/context/sources/general/manuals/luametatex/luametatex-math.tex index 407bb8cb5..3e7ea1840 100644 --- a/doc/context/sources/general/manuals/luametatex/luametatex-math.tex +++ b/doc/context/sources/general/manuals/luametatex/luametatex-math.tex @@ -143,7 +143,8 @@ It is possible to discover the math style that will be used for a formula in an expandable fashion (while the math list is still being read). To make this possible, \LUATEX\ adds the new primitive: \lpr {mathstyle}. This is a \quote {convert command} like e.g. \prm {romannumeral}: its value can only be read, -not set. +not set. Beware that contrary to \LUATEX\ this is now a proper number so you need +to use \type {\number} o r\type {\the} in order to serialize it. The returned value is between 0 and 7 (in math mode), or $-1$ (all other modes). For easy testing, the eight math style commands have been altered so that they can @@ -178,55 +179,55 @@ differ from the used style (second pass). In the case of a math choice used ungrouped, the chosen style is used after the choice too, unless you group. \startbuffer[1] - [a:\mathstyle]\quad + [a:\number\mathstyle]\quad \bgroup \mathchoice - {\bf \scriptstyle (x:d :\mathstyle)} - {\bf \scriptscriptstyle (x:t :\mathstyle)} - {\bf \scriptscriptstyle (x:s :\mathstyle)} - {\bf \scriptscriptstyle (x:ss:\mathstyle)} + {\bf \scriptstyle (x:d :\number\mathstyle)} + {\bf \scriptscriptstyle (x:t :\number\mathstyle)} + {\bf \scriptscriptstyle (x:s :\number\mathstyle)} + {\bf \scriptscriptstyle (x:ss:\number\mathstyle)} \egroup - \quad[b:\mathstyle]\quad + \quad[b:\number\mathstyle]\quad \mathchoice - {\bf \scriptstyle (y:d :\mathstyle)} - {\bf \scriptscriptstyle (y:t :\mathstyle)} - {\bf \scriptscriptstyle (y:s :\mathstyle)} - {\bf \scriptscriptstyle (y:ss:\mathstyle)} - \quad[c:\mathstyle]\quad + {\bf \scriptstyle (y:d :\number\mathstyle)} + {\bf \scriptscriptstyle (y:t :\number\mathstyle)} + {\bf \scriptscriptstyle (y:s :\number\mathstyle)} + {\bf \scriptscriptstyle (y:ss:\number\mathstyle)} + \quad[c:\number\mathstyle]\quad \bgroup \mathchoice - {\bf \scriptstyle (z:d :\mathstyle)} - {\bf \scriptscriptstyle (z:t :\mathstyle)} - {\bf \scriptscriptstyle (z:s :\mathstyle)} - {\bf \scriptscriptstyle (z:ss:\mathstyle)} + {\bf \scriptstyle (z:d :\number\mathstyle)} + {\bf \scriptscriptstyle (z:t :\number\mathstyle)} + {\bf \scriptscriptstyle (z:s :\number\mathstyle)} + {\bf \scriptscriptstyle (z:ss:\number\mathstyle)} \egroup - \quad[d:\mathstyle] + \quad[d:\number\mathstyle] \stopbuffer \startbuffer[2] - [a:\mathstyle]\quad + [a:\number\mathstyle]\quad \begingroup \mathchoice - {\bf \scriptstyle (x:d :\mathstyle)} - {\bf \scriptscriptstyle (x:t :\mathstyle)} - {\bf \scriptscriptstyle (x:s :\mathstyle)} - {\bf \scriptscriptstyle (x:ss:\mathstyle)} + {\bf \scriptstyle (x:d :\number\mathstyle)} + {\bf \scriptscriptstyle (x:t :\number\mathstyle)} + {\bf \scriptscriptstyle (x:s :\number\mathstyle)} + {\bf \scriptscriptstyle (x:ss:\number\mathstyle)} \endgroup - \quad[b:\mathstyle]\quad + \quad[b:\number\mathstyle]\quad \mathchoice - {\bf \scriptstyle (y:d :\mathstyle)} - {\bf \scriptscriptstyle (y:t :\mathstyle)} - {\bf \scriptscriptstyle (y:s :\mathstyle)} - {\bf \scriptscriptstyle (y:ss:\mathstyle)} - \quad[c:\mathstyle]\quad + {\bf \scriptstyle (y:d :\number\mathstyle)} + {\bf \scriptscriptstyle (y:t :\number\mathstyle)} + {\bf \scriptscriptstyle (y:s :\number\mathstyle)} + {\bf \scriptscriptstyle (y:ss:\number\mathstyle)} + \quad[c:\number\mathstyle]\quad \begingroup \mathchoice - {\bf \scriptstyle (z:d :\mathstyle)} - {\bf \scriptscriptstyle (z:t :\mathstyle)} - {\bf \scriptscriptstyle (z:s :\mathstyle)} - {\bf \scriptscriptstyle (z:ss:\mathstyle)} + {\bf \scriptstyle (z:d :\number\mathstyle)} + {\bf \scriptscriptstyle (z:t :\number\mathstyle)} + {\bf \scriptscriptstyle (z:s :\number\mathstyle)} + {\bf \scriptscriptstyle (z:ss:\number\mathstyle)} \endgroup - \quad[d:\mathstyle] + \quad[d:\number\mathstyle] \stopbuffer \typebuffer[1] @@ -734,7 +735,7 @@ marked \type {*} in the \TEX book. These will not actually be used as those combinations of atoms cannot actually happen, but it seemed better not to break orthogonality. They are initialized to zero. -\subsection{Local settings} +\subsection{Local \lpr {frozen} settings with} Math is processed in two passes. The first pass is needed to intercept for instance \type {\over}, one of the few \TEX\ commands that actually has a @@ -775,7 +776,25 @@ unprocessed math list. The result looks as follows: \blank \getbuffer \blank +\subsection{Checking a state with \lpr {Umathparameter}} +When you adapt math parameters it might make sense to see if they are set at +all. When a parameter is unset its value has the maximum dimension value and +you might for instance mistakenly multiply that value to open up things a bit, +which gives unexpected side effects. For that reason there is a convenient +checker: \lpr {Umathparameter}. When followed by a valid parameter it expands +to a state number: + +: 0=zero, 1=set, 2=unset (les stracing clutter this way) + +\starttabulate[|c|l|] +\DB value \BC meaning \NC \NR +\TB +\NC 0 \NC the parameter value is zero \NC \NR +\NC 1 \NC the parameter is set \NC \NR +\NC 2 \NC the parameter is unset \NC \NR +\LL +\stoptabulate \subsection{Skips around display math and \lpr {mathdisplayskipmode}} @@ -788,7 +807,7 @@ to fully control spacing. Therefore \LUATEX\ comes with a new directive: \lpr {mathdisplayskipmode}. The following values apply: \starttabulate[|c|l|] -\DB value \BC meaning \NC \NR +\DB value \BC meaning \NC \NR \TB \NC 0 \NC normal \TEX\ behaviour \NC \NR \NC 1 \NC always (same as 0) \NC \NR @@ -1441,9 +1460,9 @@ zero upto seven (like the ones reported by the primitive \lpr {mathstyle}). So, next few lines give identical results: \startbuffer -$\Ustyle0 \mathstyle \Ustyle7 \mathstyle$ -$\Ustyle\displaystyle \mathstyle \Ustyle\crampedscriptscriptstyle \mathstyle$ -$ \displaystyle \mathstyle \crampedscriptscriptstyle \mathstyle$ +$\Ustyle0 \number\mathstyle \Ustyle7 \number\mathstyle$ +$\Ustyle\displaystyle \number\mathstyle \Ustyle\crampedscriptscriptstyle \number\mathstyle$ +$ \displaystyle \number\mathstyle \crampedscriptscriptstyle \number\mathstyle$ \stopbuffer Like: \inlinebuffer . Values outside the valid range are ignored. @@ -1528,9 +1547,15 @@ These commands are provided as convenience. Before they come available you could do the following: \starttyping -\def\Umathcharclass{\directlua{tex.print(tex.getmathcode(token.scan_int())[1])}} -\def\Umathcharfam {\directlua{tex.print(tex.getmathcode(token.scan_int())[2])}} -\def\Umathcharslot {\directlua{tex.print(tex.getmathcode(token.scan_int())[3])}} +\def\Umathcharclass{\numexpr + \directlua{tex.print(tex.getmathcode(token.scan_int())[1])} +\relax} +\def\Umathcharfam{\numexpr + \directlua{tex.print(tex.getmathcode(token.scan_int())[2])} +\relax} +\def\Umathcharslot{\numexpr + \directlua{tex.print(tex.getmathcode(token.scan_int())[3])} +\relax} \stoptyping \subsection {Last lines and \lpr{predisplaygapfactor}} -- cgit v1.2.3