RTL 中的媒体按钮

RTL 中的媒体按钮

看起来 RTL 文本中媒体按钮的放置存在问题。考虑一下这个 MWE:

\documentclass{article}
\usepackage{libertine,media9,polyglossia}
\setdefaultlanguage[variant=british]{english}
\setotherlanguage[]{hebrew}

\begin{document}
\marginpar{\includemedia[
  label=song49,
  activate=pagevisible,
  deactivate=pageinvisible,
  noplaybutton,
  flashvars={source=http://www.kfeuerherm.ca/IntHeb/BBE.mp3&hidebar=true},
  transparent
]{\makebox[1cm]{x}}{APlayer.swf}\mediabutton[mediacommand=song49:playPause,tooltip={Play/Pause}]{(P)}\mediabutton[mediacommand=song49:play[(0.0)],tooltip={Reset}]{(R)}} 
%\begin{RTL}
\mediabutton[
  mediacommand=song49:play[(0.65)],
  mediacommand=song49:pause[(1.45)],
  overface=ONE
]{בראשׁית}
\mediabutton[
  mediacommand=song49:play[(1.8)],
  mediacommand=song49:pause[(2.45)],
  overface=TWO
]{ברא}
\mediabutton[
  mediacommand=song49:play[(2.8)],
  mediacommand=song49:pause[(3.8)],
  overface=THREE
]{אלהים}
%\end{RTL}
\end{document}

此示例无论是否\texthebrew包含媒体按钮标签,都可以顺利编译。但是,尝试\texthebrew在按钮周围放置标签以便标签按正确顺序排版,或取消注释行\begin{RTL}\end{RTL}会导致错误“xdvipdfmx:fatal: 页面末尾有待处理的表单 XObject。”

有人能就问题的根源和/或如何解决它提出建议吗?

答案1

LuaTeX 可能是更好的选择。但是,polyglossia加载bidi.sty与 LuaTeX 不兼容。

幸运的是,有luabidi.sty

我们必须采取一些欺骗polyglossia手段来加载luabidi.sty而不是bidi.sty

\documentclass{article}

\usepackage{filecontents}
\begin{filecontents*}{bidi.sty}
  \ProvidesPackage{bidi}
  \RequirePackage{luabidi}
\end{filecontents*}

\usepackage{libertine,media9,polyglossia}
\setdefaultlanguage[variant=british]{english}
\setotherlanguage[]{hebrew}

\begin{document}
...
\end{document}

lualatex据我判断,使用该命令编译文档会生成有效的 PDF。

答案2

@AlexG 提出的上述解决方案在 2014 年 10 月初就失效了。为了响应 XeTeX 列表上的请求,@David Carlisle 对原始代码进行了修正,从而解决了该问题,而无需诉诸棘手的临时解决方案。相关代码部分由以下内容替换:

\begin{hebrew}
\textenglish{\mediabutton[
  mediacommand=song49:play[(0.65)],
  mediacommand=song49:pause[(1.45)],
  overface=ONE
]{\texthebrew{בראשׁית}}}
\textenglish{\mediabutton[
  mediacommand=song49:play[(1.8)],
  mediacommand=song49:pause[(2.45)],
  overface=TWO
]{\texthebrew{ברא}}}
\textenglish{\mediabutton[
  mediacommand=song49:play[(2.8)],
  mediacommand=song49:pause[(3.8)],
  overface=THREE
]{\texthebrew{אלהים}}}
\end{hebrew}

这会将 RTL 与实际的希伯来语文本隔离,同时保持 LTR 以满足媒体按钮命令的目的。

相关内容