我想在 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}
得出的结果为: