summaryrefslogtreecommitdiff
path: root/doc/context/sources/general
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2018-04-16 13:13:20 +0200
committerContext Git Mirror Bot <phg42.2a@gmail.com>2018-04-16 13:13:20 +0200
commitd57683f5f67d6651f7b3353ff347ae57a409e0d4 (patch)
tree1ffc5bda90e3eedad0a35eaa8937472f5563c796 /doc/context/sources/general
parentd5d5a39dc16881d098a99b74cba9020d96be4e11 (diff)
downloadcontext-d57683f5f67d6651f7b3353ff347ae57a409e0d4.tar.gz
2018-04-16 12:13:00
Diffstat (limited to 'doc/context/sources/general')
-rw-r--r--doc/context/sources/general/manuals/luatex/luatex-enhancements.tex1
-rw-r--r--doc/context/sources/general/manuals/luatex/luatex-firstpage.tex32
-rw-r--r--doc/context/sources/general/manuals/luatex/luatex-fonts.tex17
-rw-r--r--doc/context/sources/general/manuals/luatex/luatex-introduction.tex7
-rw-r--r--doc/context/sources/general/manuals/luatex/luatex-languages.tex7
-rw-r--r--doc/context/sources/general/manuals/luatex/luatex-lua.tex1
-rw-r--r--doc/context/sources/general/manuals/luatex/luatex-math.tex70
-rw-r--r--doc/context/sources/general/manuals/luatex/luatex-modifications.tex2
-rw-r--r--doc/context/sources/general/manuals/luatex/luatex-nodes.tex58
-rw-r--r--doc/context/sources/general/manuals/luatex/luatex-preamble.tex85
-rw-r--r--doc/context/sources/general/manuals/luatex/luatex-statistics.tex13
-rw-r--r--doc/context/sources/general/manuals/luatex/luatex-style.tex75
-rw-r--r--doc/context/sources/general/manuals/luatex/luatex.tex4
13 files changed, 286 insertions, 86 deletions
diff --git a/doc/context/sources/general/manuals/luatex/luatex-enhancements.tex b/doc/context/sources/general/manuals/luatex/luatex-enhancements.tex
index afae43e45..3ac82afb5 100644
--- a/doc/context/sources/general/manuals/luatex/luatex-enhancements.tex
+++ b/doc/context/sources/general/manuals/luatex/luatex-enhancements.tex
@@ -55,6 +55,7 @@ There are three new primitives to test the version of \LUATEX:
\starttabulate[|l|pl|pl|]
\DB primitive \BC explanation \BC value \NC \NR
+\TB[small,samepage]
\NC \type {\luatexbanner} \NC the banner reported on the command line \NC \luatexbanner \NC \NR
\NC \type {\luatexversion} \NC a combination of major and minor number \NC \the\luatexversion \NC \NR
\NC \type {\luatexrevision} \NC the revision number, the current value is \NC \luatexrevision \NC \NR
diff --git a/doc/context/sources/general/manuals/luatex/luatex-firstpage.tex b/doc/context/sources/general/manuals/luatex/luatex-firstpage.tex
new file mode 100644
index 000000000..aef3902a5
--- /dev/null
+++ b/doc/context/sources/general/manuals/luatex/luatex-firstpage.tex
@@ -0,0 +1,32 @@
+\startcomponent luatex-firstpage
+
+\startstandardmakeup
+
+ \start
+ \raggedleft
+ \definedfont[Bold*default at 48pt]
+ \setupinterlinespace
+ \blue Lua\TeX \endgraf Reference \endgraf Manual \endgraf
+ \stop
+
+ \vfill
+
+ \definedfont[Bold*default at 12pt]
+
+ \starttabulate[|l|l|]
+ \NC copyright \EQ Lua\TeX\ development team \NC \NR
+ \NC more info \EQ www.luatex.org \NC \NR
+ \NC version \EQ \currentdate \doifsomething{\documentvariable{snapshot}}{(snapshot \documentvariable{snapshot})} \NC \NR
+ \stoptabulate
+
+\stopstandardmakeup
+
+\setupbackgrounds
+ [leftpage]
+ [setups=pagenumber:left]
+
+\setupbackgrounds
+ [rightpage]
+ [setups=pagenumber:right]
+
+\stopcomponent
diff --git a/doc/context/sources/general/manuals/luatex/luatex-fonts.tex b/doc/context/sources/general/manuals/luatex/luatex-fonts.tex
index 57a795b06..d3932a30b 100644
--- a/doc/context/sources/general/manuals/luatex/luatex-fonts.tex
+++ b/doc/context/sources/general/manuals/luatex/luatex-fonts.tex
@@ -23,6 +23,7 @@ The top|-|level keys in the table are as follows:
\starttabulate[|l|c|c|c|l|pl|]
\DB key \BC vf \BC tfm \BC used \BC value type \BC description \NC \NR
+\TB[small,samepage]
\NC \type{name} \NC yes \NC yes \NC yes \NC string \NC metric (file) name \NC \NR
\NC \type{area} \NC no \NC yes \NC yes \NC string \NC (directory) location, typically empty \NC \NR
\NC \type{used} \NC no \NC yes \NC yes \NC boolean \NC indicates usage (initial: false) \NC \NR
@@ -125,6 +126,7 @@ possibilities:
\starttabulate[|Tc|c|Tc|c|Tc|c|Tc|c|]
\DB \# \BC dir \BC \# \BC dir \BC \# \BC dir \BC \# \BC dir \NC \NR
+\TB[small,samepage]
\NC 0 \NC LT \NC 4 \NC RT \NC 8 \NC TT \NC 12 \NC BT \NC \NR
\NC 1 \NC LL \NC 5 \NC RL \NC 9 \NC TL \NC 13 \NC BL \NC \NR
\NC 2 \NC LB \NC 6 \NC RB \NC 10 \NC TB \NC 14 \NC BB \NC \NR
@@ -146,6 +148,7 @@ The names and their internal remapping are:
\starttabulate[|l|c|]
\DB name \BC remapping \NC \NR
+\TB[small,samepage]
\NC \type {slant} \NC 1 \NC \NR
\NC \type {space} \NC 2 \NC \NR
\NC \type {space_stretch} \NC 3 \NC \NR
@@ -195,6 +198,7 @@ The following top|-|level keys can be present inside a character hash:
\starttabulate[|l|c|c|c|l|p|]
\DB key \BC vf \BC tfm \BC used \BC type \BC description \NC\NR
+\TB[small,samepage]
\NC \type{width} \NC yes \NC yes \NC yes \NC number \NC character's width, in sp (default 0) \NC\NR
\NC \type{height} \NC no \NC yes \NC yes \NC number \NC character's height, in sp (default 0) \NC\NR
\NC \type{depth} \NC no \NC yes \NC yes \NC number \NC character's depth, in sp (default 0) \NC\NR
@@ -247,6 +251,7 @@ very simple:
\starttabulate[|l|l|p|]
\DB key \BC type \BC description \NC\NR
+\TB[small,samepage]
\NC \type{top} \NC number \NC top character index \NC\NR
\NC \type{mid} \NC number \NC middle character index \NC\NR
\NC \type{bot} \NC number \NC bottom character index \NC\NR
@@ -258,6 +263,7 @@ Each of those components is itself a hash of up to five keys:
\starttabulate[|l|l|p|]
\DB key \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{glyph} \NC number \NC The character index. Note that this is an encoding number, not a name. \NC \NR
\NC \type{extender} \NC number \NC One (1) if this part is repeatable, zero (0) otherwise. \NC \NR
\NC \type{start} \NC number \NC The maximum overlap at the starting side (in scaled points). \NC \NR
@@ -279,6 +285,7 @@ two fields:
\starttabulate[|l|l|p|]
\DB key \BC type \BC description \NC \NR
+\TB[small,samepage]
\NC \type{type} \NC number \NC the type of this ligature command, default 0 \NC \NR
\NC \type{char} \NC number \NC the character index of the resultant ligature \NC \NR
\stoptabulate
@@ -295,6 +302,7 @@ point will become the next \quote {left}.
\starttabulate[|l|c|l|l|]
\DB textual (Knuth) \BC number \BC string \BC result \NC\NR
+\TB[small,samepage]
\NC \type{l + r =: n} \NC 0 \NC \type{=:} \NC \type{|n} \NC\NR
\NC \type{l + r =:| n} \NC 1 \NC \type{=:|} \NC \type{|nr} \NC\NR
\NC \type{l + r |=: n} \NC 2 \NC \type{|=:} \NC \type{|ln} \NC\NR
@@ -321,6 +329,7 @@ inclusion mechanism will attempt to add the needed font object definitions to th
\starttabulate[|l|p|]
\DB value \BC description \NC\NR
+\TB[small,samepage]
\NC \type{real} \NC this is a base font \NC\NR
\NC \type{virtual} \NC this is a virtual font \NC\NR
\stoptabulate
@@ -364,6 +373,7 @@ encoding options.
\starttabulate[|l|p|]
\DB value \BC description \NC \NR
+\TB[small,samepage]
\NC \type{type1} \NC this is a \POSTSCRIPT\ \TYPEONE\ font \NC \NR
\NC \type{type3} \NC this is a bitmapped (\PK) font \NC \NR
\NC \type{truetype} \NC this is a \TRUETYPE\ or \TRUETYPE|-|based \OPENTYPE\ font \NC \NR
@@ -374,6 +384,7 @@ Valid values for the \type {embedding} variable are:
\starttabulate[|l|p|]
\DB value \BC description \NC \NR
+\TB[small,samepage]
\NC \type{no} \NC don't embed the font at all \NC \NR
\NC \type{subset} \NC include and atttempt to subset the font \NC \NR
\NC \type{full} \NC include this font in its entirety \NC \NR
@@ -463,6 +474,7 @@ parameters to that command. The allowed commands and their arguments are:
\starttabulate[|l|l|l|p|]
\DB command \BC arguments \BC type \BC description \NC \NR
+\TB[small,samepage]
\NC \type{font} \NC 1 \NC number \NC select a new font from the local \type {fonts} table \NC \NR
\NC \type{char} \NC 1 \NC number \NC typeset this character number from the current font,
and move right by the character's width \NC \NR
@@ -479,7 +491,9 @@ parameters to that command. The allowed commands and their arguments are:
\NC \type{pdf} \NC 2 \NC 2 strings \NC output a \PDF\ literal, the first string is one of \type {origin},
\type {page}, \type {text}, \type {font}, \type {direct} or \type {raw}; if you
have one string only \type {origin} is assumed \NC \NR
-\NC \type{lua} \NC 1 \NC string \NC execute a \LUA\ script (at \type {\latelua} time) \NC \NR
+\NC \type{lua} \NC 1 \NC string,
+ function \NC execute a \LUA\ script when the glyph is embedded; in case of a
+ function it gets the font id and character code passed \NC \NR
\NC \type{image} \NC 1 \NC image \NC output an image (the argument can be either an \type
{<image>} variable or an \type {image_spec} table) \NC \NR
\NC \type{comment} \NC any \NC any \NC the arguments of this command are ignored \NC \NR
@@ -499,6 +513,7 @@ from \PDFTEX.
\starttabulate[|l|p|]
\DB mode \BC description \NC \NR
+\TB[small,samepage]
\NC \type {origin} \NC enter page mode and set the position \NC \NR
\NC \type {page} \NC enter page mode \NC \NR
\NC \type {text} \NC enter text mode \NC \NR
diff --git a/doc/context/sources/general/manuals/luatex/luatex-introduction.tex b/doc/context/sources/general/manuals/luatex/luatex-introduction.tex
index 9c41f7875..911a30653 100644
--- a/doc/context/sources/general/manuals/luatex/luatex-introduction.tex
+++ b/doc/context/sources/general/manuals/luatex/luatex-introduction.tex
@@ -47,7 +47,7 @@ The organization of the source code is adapted so that it can glue all these
components together. We continue cleaning up side effects of the accumulated
code in \TEX\ engines (especially code that is not needed any longer).
-\startitemize[packed]
+\startitemize % [packed]
\startitem
We started out with most of \PDFTEX\ version 1.40.9. The code base was
converted to \CCODE\ and split in modules. Experimental features were
@@ -118,6 +118,11 @@ we don't want to bloat the binary and also don't want to add more hard coded
solutions. After all, with \LUA\ you can extend the core functionality. The less
dependencies, the better.
+You might find \LUA\ helpers that are not yet documented. These are considered
+experimental, although when you encounter them in a \CONTEXT\ version that has
+been around for a while you can assume that they will stay. Of course it can just
+be that we forgot to document them yet.
+
The \TEXLIVE\ version is to be considered the current stable version. Any version
between the yearly \TEXLIVE\ releases are to be considered beta and in the
repository end up as trunk releases. We have an experimental branch that we use
diff --git a/doc/context/sources/general/manuals/luatex/luatex-languages.tex b/doc/context/sources/general/manuals/luatex/luatex-languages.tex
index c469c9944..3254fbfdb 100644
--- a/doc/context/sources/general/manuals/luatex/luatex-languages.tex
+++ b/doc/context/sources/general/manuals/luatex/luatex-languages.tex
@@ -195,6 +195,7 @@ indicate a start or end. You can omit the last set from the test by setting
\starttabulate[|l|l|]
\DB value \BC behaviour \NC \NR
+\TB[small,samepage]
\NC \type{0} \NC not strict \NC \NR
\NC \type{1} \NC strict start \NC \NR
\NC \type{2} \NC strict end \NC \NR
@@ -205,6 +206,7 @@ The word start is determined as follows:
\starttabulate[|l|l|]
\DB node \BC behaviour \NC \NR
+\TB[small,samepage]
\BC boundary \NC yes when wordboundary \NC \NR
\BC hlist \NC when hyphenationbounds 1 or 3 \NC \NR
\BC vlist \NC when hyphenationbounds 1 or 3 \NC \NR
@@ -221,6 +223,7 @@ The word end is determined as follows:
\starttabulate[|l|l|]
\DB node \BC behaviour \NC \NR
+\TB[small,samepage]
\BC boundary \NC yes \NC \NR
\BC glyph \NC yes when different language \NC \NR
\BC glue \NC yes \NC \NR
@@ -490,6 +493,7 @@ resulting from an \type {\exhyphenchar}:
\starttabulate[|c|l|l|]
\DB mode \BC automatic disc \type{-} \BC explicit disc \type{\-} \NC \NR
+\TB[small,samepage]
\NC \type{0} \NC \type {\exhyphenpenalty} \NC \type {\exhyphenpenalty} \NC \NR
\NC \type{1} \NC \type {\hyphenpenalty} \NC \type {\hyphenpenalty} \NC \NR
\NC \type{2} \NC \type {\exhyphenpenalty} \NC \type {\hyphenpenalty} \NC \NR
@@ -544,6 +548,7 @@ can always be generated from the values. Here are a few examples:
\starttabulate[|l|l|l|]
\DB value \BC implied key (input) \BC effect \NC\NR
+\TB[small,samepage]
\NC \type {ta-ble} \NC table \NC \type {ta\-ble} ($=$ \type {ta\discretionary{-}{}{}ble}) \NC\NR
\NC \type {ba{k-}{}{c}ken} \NC backen \NC \type {ba\discretionary{k-}{}{c}ken} \NC\NR
\stoptabulate
@@ -776,6 +781,7 @@ Here is that nested solution again, in a different representation:
\starttabulate[|l|c|c|c|c|c|c|]
\DB \BC pre \BC \BC post \BC \BC replace \BC \NC \NR
+\TB[small,samepage]
\NC topdisc \NC \type {f-} \NC (1) \NC \NC sub 1 \NC \NC sub 2 \NC \NR
\NC sub 1 \NC \type {f-} \NC (2) \NC \type {i} \NC (3) \NC \type {<fi>} \NC (4) \NC \NR
\NC sub 2 \NC \type {<ff>-} \NC (5) \NC \type {i} \NC (6) \NC \type {<ffi>} \NC (7) \NC \NR
@@ -812,6 +818,7 @@ pair is as follows:
\starttabulate[|l|c|c|]
\DB field \BC description \NC \NC \NR
+\TB[small,samepage]
\NC \type {disc1.pre} \NC \type {f-} \NC (1) \NC \NR
\NC \type {disc1.post} \NC \type {<fi>} \NC (4) \NC \NR
\NC \type {disc1.replace} \NC \type {<ffi>} \NC (7) \NC \NR
diff --git a/doc/context/sources/general/manuals/luatex/luatex-lua.tex b/doc/context/sources/general/manuals/luatex/luatex-lua.tex
index 0c9119240..64dcb42a4 100644
--- a/doc/context/sources/general/manuals/luatex/luatex-lua.tex
+++ b/doc/context/sources/general/manuals/luatex/luatex-lua.tex
@@ -146,6 +146,7 @@ in order.
\starttabulate[|l|l|]
\DB library \BC functions \NC \NR
+ \TB[small,samepage]
\NC \type {os} \NC \type {execute} \type {exec} \type {spawn} \type {setenv} \type {rename} \type {remove} \type {tmpdir} \NC \NR
\NC \type {io} \NC \type {popen} \type {output} \type {tmpfile} \NC \NR
\NC \type {lfs} \NC \type {rmdir} \type {mkdir} \type {chdir} \type {lock} \type {touch} \NC \NR
diff --git a/doc/context/sources/general/manuals/luatex/luatex-math.tex b/doc/context/sources/general/manuals/luatex/luatex-math.tex
index a0e3936c7..6b037f735 100644
--- a/doc/context/sources/general/manuals/luatex/luatex-math.tex
+++ b/doc/context/sources/general/manuals/luatex/luatex-math.tex
@@ -194,18 +194,19 @@ The following new primitives are compatible with \XETEX:
% somewhat fuzzy:
\starttabulate[|l|l|r|c|l|r|]
-\DB primitive \BC min \BC max \BC \kern 2em \BC min \BC max \NC \NR
-\NC \type {\Umathchardef} \NC 0+0+0 \NC 7+FF+10FFFF\rlap{\high{1}} \NC \NC \NC \NC \NR
-\NC \type {\Umathcharnumdef}\rlap{\high{5}} \NC -80000000 \NC 7FFFFFFF\rlap{\high{3}} \NC \NC \NC \NC \NR
-\NC \type {\Umathcode} \NC 0 \NC 10FFFF \NC = \NC 0+0+0 \NC 7+FF+10FFFF\rlap{\high{1}} \NC \NR
-\NC \type {\Udelcode} \NC 0 \NC 10FFFF \NC = \NC 0+0 \NC FF+10FFFF\rlap{\high{2}} \NC \NR
-\NC \type {\Umathchar} \NC 0+0+0 \NC 7+FF+10FFFF \NC \NC \NC \NC \NR
-\NC \type {\Umathaccent} \NC 0+0+0 \NC 7+FF+10FFFF\rlap{\high{2,4}} \NC \NC \NC \NC \NR
-\NC \type {\Udelimiter} \NC 0+0+0 \NC 7+FF+10FFFF\rlap{\high{2}} \NC \NC \NC \NC \NR
-\NC \type {\Uradical} \NC 0+0 \NC FF+10FFFF\rlap{\high{2}} \NC \NC \NC \NC \NR
-\NC \type {\Umathcharnum} \NC -80000000 \NC 7FFFFFFF\rlap{\high{3}} \NC \NC \NC \NC \NR
-\NC \type {\Umathcodenum} \NC 0 \NC 10FFFF \NC = \NC -80000000 \NC 7FFFFFFF\rlap{\high{3}} \NC \NR
-\NC \type {\Udelcodenum} \NC 0 \NC 10FFFF \NC = \NC -80000000 \NC 7FFFFFFF\rlap{\high{3}} \NC \NR
+\DB primitive \BC min \BC max \BC \kern 2em \BC min \BC max \NC \NR
+\TB[small,samepage]
+\NC \type {\Umathchardef} \NC 0+0+0 \NC 7+FF+10FFFF \NC \NC \NC \NC \NR
+\NC \type {\Umathcharnumdef}\rlap{\high{5}} \NC -80000000 \NC 7FFFFFFF \NC \NC \NC \NC \NR
+\NC \type {\Umathcode} \NC 0 \NC 10FFFF \NC = \NC 0+0+0 \NC 7+FF+10FFFF \NC \NR
+\NC \type {\Udelcode} \NC 0 \NC 10FFFF \NC = \NC 0+0 \NC FF+10FFFF \NC \NR
+\NC \type {\Umathchar} \NC 0+0+0 \NC 7+FF+10FFFF \NC \NC \NC \NC \NR
+\NC \type {\Umathaccent} \NC 0+0+0 \NC 7+FF+10FFFF \NC \NC \NC \NC \NR
+\NC \type {\Udelimiter} \NC 0+0+0 \NC 7+FF+10FFFF \NC \NC \NC \NC \NR
+\NC \type {\Uradical} \NC 0+0 \NC FF+10FFFF \NC \NC \NC \NC \NR
+\NC \type {\Umathcharnum} \NC -80000000 \NC 7FFFFFFF \NC \NC \NC \NC \NR
+\NC \type {\Umathcodenum} \NC 0 \NC 10FFFF \NC = \NC -80000000 \NC 7FFFFFFF \NC \NR
+\NC \type {\Udelcodenum} \NC 0 \NC 10FFFF \NC = \NC -80000000 \NC 7FFFFFFF \NC \NR
\stoptabulate
Specifications typically look like:
@@ -215,29 +216,27 @@ Specifications typically look like:
\Umathcode 123="1"0"789
\stoptyping
-Note 1: The new primitives that deal with delimiter|-|style objects do not set up a
+The new primitives that deal with delimiter|-|style objects do not set up a
\quote {large family}. Selecting a suitable size for display purposes is expected
to be dealt with by the font via the \type {\Umathoperatorsize} parameter (more
information can be found in a following section).
-Note 2: For these three primitives, all information is packed into a single
-signed integer. For the first two (\type {\Umathcharnum} and \type
-{\Umathcodenum}), the lowest 21 bits are the character code, the 3 bits above
-that represent the math class, and the family data is kept in the topmost bits
-(This means that the values for math families 128--255 are actually negative).
-For \type {\Udelcodenum} there is no math class. The math family information is
-stored in the bits directly on top of the character code. Using these three
-commands is not as natural as using the two- and three|-|value commands, so
-unless you know exactly what you are doing and absolutely require the speedup
-resulting from the faster input scanning, it is better to use the verbose
-commands instead.
-
-Note 3: The \type {\Umathaccent} command accepts optional keywords to control
-various details regarding math accents. See \in {section} [mathacc] below for
-details.
-
-New primitives that exist in \LUATEX\ only (all of these will be explained
-in following sections):
+For some of these primitives, all information is packed into a single signed
+integer. For the first two (\type {\Umathcharnum} and \type {\Umathcodenum}), the
+lowest 21 bits are the character code, the 3 bits above that represent the math
+class, and the family data is kept in the topmost bits This means that the values
+for math families 128--255 are actually negative. For \type {\Udelcodenum} there
+is no math class. The math family information is stored in the bits directly on
+top of the character code. Using these three commands is not as natural as using
+the two- and three|-|value commands, so unless you know exactly what you are
+doing and absolutely require the speedup resulting from the faster input
+scanning, it is better to use the verbose commands instead.
+
+The \type {\Umathaccent} command accepts optional keywords to control various
+details regarding math accents. See \in {section} [mathacc] below for details.
+
+There are more new primitives and all of these will be explained in following
+sections:
\starttabulate[|l|l|]
\DB primitive \BC value range (in hex) \NC \NR
@@ -295,6 +294,8 @@ we get this:
\startbuffer[demo]
\starttabulate
+\DB style \BC example \NC \NR
+\TB[small,samepage]
\NC default \NC $b_{x=xx}^{x=xx}$ \NC \NR
\NC script \NC $b_{\scriptstyle x=xx}^{\scriptstyle x=xx}$ \NC \NR
\NC crampedscript \NC $b_{\crampedscriptstyle x=xx}^{\crampedscriptstyle x=xx}$ \NC \NR
@@ -446,13 +447,12 @@ Besides the parameters below, \LUATEX\ also looks at the \quote {space} font
dimension parameter. For math fonts, this should be set to zero.
\def\MathLine#1#2#3#4#5%
- {\TB
- \NC \llap{\high{\tx #2\enspace}}\ttbf \string #1 \NC #5 \NC \NR
- \NC \tx #3 \NC #4 \NC \NR}
+ {\TB[small,samepage]
+ \NC \llap{\high{\tx #2\enspace}}\ttbf \string #1 \NC \tt #5 \NC \NR
+ \NC \tx #3 \NC \tt #4 \NC \NR}
\starttabulate[|l|l|]
\DB variable / style \BC tfm / opentype \NC \NR
-\TB[small,samepage]
\MathLine{\Umathaxis} {} {} {AxisHeight} {axis_height}
\MathLine{\Umathoperatorsize} {6} {D, D'} {DisplayOperatorMinHeight} {\emdash}
\MathLine{\Umathfractiondelsize} {9} {D, D'} {FractionDelimiterDisplayStyleSize} {delim1}
diff --git a/doc/context/sources/general/manuals/luatex/luatex-modifications.tex b/doc/context/sources/general/manuals/luatex/luatex-modifications.tex
index 37d557926..16d5477fd 100644
--- a/doc/context/sources/general/manuals/luatex/luatex-modifications.tex
+++ b/doc/context/sources/general/manuals/luatex/luatex-modifications.tex
@@ -322,6 +322,7 @@ and images are also common. For that reason we also changed the names:
\starttabulate[|l|l|]
\DB new name \BC old name \NC \NR
+\TB[small,samepage]
\NC \type {\saveboxresource} \NC \type {\pdfxform} \NC \NR
\NC \type {\saveimageresource} \NC \type {\pdfximage} \NC \NR
\NC \type {\useboxresource} \NC \type {\pdfrefxform} \NC \NR
@@ -1092,6 +1093,7 @@ by \type {\hangindent} and \type {\parshape}. This is controlled by a new parame
\starttabulate[|c|c|c|]
\DB value \BC \type {\hangindent} \BC \type {\parshape} \NC \NR
+\TB[small,samepage]
\BC \type{0} \NC normal \NC normal \NC \NR
\BC \type{1} \NC mirrored \NC normal \NC \NR
\BC \type{2} \NC normal \NC mirrored \NC \NR
diff --git a/doc/context/sources/general/manuals/luatex/luatex-nodes.tex b/doc/context/sources/general/manuals/luatex/luatex-nodes.tex
index 065342b9b..e0d93d7c3 100644
--- a/doc/context/sources/general/manuals/luatex/luatex-nodes.tex
+++ b/doc/context/sources/general/manuals/luatex/luatex-nodes.tex
@@ -56,6 +56,7 @@ items. It has only one user-visible field:
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{next} \NC node \NC pointer to the first attribute \NC \NR
\stoptabulate
@@ -68,6 +69,7 @@ defined \quote {attribute} item, whose \type {next} will point to the second
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{next} \NC node \NC pointer to the next attribute \NC \NR
\NC \type{number} \NC number \NC the attribute type id \NC \NR
\NC \type{value} \NC number \NC the attribute value \NC \NR
@@ -84,6 +86,7 @@ present in all nodes regardless of their type, these are:
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{next} \NC node \NC the next node in a list, or nil \NC \NR
\NC \type{id} \NC number \NC the node's type (\type {id}) number \NC \NR
\NC \type{subtype} \NC number \NC the node \type {subtype} identifier \NC \NR
@@ -106,6 +109,7 @@ internal magic uses a leading \type {temp} nodes to temporarily store a state.
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{subtype} \NC number \NC \showsubtypes{list} \NC \NR
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{width} \NC number \NC the width of the box \NC \NR
@@ -140,6 +144,7 @@ intercepted by a callback.
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{subtype} \NC number \NC \showsubtypes{rule} \NC \NR
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{width} \NC number \NC the width of the rule where the special value $-1073741824$ is used for \quote {running} glue dimensions \NC \NR
@@ -153,6 +158,7 @@ intercepted by a callback.
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{subtype} \NC number \NC the insertion class \NC \NR
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{cost} \NC number \NC the penalty associated with this insert \NC \NR
@@ -174,6 +180,7 @@ names and both names are equally sensible).
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{subtype} \NC number \NC unused \NC \NR
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{class} \NC number \NC the mark class \NC \NR
@@ -184,6 +191,7 @@ names and both names are equally sensible).
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{subtype} \NC number \NC \showsubtypes{adjust} \NC \NR
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{head/list} \NC node \NC adjusted material \NC \NR
@@ -196,6 +204,7 @@ its internal link structure is correct, otherwise an error may be result.
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{subtype} \NC number \NC \showsubtypes{disc} \NC \NR
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{pre} \NC node \NC pointer to the pre|-|break text \NC \NR
@@ -231,6 +240,7 @@ freeing it again might crash \LUATEX).
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{subtype} \NC number \NC \showsubtypes{math} \NC \NR
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{surround} \NC number \NC width of the \type {\mathsurround} kern \NC \NR
@@ -248,6 +258,7 @@ called a \type {glue_spec}, and it has the following accessible fields:
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{width} \NC number \NC the horizontal or vertical displacement \NC \NR
\NC \type{stretch} \NC number \NC extra (positive) displacement or stretch amount \NC \NR
\NC \type{stretch_order} \NC number \NC factor applied to stretch amount \NC \NR
@@ -281,6 +292,7 @@ is only a few memory words larger than a spec).
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{subtype} \NC number \NC \showsubtypes{glue} \NC \NR
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{leader} \NC node \NC pointer to a box or rule for leaders \NC \NR
@@ -298,6 +310,7 @@ a \type {userskip} with subtype zero).
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{subtype} \NC number \NC \showsubtypes{kern} \NC \NR
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{kern} \NC number \NC fixed horizontal or vertical advance \NC \NR
@@ -307,6 +320,7 @@ a \type {userskip} with subtype zero).
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{subtype} \NC number \NC \showsubtypes{penalty} \NC \NR
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{penalty} \NC number \NC the penalty value \NC \NR
@@ -320,6 +334,7 @@ accumulation of \type {club}, \type{widow} and other relevant penalties.
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{subtype} \NC number \NC bitfield \NC \NR
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{char} \NC number \NC the chatacter index in the font \NC \NR
@@ -347,6 +362,7 @@ bits for the \type {subtype} field are:
\starttabulate[|c|l|]
\DB bit \BC meaning \NC \NR
+\TB[small,samepage]
\NC 0 \NC character \NC \NR
\NC 1 \NC ligature \NC \NR
\NC 2 \NC ghost \NC \NR
@@ -381,6 +397,7 @@ and font id and returns true when a glyph or disc node references that font.
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{subtype} \NC number \NC \showsubtypes{boundary} \NC \NR
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{value} \NC number \NC values 0--255 are reserved \NC \NR
@@ -393,6 +410,7 @@ This node relates to the \type {\noboundary}, \type {\boundary}, \type
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{pen_inter} \NC number \NC local interline penalty (from \type {\localinterlinepenalty}) \NC \NR
\NC \type{pen_broken} \NC number \NC local broken penalty (from \type {\localbrokenpenalty}) \NC \NR
@@ -411,6 +429,7 @@ error may be result.
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{dir} \NC string \NC the direction (but see below) \NC \NR
\NC \type{level} \NC number \NC nesting level of this direction whatsit \NC \NR
@@ -445,6 +464,7 @@ or popped from the direction stack.
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{subtype} \NC number \NC \showsubtypes{margin_kern} \NC \NR
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{width} \NC number \NC the advance of the kern \NC \NR
@@ -470,6 +490,7 @@ The \type {next} and \type {prev} fields for these subnodes are unused.
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{char} \NC number \NC the character index \NC \NR
\NC \type{fam} \NC number \NC the family number \NC \NR
@@ -484,6 +505,7 @@ conversion (its sole function is to suppress a following italic correction).
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{head/list} \NC node \NC list of nodes \NC \NR
\stoptabulate
@@ -504,6 +526,7 @@ before, the \type {next} and \type {prev} fields are unused.
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{small_char} \NC number \NC character index of base character \NC \NR
\NC \type{small_fam} \NC number \NC family number of base character \NC \NR
@@ -526,6 +549,7 @@ Some noads have an option field. The values in this bitset are common:
\starttabulate[|l|r|]
\DB meaning \BC bits \NC \NR
+\TB[small,samepage]
\NC set \NC \type{0x08} \NC \NR
\NC internal \NC \type{0x00} + \type{0x08} \NC \NR
\NC internal \NC \type{0x01} + \type{0x08} \NC \NR
@@ -544,6 +568,7 @@ Some noads have an option field. The values in this bitset are common:
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{subtype} \NC number \NC \showsubtypes{noad} \NC \NR
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{nucleus} \NC kernel node \NC base \NC \NR
@@ -556,6 +581,7 @@ Some noads have an option field. The values in this bitset are common:
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{subtype} \NC number \NC \showsubtypes{accent} \NC \NR
\NC \type{nucleus} \NC kernel node \NC base \NC \NR
\NC \type{sub} \NC kernel node \NC subscript \NC \NR
@@ -569,6 +595,7 @@ Some noads have an option field. The values in this bitset are common:
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{style} \NC string \NC contains the style \NC \NR
\stoptabulate
@@ -580,6 +607,7 @@ be prefixed by \type {cramped}.
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{display} \NC node \NC list of display size alternatives \NC \NR
\NC \type{text} \NC node \NC list of text size alternatives \NC \NR
@@ -595,6 +623,7 @@ structure is correct, otherwise an error may be result.
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{subtype} \NC number \NC \showsubtypes{radical} \NC \NR
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{nucleus} \NC kernel node \NC base \NC \NR
@@ -614,6 +643,7 @@ link structure is correct, otherwise an error may be result.
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{width} \NC number \NC (optional) width of the fraction \NC \NR
\NC \type{num} \NC kernel node \NC numerator \NC \NR
@@ -632,6 +662,7 @@ may be result.
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{subtype} \NC number \NC \showsubtypes{fence} \NC \NR
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{delim} \NC delimiter node \NC delimiter specification \NC \NR
@@ -665,6 +696,7 @@ Whatsit nodes come in many subtypes that you can ask for by running
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{stream} \NC number \NC \TEX's stream id number \NC \NR
\NC \type{name} \NC string \NC file name \NC \NR
@@ -676,6 +708,7 @@ Whatsit nodes come in many subtypes that you can ask for by running
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{stream} \NC number \NC \TEX's stream id number \NC \NR
\NC \type{data} \NC table \NC a table representing the token list to be written \NC \NR
@@ -685,6 +718,7 @@ Whatsit nodes come in many subtypes that you can ask for by running
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{stream} \NC number \NC \TEX's stream id number \NC \NR
\stoptabulate
@@ -697,6 +731,7 @@ will simply step over such whatsits without ever looking at the contents.
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{user_id} \NC number \NC id number \NC \NR
\NC \type{type} \NC number \NC type of the value \NC \NR
@@ -712,6 +747,7 @@ instead of \type {108}).
\starttabulate[|r|c|p|]
\DB value \BC meaning \BC explanation \NC \NR
+\TB[small,samepage]
\NC 97 \NC a \NC list of attributes (a node list) \NC \NR
\NC 100 \NC d \NC a \LUA\ number \NC \NR
\NC 108 \NC l \NC a \LUA\ value (table, number, boolean, etc) \NC \NR
@@ -724,6 +760,7 @@ instead of \type {108}).
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\stoptabulate
@@ -731,6 +768,7 @@ instead of \type {108}).
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{data} \NC string \NC data to execute \NC \NR
\NC \type{string} \NC string \NC data to execute \NC \NR
@@ -747,6 +785,7 @@ The difference between \type {data} and \type {string} is that on assignment, th
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{data} \NC string \NC the \type {\special} information \NC \NR
\stoptabulate
@@ -757,6 +796,7 @@ The difference between \type {data} and \type {string} is that on assignment, th
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{mode} \NC number \NC the \quote {mode} setting of this literal \NC \NR
\NC \type{data} \NC string \NC the \type {\pdfliteral} information \NC \NR
@@ -766,6 +806,7 @@ Possible mode values are:
\starttabulate[|l|p|]
\DB value \BC keyword \NC \NR
+\TB[small,samepage]
\NC 0 \NC \type{origin} \NC \NR
\NC 1 \NC \type{page} \NC \NR
\NC 2 \NC \type{direct} \NC \NR
@@ -781,6 +822,7 @@ what you generate.
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{objnum} \NC number \NC the referenced \PDF\ object number \NC \NR
\stoptabulate
@@ -789,6 +831,7 @@ what you generate.
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{width} \NC number \NC the width (not used in calculations) \NC \NR
\NC \type{height} \NC number \NC the height (not used in calculations) \NC \NR
@@ -801,6 +844,7 @@ what you generate.
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{width} \NC number \NC the width (not used in calculations) \NC \NR
\NC \type{height} \NC number \NC the height (not used in calculations) \NC \NR
@@ -814,6 +858,7 @@ what you generate.
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{attr} \NC node \NC \NC \NR
\stoptabulate
@@ -821,6 +866,7 @@ what you generate.
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{width} \NC number \NC the width (not used in calculations) \NC \NR
\NC \type{height} \NC number \NC the height (not used in calculations) \NC \NR
@@ -840,6 +886,7 @@ objects.
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{action_type} \NC number \NC the kind of action involved \NC \NR
\NC \type{action_id} \NC number or string \NC token list reference or string \NC \NR
\NC \type{named_id} \NC number \NC the index of the destination \NC \NR
@@ -852,6 +899,7 @@ Valid action types are:
\starttabulate[|l|l|]
\DB value \BC meaning \NC \NR
+\TB[small,samepage]
\NC 0 \NC \type{page} \NC \NR
\NC 1 \NC \type{goto} \NC \NR
\NC 2 \NC \type{thread} \NC \NR
@@ -862,6 +910,7 @@ Valid window types are:
\starttabulate[|l|l|]
\DB value \BC meaning \NC \NR
+\TB[small,samepage]
\NC 0 \NC \type{notset} \NC \NR
\NC 1 \NC \type{new} \NC \NR
\NC 2 \NC \type{nonew} \NC \NR
@@ -871,6 +920,7 @@ Valid window types are:
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{width} \NC number \NC the width (not used in calculations) \NC \NR
\NC \type{height} \NC number \NC the height (not used in calculations) \NC \NR
@@ -885,6 +935,7 @@ Valid window types are:
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{width} \NC number \NC the width (not used in calculations) \NC \NR
\NC \type{height} \NC number \NC the height (not used in calculations) \NC \NR
@@ -899,6 +950,7 @@ Valid window types are:
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{attr} \NC node \NC \NC \NR
\stoptabulate
@@ -906,6 +958,7 @@ Valid window types are:
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{stack} \NC number \NC colorstack id number \NC \NR
\NC \type{command} \NC number \NC command to execute \NC \NR
@@ -916,6 +969,7 @@ Valid window types are:
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\NC \type{data} \NC string \NC data \NC \NR
\stoptabulate
@@ -924,6 +978,7 @@ Valid window types are:
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\stoptabulate
@@ -931,6 +986,7 @@ Valid window types are:
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{attr} \NC node \NC list of attributes \NC \NR
\stoptabulate
@@ -1875,6 +1931,7 @@ Some accessors are used frequently and for these we provide more efficient helpe
\starttabulate[|l|p|]
\DB function \BC explanation \NC \NR
+\TB[small,samepage]
\NC \type{getnext} \NC parsing nodelist always involves this one \NC \NR
\NC \type{getprev} \NC used less but is logical companion to \type {getnext} \NC \NR
\NC \type{getboth} \NC returns the next and prev pointer of a node \NC \NR
@@ -1921,6 +1978,7 @@ consistency. You can of course always define additional accessor using \type
\starttabulate[|l|c|c|]
\DB function \BC node \BC direct \NC \NR
+\TB[small,samepage]
%NC \type {do_ligature_n} \NC \yes \NC \yes \NC \NR % was never documented and experimental
\NC \type {check_discretionaries}\NC \yes \NC \yes \NC \NR
\NC \type {copy_list} \NC \yes \NC \yes \NC \NR
diff --git a/doc/context/sources/general/manuals/luatex/luatex-preamble.tex b/doc/context/sources/general/manuals/luatex/luatex-preamble.tex
new file mode 100644
index 000000000..036dd49fc
--- /dev/null
+++ b/doc/context/sources/general/manuals/luatex/luatex-preamble.tex
@@ -0,0 +1,85 @@
+% language=uk
+
+\environment luatex-style
+
+\startcomponent luatex-preamble
+
+\startchapter[reference=preamble,title={Preamble}]
+
+This is a reference manual, not a tutorial. This means that we discuss changes
+relative to traditonal \TEX\ and also present new functionality. As a consequence
+we will refer to concepts that we assume to be known or that might be explained
+later.
+
+The average user doesn't need to know much about what is in this manual. For
+instance fonts and languages are normally dealt with in the macro package that
+you use. Messing around with node lists is also often not really needed at the
+user level. If you do mess around, you'd better know what you're dealing with.
+Reading \quotation {The \TEX\ Book} by Donald Knuth is a good investment of time
+then also because it's good to know where it all started. A more summarizing
+overview is given by \quotation {\TEX\ by Topic} by Victor Eijkhout. You might
+want to peek in \quotation {The \ETEX\ manual} and documentation about \PDFTEX.
+
+But \unknown\ if you're here because of \LUA, then all you need to know is that
+you can call it from within a run. The macro package that you use probably will
+provide a few wrapper mechanisms but the basic command that does the job is:
+
+\starttyping
+\directlua{tex.print("Hi there")}
+\stoptyping
+
+You can put code between curly braces but if it's a lot you can also put it in a
+file and load that file with the usual \LUA\ commands.
+
+If you still decide to read on, then it's good to know what nodes are, so we do a
+quick introduction here. If you input this text:
+
+\starttyping
+Hi There
+\stoptyping
+
+eventually we will get a linked lists of nodes, which in \ASCII\ art looks like:
+
+\starttyping
+H <=> i <=> [glue] <=> T <=> h <=> e <=> r <=> e
+\stoptyping
+
+When we have a paragraph, we actually get something:
+
+\starttyping
+[localpar] <=> H <=> i <=> [glue] <=> T <=> h <=> e <=> r <=> e <=> [glue]
+\stoptyping
+
+Each character becomes a so called glyph node, a record with properties like the
+current font, the character code and the current language. Spaces become glue
+nodes. There are many node types that we will discuss later. Each node points
+back to a previous node or next node, given that these exist.
+
+It's also good to know beforehand that \TEX\ is basically centered around
+creating paragraphs and pages. The par builder takes a list and breaks it into
+lines. We turn horizontal material into vertical. Lines are so called boxes and
+can be separated by glue, penalties and more. The page builder accumulates lines
+and when feasible triggers an output routine that will take the list so far.
+Constructing the actual page is not part of \TEX\ but done using primitives that
+permit manipulation of boxes. The result is handled back to \TEX\ and flushed to
+a (often \PDF) file.
+
+The \LUATEX\ engine provides hooks for \LUA\ code at nearly every reasonable
+point in the process: collecting content, hyphenating, applying font features,
+breaking into lines, etc. This means that you can overload \TEX's natural
+behaviour, which still is the benchmark. When we refer to \quote {callbacks} we
+means these hooks.
+
+Where plain \TEX\ is basically a basic framework for writing a specific style,
+macro packages like \CONTEXT\ and \LATEX\ provide the user a whole lot of
+additional tools to make documents look good. They hide the dirty details of font
+management, language demands, turning structure into typeset results, wrapping
+pages, including images, and so on. You should be aware of the fact that when you
+hook in your own code to manipulate lists, this can interfere with the macro
+package that you use.
+
+For now this should be enough to enable you to understand the next chapters.
+
+\stopchapter
+
+\stopcomponent
diff --git a/doc/context/sources/general/manuals/luatex/luatex-statistics.tex b/doc/context/sources/general/manuals/luatex/luatex-statistics.tex
new file mode 100644
index 000000000..99941a8ab
--- /dev/null
+++ b/doc/context/sources/general/manuals/luatex/luatex-statistics.tex
@@ -0,0 +1,13 @@
+% language=uk
+
+\environment luatex-style
+
+\startcomponent luatex-statistics
+
+\startchapter[title={Statistics}]
+
+ \showfontusage
+
+\stopchapter
+
+\stopcomponent
diff --git a/doc/context/sources/general/manuals/luatex/luatex-style.tex b/doc/context/sources/general/manuals/luatex/luatex-style.tex
index a7aae444a..eedf05aab 100644
--- a/doc/context/sources/general/manuals/luatex/luatex-style.tex
+++ b/doc/context/sources/general/manuals/luatex/luatex-style.tex
@@ -2,6 +2,10 @@
% todo: use \useMPlibrary[lua]
+\enabletrackers[fonts.usage]
+
+\usemodule[fonts-statistics]
+
\setuplayout
[height=middle,
width=middle,
@@ -102,51 +106,13 @@
\definecolor[keptcolor] [b=.5]
\definecolor[othercolor][r=.5,g=.5]
-\usebodyfont[lucidaot]
-\usebodyfont[pagella]
-\usebodyfont[cambria]
-%usebodyfont[dejavu]
-\usebodyfont[modern] % we need this in examples so we predefine
-
-% \doifmodeelse {atpragma} {
-%
-% % \setupbodyfont
-% % [lucidaot,10pt]
-%
-% \setupbodyfont
-% [dejavu,10pt]
-%
-% \setuphead [chapter] [style=\bfd]
-% \setuphead [section] [style=\bfb]
-% \setuphead [subsection] [style=\bfa]
-% \setuphead [subsubsection][style=\bf]
-%
-% } {
-%
-% \definetypeface[mainfacenormal] [ss][sans] [iwona] [default]
-% \definetypeface[mainfacenormal] [rm][serif][palatino] [default]
-% \definetypeface[mainfacenormal] [tt][mono] [modern] [default][rscale=1.1]
-% \definetypeface[mainfacenormal] [mm][math] [iwona] [default]
-%
-% \definetypeface[mainfacemedium] [ss][sans] [iwona-medium][default]
-% \definetypeface[mainfacemedium] [rm][serif][palatino] [default]
-% \definetypeface[mainfacemedium] [tt][mono] [modern] [default][rscale=1.1]
-% \definetypeface[mainfacemedium] [mm][math] [iwona-medium][default]
-%
-% \setupbodyfont
-% [mainfacenormal,10pt]
-%
-% \setuphead [chapter] [style=\mainfacemedium\bfd]
-% \setuphead [section] [style=\mainfacemedium\bfb]
-% \setuphead [subsection] [style=\mainfacemedium\bfa]
-% \setuphead [subsubsection][style=\mainfacemedium\bf]
-%
-% }
-
-\writestatus{luatex manual}{we assume that dejavu math is available}
-
-\setupbodyfont % assumes dejavu-math
- [dejavu,10pt]
+\writestatus{luatex manual}{}
+\writestatus{luatex manual}{defining lucodaot} \usebodyfont [lucidaot]
+\writestatus{luatex manual}{defining pagella} \usebodyfont [pagella]
+\writestatus{luatex manual}{defining cambria} \usebodyfont [cambria]
+\writestatus{luatex manual}{defining modern} \usebodyfont [modern]
+\writestatus{luatex manual}{defining dejavu} \setupbodyfont[dejavu,10pt]
+\writestatus{luatex manual}{}
\setuphead [chapter] [align={flushleft,broad},style=\bfd]
\setuphead [section] [align={flushleft,broad},style=\bfb]
@@ -373,9 +339,14 @@
\setuplist
[chapter]
[style=bold,
+ before={\testpage[4]\blank},
color=keptcolor]
\setuplist
+ [section]
+ [before={\testpage[3]}]
+
+\setuplist
[subsection,subsubsection]
[margin=3em,
width=5em]
@@ -395,10 +366,16 @@
% \setupinteractionscreen
% [option=bookmark]
-\normalexpanded{\definemeasure[spinewidth] [0pt]}
-\normalexpanded{\definemeasure[paperwidth] [\the\paperwidth ]}
-\normalexpanded{\definemeasure[paperheight][\the\paperheight]}
-\normalexpanded{\definemeasure[spreadwidth][\measure{paperwidth}]}
+\startbuffer[stylecalculations]
+
+ \normalexpanded{\definemeasure[spinewidth] [0pt]}
+ \normalexpanded{\definemeasure[paperwidth] [\the\paperwidth ]}
+ \normalexpanded{\definemeasure[paperheight][\the\paperheight]}
+ \normalexpanded{\definemeasure[spreadwidth][\measure{paperwidth}]}
+
+\stopbuffer
+
+\getbuffer[stylecalculations]
\dontcomplain
diff --git a/doc/context/sources/general/manuals/luatex/luatex.tex b/doc/context/sources/general/manuals/luatex/luatex.tex
index 96ab1460e..29dfdbb8b 100644
--- a/doc/context/sources/general/manuals/luatex/luatex.tex
+++ b/doc/context/sources/general/manuals/luatex/luatex.tex
@@ -80,4 +80,8 @@
\component luatex-backend
\stopbodymatter
+\startbackmatter
+ \component luatex-statistics
+\stopbackmatter
+
\stopdocument