-- | Some unicode math symbols for testing purposes module UnicodeMath where -------------------------------------------------------------------------------- import qualified Data.Map as Map import Data.Map (Map) -------------------------------------------------------------------------------- -- * for testing greeks = [ alpha, beta, gamma, delta, epsilon, zeta, eta, theta , iota, kappa, lambda, mu, nu, xi {- ,omicron -} , pi_, rho, sigma, tau, upsilon, phi, chi, psi, omega ] math_test = [ forall_ , alpha, beta, gamma , '.' , ' ' , alpha , ostar , '(' , beta , oplus , gamma , ')' , ' ' , '=' , alpha , ostar, beta , oplus , alpha, ostar , gamma ] -------------------------------------------------------------------------------- latexToChar :: String -> Maybe Char latexToChar s = Map.lookup s latexSymbolTable latexSymbolTable :: Map String Char latexSymbolTable = Map.fromList [ "forall" ~> forall_ , "exists" ~> exists , "prod" ~> prod , "coprod" ~> coprod , "sum" ~> sum_ -- , "oplus" ~> oplus , "ominus" ~> ominus , "otimes" ~> otimes , "odot" ~> odot , "ostar" ~> ostar -- greek , "alpha" ~> alpha , "beta" ~> beta , "gamma" ~> gamma , "delta" ~> delta , "epsilon" ~> epsilon , "zeta" ~> zeta , "eta" ~> eta , "theta" ~> theta -- std blackboard numbers , "Z" ~> zz , "N" ~> nn , "Q" ~> qq , "R" ~> rr , "C" ~> cc -- some letterlike , "ell" ~> ell , "hbar" ~> hbar , "aleph" ~> aleph -- brackets , "langle" ~> langle , "rangle" ~> rangle ] where (~>) a b = (a,b) -------------------------------------------------------------------------------- -- * misc other openbox = '\x2423' -- blank -------------------------------------------------------------------------------- -- * brackets langle = '\x2329' rangle = '\x232a' -------------------------------------------------------------------------------- -- * ligatures ff = '\xfb00' fi = '\xfb01' fl = '\xfb02' ffi = '\xfb03' ffl = '\xfb04' -------------------------------------------------------------------------------- -- * some math operators forall_ = '\x2200' exists = '\x2203' prod = '\x220f' coprod = '\x2210' sum_ = '\x2211' infty = '\x221e' rightarrow = '\x2192' oplus = '\x2295' ominus = '\x2296' otimes = '\x2297' odot = '\x2299' ostar = '\x229b' -------------------------------------------------------------------------------- -- * some letterlike hbar = '\x210f' ell = '\x2113' aleph = '\x2135' aa = '\x1d538' pp = '\x2119' cc = '\x2102' nn = '\x2115' zz = '\x2124' qq = '\x211a' rr = '\x211d' -------------------------------------------------------------------------------- -- * greek lowercase alpha = '\x03b1' beta = '\x03b2' gamma = '\x03b3' delta = '\x03b4' epsilon = '\x03b5' zeta = '\x03b6' eta = '\x03b7' theta = '\x03b8' iota = '\x03b9' kappa = '\x03ba' lambda = '\x03bb' mu = '\x03bc' nu = '\x03bd' xi = '\x03be' omicron = '\x03bf' pi_ = '\x03c0' rho = '\x03c1' sigma = '\x03c3' tau = '\x03c4' upsilon = '\x03c5' phi = '\x03c6' chi = '\x03c7' psi = '\x03c8' omega = '\x03c9' -------------------------------------------------------------------------------- -- * some cyrillic lje = '\x0409' de = '\x0414' zhe = '\x0416' sha = '\x0428' shcha = '\x0429' --------------------------------------------------------------------------------