根据图像宽度缩放列宽

根据图像宽度缩放列宽

我正在编写一个演示文稿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}

结果是: 在此处输入图片描述

相关内容