Вам наверняка доводилось видеть (а может, и сочинять) электронные письма, в которых простой текст отформатирован простыми же текстовыми символами. Например, заголовок подчёркнут строчкой из дефисов, которая наглядно показывает, что это именно заголовок. Такие обозначения естественны, понятны и возникают сами собой.
А если придумать свод правил для этих обозначений, то получается язык лёгкой разметки (по-английски — lightweight markup). Лёгкой в том смысле, что в ней легче набирать и читать исходный текст, чем в более развесистых языках вроде HTML. Следуя нехитрым правилам лёгкой разметки, мы можем преобразовывать наши документы во всевозможные форматы, не теряя достоинств простого текста: возможности написать и прочитать его где угодно.
Так как идея проста и красива, языков лёгкой разметки наплодилось довольно много. Один из самых известных и мощных — reStructuredText (сокращённо RST). Изначально он создавался для того, чтобы документировать код на языке Python, но вполне может применяться для любых других текстов. О том, как это сделать, я и расскажу в этом топике.
Как видно, синтаксис языка достаточно очевиден, чтобы написанный на RST документ можно было употреблять в «сыром» виде — в той же электропочте, например, или где там ещё бывает предпочтителен простой текст. Но чтобы документ радовал глаза читателей, нужно преобразовать его в другой вид, для чего есть разные инструменты.
Добрые люди, понимающие прелесть RST, создали веб-сайт rst2a.com, который позволяет быстро превращать RST-документы во «что угодно». Под «чем угодно» понимаются форматы HTML и PDF, которые вам, наверное, знакомы. Ещё на сайте есть небольшая коллекция стилей, которые можно применять к получаемым документам. RST определяет смысл документа, а не его внешний вид — а значит, этот самый вид можно легко менять, просто подставляя другие стили (CSS-таблицы в случае HTML). Вот, можете попробовать: вставляете туда вышеприведённый документ, нажимаете «HTML», выбираете стиль по вкусу и жмёте «Download».
К сожалению, rst2a валится при попытке вывести в PDF документы, содержащие кириллицу. У меня, по крайней мере. Кроме того, в нашем жестоком мире соединение с Интернетом есть не всегда, да и не каждый документ доверишь обрабатывать какому-то постороннему сайту. Поэтому встаёт закономерный вопрос об автономных инструментах для работы с RST.
Их есть у нас! Но их надо устанавливать. Вам наверняка удастся это сделать, в какой бы системе вы не работали, потому что инструменты в основном написаны на языке Python, который весьма толерантен к разным средам. Не знаю, насколько легко поставить интерпретатор Python и необходимые библиотеки в Windows и Mac OS, но если вы пользуетесь системой класса GNU/Linux, то вам, скорее всего, делать почти ничего не надо: всё есть в дистрибутивах. Все инструменты распространяются свободно.
Большинство инструментов поставляется с Python-библиотекой Docutils, от которой, собственно, и пошёл RST. (Кстати, её можно использовать в своих программах, например, для форматирования каких-нибудь материалов, выкладываемых на веб-сайт.) Это командные преобразователи, в частности
С HTML всё просто:
Для настройки внешнего вида получаемых HTML-страниц используется особая таблица стилей, которую можно указать через параметр командной строки
С ODT (OpenDocument Text) всё ничуть не сложнее:
Только стили здесь задаются уже не в виде CSS, а в формате OpenDocument. Самый лёгкий способ их изменить — взять документ
К сожалению, с PDF всё чуть сложнее. Можно преобразовать RST в ODT, а затем ODT в PDF с помощью OpenOffice.org Writer. Или можно преобразовать RST в LaTeX с помощью
В этой таблице нужно исправить в разделе
Инструмент
Из поставки Docutils можно отметить ещё две программы.
Простор для фантазии безграничен!
А если придумать свод правил для этих обозначений, то получается язык лёгкой разметки (по-английски — lightweight markup). Лёгкой в том смысле, что в ней легче набирать и читать исходный текст, чем в более развесистых языках вроде HTML. Следуя нехитрым правилам лёгкой разметки, мы можем преобразовывать наши документы во всевозможные форматы, не теряя достоинств простого текста: возможности написать и прочитать его где угодно.
Так как идея проста и красива, языков лёгкой разметки наплодилось довольно много. Один из самых известных и мощных — reStructuredText (сокращённо RST). Изначально он создавался для того, чтобы документировать код на языке Python, но вполне может применяться для любых других текстов. О том, как это сделать, я и расскажу в этом топике.
Языковой минимум
Маленький пример reStructuredText ================================= Введение -------- Списки делаются так: - логическое выделение: *обычное* и **пожёстче**; - ``литералы`` (для кода всякого); - гиперссылки: `Quick reStructuredText <http://docutils.sourceforge.net/docs/user/rst/quickref.html>`_ (там можно увидеть все элементы языка с примерами). Простой формат таблиц --------------------- ============ ============ Наименование Цена за 1 кг ============ ============ Яблоки 20 рупий Груши 14 рупий Апельсины 22 рупии ============ ============ Заключение ---------- Язык reStructuredText: 1. удобен; 2. понятен; 3. велик и могуч.
Как видно, синтаксис языка достаточно очевиден, чтобы написанный на RST документ можно было употреблять в «сыром» виде — в той же электропочте, например, или где там ещё бывает предпочтителен простой текст. Но чтобы документ радовал глаза читателей, нужно преобразовать его в другой вид, для чего есть разные инструменты.
RST to Anything
Добрые люди, понимающие прелесть RST, создали веб-сайт rst2a.com, который позволяет быстро превращать RST-документы во «что угодно». Под «чем угодно» понимаются форматы HTML и PDF, которые вам, наверное, знакомы. Ещё на сайте есть небольшая коллекция стилей, которые можно применять к получаемым документам. RST определяет смысл документа, а не его внешний вид — а значит, этот самый вид можно легко менять, просто подставляя другие стили (CSS-таблицы в случае HTML). Вот, можете попробовать: вставляете туда вышеприведённый документ, нажимаете «HTML», выбираете стиль по вкусу и жмёте «Download».
К сожалению, rst2a валится при попытке вывести в PDF документы, содержащие кириллицу. У меня, по крайней мере. Кроме того, в нашем жестоком мире соединение с Интернетом есть не всегда, да и не каждый документ доверишь обрабатывать какому-то постороннему сайту. Поэтому встаёт закономерный вопрос об автономных инструментах для работы с RST.
Автономные инструменты
Их есть у нас! Но их надо устанавливать. Вам наверняка удастся это сделать, в какой бы системе вы не работали, потому что инструменты в основном написаны на языке Python, который весьма толерантен к разным средам. Не знаю, насколько легко поставить интерпретатор Python и необходимые библиотеки в Windows и Mac OS, но если вы пользуетесь системой класса GNU/Linux, то вам, скорее всего, делать почти ничего не надо: всё есть в дистрибутивах. Все инструменты распространяются свободно.
Docutils
Большинство инструментов поставляется с Python-библиотекой Docutils, от которой, собственно, и пошёл RST. (Кстати, её можно использовать в своих программах, например, для форматирования каких-нибудь материалов, выкладываемых на веб-сайт.) Это командные преобразователи, в частности
rst2html
, rst2odt
и rst2latex
.С HTML всё просто:
rst2html ОТКУДА.txt КУДА.html
Для настройки внешнего вида получаемых HTML-страниц используется особая таблица стилей, которую можно указать через параметр командной строки
--stylesheet=ФАЙЛ.css
(она будет встроена в код страницы). Вполне подойдут те таблицы, что выложены на сайте rst2a. Если вас это волнует, rst2html
производит валидный XHTML-код.С ODT (OpenDocument Text) всё ничуть не сложнее:
rst2odt ОТКУДА.txt КУДА.odt
Только стили здесь задаются уже не в виде CSS, а в формате OpenDocument. Самый лёгкий способ их изменить — взять документ
styles.odt
, поставляемый вместе с rst2odt
, внести нужные изменения в его стили с помощью OpenOffice.org Writer, и сохранить куда-нибудь. После этого надо вызывать rst2odt
опять же с параметром --stylesheet
, указывая путь к документу со стилями. Смысл элементов стилевой таблицы для ODT задокументирован.Получение PDF
К сожалению, с PDF всё чуть сложнее. Можно преобразовать RST в ODT, а затем ODT в PDF с помощью OpenOffice.org Writer. Или можно преобразовать RST в LaTeX с помощью
rst2latex
, а затем LaTeX в PDF одним из способов. С другой стороны, можно воспользоваться отдельным инструментом rst2pdf
, который переводит RST напрямую в PDF посредством библиотеки ReportLab. В rst2pdf
я столкнулся с небольшой проблемой: используемые по умолчанию шрифты не поддерживают кириллицы (возможно, это моя локальная проблема). Указать желаемые шрифты, содержащие нужные символы, можно с помощью (сюрприз!) стилевой таблицы. Чтобы извлечь встроенную стилевую таблицу, надо отдать команду:rst2pdf --print-stylesheet
В этой таблице нужно исправить в разделе
fontsAlias
названия шрифтов на желаемые (я пробовал «Liberation Serif» и «Liberation Mono»), сохранить таблицу и подключить её, вот так:rst2pdf -s СТИЛИ.txt ОТКУДА.txt КУДА.pdf
Другие полезные средства
Инструмент
rest2web
позволяет создавать целиковые веб-сайты из RST-исходников по заданным шаблонам.Из поставки Docutils можно отметить ещё две программы.
rst2s5
строит презентации в формате S5 — на основе HTML, CSS и JavaScript. Наконец, rst2xml
создаёт XML-документы «родного» для Docutils типа. Эти документы можно затем преобразовать во что угодно известными средствами.Простор для фантазии безграничен!