Como alterar a forma como um contador é apresentado com base no seu valor?

Como alterar a forma como um contador é apresentado com base no seu valor?

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 amsthme os ifthenpacotes 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@artigoa 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}

insira a descrição da imagem aqui

informação relacionada