diff options
author | Karl Berry <karl@freefriends.org> | 2011-12-15 02:01:37 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2011-12-15 02:01:37 +0000 |
commit | 45b9ab369ae1508758c6596c963db163fbb9700a (patch) | |
tree | aa551a8e6fa82166ea3675889b143abf6a3c8d90 /Master/texmf-dist | |
parent | c036275403fa8fef1df0533f4d48ef8cf2288401 (diff) |
pst2pdf (13dec11)
git-svn-id: svn://tug.org/texlive/trunk@24845 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r-- | Master/texmf-dist/doc/latex/pst2pdf/Changes | 3 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/pst2pdf/pst2pdf-doc.pdf | bin | 73142 -> 57818 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/pst2pdf/pst2pdf-doc.tex | 60 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/pst2pdf/test.pdf | bin | 0 -> 68528 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/pst2pdf/test.tex | 408 | ||||
-rwxr-xr-x | Master/texmf-dist/scripts/pst2pdf/pst2pdf | 495 |
6 files changed, 729 insertions, 237 deletions
diff --git a/Master/texmf-dist/doc/latex/pst2pdf/Changes b/Master/texmf-dist/doc/latex/pst2pdf/Changes index afe13167e70..c5cdd174931 100644 --- a/Master/texmf-dist/doc/latex/pst2pdf/Changes +++ b/Master/texmf-dist/doc/latex/pst2pdf/Changes @@ -1,5 +1,6 @@ pst2pdf.pl -------- -0.12 2011-01-19 - new optional arguments for runninh +0.13 2011-12-12 - some more improvements to the code +0.12 2011-01-19 - new optional arguments for running bibtex or biber 0.11 2010-10-03 - use graphicspath instead of $imageDir to allow working with Windows diff --git a/Master/texmf-dist/doc/latex/pst2pdf/pst2pdf-doc.pdf b/Master/texmf-dist/doc/latex/pst2pdf/pst2pdf-doc.pdf Binary files differindex ff8111a0aeb..be11194109e 100644 --- a/Master/texmf-dist/doc/latex/pst2pdf/pst2pdf-doc.pdf +++ b/Master/texmf-dist/doc/latex/pst2pdf/pst2pdf-doc.pdf diff --git a/Master/texmf-dist/doc/latex/pst2pdf/pst2pdf-doc.tex b/Master/texmf-dist/doc/latex/pst2pdf/pst2pdf-doc.tex index 5d98d2d9088..c0b893bc843 100644 --- a/Master/texmf-dist/doc/latex/pst2pdf/pst2pdf-doc.tex +++ b/Master/texmf-dist/doc/latex/pst2pdf/pst2pdf-doc.tex @@ -16,9 +16,8 @@ \begin{document} \title{\texttt{pst2pdf}} -\subtitle{Running a PSTricks document with pdflatex and \nxLPack{pst-exa};\\ -\small v.\pstFV} -\author{Herbert Vo\ss} +\subtitle{Running a PSTricks document with pdflatex;\\ \small v. 0.13} +\author{Herbert Vo\ss \\ Pablo Gonzales Luengo} \docauthor{} \date{\today} \maketitle @@ -30,16 +29,17 @@ \begin{abstract} \noindent \Lprog{pst2pdf} is a Perl script for running a PSTricks document in a last run -with pdflatex. \LPack{pst-exa} is a package that supports the printing of -code and output of PSTricks examples when running in pdf mode. +with pdflatex. +%\LPack{pst-exa} is a package that supports the printing of +%code and output of PSTricks examples when running in pdf mode. \vfill\noindent -Thanks to: \\ -Pablo Gonzales Luengo; +Thanks to: Rolf Niepraschk \end{abstract} +\clearpage \section{Introduction} \PST as \PS-related package uses the programming language \PS for internal @@ -86,7 +86,7 @@ After the \Lprog{pst2pdf} run there exists a pdf file called \texttt{\Lcs{jobnam the \Loption{--clear} option also the corresponding \TeX{} file \texttt{\Lcs{jobname}-pdf.tex}. The preamble of the document should contain all code which is important to the \PST code. -\section{\PST code} +\section{\PST\ code} The per scripts scans the files for \Lenv{pspicture} and \Lenv{postscript} environments, which are then taken with its contents from the main file to create stand alone documents with the same preamble as the main document. The \Lenv{pspicture} environment can be nested, @@ -94,6 +94,21 @@ the \Lenv{postscript} one not! But it can contain an environment \Lenv{pspicture The \Lenv{postscript} environment should always be used, when there is some code before a \Lenv{pspicture} environment or for some code which is not inside of a \Lenv{pspicture} environment. + +\bgroup +\raggedright +\nocite{*} +\bibliographystyle{plain} +\bibliography{pst2pdf-doc} +\egroup + +\printindex + + +\end{document} + + + \section{The package \nxLPack{pst-exa}} The package \LPack{pst-exa} was created to realize examples with printed code and output side by side or on top of each other. The package looks in the image directory for the source @@ -117,8 +132,14 @@ arguments listed in Table~\ref{pst-exaoptions}. \end{tabularx} \end{table} + + + + + + \section{Examples} -The package contains some example files for uning the script without and +The package contains some example files for running the script without and with the package \LPack{pst-exa}. \begin{compactdesc} @@ -127,24 +148,9 @@ with the package \LPack{pst-exa}. \item[test3.tex] another example \end{compactdesc} -\section{List of all optional arguments for \texttt{pst-exa}} - -\xkvview{family=pst-exa,columns={key,type,default}} - - - - -\bgroup -\raggedright -\nocite{*} -\bibliographystyle{plain} -\bibliography{pst2pdf-doc} -\egroup - -\printindex - - +%\section{List of all optional arguments for \texttt{pst-exa}} +% +%\xkvview{family=pst-exa,columns={key,type,default}} -\end{document} diff --git a/Master/texmf-dist/doc/latex/pst2pdf/test.pdf b/Master/texmf-dist/doc/latex/pst2pdf/test.pdf Binary files differnew file mode 100644 index 00000000000..8ffafa7a152 --- /dev/null +++ b/Master/texmf-dist/doc/latex/pst2pdf/test.pdf diff --git a/Master/texmf-dist/doc/latex/pst2pdf/test.tex b/Master/texmf-dist/doc/latex/pst2pdf/test.tex new file mode 100644 index 00000000000..c664fb0a0d7 --- /dev/null +++ b/Master/texmf-dist/doc/latex/pst2pdf/test.tex @@ -0,0 +1,408 @@ +\documentclass{article} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{textcomp} +\usepackage{lmodern} +\usepackage[dvipsnames]{xcolor} +\usepackage{pst-solides3d} +\usepackage{psgo} +\usepackage{pst-text} +\usepackage{pst-blur} +\usepackage[tiling]{pst-fill} +\usepackage{pst-calendar} +\usepackage{pst-eucl} +\usepackage{pst-labo} +\usepackage{pst-3d} +\usepackage{psfrag} +\usepackage{pst-bar} +\usepackage{pst-barcode} +\usepackage{pst-gr3d} +\usepackage{pst-ob3d} +\usepackage{pst-3dplot} +\usepackage{pst-tree} +\usepackage{pst-coil} +\usepackage{pst-bezier} +\usepackage{pst-coxeterp} +\usepackage{pst-circ} +\usepackage{pst-func} +\usepackage{pstricks-add} +\usepackage{pst-plot,pst-math} +\usepackage{pst-slpe} +\usepackage{pst-fr3d} +\usepackage{vaucanson-g} +\usepackage{blindtext} +\usepackage{multido} +\usepackage{pst-grad} +\usepackage{pstricks-add} +%\usepackage[pspdf={-dPDFSETTINGS=/prepress}]{auto-pst-pdf} +\begin{document} +A test for pst2pdf ... +\texttt{blindtext,pst-node} +\begin{postscript} +\SpecialCoor +\rnode{A}{The beginning of it all:} +\blindtext +\rnode{E}{And this is the end my friend.} +\nccurve[linewidth=5pt,strokeopacity=0 .4,ncurvB=0.9,arrowscale=1.5,arrows=->]{A}{E} +\end{postscript} + +\texttt{pstricks-add} +\begin{pspicture}(-0.04,-0.04)(1,1) +\psset{unit=5} +\psgrid[subgriddiv=5,subgridcolor=lightgray] +\psplotDiffEqn[whichabs=0,whichord=1,linecolor=red, +method=rk4,algebraic,plotpoints=400, +showpoints=true]{0}{10}{0 0}% +{cos(Pi*x^2/2)|sin(Pi*x^2/2)} +\end{pspicture} + +\texttt{pst-solides3d} +\begin{pspicture}[solidmemory](-4,-5)(7,4) +\psset{viewpoint=50 -40 10 rtp2xyz,Decran=50, +linecolor=darkgray,lightsrc=viewpoint} +\psSolid[object=grille,action=draw,base=-3 5 -3 5, +linecolor=Salmon!40](0,0,-3) +\psSolid[object=cylindre,r=2,h=6,ngrid=6 24, +plansepare={[0.707 0 0.707 0]},name=Zylinder, +action=none](0,0,-3) +\psSolid[object=load,load=Zylinder1, +fillcolor=black!5,fcol=0 (Goldenrod)] +\psSolid[object=load,load=Zylinder0,RotZ=90, +fillcolor=black!5,rm=0,hollow,incolor=Goldenrod](0,4,0) +\psSolid[object=plan,action=draw,definition=equation, +args={[0.707 0 0.707 0] 90},base=-2 2 -3 3,planmarks] +\psSolid[object=line,args=0 0 0 0 5.5 0, +linecolor=blue]% first half of y axis +\color{white}\axesIIID[showOrigin=false, +linecolor=blue](0,6.8,0)(3.5,8,3.5) +\end{pspicture} + +\texttt{pstricks} +\begin{postscript} +\psset{unit=0.05mm}% 1:20,or=0.1mm for 1:10 +\begin{pspicture}(-100,-100)(1000,650) +\pspolygon[linewidth=2pt,fillcolor=gray!10, +fillstyle=solid](0,0)(0,470)(860,625)(860,0) +\psset{linewidth=0.2pt,arrowscale=2,tbarsize=10pt} +\psline{|<->|}(0,-100)(860,-100) +\rput*(430,-100){430mm} +\psline{|<->|}(960,0)(960,625) +\rput*{90}(960,312.5){625mm} +\psline{|<->|}(-100,0)(-100,470) +\rput*{90}(-100,235){470mm} +\end{pspicture} +\end{postscript} + +\texttt{pstricks, pst-node, and pst-plot} +\begin{pspicture}(-1,-3)(4.75,3) +\psscalebox{0.75}{ +\psaxes{->}(0,0)(-1,-3)(5,3) +\psplot[polarplot,linewidth=2pt,algebraic, +plotpoints=500]{0}{6.289}{2*(1+cos(x))} +\multido{\r=0.000+0.314}{21}{ % +\psplotTangent[polarplot,Derive=-2*sin(x), +algebraic,arrows=<->]{\r}{1.5}{2*(1+cos(x))}} +} +\end{pspicture} + +\texttt{pst-plot} +\begin{pspicture}[showgrid=true](-1.1,-1.1)(1.1,1.1) +\psset{xunit=1.5cm,yunit=1.5cm} +\psparametricplot[plotstyle=curve,linewidth=1.5pt, +plotpoints=200]{-360}{360}% +{t 1.5 mul sin t 2 mul 60 add sin} +\end{pspicture} + +\texttt{pst-tree} +\begin{postscript} +\pstree[levelsep=1cm,radius=3pt]{\Toval{Wurzel}}{% +\pstree{\TC}{% +\TC +\pstree{\TC*}{\TC\TC\TC\TC}% +\TC\TC}} +\end{postscript} + +\texttt{pst-bezier} +\begin{pspicture}[showgrid=true](5,3) +\psset{showpoints=true} +\psbcurve[linecolor=blue,linewidth=0.01](1,1)% +(2,2)(3,1)(4,2) +\psbcurve(1,1)(2,2)l(2,1)(3,1)(4,2) +\uput[-90](2,1){$\vec{l}_{2}$} +\end{pspicture} + +\texttt{pst-text} +\begin{pspicture}(0,0)(.25\linewidth,8) +\DeclareFixedFont{\ps}{U}{psy}{m}{n}{8cm} +\psboxfill{\footnotesize$\pi$} +\pscharpath[fillstyle=solid, +fillcolor=cyan!20, +addfillstyle=boxfill,fillangle=30, +fillsep=0.6mm]{% +\rput[b](-0.5,0){\ps\char112}} +\end{pspicture} + +\texttt{pst-fill} +\begin{postscript} +\psset{unit=1.5,dimen=middle} +\begin{pspicture*}(3,3) +\psboxfill{\begin{pspicture}(1,1) +\psframe(1,1)\end{pspicture}} +\psframe[fillstyle=boxfill](3,3) +\psboxfill{\begin{pspicture}(1,1) +\rput{-37}{\psframe[linecolor=red](0.8,0.8)} +\end{pspicture}} +\psframe[fillstyle=boxfill](3,4) +\pspolygon[fillstyle=hlines,hatchangle=90](1,2)(1.64,1.53)(2,2) +\end{pspicture*} +\end{postscript} + + +\texttt{pst-coils} +\begin{pspicture}(4,3) +\cnode*(0.5,0.5){0.5}{A} +\cnode*(3.5,2.5){0.5}{B} +\pccoil[coilwidth=0.4,coilaspect=35,coilheight=0.5,linecolor=white]{<->}(A)(B) +\nccoil[coilwidth=0.4,coilaspect=35,coilheight=0.5]{A}{B} +\end{pspicture} + + +\texttt{pst-grad} +\begin{pspicture}(5,3.5) +\psframe[fillstyle=gradient,gradbegin=white](5,1.5) +\newrgbcolor{gradbegin}{0 1 1} +\psframe[fillstyle=gradient](0,2)(5,3.5) +\end{pspicture} + +\texttt{pst-slpe} +\begin{pspicture}(2.5,2.5) +\def\st#1{\makebox[2.75cm]{$\vcenter to 55pt{}#1$}} +\psset{fading,endfading=0.75,linecolor=black!40} +\psframe*(-0.3,-0.25)(3.5,20pt) +\psframebox[fillstyle=slope]{\LARGE\st{slope}} +\end{pspicture} + +\texttt{pst-blur} +\begin{postscript} +\DeclareFixedFont{\RM}{T1}{ptm}{b}{n}{1.75cm} +\psset{shadow=true,blur=true,shadowsize=10pt,blurradius=5pt} +\pscharpath{\RM PSTricks} +\end{postscript} + +\texttt{pst-3d} + +\begin{pspicture}(-4.5,-3)(3,4.75) +\psset{viewpoint=1 1.5 0.8} +{\psset{gridlabels=0pt,subgriddiv=0,gridcolor=black!50} +\ThreeDput[normal=0 0 1]{\psgrid(5,5)} +\ThreeDput[normal=0 -1 0] {\ psgrid(5,5)} +\ThreeDput[normal=1 0 0]{\psgrid(5,5)}} +\ThreeDput[normal=0 0 1] {% +\psline[linewidth=3pt,linecolor=blue]{->}(4,4)(4,5.5) +\uput[90](4,5.5){% +\psrotateleft{\textcolor{blue}{$\vec{n}_A$}}}}%$%xy +\ThreeDput[normal=0 -1 0]{% +\psline[linewidth=3pt,linecolor=green]{->}(4,0)(5.5,0) +\uput[90](5.5,0){ \ psscalebox{-1 1}{% +\textcolor{green}{$\vec{n}_B$}}}}%$%xz +\ThreeDput[normal=1 0 0]{% +\psline[linewidth=3pt,linecolor=red]{->}(0,4)(0,5.5) +\uput[0](0,5.5){$\vec{n}_{top}$}} %yz +\ThreeDput[normal=0 0 1] (0,0,4){% +\psframe*[linecolor=gray!25] (4,4) +\rput(2,2){\Huge\textbf{TOP}}} +\ThreeDput[normal=0 1 0](4,4,0){% +\psframe*[linecolor=gray!5](4,4) +\rput(2,2){\Huge\textbf{side A}}} +\ThreeDput[normal=1 0 0] (4,0,0){% +\psframe*[linecolor=gray!15](4,4) +\rput(2,2){\Huge\textbf{side B}}} +% Die kleinen Achsen +\ThreeDput[normal=0 0 1](0,0,4){% +\psline(4,0)\uput[90](3,0){X$_{top}$} +\psline(0,4)\uput[0] (0,3){Y$_{top}$}} +\ThreeDput[normal=0 1 0](4,4,0){% +\psline(4,0)\uput[90](3,0){X$_{A}$} +\psline(0,4)\uput[0] (0,3){Y$_{A}$}} +\ThreeDput[normal=1 0 0] (4,0,0){% +\psline(4,0)\uput[90](3,0){X$_{B}$} +\psline(0,4)\uput[0](0,3){Y$_{B}$}} +\end{pspicture} + +\texttt{pst-ob3d} +\begin{pspicture}(-1,-0.5)(3,1.7) +\psset{fillstyle=solid,fillcolor=yellow,RandomFaces=true} +\PstDie[viewpoint=1 -3 1] +\rput(1.5,0){\PstCube[Corners=true,CornersColor=blue, +fillstyle=solid,fillcolor=cyan,viewpoint=1 2 1] +{1}{1}{1}} +\end{pspicture} + +\texttt{pst-gr3d} +\begin{postscript} +\psscalebox{0.5}{\footnotesize +\PstGridThreeD[GridThreeDNodes,unit=2.5](2,3,2) +\multido{\ix=0+1}{3}{% +\multido{\iy=0+1}{4}{% +\multido{\iz=0+1}{3}{% +\rput*(Gr3dNode\ix\iy\iz){$\ix\iy\iz$}}}} +\psset{linecolor=blue,linestyle=dashed, +linewidth=0.3pt,arrowscale=2,nodesep=8pt} +\pcline{->}(Gr3dNode000)(Gr3dNode202) +\pccurve{->}(Gr3dNode000)(Gr3dNode232)} +\end{postscript} + +\texttt{pst-fr3d} +\begin{postscript} +\PstFrameBoxThreeD[FrameBoxThreeDOn=false] +{\Large Off} +\quad +\PstFrameBoxThreeD{\Large On}% default +\end{postscript} + +\texttt{pst-3dplot} +\begin{pspicture}(-4.8,-1.75)(4.8,3.75) +\psset{unit=4cm,drawCoor,beginAngle=90,endAngle=180,linestyle=dotted} +\def\oA{\pstThreeDLine[linecolor=blue,linewidth=3pt, +arrows=c-> ](0,0,0)(1,60,70)} +\def\oB{\pstThreeDLine[linecolor=red,linewidth=3pt, +arrows=c->](0,0,0)(1,10,50)} +\def\oAB{\pstThreeDEllipse[beginAngle=58, +endAngle=90](0,0,0)(1,140,40)(1,10,50)} + +\pstThreeDCoor[drawing,linewidth=1pt,linecolor=black, +linestyle=solid,xMin=0,xMax=1.1,yMin=0,yMax=1.1, +zMin=0,zMax=1.1] +\pstThreeDEllipse(0,0,0)(-1,0,0)(0,1,0) +\pstThreeDEllipse(0,0,0)(-1,0,0)(0,0,1) +\pstThreeDEllipse[beginAngle=0, +endAngle=90](0,0,0)(0,0,1)(0,1,0) +\psset{SphericalCoor,linestyle=solid} +\pstThreeDDot[dotstyle=none](1,10,50) +\pstThreeDDot[dotstyle=none](1,60,70) +\pscustom[fillstyle=solid,fillcolor=black!20, +linestyle=none]{\oB\oAB\oA} \oA\oB\oAB +\pstThreeDPut[origin=lb](1.1,60,70){$\vec\Omega_1$} +\pstThreeDPut[origin=rb](1.2,10,50){$\vec\Omega_2$} +\pstThreeDPut[origin=lb](1,10,65){$\gamma_{12}$} +\end{pspicture} + +\texttt{pst-solides3d} +\begin{pspicture}(-2,-2)(2,2) +\psset{viewpoint=100 50 20 rtp2xyz, +Decran=60,lightsrc=10 15 10} +\defFunction[algebraic]{corne}(u,v)% +{(2 + u*cos(v))*sin(2*pi*u)}% +{(2 + u*cos(v))*cos(2*pi*u)+2*u}% +{u *sin(v)} +\psSolid[object=surfaceparametree,base=0 1 0 2 pi mul,function=corne,ngrid=20] +\end{pspicture} + +\texttt{pst-circ} +\begin{pspicture}(4,3.5) +\pnode(0,3){A}\pnode(0,0){B} +\pnode(4,1.5){C} +\OA[OAperfect=false,OAiplus, +OAiminus,OAiout, +OAipluslabel=$i_P$, +OAiminuslabel=$i_M$, +OAioutlabel=$i_A$, +intensitycolor=red, +intensitylabelcolor=red](A)(B)(C) +\end{pspicture} + + + +\texttt{pst-barcode} +\begin{postscript} +\psframebox{\begin{pspicture}(2.5,1in) +\psbarcode{12345678}{includetext}{ean8} +\end{pspicture}} +\end{postscript} + +\texttt{pst-bar} +\begin{postscript} +\psset{unit=0.5in}% +\begin{pspicture}(0,-0.5)(3,4.5)% +\psgrid[xunit=1.5in,gridlabels=0,% +subgriddiv=0,griddots=30](0,0)(1,4)% +\psaxes[axesstyle=frame,Ox=0,Dx=1,labels=y,% +ticks=y](0,0)(3,4)% +\readpsbardata{\data}{example2.csv}% +\psbarchart[barstyle={red,blue}]{\data}% +\end{pspicture} +\end{postscript} + +\texttt{pst-math} +\begin{pspicture*}(-0.75,-.75)(6,5) +\psaxes{->}(6,5) +\psset{linewidth=1.5pt,plotpoints=200} +\psplot{.1}{6}{x GAMMA} +\psplot{.1}{6}{x GAMMALN} +\end{pspicture*} + +\texttt{pst-func} +\begin{pspicture*}(-3,-2.2)(3.6,2.5) +\psaxes{->}(0,0)(-3,-2)(3.2,2)[$x$,0][$y$,90] +\psplotImp[linewidth=2pt,algebraic](-5,-2.2)(5,2.4){% +(x^2+y^2)^2-8*(x^2-y^2)} +\rput*(2,1.5){$\left(x^2+y^2\right)^2-8(x^2-y^2)=0$} +\psplotImp[linewidth=1pt,linecolor=red, +algebraic](-5,-2.2)(5,2.4){(x^2+y^2)^2-4*(x^2-y^2)} +\end{pspicture*} + +\texttt{pst-eucl} +\begin{postscript} +\pstGeonode[PosAngle={0,90}](2,2){A_0}(-2,2){B_0}% +\psset{RotAngle=90} +\pstRotation[PosAngle=270]{A_0}{B_0}[D_0] +\pstRotation[PosAngle=180]{D_0}{A_0}[C_0] +\pspolygon(A_0)(B_0)(C_0)(D_0)% +\psset{PointSymbol=none, PointName=none, HomCoef=.2} +\multido{\n=1+1,\i=0+1}{20}{% +\pstHomO[PosAngle=0]{B_\i}{A_\i}[A_\n] +\pstHomO[PosAngle=90]{C_\i}{B_\i}[B_\n] +\pstHomO[PosAngle=180]{D_\i}{C_\i}[C_\n] +\pstHomO[PosAngle=270]{A_\i}{D_\i}[D_\n] +\pspolygon(A_\n)(B_\n)(C_\n)(D_\n)}% fin multido +\end{postscript} + +\texttt{pst-labo} +\begin{postscript} +\psset{unit=0.5cm, +glassType=becher, +burette=false} +\pstDosage[phmetre] +\end{postscript} + +\texttt{psgo} +\begin{postscript} +\psscalebox{0.7}{% +\begin{psgopartialboard}[9]{(4,1)(9,6)} +\stone{white}{c}{3} \stone{white}{e}{3} +\stone{white}{d}{2} \stone{white}{d}{4} +\stone{black}{f}{3} \stone{black}{e}{2} +\stone{black}{e}{4} +\end{psgopartialboard}} +\end{postscript} + +\texttt{vaucanson-g} +\begin{postscript} +\begin{VCPicture}{(0,-2)(5.5,2)} +\State[p]{(0,0)}{A} \State{(2.5,0)}{B} +\State[r]{(5.5,0)}{C}\Initial{A} \Final{C} +\EdgeL{A}{B}{a} \ArcL{B}{C}{b} +\ArcL{C}{B}{b} \LoopN{A}{a} \LoopS{C}{d} +\end{VCPicture} +\end{postscript} + +Example for PSFRAG (from auto-pst-pdf) +psfrag example with replacements defined in example-psfrag.tex:\par +\begin{postscript} +\psfragfig{example} +\end{postscript} +The same example with a psfrag override (bottom left): +\begin{postscript} +\psfragfig{example}[\psfrag{[Mp]}{$N_Q*$}] +\end{postscript} +\end{document} diff --git a/Master/texmf-dist/scripts/pst2pdf/pst2pdf b/Master/texmf-dist/scripts/pst2pdf/pst2pdf index 6b6ab985429..da0aba08e4d 100755 --- a/Master/texmf-dist/scripts/pst2pdf/pst2pdf +++ b/Master/texmf-dist/scripts/pst2pdf/pst2pdf @@ -3,11 +3,11 @@ eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' && eval 'exec perl -S $0 $ use strict; # to be sure, that all is safe ... :-) -# v. 0.11 simplify the use of PSTricks with pdf -# 2011-01-18 (c) Herbert Voss <hvoss@tug.org> -# $Id: pst2pdf.pl 239 2010-01-01 17:23:13Z herbert $ -# Thanks to Pablo Gonzales Luengo -# +# $Id: pst2pdf.pl 611 2011-12-14 08:41:35Z herbert $ +# v. 0.13 simplify the use of PSTricks with pdf +# 2011-12-12 (c) Herbert Voss <hvoss@tug.org> +# Pablo González Luengo and http://perlenespanol.com +# # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or (at @@ -28,44 +28,126 @@ use File::Copy; # copying files use File::Basename; # scan argument use IO::File; # simple IO operation use Getopt::Long; # read parameter - #----------------------- User part begin ------------------------ my $imageDir = "images"; # where to save the images -my @imageType = ("eps","pdf"); # all image types -my $machine = "Linux"; -if ($^O eq 'MSWin32') { $machine = "Windows"; } -else { push (@imageType, "png"); } my $Iext = ".pdf"; # leave empty, if not a special one my $tempDir = "."; # temporary directory my $verbose = 1; # 0 or 1, logfile my $clear = 0; # 0 or 1, clears all temporary files my $DPI = 75; # very low value for the png's -my $Iscale = 1; # for \includegraphics +my $Iscale = 1; # for \includegraphics my $noImages = 0; # 1->create no images my $runBibTeX = 0; # 1->runs bibtex my $runBiber = 0; # 1->runs biber and sets $runBibTeX=0 +my $ppm = 0; # 1->create .ppm files +my $norun = 0; # 1->runs pdflatex +my $miktex = 0; # 1->runs pdlatex for miktex +my $eps = 0; # 1->create .eps files #----------------------- User part end --------------------------- - -@ARGV == 0 && die "file name expected!\n"; - -my @SuffixList = (".tex","",".ltx"); # possible extensions +#----------------------- program identification, options and help +my $program = "pst2pdf"; +my $ident = '$Id: pst2pdf.pl 611 2011-12-14 08:41:35Z herbert $'; +my $copyright = <<END_COPYRIGHT ; +Copyright 2011-01-18 (c) Herbert Voss <hvoss\@tug.org> +END_COPYRIGHT +my $licensetxt= <<END_LICENSE ; + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, + MA 02111-1307 USA +END_LICENSE +my $title = "$program $ident\n"; +my $usage = <<"END_OF_USAGE"; +${title}Usage: $program <texfile[,tex]> [Options] +pst2pdf run a TeX source, and convert all PS-related part as + single images (pdf and/or eps and/or png and/or ...) + and then runs pdflatex. See pst2pdf documentation for more info +Options: + --help - display this help and exit + --version - display version information and exit + --license - display license information and exit + --imageDir - the dir for the created images (default images) + --DPI=<int> - the dots per inch for a cretaed ppm files (default 75) + --ppm - create .ppm files + --eps - create .eps files + --Iscale=<real> - the value for [scale=] in \\includegraphics + --verbose - long log + --clear - delete all temp files + --norun - create file-pdf.tex, but, no run pdflatex + --runBibTeX - run bibtex on the aux file, if exists + --runBiber - run biber on the bcf file, if exists + --miktex - for miktex users -enable-write18 +Examples: +* $program test.tex --clear --ppm --eps +* produce test-pdf.tex and .ppm,.eps,.tex and .pdf for all images in image dir +END_OF_USAGE +# +my $result=GetOptions ( + "help", + "version", + "license", + "DPI=i" => \$DPI, # numeric + "Iscale=f" => \$Iscale, # real + "imageDir=s" => \$imageDir, # string + "tempDir=s" => \$tempDir, # string + "Iext=s" => \$Iext, # string + "clear" => \$clear, # flag + "noImages" => \$noImages, # flag + "runBibTeX" => \$runBibTeX, # flag + "ppm" => \$ppm, # flag + "norun" => \$norun, # flag + "miktex" => \$miktex, # flag + "eps" => \$eps, # flag + "runBiber" => \$runBiber, # flag + "verbose" => \$verbose, +) or die $usage; +# help functions +sub debug { print STDERR "* @_\n" if $::opt_debug; } +sub warning { print STDERR "==> Warning: @_\n"; } +sub error { die "$title!!! Error: @_\n"; } +sub errorUsage { die "Error: @_ (try --help for more information)\n"; } +# options for command line +if ($::opt_help) { + print $usage; + exit (0); +} +if ($::opt_version) { + print $title; + print $copyright; + exit (0); +} +if ($::opt_license) { + print $licensetxt; + exit (0); +} +# open file +my $InputFilename = ""; +if ($::opt_filter) { + @ARGV == 0 or + errorUsage "Input file cannot be used with filter option"; + debug "Filtering: will read standard input"; +} else { + @ARGV > 0 or errorUsage "Input filename missing"; + @ARGV < 2 or errorUsage "Unknown option or too many input files"; + $InputFilename = $ARGV[0]; + debug "Input filename:", $InputFilename; +} +my @SuffixList = (".tex","",".ltx"); # possible extensions my ($name,$path,$ext) = fileparse($ARGV[0],@SuffixList); -if ( $ext eq "" ) { $ext = ".tex"; } # me need the extension as well +if ($ext eq "") { $ext = ".tex"; } # me need the extension as well my $TeXfile = "$path$name$ext"; -my $Logfile = "$tempDir/$name.plog"; # our own log file -open (LOGfile, ">$Logfile") or die "cannot open $Logfile!"; - -my $result = GetOptions ("DPI=i" => \$DPI, # numeric - "Iscale=f" => \$Iscale, # real - "imageDir=s" => \$imageDir, # string - "tempDir=s" => \$tempDir, # string - "Iext=s" => \$Iext, # string - "clear" => \$clear, # flag - "noImages" => \$noImages, # flag - "runBibTeX" => \$runBibTeX, # flag - "runBiber" => \$runBiber, # flag - "verbose" => \$verbose); # flag - +my $Logfile = "$tempDir/$name.plog"; # our own log file +open (LOGfile,">$Logfile") or die "cannot open $Logfile!"; LOG ("Parameters:"); LOG ("==> imageDir = $imageDir"); LOG ("==> Iext = $Iext"); @@ -77,61 +159,108 @@ LOG ("==> clear = $clear"); LOG ("==> noImages = $noImages"); LOG ("==> runBibTeX= $runBibTeX"); LOG ("==> runBiber = $runBiber"); +LOG ("==> ppm = $ppm"); +LOG ("==> norun = $norun"); +LOG ("==> miktex = $miktex"); +LOG ("==> eps = $eps"); if ($runBibTeX && $runBiber) { LOG ("!!! you cannot run BibTeX and Biber at the same document ..."); LOG ("!!! Assuming to run Biber"); $runBibTeX = 0; } +if ($ppm) { + LOG ("Generate .ppm files ..."); + $ppm = 1; +} +if ($norun) { + LOG ("no compile file-pdf.tex"); + $norun = 1; +} +if ($miktex) { + LOG ("enable write 18 ..."); + $miktex = 1; +} +if ($eps) { + LOG ("Generate .eps files ..."); + $eps = 1; +} -my $imgNo = 0; # internal image counter -my $pstExaLoaded = 0; # Document loads pst-exa +my $imgNo = 1; # internal image counter +my $pstExaLoaded = 0; # Document loads pst-exa LOG ("Running on [$path][$name][$ext]"); open (FILE, "<$TeXfile") or die "cannot open source file $TeXfile!"; # the source -if ( !$noImages ) { +if (!$noImages ) { if (-d $imageDir) { LOG ("$imageDir exists") } else { mkdir("$imageDir", 0744) || die "cannot mkdir $imageDir: $!"; - LOG ("Imagedir created"); } - - LOG ("go to savePreamble ... "); - savePreamble($name); - LOG ("done!\n go to runFile ..."); - runFile($name); - LOG ("done!"); - close FILE; # close source file +LOG ("Imagedir created"); } +LOG ("go to savePreamble ... "); +savePreamble($name); +runBurst("$tempDir"); +LOG ("done!\n go to runFile ..."); +runFile($name); +LOG ("done!"); +close FILE; # close source file }# !noImages - +#------------ Create filename-pics.pdf, split and generate .ppm +sub runBurst{ +if ($miktex){system("pdflatex -enable-write18 -interaction=nonstopmode $tempDir/$name");} +else{system("pdflatex -shell-escape -interaction=nonstopmode $tempDir/$name");} +system("pdftk $name-pics.pdf burst output $imageDir/$name-tmp-\%1d.pdf"); +if ($ppm){system("pdftoppm -r $DPI $name-pics.pdf $imageDir/$name-tmp"); +# Renaming .ppm neded for windows +if ($^O eq 'MSWin32') { +my $dren = "$tempDir/$imageDir"; +my $fichero = ''; +my $ppmren = ''; +my $renNo = 1; +if(opendir(DIR,$dren)){ + foreach (readdir DIR){ + $fichero = $_; + if ($fichero =~ /([^\d]+)(\d+).ppm/){ + my $renNo=int($2); + my $newname="$1$renNo.ppm"; + $ppmren = rename("$dren/$fichero","$dren/$newname"); + } + } + } + else + { + print "dont open".$dren; + } +closedir DIR; +} +# end renaming +} +} +#------------ end pdftk burst LOG ("runpdfTeX ... "); runpdfTeX("$path$name",$name); LOG ("all finished ... :-)"); close LOGfile; -if ( $clear ) { - unlink "$path$name.aux"; - unlink "$path$name.log"; - unlink "$path$name.preamble"; - unlink "$path$name-tmp.aux"; - unlink "$path$name-tmp.dvi"; - unlink "$path$name-tmp.log"; - unlink "$path$name-tmp.pdf"; - unlink "$path$name-tmp.ps"; - unlink "$path$name-tmp.tex"; -} -sub savePreamble { # create a preamble file +if ( $clear ) { +unlink "$path$name.txt"; +unlink "$path$name.log"; +unlink "$path$name.plog"; +unlink "$path$name.preamble"; +unlink "$path$name.pdf"; + } +# create a preamble file # if we have a \input command inside the preamble, it doesn't hurt, we need # it anyway for the postscript files and the pdf one. - my $filename = pop; # get the file name +sub savePreamble { + my $filename = pop; # get the file name LOG ("----- Start Preamble -----"); open (FILEp, ">$tempDir/$filename.preamble") or die "cannot open preamble file $tempDir/$filename.preamble!"; - while (<FILE>) { # read all until \begin{document} + while (<FILE>) { # read all until \begin{document} $pstExaLoaded = index($_,"usepackage{pst-exa}"); my $i = index($_,"begin{document}"); if ($i > 0) { if ($i > 1) { print FILEp substr($_,0,--$i); } # write all until \begin{document} - print FILEp "\n\\usepackage{pst-exa}\n"; close(FILEp); # close preamble LOG ("----- Close Preamble ------"); return; @@ -145,25 +274,25 @@ sub savePreamble { # create a preamble file return; } -sub searchPS { # search the PostScript parts - my @PS = (); # single PS sequence - my @PStotal = (); # all PS sequences as list of arrays - my $depth = -1; # counts nested macros - my $type = -1; # -1-> none; 1->PST; 2->PS; - my $EndDocument = 0; # ignore all after \end{document} - my $iVerb = 0; # test for verbatim or lstlisting environment, must be ignored - while (<FILE>) { # scan the input file +sub searchPS { # search the PostScript parts + my @PS = (); # single PS sequence + my @PStotal = (); # all PS sequences as list of arrays + my $depth = -1; # counts nested macros + my $type = -1; # -1-> none; 1->PST; 2->PS; + my $EndDocument = 0; # ignore all after \end{document} + my $iVerb = 0; # test for verbatim or lstlisting environment, must be ignored + while (<FILE>) { # scan the input file if (!$EndDocument) { - chomp; # delete EOL character - my $line = $_; # save line + chomp; # delete EOL character + my $line = $_; # save line if ( !$iVerb ) { $iVerb = ((index($line,"begin{verbatim}") > 0) or (index($line,"begin{lstlisting}") > 0)); - } # do nothing until \end{verbatim} + } # do nothing until \end{verbatim} if ( !$iVerb ) { my $iPS = index($line,"begin{postscript}"); my $iPST = index($line,"begin{pspicture*}"); if ($iPST < 0) { $iPST = index($line,"begin{pspicture}"); } # alternative - if ($iPST < 0) { $iPST = index($line,"pspicture"); } # alternative \pspicture... + if ($iPST < 0) { $iPST = index($line,"pspicture"); } # alternative \pspicture... if (($iPS > 0) && ( $type == 1 )){ print "postscript environment must be of outer level!\n"; exit 1; } if ( $type < 0 ) { # no active environment if ($iPS > 0) { # we have \begin{postscript} @@ -171,30 +300,30 @@ sub searchPS { # search the PostScript parts $line = substr($line,$iPS-1); # add rest of the line LOG("PS-Zeile: $line"); } - elsif ( $iPST > 0 ) { # we have \begin{pspicture} or \pspicture + elsif ( $iPST > 0 ) { # we have \begin{pspicture} or \pspicture $type = 1; $depth++; $line = substr($line,$iPST-1); # add all unitl pspicture LOG("PST-Zeile: $line"); } } -# we have now \begin{pspicture} or \begin{postscript} - if ($type > 0) { # start Scan, we have an environment +# we have now \begin{pspicture} or \begin{postscript} + if ($type > 0) { # start Scan, we have an environment LOG ("searchPS: set \$type=$type"); $iPST = index($line,"end{pspicture*}"); if ($iPST < 0) { $iPST = index($line,"end{pspicture}"); } # alternative - if ($iPST < 0) { $iPST = index($line,"endpspicture"); } # alternative \endpspicture... + if ($iPST < 0) { $iPST = index($line,"endpspicture"); } # alternative \endpspicture... $iPS = index($line,"end{postscript}"); - if ($iPST > 0) { # test, we can have postscript and pspicture in one line - if ( $type < 2) { # found end of pspicture environment + if ($iPST > 0) { # test, we can have postscript and pspicture in one line + if ( $type < 2) { # found end of pspicture environment LOG ("searchPS: $line"); $depth--; if ($depth < 0) { $type = -1; - if (index($line,"endpspicture") > 0) # add line, depends to type + if (index($line,"endpspicture") > 0) # add line, depends to type { push @PS,substr($line,0,$iPST+12); } # \endpspicture elsif (index($line,"pspicture*") > 0) - { push @PS,substr($line,0,$iPST+15); } # \end{pspicture} + { push @PS,substr($line,0,$iPST+15); }# \end{pspicture} else { push @PS,substr($line,0,$iPST+14); } # \end{pspicture} LOG ("searchPS: set \$type=$type"); push @PStotal,[@PS]; # add PS sequence @@ -205,16 +334,16 @@ sub searchPS { # search the PostScript parts } elsif ($iPS > 0) { # must be type=1 -> stop Scan LOG ("searchPS: $line"); $type = -1; - push @PS,substr($line,0,$iPS+15);# add line + push @PS,substr($line,0,$iPS+15); # add line LOG ("searchPS: set \$type=$type"); - push @PStotal,[@PS]; # add PS sequence + push @PStotal,[@PS]; # add PS sequence LOG ("---->PS---->\n@PS\n<----PS<----"); - @PS = (); # start new PS sequence - } else { push @PS,$line; } # add line + @PS =(); # start new PS sequence + } else { push @PS,$line; } # add line } my $i = index($line,"end{document}"); if ($i > 0) { $EndDocument++; LOG("EndDocument in searchPS"); } - } # if ( $iVerb ) + } # if ( $iVerb ) if (( index($line,"end{verbatim}") > 0 ) or ( index($line,"end{lstlisting}") > 0 )) { $iVerb = 0; } }} if ( $verbose ) { @@ -227,30 +356,18 @@ sub searchPS { # search the PostScript parts LOG ("<----PStotal<----"); } close(FILE); - return @PStotal; # return all PS sequences + return @PStotal; # return all PS sequences } -sub runTeX { +# Creating subfiles.tex and .eps for images +sub runTeX{ my $filename = pop; - system("latex $filename"); # or die "Error in the LaTeX run from file $filename!"; - system("dvips $filename"); # or die "Error in the dvips run from file $filename!"; - system("ps2pdf $filename.ps");# or die "Error in the ps2pdf run from file $filename!"; - copy("$filename.tex", "$imageDir/$filename-$imgNo.tex") or die "Cannot copy Source file!";; - for my $Itype ( @imageType ) { - if ($Itype eq "pdf") { system("pdfcrop $filename.pdf $imageDir/$filename-$imgNo.pdf"); } - if ($Itype eq "png") { - system("pdftoppm -f 1 -l 1 -r $DPI $imageDir/$filename-$imgNo.pdf $imageDir/"); - system("convert $imageDir/-1.ppm $imageDir/$filename-$imgNo.png"); - system("rm $imageDir/-1.ppm"); - } - if ($Itype eq "jpg") { - system("pdftoppm -f 1 -l 1 -r $DPI $imageDir/$filename-$imgNo.pdf $imageDir/"); - system("convert $imageDir/-1.ppm $imageDir/$filename-$imgNo.jpg"); - system("rm $imageDir/-1.ppm"); - } - if ($Itype eq "eps") { system("pdftops -f 1 -l 1 -eps $imageDir/$filename-$imgNo.pdf $imageDir/$filename-$imgNo.eps"); } - } - $imgNo++; + my $name = "$filename"; + copy("$filename.tex", "$imageDir/$filename-$imgNo.tex") or die "Cannot copy Source file!"; + if ($eps){ + system("pdftops -level3 -eps $imageDir/$filename-$imgNo.pdf $imageDir/$filename-$imgNo.eps"); + } +$imgNo=$imgNo+1; } sub runFile { @@ -269,13 +386,10 @@ sub runFile { } for my $aref ( @PSarray ) { my @PS = @$aref; - open (FILEp, "<$tempDir/$filename.preamble") or die "cannot open $tempDir/$filename.preamble!"; - open (FILEsub, ">$tempDir/$filename-tmp.tex") or die "cannot open $tempDir/$filename-tmp.tex!"; - #print FILEsub "\\RequirePackage{listings}\n"; - while (<FILEp>) { print FILEsub $_; } + open (FILEp,"<$tempDir/$filename.preamble") or die "cannot open $tempDir/$filename.preamble!"; + open (FILEsub,">$tempDir/$filename-tmp.tex") or die "cannot open $tempDir/$filename-tmp.tex!"; + while (<FILEp>) {print FILEsub $_; } print FILEsub "\\pagestyle{empty}\n"; - print FILEsub "\\newenvironment{postscript}{}{}\n"; - print FILEsub "\\providecommand\\IncludeGraphics[2][]{}\n"; print FILEsub "\\begin{document}\n"; if ( $verbose ) { LOG("\@PS: $_"); } foreach ( @PS ) { print FILEsub "$_\n"; } @@ -285,24 +399,18 @@ sub runFile { runTeX("$tempDir/$filename-tmp"); } } - +# Replace files sub runpdfTeX() { my ($name,$pdfname) = @_; open (PDF, ">$tempDir/$pdfname-pdf.tex") or die "cannot open $tempDir/$pdfname-pdf.tex!"; open (FILE, "<$name.tex") or die "cannot open $name!"; - print PDF "\\RequirePackage{graphicx}\n"; - #if ($pstExaLoaded < 1) { - print PDF "\\let\\IncludeGraphics\\includegraphics\n"; #} -# print PDF "\\setkeys{Gin}{scale=0.25}\n"; -# print PDF "\\providecommand\\psset[1]{}\n"; - print PDF "\\graphicspath{{$imageDir/}}\n"; #uncomment my $ignore = 0; - my $IMGno = 0; + my $IMGno = 1; my $depth = -1; my $type = -1; - my $EndDocument = 0; # ignore all after \end{document} + my $EndDocument = 0; # ignore all after \end{document} my $iVerb = 0; - while (<FILE>) { # scan the input file + while (<FILE>) { # scan the input file if ( !$iVerb ) { $iVerb = ((index($_,"begin{verbatim}") > 0) or (index($_,"begin{lstlisting}") > 0)); } # do nothing until \end{verbatim}|| \end{lstlisting} @@ -315,40 +423,39 @@ sub runpdfTeX() { $type = 2; $ignore = 1; if ($iPS > 1) { print PDF substr($_,0,--$iPS); } # add preceeding text - print PDF "\\IncludeGraphics[scale=$Iscale]{$pdfname-tmp-$IMGno$Iext}"; #change name x pdfname - $IMGno++; + print PDF "\\includegraphics[scale=$Iscale]{$pdfname-tmp-$IMGno}"; # use pdfname + $IMGno=$IMGno+1; } # postscript env if ( $type < 2 ) { my $iPST = index($_,"begin{pspicture*}"); if ($iPST < 0) { $iPST = index($_,"begin{pspicture}"); } # alternative ... - if ($iPST < 0) { $iPST = index($_,"\\pspicture"); } # alternative \endpspicture... - if ( $iPST >= 0 ) { # start Scan + if ($iPST < 0) { $iPST = index($_,"\\pspicture"); } # alternative \endpspicture... + if ( $iPST >= 0 ) { # start Scan $ignore = 1; $type = 1; - $depth++; # pspicture env + $depth++; # pspicture env LOG("Increase depth: $depth"); if ( $depth == 0 ) { - if ($iPST > 1) { print PDF substr($_,0,--$iPST); }# add preceeding text - # print PDF "\\IncludeGraphics[scale=$Iscale]{$imageDir/$pdfname-tmp-$IMGno$Iext}"; #change name x pdfname - print PDF "\\IncludeGraphics[scale=$Iscale]{$pdfname-tmp-$IMGno$Iext}"; # use \graphicspath - $IMGno++; + if ($iPST > 1) { print PDF substr($_,0,--$iPST); } # add preceeding text + print PDF "\\includegraphics[scale=$Iscale]{$pdfname-tmp-$IMGno}"; # use \graphicspath + $IMGno=$IMGno+1; LOG("Increase Image counter: $IMGno"); } } } - if ( !$ignore ) { print PDF "$_"; } # default line - if ( $type == 2 ) { # postscript env + if ( !$ignore ) { print PDF "$_"; } # default line + if ( $type == 2 ) { # postscript env my $iPS = index($_,"end{postscript}"); if ($iPS > 0) { - print PDF substr($_,$iPS+15); # rest of line + print PDF substr($_,$iPS+15); # rest of line $ignore = 0; $type=-1; - } # end Scan + } # end Scan } elsif ( $type == 1 ) { # pspicture env my $iPST = index($_,"end{pspicture*}"); - if ($iPST < 0) { $iPST = index($_,"end{pspicture}"); }# alternative ... - if ($iPST < 0) { $iPST = index($_,"endpspicture"); } # alternative \endpspicture... - if ($iPST > 0) { # end Scan + if ($iPST < 0) { $iPST = index($_,"end{pspicture}"); } # alternative ... + if ($iPST < 0) { $iPST = index($_,"endpspicture"); } # alternative \endpspicture... + if ($iPST > 0) { # end Scan if (index($_,"endpspicture") > 0) # add rest of line, depends to type { print PDF substr($_,$iPST+12); } # \endpspicture elsif (index($_,"pspicture*") > 0) @@ -365,83 +472,53 @@ sub runpdfTeX() { } # while (<FILE>) close (FILE); close (PDF); - my $runAgain = 0; - system("pdflatex $tempDir/$pdfname-pdf"); - if (-e "$tempDir/$pdfname-pdf.idx") { system("makeindex $tempDir/$pdfname-pdf.idx"); $runAgain++; } - if ($runBibTeX && -e "$tempDir/$pdfname-pdf.aux") { system("bibtex $tempDir/$pdfname-pdf"); $runAgain++; } - if ($runBiber && -e "$tempDir/$pdfname-pdf.bcf") { system("biber $tempDir/$pdfname-pdf"); $runAgain++; } - if ($runAgain) { system("pdflatex $tempDir/$pdfname-pdf"); } - if ( $clear ) { - unlink "$tempDir/$pdfname-pdf.log"; - unlink "$tempDir/$pdfname-pdf.aux"; - } +# Coment pst-package + open (IPDF, "<$tempDir/$pdfname-pdf.tex"); + undef $/; # read all file + my ($uno,$dos) = split(/\\begin\{document\}/,<IPDF>,2); + close IPDF; + + my @coment = split /\n/, $uno; # split in two + my @preamb; + + foreach my $line (@coment) { + chomp($line); + $line =~ s/\\usepackage(?:\[.+?\])?\{pst.+?}//g; # delete + $line =~ s/\\usepackage(?:\[.+?\])?\{psfr.+?}//g; # delete + $line =~ s/(\\usepackage(?:\[.+?\])?)\{auto-pst.+?}//g; # delete + $line =~ s/(\\usepackage(?:\[.+?\])?)\{vaucanson-.+?}//g; # delete + $line =~ s/(\\usepackage(?:\[.+?\])?)\{psgo}//g; # delete + $line =~ s/(\\usepackage(?:\[.+?\])?)\{graph/\%$1\{graph/g; # comment + next if $line =~ m/^\s*$/; + push(@preamb,$line); # adding changes +} +my $clean = join("\n", @preamb, "\\usepackage{grfext}\n\\\PrependGraphicsExtensions*{$Iext}\n\\usepackage{graphicx}\n\\graphicspath{{$imageDir/}}\n\\begin{document}\n". $dos); + +open (OPDF,">$tempDir/$pdfname-pdf.tex"); # write changes +print OPDF $clean; +close OPDF; +# close coment pst-package + +my $runAgain = 0; +if ($norun){print "Done\n";} +else {system("pdflatex -interaction=nonstopmode $pdfname-pdf");} +if (-e "$tempDir/$pdfname-pdf.idx") { system("makeindex $tempDir/$pdfname-pdf.idx"); $runAgain++; } +if ($runBibTeX && -e "$tempDir/$pdfname-pdf.aux") { system("bibtex $tempDir/$pdfname-pdf"); $runAgain++; } +if ($runBiber && -e "$tempDir/$pdfname-pdf.bcf") { system("biber $tempDir/$pdfname-pdf"); $runAgain++; } +if ($runAgain) { system("pdflatex $tempDir/$pdfname-pdf"); } +if ( $clear ) { + unlink "$name.txt"; + unlink "$tempDir/$name.aux"; + unlink "$tempDir/$pdfname-pdf.log"; + unlink "$tempDir/$pdfname-pdf.aux"; + unlink "$tempDir/$pdfname-pdf-autopp.txt"; + unlink "$tempDir/$pdfname-pics.pdf"; + unlink "$tempDir/doc_data.txt"; + unlink "$tempDir/$pdfname-tmp.tex"; + } } sub LOG() { if ( $verbose ) { print LOGfile "@_\n"; } } - __END__ - -=head1 NAME - -B<pst2pdf> - run a TeX source, and convert all PS-related part as single images - (pdf and/or eps and/or png and/or ...) and then runs pdflatex. - -=head1 SYNOPSIS - - pst2pdf.pl <texfile[,tex]> [Options] - -TODO - -=head1 DESCRIPTION - -runs latex and pdflatex on the TeX source file - -=head1 OPTIONS - -=over - -=item --imageDir - the dir for the created images - -=item --Iext=<.ext> - the extension for \includegraphics, can be empty - -=item --DPI=<int> - the dots per inch for a cretaed png file - -=item --Iscale=<real> - the value for \scale= in \includegraphics - -=item --tempDir=<dir> - temporary directory for the temp files - -=item --verbose - long log - -=item --clear - delete all temp files - -=item --noImages - create no images, build only pdf - -=item --runBibTeX - run bibtex on the aux file, if exists - -=item --runBiber - run biber on the bcf file, if exists - -=back - -=head1 AUTHORS - -Herbert Voss <hvoss@tug.org> - -=head1 COPYRIGHT - -Copyright (c) 2007-2011 Herbert Voss <hvoss@tug.org> - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |