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

raeburn raeburn at source.lon-capa.org
Fri Nov 8 15:37:26 EST 2024


raeburn		Fri Nov  8 20:37:26 2024 EDT

  Modified files:              
    /loncom/interface	lonprintout.pm 
  Log:
  - Remove trailing whitespace and some blank lines.
  
  
-------------- next part --------------
Index: loncom/interface/lonprintout.pm
diff -u loncom/interface/lonprintout.pm:1.698 loncom/interface/lonprintout.pm:1.699
--- loncom/interface/lonprintout.pm:1.698	Fri Nov  1 00:08:03 2024
+++ loncom/interface/lonprintout.pm	Fri Nov  8 20:37:25 2024
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Printout
 #
-# $Id: lonprintout.pm,v 1.698 2024/11/01 00:08:03 raeburn Exp $
+# $Id: lonprintout.pm,v 1.699 2024/11/08 20:37:25 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -75,7 +75,7 @@
 
 #----------------------------  Helper helpers. -------------------------
 
-## 
+##
 # Filter function to determine if a resource is a printable sequence.
 #
 # @param $res -Resource to check.
@@ -164,7 +164,7 @@
 						      $map,
 						      $selFilter,
 						      '',
-						      $symbFilter, 
+						      $symbFilter,
 						      '');
 
     my $student_chooser = &generate_student_chooser('CHOOSE_STUDENTS_INCOMPLETE',
@@ -177,7 +177,7 @@
 						'CHOOSE_STUDENTS_INCOMPLETE_FORMAT'); # end state.
 
     return $resource_chooser . $student_chooser . $format_chooser;
-}  
+}
 
 
 # BZ 5209
@@ -197,14 +197,14 @@
 #   helper   - Helper we are creating states for.
 # Returns:
 #   Text that can be parsed by the helper.
-# 
+#
 
 sub create_incomplete_course_helper {
     my $helper = shift;
 
     my $filter = '$res->is_problem() || $res->contains_problem() || $res->is_sequence() || $res->is_practice())';
     my $symbfilter = '$res->shown_symb()';
-    
+
     my $resource_chooser = &generate_resource_chooser('INCOMPLETE_PROBLEMS_COURSE_RESOURCES',
 						      'Select problem(s) to print',
 						      'multichoice = "1" suppressEmptySequences="0" addstatus="1" closeallpagtes="1" modallink="1"',
@@ -230,7 +230,7 @@
 
 }
 
-# BZ5209 
+# BZ5209
 #   Creates the states needed to run the print helper for a student
 #   that wants to print his incomplete problems from the current folder.
 # Parameters:
@@ -258,7 +258,7 @@
 						      'RESOURCES',
 						      'PAGESIZE',
 						      $map,
-						      $filter, '', 
+						      $filter, '',
 						      $symfilter,
 						      '');
 
@@ -276,9 +276,9 @@
 
 
 sub generate_student_chooser {
-    my ($this_state, 
-	$sort_choice, 
-	$variable, 
+    my ($this_state,
+	$sort_choice,
+	$variable,
 	$next_state) = @_;
     my $result = <<CHOOSE_STUDENTS;
   <state name="$this_state" title="Select Students and Resources">
@@ -290,7 +290,7 @@
     </choices>
 
       <message><br /><hr /><br /> </message>
-      <student multichoice='1' 
+      <student multichoice='1'
                variable="$variable" 
                nextstate="$next_state" 
                coursepersonnel="1" />
@@ -309,7 +309,7 @@
 #     prompt_text   - Text to use to prompt user.
 #     resource_options - Resource tag options e.g.
 #                        "multichoice='1', toponly='1', addstatus='1',
-#                         modallink='1'" 
+#                         modallink='1'"
 #                     that control the selection and appearance of the
 #                     resource selector.
 #     variable      - Name of the variable to hold the choice
@@ -320,7 +320,7 @@
 #     filter        - How to filter the resources.
 #     value_func    - <valuefunc> function.
 #     choice_func   - If not empty generates a <choicefunc> with this function.
-#     start_new_option 
+#     start_new_option
 #                   - Fragment appended after valuefunc.
 #
 #
@@ -452,7 +452,7 @@
     my $randomly_ordered_warning =
         &get_randomly_ordered_warning($helper, $map);
 
-    # code for a few states used for printout launched from both 
+    # code for a few states used for printout launched from both
     # /adm/navmaps and from a resource by a privileged user:
     #   - To allow resources to be selected for printing.
     #   - To determine pagination between assignments.
@@ -574,13 +574,13 @@
     return ($randomly_ordered_warning,$codechoice,$code_selection,$namechoice);
 }
 
-#  Returns the XML for choosing how assignments are to be formatted 
+#  Returns the XML for choosing how assignments are to be formatted
 #  that text must still be parsed by the helper xml parser.
 # Parameters: 3 (required)
 
 #   helper       - The helper; $helper->{'VARS'}->{'PRINT_TYPE'} used
 #                  to check if splitting PDFs by section can be offered.
-#   title        - Title for the current state. 
+#   title        - Title for the current state.
 #   this_state   - State name of the chooser.
 
 sub generate_format_selector {
@@ -623,10 +623,10 @@
 # @param \@opens - reference to an array of open dates.
 # @param \@closes - reference to an array of close dates.
 #
-# @return ($open, $close) 
+# @return ($open, $close)
 #
 # @note If open/close dates are not defined they will be returned as undef
-# @note It is possible for there to be no overlap in which case -1,-1 
+# @note It is possible for there to be no overlap in which case -1,-1
 #       will be returned.
 # @note The algorithm used is to take the latest open date and the earliest end date.
 #
@@ -660,9 +660,9 @@
 	$latest_open  = -1;
 	$earliest_close = -1;
     }
-    
+
     return ($latest_open, $earliest_close);
-  
+
 }
 
 ##
@@ -689,7 +689,7 @@
     if ($close_date && ($close_date < $now)) {
 	return 0;
     }
-    
+
     return 1;
 
 }
@@ -698,13 +698,13 @@
 # Returns the innermost print start/print end dates for a resource.
 # This is done by looking at the start/end dates for its parts and choosing
 # the intersection of those dates.
-# 
+#
 # @param res - lonnvamaps::resource object that represents the resource.
 #
 # @return (opendate, closedate)
 #
 # @note If open/close dates are not defined they will be returned as undef
-# @note It is possible for there to be no overlap in which case -1,-1 
+# @note It is possible for there to be no overlap in which case -1,-1
 #       will be returned.
 # @note The algorithm used is to take the latest open date and the earliest end date.
 #       For consistency with &printable() in lonnavmaps.pm determination of start
@@ -822,7 +822,7 @@
 
 
     my $navmap = Apache::lonnavmaps::navmap->new($username, $domain);
-    
+
 
     if (defined($navmap)) {
 	my $res = $navmap->getResourceByUrl($map);
@@ -858,7 +858,7 @@
 # Returns:
 #   reference to an array of resources that can be passed to
 #   print_resources.
-# 
+#
 sub master_seq_to_person_seq {
     my ($map, $seq, $who, $code, $nohidemap) = @_;
 
@@ -876,7 +876,7 @@
     if ($nohidemap) {
         $unhidden = &Apache::lonnet::clutter($map);
     }
-    
+
     my $navmap           = Apache::lonnavmaps::navmap->new($username, $userdomain,
                                                            $code, $unhidden);
     my ($start,$finish);
@@ -914,7 +914,7 @@
     }
 
     return \@output_seq;		# for now.
-    
+
 }
 
 
@@ -937,10 +937,10 @@
     }
     return $contents;
 
-    
+
 }
 
-#  Fetch the annotations associated with a URL and 
+#  Fetch the annotations associated with a URL and
 #  put a centered 'annotations:' title.
 #  This is all suppressed if the annotations are empty.
 #
@@ -987,7 +987,7 @@
 
 }
 
-# include_pdf - PDF files are included into the 
+# include_pdf - PDF files are included into the
 # output as follows:
 #  - The PDF, if necessary, is replicated.
 #  - The PDF is added to the list of files to convert to postscript (along with the images).
@@ -996,7 +996,7 @@
 #
 # Parameters:
 #   pdf_uri   - URI of the PDF file to include.
-#   
+#
 # Returns:
 #  The LaTeX to include.
 #
@@ -1076,7 +1076,7 @@
 #                      the number of times requested by the caller.
 #                      If we still have a proble, no text is appended to the
 #                      output and we set some global variables.
-#                      to indicate to the caller an SSI error occurred.  
+#                      to indicate to the caller an SSI error occurred.
 #                      All of this is supposed to deal with the issues described
 #                      in LonCAPA BZ 5631 see:
 #                      http://bugs.lon-capa.org/show_bug.cgi?id=5631
@@ -1086,7 +1086,7 @@
 #   resource   - The resource to include.  This is passed directly, without
 #                interpretation to lonnet::ssi.
 #   form       - The form hash parameters that guide the interpretation of the resource
-#                
+#
 #   retries    - Number of retries allowed before giving up completely.
 # Returns:
 #   On success, returns the rendered resource identified by the resource parameter.
@@ -1137,12 +1137,12 @@
 
 #
 #   printf_style_subst  item format_string repl
-#  
+#
 # Does printf style substitution for a format string that
 # can have %[n]item in it.. wherever, %[n]item occurs,
 # rep is substituted in format_string.  Note that
 # [n] is an optional integer length.  If provided,
-# repl is truncated to at most [n] characters prior to 
+# repl is truncated to at most [n] characters prior to
 # substitution.
 #
 sub printf_style_subst {
@@ -1154,15 +1154,15 @@
 	my $subst = $repl;
 	if ($size ne "") {
 	    $subst = substr($subst, 0, $size);
-	    
+
 	    #  Here's a nice edge case ... suppose the end of the
 	    #  substring is a \.  In that case may have just
 	    #  chopped off a TeX escape... in that case, we append
-	    #   " " for the trailing character, and let the field 
+	    #   " " for the trailing character, and let the field
 	    #  spill over a bit (sigh).
 	    #  We don't just chop off the last character in order to deal
 	    #  with one last pathology, and that would be if substr had
-	    #  trimmed us to e.g. \\\  
+	    #  trimmed us to e.g. \\\
 
 
 	    if ($subst =~ /\\$/) {
@@ -1182,8 +1182,8 @@
 }
 
 
-# Format a header according to a format.  
-# 
+# Format a header according to a format.
+#
 
 # Substitutions:
 #     %a    - Assignment name.
@@ -1207,7 +1207,7 @@
 	# we assume that each character is about 2mm in width.
 	# (correct for the header text size??).  We ignore
 	# any formatting (e.g. boldfacing in this).
-	# 
+	#
 	# - Allow the student/course to be one line.
 	#   but only truncate the course.
 	# - Allow the assignment to be 2 lines (wrapped).
@@ -1225,7 +1225,7 @@
 	}
 
 	$format .= '\\\\%c \\\\ %a';
-        
+
 
     }
     # An open question is how to handle long user formatted page headers...
@@ -1236,12 +1236,12 @@
     $format =  &printf_style_subst("c", $format, $course);
     $format =  &printf_style_subst("n", $format, $student);
     $format =  &printf_style_subst("s", $format, $section);
-    
-    
+
+
     # If the user put %'s in the format string, they  must be escaped
     # to \% else LaTeX will think they are comments and terminate
     # the line.. which is bad!!!
-    
+
     # If the user has role author, $course and $assignment are empty so
     # there is '\\ \\ ' in the page header. That's cause a error in LaTeX
     if($format =~ /\\\\\s\\\\\s/) {
@@ -1264,7 +1264,7 @@
 
 
     return $format;
-    
+
 }
 
 #
@@ -1312,7 +1312,7 @@
     #   Remove leading/trailing whitespace;
     $value =~ s/^\s*//g;
     $value =~ s/\s*$//g;
-    
+
     #  All digits?
     if ($value !~ /^[0-9]+$/) {
 	return "Numeric code $value has invalid characters - must only be digits";
@@ -1333,7 +1333,7 @@
 #
 sub is_valid_alpha_code {
     my ($value, $num_letters) = @_;
-    
+
      # strip leading and trailing spaces.
 
     $value =~ s/^\s*//g;
@@ -1351,7 +1351,7 @@
 
 #   Determine if a code entered by the user in a helper is valid.
 #   valid depends on the code type and the type of code selected.
-#   The type of code selected can either be numeric or 
+#   The type of code selected can either be numeric or
 #   Alphabetic.  If alphabetic, the code, in fact is a simple
 #   substitution cipher for the actual numeric code: 0->A, 1->B ...
 #   We'll be nice and be case insensitive for alpha codes.
@@ -1388,7 +1388,7 @@
 #
 # Compare two students by section (Used to sort by section).
 #
-#  Implicit inputs, 
+#  Implicit inputs,
 #    $a - The first one
 #    $b - The second one.
 #
@@ -1444,7 +1444,7 @@
     #
     $f1 =~ s/^\s+//;		# Remove leading...
     $f1 =~ s/\s+$//;		# Trailing spaces from first 1...
-    
+
     $f2 =~ s/^\s+//;
     $f2 =~ s/\s+$//;		# And the same for first 2...
 
@@ -1454,7 +1454,7 @@
     if($f1 gt $f2) {
 	return 1;
     }
-    
+
     #  Must be the same name.
 
     return 0;
@@ -1467,7 +1467,7 @@
     return $text;
 }
 #
-#  If necessary, encapsulate text inside 
+#  If necessary, encapsulate text inside
 #  a minipage env.
 #  necessity is determined by the problem_split param.
 #
@@ -1491,7 +1491,7 @@
     my $helper = shift;
 
     my $split_pdf = $helper->{'VARS'}->{'SPLIT_PDFS'};
-    
+
     if ($split_pdf eq 'all') {
 	$helper->{'VARS'}->{'NUMBER_TO_PRINT'} = 'all';
     } elsif ($split_pdf eq 'oneper') {
@@ -1523,8 +1523,8 @@
     $result =~ s/&(\#0?34|quot);/\"/g;
     $result =~ s/&\#0?35;/\\\#/g;
     $result =~ s/&\#0?36;/\\\$/g;
-    $result =~ s/&\#0?37;/\\%/g; 
-    $result =~ s/&(\#0?38|amp);/\\&/g; 
+    $result =~ s/&\#0?37;/\\%/g;
+    $result =~ s/&(\#0?38|amp);/\\&/g;
     $result =~ s/&\#(0?39|146);/\'/g;
     $result =~ s/&\#0?40;/(/g;
     $result =~ s/&\#0?41;/)/g;
@@ -1631,7 +1631,7 @@
     $result =~ s/&(\#160|nbsp);/~/g;
     $result =~ s/&(\#161|iexcl);/!\`/g;
     $result =~ s/&(\#162|cent);/\\textcent /g;
-    $result =~ s/&(\#163|pound);/\\pounds /g; 
+    $result =~ s/&(\#163|pound);/\\pounds /g;
     $result =~ s/&(\#164|curren);/\\textcurrency /g;
     $result =~ s/&(\#165|yen);/\\textyen /g;
     $result =~ s/&(\#166|brvbar);/\\textbrokenbar /g;
@@ -1657,32 +1657,32 @@
     $result =~ s/&(\#188|frac14);/\\textonequarter /g;
     $result =~ s/&(\#189|frac12);/\\textonehalf /g;
     $result =~ s/&(\#190|frac34);/\\textthreequarters /g;
-    $result =~ s/&(\#191|iquest);/?\`/g;   
-    $result =~ s/&(\#192|Agrave);/\\\`{A}/g;  
-    $result =~ s/&(\#193|Aacute);/\\\'{A}/g; 
+    $result =~ s/&(\#191|iquest);/?\`/g;
+    $result =~ s/&(\#192|Agrave);/\\\`{A}/g;
+    $result =~ s/&(\#193|Aacute);/\\\'{A}/g;
     $result =~ s/&(\#194|Acirc);/\\^{A}/g;
     $result =~ s/&(\#195|Atilde);/\\~{A}/g;
-    $result =~ s/&(\#196|Auml);/\\\"{A}/g; 
+    $result =~ s/&(\#196|Auml);/\\\"{A}/g;
     $result =~ s/&(\#197|Aring);/{\\AA}/g;
     $result =~ s/&(\#198|AElig);/{\\AE}/g;
     $result =~ s/&(\#199|Ccedil);/\\c{c}/g;
-    $result =~ s/&(\#200|Egrave);/\\\`{E}/g;  
-    $result =~ s/&(\#201|Eacute);/\\\'{E}/g;    
+    $result =~ s/&(\#200|Egrave);/\\\`{E}/g;
+    $result =~ s/&(\#201|Eacute);/\\\'{E}/g;
     $result =~ s/&(\#202|Ecirc);/\\^{E}/g;
     $result =~ s/&(\#203|Euml);/\\\"{E}/g;
     $result =~ s/&(\#204|Igrave);/\\\`{I}/g;
-    $result =~ s/&(\#205|Iacute);/\\\'{I}/g;    
+    $result =~ s/&(\#205|Iacute);/\\\'{I}/g;
     $result =~ s/&(\#206|Icirc);/\\^{I}/g;
-    $result =~ s/&(\#207|Iuml);/\\\"{I}/g;    
+    $result =~ s/&(\#207|Iuml);/\\\"{I}/g;
     $result =~ s/&(\#209|Ntilde);/\\~{N}/g;
     $result =~ s/&(\#210|Ograve);/\\\`{O}/g;
     $result =~ s/&(\#211|Oacute);/\\\'{O}/g;
     $result =~ s/&(\#212|Ocirc);/\\^{O}/g;
     $result =~ s/&(\#213|Otilde);/\\~{O}/g;
-    $result =~ s/&(\#214|Ouml);/\\\"{O}/g;    
+    $result =~ s/&(\#214|Ouml);/\\\"{O}/g;
     $result =~ s/&(\#215|times);/\\ensuremath\{\\times\}/g;
     $result =~ s/&(\#216|Oslash);/{\\O}/g;
-    $result =~ s/&(\#217|Ugrave);/\\\`{U}/g;    
+    $result =~ s/&(\#217|Ugrave);/\\\`{U}/g;
     $result =~ s/&(\#218|Uacute);/\\\'{U}/g;
     $result =~ s/&(\#219|Ucirc);/\\^{U}/g;
     $result =~ s/&(\#220|Uuml);/\\\"{U}/g;
@@ -1713,7 +1713,7 @@
     $result =~ s/&(\#246|ouml);/\\\"{o}/g;
     $result =~ s/&(\#247|divide);/\\ensuremath\{\\div\}/g;
     $result =~ s/&(\#248|oslash);/{\\o}/g;
-    $result =~ s/&(\#249|ugrave);/\\\`{u}/g; 
+    $result =~ s/&(\#249|ugrave);/\\\`{u}/g;
     $result =~ s/&(\#250|uacute);/\\\'{u}/g;
     $result =~ s/&(\#251|ucirc);/\\^{u}/g;
     $result =~ s/&(\#252|uuml);/\\\"{u}/g;
@@ -1957,8 +1957,8 @@
 #                        "A2 [420x594 mm]",           "A3 [297x420 mm]",
 #                        "A4 [210x297 mm]",           "A5 [148x210 mm]",
 #                        "A6 [105x148 mm]"
-# 
-    my ($papersize,$layout,$numberofcolumns) = @_; 
+#
+    my ($papersize,$layout,$numberofcolumns) = @_;
     return @{$page_formats{$papersize}->{$layout}->{$numberofcolumns}};
 }
 
@@ -1978,13 +1978,13 @@
     if (defined($env{'request.course.id'})) {
 	$courseidinfo = &Apache::lonxml::latex_special_symbols(&unescape($env{'course.'.$env{'request.course.id'}.'.description'}),'header');
 	my $sec = $env{'request.course.sec'};
-	    
+
     }
     return $courseidinfo;
 }
 
 sub page_format_transformation {
-    my ($papersize,$layout,$numberofcolumns,$choice,$text,$assignment,$tableofcontents,$indexlist,$selectionmade) = @_; 
+    my ($papersize,$layout,$numberofcolumns,$choice,$text,$assignment,$tableofcontents,$indexlist,$selectionmade) = @_;
     my ($textwidth,$textheight,$oddoffset,$evenoffset,$topmargin);
 
     if ($selectionmade eq '4') {
@@ -2028,7 +2028,7 @@
             }
         }
     } elsif ($layout eq 'book') {
-	if ($choice ne 'All class print') { 
+	if ($choice ne 'All class print') {
 	    $text =~ s/\\begin\{document}/\\textheight $textheight\\oddsidemargin = $evenoffset\\evensidemargin = $evenoffset $topmargintoinsert\n\\textwidth= $textwidth\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm}\n\\renewcommand{\\ref}{\\keephidden\}\\usepackage{fancyhdr}\\addtolength{\\headheight}{\\baselineskip}\\pagestyle{fancy}$fancypagestatement\\usepackage{booktabs}\\begin{document}\n\\voffset=-0\.8 cm\\setcounter{page}{1}\n/;
 	} else {
 	    $text =~ s/\\pagestyle\{fancy}\\rhead\{}\\chead\{}\s*\\begin\{document}/\\textheight = $textheight\\oddsidemargin = $evenoffset\n\\evensidemargin = $evenoffset $topmargintoinsert\\textwidth= $textwidth\\newlength{\\minipagewidth}\n\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm}\\renewcommand{\\ref}{\\keephidden\}\\pagestyle{fancy}\\rhead{}\\chead{}\\usepackage{booktabs}\\begin{document}\\voffset=-0\.8cm\n\\setcounter{page}{1}  \\vskip 5 mm\n /;
@@ -2064,7 +2064,7 @@
 
 sub page_cleanup {
     my $result = shift;	
- 
+
     $result =~ m/\\end\{document}(\d*)$/;
     my $number_of_columns = $1;
     my $insert = '{';
@@ -2116,7 +2116,7 @@
     $result =~ s/\$number_of_columns/$number_of_columns/g;
     $result =~ s/(\\end\{longtable}\s*)(\\strut\\newline\\noindent\\makebox\[\\textwidth\/$number_of_columns\]\[b\]\{\\hrulefill})/$2$1/g;
     $result =~ s/(\\end\{longtable}\s*)\\strut\\newline/$1/g;
-#-- LaTeX corrections     
+#-- LaTeX corrections
     my $first_comment = index($result,'<!--',0);
     while ($first_comment != -1) {
 	my $end_comment = index($result,'-->',$first_comment);
@@ -2285,7 +2285,7 @@
     $laystyle = &map_laystyle($laystyle);
     my ($textwidth,$textheight,$oddoffset,$evenoffset) = &page_format($papersize,$laystyle,
 								      $numberofcolumns);
-    my $LaTeXwidth=&recalcto_mm($textwidth); 
+    my $LaTeXwidth=&recalcto_mm($textwidth);
 
     if ($mode ne '') {$mode='\\'.$mode}
     my $result   =    &print_latex_header($mode);
@@ -2301,9 +2301,9 @@
 	&Apache::lonnet::delenv('construct.style');
     }
 
-    # First is the overall page description.  This is then followed by the 
+    # First is the overall page description.  This is then followed by the
     # components of the page. Each of which must be printed independently.
-    my $the_page = shift(@page_resources); 
+    my $the_page = shift(@page_resources);
 
 
     foreach my $resource (@page_resources) {
@@ -2315,7 +2315,7 @@
 	if ($resource_src =~ /.page$/i) {
 	    my $navmap         = Apache::lonnavmaps::navmap->new();
 	    my @page_resources = $navmap->retrieveResources($resource_src);
-	    $result           .= &print_page_in_course($helper, $rparmhash, 
+	    $result           .= &print_page_in_course($helper, $rparmhash,
 						       $resource_src, \@page_resources);
         } elsif ($resource->ext()) {
             $result.=&latex_header_footer_remove(&unsupported($current_url,$mode,$resource->symb));
@@ -2334,9 +2334,9 @@
 
 	    $form{'grade_target'}  = 'tex';
 	    $form{'textwidth'}    = &get_textwidth($helper, $LaTeXwidth);
-	    $form{'pdfFormFields'} = $pdfFormFields; # 
-	    $form{'showallfoils'} = $helper->{'VARS'}->{'showallfoils'};    
-	    
+	    $form{'pdfFormFields'} = $pdfFormFields; #
+	    $form{'showallfoils'} = $helper->{'VARS'}->{'showallfoils'};
+
 	    $form{'problem_split'}=$parmhash{'problem_stream_switch'};
 	    $form{'suppress_tries'}=$parmhash{'suppress_tries'};
 	    $form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};
@@ -2352,7 +2352,7 @@
 	    }
 	    $form{'rndseed'}=$rndseed;
 	    &Apache::lonnet::appenv(\%moreenv);
-	    
+
 	    &Apache::lonxml::clear_problem_counter();
 
 	    my $texversion = &ssi_with_retries($urlp, $ssi_retry_count, %form);
@@ -2392,11 +2392,6 @@
 		    }
 		    $texversion.='\vskip 1 mm '.$answer.'\end{document}';
 		}
-
-
-		
-
-	    
 	    }
 	    # Print annotations.
 
@@ -2405,7 +2400,7 @@
 		my $annotation .= &annotate($currentURL);
 		$texversion =~ s/(\\keephidden\{ENDOFPROBLEM})/$annotation$1/;
 	    }
-	    
+
 	    if ($helper->{'VARS'}->{'TABLE_INDEX'} eq 'yes') {
 		$texversion=&IndexCreation($texversion,$currentURL);
 	    }
@@ -2443,7 +2438,7 @@
     my $pdf_result;
     opendir(DIR,$prtspool);
 
-    my @files = 
+    my @files =
 	grep(/^$env{'user.name'}_$env{'user.domain'}_printout_(\d+)_.*\.(pdf|zip)$/,readdir(DIR));
     closedir(DIR);
 
@@ -2523,7 +2518,7 @@
     }
     return %page_breaks;
 }
-# 
+#
 #   Returns text to insert for any extra vskip prior to the resource.
 #   Parameters:
 #     helper   - Reference to the helper object driving the printout.
@@ -2534,7 +2529,7 @@
 #    EXTRASPACE         has the list of extra space values.
 #    EXTRASPACE_UNITS   is the set of resources for which the units are
 #                       mm. All others are 'in'.
-#    
+#
 #    The resource is found in the POSSIBLE_RESOURCES to get the index
 #    of the EXTRASPACE value.
 #
@@ -2603,7 +2598,7 @@
 #  The resource chooser part of the helper needs more than just
 #  the value of the extraspaces var to recover the value into a text
 #  field option.  This sub produces the required format for the saved var:
-#  specifically 
+#  specifically
 #    ||| separated fields of the form resourcename=value
 #
 #  Parameters:
@@ -2637,7 +2632,7 @@
     $env{'form.extraspace'}  = $result;
     $env{'form.extraspace_units'} = $helper->{'VARS'}->{'EXTRASPACE_UNITS'};
     return $result;
-    
+
 }
 
 #  Output a sequence (recursively if neeed)
@@ -2663,11 +2658,11 @@
     }
     my $errtext=&LONCAPA::map::mapread(&Apache::lonnet::filelocation('',$currentURL));
 
-    # 
+    #
     #  These make this all support recursing for subsequences.
     #
     my @order    = @LONCAPA::map::order;
-    my @resources = @LONCAPA::map::resources; 
+    my @resources = @LONCAPA::map::resources;
 
     for (my $member=0;$member<=$#order;$member++) {
 	$resources[$order[$member]]=~/^([^:]*):([^:]*):/;
@@ -2683,7 +2678,7 @@
 		$texversion=&ssi_with_retries($urlp, $ssi_retry_count, %form);
 	    }
 	    if((($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||
-		($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) && 
+		($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) &&
 	       ($urlp=~/$LONCAPA::assess_page_re/)) {
 		#  Don't permanently modify %$form...
 		my %answerform = %form;
@@ -2698,7 +2693,7 @@
 		    $texversion=~s/(\\keephidden\{ENDOFPROBLEM})/$answer$1/;
 		} else {
 		    # If necessary, encapsulate answer in minipage:
-		    
+
 		    $texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});
 		    my $title = &Apache::lonnet::gettitle($helper->{'VARS'}->{'symb'});
 		    $title = &Apache::lonxml::latex_special_symbols($title);
@@ -2720,16 +2715,16 @@
 	    $result.=$texversion;
 
 	} elsif ($urlp=~/\.(sequence|page)$/) {
- 
+
 	    # header:
 
 	    $result.='\strut\newline\noindent Sequence/page '.$urlp.'\strut\newline\noindent\makebox[\textwidth/$number_of_columns][b]{\hrulefill}\newline\noindent ';
 
 	    # IF sequence, recurse:
-	    
+
 	    if ($urlp =~ /\.sequence$/) {
-		$result .= &print_construction_sequence($urlp, 
-							$helper, %form, 
+		$result .= &print_construction_sequence($urlp,
+							$helper, %form,
 							$LaTeXwidth);
 	    }
 	}
@@ -2744,7 +2739,7 @@
 	    if ($member != $#order) {
 		$texversion .= '\\ \cleardoublepage';
 	    }
-	    
+
 	    $result .= $texversion;
 	}
     }
@@ -2805,7 +2800,7 @@
         url += 'form=' + formname + '&';
         if (only != null) {
             url += 'only=' + only + '&';
-        } 
+        }
         if (omit != null) {
             url += 'omit=' + omit + '&';
         }
@@ -2840,7 +2835,7 @@
 
     $env{'form.pagebreaks'}  = $helper->{'VARS'}->{'FINISHPAGE'};
     &set_form_extraspace($helper);
-    $env{'form.lastprinttype'} = $print_type; 
+    $env{'form.lastprinttype'} = $print_type;
     &Apache::loncommon::store_course_settings('print',
 					      {'pagebreaks'    => 'scalar',
 					       'extraspace'    => 'scalar',
@@ -2857,11 +2852,11 @@
     $laystyle = &map_laystyle($laystyle);
     my ($textwidth,$textheight,$oddoffset,$evenoffset) = &page_format($papersize,$laystyle,$numberofcolumns);
     my $assignment =  $env{'form.assignment'};
-    my $LaTeXwidth=&recalcto_mm($textwidth); 
+    my $LaTeXwidth=&recalcto_mm($textwidth);
     my @print_array=();
     my @student_names=();
 
-     
+
     #  Common settings for the %form hash:
     # In some cases these settings get overridden by specific cases, but the
     # settings are common enough to make it worthwhile factoring them out
@@ -2873,16 +2868,16 @@
     $form{'pdfFormFields'} = $pdfFormFields;
 
     # If form.showallfoils is set, then request all foils be shown:
-    # privilege will be enforced both by not allowing the 
+    # privilege will be enforced both by not allowing the
     # check box selecting this option to be presnt unless it's ok,
     # and by lonresponse's priv. check.
     # The if is here because lonresponse.pm only cares that
     # showallfoils is defined, not what the value is.
 
-    if ($helper->{'VARS'}->{'showallfoils'} eq "1") { 
+    if ($helper->{'VARS'}->{'showallfoils'} eq "1") {
 	$form{'showallfoils'} = $helper->{'VARS'}->{'showallfoils'};
     }
-    
+
     if ($helper->{'VARS'}->{'style_file'}=~/\w/) {
 	&Apache::lonnet::appenv({'construct.style' =>
 				$helper->{'VARS'}->{'style_file'}});
@@ -2935,7 +2930,7 @@
 		$texversion.=&ssi_with_retries($currentURL,$ssi_retry_count, %form);
 
 		#  Add annotations if required:
-	    
+
 		&Apache::lonxml::clear_problem_counter();
 
 		&Apache::lonnet::delenv('request.filename');
@@ -2978,7 +2973,7 @@
 
 		
 
-	    
+
 	    }
 	    # Print annotations.
 
@@ -3004,12 +2999,12 @@
 		 && $currentURL=~/\.(sequence|page)$/ && $helper->{'VARS'}->{'construction'} eq '1') {
 	    $result .= &print_construction_sequence($currentURL, $helper, %form,
 						    $LaTeXwidth);
-	    $result .= '\end{document}';  
+	    $result .= '\end{document}';
 	    if (!($result =~ /\\begin\{document\}/)) {
 		$result = &print_latex_header() . $result;
 	    }
 	    # End construction space sequence.
-	} elsif ($cleanURL=~/\/(smppg|syllabus|aboutme|bulletinboard|ext\.tool)$/) { 
+	} elsif ($cleanURL=~/\/(smppg|syllabus|aboutme|bulletinboard|ext\.tool)$/) {
 		$form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};
 		if ($currentURL=~/\/syllabus$/) {$currentURL=~s/\/res//;}
                 if ($currentURL=~/\/ext\.tool$/) {$currentURL=~s/^\/adm\/wrapper//;}
@@ -3045,7 +3040,7 @@
 	    $result           .=  &print_page_in_course($helper, $rparmhash,
 							$cleanURL, \@page_resources);
 
-       
+
 	} else {
 	    $result.=&unsupported($currentURL,$helper->{'VARS'}->{'LATEX_TYPE'},
 				  $helper->{'VARS'}->{'symb'});
@@ -3059,7 +3054,7 @@
 	     ($print_type eq 'select_sequences')      or
 	     ($print_type eq 'map_incomplete_problems_seq')
 	     ) {
- 
+
         #-- produce an output string
 	if (($print_type eq 'map_problems')                or
 	    ($print_type eq 'map_incomplete_problems_seq') or
@@ -3069,7 +3064,7 @@
 		 ($print_type eq 'map_resources_in_page'))
 	{
 	    $selectionmade = 3;
-	} elsif (($print_type eq 'all_problems') 
+	} elsif (($print_type eq 'all_problems')
 		 ) {
 	    $selectionmade = 4;
 	} elsif ($print_type eq 'all_resources') {  #BUGBUG
@@ -3134,7 +3129,7 @@
 		$texversion.=&ssi_with_retries($urlp, $ssi_retry_count, %form);
 		if ($urlp=~/\.page$/) {
 		    ($texversion,my $number_of_columns_page) = &page_cleanup($texversion);
-		    if ($number_of_columns_page > $number_of_columns) {$number_of_columns=$number_of_columns_page;} 
+		    if ($number_of_columns_page > $number_of_columns) {$number_of_columns=$number_of_columns_page;}
 		    $texversion =~ s/\\end\{document}\d*/\\end{document}/;
 		    $flag_page_in_sequence = 'YES';
 		}
@@ -3197,8 +3192,8 @@
 		    $prevassignment=$assignment;
 		    my $header_text = $parmhash{'print_header_format'};
 		    $header_text    = &format_page_header($textwidth, $header_text,
-							  $assignment, 
-							  $courseidinfo, 
+							  $assignment,
+							  $courseidinfo,
 							  $name);
 		    if ($numberofcolumns eq '1') {
 			$result .='\newpage \noindent\parbox{\minipagewidth}{\noindent\\lhead{'.$header_text.'}} \vskip 5 mm ';
@@ -3207,8 +3202,8 @@
 		    }			
 		}
 		$result .= $texversion;
-		$flag_latex_header_remove = 'YES';   
-	    } elsif ($urlp=~/\/(smppg|syllabus|aboutme|bulletinboard|ext\.tool)$/) { 
+		$flag_latex_header_remove = 'YES';
+	    } elsif ($urlp=~/\/(smppg|syllabus|aboutme|bulletinboard|ext\.tool)$/) {
 		$form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};
 		if ($urlp=~/\/syllabus$/) {$urlp=~s/\/res//;}
                 if ($urlp=~/\/ext\.tool$/) {$urlp=~s/^\/adm\/wrapper//;}
@@ -3225,7 +3220,7 @@
 		    $texversion =~ s/\\end\{document}/\\vskip 0\.5mm\\noindent\\makebox\[\\textwidth\/\$number_of_columns\]\[b\]\{\\hrulefill\}/;
 		}
 		$result .= $texversion;
-		$flag_latex_header_remove = 'YES'; 
+		$flag_latex_header_remove = 'YES';
 	    } elsif ($urlp=~ /\.pdf$/i) {
 		if ($i > 0) {
 		    $result .= '\cleardoublepage';
@@ -3256,10 +3251,10 @@
 		    $texversion =~ s/\\end\{document}//;
 		}
 		$result .= $texversion;
-		$flag_latex_header_remove = 'YES';   
+		$flag_latex_header_remove = 'YES';
 	    }
-	    if (&Apache::loncommon::connection_aborted($r)) { 
-		last; 
+	    if (&Apache::loncommon::connection_aborted($r)) {
+		last;
 	    }
 	}
 	&Apache::lonxml::clear_problem_counter();
@@ -3277,7 +3272,7 @@
               ($print_type eq 'select_sequences_resources_for_students')) {
 
 
-     #-- prints assignments for whole class or for selected students  
+     #-- prints assignments for whole class or for selected students
 	 my $type;
 	 if (($print_type eq 'problems_for_students')           ||
 	     ($print_type eq 'problems_for_students_from_page') ||
@@ -3298,15 +3293,15 @@
 	 #   to override this and output the students by name.
 	 #    Each element of the students array is of the form:
 	 #       username:domain:section:last, first:status
-	 #    
-	 #  Note that student sort is not compatible with printing 
+	 #
+	 #  Note that student sort is not compatible with printing
 	 #  1 section per pdf...so that setting overrides.
-	 #   
-	 if (($helper->{'VARS'}->{'student_sort'}    eq 1)  && 
+	 #
+	 if (($helper->{'VARS'}->{'student_sort'}    eq 1)  &&
 	     ($helper->{'VARS'}->{'SPLIT_PDFS'} ne "sections")) {
 	     @students = sort compare_names  @students;
 	 } else {
-	     @students = sort compare_sections @students; 
+	     @students = sort compare_sections @students;
 	 }
 	 &adjust_number_to_print($helper);
 
@@ -3314,8 +3309,8 @@
 	     $helper->{'VARS'}->{'NUMBER_TO_PRINT'} eq 'all' ) {
 	     $helper->{'VARS'}->{'NUMBER_TO_PRINT'}=$#students+1;
 	 }
-	 # If we are splitting on section boundaries, we need 
-	 # to remember that in split_on_sections and 
+	 # If we are splitting on section boundaries, we need
+	 # to remember that in split_on_sections and
 	 # print all of the students in the list.
 	 #
 	 my $split_on_sections = 0;
@@ -3409,14 +3404,14 @@
 	 my ($code_type,$code_length,$bubbles_per_row)=('letter',6,10);
 	 foreach my $line (@lines) {
              next if (($line =~ /^\#/) || ($line eq ''));
-	     my ($name,$type,$length,$bubbles_per_item) = 
+	     my ($name,$type,$length,$bubbles_per_item) =
                  (split(/:/,$line))[0,2,4,17];
 	     if ($name eq $code_option) {
 		 $code_length=$length;
 		 if ($type eq 'number') { $code_type = 'number'; }
-                 chomp($bubbles_per_item); 
+                 chomp($bubbles_per_item);
                  if (($bubbles_per_item ne '') && ($bubbles_per_item > 0)) {
-                     $bubbles_per_row = $bubbles_per_item; 
+                     $bubbles_per_row = $bubbles_per_item;
                  }
 	     }
 	 }
@@ -3481,7 +3476,7 @@
 	     || $number_per_page eq 'section') {
 	     $number_per_page=$num_todo > 0 ? $num_todo : 1;
 	 }
-	 my $flag_latex_header_remove = 'NO'; 
+	 my $flag_latex_header_remove = 'NO';
 	 my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r,$num_todo);
 	 my $count=0;
          my $nohidemap;
@@ -3490,7 +3485,7 @@
          }
 	 foreach my $code (sort(@allcodes)) {
 	     my $file_num=int($count/$number_per_page);
-	     if ($code_type eq 'number') { 
+	     if ($code_type eq 'number') {
 		 $moreenv{'CODE'}=$code;
 	     } else {
 		 $moreenv{'CODE'}=&num_to_letters($code);
@@ -3515,11 +3510,11 @@
 	 &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
 	 $result .= $print_array[0].'  \end{document}';
      } elsif ($print_type eq 'problems_from_directory') {
-    #prints selected problems from the subdirectory 
+    #prints selected problems from the subdirectory
 	$selectionmade = 6;
         my @list_of_files=split /\|\|\|/, $helper->{'VARS'}->{'FILES'};
 	@list_of_files=sort @list_of_files;
-	my $flag_latex_header_remove = 'NO'; 
+	my $flag_latex_header_remove = 'NO';
 	my $rndseed=time;
 	if ($helper->{'VARS'}->{'curseed'}) {
 	    $rndseed=$helper->{'VARS'}->{'curseed'};
@@ -3575,11 +3570,11 @@
 		}
 		if ($helper->{'VARS'}->{'CONSTR_RESOURSE_URL'} eq 'yes') {
 		    $texversion=~s/(\\addcontentsline\{toc\}\{subsection\}\{[^\}]*\})/$1 URL: \\verb|$urlp| \\strut\\\\\\strut /;
-		    
+
 		}
 		$result .= $texversion;
 	    }
-	    $flag_latex_header_remove = 'YES';  
+	    $flag_latex_header_remove = 'YES';
 	}
 	if ($helper->{VARS}->{'construction'} eq '1') {$result=~s/(\\typeout)/ RANDOM SEED IS $rndseed $1/;}
 	$result .= '\end{document}';      	
@@ -3628,7 +3623,7 @@
             }
         }
         if ($env{'request.enc'}) {
-            $url = &Apache::lonenc::encrypted($url); 
+            $url = &Apache::lonenc::encrypted($url);
         }
         if ($url ne '') {
             my $symb = $helper->{VARS}{'symb'};
@@ -3663,18 +3658,18 @@
     $result       = &collect_languages($result);
 
 
-#-- writing .tex file in prtspool 
+#-- writing .tex file in prtspool
     my $temp_file;
     my $identifier = &Apache::loncommon::get_cgi_id();
     my $filename = "/home/httpd/prtspool/$env{'user.name'}_$env{'user.domain'}_printout_$identifier.tex";
-    if (!($#print_array>0)) { 
+    if (!($#print_array>0)) {
        unless ($temp_file = Apache::File->new('>'.$filename)) {
 	  $r->log_error("Couldn't open $filename for output $!");
-	  return SERVER_ERROR; 
+	  return SERVER_ERROR;
        }
        print $temp_file $result;
        my $begin=index($result,'\begin{document}',0);
-       my $inc=substr($result,0,$begin+16); 
+       my $inc=substr($result,0,$begin+16);
     } else {
        my $begin=index($result,'\begin{document}',0);
        my $inc=substr($result,0,$begin+16);
@@ -3683,11 +3678,11 @@
 	      $print_array[$i]=$result;
 	  } else {
 	      $print_array[$i].='\end{document}';
-	      $print_array[$i] = 
+	      $print_array[$i] =
 		&latex_corrections($number_of_columns,$print_array[$i],
-				   $selectionmade, 
+				   $selectionmade,
 				   $helper->{'VARS'}->{'ANSWER_TYPE'});
-	    
+
 	      my $anobegin=index($print_array[$i],'\setcounter{page}',0);
 	      substr($print_array[$i],0,$anobegin)='';
 	      $print_array[$i]=$inc.$print_array[$i];
@@ -3695,11 +3690,11 @@
 	  my $temp_file;
 	  my $newfilename=$filename;
 	  my $num=$i+1;
-	  $newfilename =~s/\.tex$//; 
+	  $newfilename =~s/\.tex$//;
 	  $newfilename=sprintf("%s_%03d.tex",$newfilename, $num);
 	  unless ($temp_file = Apache::File->new('>'.$newfilename)) {
 	      $r->log_error("Couldn't open $newfilename for output $!");
-	      return SERVER_ERROR; 
+	      return SERVER_ERROR;
 	  }
 	  print $temp_file $print_array[$i];
        }
@@ -3737,8 +3732,8 @@
 				'cgi.'.$identifier.'.backref' => &escape($URLback),});
     &Apache::lonnet::appenv({"cgi.$identifier.user"    => $env{'user.name'},
 				"cgi.$identifier.domain"  => $env{'user.domain'},
-				"cgi.$identifier.courseid" => $cnum, 
-				"cgi.$identifier.coursedom" => $cdom, 
+				"cgi.$identifier.courseid" => $cnum,
+				"cgi.$identifier.coursedom" => $cdom,
 				"cgi.$identifier.resources" => $resources_printed});
 	
     my $end_page = &Apache::loncommon::end_page();
@@ -3785,7 +3780,7 @@
 sub print_resources {
     my ($r,$helper,$person,$type,$moreenv,$master_seq,$remove_latex_header,
 	$LaTeXwidth)=@_;
-    my $current_output = ''; 
+    my $current_output = '';
     my $printed = '';
     my ($username,$userdomain,$usersection) = split /:/,$person;
     my $fullname = &get_name($username,$userdomain);
@@ -3812,14 +3807,14 @@
 
     my $i           = 0;
     my $actually_printed = 0;	# Count of resources printed.
-    #goes through all resources, checks if they are available for 
-    #current student, and produces output   
+    #goes through all resources, checks if they are available for
+    #current student, and produces output
 
     &Apache::lonxml::clear_problem_counter();
     my %page_breaks  = &get_page_breaks($helper);
     my $columns_in_format = (split(/\|/,$helper->{'VARS'}->{'FORMAT'}))[1];
     #
-    #   end each student with a 
+    #   end each student with a
     #   Special that allows the post processor to even out the page
     #   counts later.  Nasty problem this... it would be really
     #   nice to put the special in as a postscript comment
@@ -3847,7 +3842,7 @@
 
 	# See if we need to emit a new header:
 
-	if ( !($type eq 'problems' && 
+	if ( !($type eq 'problems' &&
 	       ($curresline!~ m/$LONCAPA::assess_page_re/)) ) {
 	    if ($print_incomplete && !&incomplete($username, $userdomain, $res_url)) {
 		next;
@@ -3858,7 +3853,7 @@
 		if ($res_url!~m|^ext/|
 		    && $res_url=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) {
 		    $printed .= $curresline.':';
-		    &Apache::lonxml::remember_problem_counter();    
+		    &Apache::lonxml::remember_problem_counter();
 
 		    my $rendered = &get_student_view_with_retries($curresline,$ssi_retry_count,$username,$userdomain,$env{'request.course.id'},'tex',$moreenv);
                     if ($res_url =~ /\.page$/) {
@@ -3890,8 +3885,6 @@
 			if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {
 			    $rendered=~s/(\\keephidden\{ENDOFPROBLEM})/$ansrendered$1/;
 			} else {
-
-			    
 			    my $header =&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});
                             unless ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only') {
                                 $header =~ s/\\begin\{document}//;     #<<<<<
@@ -3916,7 +3909,7 @@
 		    } else {
 			$rendered =~ s/\\end\{document}//;
 		    }
-		    $current_output .= $rendered;		    
+		    $current_output .= $rendered;
 		} elsif ($res_url=~/\/(smppg|syllabus|aboutme|bulletinboard|ext\.tool)$/) {
 		    if ($i == 1) {
 			$syllabus_first = 1;
@@ -3957,7 +3950,7 @@
 	    &Apache::lonnet::gettitle($map), 'header');
 	if (($assignment ne $current_assignment) && ($assignment ne "")) {
 	    my $header_line = &format_page_header($LaTeXwidth, $parmhash{'print_header_format'},
-						  $assignment, $courseidinfo, 
+						  $assignment, $courseidinfo,
 						  $fullname, $usersection);
 	    my $header_start = ($columns_in_format == 1) ? '\lhead'
 		: '\fancyhead[LO]';
@@ -3990,7 +3983,7 @@
         } elsif ($print_incomplete) {
             $message = &mt('No incomplete resources');
         }
-        if ($message) { 
+        if ($message) {
 	    $current_output  = &encapsulate_minipage("\\vskip -10mm \n$message\n \\vskip 100 mm { }\n",$moreenv->{'problem_split'});
         }
 	if ($remove_latex_header eq "NO") {
@@ -4013,7 +4006,7 @@
 	$current_output =~ s/\\begin\{document}/\\setlength{\\topmargin}{1cm} \\begin{document}\\noindent\\parbox{\\minipagewidth}{\\noindent$newheader$namepostfix}\\vskip 5 mm /;
 
     } else {
-	my $blankpages = 
+	my $blankpages =
 	    '\clearpage\strut\clearpage'x$helper->{'VARS'}->{'EMPTY_PAGES'};
 	
 	$current_output = '\strut\vspace*{-6 mm}\\newline'.
@@ -4054,32 +4047,29 @@
         my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
         my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
         my $clientip = &Apache::lonnet::get_requestor_ip($r);
-        my ($blocked,$blocktext) = 
+        my ($blocked,$blocktext) =
             &Apache::loncommon::blocking_status('printout',$clientip,$cnum,$cdom);
         if ($blocked) {
             my $checkrole = "cm./$cdom/$cnum";
             if ($env{'request.course.sec'} ne '') {
                 $checkrole .= "/$env{'request.course.sec'}";
             }
-            unless ((&Apache::lonnet::allowed('evb',undef,undef,$checkrole)) && 
+            unless ((&Apache::lonnet::allowed('evb',undef,undef,$checkrole)) &&
                     ($env{'request.role'} !~ m{^st\./$cdom/$cnum})) {
                 &printing_blocked($r,$blocktext);
                 return OK;
             }
         }
     }
-    
+
     &init_perm();
     my $helper = printHelper($r);
     if (!ref($helper)) {
 	return $helper;
     }
-   
-
-    %parmhash=&Apache::lonnet::coursedescription($env{'request.course.id'});
- 
 
 
+    %parmhash=&Apache::lonnet::coursedescription($env{'request.course.id'});
 
     #  If a figure conversion queue file exists for this user.domain
     # we delete it since it can only be bad (if it were good, printout.pl
@@ -4089,7 +4079,6 @@
     if(-e $conversion_queuefile) {
 	unlink $conversion_queuefile;
     }
-    
 
     &output_data($r,$helper,\%parmhash);
     return OK;
@@ -4135,13 +4124,13 @@
     if (defined($navmap)) {
         my $res = $navmap->getResourceByUrl($map);
         if ($res) {
-	    my $func = 
+	    my $func =
 	        sub { return ($_[0]->is_map() && $_[0]->randomorder); };
 	    my @matches = $navmap->retrieveResources($res, $func,1,1,1);
 
         }
     } else {
-        $message = "Retrieval of information about ordering of resources failed."; 
+        $message = "Retrieval of information about ordering of resources failed.";
         return '<message type="warning">'.$message.'</message>';
     }
     return;
@@ -4174,12 +4163,12 @@
     # write it by hand
 
     Apache::loncommon::get_unprocessed_cgi($ENV{QUERY_STRING});
-    
+
     my $helper = Apache::lonhelper::helper->new("Printing Helper");
     $helper->declareVar('symb');
-    $helper->declareVar('postdata');    
-    $helper->declareVar('curseed'); 
-    $helper->declareVar('probstatus');   
+    $helper->declareVar('postdata');
+    $helper->declareVar('curseed');
+    $helper->declareVar('probstatus');
     $helper->declareVar('filename');
     $helper->declareVar('construction');
     $helper->declareVar('assignment');
@@ -4191,7 +4180,7 @@
     $helper->declareVar("STUDENTS");
     $helper->declareVar("EXTRASPACE");
 
-   
+
 
 
     #  The page breaks and extra spaces
@@ -4199,19 +4188,19 @@
     # But we only do this in the initial state so that they are allowed to change.
     #
 
-    
+
     &Apache::loncommon::restore_course_settings('print',
 						{'pagebreaks'  => 'scalar',
 						 'extraspace'  => 'scalar',
 						 'extraspace_units' => 'scalar',
 					         'lastprinttype' => 'scalar'});
-    
+
     # This will persistently load in the data we want from the
     # very first screen.
-    
+
     if($helper->{VARS}->{PRINT_TYPE} eq $env{'form.lastprinttype'}) {
 	if (!defined ($env{"form.CURRENT_STATE"})) {
-	    
+
 	    $helper->{VARS}->{FINISHPAGE} = $env{'form.pagebreaks'};
 	    $helper->{VARS}->{EXTRASPACE} = $env{'form.extraspace'};
 	    $helper->{VARS}->{EXTRASPACE_UNITS} = $env{'form.extraspace_units'};
@@ -4282,13 +4271,12 @@
     }
     if ($sequenceTitle ne '') {$helper->{VARS}->{'assignment'}=$sequenceTitle;}
 
-    
     # Extract map
     my $symb = $helper->{VARS}->{'symb'};
     my ($map, $id, $url);
     my $subdir;
     my $is_published=0;		# True when printing from resource space.
-    my $res_printable = 1;	# By default the current resource is printable.    
+    my $res_printable = 1;	# By default the current resource is printable.
     my $res_error;
     my $userCanPrint = ($perm{'pav'} || $perm{'pfo'});
     my $res_printstartdate;
@@ -4300,7 +4288,7 @@
 
     # Get the resource name from construction space
     if ($helper->{VARS}->{'construction'}) {
-        $resourceTitle = substr($helper->{VARS}->{'filename'}, 
+        $resourceTitle = substr($helper->{VARS}->{'filename'},
                                 rindex($helper->{VARS}->{'filename'}, '/')+1);
         $subdir = substr($helper->{VARS}->{'filename'},
                          0, rindex($helper->{VARS}->{'filename'}, '/') + 1);
@@ -4309,7 +4297,7 @@
 
 	if ($symb ne '') {
 	    ($map, $id, $url) = &Apache::lonnet::decode_symb($symb);
-	    $helper->{VARS}->{'postdata'} = 
+	    $helper->{VARS}->{'postdata'} =
 		&Apache::lonenc::check_encrypt(&Apache::lonnet::clutter($url));
         } elsif (($helper->{VARS}->{'postdata'} eq '/adm/navmaps') &&
                 ($env{'request.course.id'} ne '')) {
@@ -4335,7 +4323,7 @@
 	                ($course_open, $course_close) = &course_print_dates($res);
 	                ($map_open, $map_close) = &map_print_dates($res);
                     } else {
-                        $res_error = 1; 
+                        $res_error = 1;
                     }
                 } else {
                     $res_error = 1;
@@ -4394,7 +4382,7 @@
 
     if ($resourceTitle && $res_printable) {
         push @{$printChoices}, ["<b><i>$resourceTitle</i></b> (".&mt('the resource you just saw on the screen').")", 'current_document', 'PAGESIZE'];
-    } 
+    }
 
     # Useful filter strings
 
@@ -4419,7 +4407,7 @@
 
     my $start_new_option;
     if ($perm{'pav'}) {
-	$start_new_option = 
+	$start_new_option =
 	    "<option text='".&mt('Start new page[_1]before selected','<br />').
 	    "' variable='FINISHPAGE' />".
 	    "<option text='".&mt('Extra space[_1]before selected','<br />').
@@ -4429,8 +4417,6 @@
 	    "<option text='".&mt('Space units[_1]check for mm','<br />').
 	    "' variable='EXTRASPACE_UNITS' type='checkbox' />"
 	    ;
-	    
-
     }
 
     # If not construction space user can print the components of a page:
@@ -4449,13 +4435,13 @@
 		my $resourcesymb   = $page_resources[0]->symb();
 		my ($pagemap, $pageid, $pageurl) = &Apache::lonnet::decode_symb($symb);
 		if ($page_ispage) {
-		    push @{$printChoices}, 
-		    [&mt('Selected [_1]Problems[_2] from page [_3]', '<b>', '</b>', '<b><i>'.$page_title.'</i></b>'), 
-		     'map_problems_in_page', 
+		    push @{$printChoices},
+		    [&mt('Selected [_1]Problems[_2] from page [_3]', '<b>', '</b>', '<b><i>'.$page_title.'</i></b>'),
+		     'map_problems_in_page',
 		     'CHOOSE_PROBLEMS_PAGE'];
-		    push @{$printChoices}, 
-		    [&mt('Selected [_1]Resources[_2] from page [_3]', '<b>', '</b>', '<b><i>'.$page_title.'</i></b>'), 
-		     'map_resources_in_page', 
+		    push @{$printChoices},
+		    [&mt('Selected [_1]Resources[_2] from page [_3]', '<b>', '</b>', '<b><i>'.$page_title.'</i></b>'),
+		     'map_resources_in_page',
 		     'CHOOSE_RESOURCES_PAGE'];
 		}
         my $helperFragment = &generate_resource_chooser('CHOOSE_PROBLEMS_PAGE',
@@ -4509,7 +4495,7 @@
 	    $nextState     = 'CHOOSE_INCOMPLETE_PEOPLE_SEQ';
 	    $textSuffix    = ' for selected students';
 	    my $helperStates =
-		&create_incomplete_folder_selstud_helper($helper, $map, $nocurrloc); 
+		&create_incomplete_folder_selstud_helper($helper, $map, $nocurrloc);
 	    &Apache::lonxml::xmlparse($r, 'helper', $helperStates);
 	} else {
 	    if (&printable($map_open, $map_close)) {
@@ -4540,9 +4526,9 @@
             } else {
                 $optionText = &mt('Selected [_1]Problems[_2] from folder [_3]','<b>','</b>','<b><i>'.$sequenceTitle.'</i></b>');
             }
-	    push @{$printChoices}, 
-	    [$optionText, 
-	     'map_problems', 
+	    push @{$printChoices},
+	    [$optionText,
+	     'map_problems',
 	     'CHOOSE_PROBLEMS'];
 	    # Allow all resources from sequence
             if ($helper->{VARS}->{'postdata'} eq '/adm/navmaps') {
@@ -4550,8 +4536,8 @@
             } else {
                 $optionText = &mt('Selected [_1]Resources[_2] from folder [_3]','<b>','</b>','<b><i>'.$sequenceTitle.'</i></b>');
             }
-	    push @{$printChoices}, [$optionText, 
-				    'map_problems_pages', 
+	    push @{$printChoices}, [$optionText,
+				    'map_problems_pages',
 				    'CHOOSE_PROBLEMS_HTML'];
 	    my $helperFragment = &generate_resource_chooser('CHOOSE_PROBLEMS',
 							    'Select Problem(s) to print',
@@ -4571,16 +4557,16 @@
 							  $isNotMap, '',
 							  $symbFilter,
 							  $start_new_option);
-	    
+
 	    &Apache::lonxml::xmlparse($r, 'helper', $helperFragment);
 	} else {
 	    # TODO: Figure out how to tell them the folder is not printable.
 	}
     }
-	# If the user has pfo (print for others) allow them to print all 
+	# If the user has pfo (print for others) allow them to print all
 	# problems and resources  in the entire course, optionally for selected students
 	my $post_data = $helper->{VARS}->{'postdata'};
-    
+
     if ($perm{'pfo'} &&  !$is_published  &&
         ($post_data=~/\/res\// || $post_data =~/\/(syllabus|smppg|aboutme|bulletinboard)$/)) {
 
@@ -4610,7 +4596,7 @@
       <student multichoice='1' variable="STUDENTS" nextstate="PRINT_FORMATTING" coursepersonnel="1"/>
   </state>
 ALL_PROBLEMS
-         &Apache::lonxml::xmlparse($r, 'helper', 
+         &Apache::lonxml::xmlparse($r, 'helper',
 				   &generate_resource_chooser('ALL_PROBLEMS',
 							      'Select Problem(s) to print',
 							      'multichoice="1" suppressEmptySequences="0" addstatus="1" closeallpages="1" modallink="1"',
@@ -4653,10 +4639,10 @@
 					'problems_for_anon_page', 'CHOOSE_ANON1_PAGE'];
 	    }
 	    push @{$printChoices}, [&mt('Selected [_1]Problems[_2] from folder [_3] for [_4]selected people[_5]',
-					'<b>','</b>','<b><i>'.$sequenceTitle.'</i></b>','<b>','</b>'), 
+					'<b>','</b>','<b><i>'.$sequenceTitle.'</i></b>','<b>','</b>'),
 				    'problems_for_students', 'CHOOSE_STUDENTS'];
 	    push @{$printChoices}, [&mt('Selected [_1]Problems[_2] from folder [_3] for [_4]CODEd assignments[_5]',
-					'<b>','</b>','<b><i>'.$sequenceTitle.'</i></b>','<b>','</b>'), 
+					'<b>','</b>','<b><i>'.$sequenceTitle.'</i></b>','<b>','</b>'),
 				    'problems_for_anon', 'CHOOSE_ANON1'];
 	}
 
@@ -4686,7 +4672,7 @@
     $randomly_ordered_warning
     <nextstate>PRINT_FORMATTING</nextstate>
     <message><br /><big><i><b>Select resources for the assignment</b></i></big><br /></message>
-    <resource variable="RESOURCES" multichoice="1" addstatus="1" 
+    <resource variable="RESOURCES" multichoice="1" addstatus="1"
               closeallpages="1" modallink="1">
       <filterfunc>return $isNotMap;</filterfunc>
       <mapurl>$map</mapurl>
@@ -4797,7 +4783,7 @@
       <nextstate>PAGESIZE</nextstate>
       <filechoice>return '$subdir';</filechoice>
 CHOOSE_FROM_SUBDIR
-        
+
         # this is broken up because I really want interpolation above,
         # and I really DON'T want it below
         $xmlfrag .= <<'CHOOSE_FROM_SUBDIR';
@@ -5023,7 +5009,7 @@
 
         if ($noprintmsg) {
             $paramHash = Apache::lonhelper::getParamHash();
-	    $paramHash->{MESSAGE_TEXT} = 
+	    $paramHash->{MESSAGE_TEXT} =
                 '<p class="LC_info">'.$noprintmsg.'</p>';
 	    Apache::lonhelper::message->new();
         }
@@ -5052,8 +5038,8 @@
                     )
         );
         $paramHash = Apache::lonhelper::getParamHash();
-	$paramHash->{'variable'} = 'ANSWER_TYPE';   
-	$helper->declareVar('ANSWER_TYPE');         
+	$paramHash->{'variable'} = 'ANSWER_TYPE';
+	$helper->declareVar('ANSWER_TYPE');
         $paramHash->{CHOICES} = [
                                    ['Without Answers', 'yes'],
                                    ['With Answers', 'no'],
@@ -5071,7 +5057,7 @@
             &addMessage(&Apache::lonhtmlcommon::row_title(&mt('Font Size')));
             my $xmlfrag = << "FONT_SELECTION";
 
-          
+
             <dropdown variable='fontsize' multichoice='0' allowempty='0'>
             <defaultvalue>
 		  return 'normalsize';
@@ -5108,11 +5094,11 @@
             );
 	}
         $paramHash = Apache::lonhelper::getParamHash();
-	$paramHash->{'variable'} = 'LATEX_TYPE';   
-	$helper->declareVar('LATEX_TYPE');  
-	if ($helper->{VARS}->{'construction'} eq '1') {       
+	$paramHash->{'variable'} = 'LATEX_TYPE';
+	$helper->declareVar('LATEX_TYPE');
+	if ($helper->{VARS}->{'construction'} eq '1') {
 	    $paramHash->{CHOICES} = [
-				     ['standard LaTeX mode', 'standard'], 
+				     ['standard LaTeX mode', 'standard'],
 				     ['LaTeX batchmode', 'batchmode'], ];
 	} else {
 	    $paramHash->{CHOICES} = [
@@ -5120,7 +5106,7 @@
 				     ['standard LaTeX mode', 'standard'] ];
 	}
         Apache::lonhelper::dropdown->new();
- 
+
 	&addMessage(&Apache::lonhtmlcommon::row_closure()
                    .&Apache::lonhtmlcommon::row_title(
                         '<label for="TABLE_CONTENTS_forminput">'
@@ -5129,14 +5115,14 @@
                     )
         );
         $paramHash = Apache::lonhelper::getParamHash();
-	$paramHash->{'variable'} = 'TABLE_CONTENTS';   
-	$helper->declareVar('TABLE_CONTENTS');         
+	$paramHash->{'variable'} = 'TABLE_CONTENTS';
+	$helper->declareVar('TABLE_CONTENTS');
         $paramHash->{CHOICES} = [
                                    ['No', 'no'],
                                    ['Yes', 'yes'] ];
         Apache::lonhelper::dropdown->new();
 	&addMessage(&Apache::lonhtmlcommon::row_closure());
-        
+
 	if (not $helper->{VARS}->{'construction'}) {
 	    &addMessage(&Apache::lonhtmlcommon::row_title(
                             '<label for="TABLE_INDEX_forminput">'
@@ -5145,8 +5131,8 @@
                         )
             );
 	    $paramHash = Apache::lonhelper::getParamHash();
-	    $paramHash->{'variable'} = 'TABLE_INDEX';   
-	    $helper->declareVar('TABLE_INDEX');         
+	    $paramHash->{'variable'} = 'TABLE_INDEX';
+	    $helper->declareVar('TABLE_INDEX');
 	    $paramHash->{CHOICES} = [
 				     ['No', 'no'],
 				     ['Yes', 'yes'] ];
@@ -5159,8 +5145,8 @@
                         )
             );
 	    $paramHash = Apache::lonhelper::getParamHash();
-	    $paramHash->{'variable'} = 'PRINT_DISCUSSIONS';   
-	    $helper->declareVar('PRINT_DISCUSSIONS');         
+	    $paramHash->{'variable'} = 'PRINT_DISCUSSIONS';
+	    $helper->declareVar('PRINT_DISCUSSIONS');
 	    $paramHash->{CHOICES} = [
 				     ['No', 'no'],
 				     ['Yes', 'yes'] ];
@@ -5194,7 +5180,7 @@
             &addMessage(&Apache::lonhtmlcommon::row_closure(1));
 	}
 
-	if ($helper->{'VARS'}->{'construction'}) { 
+	if ($helper->{'VARS'}->{'construction'}) {
 	    my $stylevalue='$Apache::lonnet::env{"construct.style"}';
             my $randseedtext=&mt("Use random seed");
             my $stylefiletext=&mt("Use style file");
@@ -5285,11 +5271,11 @@
     # If we're in the "final" state, bailout and return to handler
     if ($helper->{STATE} eq 'FINAL') {
         return $helper;
-    }    
+    }
 
     my $footer;
     if ($helper->{STATE} eq 'START') {
-        my $prtspool=$r->dir_config('lonPrtDir'); 
+        my $prtspool=$r->dir_config('lonPrtDir');
 	$footer = &recently_generated($prtspool);
     }
     $r->print($helper->display($footer));
@@ -5309,10 +5295,10 @@
 
 See lonhelper.pm documentation for discussion of the helper framework.
 
-Apache::lonprintout::page_format_state is an element that gives the 
-user an opportunity to select the page layout they wish to print 
-with: Number of columns, portrait/landscape, and paper size. If you 
-want to change the paper size choices, change the @paperSize array 
+Apache::lonprintout::page_format_state is an element that gives the
+user an opportunity to select the page layout they wish to print
+with: Number of columns, portrait/landscape, and paper size. If you
+want to change the paper size choices, change the @paperSize array
 contents in this package.
 
 page_format_state is always directly invoked in lonprintout.pm, so there
@@ -5336,17 +5322,17 @@
 
 my $maxColumns = 2;
 # it'd be nice if these all worked
-#my @paperSize = ("letter [8 1/2x11 in]", "legal [8 1/2x14 in]", 
+#my @paperSize = ("letter [8 1/2x11 in]", "legal [8 1/2x14 in]",
 #                 "tabloid (ledger) [11x17 in]", "executive [7 1/2x10 in]",
-#                 "a2 [420x594 mm]", "a3 [297x420 mm]", "a4 [210x297 mm]", 
+#                 "a2 [420x594 mm]", "a3 [297x420 mm]", "a4 [210x297 mm]",
 #                 "a5 [148x210 mm]", "a6 [105x148 mm]" );
-my @paperSize = ("letter [8 1/2x11 in]", "legal [8 1/2x14 in]", 
+my @paperSize = ("letter [8 1/2x11 in]", "legal [8 1/2x14 in]",
 		 "a4 [210x297 mm]");
 
 # Tentative format: Orientation (L = Landscape, P = portrait) | Colnum |
 #                   Paper type
 
-sub new { 
+sub new {
     my $self = Apache::lonhelper::element->new();
 
     shift;
@@ -5371,7 +5357,7 @@
     my $pdfFormLabel=&mt('PDF Form Fields');
     my $with=&mt('with Form Fields');
     my $without=&mt('without Form Fields');
-    
+
 
     $result.='<h3>'.&mt('Layout Options').'</h3>'
             .&Apache::loncommon::start_data_table()
@@ -5438,7 +5424,7 @@
 
     my $var = $self->{'variable'};
     my $helper = Apache::lonhelper->getHelper();
-    $helper->{VARS}->{$var} = 
+    $helper->{VARS}->{$var} =
         $env{"form.$var.layout"} . '|' . $env{"form.$var.cols"} . '|' .
         $env{"form.$var.paper"} . '|' . $env{"form.$var.pdfFormFields"};
     return 1;
@@ -5454,7 +5440,7 @@
 
 See lonhelper.pm documentation for discussion of the helper framework.
 
-Apache::lonprintout::page_size_state is an element that gives the 
+Apache::lonprintout::page_size_state is an element that gives the
 user the opportunity to further refine the page settings if they
 select a single-column page.
 
@@ -5477,7 +5463,7 @@
 
 
 
-sub new { 
+sub new {
     my $self = Apache::lonhelper::element->new();
 
     shift; # disturbs me (probably prevents subclassing) but works (drops
@@ -5487,7 +5473,7 @@
     my $helper = Apache::lonhelper::getHelper();
     $helper->declareVar($self->{'variable'});
 
-    # The variable name of the format element, so we can look into 
+    # The variable name of the format element, so we can look into
     # $helper->{VARS} to figure out whether the columns are one or two
     $self->{'formatvar'} = shift;
 
@@ -5527,7 +5513,7 @@
      $size{'height_and_units'},
      $size{'margin_and_units'})=
 	 &Apache::lonprintout::page_format($papersize, $laystyle, $cols);
-    
+
     foreach my $dimension ('width','height','margin') {
 	($size{$dimension},$size{$dimension.'_unit'}) =
 	    split(/ +/, $size{$dimension.'_and_units'},2);
@@ -5612,10 +5598,10 @@
 	
 	foreach my $dim ('width', 'height', 'lmargin') {
 	    my ($value, $units) = split(/ /, $size{$dim});
-	    	    
+
 	    $helper->{VARS}->{"$var.".$dim}      = $value;
 	    $helper->{VARS}->{"$var.".$dim.'unit'} = $units;
-	    
+
 	}
 	
 
@@ -5623,7 +5609,7 @@
 
 	$helper->changeState($self->{NEXTSTATE});
     }
-   
+
     return 1;
 }
 
@@ -5632,16 +5618,16 @@
 
     my $var = $self->{'variable'};
     my $helper = Apache::lonhelper->getHelper();
-    my $width = $helper->{VARS}->{$var .'.width'} = $env{"form.${var}.width"}; 
-    my $height = $helper->{VARS}->{$var .'.height'} = $env{"form.${var}.height"}; 
-    my $lmargin = $helper->{VARS}->{$var .'.lmargin'} = $env{"form.${var}.lmargin"}; 
-    $helper->{VARS}->{$var .'.widthunit'} = $env{"form.${var}.widthunit"}; 
-    $helper->{VARS}->{$var .'.heightunit'} = $env{"form.${var}.heightunit"}; 
-    $helper->{VARS}->{$var .'.lmarginunit'} = $env{"form.${var}.lmarginunit"}; 
+    my $width = $helper->{VARS}->{$var .'.width'} = $env{"form.${var}.width"};
+    my $height = $helper->{VARS}->{$var .'.height'} = $env{"form.${var}.height"};
+    my $lmargin = $helper->{VARS}->{$var .'.lmargin'} = $env{"form.${var}.lmargin"};
+    $helper->{VARS}->{$var .'.widthunit'} = $env{"form.${var}.widthunit"};
+    $helper->{VARS}->{$var .'.heightunit'} = $env{"form.${var}.heightunit"};
+    $helper->{VARS}->{$var .'.lmarginunit'} = $env{"form.${var}.lmarginunit"};
 
     my $error = '';
 
-    # /^-?[0-9]+(\.[0-9]*)?$/ -> optional minus, at least on digit, followed 
+    # /^-?[0-9]+(\.[0-9]*)?$/ -> optional minus, at least on digit, followed
     # by an optional period, followed by digits, ending the string
 
     if ($width !~  /^-?[0-9]*(\.[0-9]*)?$/) {


More information about the LON-CAPA-cvs mailing list