xelatex:RTL 字符放置的 bidi 问题

xelatex:RTL 字符放置的 bidi 问题

我正在准备一篇关于双向格式化如何工作的文本,并使用 xelatex 来实现这一点。为此,我需要将 RTL 字符与文本中的位置完全一致,并禁用双向处理,而我的结果到目前为止令人沮丧。这是一个希伯来语示例(顺便说一句,这里也错误地显示为代码,但如果您将其复制粘贴到非双向编辑器中,字符应该按照预期的顺序排列,如 123אפס):

\documentclass{report}
\usepackage{fontspec}
\setmonofont{Courier New}
\setmainfont{Times New Roman}

\begin{document}
'123ספא'
\begin{verbatim}
'123ספא'
\end{verbatim}
\end{document}

目前的结果令人沮丧:

希伯来语

是否有可能至少完全禁用双向处理,或者采取一些措施使逐字和非逐字的结果相同?

谢谢

答案1

您可以像这样获得所需的输出(^^^^202d是从左到右覆盖的 U+202D):

\documentclass{report}
\usepackage{fontspec}

\setmonofont{Courier New}
\setmainfont{Times New Roman}

\begin{document}
'123ספא'

\ttfamily
^^^^202d'123^^^^202dספא'

\end{document}

在此处输入图片描述

但我不知道为什么撇号也需要覆盖,以及是否有更简单的方法。

答案2

您尝试过 \mbox{} 吗?如果您只需要希伯来语的一小部分文本,您可以将其放在自己的框中。这解决了 RTL 问题。


    \documentclass{report}
    \usepackage{fontspec}
    \setmonofont{Courier New}
    \setmainfont{Times New Roman}

    \begin{document}

    `123 \mbox{ספא}'

    \end{document}

相关内容