@@ -250,7 +250,8 @@ blockCommands = M.fromList $
250250 -- newcommand, etc. should be parsed by macro, but we need this
251251 -- here so these aren't parsed as inline commands to ignore
252252 , "special", "pdfannot", "pdfstringdef"
253− , "bibliography", "maketitle", "makeindex", "makeglossary"
253+ , "bibliography", "bibliographystyle"
254+ , "maketitle", "makeindex", "makeglossary"
254255 , "addcontentsline", "addtocontents", "addtocounter"
255256 -- \ignore{} is used conventionally in literate haskell for definitions
256257 -- that are to be processed by the compiler but not printed.
@@ -394,60 +395,60 @@ inlineCommands = M.fromList $
394395 pure (link url "" lab))
395396 , ("includegraphics", optional opt *> (unescapeURL <$> braced) >>=
396397 (\src -> pure (image src "" (str "image"))))
397− , ("cite", citation NormalCitation False)
398− , ("citep", citation NormalCitation False)
399− , ("citep*", citation NormalCitation False)
400− , ("citeal", citation NormalCitation False)
401− , ("citealp", citation NormalCitation False)
402− , ("citealp*", citation NormalCitation False)
403− , ("autocite", citation NormalCitation False)
404− , ("footcite", citation NormalCitation False)
405− , ("parencite", citation NormalCitation False)
406− , ("supercite", citation NormalCitation False)
407− , ("footcitetext", citation NormalCitation False)
408− , ("citeyearpar", citation SuppressAuthor False)
409− , ("citeyear", citation SuppressAuthor False)
410− , ("autocite*", citation SuppressAuthor False)
411− , ("cite*", citation SuppressAuthor False)
412− , ("parencite*", citation SuppressAuthor False)
413− , ("textcite", citation AuthorInText False)
414− , ("citet", citation AuthorInText False)
415− , ("citet*", citation AuthorInText False)
416− , ("citealt", citation AuthorInText False)
417− , ("citealt*", citation AuthorInText False)
418− , ("textcites", citation AuthorInText True)
419− , ("cites", citation NormalCitation True)
420− , ("autocites", citation NormalCitation True)
421− , ("footcites", citation NormalCitation True)
422− , ("parencites", citation NormalCitation True)
423− , ("supercites", citation NormalCitation True)
424− , ("footcitetexts", citation NormalCitation True)
425− , ("Autocite", citation NormalCitation False)
426− , ("Footcite", citation NormalCitation False)
427− , ("Parencite", citation NormalCitation False)
428− , ("Supercite", citation NormalCitation False)
429− , ("Footcitetext", citation NormalCitation False)
430− , ("Citeyearpar", citation SuppressAuthor False)
431− , ("Citeyear", citation SuppressAuthor False)
432− , ("Autocite*", citation SuppressAuthor False)
433− , ("Cite*", citation SuppressAuthor False)
434− , ("Parencite*", citation SuppressAuthor False)
435− , ("Textcite", citation AuthorInText False)
436− , ("Textcites", citation AuthorInText True)
437− , ("Cites", citation NormalCitation True)
438− , ("Autocites", citation NormalCitation True)
439− , ("Footcites", citation NormalCitation True)
440− , ("Parencites", citation NormalCitation True)
441− , ("Supercites", citation NormalCitation True)
442− , ("Footcitetexts", citation NormalCitation True)
398+ , ("cite", citation "cite" NormalCitation False)
399+ , ("citep", citation "citep" NormalCitation False)
400+ , ("citep*", citation "citep*" NormalCitation False)
401+ , ("citeal", citation "citeal" NormalCitation False)
402+ , ("citealp", citation "citealp" NormalCitation False)
403+ , ("citealp*", citation "citealp*" NormalCitation False)
404+ , ("autocite", citation "autocite" NormalCitation False)
405+ , ("footcite", citation "footcite" NormalCitation False)
406+ , ("parencite", citation "parencite" NormalCitation False)
407+ , ("supercite", citation "supercite" NormalCitation False)
408+ , ("footcitetext", citation "footcitetext" NormalCitation False)
409+ , ("citeyearpar", citation "citeyearpar" SuppressAuthor False)
410+ , ("citeyear", citation "citeyear" SuppressAuthor False)
411+ , ("autocite*", citation "autocite*" SuppressAuthor False)
412+ , ("cite*", citation "cite*" SuppressAuthor False)
413+ , ("parencite*", citation "parencite*" SuppressAuthor False)
414+ , ("textcite", citation "textcite" AuthorInText False)
415+ , ("citet", citation "citet" AuthorInText False)
416+ , ("citet*", citation "citet*" AuthorInText False)
417+ , ("citealt", citation "citealt" AuthorInText False)
418+ , ("citealt*", citation "citealt*" AuthorInText False)
419+ , ("textcites", citation "textcites" AuthorInText True)
420+ , ("cites", citation "cites" NormalCitation True)
421+ , ("autocites", citation "autocites" NormalCitation True)
422+ , ("footcites", citation "footcites" NormalCitation True)
423+ , ("parencites", citation "parencites" NormalCitation True)
424+ , ("supercites", citation "supercites" NormalCitation True)
425+ , ("footcitetexts", citation "footcitetexts" NormalCitation True)
426+ , ("Autocite", citation "Autocite" NormalCitation False)
427+ , ("Footcite", citation "Footcite" NormalCitation False)
428+ , ("Parencite", citation "Parencite" NormalCitation False)
429+ , ("Supercite", citation "Supercite" NormalCitation False)
430+ , ("Footcitetext", citation "Footcitetext" NormalCitation False)
431+ , ("Citeyearpar", citation "Citeyearpar" SuppressAuthor False)
432+ , ("Citeyear", citation "Citeyear" SuppressAuthor False)
433+ , ("Autocite*", citation "Autocite*" SuppressAuthor False)
434+ , ("Cite*", citation "Cite*" SuppressAuthor False)
435+ , ("Parencite*", citation "Parencite*" SuppressAuthor False)
436+ , ("Textcite", citation "Textcite" AuthorInText False)
437+ , ("Textcites", citation "Textcites" AuthorInText True)
438+ , ("Cites", citation "Cites" NormalCitation True)
439+ , ("Autocites", citation "Autocites" NormalCitation True)
440+ , ("Footcites", citation "Footcites" NormalCitation True)
441+ , ("Parencites", citation "Parencites" NormalCitation True)
442+ , ("Supercites", citation "Supercites" NormalCitation True)
443+ , ("Footcitetexts", citation "Footcitetexts" NormalCitation True)
443444 , ("citetext", complexNatbibCitation NormalCitation)
444445 , ("citeauthor", (try (tok *> optional sp *> controlSeq "citetext") *>
445446 complexNatbibCitation AuthorInText)
446− <|> citation AuthorInText False)
447+ <|> citation "citeauthor" AuthorInText False)
447448 ] ++ map ignoreInlines
448449 -- these commands will be ignored unless --parse-raw is specified,
449450 -- in which case they will appear as raw latex blocks:
450− [ "index" ]
451+ [ "index", "nocite" ]
451452
452453unescapeURL :: String -> String
453454unescapeURL ('\\':x:xs) | isEscapable x = x:unescapeURL xs
@@ -839,8 +840,10 @@ cites mode multi = try $ do
839840 AuthorInText -> c {citationMode = mode} : cs
840841 _ -> map (\a -> a {citationMode = mode}) (c:cs)
841842
842−citation :: CitationMode -> Bool -> LP Inlines
843−citation mode multi = (flip cite mempty) <$> cites mode multi
843+citation :: String -> CitationMode -> Bool -> LP Inlines
844+citation name mode multi = do
845+ (c,raw) <- withRaw $ cites mode multi
846+ return $ cite c (rawInline "latex" $ "\\" ++ name ++ raw)
844847
845848complexNatbibCitation :: CitationMode -> LP Inlines
846849complexNatbibCitation mode = try $ do
@@ -858,8 +861,9 @@ complexNatbibCitation mode = try $ do
858861 skipSpaces
859862 optional $ char ';'
860863 return $ addPrefix pref $ addSuffix suff $ cits'
861− (c:cits) <- grouped parseOne
862− return $ cite (c{ citationMode = mode }:cits) mempty
864+ (c:cits, raw) <- withRaw $ grouped parseOne
865+ return $ cite (c{ citationMode = mode }:cits)
866+ (rawInline "latex" $ "\\citetext" ++ raw)
863867
864868-- tables
865869