git.iko.soy/typeable/pandoc
on master help sign in
LaTeX reader: small improvements in parsing arguments.
6530bc4John MacFarlane
src/Text/Pandoc/Readers/LaTeX.hs+7−10
@@ -426,13 +426,13 @@ resetCaption = updateState $ \st -> st{ stateCaption = Nothing }
426
426
427authors :: PandocMonad m => LP m ()
427authors :: PandocMonad m => LP m ()
428authors = try $ do
428authors = try $ do
429− char '{'
429+ bgroup
430 let oneAuthor = mconcat <$>
430 let oneAuthor = mconcat <$>
431 many1 (notFollowedBy' (controlSeq "and") >>
431 many1 (notFollowedBy' (controlSeq "and") >>
432 (inline <|> mempty <$ blockCommand))
432 (inline <|> mempty <$ blockCommand))
433 -- skip e.g. \vspace{10pt}
433 -- skip e.g. \vspace{10pt}
434 auths <- sepBy oneAuthor (controlSeq "and")
434 auths <- sepBy oneAuthor (controlSeq "and")
435− char '}'
435+ egroup
436 addMeta "author" (map trimInlines auths)
436 addMeta "author" (map trimInlines auths)
437
437
438section :: PandocMonad m => Attr -> Int -> LP m Blocks
438section :: PandocMonad m => Attr -> Int -> LP m Blocks
@@ -577,8 +577,8 @@ inlineCommands = M.fromList $
577 , ("bar", lit "|")
577 , ("bar", lit "|")
578 , ("textless", lit "<")
578 , ("textless", lit "<")
579 , ("textgreater", lit ">")
579 , ("textgreater", lit ">")
580− , ("thanks", (note . mconcat) <$> (char '{' *> manyTill block (char '}')))
580+ , ("thanks", note <$> grouped block)
581− , ("footnote", (note . mconcat) <$> (char '{' *> manyTill block (char '}')))
581+ , ("footnote", note <$> grouped block)
582 , ("verb", doverb)
582 , ("verb", doverb)
583 , ("lstinline", skipopts *> doverb)
583 , ("lstinline", skipopts *> doverb)
584 , ("Verb", doverb)
584 , ("Verb", doverb)
@@ -971,9 +971,6 @@ rawEnv name = do
971
971
972----
972----
973
973
974−braced' :: PandocMonad m => LP m String
975−braced' = try $ char '{' *> manyTill (satisfy (/='}')) (char '}')
976−
977maybeAddExtension :: String -> FilePath -> FilePath
974maybeAddExtension :: String -> FilePath -> FilePath
978maybeAddExtension ext fp =
975maybeAddExtension ext fp =
979 if null (takeExtension fp)
976 if null (takeExtension fp)
@@ -989,7 +986,7 @@ include = do
989 <|> string "usepackage"
986 <|> string "usepackage"
990 -- skip options
987 -- skip options
991 skipMany $ try $ char '[' *> manyTill anyChar (char ']')
988 skipMany $ try $ char '[' *> manyTill anyChar (char ']')
992− fs <- (map trim . splitBy (==',')) <$> braced'
989+ fs <- (map trim . splitBy (==',')) <$> braced
993 return $ if name == "usepackage"
990 return $ if name == "usepackage"
994 then map (maybeAddExtension ".sty") fs
991 then map (maybeAddExtension ".sty") fs
995 else map (maybeAddExtension ".tex") fs
992 else map (maybeAddExtension ".tex") fs
@@ -1339,7 +1336,7 @@ complexNatbibCitation mode = try $ do
1339
1336
1340parseAligns :: PandocMonad m => LP m [(String, Alignment, String)]
1337parseAligns :: PandocMonad m => LP m [(String, Alignment, String)]
1341parseAligns = try $ do
1338parseAligns = try $ do
1342− char '{'
1339+ bgroup
1343 let maybeBar = skipMany $ sp <|> () <$ char '|' <|> () <$ (char '@' >> braced)
1340 let maybeBar = skipMany $ sp <|> () <$ char '|' <|> () <$ (char '@' >> braced)
1344 maybeBar
1341 maybeBar
1345 let cAlign = AlignCenter <$ char 'c'
1342 let cAlign = AlignCenter <$ char 'c'
@@ -1359,7 +1356,7 @@ parseAligns = try $ do
1359 return (pref, ch, suff)
1356 return (pref, ch, suff)
1360 aligns' <- sepEndBy alignSpec maybeBar
1357 aligns' <- sepEndBy alignSpec maybeBar
1361 spaces
1358 spaces
1362− char '}'
1359+ egroup
1363 spaces
1360 spaces
1364 return $ aligns'
1361 return $ aligns'
1365
1362