Preciso de um ambiente onde a forma como o contador do ambiente é apresentado mude de acordo com o valor do contador. Se o contador for menor que 10 deve ser sucedido pelo sinal ordinal “º”, caso contrário é impresso sem ele.
Eu tentei usar o amsthm
e os ifthen
pacotes para fazer isso:
\newtheorem{artigo}{Art.}
\renewcommand{\theartigo}{%
\ifx\artigo<10%
\arabic{artigo}º%
\else%
\arabic{artigo}%
\fi%
}
Mas não está funcionando, recebo “Art. 1º”, em vez de “Art. 1º”, quando utilizo o ambiente artigo
.
O que estou fazendo de errado?
Responder1
O teste para valores inteiros é feito com
\ifnum counter value [relation] number ... \else ... \fi
ou seja
\ifnum\value{artigo} < 10
true branch
\else
false branch
\fi
Alternativamente pode-se usar
\makeatletter
\renewcommand{\theartigo}{%
\ifnum\c@artigo<10
\arabic{artigo}º%
\else
\arabic{artigo}
\fi
}
\makeatother
para se livrar da \value{artigo}
macro, mas tem que custar \makeatletter...\makeatother
, então não há economia na digitação ;-) ( \c@artigo
a macro do contador interno contém o valor do 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}