Diff for /loncom/xml/londefdef.pm between versions 1.125 and 1.131

version 1.125, 2003/04/11 18:25:03 version 1.131, 2003/05/07 16:59:01
Line 1182  sub end_small { Line 1182  sub end_small {
   
 #-- <basefont> tag  #-- <basefont> tag
 sub start_basefont {  sub start_basefont {
     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') {
    my $basesize=&Apache::lonxml::get_param('TeXsize',$parstack,$safeeval);
    if (defined $basesize) {
       $currentstring = '{\\'.$basesize.' ';
    }
       }
     return $currentstring;      return $currentstring;
 }  }
   
 sub end_basefont {  sub end_basefont {
     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') {
    my $basesize=&Apache::lonxml::get_param('TeXsize',$parstack,$safeeval);
    if (defined $basesize) {
       $currentstring = '}';
    }
       }
     return $currentstring;      return $currentstring;
 }  }
   
Line 1207  sub start_font { Line 1217  sub start_font {
  my $face=&Apache::lonxml::get_param('face',$parstack,$safeeval);   my $face=&Apache::lonxml::get_param('face',$parstack,$safeeval);
  if ($face=~/symbol/i) {$Apache::lonxml::prevent_entity_encode++;}   if ($face=~/symbol/i) {$Apache::lonxml::prevent_entity_encode++;}
  $currentstring = $token->[4];        $currentstring = $token->[4];     
     }       }  elsif ($target eq 'tex') {
    my $fontsize=&Apache::lonxml::get_param('TeXsize',$parstack,$safeeval);
    if (defined $fontsize) {
       $currentstring = '{\\'.$fontsize.' ';
    }
       }
     return $currentstring;      return $currentstring;
 }  }
   
Line 1218  sub end_font { Line 1233  sub end_font {
  my $face=&Apache::lonxml::get_param('face',$parstack,$safeeval);   my $face=&Apache::lonxml::get_param('face',$parstack,$safeeval);
  if ($face=~/symbol/i) {$Apache::lonxml::prevent_entity_encode--;}   if ($face=~/symbol/i) {$Apache::lonxml::prevent_entity_encode--;}
  $currentstring = $token->[2];       $currentstring = $token->[2];    
     }       }  elsif ($target eq 'tex') {
    my $fontsize=&Apache::lonxml::get_param('TeXsize',$parstack,$safeeval);
    if (defined $fontsize) {
       $currentstring = '}';
    }
       }
     return $currentstring;      return $currentstring;
 }  }
     
Line 1676  sub end_dd { Line 1696  sub end_dd {
 #-- <table> tag  #-- <table> tag
 sub start_table {  sub start_table {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
       my $textwidth;
       if (not defined @Apache::londefdef::table) {
    $textwidth=&recalc($ENV{'form.textwidth'});
    $textwidth=~/(\d+)/;
    $textwidth=$1;
       } else {
    $textwidth=&Apache::lonxml::get_param('TeXwidth',$parstack,$safeeval,undef,0);
       }
     my $currentstring = '';      my $currentstring = '';
     if ($target eq 'web') {      if ($target eq 'web') {
  $currentstring = $token->[4];        $currentstring = $token->[4];     
Line 1683  sub start_table { Line 1711  sub start_table {
  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'} = ' \noindent \begin{tabular} ';          #table's width
    my $TeXwidth = &Apache::lonxml::get_param('TeXwidth',$parstack,$safeeval,undef,0);
    if (not defined $TeXwidth) {
       my $htmlwidth = &Apache::lonxml::get_param('width',$parstack,$safeeval,undef,1);
       if ($htmlwidth=~/%/) {
    $htmlwidth=~/(\d+)/;
    my $value=$1*$textwidth/100;
    $Apache::londefdef::table[-1]{'width'}=$value;
       } else {
    $Apache::londefdef::table[-1]{'width'}=$textwidth;
       }
    } elsif ($TeXwidth=~/%/) {
       $TeXwidth=~/(\d+)/;
       my $value=$1*$textwidth/100;
               $Apache::londefdef::table[-1]{'width'}=$value;
    } else {
       $Apache::londefdef::table[-1]{'width'}=$textwidth;
    }        
           #table's border
  my $border = &Apache::lonxml::get_param('border',$parstack,$safeeval,undef,1);    my $border = &Apache::lonxml::get_param('border',$parstack,$safeeval,undef,1); 
  unless (defined $border) { $border = 0; }   unless (defined $border) { $border = 0; }
  if ($border) {    if ($border) { 
Line 1695  sub start_table { Line 1741  sub start_table {
     $Apache::londefdef::table[-1]{'vinc'} = '&';       $Apache::londefdef::table[-1]{'vinc'} = '&'; 
     $Apache::londefdef::table[-1]{'vvinc'} = '';      $Apache::londefdef::table[-1]{'vvinc'} = '';
  }   }
  my $width;   $Apache::londefdef::table[-1]{'output'} = ' \noindent \begin{tabular} ';
  foreach my $key (keys(%{$token->[2]})) {   $currentstring = '\keephidden{NEW TABLE ENTRY '.$textwidth.'}';
     if ($key =~ /^width$/i) {  
  $width = &Apache::lonxml::get_param($key,$parstack,$safeeval,undef,1);  
     }  
  }  
  if (defined($width)) { $Apache::londefdef::table[-1]{'width'}=$width; }  
     }      }
     return $currentstring;      return $currentstring;
 }  }
Line 1716  sub end_table { Line 1757  sub end_table {
  my $output = '';   my $output = '';
  #construct header of the table   #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;   for (my $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++) {  
     $output .=  $Apache::londefdef::table[-1]{'rowdata'}[$in];  
     chop $output;  
     $output .= ' \\\\ ';  
  }  
  #define the length of the table cells   #define the length of the table cells
  my @lengthforoutput = split(/,/,$Apache::londefdef::table[-1]{'lengthrow'}[0]);   #always starts with TeXwidth (if defined everything else is ignored)
  my $how_many_columns = $#lengthforoutput + 1; #total number of columns in the table    my @length_row_final = split(/,/,$Apache::londefdef::table[-1]{'TeXlengthrow'}[0]);
  my $filled_columns = 0; #number of columns with information about width   for (my $in=1;$in<=$Apache::londefdef::table[-1]{'row_number'};$in++) {
  my $available_space = ' ';      my @length_row = split(/,/,$Apache::londefdef::table[-1]{'TeXlengthrow'}[$in]);
  foreach my $tempo_length (@{ $Apache::londefdef::table[-1]{'lengthrow'} }) {      for (my $jn=0;$jn<=$#length_row;$jn++) {
     my @length = split(/,/,$tempo_length);   if ($length_row_final[$jn]<$length_row[$jn]) {$length_row_final[$jn]=$length_row[$jn];}
     for (my $ico=0;$ico<=$#lengthforoutput;$ico++) {      }
  $lengthforoutput[$ico] =~ m/(\d*\.?\d*)\s*(\w+)/;   }
  my $old_value = $1;   #continues trying estimate the width of raw data
  my $old_unit = $2;    my @length_raw_row = split(/,/,$Apache::londefdef::table[-1]{'lengthrow'}[0]);
  if ($old_unit eq 'cm') {    for (my $in=1;$in<=$Apache::londefdef::table[-1]{'row_number'};$in++) {
     $old_value = $old_value * 10;      my @length_row = split(/,/,$Apache::londefdef::table[-1]{'lengthrow'}[$in]);
  } elsif ($old_unit eq 'in') {       for (my $jn=0;$jn<=$#length_row;$jn++) {
     $old_value = $old_value * 25.4;   if ($length_raw_row[$jn]<$length_row[$jn]) {$length_raw_row[$jn]=$length_row[$jn];}
  } elsif ($old_unit eq 'pt') {      }
     $old_value = $old_value * 25.4/72.27;   }
  } elsif ($old_unit eq 'pc') {          #comparing of TeXwidth and raw data width
     $old_value = $old_value * 25.4/6.022;   my $available_length=$Apache::londefdef::table[-1]{'width'};
  }   my $needed=0;
  $old_unit = 'mm';   for (my $jn=0;$jn<=$#length_row_final;$jn++) {
  $length[$ico] =~ m/(\d*\.?\d*)\s*(\w+)/;      if ($length_row_final[$jn]!=0) {
  my $new_value = $1;   $available_length=$available_length-$length_row_final[$jn];
  my $new_unit = $2;   $needed++;
  if ($new_unit eq 'cm') {       }
     $new_value = $new_value * 10;   }
  } elsif ($old_unit eq 'in') {    $needed=$#length_row_final-$needed+1;
     $new_value = $new_value * 25.4;   for (my $jn=0;$jn<=$#length_row_final;$jn++) {
  } elsif ($old_unit eq 'pt') {      if ($length_row_final[$jn]==0) {
     $new_value = $new_value * 25.4/72.27;   if ($length_raw_row[$jn]<$available_length/3) {
  } elsif ($old_unit eq 'pc') {      $length_row_final[$jn]=$length_raw_row[$jn];
     $new_value = $new_value * 25.4/6.022;      $available_length=$available_length-$length_raw_row[$jn];
  }      $needed--;
  $new_unit = 'mm';  
  if ($old_value < $new_value) {  
     $lengthforoutput[$ico] = $new_value.' mm';  
  } else {  
     $lengthforoutput[$ico] = $old_value.' mm';  
  }   }
     }      }
  }   }
  for (my $ico=0;$ico<=$#lengthforoutput;$ico++) {   for (my $jn=0;$jn<=$#length_row_final;$jn++) {
     if (not $lengthforoutput[$ico]=~m/^\s*0\s*\w*\s*$/) {      if ($length_row_final[$jn]==0) {
  $filled_columns++;   $length_row_final[$jn]=0.9*$available_length/$needed;
  $available_space = $available_space.' - '.$lengthforoutput[$ico];  
     }      }
  }   }
  my $temp_file;   #fill the table
  my $filename = "/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout.tbl";   for (my $in=0;$in<=$Apache::londefdef::table[-1]{'row_number'};$in++) {
  if (-e $filename) {      for (my $jn=0;$jn<=$#length_row_final;$jn++) {
     $temp_file = Apache::File->new($filename);    my $substituted=$length_row_final[$jn];
     my @tbl_file_content = <$temp_file>;   $Apache::londefdef::table[-1]{'rowdata'}[$in]=~s/TOBECHANGEDONNUMBER/$substituted mm/;
     my ($one,$two,$three) = split(/,/,$tbl_file_content[0]);      }
     $how_many_columns+=$one-1;      $output .=  $Apache::londefdef::table[-1]{'rowdata'}[$in];
     $filled_columns+=$two;      chop $output;
     if($three=~/\S/) {$available_space = $available_space.' - '.$three;}      $output .= ' \\\\ ';
  } else {  
     $temp_file = Apache::File->new('>>'.$filename);   
  }  
  print $temp_file "$how_many_columns,$filled_columns,$available_space\n";  
  $output =~ s/\\parbox{TOBECHANGEDONNUMBER}{}/\\parbox{1 mm}{}/g;  
  $output =~ s/\\parbox{TOBECHANGEDONNUMBER}/\\parbox{\$SpacePerColumn}/g;  
  my @tagar = @$tagstack;  
  my $signature = 1;  
  for (my $ico=0;$ico<$#tagar;$ico++) {  
     if ($tagar[$ico] eq 'table') { $signature = 0; }  
  }  
  if ($signature) {  
     my $NumberEmptyLength = $how_many_columns - $filled_columns;  
     my $SpacePerColumn = '(\textwidth '.$available_space.')/'.$NumberEmptyLength;  
     my $shorthand = ($filled_columns+1)*4;  
     $output =~ s/\$SpacePerColumn/$SpacePerColumn - $shorthand mm/g;  
  }  
  if ($how_many_columns==1) {  
     #start of block with width correction for one column table  
     $output=~s/^\s*\\parbox\{([^\}]*)\}/\\parbox\{\\textwidth - 1 cm\}/;  
     #end of block with width correction for one column table  
  }   }
  $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'};      my $inmemory = $Apache::londefdef::table[-1]{'output'};
     pop @Apache::londefdef::table;      pop @Apache::londefdef::table;
     $Apache::londefdef::table[-1]{'rowdata'}[$Apache::londefdef::table[-1]{'row_number'}] .= $inmemory      push @{$Apache::londefdef::table[-1]{'include'}}, $inmemory;
  } else {   } else {
     $currentstring = $Apache::londefdef::table[-1]{'output'};      $currentstring .= $Apache::londefdef::table[-1]{'output'};
     $currentstring =~ s/\\\\\s+\\\\/\\\\/g;   
     pop @Apache::londefdef::table;      pop @Apache::londefdef::table;
     if (-e $filename) {  
  unlink $filename;  
     }  
  }   }
     }      }
     return $currentstring;      return $currentstring;
Line 1838  sub start_tr { Line 1841  sub start_tr {
  }   }
  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'} = '';    $Apache::londefdef::table[-1]{'TeXlength'} = '';
     $Apache::londefdef::table[-1]{'length'} = '';
     }       } 
     return $currentstring;      return $currentstring;
 }  }
Line 1849  sub end_tr { Line 1853  sub end_tr {
     if ($target eq 'web') {      if ($target eq 'web') {
  $currentstring = $token->[2];        $currentstring = $token->[2];     
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
    push @{ $Apache::londefdef::table[-1]{'TeXlengthrow'} },$Apache::londefdef::table[-1]{'TeXlength'};
  push @{ $Apache::londefdef::table[-1]{'lengthrow'} },$Apache::londefdef::table[-1]{'length'};   push @{ $Apache::londefdef::table[-1]{'lengthrow'} },$Apache::londefdef::table[-1]{'length'};
   
     }      }
     return $currentstring;      return $currentstring;
 }  }
Line 1874  sub start_td { Line 1878  sub start_td {
 }     }   
             
 sub end_td {  sub end_td {
     my ($target,$token) = @_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
     my $currentstring = '';      my $currentstring = '';
     my $tempolen = '';  
     if ($target eq 'web') {      if ($target eq 'web') {
  $currentstring = $token->[2];        $currentstring = $token->[2];     
     } 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|in|pc|pt))/) {   my $TeXwidth=&Apache::lonxml::get_param('TeXwidth',$parstack,$safeeval,undef,0);
     $Apache::londefdef::table[-1]{'length'} .= $1.',';   if (defined $TeXwidth) {
     $tempolen = $1;               my $current_length=&recalc($TeXwidth);
       $current_length=~/(\d+)/;
       $Apache::londefdef::table[-1]{'TeXlength'} .= $1.',';
       $Apache::londefdef::table[-1]{'length'} .= '0,';
  } else {   } else {
     if (length($data)<5) {      if ($data=~m/width\s*=\s*(\d+\.?\d*\s*(mm|cm|in|pc|pt)*)/) {
  $Apache::londefdef::table[-1]{'length'} .= '0 mm,';   my $current_length=&recalc($1);
  $tempolen = '6 mm';   $current_length=~/(\d+)/;
     } else {   $Apache::londefdef::table[-1]{'TeXlength'} .= $1.',';
  $Apache::londefdef::table[-1]{'length'} .= '0 mm,';   $Apache::londefdef::table[-1]{'length'} .= '0,';
  $tempolen = 'TOBECHANGEDONNUMBER';      } else {     
     }   $data=~/^\s*(\S.*)/;
  }                                           $data=$1;
  @{ $Apache::londefdef::table[-1]{'rowdata'} }[$current_row] .= '\parbox{'.$tempolen.'}{'.$data.'} '.$Apache::londefdef::table[-1]{'vinc'};   $data=~/(.*\S)\s*$/;
    $data=$1;
    my $current_length=2*length($data);
    $Apache::londefdef::table[-1]{'length'} .= $current_length.',';
    $Apache::londefdef::table[-1]{'TeXlength'} .= '0,';
       }        
    }
    for (my $in=0; $in<=$#{$Apache::londefdef::table[-1]{'include'}};$in++) {                                
       $data=~s/\\keephidden\{NEW TABLE ENTRY\}/$Apache::londefdef::table[-1]{'include'}[$in]/;
    }
    @{ $Apache::londefdef::table[-1]{'rowdata'} }[$current_row] .= '\parbox{TOBECHANGEDONNUMBER}{'.$data.'} '.$Apache::londefdef::table[-1]{'vinc'};
     }      }
     return $currentstring;      return $currentstring;
 }  }
Line 1913  sub start_th { Line 1929  sub start_th {
  push @{ $Apache::londefdef::table[-1]{'columns'} }, $what_to_push;   push @{ $Apache::londefdef::table[-1]{'columns'} }, $what_to_push;
  $Apache::londefdef::table[-1]{'counter_columns'}++;   $Apache::londefdef::table[-1]{'counter_columns'}++;
  &Apache::lonxml::startredirection();   &Apache::lonxml::startredirection();
  ;  
     }       } 
     return $currentstring;      return $currentstring;
 }  }   
                
 sub end_th {  sub end_th {
     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 $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))/) {                    my $TeXwidth=&Apache::lonxml::get_param('TeXwidth',$parstack,$safeeval,undef,0);
     $Apache::londefdef::table[-1]{'length'} .= $1.',';                if (defined $TeXwidth) {
       my $current_length=&recalc($TeXwidth);
       $current_length=~/(\d+)/;
       $Apache::londefdef::table[-1]{'TeXlength'} .= $1.',';
       $Apache::londefdef::table[-1]{'length'} .= '0,';
  } else {   } else {
     $Apache::londefdef::table[-1]{'length'} .= '0 mm,';       if ($data=~m/width\s*=\s*(\d+\.?\d*\s*(mm|cm|in|pc|pt)*)/) {
  }                                                              my $current_length=&recalc($1);
  @{ $Apache::londefdef::table[-1]{'rowdata'} }[$current_row] .= '\parbox{'.$1.'}{\textbf{'.$data.'}} '.$Apache::londefdef::table[-1]{'vinc'};   $current_length=~/(\d+)/;
    $Apache::londefdef::table[-1]{'TeXlength'} .= $1.',';
    $Apache::londefdef::table[-1]{'length'} .= '0,';
       } else {     
    $data=~/^\s*(\S.*)/;
    $data=$1;
    $data=~/(.*\S)\s*$/;
    $data=$1;
    my $current_length=2*length($data);
    $Apache::londefdef::table[-1]{'length'} .= $current_length.',';
    $Apache::londefdef::table[-1]{'TeXlength'} .= '0,';
       }        
    }
    for (my $in=0; $in<=$#{$Apache::londefdef::table[-1]{'include'}};$in++) {                                
       $data=~s/\\keephidden\{NEW TABLE ENTRY\}/$Apache::londefdef::table[-1]{'include'}[$in]/;
    }
    $data='\textbf{'.$data.'}';
    @{ $Apache::londefdef::table[-1]{'rowdata'} }[$current_row] .= '\parbox{TOBECHANGEDONNUMBER}{'.$data.'} '.$Apache::londefdef::table[-1]{'vinc'};
     }      }
     return $currentstring;      return $currentstring;
 }  }
   
 #-- <img> tag  #-- <img> tag
 sub start_img {  sub start_img {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
Line 2205  sub end_frameset { Line 2240  sub end_frameset {
   
 #-- <pre>  #-- <pre>
 sub start_pre {  sub start_pre {
     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 .= '\begin{verbatim}';   my $width = &Apache::lonxml::get_param('TeXwidth',$parstack,$safeeval,undef,0);
    if (not defined $width) {$width ='\textwidth';}
    $currentstring .= '\parbox['.$width.']{\begin{verbatim}';
     }       } 
     return $currentstring;      return $currentstring;
 }  }
Line 2221  sub end_pre { Line 2258  sub end_pre {
     if ($target eq 'web') {      if ($target eq 'web') {
  $currentstring .= $token->[2];   $currentstring .= $token->[2];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring .= '\end{verbatim}';   $currentstring .= '\end{verbatim}}';
     }      }
     return $currentstring;      return $currentstring;
 }  }
Line 3083  sub image_replication { Line 3120  sub image_replication {
     return '';      return '';
 }  }
   
   sub recalc {
       my $argument = shift;
       if (not $argument=~/(mm|cm|in|pc|pt)/) {return $argument.' mm';}
       $argument=~/\s*(\d+)\s*(mm|cm|in|pc|pt)/;
       my $value=$1;
       my $units=$2;
       if ($units eq 'cm') {
    $value*=10;
       } elsif ($units eq 'in') {
    $value*=25.4;
       } elsif ($units eq 'pc') {
    $value*=(25.4*12/72.27);
       } elsif ($units eq 'pt') {
    $value*=(25.4/72.27);
       }
       return $value.' mm';
   }
   
 1;  1;
 __END__  __END__

Removed from v.1.125  
changed lines
  Added in v.1.131


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