This is plain TeX indexing and cross-reference support for noweb.

total 38
-rwxr-x---  1 partingr      959 Aug  2 14:10 TeXthings
-rwxr-x---  1 partingr     5544 Aug  2 14:19 addscore.nw
-rwxr-xr-x  1 partingr     4672 Aug  2 13:35 mm2mx63
-rwxr-xr-x  1 partingr     5033 Aug  2 13:35 mm2mx64
-rwxr-xr-x  1 partingr     5180 Aug  2 13:35 mm2mx65
-rwxr-xr-x  1 partingr     1445 Aug  2 13:37 mm2tex
-rwxr-xr-x  1 partingr     4109 Aug  2 13:35 mx2tex31
-rwxr-xr-x  1 partingr     4055 Aug  2 13:35 nwindex.tex
-rwxr-x---  1 partingr       67 Aug  2 14:14 nwnweave
-rwxr-xr-x  1 partingr       35 Aug  2 13:35 nwtangle
-rwxr-xr-x  1 partingr       64 Aug  2 13:35 nwweave
-rwxr-xr-x  1 partingr      524 Aug  2 13:58 xpand

This is what each file does/is:

TeXthings	perl 'header' file. needs to be somewhere
		perl will find it when it executes mm2mx63
		or mx2tex31 or mm2tex.

mm2mx63		version 6.3 of mm2mx. converts mm files
		(those created by markup) into mx files
		(which is my modified markup file).
		sectionref macros are aaa,aab,aac,aad
		reads from STDIN and outputs to STDOUT
		see below for cli options.

mm2mx64		version 6.4 of mm2mx. virtually the same
		as mm2mx63, but the sectionref macros that
		get created have different names. default
		is za,zc,zd etc. (I have lots of 2 character
		macros for TeX so I don't use this so much,
		but it might be useful...)

mm2mx65		same as mm2mx63, but converts @<name@> in
		documentation chunks into a @use reference
		so you get the reference style in the
		documentation, if you see what I mean.
		EG. "see @<main@>" will become
		"see <main 1a>" if main is defined in 1a
		(with the proper typesetting for the module
		name of course).

mx2tex31	converts mx files into TeX. see below for
		cli options.

mm2tex		weaver for normal markup files. tends to be
		faster than awk because perl semi-compiles
		it's programs before execution.

nwindex.tex	TeX macros for indexing.

nwnweave	shell script to weave a file with certain
		cli options.

nwweave		shell script to weave a file with certain
		cli options.

xpand		expands ...>> references in markup files.
		!only *after* a full name has been seen!

CLI OPTIONS:

mm2mx63		-i	create an identifier index from @ %def lines
		-m	create a module index
		-n	case insensitive module name matching
			(nb all module names come out in lower case)

mx2tex31	-i	create the indexes (from the mx file)
		-n name	set the name of the output files. input is
			from STDIN, output is to name.tex and
			name.texnique.
		-s	hack for 'only first definition gets the full
				list of defining chunks'.
			(look at output to see the difference)
		-f name	takes the markup file from name.markup and
			outputs to name.tex and name.texnique
		-h	help message
		-q	no output to terminal at all

NWINDEX.MAC

When mx2tex31 creates a TeX file, it inserts 'hooks' into the code
so that the chunk references can be printed out according to the
user's preferences.

For all the hooks, \list contains a list of the defining chunks
of the named chunk and \ulist contains a list of the chunks the
named chunk is used in.
(These lists are from Appendix D of The TeXBook. Items are
seperated by \\ and contained in braces, so a list containing 1,2,3
would be defined as \def\list{\\{1}\\{2}\\{3}}

For a chunk defined in 1a and 1b, and used in 1c
\list={\\{1a}\\{1b}}
\ulist={\\{1c}}

3 hooks are provided...

\inmodname is called just before the right-angle of the chunk name
\beforecode is called just after the chunk name (and angles) have
            been set
\aftercode is called just before \nwendcode{}

The default definitions:
\inmodname = put the *first* defining chunk xref  in chunk names
\beforecode = empty
\aftercode = 'This definition is continued in section...' if the name
                is defined in more than one chunk and
             'This code is used in section...'

[look at the output to see what happens]
This gives output like the LaTeX cross-referencing (and like CWEB).

There are macros in nwindex.tex for printing out lists neatly
(ie with commas and 'and' at the end) and for putting
'section' or 'sections' at the front of the list.

[if you need more info, either email me or wait for the documentation
 which should be finished this week]

INDEXES

if asked to, mx2tex31 creates two files: name.ids and name.mods
ids - identifier index
mods - module index

It *doesn't* include these by default in the TeX file. you have
to ask for them by putting \printindex{ids} or \printindex{mods}

you have to ask for them because (IMHO) indexes aren't vitally
important while a program is being developed or for small
programs.

the indexes are created in seperate files to allow other tools
to create them independently of mx2tex31. for example, a
c program could create name.ids by parsing the code chunks
for identifiers etc. (like CWEB/WEB do) which would be a
better way of indexing than @ %def lines...


BTW I apologise for this documentation. I haven't had a
chance to get a proper version written yet.

Do people want a TeXinfo version of the documentation or
just plain TeX file?
