From 36355f3d0c23357fccf2c76b3e9605a41cae519d Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Wed, 21 Dec 2022 18:00:37 +0100 Subject: 2022-12-21 17:12:00 --- .../general/manuals/lowlevel/lowlevel-boxes.tex | 32 ++++++++++++++++++++ .../manuals/lowlevel/lowlevel-registers.tex | 35 +++++++++++++++++++++- .../general/manuals/luametatex/luametatex.tex | 4 --- 3 files changed, 66 insertions(+), 5 deletions(-) (limited to 'doc/context') diff --git a/doc/context/sources/general/manuals/lowlevel/lowlevel-boxes.tex b/doc/context/sources/general/manuals/lowlevel/lowlevel-boxes.tex index d5105fc8c..dd6c2f2d4 100644 --- a/doc/context/sources/general/manuals/lowlevel/lowlevel-boxes.tex +++ b/doc/context/sources/general/manuals/lowlevel/lowlevel-boxes.tex @@ -689,6 +689,38 @@ test\quad \ruledhbox{\getbuffer} \stoplinecorrection +Where a \type {\vtop} has the baseline at the top, a \type {\vbox} has it at the +bottom. In \LUAMETATEX\ we also have a \type {\dbox}, which is a \type {\vbox} with +that behaves like a \type {\vtop} when it's appended to a vertical list: the height of +the first box or rule determines the (base)line correction that gets applied. The following +example demonstrates this: + +\startlinecorrection +\startcombination [nx=3,ny=1,location=top] + {\vbox \bgroup \hsize .3\textwidth + \small\small \setupalign[tolerant,stretch] \dontcomplain + xxxxxxxxxxxxxxxx\par + \ruledvbox{\samplefile{tufte}}\par + xxxxxxxxxxxxxxxx\par + \egroup} {\type {\vbox}} + {\vbox \bgroup \hsize .3\textwidth + \small\small \setupalign[tolerant,stretch] \dontcomplain + xxxxxxxxxxxxxxxx\par + \ruledvtop{\samplefile{tufte}}\par + xxxxxxxxxxxxxxxx\par + \egroup} {\type {\vtop}} + {\vbox \bgroup \hsize .3\textwidth + \small\small \setupalign[tolerant,stretch] \dontcomplain + xxxxxxxxxxxxxxxx\par + \ruleddbox{\samplefile{tufte} }\par + xxxxxxxxxxxxxxxx\par + \egroup} {\type {\dbox}} +\stopcombination +\stoplinecorrection + +The \type {d} stands for \quote {dual} because we (sort of) have two baselines. The +regular height and depth are those of a \type {\vbox}. + \stopsectionlevel \stopdocument diff --git a/doc/context/sources/general/manuals/lowlevel/lowlevel-registers.tex b/doc/context/sources/general/manuals/lowlevel/lowlevel-registers.tex index 4dbee67cd..233a8c178 100644 --- a/doc/context/sources/general/manuals/lowlevel/lowlevel-registers.tex +++ b/doc/context/sources/general/manuals/lowlevel/lowlevel-registers.tex @@ -245,7 +245,40 @@ better use the proper more high level definers (not discussed here). \startsectionlevel[title={\LUAMETATEX\ primitives}] -{\em todo} +The fact that scanning stops at a non-number or \type {\relax} can be sort of +unpredictable which is why in \LUAMETATEX\ we also support the following variant: + +\starttyping[option=TEX] +\scratchdimen\dimexpr 10pt + 3pt \relax +\scratchdimen\dimexpr {10pt + 3pt} +\stoptyping + +At the cost of one more token braces can be used as boundaries instead of the +single \type {\relax} boundary. + +An important property of registers is that they can be accessed by a number. This +has big consequences for the implementation: they are part of the big memory +store and consume dedicated ranges. If we had only named access \TEX's memory +layout could be a bit leaner. In principle we could make the number of registers +smaller because any limit on the amount at some point can be an obstacle. It is +for that reason that we also have name-only variants: + +\starttyping[option=TEX] +\dimensiondef \MyDimenA 12pt +\integerdef \MyIntegerA 12 +\gluespecdef \MyGlueA 12pt + 3pt minus 4pt +\mugluespecdef\MyMuA 12mu + 3mu minus 4mu +\stoptyping + +These are as efficient but not accessible by number but they behave like +registers which means that you (can) use \type {\the}, \type {\advance}, \type +{\multiply} and \type {\divide} with them. \footnote {There are also the slightly +more efficient \type {\advanceby}, \type {\multiplyby} and \type {\divideby} that +don't check for the \type {by} keyword.} In case you wonder why there is no +alternative for \type {\toksdef}, there actually are multiple: they are called +macros. + +{\em todo: expressions} \stopsectionlevel diff --git a/doc/context/sources/general/manuals/luametatex/luametatex.tex b/doc/context/sources/general/manuals/luametatex/luametatex.tex index 96f700355..ba19d58e1 100644 --- a/doc/context/sources/general/manuals/luametatex/luametatex.tex +++ b/doc/context/sources/general/manuals/luametatex/luametatex.tex @@ -21,10 +21,6 @@ % clang bins are still slower .. quite inconsistent differences between 32 and % 64 bit (not all compilers are the same version) -% \loggingall -% \tracingonline \zerocount -% \tracingmacros \plusone - % \enableautoglyphscaling % saves only a few instances ... no gain .. a few pages more % \enabletexdirective{vspacing.experimental} -- cgit v1.2.3