%D \module %D [ file=catc-def, %D version=2006.09.18, %D title=\CONTEXT\ Catcode Macros, %D subtitle=Default Tables, %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 Contrary to \MKIV\ we define the catcode tables in one file. The original split %D was a prelude to a split approach where context would run on top of a basic layer %D (so that we could make smaller alternative formats) but that idea (from the early %D days of \LUATEX) was dropped when I realized that there is not common ground to %D cover between formats. It is simply not worth the trouble. %D Maybe we also need a copy of \type {\ctxcatcodes} so that we can always go back %D to the unpatched regime. \ifdefined\nilcatcodes \else \newcatcodetable \nilcatcodes \fi \ifdefined\texcatcodes \else \newcatcodetable \texcatcodes \fi \ifdefined\luacatcodes \else \newcatcodetable \luacatcodes \fi \ifdefined\notcatcodes \else \newcatcodetable \notcatcodes \fi \ifdefined\rlncatcodes \else \newcatcodetable \rlncatcodes \fi \ifdefined\vrbcatcodes \else \newcatcodetable \vrbcatcodes \fi \ifdefined\prtcatcodes \else \newcatcodetable \prtcatcodes \fi \ifdefined\ctxcatcodes \else \newcatcodetable \ctxcatcodes \fi \ifdefined\txtcatcodes \else \newcatcodetable \txtcatcodes \fi \ifdefined\tpacatcodes \else \newcatcodetable \tpacatcodes \fi % { } \ifdefined\tpbcatcodes \else \newcatcodetable \tpbcatcodes \fi % < > \ifdefined\ctdcatcodes \else \newcatcodetable \ctdcatcodes \fi % context definitions \startcatcodetable \nilcatcodes \catcode\tabasciicode \spacecatcode \catcode\endoflineasciicode \endoflinecatcode \catcode\formfeedasciicode \endoflinecatcode \catcode\spaceasciicode \spacecatcode \catcode\endoffileasciicode \ignorecatcode \stopcatcodetable \startcatcodetable \texcatcodes \catcode\tabasciicode \spacecatcode \catcode\endoflineasciicode \endoflinecatcode \catcode\formfeedasciicode \endoflinecatcode \catcode\spaceasciicode \spacecatcode \catcode\endoffileasciicode \ignorecatcode \catcode\circumflexasciicode\superscriptcatcode \catcode\underscoreasciicode\subscriptcatcode \catcode\ampersandasciicode \alignmentcatcode \catcode\backslashasciicode \escapecatcode \catcode\leftbraceasciicode \begingroupcatcode \catcode\rightbraceasciicode\endgroupcatcode \catcode\dollarasciicode \mathshiftcatcode \catcode\hashasciicode \parametercatcode \catcode\commentasciicode \commentcatcode \stopcatcodetable \startcatcodetable \luacatcodes \catcode\tabasciicode \othercatcode \catcode\endoflineasciicode \othercatcode \catcode\formfeedasciicode \othercatcode \catcode\spaceasciicode \othercatcode \catcode\endoffileasciicode \ignorecatcode \catcode\circumflexasciicode\othercatcode \catcode\underscoreasciicode\othercatcode \catcode\ampersandasciicode \othercatcode \catcode\backslashasciicode \escapecatcode \catcode\commentasciicode \othercatcode \catcode\hashasciicode \othercatcode \catcode\barasciicode \othercatcode \catcode\leftbraceasciicode \othercatcode \catcode\rightbraceasciicode\othercatcode \catcode\tildeasciicode \othercatcode \catcode\dollarasciicode \othercatcode \stopcatcodetable \startcatcodetable \notcatcodes % probably less needed \catcode\tabasciicode \spacecatcode \catcode\endoflineasciicode \endoflinecatcode \catcode\formfeedasciicode \endoflinecatcode \catcode\spaceasciicode \spacecatcode \catcode\endoffileasciicode \ignorecatcode \catcode\circumflexasciicode \othercatcode \catcode\underscoreasciicode \othercatcode \catcode\ampersandasciicode \othercatcode \catcode\tildeasciicode \othercatcode \catcode\hashasciicode \othercatcode \catcode\dollarasciicode \othercatcode \catcode\commentasciicode \othercatcode \catcode\lessthanasciicode \othercatcode \catcode\morethanasciicode \othercatcode \catcode\leftbraceasciicode \othercatcode \catcode\rightbraceasciicode \othercatcode \catcode\doublequoteasciicode \othercatcode \catcode\singlequoteasciicode \othercatcode \catcode\forwardslashasciicode\othercatcode \catcode\backslashasciicode \othercatcode \catcode\barasciicode \othercatcode \stopcatcodetable \startcatcodetable \rlncatcodes \catcode\tabasciicode \othercatcode \catcode\endoflineasciicode \othercatcode \catcode\formfeedasciicode \othercatcode \catcode\spaceasciicode \spacecatcode % maybe we also need a vector with space being other \catcode\endoffileasciicode \othercatcode \catcode\circumflexasciicode \othercatcode \catcode\underscoreasciicode \othercatcode \catcode\ampersandasciicode \othercatcode \catcode\tildeasciicode \othercatcode \catcode\hashasciicode \othercatcode \catcode\dollarasciicode \othercatcode \catcode\commentasciicode \othercatcode \catcode\lessthanasciicode \othercatcode \catcode\morethanasciicode \othercatcode \catcode\leftbraceasciicode \othercatcode \catcode\rightbraceasciicode \othercatcode \catcode\doublequoteasciicode \othercatcode \catcode\singlequoteasciicode \othercatcode \catcode\forwardslashasciicode\othercatcode \catcode\backslashasciicode \othercatcode \catcode\barasciicode \othercatcode \stopcatcodetable \startcatcodetable \vrbcatcodes % probably less needed \catcode\tabasciicode \othercatcode \catcode\endoflineasciicode\othercatcode \catcode\formfeedasciicode \othercatcode \catcode\spaceasciicode \othercatcode \catcode\endoffileasciicode\othercatcode \stopcatcodetable \startcatcodetable \prtcatcodes \catcode\tabasciicode \spacecatcode \catcode\endoflineasciicode \endoflinecatcode \catcode\formfeedasciicode \endoflinecatcode \catcode\spaceasciicode \spacecatcode \catcode\endoffileasciicode \ignorecatcode \catcode\circumflexasciicode \superscriptcatcode %catcode\underscoreasciicode \subscriptcatcode \catcode\underscoreasciicode \lettercatcode \catcode\ampersandasciicode \alignmentcatcode \catcode\backslashasciicode \escapecatcode \catcode\leftbraceasciicode \begingroupcatcode \catcode\rightbraceasciicode \endgroupcatcode \catcode\dollarasciicode \mathshiftcatcode \catcode\hashasciicode \parametercatcode \catcode\commentasciicode \commentcatcode \catcode\atsignasciicode \lettercatcode \catcode\exclamationmarkasciicode\lettercatcode \catcode\questionmarkasciicode \lettercatcode \catcode\tildeasciicode \activecatcode \catcode\barasciicode \activecatcode \stopcatcodetable \startcatcodetable \ctxcatcodes \catcode\tabasciicode \spacecatcode \catcode\endoflineasciicode \endoflinecatcode \catcode\formfeedasciicode \endoflinecatcode \catcode\spaceasciicode \spacecatcode \catcode\endoffileasciicode \ignorecatcode % \catcode\circumflexasciicode\superscriptcatcode % \catcode\underscoreasciicode\subscriptcatcode % \catcode\ampersandasciicode \alignmentcatcode \catcode\underscoreasciicode\othercatcode \catcode\circumflexasciicode\othercatcode \catcode\ampersandasciicode \othercatcode \catcode\backslashasciicode \escapecatcode \catcode\leftbraceasciicode \begingroupcatcode \catcode\rightbraceasciicode\endgroupcatcode \catcode\dollarasciicode \mathshiftcatcode \catcode\hashasciicode \parametercatcode \catcode\commentasciicode \commentcatcode \catcode\tildeasciicode \activecatcode \catcode\barasciicode \activecatcode \stopcatcodetable \startcatcodetable \tpacatcodes \catcode\tabasciicode \othercatcode \catcode\endoflineasciicode \othercatcode \catcode\formfeedasciicode \othercatcode \catcode\spaceasciicode \othercatcode \catcode\endoffileasciicode \othercatcode \catcode\leftbraceasciicode \begingroupcatcode \catcode\rightbraceasciicode\endgroupcatcode \stopcatcodetable \startcatcodetable \tpbcatcodes \catcode\tabasciicode \othercatcode \catcode\endoflineasciicode \othercatcode \catcode\formfeedasciicode \othercatcode \catcode\spaceasciicode \othercatcode \catcode\endoffileasciicode \othercatcode \catcode\lessthanasciicode \begingroupcatcode \catcode\morethanasciicode \endgroupcatcode \stopcatcodetable \setnewconstant \doublecommentsignal "10FF25 %% < 110000 (last valid range) \startcatcodetable \txtcatcodes \catcode\tabasciicode \spacecatcode \catcode\endoflineasciicode \endoflinecatcode \catcode\formfeedasciicode \endoflinecatcode \catcode\spaceasciicode \spacecatcode \catcode\endoffileasciicode \ignorecatcode \catcode\backslashasciicode \escapecatcode \catcode\leftbraceasciicode \begingroupcatcode \catcode\rightbraceasciicode\endgroupcatcode \catcode\doublecommentsignal\commentcatcode \stopcatcodetable \startcatcodetable \ctdcatcodes \catcode\tabasciicode \ignorecatcode \catcode\endoflineasciicode \ignorecatcode \catcode\formfeedasciicode \ignorecatcode \catcode\spaceasciicode \ignorecatcode \catcode\endoffileasciicode \ignorecatcode \catcode\circumflexasciicode \superscriptcatcode % candidate \catcode\underscoreasciicode \lettercatcode \catcode\ampersandasciicode \alignmentcatcode % \catcode\colonasciicode \lettercatcode % candidate \catcode\backslashasciicode \escapecatcode \catcode\leftbraceasciicode \begingroupcatcode \catcode\rightbraceasciicode \endgroupcatcode \catcode\dollarasciicode \mathshiftcatcode \catcode\hashasciicode \parametercatcode \catcode\commentasciicode \commentcatcode \catcode\atsignasciicode \lettercatcode \catcode\exclamationmarkasciicode\lettercatcode \catcode\questionmarkasciicode \lettercatcode \catcode\tildeasciicode \activecatcode \catcode\barasciicode \activecatcode \stopcatcodetable %D From now on we can use the protection mechanisms. \permanent\protected\def\unprotect {\pushcatcodetable\catcodetable\prtcatcodes} \permanent\protected\def\protect {\popcatcodetable} \permanent\protected\def\starttexcode {\pushcatcodetable\catcodetable\prtcatcodes} \permanent\protected\def\stoptexcode {\popcatcodetable} \permanent\protected\def\startcontextcode {\pushcatcodetable\catcodetable\ctxcatcodes} \permanent\protected\def\stopcontextcode {\popcatcodetable} \permanent\protected\def\startcontextdefinitioncode {\pushcatcodetable\catcodetable\ctdcatcodes} \permanent\protected\def\stopcontextdefinitioncode {\popcatcodetable} %D We have a few active characters (left): \letcatcodecommand \ctxcatcodes \barasciicode \relax \letcatcodecommand \ctxcatcodes \tildeasciicode \relax %D Because some characters have a special meaning, we provide shortcuts to their %D character representation. Some will be overloaded (which might change). \permanent\chardef \^ = \circumflexasciicode \permanent\chardef \_ = \underscoreasciicode \permanent\chardef \& = \ampersandasciicode \permanent\chardef \% = \commentasciicode \permanent\chardef \# = \hashasciicode \permanent\chardef \$ = \dollarasciicode \permanent\chardef \{ = \leftbraceasciicode \permanent\chardef \} = \rightbraceasciicode \permanent\chardef \\ = \backslashasciicode \permanent\chardef \| = \barasciicode \pushoverloadmode \catcodetable \ctxcatcodes \aliased\let\defaultcatcodetable\ctxcatcodes \popoverloadmode \endinput