beamer 中标记方程的问题:为什么每次编译后标签的位置都不同?

beamer 中标记方程的问题:为什么每次编译后标签的位置都不同?

我想制作一张beamer包含几个方程的幻灯片,并标记最后一个方程的各个部分。我使用叠加层来实现这一点,因此每次只添加一个方程,并且只标记最后一个方程。

我尝试过一种方法,每次编译文件时,标签的位置都会发生变化。具体来说,每次编译时,标签都会\vspace{0.05cm}向上或\vspace{-0.05cm}向下移动,具体取决于标签是在方程式上方还是下方。我希望这些标签停止自行移动。编译文件约 20 次,您会看到巨大的变化。

我有时也遇到方程式不完全对齐的问题。在下面的例子中,“Max”与方程式的其余部分不对齐。

\documentclass[professionalfonts, smaller]{beamer} 
\usetheme{CambridgeUS}
\usepackage{tikz}
\usepackage{iwona}
\usepackage{amsmath}
\usepackage{mathtools}
\usetikzlibrary{arrows,shapes}
\DeclareMathOperator*{\Max}{Max}

\begin{document}

\tikzstyle{every picture}+=[remember picture]

\everymath{\displaystyle}

\begin{frame}
\frametitle{Slide Title}

\tikzstyle{na} = [baseline=-.5ex]

  \vspace{1cm}
 \hspace{0.0cm} Comment on x \tikz[na] \node[coordinate] (n1) {};
 \hspace{1.25cm} \tikz[na] \node[coordinate] (n2) {}; Comment on p(x)
 \vspace{0.0cm}
 \begin{equation*}
        \hspace{-4.5cm}
        \tikz[overlay, remember picture, baseline]{
             \node[anchor=base](t1){$\Max\limits_x$};
         }
        \tikz[overlay, remember picture, baseline]{
         \node[anchor=base, right of=t1, node distance=30pt](t2){$L(x) =$};
        } 
        \tikz[overlay, remember picture, baseline)]{
            \node[anchor=base, right of=t2, node distance=35pt](t3){$p(x) +$};
        } 
        \tikz[overlay, remember picture, baseline)]{
            \node[anchor=base, right of=t3, node distance=29pt](t4){$\gamma d(x)$};
        }
\end{equation*}

  \vspace{0.4cm}
  \hspace{0cm} Comment on L(x) \tikz[na]\node [coordinate] (n3) {}; \hspace{1.5cm}   Comment on \tikz[na]\node [coordinate] (n4) {}; d(x)

\begin{tikzpicture}[overlay]
    \path[->](n1) edge [bend left] (t1);
    \path[->](n2) edge [bend right] (t3);
    \path[->](n3) edge [bend right] (t2);
    \path[->](n4) edge [bend right] (t4);
\end{tikzpicture}

\end{frame}
\end{document}

答案1

好的,我对文件进行了相当多的精简,但我认为这里有一些更接近你想要的内容:

\documentclass{beamer} 
\usetheme{CambridgeUS}
\usepackage{tikz}
\usetikzlibrary{arrows,shapes}
\DeclareMathOperator*{\Max}{Max}

\tikzstyle{every picture}+=[remember picture]
\newcommand\na[1]{\tikz[baseline=-.5ex]{\node[coordinate] (#1) {};}}
\newcommand\ta[2]{\tikz[baseline]{\node[anchor=base] (#1) {#2};}}

\everymath{\displaystyle}

\begin{document}

\begin{frame}
\frametitle{Slide Title}

Comment on x  \na{n1}
\na{n2} Comment on $p(x)$
\begin{equation*}
        \ta{t1}{$\Max\limits_x$} \ta{t2}{$L(x)$} = \ta{t3}{$p(x)$} + \ta{t4}{$\gamma d(x)$}
\end{equation*}

Comment on L(x) \na{n3}
Comment on \na{n4} $d(x)$

\begin{tikzpicture}[overlay]
    \path[->](n1) edge [bend left] (t1);
    \path[->](n2) edge [bend right] (t3);
    \path[->](n3) edge [bend right] (t2);
    \path[->](n4) edge [bend right] (t4);
\end{tikzpicture}

\end{frame}
\end{document}
  • 我删除了所有\hspace\vspace命令。通常,有比硬编码更好的方法来实现所需的间距。
  • \begin{frame}我对 tikz 节点进行了宏化,仅标记要连接的箭头节点。它使...内的代码\end{frame}更具可读性。
  • 我删除了only<1>{...}部分,因为您说您希望所有内容都显示在一张幻灯片/叠加层中。如果您想要更精美的展示,请再问一个问题。

示例输出

希望有所帮助。

相关内容