Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Sclex Бывалый участник форума
Зарегистрирован: 24.09.2005 Сообщения: 416 Откуда: Минск
|
Добавлено: Ср Май 30, 2007 11:59 Заголовок сообщения: Скрипт добавления сноски (и другие) |
|
|
Предлагаю вниманию пользователей 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'а добавил в архив версию, где добавление сноски отключено (включена только обработка имеющихся сносок).
Последний раз редактировалось: Sclex (Ср Июн 06, 2007 17:36), всего редактировалось 1 раз |
|
Вернуться к началу |
|
|
Marina_Ch Постоянный участник форума
Зарегистрирован: 14.04.2006 Сообщения: 779 Откуда: Москва
|
Добавлено: Ср Май 30, 2007 12:27 Заголовок сообщения: |
|
|
Браво! Браво! Бис!!!
_________________ REB 1100, REB 1200, SE P910i |
|
Вернуться к началу |
|
|
Alex Saveliev Зрелый участник форума
Зарегистрирован: 29.01.2007 Сообщения: 144
|
Добавлено: Ср Май 30, 2007 12:42 Заголовок сообщения: |
|
|
Очень хорошо!
По поводу UTF-16 - скрипт можно писать и в обычной кодировке, но тогда придется немного помучаться с переводом русских сообщений в UTF-8. Сделать это можно в том же FBW |
|
Вернуться к началу |
|
|
Sclex Бывалый участник форума
Зарегистрирован: 24.09.2005 Сообщения: 416 Откуда: Минск
|
Добавлено: Ср Июн 06, 2007 17:32 Заголовок сообщения: |
|
|
По мотивам топика "FB Editor - скрипты, вопросы..." сделал скрипт, меняющий регистр букв в выделении на нижний или верхний. По рекомендации GribUser'а работаю через DOM. От vvv взял куски алгоритма и идею использовать в качестве маркеров границ выделения пустые ссылки (оказалось очень удобно так сделать, т.к. для пустых ссылок создаются узлы и тогда не надо анализировать текст). Спасибо за советы, они пригодились.
В отличие от тех скриптов, которые прилагаются к FBW, корректно обрабатывается любая структура документа, тэги при этом не трогаются.
Ссылки для скачивания: 1 (последняя версия) и 2 (версия 1.0), 1.4 Кб.
На случай, если кому неохота скачивать скрипт и открывать в редакторе, но посмотреть по-быстрому исходный код интересно, это можно сделать прямо из браузера здесь (с подсветкой синтаксиса).
Недостатки. Не обрабатываются entities (символы, задаваемые по коду). Выделение после работы скрипта не сохраняется. |
|
Вернуться к началу |
|
|
Marina_Ch Постоянный участник форума
Зарегистрирован: 14.04.2006 Сообщения: 779 Откуда: Москва
|
Добавлено: Ср Июн 06, 2007 19:35 Заголовок сообщения: |
|
|
Sclex, респект за скрипты! Отличная работа!
Можно хотелки по сноскам?
1. В БД и ФБД все равно сноски получаются возвратными. Тут Валера никак не хочет уступать. После обработки твоим скриптом после возвратности остается мусор
а) <p id="_ftnref1"> в тексте документа осталось, надо на <p> заменить
б) <a l:href="#_ftnref1">[1]</a> в самой сноске надо убрать
по всем номерам сносок, конечно
только там может быть не только ftnref но и endref и еще какие-то похожие варианты. И все это надо убирать нафиг, потому как даже сам БД не умеет корректно работать с им же сделанными фб2.
2. При добавлении новой сноски приходится прыгать в конец документа и обратно. Можно ли сделать чтобы при вставке сноски не просто создавало и нумеровало сноски, а еще и форму для ввода текста предлагало?
3. Хочется подхватывать и конвертить в сноски различные [], {} и т.п. варианты - иногда они полностью пропущены, а иногда быстрее по тексту пробежаться и обрамить сноски [] - а потом сконвертить. Т.е. представь - есть фб2, вычитанный и более-менее отформатированный. Но сноски там оформлены [] - почему-то не сконвертили. Таких файлов в либах есть немало.
Не ругайся на то, что желаний так много - мечты же... Хотелки... Просилки... _________________ REB 1100, REB 1200, SE P910i |
|
Вернуться к началу |
|
|
Sclex Бывалый участник форума
Зарегистрирован: 24.09.2005 Сообщения: 416 Откуда: Минск
|
Добавлено: Чт Июн 07, 2007 1:38 Заголовок сообщения: |
|
|
Marina_ch писал(а): | 2. При добавлении новой сноски приходится прыгать в конец документа и обратно. Можно ли сделать чтобы при вставке сноски не просто создавало и нумеровало сноски, а еще и форму для ввода текста предлагало? |
Это сделал. Добавление сноски v1.1: ссылка 1, ссылка 2, 4 КБ.
То есть теперь в архиве три файла, тебе нужен "Добавление сноски со вводом". Диалог и строка ввода - какие есть, от скрипта не зависит, в смысле что шрифт там не поменяешь.
Есть поддержка тэгов в этой строке ввода. Для курсива <i>...</i> <em>...</em> <emphasis>...</emphasis> . Для жирного <b>...</b> <strong>...<strong> . Можно вводить несколько абзацев, разделив их <br> . Хотел сделать \n , но js по регэкспу \\n не находит \n почему-то, в отличие от EditPadPro. Сделал мини-валидацию вводимого, так что если что-то некорректно, ошибка не попадет в документ, а будет предложено повторить набор.
Marina_ch писал(а): | Не ругайся на то, что желаний так много - мечты же... Хотелки... Просилки... :wink: |
Предлагать можно. |
|
Вернуться к началу |
|
|
Marina_Ch Постоянный участник форума
Зарегистрирован: 14.04.2006 Сообщения: 779 Откуда: Москва
|
Добавлено: Чт Июн 07, 2007 7:09 Заголовок сообщения: |
|
|
Спасибо! Просто отличные новости с утра
Добавлено спустя 1 час 58 минут 1 секунду:
Sclex писал(а): | Диалог и строка ввода - какие есть, от скрипта не зависит, в смысле что шрифт там не поменяешь. |
Шрифт бог с ним.А вот одна строчка - тоже не поменять никак? Видно плоховато
Хотя в любом случае абсолютный респект - так стало совсем хорошо и удобно! _________________ REB 1100, REB 1200, SE P910i |
|
Вернуться к началу |
|
|
Consul Администратор библиотеки FictionBook.Lib
Зарегистрирован: 27.02.2005 Сообщения: 674 Откуда: Красноярск
|
Добавлено: Чт Июн 07, 2007 9:24 Заголовок сообщения: |
|
|
Marina_Ch писал(а): | так стало совсем хорошо и удобно! |
Полностью присоединяюсь.
Огромное спасибо |
|
Вернуться к началу |
|
|
Sclex Бывалый участник форума
Зарегистрирован: 24.09.2005 Сообщения: 416 Откуда: Минск
|
Добавлено: Чт Июн 07, 2007 18:00 Заголовок сообщения: |
|
|
Marina_Ch писал(а): | Шрифт бог с ним.А вот одна строчка - тоже не поменять никак? Видно плоховато :( |
Я не знаю способа изменить это. |
|
Вернуться к началу |
|
|
Marina_Ch Постоянный участник форума
Зарегистрирован: 14.04.2006 Сообщения: 779 Откуда: Москва
|
Добавлено: Чт Июн 07, 2007 18:10 Заголовок сообщения: |
|
|
Ну и бог с ним! Все равно изумительно удобно!!!
А по другим моим хотелкам что-нить скажешь?
Типа - будут, не будут, нафиг или еще чего? _________________ REB 1100, REB 1200, SE P910i |
|
Вернуться к началу |
|
|
Sclex Бывалый участник форума
Зарегистрирован: 24.09.2005 Сообщения: 416 Откуда: Минск
|
Добавлено: Пт Июн 08, 2007 0:14 Заголовок сообщения: |
|
|
Добавление сноски v1.2. Ссылка 1. Ссылка 2. 4326 б.
Теперь в архиве четыре скрипта. Новый называется "Добавление сноски с переходом". Его особенность в том, что после добавления сноски происходит смещение фокуса видимости в редакторе на секцию новосозданного примечания, т.е. сразу можно набирать текст примечания и видеть его со всем форматированием. Сообщение "обработка закончена" не выводится. jurgennt считает (насчет фокуса), это удобно, может и еще кто-то предпочтет такой способ. Напомню, в FBW вернуться из секции примечания обратно к сссылке сноски можно нажатием Ctrl-Backspace.
И спасибо Alex Saveliev за совет перейти на UTF-8. Так и сделал, что избавило от нужды добавлять сигнатуру в начало – теперь после сохранения файла сразу запуск.
Добавлено спустя 1 час 21 минуту 30 секунд:
Marina_Ch писал(а): | А по другим моим хотелкам что-нить скажешь? |
Не исключаю, но и не обещаю. Если что-нибудь сделаю, сообщу в этом же топике. |
|
Вернуться к началу |
|
|
Marina_Ch Постоянный участник форума
Зарегистрирован: 14.04.2006 Сообщения: 779 Откуда: Москва
|
Добавлено: Пт Июн 08, 2007 9:42 Заголовок сообщения: |
|
|
Sclex писал(а): | может и еще кто-то предпочтет такой способ |
Спасибо! Лично мне больше нравится окошко, но если тело сноски большое, то прыжок предпочтительнее.
Sclex писал(а): | Не исключаю, но и не обещаю. |
Спасибо. Главное - не отказал
Нам спешить некуда _________________ REB 1100, REB 1200, SE P910i |
|
Вернуться к началу |
|
|
Sclex Бывалый участник форума
Зарегистрирован: 24.09.2005 Сообщения: 416 Откуда: Минск
|
Добавлено: Пт Июн 08, 2007 10:47 Заголовок сообщения: |
|
|
Добавление сноски v1.3. Ссылка 1. Ссылка 2. 4333 б.
В предыдущей версии в случае, когда скрипту приходилось создать боди нотесов, заголовок его выглядел как "+strconst5+" (включая кавычки), исправлено.
Добавлено спустя 1 час 22 минуты 56 секунд:
Смена регистра v1.1. Ссылка 1. Ссылка 2. 1394 Б.
Теперь корректно обрабатывается случай, когда начало или конец выделения приходится внутри ссылки. В предыдущей версии получалось, ссылка в такой ситуации разбивалась на части. Предсказуемый результат вставления ссылки внутрь ссылки. Изменил маркер блока с <A id=BlockStart></A> на <B id=BlockStart></B> . |
|
Вернуться к началу |
|
|
Faiber Зрелый участник форума
Зарегистрирован: 24.12.2005 Сообщения: 127 Откуда: г. Ростов-на-Дону
|
Добавлено: Пт Июн 08, 2007 22:41 Заголовок сообщения: |
|
|
Sclex
Спасибо большое за скрипты, ты даже не представляешь как стало жить легче. _________________ Все о чтении электронных книг |
|
Вернуться к началу |
|
|
Sclex Бывалый участник форума
Зарегистрирован: 24.09.2005 Сообщения: 416 Откуда: Минск
|
Добавлено: Пт Июн 08, 2007 22:45 Заголовок сообщения: |
|
|
Marina_Ch писал(а): | 1. В БД и ФБД все равно сноски получаются возвратными. Тут Валера никак не хочет уступать. После обработки твоим скриптом после возвратности остается мусор :cry: |
Скрипт "Удаление возвратных сносок v.1.0". Ссылка 1. Ссылка 2. 1367 Б.
Удаляет те ссылки, которые находятся в боди нотесов и ссылаются на абзац в любом боди, кроме боди нотесов. Также удаляем id абзацев, на которые ссылаются удаляемые ссылки. Кроме тех (абзацев), на которые есть ссылки из боди не нотесов (у них id оставляем). В версии "(неполная проверка)" последняя проверка отключена, т.е. удаляем id у всех абзацев, связанных с удаляемыми ссылками. Версию с неполной проверкой можно использовать на файлах, о которых точно известно, что нет ссылок на абзац, кроме возвратных. Она работает быстрее полной версии (разница в скорости тем заметней, чем больше ссылок). |
|
Вернуться к началу |
|
|
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
Powered by phpBB © 2001, 2005 phpBB Group
|