5 Answers
5

Using the memoir document class you have a new "sectional unit" \book that serves your purposes. Refer to Chapter 6 of the documentation, particularly, Sections 6.2 SECTIONAL DIVISIONS, 6.3 NUMBERING, and 6.4 BOOK AND PART HEADINGS.

Is there any package which allows this behavior when not using the memoir document class? Or is there a way to load only this feature from this class, but no other components?
–
VillageDec 17 '11 at 1:34

@Village: other than anon's suggestion, there's not such a package, as far as I know.
–
Gonzalo MedinaDec 17 '11 at 1:44

There is no need to compile the books all at once: the xr package easily allows for cross-references between books, and it allows counters from one book to be conveniently carried to the next. With hyperref, links will work between different books.

I do this using pdftk and the perl script shown below. One advantage of this approach is that you can have certain content reproduced in each volume. For example, I have pages numbered sequentially across volumes, and a single index and table of contents which are reproduced in all volumes. That way, if you have volume 2, you can look up something in the index and find out that it's on p. 37 of volume 1.

If you have material (e.g., a quick reference page) that you want to end up on the final page of a printed book, there is a mechanism for that as well. Typically the number of pages in a printed book is a multiple of 8, so you need to add blank pages to get the material to end up on the very last interior page.

It reads your .ref file (here assumed to be save.ref) to find the labels used to mark the beginning or end of a section. That way you don't have to keep updating the page numbers of the split-points by hand.

As others have said you can use xr to manage cross references between documents. If you want counters to be preserved, I'm not sure if there is a ready made package on ctan but it is easy to save the state of the counters at the end of one document and reset them at the start of the next.

for example if you latex b1 and then b2 using the following the equations and tables in b2 will carry on from where they left off in b1.

Guarantee that everything compiles with consistency

You will have consistent documents when you avoid redundancy. Check your files
carefully if you define the same properties or styles twice (e.g. colours,
lengths, abbreviations, …).

Move all mutual elements to dedicated environment files and include those in
your books. You can find more information about this on the ConTeXt wiki -
Project Structure and the ConTeXt magazine #1101.
Content files not containing any style information and the style information that is shared between the individual volumes leads to consistency.

Easily allow for cross-references between books

Cross-references are supported by default. You either prepend the
reference with filename:: or you can use the more generic command
\useexternaldocument. Example:

Remember to use a double colon for cross-referencing, in contrast to the more common variant of using a single one for in-document references.

Allow counters from one book to be conveniently carried to the next

I don't think this is natively supported. But you can misuse the referencing
mechanism, since it supports counting and cross-document access. Of course,
you are again free to use the \useexternaldocument feature. Example:

% file: savecounter.tex
\starttext
Here I store a number that can be obtained in the
other file:
\reference [mycount] {42}
\stoptext
% file: crosscounter.tex
\useexternaldocument [cross] [savecounter.tex]
\starttext
And here is the number from the savecounter file:
\getreference [text] [savecounter::mycount]
Using the useexternaldocument mechanism:
\getreference [text] [cross::mycount]
\stoptext

Here's a screenshot from the file crosscounter.tex:

Since the reference mechanism saves more information than we need, we provide an argument in brackets containing text, which retrieves the value that was saved before as the second argument of the \reference command.

And again: Remember to use a double colon for the cross-document reference.

You can create an interface to define, change and
retrieve the counters if you like. The low-level ommands look
quite ugly in the document and are even semantically wrong.