%% %% This is file `modules.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% modules.dtx (with options: `package') %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] \ProvidesPackage{modules}[2019/03/20 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@trwarn\@trwarnfalse \DeclareOption{trwarn}{\@trwarntrue} \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{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} \addmetakey*{module}{align}[WithTheModuleOfTheSameName] \addmetakey*{module}{noalign}[true] \define@key{module}{id}{% \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}% }% \ifdef{\thesection}{\newcounter{module}[section]}{\newcounter{module}}% \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\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}{noverb}[all]{}% \define@key{symdef}{align}[WithTheSymbolOfTheSameName]{}% \define@key{symdef}{specializes}{}% \addmetakey*{symdef}{noalign}[true] \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}% \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}% \newcommand\mod@component[1]{} \newcommand\mod@termref[3]{\def\@test{#3}% \@ifundefined{module@defs@#1}{% \protect\G@refundefinedtrue% \if@trwarn \PackageWarning{modules}{`\protect\termref' with unidentified cd "#1":\MessageBreak the cd key must reference an active module}% \else \PackageError{modules}{`\protect\termref' with unidentified cd "#1"} {the cd key must reference an active module}% \fi}% {\def\@label{sref@#2@#1\mod@component{#1}@target}% \@ifundefined{module@#1@path}% local reference {\sref@hlink@ifh{\@label}{\ifx\@test\@empty #2\else #3\fi}% }% {\def\@uri{\csname module@#1@path\endcsname\mod@component{#1}.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}% }% \define@key{module}{usesqualified}{% \@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'.