version 1.2, 2002/07/17 15:47:15
|
version 1.7, 2003/07/21 15:22:14
|
Line 30
|
Line 30
|
use strict; |
use strict; |
use HTML::TokeParser; |
use HTML::TokeParser; |
use GDBM_File; |
use GDBM_File; |
|
use File::Temp; |
|
|
# accept texxml document on standard in |
# accept texxml document on standard in |
my $p = HTML::TokeParser->new( $ARGV[0] ); |
my $p = HTML::TokeParser->new( $ARGV[0] ); |
my $dirprefix = "/home/httpd/html/adm/help/tex/"; |
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 |
# Print the header |
open (LATEX_FILE, $dirprefix . "Latex_Header.tex"); |
open (LATEX_FILE, $dirprefix . "Latex_Header.tex"); |
print <LATEX_FILE>; |
print <LATEX_FILE>; |
|
|
|
|
while (my $token = $p->get_token()) |
while (my $token = $p->get_token()) |
{ |
{ |
my $type = $token->[0]; |
my $type = $token->[0]; |
if ($type eq 'S') |
if ($type eq 'S') { |
{ |
|
my $tag = $token->[1]; |
my $tag = $token->[1]; |
my $attr = $token->[2]; |
my $attr = $token->[2]; |
if ($tag eq 'section') |
if ($tag eq 'section') { |
{ |
|
my $title = $attr->{'name'}; |
my $title = $attr->{'name'}; |
print "\\section{$title}\n\n"; |
print "\\section{$title}\n\n"; |
} |
} |
|
|
if ($tag eq 'subsection') |
if ($tag eq 'subsection') { |
{ |
|
my $title = $attr->{'name'}; |
my $title = $attr->{'name'}; |
print "\\subsection{$title}\n\n"; |
print "\\subsection{$title}\n\n"; |
} |
} |
|
|
if ($tag eq 'subsubsection') |
if ($tag eq 'subsubsection') { |
{ |
|
my $title = $attr->{'name'}; |
my $title = $attr->{'name'}; |
print "\\subsubsection{$title}\n\n"; |
print "\\subsubsection{$title}\n\n"; |
} |
} |
|
|
if ($tag eq 'file') |
if ($tag eq 'file') { |
{ |
|
my $file = $attr->{'name'}; |
my $file = $attr->{'name'}; |
open (LATEX_FILE, $dirprefix . $file); |
open (LATEX_FILE, $dirprefix . $file); |
print <LATEX_FILE>; |
print <LATEX_FILE>; |
|
print "\n\n"; |
} |
} |
|
|
if ($tag eq 'tex') |
if ($tag eq 'tex') { |
{ |
print "\n\n"; |
print "\n"; |
|
print $attr->{'content'}; |
print $attr->{'content'}; |
print "\n"; |
print "\n\n"; |
|
} |
|
|
|
if ($tag eq 'pod') { |
|
my $file = $attr->{'file'}; |
|
my $section = $attr->{'section'}; |
|
if (!defined($section)) { $section = ''; } |
|
else { |
|
$section = "-section $section"; |
|
# Escape the pipes so they are considered ORs in the |
|
# RE for podselect's "section" option, and not |
|
# pipes by the shell: |
|
$section =~ s/\|/\\\|/g; |
|
} |
|
$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 -h1level 2 $tempfile"); |
|
my $latexFile = substr($tempfile, 0, rindex($tempfile, '.')) . '.tex'; |
|
open LATEX_FILE, $tmpdir . '/' . $latexFile; |
|
# pod2latex inserts \labels and \indexs for every section, |
|
# which is horrible because the section names tend to get |
|
# reused a lot. This filters those out, so we need to do |
|
# create our own indexes. |
|
for (<LATEX_FILE>) { |
|
$_ =~ s/\\([^{]*)section(\*?)\{([^\\]+)\\label\{[^\\]+\}\\index\{([^\\]+)\}\}/\\\1section\2\{\3\}/g; |
|
print $_; |
|
} |
|
print "\n\n"; |
} |
} |
} |
} |
} |
} |
Line 84 while (my $token = $p->get_token())
|
Line 112 while (my $token = $p->get_token())
|
# Print out the footer. |
# Print out the footer. |
open (LATEX_FILE, $dirprefix . "Latex_Footer.tex"); |
open (LATEX_FILE, $dirprefix . "Latex_Footer.tex"); |
print <LATEX_FILE>; |
print <LATEX_FILE>; |
|
|
|
# Remove the temp directory |
|
system ("rm -rf $tmpdir"); |