ポストスクリプトでは、cvs * オペレータ *は数字を文字列に変換すると言われています。私はそれをどのように使うべきですか? 私が試した:追記:整数を文字列に変換する方法は?
100 100 moveto
3.14159 cvs show
または
100 100 moveto
3.14159 cvs string show
が、それは動作しませんでした。
助けが必要ですか?
ポストスクリプトでは、cvs * オペレータ *は数字を文字列に変換すると言われています。私はそれをどのように使うべきですか? 私が試した:追記:整数を文字列に変換する方法は?
100 100 moveto
3.14159 cvs show
または
100 100 moveto
3.14159 cvs string show
が、それは動作しませんでした。
助けが必要ですか?
お試し3.14159 20 string cvs show
string
は、サイズを必要とし、作成した文字列をスタックに残します。 cvs
には、変換された値を格納する値と文字列が必要です。
あなたは文字列変換の多くをやっている場合、1つの文字列を作成し、各変換でそれを再利用する方が効率的かもしれ:
/s 20 string def
3.14159 s cvs show
共通イディオムはテンプレートとして文字列リテラルを使用することです。
1.42857 ( ) cvs show
さらに大きな文字列のさまざまな部分文字列でcvsを表示することで、フォーマットされた出力を行うこともできます。
%.......
(2/7 = ) dup 6 7 getinterval
2.85714 exch cvs pop show
しかし、Ghostscript Style Guideはこれを禁じます。そして、私たちが持っている唯一のポストスクリプトスタイルガイドです。 (comp.lang.postscriptのA discussion about this)です。一般的には、必要なときに新鮮な文字列を割り当て、ガベージコレクタにその保持を許可させることをお勧めします。最後の手段として、本当に怠惰なハッカーが=string
をハイジャックします
4.28571 7 string cvs show
、内蔵された(もちろん、使用して、我々の友人cvs
)出力番号に=
と==
で使用される128バイトのバッファ。
5.71428 =string cvs show
そして、あなたそのような場合、あなたは=
の他のトリックとそれを組み合わせることができます。すぐに評価の名前。
{ 7.14285 //=string cvs show } % embed =string in this procedure
これは、余分なマイクロ秒を削減し、コードをインタラクティブに検査することを非常に困難にします。この手順で==
を呼び出すと、=string
を使用しているという事実は分かりません。他の文字列と同じように見えます。
a post by Helge Blischke in comp.lang.postscriptからもう1つのトリックです。これはゼロ埋め込み整数を得る簡単な方法です。
/bindec % <integer> bindec <string_of_length_6>
{
1000000 add 7 string cvs 1 6 getinterval
}bind def
「1000000 add 7 string cvs 1 6 getinterval」 - ニートトリック:-) –