如何根据计数器的值改变其呈现方式?

如何根据计数器的值改变其呈现方式?

我需要一个环境,其中环境计数器的显示方式会根据计数器的值而变化。如果计数器小于 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

IE

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

在此处输入图片描述

相关内容