summaryrefslogtreecommitdiff
path: root/src/Text
diff options
context:
space:
mode:
Diffstat (limited to 'src/Text')
-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