# tpic specials extensions

The dviout tpic specials has the following extensions over the original tpic specials. Be aware that since they are only supported by dviout, dvi files containing them have compatibility problems.
da command extension
To make it useful in drawing graphs with tools such as gnuplot, the da command is extended and takes multiple arguments.
The arguments alternately specify the lengths of the solid lines and the spaces in real numbers in units of inches. Thus, a dashed line is drawn by repeating the specified pattern. Each point in the path is passed through successively. In other words, each point is not limited to being on a solid line portion. For example,
\special{da 0.1}% o___ ___ ___o___ ___
\special{da 0.1 0.1}% o___ ___ ___ o ___ ___
\special{da 0.1 0.01 0.01 0.01} % one-point chain line
\special{da 0.1 0.01 0.01 0.01 0.01 0.01}% two-point chain line
rt command extension
This command has several functions relating to rotation, enlargement, and inversion. It takes variable number of parameters.
When used as rt p where p is an integer, the command has the following meanings:
- If p = 1, it puts the current state of linear transformation on top of the stack. If p is -1, it pops and returns the transformation from top of the stack, or returns the identity transformation when the stack is empty. The stack can grow as deep as 16 levels. The stack gets emptied at the start of each page.
- If p is 2, included images are drawn without erasing whatever is currently on the canvas (-gow:-). If p is 3, images are drawn after erasing the regions (-gow:+). If p is 4, the graphics overwrite mode (-gow:) is restored to the one just before executing the previous rt 2 or rt 3.
- rt 0 is the same as rt 0 0 0.
The command rt h v scales all subsequent text and graphic outputs horizontally by a factor of h and vertically by v around the current point. The scaling factors may be negative.
All of the text and graphics output after rt x y f are only rotated by the angle f about (x, y).
As with other tpic commands, x and y are integers in units of milli-inches, and f is in positive radian units in the clockwise rotation.
The rotation is not relative, but is always with respect to the absolute coordinates of the bitmap. Setting f=0 resets.
For example,
\begin{picture}(500,500)
\put(100,250){special{rt 0 0 4.71239}\makebox(0,0){Leftside}%
\special{rt 0 0 0>>>>{<<<<
\put(250,250){special{rt 0 0 3.14159}\makebox(0,0){Upsidedown}%
\special{rt 0 0 0>>>>{<<<<
\put(400,250){special{rt 0 0 1.57080}\makebox(0,0){Rightside}%
\special{rt 0 0 0>>>>{<<<<
\end{picture}
All the text and graphics output after the command rt h v w z are linearly transformed around the current point by
(X,Y) -> (h*X + w*Y, z*X + v*Y)
The above transformations are similarly resumed by \special{rt 1 1}, \special{rt x y 0} or \special{rt 1 1 0 0}.
The transformation changes into the composition with the transformation at the top of the stack (which is the identity if there exist nothing there). This implies that the transformation is replaced by the defined one if the stack is empty. For example,
\special{rt 0 0 -.5236}%
\special{rt 1}%
\special{rt 1 2}%
text
\special{rt -1}%
\special{rt -1}%
means that the string "text" is scaled by 2 only vertically and then the result is rotated by the angle of 15 degree in the counter clockwise direction.
Bz command extension
This command switches from a spline curve to a Bezier curve or the reverse for drawing curves with the sp command.
The \special{sp} after \special{Bz 1} switches to Bezier.
The \special{sp} after \special{Bz 0} switches to spline.
The default is to use spline curves. The -tpic=1 option can switch to Bezier curves.