diff --git a/src/Text/Pandoc/Writers/HTML.hs b/src/Text/Pandoc/Writers/HTML.hs index 4ed6a3ce9..ad31969ed 100644 --- a/src/Text/Pandoc/Writers/HTML.hs +++ b/src/Text/Pandoc/Writers/HTML.hs @@ -363,9 +363,22 @@ inlineToHtml opts inline = blockListToNote :: WriterOptions -> String -> [Block] -> State WriterState Html blockListToNote opts ref blocks = - do contents <- blockListToHtml opts blocks - let backlink = anchor ! [href ("#fnref" ++ ref), theclass "footnoteBacklink", - title ("Jump back to footnote " ++ ref)] $ - (primHtmlChar "#8617") - return $ li ! [identifier ("fn" ++ ref)] $ contents +++ backlink + -- If last block is Para or Plain, include the backlink at the end of + -- that block. Otherwise, insert a new Plain block with the backlink. + let backlink = [HtmlInline $ " ↩"] + blocks' = if null blocks + then [] + else let lastBlock = last blocks + otherBlocks = init blocks + in case lastBlock of + (Para lst) -> otherBlocks ++ + [Para (lst ++ backlink)] + (Plain lst) -> otherBlocks ++ + [Plain (lst ++ backlink)] + _ -> otherBlocks ++ [lastBlock, + Plain backlink] + in do contents <- blockListToHtml opts blocks' + return $ li ! [identifier ("fn" ++ ref)] $ contents diff --git a/tests/writer.html b/tests/writer.html index 6d8a850bc..10d1c0c4f 100644 --- a/tests/writer.html +++ b/tests/writer.html @@ -976,9 +976,7 @@ document.write(''+e+'<\/'+'a'+'>'); />
'+e+'<\/'+'a'+'>');
If you want, you can indent every line, but you can also be lazy and just indent the first line of each block.
↩If you want, you can indent every line, but you can also be lazy and just indent the first line of each block. ↩'+e+'<\/'+'a'+'>');
>links and ] verbatim characters, as well as [bracketed text].
In quote.
↩In quote. ↩In list.
↩In list. ↩