The intended result of a run is the creation of a .dvi file containing a device-independent description of each page of the document. Sometimes, in order to create this, it will be necessary to run on the document twice-similarly to a programming language compiler, often needs two passes at a document to resolve forward references. An obvious case of this is the contents page, which appears at the front of a document, but cannot be created until has seen the whole of the document.
The .dvi file contains details of the size, style and placement of each character to be found on each page of the final document. If can be considered to be a document compiler, then a DVI post-processor, to continue the analogy, combines some of the functionality of an assembler and a linker. The same .dvi file may be used to generate device-dependent output for any number of output devices, the only limitation being the availability of the desired output device. The DVI post-processor takes the device-independent form of the document page descriptions, and produces output in a format suitable for delivery to a printer or similar device.
In general, on this site, there are two DVI post-processing routes to consider: one for on-screen presentation (if desired) and one for generation of the Postscript page description language understood by local laser-printers. The former route is handled mostly by the xdvi package described in Chapter 7, and the latter by a program called dvips. There is at least one other driver available, but only for local compatibility with old documents that require it; new users should not even consider attempting to use it.