xelatex+polyglossia+hebrew:如何避免寄生空白

xelatex+polyglossia+hebrew:如何避免寄生空白

这是我多年来一直存在的问题,也许你可以帮我解决。我使用最新版本的 polyglossia (v1.50a)、fontspec (v2.7i) 和 xetex (3.14159265-2.6-0.999992 (TeX Live 2020))。

我输入的每个希伯来语字符串都会出现一个寄生空格。阿拉伯语不会出现同样的问题。

这是一个仅包含可免费使用(且技术上可靠)的字体的最小示例:

\documentclass{book}
\usepackage{fontspec}
\usepackage{xltxtra}
\usepackage{polyglossia}
\setdefaultlanguage[variant=usmax]{english}%
\setotherlanguage{hebrew}
\setotherlanguage[calendar=gregorian,hijricorrection=1,locale=mashriq]{arabic}
\newfontfamily{\hebrewfont}[Script=Hebrew,Extension=.ttf,Scale=1.2]{Tinos-Regular}
\newfontfamily{\arabicfont}[Script=Arabic,Extension=.ttf,Scale=1.2]{Amiri-Regular}
\begin{document}
Bla bla “\texthebrew{הכתובת הדו-לשונית (יוונית-ארמית) םארמאזי}” blabla.

Bla bla “\textarabic{أمين معلوف، الهويّات القاتلة، دار الفارابي، ترجمة نهلة بيضون}” blabla.
\end{document}

两个都蒂诺斯阿米里可以从 Google 中获取。这是我得到的结果(红色箭头表示寄生空间):

在此处输入图片描述

请注意,我还收到一个编译错误:

(/usr/local/texlive/2020/texmf-dist/tex/xelatex/bidi/latex-xetex-bidi.def

! LaTeX Error: Command \XeTeX already defined.
               Or name \end... illegal, see p.192 of the manual.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              
                                                  
l.139 ...di@reflect@box{E}}\kern-.1667em \TeX}}$}}
                                                  
? 

! LaTeX Error: Command \XeLaTeX already defined.
               Or name \end... illegal, see p.192 of the manual.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              
                                                  
l.141 ...@reflect@box{E}}\kern-.1667em \LaTeX}}$}}
                                                  
? 

您知道如何避免这种寄生空白吗?或者我可能做错了什么?

答案1

不要使用 xltxtra 包,它已经过时了(并且会出现错误)。

该空间是一个已经报告的错误:https://github.com/reutenauer/polyglossia/issues/459

在 polyglossia 更新之前,您可以像这样隐藏空间:

\documentclass{book}
\usepackage{fontspec}
\usepackage{polyglossia}
\setdefaultlanguage[variant=usmax]{english}%
\setotherlanguage{hebrew}
\makeatletter\def\hebrew@ltr@numbers{%
    \ifxetex
       % Bidi inserts an RTL mark (0x200f) between number and number separator (- .),
       % forcing numbers to RTL. This is wrong for Hebrew.
       % So we defunc the respective command.
       \renewcommand*{\DigitsDotDashInterCharToks}{}%<----
    \fi%
}
\makeatother
\setotherlanguage[calendar=gregorian,hijricorrection=1,locale=mashriq]{arabic}
\newfontfamily{\hebrewfont}[Script=Hebrew,Extension=.ttf,Scale=1.2]{Tinos-Regular}
\newfontfamily{\arabicfont}[Script=Arabic,Extension=.ttf,Scale=1.2]{Amiri-Regular}
\begin{document}
Bla bla “\texthebrew{הכתובת הדו-לשונית (יוונית-ארמית) םארמאזי}” blabla.

Bla bla “\textarabic{أمين معلوف، الهويّات القاتلة، دار الفارابي، ترجمة نهلة بيضون}” blabla.
\end{document}

相关内容