如何将 TikZ 节点定位在投影仪幻灯片主区域内的任意位置

如何将 TikZ 节点定位在投影仪幻灯片主区域内的任意位置

以下问题与这个


我希望能够将 TikZ 节点放置在幻灯片“主区域”内的任意位置beamer,即下面示例中的白色矩形内。

\documentclass{beamer}
\usetheme{Warsaw}
\begin{document}
\section{A section}
\begin{frame}{Title}
\end{frame}
\end{document}

华沙主题下的空投影机滑梯

为了做到这一点,我需要访问以下几个信息集合之一:

  1. 幻灯片顶部和底部的各个文章的高度:

    • 部分横幅
    • 标题横幅
    • 导航标尺
    • 横幅沿幻灯片底部边缘
  2. 主区域四个角与最靠近它们的页面边缘之间的距离。

  3. 主区域四个角之一与最靠近它的页面边缘的距离,以及主区域的高度。

  4. 类似于 TikZ 的对象current page,代表主要区域,因此可以编写类似的内容\draw[fill=red] (main area.north west) circle (1pt);以在主要区域的左上角获得一个填充的红色圆圈。

无论哪种情况,我还想知道标题横幅下阴影的高度。

注意上面第一点提到的各个文章的高度是动态的,并且每个文章都可以单独隐藏。

  1. 如何才能获得足够的信息,以便将 TikZ 图片放置在幻灯片主区域的任意位置?
  2. 上一个问题是否有一个不考虑主题的通用答案?这比依赖主题的答案更可取Warsaw

答案1

文本区域的高度未知,或者至少不等于\textheight。文本区域要么与幻灯片底部重叠,要么不重叠。无法知道先验。我认为 beamer 甚至没有计算可用空间。它只是\vfill在上面和下面应用并希望如此。

使用\tikzmark您可以定位西北角和东南角,甚至可以计算相对于(current page)锚点的偏移量。

\documentclass{beamer}
\usetheme{Warsaw}
\usepackage{tikz}
\usetikzlibrary{tikzmark,calc}
\begin{document}
\section{A section}
\begin{frame}{Title}
\rule{\textwidth}{16\baselineskip}
\end{frame}

\begin{frame}{Title}
\parbox[c][16\baselineskip][s]{\textwidth}{%
\tikzmark{topleft}\par
\vfill
\hfill\tikzmark{bottomright}}%
\tikz[remember picture, overlay]{\fill[black]
   (pic cs:topleft) rectangle (pic cs:bottomright);}
\end{frame}
\end{document}

相关内容