diff options
author | Hans Hagen <pragma@wxs.nl> | 2011-01-24 23:51:00 +0100 |
---|---|---|
committer | Hans Hagen <pragma@wxs.nl> | 2011-01-24 23:51:00 +0100 |
commit | 2fb045c7c88895c00bbbdc935e0651f4e1879536 (patch) | |
tree | 35ebd4366aeae122a750ac7d4021e965d7042aa0 /tex/context/base/xtag-exp.mkii | |
parent | 1b64f6bc515ace3fb763a3c3b8110007e44119af (diff) | |
download | context-2fb045c7c88895c00bbbdc935e0651f4e1879536.tar.gz |
beta 2011.01.24 23:51
Diffstat (limited to 'tex/context/base/xtag-exp.mkii')
-rw-r--r-- | tex/context/base/xtag-exp.mkii | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/tex/context/base/xtag-exp.mkii b/tex/context/base/xtag-exp.mkii new file mode 100644 index 000000000..337b49348 --- /dev/null +++ b/tex/context/base/xtag-exp.mkii @@ -0,0 +1,88 @@ +%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 / 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. + +\writestatus{loading}{ConTeXt XML Macros / Expansion} + +\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 |