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'+'>'); />
  1. Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document.

    Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document.

  2. '+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.

  3. '+e+'<\/'+'a'+'>'); >links and ] verbatim characters, as well as [bracketed text].

    verbatim characters, as well as [bracketed text].

  4. In quote.

    In quote.

  5. In list.

    In list.