diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-12 23:45:13 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-12 23:45:13 +0000 |
commit | 92a15e15b276458e10aa05016bf472e8c6dd3eb0 (patch) | |
tree | af0343097e5f497167cefa16ed45c03475b98c37 /Master/texmf-dist/tex/context/base/core-var.tex | |
parent | df014cf02a62504f6b3e7a4398fb1e093b84f114 (diff) |
context
git-svn-id: svn://tug.org/texlive/trunk@608 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/context/base/core-var.tex')
-rw-r--r-- | Master/texmf-dist/tex/context/base/core-var.tex | 306 |
1 files changed, 306 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/context/base/core-var.tex b/Master/texmf-dist/tex/context/base/core-var.tex new file mode 100644 index 00000000000..1fe89af0e39 --- /dev/null +++ b/Master/texmf-dist/tex/context/base/core-var.tex @@ -0,0 +1,306 @@ +%D \module +%D [ file=core-var, +%D version=1998.02.21, +%D title=\CONTEXT\ Core Macros, +%D subtitle=Variables, +%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 Core Macros / Variables} + +\unprotect + +%D \macros +%D {every...} +%D +%D A few every's. + +\newevery \everyshipout \relax +\newevery \everybeforeshipout \relax +\newevery \everyaftershipout \relax +\newevery \everyfirstshipout \relax +\newevery \everylastshipout \relax +\newevery \everybye \relax +\newevery \everygoodbye \relax +\newevery \everystarttext \relax +\newevery \everystoptext \relax +\newevery \everyforgetall \relax +\newevery \everybeforepagebody \relax +\newevery \everyafterpagebody \relax \let \everypagebody \everybeforepagebody % backward compatible +\newevery \everybeforeutilityread \relax +\newevery \everyafterutilityread \relax + +%newevery \everybeforeutilitywrite \relax + +\newevery \everycleanupfeatures \relax \def\cleanupfeatures{\the\everycleanupfeatures} +\newevery \everyinsidefloat \relax +\newevery \everyheadstart \relax +\newevery \everyendoftextbody \relax +\newevery \everybeginofpar \relax +\newevery \everyendofpar \relax +\newevery \everylistentry \relax + +%D For shared \type {\everymath} and \type {\everydisplay}: + +\newevery \everymathematics \relax + +\prependtoks \the\everymathematics \to \everymath +\prependtoks \the\everymathematics \to \everydisplay + +% \newevery \everyparflush \relax % collected nodes + +%D Experimental (used in xml <p> .. </p> + +\def\bpar{\the\everybeginofpar\ignorespaces} % may interfere with \everypar +\def\epar{\ifhmode\removeunwantedspaces\the\everyendofpar\fi} % test prevents problems with \bpar\epar + +%D More generic (used to be pushcolor etc) + +\newtoks\everypushproperties +\newtoks\everypopproperties +\newtoks\everypopsplitproperties + +\newtoks\everystarttextproperties +\newtoks\everystoptextproperties + +\def\pushproperties {\the\everypushproperties} +\def\popproperties {\the\everypopproperties} +\def\popsplitproperties {\the\everypopsplitproperties} + +\def\starttextproperties{\the\everystarttextproperties} +\def\stoptextproperties {\the\everystoptextproperties} + +%D \macros +%D {defineinputmode,setinputmode} +%D +%D New. Some work needs to be done. + +\def\defineinputmode[#1]{\@EA\newtoks\csname every#1inputmode\endcsname} +%def\setinputmode [#1]{\the \csname every#1inputmode\endcsname} +\def\setinputmode [#1]{\the\executeifdefined{every#1inputmode}\emptytoks} + +\defineinputmode [TEX] +\defineinputmode [XML] + +\setinputmode [TEX] + +%D \macros +%D {trialtypesetting} +%D +%D We disable trial typesetting in the output routine, +%D just to be sure. + +\prependtoks \trialtypesettingfalse \to \everybeforepagebody + +%D \macros +%D {starttextdata} +%D +%D This is a user macro (appending to every last shipout is not +%D really user friendly. + +\newtoks \collectedtextdata + +\long\def\starttextdata#1\stoptextdata + {\doglobal\appendtoks#1\to\collectedtextdata} + +\def\flushtextdata + {\vsmashed{\the\collectedtextdata}% all dimensions zero + \global\collectedtextdata\emptytoks + \globallet\flushtextdata\donothing} + +\prependtoks \flushtextdata \to \everylastshipout + +%D \macros +%D {ifprocessingXML} +%D +%D We need this one even if no \XML\ is supported. + +\newif\ifprocessingXML + +%D \macros +%D {ifproductionrun} +%D +%D This boolean can be used to bypass certain +%D initializations. + +\newif\ifproductionrun \appendtoks \productionruntrue \to \everydump + +\appendtoks \ifcase\protectionlevel\else\reportunprotection\fi \to \everydump + +%D \macros +%D {everyboxedcontent, ifboxedcontent, +%D startboxedcontent, stopboxedcontent} +%D +%D This one is relatively new and will be used as a more +%D robust test for inner situations. + +\newif \ifboxedcontent +\newevery \everyboxedcontent \relax + +\appendtoks \boxedcontenttrue \to \everyboxedcontent + +\def\startboxedcontent{\bgroup\the\everyboxedcontent} +\let\stopboxedcontent \egroup + +%D \macros +%D {fastmode} +%D +%D The command \type {\fastmode} disables some time consuming +%D typesetting. + +\let\normalwritestatus\writestatus + +\newevery \everyfastmode \relax + +\newif\iffastmode + +\def\fastmode + {\fastmodetrue + \the\everyfastmode} + +\def\silentmode % ook hier \everysilentmode net als \fastmode + {\showmessagesfalse + \showwarningsfalse + \let\writestatus\gobbletwoarguments} + +%D \macros +%D {pdfoutput} +%D +%D There are some fundamental differences between producing +%D \DVI\ and \PDF\ output, especially when we use \PDFTEX, like +%D object reuse, one pass graphic inclusion and the lack of a +%D postprocessing stage. Because we must make sure that +%D \CONTEXT\ knows what it's up to, we always default to \DVI\ +%D mode, even when users explicitly ask for \PDF\ output in the +%D \PDFTEX\ configuration file. + +\ifx\pdfoutput\undefined \else + + \prependtoks \pdfoutput=0 \to \everyjob + +\fi + +%D \macros +%D {setvariables,getvariable,getvariabledefault} +%D +%D \starttyping +%D \setvariables[xx][title=] +%D \setvariables[xx][title=test test] +%D \setvariables[xx][title=test $x=1$ test] % fatal error reported +%D \setvariables[xx][title=test {$x=1$} test] +%D \setvariables[xx][title] % fatal error reported +%D \setvariables[xx][titletitel=e] +%D \stoptyping + +\def\??vars{@@vars} + +\def\setvariables {\dotripleargument\dosetvariables[\getrawparameters ]} +\def\setevariables{\dotripleargument\dosetvariables[\getraweparameters]} +\def\setgvariables{\dotripleargument\dosetvariables[\getrawgparameters]} +\def\setxvariables{\dotripleargument\dosetvariables[\getrawxparameters]} + +\def\globalsetvariables % obsolete + {\dotripleargument\dosetvariables[\globalgetrawparameters]} + +\long\def\dosetvariables[#1][#2][#3]% + {\errorisfataltrue + \def\currentvariableclass{#2}% + \getvariable{#2}\s!reset + #1[\??vars:#2:][#3]% + \getvariable{#2}\s!set + \errorisfatalfalse} + +\beginTEX + +\def\getvariable#1#2% to be sped up + {\csname + \ifundefined{\??vars:#1:#2}\s!empty\else\??vars:#1:#2\fi + \endcsname} + +\endTEX + +\beginETEX \ifcsname + +\def\getvariable#1#2% to be sped up + {\csname + \ifcsname\??vars:#1:#2\endcsname\??vars:#1:#2\else\s!empty\fi + \endcsname} + +\endETEX + +\def\showvariable#1#2% + {\showvalue{\ifundefined{\??vars:#1:#2}\s!empty\else\??vars:#1:#2\fi}} + +\let\currentvariableclass\empty + +%D \macros +%D {doifelsevariable,doifvariable,doifnotvariable} +%D +%D A few trivial macros: + +\def\doifelsevariable#1#2% + {\ifundefined{\??vars:#1:#2}% + \expandafter\secondoftwoarguments + \else + \expandafter\firstoftwoarguments + \fi} + +\def\doifvariable#1#2% + {\ifundefined{\??vars:#1:#2}% + \expandafter\gobbleoneargument + \else + \expandafter\firstofoneargument + \fi} + +\def\doifnotvariable#1#2% + {\ifundefined{\??vars:#1:#2}% + \expandafter\firstofoneargument + \else + \expandafter\gobbleoneargument + \fi} + +\def\getvariabledefault#1#2% #3% + {\executeifdefined{\??vars:#1:#2}}% {#3} + +%D \macros +%D {checkvariables} +%D +%D I'll probably forget that this on exists. + +\def\checkvariables + {\dodoubleargument\docheckvariables} + +\def\docheckvariables + {\dogetparameters\docheckrawvalue} + +\def\docheckrawvalue#1#2#3% + {\doifundefined {\??vars:#1:#2}{\setvalue{\??vars:#1:#2}{#3}} + {\doifvaluenothing{\??vars:#1:#2}{\setvalue{\??vars:#1:#2}{#3}}}} + +%D We store some original meanings, maybe in \type +%D {math-ini}. + +\let\normalat \at +\let\normalin \in +\let\normalfrom \from +\let\normalover \over +\let\normalabout \about + +\let\normalabove \above +\let\normalatop \atop + +\let\normaloverwithdelims \overwithdelims +\let\normalabovewithdelims\abovewithdelims +\let\normalatopwithdelims \atopwithdelims + +%D Add-ons: + +\let\startlayoutcomponent\gobbletwoarguments +\let\stoplayoutcomponent \relax + +\protect \endinput |