@@ -76,7 +76,7 @@ let rec internal formatSpan (ctx: FormattingContext) span =
7676 // use mathjax grammar, for detail, check: http://www.mathjax.org/
7777 ctx.Writer.Write( " <span class=\" math\" >\\ (" + ( htmlEncode body) + " \\ )</span>" )
7878
79- | AnchorLink( id, _) -> ctx.Writer.Write( " <a name=\" " + id + " \" > </a>" )
79+ | AnchorLink( id, _) -> ctx.Writer.Write( " <a name=\" " + htmlEncodeQuotes id + " \" > </a>" )
8080 | EmbedSpans( cmd, _) -> formatSpans ctx ( cmd.Render())
8181 | Literal( str, _) -> ctx.Writer.Write( str)
8282 | HardLineBreak(_) -> ctx.Writer.Write( " <br />" + ctx.Newline)
@@ -181,7 +181,8 @@ let rec internal formatParagraph (ctx: FormattingContext) paragraph =
181181
182182 if ctx.GenerateHeaderAnchors then
183183 let anchorName = formatAnchor ctx spans
184- ctx.Writer.Write( sprintf """ <a name="%s " class="anchor" href="#%s ">""" anchorName anchorName)
184+ let safeAnchorName = htmlEncodeQuotes anchorName
185+ ctx.Writer.Write( sprintf """ <a name="%s " class="anchor" href="#%s ">""" safeAnchorName safeAnchorName)
185186 formatSpans ctx spans
186187 ctx.Writer.Write " </a>"
187188 else
@@ -210,7 +211,7 @@ let rec internal formatParagraph (ctx: FormattingContext) paragraph =
210211 if String.IsNullOrWhiteSpace( language) then
211212 ctx.Writer.Write( sprintf " <pre><code>" )
212213 else
213- let langCode = sprintf " language-%s " language
214+ let langCode = sprintf " language-%s " ( htmlEncodeQuotes language)
214215 ctx.Writer.Write( sprintf " <pre><code class=\" %s \" >" langCode)
215216
216217 ctx.Writer.Write( htmlEncode code)
0 commit comments