突出显示 RTL 文本 - ulem 带有 bidi 和颜色

突出显示 RTL 文本 - ulem 带有 bidi 和颜色

按照此:https://tex.stackexchange.com/a/48549/22969,我尝试了这个代码:

\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}

正如代码本身所述,在尝试为 RTL 文本着色时,ulem 宏无法正常工作。

为什么会这样,如何解决(即使通过重写 ulem 包的部分内容)?

编辑:当然,我并不局限于 ulem/rule 方法。如果有人对如何实现我的目标(使用 xelatex,用黄色突出显示 RTL 文本中间可能跨行的几个单词)有不同的想法 - 这肯定足够了。

编辑:好的。我有一个部分解决方案。在序言中添加以下内容:

\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

这将“修复”ulem 代码到 RTL 的情况,其中第一的打击“获胜”,而不是常规的 LTR 逻辑,其中最后的打“胜”。

它只是部分的,因为该行中的最后一个单词现在没有颜色。需要了解哪个宏处理这种边缘情况。

答案1

这是目前(引擎使用)TeX--XeT算法中存在的一种问题;当然这与包无关,是引擎的一个错误。我相信它应该在 TeXLive 2015 的二进制发布中修复。目前,解决方案可能是将相关内容放在 和 之间(未经测试):e-texxetexbidixetex\beginL\endL

\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}

答案2

有一个新的包bidihl以此目的:

\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}

在此处输入图片描述

希伯来语文本取自这篇维基百科文章

相关内容