diff options
Diffstat (limited to 'doc/context/sources/general/manuals/luametatex')
4 files changed, 105 insertions, 24 deletions
diff --git a/doc/context/sources/general/manuals/luametatex/luametatex-building.tex b/doc/context/sources/general/manuals/luametatex/luametatex-building.tex index 62b1be668..9e09bce7c 100644 --- a/doc/context/sources/general/manuals/luametatex/luametatex-building.tex +++ b/doc/context/sources/general/manuals/luametatex/luametatex-building.tex @@ -477,7 +477,7 @@ if needed. \stopsubsection -\startsubsection[title={\prm {vsplit}}] +\startsubsection[title={\prm {vsplit}, \prm {tsplit} and \prm {dsplit}}] \topicindex {splitting} @@ -490,6 +490,9 @@ a split of the given size but result has the natural dimensions then. \vsplit 123 upto 10cm % final box has its natural height \stoptyping +The two alternative primitives return a \prm {vtop} or \prm {dbox} instead of a +\prm {vbox}. All three accept the \type {attr} keyword as boxes do. + \stopsubsection \startsubsection[title={\prm {boxxoffset}, \prm {boxyoffset}, \prm {boxxmove}, \prm {boxymove}, @@ -702,16 +705,30 @@ packages. \stopsubsection -\startsubsection[title={\prm {hpack}, \prm {vpack} and \prm {tpack}}] +\startsubsection[title={\prm {dbox}}] + +This primitive is a variant on \prm {vbox} in the sense that when it gets +appended to a vertical list the height of the topmost line or rule as well as the +depth of the box are taken into account when interline space is calculated. + +\stopsubsection + + +\startsubsection[title={\prm {hpack}, \prm {vpack}, \prm {tpack} and \prm {dpack}}] \topicindex {packing} -These three primitives are the equivalents of \prm {hbox}, \prm {vbox} and -\prm {vtop} but they don't trigger the packaging related callbacks. Of course -one never know if content needs a treatment so using them should be done with -care. Apart from accepting more keywords (and therefore options) the normal -box behave the same as before. The \prm {vcenter} builder also works in text -mode. +These three primitives are the equivalents of \prm {hbox}, \prm {vbox}, \prm +{vtop} and \prm P{dbox} but they don't trigger the packaging related callbacks. +Of course one never know if content needs a treatment so using them should be +done with care. Apart from accepting more keywords (and therefore options) the +normal box behave the same as before. + +\stopsubsection + +\startsubsection[title={\prm {vcenter}}] + +The \prm {vcenter} builder also works in text mode. \stopsubsection @@ -862,6 +879,11 @@ doesn't work out as you expect. Don Knuth did a good job on the heuristics and after many decades there is no real need to change something. Consider it a playground. +The parameter \prm {ignoredepthcriterium} is set to -1000pt at startup and is a +special signal for \prm {prevdepth}. You can change the value locally for +educational purposes but best not mess with this standard value in production +code unless you want special effects. + \stopsubsection \stopsection diff --git a/doc/context/sources/general/manuals/luametatex/luametatex-enhancements.tex b/doc/context/sources/general/manuals/luametatex/luametatex-enhancements.tex index d2af933b8..15682e036 100644 --- a/doc/context/sources/general/manuals/luametatex/luametatex-enhancements.tex +++ b/doc/context/sources/general/manuals/luametatex/luametatex-enhancements.tex @@ -1231,6 +1231,39 @@ This gives \stopsubsection +\startsubsection[title={Comparing}] + +When comparing (for instance) to numbers the a \type {=}, \type {<} or \type {>} +is used. In \LUAMETATEX\ you can negate such a comparison by \type {!}, as in +\type {!=}, \type {!<} or \type {!>}. Multiple \type {!} flip that state. + +In addition to these \ASCII\ combinations, we also support some \UNICODE\ +variants. The extra comparison options are: + +\starttabulate[|l|c|c|l|] +\DB character \BC \BC \BC operation \NC \NR +\TB +\NC \type {0x2208} \NC $\Uchar"2208$ \NC \NC element of \NC \NR +\NC \type {0x2209} \NC $\Uchar"2209$ \NC \NC not element of \NC \NR +\NC \type {0x2260} \NC $\Uchar"2260$ \NC \type {!=} \NC not equal \NC \NR +\NC \type {0x2264} \NC $\Uchar"2264$ \NC \type {!>} \NC less equal \NC \NR +\NC \type {0x2265} \NC $\Uchar"2265$ \NC \type {!<} \NC greater equal \NC \NR +\NC \type {0x2270} \NC $\Uchar"2270$ \NC \NC not less equal \NC \NR +\NC \type {0x2271} \NC $\Uchar"2271$ \NC \NC not greater equal \NC \NR +\LL +\stoptabulate + +\stopsubsection + +\startsubsection[title={\prm{ifzeronum}, \prm {ifzerodim}}] + +\topicindex {conditions+numbers} +\topicindex {conditions+dimensions} + +Their name tells what they test for: zero (point) values. + +\stopsubsection + \startsubsection[title={\prm{ifcmpnum}, \prm {ifcmpdim}, \prm {ifnumval}, \prm {ifdimval}, \prm {ifchknum} and \prm {ifchkdim}}] @@ -1643,6 +1676,9 @@ So a value of~7 shows them all. In \CONTEXT\ we set this variable to~3 which gives a rather verbose log when tracing is on but in the end its'not that bad because using some of the newer programming related primitive can save tracing. +The \prm {tracinglists} variable will show some of the (intermediate) lists that +get processed. It is there mainly for development but might evolve. + Because in \LUATEX\ the saving and restoring of locally redefined macros and set variables is optimized a bit in order to prevent redundant stack usage, there will be less tracing visible. @@ -2263,7 +2299,11 @@ But in \LUAMETATEX\ we also can do this: These two are stored as efficient as a register but don't occupy a register slot. They can be set as above, need \prm {the} for serializations and are seen as -valid number or dimension when needed. +valid number or dimension when needed. They do behave like registers so one can +use for instance \prm {advance} and assign values but keep in mind that an alias +(made by for instance \prm {let} clones the value and that clone will not follow +a change in the original. For that, registers can be used because there we use an +indirect reference. Experiments with constant strings made the engine source more complex than I wanted so that features was rejected. Of course we can use the prefixes mentioned @@ -2463,6 +2503,21 @@ being \type {false}. \stopsubsection +\startsubsection[title={Calculations with \prm {advanceby}, \prm {multiplyby} and +\prm {divideby}.}] + +The \prm {advance}, \prm {multiply} and \prm {divide} primitives accept an +optional keyword \type {by}. In \CONTEXT\ we never use that feature and as a +consequence the scanner has to push back a scanned token after checking for the +\type {b} or \type {B}. These three new primitives avoid that and therefore +perform better, but that is (as usual with such enhancements) only noticeable in +demanding scenarios. + +The original three plus these new ones also operate on the \quote {constant} +integers, dimensions etc. + +\stopsubsection + \stopsection \startsection[title=Loops] diff --git a/doc/context/sources/general/manuals/luametatex/luametatex-math.tex b/doc/context/sources/general/manuals/luametatex/luametatex-math.tex index 0c9cb5c1c..0261539da 100644 --- a/doc/context/sources/general/manuals/luametatex/luametatex-math.tex +++ b/doc/context/sources/general/manuals/luametatex/luametatex-math.tex @@ -1096,19 +1096,21 @@ they obey grouping, and you can use \type {\the\Umathquad\displaystyle} if needed. There are quite some parameters that can be set and there are eight styles, which means a lot -of keying in. For that reason is is possible to set parameters groupwise +of keying in. For that reason is is possible to set parameters groupwise: -\starttabulate -\DB primitive name \BC description \NC \NR +\starttabulate[|l|c|c|c|c|c|c|c|c|] +\DB primitive name \BC D \BC D' \BC T \BC T' \BC S \BC S' \BC SS \BC SS' \NC \NR \TB -\NC \prm {alldisplaystyles} \NC set both display styles \NC \NR -\NC \prm {alltextstyles} \NC set both text styles \NC \NR -\NC \prm {allscriptstyles} \NC set both script styles \NC \NR -\NC \prm {allscriptscriptstyles} \NC set both scriptscript styles \NC \NR -\NC \prm {allmathstyles} \NC set all eight styles \NC \NR -\NC \prm {allsplitstyles} \NC set all display and text styles, and reset all script(script) styles \NC \NR -\NC \prm {alluncrampedstyles} \NC set all four uncramped styles \NC \NR -\NC \prm {allcrampedstyles} \NC set all four cramped styles \NC \NR +\NC \prm {alldisplaystyles} \NC$+$\NC$+ $\NC \NC \NC \NC \NC \NC \NC \NR +\NC \prm {alltextstyles} \NC \NC \NC$+$\NC$+ $\NC \NC \NC \NC \NC \NR +\NC \prm {allscriptstyles} \NC \NC \NC \NC \NC$+$\NC$+ $\NC \NC \NC \NR +\NC \prm {allscriptscriptstyles} \NC \NC \NC \NC \NC \NC \NC$+ $\NC$+ $\NC \NR +\NC \prm {allmathstyles} \NC$+$\NC$+ $\NC$+$\NC$+ $\NC$+$\NC$+ $\NC$+ $\NC$+ $\NC \NR +\NC \prm {allmainstyles} \NC \NC \NC \NC \NC \NC \NC \NC \NC \NR +\NC \prm {allsplitstyles} \NC$+$\NC$+ $\NC$+$\NC$+ $\NC$-$\NC$- $\NC$- $\NC$- $\NC \NR +\NC \prm {allunsplitstyles} \NC \NC \NC \NC \NC$+$\NC$+ $\NC$+ $\NC$+ $\NC \NR +\NC \prm {alluncrampedstyles} \NC$+$\NC \NC$+$\NC \NC$+$\NC \NC$+ $\NC \NC \NR +\NC \prm {allcrampedstyles} \NC \NC$+ $\NC \NC$+ $\NC \NC$+ $\NC \NC$+ $\NC \NR \LL \stoptabulate diff --git a/doc/context/sources/general/manuals/luametatex/luametatex.tex b/doc/context/sources/general/manuals/luametatex/luametatex.tex index ba19d58e1..5b9844fdb 100644 --- a/doc/context/sources/general/manuals/luametatex/luametatex.tex +++ b/doc/context/sources/general/manuals/luametatex/luametatex.tex @@ -92,13 +92,15 @@ % 290 pages, 10.8 sec, 292M lua, 99M tex, 158 instances % 290 pages, 9.5 sec, 149M lua, 35M tex, 30 instances -% with mimalloc and msvc we get a better native performance than crosscompiled - % On the 2018 Dell 7520 Precission Xeon laptop runtime for 322 pages is now exactly % 8 seconds (just below 40 pages per second), we talking July 16, 2022. % -% At the first of August 2022 the (slightly reorganized and updated) manual counted 350 pages -% and took 8.6 seconds to process (some 41 pages per second), so we're rather stable. +% At the first of August 2022 the (slightly reorganized and updated) manual counted +% 350 pages and took 8.6 seconds to process (some 41 pages per second), so we're +% rather stable. End of 2022 processing that amount of pages dropped somewhat +% (occasionally under 8.3 seconds for 356 pages with little other system load). In +% means that 43 pages per seconds is now the new normal but that might of course +% become less again as we evolve. % \enableexperiments [tabulateusesize] % \enableexperiments [tabulatesparseskips] |