Ich brauche eine Umgebung, in der sich die Darstellung des Zählers der Umgebung je nach Zählerwert ändert. Wenn der Zähler kleiner als 10 ist, muss ihm das Ordnungszeichen „º“ folgen, andernfalls wird er ohne dieses gedruckt.
Ich habe versucht, die Pakete amsthm
und zu verwenden ifthen
, um Folgendes zu tun:
\newtheorem{artigo}{Art.}
\renewcommand{\theartigo}{%
\ifx\artigo<10%
\arabic{artigo}º%
\else%
\arabic{artigo}%
\fi%
}
Aber es funktioniert nicht, ich bekomme „Art. 1“ statt „Art. 1º“, wenn ich die Umgebung verwende artigo
.
Was mache ich falsch?
Antwort1
Der Test für ganzzahlige Werte erfolgt mit
\ifnum counter value [relation] number ... \else ... \fi
dh
\ifnum\value{artigo} < 10
true branch
\else
false branch
\fi
Alternativ kann man
\makeatletter
\renewcommand{\theartigo}{%
\ifnum\c@artigo<10
\arabic{artigo}º%
\else
\arabic{artigo}
\fi
}
\makeatother
um das Makro loszuwerden \value{artigo}
, aber es muss einen Preis von haben \makeatletter...\makeatother
, also gibt es keine Tippersparnis ;-) ( \c@artigo
ist das interne Zählermakro, das den Wert des Zählers hält)
\documentclass{article}
\usepackage[utf8]{inputenc}
\newtheorem{artigo}{Art.}
\renewcommand{\theartigo}{%
\ifnum\value{artigo}<10
\arabic{artigo}º%
\else
\arabic{artigo}%
\fi
}
\begin{document}
\begin{artigo}
Foo
\end{artigo}
\setcounter{artigo}{9}
\begin{artigo}
Foo again
\end{artigo}
\end{document}