diff options
Diffstat (limited to 'Master/texmf-dist/tex/context/base/syst-cat.tex')
-rw-r--r-- | Master/texmf-dist/tex/context/base/syst-cat.tex | 48 |
1 files changed, 44 insertions, 4 deletions
diff --git a/Master/texmf-dist/tex/context/base/syst-cat.tex b/Master/texmf-dist/tex/context/base/syst-cat.tex index 53bfc29b252..c4f6711ed6c 100644 --- a/Master/texmf-dist/tex/context/base/syst-cat.tex +++ b/Master/texmf-dist/tex/context/base/syst-cat.tex @@ -37,22 +37,62 @@ %D Once a catcode is assigned, the next assignments will happen faster. +% (expandable) let + \def\letcatcodecommand {\afterassignment\letcatcodecommanda\cctcountera} \def\letcatcodecommanda{\afterassignment\letcatcodecommandb\cctcounterb} -\def\letcatcodecommandb % each time time - {\ifcsname CCD:\number\cctcountera:\number\cctcounterb\endcsname - \csname CCD:\number\cctcountera:\number\cctcounterb\expandafter\endcsname +\def\letcatcodecommandb % each time + {\ifcsname CCL:\number\cctcountera:\number\cctcounterb\endcsname + \csname CCL:\number\cctcountera:\number\cctcounterb\expandafter\endcsname \else \expandafter\letcatcodecommandc \fi} \def\letcatcodecommandc % only first time - {\expandafter\gdef\csname CCD:\number\cctcountera:\number\cctcounterb\expandafter\endcsname\expandafter + {\expandafter\gdef\csname CCL:\number\cctcountera:\number\cctcounterb\expandafter\endcsname\expandafter {\expandafter\let\csname CCC:\number\cctcountera:\number\cctcounterb\endcsname}% \reinstatecatcodecommanda + \csname CCL:\number\cctcountera:\number\cctcounterb\endcsname} + +% expandable def + +\def\defcatcodecommand {\afterassignment\defcatcodecommanda\cctcountera} +\def\defcatcodecommanda{\afterassignment\defcatcodecommandb\cctcounterb} + +\def\defcatcodecommandb % each time + {\ifcsname CCD:\number\cctcountera:\number\cctcounterb\endcsname + \csname CCD:\number\cctcountera:\number\cctcounterb\expandafter\endcsname + \else + \expandafter\defcatcodecommandc + \fi} + +\def\defcatcodecommandc % only first time + {\expandafter\gdef\csname CCD:\number\cctcountera:\number\cctcounterb\expandafter\endcsname + \expandafter##\expandafter1\expandafter + {\expandafter\def\csname CCC:\number\cctcountera:\number\cctcounterb\endcsname{##1}}% + \reinstatecatcodecommanda \csname CCD:\number\cctcountera:\number\cctcounterb\endcsname} +% un expandable def (e.g. used for discretionaries) + +\def\uedcatcodecommand {\afterassignment\uedcatcodecommanda\cctcountera} +\def\uedcatcodecommanda{\afterassignment\uedcatcodecommandb\cctcounterb} + +\def\uedcatcodecommandb % each time + {\ifcsname CCU:\number\cctcountera:\number\cctcounterb\endcsname + \csname CCU:\number\cctcountera:\number\cctcounterb\expandafter\endcsname + \else + \expandafter\uedcatcodecommandc + \fi} + +\def\uedcatcodecommandc % only first time + {\expandafter\gdef\csname CCU:\number\cctcountera:\number\cctcounterb\expandafter\endcsname + \expandafter##\expandafter1\expandafter + {\expandafter\unexpanded\expandafter\def\csname CCC:\number\cctcountera:\number\cctcounterb\endcsname{##1}}% + \reinstatecatcodecommanda + \csname CCU:\number\cctcountera:\number\cctcounterb\endcsname} + \def\reinstatecatcodecommand{\afterassignment\reinstatecatcodecommanda\cctcounterb} \def\reinstatecatcodecommanda % can be used when a direct definition has been done |