Diff for /loncom/interface/entities.pm between versions 1.3 and 1.9

version 1.3, 2008/03/31 11:01:25 version 1.9, 2008/04/28 10:33:35
Line 61  use strict; Line 61  use strict;
   
 #  Note numerical entities are essentially unicode character codes.  #  Note numerical entities are essentially unicode character codes.
 #  #
 my %entities = {  package Apache::entities;
   
   my %entities = (
   
     #  ---- ASCII code page: ----------------      #  ---- ASCII code page: ----------------
   
Line 78  my %entities = { Line 80  my %entities = {
     33       => "!",      33       => "!",
     34       => '"',      34       => '"',
     'quot'   => '"',      'quot'   => '"',
     35       => '\\\#',      35       => '\\#',
     36       => '\\\$',      36       => '\\$',
     37       => '\\%',      37       => '\%',
     38       => '\\&',      38       => '\&',
     'amp'    => '\\&',      'amp'    => '\&',
     39       => '\'', # Apostrophe      39       => '\'', # Apostrophe
     40       => '(',      40       => '(',
     41       => ')',      41       => ')',
     42       => '\*',      42       => '*',
     43       => '\+',      43       => '+',
     44       => ',', #  comma      44       => ',', #  comma
     45       => '-',      45       => '-',
     46       => '\.',      46       => '.',
     47       => '\/',      47       => '/',
     48       => '0',      48       => '0',
     49       => '1',      49       => '1',
     50       => '2',      50       => '2',
Line 104  my %entities = { Line 106  my %entities = {
     57       => '9',      57       => '9',
     58       => ':',      58       => ':',
     59       => ';',      59       => ';',
     60       => '\\ensuremath\{<\}',      60       => '\ensuremath{<}',
     'lt'     => '\\ensuremath\{<\}',      'lt'     => '\ensuremath{<}',
     61       => '\\ensuremath\{=\}',      61       => '\ensuremath{=}',
     62       => '\\ensuremath\{>\}',      62       => '\ensuremath{>}',
     'gt'     => '\\ensuremath\{>\}',      'gt'     => '\ensuremath{>}',
     63       => '\?',      63       => '?',
     64       => '@',      64       => '@',
     65       => 'A',      65       => 'A',
     66       => 'B',      66       => 'B',
Line 138  my %entities = { Line 140  my %entities = {
     89       => 'Y',      89       => 'Y',
     90       => 'Z',      90       => 'Z',
     91       => '[',      91       => '[',
     92       => '\\ensuremath\{\\setminus\}', # \setminus is \ with special spacing.      92       => '\ensuremath{\setminus}', # \setminus is \ with special spacing.
     93       => ']',      93       => ']',
     94       => '\\ensuremath\{\\wedge\}',      94       => '\ensuremath{\wedge}',
     95       => '\\underline\{\\makebox[2mm]\\{\\strut\}\}', # Underline 2mm of space for _      95       => '\underline{\makebox[2mm]{\strut}}', # Underline 2mm of space for _
     96       => '`',      96       => '`',
     97       => 'a',      97       => 'a',
     98       => 'b',      98       => 'b',
Line 169  my %entities = { Line 171  my %entities = {
     120      => 'x',      120      => 'x',
     121      => 'y',      121      => 'y',
     122      => 'z',      122      => 'z',
     123      => '\\{',      123      => '\{',
     124      => '\|',      124      => '|',
     125      => '\\}',      125      => '\}',
     126      => '\~',      126      => '\~',
   
     #   Controls and Latin-1 supplement.  Note that some entities that have      #   Controls and Latin-1 supplement.  Note that some entities that have
Line 179  my %entities = { Line 181  my %entities = {
     #   &#130;-&#160;      #   &#130;-&#160;
   
     130     => ',',      130     => ',',
     131     => '\\textflorin ',      131     => '\ensuremath{f}',
     132     => ',,', # Low double left quotes.      132     => ',,', # Low double left quotes.
     133     => '\\ensuremat\{\\ldots\}',      133     => '\ensuremath{\ldots}',
     134     => '\\ensuremath\{\\dagger\}',      134     => '\ensuremath{\dagger}',
     135     => '\\ensuremath\{\\ddagger\}',      135     => '\ensuremath{\ddagger}',
     136     => '\\ensuremath\{\\wedge\}',      136     => '\ensuremath{\wedge}',
     137     => '\\textperthousand ',      137     => '\textperthousand ',
     138     => '\\v\{S\}',      138     => '\v{S}',
     139     => '\\ensuremath\{<\}',      139     => '\ensuremath{<}',
     140     => '\{\\OE\}',      140     => '{\OE}',
           
     #  There's a gap here in my entity table      #  There's a gap here in my entity table
   
     145     => '\`',      145     => '`',
     146     => '\'',      146     => '\'',
     147     => '\`\`',      147     => '``',
     148     => '\'\'',      148     => '\'\'',
     149     => '\\ensuremath\{\\bullet\}',      149     => '\ensuremath{\bullet}',
     150     => '--',      150     => '--',
     151     => '---',      151     => '---',
     152     => '\\ensuremath\{\\sim\}',      152     => '\ensuremath{\sim}',
     153     => '\\texttrademark',      153     => '\texttrademark',
     154     => '\\v\{s\}',      154     => '\v{s}',
     155     => '\\ensuremath\{>\}',      155     => '\ensuremath{>}',
     156     => '\\oe ',      156     => '\oe ',
           
     # Another short gap:      # Another short gap:
   
     159     => '\\"Y',      159     => '\"Y',
     160     => '~',      160     => '~',
     'nbsp'  => '~',      'nbsp'  => '~',
     161     => '\\textexclamdown ',      161     => '\textexclamdown ',
     'iexcl' => '\\textexclamdown ',      'iexcl' => '\textexclamdown ',
     162     => '\\textcent ',      162     => '\textcent ',
     'cent'  => '\\textcent ',      'cent'  => '\textcent ',
     163     => '\\pounds ',      163     => '\pounds ',
     'pound' => '\\pounds ',      'pound' => '\pounds ',
     164     => '\\textcurrency ',      164     => '\textcurrency ',
     'curren' => '\\textcurrency ',      'curren' => '\textcurrency ',
     165     => '\\textyen ',      165     => '\textyen ',
     'yen'   => '\\textyen ',      'yen'   => '\textyen ',
     166     => '\\textbrokenbar ',      166     => '\textbrokenbar ',
     'brvbar' => '\\textbrokenbar ',      'brvbar' => '\textbrokenbar ',
     167     => '\\textsection ',      167     => '\textsection ',
     'sect'  => '\\textsection ',      'sect'  => '\textsection ',
     168     => '\\texthighdieresis ',      168     => '\"{}',
     'uml'   => '\\texthighdieresis ',      'uml'   => '\"{}',
     169     => '\\copyright ',      169     => '\copyright ',
     'copy'  => '\\copyright ',      'copy'  => '\copyright ',
     170     => '\\textordfeminine ',      170     => '\textordfeminine ',
     'ordf'  => '\\textordfeminine ',      'ordf'  => '\textordfeminine ',
     171     => '\\ensuremath\{\ll\}', # approximation of left angle quote.      171     => '\ensuremath{\ll}', # approximation of left angle quote.
     'laquo' => '\\ensuremath\{\ll\}', #   ""      'laquo' => '\ensuremath{\ll}', #   ""
     172     => '\\ensuremath\{\\neg\}',      172     => '\ensuremath{\neg}',
     'not'   => '\\ensuremath\{\\neg\}',      'not'   => '\ensuremath{\neg}',
     173     => ' - ',      173     => ' - ',
     'shy'   => ' - ',      'shy'   => ' - ',
     174     => '\\textregistered ',      174     => '\textregistered ',
     'reg'   => '\\textregistered ',      'reg'   => '\textregistered ',
     175     => '\\ensuremath\{^\{-\}\}',      175     => '\ensuremath{^{-}}',
     'macr'  => '\\ensuremath\{^\{-\}\}',      'macr'  => '\ensuremath{^{-}}',
     176     => '\\ensuremath\{^\{\\circ\}\}',      176     => '\ensuremath{^{\circ}}',
     'deg'   => '\\ensuremath\{^\{\\circ\}\}',      'deg'   => '\ensuremath{^{\circ}}',
     177     => '\\ensuremath\{\\pm\}',      177     => '\ensuremath{\pm}',
     'plusmn' => '\\ensuremath\{\\pm\}',      'plusmn' => '\ensuremath{\pm}',
     178     => '\\ensuremath\{^2\}',      178     => '\ensuremath{^2}',
     'sup2'  => '\\ensuremath\{^2\}',      'sup2'  => '\ensuremath{^2}',
     179     => '\\ensuremath\{^3\}',      179     => '\ensuremath{^3}',
     'sup3'  => '\\ensuremath\{^3\}',      'sup3'  => '\ensuremath{^3}',
     180     => '\\textacute ',      180     => "\\'{}",
     'acute' => '\\textacute ',      'acute' => "\\'{}",
     181     => '\\ensuremath\{\\mu\}',      181     => '\ensuremath{\mu}',
     'micro' => '\\ensuremath\{\\mu\}',      'micro' => '\ensuremath{\mu}',
     182     => '\\P ',      182     => '\P ',
     para    => '\\P ',      para    => '\P ',
     183     => '\\ensuremath\{\\cdot\}',      183     => '\ensuremath{\cdot}',
     'middot' => '\\ensuremath\{\\cdot\}',      'middot' => '\ensuremath{\cdot}',
     184     => '\\c\{\\strut\}',      184     => '\c{\strut}',
     'cedil' => '\\c\{\\strut\}',      'cedil' => '\c{\strut}',
     185     => '\\ensuremath\{^1\}',      185     => '\ensuremath{^1}',
     sup1    => '\\ensuremath\{^1\}',      sup1    => '\ensuremath{^1}',
     186     => '\\textordmasculine ',      186     => '\textordmasculine ',
     'ordm'  => '\\textordmasculine ',      'ordm'  => '\textordmasculine ',
     187     => '\\ensuremath\{\\gg\}',      187     => '\ensuremath{\gg}',
     'raquo' => '\\ensuremath\{\\gg\}',      'raquo' => '\ensuremath{\gg}',
     188     => '\\textonequarter ',      188     => '\textonequarter ',
     'frac14' => '\\textonequarter ',      'frac14' => '\textonequarter ',
     189     => '\\textonehalf' ,      189     => '\textonehalf' ,
     'frac12' => '\\textonehalf' ,      'frac12' => '\textonehalf' ,
     190     => '\\textthreequarters ',      190     => '\textthreequarters ',
     'frac34' => '\\textthreequarters ',      'frac34' => '\textthreequarters ',
     191     =>  '\\textquestiondown ',      191     =>  '\textquestiondown ',
     'iquest' => '\\textquestiondown ',      'iquest' => '\textquestiondown ',
     192     => '\\\`\{A\}',      192     => '\\`{A}',
     'Agrave' => '\\\`\{A\}',      'Agrave' => '\\`{A}',
     193     => '\\\'\{A\}',      193     => "\\'{A}",
     'Aacute' => '\\\'\{A\}',      'Aacute' => "\\'{A}",
     194     => '\\^\{A\}',      194     => '\^{A}',
     'Acirc' => '\\^\{A\}',      'Acirc' => '\^{A}',
     195     => '\\~{A}',      195     => '\~{A}',
     'Atilde'=> '\\~{A}',      'Atilde'=> '\~{A}',
     196     => '\\\"{A}',      196     => '\\"{A}',
     'Auml'  => '\\\"{A}',      'Auml'  => '\\"{A}',
     197     => '{\\AA}',      197     => '{\AA}',
     'Aring' => '{\\AA}',      'Aring' => '{\AA}',
     198     => '{\\AE}',      198     => '{\AE}',
     'AElig' => '{\\AE}',      'AElig' => '{\AE}',
     199     => '\\c{c}',      199     => '\c{c}',
     'Ccedil'=> '\\c{c}',      'Ccedil'=> '\c{c}',
     '200'   => '\\\`{E}',       200   =>  '\\`{E}',
     'Egrave'=> '\\\`{E}',      'Egrave'=> '\\`{E}',
     201     => '\\\'{E}',      201     => "\\'{E}",
     'Eacute'=> '\\\'{E}',      'Eacute'=> "\\'{E}",
     202     => '\\\^{E}',      202     => '\\^{E}',
     'Ecirc' => '\\\^{E}',      'Ecirc' => '\\^{E}',
     203     => '\\\"{E}',      203     => '\\"{E}',
     'Euml'  => '\\\"{E}',      'Euml'  => '\\"{E}',
     204     => '\\\`{I}',      204     => '\\`{I}',
     'Igrave'=> '\\\`{I}',      'Igrave'=> '\\`{I}',
     205     => '\\\'{I}',      205     => "\\'{I}",
     'Iacute'=> '\\\'{I}',      'Iacute'=> "\\'{I}",
     206     => '\\\^{I}',      206     => '\\^{I}',
     'Icirc' => '\\\^{I}',      'Icirc' => '\\^{I}',
     207     => '\\\"{I}',      207     => '\\"{I}',
     'Iuml'  => '\\\"{I}',      'Iuml'  => '\\"{I}',
     208     => '\\OE',      208     => '\DH',
     'ETH'   => '\\OE',      'ETH'   => '\DH',
     209     => '\\~{N}',      209     => '\~{N}',
     'Ntilde'=> '\\~{N}',      'Ntilde'=> '\~{N}',
     210     => '\\\`{O}',      210     => '\\`{O}',
     'Ograve'=> '\\\`{O}',      'Ograve'=> '\\`{O}',
     211     => '\\\'{O}',      211     => "\\'{O}",
     'Oacute'=> '\\\'{O}',      'Oacute'=> "\\'{O}",
     212     => '\\\^{O}',      212     => '\\^{O}',
     'Ocirc' => '\\\^{O}',      'Ocirc' => '\\^{O}',
     213     => '\\~{O}',      213     => '\~{O}',
     'Otilde'=> '\\~{O}',      'Otilde'=> '\~{O}',
     214     => '\\\"{O}',      214     => '\\"{O}',
     'Ouml'  => '\\\"{O}',      'Ouml'  => '\\"{O}',
     215     => '\\ensuremath\{\\times\}',      215     => '\ensuremath{\times}',
     'times' => '\\ensuremath\{\\times\}',      'times' => '\ensuremath{\times}',
     216     => '\\O',      216     => '\O',
     'Oslash'=> '\\O',      'Oslash'=> '\O',
     217     => '\\\`{U}',      217     => '\\`{U}',
     'Ugrave'=> '\\\`{U}',      'Ugrave'=> '\\`{U}',
     218     => '\\\'{U}',      218     => "\\'{U}",
     'Uacute'=> '\\\'{U}',      'Uacute'=> "\\'{U}",
     219     => '\\\^{U}',      219     => '\\^{U}',
     'Ucirc' => '\\\^{U}',      'Ucirc' => '\\^{U}',
     220     => '\\\"{U}',      220     => '\\"{U}',
     'Uuml'  => '\\\"{U}',      'Uuml'  => '\\"{U}',
     221     => '\\\'{Y}',      221     => "\\'{Y}",
     'Yacute'=> '\\\'{Y}',      'Yacute'=> "\\'{Y}",
     222     => '\\TH',      223     => '{\ss}',
     'THORN' => '\\TH',      'szlig' => '{\ss}',
     223     => '{\\sz}',      224     => '\\`{a}',
     'szlig' => '{\\sz}',      'agrave'=> '\\`{a}',
     224     => '\\\`{a}',      225     => "\\'{a}",
     'agrave'=> '\\\`{a}',      'aacute'=> "\\'{a}",
     225     => '\\\'{a}',      226     => '\\^{a}',
     'aacute'=> '\\\'{a}',      'acirc' => '\\^{a}',
     226     => '\\\^{a}',      227     => '\\~{a}',
     'acirc' => '\\\^{a}',      'atilde'=> '\\~{a}',
     227     => '\\\~{a}',      228     => '\\"{a}',
     'atilde'=> '\\\~{a}',      'auml'  => '\\"{a}',
     228     => '\\\"{a}',      229     => '\aa',
     'auml'  => '\\\"{a}',      'aring' => '\aa',
     229     => '\\aa',      230     => '\ae',
     'aring' => '\\aa',      'aelig' => '\ae',
     230     => '\\ae',      231     => '\c{c}',
     'aelig' => '\\ae',      'ccedil'=> '\c{c}',
     231     => '\\c{c}',      232     => '\\`{e}',
     'ccedil'=> '\\c{c}',      'egrave'=> '\\`{e}',
     232     => '\\\`{e}',      233     => "\\'{e}",
     'egrave'=> '\\\`{e}',      'eacute'=> "\\'{e}",
     233     => '\\\'{e}',      234     => '\\^{e}',
     'eacute'=> '\\\'{e}',      'ecirc' => '\\^{e}',
     234     => '\\\^{e}',      235     => '\\"{e}',
     'ecirc' => '\\\^{e}',      'euml'  => '\\"{e}',
     235     => '\\\"{e}',      236     => '\\`{i}',
     'euml'  => '\\\"{e}',      'igrave'=> '\\`{i}',
     236     => '\\\`{i}',      237     => "\\'{i}",
     'igrave'=> '\\\`{i}',      'iacute'=> "\\'{i}",
     237     => '\\\'{i}',      238     => '\\^{i}',
     'iacute'=> '\\\'{i}',      'icirc' => '\\^{i}',
     238     => '\\\^{i}',      239     => '\\"{i}',
     'icirc' => '\\\^{i}',      'iuml'  => '\\"{i}',
     239     => '\\\"{i}',      241     => '\\~{n}',
     'iuml'  => '\\\"{i}',      'ntilde'=> '\\~{n}',
     240     => '\\dh',      242     => '\\`{o}',
     'eth'   => '\\dh',      'ograve'=> '\\`{o}',
     241     => '\\\~{n}',      243     => "\\'{o}",
     'ntilde'=> '\\\~{n}',      'oacute'=> "\\'{o}",
     242     => '\\\`{o}',      244     => '\\^{o}',
     'ograve'=> '\\\`{o}',      'ocirc' => '\\^{o}',
     243     => '\\\'{o}',      245     => '\\~{o}',
     'oacute'=> '\\\'{o}',      'otilde'=> '\\~{o}',
     244     => '\\\^{o}',      246     => '\\"{o}',
     'ocirc' => '\\\^{o}',      'ouml'  => '\\"{o}',
     245     => '\\\~{o}',      247     => '\ensuremath{\div}',
     'otilde'=> '\\\~{o}',      'divide'=> '\ensuremath{\div}',
     246     => '\\\"{o}',      248     => '{\o}',
     'ouml'  => '\\\"{o}',      'oslash'=> '{\o}',
     247     => '\\ensuremath\{\\div\}',      249     => '\\`{u}',
     'divide'=> '\\ensuremath\{\\div\}',      'ugrave'=> '\\`{u}',
     248     => '{\\o}',      250     => "\\'{u}",
     'oslash'=> '{\\o}',      'uacute'=> "\\'{u}",
     249     => '\\\`{u}',      251     => '\\^{u}',
     'ugrave'=> '\\\`{u}',      'ucirc' => '\\^{u}',
     250     => '\\\'{u}',      252     => '\\"{u}',
     'uacute'=> '\\\'{u}',      'uuml'  => '\\"{u}',
     251     => '\\\^{u}',      253     => "\\'{y}",
     'ucirc' => '\\\^{u}',      'yacute'=> "\\'{y}",
     252     => '\\\"{u}',      255     => '\\"{y}',
     'uuml'  => '\\\"{u}',      'yuml'  => '\\"{y}',
     253     => '\\\'{y}',  
     'yacute'=> '\\\'{y}',  
     254     => '\\th',  
     'thorn' => '\\th',  
     255     => '\\\"{y}',  
     'yuml'  => '\\\"{y}',  
   
     # hbar entity number comes from the unicode charater:      # hbar entity number comes from the unicode charater:
     # see e.g. http://www.unicode.org/charts/PDF/U0100.pdf      # see e.g. http://www.unicode.org/charts/PDF/U0100.pdf
     # ISO also documents a 'planck' entity.      # ISO also documents a 'planck' entity.
   
     295     => '\\ensuremath\{\hbar\}',      295     => '\ensuremath{\hbar}',
     'plank' => '\\ensuremath\{\hbar\}',      'planck' => '\ensuremath{\hbar}',
   
     # Latin extended-A HTML 4.01 entities:      # Latin extended-A HTML 4.01 entities:
   
     338      => '\\OE',      338      => '\OE',
     'OElig'  => '\\OE',      'OElig'  => '\OE',
     339      => '\\oe',      339      => '\oe',
     'oelig'  => '\\oe',      'oelig'  => '\oe',
     352      => '\\v{S}',      352      => '\v{S}',
     'Scaron' => '\\v{S}',      'Scaron' => '\v{S}',
     353      => '\\v{s}',      353      => '\v{s}',
     'scaron' => '\\v{s}',      'scaron' => '\v{s}',
     376      => '\\\"{Y}',      376      => '\\"{Y}',
     'Yuml'   => '\\\"{Y}',       'Yuml'   => '\\"{Y}', 
   
   
     # Latin extended B HTML 4.01 entities      # Latin extended B HTML 4.01 entities
   
     402      => '\\ensuremath{f}',      402      => '\ensuremath{f}',
     'fnof'   => '\\ensuremath{f}',      'fnof'   => '\ensuremath{f}',
   
     # Spacing modifier letters:      # Spacing modifier letters:
           
Line 436  my %entities = { Line 432  my %entities = {
   
     # Greek uppercase:      # Greek uppercase:
   
     913      => '\\ensuremath\{\\mathrm\{A\}\}',      913      => '\ensuremath{\mathrm{A}}',
     'Alpha'  => '\\ensuremath\{\\mathrm\{A\}\}',      'Alpha'  => '\ensuremath{\mathrm{A}}',
     914      => '\\ensuremath\{\\mathrm\{B\}\}',      914      => '\ensuremath{\mathrm{B}}',
     'Beta'   => '\\ensuremath\{\\mathrm\{B\}\}',      'Beta'   => '\ensuremath{\mathrm{B}}',
     915      => '\\ensuremath\{\\Gamma\}',      915      => '\ensuremath{\Gamma}',
     'Gamma'  => '\\ensuremath\{\\Gamma\}',      'Gamma'  => '\ensuremath{\Gamma}',
     916      => '\\ensuremath\{\\Delta\}',      916      => '\ensuremath{\Delta}',
     'Delta'  => '\\ensuremath\{\\Delta\}',      'Delta'  => '\ensuremath{\Delta}',
     917      => '\\ensuremath\{\\mathrm\{E\}\}',      917      => '\ensuremath{\mathrm{E}}',
     'Epsilon'=> '\\ensuremath\{\\mathrm\{E\}\}',      'Epsilon'=> '\ensuremath{\mathrm{E}}',
     918      => '\\ensuremath\{\\mathrm\{Z\}\}',      918      => '\ensuremath{\mathrm{Z}}',
     'Zeta'   => '\\ensuremath\{\\mathrm\{Z\}\}',      'Zeta'   => '\ensuremath{\mathrm{Z}}',
     919      => '\\ensuremath\{\\mathrm\{H\}\}',      919      => '\ensuremath{\mathrm{H}}',
     'Eta'    => '\\ensuremath\{\\mathrm\{H\}\}',      'Eta'    => '\ensuremath{\mathrm{H}}',
     920      => '\\ensuremath\{\\Theta\}',      920      => '\ensuremath{\Theta}',
     'Theta'  => '\\ensuremath\{\\Theta\}',      'Theta'  => '\ensuremath{\Theta}',
     921      => '\\ensuremath\{\\mathrm\{I\}\}',      921      => '\ensuremath{\mathrm{I}}',
     'Iota'   => '\\ensuremath\{\\mathrm\{I\}\}',      'Iota'   => '\ensuremath{\mathrm{I}}',
     922      => '\\ensuremath\{\\mathrm\{K\}\}',      922      => '\ensuremath{\mathrm{K}}',
     'Kappa'  => '\\ensuremath\{\\mathrm\{K\}\}',      'Kappa'  => '\ensuremath{\mathrm{K}}',
     923      => '\\ensuremath\{\\Lambda\}',      923      => '\ensuremath{\Lambda}',
     'Lambda' => '\\ensuremath\{\\Lambda\}',      'Lambda' => '\ensuremath{\Lambda}',
     924      => '\\ensuremath\{\\mathrm\{M\}\}',      924      => '\ensuremath{\mathrm{M}}',
     'Mu'     => '\\ensuremath\{\\mathrm\{M\}\}',      'Mu'     => '\ensuremath{\mathrm{M}}',
     925      => '\\ensuremath\{\\mathrm\{N\}\}',      925      => '\ensuremath{\mathrm{N}}',
     'Nu'     => '\\ensuremath\{\\mathrm\{N\}\}',      'Nu'     => '\ensuremath{\mathrm{N}}',
     926      => '\\ensuremath\{\\mathrm\{\\Xi\}',      926      => '\ensuremath{\mathrm{\Xi}}',
     'Xi'     => '\\ensuremath\{\\mathrm\{\\Xi\}',      'Xi'     => '\ensuremath{\mathrm{\Xi}}',
     927      => '\\ensuremath\{\\mathrm\{O\}\}',      927      => '\ensuremath{\mathrm{O}}',
     'Omicron'=> '\\ensuremath\{\\mathrm\{O\}\}',      'Omicron'=> '\ensuremath{\mathrm{O}}',
     928      => '\\ensuremath\{\\Pi\}',      928      => '\ensuremath{\Pi}',
     'Pi'     => '\\ensuremath\{\\Pi\}',      'Pi'     => '\ensuremath{\Pi}',
     929      => '\\ensuremath\{\\mathrm\{P\}\}',      929      => '\ensuremath{\mathrm{P}}',
     'Rho'    => '\\ensuremath\{\\mathrm\{P\}\}',      'Rho'    => '\ensuremath{\mathrm{P}}',
         
     # Skips 930      # Skips 930
   
     931      => '\\ensuremath\{\Sigma\}',      931      => '\ensuremath{\Sigma}',
     'Sigma'  => '\\ensuremath\{\Sigma\}',      'Sigma'  => '\ensuremath{\Sigma}',
     932      => '\\ensuremath\{\\mathrm\{T\}\}',      932      => '\ensuremath{\mathrm{T}}',
     'Tau'    => '\\ensuremath\{\\mathrm\{T\}\}',      'Tau'    => '\ensuremath{\mathrm{T}}',
     933      => '\\ensuremath\{\\Upsilon\}',      933      => '\ensuremath{\Upsilon}',
     'Upsilon'=> '\\ensuremath\{\\Upsilon\}',      'Upsilon'=> '\ensuremath{\Upsilon}',
     934      => '\\ensuremath\{\\Phi\}',      934      => '\ensuremath{\Phi}',
     'Phi'    => '\\ensuremath\{\\Phi\}',      'Phi'    => '\ensuremath{\Phi}',
     935      => '\\ensuremath\{\\mathrm\{X\}\}',      935      => '\ensuremath{\mathrm{X}}',
     'Chi'    => '\\ensuremath\{\\mathrm\{X\}\}',      'Chi'    => '\ensuremath{\mathrm{X}}',
     936      => '\\ensuremath\{\\Psi\}',      936      => '\ensuremath{\Psi}',
     'Psi'    => '\\ensuermath\{\\Psi\}',      'Psi'    => '\ensuremath{\Psi}',
     937      => '\\ensuremath\{\\Omega\}',      937      => '\ensuremath{\Omega}',
     'Omega'  => '\\ensuremath\{\\Omega\}',      'Omega'  => '\ensuremath{\Omega}',
   
   
     # Greek lowercase:      # Greek lowercase:
   
     945      => '\\ensuremath\{\\alpha\}',      945      => '\ensuremath{\alpha}',
     'alpha'  => '\\ensuremath\{\\alpha\}',      'alpha'  => '\ensuremath{\alpha}',
     946      => '\\ensuremath\{\\beta\}',      946      => '\ensuremath{\beta}',
     'beta'   => '\\ensuremath\{\\beta\}',      'beta'   => '\ensuremath{\beta}',
     947      => '\\ensuremath\{\\gamma\}',      947      => '\ensuremath{\gamma}',
     'gamma'  => '\\ensuremath\{\\gamma\}',      'gamma'  => '\ensuremath{\gamma}',
     948      => '\\ensuremath\{\\delta\}',      948      => '\ensuremath{\delta}',
     'delta'  => '\\ensuremath\{\\delta\}',      'delta'  => '\ensuremath{\delta}',
     949      => '\\ensuremath\{\\epsilon\}',      949      => '\ensuremath{\epsilon}',
     'epsilon'=> '\\ensuremath\{\\epsilon\}',      'epsilon'=> '\ensuremath{\epsilon}',
     950      => '\\ensuremath\{\\zeta\}',      950      => '\ensuremath{\zeta}',
     'zeta'   => '\\ensuremath\{\\zeta\}',      'zeta'   => '\ensuremath{\zeta}',
     951      => '\\ensuremath\{\\eta\}',      951      => '\ensuremath{\eta}',
     'eta'    => '\\ensuremath\{\\eta\}',      'eta'    => '\ensuremath{\eta}',
     952      => '\\ensuremath\{\\theta\}',      952      => '\ensuremath{\theta}',
     'theta'  => '\\ensuremath\{\\theta\}',      'theta'  => '\ensuremath{\theta}',
     953      => '\\ensuremath\{\\iota\}',      953      => '\ensuremath{\iota}',
     'iota'   => '\\ensuremath\{\\iota\}',      'iota'   => '\ensuremath{\iota}',
     954      => '\\ensuremath\{\\kappa\}',      954      => '\ensuremath{\kappa}',
     'kappa'  => '\\ensuremath\{\\kappa\}',      'kappa'  => '\ensuremath{\kappa}',
     955      => '\\ensuremath\{\\lambda\}',      955      => '\ensuremath{\lambda}',
     'lambda' => '\\ensuremath\{\\lambda\}',      'lambda' => '\ensuremath{\lambda}',
     956      => '\\ensuremath\{\\mu\}',      956      => '\ensuremath{\mu}',
     'mu'     => '\\ensuremath\{\\mu\}',      'mu'     => '\ensuremath{\mu}',
     957      => '\\ensuremath\{\\nu\}',      957      => '\ensuremath{\nu}',
     'nu'     => '\\ensuremath\{\\nu\}',      'nu'     => '\ensuremath{\nu}',
     958      => '\\ensuremath\{\\xi\}',      958      => '\ensuremath{\xi}',
     'xi'     => '\\ensuremath\{\\xi\}',      'xi'     => '\ensuremath{\xi}',
     959      => '\\ensuremath\{o\}',      959      => '\ensuremath{o}',
     'omicron'=> '\\ensuremath\{o\}',      'omicron'=> '\ensuremath{o}',
     960      => '\\ensuremath\{\\pi\}',      960      => '\ensuremath{\pi}',
     'pi'     => '\\ensuremath\{\\pi\}',      'pi'     => '\ensuremath{\pi}',
     961      => '\\ensuremath\{\\rho\}',      961      => '\ensuremath{\rho}',
     'rho'    => '\\ensuremath\{\\rho\}',      'rho'    => '\ensuremath{\rho}',
     962      => '\\ensuremath\{\\varsigma\}',      962      => '\ensuremath{\varsigma}',
     'sigmaf' => '\\ensuremath\{\\varsigma\}',      'sigmaf' => '\ensuremath{\varsigma}',
     963      => '\\ensuremath\{\\sigma\}',      963      => '\ensuremath{\sigma}',
     'sigma'  => '\\ensuremath\{\\sigma\}',      'sigma'  => '\ensuremath{\sigma}',
     964      => '\\ensuremath\{\\tau\}',      964      => '\ensuremath{\tau}',
     'tau'    => '\\ensuremath\{\\tau\}',      'tau'    => '\ensuremath{\tau}',
     965      => '\\ensuremath\{\\upsilon\}',      965      => '\ensuremath{\upsilon}',
     'upsilon'=> '\\ensuremath\{\\upsilon\}',      'upsilon'=> '\ensuremath{\upsilon}',
     966      => '\\ensuremath\{\\phi\}',      966      => '\ensuremath{\phi}',
     'phi'    => '\\ensuremath\{\\phi\}',      'phi'    => '\ensuremath{\phi}',
     967      => '\\ensuremath\{\\chi\}',      967      => '\ensuremath{\chi}',
     'chi'    => '\\ensuremath\{\\chi\}',      'chi'    => '\ensuremath{\chi}',
     968      => '\\ensuremath\{\\psi\}',      968      => '\ensuremath{\psi}',
     'psi'    => '\\ensuremath\{\\psi\}',      'psi'    => '\ensuremath{\psi}',
     969      => '\\ensuremath\{\\omega\}',      969      => '\ensuremath{\omega}',
     'omega'  => '\\ensuremath\{\\omega\}',      'omega'  => '\ensuremath{\omega}',
     977      => '\\ensuremath\{\\vartheta\}',      977      => '\ensuremath{\vartheta}',
     'thetasym'=>'\\ensuremath\{\\vartheta\}',      'thetasym'=>'\ensuremath{\vartheta}',
     978      => '\\ensuremath\{\\varUpsilon\}',      978      => '\ensuremath{\mathit{\Upsilon}}',
     'upsih'  => '\\ensuremath\{\\varUpsilon\}',      'upsih'  => '\ensuremath{\mathit{\Upsilon}}',
     982      => '\\ensuremath\{\\varpi\}',      982      => '\ensuremath{\varpi}',
     'piv'    => '\\ensuremath\{\\varpi\}',      'piv'    => '\ensuremath{\varpi}',
   
           
     # The general punctuation set:      # The general punctuation set:
   
     8194,    => '\\hspace{.5em}',      8194,    => '\hspace{.5em}',
     'enspc'  => '\\hspace{.5em}',      'enspc'  => '\hspace{.5em}',
     8195     => '\\hspace{1.0em}',      8195     => '\hspace{1.0em}',
     'emspc'  => '\\hspace{1.0em}',      'emspc'  => '\hspace{1.0em}',
     8201     => '\\hspace{0.167em}',      8201     => '\hspace{0.167em}',
     'thinsp' => '\\hspace{0.167em}',      'thinsp' => '\hspace{0.167em}',
     8204     => '\{\}',      8204     => '{}',
     'zwnj'   => '\{\}',      'zwnj'   => '{}',
     8205     => '',      8205     => '',
     'zwj'    => '',      'zwj'    => '',
     8206     => '',      8206     => '',
Line 573  my %entities = { Line 569  my %entities = {
     'lsquo'  => '`',      'lsquo'  => '`',
     8217     => "'",      8217     => "'",
     'rsquo'  => "'",      'rsquo'  => "'",
     8218     => '\\quotesinglebase',      8218     => '\quotesinglbase',
     'sbquo'  => '\\quotesinglebase',      'sbquo'  => '\quotesinglbase',
     8220     => '``',      8220     => '``',
     'ldquo'  => '``',      'ldquo'  => '``',
     8221     => "''",      8221     => "''",
     'rdquo'  => "''",      'rdquo'  => "''",
     8222     => '\\quotedblbase',      8222     => '\quotedblbase',
     'bdquo'  => '\\quotedblbase',      'bdquo'  => '\quotedblbase',
     8224     => '\\dagger',      8224     => '\ensuremath{\dagger}',
     'dagger' => '\\dagger',      'dagger' => '\ensuremath{\dagger}',
     '8225'   => '\\ddag',      '8225'   => '\ensuremath{\ddag}',
     'Dagger' => '\\ddag',      'Dagger' => '\ensuremath{\ddag}',
     8226     => '\\textbullet',      8226     => '\textbullet',
     'bull'   => '\\textbullet',      'bull'   => '\textbullet',
     8230     => '\\textellipsis',      8230     => '\textellipsis',
     'hellep' => '\\textellipsis',      'hellep' => '\textellipsis',
     8240     => '\\textperthousand',      8240     => '\textperthousand',
     permil   => '\\textperthousand',      permil   => '\textperthousand',
     8242     => '\\textquotesingle',      8242     => '\textquotesingle',
     'prime'  => '\\textquotesingle',      'prime'  => '\textquotesingle',
     8243     => '\\textquotedbl',      8243     => '\textquotedbl',
     'Prime'  => '\\textquotedbl',      'Prime'  => '\textquotedbl',
     8249     => '\\guilsingleleft',      8249     => '\guilsinglleft',
     'lsaquo' => '\\guilsingleleft',      'lsaquo' => '\guilsinglleft',
     8250     => '\\guilsingleright',      8250     => '\guilsinglright',
     'rsaquo' => '\\guilsingleright',      'rsaquo' => '\guilsinglright',
     8254     => '\\textasciimacron',      8254     => '\textasciimacron',
     oline    => '\\textasciimacron',      oline    => '\textasciimacron',
     8260     => '\\textfractionsolidus',      8260     => '\textfractionsolidus',
     'frasl'  => '\\textfractionsolidus',      'frasl'  => '\textfractionsolidus',
     8364     => '\\texteuro',      8364     => '\texteuro',
     'euro'   => '\\texteuro',      'euro'   => '\texteuro',
   
     # Letter like symbols      # Letter like symbols
   
           
     8472     => '\\ensuremath\{\\wp\}',      8472     => '\ensuremath{\wp}',
     'weierp' => '\\ensuremath\{\\wp\}',      'weierp' => '\ensuremath{\wp}',
     8465     => '\\ensuremath\{\\Im\}',      8465     => '\ensuremath{\Im}',
     'image'  => '\\ensuremath\{\\Im\}',      'image'  => '\ensuremath{\Im}',
     8476     => '\\ensuremath{\\Re\}',      8476     => '\ensuremath{\Re}',
     'real'   => '\\ensuremath{\\Re\}',      'real'   => '\ensuremath{\Re}',
     8482     => '\\texttrademark',      8482     => '\texttrademark',
     'trade'  => '\\texttrademark',      'trade'  => '\texttrademark',
     8501     => '\\ensuremath{\\aleph\}',      8501     => '\ensuremath{\aleph}',
     'alefsym'=> '\\ensuremath{\\aleph\}',      'alefsym'=> '\ensuremath{\aleph}',
   
     # Arrows and then some (harpoons from Hon Kie).      # Arrows and then some (harpoons from Hon Kie).
   
     8592     => '\\textleftarrow',      8592     => '\textleftarrow',
     'larr'   => '\\textleftarrow',      'larr'   => '\textleftarrow',
     8593     => '\\textuparrow',      8593     => '\textuparrow',
     'uarr'   => '\\textuparrow',      'uarr'   => '\textuparrow',
     8594     => '\\textrightarrow',      8594     => '\textrightarrow',
     'rarr'   => '\\textrightarrow',      'rarr'   => '\textrightarrow',
     8595     => '\\textdownarrow',      8595     => '\textdownarrow',
     'darr'   => '\\textdownarrow',      'darr'   => '\textdownarrow',
     8596     => '\\ensuremath\{\\leftrightarrow\}',      8596     => '\ensuremath{\leftrightarrow}',
     'harr'   => '\\ensuremath\{\\leftrightarrow\}',      'harr'   => '\ensuremath{\leftrightarrow}',
     8598     => '\\ensuremath\{\\nwarrow\}',      8598     => '\ensuremath{\nwarrow}',
     8599     => '\\ensuremath\{\\nearrow\}',      8599     => '\ensuremath{\nearrow}',
     8600     => '\\ensuremath\{\\searrow\}',      8600     => '\ensuremath{\searrow}',
     8601     => '\\ensuremath\{\\swarrow\}',      8601     => '\ensuremath{\swarrow}',
     8605     => '\\ensuremath\{\\leadsto\}',      8605     => '\ensuremath{\leadsto}',
     8614     => '\\ensuremath\{\\mapsto\}',      8614     => '\ensuremath{\mapsto}',
     8617     => '\\ensuremath\{\\hookleftarrow\}',      8617     => '\ensuremath{\hookleftarrow}',
     8618     => '\\ensuremath\{\\hookrightarrow\}',      8618     => '\ensuremath{\hookrightarrow}',
     8629     => '\\ensuremath\{\\hookleftarrow\}', # not an exact match but best I know.      8629     => '\ensuremath{\hookleftarrow}', # not an exact match but best I know.
     'crarr'  => '\\ensuremath\{\\hookleftarrow\}', # not an exact match but best I know.      'crarr'  => '\ensuremath{\hookleftarrow}', # not an exact match but best I know.
     8636     => '\\ensuremath\{\\leftharpoonup\}',      8636     => '\ensuremath{\leftharpoonup}',
     8637     => '\\ensuremath\{\\leftharpoondown\}',      8637     => '\ensuremath{\leftharpoondown}',
     8640     => '\\ensuremath\{\\rightharpoonup\}',      8640     => '\ensuremath{\rightharpoonup}',
     8641     => '\\ensuremath\{\\rightharpoondown\}',      8641     => '\ensuremath{\rightharpoondown}',
     8652     => '\\ensuremath\{\\rightleftharpoons\}',      8652     => '\ensuremath{\rightleftharpoons}',
     8656     => '\\ensuremath\{\\Leftarrow\}',      8656     => '\ensuremath{\Leftarrow}',
     'lArr'   => '\\ensuremath\{\\Leftarrow\}',      'lArr'   => '\ensuremath{\Leftarrow}',
     8657     => '\\ensuremath\{\\Uparrow\}',      8657     => '\ensuremath{\Uparrow}',
     'uArr'   => '\\ensuremath\{\\Uparrow\}',      'uArr'   => '\ensuremath{\Uparrow}',
     8658     => '\\ensuremath\{\\Rightarrow\}',      8658     => '\ensuremath{\Rightarrow}',
     'rArr'   => '\\ensuremath\{\\Rightarrow\}',      'rArr'   => '\ensuremath{\Rightarrow}',
     8659     => '\\ensuremath\{\\Downarrow\}',      8659     => '\ensuremath{\Downarrow}',
     'dArr'   => '\\ensuremath\{\\Downarrow\}',      'dArr'   => '\ensuremath{\Downarrow}',
     8660     => '\\ensuremath\{\\Leftrightarrow\}',      8660     => '\ensuremath{\Leftrightarrow}',
     'vArr'   => '\\ensuremath\{\\Updownarrow\}',      'hArr'   => '\ensuremath{\Leftrightarrow}',
     8661     => '\\ensuremath\{\\Updownarrow\}',      8661     => '\ensuremath{\Updownarrow}',
     'lAarr'   => '\\ensuremath\{\\Lleftarrow\}',      'vArr'   => '\ensuremath{\Updownarrow}',
     8666     => '\\ensuremath\{\\Lleftarrow\}',      8666     => '\ensuremath{\Lleftarrow}',
     'rAarr'  => '\\ensuremath\{\\Rrightarrow\}',      'lAarr'   => '\ensuremath{\Lleftarrow}',
     8667     => '\\ensuremath\{\\Rrightarrow\}',      8667     => '\ensuremath{\Rrightarrow}',
     'rarrw'  => '\\ensuremath\{\\rightsquigarrow\}',      'rAarr'  => '\ensuremath{\Rrightarrow}',
     8669     => '\\ensuremath\{\\rightsquigarrow\}',      8669     => '\ensuremath{\rightsquigarrow}',
       'rarrw'  => '\ensuremath{\rightsquigarrow}',
           
   
     # Mathematical operators.      # Mathematical operators.
   
           
     'forall' => '\\ensuremath\{\\forall\}',      'forall' => '\ensuremath{\forall}',
     8704     => '\\ensuremath\{\\forall\}',      8704     => '\ensuremath{\forall}',
     'comp'   => '\\ensuremath\{\\complement\}',      'comp'   => '\ensuremath{\complement}',
     8705     => '\\ensuremath\{\\complement\}',      8705     => '\ensuremath{\complement}',
     'part'   => '\\ensuremath\{\\partial\}',      'part'   => '\ensuremath{\partial}',
     8706     => '\\ensuremath\{\\partial\}',      8706     => '\ensuremath{\partial}',
     'exist'  => '\\ensuremath\{\\exists\}',      'exist'  => '\ensuremath{\exists}',
     8707     => '\\ensuremath\{\\exists\}',      8707     => '\ensuremath{\exists}',
     'nexist' => '\\ensuremath\{\\nexists\}',      'nexist' => '\ensuremath{\nexists}',
     8708     => '\\ensuremath\{\\nexists\}',      8708     => '\ensuremath{\nexists}',
     'empty'  => '\\ensuremath\{\\emptysset\}',      'empty'  => '\ensuremath{\emptyset}',
     8709     => '\\ensuremath\{\\emptysset\}',      8709     => '\ensuremath{\emptyset}',
     8710     => '\\ensuremath\{\\Delta\}',      8710     => '\ensuremath{\Delta}',
     'nabla'  => '\\ensuremath\{\\nabla\}',      'nabla'  => '\ensuremath{\nabla}',
     8711     => '\\ensuremath\{\\nabla\}',      8711     => '\ensuremath{\nabla}',
     'isin'   => '\\ensuremath\{\\in\}',      'isin'   => '\ensuremath{\in}',
     8712     => '\\ensuremath\{\\in\}',      8712     => '\ensuremath{\in}',
     'notin'  => '\\ensuremath\{\\notin\}',      'notin'  => '\ensuremath{\notin}',
     8713     => '\\ensuremath\{\\notin\}',      8713     => '\ensuremath{\notin}',
     ni       => '\\ensuremath\{\\ni\}',      ni       => '\ensuremath{\ni}',
     8715     => '\\ensuremath\{\\ni\}',      8715     => '\ensuremath{\ni}',
     8716     => '\\ensuremath\{\\not\\ni\}',      8716     => '\ensuremath{\not\ni}',
     'prod'   => '\\ensuremath\{\\prod\}',      'prod'   => '\ensuremath{\prod}',
     8719     => '\\ensuremath\{\\prod\}',      8719     => '\ensuremath{\prod}',
     8720     => '\\ensuremath\{\\coprod\}',      8720     => '\ensuremath{\coprod}',
     'sum'    => '\\ensuremath\{\\sum\}',      'sum'    => '\ensuremath{\sum}',
     8721     => '\\ensuremath\{\\sum\}',      8721     => '\ensuremath{\sum}',
     'minus'  => '\\ensuremath\{-\}',      'minus'  => '\ensuremath{-}',
     8722     => '\\ensuremath\{-\}',      8722     => '\ensuremath{-}',
     8723     => '\\ensuremath\{\\mp\}',      8723     => '\ensuremath{\mp}',
     8724     => '\\ensuremath\{\\dotplus\}',      8724     => '\ensuremath{\dotplus}',
     8725     => '\\ensuremath\{\\diagup\}',      8725     => '\ensuremath{\diagup}',
     8726     => '\\ensuremath\{\\smallsetminus\}',      8726     => '\ensuremath{\smallsetminus}',
     'lowast' => '\\ensuremath\{*\}',      'lowast' => '\ensuremath{*}',
     8727     => '\\ensuremath\{*\}',      8727     => '\ensuremath{*}',
     8728     => '\\ensuremath\{\\circ\}',      8728     => '\ensuremath{\circ}',
     8729     => '\\ensuremath\{\\bullet\}',      8729     => '\ensuremath{\bullet}',
     'radic'  => '\\ensuremath\{\\surd\}',      'radic'  => '\ensuremath{\surd}',
     8730     => '\\ensuremath\{\\surd\}',      8730     => '\ensuremath{\surd}',
     8731     => '\\ensuremath\{\\sqrt[3]\{\}\}',      8731     => '\ensuremath{\sqrt[3]{}}',
     8732     => '\\ensuremath\{\\sqrt[4]\{\}\}',      8732     => '\ensuremath{\sqrt[4]{}}',
     'prop'   => '\\ensuremath\{\\propto\}',      'prop'   => '\ensuremath{\propto}',
     8733     => '\\ensuremath\{\\propto\}',      8733     => '\ensuremath{\propto}',
     'infin'  => '\\ensuremath\{\\infty\}',      'infin'  => '\ensuremath{\infty}',
     8734     => '\\ensuremath\{\\infty\}',      8734     => '\ensuremath{\infty}',
     'ang90'  => '\\ensuremath\{\\sqangle\}',  #    'ang90'  => '\ensuremath{\sqangle}',
     8735     => '\\ensuremath\{\\sqangle\}',  #    8735     => '\ensuremath{\sqangle}',
     'ang'    => '\\ensuremath\{\\angle\}',      'ang'    => '\ensuremath{\angle}',
     8736     => '\\ensuremath\{\\angle\}',      8736     => '\ensuremath{\angle}',
     'angmsd' => '\\ensuremath\{\\measuredangle\}',      'angmsd' => '\ensuremath{\measuredangle}',
     8737     => '\\ensuremath\{\\measuredangle\}',      8737     => '\ensuremath{\measuredangle}',
     'angsph' => '\\ensuremath\{\\sphiericalangle\}',      'angsph' => '\ensuremath{\sphericalangle}',
     8738     => '\\ensuremath\{\\sphiericalangle\}',      8738     => '\ensuremath{\sphericalangle}',
     8739     => '\\ensuremath\{\\vert\}',      8739     => '\ensuremath{\vert}',
     8740     => '\\ensuremath\{\\Vert\}',      8740     => '\ensuremath{\Vert}',
     'and'    => '\\ensuremath\{\\land\}',      'and'    => '\ensuremath{\land}',
     8743     => '\\ensuremath\{\\land\}',      8743     => '\ensuremath{\land}',
     'or'     => '\\ensuremath\{\\lor\}',      'or'     => '\ensuremath{\lor}',
     8744     => '\\ensuremath\{\\lor\}',      8744     => '\ensuremath{\lor}',
     'cap'    => '\\ensuremath\{\\cap\}',      'cap'    => '\ensuremath{\cap}',
     8745     => '\\ensuremath\{\\cap\}',      8745     => '\ensuremath{\cap}',
     'cup'    => '\\ensuremath\{\\cup\}',      'cup'    => '\ensuremath{\cup}',
     8746     => '\\ensuremath\{\\cup\}',      8746     => '\ensuremath{\cup}',
     'int'    => '\\ensuremath\{\\int\}',      'int'    => '\ensuremath{\int}',
     8747     => '\\ensuremath\{\\int\}',      8747     => '\ensuremath{\int}',
     8750     => '\\ensuremath\{\\oint\}',      'conint' => '\ensuremath{\oint}',
     'there4' => '\\ensuremath\{\\therefore\}',      8750     => '\ensuremath{\oint}',
     8756     => '\\ensuremath\{\\therefore\}',      'there4' => '\ensuremath{\therefore}',
     'becaus' => '\\ensuremath\{\\because\}',      8756     => '\ensuremath{\therefore}',
     8757     => '\\ensuremath\{\\because\}',      'becaus' => '\ensuremath{\because}',
     8758     => '\\ensuremath\{:\}',      8757     => '\ensuremath{\because}',
     8759     => '\\ensuremath\{::\}',      8758     => '\ensuremath{:}',
     'sim'    => '\\ensuremath\{\\sim\}',      8759     => '\ensuremath{::}',
     8764     => '\\ensuremath\{\\sim\}',      'sim'    => '\ensuremath{\sim}',
           8764     => '\ensuremath{\sim}',
           8765     => '\ensuremath{\backsim}',
           'wreath' => '\ensuremath{\wr}',
       8768     => '\ensuremath{\wr}',
       'nsim'   => '\ensuremath{\not\sim}',
       8769     => '\ensuremath{\not\sim}',
   #    'asymp'  => '\ensuremath{\asymp}',  &asymp; is actually a different glyph.
       8771     => '\ensuremath{\asymp}',
       8772     => '\ensuremath{\not\asymp}',
       'cong'   => '\ensuremath{\cong}',
       8773     => '\ensuremath{\cong}',
       8775     => '\ensuremath{\ncong}',
       8778     => '\ensuremath{\approxeq}',
       8784     => '\ensuremath{\doteq}',
       8785     => '\ensuremath{\doteqdot}',
       8786     => '\ensuremath{\fallingdotseq}',
       8787     => '\ensuremath{\risingdotseq}',
       8788     => '\ensuremath{:=}',
       8789     => '\ensuremath{=:}',
       8790     => '\ensuremath{\eqcirc}',
       8791     => '\ensuremath{\circeq}',
       'wedgeq' => '\ensuremath{\stackrel{\wedge}{=}}',
       8792     => '\ensuremath{\stackrel{\wedge}{=}}',
       8794     => '\ensuremath{\stackrel{\vee}{=}}',
       8795     => '\ensuremath{\stackrel{\star}{=}}',
       8796     => '\ensuremath{\triangleq}',
       8797     => '\ensuremath{\stackrel{def}{=}}',
       8798     => '\ensuremath{\stackrel{m}{=}}',
       8799     => '\ensuremath{\stackrel{?}{=}}',
       'ne'     => '\ensuremath{\neq}',
       8800     => '\ensuremath{\neq}',
       'equiv'  => '\ensuremath{\equiv}',
       8801     => '\ensuremath{\equiv}',
       8802     => '\ensuremath{\not\equiv}',
       'le'     => '\ensuremath{\leq}',
       8804     => '\ensuremath{\leq}',
       'ge'     => '\ensuremath{\geq}',
       8805     => '\ensuremath{\geq}',
       8806     => '\ensuremath{\leqq}',
       8807     => '\ensuremath{\geqq}',
       8810     => '\ensuremath{\ll}',
       8811     => '\ensuremath{\gg}',
       'twixt'  => '\ensuremath{\between}',
       8812     => '\ensuremath{\between}',
       8813     => '\ensuremath{\not\asymp}',
       8814     => '\ensuremath{\not<}',
       8815     => '\ensuremath{\not>}',
       8816     => '\ensuremath{\not\leqslant}',
       8817     => '\ensuremath{\not\geqslant}',
       8818     => '\ensuremath{\lesssim}',
       8819     => '\ensuremath{\gtrsim}',
       8820     => '\ensuremath{\stackrel{<}{>}}',
       8821     => '\ensuremath{\stackrel{>}{<}}',
       8826     => '\ensuremath{\prec}',
       8827     => '\ensuremath{\succ}',
       8828     => '\ensuremath{\preceq}',
       8829     => '\ensuremath{\succeq}',
       8830     => '\ensuremath{\not\prec}',
       8831     => '\ensuremath{\not\succ}',
       'sub'    => '\ensuremath{\subset}',
       8834     => '\ensuremath{\subset}',
       'sup'    => '\ensuremath{\supset}',
       8835     => '\ensuremath{\supset}',
       'nsub'   => '\ensuremath{\not\subset}',
       8836     => '\ensuremath{\not\subset}',
       8837     => '\ensuremath{\not\supset}',
       'sube'   => '\ensuremath{\subseteq}',
       8838     => '\ensuremath{\subseteq}',
       'supe'   => '\ensuremath{\supseteq}',
       8839     => '\ensuremath{\supseteq}',
       8840     => '\ensuremath{\nsubseteq}',
       8841     => '\ensuremath{\nsupseteq}',
       8842     => '\ensuremath{\subsetneq}',
       8843     => '\ensuremath{\supsetneq}',
       8847     => '\ensuremath{\sqsubset}',
       8848     => '\ensuremath{\sqsupset}',
       8849     => '\ensuremath{\sqsubseteq}',
       8850     => '\ensuremath{\sqsupseteq}',
       8851     => '\ensuremath{\sqcap}',
       8852     => '\ensuremath{\sqcup}',
       'oplus'  => '\ensuremath{\oplus}',
       8853     => '\ensuremath{\oplus}',
       8854     => '\ensuremath{\ominus}',
       'otimes' => '\ensuremath{\otimes}',
       8855     => '\ensuremath{\otimes}',
       8856     => '\ensuremath{\oslash}',
       8857     => '\ensuremath{\odot}',
       8858     => '\ensuremath{\circledcirc}',
       8859     => '\ensuremath{\circledast}',
       8861     => '\ensuremath{\ominus}', # Close enough for government work.
       8862     => '\ensuremath{\boxplus}',
       8863     => '\ensuremath{\boxminus}',
       8864     => '\ensuremath{\boxtimes}',
       8865     => '\ensuremath{\boxdot}',
       'vdash'  => '\ensuremath{\vdash}',
       8866     => '\ensuremath{\vdash}',
       'dashv'  => '\ensuremath{\dashv}',
       8867     => '\ensuremath{\dashv}',
       'perp'   => '\ensuremath{\perp}',
       8869     => '\ensuremath{\perp}',
       8871     => '\ensuremath{\models}',
       8872     => '\ensuremath{\vDash}',    
       8873     => '\ensuremath{\Vdash}',
       8874     => '\ensuremath{\Vvdash}',
       8876     => '\ensuremath{\nvdash}',
       8877     => '\ensuremath{\nvDash}',
       8878     => '\ensuremath{\nVdash}',
       8880     => '\ensuremath{\prec}',
       8881     => '\ensuremath{\succ}',
       8882     => '\ensuremath{\vartriangleleft}',
       8883     => '\ensuremath{\vartriangleright}',
       8884     => '\ensuremath{\trianglelefteq}',
       8885     => '\ensuremath{\trianglerighteq}',
       8891     => '\ensuremath{\veebar}',
       8896     => '\ensuremath{\land}',
       8897     => '\ensuremath{\lor}',
       8898     => '\ensuremath{\cap}',
       8899     => '\ensuremath{\cup}',
       8900     => '\ensuremath{\diamond}',
       'sdot'   => '\ensuremath{\cdot}',
       8901     => '\ensuremath{\cdot}',
       8902     => '\ensuremath{\star}',
       8903     => '\ensuremath{\divideontimes}',
       8904     => '\ensuremath{\bowtie}',
       8905     => '\ensuremath{\ltimes}',
       8906     => '\ensuremath{\rtimes}',
       8907     => '\ensuremath{\leftthreetimes}',
       8908     => '\ensuremath{\rightthreetimes}',
       8909     => '\ensuremath{\simeq}',
       8910     => '\ensuremath{\curlyvee}',
       8911     => '\ensuremath{\curlywedge}',
       8912     => '\ensuremath{\Subset}',
       8913     => '\ensuremath{\Supset}',
       8914     => '\ensuremath{\Cap}',
       8915     => '\ensuremath{\Cup}',
       8916     => '\ensuremath{\pitchfork}',
       8918     => '\ensuremath{\lessdot}',
       8919     => '\ensuremath{\gtrdot}',
       8920     => '\ensuremath{\lll}',
       8921     => '\ensuremath{\ggg}',
       8922     => '\ensuremath{\gtreqless}',
       8923     => '\ensuremath{\lesseqgtr}',
       8924     => '\ensuremath{\eqslantless}',
       8925     => '\ensuremath{\eqslantgtr}',
       8926     => '\ensuremath{\curlyeqprec}',
       8927     => '\ensuremath{\curlyeqsucc}',
       8928     => '\ensuremath{\not\preccurlyeq}',
       8929     => '\ensuremath{\not\succcurlyeq}',
       8930     => '\ensuremath{\not\sqsupseteq}',
       8931     => '\ensuremath{\not\sqsubseteq}',
       8938     => '\ensuremath{\not\vartriangleleft}',
       8939     => '\ensuremath{\not\vartriangleright}',
       8940     => '\ensuremath{\not\trianglelefteq}',
       8941     => '\ensuremath{\not\trianglerighteq}',
       8942     => '\ensuremath{\vdots}',
       8960     => '\ensuremath{\varnothing}',
       'lceil'  => '\ensuremath{\lceil}',
       8968     => '\ensuremath{\lceil}',
       'rceil'  => '\ensuremath{\rceil}',
       8969     => '\ensuremath{\rceil}',
       'lfloor' => '\ensuremath{\lfloor}',
       8970     => '\ensuremath{\lfloor}',
       'rfloor' => '\ensuremath{\rfloor}',
       8971     => '\ensuremath{\rfloor}',
       'lang'   => '\ensuremath{\langle}',
       9001     => '\ensuremath{\langle}',
       'rang'   => '\ensuremath{\rangle}',
       9002     => '\ensuremath{\rangle}',
       'loz'    => '\ensuremath{\lozenge}',
       9674     => '\ensuremath{\lozenge}',
       'spades' => '\ensuremath{\spadesuit}',
       9824     => '\ensuremath{\spadesuit}',
       9825     => '\ensuremath{\heartsuit}',
       9826     => '\ensuremath{\diamondsuit}',
       'clubs'  => '\ensuremath{\clubsuit}',
       9827     => '\ensuremath{\clubsuit}',
       'diams'  => '\ensuremath{\blacklozenge}',
       9830     => '\ensuremath{\blacklozenge}'
       
   );
   
   # 
   #  Convert a numerical entity (that does not exist in our hash)
   #  to its UTF-8 equivalent representation.
   #  This allows us to support, to some extent, any entity for which
   #  dvipdf can find a gylph (given that LaTeX is now UTF-8 clean).
   #
   # Parameters:
   #   unicode  - The unicode for the character.  This is assumed to
   #              be a decimal value
   # Returns:
   #   The UTF-8 equiavalent of the value.
   #
   sub entity_to_utf8 {
       my ($unicode) = @_;
   
       return pack("U", $unicode);
   }
   
   
   #
   #  Convert an entity to the corresponding LateX if possible.
   #  If not possible, and the entity is numeric,
   #  the entity is treated like a Unicode character and converted
   #  to UTF-8 which should display as long as dvipdf can find the
   #  appropriate glyph.
   #
   #  The entity is assumed to have already had the 
   #  &# ;  or & ; removed
   #
   # Parameters:
   #   entity    - Name of entity to convert.
   # Returns:
   #  One of the following:
   #   - Latex string that produces the entity.
   #   - UTF-8 equivalent of a numeric entity for which we don't have a latex string.
   #   - ' ' for text entities for which there's no latex equivalent.
   #
   sub entity_to_latex {
       my ($entity) = @_;
   
       # Try to look up the entity (text or numeric) in the hash:
   
   
       my $latex = $entities{"$entity"};
       if (defined $latex) {
    return $latex;
       }
       # If the text is purely numeric we can do the UTF-8 conversion:
   
       if ($entity =~ /^\d$/) {
    return &entity_to_utf8($entity);
       }
       #  Can't do the conversion`< ...
   
       return " ";
   }
   
   #
   #  Convert all the entities in a string.
   #  We locate all the entities, pass them into entity_to_latex and 
   #  and replace occurences in the input string.
   #  The assumption is that there are few entities in any string/document
   #  so this looping is not too bad.  The advantage of looping vs. regexping is
   #  that we now can use lookup tables for the translation in entity_to_latex above.
   #
   # Parameters:
   #   input   - Input string/document
   # Returns
   #   input with entities replaced by latexable stuff (UTF-8 encodings or
   #   latex control strings to produce the entity.
   #
   #
   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__

Removed from v.1.3  
changed lines
  Added in v.1.9


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>