[ID CC-CC2021] Параметры удержания абзацев

Статус
Закрыто для дальнейших ответов.

aleksasha

Топикстартер
15 лет на форуме
Сообщения
316
Реакции
5
Помогите реализовать такую хитрую схему. Есть много однотипных разворотов. На левой полосе начинается текст из 6 абзацев, справа через перетекание всегда(!) идет 7-й абзац. Если все абзацы слева не вместились, то не вместившиеся целиком абзацы переходят на правую полосу. Как это реализовать, чтобы при заливке текста больше никаких действий бы не было?
Spread.jpg
 

LeonidB

Их бин
10 лет на форуме
Сообщения
2 470
Реакции
1 529
Сделать стили с 1-го по 7-й (все со 2-го по 7-й - на основе 1-го). Задать для каждого стиля NextStyle - следующий по номеру (для 7-го - опять 1-й). Задать для каждого стиля "Удержать все строки абзаца", для 7-го стиля вдобавок к этому - "Начать в следующей колонке" (или фрейме, или на следующей странице). И затем:

upload_2017-4-26_11-44-17.png


Правда, при перетекании 6-го абзаца на следующую страницу (если он не уместился) следующий за ним 7-й абзац уйдёт на следующую дальше... Но это поправить, наверно, уже вручную...
 
Последнее редактирование:
  • Спасибо
Реакции: aleksasha

LeonidB

Их бин
10 лет на форуме
Сообщения
2 470
Реакции
1 529
Да, если 7-й абзац на правой полосе должен быть единственным, а за ним опять 1-й - на следующей левой полосе, то для 1-го абзаца задать также "Начать с новой полосы" (в стилях со 2-го по 6-й, сделанных на основе 1-го, убрать это условие в параметрах удержания).

Без-имени-3.jpg
 
Последнее редактирование:
  • Спасибо
Реакции: Tenebre и aleksasha

aleksasha

Топикстартер
15 лет на форуме
Сообщения
316
Реакции
5
Это немного не то. Дело не в удержании строк абзацев. Я наверное неясно выразился, простите. Абзацы только как пример. На месте абзацев могут быть ин-лайн объекты или таблицы. Но вот последовательность должна быть именно такой как я описал. При этом после заливки текста через Ctrl+D хотелось бы больше никаких телодвижений не делать. Боюсь, что это невыполнимая задача. Перетекания на следующий разворот мне не нужно. Для абстракции можем говорить про 2-страничный документ, имеющий всего 1 разворот.
 

aleksasha

Топикстартер
15 лет на форуме
Сообщения
316
Реакции
5
Решение красивое, не спорю. Но у меня все развороты автономные. Всего их 1300. И не хочется к каждому тексту вручную применять отдельную команду.
 

aporiy zenonov

12 лет на форуме
Сообщения
115
Реакции
60
Data merge? А первый стиль сделать стилем по умолчанию для документа. То самое и получится.
 

aleksasha

Топикстартер
15 лет на форуме
Сообщения
316
Реакции
5
Я всем благодарен за участие. Самая большая проблема в моем случае -
Если все абзацы слева не вместились, то не вместившиеся целиком абзацы переходят на правую полосу.
Они должны прилепиться к абзацу 7 на правую полосу. Но как вы верно заметили -
Но это поправить, наверно, уже вручную...
Т.е. пока проблема неразрешима.
 

aleksasha

Топикстартер
15 лет на форуме
Сообщения
316
Реакции
5
мне нужна какая-то алгоритмическая обработка на лету на границе двух последних абзацев типа
[[if TEXT.pagetype() == "left" then
TEXT.insertbreak("frame");
end]]
мне казалось, что стандартными средствами ID это возможно...
 

MT

15 лет на форуме
Сообщения
246
Реакции
93
Можно всем 1-м абзацам присвоить "С новой четной страницы",
а скриптом проверить 7-е абзацы. Если какой из них на четной странице,
поставить атрибут "С новой страницы".
 
  • Спасибо
Реакции: aleksasha

aporiy zenonov

12 лет на форуме
Сообщения
115
Реакции
60
Сначала подумал, что проблема еще и в том, что "все развороты автономные. Всего их 1300".
Тогда логично заливать текстовый блок на левую полосу и один абзац на правую полосу именно Data merge.
Я так понимаю, что под текстовый блок на левой полосе зарезервирована конкретная высота. Тогда логично сделать макет/шаблон таким образом: на правой полосе стоит один последний абзац. На левой полосе - блок фиксированный высоты под шесть абзацев с перетеканием во фрейм на правой полосе о-о-чень маленькой высоты, стоящий над вынесенным на правую полосу отдельным абзацем. У этого о-о-чень маленького фрейма задано обтекание. Стиль абзацев, естественно, с keep line. Если текст на левой полосе не убирается, он, естественно, поабзацно перетекает на правую полосу. А для контроля text overflow готовых скриптов немеряно. После заливки текста документ разово прогоняется таким скриптом, фрейм с перетеканием на правой полосе становится надлежащей высоты и, в силу установленного обтекания, сдвигает последний абзац вниз. Как-то так...
 
  • Спасибо
Реакции: aleksasha

aleksasha

Топикстартер
15 лет на форуме
Сообщения
316
Реакции
5
Можно всем 1-м абзацам присвоить "С новой четной страницы",
а скриптом проверить 7-е абзацы. Если какой из них на четной странице,
поставить атрибут "С новой страницы".
Наверное, самое простое и нужное мне решение. Спасибо. Собственно этот алгоритм я и привел как пример. Осталось реализовать.
 
Статус
Закрыто для дальнейших ответов.