@@ -1,4 +1,5 @@
11{-# LANGUAGE OverloadedStrings #-}
2+{-# LANGUAGE TupleSections #-}
23{-# LANGUAGE PatternGuards #-}
34{-# LANGUAGE ScopedTypeVariables #-}
45{-# LANGUAGE ViewPatterns #-}
@@ -635,7 +636,8 @@ blockToLaTeX (CodeBlock (identifier,classes,keyvalAttr) str) = do
635636 let listingsCodeBlock = do
636637 st <- get
637638 ref <- toLabel identifier
638− let esc = escapeStringUsing (backslashEscapes "\\{}%~_&#^")
639+ kvs <- mapM (\(k,v) -> (k,) <$>
640+ stringToLaTeX TextString v) keyvalAttr
639641 let params = if writerListings (stOptions st)
640642 then (case getListingsLanguage classes of
641643 Just l -> [ "language=" <> mbBraced l ]
@@ -645,8 +647,8 @@ blockToLaTeX (CodeBlock (identifier,classes,keyvalAttr) str) = do
645647 || "number-lines" `elem` classes ] ++
646648 [ (if key == "startFrom"
647649 then "firstnumber"
648− else key) <> "=" <> mbBraced (esc attr) |
649− (key,attr) <- keyvalAttr,
650+ else key) <> "=" <> mbBraced attr |
651+ (key,attr) <- kvs,
650652 key `notElem` ["exports", "tangle", "results"]
651653 -- see #4889
652654 ] ++