![乌尔都语目录中的 RTL 编号部分编号和参考资料](https://linux22.com/image/431225/%E4%B9%8C%E5%B0%94%E9%83%BD%E8%AF%AD%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%20RTL%20%E7%BC%96%E5%8F%B7%E9%83%A8%E5%88%86%E7%BC%96%E5%8F%B7%E5%92%8C%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99.png)
我正在使用 polyglossia 包用乌尔都语写一本书。乌尔都语文本从右到左书写,但数字从左到右书写。除目录和参考文献中的章节编号外,数字格式在任何地方都是正确的。重现错误的最小示例如下
\documentclass{book}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{urdu}
\def\urdunumber#1{\protect\farsidigits{\number#1}}
\setotherlanguage{english}
\setmainfont[
Script=Arabic,
Extension=.ttf,
Scale=1.0]{JameelNooriNastaleeq}
\setmonofont{DejaVu Sans Mono}
\let\urdufontt\ttfamily
\author{احمد}
\title{کتاب}
\begin{document}
\sloppy
\frontmatter
\maketitle
\tableofcontents
\pagestyle{empty}
\chapter{دیباچہ}
\mainmatter
\pagestyle{headings}
\chapter{پہلا}
\section{حصہ اول}
\section{حصہ دوم}
\begin{equation}
a+b
\end{equation}
\begin{equation}
\label{test}
a+c
\end{equation}
دوسری مساوات \ref{test}
\backmatter
\end{document}
任何帮助都将不胜感激
答案1
似乎是报告的一个错误这里. 按照建议在开头使用 \setlatin这里,问题解决了。
\documentclass{book}
\usepackage{fontspec}
\usepackage{amsmath}
\usepackage{polyglossia}
\setmainlanguage{urdu}
\def\urdunumber#1{\protect\farsidigits{\number#1}}
\setotherlanguage{english}
\setmainfont[
Script=Arabic,
Extension=.ttf,
Scale=1.0]{JameelNooriNastaleeq}
\setmonofont{DejaVu Sans Mono}
\let\urdufontt\ttfamily
\setlatin
%fix equation numbering for formulas
\makeatletter
\def\tagform@#1{\maketag@@@{(\ignorespaces#1\unskip)}}
\makeatother
\author{احمد}
\title{کتاب}
\begin{document}
\sloppy
\frontmatter
\maketitle
\tableofcontents
\pagestyle{empty}
\chapter{دیباچہ}
\mainmatter
\pagestyle{headings}
\chapter{پہلا}
\section{حصہ اول}
\section{حصہ دوم}
\begin{equation}
a+b
\end{equation}
\begin{equation}
\label{test}
a+c
\end{equation}
دوسری مساوات \ref{test}
\backmatter
\end{document}
编辑(amsmath 包)
使用 amsmath 包时,括号会用 \setlatin 反转;我们需要添加\setlatin 后面跟着以下内容可以解决这个问题
%fix equation numbering for formulas
\makeatletter
\def\tagform@#1{\maketag@@@{(\ignorespaces#1\unskip)}}
\makeatother