%D \module %D [ file=context, %D version=2019.07.24, % 2008.28.10, % 1995.10.10, %D title=\CONTEXT, %D subtitle=\CONTEXT\ Format Generation, %D author=Hans Hagen, % ɦɑns ɦɑˈχən %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. % http://build.contextgarden.net/waterfall?tag=c/lua(meta)tex %D Welcome to context, pronounced as kontekst (rather dutch) and not as conτεχt. \catcode`\{=1 \catcode`\}=2 \catcode`\#=6 %D From the next string (which is set by the script that assembles the distribution) %D later on we will calculate a number that can be used by use modules to identify %D the feature level. Starting with version 2004.8.30 the low level interface is %D english. Watch out and adapt your styles an modules. % \everypar{\writestatus{!!!!}{some spurious input in line \the\inputlineno}\wait} %D The order of loading will change when all modules have been cleaned up and the %D dependencies are more consistent. Beware, the version number has to match \type %D {YYYY.MM.DD HH:MM} format. \immutable\edef\contextformat {\jobname} \immutable\edef\contextversion{2022.12.22 22:14} %overloadmode 1 % check frozen / warning %overloadmode 2 % check frozen / error %overloadmode 3 % check frozen, primitive, permanent / warning \overloadmode 4 % check frozen, primitive, permanent / error %D Kind of special: \immutable\chardef\contextlmtxmode\directlua{tex.print(CONTEXTLMTXMODE or 0)}\relax \directlua{io.output():setvbuf("line")} %D For those who want to use this: \aliased\let\fmtname \contextformat \aliased\let\fmtversion\contextversion %D Loading: \immutable\edef\mksuffix {mkiv} \immutable\edef\contextmark{LMTX} \ifdefined\normalinput \else \aliased\let\normalinput\input \fi \permanent\protected\def\loadmarkfile#1{\normalinput{#1.\mksuffix}} \permanent\protected\def\loadmkivfile#1{\normalinput{#1.mkiv}} \permanent\protected\def\loadmkvifile#1{\normalinput{#1.mkvi}} \permanent\protected\def\loadmkxlfile#1{\normalinput{#1.mkxl}} \permanent\protected\def\loadmklxfile#1{\normalinput{#1.mklx}} %D First we load the system modules. These implement a lot of manipulation macros. %D We start with setting up some basic \TEX\ machinery. \loadmkxlfile{syst-ini} %D Some checking (more primitives are now defined): \ifdefined\defaultinterface \else \immutable\def\defaultinterface {english} \fi %ifdefined\messageinterface \else \immutable\let\messageinterface \defaultinterface \fi \ifdefined\defaultlanguagetag \else \immutable\def\defaultlanguagetag{en} \fi %D There is only this way to pass the version info to \LUA\ (currently). Hm, we could %D now put it into the environment. \newtoks\contextversiontoks \contextversiontoks\expandafter{\contextversion} % \normaleverypar{\wait} % uncomment for test of funny injections %D Now the more fundamental code gets defined. \loadmkxlfile{norm-ctx} \loadmkxlfile{syst-pln} %loadmkxlfile{syst-mes} \loadmkxlfile{luat-cod} \loadmkxlfile{luat-bas} \loadmkxlfile{luat-lib} \loadmkxlfile{luat-soc} \loadmkxlfile{catc-ini} \loadmkxlfile{catc-act} \loadmkxlfile{catc-def} \loadmkxlfile{catc-sym} \loadmkxlfile{toks-ini} \loadmkxlfile{cldf-ini} % \tracecatcodetables %D From here on we have \unexpanded being \normalprotected, as we already had %D \type {\unexpanded} long before etex came around. \loadmkxlfile{luat-ini} \loadmkxlfile{toks-scn} \loadmkxlfile{syst-aux} \loadmkxlfile{syst-lua} \loadmkxlfile{syst-con} \loadmkxlfile{syst-fnt} \loadmkxlfile{syst-rtp} \loadmkxlfile{luat-usr} \loadmklxfile{file-ini} \loadmklxfile{file-res} \loadmkxlfile{file-lib} \loadmkxlfile{core-lmt} %D This needs more checking for clashes: %D %D \starttyping % \doifelsefileexists{l-macro-imp-codes-luametatex.lua}{\registerctxluafile{l-macro-imp-codes-luametatex}{}}{} %D \stoptyping \loadmkxlfile{supp-dir} \loadmkxlfile{char-utf} \loadmkxlfile{char-ini} \loadmkxlfile{char-act} \loadmkxlfile{mult-ini} \loadmkxlfile{mult-sys} \loadmkxlfile{mult-aux} % \doiffileelse{mult-aux-new.mkxl}{\loadmkxlfile{mult-aux-new}}{\loadmkxlfile{mult-aux}} \loadmkxlfile{mult-def} %loadmarkfile{mult-chk} \loadmklxfile{mult-dim} \loadmkxlfile{cldf-int} % interface \loadmkxlfile{trac-ctx} % maybe move up \loadmkxlfile{toks-aux} \loadmkxlfile{attr-ini} \loadmkxlfile{bndr-ini} \loadmkxlfile{core-ini} \loadmkxlfile{core-env} \loadmkxlfile{layo-ini} \loadmkxlfile{node-ini} \loadmkxlfile{node-ext} \loadmkxlfile{node-syn} % \loadmkxlfile{cldf-bas} % basics / depends on nodes \loadmkxlfile{node-fin} \loadmkxlfile{node-mig} %loadmkxlfile{node-pag} \loadmkxlfile{driv-ini} % after node-ini (ext) \loadmkxlfile{back-ini} \loadmkxlfile{back-res} \loadmkxlfile{cldf-bas} % basics / depends on nodes \loadmkxlfile{attr-col} \loadmkxlfile{attr-lay} \loadmkxlfile{attr-neg} \loadmkxlfile{attr-eff} \loadmkxlfile{attr-alt} \loadmkxlfile{attr-mkr} \loadmkxlfile{trac-tex} \loadmkxlfile{trac-deb} % will move up \loadmkxlfile{supp-box} \loadmkxlfile{supp-ran} \loadmkxlfile{supp-mat} \loadmkxlfile{core-uti} \loadmklxfile{file-job} \loadmkxlfile{anch-pos} \loadmkxlfile{typo-ini} \loadmkxlfile{typo-lin} \loadmkxlfile{typo-bld} % par builders \loadmkxlfile{typo-inj} \loadmklxfile{file-syn} \loadmklxfile{file-mod} \loadmkxlfile{core-sys} \loadmkxlfile{core-con} \loadmkxlfile{cont-fil} \loadmkxlfile{regi-ini} \loadmkxlfile{enco-ini} \loadmkxlfile{hand-ini} \loadmkxlfile{lang-ini} \loadmkxlfile{lang-hyp} % also loads dis \loadmkxlfile{lang-lab} \loadmkxlfile{unic-ini} \loadmkxlfile{core-two} \loadmkxlfile{core-dat} \loadmkxlfile{colo-ini} \loadmkxlfile{colo-nod} \loadmkxlfile{colo-grp} % optional \loadmkxlfile{colo-ext} % \loadmkxlfile{node-bck} % overloads anch-pgr (experimental and undocumented) \loadmkxlfile{pack-cut} \loadmkxlfile{lang-mis} \loadmkxlfile{lang-url} \loadmkxlfile{lang-def} % \loadmkvifile{file-job} % why so late? \loadmkxlfile{symb-ini} % brrr depends on fonts \loadmkxlfile{sort-ini} \loadmklxfile{pack-mis} \loadmkxlfile{pack-ori} \loadmkxlfile{pack-rul} \loadmkxlfile{pack-mrl} \loadmklxfile{pack-bck} \loadmkxlfile{pack-fen} \loadmkxlfile{lxml-ini} \loadmkxlfile{lxml-sor} \loadmklxfile{typo-prc} \loadmkxlfile{typo-plc} \loadmklxfile{strc-ini} \loadmkxlfile{strc-tag} \loadmkxlfile{strc-doc} \loadmkxlfile{strc-num} \loadmkxlfile{strc-mar} \loadmkxlfile{strc-sbe} \loadmklxfile{strc-lst} \loadmkxlfile{strc-sec} \loadmkxlfile{strc-pag} % hm, depends on core-num \loadmkxlfile{strc-ren} %loadmarkfile{strc-xml} \loadmkxlfile{strc-def} % might happen later \loadmklxfile{strc-ref} %loadmarkfile{strc-reg} \loadmklxfile{strc-lev} % experiment \loadmkxlfile{spac-hor} \loadmkxlfile{spac-ali} \loadmkxlfile{spac-flr} \loadmkxlfile{spac-ver} % beware, hooks into strc-sec \loadmkxlfile{spac-lin} \loadmkxlfile{spac-pag} \loadmkxlfile{spac-par} \loadmkxlfile{spac-def} \loadmklxfile{spac-prf} \loadmkxlfile{spac-grd} \loadmklxfile{scrn-ini} \loadmklxfile{scrn-ref} \loadmkxlfile{pack-obj} \loadmklxfile{strc-itm} \loadmklxfile{strc-con} \loadmklxfile{strc-des} \loadmklxfile{strc-enu} \loadmkxlfile{strc-ind} \loadmkxlfile{strc-lab} \loadmkxlfile{strc-syn} % \loadmarkfile{core-sys} \loadmkxlfile{page-var} \loadmklxfile{page-otr} \loadmkxlfile{page-ini} \loadmkxlfile{page-ins} \loadmkxlfile{page-fac} \loadmkxlfile{page-brk} \loadmkxlfile{page-col} \loadmkxlfile{page-inf} \loadmkxlfile{page-flt} \loadmkxlfile{page-bck} \loadmkxlfile{page-not} \loadmkxlfile{page-one} \loadmkxlfile{page-lay} \loadmklxfile{page-box} \loadmklxfile{page-txt} \loadmkxlfile{typo-lbx} \loadmkxlfile{page-sid} \loadmklxfile{strc-flt} \loadmkxlfile{page-pst} \loadmklxfile{page-mbk} %loadmarkfile{page-mul} % \usecolumns[old-multicolumns] \loadmkxlfile{page-mix} \loadmkxlfile{page-smp} \loadmkxlfile{page-cst} \loadmkxlfile{page-pcl} % new \loadmkxlfile{pack-lyr} \loadmkxlfile{pack-pos} \loadmklxfile{page-mak} \loadmkxlfile{page-mcl} \loadmkxlfile{strc-reg} % uses mixed columns \loadmklxfile{page-lin} \loadmkxlfile{page-par} \loadmkxlfile{typo-pag} \loadmkxlfile{typo-mar} \loadmkxlfile{typo-itm} \loadmkxlfile{buff-ini} \loadmkxlfile{buff-ver} \loadmklxfile{buff-par} \loadmarkfile{buff-imp-tex} % optional as also runtime if not loaded \loadmarkfile{buff-imp-mp} % optional as also runtime if not loaded \loadmarkfile{buff-imp-lua} % optional as also runtime if not loaded \loadmarkfile{buff-imp-xml} % optional as also runtime if not loaded \loadmarkfile{buff-imp-parsed-xml} % optional %loadmarkfile{buff-imp-parsed-lua} % optional \loadmkxlfile{strc-blk} \loadmkxlfile{page-imp} \loadmklxfile{page-sel} % optional \loadmklxfile{page-inj} % optional \loadmklxfile{scrn-pag} \loadmklxfile{scrn-wid} \loadmklxfile{scrn-but} \loadmklxfile{scrn-bar} \loadmkxlfile{page-com} % optional (after scrn-pag) \loadmkxlfile{strc-bkm} % bookmarks \loadmkxlfile{java-ini} \loadmklxfile{scrn-fld} \loadmklxfile{scrn-hlp} \loadmkxlfile{char-enc} \loadmklxfile{font-lib} % way too late but after language \loadmklxfile{font-fil} \loadmklxfile{font-var} \loadmklxfile{font-fea} \loadmklxfile{font-mat} \loadmklxfile{font-ini} \loadmklxfile{font-glf} \loadmklxfile{font-sym} \loadmklxfile{font-sty} \loadmklxfile{font-set} \loadmklxfile{font-emp} \loadmkxlfile{font-pre} \loadmkxlfile{font-unk} \loadmkxlfile{font-tra} \loadmkxlfile{font-chk} \loadmkxlfile{font-uni} \loadmklxfile{font-col} \loadmklxfile{font-gds} \loadmklxfile{font-aux} \loadmklxfile{font-sel} \loadmkxlfile{font-tex} \loadmkxlfile{typo-tal} \loadmkxlfile{typo-par} % par builders (uses fonts) %loadmkxlfile{typo-lbx} \loadmkxlfile{typo-adj} \loadmkxlfile{typo-ada} \loadmkxlfile{tabl-com} %loadmarkfile{tabl-pln} \loadmkxlfile{tabl-tab} % thrd-tab stripped and merged \loadmkxlfile{tabl-tbl} \loadmkxlfile{tabl-ntb} \loadmkxlfile{tabl-nte} \loadmkxlfile{tabl-ltb} \loadmkxlfile{tabl-frm} \loadmkxlfile{tabl-tsp} \loadmklxfile{tabl-xtb} \loadmkxlfile{tabl-mis} \loadmkxlfile{typo-lan} \loadmkxlfile{lxml-css} \loadmkxlfile{spac-chr} % depends on fonts \loadmkxlfile{blob-ini} \loadmkxlfile{trac-vis} \loadmkxlfile{trac-jus} \loadmkxlfile{typo-cln} \loadmkxlfile{typo-wrp} \loadmkxlfile{typo-spa} \loadmkxlfile{typo-krn} \loadmkxlfile{typo-hid} \loadmklxfile{typo-itc} \loadmkxlfile{typo-dir} \loadmkxlfile{typo-brk} \loadmkxlfile{typo-cap} \loadmkxlfile{typo-dig} \loadmkxlfile{typo-rep} \loadmklxfile{typo-txt} \loadmkxlfile{typo-drp} \loadmkxlfile{typo-fln} \loadmkxlfile{typo-sus} \loadmkxlfile{typo-lig} \loadmkxlfile{typo-chr} \loadmkxlfile{typo-rub} \loadmkxlfile{typo-fkr} \loadmkxlfile{typo-pnc} \loadmklxfile{type-ini} \loadmkxlfile{type-set} \loadmkxlfile{scrp-ini} \loadmkxlfile{symb-emj} \loadmkxlfile{lang-tra} % can be optional (discussion with mm sideeffect) \loadmkxlfile{lang-wrd} % can be optional (discussion with mm sideeffect) \loadmkxlfile{lang-rep} % can be optional (bt 2013 side effect) \loadmkxlfile{mlib-ctx} % messy order \loadmkxlfile{meta-ini} \loadmkxlfile{meta-tex} \loadmkxlfile{meta-fun} \loadmkxlfile{meta-pag} \loadmkxlfile{meta-grd} \loadmkxlfile{meta-fnt} \loadmkxlfile{meta-nod} \loadmkxlfile{meta-lua} \loadmkxlfile{meta-mac} \loadmkxlfile{page-mrk} % depends on mp \loadmkxlfile{page-flw} \loadmkxlfile{page-spr} \loadmkxlfile{page-plg} \loadmkxlfile{page-str} \loadmkxlfile{anch-pgr} % can be moved up (nicer for dependencies) \loadmklxfile{anch-bck} \loadmkxlfile{anch-tab} % overloads tabl-tbl \loadmkxlfile{anch-bar} \loadmkxlfile{anch-snc} \loadmkxlfile{math-ini} % way after font-pre ! \loadmkxlfile{math-pln} \loadmkxlfile{math-for} \loadmkxlfile{math-def} % also saves some meanings \loadmkxlfile{math-ali} \loadmklxfile{math-stc} \loadmkxlfile{math-frc} \loadmkxlfile{math-mis} \loadmkxlfile{math-scr} \loadmkxlfile{math-int} \loadmkxlfile{math-dif} \loadmkxlfile{math-del} \loadmkxlfile{math-fen} \loadmkxlfile{math-lop} \loadmklxfile{math-acc} \loadmklxfile{math-rad} \loadmklxfile{math-dld} \loadmkxlfile{math-inl} \loadmkxlfile{math-dis} %loadmkxlfile{math-lan} \loadmkxlfile{math-toy} \loadmkxlfile{math-twk} \loadmkxlfile{strc-mat} \loadmkxlfile{chem-ini} \loadmkxlfile{chem-str} \loadmkxlfile{typo-scr} \loadmkxlfile{phys-dim} \loadmkxlfile{node-rul} % beware, defined \underbar so after math \loadmkxlfile{node-bck} % overloads anch-pgr (experimental and undocumented) \loadmklxfile{font-sol} % font solutions \loadmklxfile{strc-not} \loadmklxfile{strc-lnt} \loadmkxlfile{strc-tnt} \loadmkxlfile{strc-usr} \loadmkxlfile{pack-com} \loadmkxlfile{math-com} \loadmkxlfile{typo-del} \loadmkxlfile{grph-trf} \loadmkxlfile{grph-inc} \loadmkxlfile{grph-fig} \loadmkxlfile{grph-raw} \loadmkxlfile{grph-rul} \loadmkxlfile{grph-pat} \loadmkxlfile{pack-box} \loadmkxlfile{pack-mat} \loadmkxlfile{pack-bar} \loadmkxlfile{page-app} \loadmkxlfile{meta-fig} \loadmkxlfile{page-ffl} \loadmkxlfile{page-blk} \loadmkxlfile{lang-spa} % will become obsolete \loadmkxlfile{lang-hup} \loadmkxlfile{typo-ovl} % fuzzy project (tracing) code \loadmkxlfile{typo-syn} % experiment % old bibtex support: (will be m-oldbibtex.mkiv) % \loadmarkfile{bibl-bib} % \loadmarkfile{bibl-tra} % new bibtex support: \loadmkxlfile{publ-ini} %loadmkxlfile{publ-tra} \loadmkxlfile{publ-xml} \loadmkxlfile{publ-old} %loadmarkfile{x-xtag} % no longer preloaded \loadmkxlfile{meta-xml} \loadmkxlfile{cont-log} \loadmkxlfile{cldf-ver} % verbatim, this can come late \loadmkxlfile{cldf-com} % commands, this can come late \loadmkxlfile{core-ctx} % this order might change but we need to check depedencies / move to another namespace \loadmkxlfile{core-def} %usemodule[x][res-04] % xml resource libraries %usemodule[x][res-08] % rlx runtime conversion %usemodule[x][res-12] % rli external indentification % now we hook in backend code (needs checking) \loadmkxlfile{driv-shp} \loadmkxlfile{anch-loc} % for now here (after driver) \loadmkxlfile{back-exp} \loadmkxlfile{back-imp-pdf} \loadmkxlfile{back-imp-mps} \loadmkxlfile{back-imp-lua} \loadmkxlfile{mlib-pdf} \loadmkxlfile{mlib-pps} \loadmkxlfile{meta-pdf} \loadmkxlfile{meta-blb} \loadmkxlfile{grph-epd} \loadmkxlfile{anch-box} \loadmkxlfile{typo-shp} \loadmkxlfile{math-inc} % an experiment \loadmkxlfile{publ-inc} % an experiment \loadmkxlfile{task-ini} \loadmkxlfile{syst-cmp} % compatibility stuff moved here \loadmkxlfile{libs-ini} \loadmkxlfile{cont-run} % the main runner (used in cont-yes.mkiv) \setupcurrentlanguage[\defaultlanguagetag] \prependtoks \ctxlua{statistics.starttiming(statistics)}% \to \everyjob \appendtoks \ctxlua{statistics.stoptiming(statistics)}% \to \everyjob % \appendtoks % \ctxlua{job.prepare()}% % \to \everyjob % \appendtoks % \enabletrackers[*]% % \to \everyjob \appendtoks \ctxlua{statistics.savefmtstatus("\jobname","\contextversion","context.mkxl","\contextbanner")}% can become automatic \to \everydump % maybe some day (but also inhibits): % % \prependtoks % \overloadmode 255 % \to \everyjob \overloadmode\zerocount % for now \errorstopmode \dump \endinput