Necesito un entorno donde la forma en que se presenta el contador del entorno cambie según el valor del contador. Si el contador es menor que 10 debe ir seguido de la marca ordinal “º”, de lo contrario se imprime sin ella.
Intenté usar los paquetes amsthm
y ifthen
para hacer esto:
\newtheorem{artigo}{Art.}
\renewcommand{\theartigo}{%
\ifx\artigo<10%
\arabic{artigo}º%
\else%
\arabic{artigo}%
\fi%
}
Pero no funciona, aparece “Art. 1”, en lugar de “Art. 1º”, cuando uso el ambiente artigo
.
¿Qué estoy haciendo mal?
Respuesta1
La prueba de valores enteros se realiza con
\ifnum counter value [relation] number ... \else ... \fi
es decir
\ifnum\value{artigo} < 10
true branch
\else
false branch
\fi
Alternativamente se puede utilizar
\makeatletter
\renewcommand{\theartigo}{%
\ifnum\c@artigo<10
\arabic{artigo}º%
\else
\arabic{artigo}
\fi
}
\makeatother
para deshacerse de la \value{artigo}
macro, pero tiene un precio de \makeatletter...\makeatother
, por lo que no se ahorra al escribir ;-) ( \c@artigo
es la macro del contador interno la que contiene el valor del contador)
\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}