multicol 和 arabtex 之间的冲突

multicol 和 arabtex 之间的冲突

我需要在双列索引中添加一些阿拉伯语条目。我认为以下文档应该有用:

\errorcontextlines999
\documentclass{book}

\usepackage{multicol}
\usepackage{arabtex}

\begin{document}

a

\begin{multicols}{2}
  {\RL {al-khalIl}}
\end{multicols}

x

\end{document}

但这会导致错误:

!软件包 multicol 错误:文档在 multicols 环境中结束。

在我的项目中,它只有一个明显的后果,即下面的 \clearpage 不再起作用。LaTeX 不会用空白空间填充页面,而是像 \pagebreak[4] 一样将页面拉伸到全高。

由于这是一个大型项目的一部分,因此我没有选择使用其他软件包。我需要的是修复...有什么想法吗?

(以前,我使用 \twocolumn 而不是 \begin{multicols}{2}...\end{multicols}。这来自 theindex 的标准定义。但这并不能平衡最后的列。)

编辑(15:56): 看来 apatch.sty 中针对 \a@Rinsert 的补丁是导致这些问题的原因。abidir.sty 中的原始版本对我来说运行良好:

\def \a@Rinsert #1{% put a sequence of RL words into Ltext
\leavevmode % go to hmode if not there already
\ifinner \a@sequence {#1}% inside a \hbox: append
\else \a@Rsplit {#1}% splice into the current paragraph
\fi }

apatch.sty 中唯一的不同是使用\a@@Rsplit而不是\a@Rsplit。该替换函数\a@@Rsplit更长,似乎涵盖了更多内容...我将尝试使用旧内容

\let\a@@Rsplit\a@Rsplit

即使我换用一些其他的错误,这也许会有所帮助...希望它们不会影响我。

答案1

arabtex如果我们使用阿拉伯语段落环境,您的代码似乎可以正常工作。对于小文本(几个阿拉伯语单词),您可以mbox像这样将它们放入其中:

\errorcontextlines999
\documentclass{book}

\usepackage{multicol}
\usepackage{arabtex}
\novocalize % no diacritics will be generated


\begin{document}
a
\begin{multicols}{2}
\mbox{\RL{al-xlyl}}
\end{multicols}
x
\end{document}

在此处输入图片描述

相关内容