[Tex/LaTex] Loop for includegraphics

beamergraphicsloops

I try to make multiple slides in beamer with 3 figures on each slide and the title.
I would like to loop through the list/array of figures and set the frame title.
The name of the figure files and the name of the frame should be different.

Here is the attempt:

\def\fnames{red, green, blue}

\foreach \name in \fnames {%

\begin{frame}{\name}
  \begin{columns}    
    \column{0.33\textwidth}
    \includegraphics[width=4.cm]{./plots/tot\name _log.eps} 
    \column{0.33\textwidth}
    \includegraphics[width=4.cm]{./plots/tot\name _log.eps} 
    \column{0.33\textwidth}
    \includegraphics[width=4.cm]{./plots/tot\name _log.eps} 
 \end{columns} 
\end{frame}%

}

The question: is it possible to set the title of the frame from a separate list or array. So instead of fnames, I would like to get it from:
\def\tnames{white, gray, black}

Best Answer

You can define a PGF array and access it via \pgfmathparse, the array index starts from 0 instead. I've used a,b,c for convenience.

EDIT: Added a general content loop but still it is not that economic on verbosity.

\documentclass{beamer}
\usepackage{tikz,etoolbox}
\usepackage{mwe} %<- for dummy images

\begin{document}

\def\fnames{a,b,c}
\def\tnames{{"white","gray","black"}}


\foreach \x[count=\xcount from 0] in \fnames {%
\def\myframecontents{}
\foreach\y in{1,2,3}{
    \gappto\myframecontents{%
        \column{0.33\textwidth}%
        \includegraphics[width=4.cm]{example-image-\x}%
    }
}

\pgfmathparse{\tnames[\xcount]}
\begin{frame}{\pgfmathresult}
   \begin{columns}    
       \myframecontents
   \end{columns} 
\end{frame}%
}
 \end{document}

enter image description here