XeTeX + movie15_dvipdfmx — `\pdfmdfivesum` 的使用与其定义不符

XeTeX + movie15_dvipdfmx — `\pdfmdfivesum` 的使用与其定义不符

我正在尝试将电影嵌入到我的文档中。这通常意味着使用包movie15,但由于我还使用 xetex 引擎,所以我必须使用movie15_dvipdfmx。(参见“XeLaTeX | LuaTeX 可以导入电影吗?”)

这是一个示例文件。

\documentclass{article}
\usepackage[dvipdfmx]{movie15_dvipdfmx}
\usepackage{hyperref}
\begin{document}
Whispering-gallery mode in a quarter circle:
\begin{figure}[ht]
\includemovie[
  poster,
  text={\small(Loading Circle-m-increase3.mp4)}
]{6cm}{6cm}{Circle-m-increase3.mp4}
\end{figure}
\end{document}

“使用 LaTeX 生成 PDF 动画”教程和影片文件

编译这个给了我这些错误:

! Use of \pdfmdfivesum doesn't match its definition.
\pdf@filemdfivesum {->\pdfmdfivesum file{

l.4 \begin{document}

? s
OK, entering \scrollmode...
! Extra }, or forgotten \endgroup.
\ReFiCh@Check ...#1\edef #2{\ReFiCh@CheckSum {#3}}
                                                  \ifx #2\ReFiCh@Separator #...
l.4 \begin{document}

(/usr/local/texlive/2010/texmf-dist/tex/generic/oberdiek/se-ascii-print.def)
[1] (./movie_xetex.aux)
! Use of \pdfmdfivesum doesn't match its definition.
\pdf@filemdfivesum {->\pdfmdfivesum file{

l.12 \end{document}

! Extra }, or forgotten \endgroup.
\ReFiCh@Check ...#1\edef #2{\ReFiCh@CheckSum {#3}}
                                                  \ifx #2\ReFiCh@Separator #...
l.12 \end{document}

 )
(see the transcript file for additional information)
Output written on movie_xetex.pdf (1 page).
Transcript written on movie_xetex.log.

只是那四个错误,两个在\begin{document}和两个在\end{document}。问题是,如果你在功能合适的阅读器(如 Acrobat Pro 或 Reader)中打开 pdf,动画就会起作用。

我在 Google 上搜索了错误消息,但没有找到任何有用的信息。有什么线索吗?

答案1

movie15_dvipdfmx为 xetex 定义一个虚拟函数,\pdfmdfivesum这样它就需要file关键字(在 pdftex 中file是可选的)。hyperref rerunfilecheck.sty加载的函数现在尝试\pdfmdfivesum在没有file关键字的情况下使用,结果失败了。您可以rerunfilecheck在之前加载以避免出现错误,但如果能找到更明智的解决方案,movie15_dvipdfmx那就更好了。movie15_dvipdfmx

答案2

问题在于包定义了,如果尚未定义,则由 本身\pdfmdfivesum提供。使用的定义是,但手册中实际上将其标记为可选!一种解决方案是不重新定义和使用,而是使用替换宏,例如:pdftex\def\pdfmdfivesum file #1{#1}filepdftex\pdfmdfivesum

替换包中的以下代码movie15_dvipdfmx

 \ifx\@undefined\pdfmdfivesum
  \def\pdfmdfivesum file #1{#1}
 \fi

和:

 \ifx\@undefined\pdfmdfivesum
  \def\@pdfmdfivesum file #1{#1}
\else
  \let\@pdfmdfivesum\pdfmdfivesum
 \fi

并将 的所有用法替换\pdfmdfivesum file\@pdfmdfivesum file

我仍然收到错误:

** WARNING ** Could not open file: Circle-m-increase3.mp4
** WARNING ** Interpreting special command fstream (pdf:) failed.
...

但我认为那是另一回事。我下载了 MP4 文件。

相关内容