[ID CS4-CS6] Grep и знак сноски ~F

Александр Панарин

Участник
Топикстартер
Сообщения
205
Реакции
116
Всем добра!

Вопрос же вот какой: при попытке, например, поменять местами знак сноски и знак препинания посредством GREP знак сноски превращается в
Код:
<?>
, а текст сноски удаляется.

Find: ([\.\,]\s*)(~F)
ChangeTo: $2$1

Приблизительно так. Может кто знает почему так и как с этим бороться.

Заранее благодарствую!
 

NNN5

Модератор
15 лет на форуме
Сообщения
1 256
Реакции
1 012
Попробуйте в два прохода, применив Psitibe Look Behind.
Проход 1.
Find: (?<=\. ) (для простоты показываю только с точкой)
Replace: #$0. (Здесь решётка - маркер, которого в тексте больше нет; его за 2-й проход нужно удалить)
Проход 2.
Find: \. #
Replace: поле оставить пустым.
 
  • Спасибо
Реакции: LeonidB

similideus

12 лет на форуме
Сообщения
671
Реакции
349
Код:
#target indesign

app.findGrepPreferences.findWhat = "[.,](?=~F)";
var punctArr = app.activeDocument.findGrep();

for ( var k=0; k<punctArr.length; k++) {
    var idx = punctArr[k].index; // Индекс перемещаемого знака
    var fnRef = punctArr[k].parentStory.characters[idx+1]; // Ссылка на текущую сноску
    punctArr[k].move( LocationOptions.after, fnRef );
}
 

Александр Панарин

Участник
Топикстартер
Сообщения
205
Реакции
116
Код:
#target indesign

app.findGrepPreferences.findWhat = "[.,](?=~F)";
var punctArr = app.activeDocument.findGrep();

for ( var k=0; k<punctArr.length; k++) {
    var idx = punctArr[k].index; // Индекс перемещаемого знака
    var fnRef = punctArr[k].parentStory.characters[idx+1]; // Ссылка на текущую сноску
    punctArr[k].move( LocationOptions.after, fnRef );
}

Работает. Нижайший поклон.


Не по теме:
Пожалуй тоже пора осваивать скриптинг
 

similideus

12 лет на форуме
Сообщения
671
Реакции
349
Можно в два прохода заменой. Сперва продублировать пунктуацию после знака сноски. А затем снова найти неправильный вариант и удалить его:
Код:
find: (?<=([.,])~F)(\s)
change: $1$2

find: [.,](?=~F)
change: