使用 Arabi 包时定理编号的问题

使用 Arabi 包时定理编号的问题

当我使用带有 Arabi 包的定理风格环境时,两位数开始后,编号就会被破坏。

这是一个例子。最后一个数字应该是 10,但它显示为 01。

\documentclass{article}
\usepackage{amssymb, amsthm}
\usepackage[utf8]{inputenc}
\usepackage[LFE,LAE,OT1]{fontenc}
\usepackage[farsi,english,arabic]{babel}

\newtheorem{thm}{Theorem}
\theoremstyle{definition}
\newtheorem{exer}[thm]{تمرین}
\theoremstyle{plain}

\begin{document}
\selectlanguage{farsi}
\begin{exer}\end{exer}
\begin{exer}\end{exer}
\begin{exer}\end{exer}
\begin{exer}\end{exer}
\begin{exer}\end{exer}
\begin{exer}\end{exer}
\begin{exer}\end{exer}
\begin{exer}\end{exer}
\begin{exer}\end{exer}
\begin{exer}\end{exer}
\end{document}

答案1

这个数字是反向打印的,所以我们要将其反转:

\documentclass{article}
\usepackage{amssymb, amsthm}
\usepackage[utf8]{inputenc}
\usepackage[LFE,LAE,OT1]{fontenc}
\usepackage[farsi,english,arabic]{babel}

\usepackage{xparse}
\ExplSyntaxOn
\DeclareExpandableDocumentCommand{\revarabic}{m}
 {
  \tl_reverse:f { \arabic{#1} }
 }
\cs_generate_variant:Nn \tl_reverse:n { f }
\ExplSyntaxOff

\newtheorem{thm}{Theorem}
\theoremstyle{definition}
\newtheorem{exer}[thm]{تمرین}
\theoremstyle{plain}
\renewcommand\thethm{\revarabic{thm}}

\begin{document}
\selectlanguage{farsi}
\begin{exer}\end{exer}
\begin{exer}\end{exer}
\begin{exer}\end{exer}
\begin{exer}\end{exer}
\begin{exer}\end{exer}
\begin{exer}\end{exer}
\begin{exer}\end{exer}
\begin{exer}\end{exer}
\begin{exer}\end{exer}
\begin{exer}\end{exer}
\end{document}

在此处输入图片描述

这是一个不使用的版本expl3;宏与我的这个答案

\documentclass{article}
\usepackage{amssymb, amsthm}
\usepackage[utf8]{inputenc}
\usepackage[LFE,LAE,OT1]{fontenc}
\usepackage[farsi,english,arabic]{babel}

\makeatletter
\def\revarabic#1{%
  \expandafter\num@reverse\expandafter{\romannumeral-`Q\arabic{#1}}%
}
\def\num@reverse#1{\num@rev#1\num@rev@a\num@rev@b}
\def\num@rev#1#2\num@rev@a#3\num@rev@b{%
  \if\relax\detokenize{#2}\relax
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
  {#1#3}%
  {\num@rev#2\num@rev@a#1#3\num@rev@b}%
}
\makeatother


\newtheorem{thm}{Theorem}
\theoremstyle{definition}
\newtheorem{exer}[thm]{تمرین}
\theoremstyle{plain}
\renewcommand\thethm{\revarabic{thm}}

\begin{document}
\selectlanguage{farsi}
\begin{exer}\end{exer}
\begin{exer}\end{exer}
\begin{exer}\end{exer}
\begin{exer}\end{exer}
\begin{exer}\end{exer}
\begin{exer}\end{exer}
\begin{exer}\end{exer}
\begin{exer}\end{exer}
\begin{exer}\end{exer}
\begin{exer}\label{x}\end{exer}

\ref{x}
\end{document}

我添加了一个\label来表明引用是正确的。

相关内容