summaryrefslogtreecommitdiff
path: root/macros/lamstex/inputs/lists.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/lamstex/inputs/lists.tex')
-rw-r--r--macros/lamstex/inputs/lists.tex122
1 files changed, 122 insertions, 0 deletions
diff --git a/macros/lamstex/inputs/lists.tex b/macros/lamstex/inputs/lists.tex
new file mode 100644
index 0000000000..497425703d
--- /dev/null
+++ b/macros/lamstex/inputs/lists.tex
@@ -0,0 +1,122 @@
+\catcode`\@=11
+\def\listbi@{\penalty50 \medskip}
+\def\listbii@{\penalty100 \smallskip}
+\def\listmi@{\advance\leftskip30\p@\relax}
+\let\listmii@\listmi@
+\let\listmiii@\listmi@
+\let\listmiv@\listmi@
+\let\listmv@\listmi@
+\def\itemi@#1{\noindent@@\llap{#1\hskip5\p@}}
+\let\itemii@\itemi@
+\let\itemiii@\itemi@
+\let\itemiv@\itemi@
+\let\itemv@\itemi@
+\def\liste@{\penalty-50 \medskip}
+\def\listei@{\penalty-100 \smallskip}
+\def\list@@C{\csname list@C\number\listlevel@\endcsname}
+\def\list@@P{\csname list@P\number\listlevel@\endcsname}
+\def\list@@Q{\csname list@Q\number\listlevel@\endcsname}
+\def\list@@S{\csname list@S\number\listlevel@\endcsname}
+\def\list@@N{\csname list@N\number\listlevel@\endcsname}
+\def\list@@F{\csname list@F\number\listlevel@\endcsname}
+\def\Firstitem@true{\csname firstitem\romannumeral\listlevel@
+ @true\endcsname}
+\def\Firstitem@false{\csname firstitem\romannumeral\listlevel@
+ @false\endcsname}
+\def\Listm@{\csname listm\romannumeral\listlevel@ @\endcsname}
+\def\Item@{\csname item\romannumeral\listlevel@ @\endcsname}
+\def\Liste@{\csname liste\romannumeral\listlevel@ @\endcsname}
+\def\keepitem{\listcontinue@true}
+\def\list{%
+ \iflistcontinue@\else\global\csname list@C1\endcsname\z@\fi
+ \global\csname list@C2\endcsname\z@
+ \global\csname list@C3\endcsname\z@
+ \global\csname list@C4\endcsname\z@
+ \global\csname list@C5\endcsname\z@
+ \begingroup
+ \firstitemi@true
+ \listlevel@\@ne
+ \def\item{\FN@\item@}%
+ \FN@\list@}
+\Invalid@\runinitem
+\def\list@{\ifx\next\par
+ \DN@\par{\FN@\list@}\else
+ \ifx\next\runinitem
+ \DN@\runinitem{\FN@\runinitem@}\else
+ \DN@{\par\dimen@\parskip\parskip\dimen@}\fi\fi\next@}
+\def\item@{%
+ \ifoutlevel@\Liste@\outlevel@false\fi
+ \ifrunin@\runin@false\par
+ \dimen@\parskip\parskip\dimen@
+ \Listm@\fi
+ \iffirstitemi@\listbi@\listmi@\firstitemi@false\else\par\fi
+ \iffirstitemii@\listbii@\listmii@\firstitemii@false\else\par\fi
+ \iffirstitemiii@\listbiii@\listmiii@\firstitemiii@false\else\par\fi
+ \iffirstitemiv@\listbiv@\listmiv@\firstitemiv@false\else\par\fi
+ \iffirstitemv@\listbv@\listmv@\firstitemv@false\else\par\fi
+ \DN@"##1"{{\let\pre\list@@P\let\post\list@@Q
+ \let\style\list@@S\let\numstyle\list@@N
+ \vskip-\parskip
+ \Item@{\list@@F##1}%
+ \noexpands@
+ \Qlabel@{##1}}%
+ \locallabel@
+ \FNSSP@}%
+ \DNii@{\global\advance\list@@C\@ne
+ {\noexpands@
+ \xdef\Thelabel@@@{\number\list@@C}%
+ \xdefThelabel@\list@@N
+ \xdef\Thelabel@@@@{\list@@P\Thelabel@\list@@Q}%
+ \xdefThelabel@@\list@@S
+ }%
+ \locallabel@
+ \vskip-\parskip
+ \Item@{\list@@F\thelabel@@}%
+ \FN@\pretendspace@}%
+ \ifx\next"\expandafter\next@\else\expandafter\nextii@\fi}
+\def\runinitem@{%
+ \runin@true
+ \Firstitem@false
+ \DN@"##1"{{\let\pre\list@@P\let\post\list@@Q
+ \let\style\list@@S\let\numstyle\list@@N
+ \unskip\space{\list@@F##1} %
+ \noexpands@
+ \Qlabel@{##1}}%
+ \locallabel@
+ \ignorespaces}%
+ \DNii@{\global\advance\list@@C\@ne
+ {\noexpands@
+ \xdef\Thelabel@@@{\number\list@@C}%
+ \xdefThelabel@\list@@N
+ \xdef\Thelabel@@@@{\list@@P\Thelabel@\list@@Q}%
+ \xdefThelabel@@\list@@S
+ }%
+ \locallabel@
+ \unskip\space{\list@@F\thelabel@@} }%
+ \ifx\next"\expandafter\next@\else\expandafter\nextii@\fi}
+\def\inlevel{\ifnum\listlevel@=5
+ \DN@{\Err@{Already 5 levels down}}\else
+ \DN@{\begingroup\advance\listlevel@\@ne
+ \Firstitem@true\FN@\inlevel@}\fi\next@}
+\def\inlevel@{\ifx\next\par
+ \DN@\par{\FN@\inlevel@}\else
+ \ifx\next\runinitem
+ \DN@\runinitem{\FN@\runinitem@}\else
+ \let\next@\relax\fi\fi\next@}
+\def\outlevel{\ifnum\listlevel@=\@ne
+ \Err@{At top level}\else
+ \par\global\list@@C\z@\endgroup\outlevel@true\fi}
+\def\endlist{%
+ \par
+ \global\toks\@ne{}\count@\listlevel@
+ {\loop
+ \ifnum\count@>\z@\global\toks\@ne\expandafter{\the\toks\@ne\endgroup}%
+ \advance\count@\m@ne
+ \repeat}%
+ \the\toks\@ne
+ \liste@
+ \listcontinue@false
+ \vskip-\parskip
+ \noindent@@
+ \FN@\pretendspace@}
+\catcode`\@=\active