Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Закончить спецификацию структурной разметки ЦСЯ Markdown. #4

Open
0xGeorgii opened this issue Mar 19, 2019 · 20 comments
Labels
enhancement New feature or request question Further information is requested

Comments

@0xGeorgii
Copy link

Из обсуждений следует что структурная разметка должна быть открытой (легко расширяемой).

Единицей разметки объявлем блок (параграф).

@0xGeorgii 0xGeorgii added enhancement New feature or request question Further information is requested labels Mar 19, 2019
@typiconman
Copy link

Спецификация должна учесть проблему хранения Библии. Это пока не учтено, ни в Markdown, ни в XML. Сейчас Библия хранится вот так:
https://github.com/typiconman/ponomar/blob/master/Ponomar/languages/cu/bible/elis/Acts.text

@pgmmpk
Copy link
Contributor

pgmmpk commented Mar 22, 2019

Новое:

  1. Нумерация стихов
  2. Метки зачал

Может как-то вот так:

Было:

#1
1| **(Зача́ло 1)** Пе́рвое ᲂу҆́бѡ сло́во сотвори́хъ ѡ҆ всѣ́хъ, ѽ, ѳео́фїле, ꙗ҆̀же нача́тъ і҆и҃съ твори́ти же и҆ ᲂу҆чи́ти 
2| да́же до днѐ, во́ньже, заповѣ́давъ а҆пⷭ҇лѡмъ дх҃омъ ст҃ы́мъ, и҆̀хже и҆збра̀, вознесе́сѧ: 

Стало (Markdown):

Глава а

а. **(Зача́ло 1)** Пе́рвое ᲂу҆́бѡ сло́во сотвори́хъ ѡ҆ всѣ́хъ, ѽ, ѳео́фїле, ꙗ҆̀же нача́тъ і҆и҃съ твори́ти же и҆ ᲂу҆чи́ти 

в. да́же до днѐ, во́ньже, заповѣ́давъ а҆пⷭ҇лѡмъ дх҃омъ ст҃ы́мъ, и҆̀хже и҆збра̀, вознесе́сѧ: 

@typiconman
Copy link

Гм. Думаю, что лучше все таки арабские цифры. Потому что в конце концов, мы же можем хранить в этом формате тексты не только на ЦСЯ.

@0xGeorgii
Copy link
Author

why can't we store it in the HTML or XML format? it's much more suitable for further machine handling. Or even leave it as it is.

@pgmmpk
Copy link
Contributor

pgmmpk commented Mar 22, 2019

@typiconman

Для ЦСЯ используем буквенную цифирь (как в книге). Для гражданицы или латинского - арабские цифры (опять же - как в книге). Иначе придется задачу отображения (перевод в буквенную цифирь или что там в книге) решать средствами Markdown (я предполагаю что для ЦСЯ показывать на экране хотим цифирью).

Вот чего не хватает в предлагаемой разметке - это анкоров для навигации. Например надо перейти на стих 2. Это можно решить средствами структурной разметки - пометить каждый блок-стих

@pgmmpk
Copy link
Contributor

pgmmpk commented Mar 22, 2019

@GeorgePlotnikov проблема не с машиной а с людьми. Человеки не должны редактировать XML. Тогда встает проблема инструментария.

Markdown - это, собственно, версия такого инструментария.

@typiconman
Copy link

Пометить каждый блок-стих? Что Вы имеете ввиду, @pgmmpk?

@pgmmpk
Copy link
Contributor

pgmmpk commented Mar 22, 2019

Пометить каждый блок-стих? Что Вы имеете ввиду, @pgmmpk?

@typiconman ну, мы же планируем структурную аннотацию в виде произвольных ключей и значений (a-la RDFa). Тогда можно вот так:

Глава а

{{verse=1}}
а. **(Зача́ло 1)** Пе́рвое ᲂу҆́бѡ сло́во сотвори́хъ ѡ҆ всѣ́хъ, ѽ, ѳео́фїле, ꙗ҆̀же нача́тъ і҆и҃съ твори́ти же и҆ ᲂу҆чи́ти 

{{verse=2}}
в. да́же до днѐ, во́ньже, заповѣ́давъ а҆пⷭ҇лѡмъ дх҃омъ ст҃ы́мъ, и҆̀хже и҆збра̀, вознесе́сѧ: 

@0xGeorgii
Copy link
Author

Пометить каждый блок-стих? Что Вы имеете ввиду, @pgmmpk?

@typiconman ну, мы же планируем структурную аннотацию в виде произвольных ключей и значение (a-la RDFa). Тогда можно вот так:

Глава а

{{verse=1}}
а. **(Зача́ло 1)** Пе́рвое ᲂу҆́бѡ сло́во сотвори́хъ ѡ҆ всѣ́хъ, ѽ, ѳео́фїле, ꙗ҆̀же нача́тъ і҆и҃съ твори́ти же и҆ ᲂу҆чи́ти 

{{verse=2}}
в. да́же до днѐ, во́ньже, заповѣ́давъ а҆пⷭ҇лѡмъ дх҃омъ ст҃ы́мъ, и҆̀хже и҆збра̀, вознесе́сѧ: 

headers in the MD automatically converts to the header+anchor

@pgmmpk
Copy link
Contributor

pgmmpk commented Mar 22, 2019

Чтобы уточнить. Дело не в XML против Markdown. Разница между ними лишь синтаксическая. Реально содержательная работа - это описать необходимую семантику. Будь это XML схема или спецификации ЦСЯ Markdown.

Пока минимальные требования к разметке вроде таковы:

Структурно:

  1. заголовки
  2. параграфы
  3. произвольная мета-информация на уровне файла и параграфа (key=>value). В общем случае мета не отображается. Используется для навигации, композиции, поиска
  4. выносная (на полях) нумерация
  5. начало новой страницы (для координации с картинками факсимиле)

Inline:

  1. Киноварь
  2. Красная буква
  3. Буквица
  4. Разрядка
  5. Переключение языка (cu, ru, gr, en, bu)
  6. Сноски
  7. Метка зачала (начало - конец)

(надеюсь ничего не пропустил)

В этом свете кажется что формат Библии почти ничего нового не добавляет. Главы отображаются на заголовки (которые Markdown автоматически снабжает анкорами, как правильно заметил @GeorgePlotnikov ). Стихи становятся параграфами. Новый inline элемент - это метка зачала.

Что я пропустил?

@0xGeorgii
Copy link
Author

@pgmmpk cross-references maybe?

@pgmmpk
Copy link
Contributor

pgmmpk commented Mar 22, 2019

@pgmmpk cross-references maybe?

Вопрос интересный. На уровне <a href> это уже есть в MD и HTML. Однако рассмотрим вот это:

[Мф.1-5]

Можно было бы привязать к конкретной библии и захардкодить что-нибудь вроде http://bibliya.ru/mathew#1-5. Но это получается грубо. Ссылаются-то на стих Матфея вообще, а не на какое-то конкретное печатное издание.

Правильнее (наверное) прописать что-то вроде {{book=mathew, chapter=1, verse=5}} и поручить приложению решать куда отослать кликающего.

Соответственно в том же корпусе книг может быто одна или несколько книг, которые объявляют себя "евангелием от Матфея" и нужный параграф там должен быть помечен {{verse=5}}. Тогда приложение сможет разрешить ссылку.

А более продвинутое приложение сможет проиндексировать ещё несколько сайтов и предложить кликающему выбор куда пойти...

Короче, концепция ЦСЯ ссылок требует разработки

@typiconman
Copy link

typiconman commented Mar 22, 2019

Не кажется ли Вам, @pgmmpk, что синтаксис

{{verse=2}} в. ...

является дупликацией? Одно можно сгенирировать из другого в run time.

И потом, строго говоря, тогда должно быть в҃ (т.е. с титло).

@pgmmpk
Copy link
Contributor

pgmmpk commented Mar 22, 2019

Да, Александр, есть дупликация тут. Извините за пропущенное титло - оно имелось в виду быть.

Гм. Наверное можно заставить MD реагировать на ключ verse и автоматически добавлять цифирь к последующему параграфу (если документ lang=cu => буквенную, else арабскую).

А как удобнее пользователю? Держать в голове это правило или полагаться на более очевидное "что пишем то и видим"?

@typiconman
Copy link

typiconman commented Mar 22, 2019

Кажется это уже вопрос к инструментарию. Скажем у нас какое-то приложение. Пользователь запрашивает Мф. 1:5. Приложение открывает файл с Мф, находит главу 1, там ноходит verse=5 и считывает этот стих. Дальше оно конвертирует текст для отображения пользователю в HTML (или во что-то еще). На этом этапе легко сконвертировать 5 -> є҃, средствами того же Lingua::CU и т.п.
Или не заморачиваться, и просто хранить сразу номера стихов? Но в некоторых случаях, пользователь может запросить текст без номеров стихов. Нужно ему дать опцию не отображать нумерацию. Как сейчас сделано здесь:
https://ponomar.net/cgi-bin/bible.cgi

@pgmmpk
Copy link
Contributor

pgmmpk commented Mar 22, 2019

Нужно ему дать опцию не отображать нумерацию

Это решает вопрос - нумерацию надо убрать из текста и генерировать динамически из аннотации {{verse}}

@0xGeorgii
Copy link
Author

100% this process must be automated

@typiconman
Copy link

typiconman commented Mar 23, 2019

Еще два вопроса:

  1. Новая строка после {{verse}} обязательна? Т.е. {{verse=1}} Lorum ipsum или {{verse=1}} Lorum ipsum?

  2. Нумерация глав необходима? {{chapter=1}}? При этом нужно писать {{chapter=1}} Глава а҃?

@pgmmpk
Copy link
Contributor

pgmmpk commented Mar 23, 2019

Нумерация глав необходима? {{chapter=1}}? При этом нужно писать {{chapter=1}} Глава а҃?

Да, думаю что в общем случае необходима. Если есть необходимость прятать главы, то можно поступить также как и с {{verse}} - поручить генерацию глав движку.

Новая строка после {{verse}} обязательна? Т.е. {{verse=1}} Lorum ipsum или {{verse=1}} Lorum ipsum?

Нет необязательна. Более того, можно и так: Lorum ipsum {{verse=1}} и даже так Lorum {{verse=1}} ipsum. Важно отсутствие пустой строки между аннотацией и блоком текста.

@pgmmpk
Copy link
Contributor

pgmmpk commented Mar 23, 2019

Меня терзают смутные сомнения по поводу HTML/XML генерации из {{verse=x}}. Собственно хочется просто реализовать структурные аннотации как атрибуты блока, не разбирая их семантики. Примерно так:

Вход:

{{tone=8 day=mon}}
Lorem ipsum

Выход:

<p tone="8" day="mon">Lorem ipsum</p>

То есть MD движок просто переносит атрибуты в блок.

Если мы так делаем, то таксономия атрибутов аннотации может быть совершенно открытая
и распределенная (похоже на RDFa). Это здорово усиливает возможности стандарта.

Однако как быть с {{verse=1}}?

Может вытеснить генерацию цифири за пределы HTML? В JavaScript?

Или предлагать желающим создавать свои расширения ЦСЯ MD?

Давайте подумаем вместе.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request question Further information is requested
Projects
None yet
Development

No branches or pull requests

3 participants