diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/stex')
56 files changed, 2125 insertions, 5746 deletions
diff --git a/Master/texmf-dist/tex/latex/stex/cmath/cmath.sty b/Master/texmf-dist/tex/latex/stex/cmath/cmath.sty index c94906d6fd2..86e08c6ad77 100644 --- a/Master/texmf-dist/tex/latex/stex/cmath/cmath.sty +++ b/Master/texmf-dist/tex/latex/stex/cmath/cmath.sty @@ -7,23 +7,32 @@ %% cmath.dtx (with options: `package') %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesPackage{cmath}[2012/01/28 v0.1 inline content math] +\ProvidesPackage{cmath}[2016/04/06 v0.1 inline content math] +\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{presentation}} \ProcessOptions +\RequirePackage{presentation} -\newcommand{\vname}[2][]{#2% +\newcommand\vname[2][]{#2% \def\@opt{#1}% \ifx\@opt\@empty\else\expandafter\gdef\csname MOD@name@#1\endcsname{#2}\fi} \def\vnref#1{\csname MOD@name@#1\endcsname} -\newcommand{\primvar}[2][]{\vname[#1]{#2^\prime}} -\newcommand{\pprimvar}[2][]{\vname[#1]{#2^{\prime\prime}}} -\newcommand{\uivar}[3][]{\vname[#1]{{#2}^{#3}}} -\newcommand{\livar}[3][]{\vname[#1]{{#2}_{#3}}} -\newcommand{\ulivar}[4][]{\vname[#1]{{#2}^{#3}_{#4}}} -\newcommand\nappa[2]{#1\left(#2\right)} -\newcommand\nappe[3]{\nappa{#1}{#2,\ldots,#3}} -\newcommand\nappf[4]{\nappe{#1}{#2{#3}}{#2{#4}}} -\newcommand\nappli[4]{\nappe{#1}{#2_{#3}}{#2_{#4}}} -\newcommand\nappui[4]{\nappe{#1}{#2^{#3}}{#2^{#4}}} +\newcommand\primvar[2][]{\vname[#1]{#2^\prime}} +\newcommand\pprimvar[2][]{\vname[#1]{#2^{\prime\prime}}} +\newcommand\uivar[3][]{\vname[#1]{{#2}^{#3}}} +\newcommand\livar[3][]{\vname[#1]{{#2}_{#3}}} +\newcommand\ulivar[4][]{\vname[#1]{{#2}^{#3}_{#4}}} +\newcommand\nappa[3][]{\prefix[#1]{#2}{#3}} +\newcommand\nappe[4][]{\nappa[#1]{#2}{#3,\ldots,#4}} +\newcommand\nappf[5][]{\nappe[#1]{#2}{#3{#4}}{#3{#5}}} +\newcommand\nappli[5][]{\nappe[#1]{#2}{#3_{#4}}{#3_{#5}}} +\newcommand\nappui[5][]{\nappe[#1]{#2}{#3^{#4}}{#3^{#5}}} +\newcommand\anappa[3][]{\assoc[#1]{#2}{#3}} +\newcommand\anappe[4][]{\anappa[#1]{#2}{#3,\ldots,#4}} +\newcommand\anappf[5][]{\anappe[#1]{#2}{#3{#4}}{#3{#5}}} +\newcommand\anappli[5][]{\anappe[#1]{#2}{#3_{#4}}{#3_{#5}}} +\newcommand\anappui[5][]{\anappe[#1]{#2}{#3^{#4}}{#3^{#5}}} +\def\LXMID#1#2{\expandafter\gdef\csname xmarg#1\endcsname{#2}\csname xmarg#1\endcsname} +\def\LXMRef#1{\csname xmarg#1\endcsname} \endinput %% %% End of file `cmath.sty'. diff --git a/Master/texmf-dist/tex/latex/stex/cmath/cmath.sty.ltxml b/Master/texmf-dist/tex/latex/stex/cmath/cmath.sty.ltxml deleted file mode 100644 index d972c961de7..00000000000 --- a/Master/texmf-dist/tex/latex/stex/cmath/cmath.sty.ltxml +++ /dev/null @@ -1,55 +0,0 @@ -# -*- CPERL -*- -package LaTeXML::Package::Pool; -use strict; -use LaTeXML::Package; - -# return: unique ID for variable -sub cvar_id { - my ($id) = @_; - $id = ToString($id); - if (!$id) { - $id=LookupValue('cvar_id') || 0; - AssignValue('cvar_id', $id + 1, 'global'); } - "cvar.$id"; }#$ -DefConstructor('\vname[]{}', - "<ltx:XMWrap role='ID' xml:id='&cvar_id(#1)'>#2</ltx:XMWrap>", - requireMath=>1); -# \vnref{<reference>} -DefMacro('\vnref{}','\@XMRef{cvar.#1}'); - -# variants for declaring variables -DefMacro('\uivar[]{}{}', '\vname[#1]{{#2}^{#3}}'); -DefMacro('\livar[]{}{}', '\vname[#1]{{#2}_{#3}}'); -DefMacro('\ulivar[]{}{}{}', '\vname[#1]{{#2}^{#3}_{#4}}'); -DefMacro('\primvar[]{}', '\vname[#1]{#2^\prime}'); -DefMacro('\pprimvar[]{}', '\vname[#1]{#2^{\prime\prime}}'); - -# \nappa{<function>}{<(const)(,\1)*>} -# @#1(#2) -DefConstructor('\nappa{}{}', - "<ltx:XMApp>" - ."<ltx:XMTok meaning='#1' />" - ."<ltx:XMArg>#2</ltx:XMArg>" - ."</ltx:XMApp>"); - -# \@napp@seq{<function>}{start <const>}{end <const>} -# @#1(@sequence(#2,sequencefromto,#3)) -DefConstructor('\@napp@seq{}{}{}', - "<ltx:XMApp>" - ."<ltx:XMTok meaning='#1' />" - ."<ltx:XMArg>" - ."<ltx:XMApp>" - ."<ltx:XMTok meaning='sequence' />" - ."<ltx:XMArg>#2</ltx:XMArg>" - ."<ltx:XMArg><ltx:XMTok meaning='sequencefromto' /></ltx:XMArg>" - ."<ltx:XMArg>#3</ltx:XMArg>" - ."</ltx:XMApp>" - ."</ltx:XMArg>" - ."</ltx:XMApp>"); - -DefMacro('\nappe{}{}{}', '\@napp@seq{#1}{#2}{#3}'); -DefMacro('\nappf{}{}{}{}', '\@napp@seq{#1}{#2{#3}}{#2{#4}}'); -DefMacro('\nappli{}{}{}{}', '\@napp@seq{#1}{#2_{#3}}{#2_{#4}}'); -DefMacro('\nappui{}{}{}{}', '\@napp@seq{#1}{#2^{#3}}{#2^{#4}}'); - -1; diff --git a/Master/texmf-dist/tex/latex/stex/cmathml/cmathml.sty b/Master/texmf-dist/tex/latex/stex/cmathml/cmathml.sty deleted file mode 100644 index 90b215dd2ab..00000000000 --- a/Master/texmf-dist/tex/latex/stex/cmathml/cmathml.sty +++ /dev/null @@ -1,450 +0,0 @@ -%% -%% This is file `cmathml.sty', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% cmathml.dtx (with options: `sty') -%% -\RequirePackage{presentation} -\newcommand{\Capply}[3][]{#2(#3)} -\def\CMathML@cn#1{#1} -\newcommand{\Ccn}[2][]{\CMathML@cn{#2}} -\def\CMathML@ci#1{#1} -\newcommand{\Cci}[2][]{\CMathML@ci{#2}} -\def\CMathML@csymbol#1{#1} -\newcommand{\Ccsymbol}[2][]{\CMathML@csymbol{#2}} -\def\CMathML@ccinterval#1#2{[#1,#2]} -\newcommand{\Cccinterval}[3][]{\CMathML@ccinterval{#2}{#3}} -\def\CMathML@cointerval#1#2{[#1,#2)} -\newcommand{\Ccointerval}[3][]{\CMathML@cointerval{#2}{#3}} -\def\CMathML@ocinterval#1#2{(#1,#2]} -\newcommand{\Cocinterval}[3][]{\CMathML@ocinterval{#2}{#3}} -\def\CMathML@oointerval#1#2{(#1,#2)} -\newcommand{\Coointerval}[3][]{\CMathML@oointerval{#2}{#3}} -\newcommand{\Cinverse}[2][]{#2^{-1}} -\def\CMathML@lambda#1#2{\lambda({#1},{#2})} -\newcommand{\Clambda}[3][]{\CMathML@lambda{#2}{#3}} -\def\CMathML@lambdaDA#1#2#3{\lambda({#1}\colon{#2},#3)} -\newcommand{\ClambdaDA}[4][]{\CMathML@lambdaDA{#2}{#3}{#4}} -\def\CMathML@restrict#1#2{\left.#1\right|_{#2}} -\newcommand{\Crestrict}[3][]{\CMathML@restrict{#2}{#3}} -\def\CMathML@composeOp{\circ} -\newcommand{\CcomposeOp}{\CMathML@composeOp} -\def\CMathML@compose#1{\assoc[p=500,pi=500]{\CMathML@composeOp}{#1}} -\newcommand{\Ccompose}[2][]{\CMathML@compose{#2}} -\def\CMathML@ident#1{\mathrm{id}} -\newcommand{\Cident}[1][]{\CMathML@ident{#1}} -\def\CMathML@domain#1{\mbox{dom}(#1)} -\newcommand{\Cdomain}[2][]{\CMathML@domain{#2}} -\def\CMathML@codomain#1{\mbox{codom}(#1)} -\newcommand{\Ccodomain}[2][]{\CMathML@codomain{#2}} -\def\CMathML@image#1{{\mathbf{Im}}(#1)} -\newcommand{\Cimage}[2][]{\CMathML@image{#2}} -\def\CMathML@piecewise#1{\left\{\begin{array}{ll}#1\end{array}\right.} -\newcommand{\Cpiecewise}[2][]{\CMathML@piecewise{#2}} -\def\CMathML@piece#1#2{#1&{\mathrm{if}}\;{#2}\\} -\newcommand{\Cpiece}[3][]{\CMathML@piece{#2}{#3}} -\def\CMathML@otherwise#1{#1&else\\} -\newcommand{\Cotherwise}[2][]{\CMathML@otherwise{#2}} -\def\CMathML@quotient#1#2{\frac{#1}{#2}} -\newcommand{\Cquotient}[3][]{\CMathML@quotient{#2}{#3}} -\def\CMathML@factorialOp{!} -\newcommand{\CfactorialOp}{\CMathML@factorialOp} -\def\CMathML@factorial#1{#1{\CMathML@factorialOp}} -\newcommand{\Cfactorial}[2][]{\CMathML@factorial{#2}} -\def\CMathML@divideOp{\div} -\newcommand{\CdivideOp}{\CMathML@divideOp} -\def\CMathML@divide#1#2{\infix[p=400]{\CMathML@divideOp}{#1}{#2}} -\newcommand{\Cdivide}[3][]{\CMathML@divide{#2}{#3}} -\def\CMathML@maxOp{\mathrm{max}} -\newcommand{\CmaxOp}{\CMathML@maxOp} -\def\CMathML@max#1{{\CMathML@maxOp}(#1)} -\newcommand{\Cmax}[2][]{\CMathML@max{#2}} -\def\CMathML@minOp{\mathrm{min}} -\newcommand{\CminOp}{\CMathML@minOp} -\def\CMathML@min#1{{\CMathML@minOp}(#1)} -\newcommand{\Cmin}[2][]{\CMathML@min{#2}} -\def\CMathML@minusOp{-} -\newcommand{\CminusOp}{\CMathML@minusOp} -\def\CMathML@minus#1#2{\infix[p=500]{\CMathML@minusOp}{#1}{#2}} -\newcommand{\Cminus}[3][]{\CMathML@minus{#2}{#3}} -\def\CMathML@uminus#1{\prefix[p=200]{\CMathML@minusOp}{#1}} -\newcommand{\Cuminus}[2][]{\CMathML@uminus{#2}} -\def\CMathML@plusOp{+} -\newcommand{\CplusOp}{\CMathML@plusOp} -\def\CMathML@plus#1{\assoc[p=500]{\CMathML@plusOp}{#1}} -\newcommand{\Cplus}[2][]{\CMathML@plus{#2}} -\def\CMathML@power#1#2{\infix[p=200]{^}{#1}{#2}} -\newcommand{\Cpower}[3][]{\CMathML@power{#2}{#3}} -\def\CMathML@remOp{\bmod} -\newcommand{\CremOp}{\CMathML@remOp} -\def\CMathML@rem#1#2{#1 \CMathML@remOp #2} -\newcommand{\Crem}[3][]{\CMathML@rem{#2}{#3}} -\def\CMathML@timesOp{\cdot} -\newcommand{\CtimesOp}{\CMathML@timesOp} -\def\CMathML@times#1{\assoc[p=400]{\CMathML@timesOp}{#1}} -\newcommand{\Ctimes}[2][]{\CMathML@times{#2}} -\def\CMathML@rootOp{\sqrt} -\newcommand{\CrootOp}{\CMathML@rootOp{}} -\def\CMathML@root#1#2{\CMathML@rootOp[#1]{#2}} -\newcommand{\Croot}[3][]{\CMathML@root{#2}{#3}} -\def\CMathML@gcd#1{\gcd(#1)} -\newcommand{\Cgcd}[2][]{\CMathML@gcd{#2}} -\def\CMathML@andOp{\wedge} -\newcommand{\CandOp}{\CMathML@andOp} -\def\CMathML@and#1{\assoc[p=400]{\CMathML@andOp}{#1}} -\newcommand{\Cand}[2][]{\CMathML@and{#2}} -\def\CMathML@orOp{\vee} -\newcommand{\CorOp}{\CMathML@orOp} -\def\CMathML@or#1{\assoc[p=500]{\CMathML@orOp}{#1}} -\newcommand{\Cor}[2][]{\CMathML@or{#2}} -\def\CMathML@xorOp{\oplus} -\newcommand{\CxorOp}{\CMathML@xorOp} -\def\CMathML@xor#1{\assoc[p=400]{\CMathML@xorOp}{#1}} -\newcommand{\Cxor}[2][]{\CMathML@xor{#2}} -\def\CMathML@notOp{\neg} -\newcommand{\CnotOp}{\CMathML@notOp} -\def\CMathML@not#1{\CMathML@notOp{#1}} -\newcommand{\Cnot}[2][]{\CMathML@not{#2}} -\def\CMathML@impliesOp{\Longrightarrow} -\newcommand{\CimpliesOp}{\CMathML@impliesOp} -\def\CMathML@implies#1#2{#1\CMathML@impliesOp{#2}} -\newcommand{\Cimplies}[3][]{\CMathML@implies{#2}{#3}} -\def\CMathML@AndDA#1#2{\bigwedge_{#1}{#2}} % set, scope -\newcommand{\CAndDA}[3][]{\CMathML@AndDA{#2}{#3}} -\def\CMathML@AndCond#1#2#3{\bigwedge_{#2}{#3}} % bvars,condition, scope -\newcommand{\CAndCond}[4][]{\CMathML@AndCond{#2}{#2}{#3}} -\def\CMathML@OrDA#1#2{\bigvee_{#1}{#2}} % set, scope -\newcommand{\COrDa}[3][]{\CMathML@OrDA{#2}{#3}} -\def\CMathML@OrCond#1#2#3{\bigvee_{#2}{#3}}% bvars,condition, scope -\newcommand{\COrCond}[4][]{\CMathML@OrCond{#2}{#3}{#4}} -\def\CMathML@XorDA#1#2{\bigoplus_{#1}{#2}} % set, scope -\newcommand{\CXorDA}[3][]{\CMathML@XorDA{#2}{#3}} -\def\CMathML@XorCond#1#2#3{\bigoplus_{#2}{#3}}% bvars,condition, scope -\newcommand{\CXorCond}[4][]{\CMathML@XorCond{#2}{#3}{#4}} -\def\CMathML@forall#1#2{\forall{#1}\colon{#2}} -\newcommand{\Cforall}[3][]{\CMathML@forall{#2}{#3}} -\def\CMathML@forallCond#1#2#3{\forall{#1},{#2}\colon{#3}} % list), condition, scope -\newcommand{\CforallCond}[4][]{\CMathML@forallCond{#2}{#3}{#4}} -\def\CMathML@exists#1#2{\exists{#1}\colon{#2}} -\newcommand{\Cexists}[3][]{\CMathML@exists{#2}{#3}} -\def\CMathML@esistsCont#1#2#3{\exists{#1},{#2}\colon{#3}} -\newcommand{\CexistsCond}[4][]{\CMathML@esistsCont{#2}{#3}{#4}} -\def\CMathML@abs#1{\left|#1\right|} -\newcommand{\Cabs}[2][]{\CMathML@abs{#2}} -\def\CMathML@conjugate#1{\overline{#1}} -\newcommand{\Cconjugate}[2][]{\CMathML@conjugate{#2}} -\def\CMathML@arg#1{\angle #1} -\newcommand{\Carg}[2][]{\CMathML@arg{#2}} -\def\CMathML@real#1{\Re #1} -\newcommand{\Creal}[2][]{\CMathML@real{#2}} -\def\CMathML@imaginary#1{\Im #1} -\newcommand{\Cimaginary}[2][]{\CMathML@imaginary{#2}} -\def\CMathML@lcm#1{\mbox{lcm}(#1)} -\newcommand{\Clcm}[2][]{\CMathML@lcm{#2}} -\def\CMathML@floor#1{\left\lfloor{#1}\right\rfloor} -\newcommand{\Cfloor}[2][]{\CMathML@floor{#2}} -\def\CMathML@ceiling#1{\left\lceil{#1}\right\rceil} -\newcommand{\Cceiling}[2][]{\CMathML@ceiling{#2}} -\def\CMathML@eqOp{=} -\newcommand{\CeqOp}{\CMathML@eqOp} -\def\CMathML@eq#1{\assoc[p=700]{\CMathML@eqOp}{#1}} -\newcommand{\Ceq}[2][]{\CMathML@eq{#2}} -\def\CMathML@neqOp{\neq} -\newcommand{\CneqOp}{\CMathML@neqOp} -\def\CMathML@neq#1#2{\infix[p=700]{\CMathML@neqOp}{#1}{#2}} -\newcommand{\Cneq}[3][]{\CMathML@neq{#2}{#3}} -\def\CMathML@gtOp{>} -\newcommand{\CgtOp}{\CMathML@gtOp} -\def\CMathML@gt#1{\assoc[p=700]{\CMathML@gtOp}{#1}} -\newcommand{\Cgt}[2][]{\CMathML@gt{#2}} -\def\CMathML@ltOp{<} -\newcommand{\CltOp}{\CMathML@ltOp} -\def\CMathML@lt#1{\assoc[p=700]{\CMathML@ltOp}{#1}} -\newcommand{\Clt}[2][]{\CMathML@lt{#2}} -\def\CMathML@geqOp{\geq} -\newcommand{\CgeqOp}{\CMathML@geqOp} -\def\CMathML@geq#1{\assoc[p=700]{\CMathML@geqOp}{#1}} -\newcommand{\Cgeq}[2][]{\CMathML@geq{#2}} -\def\CMathML@leqOp{\leq} -\newcommand{\CleqOp}{\CMathML@leqOp} -\def\CMathML@leq#1{\assoc[p=700]{\CMathML@leqOp}{#1}} -\newcommand{\Cleq}[2][]{\CMathML@leq{#2}} -\def\CMathML@equivalentOp{\equiv} -\newcommand{\CequivalentOp}{\CMathML@equivalentOp} -\def\CMathML@equivalent#1{\assoc[p=700]{\CMathML@equivalentOp}{#1}} -\newcommand{\Cequivalent}[2][]{\CMathML@equivalent{#2}} -\def\CMathML@approxOp{\approx} -\newcommand{\CapproxOp}{\CMathML@approxOp} -\def\CMathML@approx#1#2{#1\CMathML@approxOp{#2}} -\newcommand{\Capprox}[3][]{\CMathML@approx{#2}{#3}} -\def\CMathML@factorofOp{\mid} -\newcommand{\CfactorofOp}{\CMathML@factorofOp} -\def\CMathML@factorof#1#2{#1\CMathML@factorofOp{#2}} -\newcommand{\Cfactorof}[3][]{\CMathML@factorof{#2}{#3}} - -\def\CMathML@intOp{\int} -\newcommand{\CintOp}{\CMathML@intOp} -\def\CMathML@int#1{\CMathML@intOp{#1}} -\newcommand{\Cint}[2][]{\CMathML@int{#2}} -\def\CMathML@intLimits#1#2#3#4{\CMathML@intOp_{#2}^{#3}{#4}d{#1}} %bvars,llimit, ulimit,body -\newcommand{\CintLimits}[5][]{\CMathML@intLimits{#2}{#3}{#4}{#5}} -\def\CMathML@intSet#1#2{\CMathML@intOp_{#1}{#2}}% set,function -\newcommand{\CintDA}[3][]{\CMathML@intSet{#2}{#3}} -\def\CMathML@intCond#1#2#3{\CMathML@intOp_{#2}{#3}d{#1}} %bvars, condition, body -\newcommand{\CintCond}[4][]{\CMathML@intCond{#2}{#3}{#4}} - -\def\CMathML@diff#1{#1'} -\newcommand{\Cdiff}[2][]{\CMathML@diff{#2}} -\def\CMathML@ddiff#1#2{{d{#2}(#1)\over{d{#1}}}} -\newcommand{\Cddiff}[3][]{\CMathML@ddiff{#2}{#3}} -\def\CMathML@partialdiff#1#2#3{{\partial^{#1}\over\partial{#2}}{#3}}% degree, bvars, body -\newcommand{\Cpartialdiff}[4][]{\CMathML@partialdiff{#2}{#3}{#4}} -\newcommand{\Cdegree}[2]{#1^{#2}} -\def\CMathML@limit#1#2#3{\lim_{#1\rightarrow{#2}}{#3}} -\newcommand{\Climit}[4][]{\CMathML@limit{#2}{#3}{#4}} % bvar, lowlimit, scope -\def\CMathML@limitCond#1#2#3{\lim_{#2}{#3}} -\newcommand{\ClimitCond}[4][]{\CMathML@limitCond{#2}{#3}{#4}} % bvars, condition, scope -\def\CMathML@tendstoOp{\rightarrow} -\newcommand{\CtendstoOp}{\CMathML@tendstoOp} -\def\CMathML@tendsto#1#2{#1\CMathML@tendstoOp{#2}} -\newcommand{\Ctendsto}[3][]{\CMathML@tendsto{#2}{#3}} -\def\CMathML@tendstoAboveOp{\searrow} -\newcommand{\CtendstoAboveOp}{\CMathML@tendstoAboveOp} -\def\CMathML@tendstoAbove#1#2{#1\searrow{#2}} -\newcommand{\CtendstoAbove}[3][]{\CMathML@tendstoAbove{#2}{#3}} -\def\CMathML@tendstoBelowOp{\nearrow} -\newcommand{\CtendstoBelowOp}{\CMathML@tendstoBelowOp} -\def\CMathML@tendstoBelow#1#2{#1\CMathML@tendstoBelowOp{#2}} -\newcommand{\CtendstoBelow}[3][]{\CMathML@tendstoBelow{#2}{#3}} -\def\CMathML@divergence#1{\nabla\cdot{#1}} -\newcommand{\Cdivergence}[2][]{\CMathML@divergence{#2}} -\def\CMathML@grad#1{\nabla{#1}} -\newcommand{\Cgrad}[2][]{\CMathML@grad{#2}} -\def\CMathML@curl#1{\nabla\times{#1}} -\newcommand{\Ccurl}[2][]{\CMathML@curl{#2}} -\def\CMathML@laplacian#1{\nabla^2#1} -\newcommand{\Claplacian}[2][]{\CMathML@laplacian{#2}} -\def\CMathML@set#1{\left\{#1\right\}} -\newcommand{\Cset}[2][]{\CMathML@set{#2}} -\def\CMathML@setRes#1#2{\{#1|#2\}} -\newcommand{\CsetRes}[3][]{\CMathML@setRes{#2}{#3}} -\def\CMathML@setCond#1#2#3{\{#2|#3\}} -\newcommand{\CsetCond}[4][]{\CMathML@setCond{#2}{#3}{#4}} -\def\CMathML@setDA#1#2#3{\{#1\in{#2}|#3\}} -\newcommand{\CsetDA}[4][]{\CMathML@setDA{#2}{#3}{#4}} -\def\CMathML@listOp{\mbox{list}} -\newcommand{\ClistOp}{\CMathML@listOp} -\def\CMathML@list#1{\CMathML@listOp({#1})} -\newcommand{\Clist}[2][]{\CMathML@list{#2}} -\def\CMathML@unionOp{\cup} -\newcommand{\CunionOp}{\CMathML@unionOp} -\def\CMathML@union#1{\assoc[p=500]{\CMathML@unionOp}{#1}} -\newcommand{\Cunion}[2][]{\CMathML@union{#2}} -\def\CMathML@intersectOp{\cap} -\newcommand{\CintersectOp}{\CMathML@intersectOp} -\def\CMathML@intersect#1{\assoc[p=400]{\CMathML@intersectOp}{#1}} -\newcommand{\Cintersect}[2][]{\CMathML@intersect{#2}} -\def\CMathML@inOp{\in} -\newcommand{\CinOp}{\CMathML@inOp} -\def\CMathML@in#1#2{#1\CMathML@inOp{#2}} -\newcommand{\Cin}[3][]{\CMathML@in{#2}{#3}} -\def\CMathML@notinOp{\notin} -\newcommand{\CnotinOp}{\CMathML@notinOp} -\def\CMathML@notin#1#2{#1\CMathML@notinOp{#2}} -\newcommand{\Cnotin}[3][]{\CMathML@notin{#2}{#3}} -\def\CMathML@setdiffOp{\setminus} -\newcommand{\CsetdiffOp}{\CMathML@setdiffOp} -\def\CMathML@setdiff#1#2{#1\CMathML@setdiffOp{#2}} -\newcommand{\Csetdiff}[3][]{\CMathML@setdiff{#2}{#3}} -\def\CMathML@cardOp{\#} -\newcommand{\CcardOp}{\CMathML@cardOp} -\def\CMathML@card#1{\CMathML@cardOp #1} -\newcommand{\Ccard}[2][]{\CMathML@card{#2}} -\def\CMathML@cartesianproductOp{\times} -\newcommand{\CcartesianproductOp}{\CMathML@cartesianproductOp} -\def\CMathML@cartesianproduct#1{\assoc[p=400]{\CMathML@cartesianproductOp}{#1}} -\newcommand{\Ccartesianproduct}[2][]{\CMathML@cartesianproduct{#2}} -\def\CMathML@subsetOp{\subseteq} -\newcommand{\CsubsetOp}{\CMathML@subsetOp} -\def\CMathML@subset#1{\assoc[p=700]{\CMathML@subsetOp}{#1}} -\newcommand{\Csubset}[2][]{\CMathML@subset{#2}} -\def\CMathML@prsubsetOp{\subset} -\newcommand{\CprsubsetOp}{\CMathML@prsubsetOp} -\def\CMathML@prsubset#1{\assoc[p=700]{\CMathML@prsubsetOp}{#1}} -\newcommand{\Cprsubset}[2][]{\CMathML@prsubset{#2}} -\def\CMathML@notsubsetOp{\not\subseteq} -\newcommand{\CnotsubsetOp}{\CMathML@notsubsetOp} -\def\CMathML@notsubset#1#2{#1\CMathML@notsubsetOp{#2}} -\newcommand{\Cnotsubset}[3][]{\CMathML@notsubset{#2}{#3}} -\def\CMathML@notprsubsetOp{\not\subset} -\newcommand{\CnotprsubsetOp}{\CMathML@notprsubsetOp} -\def\CMathML@notprsubset#1#2{#1\CMathML@notprsubsetOp{#2}} -\newcommand{\Cnotprsubset}[3][]{\CMathML@notprsubset{#2}{#3}} -\def\CMathML@supsetOp{\supseteq} -\newcommand{\CsupsetOp}{\CMathML@supsetOp} -\def\CMathML@supset#1{\assoc[p=700]{\CMathML@supsetOp}{#1}} -\newcommand{\Csupset}[2][]{\CMathML@supset{#2}} -\def\CMathML@prsupsetOp{\supset} -\newcommand{\CprsupsetOp}{\CMathML@prsupsetOp} -\def\CMathML@prsupset#1{\assoc[p=700]{\CMathML@prsupsetOp}{#1}} -\newcommand{\Cprsupset}[2][]{\CMathML@prsupset{#2}} -\def\CMathML@notsupsetOp{\not\supseteq} -\newcommand{\CnotsupsetOp}{\CMathML@notsupsetOp} -\def\CMathML@notsupset#1#2{#1\CMathML@notsupsetOp{#2}} -\newcommand{\Cnotsupset}[3][]{\CMathML@notsupset{#2}{#3}} -\def\CMathML@notprsupsetOp{\not\supset} -\newcommand{\CnotprsupsetOp}{\CMathML@notprsupsetOp} -\def\CMathML@notprsupset#1#2{#1\CMathML@notprsupsetOp{#2}} -\newcommand{\Cnotprsupset}[3][]{\CMathML@notprsupset{#2}{#3}} -\def\CMathML@UnionDAOp{\bigwedge} -\newcommand{\CUnionDAOp}{\CMathML@UnionDAOp} -\def\CMathML@UnionDA#1#2{\CMathML@UnionDAOp_{#1}{#2}} % set, scope -\newcommand{\CUnionDA}[3][]{\CMathML@UnionDA{#2}{#3}} -\def\CMathML@UnionCond#1#2#3{\CMathML@UnionDAOp_{#2}{#3}} % bvars,condition, scope -\newcommand{\CUnionCond}[4][]{\CMathML@UnionCond{#2}{#2}{#3}} -\def\CMathML@IntersectDAOp{\bigvee} -\newcommand{\CIntersectDAOp}{\CMathML@IntersectDAOp} -\def\CMathML@IntersectDA#1#2{\CMathML@IntersectDAOp_{#1}{#2}} % set, scope -\newcommand{\CIntersectDa}[3][]{\CMathML@IntersectDA{#2}{#3}} -\def\CMathML@IntersectCond#1#2#3{\CMathML@IntersectDAOp_{#2}{#3}}% bvars,condition, scope -\newcommand{\CIntersectCond}[4][]{\CMathML@IntersectCond{#2}{#3}{#4}} -\def\CMathML@CartesianproductDAOp{\bigoplus} -\newcommand{\CCartesianproductDAOp}{\CMathML@CartesianproductDAOp} -\def\CMathML@CartesianproductDA#1#2{\CMathML@CartesianproductDAOp_{#1}{#2}} % set, scope -\newcommand{\CCartesianproductDA}[3][]{\CMathML@CartesianproductDA{#2}{#3}} -\def\CMathML@CartesianproductCond#1#2#3{\CMathML@CartesianproductDAOp_{#2}{#3}}% bvars,condition, scope -\newcommand{\CCartesianproductCond}[4][]{\CMathML@CartesianproductCond{#2}{#3}{#4}} -\def\CMathML@sumOp{\sum} -\newcommand{\CsumOp}{\CMathML@sumOp} -\def\CMathML@sumLimits#1#2#3#4{\CMathML@sumOp_{#1=#2}^{#3}#4}% bvar, llimit, ulimit, body -\newcommand{\CsumLimits}[5][]{\CMathML@sumLimits{#2}{#3}{#4}{#5}} -\def\CMathML@sumCond#1#2#3{\CMathML@sumOp_{#1\in{#2}}#3} % bvar, condition, body -\newcommand{\CsumCond}[4][]{\CMathML@sumCond{#2}{#3}{#4}} -\def\CMathML@sumDA#1#2{\CMathML@sumOp_{#1}#2} % set, body -\newcommand{\CsumDA}[3][]{\CMathML@sumDA{#2}{#3}} -\def\CMathML@prodOp{\prod} -\newcommand{\CprodOp}{\CMathML@prodOp} -\def\CMathML@prodLimits#1#2#3#4{\CMathML@prodOp_{#1=#32^{#3}#4}}% bvar, llimit, ulimit, body -\newcommand{\CprodLimits}[5][]{\CMathML@prodLimits{#2}{#3}{#4}{#5}} -\def\CMathML@prodCond#1#2#3{\CMathML@prodOp_{#1\in{#2}}#3} % bvar, condition, body -\newcommand{\CprodCond}[4][]{\CMathML@prodCond{#2}{#3}{#4}} -\def\CMathML@prodDA#1#2{\CMathML@prodOp_{#1}#2} % set, body -\newcommand{\CprodDA}[3]{\CMathML@prodDA{#2}{#3}} -\def\CMathML@sin#1{\sin(#1)} -\newcommand{\Csin}[2][]{\CMathML@sin{#2}} -\def\CMathML@cos#1{\cos(#1)} -\newcommand{\Ccos}[2][]{\CMathML@cos{#2}} -\def\CMathML@tan#1{\tan(#1)} -\newcommand{\Ctan}[2][]{\CMathML@tan{#2}} -\def\CMathML@sec#1{\sec(#1)} -\newcommand{\Csec}[2][]{\CMathML@sec{#2}} -\def\CMathML@csc#1{\csc(#1)} -\newcommand{\Ccsc}[2][]{\CMathML@csc{#2}} -\def\CMathML@cot#1{\cot(#1)} -\newcommand{\Ccot}[2][]{\CMathML@cot{#2}} -\def\CMathML@sinh#1{\sinh(#1)} -\newcommand{\Csinh}[2][]{\CMathML@sinh{#2}} -\def\CMathML@cosh#1{\cosh(#1)} -\newcommand{\Ccosh}[2][]{\CMathML@cosh{#2}} -\def\CMathML@tanh#1{\tanh(#1)} -\newcommand{\Ctanh}[2][]{\CMathML@tanh{#2}} -\def\CMathML@sech#1{\mbox{sech}(#1)} -\newcommand{\Csech}[2][]{\CMathML@sech{#2}} -\def\CMathML@csch#1{\mbox{csch}(#1)} -\newcommand{\Ccsch}[2][]{\CMathML@csch{#2}} -\def\CMathML@coth#1{\mbox{coth}(#1)} -\newcommand{\Ccoth}[2][]{\CMathML@coth{#2}} -\def\CMathML@arcsin#1{\arcsin(#1)} -\newcommand{\Carcsin}[2][]{\CMathML@arcsin{#2}} -\def\CMathML@arccos#1{\arccos(#1)} -\newcommand{\Carccos}[2][]{\CMathML@arccos{#2}} -\def\CMathML@arctan#1{\arctan(#1)} -\newcommand{\Carctan}[2][]{\CMathML@arctan{#2}} -\def\CMathML@arccosh#1{\mbox{arccosh}(#1)} -\newcommand{\Carccosh}[2][]{\CMathML@arccosh{#2}} -\def\CMathML@arccot#1{\mbox{arccot}(#1)} -\newcommand{\Carccot}[2][]{\CMathML@arccot{#2}} -\def\CMathML@arccoth#1{\mbox{arccoth}(#1)} -\newcommand{\Carccoth}[2][]{\CMathML@arccoth{#2}} -\def\CMathML@arccsc#1{\mbox{arccsc}(#1)} -\newcommand{\Carccsc}[2][]{\CMathML@arccsc{#2}} -\def\CMathML@arcsinh#1{\mbox{arcsinh}(#1)} -\newcommand{\Carcsinh}[2][]{\CMathML@arcsinh{#2}} -\def\CMathML@arctanh#1{\mbox{arctanh}(#1)} -\newcommand{\Carctanh}[2][]{\CMathML@arctanh{#2}} - -\def\CMathML@exp#1{\exp(#1)} -\newcommand{\Cexp}[2][]{\CMathML@exp{#2}} -\def\CMathML@ln#1{\ln(#1)} -\newcommand{\Cln}[2][]{\CMathML@ln{#2}} -\def\CMathML@log#1#2{\log_{#1}(#2)} -\newcommand{\Clog}[3][]{\CMathML@log{#2}{#3}} -\def\CMathML@mean#1{\mbox{mean}(#1)} -\newcommand{\Cmean}[2][]{\CMathML@mean{#2}} -\def\CMathML@sdev#1{\mbox{std}(#1)} -\newcommand{\Csdev}[2][]{\CMathML@sdev{#2}} -\def\CMathML@var#1{\mbox{var}(#1)} -\newcommand{\Cvar}[2][]{\CMathML@var{#2}} -\def\CMathML@median#1{\mbox{median}(#1)} -\newcommand{\Cmedian}[2][]{\CMathML@median{#2}} -\def\CMathML@mode#1{\mbox{mode}(#1)} -\newcommand{\Cmode}[2][]{\CMathML@mode{#2}} -\def\CMathML@moment#1#2{\langle{#2}^{#1}\rangle}% degree, momentabout, scope -\newcommand{\Cmoment}[3][]{\CMathML@moment{#2}{#3}} -\def\CMathML@momentA#1#2{\langle{#2}^{#1}\rangle}% degree, momentabout, scope -\newcommand{\CmomentA}[4][]{\CMathML@momentA{#2}{#3}{#4}} -\def\CMathML@vector#1{(#1)} -\newcommand{\Cvector}[2][]{\CMathML@vector{#2}} -\def\CMathML@matrix#1#2{\left(\begin{array}{#1}#2\end{array}\right)}% row pattern, body -\newcommand{\Cmatrix}[3][]{\CMathML@matrix{#2}{#3}} -\def\CMathML@determinant#1{\left|#1\right|} -\newcommand{\Cdeterminant}[2][]{\CMathML@determinant{#2}} -\def\CMathML@transpose#1{#1^\top} -\newcommand{\Ctranspose}[2][]{\CMathML@transpose{#2}} -\def\CMathML@selector#1#2{#1_{#2}} -\newcommand{\Cselector}[3][]{\CMathML@selector{#2}{#3}} -\def\CMathML@vectproductOp{\cdot} -\newcommand{\CvectproductOp}{\CMathML@vectproductOp} -\def\CMathML@vectproduct#1#2{#1\CMathML@vectproductOp{#2}} -\newcommand{\Cvectproduct}[3][]{\CMathML@vectproduct{#2}{#3}} -\def\CMathML@scalarproduct#1#2{{#1}#2} -\newcommand{\Cscalarproduct}[3][]{\CMathML@scalarproduct{#2}{#3}} -\def\CMathML@outerproductOp{\times} -\newcommand{\CouterproductOp}{\CMathML@outerproductOp} -\def\CMathML@outerproduct#1#2{#1\CMathML@outerproductOp{#2}} -\newcommand{\Couterproduct}[3][]{\CMathML@outerproduct{#2}{#3}} -\def\CMathML@integers{{\mathbb{Z}}} -\newcommand{\Cintegers}[1][]{\CMathML@integers} -\def\CMathML@reals{{\mathbb{R}}} -\newcommand{\Creals}[1][]{\CMathML@reals} -\def\CMathML@rationals{{\mathbb{Q}}} -\newcommand{\Crationals}[1][]{\CMathML@rationals} -\def\CMathML@naturalnumbers{{\mathbb{N}}} -\newcommand{\Cnaturalnumbers}[1][]{\CMathML@naturalnumbers} -\def\CMathML@complexes{{\mathbb{C}}} -\newcommand{\Ccomplexes}[1][]{\CMathML@complexes} -\def\CMathML@primes{{\mathbb{P}}} -\newcommand{\Cprimes}[1][]{\CMathML@primes} -\def\CMathML@exponemtiale{e} -\newcommand{\Cexponemtiale}[1][]{\CMathML@exponemtiale} -\def\CMathML@imaginaryi{i} -\newcommand{\Cimaginaryi}[1][]{\CMathML@imaginaryi} -\def\CMathML@notanumber{{\mathrm{NaN}}} -\newcommand{\Cnotanumber}[1][]{\CMathML@notanumber} -\def\CMathML@true{{\mathrm{true}}} -\newcommand{\Ctrue}[1][]{\CMathML@true} -\def\CMathML@false{{\mathrm{false}}} -\newcommand{\Cfalse}[1][]{\CMathML@false} -\def\CMathML@emptyset{\emptyset} -\newcommand{\Cemptyset}[1][]{\CMathML@emptyset} -\def\CMathML@pi{\pi} -\newcommand{\Cpi}[1][]{\CMathML@pi} -\def\CMathML@eulergamma{\gamma} -\newcommand{\Ceulergamma}[1][]{\CMathML@eulergamma} -\def\CMathML@infinit{\infty} -\newcommand{\Cinfinit}[1][]{\CMathML@infinit} -\endinput -%% -%% End of file `cmathml.sty'. diff --git a/Master/texmf-dist/tex/latex/stex/cmathml/cmathml.sty.ltxml b/Master/texmf-dist/tex/latex/stex/cmathml/cmathml.sty.ltxml deleted file mode 100644 index fdc0b2eae33..00000000000 --- a/Master/texmf-dist/tex/latex/stex/cmathml/cmathml.sty.ltxml +++ /dev/null @@ -1,974 +0,0 @@ -# -*- CPERL -*- -package LaTeXML::Package::Pool; -use strict; -use LaTeXML::Package; -use LaTeXML::Document; -RequirePackage('LaTeX'); -sub remove_tokens_from_list { - my ($list, $pattern, $math) = @_; - if (ref $list) { - my @toks = $list->unlist; - @toks = grep($_->toString !~ /$pattern/, @toks); - ($math ? (LaTeXML::MathList->new(@toks)) : (LaTeXML::List)->new(@toks)); } - else { undef; } } - -sub remove_math_commas { - my ($whatsit, $argno) = @_; - my @args = $whatsit ? $whatsit->getArgs() : undef; - $argno--; - if ($args[$argno]) { - $args[$argno] = remove_tokens_from_list($args[$argno], ',', 1); - $whatsit->setArgs(@args); - } - return; -} -DefConstructor('\Capply [] {} {}', - "<ltx:XMApp ?#1(definitionURL='#1')()>#2 #3</ltx:XMApp>"); -DefConstructor('\Ccn [] {}',"#2"); -DefConstructor('\Cci [] {}',"#2"); -DefConstructor('\Ccsymbol [] {}', - "<ltx:XMTok role='CSYMBOL' meaning='#2' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cccinterval [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='CONSTRUCTOR' meaning='ccinterval' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg></ltx:XMApp>"); -DefConstructor('\Ccointerval [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='CONSTRUCTOR' meaning='cointerval' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg></ltx:XMApp>"); -DefConstructor('\Cocinterval [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='CONSTRUCTOR' meaning='ocinterval' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg></ltx:XMApp>"); -DefConstructor('\Coointerval [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='CONSTRUCTOR' meaning='oointerval' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg></ltx:XMApp>"); -DefConstructor('\Cinverse [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='inverse' role='OPFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Clambda [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='BINDER' meaning='lambda' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\ClambdaDA [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='BINDER' meaning='lambda' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "<ltx:XMArg>#4</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Crestrict [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='restrict' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CcomposeOp []', - "<ltx:XMTok meaning='compose' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Ccompose [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok role='MULOP' meaning='compose' ?#1(definitionURL='#1')()/>" - . "#2" - . "</ltx:XMApp>", - afterDigest=>sub { remove_math_commas($_[1], 2); }); -DefConstructor('\Cident []', - "<ltx:XMTok meaning='ident' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cdomain [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='domain' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Ccodomain [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='codomain' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Cimage [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='image' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Cpiecewise [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='piecewise' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Cpiece [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='piece' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Cotherwise [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='otherwise' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Cquotient [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='quotient' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CfactorialOp []', - "<ltx:XMTok meaning='factorial' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cfactorial [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='factorial' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CdivideOp []', - "<ltx:XMTok meaning='divide' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cdivide [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='divide' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CmaxOp []', - "<ltx:XMTok meaning='max' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cmax [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='max' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CminOp []', - "<ltx:XMTok meaning='min' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cmin [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='min' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CminusOp []', - "<ltx:XMTok meaning='minus' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cminus [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='ADDOP' meaning='minus' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Cuminus [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='uminus' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CplusOp []', - "<ltx:XMTok meaning='plus' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cplus [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok role='ADDOP' meaning='plus' ?#1(definitionURL='#1')()/>" - . "#2" - . "</ltx:XMApp>", - afterDigest=>sub { remove_math_commas($_[1], 2); }); -DefConstructor('\Cpower [] {} {}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='power' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CremOp []', - "<ltx:XMTok meaning='rem' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Crem [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='rem' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CtimesOp []', - "<ltx:XMTok meaning='times' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Ctimes [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok role='MULOP' meaning='times' ?#1(definitionURL='#1')()/>" - . "#2" - . "</ltx:XMApp>", - afterDigest=>sub { remove_math_commas($_[1], 2); }); -DefConstructor('\CrootOp []', - "<ltx:XMTok meaning='root' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Croot [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='root' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Cgcd [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='gcd' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CandOp []', - "<ltx:XMTok meaning='and' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cand [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok role='CONNECTIVE' meaning='and' ?#1(definitionURL='#1')()/>" - . "#2" - . "</ltx:XMApp>", - afterDigest=>sub { remove_math_commas($_[1], 2); }); -DefConstructor('\CorOp []', - "<ltx:XMTok meaning='or' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cor [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok role='CONNECTIVE' meaning='or' ?#1(definitionURL='#1')()/>" - . "#2" - . "</ltx:XMApp>", - afterDigest=>sub { remove_math_commas($_[1], 2); }); -DefConstructor('\CxorOp []', - "<ltx:XMTok meaning='xor' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cxor [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok role='CONNECTIVE' meaning='xor' ?#1(definitionURL='#1')()/>" - . "#2" - . "</ltx:XMApp>", - afterDigest=>sub { remove_math_commas($_[1], 2); }); -DefConstructor('\CnotOp []', - "<ltx:XMTok meaning='not' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cnot [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok role='CONNECTIVE' meaning='not' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CimpliesOp []', - "<ltx:XMTok meaning='implies' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cimplies [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='CONNECTIVE' meaning='implies' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CAndDa [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='BIGOP' meaning='and' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CAndCond [] {}{}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='BIGOP' meaning='and' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "<ltx:XMArg>#4</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\COrDa [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='BIGOP' meaning='or' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\COrCond [] {}{}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='BIGOP' meaning='or' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "<ltx:XMArg>#4</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CXorDa [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='BIGOP' meaning='xor' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CXorCond [] {}{}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='BIGOP' meaning='xor' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "<ltx:XMArg>#4</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Cforall [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='BINDER' meaning='forall' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CforallCond [] {}{}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='BINDER' meaning='forall' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "<ltx:XMArg>#4</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Cexists [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='BINDER' meaning='exists' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CexistsCond [] {}{}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='BINDER' meaning='exists' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "<ltx:XMArg>#4</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Cabs [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='abs' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Cconjugate [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='conjugate' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Carg [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='arg' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Creal [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='real' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Cimaginary [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='imaginary' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Clcm [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='lcm' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Cfloor [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='floor' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Cceiling [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='ceiling' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CeqOp []', - "<ltx:XMTok meaning='eq' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Ceq [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='eq' role='RELOP' ?#1(definitionURL='#1')()/>" - . "#2" - . "</ltx:XMApp>", - afterDigest=>sub { remove_math_commas($_[1], 2); }); -DefConstructor('\CneqOp []', - "<ltx:XMTok meaning='neq' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cneq [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='neq' role='RELOP' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CgtOp []', - "<ltx:XMTok meaning='gt' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cgt [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='gt' role='RELOP' ?#1(definitionURL='#1')()/>" - . "#2" - . "</ltx:XMApp>", - afterDigest=>sub { remove_math_commas($_[1], 2); }); -DefConstructor('\CltOp []', - "<ltx:XMTok meaning='lt' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Clt [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='lt' role='RELOP' ?#1(definitionURL='#1')()/>" - . "#2" - . "</ltx:XMApp>", - afterDigest=>sub { remove_math_commas($_[1], 2); }); -DefConstructor('\CgeqOp []', - "<ltx:XMTok meaning='geq' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cgeq [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='geq' role='RELOP' ?#1(definitionURL='#1')()/>" - . "#2" - . "</ltx:XMApp>", - afterDigest=>sub { remove_math_commas($_[1], 2); }); -DefConstructor('\CleqOp []', - "<ltx:XMTok meaning='leq' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cleq [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='leq' role='RELOP' ?#1(definitionURL='#1')()/>" - . "#2" - . "</ltx:XMApp>", - afterDigest=>sub { remove_math_commas($_[1], 2); }); -DefConstructor('\CequivalentOp []', - "<ltx:XMTok meaning='equivalent' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cequivalent [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='equivalent' role='RELOP' ?#1(definitionURL='#1')()/>" - . "#2" - . "</ltx:XMApp>"); -DefConstructor('\CapproxOp []', - "<ltx:XMTok meaning='approx' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Capprox [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='approx' role='RELOP' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CfactorofOp []', - "<ltx:XMTok meaning='factorof' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cfactorof [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='factorof' role='RELOP' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CintOp []', - "<ltx:XMTok meaning='int' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cint [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='int' role='INTOP' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CintLimits [] {}{}{}{}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='int' role='INTOP' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "<ltx:XMArg>#4</ltx:XMArg>" - . "<ltx:XMArg>#5</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CintDA [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='int' role='INTOP' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CintCond [] {}{}{}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='int' role='INTOP' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "<ltx:XMArg>#4</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Cdiff [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='diff' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Cddiff [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='diff' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Cpartialdiff [] {}{}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='diff' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "?#2(<ltx:XMArg>#2</ltx:XMArg>)()" - . "<ltx:XMArg>#4</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Cdegree {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='degree'/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#1</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Climit [] {}{}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='limit' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "<ltx:XMArg>#4</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\ClimitCond [] {}{}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='limit' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "<ltx:XMArg>#4</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CtendstoOp []', - "<ltx:XMTok meaning='tendsto' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Ctendsto [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='RELOP' meaning='tendsto' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CtendstoAboveOp []', - "<ltx:XMTok meaning='tendsto' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\CtendstoAbove [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='RELOP'meaning='tendsto' type='above' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CtendstoBelowOp []', - "<ltx:XMTok meaning='tendsto' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\CtendstoBelow [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='RELOP' meaning='tendsto' type='below' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Cdivergence [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='divergence' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Cgrad [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='grad' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Curl [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='url' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Claplacian [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok role='OPFUNCTION' meaning='laplacian' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Cset [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='set' role='CONSTRUCTOR' ?#1(definitionURL='#1')()/>" - . "#2" - . "</ltx:XMApp>", - afterDigest=>sub { remove_math_commas($_[1], 2); }); -DefConstructor('\CsetRes [] {}{}', - "<ltx:XMApp role='BIGOP'>" - . "<ltx:XMTok role='BIGOP' meaning='set' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg role='BVAR'>#2</ltx:XMArg>" - . "<ltx:XMArg role='CONDITION'>#3</ltx:XMArg>" - . "<ltx:XMArg role='SCOPE'>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CsetCond [] {}{}{}', - "<ltx:XMApp role='BIGOP'>" - . "<ltx:XMTok role='BIGOP' meaning='set' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg role='BVAR'>#2</ltx:XMArg>" - . "<ltx:XMArg role='CONDITION'>#3</ltx:XMArg>" - . "<ltx:XMArg role='SCOPE'>#4</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CsetDA [] {}{}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='BIGOP' meaning='set' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg role='BVAR'>#2</ltx:XMArg>" - . "<ltx:XMArg role='DOMAINOFAPPLICATION'>#3</ltx:XMArg>" - . "<ltx:XMArg role='SCOPE'>#4</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\ClistOp []', - "<ltx:XMTok meaning='list' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Clist [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='list' role='CONSTRUCTOR' ?#1(definitionURL='#1')()/>" - . "#2" - . "</ltx:XMApp>", - afterDigest=>sub { remove_math_commas($_[1], 2); }); -DefConstructor('\CunionOp []', - "<ltx:XMTok meaning='union' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cunion [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='union' role='OPFUNCTION' ?#1(definitionURL='#1')()/>" - . "#2" - . "</ltx:XMApp>", - afterDigest=>sub { remove_math_commas($_[1], 2); }); -DefConstructor('\CintersectOp []', - "<ltx:XMTok meaning='intersect' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cintersect [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='intersect' role='OPFUNCTION' ?#1(definitionURL='#1')()/>" - . "#2" - . "</ltx:XMApp>", - afterDigest=>sub { remove_math_commas($_[1], 2); }); -DefConstructor('\CinOp []', - "<ltx:XMTok meaning='in' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cin [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='in' role='RELOP' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CnotinOp []', - "<ltx:XMTok meaning='notin' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cnotin [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='notin' role='RELOP' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CsubsetOp []', - "<ltx:XMTok meaning='subset' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Csubset [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='subset' role='RELOP' ?#1(definitionURL='#1')()/>" - . "#2" - . "</ltx:XMApp>", - afterDigest=>sub { remove_math_commas($_[1], 2); }); -DefConstructor('\CprsubsetOp []', - "<ltx:XMTok meaning='prsubset' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cprsubset [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='prsubset' role='RELOP' ?#1(definitionURL='#1')()/>" - . "#2" - . "</ltx:XMApp>", - afterDigest=>sub { remove_math_commas($_[1], 2); }); -DefConstructor('\CnotsubsetOp []', - "<ltx:XMTok meaning='notsubset' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cnotsubset [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='notsubset' role='RELOP' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CnotprsubsetOp []', - "<ltx:XMTok meaning='notprsubset' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cnotprsubset [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='notprsubset' role='RELOP' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CsetdiffOp []', - "<ltx:XMTok meaning='setdiff' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Csetdiff [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='setdiff' role='OPFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CcardOp []', - "<ltx:XMTok meaning='card' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Ccard [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='card' role='OPFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CcartesianproductOp []', - "<ltx:XMTok meaning='cartesianproduct' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Ccartesianproduct [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='cartesianproduct' role='OPFUNCTION' ?#1(definitionURL='#1')()/>" - . "#2" - . "</ltx:XMApp>", - afterDigest=>sub { remove_math_commas($_[1], 2); }); -DefConstructor('\CsupsetOp []', - "<ltx:XMTok meaning='supset' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\CprsupsetOp []', - "<ltx:XMTok meaning='prsupset' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\CnotsupsetOp []', - "<ltx:XMTok meaning='notsupset' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\CnotprsupsetOp []', - "<ltx:XMTok meaning='notprsupset' role='ID' ?#1(definitionURL='#1')()/>"); -DefMacro('\Csupset[]{}','\Csubset[#1]{#2}'); -DefMacro('\Cprsupset[]{}','\Cprsubset[#1]{#2}'); -DefMacro('\Cnotsupset[]{}{}','\Cnotsubset[#1]{#3}{#2}'); -DefMacro('\Cnotprsupset[]{}{}','\Cnotprsubset[#1]{#3}{#2}'); -DefConstructor('\CUnionDAOp []', - "<ltx:XMTok meaning='union' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\CUnionDA [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='BIGOP' meaning='union' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CUnionCond [] {}{}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='BIGOP' meaning='union' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "<ltx:XMArg>#4</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CIntersectDaOp []', - "<ltx:XMTok meaning='intersect' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\CIntersectDa [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='BIGOP' meaning='intersect' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CIntersectCond [] {}{}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='BIGOP' meaning='intersect' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "<ltx:XMArg>#4</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CCartesianproductDaOp []', - "<ltx:XMTok meaning='cartesianproduct' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\CCartesianproductDa [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='BIGOP' meaning='cartesianproduct' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CCartesianproductCond [] {}{}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='BIGOP' meaning='cartesianproduct' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "<ltx:XMArg>#4</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CsumOp []', - "<ltx:XMTok meaning='sum' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\CsumLimits [] {}{}{}{}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='sum' role='SUMOP' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "<ltx:XMArg>#4</ltx:XMArg>" - . "#5</ltx:XMApp>"); -DefConstructor('\CprodOp []', - "<ltx:XMTok meaning='prod' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\CprodLimits [] {}{}{}{}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='prod' role='SUMOP' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg><ci>#2</ci></ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "<ltx:XMArg>#4</ltx:XMArg>" - . "#5</ltx:XMApp>"); -DefConstructor('\Csin [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='sin' role='TRIGFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Ccos [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='cos' role='TRIGFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Ctan [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='tan' role='TRIGFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Csec [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='sec' role='TRIGFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Ccsc [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='csc' role='TRIGFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Ccot [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='cot' role='TRIGFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Csinh [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='sinh' role='TRIGFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Ccosh [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='cosh' role='TRIGFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Ctanh [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='tanh' role='TRIGFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Csech [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='sech' role='TRIGFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Ccsch [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='csch' role='TRIGFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Ccoth [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='coth' role='TRIGFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Carcsin [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='arcsin' role='OPFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Carccos [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='arccos' role='OPFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Carctan [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='arctan' role='OPFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Carcsec [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='arcsec' role='OPFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Carccsc [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='arccsc' role='OPFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Carccot [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='arccot' role='OPFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Carcsinh [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='arcsinh' role='OPFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Carccosh [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='arccosh' role='OPFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Carctanh [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='arctanh' role='OPFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Carcsech [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='arcsech' role='OPFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Carccsch [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='arccsch' role='OPFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Carccoth [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='arccoth' role='OPFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Cexp [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='exp' role='OPFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Cln [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='ln' role='OPFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Clog [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='log' role='OPFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Cmean [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='mean' role='OPFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Csdev [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='sdev' role='OPFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Cvar [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='var' role='OPFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Cmedian [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='median' role='OPFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Cmode [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='mode' role='OPFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Cmoment [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='moment' role='OPFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Cvector [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok role='CONSTRUCTOR' meaning='vector' ?#1(definitionURL='#1')()/>" - . "#2" - . "</ltx:XMApp>", - afterDigest=>sub { remove_math_commas($_[1], 2); }); -DefConstructor('\Cmatrix [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok role='CONSTRUCTOR' meaning='matrix' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Cdeterminant [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='determinant' role='OPFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Ctranspose [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='transpose' role='OPFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Cselector [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='selector' role='OPFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CvectorproductOp []', - "<ltx:XMTok meaning='vectorproduct' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cvectorproduct [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='vectorproduct' role='OPFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\Cscalarproduct [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='scalarproduct' role='OPFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>"); -DefConstructor('\CouterproductOp []', - "<ltx:XMTok meaning='outerproduct' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Couterproduct [] {}{}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='outerproduct' role='OPFUNCTION' ?#1(definitionURL='#1')()/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "<ltx:XMArg>#3</ltx:XMArg>" - . "</ltx:XMApp>");#$ -DefConstructor('\Cintegers []', - "<ltx:XMTok meaning='integers' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Creals []', - "<ltx:XMTok meaning='reals' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Crationals []', - "<ltx:XMTok meaning='rationals' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cnaturalnumbers []', - "<ltx:XMTok meaning='naturalnumbers' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Ccomplexes []', - "<ltx:XMTok meaning='complexes' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cprimes []', - "<ltx:XMTok meaning='primes' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cexponentiale []', - "<ltx:XMTok meaning='exponentiale' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cimaginaryi []', - "<ltx:XMTok meaning='imaginaryi' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cnotanumber []', - "<ltx:XMTok meaning='notanumber' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Ctrue []', - "<ltx:XMTok meaning='true' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cfalse []', - "<ltx:XMTok meaning='false' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cemptyset []', - "<ltx:XMTok meaning='emptyset' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cpi []', - "<ltx:XMTok meaning='pi' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Ceulergamma []', - "<ltx:XMTok meaning='eulergamma' role='ID' ?#1(definitionURL='#1')()/>"); -DefConstructor('\Cinfinit []', - "<ltx:XMTok meaning='infinit' role='ID' ?#1(definitionURL='#1')()/>"); -1; diff --git a/Master/texmf-dist/tex/latex/stex/cmathml/cmathmlx.sty b/Master/texmf-dist/tex/latex/stex/cmathml/cmathmlx.sty deleted file mode 100644 index dd9f04945f4..00000000000 --- a/Master/texmf-dist/tex/latex/stex/cmathml/cmathmlx.sty +++ /dev/null @@ -1,14 +0,0 @@ -%% -%% This is file `cmathmlx.sty', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% cmathml.dtx (with options: `styx') -%% -\RequirePackage{presentation} -\def\CMathML@complement#1{#1^c} -\newcommand{\Ccomplement}[2][]{\CMathML@complement{#2}} -\endinput -%% -%% End of file `cmathmlx.sty'. diff --git a/Master/texmf-dist/tex/latex/stex/cmathml/cmathmlx.sty.ltxml b/Master/texmf-dist/tex/latex/stex/cmathml/cmathmlx.sty.ltxml deleted file mode 100644 index 93025278369..00000000000 --- a/Master/texmf-dist/tex/latex/stex/cmathml/cmathmlx.sty.ltxml +++ /dev/null @@ -1,22 +0,0 @@ -%% -%% This is file `cmathmlx.sty.ltxml', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% cmathml.dtx (with options: `ltxmlx') -%% -# -*- CPERL -*- -package LaTeXML::Package::Pool; -use strict; -use LaTeXML::Package; -use LaTeXML::Document; -RequirePackage('LaTeX'); -DefConstructor('\Ccomplement [] {}', - "<ltx:XMApp>" - . "<ltx:XMTok meaning='complement' role='CSYMBOL'/>" - . "<ltx:XMArg>#2</ltx:XMArg>" - . "</ltx:XMApp>"); -\endinput -%% -%% End of file `cmathmlx.sty.ltxml'. diff --git a/Master/texmf-dist/tex/latex/stex/cnx/cnx.cls b/Master/texmf-dist/tex/latex/stex/cnx/cnx.cls deleted file mode 100644 index 3908c72b577..00000000000 --- a/Master/texmf-dist/tex/latex/stex/cnx/cnx.cls +++ /dev/null @@ -1,142 +0,0 @@ -%% -%% This is file `cnx.cls', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% cnx.dtx (with options: `cls') -%% -\RequirePackage{sref} -\RequirePackage{graphicx} -\DeclareOption{letterpaper} - {\setlength\paperheight {11in}% - \setlength\paperwidth {8.5in}} -\DeclareOption{a4paper} - {\setlength\paperheight {297mm}% - \setlength\paperwidth {210mm}} -\ExecuteOptions{letterpaper} -\ProcessOptions -\input{size10.clo} -\pagenumbering{roman} -\addmetakey{cnxmodule}{name} -\srefaddidkey{cnxmodule}{id} -\newenvironment{cnxmodule}[1][]{\metasetkeys{cnxmodule}{#1}}{} -\newenvironment{ccontent}{}{} -\newcounter{section} -\srefaddidkey{sectioning}{id} -\newenvironment{csection}[2][]% -{\stepcounter{section}\strut\\[1.5ex]\noindent% -{\Large\bfseries\arabic{section}.~{#2}}\\[1.5ex] -\metasetkeys{sectioning}{#1}} -{} -\newcounter{subsection}[section] -\newenvironment{csubsection}[2][] -{\refstepcounter{subsection}\strut\\[1ex]\noindent% -{\large\bfseries{\arabic{section}.\arabic{subsection}.~#2\\[1ex]}}% -\metasetkeys{sectioning}{#1}}% -{} -\newcounter{subsubsection}[subsection] -\newenvironment{csubsubsection}[2][] -{\refstepcounter{subsubsection}\strut\\[.5ex]\noindent -{\bfseries\arabic{section}.\arabic{subsection}.\arabic{subsubsecction}~#2\\[.5ex]}% -\metasetkeys{sectioning}{#1}}{} -\srefaddidkey{para}{id} -\newenvironment{cpara}[1][]{\metasetkeys{para}{#1}}{\par} -\srefaddidkey{note} -\addmetakey{note}{type} -\newenvironment{cnote}[1][]% -{\metasetkeys{note}{#1}\par\noindent\strut\hfill\begin{minipage}{10cm}{\bfseries\note@type}:~}% -{\end{minipage}\hfill\strut\par} -\srefaddidkey{equation}{id} -\newenvironment{cequation}[1][]% -{\metasetkeys{equation}{#1}\begin{displaymath}} -{\end{displaymath}} -\srefaddidkey{cquote} -\addmetakey{cquote}{type} -\addmetakey{cquote}{src} -\newenvironment{cquote}[1][]{% -\metasetkeys{cquote}{#1}\begin{center}\begin{minipage}{.8\textwidth}}{\end{minipage}\end{center}} -\newcommand{\litem}[2][]{\item[#1]\label{#2}} -\srefaddidkey{example} -\addmetakey{example}{name} -\newenvironment{cexample}[1][]{\metasetkeys{example}{#1} -{\ifx\example@name\@empty\else\noindent\bfseries{\example@name}\fi}} -{} -\newcounter{cexercise} -\srefaddidkey{cexercise} -\addmetakey{cexercise}{name} -\newenvironment{cexercise}[1][]{\metasetkeys{cexercise}{#1} -{\ifx\cexercise@name\@empty\else\stepcounter{cexercise}\noindent\bfseries{\cexercise@name~\arabic{cexercise}}\fi}} -{} -\srefaddidkey{cproblem} -\newenvironment{cproblem}[1][]{\metasetkeys{cproblem}{#1}}{}{} -\srefaddidkey{csolution} -\newenvironment{csolution}[1][]{\metasetkeys{csolution}{#1}}{\par\noindent\bfseries{Solution}}{} -\srefaddidkey{rule} -\addmetakey{rule}{name} -\addmetakey{rule}{type} -\newenvironment{crule}[1][]{\metasetkeys{rule}{#1}% -{\noindent\bfseries{\rule@type:}\ifx\rule@name\@empty\else~(\rule@name)\fi}}% -{} -\srefaddidkey{statement} -\newenvironment{statement}[1][]{\metasetkeys{statement}{#1}}{} -\srefaddidkey{proof} -\newenvironment{proof}[1][]{\metasetkeys{proof}{#1}}{} -\srefaddidkey{definition} -\addmetakey{definition}{term} -\addmetakey{definition}{seealso} -\newenvironment{definition}[1][]{\metasetkeys{definition}{#1}{\noindent\bfseries{Definition:}}}{} -\srefaddidkey{meaning} -\newenvironment{cmeaning}[1][]{\metasetkeys{meaning}{#1}}{} -\addmetakey{cnxn}{document} -\addmetakey{cnxn}{target} -\addmetakey{cnxn}{strength} -\newcommand{\cnxn}[2][]% keys, link text -{\metasetkeys{cnxn}{#1}{\underline{#2}}\footnote{{\ttfamily\@ifx\cnxn@document\@empty\cnxn@document\fi\#\cnxn@target}}} -\newcommand\@makefntext[1]{\parindent 1em\noindent\hb@xt@1.8em{\hss\@makefnmark}#1} -\addmetakey{link}{src} -\newcommand{\link}[2][]{\metasetkeys{link}{#1}\underline{#2}} -\srefaddidkey{cfigure} -\addmetakey{cfigure}{type} -\addmetakey{cfigure}{caption} -\newcounter{figure} -\newcommand{\cfigure}[3][]{% cnx_keys, graphicx_keys, path -\begin{center}% -\includegraphics[#2]{#3}% -\metasetkeys{cfigure}{#1}\sref@target% -\ifx\cfigure@caption\@empty\else -\par\noindent Figure\refstepcounter{figure} {\arabic{figure}}: \cfigure@caption% -\protected@edef\@currentlabel{\arabic{figure}}% -\sref@label@id{Figure \thefigure}\fi -\end{center}} -\addmetakey{ccite}{src} -\newcommand{\ccite}[2][]{\metasetkeys{ccite}{#1}\emph{#2}} -\newcommand{\term}[1]{{\bfseries\underline{#1}}} -\addmetakey{metadata}{version} -\addmetakey{metadata}{created} -\addmetakey{metadata}{revised} -\newsavebox{\metadatabox} -\newenvironment{metadata}[1][]% -{\noindent\hfill\begin{lrbox}{\metadatabox} -\begin{minipage}{.8\textwidth}% -{\Large\bfseries CNX Module: \cnx@name\hfill\strut}\\[2ex]}% -{\end{minipage}\end{lrbox}\fbox{\usebox\metadatabox}\hfill} -\newenvironment{authorlist}{{\bfseries{Authors}:~}}{\\[1ex]} -\newenvironment{maintainerlist}{{\bfseries{Maintainers}:~}}{\\[1ex]} -\srefaddidkey{auth} -\addmetakey{auth}{honorific} -\addmetakey{auth}{firstname} -\addmetakey{auth}{other} -\addmetakey{auth}{surname} -\addmetakey{auth}{lineage} -\addmetakey{auth}{email} -\newcommand{\cnxauthor}[1][]{\metasetkeys{auth}{#1}\auth@first~\auth@sur,} -\newcommand{\maintainer}[1][]{\metasetkeys{auth}{#1}\auth@first~\auth@sur,} -\newenvironment{keywordlist}{\bfseries{Keywords}:~}{\\[1ex]} -\newcommand{\keyword}[1]{#1,} -\newenvironment{cnxabstract}% -{\par\noindent\strut\hfill\begin{minipage}{10cm}{\bfseries{Abstract}:~}}% -{\end{minipage}\hfill} -\endinput -%% -%% End of file `cnx.cls'. diff --git a/Master/texmf-dist/tex/latex/stex/cnx/cnx.cls.ltxml b/Master/texmf-dist/tex/latex/stex/cnx/cnx.cls.ltxml deleted file mode 100644 index 9dc46bd071f..00000000000 --- a/Master/texmf-dist/tex/latex/stex/cnx/cnx.cls.ltxml +++ /dev/null @@ -1,280 +0,0 @@ -# -*- CPERL -*- -package LaTeXML::Package::Pool; -use strict; -use LaTeXML::Package; -RequirePackage('metakeys'); -RegisterNamespace('cnx'=>"http://cnx.rice.edu/cnxml"); -RegisterNamespace('md'=>"http://cnx.rice.edu/mdml/0.4"); -RegisterNamespace('bib'=>"http://bibtexml.sf.net/"); -RegisterNamespace('m'=>"http://www.w3.org/1998/Math/MathML"); -DocType("cnx:document", -"-//CNX//DTD CNXML 0.5 plus LaTeXML//EN", -"../dtd/cnxml+ltxml.dtd", -'#default'=>"http://cnx.rice.edu/cnxml", - 'md'=>"http://cnx.rice.edu/mdml/0.4", - 'bib'=>"http://bibtexml.sf.net/", - 'm'=>"http://www.w3.org/1998/Math/MathML", - 'ltx'=>"http://dlmf.nist.gov/LaTeXML"); -NewCounter('@itemizei', 'document', idprefix=>'I'); -NewCounter('@itemizeii', '@itemizei', idprefix=>'I'); -NewCounter('@itemizeiii', '@itemizeii', idprefix=>'I'); -NewCounter('@itemizeiv', '@itemizeiii',idprefix=>'I'); -NewCounter('@itemizev', '@itemizeiv', idprefix=>'I'); -NewCounter('@itemizevi', '@itemizev', idprefix=>'I'); - -NewCounter('enumi', '@itemizei', idprefix=>'i'); -NewCounter('enumii', '@itemizeii', idprefix=>'i'); -NewCounter('enumiii','@itemizeiii', idprefix=>'i'); -NewCounter('enumiv', '@itemizeiv', idprefix=>'i'); -# A couple of more levels, since we use these for ID's! -NewCounter('enumv', '@itemizev', idprefix=>'i'); -NewCounter('enumvi', '@itemizevi', idprefix=>'i'); - -DefMacro('\theenumi', '\arabic{enumi}'); -DefMacro('\theenumii', '\alph{enumii}'); -DefMacro('\theenumiii', '\roman{enumiii}'); -DefMacro('\theenumiv', '\Alph{enumiv}'); - -NewCounter('equation', 'document', idprefix=>'E'); -DefMacro('\theequation', '\arabic{equation}'); -DefMacro('\textwidth','16cm'); -Let('\thedocument@ID','\@empty'); -DefKeyVal('cnxmodule','name','Semiverbatim'); -DefKeyVal('cnxmodule','id','Semiverbatim'); -DefEnvironment('{document}','<cnx:document>#body</cnx:document>', - beforeDigest=> sub { AssignValue(inPreamble=>0); }, - afterDigest=> sub { $_[0]->getGullet->flush; return; }); -DefEnvironment('{cnxmodule} OptionalKeyVals:cnxmodule', - "<cnx:name>&KeyVal('#1','name')</cnx:name>\n#body\n", - afterDigestBegin => sub { - AssignValue('cnxmodule_id', - KeyVal($_[1]->getArg(1), 'id')->toString, - 'global'); - });#$ -Tag('cnx:document', afterClose => sub { - $_[1]->setAttribute('id', LookupValue('cnxmodule_id')); - }); -DefEnvironment('{ccontent}',"<cnx:content>#body</cnx:content>"); -DefKeyVal('sectioning','id','Semiverbatim'); -DefEnvironment('{csection}OptionalKeyVals:sectioning{}', - "<cnx:section %&KeyVals(#1)>\n" - . "?#2(<cnx:name>#2</cnx:name>\n)()" - . "#body\n</cnx:section>\n"); -DefEnvironment('{csubsection}OptionalKeyVals:sectioning{}', - "<cnx:section %&KeyVals(#1)>\n" - . "?#2(<cnx:name>#2</cnx:name>\n)()" - . "#body\n</cnx:section>\n"); -DefEnvironment('{csubsubsection}OptionalKeyVals:sectioning{}', - "<cnx:section %&KeyVals(#1)>\n" - . "?#2(<cnx:name>#2</cnx:name>\n)()" - . "#body\n</cnx:section>\n"); -DefKeyVal('para','id','Semiverbatim'); -DefEnvironment('{cpara} OptionalKeyVals:para','<cnx:para %&KeyVals(#1)>#body</cnx:para>'); -sub number_para { - my($document,$node,$whatsit)=@_; - # Get prefix from first parent with an id. - my(@parents)=$document->findnodes('ancestor::*[@id]',$node); # find 1st id'd parent. - my $prefix= (@parents ? $parents[$#parents]->getAttribute('id')."." : ''); - # Get the previous number within parent; Worried about intervening elements around para's, but... - my(@siblings)=$document->findnodes("preceding-sibling::cnx:para",$node); - my $n=1; - $n = $1+1 if(@siblings && $siblings[$#siblings]->getAttribute('id')=~/(\d+)$/); - $node->setAttribute(id=>$prefix."p$n"); } -Tag('cnx:para',afterOpen=>\&number_para); -DefConstructor('\par',sub { $_[0]->maybeCloseElement('cnx:para'); },alias=>"\\par\n"); -Tag('cnx:para', autoClose=>1, autoOpen=>1); -DefKeyVal('note','id','Semiverbatim'); -DefKeyVal('note','type','Semiverbatim'); -DefEnvironment('{cnote}OptionalKeyVals:note','<cnx:note %&KeyVals(#1)>#body</cnx:note>'); -DefKeyVal('equation','id','Semiverbatim'); -DefEnvironment('{cequation} OptionalKeyVals:equation', - "<cnx:equation %&KeyVals(#1)>" - . "<ltx:Math mode='display'>" - . "<ltx:XMath>#body</ltx:XMath>" - . "</ltx:Math></cnx:equation>", - mode=>'display_math'); -DefKeyVal('cquote','id','Semiverbatim'); -DefKeyVal('cquote','type','Semiverbatim'); -DefKeyVal('cquote','src','Semiverbatim'); -DefEnvironment('{cquote} OptionalKeyVals:cquote', - "<cnx:quote %&KeyVals(#1)>#body</cnx:quote>"); -DefConstructor('\footnote[]{}',"<cnx:note type='foot'>#2</cnx:note>"); -DefConstructor('\emph{}',"<cnx:emphasis>#1</cnx:emphasis>"); -DefConstructor('\[', - "<cnx:equation id='#id'>" - . "<ltx:Math mode='display'>" - . "<ltx:XMath>" - . "#body" - . "</ltx:XMath>" - . "</ltx:Math>" - ."</cnx:equation>", - beforeDigest=> sub{ $_[0]->beginMode('display_math'); }, - captureBody=>1, - properties=> sub { RefStepID('equation') }); -DefConstructor('\]' ,"",beforeDigest=> sub{ $_[0]->endMode('display_math'); }); -DefConstructor('\[', - "<cnx:equation id='#id'>" - . "<ltx:Math mode='display'>" - . "<ltx:XMath>" - . "#body" - . "</ltx:XMath>" - . "</ltx:Math>" - ."</cnx:equation>", - beforeDigest=> sub{ $_[0]->beginMode('display_math'); }, - captureBody=>1, - properties=> sub { RefStepID('equation') }); -DefConstructor('\]' ,"",beforeDigest=> sub{ $_[0]->endMode('display_math'); }); - -DefMacro('\eqnarray', '\@@eqnarray\@start@alignment'); -DefMacro('\endeqnarray', '\@finish@alignment\end@eqnarray'); -DefMacro('\csname eqnarray*\endcsname', '\@@eqnarray*\@start@alignment'); -DefMacro('\csname endeqnarray*\endcsname', '\@finish@alignment\end@eqnarray'); -DefConstructor('\@@eqnarray OptionalMatch:* AlignmentBody:\end@eqnarray', - sub { - my($document,$star,$body,%props)=@_; - $document->openElement('cnx:equation',refnum=>$props{refnum},id=>$props{id}); - $document->openElement('ltx:Math',mode=>'display'); - $document->openElement('ltx:XMath'); - constructAlignment($document,$body,attributes=>{name=>'eqnarray'}); - $document->closeElement('ltx:XMath'); - $document->closeElement('ltx:Math'); - $document->closeElement('cnx:equation'); }, - mode=>'display_math', - beforeDigest=>sub { alignmentBindings('rcl'); }, - properties=> sub { ($_[1] ? RefStepID('equation') : RefStepCounter('equation')); }, - afterDigest=>sub { - $_[1]->setProperty(body=>$_[1]->getArg(2));}, # So we get TeX - reversion=>'\begin{eqnarray#1}#2\end{eqnarray#1}'); -Tag('cnx:item', autoClose=>1); -DefConstructor('\item[]',"<cnx:item>?#1(<cnx:name>#1</cnx:name>)"); -DefConstructor('\litem[]{}',"<cnx:item id='#2'>?#1(<cnx:name>#1</cnx:name>)"); -DefConstructor('\itemize@item[]', - "<cnx:item id='#id'>?#1(<cnx:name>#1</cnx:name>)", - properties=>sub{ RefStepItemCounter(); }); -DefConstructor('\enumerate@item[]', - "<cnx:item id='#id'>?#1(<cnx:name>#1</cnx:name>)", - properties=>sub{ RefStepItemCounter(); }); -DefConstructor('\description@item[]', - "<cnx::item id='#id'>?#1(<cnx:name>#1</cnx:name>)", - properties=>sub{ RefStepItemCounter(); }); -AssignValue(itemlevel=>0); -DefEnvironment('{itemize}', - "<cnx:list id='#id' type='itemize'>#body</cnx:list>", - properties=>sub { beginItemize('itemize'); }); -DefEnvironment('{enumerate}', - "<cnx:list type='enumerate' id='#id'>#body</cnx:list>", - properties=>sub { beginItemize('enumerate'); }); -DefEnvironment('{description}', - "<cnx:list type='description' id='#id'>#body</cnx:list>", - properties=>sub { beginItemize('description'); }); -DefEnvironment('{center}','#body'); -DefEnvironment('{minipage}{}','#body'); -DefEnvironment('{small}','#body'); -DefEnvironment('{footnotesize}','#body'); -DefEnvironment('{tiny}','#body'); -DefEnvironment('{scriptsize}','#body'); -DefConstructor('\ref Semiverbatim', "<cnx:cnxn target='#1'>&LookupValue('LABEL@#1')</cnx:cnxn>"); -DefKeyVal('example','id','Semiverbatim'); -DefEnvironment('{cexample}OptionalKeyVals:example', - "<cnx:example %&KeyVals(#1)>#body</cnx:example>"); -DefKeyVal('cexercise','id','Semiverbatim'); -DefKeyVal('cexercise','name','Semiverbatim'); -DefEnvironment('{cexercise}OptionalKeyVals:exercise', - "<cnx:exercise ?&defined(&KeyVal(#1,'id'))(id='&KeyVal(#1,'id')')()>" - . "#body" - . "</cnx:exercise>"); -DefKeyVal('cproblem','id','Semiverbatim'); -DefKeyVal('cproblem','name','Semiverbatim'); -DefEnvironment('{cproblem}OptionalKeyVals:cproblem', - "<cnx:problem ?&defined(&KeyVal(#1,'id'))(id='&KeyVal(#1,'id')')()>" - . "?&defined(&KeyVal(#1,'name'))(<cnx:name>&KeyVal(#1,'name')</cnx:name>\n)()" - . "#body" - . "</cnx:problem>"); -DefKeyVal('csolution','id','Semiverbatim'); -DefKeyVal('csolution','name','Semiverbatim'); -DefEnvironment('{csolution}OptionalKeyVals:cproblem', - "<cnx:solution ?&defined(&KeyVal(#1,'id'))(id='&KeyVal(#1,'id')')()>" - . "?&defined(&KeyVal(#1,'name'))(<cnx:name>&KeyVal(#1,'name')</cnx:name>\n)()" - . "#body" - . "</cnx:solution>"); -DefKeyVal('rule','id','Semiverbatim'); -DefKeyVal('rule','name','Semiverbatim'); -DefKeyVal('rule','type','Semiverbatim'); -DefEnvironment('{crule}OptionalKeyVals:rule', - "<cnx:rule ?&defined(&KeyVal(#1,'id'))(id='&KeyVal(#1,'id')')() type='&KeyVal(#1,'type')'>\n" - . "?&defined(&KeyVal(#1,'name'))(<cnx:name>&KeyVal(#1,'name')</cnx:name>\n)()" - . "\n#body\n" - . "</cnx:rule>\n"); -DefKeyVal('statement','id','Semiverbatim'); -DefEnvironment('{statement} OptionalKeyVals:statement','<cnx:statement %&KeyVals(#1)>#body</cnx:statement>'); -DefKeyVal('proof','id','Semiverbatim'); -DefEnvironment('{proof}OptionalKeyVals:proof','<cnx:proof %&KeyVals(#1)>#body</cnx:proof>'); -DefKeyVal('definition','id','Semiverbatim'); -DefKeyVal('definition','term','Semiverbatim'); -DefKeyVal('definition','seealso','Semiverbatim'); -DefEnvironment('{definition}OptionalKeyVals:definition', - "<cnx:definition ?&defined(&KeyVal(#1,'id'))(id='&KeyVal(#1,'id')')()>\n" - . "?&defined(&KeyVal(#1,'term'))(<cnx:term>&KeyVal(#1,'term')</cnx:term>\n)()" - . "\n#body\n" - . "?&defined(&KeyVal(#1,'seealso'))(<cnx:seealso><cnx:term>&KeyVal(#1,'term')</cnx:term></cnx:seealso>\n)()" - . "</cnx:definition>\n"); -DefKeyVal('meaning','id','Semiverbatim'); -DefEnvironment('{cmeaning}OptionalKeyVals:meaning','<cnx:meaning %&KeyVals(#1)>#body</cnx:meaning>'); -DefKeyVal('cnxn','document','Semiverbatim'); -DefKeyVal('cnxn','target','Semiverbatim'); -DefKeyVal('cnxn','strength','Semiverbatim'); -DefConstructor('\cnxn OptionalKeyVals:cnxn {}','<cnx:cnxn %&KeyVals(#1)>#1</cnx:cnxn>'); -DefKeyVal('link','src','Semiverbatim'); -DefConstructor('\link OptionalKeyVals:link {}','<cnx:link %&KeyVals(#1)>#2</cnx:link>'); -DefKeyVal('cfigure','id','Semiverbatim'); -DefKeyVal('cfigure','name','Semiverbatim'); -DefKeyVal('cfigure','type','Semiverbatim'); -DefKeyVal('cfigure','caption','Semiverbatim'); -DefConstructor('\cfigure OptionalKeyVals:cfigure Semiverbatim Semiverbatim', - "<cnx:figure ?&defined(&KeyVal(#1,'id'))(id='&KeyVal(#1,'id')')()>" - . "?&defined(&KeyVal(#1,'name'))(<cnx:name>&KeyVal(#1,'name')</cnx:name>\n)()" - . "<cnx:media type='&KeyVal(#1,'type')' src='#3'/>" - . "?&defined(&KeyVal(#1,'caption'))(<cnx:caption>&KeyVal(#1,'caption')</cnx:caption>\n)()" - . "</cnx:figure>"); -DefKeyVal('ccite','src','Semiverbatim'); -DefConstructor('\ccite OptionalKeyVals:ccite {}','<cnx:cite %&KeyVals(#1)>#2</cnx:cite>'); -DefConstructor('\term[]{}',"<cnx:term>#2</cnx:term>"); -DefKeyVal('metadata','version','Semiverbatim'); -DefKeyVal('metadata','created','Semiverbatim'); -DefKeyVal('metadata','revised','Semiverbatim'); -DefEnvironment('{metadata}OptionalKeyVals:metadata', - "<cnx:metadata>\n" - . "<md:version>&KeyVal('#1','version')</md:version>\n" - . "<md:created>&KeyVal('#1','created')</md:created>\n" - . "<md:revised>&KeyVal('#1','revised')</md:revised>\n" - . "#body\n" - . "</cnx:metadata>"); -DefEnvironment('{authorlist}',"<md:authorlist>#body</md:authorlist>"); -DefEnvironment('{maintainerlist}',"<md:maintainerlist>#body</md:maintainerlist>"); -DefKeyVal('auth','id','Semiverbatim'); -DefKeyVal('auth','firstname','Semiverbatim'); -DefKeyVal('auth','surname','Semiverbatim'); -DefKeyVal('auth','email','Semiverbatim'); -DefConstructor('\cnxauthor OptionalKeyVals:auth', - "<md:author id='&KeyVal('#1','id')'>\n" - . "?&defined(&KeyVal(#1,'honorific'))(<md:honorific>&KeyVal('#1','honorific')</md:honorific>\n)()" - . "?&defined(&KeyVal(#1,'firstname'))(<md:firstname>&KeyVal('#1','firstname')</md:firstname>\n)()" - . "?&defined(&KeyVal(#1,'other'))(<md:other>&KeyVal('#1','other')</md:other>\n)()" - . "?&defined(&KeyVal(#1,'surname'))(<md:surname>&KeyVal('#1','surname')</md:surname>\n)()" - . "?&defined(&KeyVal(#1,'lineage'))(<md:lineage>&KeyVal('#1','lineage')</md:lineage>\n)()" - . "?&defined(&KeyVal(#1,'email'))(<md:email>&KeyVal('#1','email')</md:email>\n)()" - . "</md:author>\n"); -DefConstructor('\maintainer OptionalKeyVals:auth', - "<md:maintainer id='&KeyVal('#1','id')'>\n" - . "?&defined(&KeyVal(#1,'honorific'))(<md:honorific>&KeyVal('#1','honorific')</md:honorific>\n)()" - . "?&defined(&KeyVal(#1,'firstname'))(<md:firstname>&KeyVal('#1','firstname')</md:firstname>\n)()" - . "?&defined(&KeyVal(#1,'other'))(<md:other>&KeyVal('#1','other')</md:other>\n)()" - . "?&defined(&KeyVal(#1,'surname'))(<md:surname>&KeyVal('#1','surname')</md:surname>\n)()" - . "?&defined(&KeyVal(#1,'lineage'))(<md:lineage>&KeyVal('#1','lineage')</md:lineage>\n)()" - . "?&defined(&KeyVal(#1,'email'))(<md:email>&KeyVal('#1','email')</md:email>\n)()" - . "</md:maintainer>\n"); -DefEnvironment('{keywordlist}',"<md:keywordlist>\n#body\n</md:keywordlist>"); -DefConstructor('\keyword {}',"<md:keyword>#1</md:keyword>"); -DefEnvironment('{cnxabstract} OptionalKeyVals:cnxabstract', - "<md:abstract>\n#body\n</md:abstract>\n"); -1; diff --git a/Master/texmf-dist/tex/latex/stex/ctansvn.sty b/Master/texmf-dist/tex/latex/stex/ctansvn.sty deleted file mode 100644 index 5ddfe7667e1..00000000000 --- a/Master/texmf-dist/tex/latex/stex/ctansvn.sty +++ /dev/null @@ -1,2 +0,0 @@ -\def\ctancitesuffix{:ctan} -\def\ctancite#1{\cite{#1\ctancitesuffix}} diff --git a/Master/texmf-dist/tex/latex/stex/dcm/dcm.sty b/Master/texmf-dist/tex/latex/stex/dcm/dcm.sty index d6bab773306..5b5cfb013d1 100644 --- a/Master/texmf-dist/tex/latex/stex/dcm/dcm.sty +++ b/Master/texmf-dist/tex/latex/stex/dcm/dcm.sty @@ -7,8 +7,9 @@ %% dcm.dtx (with options: `package') %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesPackage{dcm}[2012/01/28 v0.3 Dublin Core Metadata] -\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}} +\ProvidesPackage{dcm}[2016/04/06 v0.3 Dublin Core Metadata] +\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{rdfmeta} + \PassOptionsToPackage{\CurrentOption}{workaddress}} \ProcessOptions \RequirePackage{workaddress} \RequirePackage[sectioning]{rdfmeta} @@ -81,6 +82,7 @@ T\ifnum\count1>9\else0\fi\the\count1:\ifnum\count3>9\else0\fi\the\count3:00Z} \def\dcm@subsection@heading{Subsection} \def\dcm@subsubsection@heading{Subsubsection} \def\dcm@paragraph@heading{Paragraph} +\def\omdoc{OMDoc} \endinput %% %% End of file `dcm.sty'. diff --git a/Master/texmf-dist/tex/latex/stex/dcm/dcm.sty.ltxml b/Master/texmf-dist/tex/latex/stex/dcm/dcm.sty.ltxml deleted file mode 100644 index cdd386bbc6f..00000000000 --- a/Master/texmf-dist/tex/latex/stex/dcm/dcm.sty.ltxml +++ /dev/null @@ -1,72 +0,0 @@ -# -*- CPERL -*- -package LaTeXML::Package::Pool; -use strict; -use LaTeXML::Global; -use LaTeXML::Package; -RequirePackage('rdfmeta'); -RequirePackage('workaddress'); -sub FishOutMetadata { - my ($document,$keyvals)=@_; - foreach my $role(qw(creators contributors)) { - my $idlist_string=getKeyValue_noDelim($keyvals,$role); - my @ids = split(/,\s*/, $idlist_string); - foreach my $id(@ids) { - my $name = LookupValue('DCM_'.$id.'_name'); - if ($name) { - my $prop_role = $role; -chop $prop_role if $prop_role; - $document->insertElement("dc:$prop_role",$name) if $role; - } else {print STDERR "Warning: no $role with 'id' $id !\n";} - } - } - return;}#$ -DefEnvironment('{DCmetadata}[]', "<omdoc:metadata>#body</omdoc:metadata>"); -DefConstructor('\DCMcreators{}',sub{ - my ($document,$args,%properties) = @_; - my $keyval = LaTeXML::KeyVals->new('wa@person',T_BEGIN,T_END,('creators'=>$args)); - FishOutMetadata($document,$keyval); - return;}); -DefConstructor('\DCMcontributors{}',sub{ - my ($document,$args,%properties) = @_; - my $keyval = LaTeXML::KeyVals->new('wa@person',T_BEGIN,T_END,('contributors'=>$args)); - FishOutMetadata($document,$keyval); - return;}); -DefConstructor('\DCMtitle{}',"<dc:title>#1</dc:title>"); -DefConstructor('\DCMsubject{}',"<dc:subject>#1</dc:subject>"); -DefConstructor('\DCMdescription{}',"<dc:description>#1</dc:description>"); -DefConstructor('\DCMpublisher{}',"<dc:publisher>#1</dc:publisher>"); -DefConstructor('\DCMdate{}',"<dc:date>#1</dc:date>"); -DefConstructor('\DCMtype{}',"<dc:type>#1</dc:type>"); -DefConstructor('\DCMidentifier{}{}',"<dc:identifier scheme='#1'>#2</dc:identifier>"); -DefConstructor('\DCMsource{}',"<dc:source>#1</dc:source>"); -DefConstructor('\DCMlanguage{}',"<dc:language>#1</dc:language>"); -DefConstructor('\DCMrelation{}',"<dc:relation>#1</dc:relation>"); -DefConstructor('\DCMrights{}',"<dc:rights>#1</dc:rights>"); -DefMacro('\DCMlicensenotice{}','\DCMrights{#1}'); -DefMacro('\DCMcopyrightnotice{}{}','\DCMrights{Copyright {\copyright} #1: #2}'); -DefConstructor('\cclicense{}',"<cc:license>#1</cc:license>"); -DefConstructor('\attribution',"<cc:attribution/>"); -DefConstructor('\noncommercial',"<cc:noncommercial/>"); -DefConstructor('\sharealike',"<cc:sharealike/>"); -DefConstructor('\noderivativeworks',"<cc:noderivativeworks>"); -DefConstructor('\DCMabstract{}',"<dc:description>#1</dc:description>"); -Tag('dc:description',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1); -Tag('dc:date',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1); -Tag('dc:creator',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1); -Tag('dc:contributor',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1); -Tag('dc:title',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1); -Tag('dc:subject',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1); -Tag('dc:publisher',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1); -Tag('dc:type',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1); -Tag('dc:identifier',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1); -Tag('dc:language',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1); -Tag('dc:rights',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1); -RawTeX(' -\def\ISOtimestamp{\count1=\time\divide\count1 by 60 % hours -\count2=\count1\multiply\count2 by 60% minutes in \count1 hours -\count3=\time\advance\count3 by -\count2 % minutes -\the\year -\ifnum\month>9\else0\fi\the\month-\ifnum\day>9\else0\fi\the\day -T\ifnum\count1>9\else0\fi\the\count1:\ifnum\count3>9\else0\fi\the\count3:00Z} -'); -Tag('dc:title',afterOpen=>\&numberIt,afterClose=>\&locateIt); -1; diff --git a/Master/texmf-dist/tex/latex/stex/hwexam/hwexam.cls b/Master/texmf-dist/tex/latex/stex/hwexam/hwexam.cls index 1408b9918f6..44aa7616d1b 100644 --- a/Master/texmf-dist/tex/latex/stex/hwexam/hwexam.cls +++ b/Master/texmf-dist/tex/latex/stex/hwexam/hwexam.cls @@ -7,28 +7,26 @@ %% hwexam.dtx (with options: `cls') %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesClass{hwexam}[2012/01/28 v0.9b assignment and exam documents] -\DeclareOption{test}{\PassOptionsToPackage{\CurrentOption}{hwexam}} -\DeclareOption{multiple}{\PassOptionsToPackage{\CurrentOption}{hwexam}} -\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}} -\DeclareOption{extrefs}{\PassOptionsToPackage{\CurrentOption}{sref}} -\DeclareOption{notes}{\PassOptionsToPackage{\CurrentOption}{problem}} -\DeclareOption{hints}{\PassOptionsToPackage{\CurrentOption}{problem}} -\DeclareOption{solutions}{\PassOptionsToPackage{\CurrentOption}{problem}} -\DeclareOption{pts}{\PassOptionsToPackage{\CurrentOption}{problem}} -\DeclareOption{min}{\PassOptionsToPackage{\CurrentOption}{problem}} -\DeclareOption{boxed}{\PassOptionsToPackage{\CurrentOption}{problem}} -\DeclareOption{extract}{\PassOptionsToPackage{\CurrentOption}{problem}} -\DeclareOption*{\PassOptionsToClass{\CurrentOption}{omdoc}} +\ProvidesClass{hwexam}[2016/04/06 v1.1 assignment and exam documents] +\DeclareOption*{ + \PassOptionsToClass{\CurrentOption}{omdoc} + \PassOptionsToPackage{\CurrentOption}{stex} + \PassOptionsToPackage{\CurrentOption}{hwexam} + \PassOptionsToPackage{\CurrentOption}{tikzinput} +} \ProcessOptions \LoadClass{omdoc} \RequirePackage{stex} \RequirePackage{hwexam} +\RequirePackage{tikzinput} \RequirePackage{graphicx} \RequirePackage{a4wide} \RequirePackage{amssymb} \RequirePackage{amstext} \RequirePackage{amsmath} +\newcommand\assig@default@type{\hwexam@assignment@kw} +\addmetakey[\assig@default@type]{document}{hwexamtype} +\def\document@hwexamtype{\assig@default@type} \endinput %% %% End of file `hwexam.cls'. diff --git a/Master/texmf-dist/tex/latex/stex/hwexam/hwexam.cls.ltxml b/Master/texmf-dist/tex/latex/stex/hwexam/hwexam.cls.ltxml deleted file mode 100644 index 885ada472b4..00000000000 --- a/Master/texmf-dist/tex/latex/stex/hwexam/hwexam.cls.ltxml +++ /dev/null @@ -1,26 +0,0 @@ -# -*- CPERL -*- -package LaTeXML::Package::Pool; -use strict; -use LaTeXML::Package; -use LaTeXML::Util::Pathname; -use Cwd qw(cwd abs_path); -DeclareOption('test',,sub {PassOptions('hwexam','sty',ToString(Digest(T_CS('\CurrentOption')))); }); -DeclareOption('multiple',sub {PassOptions('hwexam','sty',ToString(Digest(T_CS('\CurrentOption')))); }); -DeclareOption('showmeta',sub {PassOptions('metakeys','sty',ToString(Digest(T_CS('\CurrentOption')))); }); -DeclareOption('extrefs',sub {PassOptions('sref','sty',ToString(Digest(T_CS('\CurrentOption')))); }); -DeclareOption('notes',sub {PassOptions('problem','sty',ToString(Digest(T_CS('\CurrentOption')))); }); -DeclareOption('hints',sub {PassOptions('problem','sty',ToString(Digest(T_CS('\CurrentOption')))); }); -DeclareOption('solutions',sub {PassOptions('problem','sty',ToString(Digest(T_CS('\CurrentOption')))); }); -DeclareOption('pts',sub {PassOptions('problem','sty',ToString(Digest(T_CS('\CurrentOption')))); }); -DeclareOption('min',sub {PassOptions('problem','sty',ToString(Digest(T_CS('\CurrentOption')))); }); -DeclareOption('boxed',sub {PassOptions('problem','sty',ToString(Digest(T_CS('\CurrentOption')))); }); -DeclareOption('extract',sub {PassOptions('problem','sty',ToString(Digest(T_CS('\CurrentOption')))); }); -DeclareOption(undef,sub {PassOptions('omdoc','cls',ToString(Digest(T_CS('\CurrentOption')))); }); -ProcessOptions(); -LoadClass('omdoc'); -RequirePackage('stex'); -RequirePackage('hwexam'); -RequirePackage('graphicx'); -RequirePackage('amssymb'); -RequirePackage('amstext'); -RequirePackage('amsmath'); diff --git a/Master/texmf-dist/tex/latex/stex/hwexam/hwexam.sty b/Master/texmf-dist/tex/latex/stex/hwexam/hwexam.sty index db290659ffe..2d2d29157a6 100644 --- a/Master/texmf-dist/tex/latex/stex/hwexam/hwexam.sty +++ b/Master/texmf-dist/tex/latex/stex/hwexam/hwexam.sty @@ -7,65 +7,134 @@ %% hwexam.dtx (with options: `package') %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesPackage{hwexam}[2012/01/28 v0.9b homework assignments and exams] -\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}} +\ProvidesPackage{hwexam}[2016/04/06 v1.1 homework assignments and exams] +\newif\if@hwexam@mh@\@hwexam@mh@false +\DeclareOption{mh}{\@hwexam@mh@true} \newif\iftest\testfalse -\newif\ifsolutions\solutionsfalse -\DeclareOption{test}{\testtrue\solutionsfalse} +\DeclareOption{test}{\testtrue} \newif\ifmultiple\multiplefalse \DeclareOption{multiple}{\multipletrue} \DeclareOption*{\PassOptionsToPackage{\CurrentOption}{problem}} \ProcessOptions \RequirePackage{keyval}[1997/11/10] +\if@hwexam@mh@\RequirePackage{hwexam-mh}\fi \RequirePackage{problem} +\AfterBabelLanguage{ngerman}{\input{hwexam-ngerman.ldf}} +\newcommand\hwexam@assignment@kw{Assignment} +\newcommand\hwexam@given@kw{Given} +\newcommand\hwexam@due@kw{Due} +\newcounter{assignment} +\numberproblemsin{assignment} +\renewcommand\prob@label[1]{\arabic{assignment}.#1} +\srefaddidkey{assig} \addmetakey{assig}{number} \addmetakey*{assig}{title} \addmetakey{assig}{type} \addmetakey{assig}{given} \addmetakey{assig}{due} -\def\given@due#1#2{% -\ifx\assig@given\@empty\else\ifx\assig@due\@empty\else{#1}\fi\fi% -\ifx\assig@given\@empty\else{Given {\assig@given}}\fi% -\ifx\assig@given\@empty\else\ifx\assig@due\@empty\else{, }\fi\fi% -\ifx\assig@due\@empty\else{Due {\assig@due}}\fi% -\ifx\assig@given\@empty\else{\ifx\assig@due\@empty\else{#2}\fi}\fi} +\addmetakey[false]{assig}{loadmodules}[true] +\newcommand\given@due[2]{% +\ifx \inclassig@given\@empty +\ifx \assig@given\@empty +\ifx \inclassig@due\@empty +\ifx \assig@due\@empty% all empty do nothing +\else #1% +\fi +\else #1% +\fi +\else #1% +\fi +\else #1% +\fi +\ifx\inclassig@given\@empty +\ifx\assig@given\@empty% do nothing +\else \hwexam@given@kw\xspace \assig@given% +\fi +\else \hwexam@given@kw\xspace \inclassig@given% +\fi +\ifx \inclassig@due\@empty +\ifx \assig@due\@empty% do nothing +\else +\ifx \inclassig@given\@empty +\ifx \assig@given\@empty% do nothing +\else ,~% +\fi +\else ,~% +\fi +\fi +\else +\ifx \inclassig@given\@empty +\ifx \assig@given\@empty% do nothing +\else ,~% +\fi +\else ,~% +\fi +\fi +\ifx \inclassig@due\@empty +\ifx \assig@due\@empty% do nothing +\else \hwexam@due@kw\xspace \assig@due% +\fi +\else \hwexam@due@kw\xspace \inclassig@due% +\fi +\ifx \inclassig@given\@empty +\ifx \assig@given\@empty +\ifx \inclassig@due\@empty +\ifx \assig@due\@empty% all empty do nothing +\else #2% +\fi +\else #2% +\fi +\else #2% +\fi +\else #2% +\fi +} +\newcommand\assignment@title[3] +{\ifx\inclassig@title\@empty% if there is no outside title +\ifx\assig@title\@empty{#1}\else{#2\assig@title{#3}}\fi +\else{#2}\inclassig@title{#3}\fi}% else show the outside title +\newcommand\assignment@number% +{\ifx\inclassig@number\@empty% if there is no outside number +\ifx\assig@number\@empty\else\assig@number\fi +\else\inclassig@number\fi}% else show the outside number +\newenvironment{assignment}[1][]{\metasetkeys{assig}{#1}\sref@target% +\edef\@@num{\assignment@number}% +\ifx\@@num\@empty\stepcounter{assignment}\else\setcounter{assignment}{\@@num}\fi% +\setcounter{problem}{0}% +\def\current@section@level{\document@hwexamtype}% +\sref@label@id{\document@hwexamtype \thesection}% +\begin{@assignment}} +{\end{@assignment}} +\def\@@asstitle{\protect\document@hwexamtype~\arabic{assignment}% +\assignment@title{}{\;(}{)\;} -- \given@due{}{}} \ifmultiple -\def\assignment@titleblock{% -\@ifundefined{assig@number}{\stepcounter{section}}{\setcounter{section}{\assig@number}}% -\section*{\protect\document@hwexamtype~\arabic{section}:~\assig@title\given@due{\\(})}% -\addcontentsline{toc}{section}{\document@hwexamtype~{\arabic{section}}:~\assig@title}% -\setcounter{problem}{0}} +\newenvironment{@assignment}% +{\ifx\assig@loadmodules\@true +\begin{omgroup}[loadmodules]{\@@asstitle} \else -\def\assignment@titleblock{% -\setcounter{section}{\assig@number} -\begin{center}\bf -\Large\@title\\ -\document@hwexamtype~\assig@number:~\assig@title\strut\\ -\large{\given@due()} +\begin{omgroup}{\@@asstitle} +\fi} +{\end{omgroup}} +\else +\newenvironment{@assignment} +{\begin{center}\bf +\Large\@title\strut\\ +\document@hwexamtype~\arabic{assignment}\assignment@title{\;}{:\;}{\\}% +\large\given@due{--\;}{\;--} \end{center}} -\fi -\def\assignment@process@keys#1{\metasetkeys{assig}{#1} -\ifx\inclassig@title\@empty\else\def\assig@title{\inclassig@title}\fi -\ifx\inclassig@type\@empty\else\def\assig@type{\inclassig@type}\fi -\ifx\inclassig@number\@empty\else\def\assig@number{\inclassig@number}\fi -\ifx\inclassig@due\@empty\else\def\assig@due{\inclassig@due}\fi -\ifx\inclassig@given\@empty\else\def\assig@given{\inclassig@given}\fi} -\def\inclassig@title{} -\def\inclassig@type{} -\def\inclassig@number{} -\def\inclassig@due{} -\def\inclassig@given{} -\newenvironment{assignment}[1][]{\assignment@process@keys{#1}% -\assignment@titleblock}{} -\def\assig@default@type{Assignment} -\addmetakey[\assig@default@type]{document}{hwexamtype} +{} +\fi% multiple \addmetakey{inclassig}{number} -\addmetakey{inclassig}{title} +\addmetakey*{inclassig}{title} \addmetakey{inclassig}{type} \addmetakey{inclassig}{given} \addmetakey{inclassig}{due} -\newcommand{\includeassignment}[2][]{\metasetkeys{inclassig}{#1}\include{#2}} -\newcommand{\inputassignment}[2][]{\metasetkeys{inclassig}{#1}\input{#2}} +\addmetakey{inclassig}{mhrepos} +\clear@inclassig@keys%initially +\newcommand\includeassignment[2][]{\metasetkeys{inclassig}{#1}% +\include{#2}\clear@inclassig@keys} +\newcommand\inputassignment[2][]{\metasetkeys{inclassig}{#1}% +\input{#2}\clear@inclassig@keys} \addmetakey{quizheading}{tas} \newcommand\quizheading[1]{\def\@tas{#1}% \large\noindent NAME: \hspace{8cm} MAILBOX:\\[2ex]% @@ -97,28 +166,28 @@ bonus points. \vfill one problem.}\vfill\par\correction@table \\[3ex] \end{center}} {\newpage} -\def\testspace#1{\iftest\vspace*{#1}\fi} -\def\testnewpage{\iftest\newpage\fi} -\def\testemptypage{\iftest\begin{center}This page was intentionally left +\newcommand\testspace[1]{\iftest\vspace*{#1}\fi} +\newcommand\testnewpage{\iftest\newpage\fi} +\newcommand\testemptypage[1][]{\iftest\begin{center}This page was intentionally left blank for extra space\end{center}\vfill\eject\else\fi} -\def\@problem#1#2#3{\stepcounter{assignment@probs} -\def\@test{#2}\ifx\@test\@empty\else\addtocounter{assignment@totalpts}{#2}\fi -\def\@test{#3}\ifx\@test\@empty\else\addtocounter{assignment@totalmin}{#3}\fi +\renewcommand\@problem[3]{\stepcounter{assignment@probs} +\def\@@pts{#2}\ifx\@@pts\@empty\else\addtocounter{assignment@totalpts}{#2}\fi +\def\@@min{#3}\ifx\@@min\@empty\else\addtocounter{assignment@totalmin}{#3}\fi \xdef\correction@probs{\correction@probs & #1}% \xdef\correction@pts{\correction@pts & #2} \xdef\correction@reached{\correction@reached &}} \newcounter{assignment@probs} \newcounter{assignment@totalpts} \newcounter{assignment@totalmin} -\def\correction@probs{prob.}% -\def\correction@pts{total}% -\def\correction@reached{reached}% +\newcommand\correction@probs{prob.}% +\newcommand\correction@pts{total}% +\newcommand\correction@reached{reached}% \stepcounter{assignment@probs} -\def\correction@table{\begin{tabular}{|l|*{\theassignment@probs}{c|}|p{3cm}|}\hline% -&\multicolumn{\theassignment@probs}{c||}% +\newcommand\correction@table{\begin{tabular}{|l|*{\theassignment@probs}{c|}|l|}\hline% +&\multicolumn{\theassignment@probs}{c||}%| {\footnotesize To be used for grading, do not write here} &\\\hline \correction@probs & Sum & grade\\\hline -\correction@pts &\theassignment@totalpts & \strut\hspace{3cm}\strut\\\hline +\correction@pts &\theassignment@totalpts & \\\hline \correction@reached & & \\[.7cm]\hline \end{tabular}} \endinput diff --git a/Master/texmf-dist/tex/latex/stex/hwexam/hwexam.sty.ltxml b/Master/texmf-dist/tex/latex/stex/hwexam/hwexam.sty.ltxml deleted file mode 100644 index 4532b9f2fb1..00000000000 --- a/Master/texmf-dist/tex/latex/stex/hwexam/hwexam.sty.ltxml +++ /dev/null @@ -1,40 +0,0 @@ -# -*- CPERL -*- -package LaTeXML::Package::Pool; -use strict; -use LaTeXML::Package; -RequirePackage('problem'); -RegisterNamespace('assig'=>"http://omdoc.org/ontology/assignments#"); -RegisterDocumentNamespace('assig'=>"http://omdoc.org/ontology/assignments#"); -DefEnvironment('{assignment} OptionalKeyVals:assig', - "<omdoc:omgroup ?&KeyVal(#1,'id')(xml:id='&KeyVal(#1,'id')')() " - . "assig:dummy='for the namespace'>" - . "<omdoc:metadata>" - . "<dc:title>" - . "Assignment ?&KeyVal(#1,'num')(&KeyVal(#1,'num').)()" - . "?&KeyVal(#1,'title')((&KeyVal(#1,'title')))" - . "</dc:title>" - . "?&KeyVal(#1,'given')(<omdoc:meta property='assig:given'>&KeyVal(#1,'given')</omdoc:meta>)()" - . "?&KeyVal(#1,'due')(<omdoc:meta property='assig:due'>&KeyVal(#1,'due')</omdoc:meta>)()" - . "?&KeyVal(#1,'pts')(<omdoc:meta property='assig:pts'>&KeyVal(#1,'pts')</omdoc:meta>)()" - . "</omdoc:metadata>" - . "#body" - ."</omdoc:omgroup>\n", - afterDigest=> sub { - my ($stomach, $kv) = @_; - my $kvi = LookupValue('inclassig'); - my @keys = qw(id num title pts given due); - my @vals = $kvi && map($kvi->getValue($_), @keys); - foreach my $i(0..$#vals) { - $kv->setValue($keys[$i],$vals[$i]) if $vals[$i]; - }});#$ -DefMacro('\includeassignment [] {}', sub { - my ($stomach, $arg1, $arg2) = @_; - AssignValue('inclassig',$arg1) if $arg1; - (Invocation(T_CS('\input'),$arg2)->unlist); -}); -DefMacro('\inputassignment [] {}','\input{#2}'); -DefEnvironment('{testheading}OptionalKeyVals:omdoc',''); -DefConstructor('\testspace{}',''); -DefConstructor('\testnewpage',''); -DefConstructor('\testemptypage',''); -1; diff --git a/Master/texmf-dist/tex/latex/stex/metakeys/metakeys.sty b/Master/texmf-dist/tex/latex/stex/metakeys/metakeys.sty index b499384e139..6e5f99abb5c 100644 --- a/Master/texmf-dist/tex/latex/stex/metakeys/metakeys.sty +++ b/Master/texmf-dist/tex/latex/stex/metakeys/metakeys.sty @@ -7,57 +7,106 @@ %% metakeys.dtx (with options: `package') %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesPackage{metakeys}[2012/01/28 v0.9 Framework for Metadata Keys] +\ProvidesPackage{metakeys}[2016/04/06 v0.9 Framework for Metadata Keys] \newif\ifmetakeys@showmeta\metakeys@showmetafalse \DeclareOption{showmeta}{\metakeys@showmetatrue} +\DeclareOption*{} \ProcessOptions \RequirePackage{keyval}[1997/11/10] -\newcommand\addmetakey{\@ifstar\addmetakey@star\addmetakey@nostar} -\newcommand\addmetakey@star[3][]% -{\@ifnextchar[{\addmetakey@star@aux[#1]{#2}{#3}}{\addmetakey@star@aux[#1]{#2}{#3}[]}} -\def\addmetakey@star@aux[#1]#2#3[#4]{\metakeys@ext@clear@keys{#2}{#3}{#1}% -\metakeys@initialize@showkeys{#2}% -\define@key{#2}{#3}[#4]{\expandafter\gdef\csname #2@#3\endcsname{##1}}} -\newcommand\addmetakey@nostar[3][]% -{\metakeys@ext@showkeys{#2}{#3}\addmetakey@star[#1]{#2}{#3}} -\newcommand\metasetkeys[2]{\@nameuse{clear@#1@keys}\setkeys{#1}{#2}% -\ifmetakeys@showmeta% -\edef\@@keys{\@nameuse{#1@showkeys}}% -\metakeys@show@keys{#1}{\@for\@I:=\@@keys\do{\metakeys@show@keyval{#1}{\@I}}}% -\fi} -\newcommand\metakeys@ext@clear@keys[3]{\@metakeys@ext@clear@keys{#1}{#1@#2}{#3}} -\newcommand\@metakeys@ext@clear@keys[3]{\@ifundefined{clear@#1@keys}% -{\expandafter\gdef\csname clear@#1@keys\endcsname% -{\expandafter\gdef\csname #2\endcsname{#3}}}% -{\expandafter\g@addto@macro\csname clear@#1@keys\endcsname% -{\expandafter\gdef\csname #2\endcsname{#3}}}} -\newcommand\addmetalistkey{\@ifstar\addmetalistkey@star\addmetalistkey@nostar} -\newcommand\addmetalistkey@star[3][]{\metakeys@ext@clear@keys{#2}{#3}{#1}% -\metakeys@initialize@showkeys{#2}% -\expandafter\gdef\csname #2@#3s\endcsname{} -\define@key{#2}{#3}[#1]{% -\expandafter\ifx\csname #2@#3s\endcsname\@empty\expandafter\gdef\csname #2@#3s\endcsname{##1}% -\else\expandafter\xdef\csname #2@#3s\endcsname{\csname #2@#3s\endcsname,##1}% -\fi}} -\newcommand\addmetalistkey@nostar[3][]% -{\metakeys@ext@showkeys{#2}{#3}\addmetalistkey@star[#1]{#2}{#3}} -\newcommand\metakeys@initialize@showkeys[1]% -{\@ifundefined{#1@showkeys}{\expandafter\def\csname #1@showkeys\endcsname{}}{}}% -\newcommand\metakeys@ext@showkeys[2]{\@ifundefined{#1@showkeys}% -{\expandafter\def\csname #1@showkeys\endcsname{#2}}% -{\expandafter\edef\csname #1@showkeys\endcsname{\csname #1@showkeys\endcsname,#2}}} -\newcommand\@metakeys@show@key[2]{\metakeys@show@key{#2}{#1}} -\newcommand\metakeys@show@key[2]{\edef\@test{#2}\ifx\@test\@empty\else #1:#2\quad\fi} -\newcommand\metakeys@show@keys[2]{\marginpar{{\scriptsize #2}}} -\newcommand\metakeys@show@keyval[2]% -{\expandafter\@metakeys@show@key\csname #1@#2\endcsname{#2}} -\newcommand\showmetakeys{\metakeys@showmetatrue} -\newcommand\hidemetakeys{\metakeys@showmetafalse} -\newcommand\addmetakeynew[3][]{\metakeys@ext@clear@keys{#2}{#3}{#1}% -\define@key{#2}{#3}{\expandafter\gdef\csname #2@#3\endcsname{##1}}} -\newcommand\metakeys@unspecified{an metakeys-defined key left unspecified} -\newcommand\metakeysifus[4]{\message{testing #1@#2=\csname#1@#2\endcsname}% -\expandafter\ifx\csname #1@#2\endcsname\metakeys@unspecified{#3}\else{#4}\fi} +\RequirePackage{etoolbox} +\newcommand\addmetakey{\@ifstar\addmetakey@star\addmetakey@nostar}% +\newcommand\addmetakey@star[3][]{% + \@ifnextchar[{% + \addmetakey@star@aux[#1]{#2}{#3}% + }{% + \addmetakey@star@aux[#1]{#2}{#3}[]% + }% +}% +\def\addmetakey@star@aux[#1]#2#3[#4]{% + \metakeys@ext@clear@keys{#2}{#3}{#1}% + \metakeys@initialize@showkeys{#2}% + \define@key{#2}{#3}[#4]{% + \csxdef{#2@#3}{##1}% + }% +}% +\newcommand\addmetakey@nostar[3][]{% + \metakeys@ext@showkeys{#2}{#3}% + \addmetakey@star[#1]{#2}{#3}% +}% +\newcommand\metasetkeys[2]{% + \@nameuse{clear@#1@keys}% + \setkeys{#1}{#2}% + \ifmetakeys@showmeta% + \edef\@@keys{\@nameuse{#1@showkeys}}% + \metakeys@show@keys{#1}{% + \@for\@I:=\@@keys\do{% + \metakeys@show@keyval{#1}{\@I}% + }% + }% + \fi% +}% +\newrobustcmd\metakeys@ext@clear@keys[3]{% + \@metakeys@ext@clear@keys{#1}{#1@#2}{#3}% +}% +\newrobustcmd\@metakeys@ext@clear@keys[3]{% + \@ifundefined{clear@#1@keys}{% +\csgdef{clear@#1@keys}{\csgdef{#2}{#3}}% + }% + {\expandafter\gappto\csname clear@#1@keys\endcsname{\csgdef{#2}{#3}}}% +}% +\newrobustcmd\addmetalistkey{% + \@ifstar\addmetalistkey@star\addmetalistkey@nostar% +}% +\newrobustcmd\addmetalistkey@star[3][]{% + \metakeys@ext@clear@keys{#2}{#3}{#1}% + \metakeys@initialize@showkeys{#2}% + \csgdef{#2@#3s}{}% + \define@key{#2}{#3}[#1]{% + \ifcsempty{#2@#3s}{% + \csgdef{#2@#3s}{##1}% + }{% + \csxdef{#2@#3s}{\csuse{#2@#3s},##1}% + }% + }% +}% +\newrobustcmd\addmetalistkey@nostar[3][]{% + \metakeys@ext@showkeys{#2}{#3}% + \addmetalistkey@star[#1]{#2}{#3}% +}% +\newrobustcmd\metakeys@initialize@showkeys[1]{% + \@ifundefined{#1@showkeys}{% + \csdef{#1@showkeys}{}% + }{}% +}% +\newrobustcmd\metakeys@ext@showkeys[2]{% + \@ifundefined{#1@showkeys}{% + \csdef{#1@showkeys}{#2}% + }{% + \csedef{#1@showkeys}{\csuse{#1@showkeys},#2}% + }% +}% +\newrobustcmd\@metakeys@show@key[2]{\metakeys@show@key{#2}{#1}}% +\newrobustcmd\metakeys@show@key[2]{% + \edef\@test{#2}% + \ifx\@test\@empty\else #1:#2\quad\fi% +}% +\newrobustcmd\metakeys@show@keys[2]{\marginpar{{\scriptsize #2}}}% +\newrobustcmd\metakeys@show@keyval[2]{% + \expandafter\@metakeys@show@key\csname #1@#2\endcsname{#2}% +}% +\newrobustcmd\showmetakeys{\metakeys@showmetatrue}% +\newrobustcmd\hidemetakeys{\metakeys@showmetafalse}% +\newrobustcmd\addmetakeynew[3][]{% + \metakeys@ext@clear@keys{#2}{#3}{#1}% + \define@key{#2}{#3}{% + \csgdef{#2@#3}{##1}% + }% +}% +\newrobustcmd\metakeys@unspecified{an metakeys-defined key left unspecified}% +\newrobustcmd\metakeysifus[4]{% + \message{testing #1@#2=\csname#1@#2\endcsname}% + \expandafter\ifx\csname #1@#2\endcsname\metakeys@unspecified{#3}\else{#4}\fi% +}% \endinput %% %% End of file `metakeys.sty'. diff --git a/Master/texmf-dist/tex/latex/stex/metakeys/metakeys.sty.ltxml b/Master/texmf-dist/tex/latex/stex/metakeys/metakeys.sty.ltxml deleted file mode 100644 index b07f809f8e9..00000000000 --- a/Master/texmf-dist/tex/latex/stex/metakeys/metakeys.sty.ltxml +++ /dev/null @@ -1,3 +0,0 @@ -DefConstructor('\showmetakeys',''); -DefConstructor('\hidemetakeys',''); -1; diff --git a/Master/texmf-dist/tex/latex/stex/mikoslides/beamerthemeJacobs.sty b/Master/texmf-dist/tex/latex/stex/mikoslides/beamerthemeJacobs.sty index dac52637b13..ac3fdde35c4 100644 --- a/Master/texmf-dist/tex/latex/stex/mikoslides/beamerthemeJacobs.sty +++ b/Master/texmf-dist/tex/latex/stex/mikoslides/beamerthemeJacobs.sty @@ -6,10 +6,11 @@ \typeout{Beamer KWARC theme} \author[Kohlhase]{Michael Kohlhase} \institute{\texttt{http://kwarc.info/kohlhase}\\ - Center for Advanced Systems Engineering\\ + Computer Science\\ Jacobs University Bremen, Germany} -\mode<presentation> +\mode +<presentation> %% Shadings and logo images \pgfdeclareimage[height=.5ex,width=113mm]{shade-l2r}{shading-l2r} @@ -42,13 +43,14 @@ \setbeamertemplate{navigation symbols}{} %% Inner theme -\useinnertheme{circles} +\useinnertheme{default} +%\setbeamertemplate{enumerate item}{(\alph{enumi})} +%\setbeamertemplate{enumerate subitem}{(\roman{enumii})} %% Big logo for the title page. %\pgfdeclareimage[height=1cm]{biglogo}{beamer/img/DFKI-SKS} %\titlegraphic{\pgfuseimage{biglogo}} - \mode <all> diff --git a/Master/texmf-dist/tex/latex/stex/mikoslides/mikoaffiliation.sty.ltxml b/Master/texmf-dist/tex/latex/stex/mikoslides/mikoaffiliation.sty.ltxml deleted file mode 100644 index 591d7469f24..00000000000 --- a/Master/texmf-dist/tex/latex/stex/mikoslides/mikoaffiliation.sty.ltxml +++ /dev/null @@ -1,25 +0,0 @@ -# -*- CPERL -*- -# /=====================================================================\ # -# | quiz.sty | # -# | Implementation for LaTeXML | # -# |=====================================================================| # -# | Not (yet) Part of LaTeXML: | # -# | Copyright (c) 2004 Michael Kohlhase, released under the | # -# |---------------------------------------------------------------------| # -# | $URL: svn://kwarc.faculty.iu-bremen.de/kohlhase/kwarc/projects/content/cnx/xsl/latexml.xsl$ -# | $Revision: 9990 $; last modified by $Author: $ -# | $Date: 2006-09-20 13:31:37 +0200 (Wed, 20 Sep 2006) $ -# |---------------------------------------------------------------------| # -# | Michael Kohlhase <m.kohlhase@iu-bremen.de> #_# | # -# | http://dlmf.nist.gov/LaTeXML/ (o o) | # -# \=========================================================ooo==U==ooo=/ # -package LaTeXML::Package::Pool; -use strict; -use LaTeXML::Package; - -DefConstructor('\miko',"<author><name>Michael Kohlhase</name><affiliation>School of Engineering & Sciences International University Bremen, Germany </affiliation></author>"); -#********************************************************************** -# To be extended/experimental - -#********************************************************************** -1; diff --git a/Master/texmf-dist/tex/latex/stex/mikoslides/mikoslides.cls b/Master/texmf-dist/tex/latex/stex/mikoslides/mikoslides.cls index 1c835a37c29..e678b2e8cef 100644 --- a/Master/texmf-dist/tex/latex/stex/mikoslides/mikoslides.cls +++ b/Master/texmf-dist/tex/latex/stex/mikoslides/mikoslides.cls @@ -7,109 +7,31 @@ %% mikoslides.dtx (with options: `cls') %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesClass{mikoslides}[2012/01/28 v0.9 Jacobs slides] -\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}} +\ProvidesClass{mikoslides}[2016/04/06 v1.1 Jacobs slides Class] \newif\ifnotes\notesfalse -\newif\ifsectocframes\sectocframesfalse -\newif\ifproblems\problemstrue -\DeclareOption{notes}{\notestrue} -\DeclareOption{slides}{\notesfalse} -\DeclareOption{noproblems}{\problemsfalse} -\DeclareOption{sectocframes}{\sectocframestrue} -\ifnotes -\DeclareOption*{\PassOptionsToClass{\CurrentOption}{omdoc}} -\else -\DeclareOption*{\PassOptionsToClass{\CurrentOption}{beamer}} -\fi +\DeclareOption{notes}{\notestrue\PassOptionsToPackage{\CurrentOption}{mikoslides}} +\DeclareOption{slides}{\notesfalse\PassOptionsToPackage{\CurrentOption}{mikoslides}} +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{omdoc} + \PassOptionsToClass{\CurrentOption}{beamer} + \PassOptionsToPackage{\CurrentOption}{mikoslides}} \ProcessOptions \ifnotes -\LoadClass{omdoc} -\RequirePackage{a4wide} -\RequirePackage{marginnote} -\RequirePackage[notheorems,noamsthm]{beamerarticle} + \LoadClass{omdoc} + \RequirePackage{a4wide} + \RequirePackage{marginnote} + \RequirePackage{mdframed} + \RequirePackage[notheorems,noamsthm,noxcolor]{beamerarticle} + \RequirePackage[bookmarks,bookmarksopen,bookmarksnumbered,breaklinks, + linkcolor=black,citecolor=black,urlcolor=cyan,filecolor=cyan,colorlinks]{hyperref} \else -\LoadClass[notheorems,noamsthm,10pt]{beamer} -\newcounter{Item} -\newcounter{paragraph} -\newcounter{subparagraph} -\newcounter{Hfootnote} -\usetheme{Jacobs} -\fi -\RequirePackage{stex} -\RequirePackage{latexml} -\RequirePackage{amssymb} -\RequirePackage{tikz} -\usepgflibrary{shapes}\usetikzlibrary{arrows} -\RequirePackage{url} -\RequirePackage{amsmath} -\RequirePackage{comment} -\RequirePackage{standalone} -\newcounter{slide} -\newlength{\slidewidth}\setlength{\slidewidth}{13.5cm} -\newlength{\slideheight}\setlength{\slideheight}{9cm} -\ifnotes\renewenvironment{note}{}{}\else\excludecomment{note}\fi -\ifnotes -\newlength{\slideframewidth}\setlength{\slideframewidth}{2pt} -\newsavebox{\myframebox} -\renewenvironment{frame}[1][]% -{\stepcounter{slide} -\def\itemize@level{outer} -\def\itemize@outer{outer} -\def\itemize@inner{inner} -\renewcommand\metakeys@show@keys[2]{\marginnote{{\scriptsize ##2}}} -\renewenvironment{itemize} -{\ifx\itemize@level\itemize@outer\def\itemize@label{$\rhd$}\fi - \ifx\itemize@level\itemize@inner\def\itemize@label{$\scriptstyle\rhd$}\fi - \begin{list} - {\itemize@label} - {\setlength{\labelsep}{.3em}\setlength{\labelwidth}{.5em}\setlength{\leftmargin}{1.5em}} - \edef\itemize@level{\itemize@inner}} -{\end{list}} - \noindent\hfill\begin{lrbox}{\myframebox} - \begin{minipage}{\slidewidth}\sf}% - {\miko@slidelabel\end{minipage}\end{lrbox}% - \begin{center}\fbox{\usebox\myframebox}\end{center}\hfill} -\renewcommand{\frametitle}[1]{{\Large\bf\sf\color{blue}{#1}}} -\fi -\makeindex -\ifproblems\newenvironment{problems}{}{}\else\excludecomment{problems}\fi -\newlength{\slidelogoheight} -\ifnotes\setlength{\slidelogoheight}{.4cm}\else\setlength{\slidelogoheight}{1cm}\fi -\newsavebox{\slidelogo}\sbox{\slidelogo}{\includegraphics[height=\slidelogoheight]{jacobs-logo}} -\def\source{Michael Kohlhase}% customize locally -\def\copyrightnotice{\footnotesize\copyright:\hspace{.3ex}{\source}} -\newsavebox{\cclogo}\sbox{\cclogo}{\includegraphics[height=\slidelogoheight]{cc_somerights}} -\newif\ifcchref\cchreffalse -\AtBeginDocument{\@ifpackageloaded{hyperref}{\cchreftrue}{\cchreffalse}} -\def\licensing{\ifcchref\href{http://creativecommons.org/licenses/by-sa/2.5/}{\usebox{\cclogo}}\else{\usebox{\cclogo}}\fi} -\newcommand{\miko@slidelabel}% -{\vbox to \slidelogoheight{\vss\hbox to \slidewidth% -{\licensing\hfill\copyrightnotice\hfill\arabic{slide}\hfill\usebox{\slidelogo}}}} -\AtBeginDocument{\definecolor{green}{rgb}{0,.5,0}\definecolor{purple}{cmyk}{.3,1,0,.17}} -\def\defemph#1{{\textcolor{magenta}{#1}}} -\def\notemph#1{{\textcolor{magenta}{#1}}} -\def\stDMemph#1{{\textcolor{blue}{#1}}} -\def\@@lec#1{(\textcolor{green}{#1})} -\pgfdeclareimage[width=1.5em]{miko@dbend}{dangerous-bend} -\def\textwarning{\raisebox{-.05cm}{\pgfuseimage{miko@dbend}}\xspace} -\newcommand\titleframe{\begin{frame}\titlepage\end{frame}} -\newenvironment{titleframewith}{\begin{frame}\titlepage}{\end{frame}} -\newenvironment{ttitle}{\begin{center}\LARGE\begin{tabular}{|c|}\hline}% - {\\\hline\end{tabular}\end{center}\vspace{1ex minus 1ex}} -\newenvironment{ttitlejoint}[1]% -{\newbox\boxwith\setbox\boxwith\hbox{\begin{tabular}{c}{\em joint work with}\\#1\end{tabular}}% -\begin{center}\LARGE\begin{tabular}{c}\color{red}}% -{\\\box\boxwith\end{tabular}\end{center}% -\vspace{1ex minus 1ex}} -\newcommand{\putgraphicsat}[3]{% - \begin{picture}(0,0)\put(#1){\includegraphics[#2]{#3}}\end{picture}} -\newcommand{\putat}[2]{\begin{picture}(0,0)\put(#1){#2}\end{picture}} -\ifsectocframes -\def\at@begin@omgroup#1{\message{atbeginomgroup}\begin{frame}<beamer>\frametitle{Outline}\tableofcontents[section]\end{frame}} + \LoadClass[notheorems,noamsthm,10pt]{beamer} + \newcounter{Item} + \newcounter{paragraph} + \newcounter{subparagraph} + \newcounter{Hfootnote} + \usetheme{Jacobs} \fi -\newcommand\tikzinput[2][]{\input{#2}} - -\ifnotes\else\sf\fi +\RequirePackage{mikoslides} \endinput %% %% End of file `mikoslides.cls'. diff --git a/Master/texmf-dist/tex/latex/stex/mikoslides/mikoslides.cls.ltxml b/Master/texmf-dist/tex/latex/stex/mikoslides/mikoslides.cls.ltxml deleted file mode 100644 index c08d03888b1..00000000000 --- a/Master/texmf-dist/tex/latex/stex/mikoslides/mikoslides.cls.ltxml +++ /dev/null @@ -1,94 +0,0 @@ -# -*- CPERL -*- -package LaTeXML::Package::Pool; -use strict; -use LaTeXML::Package; -RawTeX('\newif\ifnotes\notesfalse'); -RawTeX('\newif\ifproblems\problemsfalse'); -LoadClass('omdoc'); -DefConstructor('\usetheme{}',''); -RequirePackage('stex'); -RequirePackage('latexml'); -RequirePackage('amssymb'); -RequirePackage('graphicx'); -RequirePackage('tikz'); -RequirePackage('amsmath'); -DefRegister('\slidewidth' => Dimension('13.5cm')); -DefRegister('\slideheight' => Dimension('9cm')); -DefEnvironment('{note}','#body'); -DefEnvironment('{frame}[]', - "<omdoc:omgroup layout='slide'>" - . "#body\n" - ."</omdoc:omgroup>\n\n", - afterDigestBegin=>sub { - $_[1]->setProperty(theory=>LookupValue('current_module')); }); -DefConstructor('\frametitle{}', - "\n<omdoc:metadata><dc:title>#1</dc:title></omdoc:metadata>"); -DefEnvironment('{problems}','#body'); -#DefMacro('\defemph{}','{\textcolor{magenta}{#1}}'); -#DefMacro('\notemph{}','{\textcolor{magenta}{#1}}'); -DefMacro('\textwarning',""); -DefMacro('\title[]{}', '\@add@frontmatter{ltx:title}{#1}'); -DefMacro('\date[]{}', '\@add@frontmatter{ltx:date}[role=creation]{#1}'); -DefMacro('\author[]{}', sub { andSplit(T_CS('\@author'),$_[1]); });#$ -DefConstructor('\titleframe',"<omdoc:ignore>titleframe elided here</omdoc:ignore>"); -DefEnvironment('{titleframewith}', - "<omdoc:ignore>begin elided titleframe</omdoc:ignore>" - . "#body" - ."<omdoc:ignore>end elided titleframe</omdoc:ignore>"); -DefEnvironment('{titleslide}',""); -DefEnvironment('{titleslide}',"<omdoc:omgroup>#body</omdoc:omgroup>"); -DefEnvironment('{ttitle}', "\n<dc:title>#body</dc:title>"); -DefMacro('\tikzinput[] {}','\includegraphics[#1]{#2}'); - -DefEnvironment('{columns}','#body'); -DefEnvironment('{column}{}','#body'); -DefConstructor('\uncover','#1'); -#Define a Beamer Overlay Parameter type - DefParameterType('BeamerOverlay', sub { - my ($gullet) = @_; - my $tok = $gullet->readXToken; - if (ref $tok && ToString($tok) eq '<') { - $gullet->readUntil(T_OTHER('>')); - } else { - $gullet->unread($tok) if ref $tok; - undef; }}, - reversion=> sub { - (T_OTHER('<'), $_[0]->revert, T_OTHER('>')); - }); - -#Take the "from" field of the overlay range -sub overlayFrom { - return "" unless defined $_[0]; - my $overlay=ToString($_[0]); $overlay =~ /^(\d+)/; $1;} - -#Reuse the CMP itemizations, only adjust the \item constructors. -DefMacro('\beamer@group@item[] OptionalBeamerOverlay IfBeginFollows', sub { - my($gullet,$tag,$overlay,$needwrapper)=@_; - $overlay=$overlay||T_OTHER(""); - ( T_CS('\group@item@maybe@unwrap'), - ($needwrapper ? (Invocation(T_CS('\beamer@group@item@wrap'),$tag,$overlay)->unlist) : ()) ); }); -DefConstructor('\beamer@group@item@wrap {} OptionalBeamerOverlay', - "<omdoc:omtext ?#2(overlay='&overlayFrom(#2)')()>" - . "?#1(<dc:title>#1</dc:title>)()" - . "<omdoc:CMP>", - beforeDigest=>sub { - Let('\group@item@maybe@unwrap','\group@item@unwrap'); - #$_[0]->bgroup; -return; }, - properties=>sub{ RefStepItemCounter(); }); - -#DefConstructor('\beamer@itemize@item[] OptionalBeamerOverlay', -# "<omdoc:li ?#2(overlay='&overlayFrom(#2)')() >" -# . "?#1(<dc:title>#1</dc:title>)()", -# properties=>sub{ RefStepItemCounter(); }); -DefConstructor('\beamer@enumerate@item[] OptionalBeamerOverlay', - "<omdoc:li ?#2(overlay='&overlayFrom(#2)')() >" - . "?#1(<dc:title>#1</dc:title>)()", - properties=>sub{ RefStepItemCounter(); }); -DefConstructor('\beamer@description@item[] OptionalBeamerOverlay', - "<omdoc:di ?#2(overlay='&overlayFrom(#2)')() >" - . "?#1(<omdoc:dt>#1</omdoc:dt>)()<omdoc:dd>", # trust di and dt to autoclose - properties=>sub{ RefStepItemCounter(); }); -DefMacro('\putgraphicsat{}{}{}','\mygraphics[#2]{#3}'); -DefMacro('\putat{}{}','#2'); -1; diff --git a/Master/texmf-dist/tex/latex/stex/mikoslides/mikoslides.sty b/Master/texmf-dist/tex/latex/stex/mikoslides/mikoslides.sty new file mode 100644 index 00000000000..75d40a942ee --- /dev/null +++ b/Master/texmf-dist/tex/latex/stex/mikoslides/mikoslides.sty @@ -0,0 +1,248 @@ +%% +%% This is file `mikoslides.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% mikoslides.dtx (with options: `package') +%% +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesPackage{mikoslides}[2016/04/06 v1.1 Jacobs slides Package] +\newif\if@mikoslides@mh@\@mikoslides@mh@false +\DeclareOption{mh}{\@mikoslides@mh@true + \PassOptionsToPackage{\CurrentOption}{stex} + \PassOptionsToPackage{\CurrentOption}{smglom} + \PassOptionsToPackage{\CurrentOption}{tikzinput}} +\newif\ifnotes\notesfalse +\DeclareOption{notes}{\notestrue} +\DeclareOption{slides}{\notesfalse} +\newif\ifsectocframes\sectocframesfalse +\DeclareOption{sectocframes}{\sectocframestrue} +\newif\ifframeimages\frameimagesfalse +\DeclareOption{frameimages}{\frameimagestrue} +\newif\if@part\@partfalse +\DeclareOption{report}{\@parttrue\PassOptionsToPackage{\CurrentOption}{omdoc}} +\DeclareOption{book}{\@parttrue\PassOptionsToPackage{\CurrentOption}{omdoc}} +\newif\ifproblems\problemstrue +\DeclareOption{noproblems}{\problemsfalse} +\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{stex} + \PassOptionsToPackage{\CurrentOption}{smglom} + \PassOptionsToPackage{\CurrentOption}{tikzinput}} +\ProcessOptions +\if@mikoslides@mh@\RequirePackage{mikoslides-mh}\fi +\RequirePackage{stex} +\RequirePackage{smglom} +\RequirePackage{tikzinput} +\RequirePackage{amssymb} +\RequirePackage{amsmath} +\RequirePackage{comment} +\RequirePackage{textcomp} +\RequirePackage{url} +\newcounter{slide} +\newlength{\slidewidth}\setlength{\slidewidth}{12.8cm} +\newlength{\slideheight}\setlength{\slideheight}{9cm} +\ifnotes% + \renewenvironment{note}{\ignorespaces}{}% +\else% + \excludecomment{note}% +\fi% +\ifnotes + \newlength{\slideframewidth} + \setlength{\slideframewidth}{1.5pt} + \addmetakey{frame}{label} + \addmetakey[yes]{frame}{allowframebreaks} + \addmetakey{frame}{allowdisplaybreaks} + \addmetakey[yes]{frame}{fragile} + \addmetakey[yes]{frame}{shrink} + \addmetakey[yes]{frame}{squeeze} + \renewenvironment{frame}[1][]{% + \metasetkeys{frame}{#1}% + \stepcounter{slide}% + \def\@currentlabel{\theslide}% + \ifx\frame@label\@empty% + \else% + \label{\frame@label}% + \fi% + \def\itemize@level{outer}% + \def\itemize@outer{outer}% + \def\itemize@inner{inner}% + \renewcommand\newpage{}% + \renewcommand\metakeys@show@keys[2]{\marginnote{{\scriptsize ##2}}}% + \renewenvironment{itemize}{% + \ifx\itemize@level\itemize@outer% + \def\itemize@label{$\rhd$}% + \fi% + \ifx\itemize@level\itemize@inner% + \def\itemize@label{$\scriptstyle\rhd$}% + \fi% + \begin{list}% + {\itemize@label}% + {\setlength{\labelsep}{.3em}% + \setlength{\labelwidth}{.5em}% + \setlength{\leftmargin}{1.5em}% + }% + \edef\itemize@level{\itemize@inner}% + }{% + \end{list}% + }% + \begin{mdframed}[linewidth=\slideframewidth,skipabove=1ex,skipbelow=1ex,userdefinedwidth=\slidewidth,align=center]\sf% + }{% + \medskip\miko@slidelabel\end{mdframed}% + }% + \renewcommand{\frametitle}[1]{{\Large\bf\sf\color{blue}{#1}}\medskip}% +\fi %ifnotes +\newrobustcmd\frameimage[2][]{% + \stepcounter{slide}% + \ifframeimages% + \def\Gin@ewidth{}\setkeys{Gin}{#1}% + \ifnotes% + \else% + \vfill% + \fi% + \ifx\Gin@ewidth\@empty% + \mycgraphics[width=\slidewidth,#1]{#2}\else\mycgraphics[#1]{#2}% + \fi% + \par\strut\hfill{\footnotesize Slide \arabic{slide}}% + \ifnotes% + \else% + \vfill% + \fi% + \fi% +}% ifframeimages +\newlength{\slidelogoheight} +\ifnotes% + \setlength{\slidelogoheight}{.4cm}% +\else% + \setlength{\slidelogoheight}{1cm}% +\fi% +\newsavebox{\slidelogo}% +\sbox{\slidelogo}{\includegraphics[height=\slidelogoheight]{jacobs-logo}}% +\newrobustcmd{\setslidelogo}[1]{% + \sbox{\slidelogo}{\includegraphics[height=\slidelogoheight]{#1}}% +}% +\def\source{Michael Kohlhase}% customize locally +\newrobustcmd{\setsource}[1]{\def\source{#1}}% +\def\copyrightnotice{\footnotesize\copyright:\hspace{.3ex}{\source}}% +\newsavebox{\cclogo}% +\sbox{\cclogo}{\includegraphics[height=\slidelogoheight]{cc_somerights}}% +\newif\ifcchref\cchreffalse% +\AtBeginDocument{% + \@ifpackageloaded{hyperref}{\cchreftrue}{\cchreffalse} +}% +\def\licensing{% + \ifcchref% + \href{http://creativecommons.org/licenses/by-sa/2.5/}{\usebox{\cclogo}}% + \else% + {\usebox{\cclogo}}% + \fi% +}% +\newrobustcmd{\setlicensing}[2][]{% + \def\@url{#1}% + \sbox{\cclogo}{\includegraphics[height=\slidelogoheight]{#2}}% + \ifx\@url\@empty% + \def\licensing{{\usebox{\cclogo}}}% + \else% + \def\licensing{% + \ifcchref% + \href{#1}{\usebox{\cclogo}}% + \else% + {\usebox{\cclogo}}% + \fi% + }% + \fi% +}% +\newrobustcmd\miko@slidelabel{% + \vbox to \slidelogoheight{% + \vss\hbox to \slidewidth% + {\licensing\hfill\copyrightnotice\hfill\arabic{slide}\hfill\usebox{\slidelogo}}% + }% +}% +\AtBeginDocument{% + \definecolor{green}{rgb}{0,.5,0}% + \definecolor{purple}{cmyk}{.3,1,0,.17}% +}% +\def\defemph#1{{\textcolor{magenta}{#1}}} +\def\notemph#1{{\textcolor{magenta}{#1}}} +\def\stDMemph#1{{\textcolor{blue}{#1}}} +\def\@@lec#1{(\textcolor{green}{#1})} +\pgfdeclareimage[width=.9em]{miko@small@dbend}{dangerous-bend} +\def\smalltextwarning{% + \pgfuseimage{miko@small@dbend}% + \xspace% +}% +\pgfdeclareimage[width=1.5em]{miko@dbend}{dangerous-bend} +\newrobustcmd\textwarning{% + \raisebox{-.05cm}{\pgfuseimage{miko@dbend}}% + \xspace% +}% +\pgfdeclareimage[width=2.5em]{miko@big@dbend}{dangerous-bend}% +\newrobustcmd\bigtextwarning{% + \raisebox{-.05cm}{\pgfuseimage{miko@big@dbend}}% + \xspace% +}% +\newrobustcmd\putgraphicsat[3]{% + \begin{picture}(0,0)\put(#1){\includegraphics[#2]{#3}}\end{picture}% +}% +\newrobustcmd\putat[2]{% + \begin{picture}(0,0)\put(#1){#2}\end{picture}% +}% +\ifsectocframes% + \if@part% + \newcounter{mpart}% + \newcounter{mchapter}% + \newcounter{msection}[mchapter]% + \else% + \newcounter{msection}% + \fi% + \newcounter{msubsection}[msection]% + \newcounter{msubsubsection}[msubsection]% + \newcounter{msubsubsubsection}[msubsubsection]% +\fi% ifsectocframes +\ifnotes\else% only in slides + \renewenvironment{omgroup}[2][]{% + \metasetkeys{omgroup}{#1}\sref@target% + \advance\section@level by 1% + \ifsectocframes% + \begin{frame}% + \vfill\Large\centering% + \red{% + \ifcase\section@level\or% + \stepcounter{mpart}Part \Roman{mpart}\or% + \stepcounter{mchapter}Chapter \arabic{mchapter}\or + \stepcounter{msection}\if@part\arabic{mchapter}.\fi\arabic{msection}\or + \stepcounter{msubsection}\if@part\arabic{mchapter}.\fi\arabic{msection}.\arabic{msubsection}\or + \stepcounter{msubsubsection}\if@part\arabic{mchapter}.\fi\arabic{msection}.\arabic{msubsection}.\arabic{msubsubsection}.\or + \stepcounter{msubsubsubsection}\if@part\arabic{mchapter}.\fi\arabic{msection}.\arabic{msubsection}.\arabic{msubsubsection}.\arabic{msubsubsubsection}% + \fi% end ifcase + \quad #2% + }% + \vfill% + \end{frame}% + \fi %ifsectocframes + } + {\advance\section@level by -1}% +\fi% ifnotes +\expandafter\def\csname Parent2\endcsname{} +\ifnotes% + \renewenvironment{columns}{% + \par\noindent% + \begin{minipage}% + \slidewidth\centering\leavevmode% + }{% + \end{minipage}\par\noindent% + }% + \newsavebox\columnbox% + \renewenvironment{column}[1]{% + \begin{lrbox}{\columnbox}\begin{minipage}{#1}% + }{% + \end{minipage}\end{lrbox}\usebox\columnbox% + }% +\fi% +\ifproblems% + \newenvironment{problems}{}{}% +\else% + \excludecomment{problems}% +\fi% +\endinput +%% +%% End of file `mikoslides.sty'. diff --git a/Master/texmf-dist/tex/latex/stex/modules/modules.sty b/Master/texmf-dist/tex/latex/stex/modules/modules.sty index 8ee9fda5172..25310cc8cfe 100644 --- a/Master/texmf-dist/tex/latex/stex/modules/modules.sty +++ b/Master/texmf-dist/tex/latex/stex/modules/modules.sty @@ -7,256 +7,397 @@ %% modules.dtx (with options: `package') %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesPackage{modules}[2012/01/28 v1.1 Semantic Markup] -\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}} +\ProvidesPackage{modules}[2016/04/06 v1.4 Semantic Markup] +\newif\if@modules@mh@\@modules@mh@false +\DeclareOption{mh}{\@modules@mh@true} \newif\ifmod@show\mod@showfalse \DeclareOption{showmods}{\mod@showtrue} +\newif\ifaux@req\aux@reqtrue +\DeclareOption{noauxreq}{\aux@reqfalse} \newif\ifmod@qualified\mod@qualifiedfalse \DeclareOption{qualifiedimports}{\mod@qualifiedtrue} +\newif\if@mmt\@mmtfalse +\DeclareOption{mmt}{\@mmttrue} +\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{sref}} \ProcessOptions \RequirePackage{sref} +\if@modules@mh@\RequirePackage{modules-mh}\fi +\if@mmt\RequirePackage{mmt}\fi \RequirePackage{xspace} -\RequirePackage{xcomment} -\addmetakey{module}{cd} -\addmetakey{module}{title} +\RequirePackage{mdframed} +\RequirePackage{pathsuris} +\addmetakey{module}{cd}% no longer used +\addmetakey{module}{load}% ignored +\addmetakey*{module}{title} +\addmetakey*{module}{creators} +\addmetakey*{module}{contributors} +\addmetakey*{module}{srccite} \define@key{module}{id}{% -\edef\this@module{\expandafter\noexpand\csname module@defs@#1\endcsname}% -\global\@namedef{module@defs@#1}{}% -\ifmod@qualified -\edef\this@qualified@module{\expandafter\noexpand\csname module@defs@qualified@#1\endcsname}% -\global\@namedef{module@defs@qualified@#1}{}% -\fi -\def\mod@id{#1}% -\expandafter\edef\csname #1@cd@file@base\endcsname{\mod@path}% -\expandafter\g@addto@macro\csname module@defs@#1\expandafter\endcsname\expandafter% -{\expandafter\def\csname #1@cd@file@base\expandafter\endcsname\expandafter{\mod@path}}} -\newcounter{module}[section] -\newcommand\module@heading{\stepcounter{module}% -\noindent{\textbf{Module} \thesection.\themodule [\mod@id]}% -\sref@label@id{Module \thesection.\themodule [\mod@id]}% -\ifx\module@title\@empty :\quad\else\quad(\module@title)\hfill\\\fi} -\newcommand\module@footer{\noindent{\textbf{EndModule} \thesection.\themodule}} -\newenvironment{module}[1][]% -{\metasetkeys{module}{#1}\ifmod@show\module@heading\fi} -{\ifmod@show\module@footer\fi} -\def\activate@defs#1{\csname module@defs@#1\endcsname} -\def\export@defs#1{\@ifundefined{mod@id}{}% -{\expandafter\expandafter\expandafter\g@addto@macro\expandafter% -\this@module\expandafter{\csname module@defs@#1\endcsname}}} -\def\coolurion{} -\def\coolurioff{} -\newcommand{\importmodule}[2][]{{\def\mod@path{#1}% -\ifx\mod@path\@empty\else\requiremodules{#1}\fi}% -\activate@defs{#2}\export@defs{#2}} -\newenvironment{importmodulevia}[2][]{\gdef\@@doit{\importmodule[#1]{#2}}% -\ifmod@show\par\noindent importing module #2 via \@@doit\fi} -{\aftergroup\@@doit\ifmod@show end import\fi} -\newcommand\vassign[2]{\ifmod@show\ensuremath{#1\mapsto #2}, \fi} -\newcommand\tassign[3][]{\ifmod@show #2\ensuremath{\mapsto} #3, \fi} -\newcommand\ttassign[3][]{\ifmod@show #1\ensuremath{\mapsto} ``#2'', \fi} -\newcommand{\importOMDocmodule}[3][]{\importmodule[#1]{#3}} -\let\metalanguage=\importmodule -\def\mod@newcommand{\@star@or@long\mod@new@command} -\def\mod@new@command#1{\@testopt{\@mod@newcommand#1}0} -\def\@mod@newcommand#1[#2]{\kernel@ifnextchar [{\mod@xargdef#1[#2]}{\mod@argdef#1[#2]}} -\long\def\mod@argdef#1[#2]#3{\@yargdef#1\@ne{#2}{#3}} -\long\def\mod@xargdef#1[#2][#3]#4{\expandafter\def\expandafter#1\expandafter{% -\expandafter\@protected@testopt\expandafter #1\csname\string#1\endcsname{#3}}% -\expandafter\@yargdef\csname\string#1\endcsname\tw@{#2}{#4}} -\newif\if@symdeflocal -\define@key{symdef}{local}[true]{\@symdeflocaltrue} -\define@key{symdef}{name}{} -\define@key{symdef}{assocarg}{} -\define@key{symdef}{bvars}{} -\define@key{symdef}{bvar}{} -\define@key{symdef}{bindargs}{} -\def\symdef{\@ifnextchar[{\@symdef}{\@symdef[]}} -\def\@symdef[#1]#2{\@ifnextchar[{\@@symdef[#1]{#2}}{\@@symdef[#1]{#2}[0]}} -\def\@mod@nc#1{\mod@newcommand{#1}[1]} -\def\@@symdef[#1]#2[#3]#4{% -\@symdeflocalfalse\setkeys{symdef}{#1}% -\expandafter\mod@newcommand\csname modules@#2@pres@\endcsname[#3]{#4}% -\expandafter\def\csname #2\endcsname% -{\@ifnextchar[{\csname modules@#2\endcsname}{\csname modules@#2\endcsname[]}}% -\expandafter\def\csname modules@#2\endcsname[##1]% -{\csname modules@#2@pres@##1\endcsname}% -\expandafter\@mod@nc\csname mod@symref@#2\expandafter\endcsname\expandafter% -{\expandafter\mod@termref\expandafter{\mod@id}{#2}{##1}}% -\if@symdeflocal\else% + \edef\this@module{% + \expandafter\noexpand\csname module@defs@#1\endcsname% + }% + \csgdef{module@defs@#1}{}% + \ifmod@qualified% + \edef\this@qualified@module{% + \expandafter\noexpand\csname module@defs@#1\endcsname% + }% + \csgdef{module@defs@qualified@#1}{}% + \fi% + \def\mod@id{#1}% +}% +\newcounter{module}[section]% +\newrobustcmd\module@heading{% + \stepcounter{module}% + \ifmod@show% + \noindent{\textbf{Module} \thesection.\themodule [\mod@id]}% + \sref@label@id{Module \thesection.\themodule [\mod@id]}% + \ifx\module@title\@empty :\quad\else\quad(\module@title)\hfill\\\fi% + \fi% +}% mod@show +\newenvironment{module}[1][]{% + \begin{@module}[#1]% + \ifcsundef{mod@id}{}{% only define if components are! + \ifcsundef{mod@path}{}{\csxdef{module@\mod@id @path}{\mod@path}}% + \ifcsundef{mod@ext}{}{\csxdef{module@\mod@id @ext}{\mod@ext}}% + }% + \if@mmt\if@importing\else\mmtheory{\mod@id}{????}\fi\fi% + \module@heading% make the headings + \ignorespaces}{% + \if@mmt\if@importing\else\mmtheoryend\fi\fi% + \end{@module}% + \ignorespacesafterend% +}% +\ifmod@show\surroundwithmdframed{module}\fi% +\newenvironment{@module}[1][]{\metasetkeys{module}{#1}}{}% +\def\activate@defs#1{% + \ifcsundef{module@#1@activated}{\csname module@defs@#1\endcsname}{}% + \@namedef{module@#1@activated}{true}% +}% +\def\export@defs#1{% \@ifundefined{mod@id}{}{% -\expandafter\g@addto@macro\this@module% -{\expandafter\mod@newcommand\csname modules@#2@pres@\endcsname[#3]{#4}}% -\expandafter\g@addto@macro\this@module% -{\expandafter\def\csname#2\endcsname% -{\@ifnextchar[{\csname modules@#2\endcsname}{\csname modules@#2\endcsname[]}}}% -\expandafter\g@addto@macro\this@module% -{\expandafter\def\csname modules@#2\endcsname[##1]% -{\csname modules@#2@pres@##1\endcsname}}% -\expandafter\g@addto@macro\csname module@defs@\mod@id\expandafter\endcsname\expandafter% -{\expandafter\@mod@nc\csname mod@symref@#2\expandafter\endcsname\expandafter% -{\expandafter\mod@termref\expandafter{\mod@id}{#2}{##1}}}% -\ifmod@qualified% -\expandafter\g@addto@macro\this@qualified@module% -{\expandafter\mod@newcommand\csname modules@#2@pres@qualified\endcsname[#3]{#4}}% -\expandafter\g@addto@macro\this@qualified@module% -{\expandafter\def\csname#2atqualified\endcsname{\csname modules@#2@pres@qualified\endcsname}}% -\fi% -}\fi} -\define@key{DefMathOp}{name}{\def\defmathop@name{#1}} -\newcommand\DefMathOp[2][]{% -\setkeys{DefMathOp}{#1}% -\symdef[#1]{\defmathop@name}{#2}} -\def\symvariant#1{\@ifnextchar[{\@symvariant{#1}}{\@symvariant{#1}[0]}} +\expandafter\expandafter\expandafter\g@addto@macro% + \expandafter\this@module\expandafter{\activate@defs{#1}}% +}% +}% +\newif\if@importing\@importingfalse +\newcommand\update@used@modules[1]{% + \ifx\used@modules\@empty% + \edef\used@modules{#1}% + \else% + \edef\used@modules{\used@modules,#1}% + \fi} +\gdef\used@modules{} +\srefaddidkey{importmodule} +\addmetakey{importmodule}{load} +\addmetakey[sms]{importmodule}{ext} +\addmetakey[false]{importmodule}{conservative}[true] +\newcommand\importmodule[2][]{% + \metasetkeys{importmodule}{#1}% + \update@used@modules{#2}% + \@importmodule[\importmodule@load]{#2}{\importmodule@ext}{export}% + \ignorespacesandpars% +}% +\newcommand\@importmodule[4][]{% + {\@importingtrue% to shut up macros while in the group opened here + \edef\@load{#1}% + \ifx\@load\@empty% + \relax% + \else% + \ifcsundef{module@#2@path}{% + \requiremodules{#1}{#3}% + }{% + \edef\@path{\csname module@#2@path\endcsname}% + \IfStrEq\@load\@path{% if the known path is the same as the requested one + \relax% do nothing, it has already been loaded, else signal an error + }{% + \PackageError{modules} + {{Module Name Clash\MessageBreak + A module with name #2 was already loaded under the path "\@path"\MessageBreak + The imported path "\@load" is probably a different module with the\MessageBreak + same name; this is dangerous -- not importing}% + {Check whether the Module name is correct}}% + }% + }% + \fi}% + \activate@defs{#2}% activate the module + \edef\@export{#4}\def\@@export{export}%prepare comparison + \ifx\@export\@@export\export@defs{#2}\fi% export the module + \if@importing\else\if@mmt\mmtinclude{#1?#2}\fi\fi% +}% +\newcommand\usemodule[2][]{% + \metasetkeys{importmodule}{#1}% + \update@used@modules{#2}% + \@importmodule[\importmodule@load]{#2}{\importmodule@ext}{noexport}% + \ignorespacesandpars% +}% +\newcommand\withusedmodules[2]{{\@for\@I:=#1\do{\activate@defs\@I}{#2}}}% +\newrobustcmd\importOMDocmodule[3][]{\importmodule[#1]{#3}}% +\let\metalanguage=\importmodule% +\let\mod@newcommand=\providerobustcmd% +\srefaddidkey{conceptdef}% +\addmetakey*{conceptdef}{title}% +\addmetakey{conceptdef}{subject}% +\addmetakey*{conceptdef}{display}% +\def\conceptdef@type{Symbol}% +\newrobustcmd\conceptdef[2][]{% + \metasetkeys{conceptdef}{#1}% + \ifx\conceptdef@display\st@flow\else{\stDMemph{\conceptdef@type} #2:}\fi% + \ifx\conceptdef@title\@empty~\else~(\stDMemph{\conceptdef@title})\par\fi% +}% +\newif\if@symdeflocal% +\srefaddidkey{symdef}% +\define@key{symdef}{local}[true]{\@symdeflocaltrue}% +\define@key{symdef}{primary}[true]{}% +\define@key{symdef}{assocarg}{}% +\define@key{symdef}{bvars}{}% +\define@key{symdef}{bargs}{}% +\addmetakey{symdef}{name}% +\addmetakey*{symdef}{title}% +\addmetakey*{symdef}{description}% +\addmetakey{symdef}{subject}% +\addmetakey*{symdef}{display}% +\def\symdef{% + \@ifnextchar[{\@symdef}{\@symdef[]}% +}% +\def\@symdef[#1]#2{% + \@ifnextchar[{\@@symdef[#1]{#2}}{\@@symdef[#1]{#2}[0]}% +}% +\def\@mod@nc#1{\mod@newcommand{#1}[1]}% +\def\ignorespacesandpars{% + \begingroup + \catcode13=10 + \@ifnextchar\relax + {\endgroup}% + {\endgroup}% +} +\def\ignorespacesandparsafterend#1\ignorespaces\fi{#1\fi\ignorespacesandpars} +\def\ignorespacesandpars{ + \ifhmode\unskip\fi% + \@ifnextchar\par% + {\expandafter\ignorespacesandpars\@gobble}% + {}% +} +\def\@@symdef[#1]#2[#3]#4{% + \@symdeflocalfalse% + \metasetkeys{symdef}{#1}% + \if@mmt\if@importing\else% +\ifx\symdef@name\@empty\mmtconstdec{#2}\else\mmtconstdec{\symdef@name}\fi% +\fi\fi% + \expandafter\mod@newcommand\csname modules@#2@pres@\endcsname[#3]{#4}% + \expandafter\mod@newcommand\csname #2\endcsname[1][]% + {\csname modules@#2@pres@##1\endcsname}% + \expandafter\@mod@nc\csname mod@symref@#2\expandafter\endcsname\expandafter% + {\expandafter\mod@termref\expandafter{\mod@id}{#2}{##1}}% + \if@symdeflocal% + \else% + \ifcsundef{mod@id}{}{% + \expandafter\g@addto@macro\this@module% + {\expandafter\mod@newcommand\csname modules@#2@pres@\endcsname[#3]{#4}}% + \expandafter\g@addto@macro\this@module% + {\expandafter\mod@newcommand\csname #2\endcsname[1][]% + {\csname modules@#2@pres@##1\endcsname}}% + \expandafter\g@addto@macro\csname module@defs@\mod@id\expandafter\endcsname\expandafter% + {\expandafter\@mod@nc\csname mod@symref@#2\expandafter\endcsname\expandafter% + {\expandafter\mod@termref\expandafter{\mod@id}{#2}{##1}}}% + \ifmod@qualified% + \expandafter\g@addto@macro\this@qualified@module% + {\expandafter\mod@newcommand\csname modules@#2@pres@qualified\endcsname[#3]{#4}}% + \expandafter\g@addto@macro\this@qualified@module% + {\expandafter\def\csname#2@qualified\endcsname{\csname modules@#2@pres@qualified\endcsname}}% + \fi% + }% mod@qualified + \fi% symdeflocal + \ifmod@show% + \ifx\symdef@display\st@flow\else{\noindent\stDMemph{\symdef@type} #2:}\fi% + \ifx\symdef@title\@empty~\else~(\stDMemph{\symdef@title})\par\fi% + \fi% + \ignorespacesandpars% +}% mod@show +\def\symdef@type{Symbol}% +\def\symvariant#1{% + \@ifnextchar[{\@symvariant{#1}}{\@symvariant{#1}[0]}% + }% \def\@symvariant#1[#2]#3#4{% -\expandafter\mod@newcommand\csname modules@#1@pres@#3\endcsname[#2]{#4}% -\@ifundefined{mod@id}{}{% -\expandafter\g@addto@macro\this@module% -{\expandafter\mod@newcommand\csname modules@#1@pres@#3\endcsname[#2]{#4}}}}% -\def\resymdef{\@ifnextchar[{\@resymdef}{\@resymdef[]}} -\def\@resymdef[#1]#2{\@ifnextchar[{\@@resymdef[#1]{#2}}{\@@resymdef[#1]{#2}[0]}} -\def\@@resymdef[#1]#2[#3]#4{\PackageError{modules} - {The \protect\resymdef macro is deprecated,\MessageBreak - use the \protect\symvariant instead!}} -\let\abbrdef\symdef -\def\mod@path{} -\def\mod@true{true} -\addmetakey[false]{termdef}{local} -\addmetakey{termdef}{name} -\newcommand{\termdef}[3][]{\metasetkeys{termdef}{#1}% -\expandafter\mod@newcommand\csname#2\endcsname[0]{#3\xspace}% -\ifx\termdef@local\mod@true\else% -\@ifundefined{mod@id}{}{\expandafter\g@addto@macro\this@module% -{\expandafter\mod@newcommand\csname#2\endcsname[0]{#3\xspace}}}% -\fi} -\def\@captitalize#1{\uppercase{#1}} -\newcommand\capitalize[1]{\expandafter\@captitalize #1} -\def\mod@termref#1#2#3{\def\@test{#3} -\@ifundefined{#1@cd@file@base} - {\protect\G@refundefinedtrue - \@latex@warning{\protect\termref with unidentified cd "#1": the cd key must - reference an active module} - \def\@label{sref@#2 @target}} + \expandafter\mod@newcommand\csname modules@#1@pres@#3\endcsname[#2]{#4}% + \ifcsundef{mod@id}{}{% + \expandafter\g@addto@macro\this@module% + {\expandafter\mod@newcommand\csname modules@#1@pres@#3\endcsname[#2]{#4}}% + }% +\ignorespacesandpars}% +\def\resymdef{% + \@ifnextchar[{\@resymdef}{\@resymdef[]}% +}% +\def\@resymdef[#1]#2{% + \@ifnextchar[{\@@resymdef[#1]{#2}}{\@@resymdef[#1]{#2}[0]}% +}% +\def\@@resymdef[#1]#2[#3]#4{% + \PackageError{modules}% + {The \protect\resymdef macro is deprecated}{use the \protect\symvariant instead!}% +}% +\let\abbrdef\symdef% +\define@key{DefMathOp}{name}{% + \def\defmathop@name{#1}% +}% +\newrobustcmd\DefMathOp[2][]{% + \setkeys{DefMathOp}{#1}% + \symdef[#1]{\defmathop@name}{#2}% +}% +\newcommand\assdef[2][]{#2} +\def\vardef{\@ifnextchar[{\@vardef}{\@vardef[]}}% +\def\@vardef[#1]#2{% + \@ifnextchar[{\@@vardef[#1]{#2}}{\@@vardef[#1]{#2}[0]}} +\def\@@vardef[#1]#2[#3]#4{% + \def\@test{#1}% + \ifx\@test\@empty% + \@@symdef[local]{#2}[#3]{#4}% + \else% + \symdef[local,#1]{#2}[#3]{#4}% + \fi% + \ignorespacesandpars}% +\addmetakey{symtest}{name}% +\addmetakey{symtest}{variant}% +\newrobustcmd\symtest[3][]{% + \if@importing% + \else% + \metasetkeys{symtest}{#1}% + \par\noindent \textbf{Symbol}~% + \ifx\symtest@name\@empty\texttt{#2}\else\texttt{\symtest@name}\fi% + \ifx\symtest@variant\@empty\else\ (variant \texttt{\symtest@variant})\fi% + \ with semantic macro % + \texttt{\textbackslash #2\ifx\symtest@variant\@empty\else[\symtest@variant]\fi}% + : used e.g. in \ensuremath{#3}% + \fi% + \ignorespacesandpars% +}% +\addmetakey{abbrtest}{name}% +\newrobustcmd\abbrtest[3][]{% + \if@importing% + \else% + \metasetkeys{abbrtest}{#1}% + \par\noindent \textbf{Abbreviation}~% + \ifx\abbrtest@name\@empty\texttt{#2}\else\texttt{\abbrtest@name}\fi% + : used e.g. in \ensuremath{#3}% + \fi% + \ignorespacesandpars}% +\def\mod@true{true}% +\addmetakey[false]{termdef}{local}% +\addmetakey{termdef}{name}% +\newrobustcmd\termdef[3][]{% + \metasetkeys{termdef}{#1}% + \expandafter\mod@newcommand\csname#2\endcsname[0]{#3\xspace}% + \ifx\termdef@local\mod@true% + \else% + \ifcsundef{mod@id}{}{% + \expandafter\g@addto@macro\this@module% + {\expandafter\mod@newcommand\csname#2\endcsname[0]{#3\xspace}}% + }% + \fi% +}% +\def\@capitalize#1{\uppercase{#1}}% +\newrobustcmd\capitalize[1]{\expandafter\@capitalize #1}% +\def\mod@termref#1#2#3{% + \def\@test{#3}% + \@ifundefined{module@defs@#1}{% + \protect\G@refundefinedtrue% + \@latex@warning{\protect\termref with unidentified cd "#1": the cd key must reference an active module}% + \def\@label{sref@#2@target}% + }% {\def\@label{sref@#2@#1@target}}% -\expandafter\ifx\csname #1@cd@file@base\endcsname\@empty% local reference -\sref@hlink@ifh{\@label}{\ifx\@test\@empty #2\else #3\fi}\else% -\def\@uri{\csname #1@cd@file@base\endcsname.pdf\#\@label}% -\sref@href@ifh{\@uri}{\ifx\@test\@empty #2\else #3\fi}\fi} -\def\mod@simplify#1{\expandafter\mod@simpl#1/\relax} -\def\mod@simpl#1/#2\relax{\def\@second{#2}% -\ifx\mod@blaaaa\@empty\edef\mod@savedprefix{}\def\mod@blaaaa{aaa}\else\fi% -\ifx\@second\@empty\edef\mod@savedprefix{\mod@savedprefix#1}% -\else\mod@simplhelp#1/#2\relax\fi} -\def\mod@updir{..} -\def\mod@simplhelp#1/#2/#3\relax{\def\@first{#1}\def\@second{#2}\def\@third{#3}% -\ifx\@third\@empty% base case -\ifx\@second\mod@updir\else% - -\ifx\mod@second\@empty\edef\mod@savedprefix{\mod@savedprefix#1}% -\else\edef\mod@savedprefix{\mod@savedprefix#1/#2}% -\fi% -\fi% -\else% -\ifx\@first\mod@updir% -\edef\mod@savedprefix{\mod@savedprefix#1/}\mod@simplhelp#2/#3\relax% -\else% -\ifx\@second\mod@updir\mod@simpl#3\relax% -\else\edef\mod@savedprefix{\mod@savedprefix#1/}\mod@simplhelp#2/#3\relax% -\fi% -\fi% -\fi}% -\newcommand{\defpath}[2]{\expandafter\newcommand\csname #1\endcsname[1]{#2/##1}} -\newif\ifmodules -\gdef\mod@reg{} -\def\mod@update#1{\ifx\mod@reg\@empty\xdef\mod@reg{#1}\else\xdef\mod@reg{#1@\mod@reg}\fi} -\def\mod@check#1@#2///#3\relax{% -\def\mod@one{#1}\def\mod@two{#2}\def\mod@three{#3}% -\expandafter% -\ifx\mod@three\mod@one\modulestrue% -\else% -\ifx\mod@two\@empty\modulesfalse\else\mod@check#2///#3\relax\fi% -\fi} -\def\mod@search#1{% -\modulesfalse\expandafter\mod@check\mod@reg @///#1\relax% -\ifmodules\else\mod@update{#1}\fi} -\def\mod@reguse#1{\modulesfalse\expandafter\mod@check\mod@reg @///#1\relax} -\def\mod@prefix{} -\def\mod@updatedpre#1{% -\edef\mod@prefix{\mod@prefix\mod@pathprefix@check#1/\relax}} -\def\mod@pathprefix@check#1/#2\relax{% -\ifx\\#2\\% no slash in string -\else\mod@ReturnAfterFi{#1/\mod@pathprefix@help#2\relax}% -\fi} -\def\mod@pathprefix@help#1/#2\relax{% -\ifx\\#2\\% end of recursion -\else\mod@ReturnAfterFi{#1/\mod@pathprefix@help#2\relax}% -\fi} -\long\def\mod@ReturnAfterFi#1\fi{\fi#1} -\def\mod@pathpostfix@check#1/#2\relax{% slash -\ifx\\#2\\%no slash in string -#1\else\mod@ReturnAfterFi{\mod@pathpostfix@help#2\relax}% -\fi} -\def\mod@pathpostfix@help#1/#2\relax{% -\ifx\\#2\\% -#1\else\mod@ReturnAfterFi{\mod@pathpostfix@help#2\relax}% -\fi} -\def\mod@updatedpost#1{% -\edef\mod@savedprefix{\mod@savedprefix\mod@pathpostfix@check#1/\relax}} -\def\mod@updatesms{\edef\mod@savedprefix{\mod@savedprefix.sms}} -\newcommand\requiremodules[1]{% -{\mod@showfalse% save state and ensure silence while reading sms -\mod@updatedpre{#1}% add the new file to the already existing path -\let\mod@savedprefix\mod@prefix% add the path to the new file to the prefix -\mod@updatedpost{#1}% -\def\mod@blaaaa{}% macro used in the simplify function (remove .. from the prefix) -\mod@simplify{\mod@savedprefix}% remove |xxx/..| from the path (in case it exists) -\mod@reguse{\mod@savedprefix}% -\ifmodules\else% -\mod@updatesms% update the file to contain the .sms extension -\let\newreg\mod@reg% use to compare, in case the .sms file was loaded before -\mod@search{\mod@savedprefix}% update registry -\ifx\newreg\mod@reg\else\input{\mod@savedprefix}\fi% check if the registry was updated and load if necessary -\fi}} -\def\sinput#1{ -{\mod@updatedpre{#1}% add the new file to the already existing path -\let\mod@savedprefix\mod@prefix% add the path to the new file to the prefix -\mod@updatedpost{#1}% -\def\mod@blaaaa{}% macro used in the simplify function (remove .. from the prefix) -\mod@simplify{\mod@savedprefix}% remove |xxx/..| from the path (in case it exists) -\mod@reguse{\mod@savedprefix}% -\let\newreg\mod@reg% use to compare, in case the .sms file was loaded before -\mod@search{\mod@savedprefix}% update registry -\ifx\newreg\mod@reg%\message{This file has been previously introduced} -\else\input{\mod@savedprefix}% -\fi}} -\let\sinputref=\sinput -\let\inputref=\input -\def\requirepackage#1#2{\makeatletter\input{#1.sty}\makeatother} -\srefaddidkey{view} -\addmetakey*{view}{title} -\define@key{view}{load}{\requiremodules{#1}} -\newcounter{view}[section] -\newcommand\view@heading[2]{\stepcounter{view}% -{\textbf{View} \thesection.\theview: from #1 to #2}% -\sref@label@id{View \thesection.\theview}% -\ifx\view@title\@empty :\quad\else\quad(\view@title)\hfill\\\fi} -\ifmod@show\newsavebox{\viewbox} -\newenvironment{view}[3][]{\metasetkeys{view}{#1}\sref@target\stepcounter{view} -\begin{lrbox}{\viewbox}\begin{minipage}{.9\textwidth} -\importmodule{#1}\importmodule{#2}\gdef\view@@heading{\view@heading{#2}{#3}}} -{\end{minipage}\end{lrbox} -\setbox0=\hbox{\begin{minipage}{.9\textwidth}% -\noindent\view@@heading\rm% -\end{minipage}} -\smallskip\noindent\fbox{\vbox{\box0\vspace*{.2em}\usebox\viewbox}}\smallskip} -\else\newxcomment[]{view}\fi%ifmod@show + \@ifundefined{module@#1@path}% local reference + {\sref@hlink@ifh{\@label}{\ifx\@test\@empty #2\else #3\fi}}% + {\def\@uri{\csname module@#1@path\endcsname.pdf\#\@label}% + \sref@href@ifh{\@uri}{\ifx\@test\@empty #2\else #3\fi}}% +}% +\def\CurrentDir{}% +\newrobustcmd{\@rinput}[2]{% + \@cpath{\CurrentDir#1}% + \StrCut[\value{RealAddrNum}]{/\@CanPath}{/}\@TempPath\@Rubbish% + \StrCut[1]{\@TempPath/}{/}\@Rubbish\@DirPath% + \edef\CurrentDir{\@DirPath}% + \input{\@CanPath.#2}% + \def\CurrentDir{}% +}% +\newrobustcmd\requiremodules[2]{% + \mod@showfalse% + \@importingtrue% save state and ensure silence while reading sms + \edef\mod@path{#1}% + \edef\mod@ext{#2}% set up path/ext + \input{#1.#2}% +}% +\newrobustcmd\@requiremodules[2]{% + \if@tempswa\requiremodules{#1}{#2}\fi% +}% +\newrobustcmd\inputref[2][]{% + \def\@Slash{/} + \edef\@load{#2}% + \StrChar{\@load}{1}[\@testchar] + \ifx\@testchar\@Slash% + \edef\mod@path{#2}% + \edef\mod@ext{tex}% + \input{#2}% + \else% + \@rinput{#2}{tex}% + \fi% +}% +\def\requirepackage#1#2{\makeatletter\input{#1.sty}\makeatother}% +\newrobustcmd\sinput[1]{% + \PackageError{modules}% + {The \protect\sinput macro is deprecated}{use the \protect\input instead!}% +}% +\newrobustcmd\sinputref[1]{% + \PackageError{modules}% + {The \protect\sinputref macro is deprecated}{use the \protect\inputref instead!}% +}% \define@key{module}{uses}{% -\@for\module@tmp:=#1\do{\activate@defs\module@tmp\export@defs\module@tmp}} + \@for\module@tmp:=#1\do{\activate@defs\module@tmp\export@defs\module@tmp}% +}% \define@key{module}{usesqualified}{% -\@for\module@tmp:=#1\do{\activate@defs{qualified@\module@tmp}\export@defs\module@tmp}} -\def\csymdef{\@ifnextchar[{\@csymdef}{\@csymdef[]}} -\def\@csymdef[#1]#2{\@ifnextchar[{\@@csymdef[#1]{#2}}{\@@csymdef[#1]{#2}[0]}} -\def\@@csymdef[#1]#2[#3]#4#5{\@@symdef[#1]{#2}[#3]{#4}} + \@for\module@tmp:=#1\do{\activate@defs{qualified@\module@tmp}\export@defs\module@tmp}% +}% +\def\coolurion{\PackageWarning{modules}{coolurion is obsolete, please remove}}% +\def\coolurioff{\PackageWarning{modules}{coolurioff is obsolete, please remove}}% +\def\csymdef{\@ifnextchar[{\@csymdef}{\@csymdef[]}}% +\def\@csymdef[#1]#2{% + \@ifnextchar[{\@@csymdef[#1]{#2}}{\@@csymdef[#1]{#2}[0]}% +}% +\def\@@csymdef[#1]#2[#3]#4#5{% + \@@symdef[#1]{#2}[#3]{#4}% +}% \def\notationdef[#1]#2#3{} +\newrobustcmd\reqmodules[2]{% + \ifinlist{#1}{\@register}{}{\listadd\@register{#1}\input{#1.#2}}% +}% +\newcounter{@pl} +\DeclareListParser*{\forpathlist}{/} +\def\file@name#1{% + \setcounter{@pl}{0}% + \forpathlist{\stepcounter{@pl}\listadd\@pathlist}{#1} + \def\do##1{% + \ifnumequal{\value{@pl}}{1}{##1}{\addtocounter{@pl}{-1}} + }% + \dolistloop{\@pathlist}% +}% +\def\file@path#1{% + \setcounter{@pl}{0}% + \forpathlist{\stepcounter{@pl}\listadd\@pathlist}{#1}% + \def\do##1{% + \ifnumequal{\value{@pl}}{1}{}{% + \addtocounter{@pl}{-1}% + \ifnumequal{\value{@pl}}{1}{##1}{##1/}% + }% + }% + \dolistloop{\@pathlist}% +}% +\def\@NEWcurrentprefix{} +\def\NEWrequiremodules#1{% + \def\@pref{\file@path{#1}}% + \ifx\@pref\@empty% + \else% + \xdef\@NEWcurrentprefix{\@NEWcurrentprefix/\@pref}% + \fi% + \edef\@input@me{\@NEWcurrentprefix/\file@name{#1}}% + \message{requiring \@input@me}\reqmodule{\@input@me}% +}% \endinput %% %% End of file `modules.sty'. diff --git a/Master/texmf-dist/tex/latex/stex/modules/modules.sty.ltxml b/Master/texmf-dist/tex/latex/stex/modules/modules.sty.ltxml deleted file mode 100644 index 23da85ab9ea..00000000000 --- a/Master/texmf-dist/tex/latex/stex/modules/modules.sty.ltxml +++ /dev/null @@ -1,624 +0,0 @@ -# -*- CPERL -*- -package LaTeXML::Package::Pool; -use strict; -use LaTeXML::Global; -use LaTeXML::Package; -DefKeyVal('Module','id','Semiverbatim'); -DefKeyVal('Module','cd','Semiverbatim'); -DefEnvironment('{module} OptionalKeyVals:Module', - "?#excluded()(<omdoc:theory " - . "?&defined(&KeyVal(#1,'id'))(xml:id='&KeyVal(#1,'id')')(xml:id='#id')>#body</omdoc:theory>)", -# beforeDigest=>\&useTheoryItemizations, - afterDigestBegin=>sub { - my($stomach, $whatsit)=@_; - $whatsit->setProperty(excluded=>LookupValue('excluding_modules')); - - my $keys = $whatsit->getArg(1); - my($id, $cd)=$keys - && map(ToString($keys->getValue($_)),qw(id cd)); - #make sure we have an id or give a stub one otherwise: -if (not $id) { -#do magic to get a unique id for this theory -#$whatsit->setProperties(beginItemize('theory')); -#$id = ToString($whatsit->getProperty('id')); - # changed: beginItemize returns the hash returned by RefStepCounter. - # RefStepCounter deactivates any scopes for the current value of the - # counter which causes the stored prop. of the env. not to be - # visible anymore. - $id = LookupValue('stex:theory:id') || 0; - AssignValue('stex:theory:id', $id+1); - $id = "I$id"; -} - $cd = $id unless $cd; - # update the catalog with paths for modules - my $module_paths = LookupValue('module_paths') || {}; - $module_paths->{$id} = LookupValue('last_module_path'); - AssignValue('module_paths', $module_paths, 'global'); - - #Update the current module position - AssignValue(current_module => $id); - AssignValue(module_cd => $cd) if $cd; - - #activate the module in our current scope - $STATE->activateScope("module:".$id); - - #Activate parent scope, if present - my $parentmod = LookupValue('parent_module'); - use_module($parentmod) if $parentmod; - #Update the current parent module - AssignValue("parent_of_$id"=>$parentmod,'global'); - AssignValue("parent_module" => $id); - return; }, - afterDigest => sub { - #Move a step up on the module ancestry - AssignValue("parent_module" => LookupValue("parent_of_".LookupValue("parent_module"))); - return; - }); -sub use_module { - my($module,%ancestors)=@_; - $module = ToString($module); - if (defined $ancestors{$module}) { - Fatal(":module \"$module\" leads to import cycle!"); - } - $ancestors{$module}=1; - # Depth-first load definitions from used modules, disregarding cycles - foreach my $used_module (@{ LookupValue("module_${module}_uses") || []}){ - use_module($used_module,%ancestors); - } - # then load definitions for this module - $STATE->activateScope("module:$module"); }#$ -DefMacro('\coolurion',sub {AssignValue('cooluri'=>1);}); -DefMacro('\coolurioff',sub {AssignValue('cooluri'=>0);}); -sub omext { - my ($mod)=@_; my $dest=''; - $mod = ToString($mod); - if ($mod) { - #We need a constellation of abs_path invocations - # to make sure that all symbolic links get resolved - if ($mod=~/^(\w)+:\/\//) { $dest=$mod; } else { - my ($d,$f,$t) = pathname_split(abs_path($mod)); - $d = pathname_relative(abs_path($d),abs_path(cwd())); - $dest=$d."/".$f; - } - } - $dest.=".omdoc" if (ToString($mod) && !LookupValue('cooluri')); - return Tokenize($dest);} -sub importmoduleI { - my($stomach,$whatsit)=@_; - my $file = ToString($whatsit->getArg(1)); - my $omdocmod = $file.".omdoc" if $file; - my $module = ToString($whatsit->getArg(2)); - my $containing_module = LookupValue('current_module'); - AssignValue('last_import_module',$module); - #set the relation between the current module and the one to be imported - PushValue("module_".$containing_module."_uses"=>$module) if $containing_module; - #check if we've already loaded this module file or no file path given - if((!$file) || (LookupValue('file_'.$module.'_loaded'))) {use_module($module);} #if so activate it! - else { - #if not: - my $gullet = $stomach->getGullet; - #1) mark as loaded - AssignValue('file_'.$module.'_loaded' => 1, 'global'); - #open a group for its definitions so that they are localized - $stomach->bgroup; - #update the last module path - AssignValue('last_module_path', $file); - #queue the closing tag for this module in the gullet where it will be executed - #after all other definitions of the imported module have been taken care of - $gullet->unread(Invocation(T_CS('\end@requiredmodule'), Tokens(Explode($module)))->unlist); - #we only need to load the sms definitions without generating any xml output, so we set the flag to 1 - AssignValue('excluding_modules' => 1); - #queue this module's sms file in the gullet so that its definitions are imported - $gullet->input($file,['sms']); - } - return;} -DefConstructor('\importmodule OptionalSemiverbatim {}', - "<omdoc:imports from='?#1(&omext(#1))\##2'/>", - afterDigest=>sub{ importmoduleI(@_)}); -DefMacro('\importmodulevia OptionalSemiverbatim {}','\endgroup\importmoduleI[#1]{#2}\begin{importmoduleenv}[#1]{#2}'); -DefMacroI('\end{importmodulevia}',undef,'\end{importmoduleenv}'); -DefEnvironment('{importmoduleenv} OptionalSemiverbatim {}', - "<omdoc:imports from='?#1(&omext(#1))\##2'>" - . "<omdoc:morphism>#body</omdoc:morphism>" - ."</omdoc:imports>"); -DefConstructor('\importmoduleI OptionalSemiverbatim {}', '', - afterDigest=>sub{ importmoduleI(@_)}); -DefConstructor('\vassign{}{}', - "<omdoc:requation>" - . "<ltx:Math><ltx:XMath>#1</ltx:XMath></ltx:Math>" - . "<ltx:Math><ltx:XMath>#2</ltx:XMath></ltx:Math>" - ."</omdoc:requation>"); -DefConstructor('\tassign[]{}{}', - "<omdoc:requation>" - . "<om:OMOBJ><om:OMS cd='?#1(#1)(#lastImportModule)' name='#2'/></om:OMOBJ>" - . "<om:OMOBJ><om:OMS cd='#currentModule' name='#3'/></om:OMOBJ>" - ."</omdoc:requation>", - afterDigest=> sub { - my ($stomach,$whatsit) = @_; - $whatsit->setProperty('currentModule',LookupValue("current_module")); - $whatsit->setProperty('lastImportModule',LookupValue("last_import_module")); - }); -DefConstructor('\ttassign{}{}', - "<omdoc:requation>" - . "<ltx:Math><ltx:XMath>#1</ltx:XMath></ltx:Math>" - . "<ltx:Math><ltx:XMath>#2</ltx:XMath></ltx:Math>" - ."</omdoc:requation>"); -DefConstructor('\importOMDocmodule OptionalSemiverbatim {}{}',"<omdoc:imports from='#3\##2'/>", -afterDigest=>sub{ - #Same as \importmodule, just switch second and third argument. - my ($stomach,$whatsit) = @_; - my $path = $whatsit->getArg(1); - my $ouri = $whatsit->getArg(2); - my $module = $whatsit->getArg(3); - $whatsit->setArgs(($path, $module,$ouri)); - importmoduleI($stomach,$whatsit); - return; -}); -DefConstructor('\metalanguage OptionalSemiverbatim {}', - "<omdoc:imports type='metalanguage' from='?#1(&omext(#1))\##2'/>", - afterDigest=>sub{ importmoduleI(@_)}); -DefMacro('\DefMathOp OptionalKeyVals:symdef {}', - sub { - my($self,$keyval,$pres)=@_; - my $name = KeyVal($keyval,'name') if $keyval; - #Rewrite this token - my $scopes = $STATE->getActiveScopes; - DefMathRewrite(xpath=>'descendant-or-self::ltx:XMath',match=>ToString($pres), - replace=>sub{ - map {$STATE->activateScope($_);} @$scopes; - $_[0]->absorb(Digest("\\".ToString($name))); - }); - #Invoke symdef - (Invocation(T_CS('\symdef'),$keyval,$name,undef,$pres)->unlist); - }); -DefMacro('\symdef OptionalKeyVals:symdef {}[]{}', - sub { - my($self,@args)=@_; - ((Invocation(T_CS('\@symdef'),@args)->unlist), - (LookupValue('excluding_modules') ? () - : (Invocation(T_CS('\@symdef@pres'), @args)->unlist))); }); - -#Current list of recognized formatter command sequences: -our @PresFormatters = qw (infix prefix postfix assoc mixfixi mixfixa mixfixii mixfixia mixfixai mixfixaii mixfixiii); -DefPrimitive('\@symdef OptionalKeyVals:symdef {}[]{}', sub { - my($stomach,$keys,$cs,$nargs,$presentation)=@_; - my($name,$cd,$role,$bvars,$bvar)=$keys - && map($_ && $_->toString,map($keys->getValue($_), qw(name cd role - bvars bvar))); - $cd = LookupValue('module_cd') unless $cd; - $name = $cs unless $name; - #Store for later lookup - AssignValue("symdef.".ToString($cs).".cd"=>ToString($cd),'global'); - AssignValue("symdef.".ToString($cs).".name"=>ToString($name),'global'); - $nargs = (ref $nargs ? $nargs->toString : $nargs || 0); - my $module = LookupValue('current_module'); - my $scope = (($keys && ($keys->getValue('local') || '' eq 'true')) ? 'module_local' : 'module').":".$module; - #The DefConstructorI Factory is responsible for creating the \symbol command sequences as dictated by the \symdef - DefConstructorI("\\".$cs->toString,convertLaTeXArgs($nargs+1,'default'), sub { - my ($document,@args) = @_; - my $icvariant = shift @args; - my @props = @args; - #Lookup the presentation from the State, if a variant: - @args = splice(@props,0,$nargs); - my %prs = @props; - my $localpres = $prs{presentation}; - $prs{isbound} = "BINDER" if ($bvars || $bvar); - my $wrapped; - my $parent=$document->getNode; - if(! defined $parent->lookupNamespacePrefix("http://omdoc.org/ns")){ # namespace not already declared? - $document->getDocument->documentElement->setNamespace("http://omdoc.org/ns","omdoc",0); } - my $symdef_scope=$parent->exists('ancestor::omdoc:rendering'); #Are we in a \symdef rendering? - if (($localpres =~/^LaTeXML::Token/) && $symdef_scope) { - #Note: We should probably ask Bruce whether this maneuver makes sense - # We jump back to digestion, at a processing stage where it has been already completed - # Hence need to reinitialize all scopes and make a new group. This is probably expensive to do. - - my @toks = $localpres->unlist; - while(@toks && $toks[0]->equals(T_SPACE)){ shift(@toks); } # Remove leading space - my $formatters = join("|",@PresFormatters); - $formatters = qr/$formatters/; - $wrapped = (@toks && ($toks[0]->toString =~ /^\\($formatters)$/)); - $localpres = Invocation(T_CS('\@use'),$localpres) unless $wrapped; - # Plug in the provided arguments, doing a nasty reversion: - my @sargs = map (Tokens($_->revert), @args); - $localpres = Tokens(LaTeXML::Expandable::substituteTokens($localpres,@sargs)) if $nargs>0; - #Digest: - my $stomach = $STATE->getStomach; - $stomach->beginMode('inline-math'); - $STATE->activateScope($scope); - use_module($module); - use_module(LookupValue("parent_of_".$module)) if LookupValue("parent_of_".$module); - $localpres=$stomach->digest($localpres); - $stomach->endMode('inline-math'); - } - else { #Some are already digested to Whatsit, usually when dropped from a wrapping constructor - } - if ($nargs == 0) { - if (!$symdef_scope) { #Simple case - discourse flow, only a single XMTok - #Referencing XMTok when not in \symdefs: - $document->insertElement('ltx:XMTok',undef,(name=>$cs->toString, meaning=>$name,omcd=>$cd,role => $role,scriptpos=>$prs{'scriptpos'})); - } - else { - if ($symdef_scope && ($localpres =~/^LaTeXML::Whatsit/) && (!$wrapped)) {#1. Simple case: converts to a single token - $localpres->setProperties((name=>$cs->toString, meaning=>$name,omcd=>$cd,role => $role,scriptpos=>$prs{'scriptpos'})); - } - else { - #Experimental treatment - COMPLEXTOKEN - #$role=$role||'COMPLEXTOKEN'; - #$document->openElement('ltx:XMApp',role=>'COMPLEXTOKEN'); - #$document->insertElement('ltx:XMTok',undef,(name=>$cs->toString, meaning=>$name, omcd=>$cd, role=>$role, scriptpos=>$prs{'scriptpos'})); - #$document->openElement('ltx:XMWrap'); - #$document->absorb($localpres); - #$document->closeElement('ltx:XMWrap'); - #$document->closeElement('ltx:XMApp'); - } - #We need expanded presentation when invoked in \symdef scope: - - #Suppress errors from rendering attributes when absorbing. - #This is bad style, but we have no way around it due to the digestion acrobatics. - my $verbosity = $LaTeXML::Global::STATE->lookupValue('VERBOSITY'); - my $errors = $LaTeXML::Global::STATE->getStatus('error'); - $LaTeXML::Global::STATE->assignValue('VERBOSITY',-5); - - #Absorb presentation: - $document->absorb($localpres); - - #Return to original verbosity and error state: - $LaTeXML::Global::STATE->assignValue('VERBOSITY',$verbosity); - $LaTeXML::Global::STATE->setStatus('error',$errors); - - #Strip all/any <rendering><Math><XMath> wrappers: - #TODO: Ugly LibXML work, possibly do something smarter - my $parent = $document->getNode; - my @renderings=$parent->findnodes(".//omdoc:rendering"); - foreach my $render(@renderings) { - my $content=$render; - while ($content && $content->localname =~/^rendering|[X]?Math/) { - $content = $content->firstChild; - } - my $sibling = $content->parentNode->lastChild; - my $localp = $render->parentNode; - while ((defined $sibling) && (!$sibling->isSameNode($content))) { - my $clone = $sibling->cloneNode(1); - $localp->insertAfter($clone,$render); - $sibling = $sibling->previousSibling; - } - $render->replaceNode($content); - } - } - } - else {#2. Constructors with arguments - if (!$symdef_scope) { #2.1 Simple case, outside of \symdef declarations: - #Referencing XMTok when not in \symdefs: - my %ic = ($icvariant ne 'default') ? (ic=>'variant:'.$icvariant) : (); - $document->openElement('ltx:XMApp',%ic,scriptpos=>$prs{'scriptpos'},role=>$prs{'isbound'}); - $document->insertElement('ltx:XMTok',undef,(name=>$cs->toString, meaning=>$name, omcd=>$cd, role=>$role, scriptpos=>$prs{'operator_scriptpos'})); - foreach my $carg (@args) { - if ($carg =~/^LaTeXML::Token/) { - my $stomach = $STATE->getStomach; - $stomach->beginMode('inline-math'); - $carg=$stomach->digest($carg); - $stomach->endMode('inline-math'); - } - $document->openElement('ltx:XMArg'); - $document->absorb($carg); - $document->closeElement('ltx:XMArg'); - } - $document->closeElement('ltx:XMApp'); - } - else { #2.2 Complex case, inside a \symdef declaration - #We need expanded presentation when invoked in \symdef scope: - - #Suppress errors from rendering attributes when absorbing. - #This is bad style, but we have no way around it due to the digestion acrobatics. - my $verbosity = $LaTeXML::Global::STATE->lookupValue('VERBOSITY'); - my $errors = $LaTeXML::Global::STATE->getStatus('error'); - $LaTeXML::Global::STATE->assignValue('VERBOSITY',-5); - - #Absorb presentation: - $document->absorb($localpres); - - #Return to original verbosity and error state: - $LaTeXML::Global::STATE->assignValue('VERBOSITY',$verbosity); - $LaTeXML::Global::STATE->setStatus('error',$errors); - - #Strip all/any <rendering><Math><XMath> wrappers: - #TODO: Ugly LibXML work, possibly do something smarter? - my $parent = $document->getNode; - if(! defined $parent->lookupNamespacePrefix("http://omdoc.org/ns")){ # namespace not already declared? - $document->getDocument->documentElement->setNamespace("http://omdoc.org/ns","omdoc",0); } - my @renderings=$parent->findnodes(".//omdoc:rendering"); - foreach my $render(@renderings) { - my $content=$render; - while ($content && $content->localname =~/^rendering|[X]?Math/) { - $content = $content->firstChild; - } - my $sibling = $content->parentNode->lastChild; - my $localp = $render->parentNode; - while ((defined $sibling) && (!$sibling->isSameNode($content))) { - my $clone = $sibling->cloneNode(1); - $localp->insertAfter($clone,$render); - $sibling = $sibling->previousSibling; - } - $render->replaceNode($content); - } - } - }}, - properties => {name=>$cs->toString, meaning=>$name,omcd=>$cd,role => $role}, - scope=>$scope, - beforeDigest => sub{ - my ($gullet, $variant) = @_; - my $icvariant = ToString($variant); - my $localpres = $presentation; - if ($icvariant && $icvariant ne 'default') { - $localpres = LookupValue($cs->toString."$icvariant:pres"); - if (!$localpres) { - Error("No variant named '$icvariant' found! Falling back to ". - "default.\n Please consider introducing \\symvariant{". - $cs->toString."}[$nargs]{$icvariant}{... your presentation ...}"); - $localpres = $presentation; - } - } - my $count = LookupValue(ToString($cs).'_counter') || 0; - AssignValue(ToString($cs).":pres:$count",$localpres); - AssignValue(ToString($cs).'_counter',$count+1); - return; - }, - afterDigest => sub{ - my ($stomach,$whatsit) = @_; - my $count = LookupValue(ToString($cs).'_aftercounter') || 0; - $whatsit->setProperty('presentation',LookupValue(ToString($cs).":pres:$count")); - AssignValue(ToString($cs).'_aftercounter',$count+1); - }); - return; }); - DefMacro('\symvariant{}[]{}{}', sub { - my($self,@args)=@_; - my $prestok = Invocation(T_CS('\@symvariant@pres'), @args); - pop @args; push @args, $prestok; - Invocation(T_CS('\@symvariant@construct'),@args)->unlist; -}); - DefMacro('\@symvariant@pres{}[]{}{}', sub { - my($self,$cs,$nargs,$ic,$presentation)=@_; - symdef_presentation_pmml($cs,ToString($nargs)||0,$presentation); - }); - DefConstructor('\@symvariant@construct{}[]{}{}', sub { - my($document,$cs,$nargs,$icvariant,$presentation)=@_; - $cs = ToString($cs); - $nargs = ToString($nargs); - $icvariant = ToString($icvariant); - # Save presentation for future reference: - #Notation created by \symdef - #Create the rendering at the right place: - my $cnode = $document->getNode; - my $root = $document->getDocument->documentElement; - my $name = LookupValue("symdef.".ToString($cs).".name") || $cs; - # Fix namespace (the LibXML XPath problems...) - $root->setNamespace("http://omdoc.org/ns","omdoc",0); - my ($notation) = $root->findnodes(".//omdoc:notation[\@name='$name' and ". - "preceding-sibling::omdoc:symbol[1]/\@name - = '$name']"); - if (!$notation) { - #No symdef found, raise error: - Error("No \\symdef found for \\$cs! Please define symbol prior to introducing variants!"); - return; - } - $document->setNode($notation); - $document->absorb($presentation); - $notation->lastChild->setAttribute("ic","variant:$icvariant"); - $document->setNode($cnode); - return; - }, - beforeDigest => sub { - my($gullet,$cs,$nargs,$icvariant,$presentation)=@_; - $cs = ToString($cs); - $icvariant = ToString($icvariant); - AssignValue("$cs:$icvariant:pres",Digest($presentation),'module:'.LookupValue('current_module')); - }); - #mode=>'math' -DefPrimitive('\abbrdef OptionalKeyVals:symdef {}[]{}', sub { - my($stomach,$keys,$cs,$nargs,$presentation)=@_; - my $module = LookupValue('current_module'); - my $scope = (($keys && ($keys->getValue('local') || '' eq 'true')) ? 'module_local' : 'module').":$module"; - DefMacroI("\\".$cs->toString,convertLaTeXArgs($nargs,''),$presentation, - scope=>$scope); - return; }); -DefMacro('\defpath{}{}', sub { - my ($gullet,$arg1,$arg2)=@_; - $arg1 = ToString($arg1); - $arg2 = ToString($arg2); - my $paths = LookupValue('defpath')||{}; - $$paths{"$arg1"}=$arg2; - AssignValue('defpath'=>$paths,'global'); - DefMacro('\\'.$arg1.' Semiverbatim',$arg2."/#1"); - });#$ -DefPrimitive('\requiremodules{}', sub { - my($stomach,$module)=@_; - my $GULLET = $stomach->getGullet; - $module = Digest($module)->toString; - if(LookupValue('file_'.$module.'_loaded')) {} - else { - AssignValue('file_'.$module.'_loaded' => 1, 'global'); - $stomach->bgroup; - AssignValue('last_module_path', $module); - $GULLET->unread(T_CS('\end@requiredmodule')); - AssignValue('excluding_modules' => 1); - $GULLET->input($module,['sms']); - } - return;}); - -DefPrimitive('\end@requiredmodule{}',sub { - #close the group - $_[0]->egroup; - #print STDERR "END: ".ToString(Digest($_[1])->toString); - #Take care of any imported elements in this current module by activating it and all its dependencies - #print STDERR "Important: ".ToString(Digest($_[1])->toString)."\n"; - use_module(ToString(Digest($_[1])->toString)); - return; });#$ -DefPrimitive('\sinput Semiverbatim', sub { - my($stomach,$module)=@_; - my $GULLET = $stomach->getGullet; - $module = Digest($module)->toString; - AssignValue('file_'.$module.'_loaded' => 1, 'global'); - $stomach->bgroup; - AssignValue('last_module_path', $module); - $GULLET->unread(Invocation(T_CS('\end@requiredmodule'),Tokens(Explode($module)))->unlist); - $GULLET->input($module,['tex']); - return;});#$ -DefConstructor('\sinputref{}',"<omdoc:oref href='#1.omdoc' class='expandable'/>"); -DefConstructor('\inputref{}',"<omdoc:oref href='#1.omdoc' class='expandable'/>"); -DefMacro('\@symdef@pres OptionalKeyVals:symdef {}[]{}', sub { - my($self,$keys, $cs,$nargs,$presentation)=@_; - - my($name,$cd,$role)=$keys - && map($_ && $_->toString,map($keys->getValue($_), qw(name cd role))); - $cd = LookupValue('module_cd') unless $cd; - $name = $cs unless $name; - AssignValue('module_name'=>$name) if $name; - $nargs = 0 unless ($nargs); - my $nargkey = ToString($name).'_args'; - AssignValue($nargkey=>ToString($nargs)) if $nargs; - $name=ToString($name); - - Invocation(T_CS('\@symdef@pres@aux'), - $cs, - ($nargs || Tokens(T_OTHER(0))), - symdef_presentation_pmml($cs,ToString($nargs)||0,$presentation), - (Tokens(Explode($name))), - (Tokens(Explode($cd))), - $keys)->unlist; });#$ -sub symdef_presentation_pmml { - my($cs,$nargs,$presentation)=@_; - my @toks = $presentation->unlist; - while(@toks && $toks[0]->equals(T_SPACE)){ shift(@toks); } # Remove leading space - $presentation = Tokens(@toks); - # Wrap with \@use, unless already has a recognized formatter. - my $formatters = join("|",@PresFormatters); - $formatters = qr/$formatters/; - $presentation = Invocation(T_CS('\@use'),$presentation) - unless (@toks && ($toks[0]->toString =~ /^\\($formatters)$/)); - # Low level substitution. - my @args = - map(Invocation(T_CS('\@SYMBOL'),T_OTHER("arg:".($_))),1..$nargs); - $presentation = Tokens(LaTeXML::Expandable::substituteTokens($presentation,@args)); - $presentation; }#$ -sub getSymmdefProperties { - my $cd = LookupValue('module_cd'); - my $name = LookupValue('module_name'); - my $nargkey = ToString($name).'_args'; - my $nargs = LookupValue($nargkey); - $nargs = 0 unless ($nargs); - my %props = ('cd'=>$cd,'name'=>$name,'nargs'=>$nargs); - return %props;} -DefConstructor('\@use{}', sub{ - my ($document,$args,%properties) = @_; - #Notation created at \@symdef@pres@aux - #Create the rendering: - $document->openElement('omdoc:rendering'); - $document->openElement('ltx:Math'); - $document->openElement('ltx:XMath'); - if ($args->isMath) {$document->absorb($args);} - else { $document->insertElement('ltx:XMText',$args);} - $document->closeElement('ltx:XMath'); - $document->closeElement('ltx:Math'); - $document->closeElement('omdoc:rendering'); -}, -properties=>sub { getSymmdefProperties($_[1]);}, - mode=>'inline_math'); -sub get_cd { - my($name,$cd,$role)=@_; - return $cd;} -DefConstructor('\@symdef@pres@aux{}{}{}{}{} OptionalKeyVals:symdef', sub { - my ($document,$cs,$nargs,$pmml,$name,$cd,$keys)=@_; - my $assocarg = ToString($keys->getValue('assocarg')) if $keys; - $assocarg = $assocarg||"0"; - my $bvars = ToString($keys->getValue('bvars')) if $keys; - $bvars = $bvars||"0"; - my $bvar = ToString($keys->getValue('bvar')) if $keys; - $bvar = $bvar||"0"; - my $appElement = 'om:OMA'; $appElement = 'om:OMBIND' if ($bvars || $bvar); - my $root = $document->getDocument->documentElement; - my $name_str = ToString($name); - my ($notation) = $root->findnodes(".//omdoc:notation[\@name='$name_str' and ". - "preceding-sibling::omdoc:symbol[1]/\@name - = '$name_str']"); - if (!$notation) { - $document->insertElement("omdoc:symbol",undef,(name=>$name,"xml:id"=>$name_str.".sym")); - } - $document->openElement("omdoc:notation",(name=>$name,cd=>$cd)); - #First, generate prototype: - $nargs = ToString($nargs)||0; - $document->openElement('omdoc:prototype'); - $document->openElement($appElement) if $nargs; - my $cr="fun" if $nargs; - $document->insertElement('om:OMS',undef, - (cd=>$cd, - name=>$name, - "cr"=>$cr)); - if ($bvar || $bvars) { - $document->openElement('om:OMBVAR'); - if ($bvar) { - $document->insertElement('omdoc:expr',undef,(name=>"arg$bvar")); - } else { - $document->openElement('omdoc:exprlist',(name=>"args")); - $document->insertElement('omdoc:expr',undef,(name=>"arg")); - $document->closeElement('omdoc:exprlist'); - } - $document->closeElement('om:OMBVAR'); - } - for my $id(1..$nargs) { - next if ($id==$bvars || $id==$bvar); - if ($id!=$assocarg) { - my $argname="arg$id"; - $document->insertElement('omdoc:expr',undef,(name=>"$argname")); - } - else { - $document->openElement('omdoc:exprlist',(name=>"args")); - $document->insertElement('omdoc:expr',undef,(name=>"arg")); - $document->closeElement('omdoc:exprlist'); - } - } - $document->closeElement($appElement) if $nargs; - $document->closeElement('omdoc:prototype'); - #Next, absorb rendering: - $document->absorb($pmml); - $document->closeElement("omdoc:notation"); - }, afterDigest=>sub { my ($stomach, $whatsit) = @_; - my $keys = $whatsit->getArg(6); - my $module = LookupValue('current_module'); - $whatsit->setProperties(for=>ToString($whatsit->getArg(1))); - $whatsit->setProperty(role=>($keys ? $keys->getValue('role') - : (ToString($whatsit->getArg(2)) ? 'applied' - : undef))); }); -sub symdef_presentation_TeX { - my($presentation)=@_; - my @tokens = $presentation->unlist; - my(@frag,@frags) = (); - while(my $tok = shift(@tokens)){ - if($tok->equals(T_PARAM)){ - push(@frags,Invocation(T_CS('\@symdef@pres@text'),Tokens(@frag))) if @frag; - @frag=(); - my $n = shift(@tokens)->getString; - push(@frags,Invocation(T_CS('\@symdef@pres@arg'),T_OTHER($n+1))); } - else { - push(@frag,T_OTHER($tok->getString)); }} # IMPORTANT! Neutralize the tokens! - push(@frags,Invocation(T_CS('\@symdef@pres@text'),Tokens(@frag))) if @frag; - Tokens(map($_->unlist,@frags)); } -DefConstructor('\@symdef@pres@arg{}', "<omdoc:recurse select='#select'/>", - afterDigest=>sub { my ($stomach, $whatsit) = @_; - my $select = $whatsit->getArg(1); - $select = ref $select ? $select->toString : ''; - $whatsit->setProperty(select=>"*[".$select."]"); }); -DefConstructor('\@symdef@pres@text{}', "<omdoc:text>#1</omdoc:text>"); -DefConstructor('\requirepackage{} Semiverbatim',"<omdoc:imports from='#2'/>", - afterDigest=>sub { my ($stomach, $whatsit) = @_; - my $select = $whatsit->getArg(1); - RequirePackage($select->toString); });#$ -DefKeyVal('view','id','Semiverbatim'); -DefEnvironment('{view} OptionalKeyVals:view {}{}', - "<omdoc:theory-inclusion from='#2' to='#3'>" - . "<omdoc:morphism>#body</omdoc:morphism>" - ."</omdoc:theory-inclusion>"); -Tag('omdoc:recurse',afterOpen=>\&numberIt,afterClose=>\&locateIt); -Tag('omdoc:imports',afterOpen=>\&numberIt,afterClose=>\&locateIt); -Tag('omdoc:theory',afterOpen=>\&numberIt,afterClose=>\&locateIt); -1; diff --git a/Master/texmf-dist/tex/latex/stex/omdoc/omdoc.cls b/Master/texmf-dist/tex/latex/stex/omdoc/omdoc.cls index 6cb3c77a74b..76455b2bb4f 100644 --- a/Master/texmf-dist/tex/latex/stex/omdoc/omdoc.cls +++ b/Master/texmf-dist/tex/latex/stex/omdoc/omdoc.cls @@ -7,22 +7,44 @@ %% omdoc.dtx (with options: `cls') %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesClass{omdoc}[2012/01/28 v1.0 OMDoc Documents] -\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}} +\ProvidesClass{omdoc}[2016/04/07 v1.2 OMDoc Documents] \def\omdoc@class{article} -\DeclareOption{report}{\def\omdoc@class{report}\PassOptionsToPackage{\CurrentOption}{omdoc}} -\DeclareOption{book}{\def\omdoc@class{book}\PassOptionsToPackage{\CurrentOption}{omdoc}} -\DeclareOption{chapter}{\PassOptionsToPackage{\CurrentOption}{omdoc}} -\DeclareOption{part}{\PassOptionsToPackage{\CurrentOption}{omdoc}} -\DeclareOption{showignores}{\PassOptionsToPackage{\CurrentOption}{omdoc}} -\DeclareOption{extrefs}{\PassOptionsToPackage{\CurrentOption}{sref}} -\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} +\DeclareOption{report}{\def\omdoc@class{report}% + \PassOptionsToPackage{\CurrentOption}{omdoc} + \PassOptionsToPackage{\CurrentOption}{stex}} +\newif\ifclass@book\class@bookfalse +\DeclareOption{book}{\def\omdoc@class{book}\class@booktrue% + \PassOptionsToPackage{\CurrentOption}{omdoc} + \PassOptionsToPackage{\CurrentOption}{stex}} +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\omdoc@class} + \PassOptionsToPackage{\CurrentOption}{omdoc} + \PassOptionsToPackage{\CurrentOption}{stex}} \ProcessOptions \LoadClass{\omdoc@class} +\RequirePackage{etoolbox} \RequirePackage{omdoc} +\RequirePackage{stex} +\srefaddidkey{document} +\newcommand\documentkeys[1]{\metasetkeys{document}{#1}} \let\orig@document=\document \srefaddidkey{document} \renewcommand{\document}[1][]{\metasetkeys{document}{#1}\orig@document} +\ifclass@book +\renewenvironment{frontmatter} +{\@frontmattertrue\cleardoublepage\@mainmatterfalse\pagenumbering{roman}} +{\@frontmatterfalse\setcounter{page}{1}\pagenumbering{arabic}} +\else +\newenvironment{frontmatter} +{\@frontmattertrue\pagenumbering{roman}} +{\@frontmatterfalse\setcounter{page}{1}\pagenumbering{arabic}} +\fi +\ifclass@book +\renewenvironment{backmatter} +{\cleardoublepage\@mainmatterfalse\@backmattertrue} +{\@backmatterfalse} +\else +\newenvironment{backmatter}{\@backmattertrue}{\@backmatterfalse} +\fi \endinput %% %% End of file `omdoc.cls'. diff --git a/Master/texmf-dist/tex/latex/stex/omdoc/omdoc.cls.ltxml b/Master/texmf-dist/tex/latex/stex/omdoc/omdoc.cls.ltxml deleted file mode 100644 index 56d43b7138e..00000000000 --- a/Master/texmf-dist/tex/latex/stex/omdoc/omdoc.cls.ltxml +++ /dev/null @@ -1,58 +0,0 @@ -# -*- CPERL -*- -package LaTeXML::Package::Pool; -use strict; -use LaTeXML::Package; -use LaTeXML::Util::Pathname; -use Cwd qw(cwd abs_path); -DeclareOption('report',sub {PassOptions('omdoc','sty',ToString(Digest(T_CS('\CurrentOption')))); }); -DeclareOption('book',sub {PassOptions('omdoc','sty',ToString(Digest(T_CS('\CurrentOption')))); }); -DeclareOption('chapter',sub {PassOptions('omdoc','sty',ToString(Digest(T_CS('\CurrentOption')))); }); -DeclareOption('part',sub {PassOptions('omdoc','sty',ToString(Digest(T_CS('\CurrentOption')))); }); -DeclareOption('showignores',sub {PassOptions('omdoc','sty',ToString(Digest(T_CS('\CurrentOption')))); }); -DeclareOption('extrefs',sub {PassOptions('sref','sty',ToString(Digest(T_CS('\CurrentOption')))); }); -DeclareOption(undef,sub {PassOptions('article','cls',ToString(Digest(T_CS('\CurrentOption')))); }); -ProcessOptions(); -LoadClass('article'); -RequirePackage('sref'); -RegisterNamespace('omdoc'=>"http://omdoc.org/ns"); -RegisterNamespace('om'=>"http://www.openmath.org/OpenMath"); -RegisterNamespace('m'=>"http://www.w3.org/1998/Math/MathML"); -RegisterNamespace('dc'=>"http://purl.org/dc/elements/1.1/"); -RegisterNamespace('cc'=>"http://creativecommons.org/ns"); -RegisterNamespace('stex'=>"http://kwarc.info/ns/sTeX"); -RegisterNamespace('ltx'=>"http://dlmf.nist.gov/LaTeXML"); -RelaxNGSchema('omdoc+ltxml', - '#default'=>"http://omdoc.org/ns", - 'om'=>"http://www.openmath.org/OpenMath", - 'm'=>"http://www.w3.org/1998/Math/MathML", - 'dc'=>"http://purl.org/dc/elements/1.1/", - 'cc'=>"http://creativecommons.org/ns", - 'stex'=>"http://kwarc.info/ns/sTeX", - 'ltx'=>"http://dlmf.nist.gov/LaTeXML"); -RequirePackage('omdoc'); -sub xmlBase { - my $baseuri = LookupValue('baseuri'); - my $baselocal = LookupValue('baselocal'); - my $cdir = abs_path(cwd()); - $cdir =~ s/^$baselocal// if $baselocal; - #DG: Make this more robust! - my ($d,$f,$t); - my $srcf = LookupValue('SOURCEFILE'); - if ( $srcf =~ /^(\w+):\/\//) { - $srcf =~ s/^(\w+):\///; - } # TODO: Hacky, do something better - ($d, $f,$t) = pathname_split(LookupValue('SOURCEFILE')); - $t = '' if LookupValue('cooluri'); - Tokenize($baseuri.$cdir.'/'.$f.$t); } -DefEnvironment('{document} OptionalKeyVals:omdoc', - "<omdoc:omdoc " - . "?&KeyVal(#1,'id')(xml:id='&KeyVal(#1,'id')')" - . "(?&Tokenize(&LookupValue('SOURCEBASE'))" - . "(xml:id='&Tokenize(&LookupValue('SOURCEBASE')).omdoc')()) " - . "?&Tokenize(&LookupValue('baseuri'))" - . "(xml:base='&xmlBase()')()>" - . "#body" - ."</omdoc:omdoc>", - beforeDigest=> sub { AssignValue(inPreamble=>0); }, - afterDigest=> sub { $_[0]->getGullet->flush; return; });#$ -1; diff --git a/Master/texmf-dist/tex/latex/stex/omdoc/omdoc.sty b/Master/texmf-dist/tex/latex/stex/omdoc/omdoc.sty index 54f275d7c46..8cde99fa719 100644 --- a/Master/texmf-dist/tex/latex/stex/omdoc/omdoc.sty +++ b/Master/texmf-dist/tex/latex/stex/omdoc/omdoc.sty @@ -7,51 +7,87 @@ %% omdoc.dtx (with options: `package') %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesPackage{omdoc}[2012/01/28 v1.0 OMDoc document Structure] -\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}} -\newif\if@chapter\@chapterfalse -\newif\if@part\@partfalse -\newcount\section@level\section@level=3 +\ProvidesPackage{omdoc}[2016/04/07 v1.2 OMDoc document Structure] \newif\ifshow@ignores\show@ignoresfalse -\def\omdoc@class{article} -\DeclareOption{report}{\def\omdoc@class{report}\section@level=2} -\DeclareOption{book}{\def\omdoc@class{book}\section@level=1} -\DeclareOption{chapter}{\section@level=2\@chaptertrue} -\DeclareOption{part}{\section@level=1\@chaptertrue\@parttrue} \DeclareOption{showignores}{\show@ignorestrue} -\DeclareOption{extrefs}{\PassOptionsToPackage{\CurrentOption}{sref}} +\newcount\section@level\section@level=2 +\DeclareOption{report}{\section@level=0} +\DeclareOption{book}{\section@level=0} +\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{sref}} \ProcessOptions \RequirePackage{sref} \RequirePackage{xspace} \RequirePackage{comment} -\def\level@section#1{\ifcase#1\or{part}\or{chapter}\or{section}\or{subsection}\or{subsubsection}\or{paragraph}\or{subparagraph}\fi} -\def\Level@Section#1{\ifcase#1\or{Part}\or{Chapter}\or{Section}\or{Subsection}\or{Subsubsection}\or{Paragraph}\or{Subparagraph}\fi} -\def\in@level@section#1{\ifcase#1\or{this document}\or{part}\or{chapter}\or{section}\or{subsection}\or{subsubsection}\or{paragraph}\or{subparagraph}\fi} -\def\In@Level@Section#1{\ifcase#1\or{This document}\or{Part}\or{Chapter}\or{Section}\or{Subsection}\or{Subsubsection}\or{Paragraph}\or{Subparagraph}\fi} -\def\currentsectionlevel{\in@level@section\section@level\xspace} -\def\CurrentSectionLevel{\In@Level@Section\section@level\xspace} +\RequirePackage{pathsuris} +\def\current@section@level{document}% +\newcommand\currentsectionlevel{\lowercase\expandafter{\current@section@level}\xspace}% +\newcommand\Currentsectionlevel{\expandafter\MakeUppercase\current@section@level\xspace}% +\newcommand\at@begin@blindomgroup[1]{} +\newenvironment{blindomgroup} +{\advance\section@level by 1\at@begin@blindomgroup\setion@level} +{\advance\section@level by -1} +\newcommand\omgroup@nonum[2]{% +\ifx\hyper@anchor\@undefined\else\phantomsection\fi% +\addcontentsline{toc}{#1}{#2}\@nameuse{#1}*{#2}} +\newcommand\omgroup@num[2]{% +\sref@label@id{\omdoc@sect@name~\@nameuse{the#1}}% +\ifx\omgroup@short\@empty\@nameuse{#1}{#2}% +\else\@ifundefined{rdfmeta@sectioning}{\@nameuse{#1}[\omgroup@short]{#2}}% +{\@nameuse{rdfmeta@#1@old}[\omgroup@short]{#2}}% +\fi} +\def\@true{true} +\def\@false{false} \srefaddidkey{omgroup} -\addmetakey{omgroup}{creators} \addmetakey{omgroup}{date} +\addmetakey{omgroup}{creators} \addmetakey{omgroup}{contributors} +\addmetakey{omgroup}{srccite} \addmetakey{omgroup}{type} \addmetakey*{omgroup}{short} \addmetakey*{omgroup}{display} -\def\at@begin@omgroup#1{} +\addmetakey[false]{omgroup}{loadmodules}[true] +\newif\if@@num\@@numtrue +\newif\if@frontmatter\@frontmatterfalse +\newif\if@backmatter\@backmatterfalse +\newcommand\at@begin@omgroup[3][]{} +\addmetakey{omdoc@sect}{name} +\addmetakey[false]{omdoc@sect}{clear}[true] +\addmetakey{omdoc@sect}{ref} +\addmetakey[false]{omdoc@sect}{num}[true] +\newcommand\omdoc@sectioning[3][]{\metasetkeys{omdoc@sect}{#1}% +\ifx\omdoc@sect@clear\@true\cleardoublepage\fi% +\if@@num% numbering not overridden by frontmatter, etc. +\ifx\omdoc@sect@num\@true\omgroup@num{#2}{#3}\else\omgroup@nonum{#2}{#3}\fi% +\def\current@section@level{\omdoc@sect@name}% +\else\omgroup@nonum{#2}{#3}\fi} +\newcommand\omgroup@redefine@addtocontents[1]{\edef\@@import{#1}% +\@for\@I:=\@@import\do{\edef\@path{\csname module@\@I @path\endcsname}% +\@ifundefined{tf@toc}\relax{\protected@write\tf@toc{}{\string\@requiremodules{\@path}{sms}}}} +\ifx\hyper@anchor\@undefined% hyperref.sty loaded? +\def\addcontentsline##1##2##3{% +\addtocontents{##1}{\protect\contentsline{##2}{\string\withusedmodules{#1}{##3}}{\thepage}}} +\else\def\addcontentsline##1##2##3{% +\addtocontents{##1}{\protect\contentsline{##2}{\string\withusedmodules{#1}{##3}}{\thepage}{\@currentHref}}}% +\fi}% hypreref.sty loaded? \newenvironment{omgroup}[2][]% keys, title {\metasetkeys{omgroup}{#1}\sref@target% -\ifx\omgroup@display\st@flow\noindent{\Large\textbf{#2}\\[.3ex]\noindent\ignorespaces}% -\else% -\if@part\ifnum\section@level=1\part{#2}\sref@label@id{Part \thepart}\fi\fi% -\if@chapter\ifnum\section@level=2\chapter{#2}\sref@label@id{Chapter \thechapter}\fi\fi% -\ifnum\section@level=3\section{#2}\sref@label@id{Section \thesection}\fi% -\ifnum\section@level=4\subsection{#2}\sref@label@id{Subsection \thesubsection}\fi% -\ifnum\section@level=5\subsubsection{#2}\sref@label@id{Subsubsection \thesubsubsection}\fi% -\ifnum\section@level=6\paragraph{#2}\sref@label@id{this paragraph}\fi% -\ifnum\section@level=7\subparagraph{#2}\sref@label@id{this subparagraph}\fi% -\at@begin@omgroup\section@level% for customization -\advance\section@level by 1% -\fi}{\advance\section@level by -1} +\ifx\omgroup@display\st@flow\@@numfalse\fi +\if@frontmatter\@@numfalse\fi +\ifx\omgroup@loadmodules\@true% +\omgroup@redefine@addtocontents{\@ifundefined{mod@id}\used@modules% +{\@ifundefined{module@\mod@id @path}{\used@modules}\mod@id}}\fi% +\advance\section@level by 1 +\ifcase\section@level% +\or\omdoc@sectioning[name=Part,clear,num]{part}{#2}% +\or\omdoc@sectioning[name=Chapter,clear,num]{chapter}{#2}% +\or\omdoc@sectioning[name=Section,num]{section}{#2}% +\or\omdoc@sectioning[name=Subsection,num]{subsection}{#2}% +\or\omdoc@sectioning[name=Subsubsection,num]{subsubsection}{#2}% +\or\omdoc@sectioning[name=Paragraph,ref=this paragraph]{paragraph}{#2}% +\or\omdoc@sectioning[name=Subparagraph,ref=this subparagraph]{paragraph}{#2}% +\fi% \ifcase +\at@begin@omgroup[#1]\section@level{#2}}% for customization +{\advance\section@level by -1} \providecommand\printindex{\IfFileExists{\jobname.ind}{\input{\jobname.ind}}{}} \ifshow@ignores \addmetakey{ignore}{type} @@ -60,11 +96,15 @@ {\metasetkeys{ignore}{#1}\textless\ignore@type\textgreater\bgroup\itshape} {\egroup\textless/\ignore@type\textgreater} \renewenvironment{ignore}{}{}\else\excludecomment{ignore}\fi +\providecommand{\lxDocumentID}[1]{}% +\def\LXMID#1#2{\expandafter\gdef\csname xmarg#1\endcsname{#2}\csname xmarg#1\endcsname} +\def\LXMRef#1{\csname xmarg#1\endcsname} + \long\def\STRlabel#1#2{\STRlabeldef{#1}{#2}{#2}} -\def\STRcopy#1{\expandafter\ifx\csname STR@#1\endcsname\relax -\message{STR warning: reference #1 undefined!} -\else\csname STR@#1\endcsname\fi} -\newcommand{\STRsemantics}[3][]{#2\def\@test{#1}\ifx\@test\@empty\STRlabeldef{#1}{#2}\fi} +\newcommand\STRcopy[2][]{\expandafter\ifx\csname STR@#2\endcsname\relax +\message{STR warning: reference #2 undefined!} +\else\csname STR@#2\endcsname\fi} +\newcommand\STRsemantics[3][]{#2\def\@test{#1}\ifx\@test\@empty\STRlabeldef{#1}{#2}\fi} \def\STRlabeldef#1{\expandafter\gdef\csname STR@#1\endcsname} \def\black#1{\textcolor{black}{#1}} \def\gray#1{\textcolor{gray}{#1}} @@ -76,10 +116,6 @@ \def\brown#1{\textcolor{brown}{#1}} \def\yellow#1{\textcolor{yellow}{#1}} \def\orange#1{\textcolor{orange}{#1}} -\newcommand\hateq{\ensuremath{\hat=}\xspace} -\newcommand\hatequiv{\ensuremath{\hat\equiv}\xspace} -\newcommand\textleadsto{\ensuremath{\leadsto}\xspace} -\newcommand{\baseURI}[2][]{} \endinput %% %% End of file `omdoc.sty'. diff --git a/Master/texmf-dist/tex/latex/stex/omdoc/omdoc.sty.ltxml b/Master/texmf-dist/tex/latex/stex/omdoc/omdoc.sty.ltxml deleted file mode 100644 index 207a53b6f2b..00000000000 --- a/Master/texmf-dist/tex/latex/stex/omdoc/omdoc.sty.ltxml +++ /dev/null @@ -1,67 +0,0 @@ -package LaTeXML::Package::Pool; -use strict; -use LaTeXML::Package; -use Cwd qw(cwd abs_path); -DeclareOption('report',''); -DeclareOption('book',''); -DeclareOption('chapter',''); -DeclareOption('part',''); -DeclareOption('showignores',''); -DeclareOption('extrefs',''); -RequirePackage('sref'); -RequirePackage('xspace'); -RequirePackage('omtext'); -DefEnvironment('{omgroup} OptionalKeyVals:omgroup {}', - "<omdoc:omgroup layout='sectioning'" - . "?&KeyVal(#1,'id')(xml:id='&KeyVal(#1,'id')')()" - . "?&KeyVal(#1,'type')(type='&KeyVal(#1,'type')')()>\n" - . "<dc:title>#2</dc:title>\n" - . "#body\n" - . "</omdoc:omgroup>"); -DefConstructor('\printindex','<omdoc:index/>'); -DefConstructor('\tableofcontents',"<omdoc:tableofcontents level='&ToString(&CounterValue('tocdepth'))'/>"); -DefConstructor('\bibliography{}',"<omdoc:bibliography files='#1'/>"); -DefKeyVal('ignore','type','Semiverbatim'); -DefKeyVal('ignore','comment','Semiverbatim'); -DefEnvironment('{ignore} OptionalKeyVals:ignore', - "<omdoc:ignore %&KeyVals(#1)>#body</omdoc:ignore>"); -DefConstructor('\STRlabel{}{}', sub { - my($document,$label,$object)=@_; - $document->absorb($object); - $document->addAttribute('xml:id'=>ToString($label)) if $label; }); -DefConstructor('\STRcopy{}',"<omdoc:ref xref='##1'/>"); -DefConstructor('\STRsemantics[]{}{}', sub { - my($document,$label,$ignore,$object)=@_; - $document->absorb($object); - $document->addAttribute('xml:id'=>ToString($label)) if $label; }); -DefMacro('\STRlabeldef{}{}', ""); -sub omdocColorMacro { - my ($color, @args) = @_; - my $tok_color = TokenizeInternal($color); - (T_BEGIN, T_CS('\@omdoc@color'), T_BEGIN, $tok_color->unlist, - T_END, T_CS('\@omdoc@color@content'), T_OTHER('['), $tok_color->unlist, T_OTHER(']'), - T_BEGIN, $args[1]->unlist, T_END, T_END); } -DefMacro('\@omdoc@color{}', sub { MergeFont(color=>$_[1]->toString); return; });#$ -DefConstructor('\@omdoc@color@content[]{}', - "?#isMath(#2)(<ltx:text ?#1(style='color:#1')()>#2</ltx:text>)"); -foreach my $color(qw(black gray blue red green cyan magenta brown yellow orange)) { - DefMacro("\\".$color.'{}', sub { omdocColorMacro($color, @_); }); }#$ -DefConstructor('\newpage',''); -Tag('omdoc:ignore',afterOpen=>\&numberIt,afterClose=>\&locateIt); -Tag('omdoc:ref',afterOpen=>\&numberIt,afterClose=>\&locateIt); -DefConstructor('\hateq',"\x{2259}"); -DefConstructor('\hatequiv',"\x{2A6F}"); -DefConstructor('\textleadsto',"\x{219D}"); -DefMacro('\baseURI []Semiverbatim', sub { - if (LookupValue('SOURCEFILE')!~/^(\w+):\/\//) { - my $baselocal = ToString(Expand($_[1])); - $baselocal = abs_path($baselocal) unless $baselocal=~/^(\w+):\/\//; - AssignValue('baselocal'=>$baselocal); - AssignValue('baseuri'=>ToString(Expand($_[2])));} - else { - AssignValue('baselocal'=>undef); - AssignValue('baseuri'=>ToString(Expand($_[2]))); - }}); -DefConstructor('\url Semiverbatim',"<omdoc:link href='#1'>#1</omdoc:link>"); -DefConstructor('\href Semiverbatim {}',"<omdoc:link href='#1'>#2</omdoc:link>"); -1; diff --git a/Master/texmf-dist/tex/latex/stex/omtext/omtext.sty b/Master/texmf-dist/tex/latex/stex/omtext/omtext.sty index d57be46a147..1215638aeb9 100644 --- a/Master/texmf-dist/tex/latex/stex/omtext/omtext.sty +++ b/Master/texmf-dist/tex/latex/stex/omtext/omtext.sty @@ -7,14 +7,21 @@ %% omtext.dtx (with options: `package') %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesPackage{omtext}[2012/01/28 v1.0 OMDoc Text Fragments] -\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}} +\ProvidesPackage{omtext}[2016/04/06 v1.1 OMDoc Text Fragments] +\newif\if@omtext@mh@\@omtext@mh@false +\DeclareOption{mh}{\@omtext@mh@true +\PassOptionsToPackage{\CurrentOption}{modules}} \newif\ifindex\indextrue \DeclareOption{noindex}{\indexfalse} +\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{modules}} \ProcessOptions \ifindex\makeindex\fi -\RequirePackage{sref} +\if@omtext@mh@\RequirePackage{omtext-mh}\fi +\RequirePackage{xspace} +\RequirePackage{modules} \RequirePackage{comment} +\RequirePackage{mdframed} +\RequirePackage{latexsym} \srefaddidkey{omtext} \addmetakey[]{omtext}{functions} \addmetakey*{omtext}{display} @@ -27,28 +34,46 @@ \addmetakey{omtext}{continues} \addmetakey{omtext}{verbalizes} \addmetakey{omtext}{subject} +\define@key{omtext}{require}{\requiremodules{#1}{sms}} +\define@key{omtext}{module}{\message{module: #1}\importmodule{#1}\def\omtext@theory{#1}} \def\st@flow{flow} +\newif\if@in@omtext\@in@omtextfalse \def\omtext@pre@skip{\smallskip} \def\omtext@post@skip{} \providecommand{\stDMemph}[1]{\textbf{#1}} -\newenvironment{omtext}[1][]{\bgroup\metasetkeys{omtext}{#1}\sref@label@id{this paragraph}% -\def\lec##1{\@lec{##1}} +\newenvironment{omtext}[1][]{\@in@omtexttrue% +\bgroup\metasetkeys{omtext}{#1}\sref@label@id{this paragraph}% +\def\lec##1{\@lec{##1}}% \ifx\omtext@display\st@flow\else\omtext@pre@skip\par\noindent% -\ifx\omtext@title\@empty\else\stDMemph{\omtext@title}: \fi\fi\ignorespaces} -{\egroup\omtext@post@skip} +\ifx\omtext@title\@empty% +\ifx\omtext@start\@empty\else\stDMemph{\omtext@start}\xspace\fi% +\else\stDMemph{\omtext@title}:\xspace% +\ifx\omtext@start\@empty\else\omtext@start\xspace\fi% +\fi% omtext@title empty +\fi% omtext@display=flow +\ignorespaces} +{\egroup\omtext@post@skip\@in@omtextfalse} \srefaddidkey{phrase} \addmetakey{phrase}{style} \addmetakey{phrase}{class} \addmetakey{phrase}{index} \addmetakey{phrase}{verbalizes} \addmetakey{phrase}{type} -\newenvironment{phrase}[1][]{\metasetkeys{phrase}{#1}}{} -\def\nlex#1{\green{\sl{#1}}} -\def\nlcex#1{*\green{\sl{#1}}} +\addmetakey{phrase}{only} +\newcommand\phrase[2][]{\metasetkeys{phrase}{#1}% +\ifx\prhase@only\@empty\only<\phrase@only>{#2}\else #2\fi} +\providecommand\textsubscript[1]{\ensuremath{_{#1}}} +\newcommand\corefs[2]{#1\textsubscript{#2}} +\newcommand\coreft[2]{#1\textsuperscript{#2}} +\newcommand\nlex[1]{\green{\sl{#1}}} +\newcommand\nlcex[1]{*\green{\sl{#1}}} \def\@sinlinequote#1{``{\sl{#1}}''} \def\@@sinlinequote#1#2{\@sinlinequote{#2}~#1} -\newcommand{\sinlinequote}[2][] +\newcommand\sinlinequote[2][] {\def\@opt{#1}\ifx\@opt\@empty\@sinlinequote{#2}\else\@@sinlinequote\@opt{#2}\fi} +\newcommand\vdec[1]{#1} +\newcommand\vids[2][]{#2} +\newcommand\vrest[2][]{#2} \def\begin@sblockquote{\begin{quote}\sl} \def\end@sblockquote{\end{quote}} \def\begin@@sblockquote#1{\begin@sblockquote} @@ -56,41 +81,66 @@ \newenvironment{sblockquote}[1][] {\def\@opt{#1}\ifx\@opt\@empty\begin@sblockquote\else\begin@@sblockquote\@opt\fi} {\ifx\@opt\@empty\end@sblockquote\else\end@@sblockquote\@opt\fi} +\newenvironment{sboxquote}[1][] +{\def\@@src{#1}\begin{mdframed}[leftmargin=.5cm,rightmargin=.5cm]} +{\@lec{\rm\@@src}\end{mdframed}} \providecommand{\@@lec}[1]{(#1)} -\def\@lec#1{\strut\hfil\strut\null\nobreak\hfill\hbox{\@@lec{#1}}} +\def\@lec#1{\strut\hfil\strut\null\nobreak\hfill\@@lec{#1}} \def\lec#1{\@lec{#1}\par} \newcommand\mygraphics[2][]{\includegraphics[#1]{#2}} -\newcommand\mycgraphics[2][]{\begin{center}\includegraphics[#1]{#2}\end{center}} -\newcommand\mybgraphics[2][]{\fbox{\includegraphics[#1]{#2}\end{center}}} -\newcommand{\omdoc@index}[2][]{\ifindex\def\@test{#1}%% -\ifx\@test\@empty\def\@@idx{#2}\else\def\@@idx{#1}\fi% -\@ifundefined{mod@id}{\index{\@@idx @#2}}% -{\index{\@@idx @{\importmodule{\mod@id} #2}}\fi}} -\newcommand{\indexalt}[3][]{{#2}\omdoc@index[#1]{#3}} % word in text and index -\newcommand{\indextoo}[2][]{{#2}\omdoc@index[#1]{#2}} % word in text and index -\newcommand{\@twin}[3][]{\ifindex\def\@test{#1}%% -\ifx\@test\@empty\def\@@idx{#2}\else\def\@@idx{#1}\fi% -\@ifundefined{mod@id} -{\index{\@@idx @#2!#3}% -\ifx\@test\@empty\def\@@idx{#3}\else\def\@@idx{#1}\fi% -\index{\@@idx @#2!#3}}% -{\index{\@@idx @{\importmodule{\mod@id} #2}!{\importmodule{\mod@id} #3}}% -\ifx\@test\@empty\def\@@idx{#3}\else\def\@@idx{#1}\fi% -\index{\@@idx @{\importmodule{\mod@id} #3}!{\importmodule{\mod@id} #2}}\fi}} -\newcommand{\twinalt}[4][]{#2\@twin[#1]{#3}{#4}} -\newcommand{\twintoo}[3][]{{#2 #3}\@twin[#1]{#2}{#3}} % and use the word compound too -\newcommand{\@atwin}[4][]{\ifindex\def\@test{#1}%% -\ifx\@test\@empty\def\@@idx{#2}\else\def\@@idx{#1}\fi% -\@ifundefined{mod@id}% -{\index{\@@idx @#2!#3!#4}% -\ifx\@test\@empty\def\@@idx{#3}\else\def\@@idx{#1}\fi -\index{\@@idx @#3!#2 (#4)}}% -{\index{\@@idx @{\importmodule{\mod@id} #2}!{\importmodule{\mod@id} #3}!{\importmodule{\mod@id} #4}} -\ifx\@test\@empty\def\@@idx{#3}\else\def\@@idx{#1}\fi% -\index{\@@idx @{\importmodule{\mod@id} #3}!{\importmodule{\mod@id} #2} ({\importmodule{\mod@id} #4})}\fi}} -\newcommand{\atwinalt}[5][]{#2\@atwin[#1]{#3}{#4}{#4}} -\newcommand{\atwintoo}[4][]{{#2 #3 #4}\@atwin[#1]{#2}{#3}{#4}} % and use it too -\def\omspace#1{\hspace*{#1}} +\newcommand\mycgraphics[2][]{\begin{center}\mygraphics[#1]{#2}\end{center}} +\newcommand\mybgraphics[2][]{\fbox{\mygraphics[#1]{#2}}} +\newcommand\mycbgraphics[2][]{\begin{center}\fbox{\mygraphics[#1]{#2}}\end{center}} +\addmetakey{omdoc@index}{at} +\addmetakey[false]{omdoc@index}{loadmodules}[true] +\newcommand\omdoc@indexi[2][]{\ifindex% +\metasetkeys{omdoc@index}{#1}% +\@bsphack\begingroup\@sanitize% +\protected@write\@indexfile{}{\string\indexentry% +{\ifx\omdoc@index@at\@empty\else\omdoc@index@at @\fi% +\ifx\omdoc@index@loadmodules\@true% +\string\withusedmodules{\@ifundefined{mod@id}\used@modules\mod@id}{#2}% +\else #2\fi% loadmodules +}{\thepage}}% +\endgroup\@esphack\fi}%ifindex +\newcommand\omdoc@indexii[3][]{\ifindex% +\metasetkeys{omdoc@index}{#1}% +\@bsphack\begingroup\@sanitize% +\protected@write\@indexfile{}{\string\indexentry% +{\ifx\omdoc@index@at\@empty\else\omdoc@index@at @\fi% +\ifx\omdoc@index@loadmodules\@true% +\string\withusedmodules{\@ifundefined{mod@id}\used@modules\mod@id}{#2}!% +\string\withusedmodules{\@ifundefined{mod@id}\used@modules\mod@id}{#3}% +\else #2!#3\fi% loadmodules +}{\thepage}}% +\endgroup\@esphack\fi}%ifindex +\newcommand\omdoc@indexiii[4][]{\ifindex% +\metasetkeys{omdoc@index}{#1}% +\@bsphack\begingroup\@sanitize% +\protected@write\@indexfile{}{\string\indexentry% +{\ifx\omdoc@index@at\@empty\else\omdoc@index@at @\fi% +\ifx\omdoc@index@loadmodules\@true% +\string\withusedmodules{\@ifundefined{mod@id}\used@modules\mod@id}{#2}!% +\string\withusedmodules{\@ifundefined{mod@id}\used@modules\mod@id}{#3}!% +\string\withusedmodules{\@ifundefined{mod@id}\used@modules\mod@id}{#4}% +\else #2!#3\fi% loadmodules +}{\thepage}}% +\endgroup\@esphack\fi}%ifindex +\newcommand\indexalt[3][]{{#2}\omdoc@indexi[#1]{#3}} % word in text and index +\newcommand\indextoo[2][]{{#2}\omdoc@indexi[#1]{#2}} % word in text and index +\newcommand\@twin[3][]{\omdoc@indexii[#1]{#2}{#3}\omdoc@indexii[#1]{#3}{#2}} +\newcommand\twinalt[4][]{#2\@twin[#1]{#3}{#4}} +\newcommand\twintoo[3][]{{#2 #3}\@twin[#1]{#2}{#3}} % and use the word compound too +\newcommand\@atwin[4][]{\omdoc@indexiii[#1]{#2}{#3}{#4}\omdoc@indexii[#1]{#3}{#2 (#4)}} +\newcommand\atwinalt[5][]{#2\@atwin[#1]{#3}{#4}{#4}} +\newcommand\atwintoo[4][]{{#2 #3 #4}\@atwin[#1]{#2}{#3}{#4}} % and use it too +\newcommand\hateq{\ensuremath{\hat=}\xspace} +\newcommand\hatequiv{\ensuremath{\hat\equiv}\xspace} +\@ifundefined{ergo}% +{\newcommand\ergo{\ensuremath{\leadsto}\xspace}}% +{\renewcommand\ergo{\ensuremath{\leadsto}\xspace}}% +\newcommand{\reflect@squig}[2]{\reflectbox{$\m@th#1\rightsquigarrow$}}% +\newcommand\ogre{\ensuremath{\mathrel{\mathpalette\reflect@squig\relax}}\xspace}% \endinput %% %% End of file `omtext.sty'. diff --git a/Master/texmf-dist/tex/latex/stex/omtext/omtext.sty.ltxml b/Master/texmf-dist/tex/latex/stex/omtext/omtext.sty.ltxml deleted file mode 100644 index 7d781b74e53..00000000000 --- a/Master/texmf-dist/tex/latex/stex/omtext/omtext.sty.ltxml +++ /dev/null @@ -1,223 +0,0 @@ -package LaTeXML::Package::Pool; -use strict; -use LaTeXML::Package; -use Cwd qw(cwd abs_path); -DeclareOption('noindex',''); -RequirePackage('sref'); -Tag('omdoc:metadata',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1,autoOpen=>1); -sub declareFunctions{ - my ($stomach,$whatsit) = @_; - my $keyval = $whatsit->getArg(1); - my $funval = KeyVal($keyval,'functions') if KeyVal($keyval,'functions'); - my @funsymbs = ParseKeyValList($funval); - #Unread the function declarations at the Gullet - foreach (@funsymbs) { - $stomach->getGullet->unread(Tokenize('\lxDeclare[role=FUNCTION]{$'.$_.'$}')->unlist); - } - return; -} -Tag('omdoc:CMP', afterOpen => sub {AssignValue('_LastSeenCMP', $_[1], 'global');return;});#$ -DefParameterType('IfBeginFollows', sub { - my ($gullet) = @_; - $gullet->skipSpaces; - my $next = $gullet->readToken; - $gullet->unread($next); - $next = ToString($next); - #Hm, falling back to regexp handling, the $gullet->ifNext approach didn't work properly - return 1 unless ($next=~/^\\begin/); - return; - }, - reversion=>'', optional=>1); -DefKeyVal('omtext','functions','Undigested'); -DefKeyVal('omtext','display','Semiverbatim'); -DefKeyVal('omtext','for','Semiverbatim'); -DefKeyVal('omtext','from','Semiverbatim'); -DefKeyVal('omtext','type','Semiverbatim'); -DefKeyVal('omtext','title','Plain'); #Math mode in titles. -DefKeyVal('omtext','start','Plain'); #Math mode in start phrases -DefKeyVal('omtext','theory','Semiverbatim'); -DefKeyVal('omtext','continues','Semiverbatim'); -DefKeyVal('omtext','verbalizes','Semiverbatim'); -DefEnvironment('{omtext} OptionalKeyVals:omtext', - "<omdoc:omtext " - . "?&KeyVal(#1,'id')(xml:id='&KeyVal(#1,'id')')() " - . "?&KeyVal(#1,'type')(type='&KeyVal(#1,'type')')() " - . "?&KeyVal(#1,'for')(for='&KeyVal(#1,'for')')() " - . "?&KeyVal(#1,'from')(from='&KeyVal(#1,'from')')()>" - . "?&KeyVal(#1,'title')(<dc:title>&KeyVal(#1,'title')</dc:title>)()" - . "<omdoc:CMP>" - . "?&KeyVal(#1,'start')(<ltx:text class='startemph'>&KeyVal(#1,'start')</ltx:text>)()" - . "#body" - ."</omdoc:omtext>"); -sub DefCMPEnvironment { - my ($proto, $replacement, %options) = @_; - my @before = $options{beforeDigest} ? ($options{beforeDigest}) : (); - push(@before, \&useCMPItemizations); - $options{beforeDigest} = \@before; - my @after = $options{afterDigestBegin} ? ($options{afterDigestBegin}) : (); - push(@after, \&declareFunctions); - $options{afterDigestBegin} = \@after; - DefEnvironment($proto, $replacement, %options); -} -sub DefCMPConstructor { - my ($proto, $replacement, %options) = @_; - my @before = $options{beforeDigest} ? ($options{beforeDigest}) : (); - push(@before, \&useCMPItemizations); - $options{beforeDigest} = \@before; - DefConstructor($proto, $replacement, %options); -}#$ -DefKeyVal('phrase','id','Semiverbatim'); -DefKeyVal('phrase','style','Semiverbatim'); -DefKeyVal('phrase','class','Semiverbatim'); -DefKeyVal('phrase','index','Semiverbatim'); -DefKeyVal('phrase','verbalizes','Semiverbatim'); -DefKeyVal('phrase','type','Semiverbatim'); -DefConstructor('\phrase OptionalKeyVals:phrase {}', - "<ltx:text %&KeyVals(#1)>#2</ltx:text>"); -DefConstructor('\nlex{}', - "<ltx:text class='nlex'>#1</ltx:text>"); -DefConstructor('\nlcex{}', - "<ltx:text type='nlcex'>#1</ltx:text>"); -DefConstructor('\sinlinequote [] {}', - "<ltx:quote type='inlinequote'>" - . "?#1(<dc:source>#1</dc:source>\n)()" - . "#2" - . "</ltx:quote>"); -DefEnvironment('{sblockquote} []', - "?#1(<omdoc:omtext type='quote'>" - . "<dc:source>#1</dc:source>" - . "#body" - . " </omdoc:omtext>)" - . "(<ltx:quote>#body</ltx:quote>)"); -DefConstructor('\lec{}', - "\n<omdoc:note type='line-end-comment'>#1</omdoc:note>"); -RawTeX(' -\newcommand\mygraphics[2][]{\includegraphics[#1]{#2}} -\newcommand\mycgraphics[2][]{\begin{center}\includegraphics[#1]{#2}\end{center}} -\newcommand\mybgraphics[2][]{\fbox{\includegraphics[#1]{#2}\end{center}}} -'); -DefConstructor('\indextoo[]{}', - "<omdoc:idx>" - . "<omdoc:idt>#2</omdoc:idt>" - . "<omdoc:ide ?#1(sort-by='#1')()>" - . "<omdoc:idp>#2</omdoc:idp>" - . "</omdoc:ide>" - ."</omdoc:idx>"); -DefConstructor('\indexalt[]{}{}', - "<omdoc:idx>" - . "<omdoc:idt>#2</omdoc:idt>" - . "<omdoc:ide ?#1(sort-by='#1')()>" - . "<omdoc:idp>#3</omdoc:idp>" - . "</omdoc:ide>" - ."</omdoc:idx>"); -DefConstructor('\twintoo[]{}{}', - "<omdoc:idx>" - . "<omdoc:idt>#2 #3</omdoc:idt>" - . "<omdoc:ide ?#1(sort-by='#1')()>" - . "<omdoc:idp>#2</omdoc:idp>" - . "<omdoc:idp>#3</omdoc:idp>" - . "</omdoc:ide>" - ."</omdoc:idx>"); -DefConstructor('\twinalt[]{}{}{}', - "<omdoc:idx>" - . "<omdoc:idt>#2</omdoc:idt>" - . "<omdoc:ide ?#1(sort-by='#1')()>" - . "<omdoc:idp>#2</omdoc:idp>" - . "<omdoc:idp>#3</omdoc:idp>" - . "</omdoc:ide>" - ."</omdoc:idx>"); -DefConstructor('\atwintoo[]{}{}{}', - "<omdoc:idx>" - . "<omdoc:idt>#2 #3</omdoc:idt>" - . "<omdoc:ide ?#1(sort-by='#1')()>" - . "<omdoc:idp>#2</omdoc:idp>" - . "<omdoc:idp>#3</omdoc:idp>" - . "<omdoc:idp>#4</omdoc:idp>" - . "</omdoc:ide>" - ."</omdoc:idx>"); - -DefConstructor('\atwinalt[]{}{}{}{}', - "<omdoc:idx>" - . "<omdoc:idt>#2</omdoc:idt>" - . "<omdoc:ide ?#1(sort-by='#1')()>" - . "<omdoc:idp>#2</omdoc:idp>" - . "<omdoc:idp>#3</omdoc:idp>" - . "<omdoc:idp>#4</omdoc:idp>" - . "</omdoc:ide>" - ."</omdoc:idx>"); -# needed? DefConstructor('\par',sub { $_[0]->maybeCloseElement('ltx:p'); },alias=>"\\par\n"); -Tag('omdoc:CMP', autoClose=>1, autoOpen=>1); -Tag('omdoc:omtext', autoClose=>1, autoOpen=>1); -DefConstructor('\footnote[]{}', - "<omdoc:note type='foot' ?#1(mark='#1')>#2</omdoc:note>"); -DefConstructor('\footnotemark[]',""); -DefConstructor('\footnotetext[]{}', - "<omdoc:note class='foot' ?#1(mark='#1')>#2</omdoc:note>"); -Tag('omdoc:omtext',afterOpen=>\&numberIt,afterClose=>\&locateIt); -Tag('omdoc:omgroup',afterOpen=>\&numberIt,afterClose=>\&locateIt); -Tag('omdoc:CMP',afterOpen=>\&numberIt,afterClose=>\&locateIt); -Tag('omdoc:idx',afterOpen=>\&numberIt,afterClose=>\&locateIt); -Tag('omdoc:ide',afterOpen=>\&numberIt,afterClose=>\&locateIt); -Tag('omdoc:idt',afterOpen=>\&numberIt,afterClose=>\&locateIt); -Tag('omdoc:note',afterOpen=>\&numberIt,afterClose=>\&locateIt); -Tag('omdoc:metadata',afterOpen=>\&numberIt,afterClose=>\&locateIt); -Tag('omdoc:meta',afterOpen=>\&numberIt,afterClose=>\&locateIt); -Tag('omdoc:resource',afterOpen=>\&numberIt,afterClose=>\&locateIt); -Tag('ltx:p',afterOpen=>\&numberIt,afterClose=>\&locateIt); -Tag('ltx:tabular',afterOpen=>\&numberIt,afterClose=>\&locateIt); -Tag('ltx:thead',afterOpen=>\&numberIt,afterClose=>\&locateIt); -Tag('ltx:td',afterOpen=>\&numberIt,afterClose=>\&locateIt); -Tag('ltx:tr',afterOpen=>\&numberIt,afterClose=>\&locateIt); -Tag('ltx:caption',afterOpen=>\&numberIt,afterClose=>\&locateIt); -sub numberIt { - my($document,$node,$whatsit)=@_; - my(@parents)=$document->findnodes('ancestor::*[@xml:id]',$node); - my $prefix= (@parents ? $parents[$#parents]->getAttribute('xml:id')."." : ''); - my(@siblings)=$document->findnodes('preceding-sibling::*[@xml:id]',$node); - my $n = scalar(@siblings)+1; - my $id = ($node -> getAttribute('xml:id')); - my $localname = $node->localname; - $node->setAttribute('xml:id'=>$prefix."$localname$n") unless $id; - my $about = $node -> getAttribute('about'); - $node->setAttribute('about'=>'#'.$node->getAttribute('xml:id')) unless $about; - #Also, provide locators: - my $locator = $whatsit->getProperty('locator'); - #Need to inherit locators if missing: - $locator = (@parents ? $parents[$#parents]->getAttribute('stex:srcref') : '') unless $locator; - if ($locator) { - # There is a BUG with namespace declarations (or am I using the API wrongly??) which - # does not recognize the stex namespace. Hence, I need to redeclare it... - my $parent=$document->getNode; - if(! defined $parent->lookupNamespacePrefix("http://kwarc.info/ns/sTeX")) - { # namespace not already declared? - $document->getDocument->documentElement->setNamespace("http://kwarc.info/ns/sTeX","stex",0); - } - $node->setAttribute('stex:srcref'=>$locator); - }return;} - -sub locateIt { - my($document,$node,$whatsit)=@_; - #Estimate trailer locator: - my $trailer = $whatsit->getProperty('trailer'); - return unless $trailer; #Nothing we can do if the trailer isn't defined - $trailer = $trailer->getLocator; - return unless ($trailer && $trailer!~/^\s*$/); #Useless if broken - my $locator = $node->getAttribute('stex:srcref'); - if ($locator) { - $locator =~ /^(.+from=\d+;\d+)/; - my $from = $1; - $trailer =~ /(,to=\d+;\d+.+)$/; - my $to = $1; - $locator = $from.$to; - } else { - $locator = $trailer; #This should never happen - } - my $parent = $document->getNode; - if(! defined $parent->lookupNamespacePrefix("http://kwarc.info/ns/sTeX")) - { # namespace not already declared? - $document->getDocument->documentElement->setNamespace("http://kwarc.info/ns/sTeX","stex",0); - } - $node->setAttribute('stex:srcref' => $locator); - return; -} -1; diff --git a/Master/texmf-dist/tex/latex/stex/presentation/presentation.sty b/Master/texmf-dist/tex/latex/stex/presentation/presentation.sty index 0b0362bf30c..3692af31642 100644 --- a/Master/texmf-dist/tex/latex/stex/presentation/presentation.sty +++ b/Master/texmf-dist/tex/latex/stex/presentation/presentation.sty @@ -7,32 +7,40 @@ %% presentation.dtx (with options: `package') %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesPackage{presentation}[2012/01/28 v1.0 presentation for semantic macros] +\ProvidesPackage{presentation}[2016/04/06 v1.0 presentation for semantic macros] +\DeclareOption*{} \ProcessOptions \RequirePackage{keyval}[1997/11/10] +\RequirePackage{amsmath} \def\pres@default@precedence{0} \def\pres@infty{1000000} +\def\pres@infty@minusone{999999} \def\iprec{\pres@infty} \def\niprec{-\pres@infty} \def\pres@initial@precedence{0} \def\pres@current@precedence{\pres@initial@precedence} \def\pres@default@lbrack{(}\def\pres@lbrack{\pres@default@lbrack} \def\pres@default@rbrack{)}\def\pres@rbrack{\pres@default@rbrack} -\def\PrecSet#1{\def\pres@default@precedence{#1}} +\newcommand\withpreci[1]{\edef\pres@current@precedence{#1}} +\newcommand\withprecii[1]{\edef\pres@current@precedence{#1}} +\newcommand\withpreciii[1]{\edef\pres@current@precedence{#1}} +\newcommand\PrecSet[1]{\edef\pres@default@precedence{#1}} \def\PrecWrite#1{\ifnum\pres@p>\pres@current@precedence\else{#1}\fi} +\def\PrepostPrecWrite#1{\ifnum\pres@p@key>\pres@infty@minusone\else{#1}\fi} \def\prepost@clearkeys{\def\pres@p@key{\pres@default@precedence}\def\pres@pi@key{\niprec} \def\pres@lbrack{\pres@default@lbrack}\def\pres@rbrack{\pres@default@rbrack}} \define@key{prepost}{lbrack}{\def\pres@lbrack{#1}} \define@key{prepost}{rbrack}{\def\pres@lbrack{#1}} \define@key{prepost}{p}{\def\pres@p@key{#1}} \define@key{prepost}{pi}{\def\pres@pi@key{#1}} -\newcommand{\prefix}[3][]%key, fn, arg +\define@key{prepost}{nobrackets}[yes]{\def\pres@p@key{\pres@infty}% +\def\pres@pi@key{-\pres@infty}} +\newcommand\prefix[3][]%key, fn, arg {\prepost@clearkeys\setkeys{prepost}{#1} -{#2}\pres@lbrack{\edef\pres@current@precedence{\pres@pi@key}#3}\pres@rbrack} -\newcommand{\postfix}[3][]%key, fn, arg +{#2}\PrepostPrecWrite\pres@lbrack{\edef\pres@current@precedence{\pres@pi@key}#3}\PrepostPrecWrite\pres@rbrack} +\newcommand\postfix[3][]%key, fn, arg {\prepost@clearkeys\setkeys{prepost}{#1} -\pres@lbrack{\edef\pres@current@precedence{\pres@pi@key}#3}\pres@rbrack{#2}} -\newcommand{\funapp}[2]{\prefix{#1}{#2}} +\PrepostPrecWrite\pres@lbrack{\edef\pres@current@precedence{\pres@pi@key}#3}\PrepostPrecWrite\pres@rbrack{#2}} \def\clearkeys{\let\pres@p@key=\relax \let\pres@pi@key=\relax% \let\pres@pi@key=\relax% @@ -49,7 +57,7 @@ \edef\pres@rbrack{\@ifundefined{pres@rbrack@key}\pres@default@rbrack\pres@rbrack@key} \edef\pres@p{\@ifundefined{pres@p@key}\pres@default@precedence\pres@p@key} \edef\pres@pi{\@ifundefined{pres@pi@key}\pres@p\pres@pi@key}} -\newcommand{\mixfixi}[4][]%key, pre, arg, post +\newcommand\mixfixi[4][]%key, pre, arg, post {\clearkeys\setkeys{mi}{#1}\prep@keys@mi% \PrecWrite\pres@lbrack% #2{\edef\pres@current@precedence{\pres@pi}#3}#4% @@ -58,10 +66,16 @@ \let\@tmpop=\relax% do not print the function the first time round \@for\@I:=#3\do{\@tmpop% print the function {\edef\pres@current@precedence{#1}\@I}% -\let\@tmpop=#2}}%update the function -\newcommand{\mixfixa}[5][]%key, pre, arg, post, assocop +\def\@tmpop{#2}}}%update the function +\newcommand\mixfixa[5][]%key, pre, arg, post, assocop {\clearkeys\setkeys{mi}{#1}\prep@keys@mi% \PrecWrite\pres@lbrack{#2}{\@assoc\pres@pi{#5}{#3}}{#4}\PrecWrite\pres@rbrack} +\newcommand\mixfixA[5][]%key, pre, arg, post, assocop +{\clearkeys\setkeys{mi}{#1}\prep@keys@mi% +\renewcommand\do[1]{\@assoc\pres@pi{#5}{##1}{#5}\tabularnewline}% +\PrecWrite\pres@lbrack% write bracket if necessary +#2{\begin{array}{l}\docsvlist{#3}\end{array}}% +#4\PrecWrite\pres@rbrack} \define@key{mii}{nobrackets}[yes]{\def\pres@p@key{\pres@infty}% \def\pres@pi@key{-\pres@infty}\def\pres@pii@key{-\pres@infty}} \define@key{mii}{lbrack}{\def\pres@lbrack@key{#1}} @@ -71,19 +85,26 @@ \define@key{mii}{pii}{\def\pres@pii@key{#1}} \def\prep@keys@mii{\prep@keys@mi% \edef\pres@pii{\@ifundefined{pres@pii@key}\pres@p\pres@pii@key}} -\newcommand{\mixfixii}[6][]%key, pre, arg1, mid, arg2, post +\newcommand\mixfixii[6][]%key, pre, arg1, mid, arg2, post {\clearkeys\setkeys{mii}{#1}\prep@keys@mii% \PrecWrite\pres@lbrack% write bracket if necessary #2{\edef\pres@current@precedence{\pres@pi}#3}% #4{\edef\pres@current@precedence{\pres@pii}#5}#6% \PrecWrite\pres@rbrack} -\newcommand{\mixfixia}[7][]%key, pre, arg1, mid, arg2, post, assocop +\newcommand\mixfixia[7][]%key, pre, arg1, mid, arg2, post, assocop {\clearkeys\setkeys{mii}{#1}\prep@keys@mii% \PrecWrite\pres@lbrack% write bracket if necessary #2{\edef\pres@current@precedence{\pres@pi}#3}% #4{\@assoc\pres@pii{#7}{#5}}#6% \PrecWrite\pres@rbrack} -\newcommand{\mixfixai}[7][]%key, pre, arg1, mid, arg2, post, assocop +\newcommand\mixfixiA[7][]%key, pre, arg1, mid, arg2, post, assocop +{\clearkeys\setkeys{mii}{#1}\prep@keys@mii% +\renewcommand\do[1]{\@assoc\pres@pi{#7}{##1}{#7}\tabularnewline}% +\PrecWrite\pres@lbrack% write bracket if necessary +#2{\edef\pres@current@precedence{\pres@pi}#3}% +#4{\begin{array}{l}\docsvlist{#5}\end{array}}#6% +\PrecWrite\pres@rbrack} +\newcommand\mixfixai[7][]%key, pre, arg1, mid, arg2, post, assocop {\clearkeys\setkeys{mii}{#1}\prep@keys@mii% \PrecWrite\pres@lbrack% write bracket if necessary #2{\@assoc\pres@pi{#7}{#3}}% @@ -101,42 +122,42 @@ \define@key{miii}{piii}{\def\pres@piii@key{#1}} \def\prep@keys@miii{\prep@keys@mii% \edef\pres@piii{\@ifundefined{pres@piii@key}{\pres@p}{\pres@piii@key}}} -\newcommand{\mixfixiii}[8][]%key, pre, arg1, mid1, arg2, mid2, arg3, post +\newcommand\mixfixiii[8][]%key, pre, arg1, mid1, arg2, mid2, arg3, post {\clearkeys\setkeys{miii}{#1}\prep@keys@miii% \PrecWrite\pres@lbrack% write bracket if necessary #2{\edef\pres@current@precedence{\pres@pi}#3}% #4{\edef\pres@current@precedence{\pres@pii}#5}% #6{\edef\pres@current@precedence{\pres@pii}#7}#8% \PrecWrite\pres@rbrack} -\newcommand{\mixfixaii}[9][]%key, pre, arg1, mid1, arg2, mid2, arg3, post, sep +\newcommand\mixfixaii[9][]%key, pre, arg1, mid1, arg2, mid2, arg3, post, sep {\clearkeys\setkeys{miii}{#1}\prep@keys@miii% \PrecWrite\pres@lbrack% write bracket if necessary #2{\@assoc\pres@pi{#9}{#3}}% #4{\edef\pres@current@precedence{\pres@pii}#5}% #6{\edef\pres@current@precedence{\pres@pii}#7}#8% \PrecWrite\pres@rbrack} -\newcommand{\mixfixiai}[9][]%key, pre, arg1, mid1, arg2, mid2, arg3, post, assocop +\newcommand\mixfixiai[9][]%key, pre, arg1, mid1, arg2, mid2, arg3, post, assocop {\clearkeys\setkeys{miii}{#1}\prep@keys@miii% \PrecWrite\pres@lbrack% write bracket if necessary #2{\edef\pres@current@precedence{\pres@pi}#3}% #4{\@assoc\pres@pi{#9}{#5}}% #6{\edef\pres@current@precedence{\pres@pii}#7}#8% \PrecWrite\pres@rbrack} -\newcommand{\mixfixiia}[9][]%key, pre, arg1, mid1, arg2, mid2, arg3, post,assocop +\newcommand\mixfixiia[9][]%key, pre, arg1, mid1, arg2, mid2, arg3, post,assocop {\clearkeys\setkeys{miii}{#1}\prep@keys@miii% \PrecWrite\pres@lbrack% write bracket if necessary #2{\edef\pres@current@precedence{\pres@pi}#3}% #4{\edef\pres@current@precedence{\pres@pii}#5}% #6{\@assoc\pres@pi{#9}{#7}}#8% \PrecWrite\pres@rbrack} -\newcommand{\prefixa}[4][]%keys, fn, arg, sep -{\prepost@clearkeys\setkeys{prepost}{#1} -{#2}\pres@lbrack{\@assoc\pres@pi@key{#3}{#4}}\pres@rbrack} -\newcommand{\postfixa}[4][]%keys, fn, arg, sep -{\prepost@clearkeys\setkeys{prepost}{#1} -\pres@lbrack{\@assoc\pres@pi@key{#3}{#4}}\pres@rbrack{#2}} -\newcommand{\infix}[4][]{\mixfixii[#1]{}{#3}{#2}{#4}{}} -\newcommand{\assoc}[3][]{\mixfixa[#1]{}{#3}{}{#2}} +\newcommand\prefixa[4][]%keys, fn, arg, sep +{\prepost@clearkeys\setkeys{prepost}{#1}% +{#2}\pres@lbrack{\@assoc\pres@pi@key{#4}{#3}}\pres@rbrack} +\newcommand\postfixa[4][]%keys, fn, arg, sep +{\prepost@clearkeys\setkeys{prepost}{#1}% +\pres@lbrack{\@assoc\pres@pi@key{#4}{#3}}\pres@rbrack{#2}} +\newcommand\infix[4][]{\mixfixii[#1]{}{#3}{#2}{#4}{}} +\newcommand\assoc[3][]{\mixfixa[#1]{}{#3}{}{#2}} \def\setegroup#1#2{\expandafter\def\csname #1@egroup\endcsname{#2}} \def\elide#1#2#3{\@ifundefined{#1@egroup}% {\def\@elevel{0} @@ -150,8 +171,17 @@ been set by \protect\setegroup before, e.g. by \protect\setegroup{an}{0}.}}% {\expandafter\g@addto@macro\this@module{\expandafter\def\csname#1@edefault\endcsname{#2}}}} \def\setEdefault#1#2{\expandafter\def\csname #1@edfault\endcsname{#2}} \def\fromEcontext#1{\csname #1@edefault\endcsname} -\newcommand{\arrayline}[2]{#1#2\\} -\newcommand{\arraycell}[1]{#1&} +\newcommand\parray[2]{\begin{array}{#1}#2\end{array}} +\newcommand\parrayline[2]{#1#2\\} +\newcommand\prmatrix[1]{\begin{matrix}#1\end{matrix}} +\def\pmrow#1{\expandafter\@gobble\x@mrow#1\endx@mrow,} +\def\x@mrow#1,{\x@mrow} +\def\endx@mrow#1{\\} +\def\pmrowh#1{\expandafter\@gobble\x@mrowh#1\endx@mrowh,} +\def\x@mrowh#1,{\x@mrowh} +\def\endx@mrowh#1{\\\hline} +\newcommand\parraylineh[2]{#1#2\\\hline} +\newcommand\parraycell[1]{#1&} \endinput %% %% End of file `presentation.sty'. diff --git a/Master/texmf-dist/tex/latex/stex/presentation/presentation.sty.ltxml b/Master/texmf-dist/tex/latex/stex/presentation/presentation.sty.ltxml deleted file mode 100644 index c0154aaa9b3..00000000000 --- a/Master/texmf-dist/tex/latex/stex/presentation/presentation.sty.ltxml +++ /dev/null @@ -1,364 +0,0 @@ -# -*- CPERL -*- -package LaTeXML::Package::Pool; -use strict; -use LaTeXML::Package; -DefMacro('\iprec','1000000'); -DefMacro('\niprec','-1000000'); -DefConstructor('\crossrefOp[]{}', - "?#2(<ltx:XMApp role='CROSSREFOP'>" - . "<ltx:XMTok role='CROSSREFOP' cr='?#1(#1)(fun)'/>" - . "<ltx:XMWrap>#2</ltx:XMWrap>" - ."</ltx:XMApp>)()", - requireMath=>1); - -DefMacro('\prefix[]{}{}','\@prefix[#1]{\ensuremath{\crossrefOp[fun]{#2}}}{\ensuremath{#3 }}'); -DefConstructor('\@prefix OptionalKeyVals:mi {}{}', - "<omdoc:rendering " - . "?&defined(&KeyVal(#1,'p'))(precedence='&KeyVal(#1,'p')') " - . "argprec='&argument_precedence(#1)'>" - . "<m:mrow>" - . "#2" - . "<m:mrow>" - . "<m:mo fence='true'>(</m:mo>" - . "#3" - . "<m:mo fence='true'>)</m:mo>" - . "</m:mrow>" - . "</m:mrow>" - ."</omdoc:rendering>", - afterDigest=>sub { - #Default argument precedence is -\infty - my $keyval = $_[1]->getArg(1); - $keyval->setValue('pi',-1000000) unless ($keyval && defined($keyval->getValue('pi'))); - applyPrecedencePreferences(@_); - }, - properties=>sub { getSymmdefProperties($_[1]); }); -DefMacro('\postfix []{}{}','\@postfix[#1]{\ensuremath{\crossrefOp[fun]{#2}}}{\ensuremath{#3 }}'); -DefConstructor('\@postfix OptionalKeyVals:mi {}{}', - "<omdoc:rendering " - . "?&defined(&KeyVal(#1,'p'))(precedence='&KeyVal(#1,'p')') " - ."argprec='&argument_precedence(#1)'>" - . "<m:mrow>" - . "<m:mrow>" - . "<m:mo fence='true'>(</m:mo>" - . "#3" - . "<m:mo fence='true'>)</m:mo>" - . "</m:mrow>" - . "#2" - . "</m:mrow>" - ."</omdoc:rendering>", - afterDigest=>sub { - #Default argument precedence is -\infty - my $keyval = $_[1]->getArg(1); - $keyval->setValue('pi',-1000000) unless ($keyval && defined($keyval->getValue('pi'))); - applyPrecedencePreferences(@_); - }, - properties=>sub { getSymmdefProperties($_[1]); }); -DefConstructor('\funapp{}{}','<ltx:XMApp>#1#2</ltx:XMApp>'); -our $max_arguments = 10; #Currently max 10 arguments to \symdef. -DefKeyVal('mi','lbrack','Semiverbatim'); -DefKeyVal('mi','rbrack','Semiverbatim'); -DefKeyVal('mi','p','Semiverbatim'); -DefKeyVal('mi','pi','Semiverbatim'); -DefKeyVal('mi','pii','Semiverbatim'); #Why are we using this at mixfixai ? -DefKeyVal('mi','cd','Semiverbatim'); -DefKeyVal('mi','name','Semiverbatim'); -DefKeyVal('mi','nobrackets','Semiverbatim'); -sub argument_precedence { - my ($keyval) = @_; - my $attr = 'pi'; - my @precs = (); - foreach (1..$max_arguments) { - if (defined KeyVal($keyval,$attr)) { - push @precs, ToString(KeyVal($keyval,$attr)) - } else { - push @precs, ""; - } - $attr = $attr.'i'; - } - return join(" ",@precs)." "; -} -sub applyPrecedencePreferences { - my ($stomach,$whatsit) = @_; - my @args = $whatsit->getArgs; - my $keyvals = shift @args; - return unless (defined $keyvals); - my %kvhash = %{$keyvals->getKeyVals}; - #Default p (operator precedence) if not set: - my $default_precedence = LookupValue('default_precedence'); - $keyvals->setValue('p',$default_precedence) unless defined($keyvals->getValue('p')); - return unless (exists $kvhash{'nobrackets'}); - $keyvals->setValue('p',1000000); - $keyvals->setValue('pi',-1000000); - $keyvals->setValue('pii',-1000000); - $keyvals->setValue('piii',-1000000); - return; -}#$ -DefMacro('\mixfixi[]{}{}{}', - '\@mixfixi[#1]{\ensuremath{\crossrefOp[fun]{#2}}}{\ensuremath{#3 }}' - . '{\ensuremath{\crossrefOp[fun]{#4}}}'); -DefConstructor('\@mixfixi OptionalKeyVals:mi {}{}{}', - "<omdoc:rendering" - . "?&defined(&KeyVal(#1,'p'))(precedence='&KeyVal(#1,'p')')" - . " argprec='&argument_precedence(#1)'>" - . "<m:mrow>" - . "<m:mo egroup='fence' fence='true'>(</m:mo>" - . "#2 #3 #4" - . "<m:mo egroup='fence' fence='true'>)</m:mo>" - . "</m:mrow>" - ."</omdoc:rendering>", - afterDigest=>sub { applyPrecedencePreferences(@_);}, - properties=>sub { getSymmdefProperties($_[1]); });#$ -DefMacro('\mixfixa[]{}{}{}{}', - '\@mixfixa[#1]{\ensuremath{\crossrefOp[fun]{#2}}}{\ensuremath{#3 }}' - . '{\ensuremath{\crossrefOp[fun]{#4}}}' - . '{\ensuremath{\crossrefOp[fun]{\ensuremath{#5 }}}}'); -DefConstructor('\@mixfixa OptionalKeyVals:mi {}{}{}{}', - "<omdoc:rendering " - . "?&defined(&KeyVal(#1,'p'))(precedence='&KeyVal(#1,'p')')>" - . "<m:mrow>" - . "<m:mo egroup='fence' fence='true'>(</m:mo>" - . "#2" - . "<omdoc:iterate name='args' " - . "?&defined(&KeyVal(#1,'pi'))(precedence='&KeyVal(#1,'pi')')>" - . "<omdoc:separator>#5</omdoc:separator>" - . "<omdoc:render name='arg' " - . "?&defined(&KeyVal(#1,'pi'))(precedence='&KeyVal(#1,'pi')')/>" - . "</omdoc:iterate>" - . "#4" - . "<m:mo egroup='fence' fence='true'>)</m:mo>" - . "</m:mrow>" - ."</omdoc:rendering>", - afterDigest=>sub { applyPrecedencePreferences(@_);}, - properties=>sub { getSymmdefProperties($_[1]); });#$ -DefKeyVal('mii','lbrack','Semiverbatim'); -DefKeyVal('mii','rbrack','Semiverbatim'); -DefKeyVal('mii','p','Semiverbatim'); -DefKeyVal('mii','pi','Semiverbatim'); -DefKeyVal('mii','pii','Semiverbatim'); -DefKeyVal('mii','cd','Semiverbatim'); -DefKeyVal('mii','name','Semiverbatim'); -DefKeyVal('mii','nobrackets','Semiverbatim'); -DefMacro('\mixfixii[]{}{}{}{}{}', - '\@mixfixii[#1]{\ensuremath{\crossrefOp[fun]{#2}}}{\ensuremath{#3 }}' - . '{\ensuremath{\crossrefOp[fun]{#4}}}{\ensuremath{#5 }}' - . '{\ensuremath{\crossrefOp[fun]{#6}}}'); -DefConstructor('\@mixfixii OptionalKeyVals:mi {}{}{}{}{}', - "<omdoc:rendering " - . "?&defined(&KeyVal(#1,'p'))(precedence='&KeyVal(#1,'p')') " - . "argprec='&argument_precedence(#1)'>" - . "<m:mrow>" - . "<m:mo egroup='fence' fence='true'>(</m:mo>" - . "#2 #3 #4 #5 #6" - . "<m:mo egroup='fence' fence='true'>)</m:mo>" - . "</m:mrow>" - ."</omdoc:rendering>", - afterDigest=>sub { applyPrecedencePreferences(@_);}, - properties=>sub { getSymmdefProperties($_[1]); });#$ -DefMacro('\mixfixia[]{}{}{}{}{}{}', - '\@mixfixia[#1]{\ensuremath{\crossrefOp[fun]{#2}}}{\ensuremath{#3 }}' - . '{\ensuremath{\crossrefOp[fun]{#4}}}{\ensuremath{#5 }}' - . '{\ensuremath{\crossrefOp[fun]{#6}}}' - . '{\ensuremath{\crossrefOp[fun]{#7}}}'); -DefConstructor('\@mixfixia OptionalKeyVals:mii {}{}{}{}{}{}', - "<omdoc:rendering " - . "?&defined(&KeyVal(#1,'p'))(precedence='&KeyVal(#1,'p')') " - . " argprec='&argument_precedence(#1)'>" - . "<m:mrow>" - . "<m:mo egroup='fence' fence='true'>(</m:mo>" - . "#2 #3 #4" - . "<omdoc:iterate name='args' " - . "?&defined(&KeyVal(#1,'pi'))(precedence='&KeyVal(#1,'pi')')>" - . "<omdoc:separator>#7</omdoc:separator>" - . "<omdoc:render name='arg' " - . "?&defined(&KeyVal(#1,'pi'))(precedence='&KeyVal(#1,'pi')')/>" - . "</omdoc:iterate>" - . "#6" - . "<m:mo egroup='fence' fence='true'>)</m:mo>" - . "</m:mrow>" - ."</omdoc:rendering>", - afterDigest=>sub { applyPrecedencePreferences(@_);}, - properties=>sub { getSymmdefProperties($_[1]); });#$ -DefMacro('\mixfixai[]{}{}{}{}{}{}', - '\@mixfixai[#1]{\ensuremath{\crossrefOp[fun]{#2}}}{\ensuremath{#3 }}' - .'{\ensuremath{\crossrefOp[fun]{#4}}}{\ensuremath{#5 }}' - .'{\ensuremath{\crossrefOp[fun]{#6}}}' - .'{\ensuremath{\crossrefOp[fun]{#7}}}'); -DefConstructor('\@mixfixai OptionalKeyVals:mi {}{}{}{}{}{}', - "<omdoc:rendering " - . "?&defined(&KeyVal(#1,'p'))(precedence='&KeyVal(#1,'p')') " - . " argprec='&argument_precedence(#1)'>" - . "<m:mrow>" - . "<m:mo egroup='fence' fence='true'>(</m:mo>" - . "#2" - . "<omdoc:iterate name='args' " - . "?&defined(&KeyVal(#1,'pi'))(precedence='&KeyVal(#1,'pi')')>" - . "<omdoc:separator>#7</omdoc:separator>" - . "<omdoc:render name='arg' " - . "?&defined(&KeyVal(#1,'pi'))(precedence='&KeyVal(#1,'pi')')/>" - . "</omdoc:iterate>" - . "#4 #5 #6" - . "<m:mo egroup='fence' fence='true'>)</m:mo>" - . "</m:mrow>" - ."</omdoc:rendering>", - afterDigest=>sub { applyPrecedencePreferences(@_);}, - properties=>sub { getSymmdefProperties($_[1]); });#$ -DefKeyVal('miii','lbrack','Semiverbatim'); -DefKeyVal('miii','rbrack','Semiverbatim'); -DefKeyVal('miii','p','Semiverbatim'); -DefKeyVal('miii','pi','Semiverbatim'); -DefKeyVal('miii','pii','Semiverbatim'); -DefKeyVal('miii','piii','Semiverbatim'); -DefKeyVal('miii','cd','Semiverbatim'); -DefKeyVal('miii','name','Semiverbatim'); -DefKeyVal('miii','nobrackets','Semiverbatim'); -DefMacro('\mixfixiii[]{}{}{}{}{}{}{}', - '\@mixfixiii[#1]{\ensuremath{\crossrefOp[fun]{#2}}}{\ensuremath{#3 }}' - . '{\ensuremath{\crossrefOp[fun]{#4}}}{\ensuremath{#5 }}' - . '{\ensuremath{\crossrefOp[fun]{#6}}}{\ensuremath{#7 }}' - . '{\ensuremath{\crossrefOp[fun]{#8}}}'); -DefConstructor('\@mixfixiii OptionalKeyVals:mi {}{}{}{}{}{}{}', - "<omdoc:rendering " - . "?&defined(&KeyVal(#1,'p'))(precedence='&KeyVal(#1,'p')') " - . " argprec='&argument_precedence(#1)'>" - . "<m:mrow>" - . "<m:mo egroup='fence' fence='true'>(</m:mo>" - . "#2 #3 #4 #5 #6 #7 #8" - . "<m:mo egroup='fence' fence='true'>)</m:mo>" - . "</m:mrow>" - ."</omdoc:rendering>", - afterDigest=>sub { applyPrecedencePreferences(@_);}, - properties=>sub { getSymmdefProperties($_[1]); });#$ -DefMacro('\mixfixaii[]{}{}{}{}{}{}{}{}', - '\@mixfixaii[#1]{\ensuremath{\crossrefOp[fun]{#2}}}{\ensuremath{#3 }}' - . '{\ensuremath{\crossrefOp[fun]{#4}}}{\ensuremath{#5 }}' - . '{\ensuremath{\crossrefOp[fun]{#6}}}{\ensuremath{#7 }}' - . '{\ensuremath{\crossrefOp[fun]{#8}}}' - . '{\ensuremath{\crossrefOp[fun]{#9}}}'); -DefConstructor('\@mixfixaii OptionalKeyVals:mi {}{}{}{}{}{}{}{}', - "<omdoc:rendering " - . "?&defined(&KeyVal(#1,'p'))(precedence='&KeyVal(#1,'p')') " - . " argprec='&argument_precedence(#1)'>" - . "<m:mrow>" - . "<m:mo egroup='fence' fence='true'>(</m:mo>" - . "#2" - . "<omdoc:iterate name='args' " - . "?&defined(&KeyVal(#1,'pi'))(precedence='&KeyVal(#1,'pi')')>" - . "<omdoc:separator>#9</omdoc:separator>" - . "<omdoc:render name='arg' " - . "?&defined(&KeyVal(#1,'pi'))(precedence='&KeyVal(#1,'pi')')/>" - . "</omdoc:iterate>" - . "#4 #5 #6 #7 #8" - . "<m:mo egroup='fence' fence='true'>)</m:mo>" - . "</m:mrow>" - ."</omdoc:rendering>", - afterDigest=>sub { applyPrecedencePreferences(@_);}, - properties=>sub { getSymmdefProperties($_[1]); });#$ -DefMacro('\mixfixiai[]{}{}{}{}{}{}{}{}', - '\@mixfixiai[#1]{\ensuremath{\crossrefOp[fun]{#2}}}{\ensuremath{#3 }}' - . '{\ensuremath{\crossrefOp[fun]{#4}}}{\ensuremath{#5 }}' - . '{\ensuremath{\crossrefOp[fun]{#6}}}{\ensuremath{#7 }}' - . '{\ensuremath{\crossrefOp[fun]{#8}}}' - . '{\ensuremath{\crossrefOp[fun]{#9}}}'); -DefConstructor('\@mixfixiai OptionalKeyVals:mi {}{}{}{}{}{}{}', - "<omdoc:rendering " - . "?&defined(&KeyVal(#1,'p'))(precedence='&KeyVal(#1,'p')') " - . " argprec='&argument_precedence(#1)'>" - . "<m:mrow>" - . "<m:mo egroup='fence' fence='true'>(</m:mo>" - . "#2 #3 #4" - . "<omdoc:iterate name='args' " - . "?&defined(&KeyVal(#1,'pi'))(precedence='&KeyVal(#1,'pi')')>" - . "<omdoc:separator>#9</omdoc:separator>" - . "<omdoc:render name='arg' " - . "?&defined(&KeyVal(#1,'pi'))(precedence='&KeyVal(#1,'pi')')/>" - . "</omdoc:iterate>" - . "#6 #7 #8" - . "<m:mo egroup='fence' fence='true'>)</m:mo>" - . "</m:mrow>" - ."</omdoc:rendering>", - afterDigest=>sub { applyPrecedencePreferences(@_);}, - properties=>sub { getSymmdefProperties($_[1]); });#$ -DefMacro('\mixfixiia[]{}{}{}{}{}{}{}{}', - '\@mixfixiia[#1]{\ensuremath{\crossrefOp[fun]{#2}}}{\ensuremath{#3 }}' - . '{\ensuremath{\crossrefOp[fun]{#4}}}{\ensuremath{#5 }}' - . '{\ensuremath{\crossrefOp[fun]{#6}}}{\ensuremath{#7 }}' - . '{\ensuremath{\crossrefOp[fun]{#8}}}' - . '{\ensuremath{\crossrefOp[fun]{#9}}}'); -DefConstructor('\@mixfixiia OptionalKeyVals:mi {}{}{}{}{}{}{}', - "<omdoc:rendering " - . "?&defined(&KeyVal(#1,'p'))(precedence='&KeyVal(#1,'p')') " - . " argprec='&argument_precedence(#1)'>" - . "<m:mrow>" - . "<m:mo egroup='fence' fence='true'>(</m:mo>" - . "#2 #3 #4 #5 #6" - . "<omdoc:iterate name='args' " - . "?&defined(&KeyVal(#1,'pi'))(precedence='&KeyVal(#1,'pi')')>" - . "<omdoc:separator>#9</omdoc:separator>" - . "<omdoc:render name='arg' " - . "?&defined(&KeyVal(#1,'pi'))(precedence='&KeyVal(#1,'pi')')/>" - . "</omdoc:iterate>" - . "#8" - . "<m:mo egroup='fence' fence='true'>)</m:mo>" - . "</m:mrow>" - ."</omdoc:rendering>", - afterDigest=>sub { applyPrecedencePreferences(@_);}, - properties=>sub { getSymmdefProperties($_[1]); });#$ -DefMacro('\prefixa[]{}{}{}','\@prefixa[#1]{\ensuremath{\crossrefOp[fun]{#2}}}{\ensuremath{#3 }}{\ensuremath{#4 }}'); -DefConstructor('\@prefixa OptionalKeyVals:mi {}{}{}', - "<omdoc:rendering " - . "?&defined(&KeyVal(#1,'p'))(precedence='&KeyVal(#1,'p')') " - . "argprec='&argument_precedence(#1)'>" - . "<m:mrow>" - . "#2" - . "<m:mrow>" - . "<m:mo fence='true'>(</m:mo>" - . "<omdoc:iterate name='args' " - . "?&defined(&KeyVal(#1,'pi'))(precedence='&KeyVal(#1,'pi')')>" - . "<omdoc:separator>#4</omdoc:separator>" - . "<omdoc:render name='arg' " - . "?&defined(&KeyVal(#1,'pi'))(precedence='&KeyVal(#1,'pi')')/>" - . "</omdoc:iterate>" - . "<m:mo fence='true'>)</m:mo>" - . "</m:mrow>" - . "</m:mrow>" - ."</omdoc:rendering>", - afterDigest=>sub { - #Default argument precedence is -\infty - my $keyval = $_[1]->getArg(1); - $keyval->setValue('pi',-1000000) unless ($keyval && defined($keyval->getValue('pi'))); - applyPrecedencePreferences(@_); - }, - properties=>sub { getSymmdefProperties($_[1]); }); -DefMacro('\postfixa []{}{}{}','\@postfixa[#1]{\ensuremath{\crossrefOp[fun]{#2}}}{\ensuremath{#3 }}{\ensuremath{#4 }}'); -DefConstructor('\@postfixa OptionalKeyVals:mi {}{}{}', - "<omdoc:rendering " - . "?&defined(&KeyVal(#1,'p'))(precedence='&KeyVal(#1,'p')') " - ."argprec='&argument_precedence(#1)'>" - . "<m:mrow>" - . "<m:mrow>" - . "<m:mo fence='true'>(</m:mo>" - . "<omdoc:iterate name='args' " - . "?&defined(&KeyVal(#1,'pi'))(precedence='&KeyVal(#1,'pi')')>" - . "<omdoc:separator>#4</omdoc:separator>" - . "<omdoc:render name='arg' " - . "?&defined(&KeyVal(#1,'pi'))(precedence='&KeyVal(#1,'pi')')/>" - . "</omdoc:iterate>" - . "<m:mo fence='true'>)</m:mo>" - . "</m:mrow>" - . "#2" - . "</m:mrow>" - ."</omdoc:rendering>", - afterDigest=>sub { - #Default argument precedence is -\infty - my $keyval = $_[1]->getArg(1); - $keyval->setValue('pi',-1000000) unless ($keyval && defined($keyval->getValue('pi'))); - applyPrecedencePreferences(@_); - }, - properties=>sub { getSymmdefProperties($_[1]); }); -RawTeX(' -\newcommand{\infix}[4][]{\mixfixii[#1]{}{#3}{#2}{#4}{}} -\newcommand{\assoc}[3][]{\mixfixa[#1]{}{#3}{}{#2}} -'); -DefConstructor('\arrayline{}{}','<ltx:XMRow>#1<ltx:XMCell>#2</ltx:XMCell></ltx:XMRow>'); -DefConstructor('\arraycell{}','<ltx:XMCell>#1</ltx:XMCell>'); -1; diff --git a/Master/texmf-dist/tex/latex/stex/problem/problem.sty b/Master/texmf-dist/tex/latex/stex/problem/problem.sty index 220ad52bb29..46319929165 100644 --- a/Master/texmf-dist/tex/latex/stex/problem/problem.sty +++ b/Master/texmf-dist/tex/latex/stex/problem/problem.sty @@ -7,93 +7,103 @@ %% problem.dtx (with options: `package') %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesPackage{problem}[2012/01/28 v0.9c Semantic Markup for Problems] -\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}} -\newif\ifexnotes\exnotesfalse\DeclareOption{notes}{\exnotestrue} -\newif\ifhints\hintsfalse\DeclareOption{hints}{\hintstrue} -\newif\ifsolutions\solutionsfalse\DeclareOption{solutions}{\solutionstrue} -\newif\ifpts\ptsfalse\DeclareOption{pts}{\ptstrue} -\newif\ifmin\minfalse\DeclareOption{min}{\mintrue} -\newif\ifboxed\boxedfalse\DeclareOption{boxed}{\boxedtrue} -\newif\ifextract\extractfalse\DeclareOption{extract}{\extracttrue} +\ProvidesPackage{problem}[2016/04/06 v1.2 Semantic Markup for Problems] +\newif\if@problem@mh@\@problem@mh@false +\DeclareOption{mh}{\@problem@mh@true} +\newif\ifexnotes\exnotesfalse +\DeclareOption{notes}{\exnotestrue} +\newif\ifhints\hintsfalse +\DeclareOption{hints}{\hintstrue} +\newif\ifsolutions\solutionsfalse +\DeclareOption{solutions}{\solutionstrue} +\newif\ifpts\ptsfalse +\DeclareOption{pts}{\ptstrue} +\newif\ifmin\minfalse +\DeclareOption{min}{\mintrue} +\newif\ifboxed\boxedfalse +\DeclareOption{boxed}{\boxedtrue} +\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{omtext}} \ProcessOptions -\RequirePackage{keyval}[1997/11/10] -\RequirePackage{xcomment} -\RequirePackage{sref} +\if@problem@mh@\RequirePackage{problem-mh}\fi +\RequirePackage{omtext} +\RequirePackage{comment} +\RequirePackage{mdframed} +\RequirePackage[base]{babel} +\AfterBabelLanguage{ngerman}{\input{problem-ngerman.ldf}} +\def\prob@problem@kw{Problem} +\def\prob@solution@kw{Solution} \srefaddidkey[prefix=prob.]{problem} \addmetakey{problem}{pts} \addmetakey{problem}{min} \addmetakey*{problem}{title} \addmetakey{problem}{refnum} -\newsavebox{\probbox} -\newcounter{problem}[section] -\def\prob@number{\ifx\inclprob@refnum\@empty -\ifx\problem@refnum\@empty\thesection.\theproblem\else\problem@refnum\fi -\inclprob@refnum\fi} -\def\prob@heading{Problem \prob@number% -\ifx\sref@id\@empty\else{\sref@label@id{Problem \thesection.\theproblem}}\fi% +\newcounter{problem} +\newcommand\numberproblemsin[1]{\@addtoreset{problem}{#1}} +\newcommand\prob@label[1]{#1} +\def\prob@number{\ifx\inclprob@refnum\@empty% +\ifx\problem@refnum\@empty\prob@label\theproblem% +\else\prob@label\problem@refnum\fi% +\else\prob@label\inclprob@refnum\fi} +\newcommand\prob@title[3]{% \ifx\inclprob@title\@empty% if there is no outside title -\ifx\problem@title\@empty{:\quad}\else{\quad(\problem@title)\hfill\\}\fi -\else\quad(\inclprob@title)\hfill\\\fi}% else show the outside title -\ifboxed +\ifx\problem@title\@empty{#1}\else{#2\problem@title{#3}}\fi +\else{#2}\inclprob@title{#3}\fi}% else show the outside title +\def\prob@heading{\prob@problem@kw~\prob@number\prob@title{ }{ (}{)\strut\\}% +\sref@label@id{\prob@problem@kw~\prob@number}} \newenvironment{problem}[1][]{\metasetkeys{problem}{#1}\sref@target% -\stepcounter{problem}\show@pts\show@min\record@problem% -\begin{lrbox}{\probbox}\begin{minipage}{.9\textwidth}\ignorespaces} -{\end{minipage}\end{lrbox} -\setbox0=\hbox{\begin{minipage}{.9\textwidth}% -\noindent\textbf\prob@heading\rm% -\end{minipage}} -\smallskip\noindent\fbox{\vbox{\box0\vspace*{.2em}\usebox\probbox}}\smallskip} -\else -\newenvironment{problem}[1][]{\metasetkeys{problem}{#1}\sref@target% -\stepcounter{problem}\show@pts\show@min\record@problem% -\par\noindent\textbf\prob@heading\rm\ignorespaces} +\@in@omtexttrue% we are in a statement (for inline definitions) +\stepcounter{problem}\record@problem% +\def\current@section@level{\prob@problem@kw}% +\par\noindent\textbf\prob@heading\show@pts\show@min\rm\noindent\ignorespaces} {\smallskip} -\fi%boxed +\ifboxed\surroundwithmdframed{problem}\fi \def\record@problem{\protected@write\@auxout{}% {\string\@problem{\prob@number}% {\ifx\inclprob@pts\@empty\problem@pts\else\inclprob@pts\fi}% {\ifx\inclprob@min\@empty\problem@min\else\inclprob@min\fi}}} \def\@problem#1#2#3{} -\define@key{soln}{id}{\def\soln@id{#1}} -\define@key{soln}{for}{\def\soln@for{#1}} -\define@key{soln}{height}{\def\soln@height{#1}} -\ifsolutions -\newenvironment{solution}[1][]% -{\hrule\smallskip{\bf Solution: }\begin{small}}% -{\hrule\end{small}} -\else\newxcomment[]{solution}\fi +\srefaddidkey{soln} +\addmetakey{soln}{for} +\addmetakey{soln}{height} +\addmetakey{soln}{creators} +\addmetakey{soln}{contributors} +\addmetakey{soln}{srccite} +\newcommand\@startsolution[1][]{\metasetkeys{soln}{#1}% +\@in@omtexttrue% we are in a statement. +\ifboxed\else\hrule\fi\smallskip\noindent{\textbf\prob@solution@kw: }\begin{small}% +\def\current@section@level{\prob@solution@kw}% +\ignorespaces} +\newcommand\startsolutions{\specialcomment{solution}{\@startsolution}% +{\ifboxed\else\hrule\medskip\fi\end{small}}% +\ifboxed\surroundwithmdframed{solution}\fi} +\newcommand\stopsolutions{\excludecomment{solution}} +\ifsolutions\startsolutions\else\stopsolutions\fi \ifexnotes \newenvironment{exnote}[1][]% -{\par\noindent\hrule\smallskip{\bf Note: }\small} +{\par\smallskip\hrule\smallskip\noindent\textbf{Note: }\small} {\smallskip\hrule} \else%ifexnotes -\newxcomment[]{exnote} +\excludecomment{exnote} \fi%ifexnotes \ifhints \newenvironment{hint}[1][]% -{\par\noindent\hrule\smallskip{\bf Hint: }\small} +{\par\smallskip\hrule\smallskip\noindent\textbf{Hint: }\small} +{\smallskip\hrule} +\newenvironment{exhint}[1][]% +{\par\smallskip\hrule\smallskip\noindent\textbf{Hint: }\small} {\smallskip\hrule} \else%ifhints -\newxcomment[]{hint} +\excludecomment{hint} +\excludecomment{exhint} \fi%ifhints -\ifextract -\newwrite\problem@file -\immediate\openout\problem@file=\jobname-problems.tex -\AtEndDocument{\closeout\problem@file} -\fi \addmetakey{inclprob}{pts} \addmetakey{inclprob}{min} \addmetakey*{inclprob}{title} \addmetakey{inclprob}{refnum} -\clear@inclprob@keys -\newcommand{\includeproblem}[2][]{% -\bgroup\metasetkeys{inclprob}{#1}\input{#2}\ifsolutions\newpage\fi\egroup -\ifextract\def\@test{#1} -\def\prob@num{\ifx\inclprob@refnum\@empty\thesection.\theproblem\else\inclprob@refnum\fi} -\def\inclprob@keys{#1\ifx\@test\@empty\else,\fi refnum=\prob@num} -\protected@write\problem@file{}{\string\includeproblem[\inclprob@keys]{#2}} -\fi} +\addmetakey{inclprob}{mhrepos} +\clear@inclprob@keys%initially +\newcommand\includeproblem[2][]{\metasetkeys{inclprob}{#1}% +\input{#2}\clear@inclprob@keys} \def\pts#1{\ifpts\marginpar{#1 pt}\fi} \def\min#1{\ifmin\marginpar{#1 min}\fi} \AtEndDocument{\ifpts\message{Total: \arabic{pts} points}\fi @@ -102,7 +112,7 @@ \def\show@pts{\ifx\inclprob@pts\@empty% \ifx\problem@pts\@empty\else% \ifpts\marginpar{\problem@pts pt\smallskip}\addtocounter{pts}{\problem@pts}\fi% -\fi\else% +\fi\else% inclprob@pts nonempty \ifpts\marginpar{\inclprob@pts pt\smallskip}\addtocounter{pts}{\inclprob@pts}\fi% \fi} \newcounter{min} diff --git a/Master/texmf-dist/tex/latex/stex/problem/problem.sty.ltxml b/Master/texmf-dist/tex/latex/stex/problem/problem.sty.ltxml deleted file mode 100644 index 85fb12e7bbe..00000000000 --- a/Master/texmf-dist/tex/latex/stex/problem/problem.sty.ltxml +++ /dev/null @@ -1,75 +0,0 @@ -RawTeX(' -\newif\ifexnotes\exnotesfalse -\newif\ifhints\hintsfalse -\newif\ifsolutions\solutionsfalse -\newif\ifpts\ptsfalse -\newif\ifmin\minfalse -\newif\ifboxed\boxedfalse -\newif\ifextract\extractfalse -'); -# -*- CPERL -*- -package LaTeXML::Package::Pool; -use strict; -use LaTeXML::Package; -RequirePackage('sref'); -RegisterNamespace('prob'=>"http://omdoc.org/ontology/problems#"); -RegisterDocumentNamespace('prob'=>"http://omdoc.org/ontology/problems#"); -DefEnvironment('{problem} OptionalKeyVals:problem', - "<omdoc:exercise ?&KeyVal(#1,'id')(xml:id='&KeyVal(#1,'id')')()>" - . "?&KeyVal(#1,'title')(<dc:title>&KeyVal(#1,'title')</dc:title>)()" - . "?&KeyVal(#1,'min')(" - . "<omdoc:meta property='prob:solvedinminutes' prob:dummy='for the namespace'>" - . "&KeyVal(#1,'min')" - . "</omdoc:meta>)()" - . "?&KeyVal(#1,'pts')(" - . "<omdoc:meta property='prob:points' prob:dummy='for the namespace'>" - . "&KeyVal(#1,'pts')" - . "</omdoc:meta>)()" - . "<omdoc:CMP><omdoc:p>#body" - ."</omdoc:exercise>", - afterDigest => sub { - my ($stomach,$kv)=@_; - my $kvi = LookupValue('inclprob'); - my @keys = qw(id title min pts); - my @vals = $kvi && map($kvi->getValue($_), @keys); - foreach my $i(0..$#vals) { - $kv->setValue($keys[$i],$vals[$i]) if $vals[$i]; - } - return;});#$ -DefKeyVal('soln','id','Semiverbatim'); -DefKeyVal('soln','height','Semiverbatim'); -DefKeyVal('soln','for','Semiverbatim'); -DefEnvironment('{solution} OptionalKeyVals:soln', - "<omdoc:solution ?&KeyVals(#1,'for')(for='&KeyVal(#1,'for')')()>" - . "#body" - . "</omdoc:solution>"); -DefEnvironment('{exnote}',"<omdoc:hint><omdoc:CMP><omdoc:p>#body</omdoc:hint>"); -DefEnvironment('{hint}',"<omdoc:hint><omdoc:CMP><omdoc:p>#body</omdoc:hint>"); -DefConstructor('\pts{}',""); -DefConstructor('\min{}',""); -DefKeyVal('prob','pts','Semiverbatim'); -DefKeyVal('prob','min','Semiverbatim'); -DefKeyVal('prob','title','Semiverbatim'); -DefConstructor('\includeproblem OptionalKeyVals:prob Semiverbatim', - "<omdoc:ref type='cite' xref='#2'>" - . "?&KeyVal(#1,'title')(<dc:title>&KeyVal(#1,'title')</dc:title>)()" - . "?&KeyVal(#1,'min')(" - . "<omdoc:meta property='prob:solvedinminutes' prob:dummy='for the namespace'>" - . "&KeyVal(#1,'min')" - . "</omdoc:meta>)()" - . "?&KeyVal(#1,'pts')(" - . "<omdoc:meta property='prob:points' prob:dummy='for the namespace'>" - . "&KeyVal(#1,'pts')" - . "</omdoc:meta>)()" - ."</omdoc:ref>", - afterDigest => sub{ - my ($stomach,$kv) = @_; - AssignValue('inclprob',$kv) if $kv; - }); -Tag('omdoc:exercise',afterOpen=>\&numberIt); -Tag('omdoc:solution',afterOpen=>\&numberIt); -Tag('omdoc:hint',afterOpen=>\&numberIt); -Tag('omdoc:exercise',afterOpen=>\&numberIt,afterClose=>\&locateIt); -Tag('omdoc:solution',afterOpen=>\&numberIt,afterClose=>\&locateIt); -Tag('omdoc:hint',afterOpen=>\&numberIt,afterClose=>\&locateIt); -1; diff --git a/Master/texmf-dist/tex/latex/stex/rdfmeta/rdfmeta.sty.ltxml b/Master/texmf-dist/tex/latex/stex/rdfmeta/rdfmeta.sty.ltxml deleted file mode 100644 index f4683274c06..00000000000 --- a/Master/texmf-dist/tex/latex/stex/rdfmeta/rdfmeta.sty.ltxml +++ /dev/null @@ -1,8 +0,0 @@ -package LaTeXML::Package::Pool; -use strict; -use LaTeXML::Package; -DeclareOption('showmeta',''); -DeclareOption('sectioning',''); -DefConstructor('\keydef',''); -DefConstructor('\listkeydef',''); -1; diff --git a/Master/texmf-dist/tex/latex/stex/reqdoc/reqdoc.sty b/Master/texmf-dist/tex/latex/stex/reqdoc/reqdoc.sty deleted file mode 100644 index f8cb314b7c3..00000000000 --- a/Master/texmf-dist/tex/latex/stex/reqdoc/reqdoc.sty +++ /dev/null @@ -1,66 +0,0 @@ -%% -%% This is file `reqdoc.sty', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% reqdoc.dtx (with options: `package') -%% -\NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesPackage{reqdoc}[2012/01/28 v0.3 Semantic Requirement Documents] -\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}} -\newif\if@deps\@depsfalse -\DeclareOption{recorddeps}{\@depstrue} -\ProcessOptions -\RequirePackage{sref} -\RequirePackage{longtable} -\newif\ifreqsnum\reqsnumfalse -\addmetakey{reqs}{numbering} -\addmetakey[R]{reqs}{prefix} -\def\reqs@no{no} -\newenvironment{requirements}[1][]% -{\metasetkeys{reqs}{#1}\ifx\reqs@numbering\reqs@no\reqsnumfalse\else\reqsnumtrue\fi}{} -\addmetakey{req}{id} -\addmetakey{req}{prio} -\addmetakey{req}{refs} -\addmetakey{req}{num} -\newcounter{reqnum}[section] -\def\req@do@refs#1#2{\let\@tmpop=\relax\@for\@I:=#1\do{\@tmpop\req@do@ref{\@I}\let\@tmpop=#2}} -\def\req@do@ref#1{\sref@hlink@ifh{#1}{\req@ref{#1}{number}}} -\def\req@def@aux#1#2#3{\expandafter\xdef\csname req@#1@#2\endcsname{#3}} -\def\req@write@aux#1#2#3{\protected@write\@auxout{}{\string\req@def@aux{#1}{#2}{\thesection.#3}}} -\def\req@def#1#2#3{\req@def@aux{#1}{#2}{#3}\req@write@aux{#1}{#2}{#3}} -\def\req@ref#1#2{\csname req@#1@#2\endcsname} -\def\print@req@prio{\ifx\req@prio\@empty\else(Priority: \req@prio)\fi} -\def\print@req@label{\sref@target@ifh\req@id{\reqs@prefix\arabic{reqnum}: }} -\def\print@req@refs{\ifx\req@refs\@empty\else\hfill [from~\req@do@refs{\req@refs}{,}]\fi} -\newenvironment{requirement}[1][]% -{\metasetkeys{req}{#1}\stepcounter{reqnum} -\ifreqsnum\ifx\req@id\@empty\else\req@def\req@id{number}\thereqnum\fi -\noindent\textbf{\print@req@label}\fi -\newcommand{\reqnote}[1]{\par\noindent Note: ##1} -\print@req@prio} -{\medskip\print@req@refs} -\newenvironment{reqtable}[1][]{\metasetkeys{reqs}{#1} -\begin{center}\begin{longtable}{|l|l|p{6cm}|p{5cm}|l|}\hline -\# & Prio & Requirement & Notes & Refs\\\hline\hline} -{\end{longtable}\end{center}} -\newcommand{\reqline}[3][]% -{\metasetkeys{req}{#1}\stepcounter{reqnum} -\req@def\req@id{number}\thereqnum% remember the number for reference -\textbf{\sref@target@ifh\req@id{\reqs@prefix\arabic{reqnum}}}& -\req@prio &\req@do@refs\req@refs{,}\tabularnewline\hline} -\newcommand{\importreqs}[1]{\req@dep@write{"#1.tex"}{IMPORTREQS}\makeatletter\input{#1.aux}\makeatother} -\newcommand{\rinput}[1]{\req@dep@write{"#1.tex"}{[dt="input"]}\bgroup\@depsfalse\input{#1}\egroup} -\if@deps\newwrite\req@depfile -\immediate\openout\req@depfile=\jobname.deps -\AtEndDocument{\closeout\req@depfile} -\renewcommand{\importmodule}[2][]{\req@dep@write{"#1.tex"}{[dt="importmodule"]}\def\@test{#1}% -\ifx\@test\@empty\else\requiremodules{#1}\fi -\expandafter\gdef\csname#2@cd@file@base\endcsname{#1} -\activate@defs{#2}\export@defs{#2}} -\fi -\def\req@dep@write#1#2{\if@deps\protected@write\req@depfile{}{#1 #2}\fi} -\endinput -%% -%% End of file `reqdoc.sty'. diff --git a/Master/texmf-dist/tex/latex/stex/reqdoc/reqdoc.sty.ltxml b/Master/texmf-dist/tex/latex/stex/reqdoc/reqdoc.sty.ltxml deleted file mode 100644 index fd9fa13a7b8..00000000000 --- a/Master/texmf-dist/tex/latex/stex/reqdoc/reqdoc.sty.ltxml +++ /dev/null @@ -1,23 +0,0 @@ -package LaTeXML::Package::Pool; -use strict; -use LaTeXML::Package; -RegisterNamespace('r'=>"http://omdoc.org/ontology/requirements#"); -RegisterDocumentNamespace('r'=>"http://omdoc.org/ontology/requirements#"); -DefEnvironment('{requirements} OptionalKeyVals:reqs', - "<omdoc:omgroup type='itemize'>#body</omdoc:omgroup>"); -DefEnvironment('{requirement} OptionalKeyVals:req', - "<omdoc:omtext ?&KeyVal(#1,'id')(xml:id='&KeyVal(#1,'id')')() r:dummy='to ensure the namespace'>" - . "<omdoc:meta property='texttype' content='r:requirement'/>" - . "?&KeyVal(#1,'refs')(<omdoc:link rel='r:dependsOn' href='#&KeyVal(#1,'refs')'/>)()" - . "#body" - ."</omdoc:omtext>"); -DefConstructor('\reqnote{}', - "<omdoc:note type='requirement'>#1</omdoc:note>"); -DefEnvironment('{reqtable} OptionalKeyVals:reqs', - "<omdoc:omgroup type='itemize'>#body</omdoc:omgroup>"); -DefConstructor('\reqline OptionalKeyVals:req{}{}', - "<omdoc:omtext type='requirement'><omdoc:CMP>#2</omdoc:CMP></omdoc:omtext>" - ."<omdoc:omtext type='note'><omdoc:CMP>#3</omdoc:CMP></omdoc:omtext>"); -DefConstructor('\importreqs {}',"<omdoc:imports from='#1'/>"); -DefMacro('\rinput','\input'); -1; diff --git a/Master/texmf-dist/tex/latex/stex/rdfmeta/rdfmeta.sty b/Master/texmf-dist/tex/latex/stex/rfdmeta/rdfmeta.sty index cdfd81223cc..74cd27e8a25 100644 --- a/Master/texmf-dist/tex/latex/stex/rdfmeta/rdfmeta.sty +++ b/Master/texmf-dist/tex/latex/stex/rfdmeta/rdfmeta.sty @@ -7,12 +7,16 @@ %% rdfmeta.dtx (with options: `package') %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesPackage{rdfmeta}[2012/01/28 v0.2 Metadata key upgrades] -\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}} +\ProvidesPackage{rdfmeta}[2016/04/06 v0.2 Metadata key upgrades] \newif\if@rdfmeta@sectioning\@rdfmeta@sectioningfalse \DeclareOption{sectioning}{\@rdfmeta@sectioningtrue} +\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{sref} + \PassOptionsToPackage{\CurrentOption}{modules}} \ProcessOptions -\RequirePackage{sref,modules} +\RequirePackage{sref} +\RequirePackage{modules} +\newcommand\rdfmeta@loaded{yes} +\if@rdfmeta@sectioning\newcommand\rdfmeta@sectioning{yes}\fi \newcommand\keydef[2]{\addmetakey{#1}{#2}% \expandafter\g@addto@macro\this@module{\addmetakey{#1}{#2}}} \newcommand\listkeydef[2]{\addmetalistkey{#1}{#2}% @@ -29,7 +33,7 @@ \newcommand\rdfmeta@upgrade@star[2][]{\metasetkeys{upgrade}{#1}% \ifx\upgrade@keygroup\@empty\def\@@group{#2}\else\def\@@group{\upgrade@keygroup}\fi \rdfmeta@upgrade@base@star{#2}{\@nameuse{\@@group @\upgrade@optarg}}} -\newcommand{\rdfmeta@upgrade@base}[2]{\@ifundefined{#1}{}% +\newcommand\rdfmeta@upgrade@base[2]{\@ifundefined{#1}{}% {\message{redefining macro #1,} \ifx\upgrade@idlabel\@empty\srefaddidkey{#1}\else\srefaddidkey[prefix=\upgrade@idlabel]{#1}\fi% \expandafter\let\csname rdfmeta@#1@old\expandafter\endcsname\csname #1\endcsname% diff --git a/Master/texmf-dist/tex/latex/stex/smglom/smglom.cls b/Master/texmf-dist/tex/latex/stex/smglom/smglom.cls new file mode 100644 index 00000000000..36007f92619 --- /dev/null +++ b/Master/texmf-dist/tex/latex/stex/smglom/smglom.cls @@ -0,0 +1,22 @@ +%% +%% This is file `smglom.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% smglom.dtx (with options: `cls') +%% +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesClass{smglom}[2016/04/06 v0.1 Semantic Multilingual Glossary for Math] +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{omdoc} + \PassOptionsToPackage{\CurrentOption}{stex} + \PassOptionsToPackage{\CurrentOption}{smglom}} +\ProcessOptions +\LoadClass{omdoc} +\RequirePackage{smglom} +\RequirePackage{stex} +\RequirePackage{amstext} +\RequirePackage{amsfonts} +\endinput +%% +%% End of file `smglom.cls'. diff --git a/Master/texmf-dist/tex/latex/stex/smultiling/smultiling.sty b/Master/texmf-dist/tex/latex/stex/smultiling/smultiling.sty new file mode 100644 index 00000000000..582fe5dbd4d --- /dev/null +++ b/Master/texmf-dist/tex/latex/stex/smultiling/smultiling.sty @@ -0,0 +1,65 @@ +%% +%% This is file `smultiling.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% smultiling.dtx (with options: `sty') +%% +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesPackage{smultiling}[2016/04/06 v0.1 Multilingual Support for sTeX] +\newif\if@smultiling@mh@\@smultiling@mh@false +\DeclareOption{mh}{\@smultiling@mh@true} +\newif\if@langfiles\@langfilesfalse +\DeclareOption{langfiles}{\@langfilestrue} +\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{modules}} +\ProcessOptions +\if@smultiling@mh@\RequirePackage{smultiling-mh}\fi +\RequirePackage{etoolbox} +\RequirePackage{structview} +\newenvironment{modsig}[2][]{% +\def\@test{#1}\ifx\@test\@empty\begin{module}[id=#2]\else\begin{module}[id=#2,#1]\fi\ignorespacesandpars} +{\end{module}\ignorespacesandparsafterend} +\newenvironment{viewsig}[4][]{\def\@test{#1}\ifx\@test\@empty% + \begin{view}[id=#2,ext=tex]{#3}{#4}\else\begin{view}[id=#2,#1,ext=tex]{#3}{#4}\fi% + \ignorespacesandpars} + {\end{view}\ignorespacesandparsafterend} +\newcommand\symi{\@ifstar\@symi@star\@symi} +\newcommand\@symi[1]{\if@importing\else Symbol: \textsf{#1}\fi\ignorespacesandpars} +\newcommand\@symi@star[1]{\if@importing\else Primary Symbol: \textsf{#1}\fi\ignorespacesandpars} +\newcommand\symii{\@ifstar\@symii@star\@symii} +\newcommand\@symii[2]{\if@importing\else Symbol: \textsf{#1-#2}\fi\ignorespacesandpars} +\newcommand\@symii@star[2]{\if@importing\else Primary Symbol: \textsf{#1-#2}\fi\ignorespacesandpars} +\newcommand\symiii{\@ifstar\@symiii@star\@symiii} +\newcommand\@symiii[3]{\if@importing\else Symbol: \textsf{#1-#2-#3}\fi\ignorespacesandpars} +\newcommand\@symiii@star[3]{\if@importing\else Primary Symbol: \textsf{#1-#2-#3}\fi\ignorespacesandpars} +\addmetakey{modnl}{load} +\addmetakey*{modnl}{title} +\addmetakey*{modnl}{creators} +\addmetakey*{modnl}{contributors} +\addmetakey{modnl}{srccite} +\addmetakey{modnl}{primary}[yes] +\newenvironment{modnl}[3][]{\metasetkeys{modnl}{#1}% + \def\@test{#1}\ifx\@test\@empty\begin{module}[id=#2.#3]\else\begin{module}[id=#2.#3,#1]\fi% + \if@langfiles\importmodule[load=#2,ext=tex]{#2}\else + \ifx\modnl@load\@empty\importmodule{#2}\else\importmodule[ext=tex,load=\modnl@load]{#2}\fi% + \fi% + \ignorespacesandpars} +{\end{module}\ignorespacesandparsafterend} +\newenvironment{viewnl}[5][]{\def\@test{#1}\ifx\@test\@empty% + \begin{viewsketch}[id=#2.#3,ext=tex]{#4}{#5}\else% + \begin{viewsketch}[id=#2.#3,#1,ext=tex]{#4}{#5}\fi% + \ignorespacesandpars} + {\end{viewsketch}\ignorespacesandparsafterend} +\def\@instring#1#2{TT\fi\begingroup\edef\x{\endgroup\noexpand\in@{#1}{#2}}\x\ifin@} +\newcommand\mtrefi[2][]{\if\@instring{?}{#1}\@mtref #1\relax{#2}\else\termref[cd=#1]{#2}\fi} +\def\@mtref#1?#2\relax{\termref[cd=#1,name=#2]} +\newcommand\mtrefis[2][]{\mtrefi[#1]{#2s}} +\newcommand\mtrefii[3][]{\mtrefi[#1]{#2 #3}} +\newcommand\mtrefiis[3][]{\mtrefi[#1]{#2 #3s}} +\newcommand\mtrefiii[4][]{\mtrefi[#1]{#2 #3 #4}} +\newcommand\mtrefiiis[4][]{\mtrefi[#1]{#2 #3 #4s}} +\newcommand\ttl[1]{\red{TTL: #1}} +\endinput +%% +%% End of file `smultiling.sty'. diff --git a/Master/texmf-dist/tex/latex/stex/sproof/sproof.sty b/Master/texmf-dist/tex/latex/stex/sproof/sproof.sty index 35d2470cd02..58bdc22d022 100644 --- a/Master/texmf-dist/tex/latex/stex/sproof/sproof.sty +++ b/Master/texmf-dist/tex/latex/stex/sproof/sproof.sty @@ -7,10 +7,12 @@ %% sproof.dtx (with options: `package') %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesPackage{sproof}[2012/01/28 v1.0 Semantic Markup for Proofs] -\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}} +\ProvidesPackage{sproof}[2016/04/06 v1.1 Semantic Markup for Proofs] +\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{sref}} \ProcessOptions \RequirePackage{sref} +\RequirePackage{etoolbox} +\RequirePackage[base]{babel} \srefaddidkey{spf} \addmetakey*{spf}{display} \addmetakey{spf}{for} @@ -20,65 +22,174 @@ \addmetakey*{spf}{title} \addmetakey{spf}{continues} \addmetakey{spf}{functions} +\addmetakey{spf}{method} \def\spf@flow{flow} -\newenvironment{pst@with@label}[1]% -{\edef\pst@label{#1}\advance\count10 by 1\count\count10=1} -{\advance\count10 by -1} -\def\the@pst@label{\pst@make@label\pst@label{\number\count\count10}} -\def\pst@make@label@long#1#2{\@for\@I:=#1\do{\@I.}#2} +\newenvironment{pst@with@label}[1]{% + \edef\pst@label{#1}% + \advance\count10 by 1% + \count\count10=1% +}{% + \advance\count10 by -1% +}% +\def\the@pst@label{% + \pst@make@label\pst@label{\number\count\count10}\pstlabel@postfix% +}% +\addmetakey[P]{pstlabel}{prefix}[] +\addmetakey[.]{pstlabel}{delimiter}[] +\addmetakey[]{pstlabel}{postfix}[] +\metasetkeys{pstlabel}{}% initialization +\newrobustcmd\setpstlabelstyle[1]{% + \metasetkeys{pstlabel}{#1}% +}% +\newrobustcmd\setpstlabelstyledefault{% + \metasetkeys{pstlabel}{prefix=P,delimiter=.,postfix=}% +}% +\def\pst@make@label@long#1#2{\@for\@I:=#1\do{\expandafter\@I\pstlabel@delimiter}#2} \def\pst@make@label@angles#1#2{\ensuremath{\@for\@I:=#1\do{\rangle}}#2} \def\pst@make@label@short#1#2{#2} \def\pst@make@label@empty#1#2{} -\def\pstlabelstyle#1{\def\pst@make@label{\@nameuse{pst@make@label@#1}}} -\pstlabelstyle{long} -\def\next@pst@label{\global\advance\count\count10 by 1} -\def\sproof@box{\hbox{\vrule\vbox{\hrule width 6 pt\vskip 6pt\hrule}\vrule}} -\def\spf@proofend{\sproof@box} -\def\sproofend{\ifx\spf@proofend\@empty\else\hfil\null\nobreak\hfill\spf@proofend\par\smallskip\fi} -\def\sProofEndSymbol#1{\def\sproof@box{#1}} +\def\pstlabelstyle#1{% + \def\pst@make@label{\@nameuse{pst@make@label@#1}}% +}% +\pstlabelstyle{long}% +\def\next@pst@label{% + \global\advance\count\count10 by 1% +}% +\def\sproof@box{% + \hbox{\vrule\vbox{\hrule width 6 pt\vskip 6pt\hrule}\vrule}% +}% +\def\spf@proofend{\sproof@box}% +\def\sproofend{% + \ifx\spf@proofend\@empty% + \else% + \hfil\null\nobreak\hfill\spf@proofend\par\smallskip% + \fi% +}% +\def\sProofEndSymbol#1{\def\sproof@box{#1}}% \def\spf@proofsketch@kw{Proof Sketch} \def\spf@proof@kw{Proof} -\newcommand{\spfsketch}[2][]{\metasetkeys{spf}{#1}\sref@target -\ifx\spf@display\spf@flow\else{\stDMemph{\ifx\spf@type\@empty\spf@proofsketch@kw\else\spf@type\fi}:}\fi{ #2}% -\sref@label@id{this \ifx\spf@type\@empty\spf@proofsketch@kw\else\spf@type\fi}} -\newenvironment{spf@proof}[2][]{\metasetkeys{spf}{#1}\sref@target -\count10=10 -\ifx\spf@display\spf@flow\else{\stDMemph{\ifx\spf@type\@empty\spf@proof@kw\else\spf@type\fi}:}\fi{ #2}% -\sref@label@id{this \ifx\spf@type\@empty\spf@proof@kw\else\spf@type\fi} -\def\pst@label{}\newcount\pst@count% initialize the labeling mechanism -\begin{description}\begin{pst@with@label}{P}} -{\end{pst@with@label}\end{description}} -\newenvironment{sproof}[2][]{\begin{spf@proof}[#1]{#2}}{\sproofend\end{spf@proof}} -\newenvironment{sProof}[2][]{\begin{spf@proof}[#1]{#2}}{\end{spf@proof}} -\newcommand{\spfidea}[2][]{\metasetkeys{spf}{#1}% -\stDMemph{\ifx\spf@type\@empty{Proof Idea}\else\spf@type\fi:} #2\sproofend} -\newenvironment{spfstep}[1][]{\metasetkeys{spf}{#1} -\ifx\spf@display\spf@flow\else\item[\the@pst@label]\fi -\ifx\spf@title\@empty\else{(\stDMemph{\spf@title})}\fi} -{\next@pst@label} -\newenvironment{sproofcomment}[1][]{\metasetkeys{spf}{#1} -\ifx\spf@display\spf@flow\else\item[\the@pst@label]\fi} -{\next@pst@label} -\newenvironment{spfcases}[2][]{\metasetkeys{spf}{#1} -\def\@test{#2}\ifx\@test\empty\else -\ifx\spf@display\spf@flow {#2}\else\item[\the@pst@label]{#2} \fi\fi -\begin{pst@with@label}{\pst@label,\number\count\count10}} -{\end{pst@with@label}\next@pst@label} -\newenvironment{spfcase}[2][]{\metasetkeys{spf}{#1} -\ifx\spf@display\spf@flow\else\item[\the@pst@label]\fi -\def\@test{#2}\ifx\@test\@empty\else{\stDMemph{#2}:}\fi -\begin{pst@with@label}{\pst@label,\number\count\count10}} -{\ifx\spf@display\spf@flow\else\sproofend\fi\end{pst@with@label}\next@pst@label} -\newenvironment{subproof}[1][]% -{\begin{pst@with@label}{\pst@label,\number\count\count10}} -{\ifx\spf@display\spf@flow\else\sproofend\fi\end{pst@with@label}} +\def\spf@step@kw{Step} +\AfterBabelLanguage{ngerman}{\input{sproof-ngerman.ldf}} +\newrobustcmd\spfsketch[2][]{% + \metasetkeys{spf}{#1}% + \sref@target% + \ifx\spf@display\spf@flow% + \else% + {\stDMemph{\ifx\spf@type\@empty\spf@proofsketch@kw\else\spf@type\fi}:} + \fi{ #2}% + \sref@label@id{this \ifx\spf@type\@empty\spf@proofsketch@kw\else\spf@type\fi}\sproofend% +}% +\newenvironment{spfeq}[2][]{% + \metasetkeys{spf}{#1}\sref@target% + \ifx\spf@display\spf@flow% + \else% + {\stDMemph{\ifx\spf@type\@empty\spf@proof@kw\else\spf@type\fi}:} #2% + \fi% display=flow + \begin{displaymath}\begin{array}{rcll}% +}{% + \end{array}\end{displaymath}% +}% +\newenvironment{spf@proof}[2][]{% + \metasetkeys{spf}{#1}% + \sref@target% + \count10=10% + \par\noindent% + \ifx\spf@display\spf@flow% + \else% + \stDMemph{\ifx\spf@type\@empty\spf@proof@kw\else\spf@type\fi}:% + \fi{ #2}% + \sref@label@id{this \ifx\spf@type\@empty\spf@proof@kw\else\spf@type\fi}% + \def\pst@label{}% + \newcount\pst@count% initialize the labeling mechanism + \begin{description}\begin{pst@with@label}{\pstlabel@prefix}% +}{% + \end{pst@with@label}\end{description}% +}% +\newenvironment{sproof}[2][]{\begin{spf@proof}[#1]{#2}}{\sproofend\end{spf@proof}}% +\newenvironment{sProof}[2][]{\begin{spf@proof}[#1]{#2}}{\end{spf@proof}}% +\newrobustcmd\spfidea[2][]{% + \metasetkeys{spf}{#1}% + \stDMemph{\ifx\spf@type\@empty{Proof Idea}\else\spf@type\fi:} #2\sproofend% +}% +\newenvironment{spfstep}[1][]{% + \metasetkeys{spf}{#1}% + \@in@omtexttrue% + \ifx\spf@display\spf@flow% + \else% + \item[\the@pst@label]% + \fi% + \ifx\spf@title\@empty\else{(\stDMemph{\spf@title})}\fi% + \sref@label@id{\pst@label}\ignorespaces% +}{% + \next@pst@label\@in@omtextfalse\ignorespaces% +}% +\newenvironment{sproofcomment}[1][]{% + \metasetkeys{spf}{#1}% + \ifx\spf@display\spf@flow\else\item[\the@pst@label]\fi% +}{% + \next@pst@label% +}% +\newenvironment{subproof}[2][]{% + \metasetkeys{spf}{#1}% + \def\@test{#2}% + \ifx\@test\empty% + \else% + \ifx\spf@display\spf@flow {#2}% + \else% + \item[\the@pst@label]{#2} % + \fi% + \fi% + \begin{pst@with@label}{\pst@label,\number\count\count10}% +}{% + \end{pst@with@label}\next@pst@label% +}% +\newenvironment{spfcases}[2][]{% + \def\@test{#1}% + \ifx\@test\empty% + \begin{subproof}[method=by-cases]{#2}% + \else% + \begin{subproof}[#1,method=by-cases]{#2}% + \fi% +}{% + \end{subproof}% +}% +\newenvironment{spfcase}[2][]{% + \metasetkeys{spf}{#1}% + \ifx\spf@display\spf@flow\else\item[\the@pst@label]\fi% + \def\@test{#2}% + \ifx\@test\@empty% + \else% + {\stDMemph{#2}: }% need blank here + \fi% + \begin{pst@with@label}{\pst@label,\number\count\count10} +}{% + \ifx\spf@display\spf@flow% + \else% + \sproofend% + \fi% + \end{pst@with@label}% + \next@pst@label% +}% +\newrobustcmd\spfcasesketch[3][]{% + \metasetkeys{spf}{#1}% + \ifx\spf@display\spf@flow% + \else% + \item[\the@pst@label]% + \fi% + \def\@test{#2}% + \ifx\@test\@empty% + \else% + {\stDMemph{#2}: }% + \fi#3% + \next@pst@label% +}% \srefaddidkey{just} \addmetakey{just}{method} \addmetakey{just}{premises} \addmetakey{just}{args} \newenvironment{justification}[1][]{}{} -\newcommand{\premise}[2][]{#2} -\newcommand{\justarg}[2][]{#2} +\newrobustcmd\premise[2][]{#2} +\newrobustcmd\justarg[2][]{#2} \endinput %% %% End of file `sproof.sty'. diff --git a/Master/texmf-dist/tex/latex/stex/sproof/sproof.sty.ltxml b/Master/texmf-dist/tex/latex/stex/sproof/sproof.sty.ltxml deleted file mode 100644 index 042ba7f7dc7..00000000000 --- a/Master/texmf-dist/tex/latex/stex/sproof/sproof.sty.ltxml +++ /dev/null @@ -1,125 +0,0 @@ -# -*- CPERL -*- -package LaTeXML::Package::Pool; -use strict; -use LaTeXML::Package; -RequirePackage('sref'); -DeclareOption('showmeta',''); -DefConstructor('\sproofend',""); -DefConstructor('\spfsketch OptionalKeyVals:pf{}', - "<omdoc:proof " - . "?&defined(&KeyVal(#1,'id'))(xml:id='&KeyVal(#1,'id')')()>\n" - . "?#2(<omdoc:omtext><omdoc:CMP>#2\n)()" - . "</omdoc:proof>\n"); -DefConstructor('\sProofEndSymbol {}',''); -DefEnvironment('{sproof} OptionalKeyVals:pf{}', - "<omdoc:proof " - . "?&KeyVal(#1,'for')(for='&hash_wrapper(&KeyVal(#1,'for'))')()" - . "?&defined(&KeyVal(#1,'id'))(xml:id='&KeyVal(#1,'id')')()>\n" - . "?#2(<omdoc:omtext>" - . "<omdoc:CMP>#2</omdoc:CMP>" - . "</omdoc:omtext>\n)()" - . "#body" - . "</omdoc:proof>\n"); -DefMacro('\sProof','\sproof'); -DefMacro('\endsProof','\endsproof'); -DefConstructor('\spfidea OptionalKeyVals:pf {}', - "<omdoc:proof " - . "?&defined(&KeyVal(#1,'id'))(xml:id='&KeyVal(#1,'id')')()" - . "?&KeyVal(#1,'for')(for='&hash_wrapper(&KeyVal(#1,'for'))')()>\n" - . "<omdoc:omtext><omdoc:CMP>#2</omdoc:omtext>\n" - . "</omdoc:proof>\n"); -DefEnvironment('{spfstep} OptionalKeyVals:pf', - "<omdoc:derive " - . "?&defined(&KeyVal(#1,'id'))(xml:id='&KeyVal(#1,'id')')()>" - . "<omdoc:CMP>#body</omdoc:derive>\n", - beforeConstruct=>sub { - $_[0]->maybeCloseElement('omdoc:CMP'); - });#$ -DefEnvironment('{sproofcomment} OptionalKeyVals:pf', - "<omdoc:omtext " - . "?&defined(&KeyVal(#1,'id'))(xml:id='&KeyVal(#1,'id')')()>" - . "<omdoc:CMP>#body</omdoc:CMP>" - . "</omdoc:omtext>"); -DefEnvironment('{spfcases} OptionalKeyVals:pf {}', - "<omdoc:derive " - . "?&defined(&KeyVal(#1,'id'))(xml:id='&KeyVal(#1,'id')')()>\n" - . "<omdoc:CMP>#2</omdoc:CMP>\n" - . "<omdoc:method xref='#proof-by-cases'>#body</omdoc:method>" - . "</omdoc:derive>\n"); -DefEnvironment('{spfcase} OptionalKeyVals:pf{}', - "<omdoc:proof " - . "?&defined(&KeyVal(#1,'id'))(xml:id='&KeyVal(#1,'id')')()>\n" - . "?#2(<omdoc:omtext>" - . "<omdoc:CMP>#2</omdoc:CMP>" - . "</omdoc:omtext>\n)()" - . "#body" - . "</omdoc:proof>\n"); -DefEnvironment('{subproof}[]', - "<omdoc:derive>" - . "?#1(<omdoc:CMP>#1</omdoc:CMP>)()" - . "<omdoc:method>" - . "<omdoc:proof>\n #body\n</omdoc:proof>" - . "</omdoc:method>" - ."</omdoc:derive>"); -DefKeyVal('just','id','Semiverbatim'); -DefKeyVal('just','method','Semiverbatim'); -DefKeyVal('just','premises','Semiverbatim'); -DefKeyVal('just','args','Semiverbatim'); -sub extractBodyText { - my ($box, $remove) = @_; - my $str = ''; - my @boxes = $box->unlist; - foreach my $b(@boxes) { - my $s = ''; - if ($b =~ /LaTeXML::Whatsit/) { - my $body = $b->getBody; - $s = $body ? extractBodyText($body, $remove) : ''; - } elsif ($b =~ /LaTeXML::Box/) { - $s = $b->toString || ''; - @{$b}[0] = '' if $remove; } - $str .= $s; } - $str =~ s/\s+/ /g; - $str; } - -DefEnvironment('{justification} OptionalKeyVals:just', sub { - my ($doc, $keys, %props) = @_; - my $text = extractBodyText($props{body}, 1); - my $node = LookupValue('_LastSeenCMP'); - #$node->appendText($text) if $node; - my $method = $keys ? $keys->getValue('method') : undef; - $doc->openElement("omdoc:method", $method ? (xref => $method) : ()); - $doc->absorb($props{body}) if $props{body}; - $doc->closeElement("omdoc:method"); - return; }); -DefMacro('\premise[]{}', sub { - my ($xref, $text) = ($_[1], $_[2]); - my @res = (T_CS('\premise@content')); - push(@res, T_OTHER('['), $xref->unlist, T_OTHER(']')) if $xref; - push(@res, T_SPACE, $text->unlist) if $text; - @res; }); -DefConstructor('\premise@content[]', - "<omdoc:premise xref='#1'/>"); -DefMacro('\justarg[]{}', sub { (($_[1] ? $_[1]->unlist : ()), -T_SPACE, $_[2]->unlist, T_SPACE); }); -Tag('omdoc:derive', afterClose=>sub { - my ($doc, $node) = @_; - my @children = grep($_->nodeType == XML_ELEMENT_NODE, $node->childNodes); - my $firstCMP = undef; - foreach my $child(@children) { - next unless ($child->localname || '') eq 'CMP'; - if ($child->hasChildNodes()) { - next unless $#{$child->childNodes} == 0; - next unless $child->firstChild->nodeType == XML_TEXT_NODE; } - - if ($firstCMP) { - $firstCMP->appendText($child->textContent); - $node->removeChild($child); - } else { $firstCMP = $child; } - } - });#$ -Tag('omdoc:proof',afterOpen=>\&numberIt,afterClose=>\&locateIt); -Tag('omdoc:derive',afterOpen=>\&numberIt,afterClose=>\&locateIt); -Tag('omdoc:method',afterOpen=>\&numberIt,afterClose=>\&locateIt); -Tag('omdoc:premise',afterOpen=>\&numberIt,afterClose=>\&locateIt); -Tag('omdoc:derive',afterOpen=>\&numberIt,afterClose=>\&locateIt); -1; diff --git a/Master/texmf-dist/tex/latex/stex/sref/sref.sty b/Master/texmf-dist/tex/latex/stex/sref/sref.sty index 1cc4034f812..ca35ac7dd99 100644 --- a/Master/texmf-dist/tex/latex/stex/sref/sref.sty +++ b/Master/texmf-dist/tex/latex/stex/sref/sref.sty @@ -7,99 +7,231 @@ %% sref.dtx (with options: `package') %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesPackage{sref}[2012/01/28 v1.0 Semantic Cross-References] -\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}} +\ProvidesPackage{sref}[2016/04/06 v1.2 Semantic Cross-References] \newif\ifextrefs\extrefsfalse \DeclareOption{extrefs}{\extrefstrue} +\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{metakeys}} \ProcessOptions \RequirePackage{metakeys} -\newcommand{\sref}[2][]{% -\@ifundefined{sref@part}{\sref@hlink[#1]{#2}}{\sref@hlink[#1]{\sref@part @#2}}} -\newcommand{\srefs}[3][]{% -\def\@test{#1}\ifx\@test\@empty\sref{#2} and \sref{#3}\else #1\fi} -\newcommand{\srefl}[3][]{% -\def\@test{#1}\ifx\@test\@empty\sref{#2} to \sref{#3}\else #1\fi} -\newcommand{\spageref}[1]{% -\@ifundefined{sref@part}{\sref@pageref{#1}}{\sref@pageref{\sref@part @#1}}} -\newif\ifhref\hreffalse -\AtBeginDocument{\@ifpackageloaded{hyperref}{\hreftrue}{\hreffalse}} -\newcommand\sref@href@ifh[2]{\ifhref\href{#1}{#2}\else#2\fi} -\newcommand\sref@hlink@ifh[2]{\ifhref\hyperlink{#1}{#2}\else#2\fi} -\newcommand\sref@target@ifh[2]{\ifhref\hypertarget{#1}{#2}\else#2\fi} -\def\sref@target% -{\ifx\sref@id\@empty\else% -\edef\@target{sref@\@ifundefined{sref@part}{}{\sref@part @}\sref@id @target} -\sref@target@ifh\@target{}\fi} -\newcommand\@sref@def[3]{\expandafter\gdef\csname sref@#1@#2\endcsname{#3}} -\ifextrefs\newwrite\refs@file\else\def\refs@file{\@auxout}\fi -\newcommand\sref@def[3]{%\@sref@def{#1}{#2}{#3}% -\protected@write\refs@file{}{\string\@sref@def{#1}{#2}{#3}}} +\RequirePackage{xspace} +\RequirePackage{etoolbox} +\addmetakey{sref}{linktext} +\addmetakey{sref}{fallback} +\addmetakey{sref}{pre} +\addmetakey{sref}{post} +\newcommand\sref[2][]{% + \metasetkeys{sref}{#1}% + \ifcsundef{sref@part}{% + \sref@hlink[\sref@linktext]{#2}{\sref@fallback}{\sref@pre}{\sref@post}% + }{% + \sref@hlink[\sref@linktext]{\sref@part @#2}{\sref@fallback}{\sref@pre}{\sref@post}% + }% + \xspace% +}% +\newcommand\srefs[3][]{% + \def\@test{#1}% + \ifx\@test\@empty% + \sref{#2} and \sref{#3}% + \else% + #1% + \fi% +}% +\newcommand\srefl[3][]{% + \def\@test{#1}% + \ifx\@test\@empty% + \sref{#2} to \sref{#3}% + \else% + #1% + \fi% +}% +\newcommand\spageref[1]{% + \ifcsundef{sref@part}{% + \sref@pageref{#1}% + }{% + \sref@pageref{\sref@part @#1}% + }% +}% +\newif\ifhref\hreffalse% +\AtBeginDocument{% + \@ifpackageloaded{hyperref}{% + \hreftrue% + }{% + \hreffalse% + }% +}% +\newcommand\sref@href@ifh[2]{% + \ifhref% + \href{#1}{#2}% + \else% + #2% + \fi% +}% +\newcommand\sref@hlink@ifh[2]{% + \ifhref% + \hyperlink{#1}{#2}% + \else% + #2% + \fi% +}% +\newcommand\sref@target@ifh[2]{% + \ifhref% + \hypertarget{#1}{#2}% + \else% + #2% + \fi% +}% +\def\sref@target{% + \ifx\sref@id\@empty% + \relax% + \else% + \edef\@target{sref@\ifcsundef{sref@part}{}{\sref@part @}\sref@id @target}% + \sref@target@ifh\@target{}% + \fi% +}% +\newcommand\@sref@def[3]{\csgdef{sref@#1@#2}{#3}} +\ifextrefs% + \newwrite\refs@file% +\else% + \def\refs@file{\@auxout}% +\fi% +\newcommand\sref@def[3]{% + %\@sref@def{#1}{#2}{#3}% + \protected@write\refs@file{}{\string\@sref@def{#1}{#2}{#3}}% +}% \addmetakey{srefaddidkey}{prefix} -\newcommand\srefaddidkey[2][]{\metasetkeys{srefaddidkey}{#1}% -\@metakeys@ext@clear@keys{#2}{sref@id}{}% id cannot have a default -\metakeys@ext@clear@keys{#2}{id}{}% -\metakeys@ext@showkeys{#2}{id}% -\define@key{#2}{id}{\edef\sref@id{\srefaddidkey@prefix ##1}% -\expandafter\edef\csname #2@id\endcsname{\srefaddidkey@prefix ##1}}} -\newcommand\makeextrefs[1]{\gdef\sref@part{#1}% -\makeatletter -\IfFileExists{\jobname.refs}{\input{\jobname.refs}}{}% -\immediate\openout\refs@file=\jobname.refs -\makeatother} +\newcommand\srefaddidkey[2][]{% + \metasetkeys{srefaddidkey}{#1}% + \@metakeys@ext@clear@keys{#2}{sref@id}{}% id cannot have a default + \metakeys@ext@clear@keys{#2}{id}{}% + \metakeys@ext@showkeys{#2}{id}% + \define@key{#2}{id}{% + \edef\sref@id{\srefaddidkey@prefix ##1}% + %\expandafter\edef\csname #2@id\endcsname{\srefaddidkey@prefix ##1}% + \csedef{#2@id}{\srefaddidkey@prefix ##1}% + }% +}% +\newcommand\makeextrefs[1]{% + \gdef\sref@part{#1}% + \makeatletter% + \IfFileExists{\jobname.refs}{\input{\jobname.refs}}{}% + \immediate\openout\refs@file=\jobname.refs + \makeatother% +}% \newcommand\sref@label[2]{% -\sref@def{\@ifundefined{sref@part}{}{\sref@part @}#2}{page}{\thepage}% -\sref@def{\@ifundefined{sref@part}{}{\sref@part @}#2}{label}{#1}} -\newcommand\sreflabel[2]{\message{sreflabel: #1, #2}\sref@label{#1 \@currentlabel}{#2}} -\newcommand\sref@label@id[1]{\ifx\sref@id\@empty\else\sref@label{#1}{\sref@id}\fi} -\newcommand{\sref@hlink}[2][]{\def\@test{#1}% -\@ifundefined{sref@#2@label}% -{\protect\G@refundefinedtrue\@latex@warning{reference #2 undefined}??}% -{\sref@hlink@ifh{sref@#2@target}{\ifx\@test\@empty\@nameuse{sref@#2@label}\else #1\fi}}} -\newcommand{\sref@page@label}[1]{p.~{#1}} -\newcommand{\sref@pageref}[1]{\@ifundefined{sref@#1@page}% -{\protect\G@refundefinedtrue\@latex@warning{reference #1 undefined}\sref@page@label{??}}% -{\sref@hlink@ifh{sref@#1@target}{\sref@page@label{\@nameuse{sref@#1@page}}}}} -\newcommand{\sref@href}[3][]{\def\@test{#1}% -\@ifundefined{sref@#2@label}% -{\protect\G@refundefinedtrue\@latex@warning{reference #2 undefined}??}% -{\@ifundefined{sref@#3@URI}% -{\protect\G@refundefinedtrue\@latex@warning{external refs of type #3 undefined}??}% -{\edef\@uri{\@nameuse{sref@#3@URI}.pdf\#sref@#2@target} -\edef\@label{\ifx\@test\@empty\@nameuse{sref@#2@label}\else #1\fi} -\sref@href@ifh\@uri\@label}}} -\ifextrefs -\newcommand{\extref}[3][]{\def\theextref{\sref@href[#1]{#2@#3}{#2}}% -\csname doextref@#2\endcsname} -\else -\newcommand{\extref}[3][]{\sref[#1]{#3}} -\fi -\ifextrefs -\newcommand{\extpageref}[3][]{\def\theextref{\sref@pageref[#1]{#2@#3}{#2}}% -\csname doextpageref@#2\endcsname} -\else -\newcommand{\extpageref}[3][]{\spageref[#1]{#3}} -\fi -\newcommand\extrefstyle[2]{\expandafter\gdef\csname doextref@#1\endcsname{#2}} -\newcommand\extpagerefstyle[2]{\expandafter\gdef\csname doextpageref@#1\endcsname{#2}} -\newcommand{\inputrefs}[2]{% -\@namedef{sref@#1@URI}{#2} -\makeatletter% -\IfFileExists{#2.refs}{\input{#2.refs}} - {\PackageError{sref}{Reference file #1.refs does not exist} - {Maybe you have to run LaTeX on #2.tex first}} -\makeatother} -\srefaddidkey{sequation} -\def\sref@sequation@heading{equation} -\newenvironment{sequation}[1][]{\metasetkeys{sequation}{#1}% -\ifx\sref@id\@empty\begin{displaymath}\else% no id, using equation* -\begin{equation}\sref@target\sref@label@id{\sref@sequation@heading~(\theequation)}\fi} -{\ifx\sref@id\@empty\end{displaymath}\else\end{equation}\fi} -\newenvironment{seqnarray}[1][]% -{\metasetkeys{sequation}{#1}\begin{eqnarray*}\sref@target% -\sref@label@id{\sref@sequation@heading~(\theequation)}} -{\end{eqnarray*}} -\newcommand\withcite[2]{#2~\cite{#1}} -\newenvironment{withcitation}[1]{\def\citeit{\cite{#1}}}{} + \sref@def{\ifcsundef{sref@part}{}{\sref@part @}#2}{page}{\thepage}% + \sref@def{\ifcsundef{sref@part}{}{\sref@part @}#2}{label}{#1}% +}% +\newcommand\sreflabel[2]{\sref@label{#1 \@currentlabel}{#2}} +\newcommand\sref@label@id[1]{% + \ifx\sref@id\@empty% + \relax% + \else% + \sref@label{#1}{\sref@id}% + \fi% +}% +\newcommand\sref@hlink[5][]{% + \edef\@linktext{#1}% + \edef\@fallback{#3}% + \ifcsundef{sref@#2@label}{% + \ifx\@fallback\@empty% warn about undefined links and show a substitute + \protect\G@refundefinedtrue\@latex@warning{reference #2 undefined}% + \ifx\@linktext\@empty% + ?#2?% + \else% + \@linktext% + \fi% + \else% + \protect\G@refundefinedtrue\@latex@warning{using fallback for undefined reference #2}% + \@fallback% + \fi + }{% + \edef\@link{#4\@nameuse{sref@#2@label}#5}% retrieve the reference label and prepost it + \ifx\@linktext\@empty% + \sref@hlink@ifh{sref@#2@target}{\@link}% + \else% + \sref@hlink@ifh{sref@#2@target}{\@linktext}% + \fi% + }% +}% +\newcommand\sref@page@label[1]{p.~{#1}} +\newcommand\sref@pageref[1]{% + \ifcsundef{sref@#1@page}{% + \protect\G@refundefinedtrue\@latex@warning{reference #1 undefined}\sref@page@label{??}% + }{% + \sref@hlink@ifh{sref@#1@target}{\sref@page@label{\@nameuse{sref@#1@page}}}% + }% +}% +\newcommand\sref@href[3][]{% + \edef\@linktext{#1}% + \ifcsundef{sref@#2@label}{% + \protect\G@refundefinedtrue\@latex@warning{reference #2 undefined}??% + }{% + \ifcsundef{sref@#3@URI}{% + \protect\G@refundefinedtrue\@latex@warning{external refs of type #3 undefined}??% + }{% + \edef\@uri{\@nameuse{sref@#3@URI}.pdf\#sref@#2@target}% + \edef\@label{\ifx\@linktext\@empty\@nameuse{sref@#2@label}\else\@linktext\fi}% + \sref@href@ifh\@uri\@label% + }% + }% +}% +\ifextrefs% + \newcommand\extref[3][]{% + \def\theextref{\sref@href[#1]{#2@#3}{#2}}% + \csname doextref@#2\endcsname% + }% +\else% + \newcommand\extref[3][]{\sref[#1]{#3}}% +\fi% +\ifextrefs% + \newcommand\extpageref[3][]{% + \def\theextref{\sref@pageref{#2@#3}}% + \csname doextpageref@#2\endcsname% + }% +\else% + \newcommand\extpageref[3][]{\spageref{#3}}% +\fi% +\newcommand\extrefstyle[2]{\csgdef{doextref@#1}{#2}}% +\newcommand\extpagerefstyle[2]{\csgdef{doextpageref@#1}{#2}}% +\newcommand\inputrefs[2]{% + %\@namedef{sref@#1@URI}{#2}% + \csdef{sref@#1@URI}{#2}% + \extrefstyle{#1}{\theextref}\extpagerefstyle{#1}{\theextref}% + \makeatletter% + \IfFileExists{#2.refs}{% + \message{Reading external references: #2.refs}\input{#2.refs}% + }{% + \PackageError{sref}{Reference file #2.refs does not exist}% + {Maybe you have to run LaTeX on #2.tex first}}% + \makeatother% +}% +\srefaddidkey{sequation}% +\def\sref@sequation@heading{equation}% +\newenvironment{sequation}[1][]{% + \metasetkeys{sequation}{#1}% + \ifx\sref@id\@empty% + \begin{displaymath}% + \else% no id, using equation* + \begin{equation}% + \sref@target\sref@label@id{\sref@sequation@heading~(\theequation)}% + \fi% +}{% + \ifx\sref@id\@empty% + \end{displaymath}% + \else% + \end{equation}% + \fi% +}% +\newenvironment{seqnarray}[1][]{% + \metasetkeys{sequation}{#1}% + \begin{eqnarray*}% + \sref@target% + \sref@label@id{\sref@sequation@heading~(\theequation)}% +}{% + \end{eqnarray*}% +}% +\newcommand\withcite[2]{#2~\cite{#1}}% +\newenvironment{withcitation}[1]{\def\citeit{\cite{#1}}}{}% \endinput %% %% End of file `sref.sty'. diff --git a/Master/texmf-dist/tex/latex/stex/sref/sref.sty.ltxml b/Master/texmf-dist/tex/latex/stex/sref/sref.sty.ltxml deleted file mode 100644 index 5d888c6715a..00000000000 --- a/Master/texmf-dist/tex/latex/stex/sref/sref.sty.ltxml +++ /dev/null @@ -1,56 +0,0 @@ -package LaTeXML::Package::Pool; -use strict; -use LaTeXML::Package; -DeclareOption('extrefs',''); -RequirePackage('metakeys'); -sub withhash {'#';} -DefConstructor('\sref[]{}', - "<omdoc:oref href='&withhash()#2'/>"); -DefConstructor('\srefs[]{}', - "<omdoc:oref href='&withhash()#2'/>"); -DefConstructor('\srefl[]{}', - "<omdoc:oref href='&withhash()#2'/>"); -DefConstructor('\spageref{}', - "<omdoc:oref href='&withhash()#1'/>"); -DefConstructor('\makeextrefs{}',''); -DefConstructor('\extref[]{}{}', - "<omdoc:oref href='#2@#3'/>"); -DefConstructor('\theextref',''); -DefConstructor('\extpageref[]{}{}', - "<omdoc:oref href='#2@#3'/>"); -DefConstructor('\theextref',''); -DefConstructor('\extrefstyle{}{}',""); -DefConstructor('\extrefstyle{}{}',""); -DefConstructor('\inputrefs{}{}',''); -DefEnvironment('{sequation} OptionalKeyVals', - "<ltx:equation " - . "?&KeyVal(#1,'id')(xml:id='&KeyVal(#1,'id')' " - . "refnum='#refnum')(xml:id='#id')>" - . "<ltx:Math mode='display'>" - . "<ltx:XMath>#body</ltx:XMath>" - . "</ltx:Math>" - . "</ltx:equation>", - mode=>'display_math', - properties=> sub { RefStepCounter('equation') }, - locked=>1); -DefMacro('\seqnarray OptionalKeyVals','\begin{eqnarray*}'); -DefMacro('\endseqnarray','\end{eqnarray*}'); -DefMacro('\withcite{}{}','\begin{withcitation}{#1}#2\citeit\end{withcitation}'); -DefConstructor('\citeit',"<omdoc:citation/> ", -afterConstruct => sub { - my ($document,$whatsit) = @_; - # LibXML acrobatics, since we can't talk about the xml:id prior to construction's end - # (and please do correct me if this is inaccurate) - my $node = $document->getNode; - my ($citenode) = $document->findnodes('preceding-sibling::omdoc:citation',$node); - my ($phrase_parent) = $document->findnodes('ancestor::ltx:text[@xml:id]',$node); - return unless (defined $phrase_parent) && (defined $citenode); - my $id = $phrase_parent->getAttribute('xml:id'); - my $refs = $phrase_parent->getAttribute('citeit-refs'); - $phrase_parent->removeAttribute('citeit-refs'); - $citenode->setAttribute('for',$id); - $citenode->setAttribute('refs',$refs); -});#$ -DefEnvironment('{withcitation}{}', - "<ltx:text citeit-refs='#1'>#body</ltx:text>"); -1; diff --git a/Master/texmf-dist/tex/latex/stex/statements/statements.sty b/Master/texmf-dist/tex/latex/stex/statements/statements.sty index 4c8f57560e8..d3c0e44382a 100644 --- a/Master/texmf-dist/tex/latex/stex/statements/statements.sty +++ b/Master/texmf-dist/tex/latex/stex/statements/statements.sty @@ -7,31 +7,39 @@ %% statements.dtx (with options: `package') %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesPackage{statements}[2012/01/28 v1.1 Semantic Markup for Statements] -\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}} -\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{omdoc}} +\ProvidesPackage{statements}[2016/04/06 v1.2 Semantic Markup for Statements] +\newif\ifdef@index\def@indexfalse +\DeclareOption{defindex}{\def@indextrue} +\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{omtext}} \ProcessOptions \RequirePackage{omtext} -\RequirePackage{modules} +\RequirePackage[base]{babel} \RequirePackage[hyperref]{ntheorem} \theoremstyle{plain} +\AfterBabelLanguage{ngerman}{\input{statements-ngerman.ldf}} \providecommand\STpresent[1]{#1} \def\define@statement@env#1{% \newenvironment{#1}[1][]{\metasetkeys{omtext}{##1}\sref@target% +\@in@omtexttrue% \ifx\omtext@display\st@flow\else% \ifx\omtext@title\@empty\begin{ST#1Env}\else\begin{ST#1Env}[\omtext@title]\fi% \ifx\sref@id\@empty\else\label{#1.\sref@id}\fi -\csname st@#1@initialize\endcsname\fi +\csname st@#1@initialize\endcsname\fi% display \ifx\sref@id\@empty\sref@label@id{here}\else% -\sref@label@id{\STpresent{\csname ST#1EnvKeyword\endcsname}~\@currentlabel}\fi} -{\csname st@#1@terminate\endcsname\ifx\omtext@display\st@flow\else\end{ST#1Env}\fi}} +\sref@label@id{\STpresent{\csname ST#1EnvKeyword\endcsname}~\@currentlabel}\fi% +\ignorespaces} +{\csname st@#1@terminate\endcsname\ifx\omtext@display\st@flow\else\end{ST#1Env}\fi% +\omtext@post@skip\@in@omtextfalse}} \newenvironment{assertion}[1][]{\metasetkeys{omtext}{#1}\sref@target% -\ifx\omtext@display\st@flow\else% +\@in@omtexttrue% +\ifx\omtext@display\st@flow\itshape\noindent\ignorespaces% +\else% display!=flow \ifx\omtext@title\@empty\begin{ST\omtext@type AssEnv}% \else\begin{ST\omtext@type AssEnv}[\omtext@title]\fi\fi% \ifx\omtext@type\@empty\sref@label@id{here}\else% -\sref@label@id{\STpresent{\csname ST\omtext@type AssEnvKeyword\endcsname}~\@currentlabel}\fi} -{\ifx\omtext@display\st@flow\else\end{ST\omtext@type AssEnv}\fi} +\sref@label@id{\STpresent{\csname ST\omtext@type AssEnvKeyword\endcsname}~\@currentlabel} +\fi}%display=flow +{\ifx\omtext@display\st@flow\else\end{ST\omtext@type AssEnv}\@in@omtextfalse\fi} \def\st@theorem@kw{Theorem} \def\st@lemma@kw{Lemma} \def\st@proposition@kw{Proposition} @@ -41,10 +49,12 @@ \def\st@postulate@kw{Postulate} \def\st@obligation@kw{Obligation} \def\st@assumption@kw{Assumption} +\def\st@rule@kw{Rule} \def\st@observation@kw{Observation} +\def\st@remark@kw{Remark} \theorembodyfont{\itshape} \theoremheaderfont{\normalfont\bfseries} -\newtheorem{STtheoremAssEnv}{\st@theorem@kw} +\newtheorem{STtheoremAssEnv}{\st@theorem@kw}[section] \newtheorem{STlemmaAssEnv}[STtheoremAssEnv]{\st@lemma@kw} \newtheorem{STpropositionAssEnv}[STtheoremAssEnv]{\st@proposition@kw} \newtheorem{STcorollaryAssEnv}[STtheoremAssEnv]{\st@corollary@kw} @@ -54,6 +64,9 @@ \newtheorem{STobligationAssEnv}[STtheoremAssEnv]{\st@obligation@kw} \newtheorem{STassumptionAssEnv}[STtheoremAssEnv]{\st@assumption@kw} \newtheorem{STobservationAssEnv}[STtheoremAssEnv]{\st@observation@kw} +\theorembodyfont{\rm} +\newtheorem{STremarkAssEnv}[STtheoremAssEnv]{\st@remark@kw} +\newtheorem{STruleAssEnv}[STtheoremAssEnv]{\st@rule@kw} \def\st@example@initialize{}\def\st@example@terminate{} \define@statement@env{example} \def\st@example@kw{Example} @@ -68,88 +81,159 @@ \addmetakey{symboldec}{functions} \addmetakey{symboldec}{role} \addmetakey*{symboldec}{title} -\addmetakey{symboldec}{name} +\addmetakey*{symboldec}{name} \addmetakey{symboldec}{subject} \addmetakey*{symboldec}{display} -\def\symboldec@type{Symbol} \newenvironment{symboldec}[1][]{\metasetkeys{symboldec}{#1}\sref@target\st@indeftrue% -\ifx\symboldec@display\st@flow\else{\stDMemph{\symboldec@type} \symboldec@name:}\fi% +\ifx\symboldec@display\st@flow\else{\noindent\stDMemph{\symdef@type} \symboldec@name:}\fi% \ifx\symboldec@title\@empty~\else~(\stDMemph{\symboldec@title})\par\fi}{} -\newcommand{\symtype}[2]{Type (#1): $#2$} +\srefaddidkey{symtype} +\addmetakey*{symtype}{system} +\addmetakey*{symtype}{for} +\newcommand\type@type{Type} +\newcommand\symtype[3][]{\metasetkeys{symtype}{#1}\sref@target% +\noindent\type@type \ifx\symtype@\@empty\else (\symtype@system)\fi #2: $#3$} +\newcommand\inlinetypedec[3][]{\metasetkeys{symtype}{#1}\sref@target{\def\thedectype{#2}#3}} +\def\st@typedec@kw{Type Declaration} +\theorembodyfont{\upshape} +\newtheorem{STtypedecEnv}[STtheoremAssEnv]{\st@typedec@kw} +\newenvironment{typedec}[2][]{\metasetkeys{omtext}{#1}\sref@target% +\def\thedectype{#2}% +\ifx\omtext@display\st@flow\else% +\ifx\omtext@title\@empty\begin{STtypedecEnv}\else\begin{STtypedecEnv}[\omtext@title]\fi% +\ifx\sref@id\@empty\else\label{typedec.\sref@id}\fi +\ifx\sref@id\@empty\sref@label@id{here}\else% +\sref@label@id{\STpresent{\csname STtypedecEnvKeyword\endcsname}~\@currentlabel}\fi% +\ignorespaces} +{\ifx\omtext@display\st@flow\else\end{STtypedecEnv}\fi\omtext@post@skip} \newif\ifst@indef\st@indeffalse \newenvironment{definition}[1][]{\metasetkeys{omtext}{#1}\sref@target\st@indeftrue% \ifx\omtext@display\st@flow\else% \ifx\omtext@title\@empty\begin{STdefinitionEnv}\else\begin{STdefinitionEnv}[\omtext@title]\fi\fi% \ifx\sref@id\@empty\sref@label@id{here}\else% -\sref@label@id{\STpresent{\csname STdefinitionEnvKeyword\endcsname}~\@currentlabel}\fi} +\sref@label@id{\STpresent{\csname STdefinitionEnvKeyword\endcsname}~\@currentlabel}\fi% +\ignorespaces} {\ifx\omtext@display\st@flow\else\end{STdefinitionEnv}\fi} \def\st@definition@kw{Definition} \theorembodyfont{\upshape} \newtheorem{STdefinitionEnv}[STtheoremAssEnv]{\st@definition@kw} -\def\notemph#1{{\bf{#1}}} +\def\notemph#1{#1} \def\st@notation@terminate{} \def\st@notation@initialize{} \define@statement@env{notation} \def\st@notation@kw{Notation} \theorembodyfont{\upshape} \newtheorem{STnotationEnv}[STtheoremAssEnv]{\st@notation@kw} -\def\st@def@target#1#2{\def\@test{#1}% +\newcommand\st@def@target[3]{\def\@symname{#1}\def\@verbname{#2}% \ifst@indef% if we are in a definition or such -\ifx\omtext@theory\@empty% if there is no theory attribute \@ifundefined{mod@id}% if we are not in a module {\PackageWarning{statements}{definiendum in unidentified module\MessageBreak \protect\definiendum, \protect\defi, \protect\defii, \protect\defiii\MessageBreak can only be referenced when called in a module with id key}}% -{\ifx\@test\@empty% -\expandafter\sref@target@ifh{sref@#2@\mod@id @target}{}\else% -\expandafter\sref@target@ifh{sref@#1@\mod@id @target}{}\fi}% -\else\expandafter\sref@target@ifh{sref@#1@\omtext@theory @target}{}\fi% -\else\PackageError{statements}% +{% now we are in a module +\edef\@@cd{\ifx\omtext@theory\@empty\mod@id\else\omtext@theory\fi}% +\edef\@@name{\ifx\@symname\@empty\@verbname\else\@symname\fi}% +\defemph{\@ifundefined{sref@\@@name @\@@cd @defined}% +{\expandafter\sref@target@ifh{sref@\@@name @\@@cd @target}{#3}}% +{#3}}% +\expandafter\gdef\csname sref@\@@name @\@@cd @defined\endcsname{yes}% +\ifmetakeys@showmeta\metakeys@show@keys{\@@cd}{name:\@@name}\fi}% +\else% st@indef +\PackageError{statements}% {definiendum outside definition context\MessageBreak \protect\definiendum, \protect\defi, \protect\defii, \protect\defiii\MessageBreak do not make sense semantically outside a definition.\MessageBreak Consider wrapping the defining phrase in a \protect\inlinedef}% -\fi} +\fi}% st@indef \newcommand\@termdef[2][]{\def\@test{#1}% \@ifundefined{mod@id}{}{\ifx\@test\@empty\def\@@name{#2}\else\def\@@name{#1}\fi% \termdef{\mod@id @\@@name}{#2}}} -\newcommand\definiendum[2][]{\st@def@target{#1}{#2}\defemph{#2}} -\newcommand{\notatiendum}[2][]{\notemph{#2}} -\newcommand{\defi}[2][]{\definiendum[#1]{#2}\omdoc@index[#1]{#2}} -\newcommand{\adefi}[3][]{\def\@test{#1}% -\ifx\@test\@empty\definiendum[#3]{#2}% -\else\definiendum[#1]{#2}\omdoc@index[#1]{#3}\fi} -\newcommand{\defii}[3][]{\st@def@target{#1}{#2-#3}\defemph{#2 #3}\@twin[#1]{#2}{#3}} -\newcommand{\adefii}[4][]{\def\@test{#1}% -\ifx\@test\@empty\definiendum[#3-#4]{#2}% -\else\definiendum[#1]{#2}\@twin[#1]{#3}{#4}\fi} -\newcommand{\defiii}[4][]{\st@def@target{#1}{#2-#3-#4}\defemph{#2 #3 #4}\@atwin[#1]{#2}{#3}{#4}} -\newcommand{\adefiii}[5][]{\def\@test{#1}% -\ifx\@test\@empty\definiendum[#3-#4-#5]{#2}% -\else\definiendum[#1]{#2}\@atwin[#1]{#3}{#4}{#5}\fi} -\newcommand{\inlineex}[2][]{\metasetkeys{omtext}{#1}\sref@target\sref@label@id{here}#2} -\newcommand{\inlinedef}[2][]{\metasetkeys{omtext}{#1}\sref@target\sref@label@id{here}\st@indeftrue #2} -\addmetakey[\mod@id]{termref}{cd} -\addmetakey{termref}{cdbase} -\addmetakey{termref}{name} -\addmetakey{termref}{role} -\def\termref@set#1#2{\def\termref@name{#2}\metasetkeys{termref}{#1}} -\newcommand{\termref}[2][]{\metasetkeys{termref}{#1}\st@termref{#2}} -\def\st@termref#1{\ifx\termref@name\@empty\def\termref@name{#1}\fi% -\ifx\termref@cdbase\@empty\mod@termref\termref@cd\termref@name{#1}% -\else\sref@href@ifh\termref@cdbase{#1}\fi} -\newcommand\atrefi[3][]{\def\@test{#1}\ifx\@test\@empty\termref[name=#3]{#2}\else\termref[cd=#1,name=#3]{#2}\fi} +\newcommand\definiendum[2][]{\st@def@target{#1}{#2}{#2}} +\newcommand\notatiendum[2][]{\notemph{#2}} +\newcommand\defi[2][]{\st@def@target{#1}{#2}{#2}\def\@phrase{#2}\@defi} +\newcommand\@defi[1][]{\ifdef@index\omdoc@indexi[#1]{\@phrase}\fi\xspace} +\newcommand\defis[2][]{\st@def@target{#1}{#2}{#2s}\def\@phrase{#2}\@defi} +\newcommand\adefi[3][]{\def\@name{#1}\def\@verb{#3}% +\st@def@target{#1}{#3}{#2}\@adefi} +\newcommand\@adefi[1][]{% +\ifdef@index% +\ifx\@name\@empty\omdoc@indexi[#1]{\@verb}% +\else\omdoc@indexi[at=\@name,#1]{\@verb}\fi% +\fi\xspace} +\newcommand\@defii[1][]{\ifdef@index\@twin[#1]{\@pone}{\@ptwo}\fi\xspace} +\newcommand\defii[3][]{\def\@pone{#2}\def\@ptwo{#3}% +\st@def@target{#1}{#2-#3}{#2 #3}\@defii} +\newcommand\defiis[3][]{\def\@pone{#2}\def\@ptwo{#3}% +\st@def@target{#1}{#2-#3}{#2 #3s}\@defii} +\newcommand\adefii[4][]{\def\@name{#1}\def\@pone{#3}\def\@ptwo{#4}% +\st@def@target{#1}{#3-#4}{#2}\@adefii} +\newcommand\@adefii[1][]{% +\ifdef@index% +\ifx\@name\@empty\@twin[#1]{\@pone}{\@ptwo}% +\else\@twin[at=\@name,#1]{\@pone}{\@ptwo}\fi% +\fi\xspace} +\newcommand\defiii[4][]{\def\@pone{#2}\def\@ptwo{#3}\def\@pthree{#4}% +\st@def@target{#1}{#2-#3-#4}{#2 #3 #4}\@defiii} +\newcommand\@defiii[1][]{\ifdef@index\@atwin[#1]{\@pone}{\@ptwo}{\@pthree}\fi\xspace} +\newcommand\defiiis[4][]{\def\@pone{#2}\def\@ptwo{#3}\def\@pthree{#4}% +\st@def@target{#1}{#2-#3-#4}{#2 #3 #4s}\@defiii} +\newcommand\adefiii[5][]{\def\@name{#1}\def\@pone{#3}\def\@ptwo{#4}\def\@pthree{#3}% +\st@def@target{#1}{#3-#4-#5}{#2}\@adefiii} +\newcommand\@adefiii[1][]{% +\ifdef@index% +\ifx\@name\@empty\@atwin[#1]{\@pone}{\@ptwo}{\@pthree}% +\else\@atwin[at=\@name,#1]{\@pone}{\@ptwo}{\@pthree}\fi% +\fi\xspace} +\newcommand\inlineex[2][]{\metasetkeys{omtext}{#1}% +\sref@target\sref@label@id{here}#2} +\newcommand\inlineass[2][]{\metasetkeys{omtext}{#1}% +\sref@target\sref@label@id{here}#2} +\newcommand\inlinedef[2][]{\metasetkeys{omtext}{#1}% +\if@in@omtext\else% we are not in an omtext or statement +\PackageError{modules}{\protect\inlinedef\space outside a statement!}% +{Try wrapping the paragraph in a\MessageBreak +\protect\begin{omtext}, \protect\begin{assertion}, \protect\begin{axiom}, ... \MessageBreak +whatever is suitable semantically}\fi% +\sref@target\sref@label@id{here}\st@indeftrue #2} +\addmetakey*{termref}{cd} +\addmetakey*{termref}{cdbase} +\addmetakey*{termref}{name} +\addmetakey*{termref}{role} +\newcommand\termref[2][]{\metasetkeys{termref}{#1}% + \ifx\termref@cd\@empty\def\termref@cd{\mod@id}\fi% + \ifx\termref@name\@empty\def\termref@name{#2}\fi% + \@ifundefined{sref@\termref@name @\termref@cd @defined} + {\ifx\termref@cdbase\@empty% external reference + \mod@termref\termref@cd\termref@name{#2}% + \else\sref@href@ifh\termref@cdbase{#2}% + \fi}% + {\sref@hlink@ifh{sref@\termref@name @\termref@cd @target}{#2}}% +} +\newcommand\atrefi[3][]{\def\@test{#1}% +\ifx\@test\@empty\termref[name=#3]{#2}\else\termref[cd=#1,name=#3]{#2}\fi} \newcommand\atrefii[4][]{\atrefi[#1]{#2}{#3-#4}} \newcommand\atrefiii[5][]{\atrefi[#1]{#2}{#3-#4-#5}} -\newcommand{\trefi}[2][]{\atrefi[#1]{#2}{#2}} -\newcommand{\trefii}[3][]{\atrefi[#1]{#2 #3}{#2-#3}} -\newcommand{\trefiii}[4][]{\atrefi[#1]{#2 #3 #4}{#2-#3-#4}} +\newcommand\trefi[2][]{\atrefi[#1]{#2}{#2}} +\newcommand\trefii[3][]{\atrefi[#1]{#2 #3}{#2-#3}} +\newcommand\trefiii[4][]{\atrefi[#1]{#2 #3 #4}{#2-#3-#4}} +\newcommand\trefis[2][]{\atrefi[#1]{#2s}{#2}} +\newcommand\trefiis[3][]{\atrefi[#1]{#2 #3s}{#2-#3}} +\newcommand\trefiiis[4][]{\atrefi[#1]{#2 #3 #4s}{#2-#3-#4}} \providecommand{\termemph}[1]{#1} \providecommand{\defemph}[1]{{\textbf{#1}}} \providecommand{\stDMemph}[1]{{\textbf{#1}}} -\newcommand{\symref}[2]{\@nameuse{mod@symref@#1}{#2}} +\newcommand\term[2][]{\def\@test{#1}% +\ifx\@test\@empty\else +\@ifundefined{module@defs@#1}{\PackageWarning{statements}% +{{\protect\term} specifies module #1 which is not in + scope\MessageBreak import it via e.g. via \protect\importmhmodule}}{} +\fi% +\PackageWarning{statements}% +{Dangling link (\protect\term) for "#2" still needs to be specified}% +\textcolor{blue}{\underline{#2}}} +\newcommand\symref[2]{\@nameuse{mod@symref@#1}{#2}} \newcommand\defin[2][]{\defi[#1]{#2}% \PackageWarning{statements}{\protect\defin\space is deprecated, use \protect\defi\space instead}} \newcommand\twindef[3][]{\defii[#1]{#2}{#3}% diff --git a/Master/texmf-dist/tex/latex/stex/statements/statements.sty.ltxml b/Master/texmf-dist/tex/latex/stex/statements/statements.sty.ltxml deleted file mode 100644 index 92d7f8d8b84..00000000000 --- a/Master/texmf-dist/tex/latex/stex/statements/statements.sty.ltxml +++ /dev/null @@ -1,365 +0,0 @@ -# -*- CPERL -*- -package LaTeXML::Package::Pool; -use strict; -use LaTeXML::Package; -RequirePackage('omtext'); -RequirePackage('modules'); -sub lowcase {my ($string) = @_; $string ? return lc(ToString($string)) : return('')}#$ -sub dashed { join('-',map($_->toString,@_));}#$ -sub makeNCName { - my ($name) = @_; - my $ncname=$name; - $ncname=~s/\s/_/g; #Spaces to underscores - $ncname="_$ncname" if $ncname!~/^(\w|_)/; #Ensure start with letter or underscore - ##More to come... - $ncname; -} -sub simple_wrapper { - #Deref if array reference - my @input; - foreach (@_) { - if (ref $_ && $_ =~ /ARRAY/ && $_ !~ /LaTeXML/) { - @input=(@input,@$_); - } else - { push (@input,$_); } - } - return '' if (!@input); - @input = map(split(/\s*,\s*/,ToString($_)),@input); - my $output=join(" ",@input); - $output=~s/(^ )|[{}]//g; #remove leading space and list separator brackets - $output||''; -} -sub hash_wrapper{ - #Deref if array reference - my @input; - foreach (@_) { - if (ref $_ && $_ =~ /ARRAY/ && $_ !~ /LaTeXML/) { - @input=(@input,@$_); - } else - { push (@input,$_); } - } - return '' if (!@input); - @input = map(split(/\s*,\s*/,ToString($_)),@input); - my $output=join(".sym #",@input); - $output=~s/(^\.sym )|[{}]//g; #remove leading space and list separator brackets - "#$output"||''; -} -DefEnvironment('{assertion} OptionalKeyVals:omtext', - "<omdoc:assertion " - . "?&KeyVal(#1,'id')(xml:id='&KeyVal(#1,'id')')() " - . "?&KeyVal(#1,'theory')(theory='&KeyVal(#1,'theory')')() " - . "type='&lowcase(&KeyVal(#1,'type'))'>" - . "?&KeyVal(#1,'title')(<dc:title>&KeyVal(#1,'title')</dc:title>)()" - . "<omdoc:CMP>#body" - ."</omdoc:assertion>\n"); -DefEnvironment('{example} OptionalKeyVals:omtext', - "<omdoc:example " - . "?&KeyVal(#1,'id')(xml:id='&KeyVal(#1,'id')')() " - . "?&KeyVal(#1,'for')(for='&hash_wrapper(&KeyVal(#1,'for'))')()>" - . "?&KeyVal(#1,'title')(<dc:title>&KeyVal(#1,'title')</dc:title>)()" - . "<omdoc:CMP>#body" - . "</omdoc:example>\n"); -DefEnvironment('{axiom} OptionalKeyVals:omtext', - "<omdoc:axiom " - . "?&KeyVal(#1,'id')(xml:id='&KeyVal(#1,'id')')()>" - . "?&KeyVal(#1,'title')(<dc:title>&KeyVal(#1,'title')</dc:title>)()" - . "<omdoc:CMP>#body" - . "</omdoc:axiom>\n"); -DefEnvironment('{symboldec} OptionalKeyVals:symboldec', - "<omdoc:symbol " - . "?&KeyVal(#1,'id')(xml:id='&KeyVal(#1,'id')')" - . "(xml:id='&makeNCName(&KeyVal(#1,'name')).def.sym')" - . "name='&KeyVal(#1,'name')'>" - . "?&KeyVal(#1,'title')(<dc:title>&KeyVal(#1,'title')</dc:title>)()" - . "<dc:description>#body" - ."</omdoc:symbol>\n"); -DefConstructor('\symtype{}{}', - "<omdoc:type system='#1'><ltx:Math><ltx:XMath>#2</ltx:XMath></ltx:Math></omdoc:type>"); -sub definitionBody { - my ($doc, $keyvals, %props) = @_; - my $for = $keyvals->getValue('for') if $keyvals; - my $type = $keyvals->getValue('type') if $keyvals; - my %for_attr=(); - if (ToString($for)) { - $for = ToString($for); - $for =~ s/^{(.+)}$/$1/eg; - foreach (split(/,\s*/,$for)) { - $for_attr{$_}=1; - }} - if ($props{theory}) { - my @symbols = @{$props{defs} || []}; - foreach my $symb(@symbols) { - next if $for_attr{$symb}; - $for_attr{$symb}=1; - $doc->insertElement('omdoc:symbol', undef, (name=>$symb, "xml:id"=>makeNCName("$symb.def.sym"))); - } - } - my %attrs = (); - $for = join(" ",(keys %for_attr)); - $attrs{'for'} = $for if $for; - my $id = $keyvals->getValue('id') if $keyvals; - $attrs{'xml:id'} = $id if $id; - $attrs{'type'} = $type if $type; - if ($props{theory}) { - $doc->openElement('omdoc:definition', %attrs); - } else { - $attrs{'type'}='definition'; - $doc->openElement('omdoc:omtext', %attrs); - } - my $title = $keyvals->getValue('title') if $keyvals; - if ($title) { - $doc->openElement('omdoc:metadata'); - $doc->openElement('dc:title'); - $doc->absorb($title); - $doc->closeElement('dc:title');} - $doc->openElement('omdoc:CMP'); - $doc->absorb($props{body}) if $props{body}; - $doc->maybeCloseElement('omdoc:CMP'); - if ($props{theory}) { - $doc->closeElement('omdoc:definition'); - } else { - $doc->closeElement('omdoc:omtext'); - } - return; } -DefEnvironment('{definition} OptionalKeyVals:omtext', sub{definitionBody(@_)}, - afterDigestBegin=>sub { - my ($stomach, $whatsit) = @_; - my @symbols = (); - $whatsit->setProperty(theory=>LookupValue('current_module')); - $whatsit->setProperty(defs=>\@symbols); - AssignValue('defs', \@symbols); return; }, - afterDigest => sub { AssignValue('defs', undef); return; });#$ -DefEnvironment('{notation} OptionalKeyVals:omtext', - "<omdoc:definition " - . "?&KeyVal(#1,'id')(xml:id='&KeyVal(#1,'id').not')()" - . "?&KeyVal(#1,'for')(for='&simple_wrapper(&KeyVal(#1,'for'))')()>" - . "?&KeyVal(#1,'title')(<dc:title>&KeyVal(#1,'title')</dc:title>)()" - . "<omdoc:CMP>#body" - . "</omdoc:definition>\n"); -DefConstructor('\notatiendum OptionalKeyVals:notation {}', - "<ltx:text class='notatiendum'>#2</ltx:text>"); -DefConstructor('\definiendum [] {}', - "<omdoc:term role='definiendum' name='#name' cd='#theory'>#2</omdoc:term>", - afterDigest => sub { - my ($stomach, $whatsit) = @_; - my $addr = LookupValue('defs'); - my $name = $whatsit->getArg(1); - $name = $whatsit->getArg(2) unless $name; - $whatsit->setProperty(name=>$name->toString); - push(@$addr, $name->toString) if ($addr and $name); - $whatsit->setProperty(theory=>LookupValue('current_module')); - return; });#$ -DefConstructor('\defi[]{}', - "<omdoc:idx>" - . "<omdoc:idt>" - . "<omdoc:term role='definiendum' name='?#1(#1)(#2)' cd='#theory'>#2</omdoc:term>" - . "</omdoc:idt>" - . "<omdoc:ide index='default'><omdoc:idp>#2</omdoc:idp></omdoc:ide>" - ."</omdoc:idx>", - afterDigest => sub { - my ($stomach, $whatsit) = @_; - my $addr = LookupValue('defs'); - my $name = $whatsit->getArg(1); - $name = $whatsit->getArg(2) unless $name; - push(@$addr, $name->toString) if ($addr and $name); - $whatsit->setProperty(theory=>LookupValue('current_module'));#$ - return; }, - alias=>'\defi'); -DefConstructor('\adefi[]{}{}', - "<omdoc:idx>" - . "<omdoc:idt>" - . "<omdoc:term role='definiendum' name='?#1(#1)(#3)' cd='#theory'>#2</omdoc:term>" - . "</omdoc:idt>" - . "<omdoc:ide index='default'><omdoc:idp>#3</omdoc:idp></omdoc:ide>" - ."</omdoc:idx>", - afterDigest => sub { - my ($stomach, $whatsit) = @_; - my $addr = LookupValue('defs'); - my $name = $whatsit->getArg(1); - $name = $whatsit->getArg(3) unless $name; - push(@$addr, $name->toString) if ($addr and $name); - $whatsit->setProperty(theory=>LookupValue('current_module'));#$ - return; }, - alias=>'\adefi'); -DefConstructor('\defii[]{}{}', - "<omdoc:idx>" - . "<omdoc:idt>" - . "<omdoc:term role='definiendum' name='?#1(#1)(&dashed(#2,#3))' cd='#theory'>" - . "#2 #3" - . "</omdoc:term>" - . "</omdoc:idt>" - . "<omdoc:ide index='default'>" - . "<omdoc:idp>#2</omdoc:idp>" - . "<omdoc:idp>#3</omdoc:idp>" - . "</omdoc:ide>" - ."</omdoc:idx>", - afterDigest => sub { - my ($stomach, $whatsit) = @_; -my $addr = LookupValue('defs'); - my $name = $whatsit->getArg(1); - $name = $name->toString if $name; - $name = $whatsit->getArg(2)->toString.'-'.$whatsit->getArg(3)->toString unless $name; - push(@$addr, $name) if ($addr and $name); - $whatsit->setProperty(theory=>LookupValue('current_module')); - return; }, - alias=>'\defii');#$ -DefConstructor('\adefii[]{}{}{}', - "<omdoc:idx>" - . "<omdoc:idt>" - . "<omdoc:term role='definiendum' name='?#1(#1)(&dashed(#3,#4))' cd='#theory'>" - . "#2" - . "</omdoc:term>" - . "</omdoc:idt>" - . "<omdoc:ide index='default'>" - . "<omdoc:idp>#3</omdoc:idp>" - . "<omdoc:idp>#4</omdoc:idp>" - . "</omdoc:ide>" - ."</omdoc:idx>", - afterDigest => sub { - my ($stomach, $whatsit) = @_; - my $addr = LookupValue('defs'); - my $name = $whatsit->getArg(1); - $name = $name->toString if $name; - $name = $whatsit->getArg(3)->toString.'-'.$whatsit->getArg(4)->toString unless $name; - push(@$addr, $name) if ($addr and $name); - $whatsit->setProperty(theory=>LookupValue('current_module')); - return; }, - alias=>'\defii');#$ -DefConstructor('\defiii[]{}{}{}', - "<omdoc:idx>" - . "<omdoc:idt>" - . "<omdoc:term role='definiendum' cd='#theory' name='?#1(#1)(&dashed(#2,#3,#4))'>#2 #3 #4</omdoc:term>" - . "</omdoc:idt>" - . "<omdoc:ide index='default'>" - . "<omdoc:idp>#2</omdoc:idp>" - . "<omdoc:idp>#3</omdoc:idp>" - . "<omdoc:idp>#4</omdoc:idp>" - . "</omdoc:ide>" - . "</omdoc:idx>", - afterDigest => sub { - my ($stomach, $whatsit) = @_; - my $addr = LookupValue('defs'); - my $name = $whatsit->getArg(1); - $name = $name->toString if $name; - $name = $whatsit->getArg(2)->toString.'-'.$whatsit->getArg(3)->toString.'-'.$whatsit->getArg(4)->toString unless $name; - push(@$addr, $name) if ($addr and $name); - $whatsit->setProperty(theory=>LookupValue('current_module')); - return; }, - alias=>'\defiii'); -DefConstructor('\adefiii[]{}{}{}{}', - "<omdoc:idx>" - . "<omdoc:idt>" - . "<omdoc:term role='definiendum' cd='#theory' name='?#1(#1)(&dashed(#3,#4,#5))'>#2</omdoc:term>" - . "</omdoc:idt>" - . "<omdoc:ide index='default'>" - . "<omdoc:idp>#3</omdoc:idp>" - . "<omdoc:idp>#4</omdoc:idp>" - . "<omdoc:idp>#5</omdoc:idp>" - . "</omdoc:ide>" - . "</omdoc:idx>", - afterDigest => sub { - my ($stomach, $whatsit) = @_; - my $addr = LookupValue('defs'); - my $name = $whatsit->getArg(1); - $name = $name->toString if $name; - $name = $whatsit->getArg(3)->toString.'-'.$whatsit->getArg(4)->toString.'-'.$whatsit->getArg(5)->toString unless $name; - push(@$addr, $name) if ($addr and $name); - $whatsit->setProperty(theory=>LookupValue('current_module')); - return; }, - alias=>'\defiii'); -DefConstructor('\inlineex OptionalKeyVals:omtext {}', - "<ltx:text class='example'>#2</ltx:text>"); -DefConstructor('\inlinedef OptionalKeyVals:omtext {}', sub { - my ($document, $keyvals, $body, %props) = @_; - my $for = $keyvals->getValue('for') if $keyvals; - my %for_attr=(); - if (ToString($for)) { - $for = ToString($for); - $for =~ s/^{(.+)}$/$1/eg; - foreach (split(/,\s*/,$for)) { - $for_attr{$_}=1; - }} - my @symbols = @{$props{defs} || []}; - #Prepare for symbol insertion -insert before the parent of the closest ancestor CMP element - my $original_node = $document->getNode; - my $xc = XML::LibXML::XPathContext->new( $original_node ); - $xc->registerNs('omdoc', 'http://omdoc.org/ns'); - my ($statement_ancestor) = $xc->findnodes('./ancestor::omdoc:CMP/..'); - foreach my $symb(@symbols) { - next if $for_attr{$symb}; - $for_attr{$symb}=1; - my $symbolnode = XML::LibXML::Element->new('symbol'); - $symbolnode->setAttribute(name=>$symb); - $symbolnode->setAttribute("xml:id"=>makeNCName("$symb.def.sym")); - $statement_ancestor->parentNode->insertBefore($symbolnode,$statement_ancestor); - } - #Restore the insertion point - $document->setNode($original_node); - my %attrs = (); - $for = join(" ",(keys %for_attr)); - $attrs{'for'} = $for if $for; - my $id = $keyvals->getValue('id') if $keyvals; - $attrs{'xml:id'} = $id if $id; -$attrs{'class'} = 'inlinedef'; - $document->openElement('ltx:text',%attrs); - $document->absorb($body); -$document->closeElement('ltx:text'); }, - #Prepare 'defs' hooks for \defi and \definiendum symbol names - beforeDigest=>sub { - my @symbols = (); - AssignValue('defs', \@symbols); return; }, - #Adopt collected names as 'defs' property, remove hooks - afterDigest=>sub { - my ($stomach, $whatsit) = @_; - my $defsref = LookupValue('defs'); - my @defs = @$defsref; - $whatsit->setProperty('defs',\@defs); - AssignValue('defs',undef); - return; }); -DefConstructor('\termref OptionalKeyVals:termref {}', - "<omdoc:term " - . "?&KeyVal(#1,'cdbase')(cdbase='&KeyVal(#1,'cdbase')')() " - . "cd='?&KeyVal(#1,'cd')(&KeyVal(#1,'cd'))(#module)' " - . "name='&KeyVal(#1,'name')'>" - . "#2" - ."</omdoc:term>", - afterDigest=>sub{$_[1]->setProperty(module=>LookupValue('current_module'))}); -RawTeX(' -\newcommand\atrefi[3][]{\def\@test{#1}\ifx\@test\@empty\termref[name=#3]{#2}\else\termref[cd=#1,name=#3]{#2}\fi} -\newcommand\atrefii[4][]{\atrefi[#1]{#2}{#3-#4}} -\newcommand\atrefiii[5][]{\atrefi[#1]{#2}{#3-#4-#5}} -\newcommand{\trefi}[2][]{\atrefi[#1]{#2}{#2}} -\newcommand{\trefii}[3][]{\atrefi[#1]{#2 #3}{#2-#3}} -\newcommand{\trefiii}[4][]{\atrefi[#1]{#2 #3 #4}{#2-#3-#4}} -'); -DefConstructor('\symref{}{}', - "<omdoc:term cd='&LookupValue('symdef.#1.cd')' name='&LookupValue('symdef.#1.name')'>" - . "#2" - ."</omdoc:term>"); -Tag('omdoc:assertion',afterOpen=>\&numberIt,afterClose=>\&locateIt); -Tag('omdoc:definition',afterOpen=>\&numberIt,afterClose=>\&locateIt); -Tag('omdoc:example',afterOpen=>\&numberIt,afterClose=>\&locateIt); -Tag('omdoc:requation',afterOpen=>\&numberIt,afterClose=>\&locateIt); -Tag('omdoc:axiom',afterOpen=>\&numberIt,afterClose=>\&locateIt); -Tag('omdoc:symbol',afterOpen=>\&numberIt,afterClose=>\&locateIt); -Tag('omdoc:type',afterOpen=>\&numberIt,afterClose=>\&locateIt); -Tag('omdoc:term',afterOpen=>\&numberIt,afterClose=>\&locateIt); -RawTeX(' -\newcommand\defin[2][]{\defi[#1]{#2}% -\PackageWarning{statements}{\protect\defin\space is deprecated, use \protect\defi\space instead}} -\newcommand\twindef[3][]{\defii[#1]{#2}{#3}% -\PackageWarning{statements}{\protect\twindef\space is deprecated, use \protect\defii\space instead}} -\newcommand\atwindef[4][]{\defiii[#1]{#2}{#3}{#4}% -\PackageWarning{statements}{\protect\atwindef\space is deprecated, use \protect\defiii\space instead}} -\newcommand\definalt[3][]{\adefi[#1]{#2}{#3}% -\PackageWarning{statements}{\protect\definalt\space is deprecated, use \protect\adefi\space instead}} -\newcommand\twindefalt[4][]{\adefii[#1]{#2}{#3}{#4}% -\PackageWarning{statements}{\protect\twindefalt\space is deprecated, use \protect\adefii\space instead}} -\newcommand\atwindefalt[5][]{\adefiii[#1]{#2}{#3}{#4}{#5}% -\PackageWarning{statements}{\protect\atwindefalt\space is deprecated, use \protect\adefiii\space instead}} -\newcommand\twinref[3][]{\trefii[#1]{#2}{#3}% -\PackageWarning{statements}{\protect\twinref\space is deprecated, use \protect\trefii\space instead}} -\newcommand\atwinref[4][]{\atrefiii[#1]{#2}{#3}{#4}% -\PackageWarning{statements}{\protect\atwindef\space is deprecated, use \protect\trefiii\space instead}} -'); -1; diff --git a/Master/texmf-dist/tex/latex/stex/stex-logo.sty b/Master/texmf-dist/tex/latex/stex/stex-logo.sty deleted file mode 100644 index 229aa300eb5..00000000000 --- a/Master/texmf-dist/tex/latex/stex/stex-logo.sty +++ /dev/null @@ -1,5 +0,0 @@ -\NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesPackage{stex-logo}[2009/08/07 v1.0 sTeX Logo] -\RequirePackage{xspace} -\def\stex{\@ifundefined{texorpdfstring}{\let\texorpdfstring\@firstoftwo}{}\texorpdfstring{\raisebox{-.5ex}S\kern-.5ex\TeX}{sTeX}\xspace} -\def\sTeX{\stex} diff --git a/Master/texmf-dist/tex/latex/stex/stex-logo.sty.ltxml b/Master/texmf-dist/tex/latex/stex/stex-logo.sty.ltxml deleted file mode 100644 index cd3ed6d0df4..00000000000 --- a/Master/texmf-dist/tex/latex/stex/stex-logo.sty.ltxml +++ /dev/null @@ -1,18 +0,0 @@ -# -*- CPERL -*- -# /=======================================================\ # -# | stex.sty - Implementation for LaTeXML | # -# | | # -# |=======================================================| # -# | Not Part of LaTeXML : http://dlmf.nist.gov/LaTeXML/ | # -# | Copyright (c) 2006 arXMLiv group | # -# | Released under the GNU Public License | # -# \=======================================================/ # - -package LaTeXML::Package::Pool; -use strict; -use LaTeXML::Package; -RequirePackage('xspace'); -DefConstructor('\stex', - "<ltx:text>sTeX</ltx:text>"); -RawTeX('\def\sTeX{\stex}'); -1; diff --git a/Master/texmf-dist/tex/latex/stex/stex.sty b/Master/texmf-dist/tex/latex/stex/stex.sty deleted file mode 100644 index 3e402a40932..00000000000 --- a/Master/texmf-dist/tex/latex/stex/stex.sty +++ /dev/null @@ -1,24 +0,0 @@ -% sTeX: a package for semantic markup in LaTeX -% Copyright (c) 2009 Michael Kohlhase, all rights reserved -% this file is released under the -% LaTeX Project Public License (LPPL) -% -% The development version of this file can be found at -% $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/stex.sty $ -\NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesPackage{stex}[2010/02/04 v0.9b Semantic Markup] -% we pass the options to the appropriate packages -\DeclareOption{extrefs}{\PassOptionsToPackage{\CurrentOption}{sref}} -\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{omd}} -\DeclareOption{showmods}{\PassOptionsToPackage{\CurrentOption}{modules}} -\ProcessOptions -% now we require the respective packages. -\RequirePackage{stex-logo} -\RequirePackage{modules} -\RequirePackage{statements} -\RequirePackage{sproof} -\RequirePackage{omdoc} -\RequirePackage{presentation} -\RequirePackage{cmath} -\RequirePackage{dcm} - diff --git a/Master/texmf-dist/tex/latex/stex/stex.sty.ltxml b/Master/texmf-dist/tex/latex/stex/stex.sty.ltxml deleted file mode 100644 index ab396e36c6f..00000000000 --- a/Master/texmf-dist/tex/latex/stex/stex.sty.ltxml +++ /dev/null @@ -1,24 +0,0 @@ -# -*- CPERL -*- -# /=======================================================\ # -# | stex.sty - Implementation for LaTeXML | # -# | | # -# |=======================================================| # -# | Not Part of LaTeXML : http://dlmf.nist.gov/LaTeXML/ | # -# | Copyright (c) 2006 arXMLiv group | # -# | Released under the GNU Public License | # -# \=======================================================/ # - -package LaTeXML::Package::Pool; -use strict; -use LaTeXML::Package; - -RequirePackage('stex-logo'); -RequirePackage('modules'); -RequirePackage('statements'); -RequirePackage('sproof'); -RequirePackage('omdoc'); -RequirePackage('presentation'); -RequirePackage('cmath'); -RequirePackage('dcm'); - -1; diff --git a/Master/texmf-dist/tex/latex/stex/stex.tex b/Master/texmf-dist/tex/latex/stex/stex.tex deleted file mode 100644 index 325128d4ddd..00000000000 --- a/Master/texmf-dist/tex/latex/stex/stex.tex +++ /dev/null @@ -1,417 +0,0 @@ -\documentclass{article} -\usepackage{a4wide,stex-logo} -\usepackage{textcomp,url,array,float,amsfonts} -\usepackage{listings} -\usepackage[show]{ed} -\usepackage[backref=true,hyperref=auto,style=alphabetic]{biblatex} -\bibliography{kwarc} -\usepackage{hyperref} -\makeindex -\floatstyle{boxed} -\newfloat{exfig}{thp}{lop} -\floatname{exfig}{Example} - -\def\ctancitesuffix{:ctan} -\def\ctancite#1{\cite{#1\ctancitesuffix}} -\def\meta#1{\textlangle\textit{#1}\textrangle} -\def\scsys#1{{{\sc #1}}\index{#1@{\sc #1}}} -\def\xslt{{\scsys{xslt}}} -\def\xml{\scsys{Xml}} -\def\mathml{\scsys{MathML}} -\def\omdoc{\scsys{OMDoc}} -\def\physml{\scsys{PhysML}} -\def\openmath{\scsys{OpenMath}} -\def\connexions{\scsys{Connexions}} -\def\latexml{\scsys{LaTeXML}} -\def\perl{\scsys{Perl}} -\def\cmathml{Content-{\sc MathML}\index{Content {\sc MathML}}\index{MathML@{\sc MathML}!content}} -\def\activemath{\scsys{ActiveMath}} -\def\twin#1#2{\index{#1!#2}\index{#2!#1}} -\def\twintoo#1#2{{#1 #2}\twin{#1}{#2}} -\def\atwin#1#2#3{\index{#1!#2!#3}\index{#3!#2 (#1)}} -\def\atwintoo#1#2#3{{#1 #2 #3}\atwin{#1}{#2}{#3}} - -% these macros are used in the short descriptions -\def\connexions{\scshape{Connexions}} -\def\cnxlatex{CNX\LaTeX} -\def\cnxml{\scshape{CNXml}} - -\title{{\stex}: Semantic Markup in {\TeX/\LaTeX}} -\author{Michael Kohlhase\\ - Jacobs University, Bremen\\ - \url{http://kwarc.info/kohlhase}} -\lstdefinelanguage{MathML}[]{XML}% -{morekeywords={math,semantics,annotation-xml,annotation, - maction, - mrow,mo,mi,mn, - apply,bvar,ci,cn,sep,csymbol, - condition,domainofapplication,lowlimit,uplimit,degree, - interval,inverse,lambda,compose,ident,domain,codomain,image, - piecewise, piece, otherwise, - quotient,factorial,divide,max,min,minus,plus,power,rem,times, root,gcd,lcm, - and,or,xor,not,implies,forall,exists, - abs,conjugate,arg,real,imaginary,floor,ceiling, - sin,cos,tan,sec,csc,cot,sinh,cosh,tanh,sech,csch,coth, - arcsin,arccos,arctan,arccosh,arccot,arccoth,arccsc,arccsch,arcsec,arcsech,arcsinh,arctanh, - eq,neq,gt,lt,geq,leq,equivalent,approx,factorof, - int,diff,partialdiff,divergence,grad,curl,laplacian, - set,list,union,intersect,in,notin,subset,prsubset,notsubset,notprsubset,setdiff,card,cartesianproduct, - sum,product,limit,tendsto,exp,ln,log,mean,sdev,variance,median,mode,moment,momentabout, - vector,matrix,matrixrow,determinant,transpose,selector,vectorproduct,scalarproduct,outerproduct, - integers,reals,rationals,naturalnumbers,complexes,primes, - exponentiale,imaginaryi,notanumber,true,false,emptyset,pi,eulergamma,infinity, - reln,fn,declare}, - sensitive=true} - -\begin{document} - \pagenumbering{roman} - \maketitle -\begin{abstract} - We present a collection of {\TeX} macro packages that allow to markup - {\TeX/\LaTeX} documents semantically without leaving the document format, - essentially turning {\TeX/\LaTeX} into a document format for mathematical - knowledge management (MKM). - \end{abstract} -\setcounter{tocdepth}{2}\tableofcontents -\clearpage -\pagenumbering{arabic} - -\section{Introduction} - -The last few years have seen the emergence of various content-oriented {\xml}-based, -content-oriented markup languages for mathematics on the web, e.g. -{\openmath}~\cite{BusCapCar:2oms04}, {\cmathml}~\cite{CarIon:MathML03}, or our own -{\omdoc}~\cite{Kohlhase:omfmd05}. These representation languages for mathematics, that -make the structure of the mathematical knowledge in a document explicit enough that -machines can operate on it. Other examples of content-oriented formats for mathematics -include the various logic-based languages found in automated reasoning tools -(see~\cite{RobVor:hoar01} for an overview), program specification languages (see -e.g.~\cite{Bergstra:as89}). - -The promise if these content-oriented approaches is that various tasks involved in ``doing -mathematics'' (e.g. search, navigation, cross-referencing, quality control, user-adaptive -presentation, proving, simulation) can be machine-supported, and thus the working -mathematician is relieved to do what humans can still do infinitely better than machines: -The creative part of mathematics --- inventing interesting mathematical objects, -conjecturing about their properties and coming up with creative ideas for proving these -conjectures. However, before these promises can be delivered upon (there is even a -conference series~\cite{MKM-IG-Meetings:online} studying ``Mathematical Knowledge -Management (MKM)''), large bodies of mathematical knowledge have to be converted into -content form. - -Even though {\mathml} is viewed by most as the coming standard for representing -mathematics on the web and in scientific publications, it has not not fully taken off in -practice. One of the reasons for that may be that the technical communities that need -high-quality methods for publishing mathematics already have an established method which -yields excellent results: the {\TeX/\LaTeX} system: and a large part of mathematical -knowledge is prepared in the form of {\TeX}/{\LaTeX} documents. - -{\TeX}~\cite{Knuth:ttb84} is a document presentation format that combines complex -page-description primitives with a powerful macro-expansion facility, which is utilized in -{\LaTeX} (essentially a set of {\TeX} macro packages, see~\cite{Lamport:ladps94}) to -achieve more content-oriented markup that can be adapted to particular tastes via -specialized document styles. It is safe to say that {\LaTeX} largely restricts content -markup to the document structure\footnote{supplying macros e.g. for sections, paragraphs, - theorems, definitions, etc.}, and graphics, leaving the user with the presentational -{\TeX} primitives for mathematical formulae. Therefore, even though {\LaTeX} goes a great -step into the direction of an MKM format, it is not, as it lacks infrastructure for -marking up the functional structure of formulae and mathematical statements, and their -dependence on and contribution to the mathematical context. - -\subsection{The {\xml} vs. {\TeX/\LaTeX} Formats and Workflows} - -{\mathml} is an {\xml}-based markup format for mathematical formulae, it is standardized -by the World Wide Web Consortium in {\cite{CarIon:MathML03}}, and is supported by the -major browsers. The {\mathml} format comes in two integrated components: presentation -{\mathml}\twin{presentation}{MathML} and content {\mathml}\twin{content}{MathML}. The -former provides a comprehensive set of layout primitives for presenting the visual -appearance of mathematical formulae, and the second one the functional/logical structure -of the conveyed mathematical objects. For all practical concerns, presentation {\mathml} -is equivalent to the math mode of {\TeX}. The text mode facilitates of {\TeX} (and the -multitude of {\LaTeX} classes) are relegated to other {\xml} formats, which embed -{\mathml}. - -The programming language constructs of {\TeX} (i.e. the macro definition -facilities\footnote{We count the parser manipulation facilities of {\TeX}, e.g. category - code changes into the programming facilities as well, these are of course impossible for - {\mathml}, since it is bound to {\xml} syntax.}) are relegated to the {\xml} -programming languages that can be used to develop language extensions. -transformation language {\xslt}~\cite{Deach:exls99,Kay:xpr00} or proper {\xml}-enabled -The {\xml}-based syntax and the separation of the presentational-, functional- and -programming/extensibility concerns in {\mathml} has some distinct advantages over the -integrated approach in {\TeX/\LaTeX} on the services side: {\mathml} gives us better -\begin{itemize} -\item integration with web-based publishing, -\item accessibility to disabled persons, e.g. (well-written) {\mathml} contains enough - structural information to supports screen readers. -\item reusability, searchabiliby and integration with mathematical software systems - (e.g. copy-and-paste to computer algebra systems), and -\item validation and plausibility checking. -\end{itemize} - -On the other hand, {\TeX/\LaTeX}/s adaptable syntax and tightly integrated programming -features within has distinct advantages on the authoring side: - -\begin{itemize} -\item The {\TeX/\LaTeX} syntax is much more compact than {\mathml} (see the difference in - Figure~\ref{fig:mathml-sum} and Equation ~\ref{eq:cmathml-sum}), and if needed, the - community develops {\LaTeX} packages that supply new functionality in with a succinct - and intuitive syntax. -\item The user can define ad-hoc abbreviations and bind them to new control sequences to - structure the source code. -\item The {\TeX/\LaTeX} community has a vast collection of language extensions and best - practice examples for every conceivable publication purpose and an established and very - active developer community that supports these. -\item There is a host of software systems centered around the {\TeX/\LaTeX} language that - make authoring content easier: many editors have special modes for {\LaTeX}, there are - spelling/style/grammar checkers, transformers to other markup formats, etc. -\end{itemize} - -In other words, the technical community is is heavily invested in the whole -{\index*{workflow}}, and technical know-how about the format permeates the -community. Since all of this would need to be re-established for a {\mathml}-based -workflow, the technical community is slow to take up {\mathml} over {\TeX/\LaTeX}, even in -light of the advantages detailed above. - -\subsection{A {\LaTeX}-based Workflow for {\xml}-based Mathematical Documents} - -An elegant way of sidestepping most of the problems inherent in transitioning from a -{\LaTeX}-based to an {\xml}-based workflow is to combine both and take advantage of the -respective advantages. - -The key ingredient in this approach is a system that can transform {\TeX\LaTeX} documents -to their corresponding {\xml}-based counterparts. That way, {\xml}-documents can be -authored and prototyped in the {\LaTeX} workflow, and transformed to {\xml} for -publication and added-value services, combining the two workflows. - -There are various attempts to solve the {\TeX/\LaTeX} to {\xml} transformation problem; the -most mature is probably Bruce Miller's {\latexml} system~\cite{Miller:latexml:online}. It -consists of two parts: a re-implementation of the {\TeX} {\index*{analyzer}} with all of -it's intricacies, and a extensible {\xml} emitter (the component that assembles the output -of the parser). Since the {\LaTeX} style files are (ultimately) programmed in {\TeX}, the -{\TeX} analyzer can handle all {\TeX} extensions, including all of {\LaTeX}. Thus the -{\latexml} parser can handle all of {\TeX/\LaTeX}, if the emitter is extensible, which is -guaranteed by the {\latexml} binding language: To transform a {\TeX/\LaTeX} document to a -given {\xml} format, all {\TeX} extensions\footnote{i.e. all macros, environments, and - syntax extensions used int the source document} must have ``{\latexml} -bindings''\index{LaTeXML}{binding}, i.e. a directive to the {\latexml} emitter that -specifies the target representation in {\xml}. - -\section{The Packages of the \protect\stex Collection}\label{sec:packages} - -In the following, we will shortly preview the packages and classes in the {\stex} -collection. They all provide part of the solution of representing semantic structure in -the {\TeX/\LaTeX} workflow. We will group them by the conceptual level they -address\ednote{come up with a nice overview figure here!} - -\subsection{Content Markup of Mathematical Formulae in {\TeX/\LaTeX}} - -The first two packages are concerned basically with the math mode in {\TeX}, -i.e. mathematical formulae. The underlying problem is that run-of-the-mill {\TeX/\LaTeX} -only specifies the presentation (i.e. what formulae look like) and not their content -(their functional structure). Unfortunately, there are no good methods (yet) to infer the -latter from the former, but there are ways to get presentation from content. - -Consider for instance the following ``standard notations''\footnote{The first one is - standard e.g. in Germany and the US, and the last one in France} for binomial -coefficients: $\left(n\atop k\right)$, $_nC^k$, $\mathcal{C}^n_k$ all mean the same thing: -$n!\over k!(n-k)!$. This shows that we cannot hope to reliably recover the functional -structure (in our case the fact that the expression is constructed by applying the -binomial function to the arguments $n$ and $k$) from the presentation alone. - -The solution to this problem is to dump the extra work on the author (after all she knows -what she is talking about) and give them the chance to specify the intended structure. The -markup infrastructure supplied by the {\stex} collection lets the author do this without -changing\footnote{However, semantic annotation will make the author more aware of the - functional structure of the document and thus may in fact entice the author to use - presentation in a more consistent way than she would usually have.} the visual -appearance, so that the {\LaTeX} workflow is not disrupted. . We speak of -{\twintoo{semantic}{preloading}} for this process and call our collection of macro -packages {\stex} (Semantic {\TeX}). For instance, we can now write -\begin{equation}\label{eq:cmathml-sum} - \verb|\CSumlLimits{k}1\infty{\Cexp{x}k}| \qquad\hbox{instead of the usual}\qquad - \verb|\sum_{k=1}^\infty x^k| -\end{equation} - -In the first form, we specify that you are applying a function (|CSumLimits| $\hat=$ Sum -with Limits) to 4 arguments: ({\sl{i}}) the bound variable $k$ (that runs from) -({\sl{ii}}) the number 1 (to) ({\sl{iii}}) $\infty$ (to infinity summing the terms) -({\sl{iv}}) \verb|\Cexp{x}k| (i.e. x to the power k). In the second form, we merely specify -hat {\LaTeX} should draw a capital Sigma character ($\sigma$) with a lower index which is -an equation $k=1$ and an upper index $\infty$. Then it should place next to it an $x$ with -an upper index $k$. - -Of course human readers (that understand the math) can infer the content structure from -this presentation, but the {\latexml} converter (who does not understand the math) cannot, -but we want to have the content {\mathml} expression in Figure~\ref{fig:mathml-sum} -\begin{exfig} -\begin{lstlisting}[language=MathML,belowskip=-1ex,aboveskip=-1ex] - <math xmlns="http://www.w3.org/1998/Math/MathML"> - <apply> - <sum/> - <bvar><ci>k</ci></bvar> - <lowlimit><cn>1</cn></lowlimit> - <uplimit><infinit/></cn></uplimit> - <apply><exp/><ci>x</ci><ci>k</ci></apply> - </apply> - </math> -\end{lstlisting} - \caption{Content {\mathml} Form of $\sum_{k=1}^\infty x^k$}\label{fig:mathml-sum} -\end{exfig} - -Obviously, a converter can infer this from the first {\LaTeX} structure with the help of -the curly braces that indicate the argument structure, but not from the second (because it -does not understand the math). The nice thing about the |cmathml| infrastructure is that -you can still run {\LaTeX} over the first form and get the same formula in the DVI file -that you would have gotten from running it over the second form. That means, if the author -is prepared to write the mathematical formulae a little differently in her {\LaTeX} -sources, then she can use them in {\xml} and {\LaTeX} at the same time. - - -\subsubsection{{\texttt{cmathml}}: Encoding Content {\mathml} in {\TeX/\LaTeX}} - -The {\texttt{cmathml}} package (see~\ctancite{Kohlhase:tbscml}) provides a set of macros that -correspond to the K-14 fragment of mathematics (Kindergarten to undergraduate college -level ($\hat=14^{th}$ grade)). We have already seen an example above in equation -(\ref{eq:cmathml-sum}), where the content markup in {\TeX} corresponds to a content -{\mathml}-expression (and can actually be translated to this by the {\latexml} system.) -However, the content {\mathml} vocabulary is fixed in the {\mathml} specification and -limited to the K-14 fragment; the notation of mathematics of course is much larger and -extensible on the fly. - - -\subsubsection{{\tt{presentation}}: Flexible Presentation for Semantic Macros} - -The {\texttt{presentation}} package (see~\ctancite{Kohlhase:ipsmsl}) supplies an -infrastructure that allows to specify the presentation of semantic macros, including -preference-based bracket elision. This allows to markup the functional structure of -mathematical formulae without having to lose high-quality human-oriented presentation in -{\LaTeX}. Moreover, the notation definitions can be used by MKM systems for added-value -services, either directly from the {\sTeX} sources, or after translation. - -\subsection{Mathematical Statements} - -\subsubsection{{\tt{statements}}: Extending Content Macros for Mathematical Notation} - -The \texttt{statements} package (see\ctancite{Kohlhase:smms}) provides semantic markup -facilities for mathematical statements like Theorems, Lemmata, Axioms, Definitions, -etc. in {\stex} files. This structure can be used by MKM systems for added-value services, -either directly from the {\sTeX} sources, or after translation. - -\subsubsection{{\tt{sproof}}: Extending Content Macros for Mathematical Notation} - -The \texttt{sproof} package (see~\ctancite{Kohlhase:smp})supplies macros and environment -that allow to annotate the structure of mathematical proofs in {\stex} files. This -structure can be used by MKM systems for added-value services, either directly from the -{\sTeX} sources, or after translation. - - -\subsection{Context Markup for Mathematics} - -\subsubsection{{\tt{modules}}: Extending Content Macros for Mathematical Notation} - -The \texttt{modules} package (see~\ctancite{KohAmb:smmssl}) supplies a definition -mechanism for semantic macros and a non-standard scoping construct for them, which is -oriented at the semantic dependency relation rather than the document structure. This -structure can be used by MKM systems for added-value services, either directly from the -{\sTeX} sources, or after translation. - -\subsection{Mathematical Document Classes} - -\subsubsection{Connexions Modules} - -{\cnxlatex} (see~\ctancite{Kohlhase:clbscm}) is a collection of {\LaTeX} macros that allow -to write {\connexions} modules without leaving the {\LaTeX} workflow. Modules are authored -in {\cnxlatex} using only a text editor, transformed to PDF and proofread as usual. In -particular, the {\LaTeX} workflow is independent of having access to the {\connexions} -system, which makes {\cnxlatex} attractive for the initial version of single-author -modules. - - -For publication, {\cnxlatex} modules are transformed to {\cnxml} via the {\latexml} -translator and can be uploaded to the {\connexions} system. - -\subsubsection{OMDoc Documents} - -The \texttt{omdoc} package provides an infrastructure that allows to markup {\omdoc} -documents in {\LaTeX}. It provides \texttt{omdoc.cls}, a class with the and -{\texttt{omdocdoc.sty}} - -\subsection{Conclusion}\label{sec:concl} - -The {\stex} collection provides a set of semantic macros that extends the familiar and -time-tried {\LaTeX} workflow in academics until the last step of Internet publication of -the material. For instance, a {\connexions} module can be authored and maintained in -{\LaTeX} using a simple text editor, a process most academics in technical subjects are -well familiar with. Only in a last publishing step (which is fully automatic) does it get -transformed into the {\xml} world, which is unfamiliar to most academics. - -Thus, {\stex} can serve as a conceptual interface between the document author and MKM -systems: Technically, the semantically preloaded {\LaTeX} documents are transformed into -the (usually {\xml}-based) MKM representation formats, but conceptually, the ability to -semantically annotate the source document is sufficient. - -The {\stex} macro packages have been validated together with a case -study~\cite{Kohlhase04:stex}, where we semantically preload the course materials for a -two-semester course in Computer Science at Jacobs University Bremen and transform them to -the {\omdoc} MKM format. - -\subsection{Licensing, Download and Setup}\label{sec:setup} - -The {\stex} packages are licensed under the {\LaTeX} Project Public License~\cite{LPPL}, -which basically means that they can be downloaded, used, copied, and even modified by -anyone under a set of simple conditions (e.g. if you modify you have to distribute under a -different name). - -The {\stex} packages and classes can be obtained as a self-documenting {\LaTeX} packages: -To obtain a package {\meta{package}} download the files \meta{package}\texttt{.dtx} and -\meta{package}\texttt{.ins} from -\begin{center} - {\url{https://svn.kwarc.info/repos/kwarc/projects/stex/sty/stex/}\meta{package}/} -\end{center} -To extract the {\LaTeX} package \meta{package}\texttt{.sty} and the {\latexml} bindings in -\meta{package}\texttt{.ltxml}, run the {\LaTeX} formatter on \texttt{cmathml.ins}, e.g. by typing -\texttt{latex cmathml.ins} to a shell. To extract the documentation (the version of this document that -goes with the extracted package) run the {\LaTeX} formatter on \texttt{cmathml.dtx} e.g. by -typing \texttt{latex }\meta{package}\texttt{.dtx} to a shell. - -Usually, the {\stex} distribution will also have the newest versions of the files -\meta{package}\texttt{.sty}, \meta{package}\texttt{.ltxml}, and the documentation \meta{package}\texttt{.pdf} -pre-generated for convenience, so they can be downloaded directly from the URL above. - -To install the package, copy the file \meta{package}\texttt{.sty} somewhere, where -{\TeX}/{\LaTeX} can find it and rebuild {\TeX}'s file name database. This is done by -running the command \texttt{texhash} or \texttt{mktexlsr} (they are the same). In \texttt{MikTEX}, there is a -menu option to do this. - -\section{Utilities}\label{sec:utilities} - -To simplify dealing with {\stex} documents, we are providing a small collection of command -line utilities, which we will describe here. For details and downloads go to -{\url{http://kwarc.info/projects/stex}}. - -\begin{description} -\item[{\tt{msplit}}] splits an {\stex} file into smaller ones (one module per file) -\item[{\tt{rf}}] computes the ``reuse factor'', i.e. how often {\stex} modules are reused - over a collection of documents -\item[{\tt{sgraph}}] visualizes the module graph -\item[{\tt{sms}}] computes the {\stex} module signatures for a give {\stex} file -\item[{\tt{bms}}] proposes a sensible module structure for an un-annotated {\stex} file -\end{description} -\printbibliography -\end{document} -%%% Local Variables: -%%% mode: LaTeX -%%% TeX-master: t -%%% End: - -% LocalWords: hoc LaTeXML nC CSumLimits cmathml DVI th sproof dtx mikoslides -% LocalWords: ltxml pdf texhash mktexlsr MikTEX msplit rf sgraph sms bms un eq -% LocalWords: cnx omdoc pagenumbering maketitle setcounter tocdepth clearpage -% LocalWords: tableofcontents openmath omfmd05 Bergstra mathml ttb84 ladps94 -% LocalWords: xslt Deach exls99 xpr00 stex ednote mathcal twintoo CSumlLimits -% LocalWords: infty Cexp qquad hbox qquad exfig lstlisting belowskip aboveskip -% LocalWords: xmlns bvar bvar lowlimit cn cn lowlimit uplimit uplimit exp tt -% LocalWords: subsubsection texttt ctancite tbscml ipsmsl smms smp KohAmb -% LocalWords: smmssl cnxlatex clbscm cnxml omdoc.cls omdocdoc.sty concl -% LocalWords: printbibliography diff --git a/Master/texmf-dist/tex/latex/stex/stex/stex.sty b/Master/texmf-dist/tex/latex/stex/stex/stex.sty new file mode 100644 index 00000000000..8b4444e4665 --- /dev/null +++ b/Master/texmf-dist/tex/latex/stex/stex/stex.sty @@ -0,0 +1,27 @@ +%% +%% This is file `stex.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% stex.dtx (with options: `package') +%% +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesPackage{stex}[2016/04/07 v1.0 Semantic Markup] +\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{statements} + \PassOptionsToPackage{\CurrentOption}{structview} + \PassOptionsToPackage{\CurrentOption}{sproofs} + \PassOptionsToPackage{\CurrentOption}{omdoc} + \PassOptionsToPackage{\CurrentOption}{cmath} + \PassOptionsToPackage{\CurrentOption}{dcm}} +\ProcessOptions +\RequirePackage{stex-logo} +\RequirePackage{statements} +\RequirePackage{structview} +\RequirePackage{sproof} +\RequirePackage{omdoc} +\RequirePackage{cmath} +\RequirePackage{dcm} +\endinput +%% +%% End of file `stex.sty'. diff --git a/Master/texmf-dist/tex/latex/stex/structview/structview.sty b/Master/texmf-dist/tex/latex/stex/structview/structview.sty new file mode 100644 index 00000000000..d76c3d13599 --- /dev/null +++ b/Master/texmf-dist/tex/latex/stex/structview/structview.sty @@ -0,0 +1,89 @@ +%% +%% This is file `structview.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% structview.dtx (with options: `package') +%% +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesPackage{structview}[2016/04/06 v0.9 Structures and Views] +\newif\if@structview@mh@\@structview@mh@false +\DeclareOption{mh}{\@structview@mh@true +\PassOptionsToPackage{\CurrentOption}{modules}} +\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{modules}} +\ProcessOptions +\if@structview@mh@\RequirePackage{structview-mh}\fi +\RequirePackage{modules} +\newenvironment{importmodulevia}[2][]{% + \gdef\@@doit{\importmodule[#1]{#2}}% + \ifmod@show\par\noindent importing module #2 via \@@doit\fi% +}{% + \aftergroup\@@doit\ifmod@show end import\fi% +}% +\newrobustcmd\vassign[3][]{\ifmod@show\ensuremath{#2\mapsto #3}, \fi}% +\newrobustcmd\tassign[3][]{\ifmod@show #2\ensuremath{\mapsto} #3, \fi}% +\newrobustcmd\fassign[4][]{\ifmod@show \ensuremath{#3\mapsto #4}, \fi}% +\newrobustcmd\ttassign[3][]{\ifmod@show #2\ensuremath{\mapsto} ``#3'', \fi}% +\srefaddidkey{view} +\addmetakey*{view}{title} +\addmetakey{view}{display} +\addmetakey{view}{from} +\addmetakey{view}{to} +\addmetakey{view}{creators} +\addmetakey{view}{contributors} +\addmetakey{view}{srccite} +\addmetakey{view}{type} +\addmetakey[sms]{view}{ext} +\newcounter{view}[section] +\newrobustcmd\view@heading[4]{% + \if@importing% + \else% + \stepcounter{view}% + \edef\@display{#3}\edef\@title{#4}% + \noindent% + \ifx\@display\st@flow% + \else% + {\textbf{View} {\thesection.\theview} from \textsf{#1} to \textsf{#2}}% + \sref@label@id{View \thesection.\theview}% + \ifx\@title\@empty% + \quad% + \else% + \quad(\@title)% + \fi% + \par\noindent% + \fi% + \ignorespaces% + \fi% +}%ifmod@show +\newenvironment{view}[3][]{% + \metasetkeys{view}{#1}% + \sref@target% + \begin{@view}{#2}{#3}% + \view@heading{#2}{#3}{\view@display}{\view@title}% +}{% + \end{@view}% + \ignorespaces% +}% +\ifmod@show\surroundwithmdframed{view}\fi% +\newenvironment{@view}[2]{%from, to + \@importmodule[\view@from]{#1}{\view@ext}% + \@importmodule[\view@to]{#2}{\view@ext}% +}{}% +\newenvironment{viewsketch}[3][]{% + \metasetkeys{view}{#1}% + \sref@target% + \begin{@view}{#2}{#3}% + \view@heading{#2}{#3}{\view@display}{\view@title}% +}{% + \end{@view}% +}% +\ifmod@show\surroundwithmdframed{viewsketch}\fi% +\newrobustcmd\obligation[3][]{% + \if@importing% + \else Axiom #2 is proven by \sref{#3}% + \fi% +}% +\endinput +%% +%% End of file `structview.sty'. diff --git a/Master/texmf-dist/tex/latex/stex/tikzinput/tikzinput.sty b/Master/texmf-dist/tex/latex/stex/tikzinput/tikzinput.sty new file mode 100644 index 00000000000..bc62a9e91f0 --- /dev/null +++ b/Master/texmf-dist/tex/latex/stex/tikzinput/tikzinput.sty @@ -0,0 +1,34 @@ +%% +%% This is file `tikzinput.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tikzinput.dtx (with options: `package') +%% +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesPackage{tikzinput}[2016/04/06 v1.0 Selective input of TIKZ pictures] +\newif\if@tikzinput@mh@\@tikzinput@mh@false +\DeclareOption{mh}{\@tikzinput@mh@true} +\newif\iftikzinput@image\tikzinput@imagefalse +\DeclareOption{image}{\tikzinput@imagetrue} +\DeclareOption*{} +\ProcessOptions +\if@tikzinput@mh@\RequirePackage{tikzinput-mh}\fi +\iftikzinput@image +\RequirePackage{graphicx} +\providecommand\usetikzlibrary[1]{} +\else +\RequirePackage{tikz} +\RequirePackage{standalone} +\fi +\iftikzinput@image +\newcommand\tikzinput[2][]{\includegraphics[#1]{#2}} +\else +\newcommand\tikzinput[2][]{\input{#2}} +\fi +\newcommand\ctikzinput[2][]{\begin{center}\tikzinput{#2}\end{center}} + +\endinput +%% +%% End of file `tikzinput.sty'. diff --git a/Master/texmf-dist/tex/latex/stex/workaddress/workaddress.sty b/Master/texmf-dist/tex/latex/stex/workaddress/workaddress.sty index 4dc956dd97f..ef90ccbb509 100644 --- a/Master/texmf-dist/tex/latex/stex/workaddress/workaddress.sty +++ b/Master/texmf-dist/tex/latex/stex/workaddress/workaddress.sty @@ -7,130 +7,157 @@ %% workaddress.dtx (with options: `package') %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesPackage{workaddress}[2012/01/28 v0.4 WorkAddress] -\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}} +\ProvidesPackage{workaddress}[2016/04/06 v0.4 WorkAddress] +\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{sref}} \ProcessOptions \RequirePackage{sref} -\RequirePackage{pgf} -\addmetakey{wa@person}{id} -\addmetakey{wa@person}{birthdate} -\addmetakey{wa@person}{email} -\addmetakey{wa@person}{url} -\addmetakey{wa@person}{affiliation} -\addmetakey{wa@person}{personaltitle} -\addmetakey{wa@person}{academictitle} -\addmetakey{wa@person}{department} -\addmetakey{wa@person}{workaddress} -\addmetakey{wa@person}{privaddress} -\addmetakey{wa@person}{worktel} -\addmetakey{wa@person}{privtel} -\addmetakey{wa@person}{workfax} -\addmetakey{wa@person}{privfax} -\addmetakey{wa@person}{worktelfax} -\addmetakey{wa@person}{privtelfax} +\addmetakey*{wa@person}{id} +\addmetakey*{wa@person}{birthdate} +\addmetakey*{wa@person}{email} +\addmetakey*{wa@person}{url} +\addmetakey*{wa@person}{affiliation} +\addmetakey*{wa@person}{personaltitle} +\addmetakey*{wa@person}{academictitle} +\addmetakey*{wa@person}{department} +\addmetakey*{wa@person}{workaddress} +\addmetakey*{wa@person}{privaddress} +\addmetakey*{wa@person}{worktel} +\addmetakey*{wa@person}{privtel} +\addmetakey*{wa@person}{workfax} +\addmetakey*{wa@person}{privfax} +\addmetakey*{wa@person}{worktelfax} +\addmetakey*{wa@person}{privtelfax} \def\wa@def#1#2#3#4{\expandafter\xdef\csname wa@#1@#2@#3\endcsname{#4}} \def\wa@ref@test#1#2#3{% -\@ifundefined{wa@#1@#2@#3}% -{\PackageError{workaddress}{reference to undefined #3 of #1 #2}% -{you must define a #1 with #2=#3\MessageBreak% -via the macro \protect\WA#1, before you can use it!}} -{}} -\def\wa@ref#1#2#3{\wa@ref@test{#1}{#2}{#3}\csname wa@#1@#2@#3\endcsname} + \@ifundefined{wa@#1@#2@#3}{% + \PackageError{workaddress}{reference to undefined #3 of #1 #2}% + {you must define a #1 with #2=#3\MessageBreak% + via the macro \protect\WA#1, before you can use it!} + }{}% +}% +\def\wa@ref#1#2#3{% + \wa@ref@test{#1}{#2}{#3}% + \csname wa@#1@#2@#3\endcsname% +}% \let\wa@persons=\relax -\newcommand{\WAperson}[2][]{\metasetkeys{wa@person}{#1} -\ifx\wa@person@id\@empty\@latex@warning{key 'id' undefined in WAperson}\else -\wa@def{person}\wa@person@id{id}{\wa@person@id}% redundant, but useful for checking -\wa@def{person}\wa@person@id{name}{#2} -\wa@def{person}\wa@person@id{email}{\wa@person@email} -\wa@def{person}\wa@person@id{birthdate}{\wa@person@birthdate} -\wa@def{person}\wa@person@id{url}{\wa@person@url} -\wa@def{person}\wa@person@id{affiliation}{\wa@person@affiliation} -\wa@def{person}\wa@person@id{workaddress}{\wa@person@workaddress} -\wa@def{person}\wa@person@id{privaddress}{\wa@person@privaddress} -\wa@def{person}\wa@person@id{personaltitle}{\wa@person@personaltitle} -\wa@def{person}\wa@person@id{academictitle}{\wa@person@academictitle} -\wa@def{person}\wa@person@id{department}{\wa@person@department} -\wa@def{person}\wa@person@id{workaddress}{\wa@person@workaddress} -\wa@def{person}\wa@person@id{privaddress}{\wa@person@privaddress} -\wa@def{person}\wa@person@id{worktel}{\wa@person@worktel} -\wa@def{person}\wa@person@id{privtel}{\wa@person@privtel} -\wa@def{person}\wa@person@id{workfax}{\wa@person@workfax} -\wa@def{person}\wa@person@id{privfax}{\wa@person@privfax} -\wa@def{person}\wa@person@id{worktelfax}{\wa@person@worktelfax} -\wa@def{person}\wa@person@id{privtelfax}{\wa@person@privtelfax} -\@ifundefined{wa@persons} -{\xdef\wa@persons{\wa@person@id}} -{\xdef\wa@persons{\wa@persons,\wa@person@id}} -\fi} -\newcommand\DCMperson[2][]{\WAperson[#1]{#2}% -\PackageWarning{workaddress}{\protect\DCMperson\space is deprecated, use \protect\WAperson\space instead}} -\addmetakey{wa@institution}{id} -\addmetakey{wa@institution}{shortname} -\addmetakey{wa@institution}{acronym} -\addmetakey{wa@institution}{url} -\addmetakey{wa@institution}{partof} -\addmetakey{wa@institution}{countryshort} -\addmetakey{wa@institution}{logo} -\addmetakey{wa@institution}{streetaddress} -\addmetakey{wa@institution}{townzip} -\addmetakey{wa@institution}{type} -\addmetakey{wa@institution}{country} +\newcommand\WAperson[2][]{% + \metasetkeys{wa@person}{#1}% + \ifx\wa@person@id\@empty% + \@latex@warning{key 'id' undefined in WAperson}% + \else% + \wa@def{person}\wa@person@id{id}{\wa@person@id}% redundant, but useful for checking + \wa@def{person}\wa@person@id{name}{#2} + \wa@def{person}\wa@person@id{email}{\wa@person@email} + \wa@def{person}\wa@person@id{birthdate}{\wa@person@birthdate} + \wa@def{person}\wa@person@id{url}{\wa@person@url} + \wa@def{person}\wa@person@id{affiliation}{\wa@person@affiliation} + \wa@def{person}\wa@person@id{workaddress}{\wa@person@workaddress} + \wa@def{person}\wa@person@id{privaddress}{\wa@person@privaddress} + \wa@def{person}\wa@person@id{personaltitle}{\wa@person@personaltitle} + \wa@def{person}\wa@person@id{academictitle}{\wa@person@academictitle} + \wa@def{person}\wa@person@id{department}{\wa@person@department} + \wa@def{person}\wa@person@id{workaddress}{\wa@person@workaddress} + \wa@def{person}\wa@person@id{privaddress}{\wa@person@privaddress} + \wa@def{person}\wa@person@id{worktel}{\wa@person@worktel} + \wa@def{person}\wa@person@id{privtel}{\wa@person@privtel} + \wa@def{person}\wa@person@id{workfax}{\wa@person@workfax} + \wa@def{person}\wa@person@id{privfax}{\wa@person@privfax} + \wa@def{person}\wa@person@id{worktelfax}{\wa@person@worktelfax} + \wa@def{person}\wa@person@id{privtelfax}{\wa@person@privtelfax} + \@ifundefined{wa@persons}{% + \xdef\wa@persons{\wa@person@id}% + }{% + \xdef\wa@persons{\wa@persons,\wa@person@id}% + }% + \fi% +}% +\newcommand\DCMperson[2][]{% + \WAperson[#1]{#2}% + \PackageWarning{workaddress}{\protect\DCMperson\space is deprecated, use \protect\WAperson\space instead} +}% +\addmetakey*{wa@institution}{id} +\addmetakey*{wa@institution}{shortname} +\addmetakey*{wa@institution}{acronym} +\addmetakey*{wa@institution}{url} +\addmetakey*{wa@institution}{partof} +\addmetakey*{wa@institution}{countryshort} +\addmetakey*{wa@institution}{logo} +\addmetakey*{wa@institution}{streetaddress} +\addmetakey*{wa@institution}{townzip} +\addmetakey*{wa@institution}{type} +\addmetakey*{wa@institution}{country} \let\wa@institutions=\relax -\newcommand{\WAinstitution}[2][]{\metasetkeys{wa@institution}{#1} -\ifx\wa@institution@id\@empty\@latex@warning{key 'id' undefined in WAinstitution}\else -\wa@def{institution}\wa@institution@id{id}{\wa@institution@id}% redundant, but useful for checking -\wa@def{institution}\wa@institution@id{name}{#2} -\wa@def{institution}\wa@institution@id{shortname}{\wa@institution@shortname} -\wa@def{institution}\wa@institution@id{acronym}{\wa@institution@acronym} -\wa@def{institution}\wa@institution@id{url}{\wa@institution@url} -\wa@def{institution}\wa@institution@id{partof}{\wa@institution@partof} -\wa@def{institution}\wa@institution@id{countryshort}{\wa@institution@countryshort} -\wa@def{institution}\wa@institution@id{logo}{\wa@institution@logo} -\wa@def{institution}\wa@institution@id{townzip}{\wa@institution@townzip} -\wa@def{institution}\wa@institution@id{streetaddress}{\wa@institution@streetaddress} -\wa@def{institution}\wa@institution@id{country}{\wa@institution@country} -\wa@def{institution}\wa@institution@id{type}{\wa@institution@type} -\@ifundefined{wa@institutions} -{\xdef\wa@institutions{\wa@institution@id}} -{\xdef\wa@institutions{\wa@institutions,\wa@institution@id}} -\fi} -\newcommand\DCMinstitution[2][]{\WAinstitution[#1]{#2}% -\PackageWarning{workaddress}{\protect\DCMinstitution\space is deprecated, use \protect\WAinstitution\space instead}} +\newcommand\WAinstitution[2][]{% + \metasetkeys{wa@institution}{#1}% + \ifx\wa@institution@id\@empty% + \@latex@warning{key 'id' undefined in WAinstitution}% + \else% + \wa@def{institution}\wa@institution@id{id}{\wa@institution@id}% redundant, but useful for checking + \wa@def{institution}\wa@institution@id{name}{#2} + \wa@def{institution}\wa@institution@id{shortname}{\wa@institution@shortname} + \wa@def{institution}\wa@institution@id{acronym}{\wa@institution@acronym} + \wa@def{institution}\wa@institution@id{url}{\wa@institution@url} + \wa@def{institution}\wa@institution@id{partof}{\wa@institution@partof} + \wa@def{institution}\wa@institution@id{countryshort}{\wa@institution@countryshort} + \wa@def{institution}\wa@institution@id{logo}{\wa@institution@logo} + \wa@def{institution}\wa@institution@id{townzip}{\wa@institution@townzip} + \wa@def{institution}\wa@institution@id{streetaddress}{\wa@institution@streetaddress} + \wa@def{institution}\wa@institution@id{country}{\wa@institution@country} + \wa@def{institution}\wa@institution@id{type}{\wa@institution@type} + \@ifundefined{wa@institutions}{% + \xdef\wa@institutions{\wa@institution@id}% + }{% + \xdef\wa@institutions{\wa@institutions,\wa@institution@id}% + }% + \fi% +}% +\newcommand\DCMinstitution[2][]{% + \WAinstitution[#1]{#2}% + \PackageWarning{workaddress}{\protect\DCMinstitution\space is deprecated, use \protect\WAinstitution\space instead}% +}% \addmetakey[false]{WAauthorblock}{dept}[true] \addmetakey[false]{WAauthorblock}{aff}[true] \addmetakey[false]{WAauthorblock}{url}[true] \def\@true{true} \newcounter{authors} \newcommand\WAauthorblock[2][]{% -\metasetkeys{WAauthorblock}{#1} -{\let\tabularnewline\relax - \@for\@I:=#2\do{\stepcounter{authors}} - \def\@authors{}\def\@affs{}\def\@depts{}\def\@urls{} - \@for\@I:=#2\do - {\xdef\@authors{\@authors&\wa@ref{person}\@I{name}} - \xdef\@@dept{\wa@ref{person}\@I{department}} - \xdef\@shortname{\csname wa@institution@\@@dept @shortname\endcsname} - \xdef\@dept{\ifx\@shortname\@empty\wa@ref{institution}\@@dept{name}\else\@shortname\fi} - \xdef\@depts{\@depts&\@dept} - \xdef\@@aff{\wa@ref{person}\@I{affiliation}} - \xdef\@shortname{\csname wa@institution@\@@aff @shortname\endcsname} - \xdef\@aff{\ifx\@shortname\@empty\wa@ref{institution}\@@aff{name}\else\@shortname\fi} - \xdef\@affs{\@affs&\@aff} - \xdef\@urls{\@urls&\wa@ref{person}\@I{url}}} - \message{\theauthors authors: \@authors}} + \metasetkeys{WAauthorblock}{#1} + {\let\tabularnewline\relax + \@for\@I:=#2\do{\stepcounter{authors}} + \def\@authors{}% + \def\@affs{}% + \def\@depts{}% + \def\@urls{}% + \@for\@I:=#2\do{% + \xdef\@authors{\@authors&\wa@ref{person}\@I{name}} + \xdef\@@dept{\wa@ref{person}\@I{department}} + \xdef\@shortname{\csname wa@institution@\@@dept @shortname\endcsname} + \xdef\@dept{\ifx\@shortname\@empty\wa@ref{institution}\@@dept{name}\else\@shortname\fi} + \xdef\@depts{\@depts&\@dept} + \xdef\@@aff{\wa@ref{person}\@I{affiliation}} + \xdef\@shortname{\csname wa@institution@\@@aff @shortname\endcsname} + \xdef\@aff{\ifx\@shortname\@empty\wa@ref{institution}\@@aff{name}\else\@shortname\fi} + \xdef\@affs{\@affs&\@aff} + \xdef\@urls{\@urls&\wa@ref{person}\@I{url}} + }% + \message{\theauthors authors: \@authors}% + }% \begin{tabular}[t]{l*{\theauthors}{c}} \@authors\\ \ifx\WAauthorblock@dept\@true\@depts\\\fi \ifx\WAauthorblock@aff\@true\@affs\\\fi \ifx\WAauthorblock@url\@true\@urls\\\fi -\end{tabular}} + \end{tabular} +}% \newcommand\wapname[1]{\wa@ref{person}{#1}{name}} \newcommand\waptname[1]{\wa@ref{person}{#1}{personaltitle} \wa@ref{person}{#1}{name}} \newcommand\wa@institution@logo[2][]{% -\pgfdeclareimage[#1]{logo}{\wa@ref{institution}{#2}{logo}} -\IfFileExists{\wa@ref{institution}{#2}{logo}}% -{\pgfuseimage{logo}} -{\fbox{#2 logo}\message{still need logo for #2}}} + \IfFileExists{\wa@ref{institution}{#2}{logo}}{% + \includegraphics{\wa@ref{institution}{#2}{logo}}% + }{% + \fbox{#2 logo}\message{still need logo for #2}% + }% +}% \endinput %% %% End of file `workaddress.sty'. diff --git a/Master/texmf-dist/tex/latex/stex/workaddress/workaddress.sty.ltxml b/Master/texmf-dist/tex/latex/stex/workaddress/workaddress.sty.ltxml deleted file mode 100644 index be79b087423..00000000000 --- a/Master/texmf-dist/tex/latex/stex/workaddress/workaddress.sty.ltxml +++ /dev/null @@ -1,63 +0,0 @@ -# -*- CPERL -*- -package LaTeXML::Package::Pool; -use strict; -use LaTeXML::Global; -use LaTeXML::Package; -RequirePackage('sref'); - sub getKeyValue_noDelim { - my ($keyval,$key)=@_; - my $valuelist = $keyval && ToString($keyval->getValue($key)); - $valuelist =~ s/^{(.*)}$/$1/g if $valuelist; - return $valuelist; -} -sub ExportMetadata { - my $keys = shift; - my($id, $email,$affill,$address,$url,$name)=$keys - && map(getKeyValue_noDelim($keys,$_),qw(id email affiliation address url name)); - if ($id) { - AssignValue('WA_'.$id.'_email',$email,'global') if $email; - AssignValue('WA_'.$id.'_affiliation',$affill,'global') if $affill; - AssignValue('WA_'.$id.'_address',$email,'global') if $email; - AssignValue('WA_'.$id.'_url',$url,'global') if $url; - AssignValue('WA_'.$id.'_name',$name,'global') if $name; - } else {print STDERR "Warning: key 'id' undefined in \\WAperson\n"}; - return;}#$ -DefKeyVal('wa@person','id','Semiverbatim'); -DefKeyVal('wa@person','birthdate','Semiverbatim'); -DefKeyVal('wa@person','email','Semiverbatim'); -DefKeyVal('wa@person','url','Semiverbatim'); -DefKeyVal('wa@person','affiliation','Semiverbatim'); -DefKeyVal('wa@person','personaltitle','Semiverbatim'); -DefKeyVal('wa@person','academictitle','Semiverbatim'); -DefKeyVal('wa@person','department','Semiverbatim'); -DefKeyVal('wa@person','workaddress','Semiverbatim'); -DefKeyVal('wa@person','privaddress','Semiverbatim'); -DefKeyVal('wa@person','worktel','Semiverbatim'); -DefKeyVal('wa@person','privtel','Semiverbatim'); -DefKeyVal('wa@person','workfax','Semiverbatim'); -DefKeyVal('wa@person','privfax','Semiverbatim'); -DefKeyVal('wa@person','worktelfax','Semiverbatim'); -DefKeyVal('wa@person','privtelfax','Semiverbatim'); - -DefConstructor('\WAperson OptionalKeyVals:wa@person {}','', -afterDigest=>sub { - my ($stomach,$whatsit)=@_; - my $keys=$whatsit->getArg(1); - my $name=ToString($whatsit->getArg(2)); - $keys->setValue('name',$name); - ExportMetadata($keys); - return; -});#$ -DefKeyVal('wa@institution','id','Semiverbatim'); -DefKeyVal('wa@institution','url','Semiverbatim'); -DefKeyVal('wa@institution','partof','Semiverbatim'); -DefConstructor('\WAinstitution OptionalKeyVals:wa@institution {}','', -afterDigest=>sub { - my ($stomach,$whatsit)=@_; - my $keys=$whatsit->getArg(1); - my $name=ToString($whatsit->getArg(2)); - $keys->setValue('name',$name); - ExportMetadata($keys); - return; -});#$ -1; |