[LON-CAPA-cvs] cvs: doc /help render.texxml.pl texxml2latex.pl usage.pl

albertel lon-capa-cvs@mail.lon-capa.org
Tue, 14 Sep 2004 22:26:19 -0000


albertel		Tue Sep 14 18:26:19 2004 EDT

  Modified files:              
    /doc/help	render.texxml.pl texxml2latex.pl usage.pl 
  Log:
  - item 3) in BUG#3451, can now generate a manual from al of the help files which currently aren't in a manual
  
  
Index: doc/help/render.texxml.pl
diff -u doc/help/render.texxml.pl:1.17 doc/help/render.texxml.pl:1.18
--- doc/help/render.texxml.pl:1.17	Tue Sep 14 17:18:44 2004
+++ doc/help/render.texxml.pl	Tue Sep 14 18:26:17 2004
@@ -76,8 +76,10 @@
     $include_filenames='--with-filenames';
 }
 
-my $redir = ">& /dev/null"; # empty this for easier debugging
-#my $redir = ">> /home/albertel/error_log.txt";
+#my $redir = ">& /dev/null"; # empty this for easier debugging
+my $redir = "~/error_log.txt";
+system("rm -f $redir");
+$redir=">> $redir";
 
 mkdir $tmpdir, 0755;
 
Index: doc/help/texxml2latex.pl
diff -u doc/help/texxml2latex.pl:1.10 doc/help/texxml2latex.pl:1.11
--- doc/help/texxml2latex.pl:1.10	Tue Sep 14 17:18:44 2004
+++ doc/help/texxml2latex.pl	Tue Sep 14 18:26:17 2004
@@ -44,6 +44,25 @@
 open (LATEX_FILE, $dirprefix . "Latex_Header.tex");
 print <LATEX_FILE>;
 
+sub escape_latex {
+    my ($string)=@_;
+    $string=~s/\\/\\ensuremath{\\backslash}/g;
+    $string=~s/([^\\]|^)\%/$1\\\%/g;
+    $string=~s/([^\\]|^)\$/$1\\\$/g;
+    $string=~s/([^\\])\_/$1\\_/g;
+    $string=~s/\$\$/\$\\\$/g;
+    $string=~s/\_\_/\_\\\_/g;
+    $string=~s/\#\#/\#\\\#/g;
+    $string=~s/([^\\]|^)(\~|\^)/$1\\$2\\strut /g;
+    $string=~s/(>|<)/\\ensuremath\{$1\}/g; #more or less
+#    $string=&Apache::lonprintout::character_chart($string);
+    # any & or # leftover should be safe to just escape
+    $string=~s/([^\\]|^)\&/$1\\\&/g;
+    $string=~s/([^\\]|^)\#/$1\\\#/g;
+    $string=~s/\|/\$\\mid\$/g;
+    return $string;
+}
+
 while (my $token = $p->get_token())
 {
     my $type = $token->[0];
@@ -52,27 +71,25 @@
 	my $attr = $token->[2];
 	if ($tag eq 'section') {
 	    my $title = $attr->{'name'};
-	    print "\\section{$title}\n\n";
+	    print "\\section{".&escape_latex($title)."}\n\n";
 	}
 
 	if ($tag eq 'subsection') {
 	    my $title = $attr->{'name'};
-	    print "\\subsection{$title}\n\n";
+	    print "\\subsection{"&escape_latex($title)."}\n\n";
 	}
 
 	if ($tag eq 'subsubsection') {
 	    my $title = $attr->{'name'};
-	    print "\\subsubsection{$title}\n\n";
+	    print "\\subsubsection{".&escape_latex($title)."}\n\n";
 	}
 
 	if ($tag eq 'file') {
 	    my $file = $attr->{'name'};
 	    open (LATEX_FILE, $dirprefix . $file) or 
 		($! = 1, die "Can't find LaTeX file $dirprefix/$file; terminating build.");
-	    my $esc_file=$file;
-	    $esc_file=~s/_/\\_/g;
 	    if ($include_filenames) {
-		print "\\textrm{File: \\bf $esc_file}\\\\\n";
+		print "\\textrm{File: \\bf ".&escape_latex($file)."}\\\\\n";
 	    }
 	    print <LATEX_FILE>;
 	    print "\n\n";
Index: doc/help/usage.pl
diff -u doc/help/usage.pl:1.2 doc/help/usage.pl:1.3
--- doc/help/usage.pl:1.2	Tue Sep 14 15:57:15 2004
+++ doc/help/usage.pl	Tue Sep 14 18:26:17 2004
@@ -4,14 +4,21 @@
 use HTML::TokeParser;
 use Getopt::Long;
 
-my ($help) = (0,0,0);
-&GetOptions( "help"     => \$help);
+my ($usage,$build_unused) = (0,0);
+&GetOptions( "usage"        => \$usage,
+	     "build-unused" => \$build_unused);
 
 sub get_all_files {
     my $dir="../../loncom/html/adm/help/tex/";
     opendir(DIR,$dir);
     my @files=sort {uc($a) cmp uc($b)} (readdir(DIR));
-    return @files;
+    my @realfiles;
+    foreach my $file (@files) {
+	if ($file eq '.' || $file eq '..' || $file eq 'CVS' ||
+	    $file eq 'Latex_Footer.tex' || $file eq 'Latex_Header.tex') {next;}
+	push(@realfiles,$file);
+    }
+    return @realfiles;
 }
 
 sub get_usage {
@@ -30,7 +37,9 @@
     my ($all,$usage)=@_;
     my %all;
     my %no_exist;
-    foreach my $file (@{ $all }) {$all{$file}=[];}
+    foreach my $file (@{ $all }) {
+	$all{$file}=[];
+    }
     my @order=('author','course','developer');
     foreach my $list (@{ $usage }) {
 	foreach my $file (@{ $list }) {
@@ -58,14 +67,42 @@
     }
 }
 
+sub texxml_unused {
+    my ($all,$usage)=@_;
+    my %all;
+     foreach my $file (@{ $all }) {$all{$file}='1';}
+    foreach my $list (@{ $usage }) {
+	foreach my $file (@{ $list }) {
+	    if (exists($all{$file})) { 
+		delete($all{$file});
+	    }
+	}
+    }
+    print("<texxml>\n");
+    print("<title name=\"Unused files\" />\n");
+    foreach my $file (sort {uc($a) cmp uc($b)} (keys(%all))) {
+	print("<section name=\"$file\">\n");
+	print("<file name=\"$file\">\n");
+	print("</section>\n");
+    }
+    print("</texxml>\n");
+}
+
 sub main {
     my @all_files=&get_all_files();
     my @author_usage=&get_usage('author');
     my @course_usage=&get_usage('course');
     my @developer_usage=&get_usage('developer');
 
-    &print_unused(\@all_files,[\@author_usage,\@course_usage,
-			       \@developer_usage]);
+    if     ($usage) {
+	&print_unused(\@all_files,[\@author_usage,\@course_usage,
+				   \@developer_usage]);
+    } elsif($build_unused) {
+	&texxml_unused(\@all_files,[\@author_usage,\@course_usage,
+				    \@developer_usage]);
+    } else {
+	print("Please specify either --usage or --build-unused\n");
+    }
 }
 
 &main;