# Chapter 3:   All the command line options

## 3.1   -c: perform simple validity check

The -c option does a simple validity check of the dvi file: (a) the first two bytes should be 247 2, (b) there should be at least four 233's at the end of the file immediately preceded by a 2.

This is not much of a check: it will certainly not catch dvi files whose middle bytes have become corrupted, but it will at least catch files that are clearly not dvi files (such as text files).

Note that the -c option is implicit in almost every other option, so its main use is to detect files that are probably not dvi files.

See section 15 of dvitype.web for more information.

Example of use:
dvii -c test.dvi

dvi file 'test.dvi' passed validation check (level 0).


## 3.2   -C: perform more rigorous (and slower) validity check

(Note: this is a capital 'C'.) This command causes dvii to traverse the entire dvi file parsing each opcode. If the dvi file is corrupted, this command will detect it.

However, you pay for this: -C is much slower than -c.

dvii -C test

dvi file 'test.dvi' passed validation check (level 1).


## 3.3   -d: dump opcodes

(This option is available in version 0.42 and later.) This option (which implies the -C option) displays all the opcodes. Here is a sample:
dvii -d test

o:247
o:139
o:141
o:159
o:142
...
o:248
dvi file 'test.dvi' passed validation check (level 1).

where ... are many opcodes. The script details.pl uses this mode to create an opcode summary of the file; see section C.3 for more information on details.pl.

## 3.4   -f: display fonts

If you want to list all the fonts used in a dvi file, use the -f option. Note that different sizes of the same font will list separately.

dvii -f test

f:[50/cmr10/1200]::4bf16079
f:[23/cmbx10/1000]::1af22256
f:[0/cmr10/1000]::4bf16079

The file test.dvi calls 3 fonts: font number 50 is cmr10 at size 1200, font number 23 is cmr10 at size 1000, and font number 0 is cmbx10 at size 1000. (For more information on fonts, see chapter 5.)

## 3.5   -F: display fonts on each page

This option (which implies the -p and -f options) lists the fonts used on each page.

dvii -F test

f:[50/cmr10/1200]::4bf16079
f:[23/cmbx10/1000]::1af22256
f:[0/cmr10/1000]::4bf16079
p:[1/1]
start of font list
Font [0/cmr10/1000]
end of font list
p:[2/2]
start of font list
Font [0/cmr10/1000]
end of font list
p:[3/3]
start of font list
Font [0/cmr10/1000]
Font [23/cmbx10/1000]
end of font list
p:[4/4]
start of font list
Font [0/cmr10/1000]
end of font list
p:[5/-1]
start of font list
Font [0/cmr10/1000]
Font [50/cmr10/1200]
end of font list
p:[6/-3]
start of font list
Font [0/cmr10/1000]
end of font list


## 3.6   -g: suppress control characters when showing special text

The -g option can be used when displaying \special information. If a \special contains text with unprintable characters, it may corrupt some computer screens. So, instead of trying to print these unpleasant characters, dvii will instead print a .'.

Here is what the \special text looks like without the -g option:
dvii -s test.dvi

s:[2/2]:: A short special
s:[3/3]:: abcdefghijklmnopqrstuvwxyzABCDE...
s:[4/4]:: PSfile 1.eps
s:[4/4]:: PSfile 2.eps
s:[4/4]:: PSfile 3.EPS
s:[4/4]:: PSfile dog1.gif
s:[4/4]:: PSfile cat.eps
s:[6/-2]:: Some control characters: []

(Note: there are four control characters between the square brackets; because TeX does not like these particular characters, you cannot see them here.)

Now with the -g option:
dvii -s -g test.dvi

s:[2/2]:: A short special
s:[3/3]:: abcdefghijklmnopqrstuvwxyzABCDE...
s:[4/4]:: PSfile 1.eps
s:[4/4]:: PSfile 2.eps
s:[4/4]:: PSfile 3.EPS
s:[4/4]:: PSfile dog1.gif
s:[4/4]:: PSfile cat.eps
s:[6/-2]:: Some control characters: [....]


## 3.7   -h: show main help screen

This option shows the main help screen which begins
dvii -h

This is dvii 0.?? (DVI file information) by Adam Lewenberg
Send bug reports to adam@macrotex.net

dvii -h             (Print help screen)
dvii dvifile        (Print dvi information)
dvii [many possible options] dvifile
-------------------------------------------
-H : show complete list of options
-h : show this help screen
-u : display dvi summary
...

etc.

## 3.8   -H: show options help screen

This option displays all the command line options:
dvii -H

All the command line options:
-c : perform simple validity check
-C : perform more rigorous (and slower) validity check
-f : display fonts
...

etc.

## 3.9   -m#: add message digest information when displaying pages

(See Chapter 7 on message digests.) Display a 16-byte message digest for each page.
dvii -m test

[message digest: simple sum]
p:[1/1]::D8C977816A091771A3A631E7592DAE6D
p:[3/3]::1139D12267E3D60267CC788905909170
p:[4/4]::68E5A2E9D7320743CB85769CAAE9B023
p:[5/-1]::DE72BC3345FFDF7E779C8C667DCE3F97


## 3.10   -M#: add message digest information but ignore certain opcodes

(See Chapter 7 on message digests.) Display a 16-byte message digest for each page, but ignore certain dvii opcodes.

Depending upon the value of #, certain of the dvi information will be ignored when computing the message digest.

• -M0 Do not ignore any of the opcodes; equivalent to -m.
• -M1 Ignore all font assignments and font definitions.
• -M2 Ignore all NOPS (no ops).
• -M4 Ignore all \special's.
• -M8 Ignore all pushes and pops.
These options can be combined by adding; for example, to ignore fonts and \special's, use -M5. A rationale as to why you might want to ignore certain dvii page information when computing a message digest follows.

If you use page message digests to detect when a page has changed, you may get false alarms when the only thing that changes in the dvi file is the order of font definitions: the page looks the same but will have a different message digest because the message digest has changed.

For example, consider the two files
% File A                      % File B
\font\a=cmr10 at 11pt         \font\b=cmr10 at 12pt
\font\b=cmr10 at 12pt         \font\a=cmr10 at 11pt
\a A                          \a A
\b A                          \b A
\end                          \end

These two files generate identical looking output but different dvi code because the font numbering is different. If you use dvii -m you will see different fingerprints:
[message digest: simple sum]
A: p:[1/1]::6676847979940C046D093C93789A1812
B: p:[1/1]::6676837979940B056D093C94789A1812
^

But, if you use dvii -M1 you get
[message digest: simple sum (ignore font)]
A: p:[1/1]::B42E10A601774236B86D11CE2F8C25E4
B: p:[1/1]::B42E10A601774236B86D11CE2F8C25E4

By examining the fonts with the -f option you can see where the two dvi files differ:

dvii -f filea                       dvii -f fileb
f:[51/cmr10/1200]::4bf16079         f:[51/cmr10/1100]::4bf16079
f:[50/cmr10/1100]::4bf16079         f:[50/cmr10/1200]::4bf16079
f:[0/cmr10/1000]::4bf16079          f:[0/cmr10/1000]::4bf16079

The font cmr10 at 1200 is font 51 in filea, whereas it is font 50 in fileb.

## 3.11   -n#: display # bytes of special text

Normally, dvii -s test will display a maximum of 128 bytes of the \special text. For example, let filec.tex be the file
\special{0123456789abcdefghijklmnopqrstuvwxyzABCDE...}
\bye

(Note that the '...' indicates more special text which we omit due to space limitations in this manual.)

dvii -s filec
s:[1/1]:: 0123456789abcdefghijklmnopqrstuvwxyzABCDE...

However, you can tell dvii how many bytes to display by using the -n option:
dvii -s -n20 filec
s:[1/1]:: 0123456789abcdefghij

Finally, if you want to display all the \special text, use -n-1:
dvii -s -n-1 test
s:[1/1]:: 0123456789abcdefghijklmnopqrstuvwxyzABCDE...

Here, the output of dvii -s -n-1 test looks like dvii -s test only because we do not have enough page to show the entire \special text, but believe me, dvii -s -n-1 test will display all the \special text.

## 3.12   -p: display page information

To display a list of physical page/TeX page pairs, use the -p option:
dvii -p test

p:[1/1]
p:[2/2]
p:[3/3]
p:[4/4]
p:[5/-1]
p:[6/-3]

The first number indicates the physical page and the second number indicates the TeX page. For example, the sixth physical page has TeX page -3.

For more information on the difference between physical pages and TeX pages, see section 4.1.

## 3.13   -P: suppress the display of physical pages

(This option is available in version 0.43 and later.) This option only makes sense when you are listing page information, e.g., when using the -p or the -M option. Here is what you get with dvii -p test:
dvii -p test

p:[1/1]
p:[2/2]
p:[3/3]
p:[4/4]
p:[5/-1]
p:[6/-3]

and here is what you get when you add the -P option:
dvii -p -P test

p:[XX/1]
p:[XX/2]
p:[XX/3]
p:[XX/4]
p:[XX/-1]
p:[XX/-3]

So, why might you want to do something so silly? This is most useful when using the message digest feature to detect page changes (see Chapter 7). Imagine that you have message digest information for your entire 1000-page book. Later, you compile only one chapter. If you create a message digest of the chapter, the physical pages will no longer agree with the message digest for the entire book. So, suppressing the physical pages is the only way you can reliably tell if there has been a change.

## 3.14   -s: display specials

The -s lists each \special in the file and the page on which it appears. For example:
dvii -s test

s:[2/2]:: A short special
s:[3/3]:: abcdefghijklmnopqrstuvwxyzABCDE...
s:[4/4]:: PSfile 1.eps
s:[4/4]:: PSfile 2.eps
s:[4/4]:: PSfile 3.EPS
s:[4/4]:: PSfile dog1.gif
s:[4/4]:: PSfile cat.eps
s:[6/-3]:: Some control characters: []

Thus, there is a \special on (physical) page 2 consisting of the text A short special'.

The \special text on page 6/-3 contains some control characters which do not show up on the printed page because they do not correspond to any printable characters. (Actually, the text is [^A^B^C^D].)

## 3.15   -S: count number of specials

Normally, the summary that the -u option generates includes the number of pages and the number of fonts, but not the number of specials. If you want a count of the number of specials, use -S; note that -S implies -u
dvii -S test

File size: 1500 bytes (1 K)
Comment string:  TeX output 2001.01.25:0933
Page count: 6
Number of fonts: 3
Number of specials: 8


## 3.16   -T: give timing information

To see how long dvii took to run, use the -T option:
dvii -T -C test

dvi file 'test.dvi' passed validation check (level 1).
User time: 0.0 seconds
Real time: 0.0 seconds

The User time' is the time external to the computer to run; that is, if you started a stopwatch before executing the command and then stopped it after the command finished, the elapsed time corresponds to the User time'.

On the other hand, most modern operating systems are capable of running many programs at once, switching from one to the other. So, while it may appear to you that a command takes 5 minutes to run, the computer itself may have only spent 1 minute of the 5 minutes on your program, spending the other 4 minutes on other tasks. Hence, 1 minute would be Real time'.

If the file is small enough (as it is in the cast of test.dvi above), you may see both times listed as 0.0 seconds.

## 3.17   -u: display summary

To display a summary of a dvi file, use the -u option:
dvii -u test.dvi
File size: 1500 bytes (1 K)
Comment string:  TeX output 1999.12.05:1951
Page count: 6
Number of fonts: 3

The summary tells us: the dvi test.dvi file is 1500 bytes long (roughly 1 kilobyte), was compiled on December 5, 1999 at 7:51 AM, has 6 pages, and contains 3 fonts.

See also the -S` option.