ltugboat 类和 XeTeX 中不正确的 \beginR、\endR

ltugboat 类和 XeTeX 中不正确的 \beginR、\endR

该类ltugboat与包不兼容,bidi因此我试图在不使用bidi或的情况下获得最低限度的阿拉伯语脚本支持polyglossia。我所需的最低限度是能够使用\beginR\endR基元。但是当我将这些基元与类一起使用时,ltugboat我收到错误消息:

! Improper \beginR.
<recently read> \beginR 
                        
l.102 Hamza&4F&\texttt{h}&\myarabicx{^^^^0626}
                                              \\
! Improper \endR.
\myarabicx ...{\beginR \arabicfont #1\hfill \endR 
                                                  }

你能告诉我\beginR\endRbe 是什么意思吗?不当,以及如何避免此错误?

(XeLaTeX 已使用 eTeX 支持和其他一些类进行编译,这些原语可以正常工作。)

答案1

我认为这里发生的事情不仅仅是ltugboatMWE 所证明的

\documentclass{article}

\usepackage{fontspec}

\newfontfamily{\arabicfont}{FreeSerif}[Script=Arabic]


\begin{document}

\newcommand{\myarabic}[1]{\beginR\arabicfont #1\endR}

\myarabic{^^^^0626}

\end{document}

我必须深入研究源代码才能发现问题出在哪里,因为你使用的是旧的 TeX-XeT 原语,它们不是默认开启。有一个新的原语\TeXXeTstate可以将其开启(只需添加\TeXXeTstate=1到前言中)。

我曾猜测 XeTeX 中对此有一些现代处理方法和不同的首选路线,但深入研究代码bidi后发现,它们\TeXXeTstate本身用于 XeTeX 引擎。(还值得注意的是,它们使用了 1987 年 Knuth-MacKay 算法的修改版本,它们在输出时反转字符,而不是像原始代码那样需要特殊的 IVD-DVI 处理。

答案2

作为参考,LuaLaTeX 也可以提供最低限度的无包阿拉伯语支持。

没有包裹

这可能是一个替代选择。

平均能量损失

\documentclass{article}
\usepackage{fontspec}
\newfontfamily{\arabicfont}{FreeSerif}[Script=Arabic]
\newcommand{\myarabic}[1]{{\textdir TRT \pardir TRT\arabicfont #1}}

\begin{document}

\myarabic{^^^^0626 ب ببب ت تتت ص صصص}

\end{document}

相关内容