当我使用带有 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
来表明引用是正确的。