version 1.1, 2002/07/05 16:12:30
|
version 1.5, 2003/07/18 20:42:27
|
Line 1
|
Line 1
|
#!/usr/bin/perl |
#!/usr/bin/perl |
|
|
|
# The LearningOnline Network with CAPA |
|
# Converts a texxml file into a single tex file |
|
# |
|
# Copyright Michigan State University Board of Trustees |
|
# |
|
# This file is part of the LearningOnline Network with CAPA (LON-CAPA). |
|
# |
|
# LON-CAPA is free software; you can redistribute it and/or modify |
|
# it under the terms of the GNU General Public License as published by |
|
# the Free Software Foundation; either version 2 of the License, or |
|
# (at your option) any later version. |
|
# |
|
# LON-CAPA is distributed in the hope that it will be useful, |
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
# GNU General Public License for more details. |
|
# |
|
# You should have received a copy of the GNU General Public License |
|
# along with LON-CAPA; if not, write to the Free Software |
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
# |
|
# /home/httpd/html/adm/gpl.txt |
|
# |
|
# http://www.lon-capa.org/ |
|
# |
|
# 7-16-2002 Jeremy Bowers |
|
|
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"; } |
|
$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 <LATEX_FILE>; |
|
print "\n\n"; |
} |
} |
} |
} |
} |
} |
Line 57 while (my $token = $p->get_token())
|
Line 99 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"); |