LaTeX:将 multicol 与 RTL 语言结合使用时出现的问题

LaTeX:将 multicol 与 RTL 语言结合使用时出现的问题

我正在尝试将 LaTeX 与 RTL 语言结合使用。当我将列数设置为 2 时,LaTeX 默认使用 LTR 方向。

我尝试使用\RLmulticolcolumns命令,但是它不起作用!

\documentclass{book}

\usepackage{setspace}
\usepackage[margin={2cm,2cm}]{geometry}
\usepackage{multicol}
\usepackage{fontspec}
\usepackage{polyglossia}

\setmainlanguage{english}
\setotherlanguage{arabic}

\newfontfamily\arabicfont[Script=Arabic,Scale=1.6]{Geeza Pro}
\setlength{\columnsep}{1.5cm}

\begin{document}

\RLmulticolcolumns

\begin{multicols}{2}


\begin{Arabic}

\setstretch{1.9}

some RTL text...

\end{Arabic}

\end{multicols} 
\end{document}

有什么帮助吗?

答案1

我刚刚遇到了这个问题,并做了一些搜索。我猜诀窍是使用RTLmulticolcolumns而不是RLmulticolcolumns

以下是 bidi 手册的内容。

在 bidi 包的先前版本中,建议使用 fmultico 包而不是原始的 multicol 包进行 RTL 多列排版。现在情况已不再如此,您不应再使用有缺陷的 fmultico 包。只需在加载 bidi 之前加载原始的 multicol 包即可。bidi 现在支持 multicol 包,您可以排版双向多列。使用 multicol 包时,需要提供以下两个附加命令:

\RTLmulticolcolumns \LTRmulticolcolumns

如果文档的主方向是 RTL,则您将获得 RTL 多列;如果文档的主方向是 LTR,则您将获得 LTR 多列。此外,\RTLmulticolcolumns 允许您拥有 RTL 多列,\LTRmulticolcolumns 允许您拥有 LTR 多列。此外,您还可以使用 vwcol 包进行可变宽度双向列排版。

以下是 TeX.sk 上有关此问题的另一篇文章:如果使用 \setotherlanguage xelatex 加载“从右到左”语言,则 \RLmulticolcolumns 将被停用

答案2

我不知道multicol您使用的是哪个版本,但问题在于multicol和之间的交互bidi(后者可能是作为其中的一部分加载的polyglossia- 我还没有检查)。

bidi软件包加载了一个名为的文件multicol-xetex-bidi.def,其中包含各种代码覆盖multicol。问题是,这是一组相当广泛的更改,而根本没有检查它们是否适用于正在使用的 multicol 软件包,而它们确实不适用。

如果您将该文件清空,则看起来您的文档可以编译(据我所知,编译正确)。但我不能 100% 确定,可能有些东西multicol无法处理,需要进行一些修改,但肯定不是这些。它们似乎是在没有进行任何 RTL 的时候,multicol或者是我第一次尝试但不太正确的时候。

相关内容