2016-05-06 2 views
4

Есть ли способ уценки сделать эквивалент перекрестной ссылки в этом фрагменте LaTeX? (Взято из here.)Markdown: как ссылаться на элемент в пронумерованном списке, по номеру (например, на этикетке LaTeX ref/)?

\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}. 

Это LaTeX производит

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. 
+0

Я не думаю, что Markdown покрывает это. Он должен * уменьшить * разметку и, следовательно, не удовлетворяет * все * мощностью (La) TeX (и другими интерпретациями). – Werner

ответ

1

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> 

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

Теперь вы можете написать некоторые пользовательский 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? Как rules state:

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

Поэтому в стандартном Markdown нет даже способа присвоить идентификаторы элементам списка.

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

0

Возможно, вам нужно использовать 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>