--- doc/help/texxml2latex.pl 2003/07/01 18:20:52 1.4 +++ doc/help/texxml2latex.pl 2003/07/18 20:42:27 1.5 @@ -30,58 +30,75 @@ use strict; use HTML::TokeParser; use GDBM_File; +use File::Temp; # accept texxml document on standard in my $p = HTML::TokeParser->new( $ARGV[0] ); my $dirprefix = "../../loncom/html/adm/help/tex/"; +# Make myself a temp dir for processing POD +my $tmpdir = File::Temp::tempdir('loncapahelpgenXXXXXXX', TMPDIR => 1); + # Print the header open (LATEX_FILE, $dirprefix . "Latex_Header.tex"); print ; - while (my $token = $p->get_token()) { my $type = $token->[0]; - if ($type eq 'S') - { + if ($type eq 'S') { my $tag = $token->[1]; my $attr = $token->[2]; - if ($tag eq 'section') - { + if ($tag eq 'section') { my $title = $attr->{'name'}; print "\\section{$title}\n\n"; } - if ($tag eq 'subsection') - { + if ($tag eq 'subsection') { my $title = $attr->{'name'}; print "\\subsection{$title}\n\n"; } - if ($tag eq 'subsubsection') - { + if ($tag eq 'subsubsection') { my $title = $attr->{'name'}; print "\\subsubsection{$title}\n\n"; } - if ($tag eq 'file') - { + if ($tag eq 'file') { my $file = $attr->{'name'}; open (LATEX_FILE, $dirprefix . $file); print ; print "\n\n"; } - if ($tag eq 'tex') - { + if ($tag eq 'tex') { print "\n\n"; print $attr->{'content'}; print "\n\n"; } + + if ($tag eq 'pod') { + my $file = $attr->{'file'}; + my $section = $attr->{'section'}; + if (!defined($section)) { $section = ''; } + else { $section = "-section $section"; } + $file = '../../loncom/' . $file; + my $tempfile = 't' . substr($file, rindex($file, '/') + 1); + system ("cp $file $tmpdir"); + # The "echo" command is necessary; pod2latex can't + # handle a perl file that *starts* with pod. + system ("echo > $tmpdir/$tempfile; cat $file | podselect $section >> $tmpdir/$tempfile; cd $tmpdir; pod2latex $tempfile"); + my $latexFile = substr($tempfile, 0, rindex($tempfile, '.')) . '.tex'; + open LATEX_FILE, $tmpdir . '/' . $latexFile; + print ; + print "\n\n"; + } } } # Print out the footer. open (LATEX_FILE, $dirprefix . "Latex_Footer.tex"); print ; + +# Remove the temp directory +system ("rm -rf $tmpdir");