LaTeX reader: Read optional attributes in lstlisting environment.
We convert these to pandoc standard names, e.g. "numberLines" for "numbers=left", "startFrom=100" from "firstnumber=100". Still need to add code to convert the language names.
This commit is contained in:
parent
0bbee1bcf6
commit
3692e371a7
1 changed files with 22 additions and 1 deletions
|
@ -768,6 +768,20 @@ verbCmd = do
|
|||
rest <- getInput
|
||||
return (r, rest)
|
||||
|
||||
keyval :: LP (String, String)
|
||||
keyval = try $ do
|
||||
key <- many1 alphaNum
|
||||
char '='
|
||||
val <- many1 alphaNum
|
||||
skipMany spaceChar
|
||||
optional (char ',')
|
||||
skipMany spaceChar
|
||||
return (key, val)
|
||||
|
||||
|
||||
keyvals :: LP [(String, String)]
|
||||
keyvals = try $ char '[' *> manyTill keyval (char ']')
|
||||
|
||||
verbatimEnv :: LP (String, String)
|
||||
verbatimEnv = do
|
||||
(_,r) <- withRaw $ do
|
||||
|
@ -804,7 +818,14 @@ environments = M.fromList
|
|||
verbEnv "code"))
|
||||
, ("verbatim", codeBlock <$> (verbEnv "verbatim"))
|
||||
, ("Verbatim", codeBlock <$> (verbEnv "Verbatim"))
|
||||
, ("lstlisting", codeBlock <$> (verbEnv "lstlisting"))
|
||||
, ("lstlisting", do options <- option [] keyvals
|
||||
let classes = [ "numberLines" |
|
||||
lookup "numbers" options == Just "left" ]
|
||||
let kvs = [ (if k == "firstnumber"
|
||||
then "startFrom"
|
||||
else k, v) | (k,v) <- options ]
|
||||
let attr = ("",classes,kvs)
|
||||
codeBlockWith attr <$> (verbEnv "lstlisting"))
|
||||
, ("minted", liftA2 (\l c -> codeBlockWith ("",[l],[]) c)
|
||||
(grouped (many1 $ satisfy (/= '}'))) (verbEnv "minted"))
|
||||
, ("obeylines", parseFromString
|
||||
|
|
Loading…
Add table
Reference in a new issue