Notes about the Win32 version of noweb.
The supplied executable are necessary to use noweb under Win95 or NT.
To install noweb on Win32 you can use the following steps:
1- Download the source distribution from CTAN/web/noweb/src
2- Download the DOS version of noweb from CTAN/web/noweb/binaries/dos-(version number)
3- Download the Win32 executables from CTAN/web/noweb/binaries/win32-(version number)
4- Install the source distribution
5- Install the DOS distribution
6- Unzip the Win32 binaries overwriting the DOS ones. The only files affected are
markup.exe noweb markup processor
mnt.exe multiple notangle
finduses.exe index processor
Note that the archive doesn't include a directory so the files will be
expanded in the current dir.
The Win32 executables support long filenames and don't have the 640k
memory limit. If you have any problem with them try to find the
solution by yourself. If you're really desperate send me a message at
Although I used the Win32 executables on a real project for months no
warranty is implied. The executables are provided "AS IS". The entire
risk as to the equality and performance of these executables is with
you. Should the programs prove defective, you assume the cost of all
the necessary serving, repair or correction.
In April 2004, Kevin Quick had this to add:
I started with the nwdosbin.zip, nwdossup.zip, and nw_win32.zip
files I downloaded from your web site, but found myself having
to make a few tweaks to get things fully operational and
integrated into the windows environment:
* The nwmac.tex and noweb.sty packaged in nwdosbin.zip are a bit
old (specifically they didn't support \setcodemargin) so they
needed to be replaced with more recent versions from the linux
distribution. As such, you may want to make these more clearly
available from the top level of the downloads section of the
* It's also helpful to note that installing nwmac.tex and noweb.sty
into "\localtexmf\tex\generic" (assuming a standard Windows MiKTeX
installation) helps in getting them read automatically.
* There were a couple of issues in passing the -L options for notangle
operations. I've detailed these below and included a modified
NOTANGLE.BAT file (in this directory) that addresses these issues.
* The NOTANGLE.BAT immediately re-invokes the perl interpreter on
its own embedded perl script, but fails to quote the arguments
when passing them to the perl script. If -L contains spaces,
this causes it to turn into multiple arguments. Adding quotes
around the argument specifications on the perl invocation fixes
this, along with using the correct quoting syntax (assuming C
c:\> notangle -L\"#line %L \"%F\"%N\" ....
* Note that both sets of quotes need to be escaped; this doesn't work
under Unix, so the command format is necessarily slightly different
between the two environments.
* The second problem is that if the noweb input file to notangle includes
a path specification, that specification will be replaced verbatim
for %F substitution, but the Windows directory separator ("\") is
not the same as the ISO C #file separator ("/"). Ultimately this
should probably be fixed in the NT.EXE utility, but it was easy enough
to address this in the NOTANGLE.BAT perl code (although the result is
not 100% foolproof, it should handle standard/normal notangle
operations). If NT.EXE is updated accordingly, this can be removed
from the perl code (although it might be a per-language issue... I
don't know enough about how other languages address this issue).
* Finally, it turns out that while you CAN get MS Visual Studio to
invoke notangle as part of its build operations, there unfortunately
appears to be some additional command-line parsing performed in
Visual Studio, so the above doesn't work (more specifically, %L
seems to cause thorough confusion). So I took the liberty of
adding a new option "-cppline" that generates C/C++ #line
directives without requiring complex command-line syntax settings.
* Using NoWeb with MS Visual Studio. After creating a project, Add a
Text file to the project, selecting the .nw file. Then in the Files
tree view on in the left panel, right-click the .nw file and select
Settings from the popup menu. In the General pane, select the
Always Use Custom Build box, and a Custom Build pane will be added.
In that pane, the Commands window should contain the notangle
commands needed (e.g.
notangle -Rnwtest.cpp -cppline $(InputPath) > nwtest.cpp
and in the Outputs window list each of the files generated by
the notangle operations (e.g. "nwtest.cpp"). MSVS appears to
correlate the output files to the C files and perform the
notangles before the compiles.
* For the MS Visual Studio integration, there are still some gotchas,
but overall it works well. Specifically, if the C files contain the
right #line directives (via -cppline) then all the cross referencing
works right (double clicking on compile errors, setting breakpoints
in and stepping through the .nw file, etc.)
* Any filter must be an .EXE file apparently. You cannot invoke a .BAT
file as a filter, and invoking files via extension association seems
to have problems in some configurations with stdin handling.