将 SVG 图层作为 beamer 中的步骤

将 SVG 图层作为 beamer 中的步骤

我有一个.svg具有多个图层的图形(用 inkscape 创建),我想将它们包含在 beamer 演示文稿中,以便图层逐步出现。

  • 幻灯片 1 -> 图层 1
  • 幻灯片 2 -> 层 1+2
  • 幻灯片 3 -> 层 1+2+3
  • ... ETC

我可以.eps用不同的步骤生成多个,但由于我的图是不断增长的图形,所以我必须处理这些框,这真的很麻烦。而且这不能很好地扩展。

是否有任何简单/自动的方法来生成一个逐层.pdf出现的多页(我可以将其包含在 beamer 中)或(更好的是)将多层导出.svg到具有时间步骤的 tikz?

答案1

您可以使用\includesvglayer命令来自mycommands.sty(我编写的一个用于对此类常用实用程序进行分组的包)。

它调用 Python 脚本inkscape2scenes.py(参见分支dev)调用inkscape将 SVG 中定义的图层组合导出为使用pictureLaTeX 内的环境叠加的单独 PDF + 文本(通常的 PDF+LaTeX 导出inkscape)。

然后将这些图层组合放在不同的幻灯片中,以便通过幻灯片前进逐步显示它们。导出图层组合的可能性允许根据需要选择自定义组合,这样就不会在不同幻灯片中存在的图层之间施加严格的子集关系。

inkscape2scenes.py是基于inkscapeslide。还有inkslides,重写inkscapeslide

答案2

export_overlaysBeamerScape 的脚本基本上是这样做的:

  • 您可以组合每个输出步骤中可见的一组图层;只需在 inkscape 中的图层名称中放入正常的 beamer 样式规范(<1-2,4> Cat Layer, <3> Dog Layer)。您应该export_overlays控制整个框架(因此首先让您的 SVG 具有适当的纵横比)。export_overlays将使用 textpos 在 .tex 文件中组合图层,您可以愉快地使用它\input{}
  • 如果您将图层与投影仪动画步骤进行 1:1 映射,然后\includegraphics像平常一样使用您自己的命令包含它们并忽略生成的overlay.tex.

答案3

在 Inkscape 中的每个图层中添加一个文本对象,并在 tex 文件中\pause简单使用。这就像一个 hack,但它确实有效。\includesvg

该方法还可以通过添加类似\onslide<2-3>\transfade<2>\transduration<2>{0.75}文本对象的内容来创建更复杂的效果。

答案4

有一个方便的脚本可用https://github.com/berteh/svg-objects-export可以按如下方式使用,提取由 inkscape 生成的名为 的 SVG 文件的每个层的 PDF 文件image.svg

svg-objects-export.py --type pdf --xpath "//svg:g[@inkscape:groupmode='layer']" --extra '--export-area-page --export-id-only' image.svg

由于文件命名方式svg-objects-export.py(基于 SVG ID),您可能需要将每个生成的文件从类似于重命名为image_layer1.pdfimage_layer-1.pdf这是一种适用于xmpmulti类(下面使用)的形式。[如果有更简单的方法来正确命名文件,请编辑此答案!]

获得(重命名的)PDF 文件后,您应该能够使用以下命令相对轻松地将它们包含在 beamer 中:

\usepackage{xmpmulti}
....
\begin{document}
\begin{frame}{MyFrame}
    \multiinclude[<+>]{format=pdf}{image_layer}
\end{frame}
\end{document}

相关内容