summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/stex/modules.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2008-05-20 17:50:33 +0000
committerKarl Berry <karl@freefriends.org>2008-05-20 17:50:33 +0000
commita62e1d4e096be4d689f337c35488333116c5e3e4 (patch)
tree803679fd4f27b12d609e5920df24f6855150c00c /Master/texmf-dist/tex/latex/stex/modules.sty
parent9f0169e9cace9e8a9a261e3095ea97dac44f3d4a (diff)
new package stex (10may08)
git-svn-id: svn://tug.org/texlive/trunk@8255 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/stex/modules.sty')
-rw-r--r--Master/texmf-dist/tex/latex/stex/modules.sty145
1 files changed, 145 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/stex/modules.sty b/Master/texmf-dist/tex/latex/stex/modules.sty
new file mode 100644
index 00000000000..49ce55bc45c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/stex/modules.sty
@@ -0,0 +1,145 @@
+%%
+%% 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}[2006/01/13 v0.9a Semantic Markup]
+
+\newif\ifmod@env\mod@envfalse
+\newif\ifmod@id\mod@idfalse
+\newif\ifmod@display\mod@displayfalse
+\newif\ifmod@uses\mod@usesfalse
+\newif\ifmod@usesqualified\mod@usesqualifiedfalse
+\DeclareOption{env}{\mod@envtrue}
+\DeclareOption{id}{\mod@idtrue}
+\DeclareOption{uses}{\mod@usestrue}
+\DeclareOption{display}{\mod@displaytrue}
+\DeclareOption{usesqualified}{\mod@usesqualifiedtrue}
+\def\modtrue{\mod@idtrue\mod@usestrue\mod@displaytrue\mod@usesqualifiedtrue}
+\DeclareOption{draft}{\modtrue}
+\DeclareOption{all}{\modtrue}
+\ProcessOptions
+\RequirePackage{keyval}[1997/11/10]
+\define@key{module}{cd}{}
+\define@key{module}{id}{%
+ \edef\this@module{\expandafter\noexpand\csname module@defs@#1\endcsname}%
+ \edef\this@qualified@module{\expandafter\noexpand\csname module@defs@qualified@#1\endcsname}%
+ \global\@namedef{module@defs@#1}{}
+ \global\@namedef{module@defs@qualified@#1}{}
+ \def\mod@id{#1}}
+\newenvironment{module}[1][]{\setkeys{module}{#1}\ifmod@env\show@mod@keys{module}\fi}{}
+\def\show@mod@keys@aux{%
+\@ifundefined{mod@id}{}{\ifmod@id{id=\mod@id},\fi}%
+\@ifundefined{mod@display}{}{\ifmod@display{display=\mod@display}\fi}
+\@ifundefined{mod@uses}{\relax}{\ifmod@uses{uses=\mod@uses},\fi}
+\@ifundefined{mod@usesqualified}\relax\else
+ \ifmod@usesqualified{usesqualified=\mod@usesqualified},\fi\fi}
+\def\clear@mod@keys{\let\mod@usesqualified=\relax\mod@uses=\relax
+ \let\st@id=\relax\let\st@display=\relax}
+\def\show@mod@keys#1{\footnote{#1[\show@mod@keys@aux]}\clear@mod@keys}
+\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}}}
+\newcommand{\importmodule}[2][]{\def\@test{#1}%
+\ifx\@test\@empty\else\requiremodules{#1}\fi
+\activate@defs{#2}\export@defs{#2}}
+\define@key{symdef}{aliases}{}
+\define@key{symdef}{local}[true]{\@symdeflocaltrue}
+\define@key{symdef}{cmml}{}
+\define@key{symdef}{cattrs}{}
+\define@key{symdef}{definitionURL}{}
+\newif\if@symdeflocal
+\def\symdef{\@ifnextchar[{\@symdef}{\@symdef[]}}
+\def\@symdef[#1]#2{\@ifnextchar[{\@@symdef[#1]{#2}}{\@@symdef[#1]{#2}[0]}}
+\def\@@symdef[#1]#2[#3]#4{%
+\@symdeflocalfalse\setkeys{symdef}{#1}
+ \expandafter\providecommand\csname modules@#2@pres\endcsname[#3]{#4}
+ \expandafter\def\csname#2\endcsname{\csname modules@#2@pres\endcsname}
+ \if@symdeflocal\else
+ \@ifundefined{mod@id}{}{
+ \expandafter\g@addto@macro\this@module{\expandafter\providecommand\csname modules@#2@pres\endcsname[#3]{#4}}%
+ \expandafter\g@addto@macro\this@module{\expandafter\def\csname#2\endcsname{\csname modules@#2@pres\endcsname}}
+ \expandafter\g@addto@macro\this@qualified@module{\expandafter\providecommand\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}
+\def\redefine#1[#2]#3{\expandafter\renewcommand\csname modules@#1@pres\endcsname[#2]{#3}}
+\let\abbrdef\symdef
+\def\mod@simplify#1{\expandafter\mod@simpl#1/\relax}
+\def\mod@simpl#1/#2\relax{%\message{ 1 = #1, 2 = #2 }%
+\def\mod@test{}\ifx\mod@blaaaa\mod@test\edef\mod@savedprefix{}\def\mod@blaaaa{aaa}\else\fi
+\def\mod@comp{#2}\ifx\mod@test\mod@comp\edef\mod@savedprefix{\mod@savedprefix#1}%
+\else\mod@simplhelp#1/#2\relax\fi}
+\def\mod@simplhelp#1/#2/#3\relax{%
+\def\mod@test{}\def\mod@tust{#2}\def\mod@tist{#3}\def\mod@tost{..}\ifx\mod@test\mod@tist%
+\ifx\mod@tost\mod@tust\edef\mod@savedprefix{}\else\edef\mod@savedprefix
+{\mod@savedprefix#1/#2}\fi \else\ifx\mod@tost\mod@tust\mod@simpl#3\relax%
+\else\edef\mod@savedprefix{\mod@savedprefix#1/}\mod@simplhelp#2/#3\relax\fi\fi}%
+\newif\ifmodules
+\gdef\reg{}
+\def\mod@update#1{\def\mod@empty{}
+\ifx\reg\mod@empty\xdef\reg{#1}\else\xdef\reg{#1@\reg}\fi}
+\def\mod@check#1@#2///#3\relax{%
+\def\mod@empty{}\def\mod@one{#1}\def\mod@two{#2}\def\mod@three{#3}%
+\expandafter\ifx\mod@three\mod@one\modulestrue\else\ifx\mod@two\mod@empty\modulesfalse%
+\else\mod@check#2///#3\relax\fi\fi}
+\def\mod@search#1{%
+\modulesfalse\expandafter\mod@check\reg @///#1\relax%
+\ifmodules\else\mod@update{#1}\fi}
+\def\mod@reguse#1{\modulesfalse\expandafter\mod@check\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@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\reg % use to compare, in case the .sms file was loaded before
+\mod@search{\mod@savedprefix} % update registry
+\ifx\newreg\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\reg % use to compare, in case the .sms file was loaded before
+\mod@search{\mod@savedprefix} % update registry
+\ifx\newreg\reg%\message{This file has been previously introduced}
+\else\input{\mod@savedprefix}\fi}}
+\def\requirepackage#1#2{\makeatletter\input{#1.sty}\makeatother}
+\endinput
+%%
+%% End of file `modules.sty'.