anchor.diff:     asText (prefix + String.concat "." (List.rev (id::path)))
      |> Uri.EscapeDataString
   
  -let printTokens wr id2items space inSection toSection linkId path kind ts =
  +let printTokens wr id2items space spaced inSection toSection linkId path kind ts =
     let linked = ref (Option.isNone linkId)
  -  let spaces n = String.replicate n space
  +  let spaces n =
  +    if n = 0 then ""
  +    elif spaced then String.replicate n space
  +    else space
     let rec loop = function
      | (k, n)::ts when keywordSet.Contains k ->
        if k = ":" || k = "->" then linked := true
  
positive.code:   and inCode esc i0 i = function
      | (text : string)::lines when i < text.Length ->
        if esc = text.[i] then
          printTokens wr id2items "&nbsp;" None "def" None path None (tokenize (text.Substring (i0, i-i0)))
          fprintf wr "</code>"
          inPara (i+1) (text::lines)
        else
          inCode esc i0 (i+1) (text::lines)
      | text::lines when i = text.Length ->
        printTokens wr id2items "&nbsp;" None "def" None item.Path None (tokenize (text.Substring (i0, i-i0)))
        fprintf wr "&nbsp;"
        inCode esc 0 0 lines
      | lines ->
  
negative.code:     item.Attr
      |> Seq.iter ^ fun attr ->
           fprintf wr "%s" prefix
           printTokens wr id2items " " false inSection toSection None [] None attr
           fprintf wr "\n"
      fprintf wr "%s" prefix
      printTokens wr id2items " " deep inSection toSection
       (match item.Doc with [] -> None | _ -> item.Id) item.Path item.Kind item.Tokens
      fprintf wr "\n"
      if deep then
  