В postcript говорится, что оператор cvs * преобразует число в строку. Как его использовать? Я пробовал:
100 100 moveto
3.14159 cvs show
или
100 100 moveto
3.14159 cvs string show
но это не сработало.
Любая помощь?
В postcript говорится, что оператор cvs * преобразует число в строку. Как его использовать? Я пробовал:
100 100 moveto
3.14159 cvs show
или
100 100 moveto
3.14159 cvs string show
но это не сработало.
Любая помощь?
Попробуйте 3.14159 20 string cvs show
.
string
требуется размер и оставляет созданную строку в стеке. cvs
требуется значение и строка для хранения преобразованного значения.
Если вы делаете много преобразований строк, может быть более эффективным создание одной строки и ее повторное использование в каждом преобразовании:
/s 20 string def
3.14159 s cvs show
Общей идиомой является использование литеральной строки в качестве шаблона.
1.42857 ( ) cvs show
Вы даже можете сделать форматированный вывод, представив cvs с различными подстроками большей строки.
%0123456.......
(2/7 = ) dup 6 7 getinterval
2.85714 exch cvs pop show
Но Руководство по стилю Ghostscript запрещает это. И это в значительной степени единственный опубликованный Руководство по стилю Postscript. (Обсуждение об этом в comp.lang.postscript.) Поэтому общая рекомендация состоит в том, чтобы выделить новую строку, когда вам это нужно, и позволить мусору коллекционер зарабатывает.
4.28571 7 string cvs show
В крайнем случае, действительно ленивый хакер захватит =string
, встроенный 128-байтовый буфер, используемый =
и ==
для вывода чисел (используя, конечно, нашего друга cvs
).
5.71428 =string cvs show
И если вам это нравится, вы можете комбинировать его с =
другим трюком: сразу оцененные имена.
{ 7.14285 //=string cvs show } % embed =string in this procedure
Это позволяет избавиться от лишней микросекунды и значительно усложнить процесс проверки кода. Вызов ==
в этой процедуре не покажет, что вы используете =string
; он выглядит так же, как и любая другая строка.
Еще один трюк для сумки, от сообщение от Helge Blischke в comp.lang.postscript. Это простой способ получить нулевое целое число.
/bindec % <integer> bindec <string_of_length_6>
{
1000000 add 7 string cvs 1 6 getinterval
}bind def