@@ -1332,9 +1332,9 @@ textualCite = try $ do
1333 char '['
1333 char '['
1335− bareloc <- option "" locator
1335+ bareloc <- option "" $ notFollowedBy (oneOf "-@") >> locator
1336 rest <- many $ try $ do
1336 rest <- many $ try $ do
1337− char ';'
1337+ optional $ char ';'
1339 citation
1339 citation
@@ -1366,10 +1366,10 @@ locator = try $ do
1366 (char '\n' >> notFollowedBy blankline >> return ' ')
1366 (char '\n' >> notFollowedBy blankline >> return ' ')
1368prefix :: GenParser Char st String
1368prefix :: GenParser Char st String
1369−prefix = try $ liftM removeLeadingTrailingSpace $
1369+prefix = liftM removeLeadingTrailingSpace $
1370− many $ (char '\\' >> anyChar) <|> noneOf "@]\n" <|>
1370+ many $ (char '\\' >> anyChar) <|> noneOf "-@]\n" <|>
1371− (char '-' >> notFollowedBy (char '@') >> return '-') <|>
1371+ (try $ char '-' >> notFollowedBy (char '@') >> return '-') <|>
1372− (char '\n' >> notFollowedBy blankline >> return ' ')
1372+ (try $ char '\n' >> notFollowedBy blankline >> return ' ')
1374citeList :: GenParser Char st [Citation]
1374citeList :: GenParser Char st [Citation]
1375citeList = try $ do
1375citeList = try $ do
@@ -1387,10 +1387,10 @@ citeList = try $ do
1388citation :: GenParser Char st Citation
1388citation :: GenParser Char st Citation
1389citation = try $ do
1389citation = try $ do
1390− suppress_auth <- option False (char '-' >> return True)
1391 pref <- prefix
1390 pref <- prefix
1391+ suppress_auth <- option False (char '-' >> return True)
1392 key <- citeKey
1392 key <- citeKey
1393− loc <- locator
1393+ loc <- option "" locator
1394 return $ Citation{ citationId = key
1394 return $ Citation{ citationId = key
1395 , citationPrefix = pref
1395 , citationPrefix = pref
1396 , citationLocator = loc
1396 , citationLocator = loc