--- loncom/interface/entities.pm 2008/02/11 11:35:46 1.1 +++ loncom/interface/entities.pm 2008/04/01 10:45:44 1.4 @@ -53,6 +53,12 @@ use strict; # the original massive regular expression replacements originally by # A. Sakharuk in lonprintout.pm # +# I also want to acknowledge +# ISO Character entities and their LaTeX equivalents by +# Vidar Bronken Gundersen, and Rune Mathisen +# http://www.bitjungle.com/isoent-ref.pdf +# + # Note numerical entities are essentially unicode character codes. # my %entities = { @@ -499,6 +505,362 @@ my %entities = { 'zeta' => '\\ensuremath\{\\zeta\}', 951 => '\\ensuremath\{\\eta\}', 'eta' => '\\ensuremath\{\\eta\}', + 952 => '\\ensuremath\{\\theta\}', + 'theta' => '\\ensuremath\{\\theta\}', + 953 => '\\ensuremath\{\\iota\}', + 'iota' => '\\ensuremath\{\\iota\}', + 954 => '\\ensuremath\{\\kappa\}', + 'kappa' => '\\ensuremath\{\\kappa\}', + 955 => '\\ensuremath\{\\lambda\}', + 'lambda' => '\\ensuremath\{\\lambda\}', + 956 => '\\ensuremath\{\\mu\}', + 'mu' => '\\ensuremath\{\\mu\}', + 957 => '\\ensuremath\{\\nu\}', + 'nu' => '\\ensuremath\{\\nu\}', + 958 => '\\ensuremath\{\\xi\}', + 'xi' => '\\ensuremath\{\\xi\}', + 959 => '\\ensuremath\{o\}', + 'omicron'=> '\\ensuremath\{o\}', + 960 => '\\ensuremath\{\\pi\}', + 'pi' => '\\ensuremath\{\\pi\}', + 961 => '\\ensuremath\{\\rho\}', + 'rho' => '\\ensuremath\{\\rho\}', + 962 => '\\ensuremath\{\\varsigma\}', + 'sigmaf' => '\\ensuremath\{\\varsigma\}', + 963 => '\\ensuremath\{\\sigma\}', + 'sigma' => '\\ensuremath\{\\sigma\}', + 964 => '\\ensuremath\{\\tau\}', + 'tau' => '\\ensuremath\{\\tau\}', + 965 => '\\ensuremath\{\\upsilon\}', + 'upsilon'=> '\\ensuremath\{\\upsilon\}', + 966 => '\\ensuremath\{\\phi\}', + 'phi' => '\\ensuremath\{\\phi\}', + 967 => '\\ensuremath\{\\chi\}', + 'chi' => '\\ensuremath\{\\chi\}', + 968 => '\\ensuremath\{\\psi\}', + 'psi' => '\\ensuremath\{\\psi\}', + 969 => '\\ensuremath\{\\omega\}', + 'omega' => '\\ensuremath\{\\omega\}', + 977 => '\\ensuremath\{\\vartheta\}', + 'thetasym'=>'\\ensuremath\{\\vartheta\}', + 978 => '\\ensuremath\{\\varUpsilon\}', + 'upsih' => '\\ensuremath\{\\varUpsilon\}', + 982 => '\\ensuremath\{\\varpi\}', + 'piv' => '\\ensuremath\{\\varpi\}', + + + # The general punctuation set: + + 8194, => '\\hspace{.5em}', + 'enspc' => '\\hspace{.5em}', + 8195 => '\\hspace{1.0em}', + 'emspc' => '\\hspace{1.0em}', + 8201 => '\\hspace{0.167em}', + 'thinsp' => '\\hspace{0.167em}', + 8204 => '\{\}', + 'zwnj' => '\{\}', + 8205 => '', + 'zwj' => '', + 8206 => '', + 'lrm' => '', + 8207 => '', + 'rlm' => '', + 8211 => '--', + 'ndash' => '--', + 8212 => '---', + 'mdash' => '---', + 8216 => '`', + 'lsquo' => '`', + 8217 => "'", + 'rsquo' => "'", + 8218 => '\\quotesinglebase', + 'sbquo' => '\\quotesinglebase', + 8220 => '``', + 'ldquo' => '``', + 8221 => "''", + 'rdquo' => "''", + 8222 => '\\quotedblbase', + 'bdquo' => '\\quotedblbase', + 8224 => '\\dagger', + 'dagger' => '\\dagger', + '8225' => '\\ddag', + 'Dagger' => '\\ddag', + 8226 => '\\textbullet', + 'bull' => '\\textbullet', + 8230 => '\\textellipsis', + 'hellep' => '\\textellipsis', + 8240 => '\\textperthousand', + permil => '\\textperthousand', + 8242 => '\\textquotesingle', + 'prime' => '\\textquotesingle', + 8243 => '\\textquotedbl', + 'Prime' => '\\textquotedbl', + 8249 => '\\guilsingleleft', + 'lsaquo' => '\\guilsingleleft', + 8250 => '\\guilsingleright', + 'rsaquo' => '\\guilsingleright', + 8254 => '\\textasciimacron', + oline => '\\textasciimacron', + 8260 => '\\textfractionsolidus', + 'frasl' => '\\textfractionsolidus', + 8364 => '\\texteuro', + 'euro' => '\\texteuro', + + # Letter like symbols + + + 8472 => '\\ensuremath\{\\wp\}', + 'weierp' => '\\ensuremath\{\\wp\}', + 8465 => '\\ensuremath\{\\Im\}', + 'image' => '\\ensuremath\{\\Im\}', + 8476 => '\\ensuremath{\\Re\}', + 'real' => '\\ensuremath{\\Re\}', + 8482 => '\\texttrademark', + 'trade' => '\\texttrademark', + 8501 => '\\ensuremath{\\aleph\}', + 'alefsym'=> '\\ensuremath{\\aleph\}', + + # Arrows and then some (harpoons from Hon Kie). + + 8592 => '\\textleftarrow', + 'larr' => '\\textleftarrow', + 8593 => '\\textuparrow', + 'uarr' => '\\textuparrow', + 8594 => '\\textrightarrow', + 'rarr' => '\\textrightarrow', + 8595 => '\\textdownarrow', + 'darr' => '\\textdownarrow', + 8596 => '\\ensuremath\{\\leftrightarrow\}', + 'harr' => '\\ensuremath\{\\leftrightarrow\}', + 8598 => '\\ensuremath\{\\nwarrow\}', + 8599 => '\\ensuremath\{\\nearrow\}', + 8600 => '\\ensuremath\{\\searrow\}', + 8601 => '\\ensuremath\{\\swarrow\}', + 8605 => '\\ensuremath\{\\leadsto\}', + 8614 => '\\ensuremath\{\\mapsto\}', + 8617 => '\\ensuremath\{\\hookleftarrow\}', + 8618 => '\\ensuremath\{\\hookrightarrow\}', + 8629 => '\\ensuremath\{\\hookleftarrow\}', # not an exact match but best I know. + 'crarr' => '\\ensuremath\{\\hookleftarrow\}', # not an exact match but best I know. + 8636 => '\\ensuremath\{\\leftharpoonup\}', + 8637 => '\\ensuremath\{\\leftharpoondown\}', + 8640 => '\\ensuremath\{\\rightharpoonup\}', + 8641 => '\\ensuremath\{\\rightharpoondown\}', + 8652 => '\\ensuremath\{\\rightleftharpoons\}', + 8656 => '\\ensuremath\{\\Leftarrow\}', + 'lArr' => '\\ensuremath\{\\Leftarrow\}', + 8657 => '\\ensuremath\{\\Uparrow\}', + 'uArr' => '\\ensuremath\{\\Uparrow\}', + 8658 => '\\ensuremath\{\\Rightarrow\}', + 'rArr' => '\\ensuremath\{\\Rightarrow\}', + 8659 => '\\ensuremath\{\\Downarrow\}', + 'dArr' => '\\ensuremath\{\\Downarrow\}', + 8660 => '\\ensuremath\{\\Leftrightarrow\}', + 'vArr' => '\\ensuremath\{\\Updownarrow\}', + 8661 => '\\ensuremath\{\\Updownarrow\}', + 'lAarr' => '\\ensuremath\{\\Lleftarrow\}', + 8666 => '\\ensuremath\{\\Lleftarrow\}', + 'rAarr' => '\\ensuremath\{\\Rrightarrow\}', + 8667 => '\\ensuremath\{\\Rrightarrow\}', + 'rarrw' => '\\ensuremath\{\\rightsquigarrow\}', + 8669 => '\\ensuremath\{\\rightsquigarrow\}', + + + # Mathematical operators. + + + 'forall' => '\\ensuremath\{\\forall\}', + 8704 => '\\ensuremath\{\\forall\}', + 'comp' => '\\ensuremath\{\\complement\}', + 8705 => '\\ensuremath\{\\complement\}', + 'part' => '\\ensuremath\{\\partial\}', + 8706 => '\\ensuremath\{\\partial\}', + 'exist' => '\\ensuremath\{\\exists\}', + 8707 => '\\ensuremath\{\\exists\}', + 'nexist' => '\\ensuremath\{\\nexists\}', + 8708 => '\\ensuremath\{\\nexists\}', + 'empty' => '\\ensuremath\{\\emptysset\}', + 8709 => '\\ensuremath\{\\emptysset\}', + 8710 => '\\ensuremath\{\\Delta\}', + 'nabla' => '\\ensuremath\{\\nabla\}', + 8711 => '\\ensuremath\{\\nabla\}', + 'isin' => '\\ensuremath\{\\in\}', + 8712 => '\\ensuremath\{\\in\}', + 'notin' => '\\ensuremath\{\\notin\}', + 8713 => '\\ensuremath\{\\notin\}', + ni => '\\ensuremath\{\\ni\}', + 8715 => '\\ensuremath\{\\ni\}', + 8716 => '\\ensuremath\{\\not\\ni\}', + 'prod' => '\\ensuremath\{\\prod\}', + 8719 => '\\ensuremath\{\\prod\}', + 8720 => '\\ensuremath\{\\coprod\}', + 'sum' => '\\ensuremath\{\\sum\}', + 8721 => '\\ensuremath\{\\sum\}', + 'minus' => '\\ensuremath\{-\}', + 8722 => '\\ensuremath\{-\}', + 8723 => '\\ensuremath\{\\mp\}', + 8724 => '\\ensuremath\{\\dotplus\}', + 8725 => '\\ensuremath\{\\diagup\}', + 8726 => '\\ensuremath\{\\smallsetminus\}', + 'lowast' => '\\ensuremath\{*\}', + 8727 => '\\ensuremath\{*\}', + 8728 => '\\ensuremath\{\\circ\}', + 8729 => '\\ensuremath\{\\bullet\}', + 'radic' => '\\ensuremath\{\\surd\}', + 8730 => '\\ensuremath\{\\surd\}', + 8731 => '\\ensuremath\{\\sqrt[3]\{\}\}', + 8732 => '\\ensuremath\{\\sqrt[4]\{\}\}', + 'prop' => '\\ensuremath\{\\propto\}', + 8733 => '\\ensuremath\{\\propto\}', + 'infin' => '\\ensuremath\{\\infty\}', + 8734 => '\\ensuremath\{\\infty\}', + 'ang90' => '\\ensuremath\{\\sqangle\}', + 8735 => '\\ensuremath\{\\sqangle\}', + 'ang' => '\\ensuremath\{\\angle\}', + 8736 => '\\ensuremath\{\\angle\}', + 'angmsd' => '\\ensuremath\{\\measuredangle\}', + 8737 => '\\ensuremath\{\\measuredangle\}', + 'angsph' => '\\ensuremath\{\\sphiericalangle\}', + 8738 => '\\ensuremath\{\\sphiericalangle\}', + 8739 => '\\ensuremath\{\\vert\}', + 8740 => '\\ensuremath\{\\Vert\}', + 'and' => '\\ensuremath\{\\land\}', + 8743 => '\\ensuremath\{\\land\}', + 'or' => '\\ensuremath\{\\lor\}', + 8744 => '\\ensuremath\{\\lor\}', + 'cap' => '\\ensuremath\{\\cap\}', + 8745 => '\\ensuremath\{\\cap\}', + 'cup' => '\\ensuremath\{\\cup\}', + 8746 => '\\ensuremath\{\\cup\}', + 'int' => '\\ensuremath\{\\int\}', + 8747 => '\\ensuremath\{\\int\}', + 'conint' => '\\ensuremath\{\\oint\}', + 8750 => '\\ensuremath\{\\oint\}', + 'there4' => '\\ensuremath\{\\therefore\}', + 8756 => '\\ensuremath\{\\therefore\}', + 'becaus' => '\\ensuremath\{\\because\}', + 8757 => '\\ensuremath\{\\because\}', + 8758 => '\\ensuremath\{:\}', + 8759 => '\\ensuremath\{::\}', + '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\}', ≈ 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\{\\triangleeq\}', + 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\{\\lessim\}', + 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' => '\\ensuermath\{\\supseteq\}', + 8839 => '\\ensuermath\{\\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\}', + + + }; + +# +# 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). +# +sub entity_to_utf8 { +} + + +# +# 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. +# +sub entity_to_latex { +} +