我在将 gnuplot 图表纳入 beamer 幻灯片时遇到了问题,该图表应该出现在幻灯片的最末端,而幻灯片上没有其他元素。
问题是,我似乎无法将其用于only
情节gnuplottex
。
到目前为止我已经尝试过:
\documentclass{beamer}
\setbeamercovered{transparent}
\usetheme{AnnArbor} %not my actual theme, just for MWE
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{color}
\usepackage{graphicx}
\usepackage{siunitx}
\usepackage[subfolder,siunitx,cleanup]{gnuplottex}
\begin{document}
\begin{frame}[fragile]{Zeitschritt}
Some text...
\vfill
\onslide<2-4>{
\begin{block}{Zeitschritt als Funktion der Drehrate des Propellers}
\begin{equation}
fancy equation
\end{equation}
\onslide<3-4>{some text to go with it}
\end{block}
}
\onslide<4>{
\begin{block}{Rampenfunktion}
\begin{equation}
even more fancy equation
\end{equation}
\end{block}
}
\only<5>{
\begin{gnuplot}[terminal=epslatex,terminaloptions=color]
set size 0.9,0.8
min(a,b) = (a < b) ? a : b
max(a,b) = (a > b) ? a : b
set yrange[0:6]
set ylabel 'Timestep $\Delta t$ [\si{\degree\per\second}]'
set xrange[0:5]
set xlabel 'Time [\si{\second}]'
set grid
set key box right top spacing 1.3 samplen 3 width -5
set style line 1 lw 3
f(x)= x<1 ? 5 : 5-4*(sin(min(pi*(x-1)/(2*(4-1)),(pi/2))))**2
g(x)= x<1 ? 5 : max(-1.33*x+6.33,1)
plot f(x) ls 1 lc 2 t 'Rampenfunktion $\Delta t = 2...4$',\
g(x) lc 1 t 'Lineare Rampenfunktion';
\end{gnuplot}
}
\end{frame}
\end{document}
如果注释掉该\only<5>{
部分,则它在编译时可以起作用pdflatex --shell-escape
。
如果你不这样做,LaTeX 会告诉你:
Paragraph ended before \verbatim@ was complete.
看起来,该only
命令关闭了fragile
框架的选项,或者只是忽略它,所以我无法gnuplot
在这里进行绘图。
对此有什么想法吗?
答案1
听起来onlyenv
可以成为你的朋友。
\documentclass{beamer}
\setbeamercovered{transparent}
\usetheme{AnnArbor} %not my actual theme, just for MWE
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{color}
\usepackage{graphicx}
\usepackage{siunitx}
\usepackage[subfolder,siunitx,cleanup]{gnuplottex}
\begin{document}
\begin{frame}[fragile]{Zeitschritt}
Some text...
\vfill
\begin{onlyenv}<1-4>
\onslide<2-4>{
\begin{block}{Zeitschritt als Funktion der Drehrate des Propellers}
\begin{equation}
fancy equation
\end{equation}
\onslide<3-4>{some text to go with it}
\end{block}
}
\onslide<4>{
\begin{block}{Rampenfunktion}
\begin{equation}
even more fancy equation
\end{equation}
\end{block}
}
\end{onlyenv}
\begin{onlyenv}<5>
\begin{gnuplot}[terminal=epslatex,terminaloptions=color]
set size 0.9,0.8
min(a,b) = (a < b) ? a : b
max(a,b) = (a > b) ? a : b
set yrange[0:6]
set ylabel 'Timestep $\Delta t$ [\si{\degree\per\second}]'
set xrange[0:5]
set xlabel 'Time [\si{\second}]'
set grid
set key box right top spacing 1.3 samplen 3 width -5
set style line 1 lw 3
f(x)= x<1 ? 5 : 5-4*(sin(min(pi*(x-1)/(2*(4-1)),(pi/2))))**2
g(x)= x<1 ? 5 : max(-1.33*x+6.33,1)
plot f(x) ls 1 lc 2 t 'Rampenfunktion $\Delta t = 2...4$',\
g(x) lc 1 t 'Lineare Rampenfunktion';
\end{gnuplot}
\end{onlyenv}
\end{frame}
\end{document}
答案2
虽然我不知道问题到底是什么,但以下方法似乎有效:替换\only<5>{...}
为\onslide+<5>
(不带{
和}
):
\onslide+<5>
\begin{gnuplot}[terminal=epslatex,terminaloptions=color]
set size 0.9,0.8
min(a,b) = (a < b) ? a : b
max(a,b) = (a > b) ? a : b
set yrange[0:6]
set ylabel 'Timestep $\Delta t$ [\si{\degree\per\second}]'
set xrange[0:5]
set xlabel 'Time [\si{\second}]'
set grid
set key box right top spacing 1.3 samplen 3 width -5
set style line 1 lw 3
f(x)= x<1 ? 5 : 5-4*(sin(min(pi*(x-1)/(2*(4-1)),(pi/2))))**2
g(x)= x<1 ? 5 : max(-1.33*x+6.33,1)
plot f(x) ls 1 lc 2 t 'Rampenfunktion $\Delta t = 2...4$',\
g(x) lc 1 t 'Lineare Rampenfunktion';
\end{gnuplot}
“+” 确保图表不可见,而不是透明的。(不过,透明度看起来并不好,因为透明度基本上只适用于文本,所以图表的一部分总是完全可见的。)