texmath 0.6.1 → 0.6.1.1
raw patch · 3 files changed
+341/−1 lines, 3 filesdep ~xml
Dependency ranges changed: xml
Files
- Text/TeXMath/Parser.hs +1/−0
- Text/TeXMath/ToUnicode.hs +338/−0
- texmath.cabal +2/−1
Text/TeXMath/Parser.hs view
@@ -77,6 +77,7 @@ formula = do whiteSpace f <- many expr+ whiteSpace eof return f
+ Text/TeXMath/ToUnicode.hs view
@@ -0,0 +1,338 @@+{-+Copyright (C) 2009 John MacFarlane <jgm@berkeley.edu>++This program is free software; you can redistribute it and/or modify+it under the terms of the GNU General Public License as published by+the Free Software Foundation; either version 2 of the License, or+(at your option) any later version.++This program is distributed in the hope that it will be useful,+but WITHOUT ANY WARRANTY; without even the implied warranty of+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the+GNU General Public License for more details.++You should have received a copy of the GNU General Public License+along with this program; if not, write to the Free Software+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA+-}++{- | Function for replacing strings of characters with their respective mathvariant+-}++module Text.TeXMath.ToUnicode (toUnicode)+where++import Text.TeXMath.Types+import qualified Data.Map as M++-- | Replace all characters in the string A-Z, a-z with their corresponding mathvariant unicode character.+-- | MathML has a mathvariant attribute which is unimplemented in Firefox+-- | (see https://bugzilla.mozilla.org/show_bug.cgi?id=114365)+-- | Therefore, we may want to translate mathscr, etc to unicode symbols directly.+toUnicode :: TextType -> String -> String+toUnicode TextScript s = map (mapChar mathscr) s+toUnicode TextBoldScript s = map (mapChar mathbfscr) s+toUnicode TextFraktur s = map (mapChar mathfrak) s+toUnicode TextBoldFraktur s = map (mapChar mathbffrak) s+toUnicode TextDoubleStruck s = map (mapChar mathbb) s+toUnicode _ s = s++mapChar :: M.Map Char Char -> Char -> Char+mapChar m c = maybe c id (M.lookup c m)++-- This list is from http://www.w3.org/TR/MathML2/script.html+mathscr :: M.Map Char Char+mathscr = M.fromList [+ ('A', '\x1D49C')+ , ('B', '\x0212C')+ , ('C', '\x1D49E')+ , ('D', '\x1D49F')+ , ('E', '\x02130')+ , ('F', '\x02131')+ , ('G', '\x1D4A2')+ , ('H', '\x0210B')+ , ('I', '\x02110')+ , ('J', '\x1D4A5')+ , ('K', '\x1D4A6')+ , ('L', '\x02112')+ , ('M', '\x02133')+ , ('N', '\x1D4A9')+ , ('O', '\x1D4AA')+ , ('P', '\x1D4AB')+ , ('Q', '\x1D4AC')+ , ('R', '\x0211B')+ , ('S', '\x1D4AE')+ , ('T', '\x1D4AF')+ , ('U', '\x1D4B0')+ , ('V', '\x1D4B1')+ , ('W', '\x1D4B2')+ , ('X', '\x1D4B3')+ , ('Y', '\x1D4B4')+ , ('Z', '\x1D4B5')+ , ('a', '\x1D4B6')+ , ('b', '\x1D4B7')+ , ('c', '\x1D4B8')+ , ('d', '\x1D4B9')+ , ('e', '\x0212F')+ , ('f', '\x1D4BB')+ , ('g', '\x0210A')+ , ('h', '\x1D4BD')+ , ('i', '\x1D4BE')+ , ('j', '\x1D4BF')+ , ('k', '\x1D4C0')+ , ('l', '\x1D4C1')+ , ('m', '\x1D4C2')+ , ('n', '\x1D4C3')+ , ('o', '\x02134')+ , ('p', '\x1D4C5')+ , ('q', '\x1D4C6')+ , ('r', '\x1D4C7')+ , ('s', '\x1D4C8')+ , ('t', '\x1D4C9')+ , ('u', '\x1D4CA')+ , ('v', '\x1D4CB')+ , ('w', '\x1D4CC')+ , ('x', '\x1D4CD')+ , ('y', '\x1D4CE')+ , ('z', '\x1D4CF')+ ]++-- Bold variant of mathscr, taken from unicode.+mathbfscr :: M.Map Char Char+mathbfscr = M.fromList [+ ('A', '\x1D4D0')+ , ('B', '\x1D4D1')+ , ('C', '\x1D4D2')+ , ('D', '\x1D4D3')+ , ('E', '\x1D4D4')+ , ('F', '\x1D4D5')+ , ('G', '\x1D4D6')+ , ('H', '\x1D4D7')+ , ('I', '\x1D4D8')+ , ('J', '\x1D4D9')+ , ('K', '\x1D4DA')+ , ('L', '\x1D4DB')+ , ('M', '\x1D4DC')+ , ('N', '\x1D4DD')+ , ('O', '\x1D4DE')+ , ('P', '\x1D4DF')+ , ('Q', '\x1D4E0')+ , ('R', '\x1D4E1')+ , ('S', '\x1D4E2')+ , ('T', '\x1D4E3')+ , ('U', '\x1D4E4')+ , ('V', '\x1D4E5')+ , ('W', '\x1D4E6')+ , ('X', '\x1D4E7')+ , ('Y', '\x1D4E8')+ , ('Z', '\x1D4E9')+ , ('a', '\x1D4EA')+ , ('b', '\x1D4EB')+ , ('c', '\x1D4EC')+ , ('d', '\x1D4ED')+ , ('e', '\x1D4EE')+ , ('f', '\x1D4EF')+ , ('g', '\x1D4F0')+ , ('h', '\x1D4F1')+ , ('i', '\x1D4F2')+ , ('j', '\x1D4F3')+ , ('k', '\x1D4F4')+ , ('l', '\x1D4F5')+ , ('m', '\x1D4F6')+ , ('n', '\x1D4F7')+ , ('o', '\x1D4F8')+ , ('p', '\x1D4F9')+ , ('q', '\x1D4FA')+ , ('r', '\x1D4FB')+ , ('s', '\x1D4FC')+ , ('t', '\x1D4FD')+ , ('u', '\x1D4FE')+ , ('v', '\x1D4FF')+ , ('w', '\x1D500')+ , ('x', '\x1D501')+ , ('y', '\x1D502')+ , ('z', '\x1D503')+ ]++-- Similar to mathscr above, we translate manually.+-- This list is from http://www.w3.org/TR/MathML2/double-struck.html+mathbb :: M.Map Char Char+mathbb = M.fromList [+ ('A', '\x1D538')+ , ('B', '\x1D539')+ , ('C', '\x02102')+ , ('D', '\x1D53B')+ , ('E', '\x1D53C')+ , ('F', '\x1D53D')+ , ('G', '\x1D53E')+ , ('H', '\x0210D')+ , ('I', '\x1D540')+ , ('J', '\x1D541')+ , ('K', '\x1D542')+ , ('L', '\x1D543')+ , ('M', '\x1D544')+ , ('N', '\x02115')+ , ('O', '\x1D546')+ , ('P', '\x02119')+ , ('Q', '\x0211A')+ , ('R', '\x0211D')+ , ('S', '\x1D54A')+ , ('T', '\x1D54B')+ , ('U', '\x1D54C')+ , ('V', '\x1D54D')+ , ('W', '\x1D54E')+ , ('X', '\x1D54F')+ , ('Y', '\x1D550')+ , ('Z', '\x02124')+ , ('a', '\x1D552')+ , ('b', '\x1D553')+ , ('c', '\x1D554')+ , ('d', '\x1D555')+ , ('e', '\x1D556')+ , ('f', '\x1D557')+ , ('g', '\x1D558')+ , ('h', '\x1D559')+ , ('i', '\x1D55A')+ , ('j', '\x1D55B')+ , ('k', '\x1D55C')+ , ('l', '\x1D55D')+ , ('m', '\x1D55E')+ , ('n', '\x1D55F')+ , ('o', '\x1D560')+ , ('p', '\x1D561')+ , ('q', '\x1D562')+ , ('r', '\x1D563')+ , ('s', '\x1D564')+ , ('t', '\x1D565')+ , ('u', '\x1D566')+ , ('v', '\x1D567')+ , ('w', '\x1D568')+ , ('x', '\x1D569')+ , ('y', '\x1D56A')+ , ('z', '\x1D56B')+ , ('0', '\x1D7D8')+ , ('1', '\x1D7D9')+ , ('2', '\x1D7DA')+ , ('3', '\x1D7DB')+ , ('4', '\x1D7DC')+ , ('5', '\x1D7DD')+ , ('6', '\x1D7DE')+ , ('7', '\x1D7DF')+ , ('8', '\x1D7E0')+ , ('9', '\x1D7E1')+ ]++-- Fraktur fonts, taken from unicode.+mathfrak :: M.Map Char Char+mathfrak = M.fromList [+ ('A','\x1D504')+ , ('B','\x1D505')+ , ('C','\x0212D')+ , ('D','\x1D507')+ , ('E','\x1D508')+ , ('F','\x1D509')+ , ('G','\x1D50A')+ , ('H','\x0210C')+ , ('I','\x02111')+ , ('J','\x1D50D')+ , ('K','\x1D50E')+ , ('L','\x1D50F')+ , ('M','\x1D510')+ , ('N','\x1D511')+ , ('O','\x1D512')+ , ('P','\x1D513')+ , ('Q','\x1D514')+ , ('R','\x0211C')+ , ('S','\x1D516')+ , ('T','\x1D517')+ , ('U','\x1D518')+ , ('V','\x1D519')+ , ('W','\x1D51A')+ , ('X','\x1D51B')+ , ('Y','\x1D51C')+ , ('Z','\x02128')+ , ('a','\x1D51E')+ , ('b','\x1D51F')+ , ('c','\x1D520')+ , ('d','\x1D521')+ , ('e','\x1D522')+ , ('f','\x1D523')+ , ('g','\x1D524')+ , ('h','\x1D525')+ , ('i','\x1D526')+ , ('j','\x1D527')+ , ('k','\x1D528')+ , ('l','\x1D529')+ , ('m','\x1D52A')+ , ('n','\x1D52B')+ , ('o','\x1D52C')+ , ('p','\x1D52D')+ , ('q','\x1D52E')+ , ('r','\x1D52F')+ , ('s','\x1D530')+ , ('t','\x1D531')+ , ('u','\x1D532')+ , ('v','\x1D533')+ , ('w','\x1D534')+ , ('x','\x1D535')+ , ('y','\x1D536')+ , ('z','\x1D537')+ ]++-- Bold fraktur fonts, taken from unicode.+mathbffrak :: M.Map Char Char+mathbffrak = M.fromList [+ ('A','\x1D56C')+ , ('B','\x1D56D')+ , ('C','\x1D56E')+ , ('D','\x1D57F')+ , ('E','\x1D570')+ , ('F','\x1D571')+ , ('G','\x1D572')+ , ('H','\x1D573')+ , ('I','\x1D574')+ , ('J','\x1D575')+ , ('K','\x1D576')+ , ('L','\x1D577')+ , ('M','\x1D578')+ , ('N','\x1D579')+ , ('O','\x1D57A')+ , ('P','\x1D57B')+ , ('Q','\x1D57C')+ , ('R','\x1D57D')+ , ('S','\x1D57E')+ , ('T','\x1D57F')+ , ('U','\x1D580')+ , ('V','\x1D581')+ , ('W','\x1D582')+ , ('X','\x1D583')+ , ('Y','\x1D584')+ , ('Z','\x1D585')+ , ('a','\x1D586')+ , ('b','\x1D587')+ , ('c','\x1D588')+ , ('d','\x1D589')+ , ('e','\x1D58A')+ , ('f','\x1D58B')+ , ('g','\x1D58C')+ , ('h','\x1D58D')+ , ('i','\x1D58E')+ , ('j','\x1D58F')+ , ('k','\x1D590')+ , ('l','\x1D591')+ , ('m','\x1D592')+ , ('n','\x1D593')+ , ('o','\x1D594')+ , ('p','\x1D595')+ , ('q','\x1D596')+ , ('r','\x1D597')+ , ('s','\x1D598')+ , ('t','\x1D599')+ , ('u','\x1D59A')+ , ('v','\x1D59B')+ , ('w','\x1D59C')+ , ('x','\x1D59D')+ , ('y','\x1D59E')+ , ('z','\x1D59F')+ ]+
texmath.cabal view
@@ -1,5 +1,5 @@ Name: texmath-Version: 0.6.1+Version: 0.6.1.1 Cabal-Version: >= 1.6 Build-type: Custom Synopsis: Conversion of LaTeX math formulas to MathML or OMML.@@ -89,6 +89,7 @@ Text.TeXMath.MathML Text.TeXMath.OMML Text.TeXMath.Macros+ Text.TeXMath.ToUnicode if impl(ghc >= 6.12) Ghc-Options: -Wall -fno-warn-unused-do-bind