diff options
-rw-r--r-- | src/Text/Pandoc/Readers/Org/ExportSettings.hs | 2 | ||||
-rw-r--r-- | src/Text/Pandoc/Readers/Org/Inlines.hs | 18 | ||||
-rw-r--r-- | src/Text/Pandoc/Readers/Org/ParserState.hs | 2 | ||||
-rw-r--r-- | test/Tests/Readers/Org/Directive.hs | 6 |
4 files changed, 22 insertions, 6 deletions
diff --git a/src/Text/Pandoc/Readers/Org/ExportSettings.hs b/src/Text/Pandoc/Readers/Org/ExportSettings.hs index ab402b8c9..206c8ba92 100644 --- a/src/Text/Pandoc/Readers/Org/ExportSettings.hs +++ b/src/Text/Pandoc/Readers/Org/ExportSettings.hs @@ -47,7 +47,7 @@ exportSetting = choice , booleanSetting "creator" (\val es -> es { exportWithCreator = val }) , complementableListSetting "d" (\val es -> es { exportDrawers = val }) , ignoredSetting "date" - , ignoredSetting "e" + , booleanSetting "e" (\val es -> es { exportWithEntities = val }) , booleanSetting "email" (\val es -> es { exportWithEmail = val }) , ignoredSetting "f" , integerSetting "H" (\val es -> es { exportHeadlineLevels = val }) diff --git a/src/Text/Pandoc/Readers/Org/Inlines.hs b/src/Text/Pandoc/Readers/Org/Inlines.hs index d589dd042..13b1315b8 100644 --- a/src/Text/Pandoc/Readers/Org/Inlines.hs +++ b/src/Text/Pandoc/Readers/Org/Inlines.hs @@ -790,9 +790,12 @@ inlineLaTeX :: PandocMonad m => OrgParser m (F Inlines) inlineLaTeX = try $ do cmd <- inlineLaTeXCommand texOpt <- getExportSetting exportWithLatex + allowEntities <- getExportSetting exportWithEntities ils <- parseAsInlineLaTeX cmd texOpt maybe mzero returnF $ - parseAsMathMLSym cmd `mplus` parseAsMath cmd texOpt `mplus` ils + parseAsMathMLSym allowEntities cmd `mplus` + parseAsMath cmd texOpt `mplus` + ils where parseAsInlineLaTeX :: PandocMonad m => Text -> TeXExport -> OrgParser m (Maybe Inlines) @@ -801,10 +804,15 @@ inlineLaTeX = try $ do TeXIgnore -> return (Just mempty) TeXVerbatim -> return (Just $ B.str cs) - parseAsMathMLSym :: Text -> Maybe Inlines - parseAsMathMLSym cs = B.str <$> MathMLEntityMap.getUnicode (clean cs) - -- drop initial backslash and any trailing "{}" - where clean = T.dropWhileEnd (`elem` ("{}" :: String)) . T.drop 1 + parseAsMathMLSym :: Bool -> Text -> Maybe Inlines + parseAsMathMLSym allowEntities cs = do + -- drop initial backslash and any trailing "{}" + let clean = T.dropWhileEnd (`elem` ("{}" :: String)) . T.drop 1 + -- If entities are disabled, then return the string as text, but + -- only if this *is* a MathML entity. + case B.str <$> MathMLEntityMap.getUnicode (clean cs) of + Just _ | not allowEntities -> Just $ B.str cs + x -> x state :: ParserState state = def{ stateOptions = def{ readerExtensions = diff --git a/src/Text/Pandoc/Readers/Org/ParserState.hs b/src/Text/Pandoc/Readers/Org/ParserState.hs index 289b64193..ac826b6f9 100644 --- a/src/Text/Pandoc/Readers/Org/ParserState.hs +++ b/src/Text/Pandoc/Readers/Org/ParserState.hs @@ -257,6 +257,7 @@ data ExportSettings = ExportSettings , exportWithAuthor :: Bool -- ^ Include author in final meta-data , exportWithCreator :: Bool -- ^ Include creator in final meta-data , exportWithEmail :: Bool -- ^ Include email in final meta-data + , exportWithEntities :: Bool -- ^ Include MathML-like entities , exportWithLatex :: TeXExport -- ^ Handling of raw TeX commands , exportWithPlanning :: Bool -- ^ Keep planning info after headlines , exportWithTags :: Bool -- ^ Keep tags as part of headlines @@ -279,6 +280,7 @@ defaultExportSettings = ExportSettings , exportWithAuthor = True , exportWithCreator = True , exportWithEmail = True + , exportWithEntities = True , exportWithLatex = TeXExport , exportWithPlanning = False , exportWithTags = True diff --git a/test/Tests/Readers/Org/Directive.hs b/test/Tests/Readers/Org/Directive.hs index 9e571473b..6d3c1ac52 100644 --- a/test/Tests/Readers/Org/Directive.hs +++ b/test/Tests/Readers/Org/Directive.hs @@ -150,6 +150,12 @@ tests = ] =?> Pandoc nullMeta mempty + , "disable MathML-like entities" =: + T.unlines [ "#+OPTIONS: e:nil" + , "Icelandic letter: \\thorn" + ] =?> + para "Icelandic letter: \\thorn" + , "disable inclusion of todo keywords" =: T.unlines [ "#+OPTIONS: todo:nil" , "** DONE todo export" |