--- loncom/homework/math_parser/ENode.pm 2015/06/30 17:42:14 1.3 +++ loncom/homework/math_parser/ENode.pm 2017/01/27 20:24:26 1.5 @@ -746,7 +746,12 @@ sub toTeX { } } when ("!") { - return($c0->toTeX()." !"); + my $s = $c0->toTeX(); + if ($c0->type == OPERATOR) { + $s = "(".$s.")"; + } + $s .= " !"; + return $s; } when ("%") { return($c0->toTeX()." \\% ".$c1->toTeX()); @@ -805,6 +810,14 @@ sub toTeX { when ("sqrt") { return "\\sqrt{".$c1->toTeX()."}"; } when ("abs") { return "|".$c1->toTeX()."|"; } when ("exp") { return "\\mathrm{e}^{".$c1->toTeX()."}"; } + when ("factorial") { + my $s = $c1->toTeX(); + if ($c1->type == OPERATOR) { + $s = "(".$s.")"; + } + $s .= " !"; + return $s; + } when ("diff") { if (scalar(@children) == 3) { return "\\frac{d}{d".$c2->toTeX()."} ".$c1->toTeX(); @@ -836,9 +849,14 @@ sub toTeX { return "\\lim_{".$c2->toTeX()." \\to ".$c3->toTeX(). "}".$c1->toTeX(); } else { - return "\\lim_{".$c2->toTeX()." \\to ".$c3->toTeX(). - (($c4->value eq "plus") ? "+" : "-"). - "}".$c1->toTeX(); + my $s = "\\lim_{".$c2->toTeX()." \\to ".$c3->toTeX(); + if ($c4->value eq "plus") { + $s .= "+"; + } elsif ($c4->value eq "minus") { + $s .= "-"; + } + $s .= "}".$c1->toTeX(); + return $s; } } when ("binomial") {