diff options
author | John MacFarlane <jgm@berkeley.edu> | 2019-05-04 08:45:43 -0700 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2019-05-04 08:45:43 -0700 |
commit | 9dd2eefded7879df85150484c0476410dd77a4f7 (patch) | |
tree | 4bee5336bf35702a21514547304c2116e2df614e /src/Text/Pandoc/Writers | |
parent | d73cb5f1a86679e42f226125d7f4dbf2564f79af (diff) | |
download | pandoc-9dd2eefded7879df85150484c0476410dd77a4f7.tar.gz |
JATS writer: fix citations with PMID so they validate.
Closes #5481. This includes an update to data/jats.csl.
Diffstat (limited to 'src/Text/Pandoc/Writers')
-rw-r--r-- | src/Text/Pandoc/Writers/JATS.hs | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/Text/Pandoc/Writers/JATS.hs b/src/Text/Pandoc/Writers/JATS.hs index 6cbe35bdc..e2c4e1e72 100644 --- a/src/Text/Pandoc/Writers/JATS.hs +++ b/src/Text/Pandoc/Writers/JATS.hs @@ -18,7 +18,7 @@ import Prelude import Control.Monad.Reader import Data.Char (toLower) import Data.Generics (everywhere, mkT) -import Data.List (isSuffixOf, partition) +import Data.List (isSuffixOf, partition, isPrefixOf) import Data.Maybe (fromMaybe) import Data.Text (Text) import Text.Pandoc.Class (PandocMonad, report) @@ -322,11 +322,15 @@ inlinesToJATS :: PandocMonad m => WriterOptions -> [Inline] -> JATS m Doc inlinesToJATS opts lst = hcat <$> mapM (inlineToJATS opts) (fixCitations lst) where fixCitations [] = [] - fixCitations (x@(RawInline (Format "jats") "<pub-id pub-id-type=\"doi\">") : xs) = - let isRawInline (RawInline{}) = True - isRawInline _ = False - (ys,zs) = break isRawInline xs - in x : Str (stringify ys) : fixCitations zs + fixCitations (x:xs) | needsFixing x = + x : Str (stringify ys) : fixCitations zs + where + needsFixing (RawInline (Format "jats") z) = + "<pub-id pub-id-type=" `isPrefixOf` z + needsFixing _ = False + isRawInline (RawInline{}) = True + isRawInline _ = False + (ys,zs) = break isRawInline xs fixCitations (x:xs) = x : fixCitations xs -- | Convert an inline element to JATS. |