tikz 中的 beamer 和 rand 组合存在的问题

tikz 中的 beamer 和 rand 组合存在的问题

运行随附的 MWE 时,我的问题是乍一看(至少我希望如此):我想将每个可见步骤的各种单词放在幻灯片上的随机位置。但如果放置了一个单词,我需要它留在原处。我该如何实现这一点?提前谢谢!

\documentclass{beamer}
\usepackage{tikz}
\newcommand{\TikZsetword}[1]{%
   \visible<+->{%
   \pgfmathrand
   \let\x=\pgfmathresult
   \pgfmathrand
   \let\y=\pgfmathresult
   \node at (\x*3cm,\y*2cm) {#1};
   }
}
\begin{document}
\begin{frame}{foo}
\begin{tikzpicture}
 \TikZsetword{Rauschleistungsdichte}
 \TikZsetword{Rauschtemperatur}
 \TikZsetword{Rauschzahl}
\end{tikzpicture}
\end{frame}
\end{document}

答案1

pgfmathfunctions.random.code.tex我们知道\pgfmath@rnd@z存储当前数字。所以我们可以写

\makeatletter
\def\pgfmathsaveseed{
    \xdef\pgfmath@savedseed{\pgfmath@rnd@z}
}
\def\pgfmathloadseed{
    \xdef\pgfmath@rnd@z{\pgfmath@savedseed}
}

并测试它

\begin{frame}{first test}
    \begin{itemize}
        \item \pgfmathgeneratepseudorandomnumber\pgfmathresult
    \pgfmathsaveseed
        \item \pgfmathgeneratepseudorandomnumber\pgfmathresult ~-~-~-~should be
        \item \pgfmathgeneratepseudorandomnumber\pgfmathresult
        \item \pgfmathgeneratepseudorandomnumber\pgfmathresult
    \pgfmathloadseed
        \item \pgfmathgeneratepseudorandomnumber\pgfmathresult ~-~-~-~the same
        \item \pgfmathgeneratepseudorandomnumber\pgfmathresult
        \item \pgfmathgeneratepseudorandomnumber\pgfmathresult
    \pgfmathloadseed
        \item \pgfmathgeneratepseudorandomnumber\pgfmathresult ~-~-~-~as here
    \end{itemize}
\end{frame}

接下来我们想在每张幻灯片的开头使用它,所以

\def\beamerframeseed{
    \only<1>{\pgfmathsaveseed}
    \only<2->{\pgfmathloadseed}
}
\begin{frame}{second test}
    \beamerframeseed
    \begin{itemize}[<+->]
        \item \pgfmathgeneratepseudorandomnumber\pgfmathresult
        \item \pgfmathgeneratepseudorandomnumber\pgfmathresult
        \item \pgfmathgeneratepseudorandomnumber\pgfmathresult
        \item \pgfmathgeneratepseudorandomnumber\pgfmathresult
    \end{itemize}
\end{frame}

注意1438536715再次出现。这必定会发生。

现在回到你的问题

\begin{frame}{foo}
    \beamerframeseed
    \begin{tikzpicture}
        \TikZsetword{Rauschleistungsdichte}
        \TikZsetword{Rauschtemperatur}
        \TikZsetword{Rauschzahl}
        \TikZsetword{Rauschspannung}
    \end{tikzpicture}
    \end{frame}
\end{document}

相关内容