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

產生以下結果

在此輸入影像描述

相關內容