Вопрос по метке sigcol в Препсе

  • Автор темы Автор темы ARSS
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

ARSS

Участник
Топикстартер
Сообщения
21
Реакции
0
В препсе метка sigсol ставится regtangle с размерами и цветом который мы сами его задаем. А к примеру если я хочу чтобы потетрадная метка у меня была не прямоугольником с номером тетрадки, а например овалом вписаным в прямоуголник. Возможно ли такое ?
 
Ответ: Вопрос по метке sigcol в Препсе

Да хоть звездочку -- откройте ноутпадом файл sigcollc.eps в директории Marks и допишите свой постскрипт.
 
Ответ: Вопрос по метке sigcol в Препсе

Собственно, это я понял что нужно править, куда там именно в коде писать ?
 
Ответ: Вопрос по метке sigcol в Препсе

Как я понял из кода он берет значения длины и ширины из параметров которые мы задаем, и в соответветствии с шагом сдивгает метки, не могу понять как его заставить сдигать мою метку код которой я ему скажу не беря значения regtangle ? Пока получается вариант при котором стоит моя звездочка но никуда не двигается, либо звездочка плюс метка которая и раньше была т.е regtangle которая сдвигается ?
Кто то решал такую задачу ?
 
Ответ: Вопрос по метке sigcol в Препсе

Получается, что стандартная метка сдвигается, а самодельная нет?
 
Ответ: Вопрос по метке sigcol в Препсе

TO ch_alex, именно так.
 
Ответ: Вопрос по метке sigcol в Препсе

Во-первых, код самодельной метки должен находится в двух местах (для случаев когда высота больше или ширина больше), во-вторых, ее размеры тоже необходимо описывать с использованием переменных Препса и конструкций, связанных с описанием сдвига в зависимости от номера сигнатуры.
 
Ответ: Вопрос по метке sigcol в Препсе

там рисуется не прямоугольник, а линия. Чтобы нарисовать овал, в например sigcolla.eps цветной фрагмент
Код:
%wide or tall?
mark_height mark_width gt
{ preps_sig_num 1 sub cvi mark_height mark_step abs div cvi mod mark_step abs mul
  mark_step 0 lt{0 exch mark_height exch sub mark_step add mark_step 2 div sub moveto}
  {0 exch mark_step 2 div add moveto}ifelse
[COLOR=Magenta]  currentpoint mark_width 0 rlineto stroke moveto
  mark_backcolor mark_width 2 div 0 rmoveto[/COLOR]
  mark_step abs mark_width div 2 lt{mark_step abs
  preps_sig_num 9 gt{pop mark_step abs 1.2 div}if
  preps_sig_num 99 gt{pop mark_step abs 1.4 div}if
  preps_sig_num 999 gt{pop mark_step abs 1.6 div}if}{mark_width}ifelse
замените на
Код:
  mark_width 2 div 0 rmoveto
  gsave
  currentpoint translate
  mark_width mark_step scale
  0 0 0.5 0 360 arc
  fill  
  grestore
  mark_backcolor
аналогично для случая "wide"
 
Ответ: Вопрос по метке sigcol в Препсе

to 1998 спасибо за развернытй ответ, все понятно. Но вопрос в том, что там требуется не просто овал, а назвать это можно "нанайским рисунком", других слов просто не могу подобрать, может можно дать путь где лежит скажем xxx.eps в котором находится метка, вместо описания кода этой метки ?
 
Ответ: Вопрос по метке sigcol в Препсе

цветной фрагмент выше замените на
Код:
  save
  0 mark_step -2 div rmoveto
  currentpoint translate
  %scale
  %rotate
  %translate
  (star.eps) run
  restore
  mark_width 2 div 0 rmoveto mark_backcolor
(т.е. только первую строчку надо изменить)
(епс сохранять без превью и thumbnail, разумеется)
закомментированный scale надо раскоментировать и дописать, если масштаб изображения в файле eps отличается от требуемого, rotate -- если надо повернуть eps, translate -- если начало координат в epse не совпадает с левым нижним углом изображения (эти вещи вычисляются программно через анализ %%BoundingBox в епсе). Но, думаю, Вам этот общий случай (подробности которого см. в спецификации EPS) не нужен, метка нарисована в требуемый размер, ее LL угол имеет координаты 0,0. С указанием абсолютного пути могут быть проблемы, зависит от отношений интерпретатора и ОС, на которой он работает, например в данном случае у меня не получилось заставить рип-превьюер препса искать файл по абсолютному пути. Чтобы работало без указания пути, star.eps должен лежать в папке RIP препса (для превью) и в папке выводного рипа (ну или дистиллера). Т.к. препс конечно не включает сам епс в постскрипт, а также дает на него ссылку. Возможно проще включить текст епс в текст метки вместо строчки "(star.eps) run"

на самом деле в метке 4 случая, tall/wide и step > или < 0, для общего случая надо программировать все 4, выше пример для tall, step > 0
 
Статус
Закрыто для дальнейших ответов.