]> mj.ucw.cz Git - ucwmac.git/commitdiff
ucw-algo: More customizable parameters
authorMartin Mares <mj@ucw.cz>
Tue, 5 Jun 2018 20:57:23 +0000 (22:57 +0200)
committerMartin Mares <mj@ucw.cz>
Tue, 5 Jun 2018 20:57:23 +0000 (22:57 +0200)
ucw-algo.tex

index f15d24be868fe51ffefad770ab86fef7502b6fb5..cb65f042bdcf0b74d74f59e210d4dbc168277705 100644 (file)
 \localedef{en}{alg:in}{Input}
 \localedef{en}{alg:out}{Output}
 
-% Spacing (customizable)
+% Item indent
+\newdimen\algoindent
+\algoindent=2em
+
+% Extra indent for nested items
+\newdimen\algonestindent
+\algonestindent=2em
+
+% Width of item label
+\newdimen\algolabelwidth
+\algolabelwidth=0.5em
+
+% Set up spacing (customizable)
 \def\algospacing{
        \itemnarrow=\itemindent
        \interitemskip=1pt
        \postitemizeskip=\dimexpr \bigskipamount - \parskip \relax
 }
 
+% Set up paragraph mode for a single step of the algorithm (customizable)
+\def\algopar{
+       \par
+       \parindent=\algoindent
+       \hangindent=\algoindent
+       \advance\hangindent by \algolabelwidth
+       \hangafter=1
+       \leavevmode
+}
+
+% Typeset step label (customizable)
+\def\algostep#1{\hbox to \algolabelwidth{\hss #1~~}}
+
 \def\algoinit{
        \goodbreak
        \begingroup
 \def\endalgo{\goodbreak\endlist\endgroup}
 \let\endproc=\endalgo
 
-\def\algopar{
-       \par
-       \parindent=2em
-       \hangindent=2.5em       % \parindent + width of box for the step number
-       \hangafter=1
-       \leavevmode
-}
-
 \def\algoitem{%
        \ifnum\itemcount=0\par\nobreak\smallskip\fi
        \algopar\advance\itemcount by 1
-       \hbox to 0.5em{\hss \the\itemcount.~~}%
+       \algostep{\the\itemcount.}%
        \futurelet\next\algoitemh
 }
 
 \def\algoitemh{\ifx\next:\let\next=\algohang\else\let\next=\algoitemgo\fi\next}
-\def\algohang:{\advance\hangindent by 2em \hskip 2em\futurelet\next\algoitemh}
+\def\algohang:{\advance\hangindent by \algonestindent \hskip \algonestindent\futurelet\next\algoitemh}
 \optdef\algoitemgo{\ifx\addid\undefined\else\addid{item}{\the\itemcount}\fi}
 
 \def\algin{\par\nobreak{\it \localestr{alg:in}:\/} }