anchor.diff:  
   // When called from 'build.fsx', use the public project URL as <root>
   // otherwise, use the current 'output' directory.
  -let root = website
  +let root = "/FsLexYacc"
   
   Directory.SetCurrentDirectory (__SOURCE_DIRECTORY__)
   
   // Paths with template/source/output locations
  -let bin        = "../../src/FSharp.Formatting/bin/Release/netstandard2.0"
  -let content    = "../content"
  -let output     = "../output"
  -let files      = "../files"
  -let templates  = "."
  -let formatting = "../../misc/"
  -let docTemplate = formatting + "/" + "templates/docpage.cshtml"
  -let docTemplateSbS = templates + "/" + "docpage-sidebyside.cshtml"
  -let referenceOut = (output + "/" + "reference")
  +let bin        = __SOURCE_DIRECTORY__ + "/../src/FsLexYacc.Runtime/bin/Release/netstandard2.0"
  +let output     = __SOURCE_DIRECTORY__ + "/output"
  +let contentIn  = __SOURCE_DIRECTORY__ + "/content"
  +let files      = __SOURCE_DIRECTORY__ + "/files"
  +let templates  = __SOURCE_DIRECTORY__ + "/templates"
  +let formatting = __SOURCE_DIRECTORY__ + "/../packages/FSharp.Formatting/"
  +let docTemplate = formatting + "/templates/docpage.cshtml"
  +let referenceOut = output + "/reference"
  +let contentOut = output + "/content"
   
   // Where to look for *.csproj templates (in this order)
  -let layoutRootsAll = new System.Collections.Generic.Dictionary<string, string list>()
  +let layoutRootsAll = Dictionary<string, string list>()
   layoutRootsAll.Add("en",[ templates; formatting + "/" + "templates"
                             formatting + "/" + "templates/reference" ])
   subDirectories templates
  
positive.code: // Settings
  // --------------------------------------------------------------------------------------
  
  // Web site location for the generated documentation
  #if TESTING
  let website = __SOURCE_DIRECTORY__ + "/../output" |> Path.GetFullPath |> Uri |> string
  #else
  let website = "/FSharp.Formatting"
  #endif
  
  let githubLink = "http://github.com/fsprojects/FSharp.Formatting"
  
  // Specify more information about your project
  let info =
    [ "project-name", "FSharp.Formatting"
      "project-author", "Tomas Petricek"
      "project-summary", "A package for building great F# documentation, samples and blogs"
      "project-github", githubLink
      "project-nuget", "http://nuget.org/packages/FSharp.Formatting" ]
  
  let referenceBinaries =
    [ "FSharp.CodeFormat.dll"; "FSharp.Literate.dll"; "FSharp.Markdown.dll"; "FSharp.MetadataFormat.dll"; "FSharp.Formatting.Common.dll" ]
  
  // --------------------------------------------------------------------------------------
  // For typical project, no changes are needed below
  
negative.code:                                    formatting + "/" + "templates/reference" ]))
  
  // Copy static files and CSS + JS from F# Formatting
  let copyFiles () =
    copyRecursive files output
    copyRecursive (formatting + "/styles") contentOut
  
  let libDirs = [bin]
  
  // Build API reference from XML comments
  let buildReference () =
      printfn "building reference docs..."
      if Directory.Exists referenceOut then Directory.Delete(referenceOut, true)
      Directory.CreateDirectory referenceOut |> ignore
      RazorMetadataFormat.Generate
          ( referenceBinaries, output + "/" + "reference", layoutRootsAll.["en"],
            parameters = ("root", root)::info,
            sourceRepo = githubLink + "/" + "tree/master",
            sourceFolder = __SOURCE_DIRECTORY__ + "/" + ".." + "/" + "..",
            publicOnly = true, libDirs = libDirs)
  
  // Build documentation from `fsx` and `md` files in `docs/content`
  let buildDocumentation () =
      printfn "building docs..."
      let subdirs = [ (contentIn, docTemplate) ]
      for dir, template in subdirs do
          let sub = "." // Everything goes into the same output directory here
          let langSpecificPath(lang, path:string) =
              path.Split([|'/'; '\\'|], System.StringSplitOptions.RemoveEmptyEntries)
              |> Array.exists(fun i -> i = lang)
          let layoutRoots =
              let key = layoutRootsAll.Keys |> Seq.tryFind (fun i -> langSpecificPath(i, dir))
              match key with
              | Some lang -> layoutRootsAll.[lang]
              | None -> layoutRootsAll.["en"] // "en" is the default language
          RazorLiterate.ProcessDirectory
              ( dir, template, output + "/" + sub, replacements = ("root", root)::info,
                layoutRoots = layoutRoots,
                generateAnchors = true,
                processRecursive = false,
                includeSource = true
              )
  
  // Generate
  copyFiles()
  