Как изменить способ отображения счетчика в зависимости от его значения?

Как изменить способ отображения счетчика в зависимости от его значения?

Мне нужна среда, в которой способ представления счетчика среды меняется в соответствии со значением счетчика. Если счетчик меньше 10, за ним должен следовать порядковый знак «º», в противном случае он печатается без него.

Я попробовал использовать пакеты amsthmи ifthenдля этого:

\newtheorem{artigo}{Art.}
\renewcommand{\theartigo}{%
\ifx\artigo<10%
\arabic{artigo}º%
\else%
\arabic{artigo}%
\fi%
}

Но это не работает, я получаю «Art. 1» вместо «Art. 1º», когда я использую среду artigo.

Что я делаю не так?

решение1

Тест на целочисленные значения выполняется с помощью

\ifnum counter value [relation] number ... \else ... \fi

то есть

\ifnum\value{artigo} < 10
  true branch
\else
  false branch
\fi

В качестве альтернативы можно использовать

\makeatletter
\renewcommand{\theartigo}{%
  \ifnum\c@artigo<10
    \arabic{artigo}º%
  \else
    \arabic{artigo}
  \fi
}
\makeatother

чтобы избавиться от \value{artigo}макроса, но он стоит \makeatletter...\makeatother, поэтому нет экономии на наборе ;-) ( \c@artigoэто внутренний макрос счетчика, хранящий значение счетчика)

\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}

введите описание изображения здесь

Связанный контент