diff options
-rw-r--r-- | src/Text/Pandoc/Citeproc/BibTeX.hs | 4 | ||||
-rw-r--r-- | test/command/6752.md | 36 |
2 files changed, 38 insertions, 2 deletions
diff --git a/src/Text/Pandoc/Citeproc/BibTeX.hs b/src/Text/Pandoc/Citeproc/BibTeX.hs index 4828115b6..b24ad0319 100644 --- a/src/Text/Pandoc/Citeproc/BibTeX.hs +++ b/src/Text/Pandoc/Citeproc/BibTeX.hs @@ -61,7 +61,8 @@ readBibtexString :: Variant -- ^ bibtex or biblatex readBibtexString variant locale idpred contents = do case runParser (((resolveCrossRefs variant <$> bibEntries) <* eof) >>= mapM (itemToReference locale variant) . - filter (idpred . identifier)) + filter (\item -> idpred (identifier item) && + entryType item /= "xdata")) (fromMaybe defaultLang $ localeLanguage locale, Map.empty) "" contents of Left err -> Left err @@ -1058,7 +1059,6 @@ getTypeAndGenre :: Bib (Text, Maybe Text) getTypeAndGenre = do lang <- gets localeLang et <- asks entryType - guard $ et /= "xdata" reftype' <- resolveKey' lang <$> getRawField "type" <|> return mempty st <- getRawField "entrysubtype" <|> return mempty diff --git a/test/command/6752.md b/test/command/6752.md new file mode 100644 index 000000000..b2d51d2ca --- /dev/null +++ b/test/command/6752.md @@ -0,0 +1,36 @@ +``` +% pandoc -f biblatex -t csljson +@xdata{XDPubAlfredAKnopf, + publisher = {Alfred A.~Knopf}, + address = {New York, NY} +} +@book{Klinkenborg2012, + author = {Verlyn Klinkenborg}, + title = {Several short sentences about writing}, + date = {2012}, + xdata = {XDPubAlfredAKnopf}, +} +^D +[ + { + "author": [ + { + "family": "Klinkenborg", + "given": "Verlyn" + } + ], + "id": "Klinkenborg2012", + "issued": { + "date-parts": [ + [ + 2012 + ] + ] + }, + "publisher": "Alfred A. Knopf", + "publisher-place": "New York, NY", + "title": "Several short sentences about writing", + "type": "book" + } +] +``` |