summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2022-03-28 17:02:10 -0700
committerJohn MacFarlane <jgm@berkeley.edu>2022-03-28 17:04:10 -0700
commit6217fd09768909a0a324e2ab3ecf4479a88e3dcd (patch)
tree33f6ccd9d6f34e2959a4003ba092dee0da758d17 /src
parent5c7dc4c7f342114cdcd033086987ca36dfb177f0 (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.hs11
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 []