# LaTeX: issue when using multicol with RTL languages

I'm trying to use LaTeX with RTL language. when I set columns count to 2, LaTeX use LTR direction as default.

I try to use \RLmulticolcolumns command but it does not work!

\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}


Any help?

• Hi and welcome, can you give us mor information, maybe a full compilable but minimal example? Are you using XeTeX or LuaTeX? – Johannes_B Apr 7 '15 at 20:58
• @Johannes_B Hello :) I use XeTeX compiler. – Reda Apr 7 '15 at 21:04
• @Johannes_B I've updated the example. – Reda Apr 7 '15 at 21:14
• What exactly does not work? I don't have the Arabic font you used so other than a lot of error messages I'm unable to see any problem (which might be there) - can you simplify the example so that it does work without any special fonts etc? – Frank Mittelbach Apr 8 '15 at 8:06
• @FrankMittelbach Text appears well but the only problem is the order of the columns, I mean: the text should be start from the right column and continued by the left one (opposite of English). what happens is the text start from the left side as in English. – Reda Apr 8 '15 at 11:01

I don't know what version of multicol you are using but the problem is the interaction between multicol and bidi (the latter is probably loaded as part of polyglossia - I haven't checked).

The bidi package loads a file called multicol-xetex-bidi.def that conains various overwrites of multicol code. Ihe problem is that this is a rather wide set of changes without checking at all if they would work for the multicol package in use, and they don't.

If you make that file empty then it looks as if your document compiles (correctly as far as I can tell). I'm not 100% sure though, there might be things that multicol doesn't handle that would require some mods, but most certainly not those. They seem to be from the days when multicol wasn't doing any RTL or from the days when I tried it first and it wasn't quite right.

• @Reda would be interested to learn if my answer solved your problem or if there is something else the issue (if so please try to provide an example document that can be run without special fonts) – Frank Mittelbach Apr 11 '15 at 18:55
• See my answer below. The author of bidi does document this overwriting of multicol code in the docs. From what I can see, things work as expected as long as you use \RTLmulticolcolumns instead of multicol’s \RLmulticolcolumns. – vyom Nov 19 '15 at 10:20

I just ran into this problem, and did a bit more searching. I guess the trick is to use RTLmulticolcolumns instead of RLmulticolcolumns.

Here is what the bidi manual says.

In the previous versions of bidi package, it was recommended that you need to use fmultico package instead the original multicol package for RTL multicolumn typesetting. is [sic] is not the case any more and you should not use buggy fmultico package any more. Simply load the original multicol package before loading bidi. bidi now supports multicol package and you can typeset bidirectional multi columns. When using multicol package, the following two additional commands are proveded [sic]:

\RTLmulticolcolumns \LTRmulticolcolumns

If the main direction of the document is RTL, then you get RTL multi columns and if the main direction of the document is LTR, then you get LTR multi columns. In addition, \RTLmulticolcolumns allows you to have RTL multi columns and \LTRmulticolcolumns allows you to have LTR multi columns. In addition, you also can use vwcol package for variable width bidirectional column typesetting.

Here is another post on TeX.sk about the problem: \RLmulticolcolumns deactivated if "right to left" language is loaded with \setotherlanguage xelatex