В первую очередь далее пойдет речь о ссылках в контексте языка разметки pod6. Это более развитый, но пока менее распространенный, чем markdown язык разметки.

Ссылки

Какие ссылки могут быть

  • внешними

https://example.com/readme
https://example.com/readme#sect1
  • внутренними

http:mytutorial/faq.html
http:../examples/index.html
  • aбсолютными

file:/usr/local/lib/.configrc
  • относительными

Then, edit the local config file (that is, either
L<file:.configrc> or L<file:CONFIG/.configrc>.

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

Please forward bug reports to L<mailto:devnull@rt.cpan.org>

На международный идентификатор книги:

The Perl Journal was a registered
serial publication (L<issn:1087-903X>)

Или на документ:

You may wish to use L<doc:Data::Dumper> to
view the results. See also: L<doc:perldata>.

На часть произвольного документа:

Also see: L<man:bash(1)#Compound Commands>,
L<doc:perlsyn#For Loops>, and
    L<http://dev.perl.org/perl6/syn/S04.html#The_for_statement>

Или на раздел текущего документа c указанием схемы ( в примере doc:):

This mechanism is described under L<doc:#Special Features> below.

или без указания схемы:

This mechanism is described under L<#Special Features> below.

Еще ссылка может указывать на термин (схема defn:):

To treat his chronic L<defn:lexiphania> the doctor prescribed an
immediate L<defn:glossoligation> or, if that proved ineffective,
a complete cephalectomy.

Определения терминов могут быть как строковым (inline) элементом, так и блочными:

    He was highly prone to D<lexiphania>: an unfortunate proclivity
    for employing grandiloquisms (for example, words such as "proclivity",
    "grandiloquism", and indeed "lexiphania").
    =defn glossoligation
    Restraint of the tongue (voluntary or otherwise)

В случае строковой формы (D<>) определением термина является окружающий его текст. Т.е. параграф, абзац.

Отмечу здесь, что строковая форма определения термина D<>( ровно как и строковая форма индексного термина X<>) позволяет указывать синонимы:

    A D<formatting code|formatting codes;formatters> provides a way
    to add inline mark-up to a piece of text.

Что позволяет говорить о еще одном типе связей - связь через синонимы. Т.е. если есть в заметке определение "что такое путь" и оно является синонимом "дорога", описанном в другом документе, то можно говорить о близости этих документов или заметок.

Замещаемые ссылки вместо указания на на другой документ или сущность (например, ссылка указывает на параграф или блочный элемент), позволяют включать документы в текущий документ вместо самих себя. Другими словами "замещаемые ссылки" - это ссылки, которые замещаются данными, на которые они указывают.

Наиболее близкие к ним встраиваемые ссылки из спецификации XLinks или директива include::( см. Include Files ) в языке разметки AsciiDoc.

В pod6 для этих целей определен inline элемент P<>.

Вот пример как используется вставка текстового файла:

    =DISCLAIMER
    P<http://www.MegaGigaTeraPetaCorp.com/std/disclaimer.txt>

Предусмотрены несколько схем:

  • http: and https:

  • file:

  • man:

  • doc:

  • toc:

Вот несколько примеров использования схемы toc:.

Вставка оглавления, состоящего из заголовков первого и второго уровней:

P<toc: head1 head2>

Добавляем еще пару уровней и таблицы:

 P<toc: head1 head2 head3 head4 table>

Список диаграмм:

 P<toc: Diagram>

Видно, что в качестве аргументов для схемы toc: используется некое подобие языка запросов к структуре документа. Тут можно было бы использовать атрибуты блоков, чтобы обогатить этот язык запросов. Не исключен вариант, что этот язык запросов к структуре документа в спецификации к pod6 видится только мне ). Вероятно оттого, что эта идея уже несколько раз меня посещала. Есть же язык запросов к базе данных, должен быть и язык запросов к базе знаний.

Есть, у меня лично, внутреннее противоречие с тем, что с помощью этого inline элемента можно вставлять блочные компоненты, но жить с этим я смогу.

Куда указывают ссылки

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