diff options
| author | John MacFarlane <jgm@berkeley.edu> | 2016-05-01 11:20:26 -0700 | 
|---|---|---|
| committer | John MacFarlane <jgm@berkeley.edu> | 2016-05-01 11:20:26 -0700 | 
| commit | 1fbe79db05c55495cf9096cb5be15e499d9a21ec (patch) | |
| tree | dc48c2e154e0449b84d84116eda5953fb500b521 /src/Text | |
| parent | 91dc334249883b658e2b91fce80ced6635e07c28 (diff) | |
| download | pandoc-1fbe79db05c55495cf9096cb5be15e499d9a21ec.tar.gz | |
LaTeX writer: use {} around options containing special chars.
Closes #2892.
Diffstat (limited to 'src/Text')
| -rw-r--r-- | src/Text/Pandoc/Writers/LaTeX.hs | 13 | 
1 files changed, 9 insertions, 4 deletions
| diff --git a/src/Text/Pandoc/Writers/LaTeX.hs b/src/Text/Pandoc/Writers/LaTeX.hs index 038f27480..283c8bc44 100644 --- a/src/Text/Pandoc/Writers/LaTeX.hs +++ b/src/Text/Pandoc/Writers/LaTeX.hs @@ -40,7 +40,8 @@ import Text.Printf ( printf )  import Network.URI ( isURI, unEscapeString )  import Data.Aeson (object, (.=), FromJSON)  import Data.List ( (\\), isInfixOf, stripPrefix, intercalate, intersperse, nub, nubBy ) -import Data.Char ( toLower, isPunctuation, isAscii, isLetter, isDigit, ord ) +import Data.Char ( toLower, isPunctuation, isAscii, isLetter, isDigit, +                   ord, isAlphaNum )  import Data.Maybe ( fromMaybe, isJust, catMaybes )  import qualified Data.Text as T  import Control.Applicative ((<|>)) @@ -471,23 +472,27 @@ blockToLaTeX (CodeBlock (identifier,classes,keyvalAttr) str) = do          st <- get          let params = if writerListings (stOptions st)                       then (case getListingsLanguage classes of -                                Just l  -> [ "language=" ++ l ] +                                Just l  -> [ "language=" ++ mbBraced l ]                                  Nothing -> []) ++                            [ "numbers=left" | "numberLines" `elem` classes                               || "number" `elem` classes                               || "number-lines" `elem` classes ] ++                            [ (if key == "startFrom"                                  then "firstnumber" -                                else key) ++ "=" ++ attr | +                                else key) ++ "=" ++ mbBraced attr |                                  (key,attr) <- keyvalAttr ] ++                            (if identifier == ""                                  then []                                  else [ "label=" ++ ref ])                       else [] +            mbBraced x = if not (all isAlphaNum x) +                            then "{" <> x <> "}" +                            else x              printParams                  | null params = empty -                | otherwise   = brackets $ hcat (intersperse ", " (map text params)) +                | otherwise   = brackets $ hcat (intersperse ", " +                      (map text params))          return $ flush ("\\begin{lstlisting}" <> printParams $$ text str $$                   "\\end{lstlisting}") $$ cr    let highlightedCodeBlock = | 
