--- loncom/interface/lonprintout.pm 2002/08/09 18:06:46 1.48 +++ loncom/interface/lonprintout.pm 2002/10/17 14:42:58 1.79 @@ -1,7 +1,7 @@ # The LearningOnline Network # Printout # -# $Id: lonprintout.pm,v 1.48 2002/08/09 18:06:46 sakharuk Exp $ +# $Id: lonprintout.pm,v 1.79 2002/10/17 14:42:58 sakharuk Exp $ # # Copyright Michigan State University Board of Trustees # @@ -43,12 +43,19 @@ use strict; use Apache::Constants qw(:common :http); use Apache::lonxml; use Apache::lonnet; +use Apache::loncommon; use Apache::inputtags; +use Apache::grades; use Apache::edit; use Apache::File(); +use Apache::lonnavmaps; use POSIX qw(strftime); +use GDBM_File; +my %hash; +my $LaTeXwidth = 0; + sub headerform { my $r = shift; $r->print(<
-$ENV{'form.postdata'}

-

What do you want to print? Make a choice.


ENDHEADER + if ($ENV{'request.role'}=~m/^cc\./ or $ENV{'request.role'}=~m/^in\./ or $ENV{'request.role'}=~m/^ta\./) { + $r->print(<Path to current document: $ENV{'form.postdata'}

+ENDHEADER1 +} } sub menu_for_output { my $r = shift; + my ($title_for_single_resource,$title_for_sequence,$title_for_main_map) = &details_for_menu; + if ($title_for_single_resource ne '') {$title_for_single_resource = '"'.$title_for_single_resource.'"';} + if ($title_for_sequence ne '') {$title_for_sequence = '"'.$title_for_sequence.'"';} + if ($title_for_main_map ne '') {$title_for_main_map = '"'.$title_for_main_map.'"';} + my $subdir_to_print = $ENV{'form.postdata'}; + $subdir_to_print =~ m/\/([^\/]+)$/; + $subdir_to_print =~ s/$1//; $r->print(<What do you want to print? Make a choice.
- Current document -(you will print what you see on the screen)
+ Current document $title_for_single_resource +(prints what you just saw on the screen)
ENDMENUOUT1 if ((not $ENV{'request.role'}=~m/^au\./) and (not $ENV{'request.role'}=~m/^ca\./)) { - $r->print(< All problems from the primary sequence
- The whole primary sequence (problems plus all html and xml files)
- All problems from the top level sequence
-
+ $r->print(< All problems from $title_for_sequence
+ All problems plus any pages or html/xml files from $title_for_sequence
ENDMENUOUT2 } + if ($ENV{'request.role'}=~m/^cc\./ or $ENV{'request.role'}=~m/^in\./ or $ENV{'request.role'}=~m/^ta\./) { + $r->print(< All problems in this course (warning: this may be time consuming)
+
+ All problems from $title_for_sequence for selected students

+ENDMENUOUT6 + } my $subdirtoprint = &Apache::lonnet::filelocation("",$ENV{'form.url'}); $subdirtoprint =~ s/\/[^\/]+$//; if (&Apache::lonnet::allowed('bre',$subdirtoprint) eq 'F') { $r->print(< All problems from current subdirectory (where this particular problem is)
+ Problems from current subdirectory $subdir_to_print
ENDMENUOUT4 } $r->print(<  Number of columns: + + Paper size (format [width x height]): +
- - - ENDMENUOUT5 } +sub problem_choice_menu { + my $r = shift; + my $subdirtoprint = &Apache::lonnet::filelocation("",$ENV{'form.url'}); + $subdirtoprint =~ s/\/[^\/]+$//; + my @list_of_files = (); + if ($ENV{'request.role'}=~m/^au\./ or $ENV{'request.role'}=~m/^ca\./) { + $subdirtoprint =~ s/^[^~]*~(\w+)\//\/home\/$1\/public_html\//; + } else { + $subdirtoprint =~ s/.*(\/res\/)/$1/; + } + my @content_directory = (); + if ($ENV{'request.role'}=~m/^au\./ or $ENV{'request.role'}=~m/^ca\./) { + @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++) { + my @tempo_array = split(/&/,$content_directory[$iy]); + if ($tempo_array[0] =~ m/^[^\.]+\.(problem|exam|quiz|assess|survey|form|library)$/) { + push(@list_of_files,$tempo_array[0]); + } + } + $subdirtoprint =~ s/\/$//; + for (my $i=0;$i<=$#list_of_files;$i++) { + $list_of_files[$i] = $subdirtoprint.'/'.$list_of_files[$i]; + } + $r->print(< + + + +

Mark problems which you want to print

+ +  + +

+ENDMENUOUT1 + my $i; + foreach my $file (@list_of_files) { + $r->print('
'. + $file); + $i++; + } + $r->print(< + + + +ENDMENUOUT2 +} + + +sub additional_class_menu { + my $r = shift; + $r->print(< + + + +

Select student(s) whose assignment you want to print

+ENDMENUOUT1 + my %courselist=&Apache::lonnet::dump( + 'classlist', + $ENV{'course.'.$ENV{'request.course.id'}.'.domain'}, + $ENV{'course.'.$ENV{'request.course.id'}.'.num'}); + my $now=time; + $r->print(< + function checkall() { + for (i=0; i +  + +  + +

+ENDDISHEADER + my $i = 0; + foreach (sort keys %courselist) { + my ($end,$start)=split(/\:/,$courselist{$_}); + my $active=1; + if (($end) && ($now>$end)) { $active=0; } + if ($active) { + my ($sname,$sdom)=split(/\:/,$_); + my %reply=&Apache::lonnet::get('environment', + ['firstname','middlename','lastname','generation'], + $sdom,$sname); + my $section=&Apache::lonnet::usection + ($sdom,$sname,$ENV{'request.course.id'}); + $r->print( + '
'. + $reply{'firstname'}.' '. + $reply{'middlename'}.' '. + $reply{'lastname'}.' '. + $reply{'generation'}. + ' ('.$_.') '.$section); + $i++; + } + } + $r->print(< + + + + +ENDMENUOUT2 +} + + +sub additional_print_menu { + my $r = shift; + my $what_to_print = ''; + for (my $i=0; $i<$ENV{'form.numberofstudents'};$i++) { + $what_to_print .= ''; + } + for (my $i=0; $i<$ENV{'form.numberofproblems'};$i++) { + $what_to_print .= ''; + } + $r->print(< + + + + + + +Define one column layout parameters:
+Width:
+Height:
+Left margin:
+ + + + + +ENDMENUOUT +} sub output_data { @@ -136,25 +344,34 @@ ENDPART my $choice = $ENV{'form.choice'}; my $layout = $ENV{'form.layout'}; - my $numberofcolumns = $ENV{'form.numberofcolumns'}; + my $numberofcolumns = $ENV{'form.numberofcolumns'}; + my $papersize = $ENV{'form.papersize'}; my $laystyle = 'book'; my $result = ''; - my $number_of_columns = 1; -# my $number_of_columns = $ENV{'form.numberofcolumns'}; + my $number_of_columns = 1; #used only for pages to determine the width of the cell + my $selectionmade = ''; + my ($textwidth,$textheight,$oddoffset,$evenoffset) = &page_format($papersize,$layout,$numberofcolumns); + my $LaTeXwidth; + if ($textwidth=~/(\d+\s*cm)/) { + $LaTeXwidth = $1*10; + } elsif ($textwidth=~/(\d+\s*mm)/) { + $LaTeXwidth = $1; + } if ($choice eq 'Standard LaTeX output for current document') { #-- single document - problem, page, html, xml + $selectionmade = 1; my %moreenv; $moreenv{'form.grade_target'}='tex'; if ($ENV{'request.role'}=~m/^au\./ or $ENV{'request.role'}=~m/^ca\./) { $ENV{'form.url'}=~s/http:\/\/[^\/]+//; } $moreenv{'request.filename'}=$ENV{'form.url'}; + $moreenv{'form.textwidth'}=$LaTeXwidth; &Apache::lonnet::appenv(%moreenv); my $texversion=&Apache::lonnet::ssi($ENV{'form.url'}); - &Apache::lonnet::delenv('form.grade_target'); + &Apache::lonnet::delenv('form.grade_target','form.textwidth','form.counter'); $result .= $texversion; - $result = &additional_cleanup($result); if ($ENV{'form.url'}=~m/\.page\s*$/) { ($result,$number_of_columns) = &page_cleanup($result); } @@ -163,215 +380,179 @@ ENDPART #-- minimal sequence to which the current document belongs #-- where is the primary sequence containing file? my $symbolic = &Apache::lonnet::symbread($ENV{'form.url'}); - $_ = $symbolic; - m/([^_]+)_/; - my $primary_sequence = '/res/'.$1; - #-- open and analyses the primary sequence - my $sequence_file=&Apache::lonnet::filelocation("",$primary_sequence); - my $sequencefilecontents=&Apache::lonnet::getfile($sequence_file); - my @master_seq = &content_map($sequencefilecontents); + my @sequence = split('___',$symbolic); + my $primary_sequence = '/res/'.$sequence[0]; + my @master_seq = &coming_from_hash($primary_sequence,$sequence[0]); #-- produce an output string + my $flag_latex_header_remove = 'NO'; + my $flag_page_in_sequence = 'NO'; for (my $i=0;$i<=$#master_seq;$i++) { - $_ = $master_seq[$i]; - m/\"(.*)\"/; - $_ = $1; - my $urlp = $1; + my ($urlp,$symb) = split /&&/, $master_seq[$i]; if ($choice eq 'Standard LaTeX output for the primary sequence') { - if ($urlp =~ m/\.(problem|exam|quiz|assess|survey|form|library)/) { + #prints only problems + $selectionmade = 2; + if ($urlp =~ m/\.(problem|exam|quiz|assess|survey|form|library)/) { my %moreenv; $moreenv{'form.grade_target'}='tex'; + $moreenv{'form.textwidth'}=$LaTeXwidth; &Apache::lonnet::appenv(%moreenv); - my $texversion=&Apache::lonnet::ssi($urlp); - &Apache::lonnet::delenv('form.grade_target'); + &Apache::lonnet::logthis("Trying to get $urlp with symb $symb"); + my $texversion=&Apache::lonnet::ssi($urlp,('symb'=>$symb)); + &Apache::lonnet::delenv('form.grade_target','form.textwidth'); + if ($flag_latex_header_remove ne 'NO') { + $texversion = &latex_header_footer_remove($texversion); + } else { + $texversion =~ s/\\end{document}//; + } $result .= $texversion; + $flag_latex_header_remove = 'YES'; } - } else { + } elsif ($urlp =~ /\S+/) { + #prints problems, pages and any html/xml files + $selectionmade = 3; my %moreenv; $moreenv{'form.grade_target'}='tex'; &Apache::lonnet::appenv(%moreenv); - my $texversion=&Apache::lonnet::ssi($urlp); + my $texversion=&Apache::lonnet::ssi($urlp,('symb'=>$symb)); &Apache::lonnet::delenv('form.grade_target'); - $result .= $texversion; + if ($urlp =~ m/\.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;} + $texversion =~ s/\\end{document}\d*/\\end{document}/; + $flag_page_in_sequence = 'YES'; + } + if ($flag_latex_header_remove ne 'NO') { + $texversion = &latex_header_footer_remove($texversion); + } else { + $texversion =~ s/\\end{document}//; + } + $result .= $texversion; + $flag_latex_header_remove = 'YES'; } - } - $result = &additional_cleanup($result); + } + &Apache::lonnet::delenv('form.counter'); + if ($flag_page_in_sequence eq 'YES') {$result =~ s/\\usepackage{calc}/\\usepackage{calc}\\usepackage{longtable}/;} + $result .= '\end{document}'; } elsif ($choice eq 'Standard LaTeX output for the top level sequence') { - my @master_seq = (); - my @add_file_seq = (); # where is the main sequence of the course? + $selectionmade = 4; my $main_seq = '/res/'.$ENV{'request.course.uri'}; - my $file=&Apache::lonnet::filelocation("",$main_seq); - my $filecontents=&Apache::lonnet::getfile($file); - my @file_seq = &content_map($filecontents); - for (my $iu=0;$iu<=$#file_seq;$iu++) { - $file_seq[$iu]=~s/^"//; - $file_seq[$iu]=~s/"$//; - $file_seq[$iu]=&Apache::lonnet::filelocation("",$file_seq[$iu]); -#remove $result .= ' SSS '.$file_seq[$iu].' FFF '; - } - my $i=0; - while ($i<=$#file_seq) { - unless ($file_seq[$i]=~m/\.(problem|page)/) { - if ($file_seq[$i]=~m/\.sequence/) { - my $filecontents=&Apache::lonnet::getfile($file_seq[$i]); - my @newfile_seq = &content_map($filecontents); - $result .=' START '.$i.' LOOK '.$filecontents.' FINISH '; -# splice @file_seq,$1,1,@newfile_seq; -# $i=-1; + my @file_seq = &coming_from_hash_whole($main_seq); + my $flag_latex_header_remove = 'NO'; + #-- produce an output string + for (my $i=0;$i<=$#file_seq;$i++) { + my ($urlp,$symb) = split /&&/, $file_seq[$i]; + $urlp=~s/\/home\/httpd\/html//; + if ($urlp=~m/\.(problem|exam|quiz|assess|survey|form|library)/) { + my %moreenv; + $moreenv{'form.grade_target'}='tex'; + $moreenv{'form.textwidth'}=$LaTeXwidth; + &Apache::lonnet::appenv(%moreenv); + my $texversion=&Apache::lonnet::ssi($urlp,('symb'=>$symb)); + &Apache::lonnet::delenv('form.grade_target','form.textwidth'); + if ($flag_latex_header_remove ne 'NO') { + $texversion = &latex_header_footer_remove($texversion); } else { - splice @file_seq,$1,1; + $texversion =~ s/\\end{document}//; } + $result .= $texversion; + $flag_latex_header_remove = 'YES'; + } + } + $result .= '\end{document}'; + } elsif ($choice eq 'All class print') { + #-- prints assignments for whole class or for selected students + $selectionmade = 5; + my @students = (); + for (my $i=0; $i<$ENV{'form.numberofstudents'};$i++) { + if ($ENV{'form.whomtoprint'.$i}=~/:/) { + push @students,$ENV{'form.whomtoprint'.$i}; } - - - - - $i++; } - for (my $iu=0;$iu<=$#file_seq;$iu++) { - $result .= ' SSS '.$file_seq[$iu].' FFF '; + #where is the primary sequence containing current resource (the same for all students)? + my $symbolic = &Apache::lonnet::symbread($ENV{'form.url'}); + my @sequence = split('___',$symbolic); + my $primary_sequence = '/res/'.$sequence[0]; + my @master_seq = &coming_from_hash($primary_sequence,$sequence[0]); + #loop over students + my $flag_latex_header_remove = 'NO'; + foreach my $person (@students) { + my $current_output = ''; + my ($usersection,$username,$userdomain) = split /:/,$person; + my $fullname = &Apache::grades::get_fullname($username,$userdomain); + #goes through all resources, checks if they are available for current student, and produces output + foreach my $curresline (@master_seq) { + my ($curres,$symb) = split /&&/, $curresline; + if ($curres=~ m/\.(problem|exam|quiz|assess|survey|form|library)/) { + my ($map,$id,$res_url) = split(/___/,$symb); + if (&Apache::lonnet::allowed('bre',$res_url)) { + my $rendered = &Apache::loncommon::get_student_view($symb,$username,$userdomain, + $ENV{'request.course.id'},'tex'); + if ($flag_latex_header_remove eq 'YES') { + $rendered = &latex_header_footer_remove($rendered); + } else { + $rendered =~ s/\\end{document}//; + } + $current_output .= $rendered; + } + $flag_latex_header_remove = 'YES'; + } + } + if ($current_output=~/\\documentclass/) { + $current_output =~ s/\\begin{document}/\\begin{document}\\noindent\\parbox{\\minipagewidth}{\\noindent\\fbox{\\textbf{$fullname}}\\hskip 1\.4in } \\vskip 5 mm /; + } else { + $current_output = '\\vskip 3mm\noindent\parbox{\minipagewidth}{\noindent\fbox{\textbf{'.$fullname.'}}\hskip 1.4in } \vskip 5 mm '.$current_output; + } + $result .= $current_output; } - - - # do we have any other sequence inside? -# $result.=$#file_seq.' '; -## my $i=1; -## while ($i<=$#file_seq) { -# $result.=' '.$file_seq[$i].' '; -## $file_seq[$i]=~s/^"//; -## $file_seq[$i]=~s/"$//; -## if ($file_seq[$i]=~m/\.sequence\s*$/) { -## $file = &Apache::lonnet::filelocation("",$file_seq[$i]); -# $result.=' location '.$file.' '; -# $result .= 'FFFFFFFFF'.$file.' '; -## $filecontents=&Apache::lonnet::getfile($file); -## @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); -## @add_file_seq = (); -## $i = -1; -## } -## $i++; -## last; #do not forget to remove -## } -## @master_seq = @file_seq; - -# -# for (my $iu=0;$iu<=$#file_seq;$iu++) { -# $result .= ' SSS '.$file_seq[$iu].' FFF '; -# } -# - -#-- produce an output string -### for (my $i=0;$i<=$#master_seq;$i++) { -### $_ = $master_seq[$i]; -### m/\"(.*)\"/; -### $_ = $1; -### my $urlp = $1; -### if (/\.(problem|exam|quiz|assess|survey|form|library)/) { -### my %moreenv; -### $moreenv{'form.grade_target'}='tex'; -### &Apache::lonnet::appenv(%moreenv); -### my $texversion=&Apache::lonnet::ssi($urlp); -### &Apache::lonnet::delenv('form.grade_target'); -### $result .= $texversion; -### } -### } -### $result = &additional_cleanup($result); + $result .= '\end{document}'; } elsif ($choice eq 'Subdirectory print') { - my $subdirtoprint = &Apache::lonnet::filelocation("",$ENV{'form.url'}); - $subdirtoprint =~ s/\/[^\/]+$//; - my @list_of_files = (); - if ($ENV{'request.role'}=~m/^au\./ or $ENV{'request.role'}=~m/^ca\./) { - $subdirtoprint =~ s/^[^~]*~(\w+)\//\/home\/$1\/public_html\//; - } else { - $subdirtoprint =~ s/.*(\/res\/)/$1/; - } - my @content_directory = (); - if ($ENV{'request.role'}=~m/^au\./ or $ENV{'request.role'}=~m/^ca\./) { - @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++) { - my @tempo_array = split(/&/,$content_directory[$iy]); - if ($tempo_array[0] =~ m/^[^\.]+\.(problem|exam|quiz|assess|survey|form|library)$/) { - push(@list_of_files,$tempo_array[0]); + #prints selected problems from the subdirectory + $selectionmade = 6; + my @list_of_files = (); + for (my $i=0; $i<$ENV{'form.numberofproblems'};$i++) { + if ($ENV{'form.whattoprint'.$i}=~/^\//) { + push @list_of_files,$ENV{'form.whattoprint'.$i}; } - } - $subdirtoprint =~ s/\/$//; + } + my $flag_latex_header_remove = 'NO'; for (my $i=0;$i<=$#list_of_files;$i++) { - my $urlp = $subdirtoprint.'/'.$list_of_files[$i]; - my %moreenv; - $moreenv{'form.grade_target'}='tex'; - &Apache::lonnet::appenv(%moreenv); - if ($ENV{'request.role'}=~m/^au\./ or $ENV{'request.role'}=~m/^ca\./) { - $urlp =~ s/\/home\/([^\/]*)\/public_html/\/~$1/; - } - my $texversion=&Apache::lonnet::ssi($urlp); - &Apache::lonnet::delenv('form.grade_target'); - $texversion =~ s/(\\begin{document})/$1 {\\tiny\\begin{verbatim}$urlp\\end{verbatim}}/; - $result .= $texversion; + my $urlp = $list_of_files[$i]; + if ($urlp=~/\//) { + my %moreenv; + $moreenv{'form.grade_target'}='tex'; + $moreenv{'form.textwidth'}=$LaTeXwidth; + &Apache::lonnet::appenv(%moreenv); + if ($ENV{'request.role'}=~m/^au\./ or $ENV{'request.role'}=~m/^ca\./) { + $urlp =~ s/\/home\/([^\/]*)\/public_html/\/~$1/; + } + my $texversion=&Apache::lonnet::ssi($urlp); + &Apache::lonnet::delenv('form.grade_target','form.textwidth'); + $texversion =~ s/(\\begin{document})/$1 {\\tiny\\begin{verbatim}$urlp\\end{verbatim}}/; + if ($flag_latex_header_remove ne 'NO') { + $texversion = &latex_header_footer_remove($texversion); + } else { + $texversion =~ s/\\end{document}//; + } + $result .= $texversion; + } + $flag_latex_header_remove = 'YES'; } - $result = &additional_cleanup($result); - - - - - - + $result .= '\end{document}'; } -#-- corrections for the different page formats - if ($layout eq 'CBI' and $numberofcolumns eq '1') { - } elsif ($layout eq 'CBI' and $numberofcolumns eq '2') { - $result =~ s/\\begin{document}/\\setlength{\\oddsidemargin}{-40pt}\\setlength{\\evensidemargin}{-60pt}\\setlength{\\topmargin}{200pt}\\setlength{\\textwidth}{4\.4in}\\setlength{\\textheight}{6\.8in}\\setlength{\\parindent}{20pt}\\setlength{\\marginparwidth}{90pt}\\setlength{\\textfloatsep}{8pt plus 2\.0pt minus 4\.0pt} \\begin{document}/; +#-------------------------------------------------------- corrections for the different page formats + $result = &page_format_transformation($papersize,$layout,$numberofcolumns,$choice,$result); + if ($layout eq 'CBI') { $laystyle = 'album'; - } elsif ($layout eq 'CAPA') { - my $courseidinfo = $ENV{'request.role'}; - $_ = $courseidinfo; - m/.*\/(.*)/; - $courseidinfo = $ENV{'course.physnet_'.$1.'.description'}; -# $result =~ s/\\documentclass\[letterpaper\]{article}/\\documentclass\[twocolumn\]{article}/; - $result =~ s/\\documentclass\[letterpaper\]{article}/\\documentclass{article}/; - $result =~ s/\\begin{document}/\\textheight 25\.9cm\\oddsidemargin = -0\.57in\\evensidemargin = -0\.57in\\textwidth= 9cm\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/$number_of_columns-0\.2cm}\\renewcommand{\\ref}{\\keephidden\}\\begin{document}\\voffset=-1\.8cm\\setcounter{page}{1}\\parbox{\\minipagewidth}{\\noindent\\fbox{\\textbf{$ENV{'environment.firstname'} $ENV{'environment.lastname'}}}\\hskip 1\.4in $courseidinfo} \\vskip 5 mm /; - $result =~ s/\\includegraphics{/\\includegraphics\[width=9\.0 cm\]{/g; -# $result =~ s/\\includegraphics{/\\includegraphics\[width=\\textwidth\]{/g; -# $result =~ s/(\\end{document})/\\newline\\noindent\\makebox\[9.0cm\]\[b\]{\\hrulefill}\\newline\\noindent\\tiny Dept\. of Physics and Astronomy, MSU\\makebox\[1.5cm\]\[b\]{\\hfill}LON-CAPA\\copyright MSU GNU\/GPL $1/; - $result =~ s/(\\end{document})/\\newline\\noindent\\makebox\[\\textwidth\/$number_of_columns\]\[b\]{\\hrulefill}\\newline\\noindent\\tiny Dept\. of Physics and Astronomy, MSU\\makebox\[1.5cm\]\[b\]{\\hfill}LON-CAPA\\copyright MSU GNU\/GPL $1/; -# $result =~ s/(\\end{longtable}\s*)(\\newline\\noindent\\makebox\[9\.0cm\]\[b\]{\\hrulefill})/$2$1/g; - $result =~ s/(\\end{longtable}\s*)(\\newline\\noindent\\makebox\[\\textwidth\/$number_of_columns\]\[b\]{\\hrulefill})/$2$1/g; - $result =~ s/(\\end{longtable}\s*)\\newline/$1/g; - $result =~ s/\$number_of_columns/$number_of_columns/g; } -#-- LaTeX corrections - my $first_comment = index($result,'',$first_comment); - substr($result,$first_comment,$end_comment-$first_comment+3) = ''; - $first_comment = index($result,'',$first_comment); + substr($result,$first_comment,$end_comment-$first_comment+3) = ''; + $first_comment = index($result,'