![multicol 和 arabtex 之间的冲突](https://linux22.com/image/303315/multicol%20%E5%92%8C%20arabtex%20%E4%B9%8B%E9%97%B4%E7%9A%84%E5%86%B2%E7%AA%81.png)
我需要在双列索引中添加一些阿拉伯语条目。我认为以下文档应该有用:
\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}