--- loncom/xml/londefdef.pm	2007/10/15 20:00:12	1.375.2.1
+++ loncom/xml/londefdef.pm	2008/03/06 20:31:52	1.382
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Tags Default Definition Module 
 #
-# $Id: londefdef.pm,v 1.375.2.1 2007/10/15 20:00:12 albertel Exp $
+# $Id: londefdef.pm,v 1.382 2008/03/06 20:31:52 www Exp $
 # 
 #
 # Copyright Michigan State University Board of Trustees
@@ -579,12 +579,7 @@ sub start_body {
 
 	if ($env{'request.state'} ne 'published') {
 	    $currentstring.=&Apache::lonmenu::constspaceform();
-	    $currentstring.=(<<EDITBUTTON);
-<form method="post">
-<input type="submit" name="editmode" accesskey="e" value="Edit" />
-</form>
-<br />
-EDITBUTTON
+	    $currentstring.=&Apache::londefdef::edit_controls();
 	}
 	$currentstring.=&Apache::lonxml::message_location();
     } elsif ($target eq 'tex') {
@@ -593,6 +588,16 @@ EDITBUTTON
     return $currentstring;
 }
 
+sub edit_controls {
+    my $result .= (<<EDITBUTTON);
+<form method="post">
+<input type="submit" name="editmode" accesskey="e" value="Edit" />
+</form>
+<br />
+EDITBUTTON
+    return $result;
+}
+
 sub end_body {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
     my $currentstring = &end_p();	# Close off unclosed <p>
@@ -1580,6 +1585,9 @@ sub start_div {
     } 
     if ($target eq 'tex') {
 	# 4 possible alignments: left, right, center, and -missing-.
+        # If inside a table row, we must let the table logic
+	# do the alignment, however.
+	# 
 
 	my $endstring = '';
 
@@ -1590,6 +1598,7 @@ sub start_div {
 	    $endstring      = '\end{center}';
 	    if (&is_inside_of($tagstack, "table")) {
 		$currentstring = &center_correction().$currentstring;
+		$endstring    .= &center_end_correction(); 
 	    }
 	}
 	elsif ($align eq 'right') {
@@ -1645,14 +1654,18 @@ sub end_a {
 	    &Apache::lonxml::get_param('href',$parstack,$safeeval,undef,1);
 	my $name =
 	    &Apache::lonxml::get_param('name',$parstack,$safeeval,undef,1);
-	if ($href =~ /\S/) {
+        my $uriprint =
+            &Apache::lonxml::get_param('uriprint',$parstack,$safeeval,undef,1);
+        my $anchorprint =
+            &Apache::lonxml::get_param('anchorprint',$parstack,$safeeval,undef,1);
+	if (($href =~ /\S/) && ($uriprint=~/^on|uriprint|yes|1$/i)) {
 	    $href =~ s/([^\\])%/$1\\\%/g;
 	    # Substitute special symbols... and allow line breaks at each /
 	    #
 	    $href = &Apache::lonxml::latex_special_symbols($href);
 	    $href =~ s/\//\/\\-/g;              # Map / to /\- to allow hyphenation.
 	    $currentstring .= ' ({\tt URI:'.$href.'})';
-	} elsif ($name =~ /\S/) {
+	} elsif (($name =~ /\S/) && ($anchorprint=~/^on|anchorprint|yes|1$/i)) {
 	    $currentstring .= ' ({\tt Anchor:'.&Apache::lonxml::latex_special_symbols($name).'})';
 	} else {
 	    $currentstring.='';
@@ -3054,11 +3067,14 @@ sub start_img {
 	my $width=  &Apache::lonxml::get_param('width',$parstack,$safeeval);
 	my $height= &Apache::lonxml::get_param('height',$parstack,$safeeval);
 
-
-	$currentstring .= '<img src="'.$src.'" alt="'.$alt.'" ';
-	if ($width) { $currentstring.=' width="'.$width.'" '; }
-	if ($height) { $currentstring.=' height="'.$height.'" '; }
-	$currentstring .= ' />';
+        if ($token->[2]{'src'}=~/\$/) {
+           $currentstring.='Variable image source';
+        } else {
+	   $currentstring .= '<img src="'.$src.'" alt="'.$alt.'" ';
+	   if ($width) { $currentstring.=' width="'.$width.'" '; }
+	   if ($height) { $currentstring.=' height="'.$height.'" '; }
+	   $currentstring .= ' />';
+        }
     } elsif ($target eq 'modified') {
 	my ($osrc,$owidth,$oheight)=
 	    ($token->[2]{'src'},$token->[2]{'width'},$token->[2]{'height'});