--- loncom/interface/entities.pm 2008/04/09 10:24:32 1.5 +++ 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 " "; } @@ -997,5 +1000,33 @@ sub entity_to_latex { # sub replace_entities { my ($input) = @_; + my $start; + my $end; + my $entity; + my $latex; + + # First the &#nnn; entities: + + while ($input =~ /(&\#\d+;)/) { + ($start) = @-; + ($end) = @+; + $entity = substr($input, $start+2, $end-$start-3); + $latex = &entity_to_latex($entity); + substr($input, $start, $end-$start) = $latex; + } + # 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; + + } + return $input; } +1; + +__END__