diff options
Diffstat (limited to 'Master/texmf-dist/tex/context/base/core-job.tex')
-rw-r--r-- | Master/texmf-dist/tex/context/base/core-job.tex | 495 |
1 files changed, 495 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/context/base/core-job.tex b/Master/texmf-dist/tex/context/base/core-job.tex new file mode 100644 index 00000000000..0a398f462de --- /dev/null +++ b/Master/texmf-dist/tex/context/base/core-job.tex @@ -0,0 +1,495 @@ +%D \module +%D [ file=core-job, % copied from main-001, +%D version=1997.03.31, +%D title=\CONTEXT\ Core Macros, +%D subtitle=Job Handling, +%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 is still to be split and documented. + +\writestatus{loading}{Context Core Macros / Job Handling} + +\unprotect + +\let \currentproject \empty +\let \currentproduct \empty +\let \currentenvironment \empty +\let \currentcomponent \empty + +\let \loadedfiles \empty +\let \processedfiles \empty + +\let \nomorefiles \relax + +\newcounter\textlevel +\newcounter\fileprocesslevel + +\setvalue{\c!file::0}{\jobname} + +\def\processedfile % is used in styles, don't change ! + {\getvalue{\c!file::\fileprocesslevel}} + +%\def\processfile#1% +% {\doglobal\increment\fileprocesslevel +% \setxvalue{\c!file::\fileprocesslevel}{#1}% +% \@EA\doglobal\@EA\addtocommalist\@EA{#1}\processedfiles +% \readlocfile{#1}{}{} +% \doglobal\decrement\fileprocesslevel} + +\def\dostarttextfile#1% + {\doglobal\increment\fileprocesslevel + \setxvalue{\c!file::\fileprocesslevel}{#1}% + \@EA\doglobal\@EA\addtocommalist\@EA{#1}\processedfiles} + +\def\dostoptextfile + {\doglobal\decrement\fileprocesslevel} + +\def\processlocalfile#1#2% + {% #1=\readlocfile|\readsetfile{dir} #2=filename + % #1{#2}\donothing\donothing + #1{#2}\donothing{\readfile{#2}\donothing\donothing}} + +\def\processfile#1% + {\ifx\allinputpaths\empty + \def\next{\processlocalfile\readlocfile}% + \else + \let\filepath\empty + \def\docommando##1% + {\doiffileelse{\pathplusfile{##1}{#1}}{\donetrue\def\filepath{##1}}\donefalse + \ifdone\expandafter\quitcommalist\fi}% + \doifparentfileelse{#1} % new + {\processcommacommand [\allinputpaths]\docommando} + {\processcommacommand[.,\allinputpaths]\docommando}% + \ifx\filepath\empty + \def\next{\processlocalfile\readlocfile}% fall back ../../.. + \else + \def\next{\processlocalfile{\readsetfile\filepath}}% file found + \fi + \fi + \next{#1}} + +\let\allinputpaths\empty + +% \def\usepath[#1]% +% {\def\docommando##1% +% {\doifelse{##1}\v!reset +% {\let\allinputpaths\empty} +% {\addtocommalist{##1}\allinputpaths}}% +% \processcommalist[#1]\docommando} +% +% \def\usesubpath[#1]% new, see webschrift for usage +% {\ifx\allinputpaths\empty +% \edef\allinputpaths{#1}% +% \else +% \def\docommando##1% +% {\def\dodocommando####1{\addtocommalist{##1/####1}\allinputpaths}% +% \processcommalist[#1]\dodocommando}% +% \processcommacommand[\allinputpaths]\docommando +% \fi} +% +% the following alternatives permit ../{name} i.e. braces + +\def\usepath[#1]% + {\def\docommando##1% + {\doifelse{##1}\v!reset + {\let\allinputpaths\empty} + {\sanitizefilename#1\to\ascii + \convertcommand\ascii\to\ascii + \addtocommalist\ascii\allinputpaths}}% + \processcommalist[#1]\docommando} + +\def\usesubpath[#1]% test for a real long time, permits ../{name} i.e. braces + {\ifx\allinputpaths\empty + \sanitizefilename#1\to\allinputpaths + \else + \def\docommando##1% + {\def\dodocommando####1% + {\sanitizefilename####1\to\ascii + \convertcommand\ascii\to\ascii + \addtocommalist{##1/\ascii}\allinputpaths}% + \processcommalist[#1]\dodocommando}% + \processcommacommand[\allinputpaths]\docommando + \fi} + +\def\registerfileinfo[#1#2]#3% geen \showmessage ? + {\writestatus\m!systems{#1#2 file #3 at line \the\inputlineno}% + % \pdfliteral{\letterpercent #1#2 file #3 at line \the\inputlineno}% + \immediatewriteutility{f #1 {#3}}} + +\ifx\preloadfonts \undefined \let\preloadfonts \relax \fi +\ifx\preloadspecials\undefined \let\preloadspecials\relax \fi + +% \def\loadsystemfiles +% {\reportprotectionstate +% \readsysfile\f!newfilename +% {\showmessage\m!systems2\f!newfilename}\donothing +% \readsysfile\f!oldfilename +% {\showmessage\m!systems2\f!oldfilename}\donothing +% \readsysfile\f!filfilename +% {\showmessage\m!systems2\f!filfilename}\donothing +% \readsysfile\f!sysfilename +% {\showmessage\m!systems2\f!sysfilename}\donothing} +% +% test \@@svgebied + +\def\loadallsystemfiles#1#2% + {\ifx\@@svdirectory\empty + \readsysfile{#1}{\showmessage\m!systems2{#1}}{#2}% + \else% yet undocumented + \def\doloadsystemfile##1% + {\readsetfile{##1}{#1}{\showmessage\m!systems2{#1}}{#2}}% + \processcommacommand[\@@svdirectory]\doloadsystemfile + \fi} + +\def\loadsystemfiles + {\reportprotectionstate + \readsysfile\f!newfilename + {\showmessage\m!systems2\f!newfilename}% + \donothing + \readsysfile\f!oldfilename + {\showmessage\m!systems2\f!oldfilename}% + \donothing + \loadallsystemfiles\f!filfilename + \donothing + \loadallsystemfiles\f!sysfilename + {\loadallsystemfiles{\f!sysfilename.rme}\donothing % new, fall back + \doglobal\appendtoks + \loadallsystemfiles\f!errfilename\donothing + \to\everygoodbye}} + + %\loadallsystemfiles\f!modfilename + % \donothing} + +%D Loading of \type {cont-usr.tex} (edited by the user) +%D and \type {cont-fmt.tex} (generated by texexec). + +\def\loaduserspecifications + {\readsysfile\f!usrfilename + {\showmessage\m!systems2\f!usrfilename}\donothing + \readjobfile\f!fmtfilename + {\showmessage\m!systems2\f!fmtfilename}\donothing} + +%D We don't want multiple jobfiles to interfere. + +\bgroup +\catcode`\%=\@@other +\xdef\texcommentsymbol{%} +\egroup + +\def\loadoptionfile + {\readjobfile{\jobname.\f!optionextension} + {\showmessage\m!systems2{\jobname.\f!optionextension}}% + %{\showmessage\m!systems2{\jobname.\f!optionextension}}} + {\writestatus\m!systems {no \jobname.\f!optionextension}}} + +% \newevery \everyjob \EveryJob +% \appendtoks ... \to \everyjob + +\appendtoks \loadsystemfiles \to \everyjob +\appendtoks \preloadfonts \to \everyjob +\appendtoks \settopskip \to \everyjob +\appendtoks \preloadlanguages \to \everyjob +\appendtoks \preloadspecials \to \everyjob +\appendtoks \openspecialfile \to \everyjob +%appendtoks \checkutilityfile \to \everyjob % obsolete +\appendtoks \openutilities \to \everyjob +\appendtoks \loadoptionfile \to \everyjob +%appendtoks \loadtwopassdata \to \everyjob +\appendtoks \checknotes \to \everyjob % depends on bodyfont +\appendtoks \initializeMPgraphics \to \everyjob % after loading system files + +\appendtoks \page[\v!last] \page \to \everybye +\appendtoks \ifarrangingpages\poparrangedpages\fi \to \everybye +\appendtoks \registerfileinfo[end]\jobname \to \everybye + +\appendtoks \savenofpages \to \everybye +\appendtoks \savenofsubpages \to \everybye + +\appendtoks \closeutilities \to \everygoodbye +\appendtoks \stopcopyingblocks \to \everygoodbye +\appendtoks \closespecialfile \to \everygoodbye + +\prependtoks \resetutilities \to \everystarttext % moved 28-02-2002 +\prependtoks \loadtwopassdata \to \everystarttext % moved 28-02-2002 +\appendtoks \checkreferences \to \everystarttext % new 04-12-1999 + +% Most natural ... +% +% \def\doateverystarttext +% {\the\everystarttext +% \global\let\doateverystarttext\relax} +% +% ... most practical, since we can load env's in a +% something.run file (nested \starttext's; see for +% instance x-res-08, where we definitely want to +% open the file!). + +\def\doateverystarttext + {\the\everystarttext + \global\everystarttext\emptytoks} + +\def\starttext + {\doateverystarttext + \ifnum\textlevel=\zerocount + \registerfileinfo[begin]\jobname + \expandafter\startcopyingblocks + \fi + \doglobal\increment\textlevel\relax} + +\def\stoptext + {\doglobal\decrement\textlevel\relax + \ifnum\textlevel>\zerocount \else + \the\everystoptext + %\the\everybye % + %\the\everygoodbye % == \end (new) + %\expandafter\normalend % + \expandafter\finalend + \fi} + +\let\normalend\end + +\def\finalend + {\ifnum\textlevel>\zerocount \else + \the\everybye + \the\everygoodbye + \global\everybye \emptytoks % rather unneeded + \global\everygoodbye\emptytoks % but for sure + \expandafter\normalend + \fi} + +\let\end\finalend + +\def\emergencyend + {\writestatus\m!systems{invalid \@EA\string\csname\e!start\v!text\endcsname...\@EA\string\csname\e!stop\v!text\endcsname\space structure}% + \stoptext} + +\def\currentfile{\inputfilename} + +\def\doexecutefileonce#1% + {\beforesplitstring#1\at.\to\currentfile + \fullexpandtwoargsafter\doifnotinset\currentfile\loadedfiles + {\fullexpandoneargafter\addtocommalist\currentfile\loadedfiles + \doexecutefile{#1}}} + +\def\doexecutefile#1% + {\registerfileinfo[begin]{#1}% + \dostarttextfile{#1}% + \processfile{#1}% + \dostoptextfile + \registerfileinfo[end]{#1}} + +\def\donotexecutefile#1% + {} + +\def\verwerkfile#1 % + {\doexecutefile{#1}} + +\def\useenvironment[#1]% maybe commalist + {\environment #1 } + +\def\environment #1 % at outermost level only + {\def\startenvironment ##1 {}% + \let\stopenvironment\relax + % why not \doexecutefile ? + \registerfileinfo[begin]{#1}% + \dostarttextfile{#1}% + \startreadingfile + \processfile{#1}% was : \readlocfile{#1}{}{} + \stopreadingfile + \dostoptextfile + \registerfileinfo[end]{#1}} + +\def\component #1 % at outermost level only + {\dostarttextfile{#1}% + \processfile{#1}% + \dostoptextfile} + +\newcounter\filelevel + +% \def\donextlevel#1#2#3#4#5#6\\% +% {\beforesplitstring#6\at.\to#1 +% \ifcase\filelevel\relax +% \starttext +% \def\project ##1 {#2{##1}}% +% \def\environment ##1 {#3{##1}}% +% \def\product ##1 {#4{##1}}% +% \def\component ##1 {#5{##1}}% +% \fi +% \increment\filelevel\relax +% \fullexpandoneargafter\addtocommalist{#1}\loadedfiles} +% +% \def\doprevlevel +% {\ifnum\filelevel=\plusone +% \expandafter\stoptext +% \else +% \decrement\filelevel\relax +% \expandafter\endinput +% \fi} + +\let\currentcomponent\v!text + +\def\donextlevel#1#2#3#4#5#6#7\\% + {\pushmacro\currentcomponent + \let\currentcomponent#1 + \setsystemmode\currentcomponent + \beforesplitstring#7\at.\to#2\relax + \ifcase\filelevel\relax + \starttext + \def\project ##1 {#3{##1}}% + \def\environment ##1 {#4{##1}}% + \def\product ##1 {#5{##1}}% + \def\component ##1 {#6{##1}}% + \fi + \increment\filelevel\relax + \fullexpandoneargafter\addtocommalist{#1}\loadedfiles} + +\def\doprevlevel + {\popmacro\currentcomponent + \setsystemmode\currentcomponent + \ifnum\filelevel=\plusone + \expandafter\stoptext + \else + \decrement\filelevel\relax + \expandafter\endinput + \fi} + +% \def\startproject #1 % +% {\donextlevel\currentproject +% \donotexecutefile\doexecutefileonce +% \doexecutefileonce\doexecutefile#1\\} +% +% \def\startproduct #1 % +% {\doateverystarttext +% \donextlevel\currentproduct +% \doexecutefileonce\doexecutefileonce +% \donotexecutefile\doexecutefile#1\\} +% +% \def\startcomponent #1 % +% {\doateverystarttext +% \donextlevel\currentcomponent +% \doexecutefileonce\doexecutefileonce +% \donotexecutefile\doexecutefile#1\\} +% +% \def\startenvironment #1 % +% {\donextlevel\currentenvironment +% \donotexecutefile\doexecutefileonce +% \donotexecutefile\donotexecutefile#1\\} + +\def\startproject #1 % + {\donextlevel\v!project\currentproject + \donotexecutefile\doexecutefileonce + \doexecutefileonce\doexecutefile#1\\} + +\def\startproduct #1 % + {\doateverystarttext + \donextlevel\v!product\currentproduct + \doexecutefileonce\doexecutefileonce + \donotexecutefile\doexecutefile#1\\} + +\def\startcomponent #1 % + {\doateverystarttext + \donextlevel\v!component\currentcomponent + \doexecutefileonce\doexecutefileonce + \donotexecutefile\doexecutefile#1\\} + +\def\startenvironment #1 % + {\donextlevel\v!environment\currentenvironment + \donotexecutefile\doexecutefileonce + \donotexecutefile\donotexecutefile#1\\} + +% \startproject test +% 1: \startmode[*project] project \stopmode \endgraf +% 2: \startmode[*product] product \stopmode \endgraf +% \stopproject + +\def\stopproject {\doprevlevel} +\def\stopproduct {\doprevlevel} +\def\stopcomponent {\doprevlevel} +\def\stopenvironment{\doprevlevel} + +% more or less replaced by modes + +\setvalue{\e!start\v!localenvironment}[#1]% + {\let\loadedlocalenvironments\empty + \def\docommando##1% + {\beforesplitstring##1\at.\to\someevironment + \fullexpandoneargafter\addtocommalist\someevironment\loadedlocalenvironments}% + \processcommalist[#1]\docommando + \fullexpandtwoargsafter\doifcommonelse % no longer next needed + {\currentproject,\currentproduct,% + \currentcomponent,\currentenvironment} + {\loadedlocalenvironments} + {\letvalue{\e!stop\v!localenvironment}\relax} + {\grabuntil{\e!stop\v!localenvironment}\relax}} + +\setvalue{\v!localenvironment}#1 {\doexecutefileonce{#1}} + +% Het <pagina>-karakter (FormFeed), wordt omgezet in \par + +\catcode`\^^L=\@@endofline + +% NOT TOEVOEGEN: \the\everytrace + +\neverypar=\emptytoks + +% \appendtoks \flushnotes \to \everypar +% \appendtoks \synchronizesidefloats \to \everypar +% \appendtoks \checkindentation \to \everypar +% \appendtoks \showparagraphnumber \to \everypar +% \appendtoks \flushmargincontents \to \everypar +% \appendtoks \flushcommentanchors \to \everypar +% \appendtoks \synchronizenotes \to \everypar + +% \appendtoks \flushnotes \to \everydisplay +% \appendtoks \adjustsidefloatdisplaylines \to \everydisplay + +%D Better here than in supp-mps: + +\def\executesystemcommand{\immediate\write18} + +% soon, when pdftex 1.22 is out in the field: +% +% \chardef\systemcommandmode\zerocount % 0=unknown 1=disabled 2=enabled +% +% \ifx\pdftexversion\undefined \else \ifnum\number\pdftexversion>122 +% \prependtoks +% \chardef\systemcommandmode \ifeof18 \plusone \else \plustwo \fi +% \to \everyjob +% \fi +% +% maybe in meta-ini +% +% \appendtoks +% \ifrunMPgraphics \ifcase\systemcommandmode \or +% \writestatus\m!systems{system commands are disabled}% +% \runMPgraphicsfalse +% \fi \fi +% \to \everyjob + +\ifx\etexversion\undefined \else \ifnum\etexversion<202 + \prependtoks + \writestatus\m!systems{eTeX version \number\etexversion\space -> too old (bugs)}% + \writeline + \to \everyjob +\fi \fi + +\ifx\pdftexversion\undefined \else \ifnum\number\pdftexversion<120 + \prependtoks + \writestatus\m!systems{pdfTeX version \number\pdftexversion\space -> please update}% + \writeline + \to \everyjob +\fi \fi + +\prependtoks \showcontextbanner \to \everyjob + +% Default-instellingen (verborgen) + +\resetutilities + +\protect \endinput |