converting mpost(ed) files individually to eps

Robert Bonomi bonomi at mail.r-bonomi.com
Tue Jun 19 01:30:17 UTC 2012


> > Date: Mon, 18 Jun 2012 19:50:01 -0500
> > From: Antonio Olivares <olivares14031 at gmail.com>
> > Subject: converting mpost(ed) files individually to eps
> >
> > Dear folks,
> >
> > I am taking a plunge to learning a little bit of metapost.  I have
> > found examples page using google.
> >
> > http://www.tlhiv.org/MetaPost/examples/examples.html
> >
> > I want to convert output files individually to eps.
> >
> > I can only convert the first one output say file.1 to file.eps, but
> > when there are more files, ie, file.2, ..., file.10, all the files
> > between .2 and .10 do not get converted/saved to *.eps extension.
>
> Correct.  The script you showd processes a _single_ argument only.
> Use a 'for loop' to handle multiple files, something like  --
>    for thisfile in file.* do
>     `mpost-eps $thisfile
>    end
>
> >
> > [[ sneck -- copy of script itself ]]
> >
> > I run the script
> > $ ./mpost-eps file
> > without *.mp extension.  but only one gets converted.  I don't know
> > enough shell programming to do something like
> > for i in file.i do
> > $GS -dNOPAUSE -dBATCH -sDEVICE=epswrite -sOutputFile=$1.eps $1.i
>
> You were *close*.  what you wanted is (assuming MPOST and GS are defined:
>   for file in {{list or wildcard}} do
>    $MPOST $file
>    $GS -dNOPAUSE -dBATCH -sDEVICE=epswrite -sOutputFile=$file.eps $file.1
>   end

I may have understood.  if it is MPOST that is producing the multiple files,
then you want:
   $MPOST 
   for file in file.*  do
    $GS -dNOPAUSE -dBATCH -sDEVICE=epswrite -sOutputFile=$file.eps $file
   end

This will produce a series of files named  file.1.eps, file.2.eps, etc.


More information about the freebsd-questions mailing list