added RESISTANCE to the list of acceptable uppercase words
[project-aon.git] / common / scripts / gbtolatex.pl
1 #!/bin/perl -w
2 #
3 # gbtolatex.pl
4 # 19 september 2007
5 #
6 # Creates LaTeX gamebook from XML source. This should subsequently be
7 # used to create a PDF or PostScript version.
8 #####
9
10 use strict;
11
12 # Check AONPATH
13 if ( ! defined($ENV{'AONPATH'}) && ! defined ($ENV{'AONDATA'}) ) {
14         print STDERR "AONPATH environment variable not set, it should be defined to\n";
15         print STDERR "the root directory of the repository of the AON files are.\n";
16         exit 1;
17 }
18 ##
19
20 my $PROGRAM_NAME      = "gbtolatex";
21 my $XML_PATH          = "xml";
22 my $XML_SOURCE        = "";
23 my $PWD               = `pwd`;
24 chomp($PWD);
25 my $BOOK_PATH         = $ENV{'AONPATH'}."/common/pdf/build";
26 my $TITLE_COLOR       = "";
27 my $USE_ILLUSTRATORS  = "";
28
29 # Programs
30 #
31 # my $XMLPROC = "xalan";
32 # my $XMLPROC = "/usr/local/bin/xmlto";
33 my $XMLPROC = "/usr/bin/xsltproc";
34 # my $JAVA = "/cygdrive/c/WINDOWS/java.exe";
35 my $JAVA = "/usr/bin/java"; 
36 my $EXTRAPARMS =""; 
37 $EXTRAPARMS=$ENV{'XMLPARMS'} if defined($ENV{'XMLPARMS'});
38
39
40 unless( $ARGV[ 0 ] ) { die "Usage:\n\t${PROGRAM_NAME} book-code [LANGUAGE] [OUTPUTFILE]\n"; }
41
42 # Check that all the binaries are were want them
43
44 my @BINARIES;
45 push @BINARIES, ($XMLPROC, $JAVA);
46
47 foreach (@BINARIES) {
48     if ( ! -e $_ ) {
49             die "$PROGRAM_NAME: Cannot find binary '".$_."'. Please install it.\n";
50     }
51 }
52
53
54 print "Reminder:\n\tDid you uncomment the LaTeX special character\n\tdeclarations in the book's XML file?\n";
55
56 my $bookCode = $ARGV[ 0 ];
57 my $language = $ARGV[ 1 ] || "en"; # Use a language or default to 'en'
58
59 my $DATADIR = "";
60 if ( defined ($ENV{'AONDATA'} ) ) {
61         $DATADIR=$ENV{'AONDATA'} ; 
62 } else { 
63         $DATADIR= $ENV{'AONPATH'}."/".$language."/xml";
64 }
65 if ( ! -d "$DATADIR" ) {
66         print STDERR "Cannot find data directory $DATADIR !\n";
67         exit 1;
68 }
69 # Data dir, where XSL files reside
70 # Note: This has to be set to the XML file location and not the XSL location
71 # because of the .inc and the .mod files
72 # We link the file later on to use it
73
74 my $XSLDIR = $ENV{'AONPATH'}."/common/xsl";
75 if ( ! -d "$XSLDIR" ) {
76         print STDERR "Cannot find XSL directory: $XSLDIR !\n";
77         exit 1;
78 }
79
80 # TODO:
81 # - convert the bookcode's if then else to a hash array
82 # - allow usage of unknown book codes
83
84 if( $bookCode eq "01fftd" ) {
85     $XML_SOURCE        = "01fftd.xml";
86     $BOOK_PATH         .= "/lw/01fftd";
87     $TITLE_COLOR       = "0.0,0.4,0.2";
88     $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
89 }
90 elsif( $bookCode eq "01hdlo" ) {
91     $XML_SOURCE        = "01hdlo.xml";
92     $BOOK_PATH         .= "/lw/01hdlo";
93     $TITLE_COLOR       = "0.0,0.4,0.2";
94     $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
95 }
96 elsif( $bookCode eq "02fotw" ) {
97     $XML_SOURCE        = "02fotw.xml";
98     $BOOK_PATH         .= "/lw/02fotw";
99     $TITLE_COLOR       = "0.0,0.6,0.6";
100     $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
101 }
102 elsif( $bookCode eq "02fsea" ) {
103     $XML_SOURCE        = "02fsea.xml";
104     $BOOK_PATH         .= "/lw/02fsea";
105     $TITLE_COLOR       = "0.0,0.6,0.6";
106     $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
107 }
108 elsif( $bookCode eq "03tcok" ) {
109     $XML_SOURCE        = "03tcok.xml";
110     $BOOK_PATH         .= "/lw/03tcok";
111     $TITLE_COLOR       = "0.0,0.6,0.8";
112     $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
113 }
114 elsif( $bookCode eq "03lcdk" ) {
115     $XML_SOURCE        = "03lcdk.xml";
116     $BOOK_PATH         .= "/lw/03lcdk";
117     $TITLE_COLOR       = "0.0,0.6,0.8";
118     $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
119 }
120 elsif( $bookCode eq "04tcod" ) {
121     $XML_SOURCE        = "04tcod.xml";
122     $BOOK_PATH         .= "/lw/04tcod";
123     $TITLE_COLOR       = "0.0,0.0,0.6";
124     $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
125 }
126 elsif( $bookCode eq "04eam" ) {
127     $XML_SOURCE        = "04eam.xml";
128     $BOOK_PATH         .= "/lw/04eam";
129     $TITLE_COLOR       = "0.0,0.0,0.6";
130     $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
131 }
132 elsif( $bookCode eq "05sots" ) {
133     $XML_SOURCE        = "05sots.xml";
134     $BOOK_PATH         .= "/lw/05sots";
135     $TITLE_COLOR       = "0.8,0.6,0.0";
136     $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
137 }
138 elsif( $bookCode eq "05eddls" ) {
139     $XML_SOURCE        = "05eddls.xml";
140     $BOOK_PATH         .= "/lw/05eddls";
141     $TITLE_COLOR       = "0.8,0.6,0.0";
142     $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
143 }
144 elsif( $bookCode eq "06tkot" ) {
145     $XML_SOURCE        = "06tkot.xml";
146     $BOOK_PATH         .= "/lw/06tkot";
147     $TITLE_COLOR       = "0.6,0.6,0.0";
148     $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
149 }
150 elsif( $bookCode eq "06lpdlc" ) {
151     $XML_SOURCE        = "06lpdlc.xml";
152     $BOOK_PATH         .= "/lw/06lpdlc";
153     $TITLE_COLOR       = "0.6,0.6,0.0";
154     $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
155 }
156 elsif( $bookCode eq "07cd" ) {
157     $XML_SOURCE        = "07cd.xml";
158     $BOOK_PATH         .= "/lw/07cd";
159     $TITLE_COLOR       = "0.0,0.8,0.4";
160     $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
161 }
162 elsif( $bookCode eq "07meec" ) {
163     $XML_SOURCE        = "07meec.xml";
164     $BOOK_PATH         .= "/lw/07meec";
165     $TITLE_COLOR       = "0.6,0.6,0.0";
166     $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
167 }
168 elsif( $bookCode eq "08tjoh" ) {
169     $XML_SOURCE        = "08tjoh.xml";
170     $BOOK_PATH         .= "/lw/08tjoh";
171     $TITLE_COLOR       = "0.4,0.6,0.4";
172     $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
173 }
174 elsif( $bookCode eq "08ljdlh" ) {
175     $XML_SOURCE        = "08ljdlh.xml";
176     $BOOK_PATH         .= "/lw/08ljdlh";
177     $TITLE_COLOR       = "0.4,0.6,0.4";
178     $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:Daniel Strong:";
179 }
180 elsif( $bookCode eq "09tcof" ) {
181     $XML_SOURCE        = "09tcof.xml";
182     $BOOK_PATH         .= "/lw/09tcof";
183     $TITLE_COLOR       = "1.0,0.6,0.0";
184     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
185 }
186 elsif( $bookCode eq "09ecdm" ) {
187     $XML_SOURCE        = "09ecdm.xml";
188     $BOOK_PATH         .= "/lw/09ecdm";
189     $TITLE_COLOR       = "1.0,0.6,0.0";
190     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:Daniel Strong:";
191 }
192 elsif( $bookCode eq "10tdot" ) {
193     $XML_SOURCE        = "10tdot.xml";
194     $BOOK_PATH         .= "/lw/10tdot";
195     $TITLE_COLOR       = "1.0,0.0,0.0";
196     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
197 }
198 elsif( $bookCode eq "10lmdt" ) {
199     $XML_SOURCE        = "10lmdt.xml";
200     $BOOK_PATH         .= "/lw/10lmdt";
201     $TITLE_COLOR       = "1.0,0.0,0.0";
202     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:Daniel Strong:";
203 }
204 elsif( $bookCode eq "11tpot" ) {
205     $XML_SOURCE        = "11tpot.xml";
206     $BOOK_PATH         .= "/lw/11tpot";
207     $TITLE_COLOR       = "0.5,0.5,0.4";
208     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
209 }
210 elsif( $bookCode eq "11pdt" ) {
211     $XML_SOURCE        = "11pdt.xml";
212     $BOOK_PATH         .= "/lw/11pdt";
213     $TITLE_COLOR       = "0.5,0.5,0.4";
214     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:Daniel Strong:";
215 }
216 elsif( $bookCode eq "12tmod" ) {
217     $XML_SOURCE        = "12tmod.xml";
218     $BOOK_PATH         .= "/lw/12tmod";
219     $TITLE_COLOR       = "0.6,0.0,0.0";
220     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
221 }
222 elsif( $bookCode eq "12lsdlo" ) {
223     $XML_SOURCE        = "12lsdlo.xml";
224     $BOOK_PATH         .= "/lw/12lsdlo";
225     $TITLE_COLOR       = "0.6,0.0,0.0";
226     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:Daniel Strong:";
227 }
228 elsif( $bookCode eq "13tplor" ) {
229     $XML_SOURCE        = "13tplor.xml";
230     $BOOK_PATH         .= "/lw/13tplor";
231     # TODO - review
232     $TITLE_COLOR       = "0.6,0.0,0.0"; 
233     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
234 }
235 elsif( $bookCode eq "13lsdlpdr" ) {
236     $XML_SOURCE        = "13lsdlpdr.xml";
237     $BOOK_PATH         .= "/lw/13lsdlpdr";
238     # TODO - review
239     $TITLE_COLOR       = "0.6,0.0,0.0"; 
240     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
241 }
242 elsif( $bookCode eq "14tcok" ) {
243     $XML_SOURCE        = "14tcok.xml";
244     $BOOK_PATH         .= "/lw/14tcok";
245     # TODO - review
246     $TITLE_COLOR       = "0.6,0.0,0.0"; 
247     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
248 }
249 elsif( $bookCode eq "15tdc" ) {
250     $XML_SOURCE        = "15tdc.xml";
251     $BOOK_PATH         .= "/lw/15tdc";
252     # TODO - review
253     $TITLE_COLOR       = "0.6,0.0,0.0"; 
254     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
255 }
256 elsif( $bookCode eq "16tlov" ) {
257     $XML_SOURCE        = "16tlov.xml";
258     $BOOK_PATH         .= "/lw/16tlov";
259     # TODO - review
260     $TITLE_COLOR       = "0.6,0.0,0.0"; 
261     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
262 }
263 elsif( $bookCode eq "17tdoi" ) {
264     $XML_SOURCE        = "17tdoi.xml";
265     $BOOK_PATH         .= "/lw/17tdoi";
266     # TODO - review
267     $TITLE_COLOR       = "0.6,0.0,0.0"; 
268     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
269 }
270 elsif( $bookCode eq "18dotd" ) {
271     $XML_SOURCE        = "18dotd.xml";
272     $BOOK_PATH         .= "/lw/18dotd";
273     # TODO - review
274     $TITLE_COLOR       = "0.6,0.0,0.0"; 
275     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
276 }
277 elsif( $bookCode eq "19wb" ) {
278     $XML_SOURCE        = "19wb.xml";
279     $BOOK_PATH         .= "/lw/19wb";
280     # TODO - review
281     $TITLE_COLOR       = "0.6,0.0,0.0"; 
282     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
283 }
284 elsif( $bookCode eq "20tcon" ) {
285     $XML_SOURCE        = "20tcon.xml";
286     $BOOK_PATH         .= "/lw/20tcon";
287     # TODO - review
288     $TITLE_COLOR       = "0.6,0.0,0.0";
289     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
290 }
291 elsif( $bookCode eq "21votm" ) {
292     $XML_SOURCE        = "21votm.xml";
293     $BOOK_PATH         .= "/lw/21votm";
294     # TODO - review
295     $TITLE_COLOR       = "0.6,0.0,0.0";
296     $USE_ILLUSTRATORS  = ":Trevor Newton:Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
297 }
298 elsif( $bookCode eq "22tbos" ) {
299     $XML_SOURCE        = "22tbos.xml";
300     $BOOK_PATH         .= "/lw/22tbos";
301     # TODO - review
302     $TITLE_COLOR       = "0.6,0.0,0.0";
303     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
304 }
305 elsif( $bookCode eq "23mh" ) {
306     $XML_SOURCE        = "23mh.xml";
307     $BOOK_PATH         .= "/lw/23mh";
308     # TODO - review
309     $TITLE_COLOR       = "0.6,0.0,0.0";
310     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
311 }
312 elsif( $bookCode eq "24rw" ) {
313     $XML_SOURCE        = "24rw.xml";
314     $BOOK_PATH         .= "/lw/24rw";
315     # TODO - review
316     $TITLE_COLOR       = "0.6,0.0,0.0";
317     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
318 }
319 elsif( $bookCode eq "25totw" ) {
320     $XML_SOURCE        = "25totw.xml";
321     $BOOK_PATH         .= "/lw/25totw";
322     # TODO - review
323     $TITLE_COLOR       = "0.6,0.0,0.0";
324     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
325 }
326 elsif( $bookCode eq "26tfobm" ) {
327     $XML_SOURCE        = "26tfobm.xml";
328     $BOOK_PATH         .= "/lw/26tfobm";
329     # TODO - review
330     $TITLE_COLOR       = "0.6,0.0,0.0";
331     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
332 }
333 elsif( $bookCode eq "27v" ) {
334     $XML_SOURCE        = "27v.xml";
335     $BOOK_PATH         .= "/lw/27v";
336     # TODO - review
337     $TITLE_COLOR       = "0.6,0.0,0.0";
338     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
339 }
340 elsif( $bookCode eq "28thos" ) {
341     $XML_SOURCE        = "28thos.xml";
342     $BOOK_PATH         .= "/lw/28thos";
343     # TODO - review
344     $TITLE_COLOR       = "0.6,0.0,0.0";
345     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
346 }
347 # TODO - fix title color for Grey Star books
348 elsif( $bookCode eq "01gstw" ) {
349     $XML_SOURCE        = "01gstw.xml";
350     $BOOK_PATH         .= "/gs/01gstw";
351     # TODO - review
352     $TITLE_COLOR       = "0.0,0.4,0.2";
353     $USE_ILLUSTRATORS  = ":Paul Bonner:Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
354 }
355 elsif( $bookCode eq "02tfc" ) {
356     $XML_SOURCE        = "02tfc.xml";
357     $BOOK_PATH         .= "/gs/02tfc";
358     # TODO - review
359     $TITLE_COLOR       = "0.0,0.4,0.2";
360     $USE_ILLUSTRATORS  = ":Paul Bonner:Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
361 }
362 elsif( $bookCode eq "03btng" ) {
363     $XML_SOURCE        = "03btng.xml";
364     $BOOK_PATH         .= "/gs/03btng";
365     # TODO - review
366     $TITLE_COLOR       = "0.0,0.4,0.2";
367     $USE_ILLUSTRATORS  = ":Paul Bonner:Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
368 }
369 elsif( $bookCode eq "04wotw" ) {
370     $XML_SOURCE        = "04wotw.xml";
371     $BOOK_PATH         .= "/gs/04wotw";
372     # TODO - review
373     $TITLE_COLOR       = "0.0,0.4,0.2";
374     $USE_ILLUSTRATORS  = ":Paul Bonner:Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
375 }
376 else{ die "Error:\n\tUknown book code.\n"; }
377
378
379 #chdir( "$DATADIR" ) or die( "Cannot open Project Aon data directory \"$DATADIR\": $!" );
380
381
382 # Check that the XML file is there
383 if ( ! -r $DATADIR."/".$XML_SOURCE ) {
384     die "Could not find source file $XML_SOURCE in $DATADIR!";
385 }
386 if ( ! -e $DATADIR."/latex.xsl" ) {
387     if ( ! -r $XSLDIR."/latex.xsl" ) {
388         die "Could not find LaTeX stylesheet (latex.xsl) in $XSLDIR!";
389     }
390     # Link, if it does not exist the XSL file to the DATADIR
391     if ( ! link $XSLDIR."/latex.xsl", $DATADIR."/latex.xsl" ) {
392      die "Could not link the LaTeX stylesheet (latex.xsl) from $XSLDIR to $DATADIR!";
393     }
394 }
395 if ( ! -e $DATADIR."/latex.xsl" ) {
396         die "Could not find LaTeX stylesheet (latex.xsl) in $DATADIR!";
397 }
398 $XSLDIR = $DATADIR;
399
400
401 # Create the output directory if it does not exist already
402 print "Checking directory $BOOK_PATH...";
403 if ( ! -d "$BOOK_PATH/" ) {
404     print "...directory does not exist.\n";
405     print "Creating $BOOK_PATH ...";
406     mkdir "$BOOK_PATH" || die "Could not create output directory $BOOK_PATH: $!";
407 }
408 print "..done.\n";
409
410 my $OUTPUTFILE = $ARGV[ 2 ] || "$BOOK_PATH/$bookCode.tex";
411
412 if ( -e $OUTPUTFILE ) {
413     print "WARN: Outputfile $OUTPUTFILE already exists, will overwrite\n";
414 }
415
416 # Run the XML preprocessor
417 # TODO: use system() properly here and check return value
418 print "Processing book $bookCode and storing result in $OUTPUTFILE...\n";
419
420 my $command="";
421 # For Xmlto, which uses xsltproc:
422 # (Does not work)
423 # `$XMLPROC -v -o $BOOK_PATH -x ${XSLDIR}/latex.xsl dvi ${DATADIR}/${XML_SOURCE}`;
424 if ( $XMLPROC =~ /xalan/ ) {
425     # Apache's Xalan:
426     $command="$XMLPROC -in  ${DATADIR}/${XML_SOURCE} -xsl ${XSLDIR}/latex.xsl -out $OUTPUTFILE -param title-color \"\'$TITLE_COLOR\'\" -param use-illustrators \"\'$USE_ILLUSTRATORS\'\" -param language \"\'$language\'\" $EXTRAPARMS";
427 }
428 elsif ( $XMLPROC =~ /xsltproc/ ) {
429     # xsltproc:
430     $command="$XMLPROC --output $OUTPUTFILE --param title-color \"\'$TITLE_COLOR\'\" --param use-illustrators \"\'$USE_ILLUSTRATORS\'\" --param language \"\'$language\'\" $EXTRAPARMS ${XSLDIR}/latex.xsl ${DATADIR}/${XML_SOURCE}";
431 }
432 else {
433     die "Error: Unsupported XSLT processor '$XMLPROC'.";
434 }
435 #print "Executing $command";
436 print qx{$command};
437 # Apache Xalan, Java version:
438 # print qx{$JAVA org.apache.xalan.xslt.Process -IN $XML_PATH/$XML_SOURCE -XSL $XML_PATH/latex.xsl -OUT $OUTPUTFILE -PARAM title-color \"$TITLE_COLOR\" -PARAM use-illustrators \"$USE_ILLUSTRATORS\"};
439 #
440 print "...done\n";
441
442
443 # End of script
444 exit 0;