  %% moreenum.sty
  %% Copyright 2011 Seamus Bradley
  %
  % This work may be distributed and/or modified under the
  % conditions of the LaTeX Project Public License, either version 1.3
  % of this license or (at your option) any later version.
  % The latest version of this license is in
  %   http://www.latex-project.org/lppl.txt
  % and version 1.3 or later is part of all distributions of LaTeX
  % version 2005/12/01 or later.
  %
  % This work has the LPPL maintenance status `maintained'.
  % 
  % The Current Maintainer of this work is Seamus Bradley
  % tex@seamusbradley.net
  %
  % This work consists of the files moreenum.sty,testcase-moreenum.tex
  % and README and the derived file testcase-moreenum.pdf


\ProvidesPackage{moreenum}[2011/11/03 v1.03]


\RequirePackage{amsmath} % For Greek letters
\RequirePackage{alphalph} % For doubling Greek letters
\RequirePackage{enumitem} % The enumeration workhorse
\RequirePackage{fmtcount} % The number translation workhorse


% Previous versions relied on the following packages that have been superceded
% in the latest version.
% \input{binhex} % Replaced by fmtcount
% \RequirePackage{engord} % Replaced by fmtcount
% \@ifclassloaded{memoir}{}{\RequirePackage{numname}} % For named
% numbers if memoir isn't loaded. Replaced by fmtcount


%------------------------------
%     Lowercase Greek
%------------------------------

% Thanks to T.D.'s answer on tex.sx for the basic insight
% into how to achieve this.
% http://tex.stackexchange.com/questions/4058/greek-numbering/4063#4063
% And to Will Robertson's answer to the same question for pointing me to
% the alphalph package
% Thanks to Kevin Klement for pointing out a spacing problem 
% with the Greek commands that is now fixed.

\newcommand*{\single@greek}[1]{%
  \expandafter\@single@greek\csname c@#1\endcsname%
}
\newcommand*{\@single@greek}[1]{%
  $\ifcase#1\or\alpha\or\beta\or\gamma\or\delta\or\varepsilon
    \or\zeta\or\eta\or\theta\or\iota\or\kappa\or\lambda
    \or\mu\or\nu\or\xi\or o\or\pi\or\varrho\or\sigma
    \or\tau\or\upsilon\or\phi\or\chi\or\psi\or\omega
    \else\@ctrerr\fi$%
}

\newalphalph{\@greek}[alph]{\@single@greek}{24}
\newcommand*{\greek}[1]{%
  \expandafter\@greek\csname c@#1\endcsname%
}

\AddEnumerateCounter{\greek}{\@greek}{$\omega$}

%------------------------------
%    Uppercase Greek
%------------------------------

\newcommand*{\Single@Greek}[1]{%
  \expandafter\@Single@Greek\csname c@#1\endcsname
}
\newcommand*{\@Single@Greek}[1]{%
  $\ifcase#1\or A \or B\or\Gamma\or\Delta\or E
  \or Z\or E\or\Theta\or I\or K\or\Lambda
  \or M\or N\or \Xi\or O\or\Pi\or P\or\Sigma
  \or T\or Y\or\Phi\or X\or\Psi\or\Omega
  \else\@ctrerr\fi$%
}

\newalphalph{\@Greek}[alph]{\@Single@Greek}{24}
\newcommand*{\Greek}[1]{%
  \expandafter\@Greek\csname c@#1\endcsname
}

\AddEnumerateCounter{\Greek}{\@Greek}{$W$}


%------------------------------
%   Uppercase Hexadecimal
%------------------------------

% Thanks to egreg at tex.sx for telling me about binary.tex
% http://tex.stackexchange.com/questions/22234/why-does-enumitem-need-the-macro-to-exist-already/22236#22236
% Although binary.tex has now been replaced by fmtcount

\newcommand*{\enumHex}[1]{%
  \expandafter\@enumHex\csname c@#1\endcsname}
\newcommand*{\@enumHex}[1]{%
  \protect\Hexadecimalnum{\number#1}}
\AddEnumerateCounter{\enumHex}{\@enumHex}{AAAA}

\newenvironment{enumHexzero}{%
  \begin{enumerate}[label=\enumHex*,start=0]%
  }{%
  \end{enumerate}%
}


%------------------------------
%   Lowercase Hexadecimal
%------------------------------

\newcommand*{\enumhex}[1]{%
  \expandafter\@enumhex\csname c@#1\endcsname}
\newcommand*{\@enumhex}[1]{%
  \protect\hexadecimalnum{\number#1}}
\AddEnumerateCounter{\enumhex}{\@enumhex}{aaaa}

\newenvironment{enumhexzero}{%
  \begin{enumerate}[label=\enumhex*,start=0]%
  }{%
  \end{enumerate}%
}

%------------------------------
%         Binary
%------------------------------

\newcommand*{\enumbinary}[1]{%
  \expandafter\@enumbinary\csname c@#1\endcsname}
\newcommand*{\@enumbinary}[1]{%
  \protect\binarynum{\number#1}}
\AddEnumerateCounter{\enumbinary}{\@enumbinary}{0000}

\newenvironment{enumbinzero}{%
  \begin{enumerate}[label=\enumbinary*,start=0]%
  }{%
  \end{enumerate}%
}

%------------------------------
%         Octal
%------------------------------

\newcommand*{\enumoctal}[1]{%
  \expandafter\@enumoctal\csname c@#1\endcsname}
\newcommand*{\@enumoctal}[1]{%
  \protect\octalnum{\number#1}}
\AddEnumerateCounter{\enumoctal}{\@enumoctal}{0000}

\newenvironment{enumoctzero}{%
  \begin{enumerate}[label=\enumoctal*,start=0]%
  }{%
  \end{enumerate}%
}



%------------------------------
%      "nth" (raised)
%------------------------------

\newcommand*{\raisenth}[1]{%
  \expandafter\@raisenth\csname c@#1\endcsname}
\newcommand*{\@raisenth}[1]{%
  \protect\fmtcountsetoptions{fmtord=raise}%
  \protect\ordinalnum{\number#1}}
\AddEnumerateCounter{\raisenth}{\@raisenth}{~2nd}


%------------------------------
%      "nth" (level)
%------------------------------

\newcommand*{\levelnth}[1]{%
  \expandafter\@levelnth\csname c@#1\endcsname}
\newcommand*{\@levelnth}[1]{%
  \protect\fmtcountsetoptions{fmtord=level}%
  \protect\ordinalnum{\number#1}}
\AddEnumerateCounter{\levelnth}{\@levelnth}{~2nd}

%------------------------------
%      "nth" words
%------------------------------

% Thanks to egreg for fixing numname and making the numname commands
% work with labels properly.
% http://tex.stackexchange.com/q/23043/215
% This also gave me the clue I needed to get levelnth and raisenth working as
% separate labels.

  %%-----------------------------
  %% Capitalised
  %%-----------------------------

\newcommand{\Nthwords}[1]{\expandafter\@Nthwords\csname c@#1\endcsname}
\newcommand*{\@Nthwords}[1]{%
  \protect\Ordinalstringnum{\number#1}}
\AddEnumerateCounter{\Nthwords}{\@Nthwords}{Seventeenth}

  %%-----------------------------
  %% UPPERCASE
  %%-----------------------------

\newcommand*{\NTHWORDS}[1]{
  \expandafter\@NTHWORDS\csname c@#1\endcsname}
\newcommand*{\@NTHWORDS}[1]{
  \protect\ORDINALstringnum{\number#1}}
\AddEnumerateCounter{\NTHWORDS}{\@NTHWORDS}{FORTY-TWO}

  %%-----------------------------
  %% lowercase
  %%-----------------------------

\newcommand*{\nthwords}[1]{
  \expandafter\@nthwords\csname c@#1\endcsname}
\newcommand*{\@nthwords}[1]{
  \protect\ordinalstringnum{\number#1}}
\AddEnumerateCounter{\nthwords}{\@nthwords}{forty-two}



%------------------------------
%        "n" words
%------------------------------

  %%-----------------------------
  %% Capitalised
  %%-----------------------------

\newcommand{\Nwords}[1]{\expandafter\@Nwords\csname c@#1\endcsname}
\newcommand*{\@Nwords}[1]{%
  \protect\Numberstringnum{\number#1}}
\AddEnumerateCounter{\Nwords}{\@Nwords}{Seventeen}



  %%-----------------------------
  %% UPPERCASE
  %%-----------------------------

\newcommand{\NWORDS}[1]{\expandafter\@NWORDS\csname c@#1\endcsname}
\newcommand*{\@NWORDS}[1]{%
  \protect\NUMBERstringnum{\number#1}}
\AddEnumerateCounter{\NWORDS}{\@NWORDS}{SEVENTEEN}


  %%-----------------------------
  %% lowercase
  %%-----------------------------

\newcommand{\nwords}[1]{\expandafter\@nwords\csname c@#1\endcsname}
\newcommand*{\@nwords}[1]{%
  \protect\numberstringnum{\number#1}}
\AddEnumerateCounter{\nwords}{\@nwords}{seventeen}


%------------------------------
%  Here ends the file
%------------------------------