27 lines
579 B
Haskell
27 lines
579 B
Haskell
-- nice-frac.hs
|
|
|
|
import Text.Pandoc.JSON
|
|
import Text.Regex
|
|
|
|
-- Usefull regex elements
|
|
space :: String
|
|
space = "[ \\t\\n\\r]*"
|
|
num :: String
|
|
num = "([0-9]+)"
|
|
|
|
-- Substitute latex fractions like '\frac{42}{1}' for (42 / 1)
|
|
fracReg :: Regex
|
|
fracReg = mkRegex $
|
|
"\\(" ++ space ++ num ++ space ++ "/" ++ space ++ num ++ "\\)"
|
|
frac :: String -> String
|
|
frac s = subRegex fracReg s "\\frac{\\1}{\\2}"
|
|
|
|
-- Apply the substitution to all Latex parts on the AST
|
|
niceFrac :: Inline -> Inline
|
|
niceFrac (Math t s) = Math t (frac s)
|
|
niceFrac x = x
|
|
|
|
main :: IO ()
|
|
main = toJSONFilter niceFrac
|
|
|