--- loncom/interface/entities.pm 2008/04/14 09:33:39 1.6 +++ loncom/interface/entities.pm 2008/04/21 11:02:43 1.8 @@ -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\}', @@ -406,7 +408,7 @@ my %entities = { # ISO also documents a 'planck' entity. 295 => '\\ensuremath\{\hbar\}', - 'plank' => '\\ensuremath\{\hbar\}', + 'planck' => '\\ensuremath\{\hbar\}', # Latin extended-A HTML 4.01 entities: @@ -656,14 +658,15 @@ my %entities = { 8659 => '\\ensuremath\{\\Downarrow\}', 'dArr' => '\\ensuremath\{\\Downarrow\}', 8660 => '\\ensuremath\{\\Leftrightarrow\}', - 'vArr' => '\\ensuremath\{\\Updownarrow\}', + 'hArr' => '\\ensuremath\{\\Leftrightarrow\}', 8661 => '\\ensuremath\{\\Updownarrow\}', - 'lAarr' => '\\ensuremath\{\\Lleftarrow\}', + 'vArr' => '\\ensuremath\{\\Updownarrow\}', 8666 => '\\ensuremath\{\\Lleftarrow\}', - 'rAarr' => '\\ensuremath\{\\Rrightarrow\}', + 'lAarr' => '\\ensuremath\{\\Lleftarrow\}', 8667 => '\\ensuremath\{\\Rrightarrow\}', - 'rarrw' => '\\ensuremath\{\\rightsquigarrow\}', + 'rAarr' => '\\ensuremath\{\\Rrightarrow\}', 8669 => '\\ensuremath\{\\rightsquigarrow\}', + 'rarrw' => '\\ensuremath\{\\rightsquigarrow\}', # Mathematical operators. @@ -922,7 +925,7 @@ my %entities = { 'diams' => '\\ensuremath\{\\blacklozenge\}', 9830 => '\\ensuremath\{\\blacklozenge\}' -}; +); # # Convert a numerical entity (that does not exist in our hash) @@ -966,8 +969,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 +979,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 +1017,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__