diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex3/xor/xmarks.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex3/xor/xmarks.sty | 227 |
1 files changed, 227 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex3/xor/xmarks.sty b/Master/texmf-dist/tex/latex3/xor/xmarks.sty new file mode 100644 index 00000000000..c452a6fd060 --- /dev/null +++ b/Master/texmf-dist/tex/latex3/xor/xmarks.sty @@ -0,0 +1,227 @@ +%% +%% This is file `xmarks.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% xmarks.dtx (with options: `package') +%% +%% Not for distribution +%% +%% (C) Copyright 1999-2000 Frank Mittelbach, David Carlisle, Chris Rowley +%% All rights reserved. +%% +%% Not for general distribution. In its present form it is not allowed +%% to put this package onto CD or an archive without consulting the +%% the authors. +%% +%% (C) Copyright 1999 Frank Mittelbach +%% All rights reserved. +%% +%% Not for general distribution. In its present form it is not allowed +%% to put this package onto CD or an archive without consulting the +%% the authors. +%% +\def\next#1: #2.dtx,v #3 #4 #5 #6 #7$#8{ +\ProvidesPackage{#2} + [#4 #3 #8 (#6)]} +\next$Id: xmarks.dtx,v 1.6 2000/06/13 20:47:23 latex3 Exp $ + {multiple marks} +\RequirePackage{ldcsetup} +\IgnoreWhiteSpace +\long\def\@firstofthree#1#2#3{#1} +\long\def\@secondofthree#1#2#3{#2} +\long\def\@thirdofthree#1#2#3{#3} +\def \tlp@to@str@N {\expandafter \tlp@to@str@aux \meaning} +\def \tlp@to@str@aux #1>{} +\def \tlp@to@str@c #1 {\expandafter \tlp@to@str@N \csname#1\endcsname} +\def\queue@new@c#1{\@namedef{#1}{}} +\def\queue@gadd@Nn#1#2{\expandafter\gdef\expandafter#1\expandafter + {#1\queue@elt#2\queue@eelt} +} +\def\queue@gadd@cn#1{\expandafter\queue@gadd@Nn\csname#1\endcsname} +\def\queue@top@NN#1#2{ + \queue@empty@err@N#1 + \expandafter\queue@top@split@w#1\q@stop{\def#2} +} +\def\queue@top@split@w\queue@elt#1\queue@eelt#2\q@stop#3{#3{#1}} +\def\queue@top@cN#1{\expandafter\queue@top@NN\csname#1\endcsname} +\def \queue@pop@aux@nnNN #1#2#3{ + \queue@empty@err@N #3 + \expandafter\queue@pop@aux@w #3\q@stop #1#2#3} +\def \queue@pop@aux@w \queue@elt#1\queue@eelt + #2\q@stop #3#4#5#6{#3#5{#2}#4#6{#1}} +\def \queue@gpop@NN #1#2{\queue@pop@aux@nnNN \gdef \def #1 #2 +} +\def \queue@gpop@cN #1{\expandafter\queue@gpop@NN\csname#1\endcsname} +\def\queue@empty@err@N #1{\ifx#1\@empty \ERROR \fi} +\def \quark@new@N #1{\def #1{#1}} +\quark@new@N \q@stop +\quark@new@N \q@no@value +\quark@new@N \q@nil +\quark@new@N\q@error +\quark@new@N\q@mark +\def \quark@if@no@value@NTF #1{ + \ifx\q@no@value#1 + \expandafter\@firstoftwo + \else \expandafter\@secondoftwo \fi} +\def \quark@if@no@value@NF #1{\quark@if@no@value@NTF {#1}\@empty} +\def \quark@if@no@value@nTF #1{\gdef \@gtempa {#1} + \quark@if@no@value@NTF\@gtempa} +\def \quark@if@no@value@nF #1{\quark@if@no@value@nTF {#1}\@empty} +\def \quark@if@no@value@nT #1#2{\quark@if@no@value@nTF {#1} + {#2}\@empty} +\def\quark@if@nil@NTF#1{ + \ifx#1\q@nil + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo\fi} +\def \prop@new@N #1{\def #1{}} +\long\def \prop@put@NNn #1#2{\prop@split@aux@NNn + #1#2{\prop@put@aux@w {\def #1}#2}} +\long\def \prop@gput@NNn #1#2{\prop@split@aux@NNn + #1#2{\prop@put@aux@w {\gdef #1}#2}} +\def \prop@gput@NNo #1#2#3{ + \expandafter\prop@gput@NNn \expandafter #1 \expandafter + #2 \expandafter { #3 } } +\def \prop@gput@cco #1#2#3{ + \expandafter\prop@gput@NNn \csname #1\expandafter\endcsname + \csname #2\expandafter\endcsname + \expandafter { #3 } } +\def \prop@gput@ccn #1#2{ + \expandafter\prop@gput@NNn \csname #1\expandafter\endcsname + \csname #2\endcsname + } +\long\def \prop@put@aux@w #1#2#3#4#5#6{ + \quark@if@no@value@nTF {#4} + {#1{#2{#6}#3}} + {\def\tmp@w ##1#2\q@no@value {#1{#3#2{#6}##1}} + \tmp@w #5}} +\long\def \prop@split@aux@NNn #1#2#3{ + \def\tmp@w ##1#2##2##3\q@stop {#3{##1}{##2}{##3}} + \expandafter\tmp@w #1#2\q@no@value \q@stop} +\long\def \prop@get@NNN #1#2{\prop@split@aux@NNn + #1#2\prop@get@aux@w} +\long\def \prop@get@aux@w #1#2#3#4{\def#4{#2}} +\let \prop@map@funct@Nn \@gobbletwo +\def \prop@map@NN #1#2{ + \let \prop@map@funct@Nn #2 + \expandafter\prop@map@aux@w #1\q@stop \q@stop} +\def \prop@map@aux@w #1#2{ + \ifx #1\q@stop \else + \prop@map@funct@Nn #1{#2} + \expandafter\prop@map@aux@w + \fi} +\def \prop@map@cN #1{ + \expandafter \prop@map@NN \csname #1\endcsname } +\def\mark@new#1{ + \newcommand* #1 {{}{}{}} + \queue@new@c{\string#1@seq} + \prop@gput@NNn\mark@last@plist#1{1} + \prop@gput@NNn\mark@curr@plist#1{0} + \mark@put@Nn#1{}% + \expandafter\g@addto@macro\expandafter\mark@save@state\expandafter{% + \expandafter\global\expandafter\let + \csname saved\string#1@seq\expandafter\endcsname + \csname\string#1@seq\endcsname} + \expandafter\g@addto@macro\expandafter\mark@restore@state@internal\expandafter{% + \expandafter\global\expandafter\let + \csname\string#1@seq\expandafter\endcsname + \csname saved\string#1@seq\endcsname} +} +\def\mark@save@state{% + \global\let\saved@mark@curr@plist\mark@curr@plist + \global\let\saved@mark@last@plist\mark@last@plist} +\def\mark@restore@state@internal{% + \global\let\mark@curr@plist\saved@mark@curr@plist + \global\let\mark@last@plist\saved@mark@last@plist} +\def\mark@restore@state#1{% + \mark@restore@state@internal + \hbox{}% + \@temptokena\expandafter{\mark@last@plist}% + \mark + {\the\@temptokena} + \penalty-20203\relax + \global\output{% + \ifnum-20203=\outputpenalty\else \ERROR \fi + \global\setbox\@cclv\box\voidb@x + #1% + }% +} +\def\mark@put@Nn#1{% % wtest hack } + \@temptokena\expandafter{\mark@curr@plist} + \prop@get@NNN\mark@curr@plist#1\@tempa + \@tempcnta\@tempa + \advance\@tempcnta\@ne + \expandafter + \prop@gput@NNn\expandafter\mark@curr@plist\expandafter#1\expandafter + {\the\@tempcnta} + \@temptokena\expandafter{\mark@curr@plist} + \mark + {\the\@temptokena} + \queue@gadd@cn{\string#1@seq}% +} +\def\mark@put@Nnn#1#2#3{ + \mark@put@Nn#1{#2#3}} +\def\mark@update@structure{ + \prop@map@NN\mark@last@plist\mark@retrieve@single@Nn + \expandafter\gdef\expandafter\mark@last@plist\expandafter{\botmark} +} +\def\mark@retrieve@single@Nn#1#2{ + \@temptokena\expandafter{\botmark}% + \prop@get@NNN\botmark#1\@tempa + \@tempcnta\@tempa + \advance\@tempcnta-#2\relax + \ifcase\@tempcnta + \queue@top@cN{\string#1@seq}\@tempa + \let\@tempb\@tempa + \let\@tempc\@tempa + \or + \queue@gpop@cN{\string#1@seq}\@tempa + \queue@top@cN{\string#1@seq}\@tempb + \let\@tempc\@tempb + \else + \queue@gpop@cN{\string#1@seq}\@tempa + \queue@top@cN{\string#1@seq}\@tempb + \@whilenum \@tempcnta>\@ne\do + {\advance\@tempcnta\m@ne + \queue@gpop@cN{\string#1@seq} + \@tempc + } + \queue@top@cN{\string#1@seq}\@tempc + \fi + \@temptokena\expandafter{\@tempa} + \@temptokenb\expandafter{\@tempb} + \@temptokenc\expandafter{\@tempc} + \edef#1{{\the\@temptokena}{\the\@temptokenb}{\the\@temptokenc}} +} +\newtoks\@temptokenb +\newtoks\@temptokenc +\prop@new@N\mark@curr@plist +\prop@new@N\mark@last@plist +\def\mark@get@first@N{% + \expandafter\@secondofthree} +\def\mark@get@last@N{% + \expandafter\@thirdofthree} +\def\mark@get@previous@N{% + \expandafter\@firstofthree} +\def\mark@get@first@N{% + \expandafter\@secondofthree} +\def\mark@get@last@N{% + \expandafter\@thirdofthree} +\def\mark@get@previous@N{% + \expandafter\@firstofthree} +\def\DeclareMarkType#1{ + \expandafter\mark@new\csname mark@#1\endcsname} +\def\PutMark#1{ + \@ifundefined{mark@#1}{\ERROR}{} + \expandafter\mark@put@Nn\csname mark@#1\endcsname} +\def\PreviousMark#1{ + \expandafter\mark@get@previous@N\csname mark@#1\endcsname} +\def\FirstMark#1{ + \expandafter\mark@get@first@N\csname mark@#1\endcsname} +\def\LastMark#1{ + \expandafter\mark@get@last@N\csname mark@#1\endcsname} +\endinput +%% +%% End of file `xmarks.sty'. |