カウンターの値に基づいてカウンターの表示方法を変更するにはどうすればよいでしょうか?

カウンターの値に基づいてカウンターの表示方法を変更するにはどうすればよいでしょうか?

環境のカウンターの表示方法がカウンターの値に応じて変化する環境が必要です。カウンターが 10 未満の場合は、序数マーク「º」が続く必要があります。それ以外の場合は序数マークなしで印刷されます。

私はamsthmifthenパッケージを使用してこれを実行しようとしました:

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

ここに画像の説明を入力してください

関連情報