xcolor \color 命令影响希伯来语序列中的错误单词

xcolor \color 命令影响希伯来语序列中的错误单词

编译时

\documentclass{article}
\usepackage[utf8x]{inputenc}
\usepackage[hebrew,english]{babel}
\usepackage{xcolor}
\begin{document}
\sethebrew
ראשונה
\color{red} שניה \color{black} 
שלישית
\end{document}

我得到以下输出

enter image description here

而不是中间的单词是红色。

有办法解决吗?

答案1

事情的经过如下(请注意,这只是一个粗略的描述):

本质上,行是按从左到右的顺序排列的,您输入的内容会重新排序,以便正确显示。那么,pdfLaTeX 会从左到右看到行中的哪些内容呢?

  1. 第三个词-שלישית
  2. 命令\color{black}
  3. 第二个词-שניה
  4. 命令\color{red}
  5. 第一个词-ראשונה

命令\color从这里开始改变颜色,并且两者都不xcolor知道babel需要按从右到左(即反向)的顺序应用它。因此,该行以黑色开始,命令\color{black}不执行任何操作,并且命令\color{red}影响紧随其后的单词 - 即从左到右取的最后一个单词,但从右到左取的第一个单词。

如果您使用\textcolor{red}{text to be made red},则可以避免方向反转混淆,因为红色将准确地应用于命令的第二个参数\textcolor,而不会应用于其他任何参数。

奖金谜语: 当你编译以下内容时会发生什么?

\documentclass{article}
\usepackage[utf8x]{inputenc}
\usepackage[hebrew,english]{babel}
\usepackage{xcolor}
\begin{document}
\sethebrew
ראשונה
\color{red} שניה \color{green}
שלישית
\end{document} 

答案2

有关详细说明,请参阅这个帖子在 xetex 邮件列表上。e-tex 的作者已经意识到了这个问题,我希望 TeXLive 2014 能修复这个问题。

尽管存在这个引擎错误,但bidi软件包补丁colorxcolor软件包。因此bidi两者都\color可以\textcolor部分正常工作(即,如果彩色文本不超过一行):

\documentclass{article}
\usepackage{xcolor}
\usepackage{bidi}
\setRTL
\begin{document}
This is \textcolor{red}{red colour} as you can see.

This is {\color{red} red colour} as you can see.
\end{document}

相关内容