LINUX.ORG.RU

MD4C 0.5.3

 , , md4c, ,


0

1

20-го апреля, после более чем двухлетней паузы, состоялся выпуск 0.5.3 быстрой библиотеки MD4C («Markdown for C»), предназначенной для парсинга данных в формате Markdown и конвертирования их в формат HTML. Поддерживаются спецификации Markdown CommonMark 0.31 и GitHub Flavored Markdown (GFM).

В комплект поставки также входит консольная утилита md2html.

Проект написан на языке C без сторонних зависимостей и распространяется по лицензии MIT.

Основные изменения:

  • префикс language- больше не повторяется в блоке кода, если входные данные уже явно содержат этот префикс;
  • поддержка автоссылок (опции вида MD_FLAG_PERMISSIVExxxAUTOLINKS) теперь стала чуть более разрешающей: символы «+» и «-» теперь могут находиться в любом месте частей URL. Это также улучшило совместимость с GFM;
  • поддержка Unicode 18.0 (пока в статусе alpha);
  • исправлены многие ошибки.

>>> Почему MD4C такой быстрый?

>>> Подробности на GitHub

★★★★★

Проверено: CrX ()
Последнее исправление: dataman (всего исправлений: 5)
$ apt rdepends libmd4c0
Reverse Depends:
  Depends: libmd4c-dev (= 0.5.2-2+b2)
  Depends: libreoffice-writer-nogui (>= 0.2.7)
  Depends: libreoffice-writer (>= 0.2.7)
  Depends: libreoffice-calc-nogui (>= 0.2.7)
  Depends: libreoffice-calc (>= 0.2.7)
  Depends: libqt6gui6 (>= 0.2.7)
  Depends: libqt5gui5t64 (>= 0.2.7)
  Depends: libqt5gui5-gles (>= 0.2.7)
  Depends: libmd4c-html0 (= 0.5.2-2+b2)
  Depends: bazaar (>= 0.2.7)
dataman ★★★★★
() автор топика

использую pandoc (markdown,gfm). Он универсальный, сейчас из форматов еще orgmode часто стал встречаться.

arrecck ★★★
()

Почему MD4C такой быстрый?

А какой он быстрый?

Подробности на GitHub
quadratic time and output size

Подлива какая-то

Manhunt ★★★★★
()
Последнее исправление: Manhunt (всего исправлений: 2)
Ответ на: комментарий от seiken

Ну говно же формат…

Предложи что-нибудь лучше или хотя бы на уровне. Чтобы поддерживало таблицы (хотя бы на минимальном уровне, как в md), базовое форматирование (bold, italic, strikethrough, inline-code, code, quote, blockquote, aside, all headings и конечно же ссылки) и чтобы для этого не надо было прописывать теги (bbcode не сильно лучше голого html в этом плане).

Из альтернатив Markdown на данный момент мы имеем только более многословный AsciiDoc и ещё более многословный синтаксис, используемый в DokuWiki. Но первый поддерживается только на Github, Gitlab и Gitea (и её форках), а второй — только в DokuWiki, что не делает их особо доступными.

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

Из альтернатив Markdown на данный момент мы имеем только более многословный AsciiDoc и ещё более многословный синтаксис, используемый в DokuWiki.

Ещё https://djot.net от автора CommonMark и pandoc:

Djot is a light markup syntax. It derives most of its features from commonmark, but it fixes a few things that make commonmark’s syntax complex and difficult to parse efficiently. It is also much fuller-featured than commonmark, with support for definition lists, footnotes, tables, several new kinds of inline formatting (insert, delete, highlight, superscript, subscript), math, smart punctuation, attributes that can be applied to any element, and generic containers for block-level, inline-level, and raw content. The project began as an attempt to implement some of the ideas I suggested in Beyond Markdown.

dataman ★★★★★
() автор топика
Ответ на: комментарий от dataman

djot

О, Markdown с чуть более строгой типизацией. (=

На самом деле можно найти ещё с полдюжины языков разметки, но всех их объединяет лишь одно: их поддержки нет практически нигде.

Изначально был bbcode, который поддерживался если не всеми, то почти всеми движками, от форумных до блоговых. Но разметка с ним это боль в чистом виде, особенно если основной текст не английский и раскладку приходится переключать очень часто. Это все понимали и некоторые даже предпринимали попытки, но не все из них возымели хоть какую-нибудь популярность.

В технической среде выстрелил Markdown, как наиболее простой (даже на фоне AsciiDoc, который появился на два года раньше и был заточен специально под документацию, но на фоне Markdown выглядел перегруженно), и постепенно просочился и в нетехническую среду (Reddit, Telegram, блоговые движки).

И заменять Markdown не особо выгодно, его проще расширить, как это сделали в своё время Github, например (и скорее всего многие идеи они адаптировали из AsciiDoc, который площадка тоже поддерживает).

mord0d ★★★★★
()
Последнее исправление: mord0d (всего исправлений: 1)
Ответ на: комментарий от Zhbert

Оратора выше не поддерживаю, но если надо сделать вложенные таблицы то говно то еще. У нас тут один перспективный манагер документацию пытался на маркдаун перевести не на долго его хватило.

splinter ★★★★★
()

«Быстрая библиотека»... :))

Somebody ★★★★
()

О, как раз жертва для вивисекции основа для генератора файлов справки из Markdown для Symbian найдена.

zanac1
()
Ответ на: комментарий от mord0d

Предложи что-нибудь лучше или хотя бы на уровне

Эм, да что угодно. Т.е. маркдаун же не умеет ничего почти.

Чтобы не быть голословным, предлагаю troff.

ugoday ★★★★★
()
Ответ на: комментарий от zanac1

основа для генератора файлов справки из Markdown для Symbian найдена.

Возможно, что лучше подойдёт lowdown 1.3.0.

На Гитхабе уже версия 3.0.1.

dataman ★★★★★
() автор топика
Последнее исправление: dataman (всего исправлений: 1)
Ответ на: комментарий от mord0d

Предложи что-нибудь лучше или хотя бы на уровне. Чтобы поддерживало таблицы

Так в спецификации маркдауна нет таблиц. А то, что используют - нестандартное расширение. К тому же в тексте оно обычно выглядит как нечитаемое говно (а ведь это была цель создания маркдауна - читаемость в «голом» виде).

Puzan ★★★★★
()
Ответ на: комментарий от mord0d

Из альтернатив Markdown на данный момент мы имеем только более многословный AsciiDoc и ещё более многословный синтаксис, используемый в DokuWiki.

Есть ещё typst. Неплохой, но поддерживается тоже нигде. Да и проще на маркдаун навесить то, чего там не хватает (как сделали в том же github), тем более всякие pandoc и прочие либы/конвертеры очень много для чего имеют расширения маркдауна из коробки.

CrX ★★★★★
()
Ответ на: комментарий от ugoday

маркдаун же не умеет ничего почти

Чего конкретно лично тебе не хватает?

Чтобы не быть голословным, предлагаю troff.

И чем troff лучше md в плане написания им?

Все теги ключи (кроме комментариев) в ROFF используют латиницу, и если ты будешь писать текст не на латинице, то переключать раскладку будешь не реже чем с bbcode. Плюс в ROFF ключи контролируют переносы строк (тебе придётся запомнить какие из них жрут перенос строки, а какие оставляют его как есть, а их много).

mord0d ★★★★★
()
Ответ на: комментарий от Puzan

Так в спецификации маркдауна нет таблиц. А то, что используют - нестандартное расширение. К тому же в тексте оно обычно выглядит как нечитаемое говно (а ведь это была цель создания маркдауна - читаемость в «голом» виде).

Таблицы нечитабельны везде. Посмотри в ROFF, HTML, LaTeX…

И да, в Markdown ещё и нельзя объединять столбцы/строки для создания более сложных таблиц (а обычно нужны именно такие).

mord0d ★★★★★
()
Ответ на: комментарий от sarumeister

typst

Синтаксис хорош, такой LaTeX+Markdown, взявший лучшее от каждого. Но без таблиц, а это для меня серьёзный минус. )=

Даже учитывая что в Markdown таблицы сбоку и они ущербные (читай мой коммент выше), это лучше, чем ничего.

mord0d ★★★★★
()
Ответ на: комментарий от CrX

Есть ещё typst. Неплохой, но поддерживается тоже нигде.

Выше уже упомянули его. Да, выглядит неплохо, но без таблиц его нужность делится на два. )=

Да и проще на маркдаун навесить то, чего там не хватает (как сделали в том же github)

А об этом я уже написал выше (и ты это двачайнул). (=

mord0d ★★★★★
()
Ответ на: комментарий от Puzan

Так в спецификации маркдауна нет таблиц.

Скорее, уже нет маркдаун-парсеров, которые бы не поддерживали таблицы.

dataman ★★★★★
() автор топика
Ответ на: комментарий от hobbit

ODT

$ man lowdown:

SYNOPSIS
     lowdown [input_options] [output_options] [-Ls] [-M metadata] [-m metadata] [-o file] [-t mode] [-X keyword] [file]

TL;DR

   Output media
     The output media is specified by -t, which defaults to -thtml.

     -tfodt  “Flat” OpenDocument output.  Automatic styles (those conditional upon document state) are generated with output.  Classes specified by PHP extended attributes are  not  checked
             for existence.

     -tgemini
             Gemini “gemtext” format.

     -thtml  HTML5 output with UTF-8 encoding.

     -tlatex
             Simple  LaTeX  output.  The following packages are required: amsmath and amssymb for maths, graphicx for images, inputenc (utf8) for UTF-8 input, frontend (T1) and textcomp for
             output glyphs, lmodern for Latin modern font, xcolor for the difference engine output, and hyperref for links.

     -tman   The man macro package suitable for reading by groff(1), mandoc(1), Heirloom troff(1), or traditional troff(1).  Does not support equations and images.  Table  support  is  pro‐
             vided by tbl(1).  Since UTF-8 may be passed as input values, preconv(1) may need to be used.

     -tmdoc  The  mdoc macro package suitable for reading by groff(1), mandoc(1), Heirloom troff(1), or (possibly?) traditional troff(1).  Does not support equations and images.  Table sup‐
             port is provided by tbl(1).  Since UTF-8 may be passed as input values, preconv(1) may need to be used.

     -tms    The ms macro package suitable for reading by groff(1) or traditional troff(1).  Does not support equations and limited image support for encapsulated  postscript  (PS  and  EPS
             suffix)  images.   Images  are always block-formatted.  Image dimensions and extended attributes are ignored, though images are downsized if larger than the current text width.
             Table support is provided by tbl(1).  Since UTF-8 may be passed as input values, preconv(1) may need to be used.

     -tterm  ANSI-escaped UTF-8 output suitable for reading on the terminal.  Images and equations not supported.

     -ttree  Debugging output.  Not for programmatic use, as the format may change between versions.

TL;DR
dataman ★★★★★
() автор топика
Ответ на: комментарий от mord0d

typst

Синтаксис хорош, такой LaTeX+Markdown, взявший лучшее от каждого. Но без таблиц, а это для меня серьёзный минус.

Сейчас посмотрел — на ютубе есть демонстрации таблиц в typst. Нет никаких минусов.

sarumeister
()
Ответ на: комментарий от dataman

Тут вопрос, они их одинаково поддерживают? Или каждая в свою дуду? Те таблицы, которые в лоровском маркдауне, можно считать общепринятыми?

hobbit ★★★★★
()
Ответ на: комментарий от splinter

но если надо сделать вложенные таблицы то говно то еще

Ну.. Да. Мы для этого просто на HTML их пишем, благо он поддерживает вхождения туда-сюда.

Zhbert ★★★★★
()
Ответ на: комментарий от splinter

У нас тут один перспективный манагер документацию пытался на маркдаун перевести не на долго его хватило.

А на чем она у вас?

Zhbert ★★★★★
()
Ответ на: комментарий от hobbit

Тут вопрос, они их одинаково поддерживают?

Я чуток промазал, в CommonMark нет таблиц. :)

Те таблицы, которые в лоровском маркдауне, можно считать общепринятыми?

Это спецификация GitHub, так что да. Те парсеры, которые я видел, её и поддерживают.

А вообще, надо бы исправить нашу ссылку на изначальный Markdown.
Потому что движок форума использует flexmark-java, который:

flexmark-java is a Java implementation of CommonMark (spec 0.28) parser using the blocks first, inlines after Markdown parsing architecture.

С подключением некоторых расширений, и таблиц в том числе:

import com.vladsch.flexmark.ext.autolink.AutolinkExtension
import com.vladsch.flexmark.ext.gfm.strikethrough.StrikethroughExtension
import com.vladsch.flexmark.ext.tables.TablesExtension
import com.vladsch.flexmark.ext.typographic.TypographicExtension
dataman ★★★★★
() автор топика
Ответ на: комментарий от mord0d

Большинство операторов совместимо с md.

В заголовках между

# Heading 

и

Heading
=======

для меня разницы нет, хотя вариант rst нагляднее с точки зрения просмотра в plain text (без подсветки синтаксиса, и отрисовки большим кеглем).

Картинки - тоже спорно, что лучше читается

![Image title](filename.ext){ width="100px" }

или

.. image:: filename.ext
   :width: 100px
   :alt: Image title

Между !!! note и .. note:: разницы нет вообще. Кроме того, что единого стандарта в .md для этого нет.

А вот таблицы можно более лаконичные в rst, и ссылки тоже (там урлы можно под абзацем перечислить, чтобы не мешались внутри параграфа).

mogwai ★★★★★
()
Последнее исправление: mogwai (всего исправлений: 1)
Ответ на: комментарий от sarumeister

Сейчас посмотрел

Хорошо. Но я-то не смотрел. (%

mord0d ★★★★★
()
Ответ на: комментарий от mogwai

Ты всё это рассматриваешь с точки зрения чтения.

А теперь попробуй это всё пописать. У rST и AsciiDoc телодвижений значительно больше, чем у Markdown.

Причём я не говорю что они хуже, они просто менее удобные.

mord0d ★★★★★
()
Ответ на: комментарий от mogwai

В заголовках между

для меня разницы нет

Основная разница в том, что с # доступно 6 (а если сильно надо, то и больше) уровней заголовка, а с подчёркиванием — только два.

Картинки - тоже спорно, что лучше читается

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

CrX ★★★★★
()
Ответ на: комментарий от mord0d

Я доки как в сфинксе, так и в мкдокс писал. Поэтому и говорю, что rst и md - одно яйцо с разных ракурсов. И переводил с одного на второй, и со второго на первый.

Только rst имеет эталонную реализацию и расширяем из коробки. А md - нет, а расширения разметки каждый парсер городит свои.

mogwai ★★★★★
()
Ответ на: комментарий от CrX

Основная разница в том, что с # доступно 6 уровней заголовка, а с подчёркиванием — только два.

4.2 пруф: https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#sections

(а если сильно надо, то и больше)

Если надо больше 6, то надо редактора увольнять. Но, емнип (никогда больше 6 не требовалось, только экспериментов для), он нормально понимает, что появление подчеркивания новым символом - новый уровень заголовка.

в первом случае картинка вставляется так же как и просто ссылка, только с восклицательным знаком, во втором — особый хитрый синтаксис, который надо запоминать

Что «как ссылка но с ! в начале» - это запоминать не надо? Или универсальный синтаксис .. имя:: для любого объекта (image, admonitions, source-code) хуже чем для каждого блока свой уникальный?

mogwai ★★★★★
()
Ответ на: комментарий от mogwai

https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#sections

Ух, жесть какая.

ОК, я был неправ, тоже 6 доступно, выходит. Правда хрен запомнишь, какой символ для чего…

Что «как ссылка но с ! в начале» - это запоминать не надо?

Субъективно, наверное, но как по мне, это запоминается и пишется легче. Проще привыкнуть. Меньше телодвижений.

CrX ★★★★★
()
Ответ на: комментарий от CrX

Правда хрен запомнишь, какой символ для чего…

Это просто питонисты договорились такие символы использовать, для унификации. Ты можешь подчеркивать иными. Главное одного уровня - одинаково.

Только я не помню, оно по документу в целом первым вхождением закрепляет уровень вложения, или же в пределах раздела могут быть уникальные, ибо старался придерживаться соглашения из девгайда.

mogwai ★★★★★
()
Ответ на: комментарий от mord0d

Чего конкретно лично тебе не хватает?

Всего и ничего. Так-то я человек нетребовательный, мне и простого текста хватает, но если уж начинать хотеть разного, то markdown ничешеньки не умеет. В troff’е книжки делают, а в md даже служебную записку «дорогой начальник, отпустите меня в отпуск, ну пожалуйста» не написать. Какое тут вообще может быть стравнение?

Содержания нет, библиографии тоже, код не раскрасить и номеров строк не добавить, поддержка грамотного программирования отсутствует как класс, про примечания забыли, исполняемые блоки кода, а это дичайше удобно для описания документации для всяких API, тоже отсутствуют (но отсутствуют не как помещики, посли ликвидации большевиками, а как помещики отсутствовали в каменном веке). Короче, идёте в https://orgmode.org/orgguide.pdf и читаете пункт за пунктом. Вот всё, что перечислено в markdown’е и не хватает.

Поэтому исходный вопрос

Чего конкретно лично тебе не хватает?

Я бы переформулировал в «А чего там вообще есть, чего нет практически в любом другом языке разметки?».

И чем troff лучше md в плане написания им?

В плане написания им чего?

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

Я бы переформулировал в «А чего там вообще есть, чего нет практически в любом другом языке разметки?».

А почему он должен быть похожим на все остальные языки разметки? Ради чего?

Markdown пилился с одной целью — быть простым языком разметки. С этой задачей он прекрасно справляется. (=

В плане написания им чего?

Ну вот на ЛОРе md более чем хватает.

Для написания документации я и использую mdoc для себя и ROFF для публично доступной документации.

А для книг больше подойдёт LaTeX.

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

Таблицы нечитабельны везде.

У меня в org-mode отлично читабельны.

Puzan ★★★★★
()
Ответ на: комментарий от mord0d

Что-то я вас не понимаю совсем. Давайте сначала. Markdown особо ничего не умеет и среди всех остальных простых языков разметки ничем особо не выделяется.

Отсюда удивление, когда кто-то спрашивает «Предложи что-нибудь лучше или хотя бы на уровне». На уровне чего? Лабораторки для студента второго курса? Странно всё это.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

Простота, поддержка. И той спецификации, которую поддерживает GitHub, при этом вполне хватает для написания, условно говоря, описания применения или руководства оператора. Что важно – маркдаун поддерживает разметку и в то же время выглядит хорошо читаемым и в «сыром» виде".

Нет, я не говорю, что это идеал. И то, что спецификация гитхаба стандартом не является, меня тоже смущает. Но вот по сочетанию простоты и изкоробочности что-то такое ещё вспомнить затруднительно. В принципе, латех по читаемости близок, а по мощности – заруливает. Но с простотой там проблемы. Латех без преамбулы – не латех вообще.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от hobbit

То же самое можно сделать тысячью других способов и ничего не поменяется. Сделано вот так и в принципе как-то работает, так что пусть его, но всё равно это всего лишь один велосипед среди множества таких же велосипедов.

P.S. Да хоть бы и латех. Если урезать осетра с «есть и работает, принято индустрией» до «можно сделать» (моя фантазия — мои правила), то весь markdown можно заменить простеньким режимом + обёрткой, которая будет подключать нужную преамбулу.

ugoday ★★★★★
()
Ответ на: комментарий от hobbit

В принципе, латех по читаемости близок, а по мощности – заруливает. Но с простотой там проблемы. Латех без преамбулы – не латех вообще.

Тут в каждом втором комментарии typst упоминают, если что.

sarumeister
()
Ответ на: комментарий от Displacer

Я в курсе, спасибо. Это же пакеты, зависящие от сабжа.

dataman ★★★★★
() автор топика
Ответ на: комментарий от Zhbert

в репозиториях с сиходниками md, документация в конфе, а ФЗ отдаём прогоняя всю эту хрень через скрипты в Latex подгоняя в формы по ГОСТовским требованиям. Не всё еще работает прям идеально как надо, но понемногу пилим.

splinter ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.