Вы можете легко вручную перераспределить интервал в несколько кликов:
Это будет перемещать объекты для регулировки интервала, так что это не идеально.
Кроме этого, ваш лучший вариант, вероятно, состоит в том, чтобы использовать какой-либо атрибут внешнего вида для создания смещения и выравнивания самих объектов без пробела...
Например, в Illustrator с эффектом Offset Path для заливки фигур:
После изменения размера (убедитесь, что функция «Масштабирование обводки и эффекты » отключена):
Вы можете сделать это с любым количеством атрибутов в зависимости от вашего варианта использования; обводка, путь смещения, интервал вставки в InDesign и т. д. Суть в том, чтобы сохранить интервал как атрибут отдельно от относительного позиционирования объектов.
Вот скрипт для Illustator, который сделает это с шириной, введенной пользователем. Для простоты я написал его только для изменения размера по горизонтали, и он работает только в том случае, если элементы находятся в группе, которая является первым выбором.
#target illustrator
var group = activeDocument.selection[0];
var toWidth = prompt ("Resize to width (pts):", Math.ceil (group.width));
if (group.typename == "GroupItem") {ResizePreserveMargins (group, toWidth);}
function ResizePreserveMargins (group, toWidth)
{ var count, i, items, item, margins=[], width=toWidth, margin, x=0;
items = SortLeftToRight (group.pageItems);
count = items.length;
for (i=0; i<count-1; i++)
{ item = items[i];
margin = items[i+1].left - item.left - item.width;
margins.push (margin);
width -= margin + item.width;
}
width -= items[count-1].width;
for (i=0; i<count; i++)
{ item = items[i];
if (i) {item.left = x + margins[i-1];}
item.width += width/count;
x = item.left + item.width;
}
}
function SortLeftToRight (items)
{ var lefts=[], sorts=[], i, j, count, count2, item;
count = items.length;
// Gather & sort item left values
for (i=0; i<count; i++) {lefts.push (items[i].left);}
lefts.sort (function (a,b) {return a-b;});
// Add left-to-right sorted items to final list
for (i=0; i<count; i++)
{ item = items[i];
count2 = lefts.length;
for (j=0; j<count2; j++)
{ if (items[i].left == lefts[j])
{ sorts.push (item);
lefts.splice (j,1);
break;
}
}
}
return sorts.reverse ();
}
паладинстудия