diff options
author | Karl Berry <karl@freefriends.org> | 2013-03-10 22:38:10 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2013-03-10 22:38:10 +0000 |
commit | 89135e7e1b6a211b066867735c41e9a1a4310c5f (patch) | |
tree | 2196faea0cf74bd49d034d56443ae7644a638c35 /Master | |
parent | 6380d0315e1132891b4735999c26b0a41e6d1aaa (diff) |
pst2pdf (10mar13)
git-svn-id: svn://tug.org/texlive/trunk@29333 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
29 files changed, 831 insertions, 1082 deletions
diff --git a/Master/bin/alpha-linux/pst2pdf b/Master/bin/alpha-linux/pst2pdf index 7254506bdeb..60a28335578 120000 --- a/Master/bin/alpha-linux/pst2pdf +++ b/Master/bin/alpha-linux/pst2pdf @@ -1 +1 @@ -../../texmf-dist/scripts/pst2pdf/pst2pdf
\ No newline at end of file +../../texmf-dist/scripts/pst2pdf/pst2pdf.pl
\ No newline at end of file diff --git a/Master/bin/amd64-freebsd/pst2pdf b/Master/bin/amd64-freebsd/pst2pdf index 7254506bdeb..60a28335578 120000 --- a/Master/bin/amd64-freebsd/pst2pdf +++ b/Master/bin/amd64-freebsd/pst2pdf @@ -1 +1 @@ -../../texmf-dist/scripts/pst2pdf/pst2pdf
\ No newline at end of file +../../texmf-dist/scripts/pst2pdf/pst2pdf.pl
\ No newline at end of file diff --git a/Master/bin/amd64-kfreebsd/pst2pdf b/Master/bin/amd64-kfreebsd/pst2pdf index 7254506bdeb..60a28335578 120000 --- a/Master/bin/amd64-kfreebsd/pst2pdf +++ b/Master/bin/amd64-kfreebsd/pst2pdf @@ -1 +1 @@ -../../texmf-dist/scripts/pst2pdf/pst2pdf
\ No newline at end of file +../../texmf-dist/scripts/pst2pdf/pst2pdf.pl
\ No newline at end of file diff --git a/Master/bin/armel-linux/pst2pdf b/Master/bin/armel-linux/pst2pdf index 7254506bdeb..60a28335578 120000 --- a/Master/bin/armel-linux/pst2pdf +++ b/Master/bin/armel-linux/pst2pdf @@ -1 +1 @@ -../../texmf-dist/scripts/pst2pdf/pst2pdf
\ No newline at end of file +../../texmf-dist/scripts/pst2pdf/pst2pdf.pl
\ No newline at end of file diff --git a/Master/bin/i386-cygwin/pst2pdf b/Master/bin/i386-cygwin/pst2pdf index 7254506bdeb..60a28335578 120000 --- a/Master/bin/i386-cygwin/pst2pdf +++ b/Master/bin/i386-cygwin/pst2pdf @@ -1 +1 @@ -../../texmf-dist/scripts/pst2pdf/pst2pdf
\ No newline at end of file +../../texmf-dist/scripts/pst2pdf/pst2pdf.pl
\ No newline at end of file diff --git a/Master/bin/i386-freebsd/pst2pdf b/Master/bin/i386-freebsd/pst2pdf index 7254506bdeb..60a28335578 120000 --- a/Master/bin/i386-freebsd/pst2pdf +++ b/Master/bin/i386-freebsd/pst2pdf @@ -1 +1 @@ -../../texmf-dist/scripts/pst2pdf/pst2pdf
\ No newline at end of file +../../texmf-dist/scripts/pst2pdf/pst2pdf.pl
\ No newline at end of file diff --git a/Master/bin/i386-kfreebsd/pst2pdf b/Master/bin/i386-kfreebsd/pst2pdf index 7254506bdeb..60a28335578 120000 --- a/Master/bin/i386-kfreebsd/pst2pdf +++ b/Master/bin/i386-kfreebsd/pst2pdf @@ -1 +1 @@ -../../texmf-dist/scripts/pst2pdf/pst2pdf
\ No newline at end of file +../../texmf-dist/scripts/pst2pdf/pst2pdf.pl
\ No newline at end of file diff --git a/Master/bin/i386-linux/pst2pdf b/Master/bin/i386-linux/pst2pdf index 7254506bdeb..60a28335578 120000 --- a/Master/bin/i386-linux/pst2pdf +++ b/Master/bin/i386-linux/pst2pdf @@ -1 +1 @@ -../../texmf-dist/scripts/pst2pdf/pst2pdf
\ No newline at end of file +../../texmf-dist/scripts/pst2pdf/pst2pdf.pl
\ No newline at end of file diff --git a/Master/bin/i386-solaris/pst2pdf b/Master/bin/i386-solaris/pst2pdf index 7254506bdeb..60a28335578 120000 --- a/Master/bin/i386-solaris/pst2pdf +++ b/Master/bin/i386-solaris/pst2pdf @@ -1 +1 @@ -../../texmf-dist/scripts/pst2pdf/pst2pdf
\ No newline at end of file +../../texmf-dist/scripts/pst2pdf/pst2pdf.pl
\ No newline at end of file diff --git a/Master/bin/mipsel-linux/pst2pdf b/Master/bin/mipsel-linux/pst2pdf index 7254506bdeb..60a28335578 120000 --- a/Master/bin/mipsel-linux/pst2pdf +++ b/Master/bin/mipsel-linux/pst2pdf @@ -1 +1 @@ -../../texmf-dist/scripts/pst2pdf/pst2pdf
\ No newline at end of file +../../texmf-dist/scripts/pst2pdf/pst2pdf.pl
\ No newline at end of file diff --git a/Master/bin/powerpc-aix/pst2pdf b/Master/bin/powerpc-aix/pst2pdf index 7254506bdeb..60a28335578 120000 --- a/Master/bin/powerpc-aix/pst2pdf +++ b/Master/bin/powerpc-aix/pst2pdf @@ -1 +1 @@ -../../texmf-dist/scripts/pst2pdf/pst2pdf
\ No newline at end of file +../../texmf-dist/scripts/pst2pdf/pst2pdf.pl
\ No newline at end of file diff --git a/Master/bin/powerpc-linux/pst2pdf b/Master/bin/powerpc-linux/pst2pdf index 7254506bdeb..60a28335578 120000 --- a/Master/bin/powerpc-linux/pst2pdf +++ b/Master/bin/powerpc-linux/pst2pdf @@ -1 +1 @@ -../../texmf-dist/scripts/pst2pdf/pst2pdf
\ No newline at end of file +../../texmf-dist/scripts/pst2pdf/pst2pdf.pl
\ No newline at end of file diff --git a/Master/bin/sparc-solaris/pst2pdf b/Master/bin/sparc-solaris/pst2pdf index 7254506bdeb..60a28335578 120000 --- a/Master/bin/sparc-solaris/pst2pdf +++ b/Master/bin/sparc-solaris/pst2pdf @@ -1 +1 @@ -../../texmf-dist/scripts/pst2pdf/pst2pdf
\ No newline at end of file +../../texmf-dist/scripts/pst2pdf/pst2pdf.pl
\ No newline at end of file diff --git a/Master/bin/universal-darwin/pst2pdf b/Master/bin/universal-darwin/pst2pdf index 7254506bdeb..60a28335578 120000 --- a/Master/bin/universal-darwin/pst2pdf +++ b/Master/bin/universal-darwin/pst2pdf @@ -1 +1 @@ -../../texmf-dist/scripts/pst2pdf/pst2pdf
\ No newline at end of file +../../texmf-dist/scripts/pst2pdf/pst2pdf.pl
\ No newline at end of file diff --git a/Master/bin/x86_64-darwin/pst2pdf b/Master/bin/x86_64-darwin/pst2pdf index 7254506bdeb..60a28335578 120000 --- a/Master/bin/x86_64-darwin/pst2pdf +++ b/Master/bin/x86_64-darwin/pst2pdf @@ -1 +1 @@ -../../texmf-dist/scripts/pst2pdf/pst2pdf
\ No newline at end of file +../../texmf-dist/scripts/pst2pdf/pst2pdf.pl
\ No newline at end of file diff --git a/Master/bin/x86_64-linux/pst2pdf b/Master/bin/x86_64-linux/pst2pdf index 7254506bdeb..60a28335578 120000 --- a/Master/bin/x86_64-linux/pst2pdf +++ b/Master/bin/x86_64-linux/pst2pdf @@ -1 +1 @@ -../../texmf-dist/scripts/pst2pdf/pst2pdf
\ No newline at end of file +../../texmf-dist/scripts/pst2pdf/pst2pdf.pl
\ No newline at end of file diff --git a/Master/bin/x86_64-solaris/pst2pdf b/Master/bin/x86_64-solaris/pst2pdf index 7254506bdeb..60a28335578 120000 --- a/Master/bin/x86_64-solaris/pst2pdf +++ b/Master/bin/x86_64-solaris/pst2pdf @@ -1 +1 @@ -../../texmf-dist/scripts/pst2pdf/pst2pdf
\ No newline at end of file +../../texmf-dist/scripts/pst2pdf/pst2pdf.pl
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/pst2pdf/Changes b/Master/texmf-dist/doc/latex/pst2pdf/Changes index c5cdd174931..cea7a71ded3 100644 --- a/Master/texmf-dist/doc/latex/pst2pdf/Changes +++ b/Master/texmf-dist/doc/latex/pst2pdf/Changes @@ -1,4 +1,5 @@ pst2pdf.pl -------- +0.14 2013-02-27 - suport xelatex and -help from command line 0.13 2011-12-12 - some more improvements to the code 0.12 2011-01-19 - new optional arguments for running bibtex or biber @@ -6,9 +7,9 @@ pst2pdf.pl -------- allow working with Windows - test for pst-exa to write \psset in the pdf file -0.10 2010-01-04 allow using the package pst-exa -0.09 2009-10-01 allow pspicture* -0.08 2009-08-28 test for png files (only for Linux) +0.10 2010-01-04 - allow using the package pst-exa +0.09 2009-10-01 - allow pspicture* +0.08 2009-08-28 - test for png files (only for Linux) 0.07 2009-07-24 - fix bug with \begin{postscript} and following pspicture environment - add some more documentation @@ -17,7 +18,7 @@ pst2pdf.pl -------- e.g. tex, ltx - ignore verbatim environment - better log file support -0.04 2007-07-04 allow all \begin ..\end sequences anywhere - in a line, see testcase -0.03 2007-06-21 fix nested environments -0.02 2007-06-20 first (public) version +0.04 2007-07-04 - allow all \begin ..\end sequences anywhere + in a line, see testcase +0.03 2007-06-21 - fix nested environments +0.02 2007-06-20 - first (public) version diff --git a/Master/texmf-dist/doc/latex/pst2pdf/Makefile b/Master/texmf-dist/doc/latex/pst2pdf/Makefile.doc index 442e4f0040d..442e4f0040d 100644 --- a/Master/texmf-dist/doc/latex/pst2pdf/Makefile +++ b/Master/texmf-dist/doc/latex/pst2pdf/Makefile.doc diff --git a/Master/texmf-dist/doc/latex/pst2pdf/README b/Master/texmf-dist/doc/latex/pst2pdf/README index 37db62ada72..1b488d664b0 100644 --- a/Master/texmf-dist/doc/latex/pst2pdf/README +++ b/Master/texmf-dist/doc/latex/pst2pdf/README @@ -6,9 +6,9 @@ The pdf ones are then imported in a last pdflatex run for the pdf output of the main document. The eps and pdf files are saved in a subdirectory images. -Syntax: pst2pdf.pl file[.tex] [options] +Syntax: pst2pdf.pl file[.tex] [-options] -alternative: perl pst2pdf.pl file[.tex] [options] +alternative: perl pst2pdf.pl file[.tex] [-options] Some restrictions: @@ -30,22 +30,10 @@ a pspicture environment, e.g. nodes inside normal text. pst2pdf creates a document file-pdf.tex for use with pdflatex, which then creates file-pdf.pdf. The created -images are named file-tmp-<No>.pdf - -Options: ---imageDir=<path> ---Iext=<.ext> ---DPI=<int> ---Iscale=<real> ---tempDir=<dir> ---verbose ---clear ---noImages ---runBibtex ---runBiber - -for more documentation => perldoc pst2pdf or read the documentation +images are named file-pst-<No>.pdf + +for more documentation => pst2pdf --help or read the documentation -- Herbert Voss 2010-01-04 -</pre>
\ No newline at end of file +</pre> diff --git a/Master/texmf-dist/doc/latex/pst2pdf/pst2pdf-doc.bib b/Master/texmf-dist/doc/latex/pst2pdf/pst2pdf-doc.bib index 75da5a14ec5..b42b1c01a15 100644 --- a/Master/texmf-dist/doc/latex/pst2pdf/pst2pdf-doc.bib +++ b/Master/texmf-dist/doc/latex/pst2pdf/pst2pdf-doc.bib @@ -125,10 +125,10 @@ @Book{PSTricks2, author = {Herbert Vo\ss}, - title = {\texttt{PSTricks} -- {G}rafik f\"ur \TeX{} und \LaTeX}, - edition = {6.}, - publisher = {DANTE -- Lehmanns}, + title = {\texttt{PSTricks} -- {G}rafics for \TeX{} and \LaTeX}, + edition = {1.}, + publisher = {UIT}, year = {2011}, - address = {Heidelberg/Hamburg} + address = {Cambridge} } 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 be11194109e..7ecd33bfc39 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 c0b893bc843..238bf937673 100644 --- a/Master/texmf-dist/doc/latex/pst2pdf/pst2pdf-doc.tex +++ b/Master/texmf-dist/doc/latex/pst2pdf/pst2pdf-doc.tex @@ -1,8 +1,8 @@ -%% $Id: pst-func-doc.tex 245 2010-01-04 17:07:30Z herbert $ -\documentclass[11pt,english,BCOR10mm,DIV12,bibliography=totoc,parskip=false, - smallheadings, headexclude,footexclude,oneside]{pst-doc} +\documentclass[10pt,english,BCOR10mm,DIV12,bibliography=totoc,parskip=false,smallheadings + headexclude,footexclude,oneside]{pst-doc} \usepackage[utf8]{inputenc} -\usepackage{pst-text,pst-grad,pst-exa} +\RequirePackage{xspace} +\usepackage{pst-text,pst-grad} \let\pstFV\fileversion \DeclareFixedFont{\RM}{T1}{ptm}{b}{n}{4cm} \renewcommand\bgImage{\pscharpath[fillstyle=gradient, @@ -16,8 +16,8 @@ \begin{document} \title{\texttt{pst2pdf}} -\subtitle{Running a PSTricks document with pdflatex;\\ \small v. 0.13} -\author{Herbert Vo\ss \\ Pablo Gonzales Luengo} +\subtitle{Running a PSTricks document with pdflatex;\\ \small v. 0.14} +\author{Herbert Vo\ss \\ Pablo Gonz\'{a}lez Luengo} \docauthor{} \date{\today} \maketitle @@ -26,131 +26,163 @@ \clearpage -\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. +%\begin{abstract} +%\noindent +%\Lprog{pst2pdf} is a \Lprog{perl} \emph{script} for running a PSTricks document in a last run +%with pdflatex. -\vfill\noindent -Thanks to: -Rolf Niepraschk +%\vfill\noindent +%Thanks to: +%Rolf Niepraschk -\end{abstract} +%\end{abstract} + +%\clearpage -\clearpage \section{Introduction} -\PST as \PS-related package uses the programming language \PS for internal -calculations. This is an important adavantage, because floating point arithmetic is no +\PST\ as \PS\ related package uses the programming language \PS\ for internal +calculations. This is an important advantage, because floating point arithmetic is no problem. Nearly all mathematical calculation can be done when running the \DVI-file -with \gs. However, creating a \PDF file in a direct way with \Lprog{pdflatex} is -not possible. \Lprog{pdflatex} cannot understand the \PS related stuff. Instead -of running \Lprog{pdflatex} one can use the Perl script \Lprog{pdf2eps}, it extracts -all \PST-related code into single documents with the same preamble as the original -main document. Then the script runs this document, clips all whitespace arounf the -image and creates a \Lext{pdf}, \Lext{eps}, and \Lext{png} image of the \PST -related code. In a last run which is the \Lprog{pdflatex} the \PST code in the -main dcouemnt is replaced by the created images. - -\section{Running the Perl script} -The genral syntax for the Perl script is simple - -\begin{BDef} -\Lprog{pst2pdf} \Larg{file}\OptArg*{\Lext{tex}} \OptArg*{options} -\end{BDef} +with \gs. However, creating a \PDF\ file in a direct way with \Lprog{pdflatex} is +not possible. \Lprog{pdflatex} cannot understand the \PS\ related stuff. -The options listed in Table~\ref{perloptions} refer only to the script and not the \LaTeX\ file. +Instead of running \Lprog{pdflatex} one can use the \Lprog{perl} \emph{script} \Lprog{pst2pdf}, it extracts +all \PST\ related code into single documents with the same preamble as the original +main document. -\begin{table} -\caption{Possible optional arguments for the Perl script \nxLprog{pst2pdf}}\label{perloptions} -\begin{tabularx}{\linewidth}{@{} l l >{\ttfamily}l X @{}}\\\toprule -\emph{name} & \emph{values} & \textrm{\emph{default}} & \emph{description}\\\midrule -\Loption{--imageDir} & literal & imgages/ & the directory for the created images\\ -\Loption{--Iext} & literal & .pdf & the extension for \Lcs{includegraphics}, can be empty, then - \Lcs{includegraphics} decides which image is used.\\ -\Loption{--DPI} & integer & 75 & the dots per inch for a created png file, if possible\\ -\Loption{--Iscale} & real & 1 & the value for the option \Loption{scale} in \Lcs{includegraphics}. - Important when using a greater dpi value.\\ -\Loption{--tempDir} & literal & . & the temporary directory for the temp files\\ -\Loption{--verbose} & boolean & 1 & for a long \Lprog{pst2pdf} log\\ -\Loption{--clear} & boolean & 0 & delete all temporary files\\ -\Loption{--noImages} & boolean & 0 & create no images, build only the pdf with the alread existing images\\ -\Loption{--runBibTeX} & boolean & 0 & runs \Lprog{bibtex} \\ -\Loption{--runBiber} & boolean & 0 & runs \Lprog{biber} if a file with extension \Lext{bcf} exists \\\bottomrule -\end{tabularx} -\end{table} +The \nxLprog{pst2pdf} \emph{script} runs document, clips all whitespace around the +image and creates a \Lext{pdf} (and \Lext{eps},\Lext{ppm}) image of the \PST\ +related code. In a last run which is the \Lprog{pdflatex} the \PST\ code in the +main document is replaced by the created images. -After the \Lprog{pst2pdf} run there exists a pdf file called \texttt{\Lcs{jobname}-pdf.pdf}. And when not using -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{Requirements} +\subsection{Programs needed} +\nxLprog{pst2pdf} needs \Lprog{pdftk}, \Lprog{ImageMagick} and \Lprog{poppler-utils} (or \Lprog{xpdf-utils}) for the process file in usual way. If you need a create .pdf image files (whitout related software) use single mode (see \ref{single}). -\section{\PST\ code} -The per scripts scans the files for \Lenv{pspicture} and \Lenv{postscript} environments, +\subsection{Preparating file} +The script scan the file 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, the \Lenv{postscript} one not! But it can contain an environment \Lenv{pspicture}, but not vice versa. 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. +Put all related \PST\ package in separate lines in your preamble, \nxLprog{pst2pdf} delete al lines contains \PST\ package before last run. + +This is an example of environments that support for \nxLprog{pst2pdf}: + +\vspace{10pt} +\begin{minipage}[c]{0.25\textwidth} +\begin{verbatim} +\pspicture* +\psset{...} +pstricks code +\endpspicture +\end{verbatim} +\end{minipage} +\begin{minipage}[c]{0.25\textwidth} +\begin{verbatim} +\begin{pspicture} +\psset{...} +pstricks code +\end{pspicture} +\end{verbatim} +\end{minipage} +\begin{minipage}[c]{0.25\textwidth} +\begin{verbatim} +\begin{pspicture*} +\psset{...} +pstricks code +\end{pspicture*} +\end{verbatim} +\end{minipage} +\begin{minipage}[c]{0.25\textwidth} +\begin{verbatim} +\begin{postscript} +\psset{...} +pstricks code +\end{postscript} +\end{verbatim} +\end{minipage} + +\section{Running the script} +\subsection{Default mode} +The general syntax for the \Lprog{perl} \emph{script} is simple: -\bgroup -\raggedright -\nocite{*} -\bibliographystyle{plain} -\bibliography{pst2pdf-doc} -\egroup - -\printindex +\begin{BDef} +\nxLprog{perl} \nxLprog{pst2pdf} \Larg{file.tex} \OptArg*{--options} +\end{BDef} +For \TeX Live users: -\end{document} +\begin{BDef} +\nxLprog{pst2pdf} \Larg{file.tex} \OptArg*{--options} +\end{BDef} +\subsection{Single mode} +\label{single} +If \nxLprog{pst2pdf} can not process a file, used the option \Loption{--single} this process will create the file, whiout pdftk +(take a more time to create images files) by default create PDF files. For exampple: +\begin{BDef} +\nxLprog{pst2pdf} \Larg{file.tex} \OptArg*{--pdf} \OptArg*{--single} +\end{BDef} -\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 -code of the examples and inserts only the code between the environment \Lenv{document}, -which is the sequence \LBEG{document} \ldots\ \LEND{document}. +create file-pdf.pdf and file-pst-1.pdf, file-pst-2.pdf, file-pst-\dots.pdf for all \Lenv{pspicture} and \Lenv{postscript} environments in the directory for the created images (see \ref{options}). -The package provides the environment \Lenv{PSTexample} with the optional -arguments listed in Table~\ref{pst-exaoptions}. +\section{Options} +\label{options} +The options listed in Table~\ref{perloptions} refer only to the \emph{script} and not the \LaTeX\ file. -\begin{table} -\caption{Possible optional arguments for the package \LPack{pst-exa}}\label{pst-exaoptions} -\begin{tabularx}{\linewidth}{@{} l l l X @{}}\\\toprule +\begin{table}[htp] +\caption{Optional arguments for \nxLprog{pst2pdf}}\label{perloptions} +\begin{tabularx}{\linewidth}{@{} l l >{\ttfamily}l X @{}}\\\toprule \emph{name} & \emph{values} & \textrm{\emph{default}} & \emph{description}\\\midrule -\Lkeyword{pos} & \Lkeyval{l},\Lkeyval{r},\Lkeyval{b},\Lkeyval{t} & \Lkeyval{l} & position of the image, maybe left, right, bottom ot top of the code.\\ -\Lkeyword{halign} & \Lkeyval{l},\Lkeyval{r},\Lkeyval{c} & \Lkeyval{c} & the horizontal alignment of the image.\\ -\Lkeyword{valign} & \Lkeyval{l},\Lkeyval{r},\Lkeyval{c} & \Lkeyval{c} & the vertical alignment of the image.\\ -\Lkeyword{frame} & see lst & & option is passed to \Lcs{lstinputlisting} from the package \LPack{listings}.\\ -\Lkeyword{width} & length &0.5\Ldim{linewidth} & the width of the example box.\\ -\Lkeyword{sep} & length &1em & separation between image and code.\\ -\Lkeyword{imageDir} & literal &images/ & directory for the created images and tex files.\\\bottomrule +\Loption{--imageDir} & literal & images/ & the directory for the created images.\\ +\Loption{--Iext} & literal & .pdf & the extension for \Loption{PrependGraphicsExtensions}.\\ +\Loption{--DPI} & integer & 75 & the dots per inch for a created \Lext{ppm} file.\\ +\Loption{--Iscale} & real & 1 & the value for the option \Loption{scale} in \Lcs{includegraphics}.\\ +\Loption{--eps} & boolean & 0 & creates \Lext{eps} images files (need pdftops).\\ +\Loption{--ppm} & boolean & 0 & creates \Lext{ppm} images files (need pdftoppm).\\ +\Loption{--files} & boolean & 0 & creates \Lext{tex} for all images.\\ +\Loption{--verbose} & boolean & 1 & for a long \nxLprog{pst2pdf} log.\\ +\Loption{--norun} & boolean & 0 & create files, but no compile.\\ +\Loption{--clear} & boolean & 0 & delete all temporary files.\\ +\Loption{--help} & boolean & 1 & print help and exit.\\ +\Loption{--single} & boolean & 0 & create images type (whitout pdftk).\\ +\Loption{--all} & boolean & 0 & generte all image type (.pdf, .eps, .tex).\\ +\Loption{--version} & boolean & 0 & print version and exit.\\ +\Loption{--license} & boolean & 0 & print license and exit.\\ +\Loption{--xetex} & boolean & 0 & using \Lprog{xelatex} instead of \Lprog{latex} for the process.\\ +\Loption{--noImages} & boolean & 0 & generate files but no images (need \Loption{--norun}).\\ +\Loption{--runBibTeX}& boolean & 0 & runs \Lprog{bibtex} \\ +\Loption{--runBiber} & boolean & 0 & runs \Lprog{biber} if a file with extension \Lext{bcf} exists \\\bottomrule \end{tabularx} \end{table} +For Help in command line use: +\begin{BDef} +\nxLprog{pst2pdf} \OptArg*{--help} +\end{BDef} +\section{Other image format} +If your need \Lext{png}, \Lext{jpg} or other image type use \nxLprog{pst2pdf} \Larg{file.tex} \OptArg*{--ppm} , than move to images dir and use \nxLprog{mogrify} command (from \Lprog{ImageMagick}), for examples:\\ - - - -\section{Examples} -The package contains some example files for running the script without and -with the package \LPack{pst-exa}. - -\begin{compactdesc} -\item[test1.tex] running \verb=pst2pdf test1=. The test file contains a jpg-image, which is only possible with pdflatex. -\item[test2.tex] same as \LFile{test1}, but with using \LPack{pst-exa} and example--code combination. -\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}} - - - +\begin{BDef} +\nxLprog{mogrify} -format \OptArg*{png *.ppm} +\end{BDef} +generate PNG images files and \\ +\begin{BDef} +\nxLprog{mogrify} -format \OptArg*{jpg *.ppm} +\end{BDef} +generate JPG images files. +\bgroup +\raggedright +\nocite{*} +\bibliographystyle{plain} +\bibliography{pst2pdf-doc} +\egroup +\printindex +\end{document} diff --git a/Master/texmf-dist/doc/latex/pst2pdf/test.pdf b/Master/texmf-dist/doc/latex/pst2pdf/test.pdf Binary files differdeleted file mode 100644 index 8ffafa7a152..00000000000 --- a/Master/texmf-dist/doc/latex/pst2pdf/test.pdf +++ /dev/null diff --git a/Master/texmf-dist/doc/latex/pst2pdf/test.tex b/Master/texmf-dist/doc/latex/pst2pdf/test.tex deleted file mode 100644 index c664fb0a0d7..00000000000 --- a/Master/texmf-dist/doc/latex/pst2pdf/test.tex +++ /dev/null @@ -1,408 +0,0 @@ -\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/doc/latex/pst2pdf/test2.pdf b/Master/texmf-dist/doc/latex/pst2pdf/test2.pdf Binary files differdeleted file mode 100644 index e92616a5433..00000000000 --- a/Master/texmf-dist/doc/latex/pst2pdf/test2.pdf +++ /dev/null diff --git a/Master/texmf-dist/scripts/pst2pdf/pst2pdf b/Master/texmf-dist/scripts/pst2pdf/pst2pdf deleted file mode 100755 index da0aba08e4d..00000000000 --- a/Master/texmf-dist/scripts/pst2pdf/pst2pdf +++ /dev/null @@ -1,524 +0,0 @@ -eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' && eval 'exec perl -S $0 $argv:q' - if 0; - -use strict; # to be sure, that all is safe ... :-) - -# $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 -# 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 -# -use File::Path; # creating/removing dirs -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 $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 $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 --------------------------- -#----------------------- 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 -my $TeXfile = "$path$name$ext"; -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"); -LOG ("==> DPI = $DPI"); -LOG ("==> Iscale = $Iscale"); -LOG ("==> tempDir = $tempDir"); -LOG ("==> verbose = $verbose"); -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 = 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 (-d $imageDir) { LOG ("$imageDir exists") } - else { mkdir("$imageDir", 0744) || die "cannot mkdir $imageDir: $!"; -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.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. -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} - $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} - close(FILEp); # close preamble - LOG ("----- Close Preamble ------"); - return; - } else { - print FILEp "$_"; # write into preamble - LOG ("$_"); - } - } - close(FILEp); - if ( $verbose ) { LOG("<-----Preamble<----"); } - 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 - if (!$EndDocument) { - 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} - 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 (($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} - $type = 2; - $line = substr($line,$iPS-1); # add rest of the line - LOG("PS-Zeile: $line"); - } - 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 - 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... - $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 - LOG ("searchPS: $line"); - $depth--; - if ($depth < 0) { - $type = -1; - 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} - else { push @PS,substr($line,0,$iPST+14); } # \end{pspicture} - LOG ("searchPS: set \$type=$type"); - push @PStotal,[@PS]; # add PS sequence - LOG ("---->PS---->\n@PS\n<----PS<----"); - @PS = (); # start new PS sequence - } # no pspicture env left - } else { push @PS,$line; } # pspicture inside postscript - } elsif ($iPS > 0) { # must be type=1 -> stop Scan - LOG ("searchPS: $line"); - $type = -1; - push @PS,substr($line,0,$iPS+15); # add line - LOG ("searchPS: set \$type=$type"); - push @PStotal,[@PS]; # add PS sequence - LOG ("---->PS---->\n@PS\n<----PS<----"); - @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 (( index($line,"end{verbatim}") > 0 ) or ( index($line,"end{lstlisting}") > 0 )) { $iVerb = 0; } - }} - if ( $verbose ) { - LOG("---->PStotal---->"); - for my $aref ( @PStotal ) { - my @a = @$aref; - my $i = 0; - foreach ( @a ) { LOG ($a[$i]); $i++; } - } - LOG ("<----PStotal<----"); - } - close(FILE); - return @PStotal; # return all PS sequences -} - -# Creating subfiles.tex and .eps for images -sub runTeX{ - my $filename = pop; - 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 { - my $filename = pop; - my @PSarray = searchPS(); - if ( $verbose ) { - LOG("---->PSarray---->"); - for my $aref ( @PSarray ) { - my @a = @$aref; - my $i = 0; - foreach ( @a ) { print LOG $a[$i]."\n"; $i++; } - } - LOG("<----PSarray<----"); - my $no = @PSarray; - LOG("PS: ".$no." PS sequence(s)"); - } - 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!"; - while (<FILEp>) {print FILEsub $_; } - print FILEsub "\\pagestyle{empty}\n"; - print FILEsub "\\begin{document}\n"; - if ( $verbose ) { LOG("\@PS: $_"); } - foreach ( @PS ) { print FILEsub "$_\n"; } - print FILEsub "\\end{document}\n"; - close (FILEsub); - close (FILEp); - 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!"; - my $ignore = 0; - my $IMGno = 1; - my $depth = -1; - my $type = -1; - my $EndDocument = 0; # ignore all after \end{document} - my $iVerb = 0; - 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} - if ( !$iVerb ) { - my $i = index($_,"end{document}"); - if ($i > 0) { print PDF $_; $EndDocument++; LOG("EndDocument in runpdfTeX"); } - if ( !$EndDocument ) { - my $iPS = index($_,"begin{postscript}"); - if ( $iPS > 0 ) { - $type = 2; - $ignore = 1; - if ($iPS > 1) { print PDF substr($_,0,--$iPS); } # add preceeding text - 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 - $ignore = 1; - $type = 1; - $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]{$pdfname-tmp-$IMGno}"; # use \graphicspath - $IMGno=$IMGno+1; - LOG("Increase Image counter: $IMGno"); - } - } - } - 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 - $ignore = 0; - $type=-1; - } # 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 (index($_,"endpspicture") > 0) # add rest of line, depends to type - { print PDF substr($_,$iPST+12); } # \endpspicture - elsif (index($_,"pspicture*") > 0) - { print PDF substr($_,$iPST+15); } # \end{pspicture*} - else { print PDF substr($_,$iPST+14); } # \end{pspicture} - $depth--; - LOG("Decrease depth: $depth"); - if ($depth < 0) { $ignore = 0; } - } - } - } # if ( !$EndDocument ) - } else { print PDF $_; } # if ( $iVerb ) - if (( index($_,"end{verbatim}") > 0 ) or ( index($_,"end{lstlisting}") > 0 )) { $iVerb = 0; } - } # while (<FILE>) - close (FILE); - close (PDF); -# 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__ diff --git a/Master/texmf-dist/scripts/pst2pdf/pst2pdf.pl b/Master/texmf-dist/scripts/pst2pdf/pst2pdf.pl new file mode 100755 index 00000000000..040cdf7e7dd --- /dev/null +++ b/Master/texmf-dist/scripts/pst2pdf/pst2pdf.pl @@ -0,0 +1,659 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' && eval 'exec perl -S $0 $argv:q' + if 0; + +use strict; # to be sure, that all is safe ... :-) + +# $Id: pst2pdf.pl 611 2011-12-14 08:41:35Z herbert $ +# v. 0.14 simplify the use of PSTricks with pdf +# 2011-12-12 (c) Herbert Voss <hvoss@tug.org> +# Pablo González Luengo +# +# 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 +# +use File::Path; # creating/removing dirs +use File::Copy; # copying files +use File::Basename; # scan argument +use IO::File; # simple IO operation +use Getopt::Long; # read parameter +use autodie; +#----------------------- User part begin ------------------------ +my $imageDir = "images";# where to save the images +my $Iext = ".pdf"; # leave empty, if not a special one +my $tempDir = "."; # temporary directory +my $verbose = 0; # 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 $noImages = 0; # 1->create no images +my $single = 0; # 1->single create 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 $eps = 0; # 1->create .eps files +my $files = 0; # 1->create image files .tex +my $all = 0; # 1->create all images and files for type +my $nopdftk = 0; # 1->create all images and files for type in single mode +my $xetex = 0; # 1->Using XeLaTeX for compilation. +#----------------------- User part end --------------------------- +#-------------- 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 or eps or ppm, default pdf) + 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 + --noImages - generate files without compile (need -norun) + --verbose - creates 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 + --files - create images files (.tex) for all pst enviroment + --single - create images whitout pdftk and auto-pst-pdf + --all - create all image type and images.tex + --nopdftk - create all image type and images.tex in single mode + --xetex - using XeLaTeX for compilation. +Examples: +* $program test.tex --all +* produce test-pdf.tex and ppm,eps,tex and pdf for pst-enviroment 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 + "single" => \$single, # flag + "runBibTeX" => \$runBibTeX, # flag + "ppm" => \$ppm, # flag + "norun" => \$norun, # flag + "eps" => \$eps, # flag + "files" => \$files, # flag + "all" => \$all, # flag + "nopdftk" => \$nopdftk, # flag + "xetex" => \$xetex, # flag + "runBiber" => \$runBiber, # flag + "verbose" => \$verbose, +) or die $usage; +#---------------- help functions -------------------------------- +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 = ""; + @ARGV > 0 or errorUsage "Input filename missing"; + @ARGV < 2 or errorUsage "Unknown option or too many input files"; + $InputFilename = $ARGV[0]; + +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 +my $TeXfile = "$path$name$ext"; +open my $LOGfile,'>', "$tempDir/$name.plog"; # our own log file + LOG ("Parameters:"); + LOG ("==> imageDir = $imageDir"); + LOG ("==> Iext = $Iext"); + LOG ("==> DPI = $DPI"); + LOG ("==> Iscale = $Iscale"); + LOG ("==> tempDir = $tempDir"); + LOG ("==> verbose = $verbose"); + LOG ("==> clear = $clear"); + LOG ("==> noImages = $noImages"); + LOG ("==> single = $single"); + LOG ("==> runBibTeX= $runBibTeX"); + LOG ("==> runBiber = $runBiber"); + LOG ("==> ppm = $ppm"); + LOG ("==> norun = $norun"); + LOG ("==> eps = $eps"); + LOG ("==> files = $files"); + LOG ("==> xetex = $xetex"); + +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 $name-pdf.tex"); + $norun = 1; +} +if ($eps) { + LOG ("Generate .eps files ..."); + $eps = 1; +} +if ($files) { + LOG ("Generate .tex images files ..."); + $files=1; +} +if ($all) { + LOG ("Generate all images files ..."); + $files=$eps = $ppm = $clear = 1; +} +if ($nopdftk) { + LOG ("single mode generate all images files ..."); + $single=$files=$eps = $ppm = $clear = 1; +} +if ($xetex) { + LOG ("Compiling using XeLaTeX ..."); + $xetex=1; +} + +my $imgNo = 1; # internal image counter +#----------- single mode no need pdftk and auto-pst-pdf ---------------------- +if ($single) { +LOG ("Running on [$path][$name][$ext]"); +open my $FILE,'<', "$TeXfile" ; # the source +LOG ("single mode generate images..."); +if (-d $imageDir) { LOG ("$imageDir exists") } +else { mkdir("$imageDir", 0744) ;} +savePreamble($name); +runFile($name); +close $FILE; # close source file +close $LOGfile; +} +#---------------- end single -------------- +else{ +LOG ("Running on [$path][$name][$ext]"); +open my $FILE,'<', "$TeXfile" ; # the source +if (!$noImages ) { +if (-d $imageDir) { LOG ("$imageDir exists") } +else { mkdir("$imageDir", 0744) ; +LOG ("Imagedir created"); } +LOG ("go to savePreamble ... "); +runBurst($tempDir); +savePreamble($name); +runFile($name); +LOG ("done!\n go to runFile ..."); +LOG ("done!"); +close $FILE; # close source file +close $LOGfile; +}# !noImages +} +#------------ Create filename-pics.pdf, split and generate .ppm +sub runBurst{ +if ($single){ print "single mode";} +else{ +my $entrada = "$TeXfile"; +my $salida = "$name-pics.tex"; + open my $ENTRADA,'<', "$entrada"; + open my $SALIDA,'>',"$salida"; + print $SALIDA "\\AtBeginDocument\{\n"; +if ($xetex){ + print $SALIDA "\\RequirePackage\[xetex,active,tightpage\]\{preview\}\n";} +else{ + print $SALIDA "\\RequirePackage\[active,dvips,tightpage\]\{preview\}\n";} + print $SALIDA "\\renewcommand\\PreviewBbAdjust\{-600pt -600pt 600pt 600pt\}\n"; + print $SALIDA "\\newenvironment{postscript}{}{}\n"; + print $SALIDA "\\PreviewEnvironment\{postscript\}\n"; + print $SALIDA "\\PreviewEnvironment\{pspicture\}\}\n"; + while ( my $linea = <$ENTRADA> ) { + print $SALIDA $linea;} + close $ENTRADA; + close $SALIDA; +# --------------------Compiling File -------------------------- +if ($xetex){ + system("xelatex -interaction=batchmode $tempDir/$name-pics.tex"); + system("pdfcrop -xetex $tempDir/$name-pics.pdf $tempDir/$name-pics.pdf");} +else{ + system("latex -interaction=batchmode $tempDir/$name-pics.tex"); + system("dvips $tempDir/$name-pics.dvi"); + system("ps2pdf -dProcessColorModel=/DeviceCMYK -dPDFSETTINGS=/prepress $tempDir/$name-pics.ps"); + system("pdfcrop $tempDir/$name-pics.pdf $tempDir/$name-pics.pdf");} + system("pdftk $tempDir/$name-pics.pdf burst output $imageDir/$name-fig-\%1d.pdf"); +if ($ppm){ + system("pdftoppm -r $DPI $tempDir/$name-pics.pdf $imageDir/$name-fig");} + } +} +#------------ end pdftk burst +LOG ("runpdfTeX ... "); +runpdfTeX("$path$name",$name); +LOG ("all finished ... :-)"); +# 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. +# ----------------- Save Preamble ---------------------------------------- +sub savePreamble { +my $filename = pop; # get the file name + LOG ("----- Start Preamble -----"); +open my $FILEp,'>',"$tempDir/$filename.preamble"; +open my $FILE, '<', "$name.tex"; + while (<$FILE>) { # read all until \begin{document} + my $i = index($_,"begin{document}"); + if ($i > 0) { + if ($i > 1) { print $FILEp substr($_,0,--$i); } # write all until \begin{document} + if ($single) { + print $FILEp "\\newenvironment{postscript}{}{}\n"; + print $FILEp "\\pagestyle{empty}\n"; + } +close $FILEp; # close preamble + LOG ("----- Close Preamble ------"); + return; + } +else { + print $FILEp "$_"; # write into preamble + LOG ("$_"); + } +} +close $FILE; +close $FILEp; + if ( $verbose ) { LOG("<-----Preamble<----"); } + 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 + open my $FILE, '<', "$name.tex"; + while (<$FILE>) { # scan the input file + if (!$EndDocument) { + chomp; # delete EOL character + my $line = $_; # save line + if ( !$iVerb ) { + $iVerb = ((index($line,"begin{verbatim}") > 0) + or (index($line,"begin{lstlisting}") > 0) + or (index($line,"begin{Verbatim}") > 0) + or (index($line,"begin{verbatim*}") > 0)); + } # 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 (($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} + $type = 2; + $line = substr($line,$iPS-1); # add rest of the line + LOG("PS-Zeile: $line"); + } + 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 + 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... + $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 + LOG ("searchPS: $line"); + $depth--; + if ($depth < 0) { + $type = -1; + 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} + else { push @PS,substr($line,0,$iPST+14); } # \end{pspicture} + LOG ("searchPS: set \$type=$type"); + push @PStotal,[@PS]; # add PS sequence + LOG ("---->PS---->\n@PS\n<----PS<----"); + @PS = (); # start new PS sequence + } # no pspicture env left + } else { push @PS,$line; } # pspicture inside postscript + } elsif ($iPS > 0) { # must be type=1 -> stop Scan + LOG ("searchPS: $line"); + $type = -1; + push @PS,substr($line,0,$iPS+15); # add line + LOG ("searchPS: set \$type=$type"); + push @PStotal,[@PS]; # add PS sequence + LOG ("---->PS---->\n@PS\n<----PS<----"); + @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 (( index($line,"end{verbatim}") > 0 ) + or ( index($line,"end{lstlisting}") > 0 ) + or ( index($line,"end{Verbatim}") > 0 ) + or ( index($line,"end{verbatim*}") > 0 )) { $iVerb = 0; } + }} + if ( $verbose ) { + LOG("---->PStotal---->"); + for my $aref ( @PStotal ) { + my @a = @$aref; + my $i = 1; + foreach ( @a ) { LOG ($a[$i]); $i=$i+1; } + } + LOG ("<----PStotal<----"); + } + close $FILE; + return @PStotal; # return all PS sequences +} +# Creating ifile.tex and eps, pdf and ppm for images +if ($single){ +sub runsingle{ + my $filename = pop; + if ($xetex){ + system("xelatex -interaction=batchmode $tempDir/$filename-fig"); + system("pdfcrop -xetex $tempDir/$filename-fig.pdf $imageDir/$filename-fig-$imgNo.pdf");} + else{ + system("latex -interaction=batchmode $tempDir/$filename-fig"); + system("dvips $tempDir/$filename-fig"); + system("ps2pdf -dProcessColorModel=/DeviceCMYK -dPDFSETTINGS=/prepress $tempDir/$filename-fig.ps"); + system("pdfcrop $tempDir/$filename-fig.pdf $imageDir/$filename-fig-$imgNo.pdf");} + if ($files){ + copy("$filename-fig.tex", "$imageDir/$filename-fig-$imgNo.tex");} + system("pdfcrop $tempDir/$filename-fig.pdf $imageDir/$filename-fig-$imgNo.pdf"); + if ($eps) { + system("pdftops -level3 -eps $imageDir/$filename-fig-$imgNo.pdf $imageDir/$filename-fig-$imgNo.eps");} + if ($ppm) { + system("pdftoppm -r $DPI $imageDir/$filename-fig-$imgNo.pdf $imageDir/$filename-fig-$imgNo");} + $imgNo=$imgNo+1; + } +} +else{ +#----------------- Creating files.tex and .eps for images -------------- +sub runTeX{ + my $filename = pop; + if ($eps){ + system("pdftops -level3 -eps $imageDir/$filename-$imgNo.pdf $imageDir/$filename-$imgNo.eps"); + } + if ($files){ + copy("$filename.tex", "$imageDir/$filename-$imgNo.tex"); +} + $imgNo=$imgNo+1; +} +} +sub runFile { + my $filename = pop; + my @PSarray = searchPS(); + if ( $verbose ) { + LOG("---->PSarray---->"); + for my $aref ( @PSarray ) { + my @a = @$aref; + my $i = 1; + foreach ( @a ) { print LOG $a[$i]."\n"; $i=$i+1; } + } + LOG("<----PSarray<----"); + my $no = @PSarray; + LOG("PS: ".$no." PS sequence(s)"); + } + for my $aref ( @PSarray ) { + my @PS = @$aref; + open my $FILEp,'<',"$tempDir/$filename.preamble"; + open my $FILEsub,'>',"$tempDir/$filename-fig.tex"; + while (<$FILEp>) {print $FILEsub $_; } + print $FILEsub "\\begin{document}\n"; + if ( $verbose ) { LOG("\@PS: $_"); } + foreach ( @PS ) { print $FILEsub "$_\n"; } + print $FILEsub "\\end{document}"; + close $FILEsub; + close $FILEp; + if ($single) { + runsingle("$name"); + } + else{ + runTeX("$tempDir/$name-fig"); + } +} +} +# ----------------Renaming ppm need for correct name +if(!$noImages){ + my $dren = "$tempDir/$imageDir"; + my $fichero = ''; + my $ppmren = ''; + my $renNo = 1; + if(opendir(DIR,$dren)){ + foreach (readdir DIR){ + $fichero = $_; + if ( $fichero =~ /($name-fig-)(\d+|\d+[-]\d+).ppm/) { + my $renNo = int($2); + my $newname="$1$renNo.ppm"; + $ppmren = rename("$dren/$fichero","$dren/$newname"); + } + } +} +closedir DIR; +}# end renaming +#--------------------------- Replace files---------------------- +sub runpdfTeX() { + my ($name,$pdfname) = @_; + open my $PDF,'>',"$tempDir/$pdfname-pdf.tex"; + open my $FILE,'<',"$name.tex"; + my $ignore = 0; + my $IMGno = 1; + my $depth = -1; + my $type = -1; + my $EndDocument = 0; # ignore all after \end{document} + my $iVerb = 0; + while (<$FILE>) { # scan the input file + if ( !$iVerb ) { + $iVerb = ((index($_,"begin{verbatim}") > 0) + or (index($_,"begin{lstlisting}") > 0) + or (index($_,"begin{Verbatim}") > 0) + or (index($_,"begin{verbatim*}") > 0)); + } # do nothing until \end{verbatim}|| \end{lstlisting} + if ( !$iVerb ) { + my $i = index($_,"end{document}"); + if ($i > 0) { print $PDF $_; $EndDocument++; LOG("EndDocument in runpdfTeX"); } + if ( !$EndDocument ) { + my $iPS = index($_,"begin{postscript}"); + if ( $iPS > 0 ) { + $type = 2; + $ignore = 1; + if ($iPS > 1) { print $PDF substr($_,0,--$iPS); } # add preceeding text + print $PDF "\\includegraphics[scale=$Iscale]{$pdfname-fig-$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 \\pspicture... + if ( $iPST >= 0 ) { # start Scan + $ignore = 1; + $type = 1; + $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]{$pdfname-fig-$IMGno}"; # use \graphicspath + $IMGno=$IMGno+1; + LOG("Increase Image counter: $IMGno"); + } + } + } + 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 + $ignore = 0; + $type=-1; + } # 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 (index($_,"endpspicture") > 0) # add rest of line, depends to type + { print $PDF substr($_,$iPST+12); } # \endpspicture + elsif (index($_,"pspicture*") > 0) + { print $PDF substr($_,$iPST+15); } # \end{pspicture*} + else{ print $PDF substr($_,$iPST+14); } # \end{pspicture} + $depth--; + LOG("Decrease depth: $depth"); + if ($depth < 0) { $ignore = 0; } + } + } + } # if ( !$EndDocument ) + } + else { print $PDF $_; } # if ( $iVerb ) + if (( index($_,"end{verbatim}") > 0 ) + or ( index($_,"end{lstlisting}") > 0 ) + or ( index($_,"end{Verbatim}") > 0 ) + or ( index($_,"end{verbatim*}") > 0 )) { $iVerb = 0; } + } # while (<$FILE>) + close $FILE; + close $PDF; +#------------------- Coment pst-package for pdfLaTeX -------------------- + open my $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); + if(!$xetex){ + $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}". $dos); + + open my $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 { + if($xetex){ + system("xelatex -interaction=batchmode $tempDir/$pdfname-pdf"); print "Done\n";} + else{ + system("pdflatex -interaction=batchmode $tempDir/$pdfname-pdf"); print "Done\n";} + } + 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){ + if($xetex){ + system("xelatex -interaction=batchmode $tempDir/$pdfname-pdf");} + else{ + system("pdflatex -interaction=batchmode $tempDir/$pdfname-pdf");} + } + if ($ppm){ + print "If you need to create jpg/png/svg type cd $imageDir and run\n"; + print "mogrify -format [ext] *.ppm\n"; + } + if ($clear) { + if ($norun){} + if ($single) { + unlink "$tempDir/$name-fig.pdf"; + if(!$xetex){ + unlink "$tempDir/$name-fig.dvi"; + unlink "$tempDir/$name-fig.ps"; + } + unlink "$tempDir/$name-fig.aux"; + unlink "$tempDir/$name-fig.log"; + unlink "$tempDir/$name-fig.tex"; + if(!$verbose) { + unlink "$tempDir/$name.plog"; + } + unlink "$tempDir/$name.preamble"; + unlink "$tempDir/$name-pdf.aux"; + unlink "$tempDir/$name-pdf.log"; + } + else{ + if(!$verbose) { + unlink "$tempDir/$name.plog"; + } + unlink "$tempDir/$name.preamble"; + unlink "$tempDir/$name-pdf.aux"; + unlink "$tempDir/$name-pdf.log"; + unlink "$tempDir/$name-pics.pdf"; + unlink "$tempDir/$name-pics.tex"; + unlink "$tempDir/$name-pics.aux"; + if(!$xetex){ + unlink "$tempDir/$name-pics.dvi"; + unlink "$tempDir/$name-pics.ps";} + unlink "$tempDir/$name-pics.log"; + unlink "$tempDir/$name-fig.tex"; + } + } + } + +sub LOG() { + if ( $verbose ) { print $LOGfile "@_\n"; } + } +__END__ diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds index 01a07625069..09510ea49ef 100755 --- a/Master/tlpkg/libexec/ctan2tds +++ b/Master/tlpkg/libexec/ctan2tds @@ -832,6 +832,7 @@ chomp ($Build = `cd $Master/../Build/source && pwd`); 'pst-tvz', "&MAKEpst", 'pst-uml', "&MAKEpst", 'pst-vue3d', "&MAKEpst", + 'pst2pdf', "&MAKEflatten", 'pstdoc', "die 'skipping, requires python'", 'pstrees', "die 'skipping, obsolete (for latex 2.09)'", 'pstricks', "&MAKEpstricks", @@ -2338,7 +2339,7 @@ $standardxmt='\.xmt'; 'pkfix' => '\.pl$', 'pkfix-helper' => 'pkfix-helper$', 'pmx' => '\.lua$', - 'pst2pdf' => 'pst2pdf$', + 'pst2pdf' => 'pst2pdf\.pl$', 'purifyeps' => 'purifyeps$', 'sty2dtx' => '\.pl$', 'svn-multi' => 'svn-multi\.pl$', |