diff options
| author | John MacFarlane <jgm@berkeley.edu> | 2022-03-28 17:02:10 -0700 |
|---|---|---|
| committer | John MacFarlane <jgm@berkeley.edu> | 2022-03-28 17:04:10 -0700 |
| commit | 6217fd09768909a0a324e2ab3ecf4479a88e3dcd (patch) | |
| tree | 33f6ccd9d6f34e2959a4003ba092dee0da758d17 /src | |
| parent | 5c7dc4c7f342114cdcd033086987ca36dfb177f0 (diff) | |
JATS writer: Fix handling of CSL variable 'page'.
Not 'pages' as we had before. It should go to 'lpage' and 'rpage',
not 'page-range'. See
https://jats.nlm.nih.gov/archiving/tag-library/1.1/element/page-range.html
Fixed some mistakes in test #7042.
Diffstat (limited to 'src')
| -rw-r--r-- | src/Text/Pandoc/Writers/JATS/References.hs | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/Text/Pandoc/Writers/JATS/References.hs b/src/Text/Pandoc/Writers/JATS/References.hs index 76e7380dc..720299f05 100644 --- a/src/Text/Pandoc/Writers/JATS/References.hs +++ b/src/Text/Pandoc/Writers/JATS/References.hs @@ -67,14 +67,19 @@ referenceToJATS _opts ref = do , "issue" `varInTag` "issue" , "edition" `varInTag` "edition" , "page-first" `varInTag` "fpage" - , "page-last" `varInTag` "lpage" - , "pages" `varInTag` "page-range" , "ISBN" `varInTag` "isbn" , "ISSN" `varInTag` "issn" , "URL" `varInTag` "uri" , varInTagWith "doi" "pub-id" [("pub-id-type", "doi")] , varInTagWith "pmid" "pub-id" [("pub-id-type", "pmid")] - ] + ] ++ + case lookupVariable "page" ref >>= valToText of + Nothing -> [] + Just val -> + let isdash c = c == '-' || c == '\x2013' + (fpage, lpage) = T.dropWhile isdash <$> T.break isdash val + in [ inTags' "fpage" [] $ literal $ escapeStringForXML fpage, + inTags' "lpage" [] $ literal $ escapeStringForXML lpage ] where varInTag var tagName = varInTagWith var tagName [] |
