--- loncom/xml/algebra/AlgParser.pm	2005/02/24 08:34:52	1.8
+++ loncom/xml/algebra/AlgParser.pm	2005/06/09 02:17:12	1.13
@@ -39,7 +39,7 @@ $close{'('} = ')';
 
 my $binoper3 = '(?:\\^|\\*\\*)';
 my $binoper2 = '[/*_,]';
-my $binoper1 = '[-+=><%!#]';
+my $binoper1 = '(?:<>|<=|>=|[-+=><%!])';
 my $openparen = '[{(\\[]';
 my $closeparen = '[})\\]]';
 my $varname = '[A-Za-z](?:_[0-9]+)?';
@@ -534,7 +534,11 @@ sub tolatex {
   /binop1/ && do {
     my ($p1, $p2) = ('','');
     if ($args[2]->[0] eq 'binop1') {($p1,$p2)=qw{ \left( \right) };}
-    return ($args[1]->tolatex() . $args[0] . $p1 .
+    my $cmd=$args[0];
+    if    ($args[0] eq '<>') { $cmd='\\not= '; }
+    elsif ($args[0] eq '<=') { $cmd='\\leq ';  }
+    elsif ($args[0] eq '>=') { $cmd='\\geq ';  }
+    return ($args[1]->tolatex() . $cmd . $p1 .
             $args[2]->tolatex() . $p2);
   };
   /unop1/ && do {
@@ -566,8 +570,6 @@ sub tolatex {
                '{' . $args[2]->tolatex() . '}' ); 
     }
     elsif ($args[0] eq '*'){
-#	return('\frac{' . $p1 . $args[1]->tolatex() . $p2 . '}'.
-#               '{' . $p3 . $args[2]->tolatex() . $p4 . '}' );
 	return($args[1]->tolatex() . '\cdot ' . $args[2]->tolatex() ); 
     }
     else{
@@ -586,7 +588,7 @@ sub tolatex {
   };
   /func1/ && do {
       my($p1,$p2);
-      if($args[0] eq "sqrt"){($p1,$p2)=qw{ \left{ \right} };}
+      if($args[0] eq "sqrt"){($p1,$p2)=('{','}');}
       else {($p1,$p2)=qw{ \left( \right) };}
 
       #
@@ -594,24 +596,35 @@ sub tolatex {
       #       added missing trig functions
       #
       #$specialfunc = '(?:abs|logten|asin|acos|atan|sech|sgn|step|fact)';
-      my $specialfunc = '(?:abs|(logten)|a(sin|cos|tan|sec|csc|cot)(h)?|sgn|step|fact)';
+      my $specialfunc = '(?:(logten)|a(sin|cos|tan|sec|csc|cot)(h)?|sgn|step|fact|(abs))';
       #
       #  End DPVC
       #
 
       if ($args[0] =~ /$specialfunc/) {
 	  if (defined($1)) {
-	      return ('\mbox{log}_{10}'. $p1 . $args[1]->tolatex() . $p2);
+	      return ('\log_{10}'. $p1 . $args[1]->tolatex() . $p2);
 	  }
 	  elsif (defined($2)) {
-	      return ('\mbox{' . $2.$3 .'}^{-1}'. $p1 . $args[1]->tolatex() . $p2);
+	      if (defined($3) && ($2 eq 'sec' || $2 eq 'csc' || $2 eq 'cot')) {
+		  return ('\mathrm{' . $2.$3 .'}^{-1}'. $p1 . $args[1]->tolatex() . $p2);
+	      } else {
+		  return ('\\' . $2.$3 .'^{-1}'. $p1 . $args[1]->tolatex() . $p2);
+	      }
+	  }
+	  elsif (defined($4)) {
+	      return ('|' . $args[1]->tolatex() . '|');
 	  }
 	  else {
 	      return ('\mbox{' . $args[0] .'}'. $p1 . $args[1]->tolatex() . $p2);
 	  }
       }
       else {
-        return ('\\' . $args[0] . $p1 . $args[1]->tolatex() . $p2);
+	  if ($args[0] =~/(sec|csc|cot)h/) {
+	      return ('\mathrm{' . $args[0] . '}' . $p1 . $args[1]->tolatex() . $p2);
+	  } else {
+	      return ('\\' . $args[0] . $p1 . $args[1]->tolatex() . $p2);
+	  }
       }
   };
   /special/ && do {
@@ -626,7 +639,6 @@ sub tolatex {
   };
   /closep/ && do {
     my($backslash) = '';
-    my(%close) = %AlgParser::close;
     if ($args[0] eq '{') {$backslash = '\\';}
 #This is for editors to match: }
     return ('\left' . $backslash . $args[0] . $args[1]->tolatex() .