diff options
author | John MacFarlane <jgm@berkeley.edu> | 2018-10-08 20:47:09 -0700 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2018-10-08 20:47:09 -0700 |
commit | a92e43575fb44c47263603b1dc5db9ef4f7421d3 (patch) | |
tree | a6ba58a1552d58d65c2264a351c6da64838e3820 | |
parent | b60c64d06e1fa7d5f3e41cc0c93da965a286e11c (diff) | |
download | pandoc-a92e43575fb44c47263603b1dc5db9ef4f7421d3.tar.gz |
LaTeX writer: with `--biblatex`, use `\autocite` when possible.
`\autocites{a1}{a2}{a3}` will not collapse the entries.
So, if we don't have prefixes and suffixes, we use instead
`\autocite{a1;a2;a3}`.
Closes #4960.
-rw-r--r-- | src/Text/Pandoc/Writers/LaTeX.hs | 34 | ||||
-rw-r--r-- | test/command/4960.md | 22 |
2 files changed, 43 insertions, 13 deletions
diff --git a/src/Text/Pandoc/Writers/LaTeX.hs b/src/Text/Pandoc/Writers/LaTeX.hs index c1b5d0fa4..891c20f07 100644 --- a/src/Text/Pandoc/Writers/LaTeX.hs +++ b/src/Text/Pandoc/Writers/LaTeX.hs @@ -1366,19 +1366,27 @@ citationsToBiblatex AuthorInText -> "textcite" NormalCitation -> "autocite" -citationsToBiblatex (c:cs) = do - args <- mapM convertOne (c:cs) - return $ text cmd <> foldl' (<>) empty args - where - cmd = case citationMode c of - SuppressAuthor -> "\\autocites*" - AuthorInText -> "\\textcites" - NormalCitation -> "\\autocites" - convertOne Citation { citationId = k - , citationPrefix = p - , citationSuffix = s - } - = citeArguments p s k +citationsToBiblatex (c:cs) + | all (\cit -> null (citationPrefix cit) && null (citationSuffix cit)) (c:cs) + = do + let cmd = case citationMode c of + SuppressAuthor -> "\\autocite*" + AuthorInText -> "\\textcite" + NormalCitation -> "\\autocite" + return $ text cmd <> + braces (text (intercalate "," (map citationId (c:cs)))) + | otherwise = do + let cmd = case citationMode c of + SuppressAuthor -> "\\autocites*" + AuthorInText -> "\\textcites" + NormalCitation -> "\\autocites" + let convertOne Citation { citationId = k + , citationPrefix = p + , citationSuffix = s + } + = citeArguments p s k + args <- mapM convertOne (c:cs) + return $ text cmd <> foldl' (<>) empty args citationsToBiblatex _ = return empty diff --git a/test/command/4960.md b/test/command/4960.md new file mode 100644 index 000000000..7253b533a --- /dev/null +++ b/test/command/4960.md @@ -0,0 +1,22 @@ +``` +% pandoc -t latex --biblatex +[@a1;@a2;@a3] +^D +\autocite{a1,a2,a3} +``` + +``` +% pandoc -t latex --biblatex +@a1 [@a2;@a3] +^D +\textcite{a1,a2,a3} +``` + +``` +% pandoc -t latex --biblatex +[@a1, blah; @a2; see @a3] +^D +\autocites[blah]{a1}{a2}[see][]{a3} +``` + + |