pptex(1) post processing of dvi files

Other Alias

dvipost, pplatex

## SYNOPSIS

dvipost [-debug] [-version] [-help] in out

pplatex [-debug] [-version] [-help] [LaTeX-Arguments]

pptex [-debug] [-version] [-help] [TeX-Arguments]

## DESCRIPTION

The command dvipost is a post procesor for dvi files, created by latex or tex. It is used for special modes, which normally needs the support of dvi drivers (such as dvips). With dvipost, this features could be implemented independent of the prefered driver. Currently, the post processor supports layout raster, change bars and overstrike mode.

This version of dvipost does not seek the dvi file, so it could be used as a filter. If - is given as file name, the command uses standard input or standard output respective. The command does not substitute a missing .dvi extension to the filename.

Because the command works with a temporary file and creates the ouput file only after successfull processing the input file, it is possible to use the same name for input and output.

If the command is renamed or linked to pplatex/pptex, it runs latex/tex and post processes the createt output. If the name of the dvi file could not be determined by the arguments to latex/tex (e.g. on an interactive run), the command processes all dvi files in the current directory with a modification time later than the run of latex/tex.

## Basics

If the filter is used in context of LaTeX, the style file dvipost.sty should be included in the LaTeX source.

The filter interpretes dvi extensions in the form of

dvipost: name [arg]
where arg depends on the command name and may be separated from name by = or space. All other extensions are not interpreted by dvipost and remain in the dvi file.

Such a dvipost command could be placed with the TeX primitive

\special{dvipost: cmd}
or the LaTeX macro (provided by dvipost.sty)
\dvipost{cmd}
in the dvi file.

Depending on the type of dvipost commands, the following kinds of arguments may be used:

length
is a floating point number followed by a unit specification. The following units are supportet by divipost: pt, in, cm and mm. If no argument is given or the unit specification is missing, the corresponding length is set to 0.
string
is an arbitrary string argument.
flag
is an integer argument, where a value different from 0 (usually 1) means true and a missing value or 0 means false.
depth
is an integer argument, where a value different from 0 (usually 1) increments a depth counter and a missing value or 0 decrements it.

## Change bars

All text printed with change mode level higher than 0 is marked with a change bar.

The following LaTeX macros modifies the change mode level:

\changestart
increments the change mode level.
\changeend
decrements the change mode level.
\textchanged{text}
increments the change mode level for text only.

The following dvipost commands are used in context of change bars:

cbmode depth
increments/decrements the change mode level. This command is used by the LaTeX macros.
cbrule length
determines the thickness of the change bar. The default value is 2pt.
cbsep length
sets the distance beetween page margin and change bar. The default value is 2pt.
cbexp length
sets the additional height and depth of a character in calculating the change bar positions. The default value is 6pt.
cbstart string
places the dvi extension string before printing characters in change mode.
cbend string
places the dvi extension string after printing characters in change mode.

The use of cbstart and cbend allows to set additional attributes to the marked text, depending on the dvi driver.

If dvips is used as dvi driver and the preamble of the LaTeX source contains

\usepackage{dvipost}
\dvipost{cbstart color push Blue}
\dvipost{cbend color pop}
the marked text is colored blue.

## Overstrike mode

All text printed with overstrike level higher than 0 is overstriked with a horizontal line.

The overstrike line is positioned at the mean height of every block of text not broken by vertical movements and font changes.

The following LaTeX macros modifies the overstrike level:

\overstrikeon
increments the overstrike level.
\overstrikeoff
decrements the overstrike level.
\overstrike{text}
increments the overstrike level for text only.

The following dvipost commands are used in context of overstrike mode:

osmode depth
increments/decrements the overstrike level. This command is used by the LaTeX macros.
osrule length
sets the thickness of the overstrike line to length. The default value is \fboxrule.
osstart string
places the dvi extension string before change of overstrike mode.
osend string
places the dvi extension string after change of overstrike mode.

The use of osstart and osend is similar to cbstart and cbend.

## Layout parameters

Layout parameters are transfered to the dvi file on loading the style file. If any changes are made to layout parameters, like \evensidemargin, the macro \dvipostlayout must be called to get the correct placement of change bars. Additional calls to \dvipostlayout are harmeless.

The following layout parameters are transfered to the dvi file: \hoffset, \voffset, \textwidth, \textheight, \oddsidemargin, \evensidemargin, \topmargin, \headheight, \headsep, \footskip, \marginparsep and \marginparwidth. Additional the flag twoside is set to 0 or 1, depending on the document style option twoside.

Instead of calling \dvipostlayout, partciucular values could be set. The command

\dvipost{evensidemargin=\the\evensidemargin}
transfers the actual setting of \evensidemargin to the dvi file.

The dvipost command allows the printing of the layout raster by setting layout to a length different to 0. The value of layout is used as the thickness of the raster lines.

For example: The command

\dvipost{layout=\the\fboxrule}
activates the layout raster and uses the same line thicknes as frame boxes.

## NOTES

The filter is primarly written for LaTeX. It could be used for plain TeX, but currently there is no assistance style file included in the distribution. Maybe somone would write one, I am not a plain TeX user.

The current state of change bar mode and overstrike mode must be committed do environments, which are placed on different locations than the current text. This is done in dvipost.sty by redefining \[email protected] and \[email protected]. This may conflict with other packages.

If the macro \footnoterule is redefined, it should start with the command \dvipost{footnote} for a correct handling of overstrike mode and change bars.