--- loncom/xml/londefdef.pm 2003/06/27 16:12:39 1.146 +++ loncom/xml/londefdef.pm 2003/09/02 14:30:31 1.158.4.5 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Tags Default Definition Module # -# $Id: londefdef.pm,v 1.146 2003/06/27 16:12:39 sakharuk Exp $ +# $Id: londefdef.pm,v 1.158.4.5 2003/09/02 14:30:31 albertel Exp $ # # # Copyright Michigan State University Board of Trustees @@ -25,8 +25,7 @@ # /home/httpd/html/adm/gpl.txt # # http://www.lon-capa.org/ -# -# Copyright for TtHfunc and TtMfunc by Ian Hutchinson. +## Copyright for TtHfunc and TtMfunc by Ian Hutchinson. # TtHfunc and TtMfunc (the "Code") may be compiled and linked into # binary executable programs or libraries distributed by the # Michigan State University (the "Licensee"), but any binaries so @@ -157,10 +156,11 @@ sub start_html { &Apache::lonxml::fontsettings(); } elsif ($target eq 'tex') { @Apache::londefdef::table = (); - $currentstring .= '\documentclass[letterpaper]{article}'. - #'\batchmode'. - '\newcommand{\keephidden}[1]{} + $currentstring .= '\documentclass[letterpaper]{article}'; + if ($ENV{'form.latex_type'}=~'batchmode') {$currentstring .='\batchmode';} + $currentstring .= '\newcommand{\keephidden}[1]{} \renewcommand{\deg}{$^{\circ}$} + \usepackage{longtable} \usepackage{textcomp} \usepackage[dvips]{graphicx} \usepackage{epsfig}\usepackage{calc} @@ -319,7 +319,7 @@ sub start_title { if ($target eq 'web') { $currentstring = $token->[4]; } elsif ($target eq 'tex') { - $currentstring .= '\keephidden{' + $currentstring .= '\keephidden{Title of the document: ' } if ($target eq 'meta') { $currentstring='
tag
sub start_p {
- my ($target,$token) = @_;
+ my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
my $currentstring = '';
if ($target eq 'web') {
$currentstring .= $token->[4];
} elsif ($target eq 'tex') {
- $currentstring .= '\par ';
+ my $signal=1;
+ foreach my $tag (@$tagstack) {if (lc($tag) eq 'b') {$signal=0;}}
+ if ($signal) {$currentstring .= '\par ';}
}
return $currentstring;
}
@@ -1064,7 +1114,7 @@ sub start_br {
$currentstring .= $token->[4];
} elsif ($target eq 'tex') {
if ($$tagstack[-2] ne 'sub' && $$tagstack[-2] ne 'sup') {
- $currentstring .= '\vskip 0.2 mm';
+ $currentstring .= '\vskip 0.2 mm ';
}
}
return $currentstring;
@@ -1160,7 +1210,12 @@ sub start_font {
my $currentstring = '';
if ($target eq 'web') {
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++;
+ } else {
+ if (($ENV{'browser.fontenhance'} eq 'on') ||
+ ($ENV{'browser.blackwhite'} eq 'on')) { return ''; }
+ }
$currentstring = $token->[4];
} elsif ($target eq 'tex') {
my $fontsize=&Apache::lonxml::get_param('TeXsize',$parstack,$safeeval);
@@ -1292,14 +1347,14 @@ sub start_hr {
if ($target eq 'web') {
$currentstring .= $token->[4];
} elsif ($target eq 'tex') {
- my $LaTeXwidth = &Apache::lonxml::get_param('TeXwidth',$parstack,$safeeval,0);
+ my $LaTeXwidth = &Apache::lonxml::get_param('TeXwidth',$parstack,$safeeval,undef,0);
if (defined $LaTeXwidth) {
if ($LaTeXwidth=~/^%/) {
substr($LaTeXwidth,0,1)='';
$LaTeXwidth=($LaTeXwidth/100).'\textwidth';
}
} else {
- $LaTeXwidth ='0.95\textwidth';
+ $LaTeXwidth ='0.9\textwidth';
}
my ($pre,$post);
my $align=&Apache::lonxml::get_param('align',$parstack,$safeeval,undef,1);
@@ -1310,7 +1365,7 @@ sub start_hr {
} elsif ($align eq 'right') {
$pre=' \hfill \llap{'; $post='}';
}
- $currentstring .= ' \vskip 0 mm \noindent\makebox[\textwidth]{'.$pre.'\makebox['.
+ $currentstring .= ' \vskip 0 mm \noindent\makebox['.$LaTeXwidth.']{'.$pre.'\makebox['.
$LaTeXwidth.'][b]{\hrulefill}'.$post.'}\vskip 0 mm ';
}
return $currentstring;
@@ -1321,8 +1376,7 @@ sub end_hr {
my $currentstring = '';
if ($target eq 'web') {
$currentstring .= $token->[2];
- } elsif ($target eq 'tex') {
- }
+ }
return $currentstring;
}
@@ -1347,30 +1401,30 @@ sub end_div {
#-- tag
sub start_a {
- my ($target,$token) = @_;
+ my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
my $currentstring = '';
if ($target eq 'web') {
$currentstring .= $token->[4];
} elsif ($target eq 'tex') {
+ my $a=&Apache::lonxml::get_param('href',$parstack,$safeeval,undef,1);
+ $a=~s/([^\\])%/$1\\\%/g;
+ $currentstring .= '\ref{'.$a.'}';
}
return $currentstring;
}
sub end_a {
- my ($target,$token,$tagstack,$parstack,$safeeval) = @_;
+ my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
my $currentstring = '';
if ($target eq 'web') {
$currentstring .= $token->[2];
- } elsif ($target eq 'tex') {
- my $href=&Apache::lonxml::get_param('href',$parstack,$safeeval,undef,1);
- $currentstring .= '\ref{'.$href.'}';
}
return $currentstring;
}
#-- tag
+#-- tag (end tag optional)
sub start_tr {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
my $currentstring = '';
@@ -1798,7 +1858,7 @@ sub end_tr {
return $currentstring;
}
-#-- tag
+#-- tag (end tag optional)
sub start_tfoot {
my ($target,$token) = @_;
my $currentstring = '';
@@ -3008,7 +3076,7 @@ sub end_tfoot {
return $currentstring;
}
-#-- tag
+#-- tag (end tag optional)
sub start_thead {
my ($target,$token) = @_;
my $currentstring = '';
tag
+#-- tag (end tag optional)
sub start_td {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
my $currentstring = '';
@@ -1824,9 +1884,6 @@ sub end_td {
} elsif ($target eq 'tex') {
my $current_row = $Apache::londefdef::table[-1]{'row_number'};
my $data=&Apache::lonxml::endredirection();
-
- $currentstring.=' SSSS '.$data.' FFFF ';
-
my $TeXwidth=&Apache::lonxml::get_param('TeXwidth',$parstack,$safeeval,undef,0);
if (defined $TeXwidth) {
my $current_length=&recalc($TeXwidth);
@@ -1837,18 +1894,30 @@ sub end_td {
if ($data=~m/width\s*=\s*(\d+\.?\d*\s*(mm|cm|in|pc|pt)*)/) {
my $current_length=&recalc($1);
$current_length=~/(\d+\.?\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,';
- }
- }
+ $Apache::londefdef::table[-1]{'TeXlength'} .= $1.',';
+ $Apache::londefdef::table[-1]{'length'} .= '0,';
+ } else {
+ $data=~s/^\s+(\S.*)/$1/;
+ $data=~s/(.*\S)\s+$/$1/;
+ $data=~s/(\s)+/$1/;
+ my $current_length=0;
+ if ($data=~/\\vskip/) {
+ my $newdata=$data;
+ $newdata=~s/\\vskip \d*\.?\d*\s*mm/THISISJUSTTEMPORARYSEPARATOR/g;
+ my @newdata=split(/THISISJUSTTEMPORARYSEPARATOR/,$newdata);
+ foreach my $elementdata (@newdata) {
+ $elementdata=~s/^\s+(\S.*)/$1/;
+ $elementdata=~s/(.*\S)\s+$/$1/;
+ $elementdata=~s/(\s)+/$1/;
+ my $lengthnewdata=1.8*length($elementdata);
+ if ($lengthnewdata>$current_length) {$current_length=$lengthnewdata;}
+ }
+ } else {
+ $current_length=1.8*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]/;
}
@@ -1857,7 +1926,7 @@ sub end_td {
return $currentstring;
}
-#-- tag
+#-- tag (end tag optional)
sub start_th {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
my $currentstring = '';
@@ -1923,10 +1992,9 @@ sub start_img {
my $width_param = '';
my $height_param = '';
my $scaling = .3;
-
if ($target eq 'web') {
if ($ENV{'browser.imagesuppress'} ne 'on') {
- $currentstring = $token->[4];
+ $currentstring.= $token->[4];
} else {
my $alttag= &Apache::lonxml::get_param
('alt',$parstack,$safeeval,undef,1);
@@ -1934,12 +2002,11 @@ sub start_img {
$alttag=&Apache::lonmeta::alttag
($Apache::lonxml::pwd[-1],$src);
}
- $currentstring='[IMAGE: '.$alttag.']';
+ $currentstring.='[IMAGE: '.$alttag.']';
}
} elsif ($target eq 'tex') {
$src=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$src);
&image_replication($src);
-
#if original gif/jpg/png file exist do following:
if (-e $src) {
#defines the default size of image
@@ -1964,6 +2031,7 @@ sub start_img {
} elsif ($width ne '') {
$width_param = $width*$scaling;
}
+ if ($width_param > $ENV{'form.textwidth'}) {$width_param =0.95*$ENV{'form.textwidth'}}
my $file;
my $path;
if ($src =~ m!(.*)/([^/]*)$!) {
@@ -2989,7 +3057,7 @@ sub end_tbody {
return $currentstring;
}
-#--