-\def\localealgo{Algorithm}
-\def\localeproc{Procedure}
-\def\localeinput{Input}
-\def\localeoutput{Output}
+% Localized strings
+\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~~}}