Diff for /loncom/xml/londefdef.pm between versions 1.72 and 1.79

version 1.72, 2002/07/11 20:05:44 version 1.79, 2002/07/30 14:10:51
Line 74  sub start_m { Line 74  sub start_m {
   my $currentstring = '';    my $currentstring = '';
   if ($target eq 'web') {    if ($target eq 'web') {
     $Apache::lonxml::prevent_entity_encode++;      $Apache::lonxml::prevent_entity_encode++;
     my $inside = &Apache::lonxml::get_all_text("/m",$$parser[-1]);      my $inside = &Apache::lonxml::get_all_text_unbalanced("/m",$parser);
     $inside ='\\documentstyle{article}'.$inside;      $inside ='\\documentstyle{article}'.$inside;
     &Apache::lonxml::debug("M is starting with:$inside:");      &Apache::lonxml::debug("M is starting with:$inside:");
     my $eval=&Apache::lonxml::get_param('eval',$parstack,$safeeval);      my $eval=&Apache::lonxml::get_param('eval',$parstack,$safeeval);
Line 90  sub start_m { Line 90  sub start_m {
     }      }
     #&Apache::lonxml::debug("M is ends with:$currentstring:");      #&Apache::lonxml::debug("M is ends with:$currentstring:");
   } elsif ($target eq 'tex') {    } elsif ($target eq 'tex') {
     $currentstring = "";      $currentstring = &Apache::lonxml::get_all_text_unbalanced("/m",$parser);
       if ($currentstring=~/\s*\\\\\s*/) {$currentstring = ' \vskip 0 mm ';}
     } else {
       my $inside = &Apache::lonxml::get_all_text_unbalanced("/m",$parser);
   }    }
   return $currentstring;    return $currentstring;
 }  }
Line 120  sub end_m { Line 123  sub end_m {
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
       @Apache::londefdef::table = ();        @Apache::londefdef::table = ();
       $currentstring .= '\documentclass[letterpaper]{article}        $currentstring .= '\documentclass[letterpaper]{article}
                                  \newcommand{\keephidden}[1]{}                                              \newcommand{\keephidden}[1]{}
                                    \renewcommand{\deg}{$^{\circ}$}
                                  \usepackage[dvips]{graphicx}                                   \usepackage[dvips]{graphicx}
                                  \usepackage{epsfig}\usepackage{calc}';                                   \usepackage{epsfig}\usepackage{calc}';
     }      }
Line 835  EDITBUTTON Line 839  EDITBUTTON
  }   }
 #-- <br> tag  #-- <br> tag
         sub start_br {          sub start_br {
     my ($target,$token) = @_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
             my $currentstring = '';              my $currentstring = '';
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[4];         $currentstring .= $token->[4];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring .= '\vskip 0 mm';   if ($$tagstack[-2] ne 'sub' && $$tagstack[-2] ne 'sup') {
       $currentstring .= '\vskip 0 mm';
    }
     } elsif ($target eq 'latexsource') {      } elsif ($target eq 'latexsource') {
  $currentstring .= '\\';   $currentstring .= '\\';
     }       } 
Line 949  EDITBUTTON Line 955  EDITBUTTON
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[4];         $currentstring .= $token->[4];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring .= "{\\underline ";   $currentstring .= '\underline{';
     }       } 
            return $currentstring;             return $currentstring;
  }   }
Line 959  EDITBUTTON Line 965  EDITBUTTON
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[2];         $currentstring .= $token->[2];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
         $currentstring .= " }";          $currentstring .= '}';
             }              }
            return $currentstring;             return $currentstring;
  }   }
Line 970  EDITBUTTON Line 976  EDITBUTTON
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[4];         $currentstring .= $token->[4];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring .= "{\\underline ";   $currentstring .= '\underline{';
     }       } 
            return $currentstring;             return $currentstring;
  }   }
Line 980  EDITBUTTON Line 986  EDITBUTTON
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[2];         $currentstring .= $token->[2];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
         $currentstring .= " }";          $currentstring .= '}';
             }              }
            return $currentstring;             return $currentstring;
  }   }
Line 1033  EDITBUTTON Line 1039  EDITBUTTON
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[4];         $currentstring .= $token->[4];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring .= "\\hline ";   $currentstring .= '\vskip 0 mm \noindent\makebox[\textwidth - 8 mm][b]{\hrulefill}';
     }       } 
            return $currentstring;             return $currentstring;
  }   }
Line 1110  EDITBUTTON Line 1116  EDITBUTTON
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[4];         $currentstring .= $token->[4];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring .= "{\\underline ";   $currentstring .= '\underline{';
     }       } 
            return $currentstring;             return $currentstring;
  }   }
Line 1120  EDITBUTTON Line 1126  EDITBUTTON
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[2];         $currentstring .= $token->[2];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
         $currentstring .= " }";          $currentstring .= '}';
             }              }
            return $currentstring;             return $currentstring;
  }   }
Line 1277  EDITBUTTON Line 1283  EDITBUTTON
  my $aa = {};   my $aa = {};
  push @Apache::londefdef::table, $aa;    push @Apache::londefdef::table, $aa; 
  $Apache::londefdef::table[-1]{'row_number'} = -1;   $Apache::londefdef::table[-1]{'row_number'} = -1;
  $Apache::londefdef::table[-1]{'output'} = '\begin{tabular} ';   $Apache::londefdef::table[-1]{'output'} = ' \noindent \begin{tabular} ';
  my $border = &Apache::lonxml::get_param('border',$parstack,$safeeval);   my $border = &Apache::lonxml::get_param('border',$parstack,$safeeval);
  unless (defined $border) { $border = 0; }   unless (defined $border) { $border = 0; }
  if ($border) {    if ($border) { 
Line 1293  EDITBUTTON Line 1299  EDITBUTTON
    return $currentstring;     return $currentstring;
  }   }
         sub end_table {          sub end_table {
     my ($target,$token) = @_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
             my $currentstring = '';              my $currentstring = '';
             if ($target eq 'web') {              if ($target eq 'web') {
               $currentstring = $token->[2];                     $currentstring = $token->[2];     
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  my $inmemory = '';   my $inmemory = '';
  my $output = '';   my $output = '';
                   #construct header of the table
  my $header_of_table = '{'.$Apache::londefdef::table[-1]{'vvinc'};   my $header_of_table = '{'.$Apache::londefdef::table[-1]{'vvinc'};
  my $in;   my $in;
  for ($in=0;$in<=$Apache::londefdef::table[-1]{'counter_columns'};$in++) {   for ($in=0;$in<=$Apache::londefdef::table[-1]{'counter_columns'};$in++) {
     $header_of_table .= $Apache::londefdef::table[-1]{'columns'}[$in].$Apache::londefdef::table[-1]{'vvinc'};      $header_of_table .= $Apache::londefdef::table[-1]{'columns'}[$in].$Apache::londefdef::table[-1]{'vvinc'};
  }   }
  $header_of_table .= '}';   $header_of_table .= '}';
                   #fill the table
  for ($in=0;$in<=$Apache::londefdef::table[-1]{'row_number'};$in++) {   for ($in=0;$in<=$Apache::londefdef::table[-1]{'row_number'};$in++) {
     $output .=  $Apache::londefdef::table[-1]{'rowdata'}[$in];      $output .=  $Apache::londefdef::table[-1]{'rowdata'}[$in];
     chop $output;      chop $output;
     $output .= ' \\\\ ';      $output .= ' \\\\ ';
  }   }
                 my @length = split(/,/,$Apache::londefdef::table[-1]{'length'});                  #define the length of the table cells
                 my $how_many_columns = $#length+1;   my @lengthforoutput = split(/,/,$Apache::londefdef::table[-1]{'lengthrow'}[0]);
                 my $parboxlength = '(\textwidth';   my $how_many_columns = $#lengthforoutput + 1;
                 for (my $io=0; $io<=$#length;$io++) {   my $filled_columns = 0;
     if ($length[$io] ne '') {   foreach my $tempo_length (@{ $Apache::londefdef::table[-1]{'lengthrow'} }) {
  $parboxlength .= ' - '.$length[$io].' ';      my @length = split(/,/,$tempo_length);
       for (my $ico=0;$ico<$how_many_columns;$ico++) {
    if (not $lengthforoutput[$ico]=~m/\s*0\s*/) {$filled_columns++;}
     }      }
  }   }
  $parboxlength .= ')/'.$how_many_columns.' - 7 mm';   my $temp_file;
    my $filename = "/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout.tbl";
    if (-e $filename) {
       $temp_file = Apache::File->new($filename); 
       my @tbl_file_content = <$temp_file>;
       my ($one,$two) = split(/,/,$tbl_file_content[0]);
    $how_many_columns+=$one-1;
    $filled_columns+=$two;
    } else {
       $temp_file = Apache::File->new('>>'.$filename); 
    }
    print $temp_file "$how_many_columns,$filled_columns\n";
    foreach my $tempo_length (@{ $Apache::londefdef::table[-1]{'lengthrow'} }) {
       my @length = split(/,/,$tempo_length);
       for (my $ico=0;$ico<=$#lengthforoutput;$ico++) {
    $lengthforoutput[$ico] =~ m/(\d*\.?\d*)\s*(\w+)/;
    my $old_value = $1;
    my $old_unit = $2; 
    if ($old_unit eq 'cm') { 
       $old_value = $old_value * 10;
    } elsif ($old_unit eq 'in') { 
       $old_value = $old_value * 25.4;
    } elsif ($old_unit eq 'pt') {
       $old_value = $old_value * 25.4/72.27;
    } elsif ($old_unit eq 'pc') {
       $old_value = $old_value * 25.4/6.022;
    }
    $old_unit = 'mm';
     $length[$ico] =~ m/(\d*\.?\d*)\s*(\w+)/;
    my $new_value = $1;
    my $new_unit = $2;
    if ($new_unit eq 'cm') { 
       $new_value = $new_value * 10;
    } elsif ($old_unit eq 'in') { 
       $new_value = $new_value * 25.4;
    } elsif ($old_unit eq 'pt') {
       $new_value = $new_value * 25.4/72.27;
    } elsif ($old_unit eq 'pc') {
       $new_value = $new_value * 25.4/6.022;
    }
    $new_unit = 'mm';
    if ($old_value < $new_value) {
       $lengthforoutput[$ico] = $new_value.' mm';
    } else {
       $lengthforoutput[$ico] = $old_value.' mm';
    }  
       }
    }
                   my $parboxlength = '(\textwidth';
                   for (my $io=0; $io<=$#lengthforoutput;$io++) {
       $parboxlength .= ' - '.$lengthforoutput[$io].' ';
    }
    $parboxlength .= ')/($GLOBALnumberOFcolumns+1) - 1 mm';
    $output =~ s/\\parbox{}{}/\\parbox{1 mm}{}/g;
    $output =~ s/\\parbox{}{(\\textbf{\w?\.?})}/\\parbox{5 mm}{$1}/g; #for stupid tables with empty columns
  $output =~ s/\\parbox{}/\\parbox{$parboxlength}/g;   $output =~ s/\\parbox{}/\\parbox{$parboxlength}/g;
                   my ($howmanyatall,$howmanyfilled) = (0,0);
        
    my @tagar = @$tagstack;
    my $signature = 1;
    for (my $ico=0;$ico<$#tagar;$ico++) {
        if ($tagar[$ico] eq 'table') { $signature = 0; }
    }
    if ($signature) {
       my $totalnumber = $how_many_columns-$filled_columns-1;
       $output =~ s/\$GLOBALnumberOFcolumns/$totalnumber/g;
    }
  $Apache::londefdef::table[-1]{'output'} .= $header_of_table.$output.$Apache::londefdef::table[-1]{'hinc'}.'\end{tabular}\vskip 0 mm ';   $Apache::londefdef::table[-1]{'output'} .= $header_of_table.$output.$Apache::londefdef::table[-1]{'hinc'}.'\end{tabular}\vskip 0 mm ';
  if ($#Apache::londefdef::table > 0) {   if ($#Apache::londefdef::table > 0) {
     $inmemory = $Apache::londefdef::table[-1]{'output'};      $inmemory = $Apache::londefdef::table[-1]{'output'};
Line 1350  EDITBUTTON Line 1425  EDITBUTTON
  }   }
  push ( @{ $Apache::londefdef::table[-1]{'rowdata'} }, $Apache::londefdef::table[-1]{'hinc'});   push ( @{ $Apache::londefdef::table[-1]{'rowdata'} }, $Apache::londefdef::table[-1]{'hinc'});
  $Apache::londefdef::table[-1]{'counter_columns'} = -1;   $Apache::londefdef::table[-1]{'counter_columns'} = -1;
  $Apache::londefdef::table[-1]{'length'} = ''; #just added   $Apache::londefdef::table[-1]{'length'} = ''; 
   
     }       } 
    return $currentstring;     return $currentstring;
  }           }        
Line 1361  EDITBUTTON Line 1435  EDITBUTTON
             if ($target eq 'web') {              if ($target eq 'web') {
  $currentstring = $token->[2];        $currentstring = $token->[2];     
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
 # $currentstring .= ' START ROW '. $Apache::londefdef::table[-1]{'rowdata'}[$Apache::londefdef::table[-1]{'row_number'}].' END ROW ';  # $currentstring .= ' START ROW '. $Apache::londefdef::table[-1]{'rowdata'}[$Apache::londefdef::table[-1]{'row_number'}].' END ROW ';
    push @{ $Apache::londefdef::table[-1]{'lengthrow'} },$Apache::londefdef::table[-1]{'length'};
   
     }      }
    return $currentstring;     return $currentstring;
  }   }
Line 1391  EDITBUTTON Line 1467  EDITBUTTON
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  my $current_row = $Apache::londefdef::table[-1]{'row_number'};   my $current_row = $Apache::londefdef::table[-1]{'row_number'};
  my $data=&Apache::lonxml::endredirection();   my $data=&Apache::lonxml::endredirection();
  if ($data=~m/width\s*=\s*(\d+\.*\d*\s*(mm|cm))/) {                 #just added   if ($data=~m/width\s*=\s*(\d+\.*\d*\s*(mm|cm))/) {                 
                     $Apache::londefdef::table[-1]{'length'} .= $1.',';             #just added                      $Apache::londefdef::table[-1]{'length'} .= $1.',';        
  }                                                                  #just added   } else {
       $Apache::londefdef::table[-1]{'length'} .= '0 mm,'; 
                   }                                        
  @{ $Apache::londefdef::table[-1]{'rowdata'} }[$current_row] .= '\parbox{'.$1.'}{'.$data.'} '.$Apache::londefdef::table[-1]{'vinc'};   @{ $Apache::londefdef::table[-1]{'rowdata'} }[$current_row] .= '\parbox{'.$1.'}{'.$data.'} '.$Apache::londefdef::table[-1]{'vinc'};
     }      }
    return $currentstring;     return $currentstring;
Line 1424  EDITBUTTON Line 1502  EDITBUTTON
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  my $current_row = $Apache::londefdef::table[-1]{'row_number'};   my $current_row = $Apache::londefdef::table[-1]{'row_number'};
  my $data=&Apache::lonxml::endredirection();   my $data=&Apache::lonxml::endredirection();
  if ($data=~m/width\s*=\s*(\d+\.*\d*\s*(mm|cm))/) {                 #just added   if ($data=~m/width\s*=\s*(\d+\.*\d*\s*(mm|cm))/) {                 
                     $Apache::londefdef::table[-1]{'length'} .= $1.',';             #just added                      $Apache::londefdef::table[-1]{'length'} .= $1.',';             
  }                                                                  #just added   } else {
       $Apache::londefdef::table[-1]{'length'} .= '0 mm,'; 
                   }                                                           
  @{ $Apache::londefdef::table[-1]{'rowdata'} }[$current_row] .= '\parbox{'.$1.'}{\textbf{'.$data.'}} '.$Apache::londefdef::table[-1]{'vinc'};   @{ $Apache::londefdef::table[-1]{'rowdata'} }[$current_row] .= '\parbox{'.$1.'}{\textbf{'.$data.'}} '.$Apache::londefdef::table[-1]{'vinc'};
     }      }
    return $currentstring;     return $currentstring;

Removed from v.1.72  
changed lines
  Added in v.1.79


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>