diff options
Diffstat (limited to 'src/Text/Pandoc/Writers')
-rw-r--r-- | src/Text/Pandoc/Writers/LaTeX.hs | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/src/Text/Pandoc/Writers/LaTeX.hs b/src/Text/Pandoc/Writers/LaTeX.hs index 230e75414..c16a80fac 100644 --- a/src/Text/Pandoc/Writers/LaTeX.hs +++ b/src/Text/Pandoc/Writers/LaTeX.hs @@ -77,21 +77,27 @@ latexHeader options (Meta title authors date) = -- escape things as needed for LaTeX -escapeBrackets = backslashEscape "{}" -escapeSpecial = backslashEscape "$%&~_#" - -escapeBackslash = substitute "\\" "\\textbackslash{}" -fixBackslash = substitute "\\textbackslash\\{\\}" "\\textbackslash{}" -escapeHat = substitute "^" "\\^{}" -escapeBar = substitute "|" "\\textbar{}" -escapeLt = substitute "<" "\\textless{}" -escapeGt = substitute ">" "\\textgreater{}" +escapeCharForLaTeX :: Char -> String +escapeCharForLaTeX ch = + case ch of + '\\' -> "\\textbackslash{}" + '{' -> "\\{" + '}' -> "\\}" + '$' -> "\\$" + '%' -> "\\%" + '&' -> "\\&" + '~' -> "\\~" + '_' -> "\\_" + '#' -> "\\#" + '^' -> "\\^{}" + '|' -> "\\textbar{}" + '<' -> "\\textless{}" + '>' -> "\\textgreater{}" + x -> [x] -- | Escape string for LaTeX stringToLaTeX :: String -> String -stringToLaTeX = escapeGt . escapeLt . escapeBar . escapeHat . - escapeSpecial . fixBackslash . escapeBrackets . - escapeBackslash +stringToLaTeX = concatMap escapeCharForLaTeX -- | Remove all code elements from list of inline elements -- (because it's illegal to have a \\verb inside a command argument) |