The post-weave, very much the après-ski experience of weaving, is a moment when Inweb can (if a pattern has told it to) perform some follow-on work with the documents it has just woven. As with the après-ski, by default nothing happens.
In fact, nothing will ever happen unless the pattern for a weave has a
declaration containing a commands block. For example, the pattern PDFTeX
is declared like so:
Pattern "PDFTeX" {
based on: TeX
initial extension: .tex
commands
if pdftex -output-directory=WOVENPATH -interaction=scrollmode WOVEN.tex >WOVEN.console; then echo "no pdftex errors"; else cat WOVEN.console; fi
PROCESS WOVEN.log
end
}
The conundrum here is this. PDFTeX wants to produce PDF documents. But Inweb
can only produce TeX source code: for this to be turned into a PDF, it needs
to be run through some external tools — not least some form of TeX. Inweb cannot
contain those tools within itself, so it has to call out to the surrounding
operating system's shell. This is what the commands do.
This feature might not seem worth it for a single file, but bear in mind that Inweb might be producing 200-odd files at a time, one for each section of a large web. It's much more convenient to have Inweb manage the process of turning all those individual TeX files into PDFs, not least because Inweb will get their fiddly filenames correct.
Each line of the commands block is a shell command, unless it has the
form PROCESS filename. This gives Inweb the chance to look at the file if
it wants to. That's in practice only ever going to be useful for TeX: what
Inweb does is to scan through the output produced by TeX to see if there
have been overfull hbox errors, count the number of pages, and such. So,
really, it should be used only by the definition above, and in definitions
of other TeX variants like it.
Here is the above post-weave system in action:
$ inweb weave pyramid.c.md -as PDFTeX weaving web "Hilbert's Pyramid" (C program in MarkdownCode notation) as PDFTeX (based on TeX) (if pdftex -output-directory='.' -interaction=scrollmode 'pyramid.tex' >'pyramid.console'; then echo "no pdftex errors"; else cat pyramid.console; fi) no pdftex errors [pyramid.tex: 3pp 297K]
Note that WOVENPATH in one command has become . (the output directory
happens to be the current working directory here), while each WOVEN has
become pyramid. Note that WOVEN cannot begin with -, or contain any
spaces, so that a command like rm WOVEN.log would not be quite the
invitation to walk through a graveyard at night that it might seem. Those
are the only two substitutions made by Inweb when it passes these commands
to the system shell.