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

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

aleksasha

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

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


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

Без-имени-3.jpg
 
Последнее редактирование:
  • Спасибо
Реакции: Tenebre и aleksasha
Это немного не то. Дело не в удержании строк абзацев. Я наверное неясно выразился, простите. Абзацы только как пример. На месте абзацев могут быть ин-лайн объекты или таблицы. Но вот последовательность должна быть именно такой как я описал. При этом после заливки текста через Ctrl+D хотелось бы больше никаких телодвижений не делать. Боюсь, что это невыполнимая задача. Перетекания на следующий разворот мне не нужно. Для абстракции можем говорить про 2-страничный документ, имеющий всего 1 разворот.
 
Решение красивое, не спорю. Но у меня все развороты автономные. Всего их 1300. И не хочется к каждому тексту вручную применять отдельную команду.
 
Data merge? А первый стиль сделать стилем по умолчанию для документа. То самое и получится.
 
Я всем благодарен за участие. Самая большая проблема в моем случае -
Если все абзацы слева не вместились, то не вместившиеся целиком абзацы переходят на правую полосу.
Они должны прилепиться к абзацу 7 на правую полосу. Но как вы верно заметили -
Но это поправить, наверно, уже вручную...
Т.е. пока проблема неразрешима.
 
мне нужна какая-то алгоритмическая обработка на лету на границе двух последних абзацев типа
[[if TEXT.pagetype() == "left" then
TEXT.insertbreak("frame");
end]]
мне казалось, что стандартными средствами ID это возможно...
 
Можно всем 1-м абзацам присвоить "С новой четной страницы",
а скриптом проверить 7-е абзацы. Если какой из них на четной странице,
поставить атрибут "С новой страницы".
 
  • Спасибо
Реакции: aleksasha
Сначала подумал, что проблема еще и в том, что "все развороты автономные. Всего их 1300".
Тогда логично заливать текстовый блок на левую полосу и один абзац на правую полосу именно Data merge.
Я так понимаю, что под текстовый блок на левой полосе зарезервирована конкретная высота. Тогда логично сделать макет/шаблон таким образом: на правой полосе стоит один последний абзац. На левой полосе - блок фиксированный высоты под шесть абзацев с перетеканием во фрейм на правой полосе о-о-чень маленькой высоты, стоящий над вынесенным на правую полосу отдельным абзацем. У этого о-о-чень маленького фрейма задано обтекание. Стиль абзацев, естественно, с keep line. Если текст на левой полосе не убирается, он, естественно, поабзацно перетекает на правую полосу. А для контроля text overflow готовых скриптов немеряно. После заливки текста документ разово прогоняется таким скриптом, фрейм с перетеканием на правой полосе становится надлежащей высоты и, в силу установленного обтекания, сдвигает последний абзац вниз. Как-то так...
 
  • Спасибо
Реакции: aleksasha
Можно всем 1-м абзацам присвоить "С новой четной страницы",
а скриптом проверить 7-е абзацы. Если какой из них на четной странице,
поставить атрибут "С новой страницы".
Наверное, самое простое и нужное мне решение. Спасибо. Собственно этот алгоритм я и привел как пример. Осталось реализовать.
 
Статус
Закрыто для дальнейших ответов.