diff options
author | Marius <mariausol@gmail.com> | 2011-01-31 00:20:51 +0200 |
---|---|---|
committer | Marius <mariausol@gmail.com> | 2011-01-31 00:20:51 +0200 |
commit | 91675d8e11906bc15351278f8865d41de6bcc06d (patch) | |
tree | da027e5dd2b69bb8f0b19c774c222c098bbfc4b7 /tex/context/base/catc-act.mkiv | |
parent | 3019c4ccfb0d984b45670a86d2400a6aacfbaa68 (diff) | |
download | context-91675d8e11906bc15351278f8865d41de6bcc06d.tar.gz |
beta 2011.01.23 20:36
Diffstat (limited to 'tex/context/base/catc-act.mkiv')
-rw-r--r-- | tex/context/base/catc-act.mkiv | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/tex/context/base/catc-act.mkiv b/tex/context/base/catc-act.mkiv new file mode 100644 index 000000000..2cde28e44 --- /dev/null +++ b/tex/context/base/catc-act.mkiv @@ -0,0 +1,65 @@ +%D \module +%D [ file=catc-act, +%D version=2006.09.18, +%D title=\CONTEXT\ Catcode Macros, +%D subtitle=Default Catcode Tables, +%D author=Hans Hagen, +%D date=\currentdate, +%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%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 This module deals with some active character handling. Use +%D with care. + +%D \macros +%D {installactivecharacter} + +\def\installactivecharacter#1 % + {\edef\temp{\detokenize{#1}}% + \cctcounterc\expandafter`\temp\relax % relax needed + \expandafter\startextendcatcodetable + \expandafter\ctxcatcodes\expandafter\catcode\the\cctcounterc\activecatcode + \stopextendcatcodetable + \letcatcodecommand \ctxcatcodes \cctcounterc \temp \relax + \ifnum\currentcatcodetable=\ctxcatcodes \setcatcodetable\ctxcatcodes \fi} + +%D \macros +%D {defineactivecharacter} +%D +%D Use this one with care, esp in combination with catcode +%D vectors. There are better ways now. + +\chardef\activehackcode=`~ + +\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}}} + +\chardef\activecharactermode\plusone % overloading still backward compatible + +\def\dodohandleactivecharacter#1#2{#2} +\def\donthandleactivecharacter#1#2{\noexpand#1} + +\def\dohandleactivecharacter + {\ifcase\activecharactermode + \expandafter\donthandleactivecharacter + \else + \expandafter\dodohandleactivecharacter + \fi} + +\def\makecharacteractive #1 {\catcode`#1\active} + +\def\installanddefineactivecharacter #1 % #2% + {\normalexpanded{\noexpand\installactivecharacter \utfchar{#1} }% + \defineactivecharacter #1 }% {#2}} + +\endinput |