# tpic specialsの拡張

dvioutのtpic specialsは、本来のtpicspecialsと比べて、以下のような拡張 が行なわれています。これらは、一般にdviout以外ではサポートされていないので、これらを使用して作成したdviファイルは、互換性の点で問題がある ことにご注意ください。
daコマンドの拡張
gnuplotなどで関数グラフを描くのに便利なように、da コマンドを拡張し、複数の引き数を取れるようにしました。
引き数は交互に実線部分、空白部分の長さをインチ単位の実数で指定します。この場合、破線はこの指定パターンのくり返しで描かれ、パスの各点を「連続に」通過します。すなわち、各点上に実線部分が乗るとは限りません。例えば
\special{da 0.1}% o___ ___ ___o___ ___
\special{da 0.1 0.1}% o___ ___ ___ o ___ ___
\special{da 0.1 0.01 0.01 0.01} % 一点鎖線
\special{da 0.1 0.01 0.01 0.01 0.01 0.01}% 二点鎖線
rt コマンドの増設
回転や拡大、鏡映などの線形変換を施した描画を行います。パラメータの個数により、意味が異なります。
rt p で、p は以下の整数です。
・1のときは現在の線形変換の状態をスタックに積み、-1のときはそれを（スタックが空なら、恒等変換を）戻します。スタックの深さは、16段までです。ページが変わるとスタックは空にリセットされます。
・2のとき、取り込み画像の描画を、下絵を消さずに色を混ぜるモードにし（-gow:-）、3のときは、下絵を消すモードにします（-gow:+）。また、4のときは、直前の rt 2 または、rt 3の実行前のモードに（-gow:を）戻します。
・rt 0 は、rt 0 0 0 と同じです。
rt h v で、カレントポイントを原点として、以後の全てのテキストおよびグラフィックス出力を、横方向に h倍、縦方向に v倍にスケール変換します。負の値も可能です。
rt x y f で、以後の全てのテキストおよびグラフィックス出力を(x,y)の回りに角度 f だけ回転させます。
他のtpicコマンドの場合と同様、x, y はミリインチ単位の整数、f は時計回りが正のラジアン単位。
例えば
\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}
rt h v w z で、以後の全てのテキストおよびグラフィックス出力を、カレントポイントを中心に次のように一次変換します。
(X, Y) -> (h*X + w*Y, z*X + v*Y)
上記の変換は、\special{rt 1 1}, \special{rt x y 0}, \special{rt 1 1 0 0} で、リセットされます（どれも同等です）。
実際は、これらとスタックのトップにあるもの（空の場合は、恒等変換）と合成された結果の変換となります。したがって、スタックが空なら、以前のものは無視され、置き換えとなります。たとえば
\special{rt 0 0 -.5236}%
\special{rt 1}%
\special{rt 1 2}%
text
\special{rt -1}%
\special{rt -1}%
は、「text」という文字列を、縦方向のみ2倍に拡大し、さらにそれを反時計回りに15度回転したものが出力されます。
注意: スタックの積み戻しは、LaTeX2eのgraphics packageのdvips用出力で、回転やスケール変換を行った場合も使われます。この場合は、graphics packageのこれらの変換のネスティングの状態が同じレベルで、積むのと戻すのが必ず対になるようにしてください。
Bzコマンドの増設
これは、sp コンドで描画する曲線をspline曲線からBezier曲線へ、あるいはその逆へ切り替えるコマンドです。
\special{Bz 1} で以降の \special{sp} をベジェに
\special{Bz 0} で以降の \special{sp} をスプラインに
となります。
デフォルトは、spline曲線を用いますが、オプション -tpic=1でBezier曲線に変えることもできます。