diff options
Diffstat (limited to 'tex/context/base/mkii/xtag-exp.mkii')
-rw-r--r-- | tex/context/base/mkii/xtag-exp.mkii | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/tex/context/base/mkii/xtag-exp.mkii b/tex/context/base/mkii/xtag-exp.mkii new file mode 100644 index 000000000..9ecfcc5b1 --- /dev/null +++ b/tex/context/base/mkii/xtag-exp.mkii @@ -0,0 +1,90 @@ +%D \module +%D [ file=xtag-exp, +%D version=2001.08.20, +%D title=\CONTEXT\ XML Macros, +%D subtitle=Expansion, +%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. + +\writestatus{loading}{ConTeXt XML Macros / Expansion} + +\ifnum\texengine=\luatexengine \endinput \fi + +\unprotect + +%D Files + +\newcounter\XMLfilenesting \let\restoreXMLelements\relax + +\def\startXMLreading + {\increment \XMLfilenesting \relax + \ifcase\XMLfilenesting\or + \ifprocessingXML + \let\restoreXMLelements\relax + \else + \let\restoreXMLelements\disableXMLelements + \enableXMLelements + \fi + \fi} + +\def\stopXMLreading + {\ifcase\XMLfilenesting\or + \restoreXMLelements + \let\restoreXMLelements\relax + \fi + \decrement \XMLfilenesting \relax} + +\ifnum\texengine=\luatexengine + \def\enableXMLfiledata + {\prependtoks \enableXMLelements \to \mainoutput % brrr, will change + \appendtoks \forcefileexpansiontrue \to \everyenableXML + \let\enableXMLfiledata\relax} +\else + \def\enableXMLfiledata + {\prependtoks \enableXMLelements \to \mainoutput % brrr, will change + \appendtoks \startXMLreading \to \everybeforeutilityread + \appendtoks \stopXMLreading \to \everyafterutilityread + \appendtoks \forcefileexpansiontrue \to \everyenableXML + \let\enableXMLfiledata\relax} +\fi + +\setupXMLprocessing[\c!state=\v!start] + +\appendtoks + \ifproductionrun \enableXMLfiledata \fi +\to \aftersetupXMLprocessing + +%D Here we overload the mark handler. + +\ifnum\texengine=\luatexengine \else + + \def\XMLexpanded#1% + {\bgroup + \honorunexpanded + \dontexpandencoding + \xdef\@@globalexpanded{\noexpand#1}% why \noexpand? + \egroup + \@@globalexpanded} + + \let\normalsetnormalmark\setnormalmark + + \long\def\setnormalmark#1% overloaded + {\ifprocessingXML + \expandafter\setXMLexpandedmark + \else + \expandafter\normalsetnormalmark + \fi#1} + + \def\setXMLexpandedmark#1#2% using a tok prevents unwanted expansion in mark + {\XMLexpanded{\scratchtoks{\enableXMLelements#2}}% + \setxvalue{\@@crk\string#1}{\the\scratchtoks}% + \normalmarks#1{\the\scratchtoks}} + +\fi + +\protect \endinput |