von Slyrk » Mi 14. Jul 2010, 15:40
Hallo zusammen
Ich weiss, dass es zum ausschreiben von Ordinalzahlen schon packages gibt, aber ich wollte das ganze selbst erstellen, um mich im Kreieren von etwas komplizierteren Makros zu üben. Ich hatte allerdings zwei Probleme. Das erste ist, dass beim ersten Aufruf von \ord immer case 0 gewählt wird, bei allen weiteren Aufrufen funktionierts richtig. Zweitens reklamiert er, ich habe ein $ vergessen und fügt eines ein, das hat dann zur Folge, dass nachstehender Text auch im mathmode steht. Hier mein code
\newcommand{\ord}[1]{
\newcount\aux
\aux = #1 \relax
\ifnum\aux < 0 \relax
\aux = -#1 \relax
\fi
\ifnum\aux > 13 \relax
\newcount\bux \relax
\bux = \aux \relax
\divide \bux by 10 \relax
\multiply \bux by 10 \relax
\advance \aux by -\bux \relax
\fi
\ifcase\aux
\def\nth{\text{th}}
\or
\def\nth{\text{st}}
\or
\def\nth{\text{nd}}
\or
\def\nth{\text{rd}}
\else
\def\nth{\text{th}}
\fi
\ensuremath{#1^{\nth}}
}
Aufrufen tu ich das ganze mit $\ord{1}$, $\ord{2}$, etc. und ich habe nirgendes das $ vergessen. Ich weiss nicht, ob so viele relaxes nötig sind

, aber ich denke sie schaden nicht...
Vielen Dank!
Hallo zusammen
Ich weiss, dass es zum ausschreiben von Ordinalzahlen schon packages gibt, aber ich wollte das ganze selbst erstellen, um mich im Kreieren von etwas komplizierteren Makros zu üben. Ich hatte allerdings zwei Probleme. Das erste ist, dass beim ersten Aufruf von \ord immer case 0 gewählt wird, bei allen weiteren Aufrufen funktionierts richtig. Zweitens reklamiert er, ich habe ein $ vergessen und fügt eines ein, das hat dann zur Folge, dass nachstehender Text auch im mathmode steht. Hier mein code
[code]
\newcommand{\ord}[1]{
\newcount\aux
\aux = #1 \relax
\ifnum\aux < 0 \relax
\aux = -#1 \relax
\fi
\ifnum\aux > 13 \relax
\newcount\bux \relax
\bux = \aux \relax
\divide \bux by 10 \relax
\multiply \bux by 10 \relax
\advance \aux by -\bux \relax
\fi
\ifcase\aux
\def\nth{\text{th}}
\or
\def\nth{\text{st}}
\or
\def\nth{\text{nd}}
\or
\def\nth{\text{rd}}
\else
\def\nth{\text{th}}
\fi
\ensuremath{#1^{\nth}}
}
[/code]
Aufrufen tu ich das ganze mit $\ord{1}$, $\ord{2}$, etc. und ich habe nirgendes das $ vergessen. Ich weiss nicht, ob so viele relaxes nötig sind :), aber ich denke sie schaden nicht...
Vielen Dank!