Ответ: %%Preps: error in application %%Trailer
ну братцы, это уже ни в какие ворота. Ни кварк ни индизайн к делу не относятся. Попробуем разобраться. Виндовый пс-драйвер пишет в трейлер любого постскрипта (даже из блокнота) след. код:
%%Trailer
%%BoundingBox: 0 0 595 842
%%DocumentNeededResources:
%%DocumentSuppliedResources:
%%+ procset Pscript_WinNT_ErrorHandler 5.0 0
%%+ procset Pscript_FatalError 5.0 0
%%+ procset Pscript_Win_Basic 5.0 0
%%+ procset Pscript_Win_Utils_L2 5.0 0
%%+ procset Pscript_Text 5.0 0
Pscript_WinNT_Incr dup /terminate get exec
ehsave restore
%%Pages: 1
(%%[LastPage]%%) =
%%EOF
Препс при склейке исходных пс-ов заключает этот код в "скобки" контекста stopped
{
%%Trailer
%%BoundingBox: 0 0 595 842
%%DocumentNeededResources:
%%DocumentSuppliedResources:
%%+ procset Pscript_WinNT_ErrorHandler 5.0 0
%%+ procset Pscript_FatalError 5.0 0
%%+ procset Pscript_Win_Basic 5.0 0
%%+ procset Pscript_Win_Utils_L2 5.0 0
%%+ procset Pscript_WinNT_Compat 5.0 0
Pscript_WinNT_Incr dup /terminate get exec
ehsave restore
%%Pages: 1
(%%[LastPage]%%) =
%%EOF
%
%
} stopped { /p_msghead p_exec (error in application %%Trailer) /p_msgtail p_exec } if
теперь, если мы возьмем исходный пс (который из блокнота) и поставим там такие же "скобки" например
{
..
} stopped {(error in application %%Trailer)==} if
то получим проблему в чистом виде, когда ни препс ни тем более кварк или индизайн не замешаны. Несложно определить, что виновата в появлении "ошибки" строка
ранее было определено, что
userdict begin /ehsave save def end
однако замена нашей проблемной строки на
исключает появление "ошибки"
Вот теперь, кто может объяснить
-- цель определения программой ehsave
-- цель кода ehsave restore, тем более в трейлере
-- почему в контексте stopped вызов ehsave приводит к ошибке, а вне его -- нет
-- ну и наконец зачем авторы препса заключают трейлер в stopped, что они хотели этим отловить