--- loncom/interface/entities.pm 2008/04/14 09:33:39 1.6 +++ loncom/interface/entities.pm 2008/04/15 10:10:10 1.7 @@ -61,7 +61,9 @@ use strict; # Note numerical entities are essentially unicode character codes. # -my %entities = { +package Apache::entities; + +my %entities = ( # ---- ASCII code page: ---------------- @@ -181,7 +183,7 @@ my %entities = { 130 => ',', 131 => '\\textflorin ', 132 => ',,', # Low double left quotes. - 133 => '\\ensuremat\{\\ldots\}', + 133 => '\\ensuremath\{\\ldots\}', 134 => '\\ensuremath\{\\dagger\}', 135 => '\\ensuremath\{\\ddagger\}', 136 => '\\ensuremath\{\\wedge\}', @@ -922,7 +924,7 @@ my %entities = { 'diams' => '\\ensuremath\{\\blacklozenge\}', 9830 => '\\ensuremath\{\\blacklozenge\}' -}; +); # # Convert a numerical entity (that does not exist in our hash) @@ -966,8 +968,9 @@ sub entity_to_latex { # Try to look up the entity (text or numeric) in the hash: - my $latex = $entities{$entity}; - if ($latex) { + + my $latex = $entities{"$entity"}; + if (defined $latex) { return $latex; } # If the text is purely numeric we can do the UTF-8 conversion: @@ -975,7 +978,7 @@ sub entity_to_latex { if ($entity =~ /^\d$/) { return &entity_to_utf8($entity); } - # Can't do the conversion ... + # Can't do the conversion`< ... return " "; } @@ -1013,12 +1016,17 @@ sub replace_entities { } # Now the &text; entites; - while ($input =~/($\w;)/) { - ($start) = @-; - ($end) = @+; - $entity = substr($input, $start+1, $end-$start-2); - $latex = &entity_to_latex($entity); - substr($input, $start, $end-$start) = $latex; + while ($input =~/(&\w+;)/) { + ($start) = @-; + ($end) = @+; + $entity = substr($input, $start+1, $end-$start-2); + $latex = &entity_to_latex($entity); + substr($input, $start, $end-$start) = $latex; + } + return $input; } +1; + +__END__