@@ -635,6 +635,7 @@ blockToLaTeX (CodeBlock (identifier,classes,keyvalAttr) str) = do
635635 let listingsCodeBlock = do
636636 st <- get
637637 ref <- toLabel identifier
638+ let esc = escapeStringUsing (backslashEscapes "\\{}%~_&#^")
638639 let params = if writerListings (stOptions st)
639640 then (case getListingsLanguage classes of
640641 Just l -> [ "language=" <> mbBraced l ]
@@ -644,7 +645,7 @@ blockToLaTeX (CodeBlock (identifier,classes,keyvalAttr) str) = do
644645 || "number-lines" `elem` classes ] ++
645646 [ (if key == "startFrom"
646647 then "firstnumber"
647− else key) <> "=" <> mbBraced attr |
648+ else key) <> "=" <> mbBraced (esc attr) |
648649 (key,attr) <- keyvalAttr,
649650 key `notElem` ["exports", "tangle", "results"]
650651 -- see #4889