summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2023-08-23 16:10:00 -0700
committerJohn MacFarlane <jgm@berkeley.edu>2023-08-23 16:10:00 -0700
commit3cb6130d1a6e16f34f98f02ebfdee3f30cdc20c0 (patch)
tree3dd2135c13f8f293ac62356a37c36bffa3959cb5 /src
parentd21a9cd7f80cedb18d97cb92163ae7ec0f3a6237 (diff)
JATS writer: fix placement of ref-list...
...when no title is specified for the reference section. (In this case we place it in `back` with an empty title.) Closes #9017.
Diffstat (limited to 'src')
-rw-r--r--src/Text/Pandoc/Writers/JATS.hs12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/Text/Pandoc/Writers/JATS.hs b/src/Text/Pandoc/Writers/JATS.hs
index ad18d6cf7..2492a0649 100644
--- a/src/Text/Pandoc/Writers/JATS.hs
+++ b/src/Text/Pandoc/Writers/JATS.hs
@@ -91,6 +91,15 @@ writeJats tagSet opts d = do
runReaderT (evalStateT (docToJATS opts d) initialState)
environment
+-- see #9017 for motivation
+ensureReferenceHeader :: [Block] -> [Block]
+ensureReferenceHeader [] = []
+ensureReferenceHeader (h@(Header{}):refs@(Div ("refs",_,_) _) : xs) =
+ h:refs:xs
+ensureReferenceHeader (refs@(Div ("refs",_,_) _) : xs) =
+ Header 1 nullAttr mempty : refs : xs
+ensureReferenceHeader (x:xs) = x :ensureReferenceHeader xs
+
-- | Convert Pandoc document to string in JATS format.
docToJATS :: PandocMonad m => WriterOptions -> Pandoc -> JATS m Text
docToJATS opts (Pandoc meta blocks') = do
@@ -100,7 +109,8 @@ docToJATS opts (Pandoc meta blocks') = do
TopLevelChapter -> 0
TopLevelSection -> 1
TopLevelDefault -> 1
- let blocks = makeSections (writerNumberSections opts) (Just startLvl) blocks'
+ let blocks = makeSections (writerNumberSections opts) (Just startLvl)
+ $ ensureReferenceHeader blocks'
let splitBackBlocks b@(Div ("refs",_,_) _) (fs, bs) = (fs, b:bs)
splitBackBlocks (Div (ident,("section":_),_)
[ Header lev (_,hcls,hkvs) hils