Для написания статей на этом блоге я пользуюсь синтаксисом Markdown. Это один из альтернативных синтаксисов оформления текстов без использования HTML-тегов. И хотя я всегда считал, что придумывание новых еще более упрощенных синтаксисов для и так несложного HTML'а — это зло, Markdown мне понравился. Он, пожалуй, самый продуманный из тех, что я видел, и самый ненавязчивый.
Вот вещи, которые мне особенно нравятся:
Вставка кода — это, пожалуй, самое главное для меня на блоге, который впрямую посвящен примерам HTML-кода :-). И именно поэтому я тут же отказался от WYSIWYG-редактора Wordpress 2.0: в нем для вставки HTML предлагается заменять все угловые скобки на < и >. И хотя сам процесс замены можно автоматизировать, читать это потом и редактировать все равно ужасно муторно. В Markdown же код можно вставлять и редактировать в его первоначальном виде. Он автоматически escape'ится и форматируется в <pre>.
Однако, у Markdown есть и свои недостатки. Особенно мне не нравились такие:
Внутри HTML-тегов он полностью отключается. То есть, если я делаю примечание:
<p class="note"><small>...</small></p>
Внутри <small> использовать его синтаксис я уже не могу.
Заголовкам и абзацам нельзя проставить id, чтобы ссылаться на них через якоря.
Абзацам нельзя задавать class, что и заставляет меня использовать для примечаний HTML.
Нет синатксиса для <dl>, которым я часто пользуюсь. А значит, опять же, приходится использовать HTML.
Но оказывается, есть штука, которая решает по крайней мере часть этих проблем — Markdown Extra. В частности, она позволяет задавать id заголовкам, специально разрешать markdown-синтаксис внутри HTML'а и умеет кодировать <dl>.
Вчера поставил ее и переформатировал свой новогодний пост:
Веб-разработчикам
: Чтобы [IE7][] понимал CSS как остальные браузеры.
Программистам
: Чтобы ваш босс узнал про [agile-методы][] и перестал повторять,
что вы "вечно все не успеваете".
Проектировщикам
: Чтобы ваша система на [Rails][] или [Django][] масштабировалась
так же хорошо, как прототипируется.
Блогерам
: [<img class="right" src="/media/blog/too-much-spam.png"
alt="81% всех комментариев - спам.">][spam] Чтобы вы забыли про
спам в комментариях.
Фрилансерам
: Чтобы клиенты косяками несли деньги, услышав от вас "Web 2.0"
И всем-всем-всем -- хорошего нового года!
[IE7]: http://blogs.msdn.com/ie/
[agile-методы]: http://martinfowler.com/articles/newMethodology.html
[Rails]: http://www.rubyonrails.org/
[Django]: http://www.djangoproject.com/
[spam]: http://akismet.com/
Так что всем, у кого технарные блоги — оченно рекомендую.
Комментарии: 8
2.01.06 22:46
Так это просто диалект вики-разметки.
Отсутствие id'ов и class'ов в ней - это фича.
3.01.06 01:07
Какой именно вики-разметки? :-)
Все эти синтаксисы, конечно, чем-то похожи. Но почему отсутствие id и class'ов — фича?
3.01.06 12:33
Потому что это язык публикации, а не создания документов. Идентификаторы могут синтезироваться из эксплицитного (явно существующего) текста.
То есть,
===Заголовок=== есть
Заголовок
[[Текст ссылки]] (в простейшем случае) есть Текст ссылки
То есть вики-разметка - это совсем уже не код, а чистый текст. Ничего, чего бы не было видно в тексте, под ней спрятать нельзя. И испортить страницу, на которой публикуется фрагмент нельзя. И единство внешнего вида обеспечивается.
Разумеется, вики-разметка бывает разная, но у большинства правил общая база. В самом общем случае, вики-разметка - это расширение набора знаков препинания, причём некоторые из вики-пунктограмм с той же семантикой использовались до появления компьютеров (астериксы для выделения полужирным, подчёркивания для италика, тире для списков и таблиц и т.д.)
3.01.06 13:24
Вот... А я все пытался это в своем комментарии сформулировать... Дело в том, что markdown — не язык публикации внутри замкнутой системы документов. Он служит для описания HTML-документов "вообще". Поэтому он не такой агрессивный, как любая wiki-разметка, где генерятся idшки заголовкам и ссылки из CamelCase-слов. То есть, он менее специальный. От того и проще.
4.01.06 13:27
Увы... Квадратную скобку неудобно при кириллической раскладке набирать. В этом смысле близок к идеалу ваккоформаттер, но и в нём цитирование реализовывается через <[...]>.
11.01.06 14:06
Вот ещё вакоформатер кто-нибудь на питоне переписал чтобы его можно было в django использовать, я подумал бы что в раю.
13.08.06 17:05
А как быть с объединением ячеек в таблицах MarkDown? Я так понял, это невозможно...
13.08.06 22:55
В исходном Markdown таблиц нет вообще. В Markdown Extra есть, но да, там объединять ячейки нельзя. HTML is your friend :-)