From 98ac773cee4cd6ed80acef55d20924f104ce2993 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 18 Aug 2009 17:40:52 +0000 Subject: new script fig4latex (24jul09) git-svn-id: svn://tug.org/texlive/trunk@14752 c570f23f-e606-0410-a88d-b1316a301751 --- .../source/texk/texlive/linked_scripts/Makefile.am | 1 + .../source/texk/texlive/linked_scripts/Makefile.in | 1 + .../texlive/linked_scripts/fig4latex/fig4latex | 158 +++++++++++++++++++++ 3 files changed, 160 insertions(+) create mode 100755 Build/source/texk/texlive/linked_scripts/fig4latex/fig4latex (limited to 'Build/source/texk') diff --git a/Build/source/texk/texlive/linked_scripts/Makefile.am b/Build/source/texk/texlive/linked_scripts/Makefile.am index d27c0483162..35e93a7e0a0 100644 --- a/Build/source/texk/texlive/linked_scripts/Makefile.am +++ b/Build/source/texk/texlive/linked_scripts/Makefile.am @@ -57,6 +57,7 @@ nobase_dist_script_SCRIPTS = \ dviasm/dviasm.py \ epspdf/epspdf \ epspdf/epspdftk \ + fig4latex/fig4latex \ fontools/afm2afm \ fontools/autoinst \ fontools/cmap2enc \ diff --git a/Build/source/texk/texlive/linked_scripts/Makefile.in b/Build/source/texk/texlive/linked_scripts/Makefile.in index ed0ab5c15c3..46129fa44ee 100644 --- a/Build/source/texk/texlive/linked_scripts/Makefile.in +++ b/Build/source/texk/texlive/linked_scripts/Makefile.in @@ -200,6 +200,7 @@ nobase_dist_script_SCRIPTS = \ dviasm/dviasm.py \ epspdf/epspdf \ epspdf/epspdftk \ + fig4latex/fig4latex \ fontools/afm2afm \ fontools/autoinst \ fontools/cmap2enc \ diff --git a/Build/source/texk/texlive/linked_scripts/fig4latex/fig4latex b/Build/source/texk/texlive/linked_scripts/fig4latex/fig4latex new file mode 100755 index 00000000000..cda79cb1569 --- /dev/null +++ b/Build/source/texk/texlive/linked_scripts/fig4latex/fig4latex @@ -0,0 +1,158 @@ +#!/usr/bin/env perl + +# Copyright 2009 Joseph E. Fields +# email: fieldsj1@southernct.edu +# +# 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 3 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, see . + +$version = "0.2"; + +# Version 0.2 +# Changed hashbang to use the '/usr/bin/env perl' hack for portability +# Added a check on the return status of open("> Makefile"). +# +# Version 0.1 +# Original release. + +#default values of a few variables + +$mag_factor = 1.0; +$pdflatex = 0; +$figure_directory = "./"; + + +&parse_command_line; + + +if ($figure_directory =~ m/\/$/) { + $pref = $figure_directory; +} else { + $pref = $figure_directory . "/"; +} + + +#Look for files ending with the .fig extension in the current directory. + +opendir(THISDIR, "."); +@fig_files = grep(/\.fig$/, readdir(THISDIR)); + +open(MAKEFILE, "> Makefile") || die "Can't open Makefile for write. \n"; ; + +#First we run through the list of .fig files to make a list of corresponding +#.tex files these are used as the dependencies for the "all" target. + +@tex_files = (); +@base_names = (); + +foreach $fig (@fig_files) { + $tex_file_name = $fig; + $base = $fig; + $tex_file_name =~ s/\.fig$/\.tex/; + $base =~ s/\.fig$//; + push(@tex_files, $tex_file_name); + push(@base_names, $base); +} +print MAKEFILE "\#\n\# fig4latex makefile\n\#\n\n"; +print MAKEFILE "all: @tex_files\n\n"; + +#For each .fig file we need to add appropriate lines to the Makefile + +if ($pdflatex == 1){ + $ext = ".pdf"; +} else { + $ext = ".eps"; +} + +foreach $nm (@base_names) { + print MAKEFILE "\# translation into pstex\n\n"; + print MAKEFILE "$nm\.tex: $nm$ext \n"; + print MAKEFILE "\tfig2dev -L pstex_t -p $pref$nm$ext -m $mag_factor $nm\.fig > $nm\.tex\n\n"; + print MAKEFILE "$nm\.pdf: $nm\.eps \n"; + print MAKEFILE "\tepstopdf $nm\.eps\n\n"; + print MAKEFILE "$nm\.eps: $nm\.fig \n"; + print MAKEFILE "\tfig2dev -L pstex -m $mag_factor $nm\.fig > $nm\.eps\n\n"; + print MAKEFILE "clean::\n"; + print MAKEFILE "\trm -f $nm\.tex $nm\.eps $nm\.pdf\n\n\n"; +} + +close(MAKEFILE); + +print "\nNow run \'make\' to update your graphics files.\n\n"; +print "If you are changing from PdfLaTeX (-p) to LaTeX (-l), or vice versa, \n"; +print "run \'make clean\' then \'make\'.\n\n"; + +sub parse_command_line{ + while ($ARGV[0] =~ /^-/) { + $_ = shift @ARGV; # in a subroutine + if (/^-m$/) { + $mag_factor = shift @ARGV; + if ( ! ($mag_factor > 0.0) ) { + print "\nThe next thing after the -m option is supposed to be a number\n"; + die("Bad arg for -m (magnification factor): $mag_factor\n\n"); + } + } + elsif (/^-p$/) { + $pdflatex = 1; + } + elsif (/^-l$/) { + $pdflatex = 0; + } + elsif (/^-d$/) { + $figure_directory = shift @ARGV; + if (! (-d "../".$figure_directory)) { + print "\nArgument after -d must be the name of the directory\n"; + print "containing the figures, which you should currently be in!\n\n"; + die; + } + if ($figure_directory eq "") { + print "\nPlease specify a path to the figures (relative to the\n"; + print " LaTeX source files). \n\n"; + die; + } + } + elsif (/^-h$/ || /^--help$/) { + &usage && die; + } + elsif (/^--version$/) { + print "\nThis is Fig4latex, version $version.\n\n"; + die; + } + else { + &usage && die; + } + } +} + +sub usage{ + print <<"MULTILINE"; + +Usage: fig4latex [-d dir] [-m NUM] [-p] [-l] [-h] + + -d DIR Directory containing the figures (a path relative to + the directory where your LaTeX source files are). + -m NUM Magnification factor. + -p Pdflatex -- create makefile for use with pdflatex -- the images + get converted to pdf format. + -l Latex -- create makefile for use with (regular) latex -- the images + are exported as eps format. (this is the default) + -h Help -- print this message and quit. + +This program creates a Makefile. Running 'make' will then search the +current director for .fig files and use fig2dev (pstex and pstex_t) to +create .tex files which are \input into your latex file to include the +graphic. Any text in the figure with the 'special' flag set is processed +by LaTeX. +MULTILINE +} + -- cgit v1.2.3