aboutsummaryrefslogtreecommitdiff
path: root/latexfmt.hs
diff options
context:
space:
mode:
Diffstat (limited to 'latexfmt.hs')
-rw-r--r--latexfmt.hs10
1 files changed, 8 insertions, 2 deletions
diff --git a/latexfmt.hs b/latexfmt.hs
index 86c17a3..dc26a80 100644
--- a/latexfmt.hs
+++ b/latexfmt.hs
@@ -13,12 +13,16 @@ import Prelude hiding ( print
, takeWhile
)
-data Tokens = Wrd {unwrd :: T.Text} | Cmd T.Text | BSq [Tokens] | BCr [Tokens] | NL | Cmt T.Text | Nobs | IMath T.Text | Math T.Text
+data Tokens = Wrd {unwrd :: T.Text} | Cmd T.Text | BSq [Tokens] | BCr [Tokens] | NL | Cmt T.Text | Nobs | IMath T.Text | Math T.Text | Verbatim Bool T.Text
deriving Show
isCtrl x = not $ isAlpha x || isDigit x
-- tokens to strings
+toStr (Verbatim star str) = do
+ print' "\n\\begin{verbatim*}"
+ print' str
+ print' "\\end{verbatim*}"
toStr (Wrd w) = do
if T.length w >= 1 && T.head w `elem` (".,;:!?)" :: [Char])
then print' w
@@ -66,7 +70,7 @@ toStr (IMath m) = do
-- Tokeniser
ws = inClass " \t\n"
pad = takeWhile ws
-token = nl <|> pad *> (nobs <|> math <|> cmd <|> bsq <|> bcr <|> cmt <|> wrd)
+token = nl <|> pad *> (nobs <|> verbatim <|> verbatimStar <|> math <|> cmd <|> bsq <|> bcr <|> cmt <|> wrd)
nobs = string "~" *> pure Nobs
nl = string "\n" *> takeWhile (inClass " \t") *> string "\n" *> pure NL
cmd :: Parser Tokens
@@ -80,6 +84,8 @@ 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 "\\)"))
+verbatim = Verbatim False . T.pack <$> (string "\\begin{verbatim}" *> manyTill' anyChar (string "\\end{verbatim}"))
+verbatimStar = Verbatim True . T.pack <$> (string "\\begin{verbatim*}" *> manyTill' anyChar (string "\\end{verbatim*}"))
-- indented printer
type Beginning = Bool