minipage 打破 bidi

minipage 打破 bidi

我正在使用 XeTex 和 polyglossia 处理两种语言(阿拉伯语和英语)。主要语言是阿拉伯语。当我设置一个迷你页面并在其中放入一些混合语言段落时,从左到右的业务就会混乱。

在下面的 MWE 中,重要的是第二个英文句子,它是前后颠倒的。阿拉伯字体的选择并不重要。

您可以删除所有阿拉伯语,但问题仍然存在,但我保留它是为了排除小页面中的所有内容都是英文的解决方案。

有人能解释一下为什么会发生这种情况以及如何解决吗?

在一个上一个问题 我发过帖子,一个建议是将一个放在minipage一个\begin{english}环境中,然后再放在另一个环境中minipage。这似乎很曲折,而且不允许我混合段落。有没有更简单的方法?

MWE 很简单,我真正想要的是一个固定高度/宽度的框架框,其中包含混合语言段落。在 minipage 环境之外,多语种工作正常。我不知道如何测试是多语种还是双向语导致了这个问题。

\documentclass[12pt,oneside]{report}
\usepackage[a4paper]{geometry}
\usepackage{polyglossia}
\setmainlanguage{arabic}
\setotherlanguage{english}
\newfontfamily\arabicfont[Script=Arabic]{Times New Roman}
\begin{document}
\begin{minipage}[t][4in][t]{\linewidth}
هي جملة في العربي

\begin{english}
This is the first english sentence

This is the second english sentence.

\end{english}
هي جملة في العربي
\end{minipage}
\end{document}

答案1

该问题可以通过以下最小纯文本文档来说明:

\input bidi
\setRTL

\hbox{\beginR\vbox{%
\setLTR
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
}\endR}

\bye

我已将软件包版本上传17.9bidiCTAN 以修复此问题。可能需要几天时间才能到达您的 TeX 发行版。

答案2

bidi这看起来像是环境包的一个错误minipage,像这样的命令\setLTR对里面的文本方向没有影响minipage。这里有一个例子

\documentclass[12pt,oneside]{report}
\usepackage[a4paper]{geometry}
\usepackage{bidi}

\parindent=0pt
\begin{document}
\setRTL 

This is the first english sentence

This is the second english sentence.

\begin{minipage}[t]{\linewidth}
\setLTR

This is the first english sentence

This is the second english sentence.

\end{minipage}

\begingroup
\setLTR

This is the first english sentence

This is the second english sentence.

\endgroup

\end{document} 

输出

在此处输入图片描述

\everypar{\setLTR}对于你的情况,你可以解决内部english环境的问题

\documentclass[12pt,oneside]{report}
\usepackage[a4paper]{geometry}
\usepackage{polyglossia}
\setmainlanguage{arabic}
\setotherlanguage{english}
\newfontfamily\arabicfont[Script=Arabic]{Times New Roman}
\begin{document}
\begin{minipage}[t][4in][t]{\linewidth}
هي جملة في العربي

\begin{english}
\everypar{\setLTR}

This is the first english sentence

This is the second english sentence.

\end{english}
هي جملة في العربي
\end{minipage}
\end{document}

相关内容