From f1cec1dd0257c10fb291a7fb50e216a5218ebf77 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Mon, 5 Dec 2016 11:09:51 +0100 Subject: LaTeX reader: add warning when parsing unescaped characters that normally need escaping in LaTeX. --- src/Text/Pandoc/Readers/LaTeX.hs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/Text/Pandoc/Readers') diff --git a/src/Text/Pandoc/Readers/LaTeX.hs b/src/Text/Pandoc/Readers/LaTeX.hs index 06269f398..49d2d702f 100644 --- a/src/Text/Pandoc/Readers/LaTeX.hs +++ b/src/Text/Pandoc/Readers/LaTeX.hs @@ -55,7 +55,7 @@ import Text.Pandoc.ImageSize (numUnit, showFl) import Text.Pandoc.Error import Control.Monad.Except (throwError, catchError) import Text.Pandoc.Class (PandocMonad, PandocPure, lookupEnv, readFileLazy, - warning) + warning, warningWithPos) -- | Parse LaTeX from string and return 'Pandoc' document. readLaTeX :: PandocMonad m @@ -236,9 +236,10 @@ inline = (mempty <$ comment) <|> mathInline (char '$' *> mathChars <* char '$') <|> (guardEnabled Ext_literate_haskell *> char '|' *> doLHSverb) <|> (str . (:[]) <$> tildeEscape) - <|> (str . (:[]) <$> oneOf "[]") - <|> (str . (:[]) <$> oneOf "#&~^'`\"[]") -- TODO print warning? - -- <|> (str <$> count 1 (satisfy (\c -> c /= '\\' && c /='\n' && c /='}' && c /='{'))) -- eat random leftover characters + <|> (do res <- oneOf "#&~^'`\"[]" + pos <- getPosition + warningWithPos (Just pos) ("Parsing unescaped '" ++ [res] ++ "'") + return $ str [res]) inlines :: PandocMonad m => LP m Inlines inlines = mconcat <$> many (notFollowedBy (char '}') *> inline) -- cgit v1.2.3