دستور \color
برای رنگی کردن متن از \special
استفاده میکند که یک سری دستورالعمل را برای درایور میفرستد که مسئولیت رنگی کردن متن را دارد. این دستور در محیط راست به چپ مشکل دارد (مشکل از الگوریتم TeX--XeT
در خود موتور زیتک است). برای اینکه دستور \color
نیز در محیط راست به چپ به درستی کار کند، بسته bidi
تغییراتی در بستههای color
و xcolor
میدهد. در نتیجه برای اینکه رنگ همیشه به درستی کار کند باید تک در حالت افقی و نه عمودی باشد. به عنوان نمونه اگر یک پاراگراف با دستور \color
شروع شود (محیط عمودی) به مشکل برمیخورید.
\documentclass{article}
\usepackage{color}
\usepackage{xepersian}
\settextfont{Yas}
\begin{document}
{\color{red}
این رنگ قرمز%
}
است.
\end{document}
برای درست شدن رنگ باید از محیط عمودی خارج شوید و چاره راه یک \leavevmode
است.
\documentclass{article}
\usepackage{color}
\usepackage{xepersian}
\settextfont{Yas}
\begin{document}
{\leavevmode\color{red}
این رنگ قرمز%
}
است.
\end{document}
در نمونه شما هم رنگ به خوبی عمل نمیکند زیرا که رنگ در محیط عمودی به کار رفته است. حتی تک به شما هشدار میدهد:
\endL or \endR problem (0 missing, 1 extra) in paragraph at lines 12--14
[][]\TU/Yas(0)/m/n/10 برای تغییر رنگ فقط یک آیتم [][]
متاسفانه در اینجا نمیتوان از \leavevmode
استفاده کرد زیرا که با خطا روبرو میشوید. در چنین مواردی پیشنهاد میکنم که از بسته xecolor
استفاده کنید که رنگ جزیی از خواص قلم است نه درایور.
\documentclass{article}
\usepackage{xecolor}
\usepackage{xepersian}
\settextfont{Yas}
\begin{document}
\begin{itemize}
\xecolor{red}
\item اولین مورد
\item دومین مورد
\item مورد دیگر
{\xecolor{blue}
\item برای تغییر رنگ فقط یک آیتم
}
\item مورد آخر
\end{itemize}
\end{document}