%D \module %D [ file=catc-sym, %D version=1997.01.03, % moved code %D title=\CONTEXT\ Catcode Macros, %D subtitle=Some Handy Constants, %D author=Hans Hagen, %D date=\currentdate, %D copyright=\PRAGMA] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. \unprotect %D We want to have access to the raw alternatives of the %D special characters. We use a \type {\xdef} instead of %D \type {\let} because we need an expandable token in a %D \type {\write}. \bgroup \catcode`B=\@@begingroup \catcode`E=\@@endgroup \catcode`.=\@@escape .catcode `.{ 12 .xdef .letteropenbrace B.string{E .catcode `.} 12 .xdef .letterclosebrace B.string}E .catcode `.& 12 .xdef .letterampersand B.string&E .catcode `.< 12 .xdef .letterless B.string 12 .xdef .lettermore B.string>E .catcode `.# 12 .xdef .letterhash B.string#E .catcode `." 12 .xdef .letterdoublequote B.string"E .catcode `.' 12 .xdef .lettersinglequote B.string'E .catcode `.$ 12 .xdef .letterdollar B.string$E .catcode `.% 12 .xdef .letterpercent B.string%E .catcode `.^ 12 .xdef .letterhat B.string^E .catcode `._ 12 .xdef .letterunderscore B.string_E .catcode `.| 12 .xdef .letterbar B.string|E .catcode `.~ 12 .xdef .lettertilde B.string~E .catcode `.\ 12 .xdef .letterbackslash B.string\E .catcode `./ 12 .xdef .letterslash B.string/E .catcode `.? 12 .xdef .letterquestionmark B.string?E .catcode `.! 12 .xdef .letterexclamationmark B.string!E .catcode `.@ 12 .xdef .letterat B.string@E .catcode `.: 12 .xdef .lettercolon B.string:E .global .let .letterescape .letterbackslash .global .let .letterbgroup .letteropenbrace .global .let .letteregroup .letterclosebrace .global .let .letterleftbrace .letteropenbrace .global .let .letterrightbrace .letterclosebrace .egroup %D \macros %D {uncatcodespecials,setnaturalcatcodes,setnormalcatcodes, %D uncatcodecharacters,uncatcodeallcharacters, %D uncatcodespacetokens} %D %D The following macros are more or less replaced by switching %D to a catcode table (which we simulate in \MKII) but we keep %D them for convenience and compatibility. Some old engine code %D has been removed. \def\uncatcodespecials {\setcatcodetable\nilcatcodes \uncatcodespacetokens} \def\setnaturalcatcodes {\setcatcodetable\nilcatcodes} \def\setnormalcatcodes {\setcatcodetable\ctxcatcodes} % maybe \texcatcodes \def\uncatcodecharacters {\setcatcodetable\nilcatcodes} % was fast version, gone now \def\uncatcodeallcharacters{\setcatcodetable\nilcatcodes} % was slow one, with restore \def\uncatcodespacetokens {\catcode`\ =\@@space \catcode`\^^L=\@@ignore \catcode`\^^M=\@@endofline \catcode`\^^?=\@@ignore} %D \macros %D {setverbosecharacter,setverbosecscharacters} %D %D Next follows a definition that lets some shortcuts expand to %D themselves. This macro is meant for \POSTSCRIPT\ and \PDF\ %D code passed on to the backend. \newtoks\everyverbosechacters \def\setverbosecscharacter#1% {\edef#1{\string#1}} \def\setverbosecscharacters {\the\everyverbosechacters} \bgroup % if used often we can move the code inline \catcode`\|=\@@active \catcode`\~=\@@active \global \everyverbosechacters = {\setverbosecscharacter |\setverbosecscharacter ~% context specific \setverbosecscharacter\|\setverbosecscharacter\~% \setverbosecscharacter\:\setverbosecscharacter\;% \setverbosecscharacter\+\setverbosecscharacter\-% \setverbosecscharacter\[\setverbosecscharacter\]% \setverbosecscharacter\.\setverbosecscharacter\\% \setverbosecscharacter\)\setverbosecscharacter\(% \setverbosecscharacter\0\setverbosecscharacter\1% \setverbosecscharacter\2\setverbosecscharacter\3% \setverbosecscharacter\4\setverbosecscharacter\5% \setverbosecscharacter\6\setverbosecscharacter\7% \setverbosecscharacter\8\setverbosecscharacter\9% \setverbosecscharacter\n\setverbosecscharacter\s% \setverbosecscharacter\/} \egroup \protect \endinput