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曲線に変えることもできます。