diff options
Diffstat (limited to 'latexfmt.hs')
-rw-r--r-- | latexfmt.hs | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/latexfmt.hs b/latexfmt.hs index 1dd6a88..86c17a3 100644 --- a/latexfmt.hs +++ b/latexfmt.hs @@ -13,7 +13,7 @@ import Prelude hiding ( print , takeWhile ) -data Tokens = Wrd {unwrd :: T.Text} | Cmd T.Text | BSq [Tokens] | BCr [Tokens] | NL | Cmt T.Text | Nobs +data Tokens = Wrd {unwrd :: T.Text} | Cmd T.Text | BSq [Tokens] | BCr [Tokens] | NL | Cmt T.Text | Nobs | IMath T.Text | Math T.Text deriving Show isCtrl x = not $ isAlpha x || isDigit x @@ -53,11 +53,20 @@ toStr (Cmt c) = do toStr Nobs = do print' "~" suppress +toStr (Math m) = do + printnl + print "\\[" + print' m + println "\\]" +toStr (IMath m) = do + print "\\(" + print' m + print' "\\)" -- Tokeniser ws = inClass " \t\n" pad = takeWhile ws -token = nl <|> pad *> (nobs <|> cmd <|> bsq <|> bcr <|> cmt <|> wrd) +token = nl <|> pad *> (nobs <|> math <|> cmd <|> bsq <|> bcr <|> cmt <|> wrd) nobs = string "~" *> pure Nobs nl = string "\n" *> takeWhile (inClass " \t") *> string "\n" *> pure NL cmd :: Parser Tokens @@ -66,6 +75,11 @@ bsq = BSq <$> (string "[" *> many' token) <* pad <* string "]" bcr = BCr <$> (string "{" *> many' token) <* pad <* string "}" wrd = Wrd <$> takeWhile1 (notInClass " \t\n[]{}\\~") cmt = Cmt <$> (takeWhile1 (== '%') *> takeWhile (/= '\n')) +math = oldmath <|> newmath <|> oldimath <|> newimath +oldmath = Math <$> (string "$$" *> takeWhile (/= '$')) <* string "$$" +newmath = Math . T.pack <$> (string "\\[" *> manyTill' anyChar (string "\\]")) +oldimath = IMath <$> (string "$" *> takeWhile (/= '$')) <* string "$" +newimath = IMath . T.pack <$> (string "\\(" *> manyTill' anyChar (string "\\)")) -- indented printer type Beginning = Bool |