diff options
| author | Albert Krewinkel <albert@zeitkraut.de> | 2014-10-20 19:54:21 +0200 | 
|---|---|---|
| committer | Albert Krewinkel <albert@zeitkraut.de> | 2014-10-20 22:57:36 +0200 | 
| commit | a5eb02f6a7feb4b3dee913fd395c98736638c127 (patch) | |
| tree | 704bf838e9f54881628309bd1204b1628a6eacd1 /src/Text/Pandoc | |
| parent | 6eda32871f2f29b9fb1fa8ae2f91bb12658b321c (diff) | |
| download | pandoc-a5eb02f6a7feb4b3dee913fd395c98736638c127.tar.gz | |
Org reader: parse LaTeX-style MathML entities
Org supports special symbols which can be included using LaTeX syntax,
but are actually MathML entities.  Examples for this are
`\nbsp` (non-breaking space), `\Aacute` (the letter A with accent acute)
or `\copy` (the copyright sign ©).
This fixes #1657.
Diffstat (limited to 'src/Text/Pandoc')
| -rw-r--r-- | src/Text/Pandoc/Readers/Org.hs | 9 | 
1 files changed, 8 insertions, 1 deletions
| diff --git a/src/Text/Pandoc/Readers/Org.hs b/src/Text/Pandoc/Readers/Org.hs index a6ebf65dc..1ddfeab87 100644 --- a/src/Text/Pandoc/Readers/Org.hs +++ b/src/Text/Pandoc/Readers/Org.hs @@ -42,6 +42,7 @@ import           Text.Pandoc.Parsing hiding ( F, unF, askF, asksF, runF  import           Text.Pandoc.Readers.LaTeX (inlineCommand, rawLaTeXInline)  import           Text.Pandoc.Shared (compactify', compactify'DL)  import           Text.TeXMath (readTeX, writePandoc, DisplayType(..)) +import qualified Text.TeXMath.Readers.MathML.EntityMap as MathMLEntityMap  import           Control.Applicative ( Applicative, pure                                       , (<$>), (<$), (<*>), (<*), (*>) ) @@ -1431,7 +1432,8 @@ simpleSubOrSuperString = try $  inlineLaTeX :: OrgParser (F Inlines)  inlineLaTeX = try $ do    cmd <- inlineLaTeXCommand -  maybe mzero returnF $ parseAsMath cmd `mplus` parseAsInlineLaTeX cmd +  maybe mzero returnF $ +     parseAsMath cmd `mplus` parseAsMathMLSym cmd `mplus` parseAsInlineLaTeX cmd   where     parseAsMath :: String -> Maybe Inlines     parseAsMath cs = B.fromList <$> texMathToPandoc cs @@ -1439,6 +1441,11 @@ inlineLaTeX = try $ do     parseAsInlineLaTeX :: String -> Maybe Inlines     parseAsInlineLaTeX cs = maybeRight $ runParser inlineCommand state "" cs +   parseAsMathMLSym :: String -> Maybe Inlines +   parseAsMathMLSym cs = B.str <$> MathMLEntityMap.getUnicode (clean cs) +    -- dropWhileEnd would be nice here, but it's not available before base 4.5 +    where clean = reverse . dropWhile (`elem` "{}") . reverse . drop 1 +     state :: ParserState     state = def{ stateOptions = def{ readerParseRaw = True }} | 
