diff options
author | Marius <mariausol@gmail.com> | 2012-10-19 01:20:13 +0300 |
---|---|---|
committer | Marius <mariausol@gmail.com> | 2012-10-19 01:20:13 +0300 |
commit | 69d2352af4b60929b37fc49f3bdb263977016244 (patch) | |
tree | db5eb11398e345dfa23b4c4500fb93575d2afb7c /tex/context/base/syst-ini.mkiv | |
parent | c18f7cbe51449a611ea1819fedd9a4ff18529b7d (diff) | |
download | context-69d2352af4b60929b37fc49f3bdb263977016244.tar.gz |
stable 2012.05.30 11:26
Diffstat (limited to 'tex/context/base/syst-ini.mkiv')
-rw-r--r-- | tex/context/base/syst-ini.mkiv | 338 |
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 |