[LON-CAPA-cvs] cvs: loncom /interface lonprintout.pm

sakharuk lon-capa-cvs@mail.lon-capa.org
Thu, 14 Aug 2003 13:55:19 -0000


sakharuk		Thu Aug 14 09:55:19 2003 EDT

  Modified files:              
    /loncom/interface	lonprintout.pm 
  Log:
  Changes to restore correct page numbering and to take into account LaTeX limitations - thable of contents should always appear on sepsrste page. I still have problems with printing table of contents for group of students.  
  
  
Index: loncom/interface/lonprintout.pm
diff -u loncom/interface/lonprintout.pm:1.213 loncom/interface/lonprintout.pm:1.214
--- loncom/interface/lonprintout.pm:1.213	Wed Aug 13 15:40:07 2003
+++ loncom/interface/lonprintout.pm	Thu Aug 14 09:55:19 2003
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Printout
 #
-# $Id: lonprintout.pm,v 1.213 2003/08/13 19:40:07 albertel Exp $
+# $Id: lonprintout.pm,v 1.214 2003/08/14 13:55:19 sakharuk Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -481,7 +481,7 @@
 }
 
 sub page_format_transformation {
-    my ($papersize,$layout,$numberofcolumns,$choice,$text,$assignment,$tableofcontents) = @_; 
+    my ($papersize,$layout,$numberofcolumns,$choice,$text,$assignment,$tableofcontents,$indexlist) = @_; 
     my ($textwidth,$textheight,$oddoffset,$evenoffset,$topmargin);
     $assignment=~s/_/ /g;
     if ($numberofcolumns != 1) {
@@ -503,7 +503,11 @@
 	    $text =~ s/\\pagestyle{fancy}\\rhead{}\\chead{}\s*\\begin{document}/\\textheight = $textheight\\oddsidemargin = $evenoffset\\evensidemargin = $evenoffset\\textwidth= $textwidth\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm}\\renewcommand{\\ref}{\\keephidden\}\\pagestyle{fancy}\\rhead{}\\chead{}\\begin{document}\\voffset=-0\.8cm\\setcounter{page}{1}  \\vskip 5 mm /;
 	}
     }
-    if ($tableofcontents eq 'yes') {$text=~s/(\\begin{document})/$1 \\tableofcontents \\vskip 0\.5mm\\noindent\\makebox\[\\textwidth\/1\]\[b\]{\\hrulefill}/;}
+    if ($tableofcontents eq 'yes') {$text=~s/(\\setcounter\{page\}\{1\})/$1 \\tableofcontents\\newpage /;}
+    if ($indexlist eq 'yes') {
+	$text=~s/(\\begin{document})/\\makeindex $1/;
+	$text=~s/(\\end{document})/\\strut\\\\\\strut\\printindex $1/;
+    }
     return $text;
 }
 
@@ -578,6 +582,15 @@
 }
 
 
+sub index_table {
+    my $currentURL = shift;
+    my $insex_string='';
+    $currentURL=~s/\.([^\/+])$/\.$1\.meta/;
+    $insex_string=&Apache::lonnet::metadata($currentURL,'keywords');
+    return $insex_string;
+}
+
+
 sub output_data {
     my ($r,$helper,$rparmhash) = @_;
     my %parmhash = %$rparmhash;
@@ -651,6 +664,16 @@
 		my $answer=&Apache::lonnet::ssi($currentURL,%form);
 		$texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/;
 	    }
+	    if ($helper->{'VARS'}->{'TABLE_INDEX'} eq 'yes') {
+#		my $key_words=&index_table($currentURL);
+		my @key_words=split(/,/,&index_table($currentURL));
+		foreach my $key_word (@key_words) {
+		    if ($key_word=~/\S+/) {
+			$texversion=~s/\b($key_word)\b/$1 \\index{$1} /;
+		    }
+		}
+#		$texversion=~s/(\\end{document})/\\strut\\\\\\strut {\\large \\textbf{INDEX}}\\strut\\\\\\strut$key_words\\strut\\\\\\strut$1/;
+	    }
 	    $result .= $texversion;
 	    if ($currentURL=~m/\.page\s*$/) {
 		($result,$number_of_columns) = &page_cleanup($result);
@@ -853,7 +876,7 @@
 	$result .= '\end{document}';      	
     }
 #-------------------------------------------------------- corrections for the different page formats
-    $result = &page_format_transformation($papersize,$laystyle,$numberofcolumns,$helper->{'VARS'}->{'PRINT_TYPE'},$result,$helper->{VARS}->{'assignment'},$helper->{'VARS'}->{'TABLE_CONTENTS'});
+    $result = &page_format_transformation($papersize,$laystyle,$numberofcolumns,$helper->{'VARS'}->{'PRINT_TYPE'},$result,$helper->{VARS}->{'assignment'},$helper->{'VARS'}->{'TABLE_CONTENTS'},$helper->{'VARS'}->{'TABLE_INDEX'});
     $result = &latex_corrections($number_of_columns,$result);
     #changes page's parameters for the one column output 
     if ($numberofcolumns == 1) {
@@ -862,7 +885,10 @@
 	$result =~ s/\\evensidemargin = -0\.57in/\\evensidemargin= $helper->{'VARS'}->{'pagesize.lmargin'} $helper->{'VARS'}->{'pagesize.lmarginunit'} /;
 	$result =~ s/\\oddsidemargin = -0\.57in/\\oddsidemargin= $helper->{'VARS'}->{'pagesize.lmargin'} $helper->{'VARS'}->{'pagesize.lmarginunit'} /;
     }
-    if ($helper->{'VARS'}->{'TABLE_CONTENTS'} eq 'yes') {$selectionmade+=10;}
+    if ($helper->{'VARS'}->{'TABLE_CONTENTS'} eq 'yes') {$selectionmade*=10;}
+    if ($helper->{'VARS'}->{'TABLE_INDEX'} eq 'yes') {
+	if ($selectionmade<10) {$selectionmade*=100;} else {$selectionmade*=10;}
+    }
 #-- writing .tex file in prtspool 
     my $temp_file;
     my $filename = "/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout_".time."_".rand(10000000).".tex";
@@ -1191,7 +1217,7 @@
 
     
         $paramHash = Apache::lonhelper::getParamHash();
-        $paramHash->{MESSAGE_TEXT} = "<br /><big><b>Print with <i>Table of Contents:  </i></b></big>";
+        $paramHash->{MESSAGE_TEXT} = "<br /><big><i>Print with <b>Table of Contents:  </i></b></big>";
         Apache::lonhelper::message->new();
         $paramHash = Apache::lonhelper::getParamHash();
 	$paramHash->{'variable'} = 'TABLE_CONTENTS';   
@@ -1200,7 +1226,17 @@
                                    ['No', 'no'],
                                    ['Yes', 'yes'] ];
         Apache::lonhelper::dropdown->new();
-
+        
+        $paramHash = Apache::lonhelper::getParamHash();
+        $paramHash->{MESSAGE_TEXT} = "<br /><big><i>Print with <b>Index:  </i></b></big>";
+        Apache::lonhelper::message->new();
+        $paramHash = Apache::lonhelper::getParamHash();
+	$paramHash->{'variable'} = 'TABLE_INDEX';   
+	$helper->declareVar('TABLE_INDEX');         
+        $paramHash->{CHOICES} = [
+                                   ['No', 'no'],
+                                   ['Yes', 'yes'] ];
+        Apache::lonhelper::dropdown->new();
 
     Apache::lonprintout::page_format_state->new("FORMAT");