Here's one possibility; the idea is to place a beamercolorbox
at the desired fixed location, using TikZ. In every frame that should receive a "take away" box, simply use \insertimptext{<text>}
:
\documentclass{beamer}
\usetheme{CambridgeUS}
\usepackage{tikz}
\makeatletter
\newcommand\insertimptext[1]{
\begin{tikzpicture}[remember picture,overlay]
\node[inner sep=0pt,outer sep=0pt,anchor=south] at ([yshift=20pt]current page.south)
{\begin{beamercolorbox}[wd=0.65\paperwidth,ht=3ex,dp=2ex,center]{author in head/foot}
\hfill\parbox[c][7ex][c]{0.6\paperwidth}{\centering\footnotesize#1}\hfill\null
\end{beamercolorbox}
};
\end{tikzpicture}%
}
\makeatother
\begin{document}
\begin{frame}
\frametitle{Test frame with box}
\insertimptext{Some important text associated with this frame. \\ Short texts are better}
\end{frame}
\begin{frame}
\frametitle{Test frame without box}
\end{frame}
\end{document}
Feel free to make the necessary adjustments according to your needs.
Here is one option:
Don't use overlay at all.
\documentclass{article}
\usepackage{lipsum,tikz}
\usepackage[margin=1in,showframe]{geometry}
\begin{document}
\noindent
\hspace*{-2mm}
\begin{tikzpicture}
\coordinate (my spot) at (0,0);
\fill[blue] (my spot) circle (1mm);
\node[above right,align=left,blue,draw=blue,thick,outer sep=0pt] at (my spot)
{I want the red text to appear\\right below this box};
\fill[red] (my spot) circle (1mm);
\node[below right,align=left,red,draw=red,thick,outer sep=0pt] at (my spot)
{the red dot should go where the blue dot is\\
lipsum should remain below this red box};
\end{tikzpicture}
\lipsum
\end{document}
And option 2:
overlay
really overlays. Hence main text will not know where that picture comes. You have to manually adjust the distances.
\documentclass{article}
\usepackage{lipsum,tikz}
\usepackage[margin=1in,showframe]{geometry}
\begin{document}
\begin{tikzpicture}[shift={(current page.north west)},shift={(1in,-1in)},
remember picture,overlay]
\coordinate (my spot) at (0,0);
\fill[blue] (my spot) circle (1mm);
\node[above right,align=left,blue,draw=blue,thick,outer sep=0pt] at (my spot)
{I want the red text to appear\\right below this box};
\end{tikzpicture}
% to make second pic, remove \noindent and add overlay option
\noindent\begin{tikzpicture}[remember picture,overlay]
\fill[red] (my spot) circle (1mm);
\node[below right,align=left,red,draw=red,thick,outer sep=0pt] at (my spot)
{the red dot should go where the blue dot is\\
lipsum should remain below this red box};
\end{tikzpicture}
\vspace*{.5\baselineskip} %% use appropriate length
\lipsum
\end{document}
Best Answer
You can use the
\zsavepos
macro of the zref package. Note you need to LaTeX twice before you have the position accurately.Edit: show minimal using
fp
package for calculations.