summaryrefslogtreecommitdiff
path: root/usergrps/uktug/baskervi/5_5/hhqueue.sty
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /usergrps/uktug/baskervi/5_5/hhqueue.sty
Initial commit
Diffstat (limited to 'usergrps/uktug/baskervi/5_5/hhqueue.sty')
-rw-r--r--usergrps/uktug/baskervi/5_5/hhqueue.sty62
1 files changed, 62 insertions, 0 deletions
diff --git a/usergrps/uktug/baskervi/5_5/hhqueue.sty b/usergrps/uktug/baskervi/5_5/hhqueue.sty
new file mode 100644
index 0000000000..8adc2e076b
--- /dev/null
+++ b/usergrps/uktug/baskervi/5_5/hhqueue.sty
@@ -0,0 +1,62 @@
+% QUEUE MACROS for LaTeX2e, version 1.01,
+% written by Herman Haverkort, 14 february 1995
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{hhqueue}[1995/02/14]
+
+% The \h@@@getfirst and \h@@@enqueue macro's which are defined below are
+% modifications of \lop and \rightappenditem which are found in
+% Computers & Typesetting by Donald Knuth. The representation of queues
+% and lists is like his.
+
+\newtoks\@temptokenb
+
+\def\h@getfirst#1{\expandafter\h@@getfirst\csname #1\endcsname}
+\def\h@@getfirst#1#2{%
+ \expandafter\h@@@getfirst\expandafter #1\csname hq@#2\endcsname}
+\def\h@@@getfirst#1#2{\expandafter\h@@@@getfirst #2\h@qend#2#1}
+\def\h@@@@getfirst\\#1#2\h@qend#3#4{\gdef#4{#1}\gdef#3{#2}}
+
+\def\h@delete#1{\expandafter\h@@delete\csname #1\endcsname}
+\def\h@@delete#1#2{%
+ \expandafter \expandafter
+ \expandafter \h@@@delete
+ \expandafter \expandafter
+ \expandafter {%
+ \expandafter #1%
+ \expandafter }%
+ \csname hq@#2\endcsname}
+\def\h@@@delete#1#2{{%
+ \let\tempa=#2%
+ \def\tempb{#1}%
+ \h@@@initqueue#2{}%
+ \def\\##1{\def\tempc{##1}\ifx\tempb\tempc\else\h@@@enqueue{##1}#2\fi}%
+ \tempa}}
+% Some rather tricky macro which is said to be efficient can be found
+% in the TeXbook by Donald Knuth, appendix D, section 2.
+
+\def\h@enqueue#1{\expandafter\h@@enqueue\csname #1\endcsname}
+\def\h@@enqueue#1#2{%
+ \expandafter \expandafter
+ \expandafter \h@@@enqueue
+ \expandafter \expandafter
+ \expandafter {%
+ \expandafter #1%
+ \expandafter }%
+ \csname hq@#2\endcsname}
+\def\h@@@enqueue#1#2{%
+ \@temptokena=\expandafter{#2}%
+ \@temptokenb={\\{#1}}%
+ \xdef#2{\the\@temptokena\the\@temptokenb}}
+
+\def\h@ifqempty#1{\expandafter\h@@@ifqempty\csname hq@#1\endcsname}
+\def\h@@@ifqempty#1#2#3{\ifx#1\@empty#2\else#3\fi}
+
+\def\h@ifqnonempty#1{\expandafter\h@@@ifqnonempty\csname hq@#1\endcsname}
+\def\h@@@ifqnonempty#1#2{\ifx#1\@empty\else#2\fi}
+
+\def\h@initqueue#1{\expandafter\h@@@initqueue\csname hq@#1\endcsname}
+\def\h@@@initqueue#1{\gdef#1}
+
+\def\h@processq#1{\@nameuse{hq@#1}}
+