version 1.38, 2002/07/16 20:30:53
|
version 1.47, 2002/08/05 19:18:43
|
Line 71 sub menu_for_output {
|
Line 71 sub menu_for_output {
|
<input type="hidden" name="url" value="$ENV{'form.postdata'}"> |
<input type="hidden" name="url" value="$ENV{'form.postdata'}"> |
<input type="radio" name="choice" value="Standard LaTeX output for current document" checked> Current document |
<input type="radio" name="choice" value="Standard LaTeX output for current document" checked> Current document |
(you will print what you see on the screen)<br /> |
(you will print what you see on the screen)<br /> |
|
ENDMENUOUT1 |
|
if (not $ENV{'request.role'}=~m/^au\./) { |
|
$r->print(<<ENDMENUOUT2); |
<input type="radio" name="choice" value="Standard LaTeX output for the primary sequence"> All problems from the primary sequence<br /> |
<input type="radio" name="choice" value="Standard LaTeX output for the primary sequence"> All problems from the primary sequence<br /> |
<input type="radio" name="choice" value="Standard LaTeX output for whole primary sequence"> The whole primary sequence (problems plus all html and xml files)<br /> |
<input type="radio" name="choice" value="Standard LaTeX output for whole primary sequence"> The whole primary sequence (problems plus all html and xml files)<br /> |
<input type="radio" name="choice" value="Standard LaTeX output for the top level sequence"> All problems from the top level sequence<br /> |
<input type="radio" name="choice" value="Standard LaTeX output for the top level sequence"> All problems from the top level sequence<br /> |
<br /> |
<br /> |
ENDMENUOUT1 |
|
my $subdirtoprint = &Apache::lonnet::filelocation("",$ENV{'form.url'}); |
|
$subdirtoprint =~ s/\/[^\/]+$//; |
|
if (&Apache::lonnet::allowed('bre',$subdirtoprint) eq 'F') { |
|
$r->print(<<ENDMENUOUT2); |
|
<input type="radio" name="choice" value="Subdirectory print"> All problems from current subdirectory (where this particular problem is)<br /> |
|
ENDMENUOUT2 |
ENDMENUOUT2 |
} |
} |
$r->print(<<ENDMENUOUT3); |
my $subdirtoprint = &Apache::lonnet::filelocation("",$ENV{'form.url'}); |
|
$subdirtoprint =~ s/\/[^\/]+$//; |
|
if (&Apache::lonnet::allowed('bre',$subdirtoprint) eq 'F') { |
|
$r->print(<<ENDMENUOUT4); |
|
<input type="radio" name="choice" value="Subdirectory print"> All problems from current subdirectory (where this particular problem is)<br /> |
|
ENDMENUOUT4 |
|
} |
|
$r->print(<<ENDMENUOUT5); |
<br /><hr /><br /> |
<br /><hr /><br /> |
<h1>And what page format do you prefer?</h1> |
<h1>And what page format do you prefer?</h1> |
<table> |
<table> |
Line 94 ENDMENUOUT2
|
Line 98 ENDMENUOUT2
|
</td> |
</td> |
<td> </td> |
<td> </td> |
<td rawspan="2"> |
<td rawspan="2"> |
Number of columns: <input type="text" size="2" name="numberofcolumns" value="2"> |
Number of columns: <select name="numberofcolumns"> |
|
<option selected> 1 </option> |
|
<option> 2 </option> |
|
<option> 3 </option> |
|
<option> 4 </option> |
|
<option> 5 </option> |
|
<option> 6 </option> |
|
<option> 7 </option> |
|
<option> 8 </option> |
|
<option> 9 </option> |
|
</select> |
</td> |
</td> |
</tr> |
</tr> |
</table> |
</table> |
Line 103 ENDMENUOUT2
|
Line 117 ENDMENUOUT2
|
</form> |
</form> |
</body> |
</body> |
</html> |
</html> |
ENDMENUOUT3 |
ENDMENUOUT5 |
} |
} |
|
|
|
|
Line 131 ENDPART
|
Line 145 ENDPART
|
#-- single document - problem, page, html, xml |
#-- single document - problem, page, html, xml |
my %moreenv; |
my %moreenv; |
$moreenv{'form.grade_target'}='tex'; |
$moreenv{'form.grade_target'}='tex'; |
|
if ($ENV{'request.role'}=~m/^au\./) {$ENV{'form.url'}=~s/http:\/\/[^\/]+//;} |
$moreenv{'request.filename'}=$ENV{'form.url'}; |
$moreenv{'request.filename'}=$ENV{'form.url'}; |
&Apache::lonnet::appenv(%moreenv); |
&Apache::lonnet::appenv(%moreenv); |
my $texversion=&Apache::lonnet::ssi($ENV{'form.url'}); |
my $texversion=&Apache::lonnet::ssi($ENV{'form.url'}); |
&Apache::lonnet::delenv('form.grade_target'); |
&Apache::lonnet::delenv('form.grade_target'); |
$result .= $texversion; |
$result .= $texversion; |
$result = &additional_cleanup($result); |
$result = &additional_cleanup($result); |
if ($ENV{'form.url'}=~m/\.page\s*$/) {($result,$number_of_columns) = &page_cleanup($result);} |
if ($ENV{'form.url'}=~m/\.page\s*$/) { |
} elsif ($choice eq 'Standard LaTeX output for the primary sequence' or $choice eq 'Standard LaTeX output for whole primary sequence') { |
($result,$number_of_columns) = &page_cleanup($result); |
|
} |
|
} elsif ($choice eq 'Standard LaTeX output for the primary sequence' or |
|
$choice eq 'Standard LaTeX output for whole primary sequence') { |
#-- minimal sequence to which the current document belongs |
#-- minimal sequence to which the current document belongs |
#-- where is the primary sequence containing file? |
#-- where is the primary sequence containing file? |
my $symbolic = &Apache::lonnet::symbread($ENV{'form.url'}); |
my $symbolic = &Apache::lonnet::symbread($ENV{'form.url'}); |
Line 177 ENDPART
|
Line 195 ENDPART
|
} elsif ($choice eq 'Standard LaTeX output for the top level sequence') { |
} elsif ($choice eq 'Standard LaTeX output for the top level sequence') { |
my @master_seq = (); |
my @master_seq = (); |
my @add_file_seq = (); |
my @add_file_seq = (); |
#-- where is the main sequence of the course? |
# where is the main sequence of the course? |
my $main_seq = '/res/'.$ENV{'request.course.uri'}; |
my $main_seq = '/res/'.$ENV{'request.course.uri'}; |
my $file=&Apache::lonnet::filelocation("",$main_seq); |
my $file=&Apache::lonnet::filelocation("",$main_seq); |
my $filecontents=&Apache::lonnet::getfile($file); |
my $filecontents=&Apache::lonnet::getfile($file); |
my @file_seq = &content_map($filecontents); |
my @file_seq = &content_map($filecontents); |
#-- do we have any other sequence inside? |
# do we have any other sequence inside? |
my $i=0; |
# $result.=$#file_seq.' '; |
|
my $i=1; |
while ($i<=$#file_seq) { |
while ($i<=$#file_seq) { |
$_ = $file_seq[$i]; |
# $result.=' '.$file_seq[$i].' '; |
if (/\.sequence$/) { |
$file_seq[$i]=~s/^"//; |
|
$file_seq[$i]=~s/"$//; |
|
if ($file_seq[$i]=~m/\.sequence\s*$/) { |
$file = &Apache::lonnet::filelocation("",$file_seq[$i]); |
$file = &Apache::lonnet::filelocation("",$file_seq[$i]); |
|
# $result.=' location '.$file.' '; |
|
# $result .= 'FFFFFFFFF'.$file.' '; |
$filecontents=&Apache::lonnet::getfile($file); |
$filecontents=&Apache::lonnet::getfile($file); |
@add_file_seq = &content_map($filecontents); |
@add_file_seq = &content_map($filecontents); |
|
|
|
# |
|
# for (my $iu=0;$iu<=$#add_file_seq;$iu++) { |
|
# $result .= ' SDSD '.$add_file_seq[$iu].' FDFD '; |
|
# } |
|
# |
|
|
|
|
splice(@file_seq,$i,1,@add_file_seq); |
splice(@file_seq,$i,1,@add_file_seq); |
@add_file_seq = (); |
@add_file_seq = (); |
$i = -1; |
$i = -1; |
} |
} |
$i++; |
$i++; |
|
last; #do not forget to remove |
} |
} |
@master_seq = @file_seq; |
@master_seq = @file_seq; |
|
|
|
# |
|
# for (my $iu=0;$iu<=$#file_seq;$iu++) { |
|
# $result .= ' SSS '.$file_seq[$iu].' FFF '; |
|
# } |
|
# |
|
|
#-- produce an output string |
#-- produce an output string |
for (my $i=0;$i<=$#master_seq;$i++) { |
for (my $i=0;$i<=$#master_seq;$i++) { |
$_ = $master_seq[$i]; |
$_ = $master_seq[$i]; |
Line 217 ENDPART
|
Line 256 ENDPART
|
my $subdirtoprint = &Apache::lonnet::filelocation("",$ENV{'form.url'}); |
my $subdirtoprint = &Apache::lonnet::filelocation("",$ENV{'form.url'}); |
$subdirtoprint =~ s/\/[^\/]+$//; |
$subdirtoprint =~ s/\/[^\/]+$//; |
my @list_of_files = (); |
my @list_of_files = (); |
my $localdirectory = $subdirtoprint; |
if ($ENV{'request.role'}=~m/^au\./) { |
$localdirectory =~ s/.*(\/res\/)/$1/; |
$subdirtoprint =~ s/^[^~]*~(\w+)\//\/home\/$1\/public_html\//; |
my @content_directory = &Apache::lonnet::dirlist($localdirectory); |
} else { |
|
$subdirtoprint =~ s/.*(\/res\/)/$1/; |
|
} |
|
my @content_directory = (); |
|
if ($ENV{'request.role'}=~m/^au\./) { |
|
@content_directory = &Apache::lonnet::dirlist($subdirtoprint,$ENV{'user.domain'}, $ENV{'user.name'},''); |
|
} else { |
|
@content_directory = &Apache::lonnet::dirlist($subdirtoprint); |
|
} |
for (my $iy=0;$iy<=$#content_directory;$iy++) { |
for (my $iy=0;$iy<=$#content_directory;$iy++) { |
my @tempo_array = split(/&/,$content_directory[$iy]); |
my @tempo_array = split(/&/,$content_directory[$iy]); |
$content_directory[$iy] = $tempo_array[0]; |
if ($tempo_array[0] =~ m/^[^\.]+\.(problem|exam|quiz|assess|survey|form|library)$/) { |
if ($content_directory[$iy] =~ m/^[^\.]+\.problem$/) { |
push(@list_of_files,$tempo_array[0]); |
push @list_of_files,$content_directory[$iy]; |
|
} |
} |
} |
} |
$localdirectory =~ s/\/$//; |
$subdirtoprint =~ s/\/$//; |
for (my $i=0;$i<=$#list_of_files;$i++) { |
for (my $i=0;$i<=$#list_of_files;$i++) { |
my $urlp = $localdirectory.'/'.$list_of_files[$i]; |
my $urlp = $subdirtoprint.'/'.$list_of_files[$i]; |
my %moreenv; |
my %moreenv; |
$moreenv{'form.grade_target'}='tex'; |
$moreenv{'form.grade_target'}='tex'; |
&Apache::lonnet::appenv(%moreenv); |
&Apache::lonnet::appenv(%moreenv); |
|
if ($ENV{'request.role'}=~m/^au\./) { $urlp =~ s/\/home\/([^\/]*)\/public_html/\/~$1/; } |
my $texversion=&Apache::lonnet::ssi($urlp); |
my $texversion=&Apache::lonnet::ssi($urlp); |
&Apache::lonnet::delenv('form.grade_target'); |
&Apache::lonnet::delenv('form.grade_target'); |
$texversion =~ s/(\\begin{document})/$1 {\\tiny\\begin{verbatim}$urlp\\end{verbatim}}/; |
$texversion =~ s/(\\begin{document})/$1 {\\tiny\\begin{verbatim}$urlp\\end{verbatim}}/; |
Line 276 ENDPART
|
Line 323 ENDPART
|
$first_comment = index($result,'<!--',$first_comment); |
$first_comment = index($result,'<!--',$first_comment); |
} |
} |
$result =~ s/^\s+$//gm; #remove empty lines |
$result =~ s/^\s+$//gm; #remove empty lines |
$result =~ s/%/\\%/g; #corrects % |
$result =~ s/\s%/\\%/g; #corrects % |
$result =~ s/(\s)+/$1/g; #removes more than one empty space |
$result =~ s/(\s)+/$1/g; #removes more than one empty space |
$result =~ s/\\\\\s*\\vskip/\\vskip/gm; |
$result =~ s/\\\\\s*\\vskip/\\vskip/gm; |
$result =~ s/ (<|>|) / \$$1\$ /g; #corrects < or > |
# $result =~ s/ (<|>|) / \$$1\$ /g; #corrects < or > |
$result =~ s/\\\\\s*\\noindent\s*(\\\\)+/\\\\\\noindent /g; |
$result =~ s/\\\\\s*\\noindent\s*(\\\\)+/\\\\\\noindent /g; |
$result =~ s/{\\par }\s*\\\\/\\\\/gm; |
$result =~ s/{\\par }\s*\\\\/\\\\/gm; |
$result =~ s/\\\\\s+\[/ \[/g; |
$result =~ s/\\\\\s+\[/ \[/g; |
$result =~ s/θ/\$\\theta\$/g; #converts theta from html into tex |
$result =~ s/θ/\$\\theta\$/g; #converts theta from html into tex |
$result =~ s/\b_+\b/\\makebox\[1 cm\]\[b\]{\\hrulefill}/g; |
$result =~ s/\b__+\b/\\makebox\[1 cm\]\[b\]{\\hrulefill}/g; |
#conversion of html characters to LaTeX equivalents |
#conversion of html characters to LaTeX equivalents |
if ($result =~ m/&(\w+|#\d+);/) { |
if ($result =~ m/&(\w+|#\d+);/) { |
$result = &character_chart($result); |
$result = &character_chart($result); |
} |
} |
|
$result =~ s/(\\end{tabular})\s*\\vskip 0 mm/$1/g; |
|
$result =~ s/(\\begin{enumerate})\s*\\noindent/$1/g; |
#-- writing .tex file in prtspool |
#-- writing .tex file in prtspool |
my $temp_file; |
my $temp_file; |
my $filename = "/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout_".time."_".rand(10000000).".tex"; |
my $filename = "/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout_".time."_".rand(10000000).".tex"; |
Line 306 FINALEND
|
Line 355 FINALEND
|
|
|
sub character_chart { |
sub character_chart { |
my $result = shift; |
my $result = shift; |
$result =~ s/	//g; |
$result =~ s/�?0?7;//g; |
$result =~ s/
//g; |
$result =~ s/�?0?9;//g; |
$result =~ s/
//g; |
$result =~ s/�?10;//g; |
$result =~ s/ / /g; |
$result =~ s/�?13;//g; |
$result =~ s/!/!/g; |
$result =~ s/�?32;/ /g; |
$result =~ s/"/"/g; |
$result =~ s/�?33;/!/g; |
$result =~ s/"/"/g; #" |
$result =~ s/�?34;/"/g; |
$result =~ s/#/\\#/g; |
$result =~ s/"/"/g; |
$result =~ s/$/\\\$/g; |
$result =~ s/�?35;/\\#/g; |
$result =~ s/%/\\%/g; |
# $result =~ s/�?36;/\\\$/g; |
$result =~ s/&/\\&/g; |
$result =~ s/�?37;/\\%/g; |
|
$result =~ s/�?38;/\\&/g; |
$result =~ s/&/\\&/g; |
$result =~ s/&/\\&/g; |
$result =~ s/'/'/g; |
$result =~ s/�?39;/'/g; |
$result =~ s/(/(/g; |
$result =~ s/�?40;/(/g; |
$result =~ s/)/)/g; |
$result =~ s/�?41;/)/g; |
$result =~ s/*/\*/g; |
$result =~ s/�?42;/\*/g; |
$result =~ s/+/\+/g; |
$result =~ s/�?43;/\+/g; |
$result =~ s/,/,/g; |
$result =~ s/�?44;/,/g; |
$result =~ s/-/-/g; |
$result =~ s/�?45;/-/g; |
$result =~ s/./\./g; |
$result =~ s/�?46;/\./g; |
$result =~ s///\//g; |
$result =~ s/�?47;/\//g; |
$result =~ s/0/0/g; |
$result =~ s/�?48;/0/g; |
$result =~ s/1/1/g; |
$result =~ s/�?49;/1/g; |
$result =~ s/2/2/g; |
$result =~ s/�?50;/2/g; |
$result =~ s/3/3/g; |
$result =~ s/�?51;/3/g; |
$result =~ s/4/4/g; |
$result =~ s/�?52;/4/g; |
$result =~ s/5/5/g; |
$result =~ s/�?53;/5/g; |
$result =~ s/6/6/g; |
$result =~ s/�?54;/6/g; |
$result =~ s/7/7/g; |
$result =~ s/�?55;/7/g; |
$result =~ s/8/8/g; |
$result =~ s/�?56;/8/g; |
$result =~ s/9/9/g; |
$result =~ s/�?57;/9/g; |
$result =~ s/:/:/g; |
$result =~ s/�?58;/:/g; |
$result =~ s/;/;/g; |
$result =~ s/�?59;/;/g; |
$result =~ s/</\$<\$/g; |
$result =~ s/�?60;/\$<\$/g; |
$result =~ s/</\$<\$/g; |
$result =~ s/</\$<\$/g; |
$result =~ s/=/\$=\$/g; |
$result =~ s/�?61;/\$=\$/g; |
$result =~ s/>/\$>\$/g; |
$result =~ s/�?62;/\$>\$/g; |
$result =~ s/>/\$>\$/g; |
$result =~ s/>/\$>\$/g; |
$result =~ s/?/?/g; |
$result =~ s/�?63;/?/g; |
# $result =~ s/@//g; |
# $result =~ s/�?64;//g; |
$result =~ s/A/A/g; |
$result =~ s/�?65;/A/g; |
$result =~ s/B/B/g; |
$result =~ s/�?66;/B/g; |
$result =~ s/C/C/g; |
$result =~ s/�?67;/C/g; |
$result =~ s/D/D/g; |
$result =~ s/�?68;/D/g; |
$result =~ s/E/E/g; |
$result =~ s/�?69;/E/g; |
$result =~ s/F/F/g; |
$result =~ s/�?70;/F/g; |
$result =~ s/G/G/g; |
$result =~ s/�?71;/G/g; |
$result =~ s/H/H/g; |
$result =~ s/�?72;/H/g; |
$result =~ s/I/I/g; |
$result =~ s/�?73;/I/g; |
$result =~ s/J/J/g; |
$result =~ s/�?74;/J/g; |
$result =~ s/K/K/g; |
$result =~ s/�?75;/K/g; |
$result =~ s/L/L/g; |
$result =~ s/�?76;/L/g; |
$result =~ s/M/M/g; |
$result =~ s/�?77;/M/g; |
$result =~ s/N/N/g; |
$result =~ s/�?78;/N/g; |
$result =~ s/O/O/g; |
$result =~ s/�?79;/O/g; |
$result =~ s/P/P/g; |
$result =~ s/�?80;/P/g; |
$result =~ s/Q/Q/g; |
$result =~ s/�?81;/Q/g; |
$result =~ s/R/R/g; |
$result =~ s/�?82;/R/g; |
$result =~ s/S/S/g; |
$result =~ s/�?83;/S/g; |
$result =~ s/T/T/g; |
$result =~ s/�?84;/T/g; |
$result =~ s/U/U/g; |
$result =~ s/�?85;/U/g; |
$result =~ s/V/V/g; |
$result =~ s/�?86;/V/g; |
$result =~ s/W/W/g; |
$result =~ s/�?87;/W/g; |
$result =~ s/X/X/g; |
$result =~ s/�?88;/X/g; |
$result =~ s/Y/Y/g; |
$result =~ s/�?89;/Y/g; |
$result =~ s/Z/Z/g; |
$result =~ s/�?90;/Z/g; |
$result =~ s/[/[/g; |
$result =~ s/�?91;/[/g; |
$result =~ s/\/\\/g; |
$result =~ s/�?92;/\\/g; |
$result =~ s/]/]/g; |
$result =~ s/�?93;/]/g; |
# $result =~ s/^//g; |
# $result =~ s/�?94;//g; |
# $result =~ s/_//g; |
# $result =~ s/�?95;//g; |
$result =~ s/`/`/g; |
$result =~ s/�?96;/`/g; |
$result =~ s/a/a/g; |
$result =~ s/�?97;/a/g; |
$result =~ s/b/b/g; |
$result =~ s/�?98;/b/g; |
$result =~ s/c/c/g; |
$result =~ s/�?99;/c/g; |
$result =~ s/d/d/g; |
$result =~ s/d/d/g; |
$result =~ s/e/e/g; |
$result =~ s/e/e/g; |
$result =~ s/f/f/g; |
$result =~ s/f/f/g; |
Line 464 sub character_chart {
|
Line 514 sub character_chart {
|
# $result =~ s/®//g; |
# $result =~ s/®//g; |
# $result =~ s/¯//g; |
# $result =~ s/¯//g; |
# $result =~ s/¯//g; |
# $result =~ s/¯//g; |
$result =~ s/°/\$^\\{\\circ\\}\$/g; |
$result =~ s/°/\$^{\\circ}\$/g; |
$result =~ s/°/\$^\\{\\circ\\}\$/g; |
$result =~ s/°/\$^{\\circ}\$/g; |
$result =~ s/±/\$\\pm\$/g; |
$result =~ s/±/\$\\pm\$/g; |
$result =~ s/±/\$\\pm\$/g; |
$result =~ s/±/\$\\pm\$/g; |
$result =~ s/²/\$^2\$/g; |
$result =~ s/²/\$^2\$/g; |
Line 627 sub character_chart {
|
Line 677 sub character_chart {
|
return $result; |
return $result; |
} |
} |
|
|
|
|
|
#'"` |
|
|
sub additional_cleanup { |
sub additional_cleanup { |
my $result = shift; |
my $result = shift; |
my $first_app = index($result,'\documentclass',0); |
my $first_app = index($result,'\documentclass',0); |
Line 673 sub content_map {
|
Line 726 sub content_map {
|
$_ = $chunk; |
$_ = $chunk; |
m/to=\"(\d+)\"/; |
m/to=\"(\d+)\"/; |
push @number_seq,$1; |
push @number_seq,$1; |
$startlink = index($map_string,'from="'.$1.'"',$startlink); |
$startlink = index($map_string,'from="'.$1.'"',0); |
$startlink = rindex($map_string,'<link ',$startlink); |
$startlink = rindex($map_string,'<link ',$startlink); |
} |
} |
my $stalink = index($map_string,' to="'.$number_seq[0].'"',$startlink); |
my $stalink = index($map_string,' to="'.$number_seq[0].'"',0); |
while ($stalink != -1) { |
while ($stalink != -1) { |
$startlink = rindex($map_string,'<link ',$stalink); |
$startlink = rindex($map_string,'<link ',$stalink); |
$endlink = index($map_string,'</link>',$startlink); |
$endlink = index($map_string,'</link>',$startlink); |