我们大学有一个系统,多年来我们在这个系统中编写了数千道题。我们开始使用 Metapost,然后是 PSTricks,然后我们开始使用 tike 和 tkz。我们的代码混合了 perl 和 tex 代码,然后应用一个脚本来生成一个 tex 文件,然后使用以下命令对其进行编译。
latex --shell-escape filename.tex
dvips -o filename-pics.ps filename.dvi
ps2pdf -dAutoRotatePages=/None filename-pics.ps filename-pics.pdf
pdflatex --shell-escape filename.tex
Texlive 2012 运行良好,但 Texlive 2014 的最新更新带来了问题。我们的许多图形将无法再编译并最终出现在我们的 pdf 输出文档中。因此,当我们试图找出问题所在时,我可能会带着许多问题进入 Tex Stack Exchange。我的第一个问题如下。
这是一个最小文件。
\documentclass{article}
\usepackage{amsmath,amssymb}
\usepackage{infwarerr}
\usepackage{ltxcmds}
\usepackage{pst-pdf}
\usepackage{pst-bar}
\usepackage{pst-plot}
\usepackage{pst-tree}
\usepackage{pst-eucl}
\usepackage{pst-solides3d}
\usepackage{pstricks-add}
\usepackage{tkz-euclide,tkz-fct}
\usetkzobj{all}
\usepackage{ifpdf}
%% for metapost graphics
\usepackage{emp}
\ifpdf
\DeclareGraphicsRule{*}{mps}{*}{}
\fi
\setlength{\unitlength}{1cm}
\empTeX{}
\begin{document}
\setlength{\unitlength}{1cm}
\begin{empfile}
\begin{empdef}[raydomain1](4,4)
%initalize parameters;
numeric xa, ya, xb, yb;
xa:=0;
ya:=0;
xb:=5;
yb:=-5;
%initialize scale
numeric u; 10u=w;
%opendotblue macro
def opendotblue(expr pos)=
fill fullcircle scaled 4pt shifted pos withcolor white;
draw fullcircle scaled 4pt shifted pos withcolor blue;
enddef;
%grid
for k=-5u step 1u until 5u:
draw (k,-5u)--(k,5u) withcolor blue;
draw (-5u,k)--(5u,k) withcolor blue;
endfor;
%axes
drawdblarrow (-5u,0)--(5u,0);
label.rt(btex $x$ etex, (5u,0));
drawdblarrow (0,-5u)--(0,5u);
label.top(btex $y$ etex, (0,5u));
%scale
label.lft(btex $5$ etex, (0,5u));
label.top(btex $5$ etex, (5u,0));
%draw ray
path p;
p:=((xa,ya)--(xb,yb)) scaled u;
pickup pencircle scaled 1pt;
drawarrow p withcolor blue;
pickup defaultpen;
opendotblue((xa,ya) scaled u);
label.rt(btex $f$ etex, (xb,yb) scaled u);
\end{empdef}
\end{empfile}
\immediate\write18{mpost \jobname}
\empuse{raydomain1}
\end{document}
我们将此文件另存为 filename.tex。然后前两个命令就可以正常工作了。
latex --shell-escape filename.tex
dvips -o filename-pics.ps filename.dvi
但是,第三条命令:
ps2pdf -dAutoRotatePages=/None filename-pics.ps filename-pics.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 1900 1 3 %oparray_pop 1899 1 3 %oparray_pop 1883 1 3 %oparray_pop 1771 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:132/200(L)-- --dict:787/1012(L)-- --dict:183/300(L)--
Current allocation mode is local
Last OS error: Invalid argument
Current file position is 447402
GPL Ghostscript 9.10: Unrecoverable error, exit code 1
现在,如果我们注释两行,即:
%\usepackage{tkz-euclide,tkz-fct}
%\usetkzobj{all}
然后这个错误就消除了。那么,有什么变化吗?
这是第二个示例:
\documentclass{article}
\usepackage{amsmath,amssymb}
\usepackage{pst-pdf}
\usepackage{pst-bar}
\usepackage{pst-plot}
\usepackage{pst-tree}
\usepackage{pst-eucl}
\usepackage{pst-solides3d}
\usepackage{pstricks-add}
\usepackage{tkz-euclide,tkz-fct}
\usetkzobj{all}
\begin{document}
\begin{center}
\psset{unit=0.4in}
\begin{pspicture}(-1,-1)(6.5,6)
\psgrid[gridlabels=0pt,subgriddiv=1,gridcolor=lightgray](0,0)(0,0)(5,5)
\psaxes[arrows=->,arrowscale=1.5,ticks=none,labels=none](0,0)(0,0)(5.3,5.3)
\uput[0](5.3,0){$x$}
\uput[270](5,0){5}
\uput[270](0,0){0}
\uput[180](0,5){5}
\uput[180](0,0){0}
\uput[90](0,5.3){$y$}
\psdot*[linecolor=red,dotsize=3pt 3](2,2)
\uput[45](2,2){$P$}
\end{pspicture}
\end{center}
\end{document}
现在,这三个命令:
latex --shell-escape filename.tex
dvips -o filename-pics.ps filename.dvi
ps2pdf -dAutoRotatePages=/None filename-pics.ps filename-pics.pdf
生成一个空白文件 filename-pics.pdf。
现在,我再次评论以下几行:
%\usepackage{tkz-euclide,tkz-fct}
%\usetkzobj{all}
然后,这三个命令:
latex --shell-escape filename.tex
dvips -o filename-pics.ps filename.dvi
ps2pdf -dAutoRotatePages=/None filename-pics.ps filename-pics.pdf
生成包含所需图像的文件 filename-pics.pdf。
注意:我知道有些人可能会立即开始建议更好的方法(它们现在确实存在,但可能在我们多年前开始时不存在),所以我们必须保持我们的系统保持不变,因为有太多的文件是我们无法重写的。
那么,发生了什么事:
\usepackage{tkz-euclide,tkz-fct}
\usetkzobj{all}
我在用:
\ProvidesPackage{tkz-fct}[2014/03/13 1.19 c function ]
大卫