dvidrv 1.4d

Copyright \begin{matrix}c \\ ◯ \end{matrix} 1988–1990 by Eberhard Mattes^{∗}

25 Sep 1990

Contents

1 General 1

2 Fonts 1

3 The drivers 1 3.1 dvidot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 3.2 dvihplj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 3.3 dvimsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 3.4 dviscr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 3.5 dvivik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

4 The driver calling sequence 2

5 The driver options 4 5.1 Setting the message level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 5.2 Selecting pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5.3 Setting the page layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 5.4 Printing more than one page on a sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 5.5 Settings for fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 5.6 Settings for magnification and resolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 5.7 Other options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 5.8 Special options for dvidot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 5.9 Special options for dvihplj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 5.10 Special options for dvimsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5.11 Special options for dviscr and dvivik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

6 Printer description files for dvidot 15

6.1 aiw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
6.2 dmp130 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

6.3 fx80 and fx100 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 6.4 ibm4201 and ibm4202 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 6.5 ibm4207l and ibm4208l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 6.6 ibm4207m and ibm4208m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

6.7 itoh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

6.8 lql and lqwl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 6.9 lqm and lqwm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 6.10 lqh and lqwh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 6.11 p6l and p7l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 6.12 p6m and p7m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 6.13 p6h and p7h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 7 Transformations 17

∗Expressions of dissatisfaction with the vocabulary, grammar or clarity of this document should be directed to the translator C.Martin@pa.shef.ac.uk

8 Printing output files 18

9 The dvidrv.err file  18

10 Recommendations for installation 18 10.1 Using batch files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 10.2 Using environment variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

11 Font searching and substitution 19 11.1 General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 11.2 Entering a font magnification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 11.3 The font substitution file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 11.4 Font search example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 11.5 User input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

12 Key functions for dviscr and dvivik 23 12.1 Moving the viewing window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 12.2 Selecting a sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 12.3 Moving the ruler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 12.4 Output transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 12.5 Miscellaneous functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 12.6 A note on [figure: +], [figure: -], [figure: T], [figure: Alt]+[figure: G], [figure: Alt]+[figure: S]and [figure: O]. . . . . . . . . . . . . . . . . . . . . . . . 26

13 The ruler in dviscr and dvivik 26

14 The status line in dviscr and dvivik 26

15 The \special command 27

16 The options in brief 29 16.1 Output file, screen, print . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 16.2 Graphics files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 16.3 Page selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 16.4 Page layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 16.5 Magnification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 16.6 Directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 16.7 Fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 16.8 Other options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

17 Statistics output 32

18 Restrictions 32

19 errorlevel return codes 32

20 Warning messages 33

21 Fatal error messages 35

22 Internal errors 38

23 Reporting bugs 38

1 General

The purpose of the dvidrv drivers described here is to print or display dvi files such as those generated by TEX. The drivers run under MS-DOS or PC-DOS (version 2.1 or later) on IBM PC compatible machines with at least 512 KBytes of RAM. All the drivers (except for dvivik) will also run under OS/2 either in protected mode or in the DOS compatibility box — under OS/2 dviscr will not support all the graphics modes it does under DOS. There are five different drivers:

dvidot This is a driver which can be configured to drive many dot matrix printers. Parameter files for the following printers are included: Epson FX series (and RX series), LQ series, NEC P6, P7, Panasonic KX-P1124 (and others) C.Itoh 8510A, Apple ImageWriter (not to be confused with the LaserWriter), Tandy DMP-130, IBM Proprinter 4201, 4202, 4207, 4208.

dvihplj This driver produces output for PCL printers: the HP LaserJet^{+}, HP LaserJet II and III and compatibles like the Kyocera F-1010. It will also generate output for the HP DeskJet but will not drive the “ordinary” HP LaserJet. 300 dpi resolution is used both horizontally and vertically.

dvimsp This is a special ‘driver’ which converts one or more pages of a dvi file into graphics files which can then be read by a dvidrv driver and put into its output.

dviscr This is a screen previewer, it displays a dvi file on the screen. It can

drive CGA, EGA, VGA, HGC and other graphics adapters.

dvivik Screen previewer for the Viking I large screen display.

While the dvi file is being read, the drivers (except for dviscr) show the numbers of the page being processed. For each sheet of output, the numbers of the pages appearing on that sheet are shown in brackets—for example:

     [2 3] [4.1 4.2] [4.3]

From this you can see that the pages numbered 2 and 3 are being printed on the first sheet, pages 4.1 and 4.2 on the second sheet and page 4.3 on the third sheet. The term page number is used to describe the values of the TEX variables \count0 to \count9. \counts with a zero value are not printed unless they are followed by a non-zero \count.

2 Fonts

The drivers can read fonts in the following formats: pxl files with ID 1001 (32-bit words) or 1002 (8-bit words) and pk files with ID 89. However, pk files with ID 87 can not be used. The extension of a font file name may be either pxl or pk — it need not match the font data type as this is determined from the first word of the file. In addition to these, font libraries (fli files) can also be used—a dvidrv feature. A font library can contain a number of font files, even when they have different magnifications or different formats. The advantage of keeping fonts in a few library files is that the amount of disk space the fonts take up is reduced and processing is speeded up. It also reduces the number of files. The disadvantage is the size of the library files and the amount of time it takes to replace a font in one. Further information on font files will be found in the fontlib manual. The “Computer Modern Fonts” for the drivers are supplied as font libraries.

3 The drivers

This section contains brief descriptions of each driver: information specific to each driver will be found in section 5, subsections 5.8 to 5.11.

3.1 dvidot

dvidot is a configurable driver for dot matrix printers. The configuration files for a number of printers are supplied with emTEX. You can create configuration files for other printers with the program makedot.

3.2 dvihplj

This driver will work with an HP LaserJet^{+}, Kyocera F-1010 or compatible printer. It will also work with an HP DeskJet. While processing the input file the driver will also calculate the amount of printer memory required; if the memory requirement exceeds a certain limit, which can be set by the user, an error message will be issued and processing terminated. No memory calculation is made for the DeskJet.

3.3 dvimsp

This driver is intended for special purposes, for instance, when the output is to be further processed; it generates an msp or a pcx file. All the drivers can include graphics files in msp or pcx format. White space will be added around the graphic if necessary to bring its dimensions up to those set by the /h# and /w# options: with the /om+ option the driver will remove any white space bordering the picture in order to make it as small as possible. Normally dvimsp will only output a single page, the first one chosen, however, it is also possible to generate more than one output file with a single call. To do this, the output file name should contain a “?” or a sequence of more than one “?”. The question marks will be replaced by a number, if necessary with leading zeros: on outputting the first sheet to the first file, the “?” character will be replaced by 1, for the second it will be 2, and so on. If one question mark is used, up to 9 graphics output files will be generated; if two question marks are used, up to 99 files will be generated, and so on. For example,

     dvimsp @lj.cnf mytext sheet??

generates files called sheet01.msp to, at most, sheet99.msp.

3.4 dviscr

This driver displays a dvi file page by page on the screen. If a page is too large to fit on the screen, only part of it will be shown at a time — the part displayed can be selected by using the arrow keys. When the part of the page shown includes the edge or edges of the paper, the edges will be drawn to show their position. One of the following graphics cards is required: Color Graphics Adapter (CGA), Enhanced Graphics Adapter (EGA), Video Graphics Array (VGA) or Hercules Graphics Card (HGC). If an EGA or VGA card is used with a colour monitor capable of at least 16 colours then it is possible to use gray scales (4 steps with an EGA, up to 15 with VGA). The level of gray to display is chosen from the number of points in a small rectangle, the more points, the darker the gray; this increases the readability noticeably, particularly with VGA, though the speed of display is reduced. If this driver is used in protected mode under OS/2, the config.sys file must contain the line IOPL=YES. If only the minimum memory is available then dviscrs.exe can be used instead of dviscr.exe: this alternative version will only run under DOS or in the compatibility box under OS/2, it uses less memory and runs a little slower. dviscrs.exe behaves in exactly the same way as dviscr.exe, for instance, the default transcript file name for dviscrs.exe (cf. /pt*) is dviscr.dlg.

3.5 dvivik

This driver displays the pages of a dvi file on a Viking I large screen monitor. If there is not room to display all a page only a part will be shown, this part shown can be selected by using the arrow keys. The edges of the paper are shown by lines. This driver does not run under OS/2.

4 The driver calling sequence

In the following the name dvidrv will be used when the description applies equally to all the drivers. When entering commands though, dvidrv must be replaced by the actual name of the driver.

Typing

     dvidrv ?

will display a help screen describing the most frequently used options. To get a complete listing of the options you should type two question marks (??). The dot matrix driver dvidot is called by^{1}

dvidot parameter-file [[opt]] input-file [[opt]]output-file [[opt]]

The other printer drivers and dvimsp have the following calling sequence

dvidrv [[opt]] input-file [[opt]] output-file [[opt]]

The screen previewers (dviscr and dvivik) are called by

dvidrv [[opt]] input-file [[opt]]

In the above dvidrv must be replaced by the driver name, input-file is to be replaced by the name of the dvi file and output-file replaced by the name of the output file. dvidot requires the first argument to be a parameter file—a dot file containing the printer description. Output can be directly to a port^{2} or be sent to a file (cf. section 8). If a file name is omitted from the command line^{3} the driver will prompt for it. If at this input file prompt nothing is entered (just [figure: �]is pressed) then the file name will be taken to be texput.dvi. At each prompt more than one argument may be entered; they are interpreted as if they appeared on the command line. The default extension for the input file is dvi. The default extension for an output file from dvimsp is msp (options /o1 or /o2) or pcx (option /op); the other drivers have no default extension. Under OS/2 the output file name can be replaced by -, the output will then be sent to stdout and can be further processed through a pipe. If, on the command line, an error is discovered (bad option or file not found), no input file name can be found, or the //optindex// option appears, the program will prompt for (further) options. Options entered in response to a prompt need not be preceded by the / or - which is required on the command line. With @filename you can insert a response file, that is, the arguments will be read from this file. When all the response file has been read, the remaining arguments will be processed. A response file cannot contain a further response file. A response file argument is allowed wherever arguments can be input. If a response file cannot be found in the given directory, it will be sought first in the directories listed in the /p@* option, then in the directories in the PATH environment variable. A response file can contain comments: a single percent sign may be used to start a comment which does not contain another percent sign, but if the comment includes a percent sign it must start with a doubled percent sign. All the characters from the first percent sign to the end of the line will be ignored. A line beginning with @ will terminate reading of the file, everything after this line will be ignored. This is an example of a call containing a response file argument:

     dvidot fx80 /s @fx.cnf /fl-1 test prn

and here is an example of a response file:

     /pf=d:\fxfonts\dpi$r /pd=c:\myinput %dvi files
     /pl=d:\fxfonts\epsonfx %font library files
     /fl0/fd0

1[[ and ]] are used to enclose optional arguments

2If, when using a parallel port (prn or lptx) under MS-DOS or PC-DOS, in the middle of printing, an error concerning the printer or the port is displayed, you should see if mode lpt1,,p  (DOS 2.x and 3.x)

mode lpt1 retry=r  (DOS 4.01)

improves things (replace lpt1 by the correct port). This command causes the machine to wait indefinitely for the printer to be ready.

3dvidot is an exception, the name of the printer description file must always appear on the command line.

Response files are useful in setting up groups of options which are unlikely to change such as search paths for fonts and other files. Such response files are called configuration files. Other frequently used options such as paper size and margin settings should also be put into response files. It is also possible to put options into environment variables, these are looked at first. You are recommended, however, to put only options into environment variables, if you include filenames then it will only be possible to process these files. The order in which the environment variables are examined is DVIDRV first, then the variable with the same name as the driver. dvidot looks for a third variable, one with the name given in the parameter file. For example, if you want to set /pd=c:\mydvi as the default for dviscr, you can do this with the following DOS command:

     set dviscr=/pd:c:\mydvi

Options which you wish to apply to all drivers are most conveniently put into the DVIDRV environment variable. If, for instance, you wish all dimensions to be given in millimetres, then you could enter

     set dvidrv=/umm

This will then affect all drivers. Before evaluating an argument line, that is, the command line, a line entered in response to a prompt, the value of an environment variable (as explained above) or a line read from a response file, every construction of the form %name% is replaced by the value of the environment variable name. If there is no environment variable with this name, then %name% is ignored. If the environment variable contains the %name% construction, then it is copied without expansion, that is, %name% is copied unchanged. This construction is most useful in response files as it allows directories to be changed, for instance, by setting environment variables without having to alter the file. If a line in a response file contains a single % then it and the rest of the line will be ignored: this can be used to put comments in the file. Two percent signs together will also cause the rest of the line to be ignored.

5 The driver options

This section describes the set of valid options. Some options have multiple arguments. Arguments may be divided into three types:

# This is a number or a dimension—a dimension is a number with or without a unit of measure appended.

+ This turns an option on or off: + turns it on, - turns it off. If neither + nor - is given, the option is turned on.

* This character stands for all other kinds of argument, for instance, file names or page numbers. If the argument is a directory, a \ may, but need not, appear at the end.

Options are preceded by either / or -. Spaces need not be left between arguments as long as the next option is preceded by /. An option beginning with - must be preceded by at least one space. No spaces may appear between an option and its argument but :, = or := is allowed if the argument is a number, a dimension, a directory or a filename. Note: = may not appear in environment variables and = and ; are not allowed in batch file arguments. If the unit of measure is not explicitly given in dimensions, the unit set by the /u* argument is used. You will find further information on units of measure in the description of the /u* option on page 11.

5.1 Setting the message level

/? displays a help page with the current values of the most frequently options.

/?? displays a table of all the options with their current values.

/c? shows all the current values of the /cx# and /cy# options.

/v# verbosity setting

/v0 display fatal error messages only /v1 like /v0 with page numbers and font substitutions in batch mode are dis-

played

/v2 like /v1 with the Loading... message, important warnings and the com-

ments in dvi files are shown

/v3 like /v2 with all warning messages and \special{}’s are displayed /v4 like /v3 with statistics (see section 17) and the font filenames are shown /v5 like /v4 with comments from font files

The default setting is /v2. Note that the option setting /fl-1 suppresses font comment output as well as warnings of incompatibilities in the font files.

5.2 Selecting pages

This option selects the sheets to be printed. The options are examined by the drivers in the order they are described below. Initially, all sheets are selected: using the options below excludes certain of these sheets from the set to be printed. Use of the first option removes some sheets from the selection, using the second excludes other sheets from the selection made by the first option and using the third option excludes further sheets from this selection and so on. The sheets retained in the final selection are then printed or displayed on the screen. Please note the use of the word ‘sheets’ here. The input dvi file consists of one or more pages: the drivers have options which allow one or more of the pages from the dvi file to be output on each sheet printed (or displayed) thus the options below determine the number of sheets printed, not the number of pages.

/b* set the page to begin with. The dvi file is read from the beginning until a matching page is encountered. The sheet selection then begins with the sheet on which the matching page will be printed. Up to 10 numbers can be given separated by .: these are compared with the values of \count0 to \count9. A number can be replaced with * which then matches any number in that position. If fewer than 10 numbers are entered, the remaining numbers will be replaced by *. A matching page is one with values of its \count0 to \count9 corresponding to the values entered for this option. The default setting is *: all sheets remain selected. An example:

/b-3.*.4 all the sheets before that containing the first page with

                \count0=-3 and \count2=4 will be excluded.

/e* set the page to end with. If, after the beginning page (cf. /b*) is encountered, a page matching the numbers entered for this option is found, then the sheet which contains this page will be the last printed. Numbers are entered as for the /b* option above.

/2* two-sided printing. Every other sheet out of those selected by /b* and /e* will be printed. If the option is entered as /2o, the sheets selected will be the first, third, fifth and so on. If the option is /2e then the sheets selected will be the second, fourth, sixth and so on. The default setting is /2-, all sheets will be selected. By first printing all the odd sheets and then passing them through the printer again while all the even sheets are printed on the back, you can get double sided printing.

/k# the number of sheets at the beginning of the selection to skip. The first # of the selected sheets are removed from the selection. The default setting is /k0: all the sheets remain selected.

/n# the number of sheets to print. All but the first # sheets are removed from the selection. Without the /n# option, there is no limit to the number of sheets in the selection. An example, breaking up a big file into blocks of 100 sheets:

/n100 the first 100 sheets are printed /n100/k100 the next 100 sheets are printed

/n100/k200 and the next 100, and so on

/z+ output the sheets in reverse order; printing will begin with the last sheet. The default setting is /z-, the first sheet is printed first.

/np# print each sheet # times one after the other. Default: /np1. This option is missing for dviscr, dvivik and dvimsp.

/nf# print all the selected sheets, including those repeatedly printed with the /np# option, # times. If the options /np2/nf3 are entered and the selection consists of two sheets then they will be printed in the following order: 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2. This option is not available for dviscr, dvivik and dvimsp.

5.3 Setting the page layout

/h# set the page height. dviscr and dvivik use this value to display the page outline. dvimsp uses this value together with that of /w# to determine whether white space needs to be added around the graphic when the option /om- has been selected. dvidot uses this value to determine how much of the page can be printed though page throw is still performed with the form feed character rather than a calculated number of line feeds. The user should set the page length on the printer to this value. dvidot with either the itoh or aiw printer description files is an exception to this, see the description of /hf# in dvidot. dvihplj also uses this value to determine how much of the page can be printed. If the page length is incorrectly entered then it is possible that characters at the bottom of the page can be lost. The default value depends on the driver and can be inspected with the option /?. Example:

/h:12in use a different paper format

/l# left margin: the printed area will be moved by # to the right. # may be negative in which case movement will be to the left. The default is 1in. An example:

/l=1cm set the left margin to 1 centimetre

/la# adjust left margin. Before setting /la# and /ta# you should print out adjust.dvi with the settings /la0 /ta0 /l1in /t1in /tr0. Then set /la# and /ta# so that the upper left corner of the square (when printed with /l1in /t1in /tr0) is exactly 1 inch from the top edge of the paper and 1 inch from the left edge. The appropriate setting for /la/hash is obtained by subtracting 1 inch from the measured distance between the edge of the paper and the upper left corner of the square, the setting for /ta# similarly taking the top of the paper and the upper left corner. The drivers subtract the value of /la# from /l# when using transformation 0 to get the left margin. When these options have been set correctly you can set the margins exactly with /l# and /t# without calculation—this is for plain TEX not LaTEX in which the margins are set by \documentstyle. The default value is driver dependent.

/t# top margin: the printed area will be moved down the page by #. If # is negative, the area will be moved towards the top edge of the paper. Default is 1in. Example:

/t-1.5 move the printed area upwards by 1.5 units, the default unit is in—see

                /u*.

/ta# adjust the top margin. See /la#.

/tr# set the transformation. This option allows you to rotate or reflect the output. Acceptable values for this option are the digits 0–7. For further information see section 7.

/w# set the page width: dviscr and dvivik use this value to display the page outline. dvimsp uses it in conjunction with /h# to set the dimensions of the graphic when /om- is selected. dvidot reduces this value by 1 px in case this is the maximum printing width. dvihplj uses this value to determine how much of the page can be printed. If the value is incorrect, characters may be lost at the right edge. The default value is driver dependent and can be seen with the /? option. Example:

/w13.6in set it for a wide carriage printer.

5.4 Printing more than one page on a sheet

These options permit more than one page to be printed on the output sheet (or display). It is also possible, when printing one page to a sheet, to set different margins for even and odd pages. These options are not easy to use and you are recommended to save successful option settings in a response file: you can extract the settings from the transcript file. Examples of the use of these options can be found at the end of this section.

/cf# set the initial value for the shift index (\underline{c}ombine pages, \underline{f}irst index). The default value is 1. The shift index is used to select the /cx# and /cy# values to use for the next page. This index is increased by 1 for each page. The highest value for this index is the greater of the number of pages to a sheet /cp# or the highest index set by /ci#. The positions 1 to #-1 on the first sheet are not printed. Note: /cf# affects the sheet selection.

/ci# this option sets the index for the next /cx#, /cy# values: there are up to 16 page positions to a sheet. Each position selects the amount by which a page will be offset from the sheet edges when it falls in that position—the default is /cx0, /cy0 for all positions. /ci# sets the index to a value between 1 and 16; just /ci increases the current index by 1. The initial value is 1. The largest value set by /ci# or the number of pages to a sheet, whichever is the greater, sets the number of page positions on a sheet. If you want to print 2 pages to a sheet then you will use /ci1 and /ci2. If you want to print two pages to a sheet and every other sheet should have a larger margin (for binding, for instance) then you would have four page positions and set /cp2. The additional margin is then added to the first pair (or last pair) of /cx# values.

/cp# this option sets the number of pages to print on a sheet. This value can be smaller than the number of page positions but must then be a divisor of the number of positions. The default value is 1. If four page positions are used with /cp2 (and /cf1) then the first six pages will be printed out on to sheets in the following way:

Page Sheet Position
1  1  1
2  1  2
3  2  3
4  2  4
5  3  1
6  3  2

/cx# horizontal offset for the position selected by /ci#.

/cy# vertical offset for the position selected by /ci#.

Examples:

/cx1cm /ci /cx-1cm

The first page will be offset 1 centimetre to the right, the second 1 centimetre to the left, the third 1 centimetre to the right, and so on. One page is printed on each sheet.

/ci2 /cx4in /ci3 /cy4in /ci4 /cx4in /cy4in /cp4

Four pages are printed on a sheet—each page is assumed to be 4 inches square. The first page is printed in the top left corner, the second in the top right corner, the third in the bottom left and the fourth in the bottom right corner of the sheet. The next four pages are distributed similarly on the second sheet.

/ci1 /cx0 /cy0 /ci2 /cx8.5in /cy0 /cp2 /cf1 /w17in /o8

This is an example for dviscr using the gray scale mode when possible. Two pages are displayed together. If on the first sheet the lefthand side should be blank then /cf2 will attend to it.

5.5 Settings for fonts

Most of the options in this section need be set once for each driver and then left alone: they are best put in a response file.

/fb batch mode: if a font cannot be found then a substitute font is sought. First the font name is kept but it is sought in magnification 1000 (in the resolution set by /rf#). If this is unsuccessful then cmr10 is sought in the requested magnification and, if this too fails, in magnification 1000. If this final attempt is unsuccessful then a fatal error message is issued and the run is ended. This search sequence can be altered with a font substitution file, cf. section 11. /fb is turned off by the selection of /fc or /fi.

/fc change mode: before attempting to load a font or a graphics, the name and path is displayed and can be altered (cf. section 11). /fc is turned off by the selection of /fb or /fi.

/fd# this option alters the value of the internal variable max_drift. If character or line spacing is uneven, you can try another value for max_drift to see if it improves things. The usual range of values is 0–3. The default value depends on the driver, you can inspect this value by using the option /??.

/fi interactive mode: this is the default setting. When a font or a graphics cannot be found, you can alter the magnification and the name for another attempt (cf. section 11). /fi is turned off by the selection of /fb or /fc.

/fl# font load limit: when the driver reads the character data from the font file (Loading font...), all the characters that need no more than # bytes are loaded. Selecting /fl-1 is a special case, the character data is read only when it is needed: initially the driver simply checks that the file exists. /fl-1 also suppresses the warnings of incompatibilities in the font files; it should only be used when you know that all the font files are correct. The default value is 300: this means that when opening the font files, all characters that take up less than 300 bytes will be loaded immediately. If, later, a larger character is needed, then the font file will be reopened to read it. When dviscr or dvivik are used with fonts on a hard disk, it is sensible to set this option to /fl0 or even /fl-1 as then the first page will appear sooner. If the driver complains about lack of memory, it can help (but not always) to set this option to /fl0 or /fl-1. The driver will not use any less memory but the division of memory may be improved. Examples:

/fl=0 no characters loaded until needed

/fl-1 neither font parameters nor characters loaded until needed

/fl:1000 initially load all characters that need no more than 1000 bytes

/fs# font scaling: this option reduces the size of the fonts, allowing fonts generated for a higher resolution to be used (disk space!) A rectangle /fsx# points wide and /fsy# points high is printed as a single point. Using /fs# sets both values the same. Possible values are 1–8. Fonts reduced by means of this option are usually of a poorer quality than -generated fonts for the correct resolution^{4}. The option /rf# must be used to set the resolution of the fonts to be used. Example:

/r=180/fsx=2/rfx=360

use reduced 360×180 dpi fonts instead of 180×180 dpi ones.

4Actually, below about 180dpi, reduced fonts are better than the -generated ones

/pf* font path: font files are sought in the directories listed in the argument to this option; directory names must be separated by semicolons. The resolution and PXL magnification of a font can be inserted into a directory name with $r and $s, both letters must be in lowercase. See section 11. The defaults depend on the driver:

                        dvihplj \emtex\pixel.lj\$rdpi
                        dvimsp \emtex\pixel.lj\$rdpi
                        dviscr \emtex\pixel.lj\$rdpi
                        dvivik \emtex\pixel.lj\$rdpi

dvidot set in the parameter file

/pf:d:\fonts\dpi$r;d:\fonts\pxl$s

with this option setting, when a font file cannot be found in the font libraries it is sought first in the directory d:\fonts\dpixxx and then in d:\fonts\pxlyyy where xxx is the resolution and yyy the PXL magnification of the font.

/pl* this option is used to set the name of the font library files. These files can be made with the fontlib program (cf. the fontlib manual), their default extension is fli. Fonts are first sought in these files in the given sequence; if the font is not found there then the font file alone is sought. This option allows directories as well as font library names to be entered; the files are searched for in the directories named in the order entered. Directories are automatically recognized and need not end in \. Further information can be found in section 11. An example:

/pl=c:\fonts\;d:\fonts\;fli1;fli2;fli3

fonts are searched for first in the three library files fli1, fli2 and fli3 which will be looked for in the directories c:\fonts and d:\fonts.

/ps* sets the name of the font substitution file. The default is not font substitution file. See section 11.3.

/pv* sets the directories for virtual fonts. Virtual fonts are only looked for in these directories; the default is empty, that is, no virtual font files are searched for. If two or more directories are entered, they must be separated by semicolons.

/rf# sets the font resolution, cf. page 10.

5.6 Settings for magnification and resolution

/m# the magnification given in the dvi file is replaced by #. # can take values from 100 to 16000, as if entered with \mag or scaled, that is, a magnification multiplied by 1000, the normal magnification is /m1000. It can also be entered as a digit 0–9 standing for 1000×1.2^{0} … 1000×1.2^{9} which is the same as \magstep0 to \magstep9; you can also put h which stands for \magstephalf. Make sure that there are fonts for the magnification you have chosen! Examples:

/m:=1200 magnification by 1.2

/m2 magnification by 1.2^{2} = 1.44

/m500 reduced to half size

/mh magnification by a factor of \sqrt{1.2}

/m1414.2136 magnification by a factor of \sqrt{2}

/r# Sets the resolution. The resolution of the output device is taken to be this number of dots per inch (dpi). If the resolution of the device differs from this number you will get output which is magnified, reduced or distorted. If the horizontal and vertical resolution are not the same then they can be individually set with /rx# (horizontal) and /ry# (vertical). /r# sets the resolution in both directions to the same value. # is in units of dpi. Suitable fonts for the resolution and magnification must be available—the size used in searching for a font is the horizontal resolution multiplied by the magnification. The default value of this option depends on the driver:

dvihplj /r300
dvimsp /r300
dviscr /r300
dvivik /r300
dvidot set in the printer description file

The units of measure (except for px) depend on the resolution; the driver calculates the values of options entered with units only after all the options have been processed. Therefore /r# need not be at the beginning of the options (cf. /rf#), it can appear anywhere. Example:

/r=180 assume a device resolution of 180 dpi

/rf# sets the font resolution in dpi. This option is usually used together with /fs#. If the horizontal and vertical resolution differ, then they can be separately set by /rfx# (horizontal) and /rfy# (vertical). If /rf# is not present, /r# is used for the font resolution.

/rg# set the resolution for graphics files in dpi. This option simply sets the values of $r and $s to be used in the /pg* option. If the horizontal and vertical resolution differ, then they can be separately set by /rgx# (horizontal) and /rgy# (vertical). If /rg# is not present, /r# is used for graphics files.

5.7 Other options

// prompt for options—this can be useful when the maximum length of a command line is not long enough.

/p@* set the search directories for response files. If a response file cannot be found then it is sought first in the list of directories given in this option and then in the list given in the PATH environment variable. If the list contains two or more directories they must be separated by a semicolon. The default directory is \emtex\texinput. Example:

/p@=c:\tex;.. if a response file cannot be found using its pathname as entered, it will be sought first in c:\tex and then in the working directory’s parent directory “..”.

/pd* set the search directories for dvi files. If a dvi file cannot be found then it is sought in the list of directories given in this option. If the list contains two or more directories they must be separated by a semicolon. The default directory is \emtex\texinput. Example:

/pdc:\dvi;\myinputs\

if a dvi file cannot be found using its pathname as entered, it will be sought first in c:\dvi and then in \myinputs.

/pg* set the search directories for graphics files. If a graphics file cannot be found then it is sought in the list of directories given in this option. The PXL magnification (5 times the resolution) and the resolution can be entered in the path as $s and $r (cf. /rg#: $s and $r must be in lowercase. The search procedure starts with the name given in \special{em:graph xxx}— if no extension is given, first xxx.msp is looked for and then xxx.pcx. If the list contains two or more directories they must be separated by a semicolon. The default directory is

\emtex\texinput. Example:
/pgc:\win;\emtex\doc\gr$r

if a graphics file cannot be found using its pathname as entered, it will be sought first in c:\win and then in \emtex\doc\grxxx, where xxx is the resolution.

/po* sets the default name of the output file—neither dviscr nor dvivik have this option. If the driver call does not give an output file name then the name set with this option is used. The default is no output file. dvimsp will add its standard extension, either msp or pcx depending on the setting of the /o* option. Example:

/po:lpt1 if no output file name is given, output will be sent to the first parallel printer port.

/pt* set the name of the transcript file. The standard extension is dlg, the default name is the name of the driver with the standard extension, for instance, dviscr.dlg. The transcript file contains a list of all the options in effect for a run together with all the messages from the driver. The transcript file option format is the same as that of a response file, so the transcript file can be used as a response file to reproduce the settings. No transcript file is generated if /pt without an argument is used. Example:

/pt=text.opt the transcript is written to test.opt.

/pw* write a fontlib response file. Before printing or displaying the first page, the driver will generate a file containing the fontlib commands needed to add the fonts used by the input file to a font library file. If no /pw* option appears, no response file will be generated. Example:

/pwnew.flc the fontlib response file new.flc is generated.

To use this file with fontlib, you would need a command like:

    fontlib /k fonts @new.flc

/u* sets the default unit of measure; if this option is not present the unit is in (inches). The following units may be used (cf. The TEXbook, page 57):

pt point (1in=72.27pt)
pc pica (1pc=12pt)
in inch (the default)
bp big point (1in=72bp)
cm centimetre
mm millimetre
dd didot point (\frac{1238}{1157}pt)
cc cicero (1cc=12dd)
sp scaled point (1pt=65536sp, 1sp=54Å)
px pixel (does not depend on the resolution)

All these units must be entered in lowercase. The /u* option affects the following options only. Example:

/ucm options following this option will use centimetres as the default unit of measure.

/uMm Error! (Megametres are a bit unwieldy)

5.8 Special options for dvidot

Some of these options can only be used with special printer description files, further information will be found in the makedot instructions.

/hf# set the form length. This option can only be used with the printer description files itoh and aiw or files you have generated with FF_METHOD=LF. For these files the form length is needed for page throw to work correctly. If the value is zero, for example, 0in, then the length from /h# is used.

/ox+ use XON/XOFF protocol for com1 to com4. This option is only useful when output is sent directly to the serial port, that is, when /po* is set to COM1, COM2, COM3 or COM4^{5}. If /po* is set to anything else, for example, lpt1, aux or mytext.prn, /ox+ will be ignored. If /ox- is set or output is not to a serial port, output will be done using DOS functions. This option is not needed under OS/2 and is not supported.

/pi* set the name of the initialization file. This file will be sent directly to the printer without change after it has been initialized. Example:

/pimyinit.prt myinit.prt will be sent to the printer immediately after initialization.

/s+ the effect of this option depends on the printer description file. With itoh, aiw or a file you have generated with S_OPTION=SLOW in it, /s+ will slow down printing to improve its quality. /s- (the default) printing is bidirectional, /s+ sets printing to be unidirectional which reduces the speed but gives better quality. With itoh, /s+ sets the printer into “Incremental Print Mode”. With other description files (with the setting S_OPTION=DOUBLE_STRIKE) /s+ causes the printer to make two passes over each line, in the first pass the odd numbered points are printed (1, 3, 5 &c.) and the even ones in the second pass. With the default setting /sprinting is around twice as fast but of poorer quality as the RX and FX printers have difficulty in printing two dots immediately next to each other. The quality of many printers does not improve with /s+.

5.9 Special options for dvihplj

/oc# every # pages the fonts defined in the printer are deleted; this can help when the printer has too little memory but the speed of printing is reduced. The default setting is 0, that is, fonts will not be deleted. This option can help printers which are not sufficiently compatible with the HP LaserJet^{+}.

/od+ the output will be for an HP DeskJet, to print on a DeskJet you must select /od+.

/of# set the starting number for font ID’s. The default value is 0 and the acceptable range of values is 0–32736. The fonts downloaded to the printer by dvihplj will be given ID’s in the range # to #+31. This option allows the ID number to be set to a different range than permanently downloaded fonts; dvihplj deletes all temporary fonts.

/oi+ initialize the printer: the printer will be completely initialized before printing, this is the default. /oi- turns this option off.

/oj+ select job offset: some printers will offset successive jobs so they can be more easily separated.

/ok+ output for a Kyocera printer, if you are printing on a Kyocera F-1010 then this option must be selected.

/om# set the printer memory size in Kbytes. The default is 394. Entering 0 for this value will suppress memory overflow checking. If fonts are permanently downloaded before printing, this value must be reduced. This option is ignored if /od+ (DeskJet) is selected. Example:

/om1536 1.5 Mbytes of printer memory are available

/ox+ use XON/XOFF protocol for COM1 to COM4. This option is only useful when output is sent directly to the serial port that is, when /po* is set to COM1, COM2, COM3 or COM4^{6}. If /po* is set to anything else, for example, lpt1, aux or mytext.prn, /ox+ will be ignored. If /ox- is set or output is not to a serial port, output will be done using DOS functions. This option is not needed under OS/2 and is not supported.

5Note that capital letters must be used)

6Note that capital letters must be used

/pi* set the name of the initialization file. This file will be sent directly to the printer without change after it has been initialized. Example:

/pi:myinit.lj myinit.lj will be sent to the printer immediately after initialization.

5.10 Special options for dvimsp

/- output will be inverted, that is, white on black rather than black on white.

/+ output will be black on white (default)

/o* set the graphics format.Normally (/o2 is the default) an msp file for Windows 2.x will be generated. If /o1 is selected then an msp file for Windows 1.x will be generated instead. /op causes a pcx file to be produced.

/om+ minimize the page size: the margins at the top and left will be placed so that there are no blank lines at the top and no blank columns on the left. The page height will be reduced to eliminate blank lines at the bottom. The page width will be chosen so that a minimum of blank columns are left on the right: depending on the width this may leave up to 7 blank columns (with /w+, 15) on the right. This option should be selected if the output is to be imported into a document, for instance, with another dvidrv driver. If the graphic is for editing then /omshould be selected instead so that empty space is left for “painting”. Selecting /om- will cause /l# and /t# to be ignored if positive. Using negative margins the graphic can be clipped as points with negative coordinates are not written to the file; the dimensions set by /h# and /w# delimit the size of the clipped graphic.

/ow+ round up the width of the page to a multiple of 16 pixels. Many programs which can read the output of dvimsp need rows of 16-bit words. The default, /ow- will output rows of 8-bit bytes. If /op is selected, the output will have rows of words.

5.11 Special options for dviscr and dvivik

/- the page will be displayed white on black.

/+ the page will be displayed black on white, the default setting.

/hx# set the horizontal home position. When the page is first displayed or [figure: Home]is struck, the picture will be positioned to the point set by /hx# and /hy#. /hx0/hy0 is the top left corner of the page; the default is /hx1in/hy1in. Example:

/hx0/hy0 set the home position to the top left corner of the page.

/hy# set the vertical home position: [figure: Home]cf. /hx#

/o# display using gray scales (dviscr only). a × b picture points (a columns, b rows) will be represented by one graphic point the brightness of which depends on the number of black points in the rectangle. Either an EGA card with a colour monitor capable of displaying 16 colours (4 gray scales) or a VGA adapter (16 gray scales) is needed. /o# sets both a and b to the same value, /ox# sets a alone and /oy# sets b. # may take values from 1–8, if both a and b are set to 1 gray scaling is not used. Using gray scales considerably reduces the speed of dviscr; the implementation is optimized for /ox# values of 1, 2, 4 and 8, values 3, 5 and 7 make the program almost unusably slow. If the graphics adapter doesn’t support gray scaling and no scaling is set (/s1) then the display is scaled by the value set by /o#. Example:

/ox4/oy2 grouping is in sets of 4 × 2 points; to get an undistorted display, distorted fonts are required; in addition the horizontal resolution must be twice the vertical resolution.

/oa# set the graphics adapter (dviscr only). With this option you can set the adapter and the graphics mode the driver is to use. The following settings are possible:

/oa0 default—the driver will sense and automatically select the appropriate graphics

mode.

/oa1 CGA, 640 × 200 /oa2 EGA, 640 × 350 or 640 × 200 depending on the monitor. /oa3 VGA, 640 × 480 /oa4 HGC, 720 × 348, not supported under OS/2 /oa5 Genoa SuperEGA, 800×600, not supported under OS/2. This can only be selected

by using this option, the driver’s automatic selection will not choose this mode.

/oa6 Paradise VGA, 800 × 600, not supported under OS/2. This can only be selected by

using this option, the driver’s automatic selection will not choose this mode.

/oa7 Video 7 VGA, 800 × 600, not supported under OS/2. This can only be selected by

using this option, the driver’s automatic selection will not choose this mode.

/oa8 Tseng Labs EVA, 800 × 600, not supported under OS/2. This can only be selected

by using this option, the driver’s automatic selection will not choose this mode.

/oa9 HP Vectra, 640 × 400, not supported under OS/2. /oa10 MDS Genius and PRIMUS II, 728 × 1008, not supported under OS/2. /oa11 EGA, 640 × 200, 16 colours. /oa12 EGA, 640 × 350, 16 colours. /oa13 EGA, 640 × 350, 16 colours out of 64. /oa14 VGA, 640 × 480, 16 colours. /oa15 VGA, 640 × 480, 16 colours out of 64. /oa16 VGA, 640 × 480, 16 colours out of 262144. /oa17 EGA, 640 × 350, 2 colours. /oa18 VGA, 640 × 480, 2 colours. /oa19 Olivetti M 24, 640 × 400, not supported under OS/2.

/oa100;w;h;ax;bx

special mode for EGA with a monochrome monitor, 2 colours, not supported under OS/2.

/oa101;w;h;ax;bx

special mode for EGA with a 16 colour monitor, not supported under OS/2.

/oa102;w;h;ax;bx

special mode for EGA with a 64 colour monitor, 16 out of 64 colours, not supported under OS/2.

/oa103;w;h;ax;bx

special mode for VGA with an analogue monitor, 16 out of 262144 colours, not supported under OS/2. Please note: setting a graphics mode which the machine cannot support can lead to the system crashing or even to electrical damage to the monitor. /oa# should only be used when the desired mode is not the one chosen automatically. The modes 100–103 are user defined modes for EGA and VGA cards and need further parameters which must be separated by colons or semicolons. w must be replaced by the screen width in pixels (320–1024), h by the screen height (200–1024). The width must be a multiple of 8; the height will be reduced by the driver if display memory would exceed a segment^{7}. The mode is selected by putting the values ax and bx into registers AX and BX and calling the video BIOS with INT 10H. ax and bx must be given in hexadecimal, bx can be omitted if it is 0. You are entirely responsible for entering the correct values, the manual for the graphics card sometimes provides help. Example: the modes /oa13 and /oa7 can also be selected by these commands

7This limit implies (w/8) × h ≤ 65536. Many adapters support resolutions which use more than 64Kbytes of display memory, for instance, 800 × 600 × 256 and any 1024 × 768 mode. These modes cannot be fully used.

                  /oa102;640;350;0010

EGA, 640 × 350, 16 out of 64 colours.

                  /oa103:800:600:6f05:62

Video 7 VGA, 800 × 600, 16 out of 262144 colours.

/oc# set the colours for EGA or VGA: possible values are 1 (dark blue) to 15 (bright white). The default is /oc2 (dark green). The colours for the items in the display are chosen by:

/ocp# page border

         /ocr#  ruler

/ocs# status line

/or+ display the ruler; the default is /or-, no ruler.

/os+ display the status line, the default. If the status line is not displayed (/os-), a beep sounds at the beginning and end of any entry (number or text), see section 12 and 14.

/ou* set the unit of measure for the ruler and status line, the default is /oupt. Any of the units shown for /u* may be used.

/s# set the scaling: this allows you to reduce the size of the output. The picture points in a square of # points will be shown as one point on the display; possible values of # are 1–8. The points in a rectangle can be used instead by setting the width with /sx# and the height with /sy#. If appropriate fonts are available it is better to set another resolution with /r# as the result of reducing a font is of poor quality; using gray scaling instead gives even better results. If gray scaling is not possible, then scaling can be achieved by /o#; for this reason, you should set the scaling (or gray scaling) with /o# rather than /s# so you get the same size no matter what adapter you are using. /s# is only necessary when you are using both scaling and gray scaling together. Example:

/s2 the resolution will be halved both horizontally and vertically

/sx4/sy2 the width will be reduced to a quarter, the height will be halved.

6 Printer description files for dvidot

The dot matrix printer driver dvidot is capable of driving a wide range of printers. Information on the characteristics of a particular printer is given to dvidot in a printer description file. The name of this file must appear on the command line. At present description files for the following printers are supplied:

6.1 aiw

For the Apple Imagewriter. Resolution: 160 × 144 dpi. Environment variable for driver-specific options: DVIAIW. Default font directory (/pf*): \emtex\pixel.aiw\$rdpi. The option /s+ selects unidirectional printing. Recommended font set: ITO.

6.2 dmp130

For the Tandy DMP-130. Resolution: 240 × 216 dpi. Environment variable for driver-specific options: DVIDMP. Default font directory (/pf*): \emtex\pixel.fx\$rdpi. The option /s+ selects doublestrike printing, improving the output quality. Recommended font set: FX. Before printing the printer is switched into IBM mode, when printing is complete it is switched back into Tandy mode.

6.3 fx80 and fx100

For the Epson FX-80, RX-80 (narrow) or the FX-100, RX-100 (wide) and many other printers. Resolution: 240 × 216 dpi. Environment variable for driver-specific options: DVIFX. Default font directory (/pf*): \emtex\pixel.fx\$rdpi. The option /s+ selects double-strike printing, improving the output quality. Recommended font set: FX.

6.4 ibm4201 and ibm4202

For the IBM Proprinter 4201 (narrow) or 4202 (wide).  Resolution: 240 × 216 dpi.  Envi-

ronment variable for driver-specific options: DVI4201 or DVI4202. Default font directory (/pf*): \emtex\pixel.fx\$rdpi. The option /s+ selects double-strike printing, improving the output quality. Recommended font set: FX. As these printers do not have a sufficiently small line feed, these printer description files are not very useful—printing could be much faster and still give the same quality.

6.5 ibm4207l and ibm4208l

For the IBM Proprinter 4207 (narrow) or 4208 (wide).  Resolution: 180 dpi.  Environ-

ment variable for driver-specific options: DVI4207L or DVI4208L. Default font directory (/pf*): \emtex\pixel.p6l\$rdpi. The option /s+ selects double-strike printing, with no improvement in the output quality. Recommended font set: P6L. The P6M or P6H font set can also be used (see /fs#). The printer’s DIP switch must be set to AGM.

6.6 ibm4207m and ibm4208m

For the IBM Proprinter 4207 (narrow) or 4208 (wide).  Resolution: 360 × 180 dpi.  Environ-

ment variable for driver-specific options: DVI4207M or DVI4208M. Default font directory (/pf*): \emtex\pixel.p6m\$rdpi. The option /s+ selects double-strike printing, improving the output quality. Recommended font set: P6M. The P6H font set can also be used (see /fs#). The printer’s DIP switch must be set to AGM.

6.7 itoh

For the C.ITOH 8510A. Resolution: 160 × 144 dpi. Environment variable for driver-specific options: DVIITOH. Default font directory (/pf*): \emtex\pixel.ito\$rdpi. The option /s+ selects unidirectional printing in “Incremental Print Mode”. Recommended font set: ITO.

6.8 lql and lqwl

For Epson printers in the LQ series both normal and wide carriage (and many other compatible printers). Resolution: 180 dpi. Environment variable for driver-specific options: DVILQL. Default font directory (/pf*): \emtex\pixel.p6l\$rdpi. The option /s+ selects double-strike printing, with no improvement in the output quality. Recommended font set: P6L. The P6M or P6H font set can also be used (see /fs#). If a 180dpi printer does not work with lql.dot or lqwl then you should try p6l.dot or p7l.dot.

6.9 lqm and lqwm

For Epson printers in the LQ series both normal and wide carriage (and many other compatible printers). Resolution: 360 × 180 dpi. Environment variable for driver-specific options: DVILQM. Default font directory (/pf*): \emtex\pixel.p6m\$rdpi. The option /s+ selects double-strike printing, improving the output quality. Recommended font set: P6M. The P6H font set can also be used (see /fs#). If a 360 × 180dpi printer does not work with lqm.dot or lqwm then you should try p6m.dot or p7m.dot.

6.10 lqh and lqwh

For many, but not all, Epson printers in the LQ series (for instance, LQ-550) and many other compatible printers both normal and wide carriage. Resolution: 360 dpi. Environment variable for driver-specific options: DVILQH. Default font directory (/pf*): \emtex\pixel.p6h\$rdpi. The option /s+ selects double-strike printing, improving the output quality. Recommended font set: P6H. If a 360dpi printer does not work with lqh.dot or lqwh then you should try p6h.dot or p7h.dot. Otherwise lqm.dot or lqwm.dot should be used.

6.11 p6l and p7l

For NEC P6 and P2200 (narrow) and P7 (wide carriage) and many other compatible printers such as the Panasonic KXP-1124. Resolution: 180 dpi. Environment variable for driver-specific options: DVIP6L. Default font directory (/pf*): \emtex\pixel.p6l\$rdpi. The option /s+ selects double-strike printing, with no improvement in the output quality. Recommended font set: P6L. The P6M or P6H font set can also be used (see /fs#). If a 180dpi printer does not work with p6l.dot or p7l.dot then you should

try lql.dot or lqwl.dot.

6.12 p6m and p7m

For NEC P6 and P2200 (narrow) and P7 (wide carriage) and many other compatible printers such as the Panasonic KXP-1124. Resolution: 360 × 180 dpi. Environment variable for driver-specific options: DVIP6M. Default font directory (/pf*): \emtex\pixel.p6m\$rdpi. The option /s+ selects doublestrike printing, with hardly any improvement in the output quality. Recommended font set: P6M. The P6H font set can also be used (see /fs#). If a 360 × 180dpi printer does not work with p6m.dot or

p7m.dot then you should try lqm.dot or lqwm.dot.

6.13 p6h and p7h

For NEC P6 and P2200 (normal) and P7 (wide carriage) and many other compatible printers such as the Panasonic KXP-1124 and Citizen Swift 24. Resolution: 360 dpi. Environment variable for driverspecific options: DVIP6H. Default font directory (/pf*): \emtex\pixel.p6h\$rdpi. The option /s+ selects double-strike printing, with hardly any improvement in the output quality. Recommended font set: P6H. If a 360dpi printer does not work with p6h.dot or p7h.dot then you should try lqh.dot or

lqwh.dot.

7 Transformations

The drivers can rotate or reflect output; these transformations are set with the option /tr#. dviscr and dvivik can also have the transformation set with [figure: T]. The following transformations are possible:

0 normal output

1 output rotated 90^{∘} anticlockwise

2 output rotated 180^{∘} anticlockwise

3 output rotated 270^{∘} anticlockwise

4 output reflected in a 135^{∘} diagonal

5 output reflected in a vertical line

6 output reflected in a 45^{∘} diagonal

7 output reflected in a horizontal line

The usual transformations are 0 (portrait mode) or 1 (landscape mode). For the transformation to work the page height and width must be set correctly; the page dimensions are set independently of the transformation, that is, every transformation uses the same page height and width. However, the margins set by /l#, /t#, /cx#, /cy#, /hx# and /hy# are transformed and, in most cases, should not need to be changed for a different transformation—the margin set with /l# will always be to the “left” of the text which will not necessarily be at the left margin of the page. To take an example, in transformation 1 the margin set by /l# is measured from the bottom edge of the paper to the text, assuming the page height has been set correctly. The margins set with /ta# and /la# are always measured from the edge of the paper and do not need to change with a different transformation. If the horizontal and vertical resolutions are not the same then an appropriately deformed font must be used. The current version of the drivers will handle graphics files and characters which require more than 32000 bytes of memory only in transformation 0. These are the eight transformations illustrated:

0  1  2  3  4  5  6  7

8 Printing output files

In sending the output file to the printer, you must make sure that all the characters are passed through unchanged. You should therefore used the command

     copy /b mytext.prt lpt1

to send the file mytext.prt to the parallel port lpt1. The DOS spooling program print.com or print.exe can only be used if it has a /B option to allow binary data to be printed. If you are sending output files to a parallel port (prn or lptx) under DOS and, in the middle of printing, it issues an error message concerning the printer or the port you should try one of the commands

mode lpt1,,p (DOS 2.x and 3.x)

     mode lpt1 retry=r  (DOS 4.x)

to see if it improves matters—replace lpt1 with the name of the output port you are using. These commands have the effect of making DOS wait “forever” for the printer to become ready. When printing under DOS through a serial port, you can use the XON/XOFF protocol with dvidot and dvihplj by selecting the option /ox+.

9 The dvidrv.err file

The drivers read the text of their warning messages from the file dvidrv.err. This file should be either in the current working directory or in one of the directories listed in the PATH environment variable. If the driver cannot find dvidrv.err you will get a message like

     Warning 1018: [cannot open dvidrv.err]

This means that the conditions for warning 1018 (see section 20) occurred but the text of the message could not be printed as dvidrv.err could not be found.

10 Recommendations for installation

To avoid the necessity of entering the same set of options every time you use a driver, you should prepare a configuration file. This file can then be passed to the driver either in a batch file or through the appropriate environment variable.

10.1 Using batch files

In this form of installation the drivers are always called via a batch file. Such batch files should be kept in one of the directories listed in the PATH environment variable. The installation of dviscr will be used as an example: dviscr is called through the batch file v.bat or v.cmd which contain the following lines

     @echo off
     dviscr @lj.cnf /ocr=1 /fl=-1 %1 %2 . . . %9

If you are using DOS 3.2 or older, you must omit the @ in the first line. This batch file calls dviscr with the response file lj.cnf acting as the configuration file; this file, which must be in a PATH directory, is shown below:

      1 % lj.cnf (300×300dpi using LJ fonts)
      2 /pd=%DVIDRVINPUT%
      3 /pl=%DVIDRVFONTS%;lj_0;lj_h;lj_1;lj_2;lj_3;lj_4;lj_5a;lj_5b
      4 /pf=%DVIDRVFONTS%\pixel.lj\$rdpi
      5 /pg=%DVIDRVGRAPH%
      6 /r=300
      7 /rf=300
      8 /fs=1

The line numbers do not appear in the file, they only serve to make description easier. Line 1 is a comment, line 2 sets the list of directories in which dvi files will be sought if they are not found in the current directory—this list is in the environment variable DVIDRVINPUT. Line 3 sets the font libraries, the environment variable DVIDRVFONTS contains the name of a directory in which the library files lj 0.fli to lj 5b can be found. Line 4 gives the directory in which ordinary font files are to be found, the same environment variable, DVIDRVFONTS, is used for this as well but the path \pixel.lj\$rdpi is appended ($r stands for the font size in DPI). For this line to work, DVIDRVFONTS must contain only one directory name and it must not end in \. Line 5 sets the search path for graphics files using the environment variable DVIDRVGRAPH. In lines 6 and 7 the resolution for both the device and the font are set. Line 8 turns off font scaling. An example of a call for dviscr using these files:

     v mytext /o3

If you want to use 180 dpi fonts instead of the 300 dpi fonts for dviscr then you can replace lj.cnf in v.bat (v.cmd) by p6l.cnf. You can also use the command

     v @p6l.cnf mytext /o3

10.2 Using environment variables

In this method of using the drivers, you call the program directly rather than indirectly via a batch file. As an example of this kind of installation, here is a set up for dvihplj:

     set dvihplj=@lj.cnf /po:prn

The response file lj.cnf, which should be in a directory in the PATH list should be the same as that described in the section 10.1. The call to the driver can then be

     dvihplj mytext /z /h297mm

As the option /po:prn is used, output will sent directly to the parallel printer port.

11 Font searching and substitution

This section describes how the drivers search for fonts or font files. It also describes the format of a font substitution file and explains how font magnifications should be input.

11.1 General

A font is specified by giving its name and its size. Its name has three parts: the directory path, the font name and the file extension—the path and the extension are usually omitted. The font’s size is given by its resolution in dpi multiplied by the magnification—scaled \magstep 1 is equivalent to a magnification by 1.2. If the horizontal and vertical resolutions are different then in transformations 0, 2, 5 and 7 the horizontal resolution is used and the vertical resolution for the others. For convenience, the resulting value is also called the resolution. The “PXL magnification” of a font is obtained by multiplying the resolution by five^{8} and rounding to the nearest integer. For example, the font described as cmr scaled 2000 is (for dvihplj with default settings) the font with the name cmr10 (no path, no extension) and size 600 dpi, the PXL magnification is 3000 (= 300 × 2 × 5).

11.2 Entering a font magnification

The font magnification is input in dpi: note that earlier the PXL magnification was used instead which is the resolution in dpi multiplied by 5. As this value can have several places after the decimal point an easier method of entry has been provided: the resolution is followed by a colon and the magnification step. The magnification step (\magstep) is a power of 1.2, 0–9 and h for \sqrt{1.2}, used as the size increment for the standard fonts. 100:2 is, for example, an easier way of writing 172.8 (100 × 1.2^{3}) and 300:h stands for 328.63353. It is also possible to give the magnification as a colon followed by a magstep, the resolution will be taken as that set by /rf#; if /rf300 has been set (or /r300 without /rf#) then :2 will be interpreted as 300:2 or 432. This is primarily useful in font substitution files where it can make the files device-independent.

11.3 The font substitution file

A font substitution file (in short, FS file) gives a list of fonts which can be used to replace those called for in a dvi file: the name of the FS file can be set with the /ps* option though the drivers will run without one. An FS file can contain comments which are lines starting with %. Here is an example:

       1 %
       2 % Demonstration font substitution file
       3 %
       4 fancyfont -> ffont
       5 600 -> 300:4
       6 cmbx12 :0 -> cmbx10 :1
       7 am* -> cm*
       8 i* -> * /w

9

      10 $b   % Batch mode

11

      12 * -> cmr10
      13 * * -> * :0
      14 * * -> cmr10 :0

The line numbers do not appear in the file, they are used to simplify description. A font substitution file has two parts only one of which is required. The first replaces all matching fonts while the second describes what is to be done in batch mode when a font file cannot be found. The font file name or the size (or both) appear to the left of -> while the name or the size to be substituted appears on the right; this may be further followed by an option. All the rules in the first part are applied one after the other with the result of one rule being passed on to the next one. Rules which do not match remain unused. In line 4 the font fancyfont is replaced by ffont for all sizes. In line 5 any font requested in size 600 dpi (that is, a 300 dpi font scaled 2000) will be replaced by a font with the same name but size 622.08 dpi (300 dpi scaled by \magstep4). In line 6 a single font, cmbx12 scaled 1000, will be replaced by cmbx10 scaled\magstep1. In line 7 all fonts with names beginning with am are replaced by fonts with a name in which the first two letters are replaced by cm. In line 8 fonts with a name beginning with i are replaced by fonts with the same name but with the i removed. Line 8 also has the option /w which has the effect of making the font invisible, that is, it will not be printed—it must, however, still be present. There is one more option, /b: this option causes each character of the font to be replaced by a black rectangle of the same size as the character’s bounding box. The second part of the font substitution file must be introduced by $b as in line 10. This part only has effect in batch mode and then only when a font cannot be found. The substitutions in this part are applied in turn to the original font name and size with the result of one substitution not being carried forward to the next. After each trial substitution the resulting font name and size are searched for and the process ends when the search succeeds. If the search is unsuccessful then the next rule is tried; if all rules fail then the program ends with an error message. If the batch mode option is in force and no font substitution file is in use or the one in use has no second part, then the following default substitution rules are applied when a font cannot be found:

8The factor five is traditional. The standard font resolution at Stanford was 200 dpi which was set equivalent to a PXL magnification of 1000.

     * * -> * :0
     * -> cmr10 *
     * -> cmr10 :0

See also the description of the /fb option (Section 5.5). The rules in the example font substitution file are the default rules: line 12 replaces the missing font name by cmr10, keeping the size. If cmr10 in this size is not found then line 13 replaces the size by \magstep0 while keeping the name and tries again. If the search is still unsuccessful the last rule (in line 14) is tried, replacing both the name and size by cmr10 scaled \magstep0 which should always be found; if it is not found then one might suspect that the fonts are not installed or the path is wrong, and the program ends with a fatal error. Wildcarding in a font substitution file is not confined to *, ? and @ may also be used. @ stands for any character in the original font name, it cannot be used in the name to be substituted. ? also stands for any character in the original name but it may also appear in the replacement name where it will be replaced by the character in the original name that the corresponding ? stands for. This means that there must be a ? in the new name for every one in the old name. Note that while @ and ? may have name characters following them, * may only appear as the last character. Here is a constructed example which shows the effect of each character:

     aaa?bb@cc?dd* -> x?y?z*

If this rule is applied to the name aaa1bb2cc3dd456 the replacement name is x1y3z456: the first ? matches 1 and this then replaces the ? after x in the new name; the first @ matches 2 but does not add a character to the new name, it merely allows the names aaa1bb9cc3dd456 and aaa1bbq2cc3dd456 (for instance) to be replaced by the same name as aaa1bb2cc3dd456. The second ? matches 3 and replaces the ? after y. Finally the * matches any characters following dd and carries them over to the new name. Note that the name aaabb2cc3dd456 does not match aaa?bb@cc?dd* because there is no character between aaa and bb.

11.4 Font search example

The method used by the drivers to search for fonts is quite complicated and is best explained by means of examples. In these examples it is assumed that the resolution is 300 dpi (/rf300), there is no magnification (/m0), the font path is set by /pf=c:\example\$rdpi and a font library name is set by /pl=c:\fontlib\ljfonts. It is also assumed that any applicable substitutions from a font substitution file have been made. Search for the font described as cmr10 scaled 1200:

     c:\fontlib\ljfonts.fli  (look for size 360 dpi, name cmr10)
     c:\example\360dpi\cmr10
     c:\example\360dpi\cmr10.pk
     c:\example\360dpi\cmr10.pxl

This is a full search showing all the files and directories where the font would be sought: if, for instance, the font was found in c:\fontlib\ljfonts.fli then the search would end there. Search for cmr10.pk:

     c:\fontlib\ljfonts.fli  (look for size 300 dpi, name cmr10)
     c:\example\300dpi\cmr10.pk
Search for fonts\cmr10:
     c:\fontlib\ljfonts.fli  (look for size 300 dpi, name cmr10)
     fonts\cmr10
     fonts\cmr10.pk
     fonts\cmr10.pxl
     c:\example\300dpi\cmr10
     c:\example\300dpi\cmr10.pk
     c:\example\300dpi\cmr10.pxl
Search for fonts\cmr10.pxl:
     c:\fontlib\ljfonts.fli  (look for size 300 dpi, name cmr10)
     fonts\cmr10.pxl
     c:\example\300dpi\cmr10.pxl

11.5 User input

If the search for a font does not succeed and interactive mode (/fi, the default) is active, the user is asked for help: if change mode (/fc) is active, the request is made before the search. The prompt displayed has the font name and a file name shown in the form

path\name<xxxx>

path is the font path, empty unless set, see below, xxxx is the font size in dpi and name is the font name without an extension. The following replies to the prompt are available:

[figure: �] the search is repeated with the altered parameters. This is used in change

mode when nothing needs to be changed.

font size a new size is set and the search repeated. The size is set, the form of input accepted is 100.5, :1 or 240:h; more information on the input of font sizes can be found in section 11.2.

+ the present size is multiplied by 1.2, that is, it is increased by 1 magstep,

and the search is renewed.

- the present size is divided by 1.2, that is, reduced by 1 magstep, and the search repeated.

[[drive:]]path\ the search is repeated with a new directory but the present size and

name. The input must end with either : or \.

name the search is repeated with a new name leaving the directory and size

unchanged.

[[drive:]]path\name the name and path are changed and the search repeated with the current

size.

w the font is made invisible (white) and the search repeated. A font file is still needed but the characters in it are not printed. If a font is to be made invisible, the change mode option (/fc) should be selected to make sure the driver stops to allow user input.

b every character in the font is replaced by a black rectangle the size of its bounding box: a font file must also be present in this case and, as in the preceding item, change mode should be selected.

12 Key functions for dviscr and dvivik

While the previewer is constructing the page image and, of course, when it is finished, its activities can be controlled by key presses. Some keys require forther input such as a number, a page number or a text string; during input the [figure: �]or [figure: ←]keys delete the preceding character, [figure: Esc]terminates the entry and [figure: �]ends the entry and carries out the function. If the status line is switched off (see /os-), input will be done blind; in this case when input is required a beep will sound which will be repeated when the entry is ended with [figure: �]. If an error is made, a deeper tone will sound.

12.1 Moving the viewing window

See the entries for the [figure: R]and [figure: W]keys as well.

[figure: ←] The view is moved half a screen width (or less, see [figure: F]and [figure: C]) to the left. [figure: →] The view is moved half a screen width (or less, see [figure: F]and [figure: C]) to the

right.

[figure: ↑] The view is moved half the screen height (or less, see [figure: F]and [figure: C]) upwards. [figure: ↓] The view is moved half the screen height (or less, see [figure: F]and [figure: C]) down-

wards.

[figure: 4] The view is moved a full screen width to the left. [figure: 6] The view is moved a full screen width to the right. [figure: 8] The view is moved upwards by the height of the screen. [figure: 2; 10] The view is moved downwards by the height of the screen. [figure: Home] The view is returned to its initial position; this is set by the options /hx#

and /hy# or by the [figure: H]key.

[figure: 7] The view is moved to the top left corner of the sheet. [figure: End] The view is moved to the bottom of the page but with the same horizontal

position as [figure: Home](set by set by /hx# and [figure: H]).

[figure: 1] The view is moved to the bottom lefthand corner of the sheet. [figure: Ctrl]+[figure: ←] The view is moved to the lefthand edge of the sheet with the vertical

position remaining unaltered.

[figure: Ctrl]+[figure: →] The view is moved to the righthand edge of the sheet with the vertical

position remaining unaltered.

[figure: C] [figure: C](\underline{c}oarse) increases the amount by which the view is moved by an arrow key: positioning is made quicker. There are six steps available, the largest moving the view by half the width or height of a screen.

[figure: F] [figure: F](\underline{f}ine) decreases the amount by which the view is moved by an arrow

key: positioning is made more accurate. There are six steps available.

[figure: H] The current position of the view is taken to be the new initial position. The initial position of the view can be set by options /hx# and /hy#; resetting this position affects the action produced by [figure: Home]and [figure: End].

12.2 Selecting a sheet

[figure: PageUp; 9] Go back one sheet, this function enables you to page through the text. [figure: PageDown; 3] Go forward one sheet, this function enables you to page through the text. [figure: Ctrl]+[figure: PageUp] Go to the first sheet. [figure: Ctrl]+[figure: PageDown] Go to the last sheet.

10Space bar.

[figure: G] Select a sheet to view by sheet number, the numbers to enter run from 1 to the number of sheets to be printed. Note that, as the number of pages printed on a sheet can be varied, this function selects a sheet rather than a page.

[figure: O] When one of the functions [figure: Ctrl]+[figure: PageUp], [figure: Ctrl]+[figure: PageDown], [figure: G], [figure: P]or [figure: S]is used to select a sheet to view and a different sheet is to be displayed, the number of the current sheet and the position of the view on it is stored before going to the new sheet. [figure: O]will return to the previous sheet; up to the last 20 sheets selected by one of the above functions are stored. See also Section 12.6

[figure: P] Select a sheet by page number. A page number is entered and the next sheet which contains a page with a matching number is selected for viewing, the page number can contain *s, see option /b*. The page number is sought from the current sheet to the last sheet of the file. If no matching page is found, the search starts again at the first sheet of the file, continuing to the current sheet.

[figure: S] Search for text: the search starts at the beginning of the current page (or the position of the last string found) and continues to the end of the file. If the string has not been found at the end of the file, the search will continue from the beginning of the file to the current page. The [figure: Esc]wil interrupt the search. If no text is entered (just the [figure: �]key pressed), the text from the last search will be used. In the search, capital letters will be considered different to lowercase letters and hyphens and spaces will be ignored. It is possible to search for text containing accented characters as well as words containing f-ligatures. When the string has been found, the ruler will be turned on (if necessary) and the reference point put at the first character of the text.

12.3 Moving the ruler

See also the description of [figure: R]and [figure: W]in section 12.5

[figure: ←] The ruler is moved to the left by the amount set by the [figure: F]and [figure: C]keys.

[figure: →] The ruler is moved to the right by the amount set by the [figure: F]and [figure: C]keys.

[figure: ↑] The ruler is moved towards the top of the screen by the amount set by the [figure: F]and [figure: C]keys.

[figure: ↓] The ruler is moved towards the bottom of the screen by the amount set by the [figure: F]and [figure: C]keys.

[figure: Home] The ruler is moved to the top lefthand corner of the screen.

[figure: End] The ruler is moved to the bottom lefthand corner of the screen.

[figure: Ctrl]+[figure: ←] The ruler is moved to the lefthand edge of the screen.

[figure: Ctrl]+[figure: →] The ruler is moved to the righthand edge of the screen.

[figure: C] [figure: C]increases the amount that the ruler is moved by one of the arrow keys; it can then be positioned more quickly. There are six steps.

[figure: F] [figure: F]decreases the amount that the ruler is moved by one of the arrow keys; it can then be positioned more accurately. There are six steps; at the smallest step the ruler moves a pixel at a time.

12.4 Output transformations

[figure: K] This key alters the effect of the arrow keys (and others such as [figure: 2]or [figure: End]) so that movement takes place in the transformed coordinates rather than screen coordinates; the key is a toggle, striking it a second time changes back to the initial state with movement in screen coordinates. This can be useful with a monitor that can be rotated. The effect of the key extends to both uses of the arrow keys, moving the viewing window and moving the ruler.

[figure: T] This key selects a transformation, after [figure: T]the transformation number (0– 7) is entered followed by [figure: �]. For more information on transformations see option /tr# and section 7; see section 12.6 for a note on the choice of an origin for the transformation. If different values are given for the options /rx# and /ry# then it is not possible to change from one of the transformations 0, 2, 5 or 7 to transformation 1, 3, 4 or 6 or vice versa.

12.5 Miscellaneous functions

[figure: Ctrl]+[figure: C] [figure: Q] The program is ended.

[figure: D] The screen is refreshed.

[figure: I] The output on the screen is changed from black on white, the default, to white on black; this key is a toggle, striking it again changes screen output back again. See also options /- and /+.

[figure: R] Turn the ruler on, if it is not displayed, or off, if it is. While the ruler is displayed, the arrow keys move it rather than the viewing window, however, see [figure: W]for a way to change this.

[figure: Ctrl]+[figure: R] Turn the graduations on the ruler on or off. If they are displayed, striking [figure: Ctrl]+[figure: R]turns them off, if they are not displayed, they are turned on. See [figure: U]and [figure: Ctrl]+[figure: U]for altering the graduation units and see section 14 for the display of the distance between the graduations.

[figure: U] [figure: Ctrl]+[figure: U] These keys change the units used to show the position of the viewing window or the ruler. Pressing [figure: U]advances through the units available, [figure: Ctrl]+[figure: U]goes through them in reverse. The sequence of units is

px, mm, cm, in, pt, pc, bp, dd, cc, sp

For a description of the units see option /ou*.

[figure: W] When the ruler is displayed, the arrow keys move it rather than the viewing window. This key will change the function of the arrow keys from moving the ruler to moving the window even when the ruler is displayed. Striking the key a second time will change the arrow keys functions back again. The keys affected are: [figure: C], [figure: F], [figure: ←], [figure: →], [figure: ↑], [figure: ↓], [figure: Home], [figure: End], [figure: Ctrl]+[figure: ←]and [figure: Ctrl]+[figure: →]. Keys [figure: C]and [figure: F]control the amount by which the ruler or window is moved and change from ruler to window and back like the arrow keys. See the description of these keys in either section 12.1 or 12.3.

[figure: +; -] If gray scaling is possible (see 5.11) then these keys can be used to alter the value set with the /o# option; the ratio set by the options /ox# and /oy# will not change. If gray scaling is not possible (as, for instance, when using dvivik) or the values will be taken outside the permitted range or the relationship between /ox# and /oy# cannot remain unchanged (for example, with the settings /ox7/oy8) then the scaling (see option /s#) will be changed to achieve the desired effect. [figure: +]magnifies the picture by reducing the scaling and [figure: -]shrinks the picture by increasing it. See also the note below in section 12.6.

[figure: Alt]+[figure: G] [figure: Alt]+[figure: S] Change the gray scaling ([figure: Alt]+[figure: G]) or the scaling ([figure: Alt]+[figure: S]). After the key is struck, enter one or two digits in the range 1–8 representing the new scaling values. If only one digit is entered then it is used as the scaling in both x and y directions like the options /o# and /s#. If two digits are entered, the first sets the scaling in the x direction and the second in the y direction as for the options /ox#//oy# or /sx#//sy#.

12.6 A note on [figure: +], [figure: -], [figure: T], [figure: Alt]+[figure: G], [figure: Alt]+[figure: S]and [figure: O]

When the key functions [figure: +], [figure: -], [figure: Alt]+[figure: G]or [figure: Alt]+[figure: S]are used an attempt is made to keep the screen midpoint or, if the ruler is displayed, the ruler centre point, in the same place. When a new transformation is chosen (with [figure: T]), rotations use this point as the axis, the mirror axis for reflections passes through this point and zooms in and out use it as the centre point. If this causes the viewing window to move off the edge of the paper then the window is moved to bring it completely (if possible) within the paper boundaries. The [figure: O], which returns to the last page viewed, works in a similar way after [figure: +], [figure: -], [figure: Alt]+[figure: G], [figure: Alt]+[figure: S]or [figure: T]has been used: an attempt is made to place the midpoint of the screen (or ruler centre point) on the page to be viewed again on the current screen midpoint or ruler centre point.

13 The ruler in dviscr and dvivik

A ruler, consisting of a horizontal and a vertical line with graduations, can be displayed with [figure: R]or /or+. The arrow keys which, in the absence of the ruler, move the window, will then move the ruler instead. However, pressing [figure: W]toggles these keys between moving the ruler and moving the window – the letter on the left of the status line changes to show whether the window will be moved (W) or the ruler (R). At the same time, the meaning of [figure: F]and [figure: C]will be swapped over from the ruler value to the window and vice versa. The status line also displays the position of the ruler centre point; the units used for the display can be changed with the [figure: U]or [figure: Ctrl]+[figure: U]keys or set by the /ou* option. If possible, the ruler will be displayed with graduations, each tenth graduation being somewhat longer than the others. The distance between the graduations is shown on the right of the status line, the units are the same as those used to show the position of the rule. The distance is always a power of ten (1, 10, 100, …) of the units chosen. It is possible for the vertical scale to be different to the horizontal one, the quotient of the two scales will be 10, in which case only the distance between the horizontal graduations is shown.

14 The status line in dviscr and dvivik

Unless switched off by the /os- options, the previewer displays a status line on the last line of the screen. From left to right the status line contains:

• a digit from 1–6 which is the movement index set by [figure: F]or [figure: C]. 1 means that the window is moved by half the screen width or height; higher numbers mean that movement is reduced – the largest value, 6, reduces movement to a single pixel at a time.

• When the ruler is displayed, the next item on the status line is the letter R, showing that the arrow keys move the ruler, or W showing that the viewing window will be moved. As the letter changes (with the [figure: W]key), the digit to the left will change to show corresponding index: window index with W, ruler index with R.

• The item to the right of this shows the scaling, or gray scaling, at present in force. Gray scaling is shown as Gxy and scaling as Sxy with x and y being the values set by either /ox#, /oy# or /sx#,

     /sy#.

• In the middle of the line the sheet number and the number of the first page to appear on this sheet are displayed separated by a colon.

• The next entry on the line gives the position of the viewing window on the page if the ruler is not displayed: the coordinates given are those of the top lefthand corner of the window for transformation 0 (the default), the bottom lefthand corner of the window for transformation 1 and so on, that is, the coordinates are those of the same point on the page both before and after the transformation. If the ruler is displayed then the coordinates shown are those of the ruler’s centre point.

• If the ruler is displayed there is one more entry on the status line which is the distance, in the current units, between the graduations.

• While the screen is being painted, a * will be shown at the righthand end of the status line. Commands can still be entered at this point which will interrupt the process and execute.

15 The \special command

All the drivers understand the following \special{} commands:

     \special{em:message xxx}

The message xxx is output immediately and will appear after the page number between the brackets.

     \special{em:graph xxx}

The graphics file xxx will be inserted at this point. Any directory or drive given in xxx will be ignored, the information being taken from the /optpg* option. The top lefthand corner of the picture will be placed at the same position as the reference point of a character were it to appear at this point in the document: the reference point of a character is generally at the point where the baseline intersects the left edge of the character’s bounding box. Both msp files (MS Paint under Windows 1.x or 2.x) and pcx files (Paintbrush), except for those generated in the 4 colour CGA mode, can be used. In pcx files only those points which are not white are printed – the standard palette is assumed. msp files are recommended as they can be handled more efficently. The limits for graphics files are 32760 pixels wide by 32766 pixels high. Here is an example, 21 pt wide by 23 pt high:

     \begin{center}
     \begin{picture}(21,23)
       \put(0,23){\special{em:graph dvitrans.2}}
     \end{picture}
     \end{center}

With a suitable graphics file, this was produced by dvimsp, the following output will be generated:

     \special{em:point n}
     \special{em:line a[[h|v|p]],b[[h|v|p]][[,w]]}

     \special{em:linewidth w} \special{em:moveto} \special{em:lineto}

With these commands it is possible to draw lines at any angle. The command \special{em:point n} defines a point n, where n must lie in the range (1–32767). This point then takes the coordinates of the current reference point. In LaTEX the reference point can be positioned in the picture environment, to do this in plain TEX and other formats the reader is directed to the TEXbook, page 389 (index: Ursa Major). Any two points can then be joined by a line: \special{em:line a,b,w} joins the two points a,b with a line of width w; as units any of those given in the description of /u* can be used except px. Both points of the pair can have the number suffixed by h, v or p; this determines the way in which the line will end. p causes the line to be ended with a cut perpendicular to the direction of the line (the default), h will end the line with a horizontal cut and v will end it with a vertical cut. Note that for obvious reasons, horizontal lines cannot end with a horizontal cut nor vertical lines with a vertical one. An example – join points 1 and 2 with a line which is cut at point 1 perpendicular to the line’s direction and at point 2 vertically, the thickness of the line is 4 pt.

     \special{em:line 1,2v,4pt}

Points do not have to be defined before they are used and the point numbers remain defined only within the same page. If several lines of the same width are to be drawn, the command \special{em:linewidth w} can be used. This sets the default line width, initially 0.4 pt, which will then be used in the command \special{em:line a,b}, where the width parameter is omitted. The line width should be set before the first \special{em:line a,b} command otherwise the default line width will be used — it is a good idea to set the line width before each set of line graphics. For example, entering

     \special{em:linewidth 1pt}
     \def\empoint#1{\special{em:point #1}}
     \def\emline#1#2{\special{em:line #1,#2}}
     \begin{quote}
     \begin{picture}(61,57)
       \put( 0, 0){\empoint{1}}
       \put(60, 0){\empoint{2}}
       \put(27,56){\empoint{3}}
       \put( 0,10){\empoint{4}}
       \put( 7, 4){\empoint{5}}
       \put(52, 4){\empoint{6}}
       \put(27,47){\empoint{7}}
       \put(11,10){\empoint{8}}
       \put(44,10){\empoint{9}}
       \put(27,38){\empoint{10}}
       \emline{1}{2}    \emline{2h}{3v} \emline{3v}{4v} \emline{4}{1}
       \emline{1}{7v}   \emline{7v}{6h} \emline{6}{5}   \emline{5h}{10v}
       \emline{10v}{9h} \emline{9}{8}   \emline{6h}{9h} \emline{7}{10}
     \end{picture}
     \end{quote}

generates the following picture:

There are other ways of drawing lines, with \special{em:moveto} the current position is set to the reference point (without drawing a line), \special{em:lineto} draws a line between the current point and the reference point and then sets the current point. A \special{em:moveto} followed by several \special{em:lineto} can be used to draw a polygon. These lines will always be cut off perpendicular to the line direction and will be drawn with the thickness set by \special{em:linewidth width}. Using these commands instead, the picture above can be drawn by entering

     \special{em:linewidth 1pt}
     \def\emmoveto{\special{em:moveto}}
     \def\emlineto{\special{em:lineto}}
     \begin{quote}
     \begin{picture}(61,57)
       \put( 0, 0){\emmoveto}  %1
       \put(60, 0){\emlineto}  %  1-2

       \put(27,56){\emlineto}  %  2-3
       \put( 0,10){\emlineto}  %  3-4
       \put( 0, 0){\emlineto}  %  4-1
       \put(27,47){\emlineto}  %  1-7
       \put(52, 4){\emlineto}  %  7-6
       \put( 7, 4){\emlineto}  %  6-5
       \put(27,38){\emlineto}  %  5-10
       \put(44,10){\emlineto}  % 10-9
       \put(11,10){\emlineto}  %  9-8
       \put(52, 4){\emmoveto}  %6
       \put(44,10){\emlineto}  %  6-9
       \put(27,47){\emmoveto}  %7
       \put(27,38){\emlineto}  %  7-10
     \end{picture}
     \end{quote}

The drivers look at all \special{} commands which begin with em: (the author’s initials), one or more spaces may appear between em: and the following keyword. Any \special{} which does not begin with em: will be silently ignored.

16 The options in brief

16.1 Output file, screen, print

/- dvimsp, dviscr and dvivik: white text will be displayed on a black background /+ dvimsp, dviscr and dvivik: black text will be displayed on a white background /fd# correct the character spacing /hx# dviscr and dvivik: horizontal initial position /hy# dviscr and dvivik: vertical initial position /o# dviscr: gray scale mode /o* dvimsp: graphics file format /oa# dviscr: set the graphics adapter and mode /oc# dviscr: set the colours (EGA and VGA only) /oc# dvihplj: delete fonts after # pages /oi+ dvihplj: do not initialize the printer /om+ dvimsp: minimize the output page size /ow+ dvimsp: round the output page width to a multiple of 16 px /ox+ dvidot and dvihplj: XON/XOFF protocol /po* printer drivers: default output file /pi* printer drivers: printer initialization file /s+ dvidot: slow output to increase quality /s# dviscr and dvivik: scaling

16.2 Graphics files

/fb batch mode (do not prompt for file names) /fc change mode (prompt for all file names) /fi interactive mode (prompt for the names of missing fonts and graphics files) /o* dvimsp: graphics file format /om+ dvimsp: minimize the output page size /ow+ dvimsp: round the output page width to 16 px /pg* directories for graphics files /rg# resolution for graphics files

16.3 Page selection

/2* select every other page /b* first page /e* last page /k# skip pages /n# number of pages to output /nf# print page selection more than once /np# print each page more than once /z+ print pages in reverse order

16.4 Page layout

/h# page height /hf# dvidot: page length (not for all parameter files) /l# left margin /la# adjust left margin /t# top margin /ta# adjust top margin /tr# transformations /w# page width

16.5 Magnification

/fs# font scaling /m# magnification /o# dviscr: gray scale mode /r# resolution /rf# font resolution /rg# graphics file resolution /s# dviscr, dvivik: scaling

16.6 Directories

/p@* directories for response files /pd* directories for dvi files /pf* directories for font files /pg* directories for graphics files

16.7 Fonts

/fb batch mode (do not prompt for file names) /fc change mode (prompt for all file names) /fd# correct character spacing /fi interactive mode (prompt for the names of missing fonts and graphics files) /fl# initial font loading /fs# font scaling /pf* font directories /pl* font library files /ps* font substitution files /pv* directories for vf files (virtual fonts) /pw* generate fontlib response file /rf# font resolution

16.8 Other options

/? display options /?? display all options // prompt for options /od+ dvihplj: HP DeskJet /of# dvihplj: set downloaded font numbers /oj+ dvihplj: job offset /ok+ dvihplj: Kyocera F-1010 /om# dvihplj: set printer memory size /or+ dviscr and dvivik: display ruler /os+ dviscr and dvivik: display status line /ou* dviscr and dvivik: set ruler and status line units /pt* set the transcript file name /u* set the default unit of measure /v# set message level

17 Statistics output

If the message level is set to /v4 or higher, at the end of the run (or when memory runs out) the drivers display information on memory usage. For instance, the message

     Page buffers                      4      40024

means that four page buffers took a total of 40024 bytes. If the message level is set to /v4 or higher, the dvihplj driver displays how much printer memory has been used:

     <12345+6789,10,5>

This message shows that 12345 bytes were in use for fonts and 6789 bytes for the page itself. There were 10 fonts defined altogether of which 5 were used on this page.

18 Restrictions

• pk font files can only contain characters with codes from 0–255, pxl font files may only contain codes from 0–127.

• The width of a character may not exceed 32760 and the height 32766 pixels. If more than 32000 bytes of memory is needed for a character (the size would have to be something like 504×507 pixels or more) the speed of the driver will drop noticeably.

• Font files in pk format with ID 87 cannot be read.

• If a character is positioned so that part of it lies off the top of the page, that is, the first scan line^{11} would contain the second (or later) line of the character, then dvidot and dvimsp will always omit the character, dvihplj will omit the character if /od+ (DeskJet) is selected and dviscr will omit it if gray scaling is in effect.

• The current versions of the drivers can handle graphics (see \special{em:graph}) or characters needing more than 32000 bytes of memory only in transformation 0.

19 errorlevel return codes

The drivers return the following error codes which can be processed by the if errorlevel batch file command:

0 no error

1 bad argument

2 bad \special{} command 100 not enough memory 101 not enough memory or disk space 200 bad dvi file 201 bad font file or font file not found 202 bad graphics file or graphics file not found 203 bad vf file 204 other errors 254 internal error

11Scan line in this context refers both to the first line displayed on the screen by dviscr, the first line of pixels of an image output by dvimsp and the first line of dots on a page printed by dvidot and dvihplj.

20 Warning messages

If the message level, see /v#, is less than the level appearing in brackets the warning is suppressed; if there is an F in brackets then the message will not appear if the option /fl-1 has been selected. If a driver name appears in brackets, then this message applies only to that driver. #1, #2 stand for variable fields which will be filled in when the message is output. All warnings have the format

     Warning 1xxx:  ...

In the following only the number and ... will be shown. If the warning

     Warning 1xxx:  [cannot open dvidrv.err]

is issued then the file dvidrv.err, which contains the warning messages, cannot be opened (see section 9). The error message will then have to be looked up in this section using the number given.

1000: illegal number: #1

The number #1 given as an argument to an option is out of range or in the wrong form (real instead of integer). This message can also appear when an unacceptable number is entered in response to a prompt for a font file (see section 11).

1001: illegal number or unit of measure: #1

The argument #1 of an option is not an acceptable dimension: either the number is out of range or the unit is unrecognizable – note that units must be entered in lowercase letters.

1002: parameter too long: #1

The argument #1 of an option is too long.

1003: path name too long

The argument for /p@*, /pd*, /pf*, /pg* or /pv* is too long.

1004: missing path name

No argument has been given for /p@*, /pd*, /pf* or /pg*.

1005: illegal page number

A page number argument for /b* or /e* has an error in it.

1008: bad option: #1

The #1 option is incorrectly entered.

1009: unknown option: #1

#1 is an unrecognized option. Please note that some of the options do not apply to all drivers.

1010: invalid unit of measure: #1

An unrecognized unit of measure has been given as an argument to /u* or /ou*: units may only be entered in lowercase.

1017: too many file names: '#1'

Any argument on the command line which does not begin with either - or / is taken to be a filename. Depending on the driver, the command line can have one or two filenames only: perhaps an option has been entered without a - or / preceding it or spaces appear between an option and its argument.

1018: input file '#1' not found

The dvi file cannot be found.

1019: cannot create output file '#1'

The output file cannot be opened: it may exist and be readonly, the disk may be full or the limit of the number of files in the directory has been reached.

1020: file name too long

The filename given as an argument to /pi*, /pl*, /ps*, /pt* or /pw* is too long.

1022: file '#1' not found

The file entered as the argument to /pi*, /pl* or /ps* does not exist.

1023: cannot nest response files

A response file cannot call another response file.

1024: response file '#1' not found

The response file #1 cannot be found.

1025: invalid #1 argument: #2

The argument #2 to the option #1 is not acceptable.

1100: preamble data doesn't match postamble data:  [2]
     pre.#1=#2, post.#1=#3

There is something wrong with the dvi file, the data #1 in the preamble differs from the same data in the postamble. The preamble data is taken to be correct.

1200: checksum does not match  [2,F]
     font file #1: #2
     input file #3: #4

The font file #1 does not match the corresponding tfm file.

1201: wrong design size  [2,F]
     font file #1: #2
     input file #3: #4

The font file #1 does not match the corresponding tfm file.

1202: wrong magnification  [2,F]
     font file #1: #2
     input file #3: #4

The font file #1 does not match the corresponding tfm file.

1203: character #1: pixel width off by #2  [3,F]

The width of the character with code #1 (decimal) differs by more than 1 (in fact, by #2) from the width calculated from the tfm file. If #2 is positive then the font file width is the greater, if it is negative then the tfm file width is the greater. This warning will appear when the font file does not match the tfm file, in particular when the font file has been loaded in the wrong size.

1204: '#1' is not a usable font file  [3]

When looking for a font file the file #1 has been found; this file does not, however, have the format of a font file. After issuing this warning the procedures described in section 11 will be continued.

1205: font #1 [#2] not found

No suitable file can be found for the font file #1. Further explanation can be found in section 11.

1206: batch mode: font #1 replaced by #2  [1]

In batch mode (see /fb) the font file #2 is being used for #1 as a matching file cannot be found.

1300: '#1' is not a usable graphics file  [3]

While searching for a graphics file, the file #1 was found. This file does not have the correct format for a graphics file. After issuing this warning the procedures described in connection with the /pg* option (page 10) will be continued.

1301: graphics file #1 (graph #2; #3 DPI) not found

The graphics file #1 cannot be found (\special{em:graph #2}).

1400: undefined point: #1  [2]

The point #1 is not defined on the current page but is referred to in \special{em:line … }.

1401: duplicate point number: #1  [2]

The point #1 has been defined in \special{em:point #1} more than once on the same page.

1402: bad line omitted: #1,#2  [2]

The line with the end points #1 and #2 cannot be drawn – for example, a horizontal line to be cut off horizontally cannot be drawn.

1403: missing moveto  [2]
A \special{em:lineto} appears without a preceding \special{em:moveto}.

21 Fatal error messages

When one of the fatal errors described below occurs, the program terminates. If a driver name is given in brackets, then the error message appears only with that driver. #1, #2 stand for variable fields which are filled in when the message is issued. All fatal error messages have the format

     *** Fatal error 2xxx:  ...

In the following descriptions only the number and ... are shown. If the error message

     *** Fatal error 2xxx:  [cannot open dvidrv.err]

appears, the file dvidrv.err, which contains the message text, could not be found (see section 9). The message can be looked up in this section by using the error number.

2000: out of memory

There is too little free memory available. Information is displayed showing how much memory is in use (see section 17). Sometimes this error can be got around with the option /fl-1.

2001: cannot open #1 file '#2'

The file #2 cannot be found, perhaps a device name (for instance, con) has been given.

2002: cannot create file '#1'

The file #1 cannot be opened; perhaps it exists and is readonly or the directory cannot hold any more files or the disk is full.

2003: cannot write to file '#1', disk full?

While writing to file #1 an error occurred, perhaps the disk is full.

2004: invalid scale factor

A font file or vf file is corrupt.

2005: cannot use XON/XOFF flow control

XON/XOFF flow control cannot be used: perhaps the port does not exist.

2006: serial interface time-out

XON/XOFF protocol is in use and an XOFF has been sent but 60 seconds have passed and no XON has been received.

2100: DVI file corrupted (undefined font)
2101: DVI file corrupted (no font selected)
2102: DVI file corrupted (DVI file ended prematurely)
2103: DVI file corrupted (position stack overflow)
2104: DVI file corrupted (position stack underflow)
2105: DVI file corrupted (bad postamble)
2106: DVI file corrupted (postamble not found)
2107: DVI file corrupted (illegal command in postamble)
2108: DVI file corrupted (bad preamble)
2109: DVI file corrupted (unexpected set_char command)
2110: DVI file corrupted (unexpected fnt_num command)
2111: DVI file corrupted (unexpected bop command)
2112: DVI file corrupted (unexpected eop command)
2113: DVI file corrupted (unexpected rule command)
2114: DVI file corrupted (unexpected motion command)
2116: DVI file corrupted (unexpected post_post command)
2117: DVI file corrupted (unexpected pre command)
2118: DVI file corrupted (invalid command)
2119: DVI file corrupted (back pointer does not point to bop)
2120: DVI file corrupted (more pages than claimed in postamble)

Bad dvi file.

2121: character number #1 out of range

An attempt has been made to set a character with a code which is out of range.

2131: erroneous \special{#1}: undefined keyword

In the \special{} command #1, em: is followed by an unrecognizable keyword.

2132: erroneous \special{#1}: bad parameter

In the \special{} command #1, an invalid parameter appears.

2200: font #1 not found in batch mode

If in batch mode a font cannot be found and the procedures described in section 11 have been exhausted, the program terminates with this message.

2201: font file error PK01
2202: font file error PK02
2203: font file error PK03
2204: font file error PK04

Bad pk font file.

2205: font #1 too big (#2 characters)

The font file #1 contains too many characters.

2206: character number #1 out of range

The current version of the drivers can only handle characters with codes from 0 to 255 (to 127 only in pxl files); a character with a code outside this range has been encountered in a font file.

2207: font file '#1' ended prematurely

Bad font file: too short.

2208: font file '#1' disappeared

The font file #1 cannot be opened although it was opened initially. Perhaps the disk has been changed.

2209: undefined character #1 in font #2

An attempt is being made to set a character which does not appear in the font file.

2210: character too big

A character is too big.

2211: character too big for reduction

A character is too big to be scaled.

2213: '#1' is not a font library file

A file argument to the /pl* option does not have the format of a valid font library file.

2214: use 'fontlib /2 /b#1 #2' to convert font library

The font library file #2 has the old format and can only be used after conversion by fontlib. When you convert it you should add the option /f\emtex\fontlist to the call. You can use the batch file oldfonts.bat or oldfonts.cmd to convert all your old font library files.

2300: graphics file '#1' (#2 DPI) not found in batch mode

When in batch mode a graphics file cannot be found and the procedures described under the /pg* option (page 10) have been exhausted, the program will terminate with this message.

2301: graphics file '#1' ended prematurely

Bad graphics file: too short.

2302: graphics image too big

The picture is too wide.

2303: graphics image too big for reduction

The picture is too wide to be scaled .

2400: syntax error in font substitution file l.#1

Line #1 in the font substitution file has an error in it.

2401: missing parameter file name  [dvidot]

dvidot must have the name of a parameter file as its first argument.

2402: parameter file '#1' not found  [dvidot]

dvidot cannot find the parameter file #1. The first argument must be the name of a parameter file.

2403: invalid parameter file (#1)  [dvidot]

The file given as the first argument to dvidot does not have the format of a parameter file. The number #1 shows the type of error found.

2410: invalid page dimensions

The argument to options /w# or /h# is not an acceptable page width or height.

2501: printer memory overflow  [dvihplj]

Calculations show that printer memory is now full. You must either break up the text into smaller parts or use the /oc1 option.

2502: too many fonts per page  [dvihplj]

More fonts are required on the page than the printer allows. You must either break up the text into smaller parts or use the /oc1 option. 2503: too many fonts [dvihplj] More fonts are required for the text than the printer allows. You must either break up the text into smaller parts or use the /oc1 option.

2511: page width exceeds #1px

The width given with the option /w# may not exceed #1 px.

2513: line too long

The expansion of the environment variable %name% in an argument line will cause the line to exceed 255 characters.

2514: cannot write to fontlib response file

While writing the file given as an argument to /pw* an error has occurred, perhaps the disk is full.

2520: graphics mode not supported  [dviscr]

There is no graphics adapter or the adapter is not supported by the driver.

2602: VF file corrupted (premature end of DVI commands)
2604: VF file corrupted (stack underflow)
2608: VF file corrupted (bad preamble)
2611: VF file corrupted (unexpected bop command)
2612: VF file corrupted (unexpected bop command)
2616: VF file corrupted (unexpected post_post command)
2617: VF file corrupted (unexpected pre command)
2618: VF file corrupted (invalid command)
2621: VF file corrupted (unexpected fnt_def command)
2622: VF file corrupted (unexpected post command)
2643: VF file corrupted (invalid command)

Bad vf file.

2603: VF file too complex: stack overflow

A virtual font can use another virtual font and this in turn can use a further virtual font and so on. The error arises when the nesting goes too deep or a character in a font further down the stack refers to a character already in the stack higher up (an infinite loop).

2640: input stack overflow

A virtual font can use another virtual font and this in turn can use a further virtual font and so on. The error arises when the nesting goes too deep or a character in a font further down the stack refers to a character already in the stack higher up (an infinite loop).

2641: input stack underflow

Bad dvi file.

2644: character number #1 out of range

The code of a character in a vf file is out of range.

2645: virtual font #1 too big (#2 characters)

The virtual font #1 contains too many characters.

22 Internal errors

An internal error terminates the program. All internal errors have the format

     *** Internal error 3xxx

or

     *** Internal error 3xxx:  ...

If you encounter such an error, please let the author know!

23 Reporting bugs

If you find an error in the drivers (or have a question) you should save all the files concerned (dvi, msp, pcx, pk, pxl, fli, vf, transcript files, parameter files) and send them to the author. Please also make a note of the error number and the driver calling sequence you have used (command line, environment variables, response files) and include this information as well.

Index

*, 4, 21 +, 4 :, 4

:=, 4

;, 4 =, 4 ?, 3, 21 @, 21 [], 1, 27 $r, 9, 10 $s, 9, 10 #, 4 $b, 21

aiw.dot, 6, 11, 12, 15 Apple Imagewriter, 15

batch file, 18 batch mode, 8 black on white, 13

C.ITOH 8510A, 16 change mode, 8 character spacing

uneven, 8 Citizen Swift 24, 17 colour, 15 command line, 3

too long, 10 command line error, 3 Computer Modern Fonts, 1 comx, 12 configuration file, 18

\count, 1

dimensions, 11, 15 directory

for dvi files, 10 for font files, 9 for graphics files, 10 for response files, 10 for virtual fonts, 9

disk space, 1 dlg files, 11

dmp130.dot, 15

dot files, 1–3, 6, 9–11, 15–17 dot matrix driver, 1 dpi, 20 dvi files, 1, 3, 10 dvidot, 1–3, 11

dvidrv.err, 18, 33, 35

dvihplj, 1, 12 dvimsp, 1–3, 13 dviscr, 1–3, 13 dvivik, 1–3, 13

EGA, 14

environment variable DVI4201, 16 DVI4202, 16 DVI4207L, 16 DVI4207M, 16 DVI4208L, 16 DVI4208M, 16 DVIAIW, 15 DVIDMP, 15 DVIDRV, 4 DVIDRVFONTS, 19 DVIDRVGRAPH, 19 DVIDRVINPUT, 19 DVIFX, 16 DVIITOH, 16 DVILQH, 17 DVILQL, 16 DVILQM, 16 DVIP6H, 17 DVIP6L, 17 DVIP6M, 17 PATH, 3, 18 EPSON FX series, 16 EPSON LQ series, 16, 17 EPSON RX series, 16 errorlevel, 32

first page, 5 fli files, 1, 9 font

deleting (dvihplj), 12 font ID (dvihplj), 12 invisible, 21, 22 loading, 8 name, 20 not found, 8 permanent (dvihplj), 12 size, 20 temporary (dvihplj), 12

font file adding to fli files, 11 name change, 8, 22 not found, 22

font files character height, 32 character width, 32 comments displayed, 5 Computer Modern, 1 directories, 9 extension, 1 filenames displayed, 5 font codes, 32 formats, 1 ID 87, 32 incompatibilities, 5 memory needed, 8 resolution, 9, 10 searching for, 19

font library files, see fli files font load limit, 8 font substitution file

description, 20 example, 20 name setting, 9 wildcards, 21

fontlib, 1, 9

write a response file, 11 fonts

options, 8 scaling, 8 transformation, 18

form length, 11 FS files, see font substitution files

fx100.dot, 16
fx80.dot, 16

Genoa SuperEGA, 14 graphics adapter, 2, 13 graphics file

bad, 32, 34, 37 generating, 2 height, 37 including, 2 name change, 8 not found, 32, 34, 37 scaling, 37 width, 37

graphics files

.msp, 10

directories, 19 directory, 10 extension, 10 height, 27 insertion, 27, 32 options, 30 remove margins, 13 resolution, 10 transformation, 18, 32 width, 13, 27

gray scales, 2, 13

help, 4, 38 help screen, 3 Hercules, 14 HGC, 14 home position, 13 HP DeskJet, 12 HP Vectra, 14

IBM Proprinter 4201, 16 4202, 16 4207, 16 4208, 16

                                           ibm4201.dot, 16
                                           ibm4202.dot, 16
                                           ibm4207l.dot, 16
                                           ibm4207m.dot, 16
                                           ibm4208l.dot, 16
                                           ibm4208m.dot, 16

information, 32

initialization file, 12, 13 ink jet printer, 1, 2 input files, see dvi files installation, 18 interactive mode, 8 ITOH 8510A, 16 itoh.dot, 6, 11, 12, 16

key function [figure], 23

[figure: ←], 23, 24

[figure: Ctrl]+[figure: ←], 23, 24

[figure: →], 23, 24

[figure: Ctrl]+[figure: →], 23, 24

[figure: ↑], 23, 24 [figure: ↓], 23, 24 [figure: End], 23, 24 [figure: Home], 23, 24

                                               [figure: PageDown], 23
                                               [figure: Ctrl]+[figure: PageDown], 23
                                               [figure: PageUp], 23
                                               [figure: Ctrl]+[figure: PageUp], 23

[figure: +], 25 [figure: -], 25 [figure: 1], 23 [figure: 2], 23 [figure: 3], 23 [figure: 4], 23 [figure: 6], 23 [figure: 7], 23 [figure: 8], 23 [figure: 9], 23 [figure: C], 23, 24

                                               [figure: Ctrl]+[figure: C], 25

[figure: D], 25 [figure: F], 23, 24 [figure: G], 24

[figure: Alt]+[figure: G], 25

[figure: H], 23 [figure: I], 25 [figure: K], 24 [figure: O], 24 [figure: P], 24 [figure: Q], 25 [figure: R], 25

[figure: Ctrl]+[figure: R], 25

[figure: S], 24

[figure: Alt]+[figure: S], 25

[figure: T], 25 [figure: U], 25

[figure: Ctrl]+[figure: U], 25

[figure: W], 25 key functions

[figure: Home], 13

Kyocera F-1010, 12

lack of memory, 35 landscape, see transformation laser printer, 1, 2 laser printers

compatibility, 12 last page, 5 line spacing

uneven, 8 lines, 27 lowercase, 11 lptx, 3, 18

lqh.dot, 17
lql.dot, 16
lqm.dot, 16
lqwh.dot, 17
lqwl.dot, 16
lqwm.dot, 16

magnification, 9 makedot, 2 margin

left, 6 left, justifying, 6 top, 6

margins

removed, 13

max_drift, 8

MDS Genius, 14 memory usage, 32 memory, out of, 8 message level, 5, 33 messages, 27 mirroring, see transformation msp files, 2, 3, 13

format, 13 multiple printing complete text, 6 sheets, 6

NEC P2200, 17 NEC P6, 17 NEC P7, 17

Olivetti M 24, 14 option

/+, 13 /-, 13 //, 10

/2*, 5
/?, 4
/??, 4
/b*, 5
/c?, 4
/cf#, 7
/ci#, 7
/cp#, 7
/cx#, 7
/cy#, 7
/e*, 5
/fb, 8
/fc, 8
/fd#, 8
/fi, 8
/fl#, 8

/fs#, 15–17

/fs#, 8
/h#, 6
/hf#, 11
/hx0/hy0, 13
/hx#, 13
/hy#, 13
/k#, 5
/l#, 6
/la#, 6
/m#, 9
/n#, 5
/nf#, 6
/np#, 6
/o*, 13
/o#, 13
/oa#, 13

/oc#, 12, 15

/od+, 12
/of#, 12
/oi+, 12
/oj+, 12
/ok+, 12
/om+, 13
/om#, 12
/or+, 15
/os+, 15

/ou*, 15
/ow+, 13
/ox+, 12
/p@*, 10
/pd*, 10

/pf*, 9, 15–17

/pg*, 10

/pi*, 12, 13

/pl*, 9
/po*, 11
/ps*, 9
/pt*, 11
/pv*, 9
/pw*, 11
/r#, 9

/rf#, 9, 10

/rg#, 10
/s+, 12
/s#, 15
/t#, 6
/ta#, 6
/tr#, 6
/u*, 11
/v#, 5
/v#, 33
/w#, 6
/z+, 6

options, 4

display, 3, 4 output file, 3, 11

printing, 18

p6h.dot, 17
p6l.dot, 17
p6m.dot, 17
p7h.dot, 17
p7l.dot, 17
p7m.dot, 17

page border

colour, 15 page height, 6 page length, 11 page margins, 2

display, 2 page number, 1, 5, 24, 27 page numbers, 5 page outline, 6 page position, 7 page positions, 7 page range, 5 pages

n-up printing, 7 number to a sheet, 7

Panasonic KX-P1124, 17 paper format, 6 paper width, 6 Paradise VGA, 14 parameter file, 4 parameter files, see dot files pcx files, 2, 3, 13 pipe, 3 pk files, 1, 32 port, 3 portrait, see transformation PRIMUS II, 14 print quality, 12

print.com, 18
print.exe, 18

printer initialization, 12 printer initialization file, 12, 13 printer memory, 2 printer memory size, 12

prn, 3

pxl files, 1, 32 PXL magnification, 20

repetition, 6 resolution, 9 response file, 3, 19 response files

directory, 10 return code, 32 reverse printing, 6 rotation, see transformation ruler

colour, 15

graduations, 25 moving, 24 option, 15 turn on, 25 units, 25

scaling, 15 screen, 2 screen previewer, 2, 3 search for text, 24 sheet

print last first, 6 selection, 5 skipping, 5

sheets multiple printing, 6 number of, 5 reverse printing, 6

shift index, 7

\special{em:graph}, 27
\special{em:line}, 27
\special{em:lineto}, 27, 28
\special{em:linewidth}, 27, 28
\special{em:message}, 27

\special{em:moveto}, 27, 28
\special{em:point}, 27

Stanford, 20 status line

colour, 15 option, 15 unit of, 15 unit of measure, 15

stdout, 3

Tandy DMP-130, 15

texput.dvi, 3

text

searching for, 24 text output, 27 time out, 3

printer, 18 transcript file, 11 transformation, 32

arrow keys, 24 description, 17 key function, 25

Tseng Labs EVA, 14 two-sided printing, 5

unit of measure, 11, 15 units, 11

verbosity, 5 vf files, 9 VGA, 14 Video Seven VGA, 14 Viking I, 1, 2 virtual font, 9

warning, 33 white on black, 13

XON/XOFF protocol, 12, 18, 35