من فایل شما رو آزمایش نکردم اما تنها با خواندن عنوان، میتونم بهتون بگم که این یک مشکل شناخته شده است.
الگوریتم TeX--XeT
در موتور e-TeX
که موتور XeTeX از آن استفاده میکنه نودهای whatsit رو در محیط راست به چپ برعکس میکنه. همه کارهای گرافیکی (رنگ، درج تصویر، لینکها، رسم شکل، rotate کردن، reflect کردن و ...) توسط خود تک انجام نمیشه بلکه شما با استفاده از دستور بدوی \special
یک سری instructions برای درایور (برای موتور XeTeX درایور dvipdfmx هست) میفرستید و این درایور هست که با توجه به این instruction کارهای گرافیکی رو برای شما انجام میده.
به عنوان نمونه، برای رنگ کردن my text
این instructionای هست که شما برای درایور میفرستید:
\special{color push rgb 1 0 0}my text\special{color pop}
حالا چون الگوریتم TeX--XeT
در محیط راست به چپ نودهای whatsit را برعکس میکنه، instructionای که درایور دریافت میکنه
\special{color pop}my text\special{color push rgb 1 0 0}
هست که بصورت منطقی باعث ایجاد مشکل رنگ میشه.
اگر شما از بسته bidi
استفاده نکنید، نمیتونید هیچ کدوم از کارهای گرافیکی (رنگ، درج تصویر، لینکها، رسم شکل، rotate کردن، reflect کردن و ...) رو با موتور XeTeX انجام بدهید. بسته bidi
سخت کار میکنه و نهایت تلاشش رو میکنه تا همه این کارهای گرافیکی به درستی انجام بشه.
متلسفانه در سطح بسته bidi
کار بیشتری نمیشه انجام داد چون این باگ موتور هست و کاری که بسته bidi
انجام میده این هست که این باگ رو با ماکرونویسی تا جای ممکن ترمیم کنه اما این ترمیم یک limitای داره و بیشتر از اون نمیشه کاری کرد. این باگ باید بصورت اساسی در موتور درست بشه.
در حال حاضر تنها پیشنهادم این هست که از گزینه
linktocpage=true
هنگام فراخوانی بسته hyperref
استفاده کنید. استفاده از این گزینه باعث میشه تا شماره صفحه لینک داشته باشه نه خود متن.