summaryrefslogtreecommitdiff
path: root/context/perltk/texexec.pl
diff options
context:
space:
mode:
Diffstat (limited to 'context/perltk/texexec.pl')
-rw-r--r--context/perltk/texexec.pl1408
1 files changed, 0 insertions, 1408 deletions
diff --git a/context/perltk/texexec.pl b/context/perltk/texexec.pl
deleted file mode 100644
index c80cb87a0..000000000
--- a/context/perltk/texexec.pl
+++ /dev/null
@@ -1,1408 +0,0 @@
-eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' && eval 'exec perl -S $0 $argv:q'
- if 0;
-
-#D We started with a hack provided by Thomas Esser. This
-#D expression replaces the unix specific line \type
-#D {#!/usr/bin/perl}.
-
-# in a few versions DetermineNOfPdfPages is obsolete
-
-# nog doen: automatisch log scannen op overfull en missing
-# fastmode tzt anders: \iffastmode \fi
-
-#D \module
-#D [ file=texexec.pl,
-#D version=1999.11.03,
-#D title=running \ConTeXt,
-#D subtitle=\TEXEXEC,
-#D author=Hans Hagen,
-#D date=\currentdate,
-#D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
-#C
-#C This module is part of the \CONTEXT\ macro||package and is
-#C therefore copyrighted by \PRAGMA. See licen-en.pdf for
-#C details.
-
-# Thanks to Tobias Burnus for the german translations.
-# Thanks to Thomas Esser for hooking it into web2c
-# Thanks to Taco Hoekwater for suggesting improvements
-
-use Cwd ;
-use Time::Local ;
-use Config ;
-use Getopt::Long ;
-
-use strict ;
-
-#D In this script we will launch some programs and other
-#D scripts. \TEXEXEC\ uses an ini||file to sort out where
-#D those programs are stored. Two boolean variables keep
-#D track of the way to call the programs. In \TEXEXEC,
-#D \type {$dosish} keeps track of the operating system.
-#D It will be no surprise that Thomas Esser provided me
-#D the neccessary code to accomplish this.
-
-my $dosish = ($Config{'osname'} =~ /dos|win/i) ;
-
-my $TeXUtil = 'texutil' ;
-my $SGMLtoTeX = 'sgml2tex' ;
-my $FDFtoTeX = 'fdf2tex' ;
-
-$Getopt::Long::passthrough = 1 ; # no error message
-$Getopt::Long::autoabbrev = 1 ; # partial switch accepted
-
-my $AddEmpty = '' ;
-my $Alone = 0 ;
-my $Arrange = 0 ;
-my $BackSpace = '0pt' ;
-my $CenterPage = 0 ;
-my $ConTeXtInterface = 'unknown' ;
-my $Convert = '' ;
-my $DoMPTeX = 0 ;
-my $EnterBatchMode = 0 ;
-my $Environment = '' ;
-my $FastMode = 0 ;
-my $FinalMode = 0 ;
-my $Format = '' ;
-my $HelpAsked = 0 ;
-my $MainBodyFont = 'standard' ;
-my $MainLanguage = 'standard' ;
-my $MakeFormats = 0 ;
-my $Markings = 0 ;
-my $Mode = '' ;
-my $NoArrange = 0 ;
-my $NoDuplex = 0 ;
-my $NOfRuns = 7 ;
-my $NoMPMode = 0 ;
-my $OutputFormat = 'standard' ;
-my $Pages = '' ;
-my $PageScale = '1000' ; # == 1.0
-my $PaperFormat = 'standard' ;
-my $PaperOffset = '0pt' ;
-my $PassOn = '' ;
-my $PdfArrange = 0 ;
-my $PdfSelect = 0 ;
-my $PdfCombine = 0 ;
-my $PrintFormat = 'standard' ;
-my $ProducePdf = 0 ;
-my $Result = 0 ;
-my $RunOnce = 0 ;
-my $Selection = '' ;
-my $Combination = '2*4' ;
-my $SilentMode = 0 ;
-my $TeXProgram = '' ;
-my $TeXTranslation = '' ;
-my $TextWidth = '0pt' ;
-my $TopSpace = '0pt' ;
-my $TypesetFigures = 0 ;
-my $TypesetListing = 0 ;
-my $TypesetModule = 0 ;
-my $UseColor = 0 ;
-my $Verbose = 0 ;
-my $PdfCopy = 0 ;
-
-&GetOptions
- ( "arrange" => \$Arrange ,
- "batch" => \$EnterBatchMode ,
- "color" => \$UseColor ,
- "centerpage" => \$CenterPage ,
- "convert=s" => \$Convert ,
- "environment=s" => \$Environment ,
- "fast" => \$FastMode ,
- "final" => \$FinalMode ,
- "format=s" => \$Format ,
- "help" => \$HelpAsked ,
- "interface=s" => \$ConTeXtInterface ,
- "language=s" => \$MainLanguage ,
- "bodyfont=s" => \$MainBodyFont ,
- "make" => \$MakeFormats ,
- "mode=s" => \$Mode ,
- "module" => \$TypesetModule ,
- "figures=s" => \$TypesetFigures ,
- "listing" => \$TypesetListing ,
- "mptex" => \$DoMPTeX ,
- "noarrange" => \$NoArrange ,
- "nomp" => \$NoMPMode ,
- "once" => \$RunOnce ,
- "output=s" => \$OutputFormat ,
- "pages=s" => \$Pages ,
- "paper=s" => \$PaperFormat ,
- "passon=s" => \$PassOn ,
- "pdf" => \$ProducePdf ,
- "pdfarrange" => \$PdfArrange ,
- "pdfselect" => \$PdfSelect ,
- "pdfcombine" => \$PdfCombine ,
- "pdfcopy" => \$PdfCopy ,
- "scale=s" => \$PageScale ,
- "selection=s" => \$Selection ,
- "combination=s" => \$Combination ,
- "noduplex" => \$NoDuplex ,
- "paperoffset=s" => \$PaperOffset ,
- "backspace=s" => \$BackSpace ,
- "topspace=s" => \$TopSpace ,
- "markings" => \$Markings ,
- "textwidth=s" => \$TextWidth ,
- "addempty=s" => \$AddEmpty ,
-
- "print=s" => \$PrintFormat ,
- "results=s" => \$Result ,
- "runs=s" => \$NOfRuns ,
- "silent" => \$SilentMode ,
- "tex=s" => \$TeXProgram ,
- "verbose" => \$Verbose ,
- "alone" => \$Alone ) ;
-
-$SIG{INT} = "IGNORE" ;
-
-if ($PdfArrange||$PdfSelect||$PdfCopy||$PdfCombine)
- { $ProducePdf = 1 ;
- $RunOnce = 1 }
-
-if ($ProducePdf)
- { $OutputFormat = "pdf" }
-
-if ($RunOnce||$Pages||$TypesetFigures||$TypesetListing)
- { $NOfRuns = 1 }
-
-my $Program = " TeXExec 1.9 - ConTeXt / PRAGMA ADE 1997-2000" ;
-
-print "\n$Program\n\n";
-
-my $pathslash = '/' ; if ($0 =~ /\\/) { $pathslash = "\\" }
-my $cur_path = ".$pathslash" ;
-my $own_path = $0 ; $own_path =~ s/texexec\.(pl|bat|)//io ;
-
-sub checked_path
- { my $path = shift ;
- if ((defined($path))&&($path ne ''))
- { $path =~ s/[\/\\]/$pathslash/go ;
- $path =~ s/[\/\\]*$//go ;
- $path .= $pathslash }
- else
- { $path = '' }
- return $path }
-
-sub checked_file
- { my $path = shift ;
- if ((defined($path))&&($path ne ''))
- { $path =~ s/[\/\\]/$pathslash/go }
- else
- { $path = '' }
- return $path }
-
-sub CheckPath
- { my ($Key, $Value) = @_ ;
- if ($Value =~ /\//)
- { $Value = checked_path($Value) ;
- unless (-d $Value)
- { print " error : $Key set to unknown path $Value\n" } } }
-
-# set <variable> to <value>
-# for <script> set <variable> to <value>
-# except for <script> set <variable> to <value>
-
-my $IniPath = '' ;
-
-#D The kpsewhich program is not available in all tex distributions, so
-#D we have to locate it before running it (as suggested by Thomas).
-
-my @paths ;
-
-if ($ENV{PATH} =~ /\;/)
- { @paths = split(/\;/,$ENV{PATH}) }
-else
- { @paths = split(/\:/,$ENV{PATH}) }
-
-my $kpsewhich = '' ;
-
-if ($IniPath eq '')
- { foreach (@paths)
- { my $p = checked_path($_) . 'kpsewhich' ;
- if ((-e $p)||(-e $p . '.exe'))
- { $kpsewhich = $p ;
- $IniPath = `$kpsewhich --format="other text files" -progname=context texexec.ini` ;
- chomp($IniPath) ;
- last } }
- if ($Verbose)
- { if ($IniPath eq '')
- { print " locating ini file : kpsewhich not found in path\n" }
- else
- { print " locating ini file : found by kpsewhich\n" } } }
-
-#D Now, when we didn't find the \type {kpsewhich}, we have
-#D to revert to some other method. We could have said:
-#D
-#D\starttypen
-#D unless ($IniPath)
-#D { $IniPath = `perl texpath.pl texexec.ini` }
-#D \stoptypen
-#D
-#D But loading perl (for the second time) take some time. Instead of
-#D providing a module, which can introduce problems with loading, I
-#D decided to copy the code of \type {texpath} into this file.
-
-use File::Find ;
-
-my ($ReportPath, $ReportName, $ReportFile) = (0,0,1) ;
-my ($FileToLocate, $PathToStartOn) = ('','') ;
-my ($LocatedPath, $LocatedName, $LocatedFile) = ('','','') ;
-
-sub DoLocateFile # we have to keep on pruning
- { if (lc $_ eq $FileToLocate)
- { $LocatedPath = $File::Find::dir ;
- $LocatedName = $_ ;
- $LocatedFile = $File::Find::name }
- if ($LocatedName) { $File::Find::prune = 1 } }
-
-sub LocatedFile
- { $PathToStartOn = shift ;
- $FileToLocate = lc shift ;
- if ($FileToLocate eq '')
- { $FileToLocate = $PathToStartOn ;
- $PathToStartOn = $own_path }
- ($LocatedPath, $LocatedName, $LocatedFile) = ('','','') ;
- if ($FileToLocate ne '')
- { if (-e $cur_path . $FileToLocate)
- { $LocatedPath = $cur_path ;
- $LocatedName = $FileToLocate ;
- $LocatedFile = $cur_path . $FileToLocate }
- else
- { $_ = checked_path($PathToStartOn) ;
- if (-e $_ . $FileToLocate)
- { $LocatedPath = $_ ;
- $LocatedName = $FileToLocate ;
- $LocatedFile = $_ . $FileToLocate }
- else
- { $_ = checked_path($PathToStartOn) ;
- if (/(.*?[\/\\]texmf[\/\\]).*/i)
- { my $SavedRoot = $1 ;
- File::Find::find(\&DoLocateFile, checked_path($1 . 'context/')) ;
- unless ($LocatedFile)
- { File::Find::find(\&DoLocateFile, $SavedRoot) } }
- else
- { $_ = checked_path($_) ;
- File::Find::find(\&DoLocateFile, $_) } } } }
- return ($LocatedPath, $LocatedName, $LocatedFile) }
-
-#D So now we can say:
-
-unless ($IniPath)
- { ($LocatedPath, $LocatedName, $IniPath) = LocatedFile($own_path,'texexec.ini') ;
- if ($Verbose)
- { if ($IniPath eq '')
- { print " locating ini file : not found by searching\n" }
- else
- { print " locating ini file : found by searching\n" } } }
-
-#D The last resorts:
-
-unless ($IniPath)
- { if ($ENV{TEXEXEC_INI_FILE})
- { $IniPath = checked_path($ENV{TEXEXEC_INI_FILE}) . 'texexec.ini' ;
- unless (-e $IniPath) { $IniPath = '' } }
- if ($Verbose)
- { if ($IniPath eq '')
- { print " locating ini file : no environment variable set\n" }
- else
- { print " locating ini file : found by environment variable\n" } } }
-
-unless ($IniPath)
- { $IniPath = $own_path . 'texexec.ini' ;
- unless (-e $IniPath) { $IniPath = '' }
- if ($Verbose)
- { if ($IniPath eq '')
- { print " locating ini file : not found in own path\n" }
- else
- { print " locating ini file : found in own path\n" } } }
-
-#D Now we're ready for loading the initialization file! We
-#D also define some non strict variables. Using \type {$Done}
-#D permits assignments.
-
-my %Done ;
-
-unless ($IniPath)
- { $IniPath = 'texexec.ini' }
-
-if (open(INI, $IniPath))
- { if ($Verbose)
- { print " reading : $IniPath\n" }
- while (<INI>)
- { if (!/^[a-zA-Z\s]/oi)
- { }
- elsif (/except for\s+(\S+)\s+set\s+(\S+)\s*to\s*(.*)\s*/goi)
- { my $one = $1 ; my $two= $2 ; my $three = $3 ;
- if ($one ne $Done{"TeXShell"})
- { $three =~ s/^[\'\"]// ; $three =~ s/[\'\"]$// ; $three =~ s/\s*$// ;
- if ($Verbose)
- { print " setting : '$two' to '$three' except for '$one'\n" }
- $Done{"$two"} = $three ;
- CheckPath ($two, $three) } }
- elsif (/for\s+(\S+)\s+set\s+(\S+)\s*to\s*(.*)\s*/goi)
- { my $one = $1 ; my $two= $2 ; my $three = $3 ; $three =~ s/\s*$// ;
- if ($one eq $Done{"TeXShell"})
- { $three =~ s/^[\'\"]// ; $three =~ s/[\'\"]$// ;
- if ($Verbose)
- { print " setting : '$two' to '$three' for '$one'\n" }
- $Done{"$two"} = $three ;
- CheckPath ($two, $three) } }
- elsif (/set\s+(\S+)\s*to\s*(.*)\s*/goi)
- { my $one = $1 ; my $two= $2 ;
- unless (defined($Done{"$one"}))
- { $two =~ s/^[\'\"]// ; $two =~ s/[\'\"]$// ; $two =~ s/\s*$// ;
- if ($Verbose)
- { print " setting : '$one' to '$two' for 'all'\n" }
- $Done{"$one"} = $two ;
- CheckPath ($one, $two) } } }
- close (INI) ;
- if ($Verbose)
- { print "\n" } }
-elsif ($Verbose)
- { print " warning : $IniPath not found, did you read 'texexec.rme'?\n" ;
- exit 1 }
-else
- { print " warning : $IniPath not found, try 'texexec --verbose'\n" ;
- exit 1 }
-
-sub IniValue
- { my ($Key,$Default) = @_ ;
- if (defined($Done{$Key})) { $Default = $Done{$Key} }
- if ($Verbose)
- { print " used setting : $Key = $Default\n" }
- return $Default }
-
-my $TeXShell = IniValue('TeXShell' , '' ) ;
-my $SetupPath = IniValue('SetupPath' , '' ) ;
-my $UserInterface = IniValue('UserInterface' , 'en' ) ;
-my $UsedInterfaces = IniValue('UsedInterfaces' , 'en' ) ;
-my $MpExecutable = IniValue('MpExecutable' , 'mpost' ) ;
-my $MpToTeXExecutable = IniValue('MpToTeXExecutable' , 'mpto' ) ;
-my $DviToMpExecutable = IniValue('DviToMpExecutable' , 'dvitomp' ) ;
-my $TeXProgramPath = IniValue('TeXProgramPath' , '' ) ;
-my $TeXFormatPath = IniValue('TeXFormatPath' , '' ) ;
-my $ConTeXtPath = IniValue('ConTeXtPath' , '' ) ;
-my $TeXScriptsPath = IniValue('TeXScriptsPath' , '' ) ;
-my $TeXExecutable = IniValue('TeXExecutable' , 'tex' ) ;
-my $TeXVirginFlag = IniValue('TeXVirginFlag' , '-ini' ) ;
-my $TeXPassString = IniValue('TeXPassString' , '' ) ;
-my $TeXFormatFlag = IniValue('TeXFormatFlag' , '' ) ;
-
-my $FmtLanguage = IniValue('FmtLanguage' , '' ) ;
-my $FmtBodyFont = IniValue('FmtBodyFont' , '' ) ;
-my $TcXPath = IniValue('TcXPath' , '' ) ;
-
-if (($FmtLanguage)&&($MainLanguage eq 'standard'))
- { $MainLanguage = $FmtLanguage }
-if (($FmtBodyFont)&&($MainBodyFont eq 'standard'))
- { $MainBodyFont = $FmtBodyFont }
-
-if ($Verbose) { print "\n" }
-
-unless ($TeXFormatFlag)
- { if ($dosish) { $TeXFormatFlag = "&" } else { $TeXFormatFlag = "\\&" } }
-
-if ($TeXProgram)
- { $TeXExecutable = $TeXProgram }
-
-my $fmtutil = '' ;
-
-if ($Alone)
- { if ($Verbose)
- { print " generating format : not using fmtutil\n" } }
-elsif ($TeXShell =~ /tetex|fptex/i)
- { foreach (@paths)
- { my $p = checked_path($_) . 'fmtutil' ;
- if (-e $p)
- { $fmtutil = $p ; last }
- elsif (-e $p . '.exe')
- { $fmtutil = $p . '.exe' ; last } }
- if ($Verbose)
- { if ($fmtutil eq '')
- { print " locating fmtutil : not found in path\n" }
- else
- { print " locating fmtutil : found\n" } } }
-
-unless ($TeXScriptsPath)
- { $TeXScriptsPath = $own_path }
-
-unless ($ConTeXtPath)
- { $ConTeXtPath = $TeXScriptsPath }
-
-if ($ENV{"HOME"})
- { if ($SetupPath) { $SetupPath .= "," }
- $SetupPath .= $ENV{"HOME"} }
-
-if ($TeXFormatPath) { $TeXFormatPath =~ s/[\/\\]$// ; $TeXFormatPath .= '/' }
-if ($ConTeXtPath) { $ConTeXtPath =~ s/[\/\\]$// ; $ConTeXtPath .= '/' }
-if ($SetupPath) { $SetupPath =~ s/[\/\\]$// ; $SetupPath .= '/' }
-if ($TeXScriptsPath) { $TeXScriptsPath =~ s/[\/\\]$// ; $TeXScriptsPath .= '/' }
-
-my %OutputFormats ;
-
-$OutputFormats{pdf} = "pdftex" ;
-$OutputFormats{pdftex} = "pdftex" ;
-$OutputFormats{dvips} = "dvips" ;
-$OutputFormats{dvipsone} = "dvipsone" ;
-$OutputFormats{acrobat} = "acrobat" ;
-$OutputFormats{dviwindo} = "dviwindo" ;
-$OutputFormats{dviview} = "dviview" ;
-
-my @ConTeXtFormats = ("nl", "en", "de", "cz", "uk") ;
-
-my %ConTeXtInterfaces ;
-
-$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" ;
-$ConTeXtInterfaces{xx} = "xx" ; $ConTeXtInterfaces{experimental} = "xx" ;
-
-my %Help ;
-
-$Help{ARRANGE} = " --arrange process and arrange\n" ;
-$Help{BATCH} = " --batch run in batch mode (don't pause)\n" ;
-$Help{CENTERPAGE} = " --centerpage center the page on the paper\n" ;
-$Help{COLOR} = " --color enable color (when not yet enabled)\n" ;
-$Help{CONVERT} = " --convert converts file first\n" ;
-$Help{convert} =
-$Help{CONVERT} . " =xml : XML => TeX\n"
- . " =sgml : SGML => TeX\n" ;
-$Help{ENVIRONMENT} = " --environment load some environments first\n" ;
-$Help{environment} =
-$Help{ENVIRONMENT} . " =name : list of environments\n" ;
-$Help{FAST} = " --fast skip as much as possible\n" ;
-$Help{FIGURES} = " --figures typeset figure directory\n" ;
-$Help{figures} =
-$Help{FIGURES} . " =a : room for corrections\n"
- . " =b : just graphics\n"
- . " =c : one (cropped) per page\n"
- . " --paperoffset room left at paper border\n" ;
-$Help{FINAL} = " --final add a final run without skipping\n" ;
-$Help{FORMAT} = " --format fmt file\n" ;
-$Help{format} =
-$Help{FORMAT} . " =name : format file (memory dump) \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{LANGUAGE} = " --language main hyphenation language \n" ;
-$Help{language} =
-$Help{LANGUAGE} . " =xx : standard abbreviation \n" ;
-$Help{LISTING} = " --listing produce a verbatim listing\n" ;
-$Help{listing} =
-$Help{LISTING} . " --backspace inner margin of the page\n" .
- " --topspace top/bottom margin of the page\n" ;
-$Help{MAKE} = " --make build format files \n" ;
-$Help{make} =
-$Help{MAKE} . " --language patterns to include\n" .
- " --bodyfont bodyfont to preload\n" ;
-$Help{MODE} = " --mode running mode \n" ;
-$Help{mode} =
-$Help{MODE} . " =list : modes to set\n" ;
-$Help{MODULE} = " --module typeset tex/pl/mp module\n" ;
-$Help{MPTEX} = " --mptex run an MetaPost btex-etex cycle\n" ;
-$Help{NOARRANGE} = " --noarrange process but ignore arrange\n" ;
-$Help{NOMP} = " --nomp don't run MetaPost\n" ;
-$Help{ONCE} = " --once run TeX only once (no TeXUtil either)\n" ;
-$Help{OUTPUT} = " --output specials to use\n" ;
-$Help{output} =
-$Help{OUTPUT} . " =pdftex\n"
- . " =dvips\n"
- . " =dvipsone\n"
- . " =dviwindo\n"
- . " =dviview\n" ;
-$Help{PASSON} = ' --passon switches to pass to TeX ("--src" for MikTeX)' . "\n" ;
-$Help{PAGES} = " --pages pages to output\n" ;
-$Help{pages} =
-$Help{PAGES} . " =odd : odd pages\n" .
- " =even : even pages\n" .
- " =x,y:z : pages x and y to z\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{PDF} = " --pdf produce PDF directly using pdf(e)tex\n" ;
-$Help{PDFARRANGE} = " --pdfarrange arrange pdf pages\n" ;
-$Help{pdfarrange} =
-$Help{PDFARRANGE} . " --paperoffset room left at paper border\n" .
- " --paper paper format\n" .
- " --noduplex single sided\n" .
- " --backspace inner margin of the page\n" .
- " --topspace top/bottom margin of the page\n" .
- " --markings add cutmarks\n" .
- " --addempty add empty page after\n" .
- " --textwidth width of the original (one sided) text\n" ;
-$Help{PDFCOPY} = " --pdfcopy scale pages down/up\n" ;
-$Help{pdfcopy} =
-$Help{PDFCOMBINE} = " --pdfcombine combine pages to one page\n" ;
-$Help{pdfcombine} =
-$Help{PDFCOMBINE} . " --paperformat paper format\n" .
- " --combination n*m pages per page\n" .
- " --paperoffset room left at paper border\n" ;
-$Help{PDFCOPY} . " --scale new page scale\n" ;
-$Help{PDFSELECT} = " --pdfselect select pdf pages\n" ;
-$Help{pdfselect} =
-$Help{PDFSELECT} = " --selection pages to select\n" .
- " =odd : odd pages\n" .
- " =even : even pages\n" .
- " =x,y:z : pages x and y to z\n" ;
- " --paperoffset room left at paper border\n" .
- " --paperformat paper format\n" .
- " --backspace inner margin of the page\n" .
- " --topspace top/bottom margin of the page\n" .
- " --markings add cutmarks\n" .
- " --addempty add empty page after\n" .
- " --textwidth width of the original (one sided) text\n" ;
-$Help{PRINT} = " --print page imposition scheme\n" ;
-$Help{print} =
-$Help{PRINT} . " =up : 2 pages per sheet doublesided \n" .
- " =down : 2 rotated pages per sheet doublesided \n" ;
-$Help{RESULT} = " --result resulting file \n" ;
-$Help{result} =
-$Help{RESULT} . " =name : filename \n" ;
-$Help{RUNS} = " --runs maximum number of TeX runs \n" ;
-$Help{runs} =
-$Help{RUNS} . " =n : number of runs\n" ;
-$Help{SILENT} = " --silent minimize (status) messages\n" ;
-$Help{TEX} = " --tex TeX binary \n" ;
-$Help{tex} =
-$Help{TEX} . " =name : binary of executable \n" ;
-$Help{VERBOSE} = " --verbose shows some additional info \n" ;
-$Help{HELP} = " --help show this or more, e.g. '--help interface'\n" ;
-
-if ($HelpAsked)
- { if (@ARGV)
- { foreach (@ARGV) { s/\-//go ; print "$Help{$_}\n" } }
- else
- { print $Help{ARRANGE} ;
- print $Help{BATCH} ;
- print $Help{CENTERPAGE} ;
- print $Help{COLOR} ;
- print $Help{CONVERT} ;
- print $Help{ENVIRONMENT} ;
- print $Help{FAST} ;
- print $Help{FIGURES} ;
- print $Help{FINAL} ;
- print $Help{FORMAT} ;
- print $Help{INTERFACE} ;
- print $Help{LISTING} ;
- print $Help{LANGUAGE} ;
- print $Help{MAKE} ;
- print $Help{MODE} ;
- print $Help{MODULE} ;
- print $Help{MPTEX} ;
- print $Help{NOARRANGE} ;
- print $Help{NOMP} ;
- print $Help{ONCE} ;
- print $Help{OUTPUT} ;
- print $Help{PAGES} ;
- print $Help{PAPER} ;
- print $Help{PASSON} ;
- print $Help{PDFARRANGE} ;
- print $Help{PDFCOMBINE} ;
- print $Help{PDFCOPY} ;
- print $Help{PDFSELECT} ;
- print $Help{PDF} ;
- print $Help{PRINT} ;
- print $Help{RESULT} ;
- print $Help{RUNS} ;
- print $Help{SILENT} ;
- print $Help{TEX} ;
- print $Help{VERBOSE} ;
- print "\n" ;
- print $Help{HELP} ;
- print "\n" }
- exit 0 }
-
-my $FinalRunNeeded = 0 ;
-
-sub RunPerlScript
- { my ($ScriptName, $Options) = @_ ;
- if ($dosish)
- { system ("perl $TeXScriptsPath$ScriptName.pl $Options") }
- else
- { system ("$ScriptName $Options") } }
-
-sub ConvertXMLFile
- { my $FileName = shift ; RunPerlScript($SGMLtoTeX, "$FileName.xml") }
-
-sub ConvertSGMLFile
- { my $FileName = shift ; RunPerlScript($SGMLtoTeX, "$FileName.sgm") }
-
-my $FullFormat = '' ;
-
-sub CheckOutputFormat
- { my $Ok = 1 ;
- if ($OutputFormat ne 'standard')
- { my @OutputFormat = split(/,/,$OutputFormat) ;
- foreach my $F (@OutputFormat)
- { if (defined($OutputFormats{lc $F}))
- { my $OF = $OutputFormats{lc $F} ;
- next if (",$FullFormat," =~ /\,$OF\,/) ;
- if ($FullFormat) { $FullFormat .= "," }
- $FullFormat .= "$OutputFormats{lc $F}" }
- else
- { $Ok = 0 } }
- if (!$Ok)
- { print $Help{output} }
- elsif ($FullFormat)
- { print OPT "\\setupoutput[$FullFormat]\n" } }
- unless ($FullFormat)
- { $FullFormat = $OutputFormat } } # 'standard' to terminal
-
-sub MakeOptionFile
- { my ($FinalRun, $FastDisabled, $JobName) = @_ ;
- open (OPT, ">$JobName.top") ;
- print OPT "\\unprotect\n" ;
- $MainLanguage = lc $MainLanguage ;
- unless ($MainLanguage eq "standard")
- { print OPT "\\setuplanguage[$MainLanguage]\n" }
-# my $Ok = 1 ;
-# if ($OutputFormat ne 'standard')
-# { my @OutputFormat = split(/,/,$OutputFormat) ;
-# foreach my $F (@OutputFormat)
-# { if (defined($OutputFormats{lc $F}))
-# { my $OF = $OutputFormats{lc $F} ;
-# next if (",$FullFormat," =~ /\,$OF\,/) ;
-# if ($FullFormat) { $FullFormat .= "," }
-# $FullFormat .= "$OutputFormats{lc $F}" }
-# else
-# { $Ok = 0 } }
-# if (!$Ok)
-# { print $Help{output} }
-# elsif ($FullFormat)
-# { print OPT "\\setupoutput[$FullFormat]\n" } }
-# unless ($FullFormat)
-# { $FullFormat = $OutputFormat } # 'standard' to terminal
-#
- if ($FullFormat ne 'standard')
- { print OPT "\\setupoutput[$FullFormat]\n" }
-#
- 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 ($SilentMode)
- { print OPT "\\silentmode\n" }
- if ($SetupPath)
- { print OPT "\\setupsystem[\\c!gebied=\{$SetupPath\}]\n" }
- $_ = $PaperFormat ;
- unless (($PdfArrange)||($PdfSelect)||($PdfCombine)||($PdfCopy))
- { if (/.4.3/goi)
- { print OPT "\\stelpapierformaatin[A4][A3]\n" }
- elsif (/.5.4/goi)
- { print OPT "\\stelpapierformaatin[A5][A4]\n" }
- elsif (!/standard/)
- { print $Help{paper} } }
- if ($CenterPage)
- { print OPT "\\stellayoutin[\\c!plaats=\\v!midden,\\c!markering=\\v!aan]\n" }
- if ($NoArrange)
- { print OPT "\\stelarrangerenin[\\v!blokkeer]\n" }
- elsif ($Arrange)
- { $FinalRunNeeded = 1 ;
- unless ($FinalRun)
- { print OPT "\\stelarrangerenin[\\v!blokkeer]\n" } }
- else
- { $_ = $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" } }
- elsif (!/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
- { my @Pages = split (/\,/,$Pages) ;
- $Pages = '' ;
- foreach my $page (@Pages)
- { if ($page =~ /\:/)
- { my ($from,$to) = split (/\:/,$page) ;
- foreach (my $i=$from;$i<=$to;$i++)
- { $Pages .= $i . ',' } }
- else
- { $Pages .= $page . ',' } }
- chop $Pages ;
- print OPT "\\def\\pagestoshipout\{$Pages\}\n" } }
- print OPT "\\protect\n" ;
- if ($Environment)
- { foreach my $E ($Environment) { print OPT "\\omgeving $E\n" } }
- close (OPT) ;
- if (open(TMP,">cont-opt.bak")&&open(TMP,"<cont-opt.tex"))
- { while (<OPT>) { print TMP $_ } } }
-
-my $UserFileOk = 0 ;
-my @MainLanguages ;
-my $AllLanguages = '' ;
-
-sub MakeUserFile
- { $UserFileOk = 0 ;
- return if (($MainLanguage eq 'standard')&&
- ($MainBodyFont eq 'standard')) ;
- print " preparing user file : cont-fmt.tex\n" ;
- open (USR, ">cont-fmt.tex") ;
- print USR "\\unprotect\n" ;
- $AllLanguages = $MainLanguage ;
- if ($MainLanguage ne 'standard')
- { @MainLanguages = split (/\,/,$MainLanguage) ;
- foreach (@MainLanguages)
- { print USR "\\installlanguage[\\s!$_][\\c!status=\\v!start]\n" }
- $MainLanguage = $MainLanguages[0] ;
- print USR "\\setupcurrentlanguage[\\s!$MainLanguage]\n" }
- if ($MainBodyFont ne 'standard')
- { print USR "\\definefilesynonym[font-cmr][font-$MainBodyFont]\n" }
- print USR "\\protect\n" ;
- print USR "\\endinput\n" ;
- close (USR) ;
- ReportUserFile () ;
- print "\n" ;
- $UserFileOk = 1 }
-
-sub RestoreUserFile
- { unlink "cont-fmt.log" ;
- rename "cont-fmt.tex", "cont-fmt.log" ;
- ReportUserFile () }
-
-sub ReportUserFile
- { return unless ($UserFileOk) ;
- print "\n" ;
- if ($MainLanguage ne 'standard')
- { print " additional patterns : $AllLanguages\n" ;
- print " default language : $MainLanguage\n" }
- if ($MainBodyFont ne 'standard')
- { print " default bodyfont : $MainBodyFont\n" } }
-
-sub CompareFiles
- { my ($File1, $File2) = @_ ;
- my $Str1 = my $Str2 = '' ;
- if ((-s $File1 eq -s $File2)&&(open(TUO1,$File1))&&(open(TUO2,$File2)))
- { while(1)
- { $Str1 = <TUO1> ;
- $Str2 = <TUO2> ;
- if ($Str1 eq $Str2)
- { unless ($Str1) { close(TUO1) ; close(TUO2) ; return 1 } }
- else
- { close(TUO1) ; close(TUO2) ; return 0 } } }
- else
- { return 0 } }
-
-my $ConTeXtVersion = "unknown" ;
-my $ConTeXtModes = '' ;
-
-sub ScanPreamble
- { my ($FileName) = @_ ;
- open (TEX, $FileName) ;
- while (<TEX>)
- { chomp ;
- if (/^\%.*/)
- { if (/tex=([a-z]*)/goi) { $TeXExecutable = $1 }
- if (/translat.*?=([\:\/0-9\-a-z]*)/goi) { $TeXTranslation = $1 }
- if (/program=([a-z]*)/goi) { $TeXExecutable = $1 }
- if (/modes=([a-z\,]*)/goi) { $ConTeXtModes = $1 }
- if (/output=([a-z\,]*)/goi) { $OutputFormat = $1 }
- if ($ConTeXtInterface eq "unknown")
- { 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
- { my ($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 $JobName = shift ;
- my $StartTime = time ;
- my $cmd ;
- my $TeXProgNameFlag ;
- if (!$dosish)
- { $TeXProgramPath = '' ;
- $TeXFormatPath = '' ;
- if (!$TeXProgNameFlag&&($Format=~/^cont/))
- { $TeXProgNameFlag = "-progname=context" } }
- $cmd = "$TeXProgramPath$TeXExecutable $TeXProgNameFlag " .
- "$TeXPassString $PassOn " ;
- if ($TeXTranslation ne '')
- { $cmd .= "-translate-file=$TeXTranslation " }
- $cmd .= "$TeXFormatFlag$TeXFormatPath$Format $JobName" ;
- if ($Verbose) { print "\n$cmd\n\n" }
- $Problems = system ( "$cmd" ) ;
- my $StopTime = time - $StartTime ;
- print "\n run time : $StopTime seconds\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
- { my ($JobName) = @_ ;
- $JobName =~ s/\\/\//goi ;
- if (-e "$JobName.tex")
- { 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) }
- CheckOutputFormat ;
- my $StopRunning = 0 ;
- if ($Format eq '')
- { $Format = "cont-$ConTeXtInterface" }
- print " executable : $TeXProgramPath$TeXExecutable\n" ;
- print " format : $TeXFormatPath$Format\n" ;
- print " inputfile : $JobName\n" ;
- print " output : $FullFormat\n" ;
- print " interface : $ConTeXtInterface\n" ;
- if ($TeXTranslation ne '')
- { print " translation : $TeXTranslation\n" }
- my $Options = '' ;
- if ($FastMode) { $Options .= " fast" }
- if ($FinalMode) { $Options .= " final" }
- if ($Verbose) { $Options .= " verbose" }
- if ($TypesetListing) { $Options .= " listing" }
- if ($TypesetModule) { $Options .= " module" }
- if ($TypesetFigures) { $Options .= " figures" }
- if ($MakeFormats) { $Options .= " make" }
- if ($RunOnce) { $Options .= " once" }
- if ($UseColor) { $Options .= " color" }
- if ($EnterBatchMode) { $Options .= " batch" }
- if ($NoMPMode) { $Options .= " nomp" }
- if ($CenterPage) { $Options .= " center" }
- if ($Arrange) { $Options .= " arrange" }
- if ($NoArrange) { $Options .= " no-arrange" }
- 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) ;
- $Problems = 0 ;
- my $TeXRuns = 0 ;
- if (($PdfArrange)||($PdfSelect)||($RunOnce))
- { MakeOptionFile (1, 1, $JobName) ;
- print "\n" ;
- $Problems = RunTeX($JobName) ;
- PopResult($JobName) }
- else
- { while (!$StopRunning&&($TeXRuns<$NOfRuns)&&(!$Problems))
- { MakeOptionFile (0, 0, $JobName) ;
- ++$TeXRuns ;
- print " TeX run : $TeXRuns\n\n" ;
- $Problems = RunTeX($JobName) ;
- if ((!$Problems)&&($NOfRuns>1))
- { if (!$NoMPMode)
- { my $MPJobName = '' ;
- if (-e "$JobName-mpgraph.mp")
- { $MPJobName = "$JobName-mpgraph.mp" }
- elsif (-e "mpgraph.mp")
- { $MPJobName = "mpgraph.mp" }
- if ($MPJobName ne "")
- { if (open(MP, "$MPJobName"))
- { $_ = <MP> ;
- my $RuntimeGraphic = /runtime generated graphic/i ;
- close(MP) ;
- if (!$RuntimeGraphic)
- { if ($MpExecutable ne '')
- { print " generating graphics : metaposting MPJobName\n" ;
- $Problems = system ("$MpExecutable $MPJobName") }
- else
- { print " generating graphics : metapost cannot be run\n" } } } } }
- unless ($Problems)
- { unlink "$JobName.tup" ;
- rename "$JobName.tuo", "$JobName.tup" ;
- print " sorting and checking : running texutil\n" ;
-my $TcXSwitch = '' ;
-if ($TcXPath ne '') { $TcXSwitch = "--tcxpath=$TcXPath" }
- RunPerlScript
- ($TeXUtil, "--ref --ij --high $TcXPath $JobName" );
- if (-e "$JobName.tuo")
- { $StopRunning =
- CompareFiles("$JobName.tup", "$JobName.tuo") }
- else
- { $StopRunning = 1 } # otherwise potential loop
- if (!$StopRunning)
- { print "\n utility file analysis : another run needed\n" } } } }
- if ((!$Problems)&&(($FinalMode||$FinalRunNeeded))&&($NOfRuns>1))
- { MakeOptionFile (1, $FinalMode, $JobName) ;
- print " final TeX run : $TeXRuns\n\n" ;
- $Problems = RunTeX($JobName) }
- unlink "$JobName.tup" ; # previous tuo file
- unlink "$JobName.top" ; # runtime option file
- PopResult($JobName) } } }
-
-sub RunSomeTeXFile
- { my ($JobName) = @_ ;
- if (-e "$JobName.tex")
- { PushResult($JobName) ;
- print " executable : $TeXProgramPath$TeXExecutable\n" ;
- print " format : $TeXFormatPath$Format\n" ;
- print " inputfile : $JobName\n" ;
- $Problems = RunTeX($JobName) ;
- PopResult($JobName) } }
-
-my $ModuleFile = "texexec" ;
-my $ListingFile = "texexec" ;
-my $FiguresFile = "texexec" ;
-my $ArrangeFile = "texexec" ;
-my $SelectFile = "texexec" ;
-my $CopyFile = "texexec" ;
-my $CombineFile = "texexec" ;
-
-sub RunModule
- { my ($FileName) = @_ ;
- if ((-e "$FileName.tex")||(-e "$FileName.pl")||(-e "$FileName.mp")||
- (-e "$FileName.pm"))
- { RunPerlScript ($TeXUtil,
- "--documents $FileName.pl $FileName.pm $FileName.mp $FileName.tex" ) ;
- print " module : $FileName\n\n" ;
- open (MOD, ">$ModuleFile.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 "\\def\\ModuleNumber{1}\n" ;
- print MOD "\\input $FileName.ted \n" ;
- print MOD "\\stoptekst \n" ;
- close (MOD) ;
- $ConTeXtInterface = "nl" ;
- RunConTeXtFile($ModuleFile) ;
- if ($FileName ne $ModuleFile)
- { foreach my $FileSuffix ("dvi", "pdf", "tui", "tuo", "log")
- { unlink ("$FileName.$FileSuffix") ;
- rename ("$ModuleFile.$FileSuffix", "$FileName.$FileSuffix") } }
- unlink ("$ModuleFile.tex") } }
-
-sub RunFigures
- { my @Files = @_ ;
- $TypesetFigures = lc $TypesetFigures ;
- return unless ($TypesetFigures =~ /[abc]/o) ;
- unlink "$FiguresFile.pdf" ;
- if (@Files) { RunPerlScript ($TeXUtil, "--figures @Files" ) }
- open (FIG, ">$FiguresFile.tex") ;
- print FIG "% format=english\n" ;
- print FIG "\\starttext\n" ;
- print FIG "\\setuplayout\n" ;
- print FIG " [topspace=1.5cm,backspace=1.5cm,\n" ;
- print FIG " header=1.5cm,footer=0pt,\n" ;
- print FIG " width=middle,height=middle]\n" ;
- print FIG "\\showexternalfigures[alternative=$TypesetFigures,offset=$PaperOffset]\n" ;
- print FIG "\\stoptext\n" ;
- close(FIG) ;
- $ConTeXtInterface = "en" ;
- RunConTeXtFile($FiguresFile) }
-
-sub RunListing
- { my $FileName = shift ;
- return unless -f $FileName ;
- print " input file : $FileName\n" ;
- if ($BackSpace eq "0pt")
- { $BackSpace="1.5cm" }
- else
- { print " backspace : $BackSpace\n" }
- if ($TopSpace eq "0pt")
- { $TopSpace="1.5cm" }
- else
- { print " topspace : $TopSpace\n" }
- open (LIS, ">$ListingFile.tex") ;
- print LIS "% format=english\n" ;
- print LIS "\\starttext\n" ;
- print LIS "\\setupbodyfont[11pt,tt]\n" ;
- print LIS "\\setuplayout\n" ;
- print LIS " [topspace=$TopSpace,backspace=$BackSpace,\n" ;
- print LIS " header=0cm,footer=1.5cm,\n" ;
- print LIS " width=middle,height=middle]\n" ;
- print LIS "\\setupfootertexts[$FileName][pagenumber]\n" ;
- print LIS "\\typefile\{$FileName\}\n" ;
- print LIS "\\stoptext\n" ;
- close(LIS) ;
- $ConTeXtInterface = "en" ;
- RunConTeXtFile($ListingFile) }
-
-sub DetermineNOfPdfPages
- { my $FileName = shift ;
- my $NOfPages = 0 ;
- if (($FileName =~ /\.pdf$/io)&&(open(PDF,$FileName)))
- { binmode PDF ;
- my $PagesFound = 0 ;
- while (<PDF>)
- { if (/\/Type \/Pages/o)
- { $PagesFound = 1 }
- if ($PagesFound)
- { if (/\/Count\s*(\d*)/o)
- { if ($1>$NOfPages) { $NOfPages = $1 } }
- elsif (/endobj/o)
- { $PagesFound = 0 } } }
- close ( PDF ) }
- return $NOfPages }
-
-sub RunArrange
- { my @files = @_ ;
- print " backspace : $BackSpace\n" ;
- print " topspace : $TopSpace\n" ;
- print " paperoffset : $PaperOffset\n" ;
- if ($AddEmpty eq '')
- { print " empty pages added : none\n" }
- else
- { print " empty pages added : $AddEmpty\n" }
- if ($TextWidth eq '0pt')
- { print " textwidth : unknown\n" }
- else
- { print " textwidth : $TextWidth\n" }
- open (ARR, ">$ArrangeFile.tex") ;
- print ARR "% format=english\n" ;
- if ($PaperFormat ne 'standard')
- { print " paperformat : $PaperFormat\n" ;
- print ARR "\\setuppapersize[$PaperFormat][$PaperFormat]\n" }
- print ARR "\\definepapersize\n" ;
- print ARR " [offset=$PaperOffset]\n";
- print ARR "\\setuplayout\n" ;
- print ARR " [backspace=$BackSpace,\n" ;
- print ARR " topspace=$TopSpace,\n" ;
- if ($Markings)
- { print ARR " marking=on,\n" ;
- print " cutmarkings : on\n" }
- print ARR " width=middle,\n" ;
- print ARR " height=middle,\n" ;
- print ARR " location=middle,\n" ;
- print ARR " header=0pt,\n" ;
- print ARR " footer=0pt]\n" ;
- if ($NoDuplex)
- { print " duplex : off\n" }
- else
- { print " duplex : on\n" ;
- print ARR "\\setuppagenumbering\n" ;
- print ARR " [alternative=doublesided]\n" }
- foreach my $FileName (@files)
- { my $NOfPages = DetermineNOfPdfPages($FileName) ;
- if ($NOfPages)
- { print " pdffile : $FileName\n" ;
- print " number of pages : $NOfPages\n\n" ;
- print ARR "\\insertpages\n" ;
- if ($AddEmpty eq '')
- { print ARR " [$FileName][n=$NOfPages,width=$TextWidth]\n" }
- else
- { print ARR " [$FileName][$AddEmpty][n=$NOfPages,width=$TextWidth]\n" } } }
- print ARR "\\stoptext\n" ;
- close (ARR) ;
- $ConTeXtInterface = "en" ;
- RunConTeXtFile($ModuleFile) }
-
-sub RunSelect
- { my $FileName = shift ;
- print " backspace : $BackSpace\n" ;
- print " topspace : $TopSpace\n" ;
- print " paperoffset : $PaperOffset\n" ;
- if ($TextWidth eq '0pt')
- { print " textwidth : unknown\n" }
- else
- { print " textwidth : $TextWidth\n" }
- open (SEL, ">$SelectFile.tex") ;
- print SEL "% format=english\n" ;
- if ($PaperFormat ne 'standard')
- { print " papersize : $PaperFormat\n" ;
- print SEL "\\setuppapersize[$PaperFormat][$PaperFormat]\n" }
- print SEL "\\definepapersize\n" ;
- print SEL " [offset=$PaperOffset]\n";
- print SEL "\\setuplayout\n" ;
- print SEL " [backspace=$BackSpace,\n" ;
- print SEL " topspace=$TopSpace,\n" ;
- if ($Markings)
- { print SEL " marking=on,\n" ;
- print " cutmarkings : on\n" }
- print SEL " width=middle,\n" ;
- print SEL " height=middle,\n" ;
- print SEL " location=middle,\n" ;
- print SEL " header=0pt,\n" ;
- print SEL " footer=0pt]\n" ;
- #print SEL "\\setuppagenumbering\n" ;
- #print SEL " [alternative=doublesided]\n" ;
- my $NOfPages = DetermineNOfPdfPages($FileName) ;
- if (($NOfPages)&&($Selection ne ''))
- { print " pdffile : $FileName\n" ;
- print " number of pages : $NOfPages\n\n" ;
- print SEL "\\filterpages\n" ;
- print SEL " [$FileName][$Selection][n=$NOfPages,width=$TextWidth]\n" }
- print SEL "\\stoptext\n" ;
- close (SEL) ;
- $ConTeXtInterface = "en" ;
- RunConTeXtFile($SelectFile) }
-
-sub RunCopy
- { my $FileName = shift ;
- print " scale : $PageScale\n" ;
- if ($PageScale<10) { $PageScale *= 1000 ; sprintf(".0f",$PageScale) }
- open (COP, ">$CopyFile.tex") ;
- print COP "% format=english\n" ;
- print COP "\\getfiguredimensions\n" ;
- print COP " [$FileName][page=1]\n" ;
- print COP "\\definepapersize\n" ;
- print COP " [copy]\n" ;
- print COP " [width=\\naturalfigurewidth,\n" ;
- print COP " height=\\naturalfigureheight]\n" ;
- print COP "\\setuppapersize\n" ;
- print COP " [copy][copy]\n" ;
- print COP "\\setuplayout\n" ;
- print COP " [location=middle,\n" ;
- print COP " topspace=0pt,\n" ;
- print COP " backspace=0pt,\n" ;
- print COP " header=0pt,\n" ;
- print COP " footer=0pt,\n" ;
- print COP " width=middle,\n" ;
- print COP " height=middle]\n" ;
- print COP "\\starttext\n" ;
- my $NOfPages = DetermineNOfPdfPages($FileName) ;
- if ($NOfPages)
- { print " pdffile : $FileName\n" ;
- print " number of pages : $NOfPages\n\n" ;
- print COP "\\copypages[$FileName][n=$NOfPages,scale=$PageScale]\n" }
- print COP "\\stoptext\n" ;
- close (COP) ;
- $ConTeXtInterface = "en" ;
- RunConTeXtFile($CopyFile) }
-
-sub RunCombine
- { my $FileName = shift ;
- my ($nx,$ny) = split (/\*/,$Combination,2) ;
- return unless ($nx&&$ny) ;
- print " combination : $Combination\n" ;
- open (COM, ">$CombineFile.tex") ;
- print COM "% format=english\n" ;
- if ($PaperFormat ne 'standard')
- { print " papersize : $PaperFormat\n" ;
- print COM "\\setuppapersize\n" ;
- print COM " [$PaperFormat][$PaperFormat]\n" }
- if ($PaperOffset eq '0pt')
- { $PaperOffset = '1cm' }
- print " paper offset : $PaperOffset\n" ;
- print COM "\\setuplayout\n" ;
- print COM " [topspace=$PaperOffset,\n" ;
- print COM " backspace=$PaperOffset,\n" ;
- print COM " header=0pt,\n" ;
- print COM " footer=1cm,\n" ;
- print COM " width=middle,\n" ;
- print COM " height=middle]\n" ;
- print COM "\\setupfootertexts\n" ;
- print COM " [$FileName\\space---\\space\\currentdate\\space---\\space\\pagenumber]\n" ;
- print COM "\\starttext\n" ;
- my $NOfPages = DetermineNOfPdfPages($FileName) ;
- if ($NOfPages)
- { print " pdffile : $FileName\n" ;
- print " number of pages : $NOfPages\n\n" ;
- print COM "\\combinepages[$FileName][n=$NOfPages,nx=$nx,ny=$ny]\n" }
- print COM "\\stoptext\n" ;
- close (COM) ;
- $ConTeXtInterface = "en" ;
- RunConTeXtFile($CombineFile) }
-
-sub RunOneFormat
- { my ($FormatName) = @_ ;
- my @TeXFormatPath ;
- my $TeXPrefix = '' ;
- if ($fmtutil ne '')
- { my $cmd = "$fmtutil --byfmt $FormatName" ;
- if ($Verbose) { print "\n$cmd\n\n" }
- MakeUserFile ; # this works only when the path is kept
- $Problems = system ( "$cmd" ) ;
- RestoreUserFile }
- else
- { $Problems = 1 }
- if ($Problems)
- { if ($TeXExecutable =~ /etex|eetex|pdfetex|pdfeetex/io)
- {$TeXPrefix = "*" }
- my $CurrentPath = cwd() ;
- if (($TeXFormatPath eq '')&&($kpsewhich ne ''))
- { $TeXFormatPath = `$kpsewhich --show-path=fmt` ;
- chomp $TeXFormatPath ;
- $TeXFormatPath =~ s/\.+\;//o ; # should be a sub
- $TeXFormatPath =~ s/\;.*//o ;
- $TeXFormatPath =~ s/\!//go ;
- $TeXFormatPath =~ s/\/\//\//go ;
- $TeXFormatPath =~ s/\\\\/\//go ;
- $TeXFormatPath =~ s/[\/\\]$// ;
- $TeXFormatPath .= '/' ;
- if (($TeXFormatPath ne '')&&$Verbose)
- { print " located formatpath : $TeXFormatPath\n" } }
- if ($TeXFormatPath ne '')
- { chdir "$TeXFormatPath" }
- MakeUserFile ;
- my $cmd = "$TeXProgramPath$TeXExecutable $TeXVirginFlag " .
- "$TeXPassString ${TeXPrefix}$FormatName" ;
- if ($Verbose) { print "\n$cmd\n\n" }
- system ( $cmd ) ;
- RestoreUserFile ;
- if (($TeXFormatPath ne '')&&($CurrentPath ne ''))
- { chdir $CurrentPath } } }
-
-sub RunFormats
- { my $ConTeXtFormatsPrefix;
- if (@ARGV)
- { @ConTeXtFormats = @ARGV }
- elsif ($UsedInterfaces ne '')
- { @ConTeXtFormats = split /\,/,$UsedInterfaces }
- if ($Format)
- { @ConTeXtFormats = $Format; $ConTeXtFormatsPrefix='' ; }
- else
- { $ConTeXtFormatsPrefix="cont-" ; }
- foreach my $Interface (@ConTeXtFormats)
- { RunOneFormat ("$ConTeXtFormatsPrefix$Interface") }
- print "\n" ;
- print " executable : $TeXProgramPath$TeXExecutable\n" ;
- print " format(s) : @ConTeXtFormats\n\n" ; }
-
-sub RunFiles
- { if ($PdfArrange)
- { my @arrangedfiles = () ;
- foreach my $JobName (@ARGV)
- { unless ($JobName =~ /.*\.pdf$/oi)
- { if (-f "$JobName.pdf")
- { $JobName .= ".pdf" }
- else
- { $JobName .= ".PDF" } }
- push @arrangedfiles, $JobName }
- if (@arrangedfiles)
- { RunArrange (@arrangedfiles) } }
- elsif (($PdfSelect)||($PdfCopy)||($PdfCombine))
- { my $JobName = $ARGV[0] ;
- if ($JobName ne '')
- { unless ($JobName =~ /.*\.pdf$/oi)
- { if (-f "$JobName.pdf")
- { $JobName .= ".pdf" }
- else
- { $JobName .= ".PDF" } }
- if ($PdfSelect)
- { RunSelect ($JobName) }
- elsif ($PdfCopy)
- { RunCopy ($JobName) }
- else
- { RunCombine ($JobName) } } }
- else
- { foreach my $JobName (@ARGV)
- { $JobName =~ s/\.tex//goi ;
- if ($TypesetModule)
- { unless ($Format) { RunModule ($JobName) } }
- else
- { if (($Format eq '')||($Format =~ /^cont.*/io))
- { RunConTeXtFile ($JobName) }
- else
- { RunSomeTeXFile ($JobName) } }
- unless (-s "$JobName.log") { unlink ("$JobName.log") }
- unless (-s "$JobName.tui") { unlink ("$JobName.tui") } } } }
-
-sub RunMP
- { if (($MpExecutable)&&($MpToTeXExecutable)&&($DviToMpExecutable))
- { foreach my $RawMpName (@ARGV)
- { my ($MpName, $Rest) = split (/\./, $RawMpName, 2) ;
- if (-e "$MpName.mp")
- { if (open(MP, "$MpName.mp"))
- { local $/ = "\0777" ; $_ = <MP> ; close(MP) ;
- if (/(btex|etex|verbatimtex)/)
- { print " metapost to tex : $MpName\n" ;
- $Problems = system ("$MpToTeXExecutable $MpName.mp > $MpName.tex" ) ;
- if (-e "$MpName.tex"&& !$Problems)
- { if (($Format eq '')||($Format =~ /^cont.*/io))
- { RunConTeXtFile ($MpName) }
- else
- { RunSomeTeXFile ($MpName) }
- if (-e "$MpName.dvi"||!$Problems)
- { print " dvi to metapost : $MpName\n" ;
- $Problems = system ("$DviToMpExecutable $MpName") } } } }
-
- print " metapost : $MpName\n" ;
- $Problems = system ("$MpExecutable $MpName" ) } } } }
-
-if ($TypesetListing)
- { RunListing (@ARGV) }
-elsif ($TypesetFigures)
- { RunFigures (@ARGV) }
-elsif ($DoMPTeX)
- { RunMP }
-elsif ($MakeFormats)
- { RunFormats }
-elsif (@ARGV)
- { RunFiles }
-else
- { print $Help{HELP} ;
- unless ($Verbose) { print $Help{VERBOSE} } }
-
-if (-f "cont-opt.tex")
- { unlink ("cont-opt.bak") ;
- rename ("cont-opt.tex", "cont-opt.bak") }
-
-if ($Problems) { exit 1 }