diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/protex/ProTex.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/protex/ProTex.sty | 333 |
1 files changed, 333 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/protex/ProTex.sty b/Master/texmf-dist/tex/latex/protex/ProTex.sty new file mode 100644 index 00000000000..55c85c71487 --- /dev/null +++ b/Master/texmf-dist/tex/latex/protex/ProTex.sty @@ -0,0 +1,333 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% v 1.5 +% ProTex % +% Copyright (C) 1990,1991 by Eitan M. Gurari % +% % +% This program can redistributed and/or modified under % +% the terms of the LaTeX Project Public License % +% Distributed from CTAN archives in directory % +% macros/latex/base/lppl.txt; either version 1 of the % +% License, or (at your option) any later version. % +% % +% However, you are allowed to modify this program % +% without changing its name, if you modify its % +% signature. Changes to the signature can be introduced % +% with a directive of the form % +% \message{signature} % +% % +% gurari@cis.ohio-state.edu % +% http://www.cis.ohio-state.edu/~gurari % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\expandafter\edef\csname :RestoreCatcodes\endcsname{% + \catcode`\noexpand :=\the\catcode`:% + \catcode`\noexpand @=\the\catcode`@% + \catcode`\noexpand -=\the\catcode`-% + \catcode`\noexpand +=\the\catcode`+% + \catcode`\noexpand ^=\the\catcode`^% + \let\expandafter\noexpand\csname:RestoreCatcodes\endcsname= + \noexpand\undefined} +\catcode`\:=11 \catcode`\@=11 \catcode`\^=7 +\def\:latexpg{\ifx\pageno\:undefined + \let\pageno=\c@page \fi} +\:latexpg +\def\:minus{-} \catcode`\-=13 \catcode`\+=13 +\def\Code#1#2{% + {\:TraceDef#1{#2}}% + \ifx #1\:undefined \else \def#1{}% + \:warn{\string\Code\space redefines \string#1}\fi +\ifx #1\:undefined \ModifyCode{#1}\fi + \gdef#1{-{#2}{\string#1}}\AppendCode#1}\def\ModifyCode#1{} + +\def\:warn#1{\immediate \write16{l.\the\inputlineno + \space\:minus\string- Warning \:minus\string- #1}} +\def\:CheckCommand#1#2{% + \def-##1##2{\let\:undefined=\relax}% + \def+##1##2{}% + #2\relax + \ifx \:undefined\relax \else + \errmessage{\string#1\string#2 without + \string\Code\string#2}\fi} +\def\AppendCode#1{% + \begingroup + \:CheckCommand\AppendCode#1% + \:defaultcats + \def\:ScanAppend##1{\endgroup + \:ifempty{##1}\else + \global\advance\:CodeNumber by 1 + {\def\:TagCs{\string#1.\the\:CodeNumber}% + \:WriteTrc{DefineCode}}% + \:ExpandDef#1{+{##1}}{\noexpand + {\CodeId{\string#1}{\the\:CodeNumber}\noexpand}}% + \AfterCode{#1}% +\fi}% + \ModifyAppendCode{#1}\relax + \:ScanAppend}\def\ModifyAppendCode#1{} \def\AfterCode#1{} + +\def\:ifempty#1{\def\:parm{#1}% + \ifx \:parm\empty}\def\CodeId#1#2{#1.#2} \newcount\:CodeNumber +\newtoks\:tokens +\def\:ExpandDef#1#2#3{% + \:tokens=\expandafter{#1#2}% + \xdef#1{\the\:tokens #3}}\def\:defaultcats{% + \:NoSpecials{12}{0}{255}% + \:NoSpecials{11}{65}{90}% + \:NoSpecials{11}{97}{122}% + \catcode`\\=0 \catcode`\{=1 \catcode`\}=2 + \catcode`\ =13 \catcode`\^^M=13 \catcode`\^^I=13 } + +\def\:NoSpecials#1#2#3{\edef\:temp{\the\:CodeNumber}% + \global\:CodeNumber=#3 + \def\:next{\catcode\:CodeNumber=#1 + \ifnum \:CodeNumber=#2 \let\:next=\relax \fi + \global\advance\:CodeNumber by \:minus1 \:next}\:next + \global\:CodeNumber=\:temp } +\def-#1#2{{\CodeFont \WindowTitle{#1}}} +\def+#1#2{} +\def\WindowTitle#1{\leavevmode \hbox{$\triangleleft + \triangleleft$}~#1~\hbox{$\triangleright + \triangleright$}} +\let\CodeFont=\tt +\def\ShowCode#1{% + \def\:test{#1}% + \ifx \:test\:minus \expandafter\:ShowCode \else + \:ShowCode#1\fi}\def\:ShowCode#1{% + \begingroup \:ShowCommands + \:SpTbLn +\def\\{\char 92 }% +\def\{{\char 123 }% +\def\}{\char 125 }% +\ifvmode + \def\:Sp{\leavevmode\phantom{x}}% + \def\:Tb{\:Sp\:Sp}% + \def\:Ln{\leavevmode\par}% +\else + \def\:Sp{ }% + \def\:Tb{ \ignorespaces}% + \def\:Ln{\:Tb}% +\fi + \ifvmode \everypar={}% + \:CodeSkip + \parskip=0em \parindent=\:minus3em + \advance \leftskip by 6em + % + \def\:TopTitle##1{{\:TitleShift + \noindent \hfil \:FrontTitle{##1}\par + \nobreak \smallskip}}% + \def\:BottomTitle{{\par \nobreak \:TitleShift + \noindent \hfil \:BackTitle\par}}% +\else + \def\:TopTitle##1{\:FrontTitle{##1} }% + \def\:BottomTitle{ \:BackTitle}% + \def\:CodeSkip{}% +\fi +\def\:FrontTitle##1{\PortTitle{##1}\:AppendSign}% +\def\:BackTitle{\hbox{$\diamond\diamond\diamond$}}% +% +\def\PortTitle##1{\leavevmode \hbox{$\triangleright + \triangleright$}~##1~\hbox{$\triangleleft + \triangleleft$}}% +\def-##1##2{}% +\def+##1##2{\let+=\:next}% +\def\:next##1##2{\def\:AppendSign{\char43 }}% +\def\:AppendSign{}% +#1\relax + \def-##1##2{}% +\def+##1##2{\def\:LastCodeLabel{##2}}% +\def\:LastCodeLabel{}% +#1\relax +\ifx\:LastCodeLabel\empty\else + {\def\:TagCs{\:LastCodeLabel}\:WriteTrc{ShowCode}}% +\fi + \CodeFont + \:CheckCommand{\ShowCode}{#1}% + \ModifyShowCode{#1}\relax + \ifx \:test\:minus \else + \def-##1##2{\:TopTitle{##1}}% + \def+##1##2{}% + \ModifyFrontTitle{#1}\relax + #1\relax +\fi + \def-##1##2{}% +\def+##1##2{\def\:LastCode{##1}}% +\def\:LastCode{}% +\ModifyLastCode{#1}\relax +#1\relax\def-##1##2{{\def\:TagCs{##2}\:WriteTrc{ShowTitle}}% + \WindowTitle{##1}}% +\def+##1##2{}% +\ModifyShowLastCode{#1}\relax +\:LastCode + \ifx \:test\:minus \else + \:BottomTitle +\fi +\:CodeSkip + \endgroup} + +\def\ModifyShowCode#1{} +\def\:CodeSkip{\ifdim \CodeSkipAmount>0pt + \vskip\:minus\lastskip \fi + \vskip\CodeSkipAmount} +\def\CodeSkipAmount{\medskipamount} +\def\ShiftTitle#1{% + \def\:TitleShift{\advance \leftskip by #1}} +\ShiftTitle{\:minus6em} +\def\ModifyFrontTitle#1{}\def\ModifyLastCode#1{} +\def\ModifyShowLastCode#1{}\begingroup + \catcode`\.=10 \catcode`\^^I=13 \catcode`\^^M=13% + \catcode`\ =13% +...\gdef\:SpTbLn{% +......\def {\:Sp}\def^^M{\:Ln}\def^^I{\:Tb}}% +\endgroup\begingroup + \catcode`\{=12 \catcode`\}=12 + \catcode`\[=1 \catcode`\]=2 + \gdef\:lbrc[{] \gdef\:rbrc[}] + \catcode`\,=0 \catcode`\\=12 + ,gdef,:backslash[\] +,endgroup +\catcode`\%=12 \catcode`\@=14 +\def\:ShowCommands{@ \tempor + \ifvmode + \linepenalty=100 + \def\NL%{$\rightarrow\rightarrow$\hfill\break}@ + \def\%##1\%{{\CommentFont + \def\:Tb{ \ignorespaces}@ + \def\:Sp{ }@ + \def\:Ln{\hfill\break}@ + ##1}}@ + \else + \def\NL%{}@ + \def\%##1\%{{\CommentFont ##1}}@ + \fi} +\def\CommentFont{\it} +\def\:OutCommands{\def\NL%{}\def\%##1\%{}} +\catcode`\%=14 \catcode`\@=11 \def\:OutputCode#1{% + \begingroup \:OutCommands + \:CheckCommand{\OutputCode}{#1}% + \:latexpg + {\def\:TagCs{\string#1}\:WriteTrc{OutputCode}}% + \def\Tag##1##2{}\def\Ref##1{}% + \:SpTbLn +\def\:Sp{ }% +\def\:Tb{\:Sp\:Sp}% +\newlinechar`\^^J \def\:Ln{^^J}% +\def\\{\:backslash}% +\def\{{\:lbrc}% +\def\}{\:rbrc}% + \def\Extension{prg}% + \def\:WriteCode{\immediate\write15{#1}}% + % rules for expanding the code macros + \def-##1##2{}% + \def+##1##2{\:comment{##2\ifx \CodeId\:gobbleii\else...\fi}##1% + \:comment{\ifx \CodeId\:gobbleii\else...\fi##2}}% + % name for the auxiliary code file + \def\:gobble##1{}% + \def\:FileName{\expandafter + \:gobble\string#1.\Extension}% + % writing the file + \ModifyOutputCode{#1}\relax + \immediate\openout15=\:FileName \:WriteCode + \immediate\closeout15 + % notifying the user + \ProTexMssg{\string-\string-\string- + Writing file \string-\string-\string- + \:FileName\space\string-\string-\string-}% + \endgroup } +\def\:gobbleii#1#2{} +\def\ProTexMssg{\immediate\write16} + +\def\:ParOutputCode#1]#2{{% + \let\:ModifyOutputCode=\ModifyOutputCode + \def\ModifyOutputCode##1{\:ModifyOutputCode{##1}% + \def\Extension{#1}}% + \:OutputCode #2}} + +\def\OutputCode#1{% + \ifx#1[\let\:next=\:ParOutputCode + \else \def\:next{\:OutputCode#1}\fi \:next} + +\def\ModifyOutputCode#1{}\def\:comment#1{} +\def\Comment{\begingroup + \:defaultcats + \::comment} + +\def\::comment#1#2{\endgroup + \def\:flag{}% + \:ifempty{#1}\else \def\:flag{.}\fi + \:ifempty{#2}\else \def\:flag{.}\fi + \ifx \:flag\empty \def\:comment##1{}% +\else \def\:comment##1{#1##1#2}\fi} +\def\Ref#1{% + \:ifempty{#1}\:warn{Empty field in \noexpand\Ref}% + \else + \expandafter\ifx \csname cw:#1\endcsname \relax + \:NoTag{#1}% + \else \expandafter\csname cw:#1\endcsname \fi + \fi} +\def\Tag#1#2{% + \:ifempty{#1}\:warn{First field + empty in \noexpand\Tag}% + \else + \begingroup + \:latexpg + \edef\:head{\:TagCs\space{#1}{#2}}% + \def\:write{\write\:refout}% + \expandafter \expandafter + \expandafter\:write + \expandafter{\:head{\the\pageno}}% + \endgroup + \fi} + +\let\:trc=\Tag +\def\:TagCs{\string\:CrossWord} \catcode`\-=12 \catcode`\+=12 +\ifx \:refout\:UnDef + \openin15 \jobname.xref + \ifeof15 \immediate\write16{No file \jobname.xref} + \def\:NoTag#1{\hbox{$???$}} + \else + \begingroup + \def\:CrossWord#1#2#3{% + \def\:parm{#2}% + \ifx \:parm\empty \:AddTag{#1}{#3}\else + \:AddTag{#1}{#2}\fi} + +\def\:AddTag#1#2{% + \expandafter \ifx \csname cw:#1\endcsname \relax + \def \:entries{#2}% + \else \edef\:entries{\csname cw:#1\endcsname , #2}% + \fi + \expandafter \xdef \csname cw:#1\endcsname{\:entries}} + \input \jobname.xref + \endgroup + \def\:NoTag#1{\hbox{$???$}% + \:warn{\string\Ref\string{\string#1\string}?}} + \fi + \closein15 +\fi + \catcode`\-=13 \catcode`\+=13 +\ifx \:refout\:UnDef + \csname newwrite\endcsname\:refout + \openout\:refout=\jobname.xref +\fi +\newwrite\:trcfile +\immediate\openout\:trcfile=\jobname.trc + +\def\:WriteTrc#1{{\let\:refout=\:trcfile + \:trc{\string#1}{\the\inputlineno}}} +\def\:TraceDef#1#2{\:tokens={#2}% + \immediate\write\:trcfile{% + \string#1\space{DefineTitle}{{\the + \:tokens};;\the\inputlineno}{}}} +\def\:AlProTex{\ifx \:next[ + \def\AlProTex[##1]##2{\egroup \def\AlProTex{##2}\input ##1 } + \else + \def\AlProTex##1{\egroup \def\AlProTex{##1}\input AlProTex.sty } + \fi \let\:AlProTex=\:undefined \AlProTex} +\def\AlProTex{\bgroup \catcode`\@=12 \catcode`\^=7 \catcode`\_=8 + \futurelet\:next\:AlProTex} +\ifx \inputlineno\undefined + \csname newcount\endcsname\inputlineno + \let\:oldNoSpecials=\:NoSpecials + \def\:NoSpecials#1#2#3{\ifnum #3>127 + \:oldNoSpecials{#1}{#2}{127}\else + \:oldNoSpecials{#1}{#2}{#3}\fi } +\fi +\:RestoreCatcodes \endinput + |