我曾经使用该类pstricks
和beamer
覆盖语法(例如使用\only<2>{<some pstricks code>}
)制作动画图片standalone
。
这里有一个完成这项工作的 MWE:
\documentclass[beamer,pstricks,preview=true]{standalone}
\standaloneenv{{pspicture}}
\psset{unit=2cm}
\begin{document}
\begin{standaloneframe}
\begin{pspicture}[showgrid=bottom](-5,-5)(5,5)
\psdot(0,0)
\only<2>{\psdot(1,1)}
\end{pspicture}
\end{standaloneframe}
\end{document}
此 MWE 确实可以使用 texlive2013 (iso 版本) 进行编译latex -> dvips -> ps2pdf
:一个包含两页的 pdf,并且只有 pspictures 环境被正确裁剪。但是,它无法使用完全更新的 texlive2013 发行版进行编译,从 ps 到 pdf 的转换失败,并显示以下消息:
Error: /typecheck in --div--
Operand stack:
1 1 0.0 0.0 a 65781.8
Execution stack:
%interp_exit .runexec2 --nostringval-- --nostringval--
--nostringval-- 2 %stopped_push --nostringval-- --nostringval--
--nostringval-- false 1 %stopped_push 1910 1 3 %oparray_pop
1909 1 3 %oparray_pop 1893 1 3 %oparray_pop 1787 1 3
%oparray_pop --nostringval-- %errorexec_pop .runexec2
--nostringval-- --nostringval-- --nostringval-- 2 %stopped_push
--nostringval-- --nostringval-- --nostringval-- --nostringval-- 4
--nostringval-- %repeat_continue --nostringval--
Dictionary stack:
--dict:1168/1684(ro)(G)-- --dict:0/20(G)-- --dict:127/200(L)--
--dict:173/300(L)--
Current allocation mode is local
Last OS error: 2
Current file position is 101382
GPL Ghostscript 9.05: Unrecoverable error, exit code 1
此代码确实通过删除preview
包进行了编译,但结果并非预期。我也尝试使用包preview
选项进行激活standalone
,但这也没有效果。
有人知道如何解决这个问题,或者如何修改 MWE 以便它编译并给出正确的输出?
答案1
因此,经过多次尝试和错误,我还是无法找出为什么此代码不再适用于更新的 TexLive 发行版。不过,我找到了一种解决方法。
似乎不知何故preview
包和pstricks
不再一起出现。因此,解决方法是停用standalone
包的预览选项。这样就不会再出现编译错误,但结果不是预期的。实际上,standaloneframe
环境会覆盖指令\standaloneenv{{pspicture}}
,以便裁剪到的尺寸standaloneframe
而不是的尺寸pspicture
。使用geometry
包允许设置的尺寸,standonealoneframe
以便它们与的尺寸相匹配,从而pspicture
解决了问题:
\documentclass[beamer,pstricks,preview=false]{standalone}
\geometry{paperheight=20cm,paperwidth=20cm,left=0cm,right=0cm,bottom=0cm,top=0cm}
\psset{unit=2cm}
\begin{document}
\begin{standaloneframe}%
\begin{pspicture}[showgrid=bottom](-5,-5)(5,5)
\psdot(0,0)
\only<2>{\psdot(1,1)}
\end{pspicture}%
\end{standaloneframe}
\end{document}