-\localedef{en}{alg:alg}{Algorithm}
-\localedef{en}{alg:proc}{Procedure}
-\localedef{en}{alg:in}{Input}
-\localedef{en}{alg:out}{Output}
+\localedef{0}{alg:alg}{Algorithm}
+\localedef{0}{alg:proc}{Procedure}
+\localedef{0}{alg:func}{Function}
+\localedef{0}{alg:in}{Input}
+\localedef{0}{alg:out}{Output}
+
+% 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
+ \preitemizeskip=\bigskipamount
+ \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~~}}