运行随附的 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}