我有一个 pspicture,涉及来自 psvectorian 包的装饰品:
\begin{pspicture}(0mm,10mm)(0mm, 10mm)
\rput[tl](5mm,5mm){\psvectorian[height=5mm]{10}}
\end{pspicture}
我在长文档的每一页中多次使用此代码片段。就目前而言,我已将其制作成宏并在需要装饰的任何地方执行它,但编译速度非常慢,并且容易出现渲染错误。每次编译时,一些图形都会被随机转置或反映到其他地方,下次编译时会修复这些问题,而其他地方会出现其他问题,因此我最终编译了几次并将正确渲染的页面拼接在一起。
我确信有更好的方法可以做到这一点,但不知道该怎么做。
答案1
根据我的评论添加答案:
比较以下两个文档编译所需的时间:
有盒子
\documentclass[]{article}
\usepackage{pstricks}
\usepackage{psvectorian}
\newsavebox\MyPSbox
\sbox\MyPSbox
{%
\begin{pspicture}(0mm,10mm)(0mm, 10mm)
\rput[tl](5mm,5mm){\psvectorian[height=5mm]{10}}
\end{pspicture}%
}
\newcommand*\mypspic{\usebox\MyPSbox}
\newcounter{testcount}
\begin{document}
\loop\ifnum\value{testcount}<100
\stepcounter{testcount}%
\mypspic\par
\repeat
\end{document}
不带盒子
\documentclass[]{article}
\usepackage{pstricks}
\usepackage{psvectorian}
\newcommand*\mypspic
{%
\begin{pspicture}(0mm,10mm)(0mm, 10mm)
\rput[tl](5mm,5mm){\psvectorian[height=5mm]{10}}
\end{pspicture}%
}
\newcounter{testcount}
\begin{document}
\loop\ifnum\value{testcount}<100
\stepcounter{testcount}%
\mypspic\par
\repeat
\end{document}
在我的计算机上,盒装版本花了 0.18 秒来编译,而后一个版本花了 0.42 秒。
答案2
\documentclass{article}
\usepackage{pstricks}
\usepackage{psvectorian}
\newsavebox\PSBox
\sbox\PSBox{\rule{0pt}{5mm}%
\rput[tl](5mm,5mm){\psvectorian[height=5mm]{10}}}
\begin{document}
\psforeach{\iA}{1,2,..,100}{\usebox\PSBox\par}
\end{document}
仅有的latex
:
实际 0m0,487s 用户 0m0,403s 系统 0m0,049s
附加 ? dvips and
ps2pdf`
实际 0m1,311s 用户 0m1,004s 系统 0m0,102s