aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pandoc.cabal2
-rw-r--r--src/Text/Pandoc/Readers/LaTeX.hs11
-rw-r--r--src/Text/Pandoc/Writers/Markdown.hs3
-rw-r--r--tests/Tests/Old.hs2
-rw-r--r--tests/Tests/Readers/LaTeX.hs10
-rw-r--r--tests/biblio.mods106
-rw-r--r--tests/latex-reader.native2
7 files changed, 128 insertions, 8 deletions
diff --git a/pandoc.cabal b/pandoc.cabal
index b528a0339..402a4e581 100644
--- a/pandoc.cabal
+++ b/pandoc.cabal
@@ -109,6 +109,7 @@ Extra-Source-Files:
tests/lalune.jpg,
tests/movie.jpg,
tests/biblio.bib,
+ tests/biblio.mods,
tests/chicago-author-date.csl,
tests/ieee.csl,
tests/mhra.csl,
@@ -383,6 +384,7 @@ Test-Suite test-pandoc
QuickCheck >= 2.4 && < 2.6,
HUnit >= 1.2 && < 1.3,
containers >= 0.1 && < 0.6,
+ citeproc-hs >= 0.3 && < 0.4,
ansi-terminal >= 0.5 && < 0.7
Other-Modules: Tests.Old
Tests.Helpers
diff --git a/src/Text/Pandoc/Readers/LaTeX.hs b/src/Text/Pandoc/Readers/LaTeX.hs
index 5a2ab599b..880997a6d 100644
--- a/src/Text/Pandoc/Readers/LaTeX.hs
+++ b/src/Text/Pandoc/Readers/LaTeX.hs
@@ -1021,7 +1021,10 @@ cites mode multi = try $ do
citation :: String -> CitationMode -> Bool -> LP Inlines
citation name mode multi = do
(c,raw) <- withRaw $ cites mode multi
- return $ cite c (rawInline "latex" $ "\\" ++ name ++ raw)
+ refs <- getOption readerReferences
+ return $ if null refs
+ then rawInline "latex" $ "\\" ++ name ++ raw
+ else cite c mempty
complexNatbibCitation :: CitationMode -> LP Inlines
complexNatbibCitation mode = try $ do
@@ -1040,8 +1043,10 @@ complexNatbibCitation mode = try $ do
optional $ char ';'
return $ addPrefix pref $ addSuffix suff $ cits'
(c:cits, raw) <- withRaw $ grouped parseOne
- return $ cite (c{ citationMode = mode }:cits)
- (rawInline "latex" $ "\\citetext" ++ raw)
+ refs <- getOption readerReferences
+ return $ if null refs
+ then rawInline "latex" $ "\\citetext" ++ raw
+ else cite (c{ citationMode = mode}:cits) mempty
-- tables
diff --git a/src/Text/Pandoc/Writers/Markdown.hs b/src/Text/Pandoc/Writers/Markdown.hs
index aa7764356..c19cad22b 100644
--- a/src/Text/Pandoc/Writers/Markdown.hs
+++ b/src/Text/Pandoc/Writers/Markdown.hs
@@ -644,7 +644,8 @@ inlineToMarkdown opts (LineBreak)
| otherwise = return $ " " <> cr
inlineToMarkdown _ Space = return space
inlineToMarkdown opts (Cite (c:cs) lst)
- | not (isEnabled Ext_citations opts) = inlineListToMarkdown opts lst
+ | not (null lst) = inlineListToMarkdown opts lst
+ -- if lst is null, citeproc wasn't run; print a pandoc markdown citation
| citationMode c == AuthorInText = do
suffs <- inlineListToMarkdown opts $ citationSuffix c
rest <- mapM convertOne cs
diff --git a/tests/Tests/Old.hs b/tests/Tests/Old.hs
index b6d95ca89..9e7493504 100644
--- a/tests/Tests/Old.hs
+++ b/tests/Tests/Old.hs
@@ -186,7 +186,7 @@ markdownCitationTests
++ [test "natbib" wopts "markdown-citations.txt"
"markdown-citations.txt"]
where
- ropts = ["-r", "markdown", "-w", "markdown-citations", "--bibliography",
+ ropts = ["-r", "markdown", "-w", "markdown", "--bibliography",
"biblio.bib", "--no-wrap"]
wopts = ["-r", "markdown", "-w", "markdown", "--no-wrap", "--natbib"]
styleToTest style = test style (ropts ++ ["--csl", style ++ ".csl"])
diff --git a/tests/Tests/Readers/LaTeX.hs b/tests/Tests/Readers/LaTeX.hs
index 271b32689..016281ccb 100644
--- a/tests/Tests/Readers/LaTeX.hs
+++ b/tests/Tests/Readers/LaTeX.hs
@@ -2,14 +2,20 @@
module Tests.Readers.LaTeX (tests) where
import Text.Pandoc.Definition
+import Data.Monoid (mempty)
+import Text.CSL (Reference, readBiblioFile)
import Test.Framework
import Tests.Helpers
import Tests.Arbitrary()
import Text.Pandoc.Builder
import Text.Pandoc
+import System.IO.Unsafe (unsafePerformIO)
+
+refs :: [Reference]
+refs = unsafePerformIO $ readBiblioFile "biblio.mods"
latex :: String -> Pandoc
-latex = readLaTeX def
+latex = readLaTeX def{ readerReferences = refs }
infix 4 =:
(=:) :: ToString c
@@ -71,7 +77,7 @@ baseCitation = Citation{ citationId = "item1"
}
rt :: String -> Inlines
-rt = rawInline "latex"
+rt = const mempty -- rawInline "latex"
natbibCitations :: Test
natbibCitations = testGroup "natbib"
diff --git a/tests/biblio.mods b/tests/biblio.mods
new file mode 100644
index 000000000..478439419
--- /dev/null
+++ b/tests/biblio.mods
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<modsCollection xmlns="http://www.loc.gov/mods/v3">
+<mods ID="item1">
+ <titleInfo>
+ <title>First Book</title>
+ </titleInfo>
+ <name type="personal">
+ <namePart type="given">John</namePart>
+ <namePart type="family">Doe</namePart>
+ <role>
+ <roleTerm authority="marcrelator" type="text">author</roleTerm>
+ </role>
+ </name>
+ <originInfo>
+ <issuance>monographic</issuance>
+ <dateIssued>2005</dateIssued>
+ <publisher>Cambridge University Press</publisher>
+ <place>
+ <placeTerm type="text">Cambridge</placeTerm>
+ </place>
+ </originInfo>
+ <typeOfResource>text</typeOfResource>
+ <genre authority="marcgt">book</genre>
+ <identifier type="citekey">item1</identifier>
+</mods>
+<mods ID="item2">
+ <titleInfo>
+ <title>Article</title>
+ </titleInfo>
+ <name type="personal">
+ <namePart type="given">John</namePart>
+ <namePart type="family">Doe</namePart>
+ <role>
+ <roleTerm authority="marcrelator" type="text">author</roleTerm>
+ </role>
+ </name>
+ <originInfo>
+ <dateIssued>2006</dateIssued>
+ </originInfo>
+ <typeOfResource>text</typeOfResource>
+ <relatedItem type="host">
+ <titleInfo>
+ <title>Journal of Generic Studies</title>
+ </titleInfo>
+ <originInfo>
+ <issuance>continuing</issuance>
+ </originInfo>
+ <genre authority="marcgt">periodical</genre>
+ <genre>academic journal</genre>
+ </relatedItem>
+ <identifier type="citekey">item2</identifier>
+ <part>
+ <date>2006</date>
+ <detail type="volume"><number>6</number></detail>
+ <extent unit="page">
+ <start>33</start>
+ <end>34</end>
+ </extent>
+ </part>
+</mods>
+<mods ID="пункт3">
+ <titleInfo>
+ <title>Why Water Is Wet</title>
+ </titleInfo>
+ <name type="personal">
+ <namePart type="given">John</namePart>
+ <namePart type="family">Doe</namePart>
+ <role>
+ <roleTerm authority="marcrelator" type="text">author</roleTerm>
+ </role>
+ </name>
+ <name type="personal">
+ <namePart type="given">Jenny</namePart>
+ <namePart type="family">Roe</namePart>
+ <role>
+ <roleTerm authority="marcrelator" type="text">author</roleTerm>
+ </role>
+ </name>
+ <originInfo>
+ <issuance>monographic</issuance>
+ <dateIssued>2007</dateIssued>
+ </originInfo>
+ <typeOfResource>text</typeOfResource>
+ <relatedItem type="host">
+ <titleInfo>
+ <title>Third Book</title>
+ </titleInfo>
+ <name type="personal">
+ <namePart type="given">Sam</namePart>
+ <namePart type="family">Smith</namePart>
+ <role>
+ <roleTerm authority="marcrelator" type="text">editor</roleTerm>
+ </role>
+ </name>
+ <originInfo>
+ <dateIssued>2007</dateIssued>
+ <publisher>Oxford University Press</publisher>
+ <place>
+ <placeTerm type="text">Oxford</placeTerm>
+ </place>
+ </originInfo>
+ <genre>collection</genre>
+ </relatedItem>
+ <identifier type="citekey">пункт3</identifier>
+</mods>
+</modsCollection>
diff --git a/tests/latex-reader.native b/tests/latex-reader.native
index 28bbad89c..f225e0969 100644
--- a/tests/latex-reader.native
+++ b/tests/latex-reader.native
@@ -260,7 +260,7 @@ Pandoc (Meta {docTitle = [Str "Pandoc",Space,Str "Test",Space,Str "Suite"], docA
,HorizontalRule
,Header 1 ("",[],[]) [Str "LaTeX"]
,BulletList
- [[Para [Cite [Citation {citationId = "smith.1899", citationPrefix = [], citationSuffix = [Str ",",Space,Str "22-23"], citationMode = AuthorInText, citationNoteNum = 0, citationHash = 0}] [RawInline "latex" "\\cite[22-23]{smith.1899}"]]]
+ [[Para [RawInline "latex" "\\cite[22-23]{smith.1899}"]]
,[Para [RawInline "latex" "\\doublespacing"]]
,[Para [Math InlineMath "2+2=4"]]
,[Para [Math InlineMath "x \\in y"]]