summaryrefslogtreecommitdiff
path: root/tex/context/base/syst-ini.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/syst-ini.mkiv')
-rw-r--r--tex/context/base/syst-ini.mkiv338
1 files changed, 144 insertions, 194 deletions
diff --git a/tex/context/base/syst-ini.mkiv b/tex/context/base/syst-ini.mkiv
index 1c87c4ed4..983bedc52 100644
--- a/tex/context/base/syst-ini.mkiv
+++ b/tex/context/base/syst-ini.mkiv
@@ -11,14 +11,16 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-%D We used to load plain \TEX\ in a special way, but redefining a couple of
-%D primitives so that for instance font loading was ignored. For those interested,
-%D this loader is found in \type {syst-tex.tex}. Some of the comment's are Don
-%D Knuths and more of it can be found in the plain \TEX\ format.
-%D
-%D Characters can have special states, that can be triggered by setting their
-%D category coded. Some are preset, others are to be set as soon as possible,
-%D otherwise we cannot define any useful macros.
+%D We used to load plain \TEX\ in a special way, but redefining
+%D a couple of primitives so that for instance font loading was
+%D ignored. For those interested, this loader is found in
+%D \type {syst-tex.tex}. Some of the comment's are Don Knuth's
+%D and more of it can be found in the plain \TEX\ format.
+
+%D Characters can have special states, that can be triggered
+%D by setting their category coded. Some are preset, others
+%D are to be set as soon as possible, otherwise we cannot
+%D define any useful macros.
%catcode`\^^@ = 9 % ascii null is ignored
%catcode`\\ = 0 % backslash is TeX escape character
@@ -56,7 +58,8 @@
\catcode`\^^Z=9
-%D It makes sense to know what engine we're running so let's try to deduce it.
+%D It makes sense to know what engine we're running so let's
+%D try to deduce it.
\chardef\unknownengine = 0
\chardef\pdftexengine = 1
@@ -114,15 +117,16 @@
}
\fi
-%D \ETEX\ has a not so handy way of telling you the version number, i.e. the revision
-%D number has a period in it:
+%D \ETEX\ has a not so handy way of telling you the version number,
+%D i.e. the revision number has a period in it:
\long\def\gobbleoneargument#1{} % will be defined later on anyway
\mathchardef\etexversion = \numexpr\eTeXversion*100+\expandafter\gobbleoneargument\eTeXrevision\relax
-%D First we define a simplified version of the \CONTEXT\ protection mechanism.
-%D Later we will implement a better variant.
+%D First we define a simplified version of the \CONTEXT\
+%D protection mechanism. Later we will implement a better
+%D variant.
\def\unprotect
{\edef\protect
@@ -145,21 +149,18 @@
\let\bgroup={
\let\egroup=}
-%D \macros
-%D {normalbgroup,normalgroup}
+%D Allocation of registers is done slightly different than in plain
+%D \TEX. First of all we use different reserved counters. We also
+%D don't implement a family handler because users are not supposed
+%D to implement their own math. We reserve the lowest 31 registers
+%D for scratch purposes. Keep in mind that in the core engine
+%D some registers are reserved: counters 0 upto 9, and counter 255.
%D
-%D No comment.
-
-%D Allocation of registers is done slightly different than in plain \TEX. First of
-%D all we use different reserved counters. We also don't implement a family handler
-%D because users are not supposed to implement their own math. We reserve the lowest
-%D 31 registers for scratch purposes. Keep in mind that in the core engine some
-%D registers are reserved: counters 0 upto 9, and counter 255.
-%D
-%D As with plain \TEX\ we recommend that macro designers always use \type {\global}
-%D assignments with respect to registers numbered 1, 3, 5 \unknown\ 31, and always
-%D non||\type {\global} assignments with respect to registers 0, 2, 4, \unknown\ 30.
-%D This will prevent \quote {save stack buildup} that might otherwise occur.
+%D As with plain \TEX\ we recommend that macro designers always use
+%D \type {\global} assignments with respect to registers numbered 1,
+%D 3, 5 \unknown\ 31, and always non||\type {\global} assignments
+%D with respect to registers 0, 2, 4, \unknown\ 30. This will prevent
+%D \quote {save stack buildup} that might otherwise occur.
%D
%D We reserve some registers for special (management) purposes:
@@ -211,10 +212,11 @@
\dimendef \dimen@i = 1 % global only
\dimendef \dimen@ii = 2
-%D So, effectively we start allocating from 256 and upwards. The inserts sit in the
-%D range 128 upto 254. Page numbers use the counters 0 upto 9 and the pagebox is
-%D 255. Users can use the scratch registers upto 31 without problem but all others
-%D are reserved.
+%D So, effectively we start allocating from 256 and upwards. The
+%D inserts sit in the range 128 upto 254. Page numbers use the
+%D counters 0 upto 9 and the pagebox is 255. Users can use the
+%D scratch registers upto 31 without problem but all others are
+%D reserved.
\let\wlog\gobbleoneargument % Let's get rid of this one.
@@ -252,11 +254,12 @@
%newlinechar=10 \def\outputnewlinechar{\rawcharacter{10}}
\newlinechar=10 \edef\outputnewlinechar{^^J}
-%D One reason to start high with allocation is that it permits us to allocate
-%D consecutive ranges more easily, for instance if for \MPLIB\ we want to allocate a
-%D continuous range of boxes. It also permits us to do a proper upward allocation
-%D for inserts. The current code evolved from code that dealt with older engines but
-%D as all engines now provide many registers we removed all traces.
+%D One reason to start high with allocation is that it permits us to
+%D allocate consecutive ranges more easily, for instance if for \MPLIB\
+%D we want to allocate a continuous range of boxes. It also permits us
+%D to do a proper upward allocation for inserts. The current code
+%D evolved from code that dealt with older engines but as all engines
+%D now provide many registers we removed all traces.
\ifdefined\writestatus \else
\normalprotected\def\writestatus#1#2{\immediate\write16{#1: #2}}
@@ -283,27 +286,29 @@
\fi\fi
#1#2#3#4#5}
-%D Since the number of chars exceed 256 now, we can use \type {\chardef} instead of
-%D the more limited \type {\mathchardef}.
+%D Since the number of chars exceed 256 now, we can use \type
+%D {\chardef} instead of the more limited \type {\mathchardef}.
\ifnum\texengine>\pdftexengine
\normalprotected\def\newbox {\syst_basics_allocate\c_syst_last_allocated_box \box \chardef\c_syst_max_allocated_register}
\normalprotected\def\newmarks{\syst_basics_allocate\c_syst_last_allocated_marks\marks\chardef\c_syst_max_allocated_register}
\fi
-%D Attributes are something very \LUATEX. In \CONTEXT\ you are not supposed to use
-%D the attributes directly but always allocate then first. For instance attribute~0
-%D is reserved for special purposes (this might change). Attributes in the range
-%D 128-1023 are private and should not be touched.
+%D Attributes are something very \LUATEX. In \CONTEXT\ you are not
+%D supposed to use the attributes directly but always allocate then
+%D first. For instance attribute~0 is reserved for special purposes
+%D (this might change). Attributes in the range 128-1023 are private
+%D and should not be touched.
\ifnum\texengine=\luatexengine
\let\attributeunsetvalue\c_syst_min_counter_value % used to be \minusone
\normalprotected\def\newattribute{\syst_basics_allocate\c_syst_min_allocated_attribute\attribute\attributedef\c_syst_max_allocated_register}
\fi
-%D Not used by \CONTEXT\ but for instance \PICTEX\ needs it. It's a trick to force
-%D strings instead of tokens that take more memory. It's a trick to trick to force
-%D strings. This macro is never used in \CONTEXT.
+%D Not used by \CONTEXT\ but for instance \PICTEX\ needs it. It's a
+%D trick to force strings instead of tokens that take more memory.
+%D It's a trick to trick to force strings. This macro is never used
+%D in \CONTEXT.
\normalprotected\def\newhelp#1#2{\newtoks#1#1\expandafter{\csname#2\endcsname}}
@@ -313,8 +318,8 @@
%D scratchbox,
%D scratchtoks}
%D
-%D We now define a few scratch registers, so that successive loads at least have
-%D some available.
+%D We now define a few scratch registers, so that successive
+%D loads at least have some available.
\newcount \scratchcounter \newcount \globalscratchcounter
\newdimen \scratchdimen \newdimen \globalscratchdimen
@@ -338,49 +343,21 @@
\newdimen\scratchwidth
\newdimen\scratchheight
\newdimen\scratchdepth
-
\newdimen\scratchoffset
-\newdimen\scratchleftoffset
-\newdimen\scratchrightoffset
-\newdimen\scratchtopoffset
-\newdimen\scratchbottomoffset
-
\newdimen\scratchdistance
-
\newdimen\scratchhsize
\newdimen\scratchvsize
-\newdimen\scratchxoffset
-\newdimen\scratchyoffset
-\newdimen\scratchhoffset
-\newdimen\scratchvoffset
-
-\newdimen\scratchxposition
-\newdimen\scratchyposition
-
-\newcount\scratchnx
-\newcount\scratchny
-
-\newcount\scratchmx
-\newcount\scratchmy
-
-\newdimen\scratchleftskip
-\newdimen\scratchrightskip
-\newdimen\scratchtopskip
-\newdimen\scratchbottomskip
-
%D More allocations:
-\newskip \zeroskip \zeroskip = 0pt plus 0pt minus 0pt
-\newdimen \zeropoint \zeropoint = 0pt
-\newdimen \onepoint \onepoint = 1pt
-\newdimen \halfapoint \halfapoint = 0.5pt
-\newdimen \maxdimen \maxdimen = 16383.99999pt
-\newdimen \onebasepoint \onebasepoint = 1bp
-\newdimen \scaledpoint \scaledpoint = 1sp
-\newdimen \thousandpoint \thousandpoint = 1000pt
-\newmuskip\zeromuskip \zeromuskip = 0mu
-\newmuskip\onemuskip \onemuskip = 1mu
+\newskip \zeroskip \zeroskip = 0pt plus 0pt minus 0pt
+\newdimen\zeropoint \zeropoint = 0pt
+\newdimen\onepoint \onepoint = 1pt
+\newdimen\halfapoint \halfapoint = 0.5pt
+\newdimen\maxdimen \maxdimen = 16383.99999pt
+\newdimen\onebasepoint \onebasepoint = 1bp
+\newdimen\scaledpoint \scaledpoint = 1sp
+\newdimen\thousandpoint \thousandpoint = 1000pt
\let\points \onepoint
\let\halfpoint\halfapoint
@@ -433,8 +410,8 @@
\def\doubleexpandafter{\expandafter\expandafter\expandafter}
\def\tripleexpandafter{\expandafter\doubleexpandafter\expandafter}
-%D We prefer the more readable variant than in plain \TEX. User should only
-%D use \type {\emptybox}:
+%D We prefer the more readable variant than in plain
+%D \TEX. User should only use \type {\emptybox}:
\newbox\voidbox % public
@@ -448,19 +425,8 @@
\let\leavevmode\unvoidbox % we prefer to use \dontleavehmode
-%D \macros
-%D {dontcomplain}
-%D
-%D We need this one soon:
-
-\normalprotected\def\dontcomplain
- {\hbadness\plustenthousand
- \vbadness\plustenthousand
- \hfuzz \maxdimen
- \vfuzz \maxdimen}
-
-%D Some expected plain variants follow. We don't reuse registers because we
-%D don't want clashes.
+%D Some expected plain variants follow. We don't reuse registers
+%D because we don't want clashes.
\newdimen\p@ \p@ \onepoint
\newcount\m@ne \m@ne \minusone
@@ -474,8 +440,8 @@
\newbox \voidb@x
\newtoks \toks@
-%D We define \type {\newif} a la plain \TEX, but will redefine it later. As
-%D Knuth says:
+%D We define \type {\newif} a la plain \TEX, but will
+%D redefine it later. As Knuth says:
%D
%D \startnarrower
%D And here's a different sort of allocation: for example,
@@ -484,7 +450,8 @@
%D \newif\iffoo
%D \stoptyping
%D
-%D creates \type {\footrue}, \type {\foofalse} to go with \type {\iffoo}.
+%D creates \type {\footrue}, \type {\foofalse} to go
+%D with \type {\iffoo}.
%D \stopnarrower
\normalprotected\def\newif#1%
@@ -512,16 +479,8 @@
\ifdefined\htdp \else \def\htdp#1{\dimexpr\ht#1+\dp#1\relax} \fi
-%D A few shortcuts:
-
-\normalprotected\def\glet {\global \let }
-\normalprotected\def\udef {\normalprotected\def }
-\normalprotected\def\ugdef{\normalprotected\gdef}
-\normalprotected\def\uedef{\normalprotected\edef}
-\normalprotected\def\uxdef{\normalprotected\xdef}
-
-%D The catcode constants will be redefined in later catcode related modules
-%D but they can be used in the same way.
+%D The catcode constants will be redefined in later catcode
+%D related modules but they can be used in the same way.
\chardef\escapecatcode = 0
\chardef\begingroupcatcode = 1
@@ -540,11 +499,6 @@
\chardef\commentcatcode = 14
\chardef\invalidcatcode = 15
-%D For a while we keep the following, as systems like tikz need it. Best
-%D not use that one \CONTEXT.
-
-\let\active\activecatcode
-
%D Constants to be used with \type {\currentgrouptype}.
\chardef\bottomlevelgroupcode = 0
@@ -573,12 +527,13 @@
\chardef\scrollmodecode = 2
\chardef\errorstopmodecode = 3
-%D Constants to be used with \type {\lastnodetype}. The \type {\lastnodetype}
-%D primitive is \ETEX\ compliant. The valid range is still -1 .. 15 and glyph nodes
-%D have number 0 (used to be char node) and ligature nodes are mapped to 7. That way
-%D macro packages can use the same symbolic names as in traditional \ETEX. Keep in
-%D mind that the internal node numbers are different and that there are more node
-%D types that 15.
+%D Constants to be used with \type {\lastnodetype}. The \type
+%D {\lastnodetype} primitive is \ETEX\ compliant. The valid range is
+%D still -1 .. 15 and glyph nodes have number 0 (used to be char
+%D node) and ligature nodes are mapped to 7. That way macro packages
+%D can use the same symbolic names as in traditional \ETEX. Keep in
+%D mind that the internal node numbers are different and that there
+%D are more node types that 15.
\chardef\charnodecode = 0
\chardef\hlistnodecode = 1
@@ -597,8 +552,8 @@
\chardef\unsetnodecode = 14
\chardef\mathsnodecode = 15
-%D Constants to be used with \type {\currentiftype}. I wonder if we will ever
-%D use these in \CONTEXT.
+%D Constants to be used with \type {\currentiftype}. I wonder if
+%D we will ever use these in \CONTEXT.
\chardef\charifcode = 1
\chardef\catifcode = 2
@@ -621,11 +576,11 @@
\chardef\csnameifcode = 19
\chardef\fontcharifcode = 20
-%D Of course we want even bigger log files, so we copied this from the \ETEX\
-%D source files.
+%D Of course we want even bigger log files, so we copied this
+%D from the \ETEX\ source files.
%D
-%D When watching such logs, beware of nasty side effects of \type {\scantokens},
-%D as in:
+%D When watching such logs, beware of nasty side effects of
+%D \type {\scantokens}, as in:
%D
%D \starttyping
%D \bgroup
@@ -686,13 +641,14 @@
\ifdefined\normalinput \else \let\normalinput\input \fi
-%D We don't like outer commands, and we always want access to the original
-%D \type {\input} primitive.
+%D We don't like outer commands, and we always want access
+%D to the original \type {\input} primitive.
\let\normalouter\outer \def\outer{} % no longer \relax
-%D To circumvent dependencies, we can postpone certain initializations to
-%D dumping time, by appending them to the \type {\everydump} token register.
+%D To circumvent dependencies, we can postpone certain
+%D initializations to dumping time, by appending them to the
+%D \type {\everydump} token register.
\ifdefined\normaldump \else \let\normaldump\dump \fi
@@ -713,10 +669,11 @@
%D settrue, setfalse,
%D ifconditional,then}
%D
-%D \TEX's lacks boolean variables, although the \PLAIN\ format implements \type
-%D {\newif}. The main disadvantage of this scheme is that it takes three hash table
-%D entries. A more memory saving alternative is presented here. A conditional is
-%D defined by:
+%D \TEX's lacks boolean variables, although the \PLAIN\ format
+%D implements \type{\newif}. The main disadvantage of this
+%D scheme is that it takes three hash table entries. A more
+%D memory saving alternative is presented here. A conditional
+%D is defined by:
%D
%D \starttyping
%D \newconditional\doublesided
@@ -742,8 +699,9 @@
%D \def\setfalse#1{\let#1=\iffalse}
%D \stoptyping
%D
-%D Such an implementation gives problems with nested conditionals. The next
-%D implementation is about as fast and just as straightforward:
+%D Such an implementation gives problems with nested
+%D conditionals. The next implementation is about as fast
+%D and just as straightforward:
\let\conditionalfalse\plusone % maybe we will have a dedicated count/chardef
\let\conditionaltrue \zerocount % maybe we will have a dedicated count/chardef
@@ -759,8 +717,8 @@
%D \macros
%D {newmacro,setnewmacro,newfraction}
%D
-%D Let's be complete and also introduce some definers. These are not mandate
-%D but handy for grepping.
+%D Let's be complete and also introduce some definers. These are
+%D not mandate but handy for grepping.
\normalprotected\def\newmacro #1{\let#1\empty}
\normalprotected\def\setnewmacro#1{\let#1}
@@ -769,15 +727,17 @@
\normalprotected\def\newfraction#1{\let#1\!!plusone}
-%D It would be handy to have a primitive \unless\ifcase because then we could
-%D use nicer values. Anyhow, this conditional code used to be in the \type
-%D {syst-aux} module but is now promoted to here.
+%D It would be handy to have a primitive \unless\ifcase because
+%D then we could use nicer values. Anyhow, this conditional code
+%D used to be in the \type {syst-aux} module but is now promoted
+%D to here.
%D \macros
%D {ifzeropt}
%D
-%D The next macro is both cosmetic and byte saving. It is pretty \type
-%D {\if}||safe too. It can be used in cases like:
+%D The next macro is both cosmetic and byte saving. It is
+%D pretty \type{\if}||safe too. It can be used in cases
+%D like:
%D
%D \starttyping
%D \ifzeropt \somedimen ... \else ... \fi
@@ -825,23 +785,7 @@
\def\begcsname#1\endcsname{\ifcsname#1\endcsname\csname#1\endcsname\fi}
-%D Now come a few macros that might be needed in successive loading. We redefine the
-%D \type {\par} primitive pretty soon so that we get the equivalents right.
-
-% too tricky: \par is use more often than a par starts so we have too much change
-% that we get assymetrical behaviour
-%
-% \newtoks\everyendpar
-%
-% \normalprotected\def\endpar{\the\everyendpar\normalpar}
-% \normalprotected\def\par {\endpar}
-%
-% \normalprotected\def\reseteverypar
-% {\everypar \emptytoks
-% \everyendpar\emptytoks}
-
-\normalprotected\def\reseteverypar
- {\everypar\emptytoks}
+%D Now come a few macros that might be needed in successive loading:
\let\endgraf\par
\let\endline\cr
@@ -850,8 +794,9 @@
\def\empty{}
\def\null {\hbox{}}
-%D The following two might be overloaded later on but some modules need then
-%D earlier. These functionality is reflected in the name and will not change.
+%D The following two might be overloaded later on but some modules need
+%D then earlier. These functionality is reflected in the name and will not
+%D change.
\bgroup
\catcode`\^^M=\activecatcode%
@@ -868,15 +813,16 @@
\let\endoflinetoken=^^M
-%D Also needed might be a simple loop structure and we borrow plain \TEX's one
-%D as it is often expected to be present and it is about the fastest you can
-%D get. Beware: this macro does not support nested loops. We use a namespace
-%D prefix \type {@@pln}.
+%D Also needed might be a simple loop structure and we borrow
+%D plain \TEX's one as it is often expected to be present and
+%D it is about the fastest you can get. Beware: this macro
+%D does not support nested loops. We use a namespace prefix
+%D \type {@@pln}.
\long\def\loop#1\repeat{\long\def\@@plnbody{#1}\@@plniterate} % might go
-%D The following makes \type {\loop} \unknown\ \type {\if} \unknown\ \type
-%D {\repeat} skippable (clever trick):
+%D The following makes \type {\loop} \unknown\ \type {\if}
+%D \unknown\ \type {\repeat} skippable (clever trick):
\let\repeat\fi % so both \loop and \repeat are reserved words!
@@ -896,22 +842,23 @@
\def\@@plniterate{\@@plnbody\expandafter\@@plniterate\else\fi}
-%D We don't define a real output routine yet but at least get rid of pages:
+%D We don't define a real output routine yet but at least get rid
+%D of pages:
\output{\shipout\box\normalpagebox}
-%D Although we don't add pagenumbers yet we alias the default register used
-%D for counting pages:
+%D Although we don't add pagenumbers yet we alias the default
+%D register used for counting pages:
\countdef\pageno=0 \pageno=1 % first page is number 1
-%D Beside the raw counter \type {\pageno} the \type {\folio} macro provides
-%D the value.
+%D Beside the raw counter \type {\pageno} the \type {\folio}
+%D macro provides the value.
\def\folio{\the\pageno} % kind of expected and therefore reserved
-%D The following registers are kind of standard and (for the moment) we define
-%D them here. This might change.
+%D The following registers are kind of standard and (for the moment)
+%D we define them here. This might change.
\newskip \bigskipamount \bigskipamount = 12pt plus 4pt minus 4pt
\newskip \medskipamount \medskipamount = 6pt plus 2pt minus 2pt
@@ -946,8 +893,9 @@
\spanomit \advance\mscount\minusone
\repeat}
-%D The next section deals with selective definitions in later modules. One can of
-%D course use the \type {\texengine} number that we defined earlier instead.
+%D The next section deals with selective definitions in
+%D later modules. One can of course use the \type {\texengine}
+%D number that we defined earlier instead.
\bgroup \obeylines
\gdef\pickupSOMETEX#1%
@@ -979,19 +927,19 @@
\fi
%D \macros
-%D {bindprimitive}
+%D {bindprimitive}
%D
-%D We can remap primitives (which is needed because of changes in for instance
-%D \PDFTEX).
+%D We can remap primitives (which is needed because of changes in
+%D for instance \PDFTEX).
\def\bindprimitive#1 #2 % new old
{\ifcsname#1\endcsname \else \ifcsname#2\endcsname
\expandafter\let\csname#1\expandafter\endcsname\csname#2\endcsname
\fi \fi}
-%D Because \XETEX\ also implements some \PDFTEX\ functionality, we take care of this
-%D here instead of a dedicated module. Later modules need to handle the undefined
-%D cases.
+%D Because \XETEX\ also implements some \PDFTEX\ functionality, we take
+%D care of this here instead of a dedicated module. Later modules need
+%D to handle the undefined cases.
%D These messy checks will disappear.
@@ -1049,8 +997,8 @@
\newif\ifproductionrun
-%D We need to make sure that we start up in \DVI\ mode, so, after testing for running
-%D \PDFTEX, we default to \DVI.
+%D We need to make sure that we start up in \DVI\ mode, so,
+%D after testing for running \PDFTEX, we default to \DVI.
\ifx\pdftexversion\undefined \newcount\pdfoutput \fi \pdfoutput=0
@@ -1096,14 +1044,15 @@
\let\synctex\undefined \newcount\synctex
-%D We get rid of the funny \TEX\ offset defaults of one inch by setting them to zero.
+%D We get rid of the funny \TEX\ offset defaults of one
+%D inch by setting them to zero.
-\voffset\zeropoint \let\voffset\relax \newdimen\voffset % prevent messing up
-\hoffset\zeropoint \let\hoffset\relax \newdimen\hoffset % prevent messing up
+\voffset \zeropoint \newdimen\voffset % prevent messing up
+\hoffset \zeropoint \newdimen\hoffset % prevent messing up
-%D While cleaning this code up a bit I was listening to Heather Nova's \CD\ Redbird.
-%D The first song on that \CD\ ends with a few lines suitable for ending this
-%D initialization module:
+%D While cleaning this code up a bit I was listening to Heather
+%D Nova's \CD\ Redbird. The first song on that \CD\ ends with
+%D a few lines suitable for ending this initialization module:
%D
%D \startlines
%D And there's so much I can do for you
@@ -1116,6 +1065,7 @@
%D Come inside
%D \stoplines
%D
-%D So let's see what \TEX\ can do now that we've opened up the basic machinery.
+%D So let's see what \TEX\ can do now that we've opened up
+%D the basic machinery.
\protect \endinput