diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Text/Pandoc/Readers/Markdown.hs | 22 | ||||
-rw-r--r-- | src/Text/Pandoc/Writers/Markdown.hs | 4 |
2 files changed, 17 insertions, 9 deletions
diff --git a/src/Text/Pandoc/Readers/Markdown.hs b/src/Text/Pandoc/Readers/Markdown.hs index 6b144f35e..e198586d6 100644 --- a/src/Text/Pandoc/Readers/Markdown.hs +++ b/src/Text/Pandoc/Readers/Markdown.hs @@ -1248,6 +1248,7 @@ inline = choice [ whitespace , emph , note , cite + , textCite , link , image , math @@ -1630,12 +1631,12 @@ rawHtmlInline = do cite :: MarkdownParser (F Inlines) cite = do guardEnabled Ext_citations - getOption readerReferences >>= guard . not . null - citations <- textualCite <|> normalCite + citations <- normalCite return $ flip B.cite mempty <$> citations -textualCite :: MarkdownParser (F [Citation]) -textualCite = try $ do +textCite :: MarkdownParser (F Inlines) +textCite = try $ do + guardEnabled Ext_citations (_, key) <- citeKey let first = Citation{ citationId = key , citationPrefix = [] @@ -1646,8 +1647,15 @@ textualCite = try $ do } mbrest <- option Nothing $ try $ spnl >> Just <$> normalCite case mbrest of - Just rest -> return $ (first:) <$> rest - Nothing -> option (return [first]) $ bareloc first + Just rest -> return $ (flip B.cite mempty . (first:)) <$> rest + Nothing -> (do cites <- bareloc first + return $ flip B.cite mempty <$> cites) + <|> (do guardEnabled Ext_example_lists + st <- getState + case M.lookup key (stateExamples st) of + Just n -> return $ return $ B.str (show n) + Nothing -> mzero) + <|> (return $ return $ flip B.cite mempty [first]) bareloc :: Citation -> MarkdownParser (F [Citation]) bareloc c = try $ do @@ -1679,8 +1687,6 @@ citeKey = try $ do let internal p = try $ p >>~ lookAhead (letter <|> digit) rest <- many $ letter <|> digit <|> internal (oneOf ":.#$%&-_?<>~/") let key = first:rest - citations' <- map CSL.refId <$> getOption readerReferences - guard $ key `elem` citations' return (suppress_author, key) suffix :: MarkdownParser (F Inlines) diff --git a/src/Text/Pandoc/Writers/Markdown.hs b/src/Text/Pandoc/Writers/Markdown.hs index 4d848d55b..8ff5ff9de 100644 --- a/src/Text/Pandoc/Writers/Markdown.hs +++ b/src/Text/Pandoc/Writers/Markdown.hs @@ -614,7 +614,9 @@ inlineToMarkdown opts (LineBreak) | otherwise = return $ " " <> cr inlineToMarkdown _ Space = return space inlineToMarkdown opts (Cite (c:cs) lst) - | writerCiteMethod opts == Citeproc = inlineListToMarkdown opts lst + | writerCiteMethod opts == Citeproc && not (null lst) && + case lst of { RawInline "latex" _ : _ -> False; _ -> True} = + inlineListToMarkdown opts lst | citationMode c == AuthorInText = do suffs <- inlineListToMarkdown opts $ citationSuffix c rest <- mapM convertOne cs |