\colorbox com hebraico

\colorbox com hebraico

Ao usar a \colorbox(ou derivados como frame's shadedbox) com hebraico e pdflatex, a pilha de cores parece ficar confusa:

Aviso do pdfTeX: pdflatex: pop pilha de páginas coloridas vazias 0

e a saída está errada (cor de fundo preta).

Existe uma solução alternativa para esse problema? (Estou ciente de que o XeTeX/bidi funciona, mas quero saber se também existe alguma forma em [pdf]latex)

\documentclass{article}

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

\usepackage[hebrew]{babel}

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

Responder1

Respondendo à minha própria pergunta: parece que envolver \beginL...\endLparece funcionar:

\documentclass{article}

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

\usepackage[hebrew]{babel}

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

O texto hebraico AFAICS na caixa mantém a direção correta.

Responder2

Tentei sua solução e parece que o texto hebraico está invertido dessa forma, acho que você precisa colocar o texto entre \beginR, \endR. por exemplo, o código a seguir produzirá:

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

insira a descrição da imagem aqui

Aqui está uma maneira de corrigir isso, sem a necessidade de adicionar \beginL, \beginR, etc., manualmente (e também corrigir 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}

Que produzem o seguinte

insira a descrição da imagem aqui

informação relacionada