Ну, собственно, чо тут добавить? Пытаюсь вспомнить --- чо там Державин учудил, когда Пушкин ему на экзамене стихи свои прочитал? Расплакался и убежал из класса?
Моя попытка раскрасить картинку красивого эффекта не дала.
Но трюк этот с циклической заменой цвета стоит взять на заметку.
Код:
/DrawSegment { % beg end -> (draw segment)
moveto lineto stroke currentrgbcolor 3 1 roll setrgbcolor % NEW
} bind def
1 0 0 setrgbcolor .7 setlinewidth % NEW
% Koch:
[0.333333 0 0.5 0.288675 0.666667 0] 100 650 500 650 DrawFractal
...............................................
Ну, ошибку всего одну увидел ---
/IsBigSegment. Правильно, по-моему,
/IsSegmentLong.
Предложу несколько отладочных трюков.
Читать сообщение об ошибке из GSView/Message_Window бывает утомительно, хочется прграммку-"студию", с отладчиком, трассировкой, и проч прибамбасами. Такие есть, мне для какой-то шабашки заказчик как-то покупал за довольно много фунтов стерлингов. Давно не интересовался этим вопросом, сегодняшняя ситуация мне неизвестна.
Если у Вас установлен только GSView, попробуйте установить также полноценный GhostScript. Там 2 программки gswin32.exe и gswin32c.exe . Они дают некий консоль, в котором можно прямо набивать PS-код, и в другом окошке смотреть имаж.
В gswin32c.exe (c = console) консоль удобнее, позволяет стрелочками доставть предыдущие команды итд... Удобно, ежели, напимер, забыли параметры команды, пробовать всякие варианты с консоля.
Запустить с консоля некий готовый файл можно постсрипт-командой
run:
(string_with_your_file_name.eps) run
(C:/qqq/test.ps) runВот процедурка /Pstack, более удобная чем системный
pstack:
Код:
/Pstack {%
count [exch dup (items on stack:) 3 -1 roll % S0 S1 ... S_n-1 [N (txt) N
dup 3 add exch % S0 S1 ... S_n-1 [ i=n+3 n
{dup index dup [ eq {pop (mark)} if exch} repeat % replace -mark- by string "mark"
pop] == flush
} bind def
Вот процедурка, печатающая N последних элементов стека с комментарем. Типа
(XYZ:) 3 Args
выдаёт
[(XYZ:) 4.12334 9999 -1.0000]
Код:
/Args {% Title N
% "Title" is either /Name or (String)
[ 3 1 roll % a1 ... aN [ /T N
dup 2 add exch % a1 ... aN [ /T N+2 N
{dup index exch} repeat pop
] == flush
} bind def
Успехов.
Добавлено спустя 14 минут 14 секунд:Делать
stop, чтобы увидеть содержимое Message window, не обязательно.
Наставьте, где надо, этих отладочных печатей, вызовите Message window кнопкой М.
Простейшая отладочная печать ---
(Some text 1) ==
(можно добавить
flush) типа "это место прошли не сломавшись".
Добавлено спустя 30 минут 3 секунды:Структура моих eps файлов примерно такова:
Код:
%!PS-Adobe-2.0
%%BoundingBox: 0 0 560 168
(MyLibrary.ps) runlibfile % <--- собственно, это показываю
BeginFig (процедурка избиблиотеки)
[-2.3 -1.9 2.3 2.3] 100 PicBegin
/TI 12 PicFont
.6 PicLW
(x) (y) PicAxes
TractrixDict begin
0 1000 0.7 DrawTractrix
end
EndFig
В Латехе этот пролог (библиотека) задаётся вначала командой \special...
а команда
runlibfile в этом же прологе переопределяется в пустышку (runlibfile=pop).
Таким образом, когда я смотрю картинку в GSView, runlibfile работает как надо, а при интерпретации внутри латеха (100 таких картинок) уже не мешает.