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
,则应该没有问题,因为该包以不同的方式实现方向改变。