带有图形和文本块的 beamer 2x2 字段

带有图形和文本块的 beamer 2x2 字段

我有一个示例代码,我试图利用幻灯片的整个空间来放置 1 幅图像加一个文本块(例如 2 x 1 不可见表格)或 2 幅图像加 2 个文本块(2 x 2)。但对于后者,我无法使文本块在其“单元格”中居中。我在底部放了一张我想要的图像。我在 loimpress 中完成了这项工作。

\documentclass[aspectratio=1610]{beamer}
%\usetheme{Warsaw}

\usepackage{graphicx}
\graphicspath{ {./} {../../items/} }

\begin{document}

\begin{frame}[c]
\begin{columns}
  \column{0.5\textwidth}
  \includegraphics[width=\textwidth]{apple.png}
  \column{0.5\textwidth}
  \center\huge apple \\
  pomme
\end{columns}
\end{frame}

\begin{frame}[c]
\begin{columns}
  \column{0.5\textwidth}
  \includegraphics[width=\textwidth]{banana.png}
  \includegraphics[width=\textwidth]{apple.png}

  \column{0.5\textwidth}
  \center\huge banana \\
  banane \\
  apple \\
  pomme
\end{columns}
\end{frame}
\end{document}

在此处输入图片描述

答案1

有很多方法可以实现你想要的,包括 tikz。到目前为止,上述答案对精确位置的控制有限。我最喜欢的方法是使用 a\textblock作为“行”,然后columns在文本块内使用环境。大多数时候,这似乎与幻灯片内容的使用/编写方式相对应(至少对我来说……)。

以下是如何实现此目的的示例:

\documentclass[aspectratio=1610]{beamer}

\usepackage{graphicx}
\graphicspath{ {./} {../../items/} }

% textpos allows to arbitrary position TeX code, e.g., by 
% \begin{textblock}{1}(0., -0.08) Some text \end{textblock}
\usepackage[absolute,overlay,showboxes]{textpos}  % delete "showboxes" to remove the outline of the text boxes
\TPGrid{1}{1} % defines the units


\begin{document}
    \begin{frame}[c]
        % ====================================================================================================
        % ======= Define the upper row with image on the left and text on the right.                     =====
        % ====================================================================================================
        \begin{textblock*}{0.9\pagewidth}(0.05\pagewidth, 0.01\pageheight)  % {size}(hpos, vpos)
            \begin{columns}
                % ------ the left "box" with the image ------------------
                \column{0.45\textwidth}
                    \color{blue}\fbox{\color{black} %  draw the blue box on the left        
                  % The minipage takes all the horizontal space of the column;
                  % the height (0.42\textwidth) can be changed and defines the height of the row
                        \begin{minipage}[c][0.42\textheight][c]{\textwidth}
                            \centering
                            \includegraphics[width=0.25\pagewidth]{apple}
                        \end{minipage}
                    }
                % -------- the right "box" with the text ----------------
                \column{0.45\textwidth}
                    \color{red}\fbox{\color{black}%  draw the red box on the right
                        \begin{minipage}[c][0.42\textheight][c]{0.95\textwidth}
                            \centering\huge apple\\
                            pomme 
                        \end{minipage}
                    }
            \end{columns}               
        \end{textblock*}        
        % ====================================================================================================
        
        
        % ====================================================================================================
        % ======= Define the lower row with image on the left and text on the right.                    ======
        % ======= This is independent of the upper "row" -- just specify the offset (vpos) of textblock ======
        % ====================================================================================================
        \begin{textblock*}{0.9\pagewidth}(0.05\pagewidth, 0.5\pageheight)  % {size}(hpos, vpos)
            \begin{columns}
                % ------ the left "box" with the image ------------------
                \column{0.45\textwidth} % width of the green box
                \color{green}\fbox{\color{black} %  draw the green box on the left      
                    \begin{minipage}[c][0.42\textheight][c]{\textwidth}
                        \centering
                        \includegraphics[width=0.25\pagewidth]{banana}
                    \end{minipage}
                }
                % -------- the right "box" with the text ----------------
                \column{0.45\textwidth}
                \centering
                \color{cyan}\fbox{\color{black}%  draw the cyan box on the right
                    \begin{minipage}[c][0.42\textheight][c]{0.95\textwidth}
                        \centering\huge banana\\
                        banane\\
                        banana
                    \end{minipage}
                }
            \end{columns}               
        \end{textblock*}    
        % ====================================================================================================
    \end{frame}

\end{document}

我添加了彩色框来显示哪个对象是哪个(黑色:文本块,彩色:列环境中的迷你页面):您可以通过在相应的 usepackage 命令中删除“showboxes”并删除包含以下内容的行fbox(包括结束的“}”)来删除这些框。

文本块环境的参数允许在框架上对内容进行绝对定位,列环境则发挥其最擅长的作用……

最后,给大家看一下截图:截屏

最后但同样重要的一点是,从我的代码中可以清楚地看出,你也可以使用仅有的文本块,根本不使用列环境。但这可能是个人喜好问题 ;)

我希望这对某些人有用!

答案2

无需额外的包,可以使用四个来组织内容minipages

的默认行为minipage是将其内容垂直居中。\centering内部则水平居中。

A

\documentclass[aspectratio=1610]{beamer}
%\usetheme{Warsaw}  
    
\usepackage{graphicx}
\graphicspath{ {./} {../../items/} }

\begin{document}
    \begin{frame}[c]
        \begin{minipage}{0.5\linewidth}
            \centering
            \includegraphics[width=0.8\linewidth]{example-image-duck}
        \end{minipage}\hfill
        \begin{minipage}{0.5\linewidth}
            \centering\huge apple \\
            pomme
        \end{minipage}
        \vfill
        \begin{minipage}{0.5\linewidth}
            \centering
            \includegraphics[width=0.8\linewidth]{example-image-duck}
        \end{minipage}\hfill
        \begin{minipage}{0.5\linewidth}
            \centering\huge  banana \\
            banane \\
            apple \\
            pomme
        \end{minipage}  
    \end{frame}

\end{document}

答案3

另一种解决方案,无需任何其他包或结构(如 tabular 或 minipage)。只需一个columns用于任何一对图像+文本的环境即可。

\documentclass[aspectratio=1610]{beamer}
%\usetheme{Warsaw}

\usepackage{graphicx}
\graphicspath{ {./} {../../items/} }

\begin{document}

\begin{frame}[c]
\begin{columns}
  \column{0.5\textwidth}
  \includegraphics[width=\textwidth]{example-image-a}
  \column{0.5\textwidth}
  \center\huge apple \\
  pomme
\end{columns}
\end{frame}

\begin{frame}[c]
\begin{columns}
  \column{0.5\textwidth}
  \includegraphics[width=\textwidth]{example-image-a}
  \column{0.5\textwidth}
  \centering\huge banana \\
  banane \\
\end{columns}
\begin{columns}
  \column{0.5\textwidth}
  \includegraphics[width=\textwidth]{example-image-b}
  \column{0.5\textwidth}
  \centering\huge 
  apple \\
  pomme
\end{columns}
\end{frame}
\end{document}

在此处输入图片描述

答案4

您可以使用表格来组织图像及其所属文本。

编辑:关于您的评论(20 天后!)现在图像高度由 定义height=<desired vale>,文本也通过将列类型更改为 而水平居中CX[c, font=\huge]顺便说一句,这些要求从问题中看不清楚(至少对我来说)。希望现在这两个例子都是你想要的。

例如:

  • 带有tabularxadjustbox包装:
\documentclass[aspectratio=1610]{beamer}
%\usetheme{Warsaw}
\graphicspath{ {./} {../../items/} }
\usepackage[export]{adjustbox}
\usepackage{booktabs, tabularx}
\newcolumntype{C}{>{\centering\arraybackslash}X}

\begin{document}

\begin{frame}[c]
    \begin{tabularx}{\textwidth}{C@{\qquad\qquad}>{\huge}C}
\includegraphics[height=33mm, valign=m]{example-image-duck}
    &   I'm a duck who love bananas \\
    \addlinespace
\includegraphics[height=33mm, valign=m]{example-image-duck}
    &   I'm a duck who love apples \\
    \end{tabularx}
\end{frame}
\end{document}

在此处输入图片描述

  • 通过使用tabularrayadjustbox包:
\documentclass[aspectratio=1610]{beamer}
%\usetheme{Warsaw}
\graphicspath{ {./} {../../items/} }
\usepackage[export]{adjustbox}
\usepackage{tabularray}
\UseTblrLibrary{varwidth}

\begin{document}

\begin{frame}[c]
\adjustboxset{{height=33mm, valign=m}
    \begin{tblr}{colspec = {X[c] X[c, font=\huge]},
                 measure = vbox
                 }
\adjincludegraphics{example-image-duck}
    &   I'm a duck who love bananas \\
\adjincludegraphics{example-image-duck}
    &   I'm a duck who love apples \\
    \end{tblr}
\end{frame}
\end{document}

在此处输入图片描述

相关内容