@@ -33,7 +33,7 @@ module Text.Pandoc.Writers.LaTeX (
3333import Text.Pandoc.Definition
3434import Text.Pandoc.Shared
3535import Text.Printf ( printf )
36−import Data.List ( (\\) )
36+import Data.List ( (\\), isInfixOf )
3737import qualified Data.Set as S
3838import Control.Monad.State
3939
@@ -74,7 +74,7 @@ latexHeader options (Meta title authors date) = do
7474 then return ""
7575 else do title' <- inlineListToLaTeX title
7676 return $ "\\title{" ++ title' ++ "}\n"
77− extras <- get
77+ extras <- get >>= (return . unlines . S.toList)
7878 let authorstext = if null authors
7979 then ""
8080 else "\\author{" ++ (joinWithSep "\\\\"
@@ -82,14 +82,17 @@ latexHeader options (Meta title authors date) = do
8282 let datetext = if date == ""
8383 then ""
8484 else "\\date{" ++ stringToLaTeX date ++ "}\n"
85− let maketitle = if null title then "" else "\\maketitle\n\n"
85+ let maketitle = if null title then "" else "\\maketitle\n"
86+ let verbatim = if "\\usepackage{fancyvrb}" `isInfixOf` extras
87+ then "\\VerbatimFootnotes % allows verbatim text in footnotes\n"
88+ else ""
8689 let secnumline = if (writerNumberSections options)
8790 then ""
8891 else "\\setcounter{secnumdepth}{0}\n"
8992 let baseHeader = writerHeader options
90− let header = baseHeader ++ (unlines $ S.toList extras)
93+ let header = baseHeader ++ extras
9194 return $ header ++ secnumline ++ titletext ++ authorstext ++ datetext ++
92− "\\begin{document}\n" ++ maketitle
95+ "\\begin{document}\n" ++ maketitle ++ verbatim ++ "\n"
9396
9497-- escape things as needed for LaTeX
9598
@@ -160,7 +163,7 @@ blockToLaTeX (Table caption aligns widths heads rows) = do
160163 headers ++ "\\hline\n" ++ concat rows' ++ "\\end{tabular}\n"
161164 let centered str = "\\begin{center}\n" ++ str ++ "\\end{center}\n"
162165 addToHeader "\\usepackage{array}\n\
163− \% This is needed because raggedright in table elements redefines //:\n\
166+ \% This is needed because raggedright in table elements redefines \\\\:\n\
164167 \\\newcommand{\\PreserveBackslash}[1]{\\let\\temp=\\\\#1\\let\\\\=\\temp}\n\
165168 \\\let\\PBS=\\PreserveBackslash"
166169 return $ if null captionText
@@ -243,8 +246,7 @@ inlineToLaTeX (Image alternate (source, tit)) = do
243246 addToHeader "\\usepackage{graphicx}"
244247 return $ "\\includegraphics{" ++ source ++ "}"
245248inlineToLaTeX (Note contents) = do
246− addToHeader "% This is needed for code blocks in footnotes:\n\
247− \\\usepackage{fancyvrb}\n\\VerbatimFootnotes"
249+ addToHeader "\\usepackage{fancyvrb}"
248250 contents' <- blockListToLaTeX contents
249251 return $ "\\footnote{" ++ stripTrailingNewlines contents' ++ "}"
250252