将 tikzpicture 缩放到投影仪框架的剩余高度

将 tikzpicture 缩放到投影仪框架的剩余高度

通常在frame(的beamer) 中,我会在顶部放置一些文本,tikzpicture在底部放置调整大小的文本:

\begin{frame}
\frametitle{...}
some texts
...
some texts
\[\resizebox{!}{???}{
\begin{tikzpicture}
...
\end{tikzpicture}
}\]
\end{frame}

我想知道如何确定???部分,使tikzpicture占据剩余的部分frame,以便总高度图片加文字占据了整个空间frame

有谁知道这是怎么做到的吗?

答案1

您可以使用它zref来测量剩余空间,方法是保存文本的底部位置和框架的底部位置。以下代码对我有用。每次更改文本后都需要运行两次。它似乎适用于不同的主题。如果您希望图像居中,请取消注释\centering。我添加了较低的边距以使其不接触底部边缘。如果您愿意,您还可以使用一个可以center自行添加(在我看来相当大的)边距的环境。

请注意,该环境restofframe可以多次使用,并且一张幻灯片上的所有实例将平等共享剩余空间。

\documentclass{beamer}
\usetheme{Berlin}

\usepackage{tikz}
\usepackage{zref-savepos}

\newcounter{restofframe}
\newsavebox{\restofframebox}
\newlength{\mylowermargin}
\setlength{\mylowermargin}{2pt}

\newenvironment{restofframe}{%
    \par%\centering
    \stepcounter{restofframe}%
    \zsavepos{restofframe-\arabic{restofframe}-begin}%
    \begin{lrbox}{\restofframebox}%
}{%
    \end{lrbox}%
    \setkeys{Gin}{keepaspectratio}%
    \raisebox{\dimexpr-\height+\ht\strutbox\relax}[0pt][0pt]{%
    \resizebox*{!}{\dimexpr\zposy{restofframe-\arabic{restofframe}-begin}sp-\zposy{restofframe-\arabic{restofframe}-end}sp-\mylowermargin\relax}%
        {\usebox{\restofframebox}}%
    }%
    \vskip0pt plus 1filll\relax
    \mbox{\zsavepos{restofframe-\arabic{restofframe}-end}}%
    \par
}

\begin{document}

\begin{frame}
\frametitle{Title}
some texts

some texts

some text

some text

\begin{restofframe}
\begin{tikzpicture}
    \draw (0,0) -- (1,1);
    \draw (0,1) -- (1,0);
\end{tikzpicture}%
\end{restofframe}
\end{frame}

\begin{frame}
\frametitle{Title}
\framesubtitle{Subtitle}
some texts

some texts

some text

some text

\begin{restofframe}
\begin{tikzpicture}
    \draw (0,0) -- (1,1);
    \draw (0,1) -- (1,0);
\end{tikzpicture}%
\end{restofframe}
\end{frame}

\begin{frame}
\frametitle{Title}
\framesubtitle{Subtitle}
some texts

some texts

\begin{restofframe}
\begin{tikzpicture}
    \draw (0,0) -- (1,1);
    \draw (0,1) -- (1,0);
\end{tikzpicture}%
\end{restofframe}

some text

some text

\end{frame}

\end{document}

结果

相关内容