--- loncom/interface/lonprintout.pm	2003/06/24 20:54:06	1.197
+++ loncom/interface/lonprintout.pm	2003/07/01 20:15:06	1.201
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Printout
 #
-# $Id: lonprintout.pm,v 1.197 2003/06/24 20:54:06 sakharuk Exp $
+# $Id: lonprintout.pm,v 1.201 2003/07/01 20:15:06 sakharuk Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -286,6 +286,7 @@ sub character_chart {
     $result =~ s/&(mu|\#956);/\$\\mu \$/g;
     $result =~ s/&(nu|\#957);/\$\\nu \$/g;
     $result =~ s/&(xi|\#958);/\$\\xi \$/g;
+    $result =~ s/&(omicron|\#959);/o/g;
     $result =~ s/&(pi|\#960);/\$\\pi \$/g;
     $result =~ s/&(rho|\#961);/\$\\rho \$/g;
     $result =~ s/&(sigma|\#963);/\$\\sigma \$/g;
@@ -295,17 +296,88 @@ sub character_chart {
     $result =~ s/&(chi|\#967);/\$\\chi \$/g;
     $result =~ s/&(psi|\#968);/\$\\psi \$/g;
     $result =~ s/&(omega|\#969);/\$\\omega \$/g;
+    $result =~ s/&(thetasym|\#977);/\$\\vartheta \$/g;
+    $result =~ s/&(piv|\#982);/\$\\varpi \$/g;
+    $result =~ s/&(Alpha|\#913);/A/g;
+    $result =~ s/&(Beta|\#914);/B/g;
     $result =~ s/&(Gamma|\#915);/\$\\Gamma \$/g;
     $result =~ s/&(Delta|\#916);/\$\\Delta \$/g;
+    $result =~ s/&(Epsilon|\#917);/E/g;
+    $result =~ s/&(Zeta|\#918);/Z/g;
+    $result =~ s/&(Eta|\#919);/H/g;
     $result =~ s/&(Theta|\#920);/\$\\Theta \$/g;
+    $result =~ s/&(Iota|\#921);/I/g;
+    $result =~ s/&(Kappa|\#922);/K/g;
     $result =~ s/&(Lambda|\#923);/\$\\Lambda \$/g;
+    $result =~ s/&(Mu|\#924);/M/g;
+    $result =~ s/&(Nu|\#925);/N/g;
     $result =~ s/&(Xi|\#926);/\$\\Xi \$/g;
+    $result =~ s/&(Omicron|\#927);/O/g;
     $result =~ s/&(Pi|\#928);/\$\\Pi \$/g;
+    $result =~ s/&(Rho|\#929);/P/g;
     $result =~ s/&(Sigma|\#931);/\$\\Sigma \$/g;
+    $result =~ s/&(Tau|\#932);/T/g;
     $result =~ s/&(Upsilon|\#933);/\$\\Upsilon \$/g;
     $result =~ s/&(Phi|\#934);/\$\\Phi \$/g;
+    $result =~ s/&(Chi|\#935);/X/g;
     $result =~ s/&(Psi|\#936);/\$\\Psi \$/g;
     $result =~ s/&(Omega|\#937);/\$\\Omega \$/g;
+#Arrows (extended HTML 4.01)
+    $result =~ s/&(larr|\#8592);/\$\\leftarrow \$/g;
+    $result =~ s/&(uarr|\#8593);/\$\\uparrow \$/g;
+    $result =~ s/&(rarr|\#8594);/\$\\rightarrow \$/g;
+    $result =~ s/&(darr|\#8595);/\$\\downarrow \$/g;
+    $result =~ s/&(harr|\#8596);/\$\\leftrightarrow \$/g;
+    $result =~ s/&(lArr|\#8656);/\$\\Leftarrow \$/g;
+    $result =~ s/&(uArr|\#8657);/\$\\Uparrow \$/g;
+    $result =~ s/&(rArr|\#8658);/\$\\Rightarrow \$/g;
+    $result =~ s/&(dArr|\#8659);/\$\\Downarrow \$/g;
+    $result =~ s/&(hArr|\#8660);/\$\\Leftrightarrow \$/g;
+#Mathematical Operators (extended HTML 4.01)
+    $result =~ s/&(forall|\#8704);/\$\\forall \$/g;
+    $result =~ s/&(part|\#8706);/\$\\partial \$/g;
+    $result =~ s/&(exist|\#8707);/\$\\exists \$/g;
+    $result =~ s/&(empty|\#8709);/\$\\emptyset \$/g;
+    $result =~ s/&(nabla|\#8711);/\$\\nabla \$/g;
+    $result =~ s/&(isin|\#8712);/\$\\in \$/g;
+    $result =~ s/&(notin|\#8713);/\$\\notin \$/g;
+    $result =~ s/&(ni|\#8715);/\$\\ni \$/g;
+    $result =~ s/&(prod|\#8719);/\$\\prod \$/g;
+    $result =~ s/&(sum|\#8721);/\$\\sum \$/g;
+    $result =~ s/&(minus|\#8722);/\$-\$/g;
+    $result =~ s/&(lowast|\#8727);/\$*\$/g;
+    $result =~ s/&(radic|\#8730);/\$\\surd \$/g;
+    $result =~ s/&(prop|\#8733);/\$\\propto \$/g;
+    $result =~ s/&(infin|\#8734);/\$\\infty \$/g;
+    $result =~ s/&(ang|\#8736);/\$\\angle \$/g;
+    $result =~ s/&(and|\#8743);/\$\\wedge \$/g;
+    $result =~ s/&(or|\#8744);/\$\\vee \$/g;
+    $result =~ s/&(cap|\#8745);/\$\\cap \$/g;
+    $result =~ s/&(cup|\#8746);/\$\\cup \$/g;
+    $result =~ s/&(int|\#8747);/\$\\int \$/g;
+    $result =~ s/&(sim|\#8764);/\$\\sim \$/g;
+    $result =~ s/&(cong|\#8773);/\$\\cong \$/g;
+    $result =~ s/&(asymp|\#8776);/\$\\approx \$/g;
+    $result =~ s/&(ne|\#8800);/\$\\not= \$/g;
+    $result =~ s/&(equiv|\#8801);/\$\\equiv \$/g;
+    $result =~ s/&(le|\#8804);/\$\\leq \$/g;
+    $result =~ s/&(ge|\#8805);/\$\\geq \$/g;
+    $result =~ s/&(sub|\#8834);/\$\\subset \$/g;
+    $result =~ s/&(sup|\#8835);/\$\\supset \$/g;
+    $result =~ s/&(nsub|\#8836);/\$\\not\\subset \$/g;
+    $result =~ s/&(sube|\#8838);/\$\\subseteq \$/g;
+    $result =~ s/&(supe|\#8839);/\$\\supseteq \$/g;
+    $result =~ s/&(oplus|\#8853);/\$\\oplus \$/g;
+    $result =~ s/&(otimes|\#8855);/\$\\otimes \$/g;
+    $result =~ s/&(perp|\#8869);/\$\\perp \$/g;
+    $result =~ s/&(sdot|\#8901);/\$\\cdot \$/g;
+#Geometric Shapes (extended HTML 4.01)
+    $result =~ s/&(loz|\#9674);/\$\\Diamond \$/g;
+#Miscellaneous Symbols (extended HTML 4.01)
+    $result =~ s/&(spades|\#9824);/\$\\spadesuit \$/g;
+    $result =~ s/&(clubs|\#9827);/\$\\clubsuit \$/g;
+    $result =~ s/&(hearts|\#9829);/\$\\heartsuit \$/g;
+    $result =~ s/&(diams|\#9830);/\$\\diamondsuit \$/g;
     return $result;
 }
 
@@ -551,10 +623,13 @@ ENDPART
 	    $moreenv{'request.filename'}=$currentURL;
 	    my %form;
 	    $form{'grade_target'}='tex';
-	    $form{'textwidth'}=$LaTeXwidth;
+	    $form{'textwidth'}=$LaTeXwidth;	
+	    $form{'problem_split'}=$parmhash{'problem_stream_switch'}; 
 	    my $rndseed=time;
 	    $form{'rndseed'}=$rndseed;
 	    &Apache::lonnet::appenv(%moreenv);
+	    &Apache::lonnet::delenv('form.counter');
+	    &Apache::lonxml::init_counter();
 	    my $texversion=&Apache::lonnet::ssi($currentURL,%form);
 	    &Apache::lonnet::delenv('form.counter');
 	    &Apache::lonnet::delenv('request.filename');
@@ -591,6 +666,8 @@ ENDPART
 	my $flag_page_in_sequence = 'NO';
 	my @master_seq=split /\|\|\|/, $helper->{'VARS'}->{'RESOURCES'};
 	my $prevassignment='';
+	&Apache::lonnet::delenv('form.counter');
+	&Apache::lonxml::init_counter();
 	for (my $i=0;$i<=$#master_seq;$i++) {
 	    $master_seq[$i]=~/___\d+___(.*)$/;
 	    my $urlp='/res/'.$1;
@@ -602,8 +679,8 @@ ENDPART
 		$selectionmade = 4;
 	    }
 	    $form{'symb'}=$master_seq[$i];
-	    $master_seq[$i]=~/\/([^\/]+)\.sequence_/;
-	    my $assignment=' '.$1.' ';
+	    $master_seq[$i]=~/(.*)___\d*___/;
+	    my $assignment=&Apache::lonnet::gettitle($1); #tittle of the assignment which contains this problem
 	    #&Apache::lonnet::logthis("Trying to get $urlp with symb $master_seq[$i]");
 	    my $texversion=&Apache::lonnet::ssi($urlp,%form);
 	    if ($urlp=~/\.page$/) {
@@ -625,7 +702,7 @@ ENDPART
 		$texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/;
 	    }
 #	    $result .= $texversion;
-	    if (($selectionmade == 4) and ($assignment ne $prevassignment) and ($i>1)) {
+	    if (($selectionmade == 4) and ($assignment ne $prevassignment) and ($i>=1)) {
 		my $name = &get_name();
 		if ($name =~ /^\s*$/) {
 		    $name=&Apache::lonxml::latex_special_symbols($ENV{'user.name'},undef,
@@ -660,6 +737,8 @@ ENDPART
 
 	    if ($parmhash{'anonymous_quiz'}=~/yes/) {$fullname=' ';} #put here something reasonable for anonymous exams or quiz
             #goes through all resources, checks if they are available for current student, and produces output   
+	    &Apache::lonnet::delenv('form.counter');
+	    &Apache::lonxml::init_counter();
 	    foreach my $curresline (@master_seq)  {
 		if ($curresline=~ m/\.(problem|exam|quiz|assess|survey|form|library)$/) {
 		    my ($map,$id,$res_url) = split(/___/,$curresline);
@@ -814,6 +893,11 @@ sub handler {
 
     my %parmhash=&Apache::lonnet::coursedescription($ENV{'request.course.id'});
     
+	my $key; 
+#	foreach $key (keys %parmhash) {
+#	    $r->print(' '.$key.'->'.$parmhash{$key}.'<-<br />');
+#	}
+#	return OK;
 
     &output_data($r,$helper,\%parmhash);
     return OK;