--- loncom/xml/londefdef.pm	2003/08/07 20:12:40	1.159
+++ loncom/xml/londefdef.pm	2003/08/20 15:22:03	1.162
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Tags Default Definition Module 
 #
-# $Id: londefdef.pm,v 1.159 2003/08/07 20:12:40 sakharuk Exp $
+# $Id: londefdef.pm,v 1.162 2003/08/20 15:22:03 sakharuk Exp $
 # 
 #
 # Copyright Michigan State University Board of Trustees
@@ -51,6 +51,8 @@ use Image::Magick;
 use Apache::lonmenu();
 use Apache::lonmeta();
 
+$Apache::londefdef::TD_redirection=0;
+
 BEGIN {
 
     &Apache::lonxml::register('Apache::londefdef',('a','abbr','acronym','accessrule','address','allow','applet','area','b','base','basefont','bgo','bgsound','big','blink','blockquote','blankspace','body','br','button','caption','center','cite','code','col','colgroup','dd','del','dfn','dir','div','dl','dt','em','embed','externallink','fieldset','font','form','frame','frameset','h1','h2','h3','h4','h5','h6','head','hr','html','i','iframe','img','input','ins','insert','isindex','kbd','keygen','label','layer','legend','li','link','m','map','marquee','menu','meta','multicol','nobr','noembed','noframes','nolayer','noscript','object','ol','optgroup','option','output','p','param','pre','q','s','samp','select','server','small','spacer','span','strike','strong','sub','sup','table','tbody','td','textarea','tfoot','th','thead','title','tr','tt','tthoption','u','ul','var','wbr','hideweboutput'));
@@ -162,9 +164,11 @@ sub start_html {
                            \renewcommand{\deg}{$^{\circ}$}
                            \usepackage{longtable}
                            \usepackage{textcomp}
+                           \usepackage{makeidx}
                            \usepackage[dvips]{graphicx}
                            \usepackage{epsfig}\usepackage{calc}
-\newenvironment{choicelist}{\begin{list}{}{\setlength{\rightmargin}{0in}\setlength{\leftmargin}{0.13in}\setlength{\topsep}{0.05in}\setlength{\itemsep}{0.022in}\setlength{\parsep}{0in}\setlength{\belowdisplayskip}{0.04in}\setlength{\abovedisplayskip}{0.05in}\setlength{\abovedisplayshortskip}{-0.04in}\setlength{\belowdisplayshortskip}{0.04in}}}{\end{list}}';
+\newenvironment{choicelist}{\begin{list}{}{\setlength{\rightmargin}{0in}\setlength{\leftmargin}{0.13in}\setlength{\topsep}{0.05in}\setlength{\itemsep}{0.022in}\setlength{\parsep}{0in}\setlength{\belowdisplayskip}{0.04in}\setlength{\abovedisplayskip}{0.05in}\setlength{\abovedisplayshortskip}{-0.04in}\setlength{\belowdisplayshortskip}{0.04in}}}{\end{list}}
+\renewenvironment{theindex}{\begin{list}{}{{\vskip 1mm \noindent \large\textbf{Index}} \newline \setlength{\rightmargin}{0in}\setlength{\leftmargin}{0.13in}\setlength{\topsep}{0.01in}\setlength{\itemsep}{0.1in}\setlength{\parsep}{-0.02in}\setlength{\belowdisplayskip}{0.01in}\setlength{\abovedisplayskip}{0.01in}\setlength{\abovedisplayshortskip}{-0.04in}\setlength{\belowdisplayshortskip}{0.01in}}}{\end{list}}';
     }
     return $currentstring;
 }
@@ -1400,8 +1404,15 @@ sub start_a {
 	$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.'}';
+	my $b=&Apache::lonxml::get_param('name',$parstack,$safeeval,undef,1);
+	if ($a=~/\S/) {
+	    $a=~s/([^\\])%/$1\\\%/g;
+	    $currentstring .= '\ref{URI: '.$a.'}';
+	} elsif ($b=~/\S/) {
+	    $currentstring .= '\ref{Anchor: '.$b.'}';
+	} else {
+	    $currentstring.='';
+	}
     }
     return $currentstring;
 }
@@ -1840,11 +1851,14 @@ sub start_tr {
 }
         
 sub end_tr {
-    my ($target,$token) = @_;
+    my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
     my $currentstring = '';
     if ($target eq 'web') {
 	$currentstring = $token->[2];     
     } elsif ($target eq 'tex') {
+	if ($Apache::londefdef::TD_redirection) {
+	    &end_td_tex($parstack,$parser,$safeeval);    
+	}
 	push @{ $Apache::londefdef::table[-1]{'TeXlengthrow'} },$Apache::londefdef::table[-1]{'TeXlength'};
 	push @{ $Apache::londefdef::table[-1]{'lengthrow'} },$Apache::londefdef::table[-1]{'length'};
     }
@@ -1858,37 +1872,26 @@ sub start_td {
     if ($target eq 'web') {
 	$currentstring = $token->[4];     
     } elsif ($target eq 'tex') {
+	$Apache::londefdef::TD_redirection = 1;
 	&tag_check('tr','td',$tagstack,$parstack,$parser,$safeeval);
-#	my @ar=@$parstack; 
-#	for (my $i=$#ar-1;$i>=0;$i--) {
-#	    if (lc($$tagstack[$i]) eq 'tr') {
-#		&start_td_tex($parstack,$parser,$safeeval);
-#		last;
-#	    } elsif (lc($$tagstack[$i]) eq 'td') {
-#                splice @ar, $i+1;
-#		&end_td_tex(\@ar,$parser,$safeeval);
-#		&start_td_tex($parstack,$parser,$safeeval);
-#		last;
-#	    }
-#	}
     } 
     return $currentstring;
 }   
     
 sub tag_check {
     my ($good_tag,$bad_tag,$tagstack,$parstack,$parser,$safeeval) = @_;
-	my @ar=@$parstack; 
-	for (my $i=$#ar-1;$i>=0;$i--) {
-	    if (lc($$tagstack[$i]) eq $good_tag) {
-		&start_td_tex($parstack,$parser,$safeeval);
-		last;
-	    } elsif (lc($$tagstack[$i]) eq $bad_tag) {
-                splice @ar, $i+1;
-		&end_td_tex(\@ar,$parser,$safeeval);
-		&start_td_tex($parstack,$parser,$safeeval);
-		last;
-	    }
+    my @ar=@$parstack; 
+    for (my $i=$#ar-1;$i>=0;$i--) {
+	if (lc($$tagstack[$i]) eq $good_tag) {
+	    &start_td_tex($parstack,$parser,$safeeval);
+	    last;
+	} elsif (lc($$tagstack[$i]) eq $bad_tag) {
+	    splice @ar, $i+1;
+	    &end_td_tex(\@ar,$parser,$safeeval);
+	    &start_td_tex($parstack,$parser,$safeeval);
+	    last;
 	}
+    }
     return '';
 }
  
@@ -1941,6 +1944,7 @@ sub end_td {
     if ($target eq 'web') {
 	$currentstring = $token->[2];     
     } elsif ($target eq 'tex') {
+        $Apache::londefdef::TD_redirection =0;
 	&end_td_tex($parstack,$parser,$safeeval);
     }
     return $currentstring;
@@ -2291,6 +2295,30 @@ sub end_frameset {
     return $currentstring;
 }
 
+#-- <xmp>
+sub start_xmp {
+    my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
+    my $currentstring = '';
+    if ($target eq 'web') {
+	$currentstring .= $token->[4];
+    } elsif ($target eq 'tex') {
+	$currentstring .= '\begin{verbatim}';
+    } 
+    return $currentstring;
+}
+
+sub end_xmp {
+    my ($target,$token) = @_;
+    my $currentstring = '';
+    if ($target eq 'web') {
+	$currentstring .= $token->[2];
+    } elsif ($target eq 'tex') {
+	$currentstring .= '\end{verbatim}';
+    }
+    return $currentstring;
+}
+
+
 #-- <pre>
 sub start_pre {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
@@ -2437,7 +2465,7 @@ sub start_base {
     my $currentstring = '';
     if ($target eq 'web') {
 	$currentstring = $token->[4];     
-    } 
+    }
     return $currentstring;
 }
 
@@ -3153,7 +3181,6 @@ sub end_wbr {
     return $currentstring;
 }
 
-
 #-- <hideweboutput> tag
 sub start_hideweboutput {
     my ($target,$token) = @_;