diff options
Diffstat (limited to 'tex/context/base/mkiv/catc-ini.mkxl')
-rw-r--r-- | tex/context/base/mkiv/catc-ini.mkxl | 329 |
1 files changed, 0 insertions, 329 deletions
diff --git a/tex/context/base/mkiv/catc-ini.mkxl b/tex/context/base/mkiv/catc-ini.mkxl deleted file mode 100644 index 1dcd2107f..000000000 --- a/tex/context/base/mkiv/catc-ini.mkxl +++ /dev/null @@ -1,329 +0,0 @@ -%D \module -%D [ file=catc-ini, -%D version=2006.09.18, -%D title=\CONTEXT\ System Macros, -%D subtitle=Catcode Handling, -%D author=Hans Hagen, -%D date=\currentdate, -%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] -%C -%C This module is part of the \CONTEXT\ macro||package and is -%C therefore copyrighted by \PRAGMA. See mreadme.pdf for -%C details. - -%D We've split the functionality of syst-cat.* over more files -%D now so that we can load more selectively. - -\registerctxluafile{catc-ini}{} - -\unprotect - -%D A long standing wish has been the availability of catcode arrays. Because -%D traditional \TEX\ does not provide this we implement a fake method in the -%D \MKII\ file. There is some overlap in code with \MKII\ but we take that -%D for granted. Also, in \MKIV\ less active characters are used. - -% \begingroup -% -% \catcode\tabasciicode \activecatcode -% \catcode\formfeedasciicode \activecatcode -% \catcode\endoflineasciicode\activecatcode -% -% \letcharcode\tabasciicode \relax -% \letcharcode\newlineasciicode \relax -% \letcharcode\formfeedasciicode \relax -% \letcharcode\endoflineasciicode\relax -% -% \xdef\activetabtoken {\Uchar\tabasciicode } % \gdef\activetabtoken {^^I} -% \xdef\outputnewlinechar {\Uchar\newlineasciicode } % \gdef\outputnewlinechar {^^J} -% \xdef\activeformfeedtoken {\Uchar\formfeedasciicode } % \gdef\activeformfeedtoken {^^L} -% \xdef\activeendoflinetoken{\Uchar\endoflineasciicode} % \gdef\activeendoflinetoken{^^M} -% -% \endgroup - -\begingroup - \letcharcode\newlineasciicode\relax \xdef\outputnewlinechar{\Uchar\newlineasciicode} -\endgroup - -% \endlinechar = \endoflineasciicode % appended to input lines -% \newlinechar = \newlineasciicode % can be used in write - -% rather special and used in writing to file: \let\par\outputnewlinechar - -% \protected\def\initializenewlinechar % operating system dependent -% {\begingroup -% \newlinechar\newlineasciicode -% \xdef\outputnewlinechar{^^J}% -% \endgroup} - -\permanent\protected\def\initializenewlinechar % operating system dependent - {\begingroup - \letcharcode\newlineasciicode\relax - \newlinechar\newlineasciicode - \xdef\outputnewlinechar{\Uchar\newlineasciicode}% - \endgroup} - -%D We predefine some prefixes ahead of syst-aux and mult-sys. - -% We reserve 8 slots for catcodes. -% -% \def\??catcodelet {1>>} % let : \let -% \def\??catcodedef {2>>} % def : \def -% \def\??catcodeued {3>>} % ued : \protected\def -% \def\??catcodeget {4>>} % \meaning -% -% \def\??catcodetablet{5>>} -% \def\??catcodetablen{6>>} - -\installsystemnamespace {catcodelet} % let : \let -\installsystemnamespace {catcodedef} % def : \def -\installsystemnamespace {catcodeued} % ued : \protected\def -\installsystemnamespace {catcodeget} % \meaning - -\installsystemnamespace {catcodetablet} -\installsystemnamespace {catcodetablen} - -\newcount\c_syst_catcodes_n \c_syst_catcodes_n\zerocount % 0 = signal, so advance before allocate -\newcount\c_syst_catcodes_a -\newcount\c_syst_catcodes_b -\newcount\c_syst_catcodes_c - -\permanent\protected\def\newcatcodetable#1% we could move the cctdefcounter to lua - {\global\advance\c_syst_catcodes_n\plusone - \global\defcsname\??catcodetablen\number\c_syst_catcodes_n\endcsname{\string#1}% logging - %\setnewconstant#1\c_syst_catcodes_n - \immutable\integerdef#1\c_syst_catcodes_n - \ctxcommand{registercatcodetable("\expandafter\gobbleoneargument\string#1",\number#1)}} - -\newtoks \everysetdefaultcatcodes - -\everysetdefaultcatcodes % this might get dropped - {\catcode\backslashasciicode\othercatcode - \catcode\endoflineasciicode\othercatcode - \catcode\spaceasciicode \othercatcode - \catcode\commentasciicode \othercatcode - \catcode\delasciicode \othercatcode} - -\permanent\protected\def\startcatcodetable#1#2\stopcatcodetable - {\begingroup - \catcodetable\inicatcodes - \the\everysetdefaultcatcodes - #2% - \savecatcodetable#1\relax - \endgroup} - -\permanent\let\stopcatcodetable\relax - -\permanent\protected\def\startextendcatcodetable#1#2\stopextendcatcodetable - {\begingroup - \catcodetable#1\relax - \globaldefs\plusone - #2% - \globaldefs\zerocount - \endgroup} - -\permanent\let\stopextendcatcodetable\relax - -\permanent\protected\def\permitcircumflexescape % to be used grouped - {\catcode\circumflexasciicode\superscriptcatcode} - -\aliased\let\permitcaretescape\permitcircumflexescape - -% == -% -% \protected\def\startextendcatcodetable#1#2\stopextendcatcodetable -% {\bgroup -% \scratchcounter\the\catcodetable -% \catcodetable #1 #2 -% \catcodetable\scratchcounter -% \egroup} - -%D The next command can be defined in a cleaner way in the MkIV way but we want -%D to have a fast one with a minimal chance for interference. Do we still need -%D this complex mechanism? Probably not. Future versions of \MKIV\ might only use -%D active characters for very special cases. - -\setnewconstant\c_syst_catcodes_hack\tildeasciicode - -%D Once a catcode is assigned, the next assignments will happen faster. However, -%D redefinitions probably happen seldom so it's sort of overkill. - -\permanent\protected\def\letcatcodecommand{\afterassignment\syst_catcodes_let_a\c_syst_catcodes_a} -\permanent\protected\def\defcatcodecommand{\afterassignment\syst_catcodes_def_a\c_syst_catcodes_a} -\permanent\protected\def\uedcatcodecommand{\afterassignment\syst_catcodes_ued_a\c_syst_catcodes_a} - -\def\syst_catcodes_let_a{\afterassignment\syst_catcodes_let_b\c_syst_catcodes_b} -\def\syst_catcodes_def_a{\afterassignment\syst_catcodes_def_b\c_syst_catcodes_b} -\def\syst_catcodes_ued_a{\afterassignment\syst_catcodes_ued_b\c_syst_catcodes_b} - -\def\syst_catcodes_let_b % each time - {\ifcsname\??catcodelet\number\c_syst_catcodes_a:\number\c_syst_catcodes_b\endcsname - \expandafter\lastnamedcs - \else - \expandafter\syst_catcodes_let_c - \fi} - -\def\syst_catcodes_def_b % each time - {\ifcsname\??catcodedef\number\c_syst_catcodes_a:\number\c_syst_catcodes_b\endcsname - \expandafter\lastnamedcs - \else - \expandafter\syst_catcodes_def_c - \fi} - -\def\syst_catcodes_ued_b % each time - {\ifcsname\??catcodeued\number\c_syst_catcodes_a:\number\c_syst_catcodes_b\endcsname - \expandafter\lastnamedcs - \else - \expandafter\syst_catcodes_ued_c - \fi} - -\def\syst_catcodes_let_c % only first time - {\frozen\enforced\global\defcsname\??catcodelet\number\c_syst_catcodes_a:\number\c_syst_catcodes_b\expandafter\endcsname\expandafter - {\enforced\letcsname\??catcodeget\number\c_syst_catcodes_a:\number\c_syst_catcodes_b\endcsname}% - \syst_catcodes_reinstate_unexpanded - \csname\??catcodelet\number\c_syst_catcodes_a:\number\c_syst_catcodes_b\endcsname} - -\def\syst_catcodes_def_c % only first time (we could use \normalexpanded here) - {\frozen\enforced\global\defcsname\??catcodedef\number\c_syst_catcodes_a:\number\c_syst_catcodes_b\expandafter\endcsname - \expandafter##\expandafter1\expandafter - {\frozen\enforced\defcsname\??catcodeget\number\c_syst_catcodes_a:\number\c_syst_catcodes_b\endcsname{##1}}% - \syst_catcodes_reinstate_normal - \csname\??catcodedef\number\c_syst_catcodes_a:\number\c_syst_catcodes_b\endcsname} - -\def\syst_catcodes_ued_c % only first time - {\frozen\enforced\global\defcsname\??catcodeued\number\c_syst_catcodes_a:\number\c_syst_catcodes_b\expandafter\endcsname - \expandafter##\expandafter1\expandafter - {\frozen\enforced\protected\defcsname\??catcodeget\number\c_syst_catcodes_a:\number\c_syst_catcodes_b\endcsname{##1}}% - \syst_catcodes_reinstate_unexpanded - \csname\??catcodeued\number\c_syst_catcodes_a:\number\c_syst_catcodes_b\endcsname} - -\permanent\def\reinstatecatcodecommand{\afterassignment\syst_catcodes_reinstate_normal\c_syst_catcodes_b} - -% \def\syst_catcodes_reinstate_normal % can be used when a direct definition has been done -% {\begingroup % and the selector has been lost -% \uccode\c_syst_catcodes_hack\c_syst_catcodes_b -% \catcode\uccode\c_syst_catcodes_hack\activecatcode -% \uppercase{\xdef~{\noexpand\catcodecommand{\number\c_syst_catcodes_b}}}% -% \endgroup} - -% \def\syst_catcodes_reinstate_unexpanded % can be used when a direct definition has been done -% {\begingroup % and the selector has been lost -% \uccode\c_syst_catcodes_hack\c_syst_catcodes_b -% \catcode\uccode\c_syst_catcodes_hack\activecatcode -% \uppercase{\protected\xdef~{\noexpand\catcodecommand{\number\c_syst_catcodes_b}}}% -% \endgroup} - -%D This can be used when a direct definition has been done and the selector has been -%D lost. - -% problem: \next needs to be unique (as it gets bound) - -\def\syst_catcodes_reinstate_normal - {\begingroup - \edef\c_syst_char_code{\noexpand\catcodecommand{\number\c_syst_catcodes_b}}% - \global\letcharcode\c_syst_catcodes_b\c_syst_char_code - \endgroup} - -\def\syst_catcodes_reinstate_unexpanded - {\begingroup - \protected\edef\c_syst_char_code{\noexpand\catcodecommand{\number\c_syst_catcodes_b}}% - \global\letcharcode\c_syst_catcodes_b\c_syst_char_code - \endgroup} - -\newconstant\defaultcatcodetable - -\permanent\def\catcodecommand#1% - {\csname\??catcodeget\number - \ifcsname\??catcodeget\number\currentcatcodetable:\number#1\endcsname - \currentcatcodetable \else \defaultcatcodetable - \fi - :\number#1\endcsname} - -%D \macros -%D {restorecatcodes,pushcatcodetable,popcatcodetable} -%D -%D We're not finished dealing \CATCODES\ yet. In \CONTEXT\ we use only one auxiliary -%D file, which deals with tables of contents, registers, two pass tracking, references -%D etc. This file, as well as files concerning graphics, is processed when needed, -%D which can be in the mid of typesetting verbatim. However, when reading in data in -%D verbatim mode, we should temporary restore the normal \CATCODES, and that's exactly -%D what the next macros do. Saving the catcodes can be disabled by saying \type -%D {\localcatcodestrue}. In \MKIV\ instead we can push and pop catcode tables and as -%D we keep track of used tables users seldom need to deal with this themselves. - -\newcount\c_syst_catcodes_level - -\permanent\protected\def\pushcatcodetable - {\advance\c_syst_catcodes_level\plusone - \syst_catcodes_trace_push - \expandafter\chardef\csname\??catcodetablet\number\c_syst_catcodes_level\endcsname\currentcatcodetable} - -\permanent\protected\def\popcatcodetable - {\ifcase\c_syst_catcodes_level - \syst_catcodes_trace_nesting_error - \else - \expandafter\catcodetable\csname\??catcodetablet\number\c_syst_catcodes_level\endcsname - \syst_catcodes_trace_pop - \advance\c_syst_catcodes_level\minusone - \fi} - -\protected\def\syst_catcodes_trace_nesting_error - {\immediate\write\statuswrite{}% - \immediate\write\statuswrite{Fatal error: catcode push/pop mismatch. Fix this! (restore level: \number\c_syst_catcodes_level)}\wait\end - \immediate\write\statuswrite{}} - -\permanent\protected\def\restorecatcodes % takes previous level - {\ifnum\c_syst_catcodes_level>\plusone - \expandafter\catcodetable\csname\??catcodetablet\number\numexpr\c_syst_catcodes_level-1\relax\endcsname - \fi} - -% \newtoks\everycatcodetable - -\permanent\protected\def\setcatcodetable#1% - {\catcodetable#1% -% \the\everycatcodetable - \syst_catcodes_trace_set} - -%D Handy for debugging: -%D -%D \starttyping -%D \tracecatcodetables -%D \stoptyping - -\permanent\protected\def\tracecatcodetables - {\def\syst_catcodes_trace_set {\syst_catcodes_trace{set \catcodetablename\space at \number\c_syst_catcodes_level}}% - \def\syst_catcodes_trace_push{\syst_catcodes_trace{push \catcodetablename\space from \syst_catcodes_prev\space at \number\c_syst_catcodes_level}}% - \def\syst_catcodes_trace_pop {\syst_catcodes_trace{pop \catcodetablename\space to \syst_catcodes_prev\space at \number\c_syst_catcodes_level}}} - -\def\syst_catcodes_trace#1{\immediate\write\statuswrite{[#1]}} - -\def\syst_catcodes_prev - {\ifnum\numexpr\c_syst_catcodes_level-1\relax>\zerocount - \csname\??catcodetablen\number\csname\??catcodetablet\number\numexpr\c_syst_catcodes_level-1\relax\endcsname\endcsname - \else - -% - \fi} - -\def\catcodetablename - {\ifnum\currentcatcodetable>\zerocount - \csname\??catcodetablen\number\currentcatcodetable\endcsname - \else - -% - \fi} - -\let\syst_catcodes_trace_set \empty -\let\syst_catcodes_trace_push\empty -\let\syst_catcodes_trace_pop \empty - -% \tracecatcodetables - -\protect - -%D We still have to define these so let's do that now: - -\newcatcodetable \inicatcodes -\initcatcodetable\inicatcodes - -\let\currentcatcodetable\catcodetable - -\endinput |