Скрипт "Создать сноски или комментарии из абзацев, помеченных макркерами"

40 views
Skip to first unread message

Sclex

unread,
Jun 23, 2022, 6:05:29 AMJun 23
to Fiction Book Editor
Я сделал новый скрипт. Называется "Создать сноски или комментарии из абзацев, помеченных маркерами".

Скрипт позволяет задать строкой или регэкспом маркер знака сноски, и задать строкой или регэкспом маркер знака первого абзаца текста сноски. И скрипт сам найдет по маркерам знаки сноски и текст сносок. И создаст сноски или комментарии.

Текущая версия скрипта - 2.1. Снимок диалога скрипта - прилагаю.


Прошу тестировать.

Clipboard25.png

Sclex

unread,
Jun 23, 2022, 6:08:41 AMJun 23
to Fiction Book Editor
Добавлю, что js-файл скрипта положен в папку "02_Примечания".

четверг, 23 июня 2022 г. в 13:05:29 UTC+3, Sclex:

e-paper.ru

unread,
Jun 23, 2022, 8:28:28 AMJun 23
to fiction-b...@googlegroups.com
Скрипт не передает тексты сносок в сам боди сносок, если маркером сноски является звездочка, варианты типа [zz] (галки регэкспов выключены).
Абзацы для сносок в боди сносок создаются, но они пустые.
"Предустановленные" варианты маркеров работают нормально..

чт, 23 июн. 2022 г. в 13:05, Sclex <scl...@gmail.com>:
--
Вы получили это сообщение, поскольку подписаны на группу "Fiction Book Editor".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес fiction-book-ed...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/fiction-book-editor/de7129a6-3371-4d28-932e-aacb8528d230n%40googlegroups.com.

Sclex

unread,
Jun 23, 2022, 8:51:06 AMJun 23
to Fiction Book Editor

e-paper.ru

unread,
Jun 23, 2022, 9:47:30 AMJun 23
to fiction-b...@googlegroups.com
Спасибо! Теперь "простые" сноски создаются нормально.


Столкнулся вот с чем:

Ставлю всего 4 маркера звездочками (для 2 сносок).


Абзац с первым маркером*** сноски
...
...
***Абзац с ответной частью сноски №1
...
Абзац со вторым маркером*** сноски
...
...
***Абзац с ответной частью сноски №2

В итоге должно создаться 2 сноски, но на таком варианте скрипт сбоит.


Если по тексту проставить 3 звездочки ***, а скрипту сказать, что маркер - 1 звездочка *, то скрипт ругается на несовпадение кол-ва маркеров.
Если по тексту проставить 3 звездочки ***, а скрипту сказать, что маркер - 2 звездочки ** - то все ок.

Если по тексту проставить 2 звездочки **, а скрипту сказать, что маркер - 1 звездочка *, то скрипт ставит по 2 маркера сносок подряд, в боди сносок кидает 6 сносок - 2 полноценные сноски с текстами и  4 сноски с undefined.

Мне представляется, что скрипт должен брать маркеры только прилегающие к тексту, и не считать маркерами остальные соседние символы.
Т.е. берем "не в начале абзаца" первый встречный маркер, возле текста, знака препинания или пробела и все. Если к "маркеру" прилип еще маркер, то это вовсе не маркер, а "обычный текст абзаца" и эти не-маркеры надо считать обычным текстом.

Т.е. нормальный маркер сноски не может напрямую соседствовать с маркером, а только с текстом, цифрой, пробелом, препинанием, скобками. (учитывая всяческие тэги форматирования).



чт, 23 июн. 2022 г. в 15:51, Sclex <scl...@gmail.com>:
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/fiction-book-editor/1ea2246e-b038-4614-b103-184d362c7396n%40googlegroups.com.

Sclex

unread,
Jun 23, 2022, 9:57:23 AMJun 23
to Fiction Book Editor
> В итоге должно создаться 2 сноски, но на таком варианте скрипт сбоит.
Если как регэксп маркера знака сноски прописать "\*+", и как регэксп первого абзаца текста сноски тоже прописать "\*+", то обе сноски благополучно размечаются. Тебя чем-то не устраивает такой вариант?

четверг, 23 июня 2022 г. в 16:47:30 UTC+3, TaKir:

e-paper.ru

unread,
Jun 23, 2022, 10:14:13 AMJun 23
to fiction-b...@googlegroups.com
С регэкспом все срабатывает, но я говорю про маркеры в режиме выключенных регэкспов.
Потому как с регэкспами далеко не все умеют, это все же продвинутый уровень.
А множественные звездочки в сносках в книгах не редкость.


чт, 23 июн. 2022 г. в 16:57, Sclex <scl...@gmail.com>:
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/fiction-book-editor/7ce5c40c-2f6e-4156-9c35-b48409511f06n%40googlegroups.com.

Sclex

unread,
Jun 23, 2022, 11:45:04 AMJun 23
to Fiction Book Editor
> Если по тексту проставить 3 звездочки ***, а скрипту сказать, что маркер - 1 звездочка *, то скрипт ругается на несовпадение кол-ва маркеров.
Так и должно быть.

> Если по тексту проставить 3 звездочки ***, а скрипту сказать, что маркер - 2 звездочки ** - то все ок.
Тоже - так и должно быть.

> Если по тексту проставить 2 звездочки **, а скрипту сказать, что маркер - 1 звездочка *, то скрипт ставит по 2 маркера сносок подряд, в боди сносок кидает 6 сносок - 2 полноценные сноски с текстами и  4 сноски с undefined.
Это надо исправить.

> Потому как с регэкспами далеко не все умеют, это все же продвинутый уровень.
> А множественные звездочки в сносках в книгах не редкость.
Надо встроенные опции "# (одна решетка) заменить на "вида *".
четверг, 23 июня 2022 г. в 16:47:30 UTC+3, TaKir:
Спасибо! Теперь "простые" сноски создаются нормально.

Sclex

unread,
Jun 23, 2022, 12:51:21 PMJun 23
to Fiction Book Editor
>> Если по тексту проставить 2 звездочки **, а скрипту сказать, что маркер - 1 звездочка *, то скрипт ставит по 2 маркера сносок подряд, в боди сносок кидает 6 сносок - 2 полноценные сноски с текстами и  4 сноски с undefined.
> Это надо исправить.
Я исправил это. Теперь в данном случае скрипт находит *два* маркера знака сноски, а не один. Текст сноски находится один, так что из-за несовпадения чисел (2 и 1) новые сноски не создаются.

Ссылки для скачивания версии 2.3:
четверг, 23 июня 2022 г. в 18:45:04 UTC+3, Sclex:

Sclex

unread,
Jun 23, 2022, 1:20:36 PMJun 23
to Fiction Book Editor
>> Если по тексту проставить 2 звездочки **, а скрипту сказать, что маркер - 1 звездочка *, то скрипт ставит по 2 маркера сносок подряд, в боди сносок кидает 6 сносок - 2 полноценные сноски с текстами и  4 сноски с undefined.
> Теперь в данном случае скрипт находит *два* маркера знака сноски, а не один. Текст сноски находится один, так что из-за несовпадения чисел (2 и 1) новые сноски не создаются.
Вернее, теперь, если говорить о твоем примере, будут находиться четыре знака сноски и два текста сноски. Я у себя тестировал работу скрипта на уполовиненном твоем примере, поэтому у меня числа были другими.

четверг, 23 июня 2022 г. в 19:51:21 UTC+3, Sclex:

Sclex

unread,
Jun 23, 2022, 2:28:22 PMJun 23
to Fiction Book Editor
Выпущена версия 2.4 скрипта "Создать сноски или комментарии из абзацев, помеченных маркерами".
- раньше скрипт мог зависать или работать неправильно.
- теперь в диалоге скрипта радиокнопки "# (одна решетка" заменены на "вида *".

Ссылки для скачивания версии 2.4:
четверг, 23 июня 2022 г. в 20:20:36 UTC+3, Sclex:

stokber

unread,
Jun 24, 2022, 6:01:55 AMJun 24
to Fiction Book Editor
Спасибо за проделанную работу над новым полезным и нужным скриптом. Я так понимаю, что он теперь может
заменить собой скрипты "Создать сноски или комментарии из абзацев, помеченных знаками решетки/каретки/звездочки".
Эти скрипты теперь становятся лишними. Поэтому позволю себе процитировать некоторые соображения
из моего же поста из смежной темы по скрипту со звездочками.

В бумажных книгах бывает так, что если текст сноски внизу страницы длинный, то его переносят на
следующую полосу. При распознавании или при переносе копипастой и прочими конвертациями уже в
редактируемом документе fb2 получаем примерно такую картину:

Страница 1
Какой-то текст*, ещё текст**, и ещё текст***.
* Текст примечания с одной звездочкой со стр. 1.
** Текст примечания с двумя звездочками со стр. 1.
~~Второй абзац примечания с двумя звездочками со стр. 1.
*** Первая часть текста примечания с тремя звездочками со стр. 1 (продолжение следует)


Страница 2
 Какой-то текст со сноской* или без.
~~!!!Продолжение текста сноски с тремя звездочками со стр. 1.
* Текст примечания с одной звездочкой со стр. 2.


В этом примере я пометил для наглядности такой добавочный абзац кроме двух тильд ещё и красным цветом,
в отличии от простого добавочного абзаца, помеченного только двумя тильдами "~~".
Скрипт всё-таки корректно работает со сносками с переносом на следующую полосу, кроме  таких моментов как наличие
между последним текстом сноски (верней частью текста сноски) и его продолжением :
1. Пустой строки. (В моём примере это как раз пустая строка перед строкой с текстом "Страница 2".
2. Строки из одних пробелов.
3. Строки из одних зведочек.
4. Строки из смеси звездочек и пробелов.
Причем, не важно, находится ли такая строка непосредственно перед перенесённой частью текста сноски, или между ними
находится ещё какой-то текст. Такая фича, как мне представляется осталась от скрипта "Создать сноски или комментарии
из абзацев, помеченных звездочками". Там это было нужно, что бы отделить звездочки-сноски от звездочек-сабтайлов, и
ещё по каким-то соображениям в связи с пробелами и пустыми строками.
Тогда я высказывал идею-пожелание решить это новым скриптом с примерным именем "Объединить разорванные тексты сносок", который
бы переносил бы такие части-абзацы, расположенные не следующими друг за другом, к ближайшим текстам сносок лежащим
выше, ну, т. е. туда, где им самое место. Или с условным названием "Перенос текстов сносок в конец книги", где скрипт
бы переместил по очереди все тексты сносок вместе с добавочными абзацами в конец документа для дальнейшей обработки его
скриптом "Создать сноски из выделенных абзацев". Но, так как выбран путь объединения скриптов и удаления лишних,
пришла такая идея: пометить строки перечисленные мною в четырех пунктах выше, удалив эти метки после расстановки сносок.
Автоматически, естественно. Тогда все дополнения текстов сносок корректно станут на свои места. Типа:
Перед созданием примечаний
найти:
^([ *]*)$
заменить:
%%%$1
После создания примечаний
найти:
^%%%([ *]*)$
заменить:
$1
Это у меня такие регулярки для замены в обычном окне Поиск. В этом примере я использовал метку в виде трех символов процента (%%%).
Так как, перенос текста сноски встречается не так что бы часто, хотелось бы видеть это опционно с проставлением галочки
"Учитывать переносы текста сносок на следующую полосу" (по умолчанию выключена). Можно также добавить окошко для ввода
символов собственной метки. Вдруг в специфичной книге окажется, что такие символы уже есть и немало и в самых неожиданных местах.
Вот такое пожелание.
Хотя, может быть найдется и более простое решение этой проблемы и я зря здесь распинаюсь.

четверг, 23 июня 2022 г. в 21:28:22 UTC+3, Sclex:
Message has been deleted

stokber

unread,
Jun 24, 2022, 6:16:40 AMJun 24
to Fiction Book Editor
Страница 1
Какой-то текст#, ещё текст##, и ещё текст###.
# Текст примечания с одной звездочкой со стр. 1.
## Текст примечания с двумя звездочками со стр. 1.
~~Второй абзац примечания с двумя звездочками со стр. 1.
### Первая часть текста примечания с тремя звездочками со стр. 1 (продолжение следует)

Страница 2
 Какой-то текст со сноской# или без.
~~!!!Продолжение текста сноски с тремя звездочками со стр. 1.
# Текст примечания с одной звездочкой со стр. 2.

пятница, 24 июня 2022 г. в 13:01:55 UTC+3, stokber:

Sclex

unread,
Jun 24, 2022, 6:18:07 AMJun 24
to Fiction Book Editor
Stokber, ваше пожелание я понял, спасибо. Но не гарантирую, что исполню его.

stokber

unread,
Jun 24, 2022, 6:22:13 AMJun 24
to Fiction Book Editor
Ясно.
В первом за сегодня скопировал текст из темы со звездочками. В следующем посте заменил на  решетки, так будет проще проверять.

пятница, 24 июня 2022 г. в 13:16:40 UTC+3, stokber:

Sclex

unread,
Jun 24, 2022, 6:22:36 AMJun 24
to Fiction Book Editor
> Но, так как выбран путь объединения скриптов и удаления лишних,
Нет, я не планирую удалять "лишние" скрипты. Пусть остаются.

stokber

unread,
Jun 24, 2022, 6:33:22 AMJun 24
to Fiction Book Editor
Понял.

пятница, 24 июня 2022 г. в 13:22:36 UTC+3, Sclex:

Sclex

unread,
Jun 24, 2022, 12:08:06 PMJun 24
to Fiction Book Editor
На текущий момент диалог скрипта (сразу после запуска) выглядит вот так - смотрите прилагаемый снимок.Clipboard26.png
Reply all
Reply to author
Forward
0 new messages