diff options
Diffstat (limited to 'Master/texmf-dist/tex/context/base/catc-act.mkiv')
-rw-r--r-- | Master/texmf-dist/tex/context/base/catc-act.mkiv | 59 |
1 files changed, 33 insertions, 26 deletions
diff --git a/Master/texmf-dist/tex/context/base/catc-act.mkiv b/Master/texmf-dist/tex/context/base/catc-act.mkiv index 2cde28e44f1..df228c20322 100644 --- a/Master/texmf-dist/tex/context/base/catc-act.mkiv +++ b/Master/texmf-dist/tex/context/base/catc-act.mkiv @@ -5,7 +5,7 @@ %D subtitle=Default Catcode Tables, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%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 @@ -14,17 +14,22 @@ %D This module deals with some active character handling. Use %D with care. +\unprotect + %D \macros %D {installactivecharacter} -\def\installactivecharacter#1 % - {\edef\temp{\detokenize{#1}}% - \cctcounterc\expandafter`\temp\relax % relax needed +\let\m_syst_catcodes_temp\empty + +\normalprotected\def\installactivecharacter#1 % + {\edef\m_syst_catcodes_temp{\detokenize{#1}}% + \c_syst_catcodes_c\expandafter`\m_syst_catcodes_temp\relax % relax needed \expandafter\startextendcatcodetable - \expandafter\ctxcatcodes\expandafter\catcode\the\cctcounterc\activecatcode + \expandafter\ctxcatcodes\expandafter\catcode\the\c_syst_catcodes_c\activecatcode \stopextendcatcodetable - \letcatcodecommand \ctxcatcodes \cctcounterc \temp \relax - \ifnum\currentcatcodetable=\ctxcatcodes \setcatcodetable\ctxcatcodes \fi} + \letcatcodecommand \ctxcatcodes \c_syst_catcodes_c \m_syst_catcodes_temp \relax + \ifnum\currentcatcodetable=\ctxcatcodes \setcatcodetable\ctxcatcodes \fi + \let\m_syst_catcodes_temp\empty} %D \macros %D {defineactivecharacter} @@ -32,34 +37,36 @@ %D Use this one with care, esp in combination with catcode %D vectors. There are better ways now. -\chardef\activehackcode=`~ +\setnewconstant\c_syst_catcodes_hack\tildeasciicode % also defined in catc-ini.mkiv -\def\defineactivecharacter #1#2 #3% - {\cctcounterc\uccode\activehackcode - \if#1"\uccode\activehackcode\expandafter\doifnumberelse\expandafter{\string#1#2}\empty #1#2\else - \uccode\activehackcode\expandafter\doifnumberelse\expandafter{\string#1#2}\empty`#1#2\fi - \catcode\uccode\activehackcode\activecatcode - \uppercase{\def\next{~}}% - \uccode\activehackcode\cctcounterc - \expandafter\expandafter\expandafter\def\expandafter\next\expandafter - {\expandafter\dohandleactivecharacter\next{#3}}} +\normalprotected\def\defineactivecharacter #1#2 #3% uses \doifnumberelse which is not yet defined + {\c_syst_catcodes_c\uccode\c_syst_catcodes_hack + \if#1"\uccode\c_syst_catcodes_hack\expandafter\doifnumberelse\expandafter{\string#1#2}\empty #1#2\else + \uccode\c_syst_catcodes_hack\expandafter\doifnumberelse\expandafter{\string#1#2}\empty`#1#2\fi + \catcode\uccode\c_syst_catcodes_hack\activecatcode + \uppercase{\def\m_syst_catcodes_temp{~}}% brrr + \uccode\c_syst_catcodes_hack\c_syst_catcodes_c + \expandafter\expandafter\expandafter\def\expandafter\m_syst_catcodes_temp\expandafter + {\expandafter\syst_catcodes_handle\m_syst_catcodes_temp{#3}}% + \let\m_syst_catcodes_temp\empty} \chardef\activecharactermode\plusone % overloading still backward compatible -\def\dodohandleactivecharacter#1#2{#2} -\def\donthandleactivecharacter#1#2{\noexpand#1} - -\def\dohandleactivecharacter +\def\syst_catcodes_handle {\ifcase\activecharactermode - \expandafter\donthandleactivecharacter + \expandafter\syst_catcodes_handle_nop \else - \expandafter\dodohandleactivecharacter + \expandafter\syst_catcodes_handle_yes \fi} -\def\makecharacteractive #1 {\catcode`#1\active} +\def\syst_catcodes_handle_yes#1#2{#2} +\def\syst_catcodes_handle_nop#1#2{\noexpand#1} + +\normalprotected\def\makecharacteractive #1 % + {\catcode`#1\activecatcode} -\def\installanddefineactivecharacter #1 % #2% +\normalprotected\def\installanddefineactivecharacter #1 % #2% {\normalexpanded{\noexpand\installactivecharacter \utfchar{#1} }% \defineactivecharacter #1 }% {#2}} -\endinput +\protect \endinput |