% nth.sty version 2002/27/02 Donald Arseneau % Ordinal numbering style, 1st 2nd 3rd 4th 5th... 12th... 101st 102nd... % % (Public domain: take, include, extract, whatever) % % In LaTeX: % \usepackage[super,negative]{nth} % where option [super] gives superscript `th' % and option [negative] allows ``st, nd, rd'' suffixes on negative numbers. % % example: \renewcommand{\thesection}{\ordinal{section}} % or \renewcommand{\thesection}{\@ordinal\c@section} % or \renewcommand{\thesection}{\nth\c@section} % % In plain TeX: % \input nth.sty % use: \nth{}. % Change formatting by redefining \nthscript and \nthtest \def\nth#1{% First print number: \expandafter\nthM \number #1\relax \nthscript{% \ifnum#1\nthtest0 th\else % negatives are all ``th'' (depending on \nthtest) \expandafter \nthSuff \expandafter 0\number\ifnum #1<0-\fi#1\delimiter \fi }} % Minus sign using math mode: \def\nthM#1{\if -#1\ifmmode-\else$-$\fi\else #1\fi} % Print suffix depending on last two digits: \def\nthSuff#1#2#3{% \ifx \delimiter#3% #1#2 are last two digits \ifnum #1=1 th% teens are always ``th'' \else % use appropriate suffix \ifcase #2 th\or st\or nd\or rd\else th\fi \fi \else % continue scanning for last two digits \expandafter \nthSuff \expandafter #2\expandafter #3% \fi} % Formatting hook for ordinals (\let\nthscript\textsuperscript) \def\nthscript#1{#1}% alternate: \def\nthscript#1{$\rm^{#1}$} % Formatting hook for all negative numbers giving ``th'' \def\nthtest{<} % alternate: \def\nthtest{=} \ifx\Alph\undefined\else \def\ordinal#1{\expandafter\@ordinal\csname c@#1\endcsname} \let\@ordinal\nth \ProvidesPackage{nth}[2002/02/27] \DeclareOption{super}{\def\nthscript{\textsuperscript}} \DeclareOption{negative}{\def\nthtest{=}} \ProcessOptions \fi