InDesign: стиль grep для перемещения отдельных слов i на следующую строку

Мне нужен стиль Grep в моих стилях абзацев в InDesign, который гарантирует, что буква iне может стоять одна в конце строки, а всегда перемещается в начало следующей строки. У меня есть клиент, который заставляет меня делать это вручную.

Почему только "я"? Но в любом случае. Просто укажите Find: (\d+)()( )(i) replace: $1~S$3 Но я бы посоветовал использовать скрипт или обычный ctr+f, так как он будет меняться в каждом экземпляре, а не только в стиле GREPed.
@SZCZERZOKŁY Я делаю это и с a/A , а иногда и со словами из двух букв. Крошечные слова в конце строки иногда могут выглядеть неаккуратно, и я полностью понимаю желание переместить их в начало следующей строки.
@LaurenIpsum Я использую скрипт под названием «UseMyTypo». Он может добавлять неразрывный пробел после заданных букв или слов, а также удалять лишние и т. д.

Ответы (3)

  • Создайте стиль символа и установите для него значение «Без разрыва».
  • Отредактируйте существующий стиль абзаца, перейдите на вкладку «Стиль GREP», выберите стиль символа, который вы создали выше, и введите его (?<=\s)i\W+в поле «В текст». (кредиты идут на @Tobias Kienzler, который предложил это)

без остановки

стиль grep

Хотя вам не нужен отдельный стиль для разных букв, вы можете использовать синтаксис (i|a|a,)для перечисления множества вариантов. Но хорошая вещь насчет изображений, многое прояснила эту цитату (хотя я проголосовала и проверила это до того, как вы опубликовали их для меня).
Верно, GREP можно улучшить, чтобы решать несколько проблем одновременно.
Если я правильно понимаю, его, вероятно, также можно было бы расширить для обработки любого однобуквенного слова чем-то вроде\s[A-Za-z]\s
@IMSoP лучше использовать \wкласс, чем [A-Za-z]в этом случае, он аккуратнее и включает в себя все символы слова
Так что, \s\w,?\sвероятно, следует работать с любым однобуквенным словом, с запятой или без нее?
@joojaa Да, я был консервативен, потому что я не знаю, какой вид регулярных выражений использует инструмент, а [...]классы символов более переносимы, но если \wони доступны, это определенно лучше. :)
Вы также можете использовать (?<=\s)i\W+(или (?<=\s)\w\W+). Функция lookbehind (?<=гарантирует, что предшествующий пробел остается неразрывным, иначе ваш стиль GREP может также стянуть предыдущий слог вниз. И \W+означает, по крайней мере, один символ, не являющийся словом, который также заботится о пунктуации.
@TobiasKienzler да, на самом деле так лучше.
Надеюсь, ОП следит за этими комментариями и может выбрать, какая строка лучше всего подходит для их документа. Я обязательно добавлю это в свою коллекцию строк Grep. Довольно полезные комментарии спасибо! :)
\s\w,?\s@TobiasKienzler Также используйте слово made перед прыжком вниз. (?<=\s)i\W+работал как шарм! Большое спасибо!
Большой. Если вы чувствуете, что это помогло, пожалуйста, найдите время, чтобы одобрить и проголосовать за ответ выше. Tnx
@Lucian Было бы разумно отредактировать ответ, чтобы он содержал то, что помогло Кристине, иначе принятие ответа будет вводить в заблуждение - и я не хочу публиковать еще один ответ только для того, чтобы украсть галочку;)
Кстати, хороший инструмент для проверки и понимания GREP-стилей (и RegEx в целом) — regex101.com.
Вы правы, и я отредактировал свой пост. Сначала я не решался сделать это, потому что долго думал о людях, посещающих это через поиск Google, и не был уверен, будут ли они искать базовую или расширенную строку. В любом случае ваша строка решает проблему лучше, поэтому я включил ее в свой пост. Спасибо еще раз!

Сначала создайте неразрывный стиль символов, как в ответе Люциана, затем попробуйте этот стиль Grep в стиле абзаца. Это сработало для меня.(?<=[!\?\.]\s)[^\s]{1,3}\s

Что такое «сломанный стиль персонажа»?
Извините, "без перерыва"
Я взял на себя смелость немного пояснить. Имейте в виду, что из-за голосов «за» и «против» ответы не всегда отображаются в одном и том же порядке. Если вы хотите узнать больше о модели Stack Exchange и, в частности, об этом сайте, ознакомьтесь с обзором и справочным центром . О, и добро пожаловать! :D

Это решение отлично работает: (?<=\s)\w{1,3}\W+только оно не будет работать, когда более одного слова из 1-3 букв находятся рядом друг с другом, в этом случае оно будет пропускать каждое второе слово. Я предлагаю добавить второй стиль grep, чтобы учесть это, (?<=\s)\w{1,3}\W+\w{1,3}\W+и я могу продолжать находить слова из 3,4,5... 1-3 букв вместе. Вероятно, для этого есть более умное СУХОЕ решение, но я не умный.