我正在尝试将 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
或者是我第一次尝试但不太正确的时候。