summaryrefslogtreecommitdiff
path: root/tex/context/base/texexec.pl
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/texexec.pl')
-rw-r--r--tex/context/base/texexec.pl624
1 files changed, 624 insertions, 0 deletions
diff --git a/tex/context/base/texexec.pl b/tex/context/base/texexec.pl
new file mode 100644
index 000000000..0a8d69dab
--- /dev/null
+++ b/tex/context/base/texexec.pl
@@ -0,0 +1,624 @@
+#!/usr/bin/perl
+#-w
+
+# nog doen: automatisch log scannen op overfull en missing
+#
+# fastmode tzt anders: \iffastmode \fi
+
+#D \module
+#D [ file=texexec.pl,
+#D version=1999.01.07,
+#D title=running \ConTeXt,
+#D subtitle=\TEXEXEC,
+#D author=Hans Hagen,
+#D date=\currentdate,
+#D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+#C
+#C This script is part of the \CONTEXT\ macro||package and is
+#C therefore copyrighted by \PRAGMA. Non||commercial use is
+#C granted.
+
+# sample 'texexec.ini' file
+#
+# set UsedInterfaces to nl,en
+# set UserInterface to nl
+# set TeXExecutable to pdfetex
+# set TeXFormatFlag to &
+# set TeXVirginFlag to -ini
+# set TeXFormatPath to t:/tex/web2c/fmt/
+# set ConTeXtPath to t:/pragma/sources/
+# set SetupPath to t:/pragma/sources/
+# set TeXScriptsPath to t:/pragma/programs/
+
+use Getopt::Long ;
+use Cwd ;
+use Time::Local ;
+
+$Getopt::Long::passthrough = 1 ; # no error message
+$Getopt::Long::autoabbrev = 1 ; # partial switch accepted
+
+$ConTeXtInterface = "unknown" ;
+$OutputFormat = "standard" ;
+$MainLanguage = "standard" ;
+$PaperFormat = "standard" ;
+$PrintFormat = "standard" ;
+$NOfRuns = 10 ;
+$SetupPath = "" ;
+$Format = "" ;
+$Environment = "" ;
+
+$UserInterface = "en" ; # default
+$UsedInterfaces = "" ;
+
+&GetOptions
+ ( "interface=s" => \$ConTeXtInterface ,
+ "output=s" => \$OutputFormat ,
+ "language=s" => \$MainLanguage ,
+ "paper=s" => \$PaperFormat ,
+ "print=s" => \$PrintFormat ,
+ "help" => \$HelpAsked ,
+ "fast" => \$FastMode ,
+ "nomp" => \$NoMPMode ,
+ "final" => \$FinalMode ,
+ "runs=s" => \$NOfRuns ,
+ "tex=s" => \$TeXProgram ,
+ "verbose" => \$Verbose ,
+ "module" => \$TypesetModule ,
+ "make" => \$MakeFormats ,
+ "mode=s" => \$Mode ,
+ "pages=s" => \$Pages ,
+ "format=s" => \$Format ,
+ "pdf" => \$ProducePdf ,
+ "convert=s" => \$Convert ,
+ "once" => \$RunOnce ,
+ "batch" => \$EnterBatchMode ,
+ "color" => \$UseColor ,
+ "environment=s" => \$Environment ,
+ "result=s" => \$Result ) ;
+
+if ($ProducePdf) { $OutputFormat = "pdf" }
+if ($RunOnce) { $NOfRuns = 1 }
+
+$Program = " TeXExec 1.1 - ConTeXt / PRAGMA ADE 1997-1999" ;
+
+$Script = "texexec" ;
+
+print "\n$Program\n\n";
+
+$SIG{INT} = "IGNORE" ;
+
+sub CheckPath
+ { ($Key, $Value) = @_ ;
+ if ($Value =~ /\//)
+ { $Last = chop $Value ;
+ unless ($Last eq "/" ) { $Value = $Value . $Last }
+ unless (-d $Value)
+ { print " error : $Key set to unknown path $Value\n" } } }
+
+if ($ENV{TEXEXEC_INI_FILE})
+ { $_ = $ENV{TEXEXEC_INI_FILE} }
+else
+ { $_ = $0 }
+
+s/\.(pl|ini)//io ;
+
+$IniPath = $_ . ".ini" ;
+
+# set <variable> to <value>
+# for <script> set <variable> to <value>
+
+if (open(INI, $IniPath))
+ { if ($Verbose)
+ { print " reading : $IniPath\n\n" }
+ while (<INI>)
+ { if (!/^[a-zA-Z\s]/oi)
+ { }
+# elsif (/for\s+(\w+)\s+set\s+(\w+)\s*to\s*([\w|\:|\/]+)/goi)
+ elsif (/for\s+(\S+)\s+set\s+(\S+)\s*to\s*(\S+)/goi)
+ { if ($1 eq $Script) # not yet used
+ { if ($Verbose)
+ { print " setting : '$2' to '$3' for '$1'\n" }
+ $Done{$2} = 1 ;
+ ${$2} = $3 ; CheckPath ($2, $3) } }
+# elsif (/set\s+(\w+)\s*to\s*([\w|\:|\/|\,]+)/goi)
+ elsif (/set\s+(\S+)\s*to\s*(\S+)/goi)
+ { unless ($Done{$1})
+ { if ($Verbose)
+ { print " setting : '$1' to '$2' for 'all'\n" }
+ ${$1} = $2 ; CheckPath ($1, $2) } } }
+ close (INI) ;
+ if ($Verbose)
+ { print "\n" } }
+else
+ { print " warning : $IniPath not found\n" ;
+ exit 1 }
+
+if ($TeXProgram)
+ { $TeXExecutable = $TeXProgram }
+elsif (!$TeXExecutable)
+ { $TeXExecutable = "tex" }
+
+unless ($TeXFormatFlag) { $TeXFormatFlag="&" }
+unless ($TeXVirginFlag) { $TeXVirginFlag="-ini" }
+
+# $_ = $0 ; s/texexec\.pl//io ; $TeXScriptsPath = $_ ;
+
+unless ($TeXScriptsPath)
+ { $_ = $0 ; s/texexec\.pl//io ; $TeXScriptsPath = $_ }
+
+unless ($ConTeXtPath)
+ { $ConTeXtPath = $TeXScriptsPath }
+
+if ($ENV{"HOME"})
+ { if ($SetupPath) { $SetupPath .= "," }
+ $SetupPath .= $ENV{"HOME"} }
+
+$OutputFormats{pdf} = "pdftex" ;
+$OutputFormats{pdftex} = "pdftex" ;
+$OutputFormats{dvips} = "dvips" ;
+$OutputFormats{dvipsone} = "dvipsone" ;
+$OutputFormats{acrobat} = "acrobat" ;
+$OutputFormats{dviwindo} = "dviwindo" ;
+$OutputFormats{dviview} = "dviview" ;
+
+@ConTeXtFormats = ("nl", "en", "de", "cz", "uk") ;
+
+$ConTeXtInterfaces{nl} = "nl" ; $ConTeXtInterfaces{dutch} = "nl" ;
+$ConTeXtInterfaces{en} = "en" ; $ConTeXtInterfaces{english} = "en" ;
+$ConTeXtInterfaces{de} = "de" ; $ConTeXtInterfaces{german} = "de" ;
+$ConTeXtInterfaces{cz} = "cz" ; $ConTeXtInterfaces{czech} = "cz" ;
+$ConTeXtInterfaces{uk} = "uk" ; $ConTeXtInterfaces{brittish} = "uk" ;
+
+$Help{HELP} =
+ " --help show this or more, e.g. '--help interface'\n" ;
+
+$Help{LANGUAGE} =
+ " --language main hyphenation language \n" ;
+
+$Help{language} = $Help{LANGUAGE} .
+ " =xx : standard abbreviation \n" ;
+
+$Help{TEX} =
+ " --tex tex binary \n" ;
+
+$Help{tex} = $Help{TEX} .
+ " =name : binary of executable \n" ;
+
+$Help{FORMAT} =
+ " --format fmt file \n" ;
+
+$Help{format} = $Help{FORMAT} .
+ " =name : format file (memory dump) \n" ;
+
+$Help{MODE}=
+ " --mode running mode \n" ;
+
+$Help{mode} = $Help{MODE} .
+ " =list : modes to set \n" ;
+
+$Help{OUTPUT} =
+ " --output specials to use \n" ;
+
+$Help{output} = $Help{OUTPUT} .
+ " =pdftex \n" .
+ " =dvips dvipsone \n" .
+ " =dviwindo dviview \n" ;
+
+$Help{PAPER} =
+ " --paper paper input and output format \n" ;
+
+$Help{paper} = $Help{PAPER} .
+ " =a4a3 : A4 printed on A3 \n" .
+ " =a5a4 : A5 printed on A4 \n" ;
+
+$Help{PRINT} =
+ " --print page imposition scheme \n" ;
+
+$Help{PAGES} =
+ " --pages pages to output \n" ;
+
+$Help{paper} = $Help{PAPER} .
+ " =odd : odd pages \n" .
+ " =even : even pages \n" .
+ " =x,y,z : pages x, y and z \n" ;
+
+$Help{"print"} = $Help{PRINT} .
+ " =up : 2 pages per sheet doublesided \n" .
+ " =down : 2 rotated pages per sheet doublesided \n" ;
+
+$Help{INTERFACE} =
+ " --interface user interface \n" ;
+
+$Help{interface} = $Help{INTERFACE} .
+ " =en : english \n" .
+ " =nl : dutch \n" .
+ " =de : german \n" ;
+ " =cz : czech \n" ;
+ " =uk : brittish \n" ;
+
+$Help{RUNS} =
+ " --runs maximum number of TeX runs \n" ;
+
+$Help{FAST} =
+ " --fast skip as much as possible \n" ;
+
+$Help{NOMP} =
+ " --nomp don't run MetaPost \n" ;
+
+$Help{FINAL} =
+ " --final add a final run without skipping \n" ;
+
+$Help{MODULE} =
+ " --module typeset tex/pl/mp module \n" ;
+
+$Help{MAKE} =
+ " --make build format files \n" ;
+
+$Help{VERBOSE} =
+ " --verbose shows some additional info \n" ;
+
+$Help{CONVERT} =
+ " --convert converts file first \n" ;
+
+$Help{convert} = $Help{CONVERT} .
+ " =xml : xml => tex \n" .
+ " =sgml : sgml => tex \n" ;
+
+$Help{RESULTS} =
+ " --results resulting file \n" ;
+
+# nog Result in help
+
+if ($HelpAsked)
+ { if (@ARGV)
+ { foreach (@ARGV) { print "$Help{$_}\n" } }
+ else
+ { print $Help{LANGUAGE} ;
+ print $Help{OUTPUT} ;
+ print $Help{PRINT} ;
+ print $Help{PAPER} ;
+ print $Help{PAGES} ;
+ print $Help{INTERFACE} ;
+ print $Help{RUNS} ;
+ print $Help{TEX} ;
+ print $Help{MODE} ;
+ print $Help{FAST} ;
+ print $Help{NOMP} ;
+ print $Help{FINAL} ;
+ print $Help{VERBOSE} ;
+ print $Help{MODULE} ;
+ print $Help{MAKE} ;
+ print $Help{FORMAT} ;
+ print $Help{CONVERT} ;
+ print "\n" ;
+ print $Help{HELP} ;
+ print "\n" }
+ exit 0 }
+
+$FinalRunNeeded = 0 ;
+
+sub ConvertXMLFile
+ { ($FileName) = @_ ;
+ system ("sgml2tex $FileName.xml") }
+
+sub ConvertSGMLFile
+ { ($FileName) = @_ ;
+ system ("sgml2tex $FileName.sgm") }
+
+sub MakeOptionFile
+ { ($FinalRun, $FastDisabled) = @_ ;
+ open (OPT, ">cont-opt.tex") ;
+ print OPT "\\unprotect\n" ;
+ $MainLanguage = lc $MainLanguage ;
+ unless ($MainLanguage eq "standard")
+ { print OPT "\\setuplanguage[$MainLanguage]\n" }
+ $FullFormat = "" ;
+ $Ok = 1 ;
+ @OutputFormat = split(/,/,$OutputFormat) ;
+ foreach $Format (@OutputFormat)
+ { if ($OutputFormats{lc $Format})
+ { if ($FullFormat) { $FullFormat .= "," }
+ $FullFormat .= "$OutputFormats{lc $Format}" }
+ elsif ($Format ne "standard")
+ { $Ok = 0 } }
+ if (!$Ok)
+ { print $Help{output} }
+ elsif ($FullFormat)
+ { print OPT "\\setupoutput[$FullFormat]\n" }
+ else
+ { $FullFormat = "standard" }
+ if ($EnterBatchMode)
+ { print OPT "\\batchmode\n" }
+ if ($UseColor)
+ { print OPT "\\setupcolors[\\c!status=\\v!start]\n" }
+ if ($NoMPMode)
+ { print OPT "\\runMPgraphicsfalse\n" }
+ if (($FastMode)&&(!$FastDisabled))
+ { print OPT "\\fastmode\n" }
+ if ($SetupPath)
+ { print OPT "\\setupsystem[\\c!gebied=\{$SetupPath\}]\n" }
+ $_ = $PaperFormat ;
+ if (/.4.3/goi)
+ { print OPT "\\stelpapierformaatin[A4][A3]\n" }
+ elsif (/.5.4/goi)
+ { print OPT "\\stelpapierformaatin[A5][A4]\n" }
+ else
+ { unless (/standard/) { print $Help{paper} } }
+ $_ = $PrintFormat ;
+ if (/.*up/goi)
+ { $FinalRunNeeded = 1 ;
+ if ($FinalRun)
+ { print OPT "\\stelarrangerenin[2UP,\\v!geroteerd,\\v!dubbelzijdig]\n" } }
+ elsif (/.*down/goi)
+ { $FinalRunNeeded = 1 ;
+ if ($FinalRun)
+ { print OPT "\\stelarrangerenin[2DOWN,\\v!geroteerd,\\v!dubbelzijdig]\n" } }
+ else
+ { unless (/standard/goi) { print $Help{"print"} } }
+ if ($Mode)
+ { print OPT "\\enablemode[$Mode]\n" }
+ if ($Pages)
+ { if (lc $Pages eq "odd")
+ { print OPT "\\chardef\\whichpagetoshipout=1\n" }
+ elsif (lc $Pages eq "even")
+ { print OPT "\\chardef\\whichpagetoshipout=2\n" }
+ else
+ { print OPT "\\def\\pagestoshipout\{$Pages\}\n" } }
+ print OPT "\\protect\n" ;
+ if ($Environment)
+ { foreach $E ($Environment) { print OPT "\\omgeving $E\n" } }
+ close (OPT) }
+
+sub CompareFiles
+ { $Ok = open (TUO1, $_[0]) && open (TUO2, $_[1]);
+ while (($Line1=<TUO1>)&&($Line2=<TUO2>)&&$Ok)
+ { $Ok = ($Line1 eq $Line2) }
+ close (TUO1) ;
+ close (TUO2) ;
+ return ($Ok) }
+
+$ConTeXtVersion = "unknown" ;
+$ConTeXtModes = "" ;
+
+sub ScanPreamble
+ { my ($FileName) = @_ ;
+ open (TEX, $FileName) ;
+ while (<TEX>)
+ { chomp ;
+ if (!$_)
+ { last }
+ elsif (/^\%/)
+ { if (/^\%\&(.*\w)/)
+ { $ConTeXtInterface = $ConTeXtInterfaces{$1} }
+ else
+ { if (/tex=([a-z]*)/goi) { $TeXExecutable = $1 }
+ if (/program=([a-z]*)/goi) { $TeXExecutable = $1 }
+ if (/modes=([a-z\,]*)/goi) { $ConTeXtModes = $1 }
+ if (/output=([a-z\,]*)/goi) { $OutputFormat = $1 }
+ if (/format=([a-z]*)/goi) { $ConTeXtInterface = $ConTeXtInterfaces{$1} }
+ if (/interface=([a-z]*)/goi) { $ConTeXtInterface = $ConTeXtInterfaces{$1} }
+ if (/version=([a-z]*)/goi) { $ConTeXtVersion = $1 } } }
+ else
+ { last } }
+ close(TEX) }
+
+sub ScanContent
+ { ($ConTeXtInput) = @_ ;
+ open (TEX, $ConTeXtInput) ;
+ while (<TEX>)
+ { if (/\\(starttekst|stoptekst|startonderdeel)/)
+ { $ConTeXtInterface = "nl" ; last }
+ elsif (/\\(stelle|verwende|umgebung|benutze)/)
+ { $ConTeXtInterface = "de" ; last }
+ elsif (/\\(stel|gebruik|omgeving)/)
+ { $ConTeXtInterface = "nl" ; last }
+ elsif (/\\(use|setup|environment)/)
+ { $ConTeXtInterface = "en" ; last }
+ elsif (/(hoogte|breedte|letter)=/)
+ { $ConTeXtInterface = "nl" ; last }
+ elsif (/(height|width|style)=/)
+ { $ConTeXtInterface = "en" ; last }
+ elsif (/(hoehe|breite|schrift)=/)
+ { $ConTeXtInterface = "de" ; last }
+ elsif (/externfiguur/)
+ { $ConTeXtInterface = "nl" ; last }
+ elsif (/externalfigure/)
+ { $ConTeXtInterface = "en" ; last }
+ elsif (/externeabbildung/)
+ { $ConTeXtInterface = "de" ; last } }
+ close (TEX) }
+
+if ($ConTeXtInterfaces{$ConTeXtInterface})
+ { $ConTeXtInterface = $ConTeXtInterfaces{$ConTeXtInterface} }
+
+my $Problems = 0 ;
+
+sub RunTeX
+ { my $StartTime = time ;
+ $Problems = system
+ ( "$TeXProgramPath$TeXExecutable " .
+ "$TeXFormatFlag$TeXFormatPath$Format $JobName" ) ;
+ my $StopTime = time - $StartTime ;
+ print "\n run time : $StopTime\n" ;
+ return $Problems }
+
+sub PushResult
+ { if ($Result)
+ { print " outputfile : $Result\n" ;
+ unlink ("texexec.tuo") ; rename ("$_[0].tuo", "texexec.tuo") ;
+ unlink ("texexec.log") ; rename ("$_[0].log", "texexec.log") ;
+ unlink ("texexec.dvi") ; rename ("$_[0].dvi", "texexec.dvi") ;
+ unlink ("texexec.pdf") ; rename ("$_[0].pdf", "texexec.pdf") ;
+ if (-f "$Result.tuo")
+ { unlink ("$_[0].tuo") ;
+ rename ("$Result.tuo", "$_[0].tuo") } } }
+
+sub PopResult
+ { if ($Result)
+ { unlink ("$Result.tuo") ; rename ("$_[0].tuo", "$Result.tuo") ;
+ unlink ("$Result.log") ; rename ("$_[0].log", "$Result.log") ;
+ unlink ("$Result.dvi") ; rename ("$_[0].dvi", "$Result.dvi") ;
+ unlink ("$Result.pdf") ; rename ("$_[0].pdf", "$Result.pdf") ;
+ rename ("texexec.tuo", "$_[0].tuo") ;
+ rename ("texexec.log", "$_[0].log") ;
+ rename ("texexec.dvi", "$_[0].dvi") ;
+ rename ("texexec.pdf", "$_[0].pdf") } }
+
+sub RunConTeXtFile
+ { ($JobName) = @_ ;
+ $JobName =~ s/\\/\//goi ;
+ if (-e "$JobName.tex")
+ { if ($ConTeXtInterface eq "unknown")
+ { ScanPreamble ("$JobName.tex") }
+ if ($ConTeXtInterface eq "unknown")
+ { ScanContent ("$JobName.tex") }
+ if ($ConTeXtInterface eq "unknown")
+ { $ConTeXtInterface = $UserInterface }
+ if (lc $Convert eq "xml")
+ { print " xml input : $JobName.xml\n" ;
+ ConvertXMLFile ($JobName) }
+ elsif (lc $Convert eq "sgml")
+ { print " sgml input : $JobName.sgm\n" ;
+ ConvertSGMLFile ($JobName) }
+ MakeOptionFile ( 0, 0 ) ;
+ $StopRunning = 0 ;
+ $Format = "cont-$ConTeXtInterface" ;
+ unless ($FullFormat) { $FullFormat = "standard" }
+ print " executable : $TeXProgramPath$TeXExecutable\n" ;
+ print " format : $TeXFormatPath$Format\n" ;
+ print " inputfile : $JobName\n" ;
+ print " output : $FullFormat\n" ; # OutputFormat\n" ;
+ print " interface : $ConTeXtInterface\n" ;
+ $Options = "" ;
+ if ($FastMode) { $Options .= " fast" }
+ if ($FinalMode) { $Options .= " final" }
+ if ($Verbose) { $Options .= " verbose" }
+ if ($TypesetModule) { $Options .= " module" }
+ if ($MakeFormats) { $Options .= " make" }
+ if ($RunOnce) { $Options .= " once" }
+ if ($UseColor) { $Options .= " color" }
+ if ($EnterBatchMode){ $Options .= " batch" }
+ if ($NoMPMode) { $Options .= " nomp" }
+ if ($Options)
+ { print " options :$Options\n" }
+ if ($ConTeXtModes)
+ { print " possible modes : $ConTeXtModes\n" }
+ if ($Mode)
+ { print " current mode : $Mode\n" }
+ else
+ { print " current mode : all\n" }
+ if ($Environment)
+ { print " environments : $Environment\n" }
+ PushResult($JobName) ;
+ while (!$StopRunning&&($TeXRuns<$NOfRuns))
+ { ++$TeXRuns ;
+ print " TeX run : $TeXRuns\n\n" ;
+ $Problems = RunTeX() ;
+ if ($Problems)
+ { last }
+ if ($NOfRuns>1)
+ { unlink "texutil.tuo" ;
+ rename "$JobName.tuo", "texutil.tuo" ;
+ system
+ ( "perl " . "$TeXScriptsPath" . "texutil.pl " .
+ "--references --ij --high $JobName" ) ;
+ $StopRunning =
+ CompareFiles("texutil.tuo", "$JobName.tuo") } }
+ if ((!$Problems)&&(($FinalMode||$FinalRunNeeded))&&($NOfRuns>1))
+ { MakeOptionFile ( 1 , $FinalMode) ;
+ print " final TeX run : $TeXRuns\n\n" ;
+ $Problems = RunTeX() }
+ PopResult($JobName) } }
+
+sub RunSomeTeXFile
+ { ($JobName) = @_ ;
+ if (-e "$JobName.tex")
+ { PushResult($JobName) ;
+ print " executable : $TeXProgramPath$TeXExecutable\n" ;
+ print " format : $TeXFormatPath$Format\n" ;
+ print " inputfile : $JobName\n" ;
+ $Problems = RunTeX() ;
+ PopResult($JobName) } }
+
+sub RunModule
+ { my ($FileName) = @_ ;
+ if ((-e "$FileName.tex")||(-e "$FileName.pl")||(-e "$FileName.mp")||
+ (-e "$FileName.pm"))
+ { system
+ ( "perl " . "$TeXScriptsPath" . "texutil.pl " .
+ "--documents $FileName.pl $FileName.pm $FileName.mp $FileName.tex" ) ;
+ print " module : $FileName\n\n" ;
+ open (MOD, ">$Script.tex") ;
+ print MOD "% format=dutch \n" ;
+ print MOD "\\starttekst \n" ;
+ print MOD "\\input modu-abr \n" ;
+ print MOD "\\input modu-arg \n" ;
+ print MOD "\\input modu-env \n" ;
+ print MOD "\\input modu-mod \n" ;
+ print MOD "\\input modu-pap \n" ;
+ print MOD "\\input modu-opt \n" ;
+ print MOD "\\def\\ModuleNumber{1}\n" ;
+ print MOD "\\input $FileName.ted \n" ;
+ print MOD "\\stoptekst \n" ;
+ close (MOD) ;
+ $ConTeXtInterface = "nl" ;
+ RunConTeXtFile($Script) ;
+ if ($FileName ne $Script)
+ { foreach $FileSuffix ("dvi", "pdf", "tui", "tuo", "log")
+ { unlink ("$FileName.$FileSuffix") ;
+ rename ("$Script.$FileSuffix", "$FileName.$FileSuffix") } }
+ unlink ("$Script.tex") } }
+
+sub RunFormats
+ { if (@ARGV)
+ { @ConTeXtFormats = @ARGV }
+ elsif ($UsedInterfaces ne "")
+ { @ConTeXtFormats = split /\,/,$UsedInterfaces }
+ $CurrentPath = cwd() ;
+ if ($TeXExecutable =~ /etex|eetex|pdfetex|pdfeetex/gio)
+ {$TeXPrefix = "*" }
+ else
+ {$TeXPrefix = "" }
+ if (chdir "$TeXFormatPath")
+ { if ($Format)
+ { system
+ ( "$TeXProgramPath$TeXExecutable " .
+ "$TeXVirginFlag " .
+ "${TeXPrefix}$Format" ) ;
+ @ConTeXtFormats = $Format }
+ else
+ { foreach $Interface (@ConTeXtFormats)
+ { system
+ ( "$TeXProgramPath$TeXExecutable " .
+ "$TeXVirginFlag " .
+ "${TeXPrefix}cont-$Interface" ) } }
+ print "\n" ;
+ print " executable : $TeXProgramPath$TeXExecutable\n" ;
+ print " format(s) : @ConTeXtFormats\n\n" ;
+ chdir $CurrentPath } }
+
+sub RunFiles
+ { foreach $JobName (@ARGV)
+ { $JobName =~ s/\.tex//goi ;
+ if ($TypesetModule)
+ { unless ($Format) { RunModule ($JobName) } }
+ else
+ { if ($Format)
+ { RunSomeTeXFile ($JobName) }
+ else
+ { RunConTeXtFile ($JobName) } }
+ unless (-s "$JobName.log") { unlink ("$JobName.log") }
+ unless (-s "$JobName.tui") { unlink ("$JobName.tui") } } }
+
+if ($MakeFormats)
+ { RunFormats }
+elsif (@ARGV)
+ { RunFiles }
+else
+ { print $Help{HELP} }
+
+if (-f "cont-opt.tex")
+ { unlink ("cont-opt.bak") ;
+ rename ("cont-opt.tex", "cont-opt.bak") }
+
+if ($Problems) { exit 1 }