aboutsummaryrefslogtreecommitdiff
path: root/src/Text/Pandoc/Writers
diff options
context:
space:
mode:
Diffstat (limited to 'src/Text/Pandoc/Writers')
-rw-r--r--src/Text/Pandoc/Writers/LaTeX.hs30
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)