Bei der Verwendung von a \colorbox
(oder Ableitungen wie shadedbox
) von framed mit Hebräisch und pdflatex scheint es im Farbstapel zu Verwirrung zu kommen:
pdfTeX-Warnung: pdflatex: leerer Farbseitenstapel 0 wird angezeigt
und die Ausgabe ist falsch (schwarze Hintergrundfarbe).
Gibt es eine Problemumgehung für dieses Problem? (Ich weiß, dass XeTeX/bidi funktioniert, möchte aber wissen, ob es auch in [pdf]latex eine Möglichkeit gibt.)
\documentclass{article}
\usepackage{color}
\definecolor{shadecolor}{rgb}{1, 0, 0}
\usepackage[hebrew]{babel}
\begin{document}
\colorbox{shadecolor}{test}
\end{document}
Antwort1
Ich beantworte meine eigene Frage: Es scheint, dass das Umbrechen in Folgendes \beginL...\endL
funktioniert:
\documentclass{article}
\usepackage{color}
\definecolor{shadecolor}{rgb}{1, 0, 0}
\usepackage[hebrew]{babel}
\begin{document}
\beginL\colorbox{shadecolor}{test}\endL
\end{document}
Soweit ich weiß, bleibt der hebräische Text in der Box in der richtigen Richtung.
Antwort2
Ich habe Ihre Lösung ausprobiert und es scheint, dass der hebräische Text auf diese Weise umgekehrt wird. Ich denke, Sie müssen den Text mit \beginR
, einschließen \endR
. Der folgende Code erzeugt beispielsweise:
\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}
Dies lässt sich folgendermaßen beheben, ohne dass \beginL
, \beginR
, usw. manuell hinzugefügt werden müssen (und es behebt auch 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}
Daraus ergibt sich folgendes