Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Minimal noweb example with cross referencing

Tags:

I'm trying to find a good literate programming tool. Let's just say it's not an easy decision. (The generic ones are too generic and the specific ones are too specific :) )

Among others, I've got noweb up and running but I'm having trouble getting output like I'd expect. The noweb wikipedia page has a minimal example that builds correctly with

noweave -index -latex hello.noweb > hello.tex && pdflatex hello && pdflatex hello

but there are no cross-references at the end of each chunk. For example, CWEB has pointers such as "This code is used in section 12." and "See also sections 5 and 7." Is this feature simply missing from noweb or am I missing a step in the compilation?

like image 800
Will Robertson Avatar asked Oct 27 '09 02:10

Will Robertson


2 Answers

Is this feature simply missing from noweb or am I missing a step in the compilation?

Neither: noweb uses much more subtle markers than you are used to seeing from CWEB. In the case of the Wikipedia example, the 3rd chunk (1c) appears in chunks 1a and 1b. This information is condensed into a single '1', which appears in parentheses at the right hand side of the definition.

To get long cross-references in the CWEB style use

\noweboptions{longxref}
like image 170
Norman Ramsey Avatar answered Sep 28 '22 05:09

Norman Ramsey


You should get, for that WP example, a reference to the license section from each of the two chunks in the Hello World section. You won't get any lists of chunks or identifiers at the end unless you tell latex about them.

To get a list of web chunks, try putting \nowebchunks near the end of the document (i.e., after the last chunk appears), and adding a -x switch to the noweb invocation.

To get a list of identifiers, try putting \nowebindex in a similar place.

like image 28
Charles Stewart Avatar answered Sep 28 '22 06:09

Charles Stewart