在tikz \node的文本中,如何使用\multiinclude来包含多张图片?

在tikz \node的文本中,如何使用\multiinclude来包含多张图片?

此代码尝试在 tikz 节点文本中使用 \multiincludexmpmulti来包含一系列文件 pic-0.pdf、pic-1.pdf、... 等,但无法编译并抛出下面列出的错误。是否可以在 tikz 节点中使用 \multiinclude?如果可以,该怎么做?或者如果没有,是否有其他方法可以实现相同的效果:在 tikz 节点内显示一堆幻灯片?

\documentclass{beamer}

\usepackage{tikz}
\usepackage{xmpmulti}

\begin{document}
\begin{frame}
  \begin{tikzpicture}
    \node {
      \multiinclude[format=pdf,graphics={width=.45\textwidth}]{pic}
    };
  \end{tikzpicture}
\end{frame}
\end{document}

投影仪给出的误差是

! Package tikz Error: Giving up on this path. Did you forget a semicolon?.

See the tikz package documentation for explanation.
Type  H <return>  for immediate help.
...                                              

l.14 \end{frame}

! You can't use `\lastskip' in restricted horizontal mode.
\@let@token ...{}\beamer@lastskipcover =\lastskip 
                                              \edef \beamer@lastskiptext...
l.14 \end{frame}

答案1

问题是,\multiinclude内部使用\pause命令在图片之间切换。\pause在 TikZ 节点内部使用命令是危险的,因为它会使用各种诡计,导致节点崩溃。因此,有两种解决方案。一种是指定您自己的覆盖规范作为初始可选参数,例如:

\multiinclude[<+->][format=pdf,graphics={width=.45\textwidth}]{pic}

这可以避免这个\pause问题,因为它会将图像放入actionenv具有给定覆盖规范的 中。您需要进行实验才能确定正确的覆盖规范应该是什么。

另一个解决方案是将节点的内容放入另一个组内。这似乎解决了\pause-in-node 问题。因此:

{\multiinclude[format=pdf,graphics={width=.45\textwidth}]{pic}}

不过,我对第二种方法持谨慎态度。\pause命令是意味着在全球范围内发挥作用。在这种情况下,它不会这样做,但这些软件包的未来版本可能会改变。

要查看导致\pause问题的原因,请尝试:

\documentclass{beamer}
% \url{https://tex.stackexchange.com/q/24085/86}

\usepackage{tikz}

\begin{document}
\begin{frame}

%{hello \pause world}
  \begin{tikzpicture}
    \node {%
  hello \pause world
    };
  \end{tikzpicture}
hello world
\end{frame}
\end{document}

您将看到您得到了相同的错误。将节点内容放在组中,{...}可以解决这个问题。要查看是否\pause要全局执行,请取消注释之前的行\begin{tikzpicture}

为了完整起见,这里有一些相关问题:

相关内容