自动包含一系列图像

自动包含一系列图像

我想在 Beamer 中包含一系列图像(尽管它可以在其他类型的文档中)。类似于选项相片集在 LibreOffice 和 MS PowerPoint 中。

我所做的是制作一个模板(我可以修改):

%s
\begin{frame}
    \frametitle{%s}
    \framesubtitle{%s}
    \centering
    \includegraphics[width=0.9\textwidth]{%s} 
\end{frame}

然后我使用 Python 脚本为每一帧生成代码,如下所示:

tex_file = open(filename + '.tex', 'a+')
for name in list_files:
    print >> tex_file, s1 %(comment, title, subtitle, name)

tex_file.close()

之后,我只需\include在主文件中使用即可添加图像序列。

我的问题:有没有可以完成这个任务的软件包?或者有更好的方法来完成它?

答案1

这是一个使用选项multido

在此处输入图片描述

\documentclass{beamer}
\usepackage{multido}
\begin{document}
\multido{\i=1+1}{9}{%
  \begin{frame}
    \frametitle{Title: \i}
    \framesubtitle{Subtitle: \i}
    \centering
    \includegraphics[width=.9\linewidth]{example-image-\i}
  \end{frame}
}
\end{document}

语法是,\multido{<var>=<start>+<inc>}{<times}{<stuff>}定义<var>为,总共<start>增加次数(因为第一个值算作一次迭代),并且每次迭代都会执行。特殊的-符号表示将是一个整数。<inc><times>-1<stuff>\i<var>i

上述示例假设从一个元素到下一个元素的更改最小。例如,如果您对每张照片的框架标题、副标题和任何其他评论都有不同的内容,那么使用列表式方法会更好。对于上述任何技术如何迭代以逗号分隔的列表?将会很有帮助。

答案2

我编写了一个 tex 文件,用于显示照片,其功能类似。我的目标是在覆盖页面的网格上排列不断变化的照片集。我既tikz循环遍历照片(这些照片以逗号分隔的图像文件名列表的形式存储),又放置照片。

当您谈论通过 python 生成文件名列表时,您可以轻松填充如下所示的变量列表。

以下是精简版:

\documentclass{article}
\usepackage{mwe}
\usepackage{graphicx}
\usepackage{tikz}

\def\MyImages{example-image-a,example-image-b,example-image-c}% list of images
\begin{document}
  \newdimen\X
  \begin{tikzpicture}[overlay,
          picture/.style={draw,rectangle,anchor=#1,inner sep=0pt,outer sep=0pt}
     ]
     \X=0mm
     \foreach \Image in \MyImages {
       \node[picture=north west] at (\X,-101.5mm)
             {\includegraphics[width=49.5mm,height=35mm]{\Image}};
       \global\advance\X by 49.5mm
     }
  \end{tikzpicture}
\end{document}

得出的结果为:

在此处输入图片描述

答案3

在此处输入图片描述

这可以使用\multiincludebeamerxmpmulti包中的命令来实现。

假设图像被称为等fig-0.pngfig-1.png那么宏可以像这样使用:

\documentclass{beamer} 
\usepackage{xmpmulti} 

\begin{document}
\begin{frame}
\multiinclude[<+->][format=png, graphics={width=\textwidth}]{fig}
\end{frame} 
\end{document}

相关内容