blob: 8a96c73903d2f61521a1b8a1971b8e95381cdc0e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
% 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{<number>}.
% 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
|