LaTeX reader: minor improvements.
+ parse '{}', if present, after \textless, \textgreater, \textbar, \textbackslash, \ldots. + Parse unescaped special characters verbatim rather than changing them to spaces. This way arguments of unknown commands will appear in braces. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1424 788f1e2b-df1e-0410-8736-df70ead52e1b
This commit is contained in:
parent
ae30b5ae37
commit
b422711451
2 changed files with 10 additions and 8 deletions
|
@ -412,6 +412,7 @@ unknownCommand = try $ do
|
||||||
char '\\'
|
char '\\'
|
||||||
letter
|
letter
|
||||||
many (letter <|> digit)
|
many (letter <|> digit)
|
||||||
|
optional (try $ string "{}")
|
||||||
spaces
|
spaces
|
||||||
return Null
|
return Null
|
||||||
|
|
||||||
|
@ -542,15 +543,15 @@ escapedChar = do
|
||||||
result <- escaped (oneOf " $%&_#{}\n")
|
result <- escaped (oneOf " $%&_#{}\n")
|
||||||
return $ if result == Str "\n" then Str " " else result
|
return $ if result == Str "\n" then Str " " else result
|
||||||
|
|
||||||
-- treat nonescaped special characters as spaces
|
-- nonescaped special characters
|
||||||
unescapedChar :: GenParser Char st Inline
|
unescapedChar :: GenParser Char st Inline
|
||||||
unescapedChar = oneOf "`$^&_#{}|<>" >> return Space
|
unescapedChar = oneOf "`$^&_#{}|<>" >>= return . (\c -> Str [c])
|
||||||
|
|
||||||
specialChar :: GenParser Char st Inline
|
specialChar :: GenParser Char st Inline
|
||||||
specialChar = choice [ backslash, tilde, caret, bar, lt, gt, doubleQuote ]
|
specialChar = choice [ backslash, tilde, caret, bar, lt, gt, doubleQuote ]
|
||||||
|
|
||||||
backslash :: GenParser Char st Inline
|
backslash :: GenParser Char st Inline
|
||||||
backslash = try (string "\\textbackslash") >> return (Str "\\")
|
backslash = try (string "\\textbackslash") >> optional (try $ string "{}") >> return (Str "\\")
|
||||||
|
|
||||||
tilde :: GenParser Char st Inline
|
tilde :: GenParser Char st Inline
|
||||||
tilde = try (string "\\ensuremath{\\sim}") >> return (Str "~")
|
tilde = try (string "\\ensuremath{\\sim}") >> return (Str "~")
|
||||||
|
@ -559,13 +560,13 @@ caret :: GenParser Char st Inline
|
||||||
caret = try (string "\\^{}") >> return (Str "^")
|
caret = try (string "\\^{}") >> return (Str "^")
|
||||||
|
|
||||||
bar :: GenParser Char st Inline
|
bar :: GenParser Char st Inline
|
||||||
bar = try (string "\\textbar") >> return (Str "\\")
|
bar = try (string "\\textbar") >> optional (try $ string "{}") >> return (Str "\\")
|
||||||
|
|
||||||
lt :: GenParser Char st Inline
|
lt :: GenParser Char st Inline
|
||||||
lt = try (string "\\textless") >> return (Str "<")
|
lt = try (string "\\textless") >> optional (try $ string "{}") >> return (Str "<")
|
||||||
|
|
||||||
gt :: GenParser Char st Inline
|
gt :: GenParser Char st Inline
|
||||||
gt = try (string "\\textgreater") >> return (Str ">")
|
gt = try (string "\\textgreater") >> optional (try $ string "{}") >> return (Str ">")
|
||||||
|
|
||||||
doubleQuote :: GenParser Char st Inline
|
doubleQuote :: GenParser Char st Inline
|
||||||
doubleQuote = char '"' >> return (Str "\"")
|
doubleQuote = char '"' >> return (Str "\"")
|
||||||
|
@ -631,7 +632,7 @@ doubleQuoteEnd :: CharParser st String
|
||||||
doubleQuoteEnd = try $ string "''"
|
doubleQuoteEnd = try $ string "''"
|
||||||
|
|
||||||
ellipses :: GenParser Char st Inline
|
ellipses :: GenParser Char st Inline
|
||||||
ellipses = try $ string "\\ldots" >> optional (try (string "{}")) >>
|
ellipses = try $ string "\\ldots" >> optional (try $ string "{}") >>
|
||||||
return Ellipses
|
return Ellipses
|
||||||
|
|
||||||
enDash :: GenParser Char st Inline
|
enDash :: GenParser Char st Inline
|
||||||
|
@ -756,4 +757,5 @@ rawLaTeXInline = try $ do
|
||||||
char '\\'
|
char '\\'
|
||||||
letter
|
letter
|
||||||
many (letter <|> digit)
|
many (letter <|> digit)
|
||||||
|
optional (try $ string "{}")
|
||||||
return $ Str ""
|
return $ Str ""
|
||||||
|
|
|
@ -303,7 +303,7 @@ Pandoc (Meta [Str "Pandoc",Space,Str "Test",Space,Str "Suite"] ["John MacFarlane
|
||||||
, Para [Str "4",Space,Str "<",Space,Str "5."]
|
, Para [Str "4",Space,Str "<",Space,Str "5."]
|
||||||
, Para [Str "6",Space,Str ">",Space,Str "5."]
|
, Para [Str "6",Space,Str ">",Space,Str "5."]
|
||||||
, Para [Str "Backslash:",Space,Str "\\"]
|
, Para [Str "Backslash:",Space,Str "\\"]
|
||||||
, Para [Str "Backtick:"]
|
, Para [Str "Backtick:",Space,Str "`"]
|
||||||
, Para [Str "Asterisk:",Space,Str "*"]
|
, Para [Str "Asterisk:",Space,Str "*"]
|
||||||
, Para [Str "Underscore:",Space,Str "_"]
|
, Para [Str "Underscore:",Space,Str "_"]
|
||||||
, Para [Str "Left",Space,Str "brace:",Space,Str "{"]
|
, Para [Str "Left",Space,Str "brace:",Space,Str "{"]
|
||||||
|
|
Loading…
Add table
Reference in a new issue