我正在编写一个演示文稿beamer
,其中多张幻灯片由image
最右侧的文本和左侧居中的文本组成。
到目前为止,我使用以下columns
环境来实现此目的:
\documentclass{beamer}
\usepackage{mwe}
\begin{document}
\begin{frame}
\begin{columns}
\begin{column}{.4\textwidth}
\centering
centered text\\spanning multiple lines
\end{column}
\begin{column}{.6\textwidth}
\includegraphics[height=\paperheight]{example-image-golden-upright}
\end{column}
\end{columns}
\end{frame}
\end{document}
但是,我必须手动设置列宽以使右列具有与图像相同的宽度。
如您所见,图像的左右两侧有一些空白。
如何使右列与图像一样宽,而左列占据剩余空间?
如果您有一个不使用它的解决方案colums
,那也很好(只要图像位于最右边并且文本位于其左边的自由空间的中心)。
我需要自动执行此操作,因为我多次使用具有不同纵横比的多张图片。因此每张幻灯片上的列宽需要不同。
答案1
不清楚您是否想使用覆盖;如果不想,这里是执行必要计算的环境的定义。我还添加了一个“自动化程度较低”的解决方案。
\documentclass{beamer}
\usepackage{mwe}
\newlength{\mycolwidth}
\newsavebox{\mycolwidthbox}
%% Better way
\newenvironment{picturecolumn}[2][]
{\sbox\mycolwidthbox{\includegraphics[#1]{#2}}%
\setlength{\mycolwidth}{\wd\mycolwidthbox}%
\begin{columns}
\begin{column}{\dimexpr\textwidth-\mycolwidth}
\centering}
{\end{column}
\begin{column}{\mycolwidth}
\usebox{\mycolwidthbox}
\end{column}
\end{columns}}
%% Simpler way
\newcommand{\setmycolwidth}[2][]{%
\settowidth{\mycolwidth}{\includegraphics[#1]{#2}}%
}
\begin{document}
\begin{frame}
\begin{picturecolumn}[height=\dimexpr\paperheight-5pt]{example-image-golden-upright}
\centering
centered text\\
spanning multiple lines
\end{picturecolumn}
\end{frame}
\begin{frame}
\setmycolwidth[height=\paperheight]{example-image-golden-upright}
\begin{columns}
\begin{column}{\dimexpr\textwidth-\mycolwidth}
\centering
centered text\\
spanning multiple lines
\end{column}
\begin{column}{\mycolwidth}
\includegraphics[height=\paperheight]{example-image-golden-upright}
\end{column}
\end{columns}
\end{frame}
\end{document}
答案2
我希望我理解得对,你想要摆脱图像中的空间,这里有一个涉及 parboxes 的解决方案。
\documentclass{beamer}
\usepackage{mwe}
\usepackage{calc}
%\usepackage{geometry} will be loaded with beamer
\newlength\rightcolumn
\begin{document}
\newgeometry{margin=0pt,includeall}
\begin{frame}[plain]
\settowidth{\rightcolumn}{\includegraphics[height=\paperheight]{example-image-golden-upright}}
\parbox[t][\paperheight][c]{\paperwidth-\rightcolumn}{%
\centering%
centered text\\spanning multiple lines
}%
\parbox[t][\paperheight][c]{\rightcolumn}{%
\includegraphics[height=\paperheight]{example-image-golden-upright}
}%
\end{frame}
\end{document}
结果是: