bpo-35482: Fixes HTML escaping in CHM index and build location of NEWS file (GH-11224)

(cherry picked from commit afe17a7bee1bcb39dc56f2949431204918568ac1)

Co-authored-by: Steve Dower <steve.dower@microsoft.com>
diff --git a/Doc/make.bat b/Doc/make.bat
index 077a1bc..461c35c 100644
--- a/Doc/make.bat
+++ b/Doc/make.bat
@@ -16,7 +16,7 @@
         %PYTHON% -m pip install sphinx
         if errorlevel 1 exit /B
     )
-    set SPHINXBUILD=%PYTHON% -c "import sphinx, sys; sys.argv[0] = 'sphinx-build'; sys.exit(sphinx.main())"
+    set SPHINXBUILD=%PYTHON% -c "import sphinx.cmd.build, sys; sys.exit(sphinx.cmd.build.main())"
 )
 
 %PYTHON% -c "import python_docs_theme" > nul 2> nul
@@ -115,17 +115,16 @@
 :build
 if not exist "%BUILDDIR%" mkdir "%BUILDDIR%"
 
-rem We ought to move NEWS to %BUILDDIR%\NEWS and point
-rem Sphinx at the right location.
+rem PY_MISC_NEWS_DIR is also used by our Sphinx extension in tools/extensions/pyspecific.py
+if not defined PY_MISC_NEWS_DIR set PY_MISC_NEWS_DIR=%BUILDDIR%\%1
 if exist ..\Misc\NEWS (
-    echo.Copying Misc\NEWS to build\NEWS
-    if not exist build mkdir build
-    copy ..\Misc\NEWS build\NEWS > nul
+    echo.Copying Misc\NEWS to %PY_MISC_NEWS_DIR%\NEWS
+    copy ..\Misc\NEWS "%PY_MISC_NEWS_DIR%\NEWS" > nul
 ) else if exist ..\Misc\NEWS.D (
     if defined BLURB (
         echo.Merging Misc/NEWS with %BLURB%
         if not exist build mkdir build
-        %BLURB% merge -f build\NEWS
+        %BLURB% merge -f "%PY_MISC_NEWS_DIR%\NEWS"
     ) else (
         echo.No Misc/NEWS file and Blurb is not available.
         exit /B 1