Wie kann ich die Darstellung eines Zählers basierend auf seinem Wert ändern?

Wie kann ich die Darstellung eines Zählers basierend auf seinem Wert ändern?

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 amsthmund 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@artigoist 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}

Bildbeschreibung hier eingeben

verwandte Informationen