環境のカウンターの表示方法がカウンターの値に応じて変化する環境が必要です。カウンターが 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}