Блок абзацев с отступом перед первым и после последнего

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

lmn1

Топикстартер
20 лет на форуме
Сообщения
610
Реакции
308
В статье часто нужно сделать такой список, где первый элемент списка отбит от основного текста, все элементы списка друг от друга не отбиты, последний элемент снова отбит от основного текста. Примерно так:

eskiz.jpg

Ничего умнее не придумал:
стиль1 - для первого элемента списка - с отступом ДО
стиль2 - для остальных элементов списка - без отступов
стиль3 - для последнего элемента списка - с отступом ПОСЛЕ
Применяю стиль1 для первого элемента и после него автоматом - стиль2 для всех остальных.
А вот стиль3 приходится применять отдельно. Не удобно.
Как исхитриться одним движением отбить сразу весь список от основного текста?
 
Ответ: Блок абзацев с отступом перед первым и после последнего

По отношению к трудозатратам напрашивается лишний Enter. До и после. Надо только отследить его в начале или конце полосы, если туда попадает. Причем это сделать легче, чем менять стили.
 
Ответ: Блок абзацев с отступом перед первым и после последнего

Довольно простой скрипт легко решит эту задачу.
 
Ответ: Блок абзацев с отступом перед первым и после последнего

Какой скрипт?
Нужно понимать, что частные задачи проще решить руками, даже без стилей.
Что, много таких абзацев?
 
Ответ: Блок абзацев с отступом перед первым и после последнего

Какой скрипт?
Нужно понимать, что частные задачи проще решить руками, даже без стилей.
Что, много таких абзацев?


надо так понимать, все списки ) достаточно стандартное требование.

Код:
myStory = app.selection[0].parentStory;

myParagraphs = myStory.paragraphs;
myEnd=0;

while (myEnd<(myParagraphs.length - 1))

{

if (myParagraphs.item(myEnd).appliedParagraphStyle.name == "ListBul" && myParagraphs.item(myEnd+1).appliedParagraphStyle.name  != "ListBul"
&& myParagraphs.item(myEnd+1).appliedParagraphStyle.name  != "ListBulLast") 
myParagraphs.item(myEnd).appliedParagraphStyle = "ListBulLast";

if (myParagraphs.item(myEnd).appliedParagraphStyle.name == "ListNum" 
&& myParagraphs.item(myEnd+1).appliedParagraphStyle.name  != "ListNum"
&& myParagraphs.item(myEnd+1).appliedParagraphStyle.name  != "ListNumLast"
) 
myParagraphs.item(myEnd).appliedParagraphStyle = "ListNumLast";

if (myParagraphs.item(myEnd).appliedParagraphStyle.name == "ListNumLast" && myParagraphs.item(myEnd+1).appliedParagraphStyle.name  == "ListNumLast")
myParagraphs.item(myEnd).appliedParagraphStyle = "ListNum";

if (myParagraphs.item(myEnd).appliedParagraphStyle.name == "ListBulLast" && myParagraphs.item(myEnd+1).appliedParagraphStyle.name  == "ListBulLast")
myParagraphs.item(myEnd).appliedParagraphStyle = "ListBul";


myEnd++;
}

это я себе делал когда-то, но здесь только последний стиль присваивается.
 
Ответ: Блок абзацев с отступом перед первым и после последнего

Списков таких действительно много. И так сделаны не только списки, но и примеры, примечания и еще чего-то.

По отношению к трудозатратам напрашивается лишний Enter
Оп! Настолько привык к тому, что два Enter подряд - это зло, что даже не задумывался о таком варианте. Браво! Теперь как и раньше автоматом присваиваю стиль1 и стиль2 плюс Enter после последнего элемента.

Но есть одно НО. Данный способ в данном случае подходит идеально, поскольку шрифт один и тот же, и текст привязан к grid . И эта схема была когда-то с боем выбита у редактора именно с целью упрощения верстки. А в оригинале редактор хотел (и так действительно красивее и нагляднее), чтобы текст списка отличался от основного и начертанием и размером. Примерно как здесь:
eskiz2.jpg
А раз отличается размером, то уже не привязывается к grid. И тогда при применении возникают визуально разные отступы до и после блока. Как в блоке ПРИМЕР 1. Приходится играть отступами, чтобы блок стал ровно по отношению к основному тексту как блок ПРИМЕР 2.
Вот бы уже и такой вариант придумать для общего развития. Ведь подобные элементы верстки, наверное, не редкость. Но это, наверное, точно только через скрипт.
 
Ответ: Блок абзацев с отступом перед первым и после последнего

А раз отличается размером, то уже не привязывается к grid.
Что, сильно отличается? (я как-то не заметил)
Привязать только первую строку - не вариант?
Проблемное место: последняя строка списка - первая основного текста, можно GREP-ом найти, и чего-нибудь с отступом сделать.
 
Статус
Закрыто для дальнейших ответов.