Spec-Zone.ru › Markdown

Markdown

  • Обзор
    • Философия
    • Встраивание HTML
    • Автоматическое экранирование специальных символов
  • Блочные элементы
    • Абзацы и переносы строк
    • Заголовки
    • Блочные цитаты
    • Списки
    • Блоки кода
    • Горизонтальные линии
  • Элементы
    • Ссылки
    • Выделение
    • Код
    • Изображения
  • Разное
    • Экранирование обратной косой чертой
    • Автоматические ссылки

Примечание: Этот документ сам написан с использованием Markdown; вы можете посмотреть исходный текст, добавив ‘.text’ к URL.

Обзор

Философия

Markdown предназначен для того, чтобы быть столь же лёгким для чтения, как и для написания.

Однако читаемость ставится превыше всего. Документ в формате Markdown должен быть публикуем в таком виде, как есть, в виде простого текста, без видимых следов разметки или инструкций форматирования. Хотя синтаксис Markdown был вдохновлён несколькими существующими фильтрами «текст в HTML» — включая Setext, atx, Textile, reStructuredText, Grutatext и EtText — основным источником вдохновения для синтаксиса Markdown является формат обычных электронных писем.

В этой связи синтаксис Markdown полностью состоит из знаков препинания, которые были тщательно выбраны для того, чтобы выглядеть так, как они означают. Например, звёздочки вокруг слова на самом деле выглядят как *выделение*. Списки Markdown выглядят как списки. Даже блочные цитаты выглядят как цитированные отрывки текста, если вы когда-либо использовали электронную почту.

Встраивание HTML

Синтаксис Markdown предназначен для одной цели: для использования в качестве формата для *написания* для веб-сайтов.

Markdown не заменяет HTML, или даже близко к этому. Его синтаксис очень невелик, соответствует только очень небольшому подмножеству тегов HTML. Идея заключается *не* в том, чтобы создать синтаксис, который упростит вставку тегов HTML. По моему мнению, теги HTML уже легко вставить. Идея Markdown — сделать лёгким чтение, написание и редактирование текста. HTML — это формат *публикации*; Markdown — формат *написания*. Таким образом, синтаксис форматирования Markdown охватывает только те вопросы, которые могут быть переданы в простом тексте.

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

Единственные ограничения заключаются в том, что блочные HTML-элементы — например, <div>, <table>, <pre>, <p>, и т. д. — должны быть отделены от окружающего содержимого пустыми строками, и стартовый и конечный теги блока не должны быть отступом с помощью табуляции или пробелов. Markdown достаточно умен, чтобы не добавлять лишние (нежелательные) <p> теги вокруг блочных тегов HTML.

Например, чтобы добавить HTML-таблицу в статью Markdown:

This is a regular paragraph.

<table>
    <tr>
        <td>Foo</td>
    </tr>
</table>

This is another regular paragraph.

Обратите внимание, что синтаксис форматирования Markdown не обрабатывается внутри блочных HTML-тегов. Например, вы не можете использовать синтаксис Markdown *emphasis* внутри HTML-блока.

Теги HTML уровня — например, <span>, <cite>, или <del> — могут быть использованы где угодно в абзаце Markdown, пункте списка или заголовке. Если хотите, вы даже можете использовать теги HTML вместо форматирования Markdown; например, если вы предпочитаете использовать теги HTML <a> или <img> вместо синтаксиса Markdown для ссылок или изображений, пожалуйста, используйте их.

В отличие от блочных HTML-тегов, синтаксис Markdown *обрабатывается* внутри тегов уровня .

Автоматическое экранирование специальных символов

В HTML существуют два символа, требующих особого обращения: < и &. Левые угловые скобки используются для начала тегов; амперсанды используются для обозначения HTML-сущностей. Если вы хотите использовать их как символы, вы должны экранировать их в виде сущностей, например, &lt;, и &amp;.

Амперсанды, в частности, являются проблемой для веб-авторов. Если вы хотите написать о «AT&T», вы должны написать «AT&amp;T». Вам даже нужно экранировать амперсанды внутри URL-адресов. Таким образом, если вы хотите связаться с:

http://images.google.com/images?num=30&q=larry+bird

вам нужно закодировать URL-адрес как:

http://images.google.com/images?num=30&amp;q=larry+bird

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

Markdown позволяет вам использовать эти символы естественным образом, обрабатывая все необходимые экранирования за вас. Если вы используете амперсанд в качестве части HTML-сущности, он остаётся неизменным; в противном случае он будет преобразован в &amp;.

Итак, если вы хотите включить символ авторского права в свою статью, вы можете написать:

&copy;

и Markdown оставит его без изменений. Но если вы напишете:

AT&T

Markdown преобразует его в:

AT&amp;T

Аналогично, поскольку Markdown поддерживает встраивание HTML, если вы используете угловые скобки в качестве разделителей для HTML-тегов, Markdown будет рассматривать их как таковые. Но если вы напишете:

4 < 5

Markdown преобразует его в:

4 &lt; 5

Однако внутри блоков и блоков кода Markdown угловые скобки и амперсанды *всегда* автоматически кодируются. Это упрощает использование Markdown для написания о коде HTML. (По сравнению с исходным HTML, который является ужасным форматом для написания о синтаксисе HTML, потому что каждая < и & в вашем примере кода должна быть экранирована.)

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

Абзацы и переносы строк

Абзац — это одна или несколько последовательных строк текста, разделённых одной или несколькими пустыми строками. (Пустая строка — это любая строка, которая выглядит как пустая строка — строка, содержащая только пробелы или табуляции, считается пустой.) Обычные абзацы не должны иметь отступ с помощью пробелов или табуляции.

Следствие правила «одна или несколько последовательных строк текста» заключается в том, что Markdown поддерживает «жестко переносимый» текст абзацев. Это значительно отличается от большинства других форматов «текст в HTML» (включая опцию «Преобразовать переносы строк» в Movable Type), которые переводят каждый символ переноса строки в абзаце в тег <br />.

Когда вы *действительно* хотите вставить тег переноса строки <br /> с помощью Markdown, вы заканчиваете строку двумя или более пробелами, а затем нажимаете Enter.

Да, это требует немного больше усилий для создания <br />, но упрощённое правило «каждый перенос строки — это <br />» не сработает для Markdown. Подход Markdown, основанный на стиле электронной почты для блочных цитат и многоабзацных элементов списка, работает лучше — и выглядит лучше — когда вы форматируете их с жёсткими переносами.

Заголовки

Markdown поддерживает два стиля заголовков, Setext и atx.

Заголовки стиля Setext «подчёркнуты» с помощью знаков равенства (для заголовков первого уровня) и дефисов (для заголовков второго уровня). Например:

This is an H1
=============

This is an H2
-------------

Любое количество подчёркиваний = или - подойдёт.

Заголовки стиля Atx используют от 1 до 6 знаков # в начале строки, соответствующих уровням заголовков 1–6. Например:

# This is an H1

## This is an H2

###### This is an H6

По желанию, вы можете «закрыть» заголовки стиля Atx. Это чисто косметический эффект — вы можете использовать его, если считаете, что это выглядит лучше. Закрывающие символы # не обязательно должны совпадать с количеством символов #, используемых для открытия заголовка. (Количество открывающих символов # определяет уровень заголовка):

# This is an H1 #

## This is an H2 ##

### This is an H3 ######

Блочные цитаты

Markdown использует символы стиля электронной почты > для блочных цитат. Если вы знакомы с цитированием отрывков текста в электронном письме, то знаете, как создать блочную цитату в Markdown. Лучше всего, если вы используете жесткие переносы и ставите > перед каждой строкой:

> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
> consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
> Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
> 
> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
> id sem consectetuer libero luctus adipiscing.

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

> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.

> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
id sem consectetuer libero luctus adipiscing.

Блочные цитаты могут быть вложены (т. е. блочная цитата в блочной цитате), добавив дополнительные уровни >:

> This is the first level of quoting.
>
> > This is nested blockquote.
>
> Back to the first level.

Блочные цитаты могут содержать другие элементы Markdown, включая заголовки, списки и блоки кода:

> ## This is a header.
> 
> 1.   This is the first list item.
> 2.   This is the second list item.
> 
> Here's some example code:
> 
>     return shell_exec("echo $input | $markdown_script");

Любой достойный текстовый редактор должен упростить цитирование по аналогии с электронной почтой. Например, с помощью BBEdit вы можете выбрать фрагмент и выбрать «Увеличить уровень цитаты» в меню «Текст».

Списки

Markdown поддерживает упорядоченные (нумерованные) и неупорядоченные (пунктуальные) списки.

Неупорядоченные списки используют звёздочки, плюсики и дефисы — взаимозаменяемо — в качестве маркеров элементов списка:

*   Red
*   Green
*   Blue

эквивалентно:

+   Red
+   Green
+   Blue

и:

-   Red
-   Green
-   Blue

Упорядоченные списки используют цифры, за которыми следует точка:

1.  Bird
2.  McHale
3.  Parish

Важно отметить, что фактические числа, которые вы используете для маркировки списка, не влияют на вывод HTML, который создаёт Markdown. HTML, который Markdown создаёт из вышеуказанного списка, это:

<ol>
<li>Bird</li>
<li>McHale</li>
<li>Parish</li>
</ol>

Если бы вы вместо этого написали список в Markdown так:

1.  Bird
1.  McHale
1.  Parish

или даже так:

3. Bird
1. McHale
8. Parish

вы бы получили тот же самый вывод HTML. Суть в том, что, если хотите, вы можете использовать порядковые номера в своих упорядоченных списках Markdown, чтобы номера в исходном тексте соответствовали номерам в опубликованном HTML. Но если хотите быть ленивыми, не обязательно.

Однако, если вы используете ленивое нумерование списков, вы всё равно должны начинать список с числа 1. В какой-то момент в будущем Markdown может поддерживать начало упорядоченных списков с произвольного числа.

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

Чтобы списки выглядели красиво, вы можете обернуть элементы выравниванием с красной строкой:

*   Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
    Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
    viverra nec, fringilla in, laoreet vitae, risus.
*   Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
    Suspendisse id sem consectetuer libero luctus adipiscing.

Но если вы хотите быть ленивыми, не обязательно:

*   Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
viverra nec, fringilla in, laoreet vitae, risus.
*   Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
Suspendisse id sem consectetuer libero luctus adipiscing.

Если пункты списка разделены пустыми строками, Markdown обернёт элементы в теги <p> в выходном HTML. Например, этот ввод:

*   Bird
*   Magic

превратится в:

<ul>
<li>Bird</li>
<li>Magic</li>
</ul>

Но это:

*   Bird

*   Magic

превратится в:

<ul>
<li><p>Bird</p></li>
<li><p>Magic</p></li>
</ul>

Элементы списка могут состоять из нескольких абзацев. Каждый последующий абзац в элементе списка должен иметь отступ в 4 пробела или один табулятор:

1.  This is a list item with two paragraphs. Lorem ipsum dolor
    sit amet, consectetuer adipiscing elit. Aliquam hendrerit
    mi posuere lectus.

    Vestibulum enim wisi, viverra nec, fringilla in, laoreet
    vitae, risus. Donec sit amet nisl. Aliquam semper ipsum
    sit amet velit.

2.  Suspendisse id sem consectetuer libero luctus adipiscing.

Красиво выглядит, если вы отступаете каждую строку последующих абзацев, но и здесь Markdown позволит вам быть ленивыми:

*   This is a list item with two paragraphs.

    This is the second paragraph in the list item. You're
only required to indent the first line. Lorem ipsum dolor
sit amet, consectetuer adipiscing elit.

*   Another item in the same list.

Чтобы поместить блок цитаты внутри пункта списка, разделители блока цитаты должны быть отступом:

*   A list item with a blockquote:

    > This is a blockquote
    > inside a list item.

Чтобы поместить блок кода внутри пункта списка, блок кода должен быть отступом дважды — 8 пробелов или два табулятора:

*   A list item with a code block:

        <code goes here>

Стоит отметить, что можно случайно активировать нумерованный список, написав что-то вроде этого:

1986. What a great season.

Другими словами, последовательность «цифра-точка-пробел» в начале строки. Чтобы этого избежать, можно экранировать точку обратным слешем:

1986\. What a great season.

Блоки кода

Блоки предварительно отформатированного кода используются для записи кода программирования или разметки. Строки блока кода интерпретируются буквально, а не как обычные абзацы. Markdown заключает блок кода в теги <pre> и <code>.

Чтобы создать блок кода в Markdown, просто отступите каждую строку блока хотя бы на 4 пробела или 1 табулятор. Например, при таком вводе:

This is a normal paragraph:

    This is a code block.

Markdown сгенерирует:

<p>This is a normal paragraph:</p>

<pre><code>This is a code block.
</code></pre>

Один уровень отступа — 4 пробела или 1 табуляция — удаляется из каждой строки блока кода. Например, это:

Here is an example of AppleScript:

    tell application "Foo"
        beep
    end tell

превратится в:

<p>Here is an example of AppleScript:</p>

<pre><code>tell application "Foo"
    beep
end tell
</code></pre>

Блок кода продолжается до тех пор, пока не встретится строка без отступа (или конец статьи).

Внутри блока кода амперсанды (&) и угловые скобки (< и >) автоматически преобразуются в HTML-сущности. Это очень упрощает вставку примеров кода HTML с помощью Markdown — просто вставьте его и отступайте, и Markdown позаботится о кодировании амперсандов и угловых скобок. Например, это:

    <div class="footer">
        &copy; 2004 Foo Corporation
    </div>

превратится в:

<pre><code>&lt;div class="footer"&gt;
    &amp;copy; 2004 Foo Corporation
&lt;/div&gt;
</code></pre>

Обычный синтаксис Markdown не обрабатывается внутри блоков кода. Например, звёздочки — это просто буквальные звёздочки внутри блока кода. Это означает, что легко использовать Markdown для написания о собственном синтаксисе Markdown.

Горизонтальные линии

Вы можете создать тег горизонтальной линии (<hr />) путем размещения трех или более дефисов, звёздочек или подчеркиваний в отдельной строке. При необходимости вы можете использовать пробелы между дефисами или звёздочками. Каждая из следующих строк создаст горизонтальную линию:

* * *

***

*****

- - -

---------------------------------------

Элементы span

Ссылки

Markdown поддерживает два типа ссылок: встроенные и ссылочные.

В обоих стилях текст ссылки ограничен квадратными скобками.

Чтобы создать встроенную ссылку, используйте набор обычных скобок сразу после закрывающей квадратной скобки текста ссылки. В скобки поместите URL-адрес, к которому должна вести ссылка, а также необязательный заголовок ссылки, заключенный в кавычки. Например:

This is [an example](http://example.com/ "Title") inline link.

[This link](http://example.net/) has no title attribute.

Что даст:

<p>This is <a href="http://example.com/" title="Title">
an example</a> inline link.</p>

<p><a href="http://example.net/">This link</a> has no
title attribute.</p>

Если вы ссылаетесь на локальный ресурс на том же сервере, можно использовать относительные пути:

See my [About](/about/) page for details.   

Ссылки ссылочного типа используют вторую пару квадратных скобок, в которых вы размещаете выбранное вами имя для идентификации ссылки:

This is [an example][id] reference-style link.

Можно использовать пробел для разделения пар скобок:

This is [an example] [id] reference-style link.

Затем, в любом месте документа, вы определяем имя ссылки следующим образом, в отдельной строке:

[id]: http://example.com/  "Optional Title Here"

То есть:

  • Квадратные скобки, содержащие идентификатор ссылки (необязательно отступы от левого края, используя до трёх пробелов);
  • затем двоеточие;
  • затем один или несколько пробелов (или табуляций);
  • затем URL-адрес ссылки;
  • необязательно, заголовок атрибута ссылки в двойных или одинарных кавычках, или в скобках.

Следующие три определения ссылок эквивалентны:

[foo]: http://example.com/  "Optional Title Here"
[foo]: http://example.com/  'Optional Title Here'
[foo]: http://example.com/  (Optional Title Here)

Примечание: Известна ошибка в Markdown.pl 1.0.1, которая не позволяет использовать одинарные кавычки для определения заголовков ссылок.

URL ссылки может быть (необязательно) заключен в угловые скобки:

[id]: <http://example.com/>  "Optional Title Here"

Вы можете поместить атрибут заголовка в следующей строке и использовать дополнительные пробелы или табуляции для выравнивания, что выглядит лучше с длинными URL-адресами:

[id]: http://example.com/longish/path/to/resource/here
    "Optional Title Here"

Определения ссылок используются только для создания ссылок во время обработки Markdown и удаляются из вашего документа в HTML-выводе.

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

[link text][a]
[link text][A]

эквивалентны.

Неявное имя ссылки — это сокращение, которое позволяет опустить имя ссылки, в этом случае текст ссылки используется как имя. Просто используйте пустую пару квадратных скобок — например, чтобы связать слово «Google» с веб-сайтом google.com, можно просто написать:

[Google][]

А затем определить ссылку:

[Google]: http://google.com/

Поскольку имена ссылок могут содержать пробелы, это сокращение работает даже для нескольких слов в тексте ссылки:

Visit [Daring Fireball][] for more information.

А затем определить ссылку:

[Daring Fireball]: http://daringfireball.net/

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

Вот пример использования ссылок ссылочного типа:

I get 10 times more traffic from [Google] [1] than from
[Yahoo] [2] or [MSN] [3].

  [1]: http://google.com/        "Google"
  [2]: http://search.yahoo.com/  "Yahoo Search"
  [3]: http://search.msn.com/    "MSN Search"

Используя сокращение неявного имени ссылки, можно вместо этого написать:

I get 10 times more traffic from [Google][] than from
[Yahoo][] or [MSN][].

  [google]: http://google.com/        "Google"
  [yahoo]:  http://search.yahoo.com/  "Yahoo Search"
  [msn]:    http://search.msn.com/    "MSN Search"

Оба вышеприведённых примера дадут следующий HTML-вывод:

<p>I get 10 times more traffic from <a href="http://google.com/"
title="Google">Google</a> than from
<a href="http://search.yahoo.com/" title="Yahoo Search">Yahoo</a>
or <a href="http://search.msn.com/" title="MSN Search">MSN</a>.</p>

Для сравнения, вот тот же абзац, написанный с использованием встроенного стиля ссылок Markdown:

I get 10 times more traffic from [Google](http://google.com/ "Google")
than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or
[MSN](http://search.msn.com/ "MSN Search").

Суть ссылок ссылочного типа не в том, что их легче писать. Суть в том, что при использовании ссылок ссылочного типа исходный документ значительно более читабельный. Сравните вышеприведённые примеры: используя ссылки ссылочного типа, длина самого абзаца составляет всего 81 символ; при использовании встроенных ссылок — 176 символов; а в сыром HTML — 234 символа. В сыром HTML больше разметки, чем текста.

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

Выделение

Markdown обрабатывает звёздочки (*) и нижние подчеркивания (_) как индикаторы выделения. Текст, заключённый в одну * или _, будет заключён в HTML-тег <em>; двойные * или _ будут заключены в HTML-тег <strong>. Например, этот ввод:

*single asterisks*

_single underscores_

**double asterisks**

__double underscores__

сгенерирует:

<em>single asterisks</em>

<em>single underscores</em>

<strong>double asterisks</strong>

<strong>double underscores</strong>

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

Выделение может использоваться посреди слова:

un*frigging*believable

Но если вы поместите * или _ в пробелы, они будут обрабатываться как буквальные звёздочки или нижние подчеркивания.

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

\*this text is surrounded by literal asterisks\*

Код

Чтобы указать фрагмент кода, заключите его в обратные кавычки (`). В отличие от блока предварительно отформатированного кода, фрагмент кода указывает код внутри обычного абзаца. Например:

Use the `printf()` function.

сгенерирует:

<p>Use the <code>printf()</code> function.</p>

Чтобы включить буквальный символ обратной кавычки в фрагмент кода, можно использовать несколько обратных кавычек в качестве открывающего и закрывающего разделителя:

``There is a literal backtick (`) here.``

что даст:

<p><code>There is a literal backtick (`) here.</code></p>

Разделители обратных кавычек, окружающие фрагмент кода, могут содержать пробелы — один после открывающей, один перед закрывающей. Это позволяет размещать буквальные символы обратных кавычек в начале или конце фрагмента кода:

A single backtick in a code span: `` ` ``

A backtick-delimited string in a code span: `` `foo` ``

сгенерирует:

<p>A single backtick in a code span: <code>`</code></p>

<p>A backtick-delimited string in a code span: <code>`foo`</code></p>

С фрагментом кода амперсанды и угловые скобки кодируются как HTML-сущности автоматически, что упрощает вставку примеров тегов HTML. Markdown преобразует это:

Please don't use any `<blink>` tags.

в:

<p>Please don't use any <code>&lt;blink&gt;</code> tags.</p>

Вы можете написать это:

`&#8212;` is the decimal-encoded equivalent of `&mdash;`.

чтобы получить:

<p><code>&amp;#8212;</code> is the decimal-encoded
equivalent of <code>&amp;mdash;</code>.</p>

Изображения

Надо признать, разработать «естественный» синтаксис для размещения изображений в формате простого текстового документа довольно сложно.

Markdown использует синтаксис изображения, напоминающий синтаксис ссылок, позволяющий использовать два стиля: встроенный и ссылочный.

Встроенный синтаксис изображения выглядит так:

![Alt text](/path/to/img.jpg)

![Alt text](/path/to/img.jpg "Optional title")

То есть:

  • Восклицательный знак: !;
  • затем пара квадратных скобок, содержащих текст атрибута alt для изображения;
  • затем пара круглых скобок, содержащих URL-адрес или путь к изображению и необязательный атрибут title в двойных или одинарных кавычках.

Ссылка ссылочного типа выглядит так:

![Alt text][id]

Где «id» — это имя определённой ссылки на изображение. Ссылки на изображения определяются с помощью синтаксиса, идентичного ссылкам:

[id]: url/to/image  "Optional title attribute"

На данный момент в Markdown нет синтаксиса для указания размеров изображения; если это важно для вас, вы можете просто использовать обычные HTML-теги <img>.

Разное

Автоматические ссылки

Markdown поддерживает сокращённый стиль для создания «автоматических» ссылок для URL-адресов и адресов электронной почты: просто заключите URL-адрес или адрес электронной почты в угловые скобки. Это означает, что если вы хотите отобразить фактический текст URL-адреса или адреса электронной почты, а также чтобы он был нажимаемой ссылкой, вы можете сделать это так:

<http://example.com/>

Markdown преобразует это в:

<a href="http://example.com/">http://example.com/</a>

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

<address@example.com>

в что-то вроде этого:

<a href="&#x6D;&#x61;i&#x6C;&#x74;&#x6F;:&#x61;&#x64;&#x64;&#x72;&#x65;
&#115;&#115;&#64;&#101;&#120;&#x61;&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;
&#109;">&#x61;&#x64;&#x64;&#x72;&#x65;&#115;&#115;&#64;&#101;&#120;&#x61;
&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;&#109;</a>

что в браузере отобразится как нажимаемая ссылка на «address@example.com».

(Этот трюк с кодировкой сущностей действительно обманет многих, если не большинство, спам-ботов, собирающих адреса, но он определённо не обманет всех. Это лучше, чем ничего, но опубликованный таким образом адрес, вероятно, в конечном итоге начнёт получать спам.)

Экранирование обратным слешем

Markdown позволяет использовать экранирование обратным слешем для получения буквальных символов, которые в противном случае имели бы специальное значение в синтаксисе форматирования Markdown. Например, если вы хотите заключить слово в буквальные звёздочки (вместо HTML-тега <em>), вы можете использовать обратные слэши перед звёздочками, как в этом примере:

\*literal asterisks\*

Markdown предоставляет экранирование обратным слешем для следующих символов:

\   backslash
`   backtick
*   asterisk
_   underscore
{}  curly braces
[]  square brackets
()  parentheses
#   hash mark
+   plus sign
-   minus sign (hyphen)
.   dot
!   exclamation mark

© 2004 John Gruber
Licensed under the BSD License.
https://daringfireball.net/projects/markdown/syntax

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API