Вертикальное выравнивание изображений в проекторе

Вертикальное выравнивание изображений в проекторе

У меня есть последовательность изображений, которые я хотел бы анимировать в beamer. В каждом кадре я хотел бы иметь два изображения, скажем, A и B, выровненные по вертикали и отцентрированные на странице. Все изображения имеют одинаковый размер.

Я пробовал выровнять изображения с помощью \vspace{}, но затем вертикальные пробелы накапливаются, и изображения съезжают вниз при переходе между ними.

Как выровнять изображения в каждом кадре?

Вот минимальный рабочий пример:

\documentclass{beamer}
\begin{document}
\frame{
    \begin{figure}[t!]
    \includegraphics<1>[scale=.5]{fig/imageA1} \vspace{.1in}        
    \includegraphics<1>[scale=.5]{fig/imageB1}

    \includegraphics<2>[scale=.5]{fig/imageA2} \vspace{.1in}        
    \includegraphics<2>[scale=.5]{fig/imageB2} 

    \includegraphics<3>[scale=.5]{fig/imageA3} \vspace{.1in}        
    \includegraphics<3>[scale=.5]{fig/imageB3}

    \includegraphics<4>[scale=.5]{fig/imageA4} \vspace{.1in}        
    \includegraphics<4>[scale=.5]{fig/imageB4} 

      \end{figure} 
    }   
\end{document}

решение1

Использование плавающих сред (таких как figureили table) в кадре не работает так, как должно. Чтобы достичь своей цели, включите allowpagebreakи T. Настройте графику с помощью heightпараметра. Смотрите код ниже для остальных.

введите описание изображения здесь

\documentclass{beamer}
\usepackage{graphicx}
\begin{document}
\frame[allowpagebreak,T]
{%
        \only<1>
        {%
            \centering
            \includegraphics[height=\dimexpr0.5\textheight-0.5in]{example-image-a}

            \vfill
            \includegraphics[height=\dimexpr0.5\textheight-0.5in]{example-image-a}
        }%

        \only<2>
        {%
            \centering
            \includegraphics[height=\dimexpr0.5\textheight-0.5in]{example-image-b}

            \vfill
            \includegraphics[height=\dimexpr0.5\textheight-0.5in]{example-image-b}
        }%

        \only<3>
        {%
            \centering
            \includegraphics[height=\dimexpr0.5\textheight-0.5in]{example-image-c}

            \vfill
            \includegraphics[height=\dimexpr0.5\textheight-0.5in]{example-image-c}
        }%

        \only<4>
        {%
            \centering
            \includegraphics[height=\dimexpr0.5\textheight-0.5in]{example-image}

            \vfill
            \includegraphics[height=\dimexpr0.5\textheight-0.5in]{example-image}
        }%
}
\end{document}

Для создания GIF-анимации см.мой другой ответ здесь.

решение2

Вместо \vspaceможно использовать \\для принудительного переноса строки.

\documentclass{beamer}
\begin{document}
\frame{
    \begin{figure}[t!]
    \includegraphics<1>[scale=.5]{img} \\
    \includegraphics<1>[scale=.5]{img}

    \includegraphics<2>[scale=.5]{img} \\
    \includegraphics<2>[scale=.5]{img} 

    \includegraphics<3>[scale=.5]{img} \\
    \includegraphics<3>[scale=.5]{img}

    \includegraphics<4>[scale=.5]{img} \\
    \includegraphics<4>[scale=.5]{img} 

      \end{figure} 
    }   
\end{document}

решение3

Если у вас всего один разрыв строки вместо одного для каждой пары изображений, ваша проблема должна исчезнуть. Дело в том, что ваша \vspace{.1in}команда не замаскирована <1>, <2>, <3>, или <4>:

\documentclass{beamer}
\begin{document}
\frame{
  \begin{figure}[t!]
    \includegraphics<1>[scale=.5]{fig/imageA1}
    \includegraphics<2>[scale=.5]{fig/imageA2}
    \includegraphics<3>[scale=.5]{fig/imageA3}
    \includegraphics<4>[scale=.5]{fig/imageA4}
    \vspace{.1in}        
    \includegraphics<1>[scale=.5]{fig/imageB1}
    \includegraphics<2>[scale=.5]{fig/imageB2}
    \includegraphics<3>[scale=.5]{fig/imageB3}
    \includegraphics<4>[scale=.5]{fig/imageB4}
  \end{figure} 
}   
\end{document}

Связанный контент