\colorbox с ивритом

\colorbox с ивритом

При использовании a \colorbox(или производных, таких как framed's shadedbox) с ивритом и pdflatex, цветовой стек, похоже, путается:

предупреждение pdfTeX: pdflatex: вывести пустой стек цветных страниц 0

и вывод неправильный (черный цвет фона).

Есть ли способ обойти эту проблему? (Я знаю, что XeTeX/bidi работает, но я хочу узнать, есть ли какой-нибудь способ в [pdf]latex)

\documentclass{article}

\usepackage{color}
\definecolor{shadecolor}{rgb}{1, 0, 0}

\usepackage[hebrew]{babel}

\begin{document}
\colorbox{shadecolor}{test}
\end{document}

решение1

Отвечая на свой собственный вопрос: похоже, что обертывание в \beginL...\endLработает:

\documentclass{article}

\usepackage{color}
\definecolor{shadecolor}{rgb}{1, 0, 0}

\usepackage[hebrew]{babel}

\begin{document}
\beginL\colorbox{shadecolor}{test}\endL
\end{document}

Текст на иврите в поле AFAICS сохраняет правильное направление.

решение2

Я попробовал ваше решение, и, похоже, текст на иврите перевернут таким образом. Думаю, вам нужно заключить текст в \beginR, \endR. Например, следующий код даст:

\documentclass{article}

\usepackage{color}
\definecolor{shadecolor}{rgb}{1, 0, 0}

\usepackage[hebrew]{babel}

\begin{document}
    \beginL\colorbox{shadecolor}{שלום}\endL
    
    \beginL\colorbox{shadecolor}{\beginR שלום\endR}\endL
\end{document}

введите описание изображения здесь

Вот способ исправить это, без необходимости добавлять \beginL, \beginRи т. д. вручную (и это также исправит fcolorbox):

\documentclass{article}

\usepackage{color}
\definecolor{shadecolor}{rgb}{1, 0, 0}

\usepackage[hebrew]{babel}

\makeatletter
\long\def\color@b@x#1#2#3{%
    \leavevmode\if@rl\beginL\fi
    \setbox\z@\hbox{\kern\fboxsep{\set@color\if@rl\beginR\fi #3\if@rl\endR\fi}\kern\fboxsep}%
    \dimen@\ht\z@\advance\dimen@\fboxsep\ht\z@\dimen@
    \dimen@\dp\z@\advance\dimen@\fboxsep\dp\z@\dimen@
    {#1{#2\color@block{\wd\z@}{\ht\z@}{\dp\z@}%
            \box\z@}}\if@rl\endL\fi}
\makeatother

\begin{document}
    \colorbox{shadecolor}{שלום}
    
    \selectlanguage{english}
    \colorbox{shadecolor}{Hello}
\end{document}

Которые производят следующее

введите описание изображения здесь

Связанный контент