投影机中的弹出效果?

投影机中的弹出效果?

投影仪演示文稿中的所有元素都整齐地布局,以便它们不会互相重叠。

有没有一种方法,例如覆盖规范,允许出现位于幻灯片其他元素上方的框、注释或气泡?(可能类似于工具提示)

答案1

如果您想在 TikZ 中绘制叠加层,则不需要任何额外的包来进行绝对定位。只需添加选项[overlay,remember picture]即可将图像绝对定位在框架上(您需要编译两次才能获得正确的定位)。特殊节点(current page)是一个矩形节点,它简单地跨越整个页面,可以轻松访问页面中的各个位置。您\pgftransformshift{\pgfpointanchor{current page}{center}}可以选择一个坐标系,使其(0,0)位于页面的中心。

这是一个例子(用xelatex或编译lualatex以获取字体)。

\documentclass{beamer}
\usepackage{tikz,lipsum,fontspec}
\usetikzlibrary{shapes.callouts,decorations.pathmorphing}
\newfontfamily\comic{Comic Sans MS}

\begin{document}
\begin{frame}
    \lipsum[1]
    \begin{tikzpicture}[overlay,remember picture]
        \pgftransformshift{\pgfpointanchor{current page}{center}}
        \node[
            ellipse callout,
            draw=red,
            ultra thick,
            fill=yellow,
            decoration=zigzag,
            decorate,
            callout relative pointer=(315:2cm),
            font=\Huge\comic,
            text width=0.6\textwidth,
            align=center,
            anchor=center
            ] at (0,0) {Presentations without speech bubbles are BORING!};
    \end{tikzpicture}
\end{frame}
\end{document}

例子

当然,你可以将其与 Andrew 的解决方案结合起来,“如何在投影仪幻灯片中打开临时的漫画状气球?”。

答案2

基本上有两个问题需要解决:

  1. 如何将内容放置在任意位置的普通内容之上。
  2. 如何在那里绘制标注框。

对于 (1),beamer 文档推荐使用该textpos软件包,该软件包(使用选项)提供了[absolute, overlay]将“某些内容”置于高于其他所有内容的绝对位置的必要方法。

对于 (2),有很多选择。我个人更喜欢使用一些 TikZ 代码片段来排版框,这给了我足够的灵活性来在特定情况下影响排版。

综上所述,我的通常设置如下:

\documentclass{beamer}
\usepackage[absolute,overlay]{textpos}
\usepackage{tikz}
\usetikzlibrary{shadows}

%**
% \PutAt<overlay spec>[<box width>]{(<x>, <y>)}{<content>}
%
% real absolute positioning of <content> on a slide, if content is a figure,
% minipage or whatever kind of LR-box, the <box width> argument may be omitted
%
%
% implementation notes: 
%   - based on   \usepackage[absolute,overlay]{textpos}
%   - NOT combinable with any beamer feature that is based on pgfpages
%     (such as dual-screen support, built-in 2up handouts, etc.), as textpos 
%     and pgfpates interfere at the shippout-level.
%

  \newcommand<>{\PutAt}[3][0pt]{%
    {\only#4{\begin{textblock*}{#1}#2%
      #3
    \end{textblock*}}}%
  }

%**
% \ShowPutAtGrid
%
% draws a helpful grid on the current slide to figure <x> and <y> parameters for \PutAt
% 
  \newcommand{\ShowPutAtGrid}{
    \begin{textblock*}{128mm}(0cm,0cm)
    \tikz[color=red!20!white]\draw[very thin, step=5mm] (0mm,0mm) grid (130mm,100mm);
    \end{textblock*}
    \begin{textblock*}{128mm}(0cm,0cm)
    \begin{tikzpicture}[color=red]
      \draw[step=1cm] (0,0mm) grid (130mm,100mm);   
      \foreach \n in {0,...,12}
        \draw[xshift=.5mm,yshift=-1.5mm, inner sep=0pt, anchor=west] (\n,10) node {\scriptsize{\textbf{\n}}};
      \foreach \n in {1,...,9}
        \draw[xshift=.5mm,yshift=-1.5mm, inner sep=0pt, anchor=west] (0,10-\n) node {\scriptsize{\textbf{\n}}};
    \end{tikzpicture}
    \end{textblock*}
  }


%**
% \NormalBox<overlay spec>[tikz picture/node options]{<content>}
%
% draws content boxed in a nice box
% 
\newcommand<>{\NormalBox}[2][]{%
  \only#3{\tikz[#1, every node/.style={shape=rectangle,draw,fill=white, drop shadow, #1}]\node []{#2};}
}
%**
% \OrangeBox<overlay spec>[tikz picture/node options]{<content>}
%
% draws content boxed in an orange call-out box
% 
\newcommand<>{\OrangeBox}[2][]{%
  \onslide#3{\NormalBox[fill=orange!30,draw=black!30,rounded corners=4pt,#1]{#2}}%
} 

\begin{document}

\begin{frame}{My frame}
  \begin{itemize}
    \item Foo
    \item Bar
    \item Baz
  \end{itemize}
  \PutAt<+>{(2cm,2cm)}{
    \NormalBox[text width=4cm, font=\footnotesize]{A absolute positioned overlay box}
  }
  \PutAt<+>{(5cm,4cm)}{
    \OrangeBox[text width=4cm, font=\footnotesize]{A more callout-like orange box that provides some really helpfull content}
  }
\end{frame}

\begin{frame}{My frame}
  \begin{itemize}
    \item Foo
    \item Bar
    \item Baz
  \end{itemize}
  \PutAt{(2cm,2cm)}{
    \NormalBox[text width=4cm, font=\footnotesize]{A absolute positioned overlay box}
  }
  \PutAt{(5cm,4cm)}{
    \OrangeBox[text width=4cm, font=\footnotesize]{A more callout-like orange box that provides some really helpfull content}
  }
  \ShowPutAtGrid
\end{frame}

\end{document}

答案3

尝试fancytooltipsocgtools包。文档目录中有完整的示例。

相关内容