我有一个示例代码,我试图利用幻灯片的整个空间来放置 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
内部则水平居中。
\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>
,文本也通过将列类型更改为 而水平居中C
。X[c, font=\huge]
顺便说一句,这些要求从问题中看不清楚(至少对我来说)。希望现在这两个例子都是你想要的。
例如:
- 带有
tabularx
和adjustbox
包装:
\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}
- 通过使用
tabularray
和adjustbox
包:
\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}