[ID CC-CC2022] Найти слово в начале строки

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

big bear

Топикстартер
15 лет на форуме
Сообщения
56
Реакции
14
Всем привет. Вопрос в том, что найти надо слово в начале строки, но в том случае, когда оно туда попало без моего участия, волей Индизайна. В смысле не начало ни фрейма, ни абзаца, не принудительный обрыв строки, середина абзаца, слово попало в начало строки просто потому что на предыдущей строке место закончилось. Соответственно там нет никаких дополнительных символов, маркеров, ничего.
Есть ли такая возможность? Заранее спасибо
 
Скриптом
 
Жаль. Но если у кого есть мысли, как это сделать, каким-нибудь неявным способом, буду благодарен за идеи. Спасибо
 
2_МВК_: Каким? Подробности можно?
 
Эх, это очень долго и сложно объяснять. Если коротко, то это булетированный список, но булетированным он сделан не стилем абзаца, а стилем символа. Назначается он греп стилем тем строчкам, где есть булет. И есть строчки, которые в ширину столбца не уложились, и вот им надо сделать отступ, а для этого их надо найти. Звучит малопонятно, но всему есть причина и варианты переназначить стиль по-другому не подходят
И да, это действительно относится к любой строке кроме первой. В итоге мне нужна любая такая строка с конкретным стилем символа.
 
Да понятно все
Нет грепом IMHO никак, однозначно скрипт писать придется
 
Если вам поможет поиск целой не первой строки, то это возможно без скрипта.
 
2MT: Можно подробнее? Отсчёт идёт от чего? В смысле, не первая строка от начала абзаца или от любого принудительного обрыва строки?
 
А вот я пока не понял самого принципа форматирования.

Левый отступ – это свойство абзаца, а не отдельной строки.

Найти строку от буллета до любого обрыва строки так:
PHP:
(?m)\x{2022}.+
 
Не первая строка от начала абзаца.
Можно в стиле задать Nested Line Style.
Например:
1-я -- Стиль 1
2-я -- Стиль 2
и т.д.
В этих символьных стилях надо задать какое-то отличие,
я обычно задаю цвет.
Ищем текст заданного цвета -- получаем строку.
 
  • Спасибо
Реакции: NNN5
2MT:Не, так не выйдет. Булет не первая строка абзаца. На работе не могу выложить картинку, чтобы пояснить, только вечером
2simideus: Булет мне как раз искать не нужно. Искать нужно следующую за булетом строку, если строка с булетом не поместилась целиком.
 
Про строку за буллетом я понял, но что вы потом будете с ней делать?

Если задать ей левый отступ, то он распространится на весь абзац.

Вы вручную можете добиться нужного результата? Тогда процесс можно автоматизировать, но я пока не понимаю что должно получиться в итоге.
 
Я так вангую хотят такое:
  • строка 1 строка 1 строка 1 строка 1 строка 1 строка 1 строка 1 строка 1 строка 1 строка 1 строка 1 строка 1 строка 1 строка 1 строка 1 строка 1 строка 1 строка 1 строка 1 строка 1 строка 1 строка
  • строка 2 строка 2 строка 2 строка 2 строка 2 строка 2 строка 2 строка 2 строка 2 строка 2 строка 2 строка 2 строка 2 строка 2 строка 2 строка 2 строка 2 строка 2 строка 2 строка 2 строка
 
О чем и речь, отступ задать нельзя, иначе и искать бы ничего не пришлось. В искомом месте надо поставить принудительный обрыв строки и табуляцию. Вечером выложу скрин с пояснением
 
2_MBK_: В смысле внешнего вида правильно. А речь о том, что настройками отступа это не задать, потому что и строки с отступом и строки без него, находятся в пределах одного абзаца и отличаются стилем символа
 
PHP:
#target indesign
var grepString = "^~8.+";
var addString = "\n\t";

// Возвращает массив [Object Text] всех пунктов списка
function getBulletStrings(regExp){
    app.findGrepPreferences.findWhat = regExp;
    return app.findGrep();
}
// Возвращает текстовый массив из вторых строк
function getSecondLines(arr) {
    var result = [];  
    for (var i=0; i < arr.length; i++) {
        if (arr[i].lines.length > 1) {result.push(arr[i].lines[1].contents)}
    }
    return result;
}
// Добавляет перевод строки и табуляцию в начало подстроки
function doGrep(arr, prefix) {
     for (var i=0; i < arr.length; i++) {
        app.findTextPreferences.findWhat = arr[i];
        app.changeTextPreferences.changeTo = prefix + arr[i];
        app.changeText();
    }
    return true;
}

var bulletArr = getBulletStrings(grepString);
var textsArr = getSecondLines(bulletArr);
doGrep(textsArr, addString);

alert("All Done!");
 
Статус
Закрыто для дальнейших ответов.