From 3cb6130d1a6e16f34f98f02ebfdee3f30cdc20c0 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Wed, 23 Aug 2023 16:10:00 -0700 Subject: 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. --- src/Text/Pandoc/Writers/JATS.hs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src') 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 -- cgit v1.2.3