![bidi 和 xetex 更新后印度数字(mashriq 形式)出现问题](https://linux22.com/image/404032/bidi%20%E5%92%8C%20xetex%20%E6%9B%B4%E6%96%B0%E5%90%8E%E5%8D%B0%E5%BA%A6%E6%95%B0%E5%AD%97%EF%BC%88mashriq%20%E5%BD%A2%E5%BC%8F%EF%BC%89%E5%87%BA%E7%8E%B0%E9%97%AE%E9%A2%98.png)
经过一些更新(bidi、latex、xetex……)后,我在数字方面遇到了问题。或者 - 以前没有发生过这种情况,编号方向在 maghrib 形式 0,1,2,...,9 中是正确的,但在 mashriq 形式 ٠,١,٢,٣,٤,٥,٦,٧,٨,٩ 中,编号方向不会随着命令(\setlatin - \setnonlatin)而改变
\documentclass[12pt]{article}
\usepackage{fontspec}
\usepackage{bidi}
\setmainfont[Script=Arabic]{Amiri}
\parindent=0pt
\begin{document}
\setRTL
\setnonlatin
\section{text}
\subsection{text text}
\subsection{text text}
1.23 % change direction with \setnonlatin - \setlatin
١.٢٣ <-- % do not change direction with \setnonlatin - \setlatin
\hrulefill
\setlatin
1.23
١.٢٣
\end{document}
来自日志文件
这是 XeTeX,版本 3.14159265-2.6-0.999991 (TeX Live 2019/W32TeX)(预加载格式=xelatex 2019.10.16)2019 年 11 月 3 日
软件包:bidi 2019/10/19 v35.10 在纯 TeX 和 LaTeX 中进行双向排版
答案1
发布的代码包含 Unicode 0661、0662、0663。这是阿拉伯-印度语数字一和二和三。但是,bidi
检查 06F1 至 06F9,这是扩展阿拉伯-印度数字一到九。因此,在源代码中更改这些内容,它就会按预期工作。
梅威瑟:
\documentclass[12pt]{article}
\usepackage{fontspec}
\usepackage{bidi}
\setmainfont[Script=Arabic]{Amiri}
\parindent=0pt
\begin{document}
\setRTL
\setnonlatin
\section{text}
\subsection{text text}
\subsection{text text}
1.23\par % change direction with \setnonlatin - \setlatin
١.٢٣ <-- \par % Arabic Indic Digits do not change direction with \setnonlatin - \setlatin
۱.۲۳ \par % Extended Arabic-Indic Digits
\hrulefill
\setlatin
1.23 \par
١.٢٣ \par
۱.۲۳ \par
\end{document}
结果:
或者,您可以将非扩展的阿拉伯-印度语数字添加到数字字符类中:
\usepackage{bidi}
\makeatletter
\bidi@digits=1633 \loop \XeTeXcharclass \bidi@digits \bidi@digits@charclass \ifnum\bidi@digits<1641 \advance\bidi@digits \@ne \repeat
\makeatother
\setmainfont[Script=Arabic]{Amiri}