Мне нужна среда, в которой способ представления счетчика среды меняется в соответствии со значением счетчика. Если счетчик меньше 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}