Markdown:如何按编号引用编号列表中的项目(如 LaTeX 的 \ref / \label)?
Markdown: How to reference an item in a numbered list, by number (like LaTeX's \ref / \label)?
Markdown 中有没有什么方法可以在这个 LaTeX 代码片段中进行等效的交叉引用? (摘自 here。)
\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.
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>
请注意,就编号而言,没有指示哪个项目是哪个。这都是浏览器在渲染时推断出来的。但是,数值未存储在文档中,不可引用或 linkable。它们仅供展示,没有其他用途。
现在您可以编写一些自定义 HTML 来唯一标识每个列表项并使它们可引用:
<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>
但是,这些 ID 是硬编码的,与用于显示项目的数字无关。虽然,我想这就是你想要的。要进行更新更改:
<ol>
<li id="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>
ID 按预期保留在项目中。但是,让我们转到 link 那些列表项。请注意,在第一次迭代中我们有:
<a href="#item1">1</a>
随着更新我们有:
<a href="#item1">2</a>
唯一的区别是 link 的标签(从“1”更改为“2”)。这实际上是通过某种宏观魔法来改变文档文本。 HTML 做不到,至少没有 JavaScript and/or CSS 的帮助。
换句话说,每次更新列表时,都需要在整个文档中手动更新对该项目的每个引用的文本。那是为了 HTML。降价呢?作为 rules state:
Markdown is not a replacement for HTML, or even close to it. Its syntax is very small, corresponding only to a very small subset of HTML tags.
因此在标准 Markdown 中甚至没有任何方法可以为列表项分配 ID。
在我看来你要么需要使用列表以外的东西,要么使用 Markdown/HTML 以外的东西。
也许您需要使用 H1..H6 然后 Markdown 生成一个锚点,您可以 link 到:
# 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>
Markdown 中有没有什么方法可以在这个 LaTeX 代码片段中进行等效的交叉引用? (摘自 here。)
\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.
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>
请注意,就编号而言,没有指示哪个项目是哪个。这都是浏览器在渲染时推断出来的。但是,数值未存储在文档中,不可引用或 linkable。它们仅供展示,没有其他用途。
现在您可以编写一些自定义 HTML 来唯一标识每个列表项并使它们可引用:
<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>
但是,这些 ID 是硬编码的,与用于显示项目的数字无关。虽然,我想这就是你想要的。要进行更新更改:
<ol>
<li id="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>
ID 按预期保留在项目中。但是,让我们转到 link 那些列表项。请注意,在第一次迭代中我们有:
<a href="#item1">1</a>
随着更新我们有:
<a href="#item1">2</a>
唯一的区别是 link 的标签(从“1”更改为“2”)。这实际上是通过某种宏观魔法来改变文档文本。 HTML 做不到,至少没有 JavaScript and/or CSS 的帮助。
换句话说,每次更新列表时,都需要在整个文档中手动更新对该项目的每个引用的文本。那是为了 HTML。降价呢?作为 rules state:
Markdown is not a replacement for HTML, or even close to it. Its syntax is very small, corresponding only to a very small subset of HTML tags.
因此在标准 Markdown 中甚至没有任何方法可以为列表项分配 ID。
在我看来你要么需要使用列表以外的东西,要么使用 Markdown/HTML 以外的东西。
也许您需要使用 H1..H6 然后 Markdown 生成一个锚点,您可以 link 到:
# 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>