Markdown: как ссылаться на элемент в нумерованном списке по номеру (например, ref / label LaTeX)?

есть ли способ в markdown сделать эквивалент перекрестных ссылок в этом фрагменте LaTeX? (Взято из здесь.)

begin{enumerate}
    item label{itm:first} This is a numbered item
    item Another numbered item label{itm:second}
    item label{itm:third} Same as ref{itm:first}
end{enumerate}
Cross-referencing items ref{itm:second} and ref{itm:third}.

этот латекс производит

1. This is a numbered item
2. This is another numbered item
3. Same as 1

Cross-referencing items 2 and 3.

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

1. This is the very first item
2. This is a numbered item
3. This is another numbered item
4. Same as 2

Cross-referencing items 3 and 4.

2 ответов


HTML даже не может этого сделать, а Markdown является подмножеством HTML, поэтому ответ-нет.

например, ваш список будет представлен следующим образом (при отображении Markdown):

<ol>
    <li>This is a numbered item</li>
    <li>This is another numbered item</li>
    <li>Same as 1</li>
</ol>

обратите внимание, что нет указания на то, какой элемент является, насколько нумерация идет. Это все выводится во время рендеринга браузером. Тем не менее, числовые значения не сохраняются в документе и не referancable или linkable. Они предназначены только для показа и не служат никому другому цель.

теперь вы могли бы написать некоторые пользовательские HTML для идентификации каждый элемент списка и делать их referencable:

<ol>
    <li id="item1">This is a numbered item</li>
    <li id="item2">This is another numbered item</li>
    <li id="item3">Same as <a href="#item1>1</a></li>
</ol>

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

<ol>
    <li is="item0">This is the very first item</li>
    <li id="item1">This is a numbered item</li>
    <li id="item2">This is another numbered item</li>
    <li id="item3">Same as <a href="#item1>2</a></li>
</ol>

идентификаторы остаются с элементом по назначению. Однако давайте перейдем к ссылкам на эти элементы списка. Заметим, что на первой итерации мы имел:

<a href="#item1>1</a>

и с обновлением у нас было:

<a href="#item1>2</a>

единственным отличием является метка ссылки (изменена с" 1 "на"2"). Это на самом деле изменение текста документа через какой-то макро-магический материал. Не то, что HTML может сделать, по крайней мере, без помощи JavaScript и/или CSS.

другими словами, текст каждой ссылки на элемент необходимо будет вручную обновлять по всему документу каждый раз, когда список обновляется. И это для ФОРМАТ HTML. Как насчет уценки? Как правила:

Markdown не является заменой HTML или даже близко к нему. Его синтаксис очень мал, соответствует только очень маленькому подмножеству HTML-тегов.

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

мне кажется, вам нужно либо использовать что-то другое, чем списки, либо использовать что-то другое, кроме Markdown/HTML.


Возможно, вам нужно использовать H1.. H6, а затем Markdown генерирует якорь, который вы можете связать с:

# H1
## H2
### H3
#### H4
##### H5
###### H6

что-то типа:

###### 1. This is a numbered item
###### 2. This is another numbered item
###### 3. Same as 1

выдает:

<h6 id="1-this-is-a-numbered-item">1. This is a numbered item</h6>
<h6 id="2-this-is-another-numbered-item">2. This is another numbered item</h6>
<h6 id="3-same-as-1">3. Same as 1</h6>