看起来 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 以满足媒体按钮命令的目的。