summaryrefslogtreecommitdiff
path: root/Master/texmf-dist
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2011-12-15 02:01:37 +0000
committerKarl Berry <karl@freefriends.org>2011-12-15 02:01:37 +0000
commit45b9ab369ae1508758c6596c963db163fbb9700a (patch)
treeaa551a8e6fa82166ea3675889b143abf6a3c8d90 /Master/texmf-dist
parentc036275403fa8fef1df0533f4d48ef8cf2288401 (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/Changes3
-rw-r--r--Master/texmf-dist/doc/latex/pst2pdf/pst2pdf-doc.pdfbin73142 -> 57818 bytes
-rw-r--r--Master/texmf-dist/doc/latex/pst2pdf/pst2pdf-doc.tex60
-rw-r--r--Master/texmf-dist/doc/latex/pst2pdf/test.pdfbin0 -> 68528 bytes
-rw-r--r--Master/texmf-dist/doc/latex/pst2pdf/test.tex408
-rwxr-xr-xMaster/texmf-dist/scripts/pst2pdf/pst2pdf495
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
index ff8111a0aeb..be11194109e 100644
--- a/Master/texmf-dist/doc/latex/pst2pdf/pst2pdf-doc.pdf
+++ b/Master/texmf-dist/doc/latex/pst2pdf/pst2pdf-doc.pdf
Binary files differ
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
new file mode 100644
index 00000000000..8ffafa7a152
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/pst2pdf/test.pdf
Binary files differ
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