DviDvi

Convert a DVI-file into another DVI file Version 1.0

Thomas Rockicki

Amiga-Port: Jochen Wiedmann

Copyright \begin{matrix}c \\ ◯ \end{matrix}1988-91, Radical Eye Software Here’s a little hack I threw together for those doing pagination tricks. The dvidvi program converts a dvi file into another dvi file, with perhaps certain changes. Enjoy; this is an early release, so make suggestions, improvements, and I’ll get back to you with a better version later.

1 Invocation: Parameters, options and arguments

Invocation is

                           dvidvi param infile outfile

What are the parameters? The ’easy’ parameters are the following:

-f n page n is first page selected

-l n page n is last page selected

-n n select at most n pages. Notice that n is the number of pages selected, independently

of the number of pages actually contained in a sheet

-i { n1..n2 | n1 }[,...] include pages (ranges allowed). When this option is used, ONLY the specified pages are selected. However, we can exclude from these pages with the option -x

-x { n1..n2 | n1 }[,...] exclude pages (ranges allowed)

-q work in quiet mode, that is do not print in the screen messages of how the work is being done.

-r reverse the order of the pages.

-sm m Scale the magnification. (Magnification is multiplied by magstep(m)).

-sh m Scale the document-height. (Height is multiplied by magstep(m)).

-sw m Scale the document-width. (Width is multiplied by magstep(m)).

The page numbers for the above options -f, -l, -i and -x can be specified in different ways.

1. If a number n is given, it is interpreted as the n’th page from the begining of the .dvi file. Of course, this number is independent of the page number assigned by TeX.

2. TeX page numbers are those who are actually written in the page; these page numbers can be modified, for example, by using the TeX commands \pagenumbering, \setcounter{page}{n}, and \addtocounter{page}{n}. A TeX page number can be specified by preceding the number n with the character @. Thus, if you specify -f @25 -l @30 you select the pages between 25 and 30, these numbers being those assigned by TeX.

3. However, several pages can have the same TeX page number in a .dvi file. For example, the introductory pages in a book are numbered i, ii, and so on until the first chapter begins and then, the pages are numbered 1, 2, etc. In this case, the pages numbered i and 1 in the .dvi file have the same TeX page number. If you want to select for example the second occurrence of the page numbered 1, you can specify a page number as (@2)1. Thus @1 is equivalent to (@1)1. For example, if you specify -f (@2)1 -l(@2)10 you select the pages between 1 and 10 of the first chapter, not the introductory pages between i and x.

There is another parameter that tells DviDvi how you want to change page layout and specifications. But this parameter is somewhat complicated and therefore explained in a special section. See Section 2 [Examples], page 2.

2 Examples (the -m-parameter)

There is another parameter that tells dvidvi how you want to change page layout and specifications. This is the -m parameter.

The number preceding the colon is the modulo value. Everything will be done in chunks of pages this big. If there is no colon, than the default value is assumed to be one. The last chunk of pages is padded with as many blank pages as necessary.

Following the colon is a comma-separated list of page numbers. These page numbers are with respect to the current chunk of pages, and must lie in the range zero to the modulo value less one. If a negative sign precedes the number, then the page is taken from the mirror chunk; if there are m chunks, then the mirror chunk of chunk n is the chunk numbered m-n-1. Put simply, it is the chunk numbered the same, only from the end. This can be used to reverse pages. If no number is given, the page number defaults to 1.

Following each page number is an optional offset value in parenthesis, which consists of a pair of comma-separated dimensions. Each dimension is a decimal number with an optional unit of measure. The default unit of measure is inches, or the last unit of measure used. All units are in true dimensions. Allowable units of measure are the same that TeX allows: in, mm, cm, pt, pc, dd and cc.

Simple enough, eh? Okay, let’s do some simple things.

-m - Reverses the order of the pages. This time, both the modulo and the page number are defaulted.

-m 2:0 Selects the first, third, fifth, etc. pages from the file. Print this one after printing the next, taking the paper out of the feed tray and reinserting it into the paper feed.

-m 2:-1 Selects the second, fourth, etc. pages, and writes them in reverse order. -m 4:-1,2(4.25in,0in) -m 4:-3,0(4.25in,0in)

Useful for printing a little booklet, four pages to a sheet, double-sided, for stapling in the middle. Print the first one, put the stack back into the printer upside down, and print the second. The ‘in’ specifications are superfluous.

-m ,(1pt,1)

Scare your system administrator! Actually, things are so blurry with this option, you may want to send enemies letters printed like this. *Long* letters.

-m 4:0(5.5in,4.25),3(0,4.25) -m 4:1(0in,4.25),2(5.5,4.25)

Print a four-page card on one sheet. Print the first, rotate the paper 180 degrees and feed it again. (PostScript people can do funny tricks with PostScript so this isn’t necessary.)

3 Installing and using DviDvi with DviPS

Installation isn’t very hard: Just copy the program to a place contained in your search-path.

Note that you don’t need the parameters -sm, -sw and -sh with DviPS: The document-width and -height are simply ignored by Dvips and the magnification can be changed with the -x parameter.

A little example might help, which prints a DVI file with two pages per sheet of paper:

   dvidvi -m 2:0,1(7.3,0.0) infile.dvi outfile.dvi
   dvips -x 694 outfile.dvi

Note that the -x-parameter divides the magnification by magstep(2), because 694 equals to 1000 divided by 1.44 (magstep(2)).

4 Installing and using DviDvi with PasTeX

Things are a little bit more complicated using PasTeX. This is because PasTeX (ShowDVI and DVIprint, to be a little more precise) uses the informations about document-width and height contained in the DVI file to determine the size of RAM that is needed. Further it isn’t possible to scale the magnification in a device-independent way. (For example you need to divide the number 180 by magstep(2) when printing on a Nec-P6 in draft-mode instead of the device-independent number 1000 from the example above.)

DviDvi satisfies our needs with the options -sm, -sw and -sh here. The example above would look here as follows:

   dvidvi -m 2:0(0.0,-0.75),1(7.3,-0.75) -sm -2 -sw 4 infile.dvi outfile.dvi
   dviprint landscape on outfile.dvi

Installing looks nearly the same as installing DviDvi for DviPS (Simply copy the program to whereever you want), except that the automatical font-generation needs to get a little bit enhanced. (We need to support magstep(-4) up to magstep(9) now instead of magstep(0) up to magstep(9).) This is done by removing replacing the original file ‘MakeTeXFont.rexx’ with the file ‘PasTeX/MakeTeXFont.rexx’ from the DviDvi-distribution.

5 Contacting Thomas Rockicki

I (Jochen Wiedmann for now) am very sorry, that i don’t know Thomas Rockicki’s address, especially because of his friendly invitation to make suggestions about the program. All i found was an old Internet-address in Georg Hessmann’s dvips-distribution. I don’t know if it’s still valid, but here it is:

rockicki@neon.stanford.edu

You can contact me as well, if you have problems concerning the Amiga-port. I don’t know if i can help (all i know about DVI files was what i learned in the last three hours), but i’ll try. Here’s how you reach me:

     Jochen Wiedmann
     Am Eisteich 9
     72555 Metzingen (Germany)
     Phone: 07123 / 14881
     Internet: wiedmann@mailserv.zdv.uni-tuebingen.de