Дроби

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

Edred

Участник
Топикстартер
Сообщения
20
Реакции
0
Помогите, пожалуйста.

Задача: найти в тексте все натуральные дроби (а именно: 1/4, 1/2, 1/3, 1/5, 2/3, 3/4, других нет) и преобразовать их использую subscript и superscript.

Строку для поиска я написал без проблем:
Код:
(?<!\d)(1|2|3)/(2|3|4|5)(?!\d)

А вот что делать с заменой? Через присвоение стилей можно только один стиль за раз присваивать, верно? То есть делать все дважды? Сначала сабскрипт, потом суперскрипт? Нельзя ли как-нибудь одной заменой обойтись, сразу присвоив и сабскрипт и суперскрипт...

И, кстати, сразу вопрос. Для поиска и замены по списку (или для sZam) какой параметр поиска указывать для того, чтобы у найденного изменять Position? Я так понимаю, что-то типа {AppliedPosition:"Subscript"} должно быть?

Спасибо.
 

Steve

Участник
Сообщения
227
Реакции
0
Ответ: GREP в InDesign. Что и как

да, интересная проблемка.
Вроде еще не сделали отдельные стилевые и пр. настройки к найденным выражениям ($1)..($9).
как раз баловался с такой штукой к CS2, работает но с опр. ограничениями и проект пока приостановил.


Cs3 нет, поэтому только как вариант... есть ведь замены на то, что в клипборде. Раз искомое заранее известно, скопировать правильный вариант (1/2), а потом замены искомого (1/2) на клипбоард. Работает?
За один раз похоже никак, либо писать нормальный скрипт по модификации найденного.
 

Edred

Участник
Топикстартер
Сообщения
20
Реакции
0
Ответ: GREP в InDesign. Что и как

Steve сказал(а):
есть ведь замены на то, что в клипборде. Раз искомое заранее известно, скопировать правильный вариант (1/2), а потом замены искомого (1/2) на клипбоард. Работает?

Этот вариант означает, что придется для каждой из шести возможных дробей делать поиск с заменой. Уж лучше я отдельно сабскрипт, отдельно суперскрипт обработаю. Это всего 2 поиска с заменой. Просто придется "развлечься" с занесением числителя или знаменателя в граничные условия с сохранением того, что числитель и знаменатель являются только одной из указанного набора цифр. То есть нужно чтобы 1/3 обрабатывал, а 11/32 нет. Но это возможно, не проблема.

Но хочется одним поиском с заменой ;)
 

Edred

Участник
Топикстартер
Сообщения
20
Реакции
0
Ответ: GREP в InDesign. Что и как

Решил я сделать свою задачу через два раздельных поиска с заменой и уперся...
Код:
(?<!\d)(1|2|3)(?=/(2|3|4|5))
Вот так прекрасно ищет числители (для преобразования в суперскрипт). Но граничное условие (то есть положительный поиск вперед, это еще так называется) из приведенного выше поиска так не обрабатывает, то есть найдет и 1/3 и 1/33. То есть надо ввести в конец правого граничного условия любой символ кроме цифры. В доке есть подобный вилдкард, выглядит он как "\Г", но что это за символ, я не понимаю. Русская буква Г? Не ест. Кстати, в меню поиска в GREP я подобного wildcard не нашел. Вариантом выглядит задание (\s|\.|,|~=|~e), но меня не покидает ощущение, что я что-то забыл...

И задание в качестве настройки замены
Код:
Position.superscript
sZam5 кушать не хочет...
 

Edred

Участник
Топикстартер
Сообщения
20
Реакции
0
Ответ: GREP в InDesign. Что и как

К сожалению, не могу исправить свой последний пост, но проблему с суперскриптом решил. В общем, на сегодняшний день решение выглядит так (может, кому пригодится):

Для числителя

Ищем:
Код:
(?<!\d)(1|2|3)(?=/(2|3|4|5)(\s|\.|,|~=|~e))
Заменяем:
Код:
$1
Параметры замены (в скриптах, в т. ч. sZam5):
Код:
position:Position.SUPERSCRIPT

Для знаменателя

Ищем:
Код:
(?<=(~=|\s)(1|2|3)/)(2|3|4|5)(?!\d)
Заменяем:
Код:
$3
Параметры замены (в скриптах, в т. ч. sZam5):
Код:
position:Position.SUBSCRIPT

Осталась только одна проблема. Хотелось бы использовать следующий вилдкард (см. аттач). Но не получается. Кто-нибудь что-нибудь может подсказать?
 

Вложения

  • i149.jpg
    i149.jpg
    76.4 КБ · Просм.: 1 013

Hotgart

15 лет на форуме
Сообщения
128
Реакции
0
Ответ: GREP в InDesign. Что и как

Edred сказал(а):
Хотелось бы использовать следующий вилдкард (см. аттач). Но не получается. Кто-нибудь что-нибудь может подсказать?

Это опечатка. Вместо \Г должно быть \D
 

lex_

12 лет на форуме
Сообщения
103
Реакции
1
Ответ: GREP в InDesign. Что и как

Hotgart сказал(а):
Это опечатка. Вместо \Г должно быть \D

Сколько же нервных клеток сдохло у меня из-за опечатки... :)
 
Статус
Закрыто для дальнейших ответов.