@@ -39,7 +39,7 @@ import Data.Char ( ord, toLower, isAlpha )
3939import Data.List ( isPrefixOf, intersperse )
4040import qualified Data.Set as S
4141import Control.Monad.State
42−import Text.XHtml.Transitional
42+import Text.XHtml.Transitional hiding ( stringToHtml )
4343
4444data WriterState = WriterState
4545 { stNotes :: [Html] -- ^ List of notes
@@ -62,6 +62,20 @@ renderFragment opts = if writerWrapText opts
6262 then renderHtmlFragment
6363 else showHtmlFragment
6464
65+-- | Slightly modified version of Text.XHtml's stringToHtml.
66+-- Only uses numerical entities for 0xff and greater.
67+-- Adds .
68+stringToHtml :: String -> Html
69+stringToHtml = primHtml . concatMap fixChar
70+ where
71+ fixChar '<' = "<"
72+ fixChar '>' = ">"
73+ fixChar '&' = "&"
74+ fixChar '"' = """
75+ fixChar '\160' = " "
76+ fixChar c | ord c < 0xff = [c]
77+ fixChar c = "&#" ++ show (ord c) ++ ";"
78+
6579-- | Convert Pandoc document to Html string.
6680writeHtmlString :: WriterOptions -> Pandoc -> String
6781writeHtmlString opts =