@@ -1332,9 +1332,6 @@ noneOfUnlessEscaped cs =
1332textualCite :: GenParser Char ParserState [Citation]
1332textualCite :: GenParser Char ParserState [Citation]
1333textualCite = try $ do
1333textualCite = try $ do
1334 (_, key) <- citeKey
1334 (_, key) <- citeKey
1336− unless (key `elem` stateCitations st) $
1337− fail "not a citation"
1338 let first = Citation{ citationId = key
1335 let first = Citation{ citationId = key
1339 , citationPrefix = []
1336 , citationPrefix = []
1340 , citationSuffix = []
1337 , citationSuffix = []
@@ -1368,13 +1365,16 @@ normalCite = try $ do
1368 char ']'
1365 char ']'
1369 return citations
1366 return citations
1371−citeKey :: GenParser Char st (Bool, String)
1368+citeKey :: GenParser Char ParserState (Bool, String)
1372citeKey = try $ do
1369citeKey = try $ do
1373 suppress_author <- option False (char '-' >> return True)
1370 suppress_author <- option False (char '-' >> return True)
1374 char '@'
1371 char '@'
1375 first <- letter
1372 first <- letter
1376 rest <- many $ (noneOf ",;]@ \t\n")
1373 rest <- many $ (noneOf ",;]@ \t\n")
1374+ let key = first:rest
1376+ guard $ key `elem` stateCitations st
1377− return (suppress_author, first:rest)
1377+ return (suppress_author, key)
1379locator :: GenParser Char st String
1379locator :: GenParser Char st String
1380locator = try $ do
1380locator = try $ do