DVIINCL: made in BOP s.c., bop@bop.com.pl; public domain software [This is a short information about the DVIINCL utility] One of the auxiliary programs belonging to every METAPOST package is DVItoMP, converting a DVI into a METAPOST file. Hence the idea (due to Marcin Woli/nski) of including a DVI page into the EPS files generated by METAPOST. There are, however, several problems to overcome: (1) Some DVI items are neglected by DVItoMP, most notably `special' commands; (2) DVItoMP expects that each page in a DVI file contains a vrule of width 1sp positioned at the right lower corner of the page; thanks to it, MPtoDVI knows the size of the bounding box of a page. If such a rule do not occur in the dvi file, the result of conversion is unpredictable, e.g., Oostrum's (DOS) implementation simply doesn't write `setbounds' commands (which are responsible for assigning the proper bounding box to a translated DVI page), while Delorie's (Web2C) implementation generates `setbounds' commands corresponding to an empty box; (3) MP files generated by DVItoMP contain special directives, `mpxbreak', that METAPOST does not accept in its ``normal'' mode; Ad 1. This imposes limits on the possible applications. Ad 2. It is reasonable to ignore the `setbound' command if the source DVI is not generated by MPtoTeX+TeX. Ad 3. A simple postprocessor is sufficient to circumvent the problem; the treatment is so simple, that it can be even METAPOST itself. SYNOPSIS 1. Use DVItoMP to convert a DVI file into the corresponding MPX file: dvitomp DVI_file MPX_file 2. Proceed the resulting MPX with METAPOST: mpost \vardef ifi = str MPX_file enddef; vardef ofi = str MPY_file enddef; input fix_brks.mp (cf. a batch file testit.bat for DOS/WIN32 or testit.sh for U*X); In the resulting MPY_file, `mpxbreak' directives are replaced with `if' commands. The program `fix_brks.mp' basic assumes that `mpxbreak' directives occur in separate lines, without superfluous spaces. 3. The METAPOST file making use of such a DVI page should use the following construction: ... picture p; p:=fix_page(10,"file.mpy"); % `10' is an imaginary page number, % "file.mpy" is an imaginary file name draw p; ... where `fix_page' is a macro defined in file `fix_page.mp'. 4. That's all. Comments are welcome e-mail contact: bop@bop.com.pl