Tikz 在 Beamer 中的框架标题上叠加图片

Tikz 在 Beamer 中的框架标题上叠加图片

我正在尝试将 tikz 覆盖图片(一个漂亮的粗红色“X”位于单词上方)放在 Beamer 框架的框架标题上。但是,框架中的覆盖 tikz 图片无法识别标题中给出的节点。

例如,我尝试:

\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}

我得到:

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

我怎样才能在标题上添加覆盖?

答案1

Beamer 以非标准方式评估框架的内容。先评估框架主体,然后再评估框架标题。

以下是您的 MWE 的改编,将效果放在标题中并演示了评估顺序:

\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}

示例代码输出

您必须运行两次才能获得下划线效果。

相关内容