使用 bidi 和 mathspec 反转数字

使用 bidi 和 mathspec 反转数字

bidi我最近从 Debian 'jessie' 更新到了 Debian 'stretch',在将软件包与软件包一起使用时,数字格式开始出现问题mathspec。以下是 MWE:

\documentclass{article}
\usepackage{mathspec}
\usepackage{bidi}
\begin{document}
Per 2.7.1 of the RFC.
\end{document}

在 Debian 'jessie' 上,使用 构建时xelatex,会生成“符合 RFC 2.7.1”。但在使用 'stretch' 构建时,会生成“符合 RFC 1.7.2”。

关于如何修复此问题有什么建议吗?

答案1

bidi软件包在19.6版本(当前版本)中添加了以下代码:

\newcount\bidi@digits
\XeTeXinterchartokenstate=\@ne
\newXeTeXintercharclass\bidi@digits@charclass
\newXeTeXintercharclass\bidi@dot@charclass
\XeTeXcharclass `\. \bidi@dot@charclass
\bidi@digits=`\0 \loop \XeTeXcharclass \bidi@digits \bidi@digits@charclass \ifnum\bidi@digits<`\9 
\advance\bidi@digits \@ne \repeat
\bidi@digits=`\۰ \loop \XeTeXcharclass \bidi@digits \bidi@digits@charclass \ifnum\bidi@digits<`\۹ 
\advance\bidi@digits \@ne \repeat
\XeTeXinterchartoks \bidi@digits@charclass  \bidi@dot@charclass = {\DigitsDotInterCharToks}
\XeTeXinterchartoks \bidi@dot@charclass  \bidi@digits@charclass = {\DigitsDotInterCharToks}
\newcommand*{\DigitsDotInterCharToks}{\if@Latin\else\char"200F \fi}

结果是,当 XeTeX 发现一个数字后跟一个句点或相反时,它会发出 U+200F 从右到左标记,除非\if@Latin设置为 true。但它绝不使用\@Latintrue\@Latinfalse,将其留给用户或其他包。

该问题并非专门由于 而导致mathspec,而是在您加载时立即出现fontspec,并且本质上类似于公式编号以反向括号显示

解决方法是一样的:

\documentclass{article}

\usepackage{mathspec}
\usepackage{bidi}

\makeatletter
\AtBeginDocument{\@Latintrue}
\makeatother

\begin{document}

Per 2.7.1 of the RFC.

\end{document}

如果您使用polyglossia,则应该没有问题,因为该包以不同的方式实现方向改变。

在此处输入图片描述

相关内容