비머에서 여러 배경 이미지를 반복합니다.

비머에서 여러 배경 이미지를 반복합니다.

여러 이미지가 포함된 이미지 디렉터리가 있습니다.

p1.jpg
p2.jpg
p3.jpg
p4.jpg

또한 배경 이미지를 프레임으로 설정하는 다음과 같은 환경이 있습니다.

\newenvironment{imageframe}[1]
{% Set background image
\usebackgroundtemplate{%
  \begin{tikzpicture}[remember picture,overlay]%
    \node[inner sep=0] at (current page.center) {\includegraphics[width=\paperwidth,height=\paperheight]{#1}};%
  \end{tikzpicture}%
}%
\begin{frame}%
}
{
\end{frame}%
}

다음과 같이 사용됩니다:

\begin{imageframe}{p1.jpg}
  \frametitle{Nothing was the same.}
  Always felt like my vision been bigger than the bigger picture.
\end{imageframe}

유효한 배경 이미지(p1.jpg, ..., p4.jpg) 목록을 보유하는 변수(또는 명령)를 생성한 다음 환경이 호출될 때 이미지 경로를 명시적으로 지정하지 않고 싶습니다. 대신, imageframe이 처음 호출될 때 첫 번째 이미지(p1.jpg)가 선택되어야 하고, 두 번째 이미지(p2.jpg)가 호출되어야 하는 식입니다. 오버플로는 p1.jpg로 다시 반복되어야 합니다.

답변1

카운터가 없고 이미지 수를 미리 알릴 필요 없이 표시된 방식으로 이미지 목록을 정의하기만 하면 작업이 완료됩니다.

\documentclass{beamer}
\usepackage{tikz}

\newenvironment{autoimageframe}
 {% Set background image
  \usebackgroundtemplate{%
    \begin{tikzpicture}[remember picture,overlay]
    \node[inner sep=0] at (current page.center) {%
      \includegraphics[width=\paperwidth,height=\paperheight]{\currentbgimage}%
    };
    \end{tikzpicture}%
    \expandafter\swapbgimage\bgimagelist
  }%
  \begin{frame}}
 {\end{frame}}
\newcommand\currentbgimage{\expandafter\usebgimage\bgimagelist}
\newcommand{\usebgimage}{}
\def\usebgimage#1#2\bgimagelist{#1}
\newcommand{\swapbgimage}{}
\def\swapbgimage#1#2\bgimagelist{%
  \gdef\bgimagelist{#2{#1}\bgimagelist}%
}

% Define here the list of images
% Each image is in a braced group
% REMEMBER to have \bgimagelist at the end
\newcommand\bgimagelist{
  {example-image}
  {example-image-a}
  {example-image-b}
  {example-image-c}
  \bgimagelist
}

\begin{document}

% Thanks to Percusse for the code here
\foreach\x in{1,...,9}{
\begin{autoimageframe}
  \frametitle{Nothing was the same.}
  Always felt like my vision been bigger than the bigger picture.
\end{autoimageframe}
}

\end{document}

여기에 이미지 설명을 입력하세요

매크로 \currentbgimage는 목록의 첫 번째 항목을 사용합니다. 그런 다음 \swapbgimage첫 번째 항목을 끝에 넣습니다.

답변2

몇 가지 매크로와 이름 목록을 생성하고 작업을 통해 반복할 수 있습니다 mod.

\documentclass{beamer}
\usepackage{tikz,mwe}% For dummy images

\newcounter{backgroundimagecounter}
\setcounter{backgroundimagecounter}{0}
\newenvironment{autoimageframe}
{% Set background image
\usebackgroundtemplate{%
  \begin{tikzpicture}[remember picture,overlay]%
    \pgfmathsetmacro\currentbackgroundimage{\backgroundimagenamelist[int(Mod(\value{backgroundimagecounter},\numberofbackgroundimages))]}%
    \node[inner sep=0] at (current page.center) {\includegraphics[width=\paperwidth,height=\paperheight]{\currentbackgroundimage}};%
  \end{tikzpicture}%
\stepcounter{backgroundimagecounter}%
}%
\begin{frame}%
}
{
\end{frame}%
}
\def\backgroundimagenamelist{{
"example-image",
"example-image-a",
"example-image-b",
"example-image-c"}}
\def\numberofbackgroundimages{4}

\begin{document}
\foreach\x in{1,...,9}{
\begin{autoimageframe}
  \frametitle{Nothing was the same.}
  Always felt like my vision been bigger than the bigger picture.
\end{autoimageframe}
}

\end{document}

여기에 이미지 설명을 입력하세요

관련 정보