[Tex/LaTex] Tikz overlay picture over the frame title in Beamer

beameroverlaystikz-pgf

I am trying to put a tikz overlay picture – A nice, thick red 'X' over a word – On the frame title of a Beamer frame. However, the overlay tikz picture in the frame does not recognize the nodes given in the title.

For example, I try:

\newcommand{\crd}[1]{\tikz[overlay, remember picture, baseline=.5ex]\coordinate (#1);}
\begin{frame}
  \frametitle{Some \crd{p}Crossthis\crd{q} Title}
  \begin{tikzpicture}[overlay, remember picture]
    \draw[red, thick] (p) -- (q);
  \end{tikzpicture}
\end{frame}

And I get:

ERROR: Package pgf Error: No shape named q is known.

How can I put an overlay on the title?

Best Answer

Beamer evaluates a frame's contents in a nonstandard way. The frame's body is evaluated before the frame's title.

Here is an adaptation of your MWE that puts the effect in the title and demonstrates the order of evaluation:

\documentclass{beamer}
\usepackage{tikz}
\usepackage{lipsum}
\begin{document}

\newcounter{n}

\newcommand{\crd}[1]{\tikz[overlay, remember picture, baseline=.5ex]\coordinate (#1);}
\begin{frame}{%
    \stepcounter{n}($n=\then$)% 
    Some \crd{p}Crossthis\crd{q} Title%
    \begin{tikzpicture}[overlay, remember picture]
            \draw[red, thick] (p) -- (q);
    \end{tikzpicture}%
}
\stepcounter{n}($n=\then$)% 
\lipsum[1]
\end{frame}

\end{document}

sample code output

You have to run this twice to get the underline effect.