--- loncom/xml/londefdef.pm	2003/07/08 18:12:28	1.151
+++ loncom/xml/londefdef.pm	2003/08/27 15:00:43	1.158.4.3
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Tags Default Definition Module 
 #
-# $Id: londefdef.pm,v 1.151 2003/07/08 18:12:28 sakharuk Exp $
+# $Id: londefdef.pm,v 1.158.4.3 2003/08/27 15:00:43 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,9 +156,9 @@ 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}
@@ -364,11 +363,25 @@ sub start_meta {
 	    $name=~s/\s/\_/gs;
 	    $name=~s/\W//gs;
 	    if ($name) {
-		$currentstring='<'.$name.'>'.
+		$currentstring='<'.$name;
+                 my $display=&Apache::lonxml::get_param
+		('display',$parstack,$safeeval,undef,1);
+                if ($display) {
+                    $display=~s/\"/\'/g;
+		    $currentstring.=' display="'.$display.'"';
+                }
+		$currentstring.='>'.
 		    &Apache::lonxml::get_param
 			('content',$parstack,$safeeval,undef,1).
 			'</'.$name.'>';
 	    }
+            my $display=&Apache::lonxml::get_param
+		('display',$parstack,$safeeval,undef,1);
+            if ($display) {
+		$display=&HTML::Entities::encode($display);
+		$currentstring.='<'.$name.'.display>'.$display.
+                               '</'.$name.'.display>';
+            }
 	}
     } elsif ($target eq 'tex') {
 	my $content=&Apache::lonxml::get_param('content',$parstack,$safeeval);
@@ -381,7 +394,7 @@ sub start_meta {
 }
 
 sub end_meta {
-    my ($target,$token,$tagstack,$parstack,$parser) = @_;
+    my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
     my $currentstring = '';
     if ($target eq 'web') {
 	my $args='';
@@ -390,8 +403,11 @@ sub end_meta {
 	    $currentstring = $token->[4];
 	}
     } elsif ($target eq 'tex') {
-	$currentstring=&Apache::lonxml::endredirection();
-	$currentstring='';
+	my $content=&Apache::lonxml::get_param('content',$parstack,$safeeval);
+	my $name=&Apache::lonxml::get_param('name',$parstack,$safeeval);
+	if ((not defined $content) && (not defined $name)) {
+	    &Apache::lonxml::endredirection();
+	}
     }
     return $currentstring;
 }
@@ -450,6 +466,29 @@ sub start_body {
 	    $currentstring.='<head>'.
 		&Apache::lonmenu::registerurl(undef,$target).'</head>';
 	}
+# Accessibility
+	if ($ENV{'browser.imagesuppress'} eq 'on') {
+	    delete($token->[2]->{'background'});
+	}
+	if ($ENV{'browser.fontenhance'} eq 'on') {
+	    my $style='';
+	    foreach my $key (keys(%{$token->[2]})) {
+		if ($key =~ /^style$/i) {
+		    $style.=$token->[2]->{$key}.';';
+		    delete($token->[2]->{$key});
+		}
+	    }
+	    $token->[2]->{'style'}=$style.'; font-size: x-large;';
+	}
+	if ($ENV{'browser.blackwhite'} eq 'on') {
+	    delete($token->[2]->{'font'});
+	    delete($token->[2]->{'link'});
+	    delete($token->[2]->{'alink'});
+	    delete($token->[2]->{'vlink'});
+	    delete($token->[2]->{'bgcolor'});
+	    delete($token->[2]->{'background'});
+	}
+# Overload loads
 	my $onLoad='';
 	foreach my $key (keys(%{$token->[2]})) {
 	    if ($key =~ /^onload$/i) {
@@ -1042,12 +1081,14 @@ sub end_q {
 
 #-- <p> 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;
 }
@@ -1165,7 +1206,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);
@@ -1364,7 +1410,7 @@ sub start_a {
 }
 
 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];
@@ -1374,7 +1420,7 @@ sub end_a {
 
 #-- <li> tag
 sub start_li {
-    my ($target,$token,$tagstack,$parstack,$safeeval) = @_;
+    my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
     my $currentstring = '';
     if ($target eq 'web') {
 	$currentstring = $token->[4];     
@@ -1625,6 +1671,8 @@ sub start_dd {
     } elsif ($target eq 'tex') {
 	if ($$tagstack[-2] eq 'dl') {
 	    $currentstring = ' \item [] ';  
+	} elsif ($$tagstack[-2] eq 'dt') {
+	    $currentstring = ']'; 
 	}
     } 
     return $currentstring;
@@ -1926,10 +1974,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);
@@ -1937,12 +1984,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
@@ -1967,6 +2013,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!(.*)/([^/]*)$!) {