Предлагаю вниманию пользователей FBW от Alex Saveliev для тестирования (в случае отсутствия багов - для использования) скрипт по добавлению сноски. Первая ссылка для скачивания (по этому адресу буду выкладывать последнюю версию). Вторая ссылка для скачивания (здесь останется версия 1.00), 3 КБ. В FBE, кажется, тоже поддерживаются скрипты, но точно не знаю, т.к. начал сразу с FWB, так что в FBE не тестировал.
Как известно людям готовящим книги, иногда бывает нужно добавить сноску среди уже существующих, при этом требуется ручная работа, т.к. регэкспы не могут выполнять требуемые арифметические действия.
Что делает скрипт.
1. Добавляет body примечаний, если его нет.
2. Добавляет заголовок body примечаний, если его нет. Если есть - оставляет без изменений.
3. Изменяет ID секций примечаний.
4. Изменяет заголовки секций примечаний.
5. Меняет адреса как сносок, так и простых ссылок, которые указывают на секции примечаний.
6. Меняет текст сносок (у простых ссылок остается как было).
7. Добавляет новую секцию примечаний.
7. Добавляет новую сноску с правильными адресом и текстом.
Кроме этого ничего не делает (если не осталось каких-то ошибок программирования).
Чтобы установить скрипт (в случае FBW), нужно его .js-файл кинуть в подкаталог styles\имя стиля\cmd в папке редактора. Далее запустить (заново, если нужно) редактор и искать пункт «Добавление сноски» в меню «Команды», или как оно называется в вашем стиле.
Как использовать скрипт? Нужно стать на позицию в тексте, где должна появиться ссылка на примечание, и запустить скрипт (через то меню, о котором речь была выше). Остальное делается автоматически.
Детали алгоритма. Номер вставляемого примечания определяется по номеру примечания, расположенного перед вставляемым. Остальные не анализируются. Т.е. если вставляем после сноски, связанной с третьей секцией боди примечаний, новая сноска получит номер четыре. Тут я уже упомянул и еще один момент работы скрипта - новые адреса и тексты ссылок генерятся не по порядку их размещения в тексте, а вычисляются по тому, с какими секциями связаны ссылки. Другими словами, связь ссылки и секции сохраняется независимо от порядка их расположения. Это я считаю за фичу. Секции примечаний нумеруются с единицы для первой секции. Заголовки в секции примечаний добавляются независимо от исходного их наличия/отсутствия.
Ограничения. Скрипт не понимает вложенные (более одного уровня вложения) секции в боди примечаний. В случае, если встречаются секции второго или более уровня вложения, скрипт выдаст предупреждающее сообщение и прервет свою работу.
Настройки. В начале файла скрипта расположены определения констант, которые задают шаблоны для называния заголовков, для текста ссылок и пр. Соответственно при необходимости их можно поменять. Макрос %N задает номер секции примечания, остальное трактуется как просто текст. Скрипт в кодировке UTF-16 Little Endian. Скрипт должен содержать сигнатуру FFFE первыми байтами файла, иначе FBW не поймет его правильно, так что позаботьтесь об этом, если редактируете файл. Я редактировал в EditPadPro, перед каждым запуском скрипта запуская батник, добавляющий сигнатуру, т.к. EPP у меня ее не сохранял. В настройках же можно включить режим работы скрипта без добавления новой сноски, при этом остальная работа по упорядочению сносок будет произведена.
За предварительное тестирование и советы спасибо jurgennt'у. Он же побуждал меня к работе над скриптом.
Добавлено спустя 6 минут 45 секунд:
Re: Скрипт добавления сноски
По предложения jurgennt'а добавил в архив версию, где добавление сноски отключено (включена только обработка имеющихся сносок).
Update от 16.11.2009. Мои скрипты теперь лежат на сайте scripts.fictionbook.org .


