@@ -363,9 +363,22 @@ inlineToHtml opts inline =
363363
364364blockListToNote :: WriterOptions -> String -> [Block] -> State WriterState Html
365365blockListToNote opts ref blocks =
366− do contents <- blockListToHtml opts blocks
367− let backlink = anchor ! [href ("#fnref" ++ ref), theclass "footnoteBacklink",
368− title ("Jump back to footnote " ++ ref)] $
369− (primHtmlChar "#8617")
370− return $ li ! [identifier ("fn" ++ ref)] $ contents +++ backlink
366+ -- If last block is Para or Plain, include the backlink at the end of
367+ -- that block. Otherwise, insert a new Plain block with the backlink.
368+ let backlink = [HtmlInline $ " <a href=\"#fnref" ++ ref ++
369+ "\" class=\"footnoteBackLink\"" ++
370+ " title=\"Jump back to footnote " ++ ref ++ "\">↩</a>"]
371+ blocks' = if null blocks
372+ then []
373+ else let lastBlock = last blocks
374+ otherBlocks = init blocks
375+ in case lastBlock of
376+ (Para lst) -> otherBlocks ++
377+ [Para (lst ++ backlink)]
378+ (Plain lst) -> otherBlocks ++
379+ [Plain (lst ++ backlink)]
380+ _ -> otherBlocks ++ [lastBlock,
381+ Plain backlink]
382+ in do contents <- blockListToHtml opts blocks'
383+ return $ li ! [identifier ("fn" ++ ref)] $ contents
371384