diff options
-rw-r--r-- | src/Text/Pandoc/Citeproc.hs | 29 | ||||
-rw-r--r-- | test/command/6951.md | 18 |
2 files changed, 33 insertions, 14 deletions
diff --git a/src/Text/Pandoc/Citeproc.hs b/src/Text/Pandoc/Citeproc.hs index 0de2882ae..82d1dc32f 100644 --- a/src/Text/Pandoc/Citeproc.hs +++ b/src/Text/Pandoc/Citeproc.hs @@ -105,20 +105,21 @@ processCitations (Pandoc meta bs) = do let idpred = if "*" `Set.member` nocites then const True else (`Set.member` citeIds) - refs <- map (linkifyVariables . legacyDateRanges) <$> - case lookupMeta "references" meta of - Just (MetaList rs) -> return $ mapMaybe metaValueToReference rs - _ -> - case lookupMeta "bibliography" meta of - Just (MetaList xs) -> - mconcat <$> - mapM (getRefsFromBib locale idpred) - (mapMaybe metaValueToText xs) - Just x -> - case metaValueToText x of - Just fp -> getRefsFromBib locale idpred fp - Nothing -> return [] - Nothing -> return [] + let inlineRefs = case lookupMeta "references" meta of + Just (MetaList rs) -> mapMaybe metaValueToReference rs + _ -> [] + externalRefs <- case lookupMeta "bibliography" meta of + Just (MetaList xs) -> + mconcat <$> + mapM (getRefsFromBib locale idpred) + (mapMaybe metaValueToText xs) + Just x -> + case metaValueToText x of + Just fp -> getRefsFromBib locale idpred fp + Nothing -> return [] + Nothing -> return [] + let refs = map (linkifyVariables . legacyDateRanges) + (inlineRefs ++ externalRefs) let otherIdsMap = foldr (\ref m -> case T.words . extractText <$> M.lookup "other-ids" diff --git a/test/command/6951.md b/test/command/6951.md new file mode 100644 index 000000000..4a6301d80 --- /dev/null +++ b/test/command/6951.md @@ -0,0 +1,18 @@ +``` +% pandoc --citeproc -t plain --bibliography command/biblio.bib +--- +references: +- id: foo + title: Crazy + type: book +... + +[@foo; @item1] + +^D +(Crazy, n.d.; Doe 2005) + +Crazy. n.d. + +Doe, John. 2005. First Book. Cambridge: Cambridge University Press. +``` |