![RTL 阿拉伯语文档中的 LTR 文本中的逗号链接](https://linux22.com/image/302545/RTL%20%E9%98%BF%E6%8B%89%E4%BC%AF%E8%AF%AD%E6%96%87%E6%A1%A3%E4%B8%AD%E7%9A%84%20LTR%20%E6%96%87%E6%9C%AC%E4%B8%AD%E7%9A%84%E9%80%97%E5%8F%B7%E9%93%BE%E6%8E%A5.png)
我在阿拉伯语文本中插入一段英文。如果数字后面有一个逗号,我会得到令人惊讶的结果。逗号位于数字之前,而不是数字之后。
上面的字体是“Amiri”。我还测试了微软的“arabtype.ttf”(http://www.microsoft.com/typography/OpenTypeDev/arabic/intro.htm) 并得到了相同的结果。因此我认为这不是一个错误,而是一些重要的功能。
问题 1,并不重要,只是出于好奇:我可以在哪里阅读有关此功能的信息?
一个通用的解决方案是以某种方式script=arabic
从 LTR 文本的字体中删除。我怀疑这是一项艰巨的任务。
\hbox{}
解决这个具体问题的一个简单方法是在数字后面添加。然后:
问题2:使用时英文文本片段是否还有其他惊喜script=arabic
?
示例代码:
\documentclass[a4paper]{article}
\usepackage[RTLdocument]{bidi}
\begin{document}
\font\f="Amiri:script=arabic"
\f
\LRE{Print 42, then exit, but not.}
\LRE{Print 42: then exit: but not.}
\end{document}
答案1
您应该使用fontspec
选择字体和字体功能。您现在可以使用 更改脚本\addfontfeature{Script=Latin}
。
为了使事情更方便,可以更新 \LRE
:
\documentclass[a4paper]{article}
\usepackage{fontspec}
\setmainfont[Script=Arabic]{Amiri}
\usepackage[RTLdocument]{bidi}
\let\oldLRE\LRE
\renewcommand*{\LRE}[1]{\oldLRE{\addfontfeature{Script=Latin} #1}} % <-- Change script to latin within \LRE
\begin{document}
\LRE{Print 42, then exit, but not.}
\LRE{Print 42: then exit: but not.}
\end{document}
这给你: