我正在 latex beamer 中创建幻灯片,用于答题器问题。对于每个问题,我希望每次编译时数字都会随机更改,但我希望能够稍后调用变量,以便可以在单独的幻灯片上编写解决方案。例如,我希望 Lim 当 x 变为 1/(xa) 的 a 时,其中 a 是随机的,可以在下一张幻灯片上使用。这可能吗?
答案1
你熟悉 R 吗?如果熟悉,我建议你查找 knitr:
https://yihui.name/knitr/demo/beamer/
http://faculty.washington.edu/gyollin/docs/simpleBeamerKnitrExample.Rnw
每次使用 R 编译它时,如果生成一个随机数,您将获得一个新值。对于一个例子来说,这可能有点夸大其词,但对于更大的项目来说,它可能很有用。之后您可以使用以下方法访问这些值\Sexpr{var_name}
在其创始人谢益辉的网站上可以找到大量的例子。
此代码片段生成一个介于 0 和 10 之间的随机数。由于echo= FALSE
<<echo = FALSE>>=
a <- runif(1,min = 0, to = 10)
@
这是改编自http://faculty.washington.edu/gyollin/docs/simpleBeamerKnitrExample.Rnw
\documentclass{beamer}
\usetheme{Madrid}
\title{MWE for knitr}
\begin{document}
\maketitle
\begin{frame}[fragile]
\frametitle{Generation of a random vector}
No code snippet is displayed.
Slides with code chunks need to be marked as "fragile"
<<echo = FALSE>>=
x <- rnorm(100)
mean.x <- mean(x)
@
\end{frame}
\begin{frame}[fragile]
\frametitle{Displaying the mean of the random vector}
The mean of the random vector is \Sexpr{mean.x}
\end{frame}
\end{document}
答案2
以下示例使用伪随机整数。它们很可能取决于文件本身。更改文件.tex
很可能会更改随机数。您需要将这些数字保存到计数器并记住它们的名称。请参阅http://www.ctan.org/pkg/lcg。
\documentclass{beamer}
\usepackage{amsmath}
\usepackage[first=0, last=127]{lcg}
\newcommand{\setCounterToRandom}[1]{\rand\setcounter{#1}{\arabic{rand}}}
\newcommand{\createNewRandomCounter}[1]{\newcounter{#1}\setCounterToRandom{#1}}
\newcounter{randomA}
\setCounterToRandom{randomA}%assigning a pseudo-random value.
\begin{document}
\begin{frame}
\newcounter{randomB}%works here, too.
\setCounterToRandom{randomB}%works here, too.
\createNewRandomCounter{randomC}%makes things simple.
Random Number A \therandomA
Random Number B \therandomB
Random Number C \therandomC
\begin{align*}
%This example even makes sense, when the random number is eight.
\lim_{\xi \to \therandomA} \frac 1 {\xi-\therandomA}
&\neq \rotatebox[origin=c]{90}{$\therandomA$}
\end{align*}
\end{frame}
\begin{frame}
Random Number A \therandomA
Random Number B \therandomB
Random Number C \therandomC
\setCounterToRandom{randomA}
New Random Number A \therandomA
Old Random Number B \therandomB
Random Number C \therandomC
\end{frame}
\end{document}