
Quero incluir uma sequência de imagens no Beamer (embora possa ser em outro tipo de documento). Algo semelhante à opçãoÁlbum de fotono LibreOffice e no MS PowerPoint.
O que fiz foi criar um modelo (que posso modificar):
%s
\begin{frame}
\frametitle{%s}
\framesubtitle{%s}
\centering
\includegraphics[width=0.9\textwidth]{%s}
\end{frame}
E então eu uso um script Python para gerar o código para cada quadro, assim:
tex_file = open(filename + '.tex', 'a+')
for name in list_files:
print >> tex_file, s1 %(comment, title, subtitle, name)
tex_file.close()
Depois disso, basta usar um \include
no meu arquivo principal para adicionar a sequência de imagens.
Minha pergunta:Existe um pacote para esta tarefa? ou uma maneira melhor de fazer isso?
Responder1
Aqui está uma opção usandomultido
:
\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}
A sintaxe é \multido{<var>=<start>+<inc>}{<times}{<stuff>}
a que define <var>
ser <start>
, incrementada em <inc>
um total de <times>-1
vezes (já que o primeiro valor conta como uma iteração), e a cada iteração ele executa <stuff>
. A \i
notação especial significa que <var>
será um i
número inteiro.
O exemplo acima pressupõe alterações mínimas de um elemento para o outro. Se, por exemplo, você tiver conteúdo variado para o título do quadro, subtítulo e quaisquer comentários adicionais por foto, usar uma abordagem semelhante a uma lista seria muito melhor. Pois então, qualquer uma das técnicas mencionadas emComo iterar em uma lista separada por vírgula?seria útil.
Responder2
Eu tenho um arquivo tex que escrevi para produzir uma exibição de fotos que faz algo assim. Para mim, o objetivo é organizar uma coleção variável de fotos em uma grade que cobre a página. Eu uso tikz
tanto para fazer um loop nas fotos, que são armazenadas como uma lista separada por vírgulas de nomes de arquivos de imagens, quanto para colocar as fotos.
Como você está falando sobre como gerar a lista de nomes de arquivos via python, você pode facilmente preencher uma lista de variáveis como a usada abaixo.
Aqui está uma versão reduzida:
\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}
Isso produz:
Responder3
Isso é possível usando o \multiinclude
comando do xmpmulti
pacote do beamer.
Supondo que as imagens sejam chamadas fig-0.png
etc. fig-1.png
a macro pode ser usada assim:
\documentclass{beamer}
\usepackage{xmpmulti}
\begin{document}
\begin{frame}
\multiinclude[<+->][format=png, graphics={width=\textwidth}]{fig}
\end{frame}
\end{document}