Textile

Поделись знанием:
Перейти к: навигация, поиск

Textile — простой язык разметки, позволяющий пользователям получать код HTML из своего текста. Разработан [www.textism.com/ Dean Allen]. Используется в CMS Textpattern и некоторых других.





Синтаксис

Textile автоматически преобразует текст в разметку, отслеживая абзацы в тексте. Абзацы, отделяемые пустой строкой, преобразуются в элементы HTML <p>.

Переводы строк автоматически преобразуются в элементы HTML <br />.

В тексте можно непосредственно использовать HTML-разметку, когда возможностей Textile не хватает для необходимого форматирования в документе. Теги HTML не обрабатываются только внутри элементов <pre> и <code>.

Строковые элементы

Textile HTML Отображение
_выделение_ <em>выделение</em> Это выделенный текст
*усиление* <strong>усиление</strong> Это усиленный текст
__курсив__ <i>курсив</i> Это курсивный текст
**полужирный** <b>полужирный</b> Это полужирный текст
 ??цитата?? <cite>цитата</cite> Это цитата
-удалённый текст- <del>удалённый текст</del> Это удалённый текст
+вставленный текст+ <ins>вставленный текст</ins> Это вставленный текст
^надстрочный^ <sup>надстрочный</sup> Это надстрочный текст
~подстрочный~ <sub>подстрочный</sub> Это подстрочный текст
 %{стиль}фрагмент% <span style="стиль">фрагмент</span> Это фрагмент текста
@код@ <code>код</code> Это код: function code(str)

Блочные элементы

Модификаторы блочных элементов обычно заканчиваются точкой и отделяются от содержимого пробелом.

Textile HTML Описание
hn. <hn> Заголовок уровня n
p. <p> Абзац
bq. <blockquote> Блочная цитата
pre. <pre> Форматированный код
bc. <pre><code> Программный код (комбинация из двух HTML-элементов)

Ссылки

Текст ссылки заключается в кавычки и отделяется от URL двоеточием:

Textile HTML
"Textile":textile.thresholdstate.com/ <a href="textile.thresholdstate.com/">Textile</a>

Пунктуация и подстановки

Автоматически исправляются[1] при конвертировании в XHTML следующие сочетания знаков:

Textile HTML Отображение
"кавычки" &#8220;кавычки&#8221; “кавычки”
'кавычки' &#8216;кавычки&#8217; ‘кавычки’
длинное -- тире длинное&#8212;тире длинное—тире
короткое - тире короткое &#8211; тире короткое – тире
д'Орсе д&#8216;Орсе д’Орсе
многоточие... многоточие&#8230; многоточие…
2 x 2 = 4 2&#215;2 = 4 2×2 = 4
(c) Dean Allen &#169; Dean Allen © Dean Allen
Textile(r) Textile&#174; Textile®
Textpattern(tm) Textpattern&#8482; Textpattern™

Атрибуты элементов

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

Синтаксис

Атрибут Описание
(класс) Класс элемента
(#id) Идентификатор элемента
{стиль} Стиль элемента
[язык] Язык элемента (сокращение)

Атрибуты могут использоваться в комбинированной записи, например:

(class#id)

Атрибуты строковых элементов

Textile HTML
 %{color:red}red% <span style="color:red">red</span>
 %[fr]rouge% <span lang="fr">rouge</span>
_(big)red_ <em class="big">red</em>

Атрибуты блочных элементов

Textile HTML
p(bob). A paragraph <p class="bob">A paragraph</p>
p{color:#ddd}. A paragraph <p style="color:#ddd">A paragraph</p>
p[fr]. A paragraph <p lang="fr">A paragraph</p>

Отступы и выравнивание

Textile Описание
p<. Выравнивание влево
p>. Выравнивание вправо
p=. Выравнивание по центру
p<>. Выравнивание по ширине
p(., p((. Отступ слева на 1em, 2em и т. д.
p)., p)). Отступ справа на 1em, 2em и т. д.

Примеры

Textile Описание
h2()>. Заголовок 2-го уровня, выравнивание вправо, отступ на 1em с обеих сторон
h3=. Заголовок 3-го уровня, выравнивание по центру
 !</image.gif! Изображение с выравниванием по центру
p[no]{color:red}. Абзац на норвежском языке, цвет: красный.

Выравнивание

Textile поддерживает четыре типа выравнивания содержимого: влево, вправо, по центру и по ширине.

Модификатор Выравнивание
> вправо
< влево
= по центру
<> по ширине

Вертикальное выравнивание устанавливается следующими модификаторами:

Модификатор Выравнивание
^ по верху
~ по низу

Таблицы

Таблицы создаются разделением ячеек вертикальной чертой (ячейки заголовков выделяются подчёркиванием):

|_. заголовок 1|_. заголовок 2|_. заголовок 3|
|первый|ряд|таблицы|
|второй|ряд|таблицы|

Атрибуты могут применяться как к таблице в целом[2], так и к её элементам (строкам и ячейкам) индивидуально:

Textile HTML
table{width:100%}=. <table style="width:100%;text-align:center;">
{background:#ddd}. |первый|ряд|таблицы| <tr style="background:#ddd;"><td>первый</td><td>ряд</td><td>таблицы</td></tr>
|{background:red}. второй|ряд|таблицы| <tr><td style="background:red;">второй</td><td>ряд</td><td>таблицы</td></tr>

Объединение ячеек производится следующим образом:

Textile HTML
|\2. Две колонки|таблицы| <tr><td colspan="2">Две колонки</td><td>таблицы</td></tr>
|/2. Две строки|таблицы| <tr><td rowspan="2">Две строки</td><td>таблицы</td></tr>

Вертикальное выравнивание

Textile HTML
^. |четвёртый|ряд|таблицы| <tr style="vertical-align:top;"><td>четвёртый</td><td>ряд</td><td>таблицы</td></tr>
~. |пятый|ряд|таблицы| <tr style="vertical-align:bottom;"><td>пятый</td><td>ряд</td><td>таблицы</td></tr>

Списки

Textile поддерживает как маркированные, так и нумерованные списки. Списки могут быть вложенными, один тип списка может быть вложен в другой. Уровень вложения списков не ограничен.

Textile HTML
* Маркированный список <ul>
<li>Маркированный список</li>
</ul>
# Нумерованный список <ol>
<li>Нумерованный список</li>
</ol>
* Пункт 1
** Подпункт 1-1
** Подпункт 1-2
* Пункт 2
## Подпункт 2-1
## Подпункт 2-2

<ul>
<li>Пункт 1
<ul>
<li>Подпункт 1-1</li>
<li>Подпункт 1-2</li>
</ul></li>
<li>Пункт 2
<ol>
<li>Подпункт 2-1</li>
<li>Подпункт 2-2</li>
</ol></li>
</ul>

Изображения

Ссылка на изображение окружается восклицательными знаками и может быть дополнена гиперссылкой и альтернативным текстом:

Textile HTML
!textist.gif! <img src="textist.gif" />
!textist.gif(Textist)! <img src="textist.gif" title="Textist" alt="Textist" />
!textist.gif(Textist)!:textism.com <a href="textism.com"><img src="textist.gif" title="Textist" alt="Textist" /></a>

Сокращения (акронимы)

Акронимы автоматически распознаются при нахождении трёх или более знаков в верхнем регистре и описания в скобках непосредственно за ними (без пробела). Дополнительно текст акронима может заключаться в строковый элемент <span> с определённым классом.

Textile HTML
CSS(Cascading Style Sheets) <acronym title="Cascading Style Sheets"><span class="caps">CSS</span></acronym>

Сноски

Ссылки в тексте на сноски заключаются в квадратные скобки. Для создания сноски, соответствующей ссылке в тексте, необходимо создать абзац, начинающийся с fn<номер_сноски>.:

Textile HTML
См. лопата[1]. См. лопата<sup><a href="#fn1">1</a></sup>.
fn1. Лопата — хозяйственный инструмент. <p id="fn1"><sup>1</sup> Лопата - хозяйственный инструмент.</p>

HTML

==здесь <b>textile</b> не обрабатывается==

notextile. здесь <b>textile</b> не обрабатывается

Напишите отзыв о статье "Textile"

Примечания

  1. К сожалению, используются нормы английской типографики. Локализация зависит от реализации Textile или настроек дополнения CMS.
  2. Для применения атрибутов к таблице перед её началом необходимо указать дополнительный тег table.

Ссылки

  • [txstyle.org/ Домашняя страница Textile]

Реализации

  • [search.cpan.org/~bchoate/Text-Textile/lib/Text/Textile.pm Text::Textile], реализация Textile на Perl.
  • [jrm.cc/extras/live-textile-preview.php Live Textile Preview], конвертирование текста на Javascript.
  • [www.bradchoate.com/mt-plugins/textile MT-Textile], реализация Textile на Perl для Movable Type.
  • [cheeseshop.python.org/pypi/textile PyTextile], реализация Textile на Python.
  • [redcloth.org/ RedCloth], реализация Textile на Ruby.
  • [www.agresticism.org/kitchen/ports/textile/download/ vbsTextile], реализация Textile для Microsoft Active Server Pages
  • [textile.riaforge.org/ Textile UDF], реализация Textile для ColdFusion.
  • [www.plink-search.com/blog.html?fetch=news&get=PLink_Textile Plextile], реализация Textile на Java
  • [philwilson.org/projects/jtextile/ JTextile], реализация Textile на Java
  • [sourceforge.net/projects/textile4j Textile4j], реализация Textile на Java
  • [textile-j.dev.java.net/ Textile-j], реализация Textile на Java, включающая компоненты для SWT и JFace, а также дополнение к Eclipse
  • [jimandlissa.com/project/textilephp TextilePHP], PHP-версия Perl-модуля Textile (добавлены некоторые возможности Perl-версии, не входящие в PHP-версию Textile).
  • [framework.zend.com/manual/1.10/en/zend.markup.html Zend_Markup] PHP реализация Textile во фреймворке Zend Framework
  • [www.codeplex.com/textilenet Textile.NET], реализация Textile на C#/.NET
  • [code.google.com/p/octalforty-brushie/ octalforty Brushie Text], ещё одна реализация Textile на C#/.NET
  • [www.cliki.net/Texticl Texticl], реализация Textile на Common Lisp

Руководства

  • [textpattern.com/help/ Справка] Textpattern, поиск информации о тегах по ключевым словам.

Прочее

  • [www.textism.com/tools/textile/ Textism], домашняя страница Textile на сайте разработчика.
  • [nigelball.org/2007/09/04/textile-markup-with-mediawiki-revisited Textile Markup with MediaWiki], использование Textile на сайтах MediaWiki.
  • [xilize.sourceforge.net/ Xilize], утилита для генерации документов с разметкой Textile (доступно дополнение для редактора jEdit).
  • [textpattern.ru/forum/ Форум] русскоязычных пользователей CMS Textpattern.
  • [txt.io/ Txt.io] - простой, минималистичный блогосервис, для разметки используется Textile.

Отрывок, характеризующий Textile

Он вышел, быстро подрагивая на каждом шагу и откинув несколько назад голову. Вся его потолстевшая, короткая фигура с широкими толстыми плечами и невольно выставленным вперед животом и грудью имела тот представительный, осанистый вид, который имеют в холе живущие сорокалетние люди. Кроме того, видно было, что он в этот день находился в самом хорошем расположении духа.
Он кивнул головою, отвечая на низкий и почтительный поклон Балашева, и, подойдя к нему, тотчас же стал говорить как человек, дорожащий всякой минутой своего времени и не снисходящий до того, чтобы приготавливать свои речи, а уверенный в том, что он всегда скажет хорошо и что нужно сказать.
– Здравствуйте, генерал! – сказал он. – Я получил письмо императора Александра, которое вы доставили, и очень рад вас видеть. – Он взглянул в лицо Балашева своими большими глазами и тотчас же стал смотреть вперед мимо него.
Очевидно было, что его не интересовала нисколько личность Балашева. Видно было, что только то, что происходило в его душе, имело интерес для него. Все, что было вне его, не имело для него значения, потому что все в мире, как ему казалось, зависело только от его воли.
– Я не желаю и не желал войны, – сказал он, – но меня вынудили к ней. Я и теперь (он сказал это слово с ударением) готов принять все объяснения, которые вы можете дать мне. – И он ясно и коротко стал излагать причины своего неудовольствия против русского правительства.
Судя по умеренно спокойному и дружелюбному тону, с которым говорил французский император, Балашев был твердо убежден, что он желает мира и намерен вступить в переговоры.
– Sire! L'Empereur, mon maitre, [Ваше величество! Император, государь мой,] – начал Балашев давно приготовленную речь, когда Наполеон, окончив свою речь, вопросительно взглянул на русского посла; но взгляд устремленных на него глаз императора смутил его. «Вы смущены – оправьтесь», – как будто сказал Наполеон, с чуть заметной улыбкой оглядывая мундир и шпагу Балашева. Балашев оправился и начал говорить. Он сказал, что император Александр не считает достаточной причиной для войны требование паспортов Куракиным, что Куракин поступил так по своему произволу и без согласия на то государя, что император Александр не желает войны и что с Англией нет никаких сношений.
– Еще нет, – вставил Наполеон и, как будто боясь отдаться своему чувству, нахмурился и слегка кивнул головой, давая этим чувствовать Балашеву, что он может продолжать.
Высказав все, что ему было приказано, Балашев сказал, что император Александр желает мира, но не приступит к переговорам иначе, как с тем условием, чтобы… Тут Балашев замялся: он вспомнил те слова, которые император Александр не написал в письме, но которые непременно приказал вставить в рескрипт Салтыкову и которые приказал Балашеву передать Наполеону. Балашев помнил про эти слова: «пока ни один вооруженный неприятель не останется на земле русской», но какое то сложное чувство удержало его. Он не мог сказать этих слов, хотя и хотел это сделать. Он замялся и сказал: с условием, чтобы французские войска отступили за Неман.
Наполеон заметил смущение Балашева при высказывании последних слов; лицо его дрогнуло, левая икра ноги начала мерно дрожать. Не сходя с места, он голосом, более высоким и поспешным, чем прежде, начал говорить. Во время последующей речи Балашев, не раз опуская глаза, невольно наблюдал дрожанье икры в левой ноге Наполеона, которое тем более усиливалось, чем более он возвышал голос.
– Я желаю мира не менее императора Александра, – начал он. – Не я ли осьмнадцать месяцев делаю все, чтобы получить его? Я осьмнадцать месяцев жду объяснений. Но для того, чтобы начать переговоры, чего же требуют от меня? – сказал он, нахмурившись и делая энергически вопросительный жест своей маленькой белой и пухлой рукой.
– Отступления войск за Неман, государь, – сказал Балашев.
– За Неман? – повторил Наполеон. – Так теперь вы хотите, чтобы отступили за Неман – только за Неман? – повторил Наполеон, прямо взглянув на Балашева.
Балашев почтительно наклонил голову.
Вместо требования четыре месяца тому назад отступить из Номерании, теперь требовали отступить только за Неман. Наполеон быстро повернулся и стал ходить по комнате.
– Вы говорите, что от меня требуют отступления за Неман для начатия переговоров; но от меня требовали точно так же два месяца тому назад отступления за Одер и Вислу, и, несмотря на то, вы согласны вести переговоры.
Он молча прошел от одного угла комнаты до другого и опять остановился против Балашева. Лицо его как будто окаменело в своем строгом выражении, и левая нога дрожала еще быстрее, чем прежде. Это дрожанье левой икры Наполеон знал за собой. La vibration de mon mollet gauche est un grand signe chez moi, [Дрожание моей левой икры есть великий признак,] – говорил он впоследствии.
– Такие предложения, как то, чтобы очистить Одер и Вислу, можно делать принцу Баденскому, а не мне, – совершенно неожиданно для себя почти вскрикнул Наполеон. – Ежели бы вы мне дали Петербуг и Москву, я бы не принял этих условий. Вы говорите, я начал войну? А кто прежде приехал к армии? – император Александр, а не я. И вы предлагаете мне переговоры тогда, как я издержал миллионы, тогда как вы в союзе с Англией и когда ваше положение дурно – вы предлагаете мне переговоры! А какая цель вашего союза с Англией? Что она дала вам? – говорил он поспешно, очевидно, уже направляя свою речь не для того, чтобы высказать выгоды заключения мира и обсудить его возможность, а только для того, чтобы доказать и свою правоту, и свою силу, и чтобы доказать неправоту и ошибки Александра.
Вступление его речи было сделано, очевидно, с целью выказать выгоду своего положения и показать, что, несмотря на то, он принимает открытие переговоров. Но он уже начал говорить, и чем больше он говорил, тем менее он был в состоянии управлять своей речью.
Вся цель его речи теперь уже, очевидно, была в том, чтобы только возвысить себя и оскорбить Александра, то есть именно сделать то самое, чего он менее всего хотел при начале свидания.
– Говорят, вы заключили мир с турками?
Балашев утвердительно наклонил голову.
– Мир заключен… – начал он. Но Наполеон не дал ему говорить. Ему, видно, нужно было говорить самому, одному, и он продолжал говорить с тем красноречием и невоздержанием раздраженности, к которому так склонны балованные люди.
– Да, я знаю, вы заключили мир с турками, не получив Молдавии и Валахии. А я бы дал вашему государю эти провинции так же, как я дал ему Финляндию. Да, – продолжал он, – я обещал и дал бы императору Александру Молдавию и Валахию, а теперь он не будет иметь этих прекрасных провинций. Он бы мог, однако, присоединить их к своей империи, и в одно царствование он бы расширил Россию от Ботнического залива до устьев Дуная. Катерина Великая не могла бы сделать более, – говорил Наполеон, все более и более разгораясь, ходя по комнате и повторяя Балашеву почти те же слова, которые ои говорил самому Александру в Тильзите. – Tout cela il l'aurait du a mon amitie… Ah! quel beau regne, quel beau regne! – повторил он несколько раз, остановился, достал золотую табакерку из кармана и жадно потянул из нее носом.
– Quel beau regne aurait pu etre celui de l'Empereur Alexandre! [Всем этим он был бы обязан моей дружбе… О, какое прекрасное царствование, какое прекрасное царствование! О, какое прекрасное царствование могло бы быть царствование императора Александра!]
Он с сожалением взглянул на Балашева, и только что Балашев хотел заметить что то, как он опять поспешно перебил его.
– Чего он мог желать и искать такого, чего бы он не нашел в моей дружбе?.. – сказал Наполеон, с недоумением пожимая плечами. – Нет, он нашел лучшим окружить себя моими врагами, и кем же? – продолжал он. – Он призвал к себе Штейнов, Армфельдов, Винцингероде, Бенигсенов, Штейн – прогнанный из своего отечества изменник, Армфельд – развратник и интриган, Винцингероде – беглый подданный Франции, Бенигсен несколько более военный, чем другие, но все таки неспособный, который ничего не умел сделать в 1807 году и который бы должен возбуждать в императоре Александре ужасные воспоминания… Положим, ежели бы они были способны, можно бы их употреблять, – продолжал Наполеон, едва успевая словом поспевать за беспрестанно возникающими соображениями, показывающими ему его правоту или силу (что в его понятии было одно и то же), – но и того нет: они не годятся ни для войны, ни для мира. Барклай, говорят, дельнее их всех; но я этого не скажу, судя по его первым движениям. А они что делают? Что делают все эти придворные! Пфуль предлагает, Армфельд спорит, Бенигсен рассматривает, а Барклай, призванный действовать, не знает, на что решиться, и время проходит. Один Багратион – военный человек. Он глуп, но у него есть опытность, глазомер и решительность… И что за роль играет ваш молодой государь в этой безобразной толпе. Они его компрометируют и на него сваливают ответственность всего совершающегося. Un souverain ne doit etre a l'armee que quand il est general, [Государь должен находиться при армии только тогда, когда он полководец,] – сказал он, очевидно, посылая эти слова прямо как вызов в лицо государя. Наполеон знал, как желал император Александр быть полководцем.
– Уже неделя, как началась кампания, и вы не сумели защитить Вильну. Вы разрезаны надвое и прогнаны из польских провинций. Ваша армия ропщет…