0

following this: https://tex.stackexchange.com/a/48549/22969, I tried this code:

\documentclass{article}
\usepackage{ulem}
\usepackage{xcolor}
\usepackage{polyglossia}
\setdefaultlanguage{hebrew}
\newfontfamily\hebrewfont[Script=Hebrew]{Arial} %or use any other font, even Bitstream Vera Sans

\begin{document}
\newcommand\hl{\bgroup\markoverwith{\textcolor{yellow}{\rule[-.5ex]{2pt}{2.5ex}}}\ULon}
this is a \LR{\hl{hightlighted text}}. and this is \hl{unseen}.
\end{document}

as stated in the code itself, the ulem macros don't work well when trying to color an RTL text.

why is it so, and how can that be solved (even by rewriting parts of ulem package)?

EDIT: of course, I'm not tied to the ulem/rule approach. if anyone has a different idea of how to achieve my goal (yellow highlighting of several words in the middle of RTL text that may break across lines, using xelatex) - it will definitely suffice.

EDIT: ok. I have a partial solution. at the preamble add this:

\makeatletter
\def\UL@putbox{\ifx\UL@start\@empty \else % not inner
  \vrule\@width\z@ \LA@penalty\@M
  {%
    \UL@skip\wd\UL@box%
    \box\UL@box% originally leaders here
    \kern-\UL@skip%
    \UL@leaders% originally box here
  }%
  \fi}
\makeatother

this will "fix" the ulem code to the RTL case, where the first strike "wins", as opposed to the regular LTR logic, where the last strike "wins".

it's only partial, since the last word in the line is not colored now. need to understand which macro handles this edge case.

1

This is the kind of problem which exists in the current TeX--XeT algorithm of e-tex (used by xetex engine); of course this has nothing to do with the bidi package and is an engine bug. I believe it should be fixed with the xetex binary shipping with TeXLive 2015. For the moment, the solution is perhaps to surround the relevant things between \beginL and \endL (not tested):

\def\UL@putbox{\ifx\UL@start\@empty \else % not inner
  \vrule\@width\z@ \LA@penalty\@M
  \beginL{\UL@skip\wd\UL@box \UL@leaders \kern-\UL@skip}%
  \box\UL@box\endL  \fi}
1

There is a new package bidihl for this purpose:

\documentclass{article}
\usepackage{bidihl}
\usepackage{polyglossia}
\setdefaultlanguage{hebrew}
\newfontfamily\hebrewfont[Script=Hebrew]{Arial} %or use any other font, even Bitstream Vera Sans
\begin{document}
ערך זה עוסק בבירת מדינת ישראל. אם התכוונתם למשמעות אחרת, ראו ירושלים (פירושונים).
\bidihl{%
בתרגום השבעים מופיע שמה של ירושלים בצורה ירוסלם (Ιερουσαλήμ) או היירוסולימה (Ἱεροσόλυμα). במקרה, פירוש המילה "היירוס" (ἱερός) ביוונית הוא "קדוש", וייתכן שכך פורש שמה של ירושלים בפי דוברי יוונית. בתרגומו של הירונימוס לתנ"ך, המכונה "וולגטה", מתורגם השם ירושלים ל"היירוסלם" (Hierusalem), שהוא תעתיק ללטינית של הגרסה היוונית של השם. שמה של ירושלים ברוב לשונות אירופה העכשוויות נגזר מהשם היווני או הלטיני, בשינויים פונטיים, המשתקפים גם בכתיב.%
}
על-פי ממצאים ארכאולוגיים תקופת ההתיישבות בירושלים מתוארכת לתקופה הכלקוליתית (בשנת 2009 נתגלו ממצאים ארכאולוגים המתוארכים לתקופה הנאוליתית בחלק משכונות הקצה של העיר המעידים על התיישבות באזור) על הגבעה הנקראת עיר דוד. סיבת ההתיישבות הייתה הקרבה למקור מים, המעיין המוכר בשם "מעיין הגיחון", ובשל היות השטח מישורי. עם הפיכתה של העיר ליישוב קבע, ניצלו תושביה את תלילותה ההררית לצורכי הגנה. עובדה זו הקשתה על ניסיונותיהם של כובשים רבים לכבוש אותה.
\end{document}

enter image description here

The hebrew text is taken from this wikipedia article.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.