首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >标记:如何引用编号列表中的项目(如LaTeX的\ref / \label)?

标记:如何引用编号列表中的项目(如LaTeX的\ref / \label)?
EN

Stack Overflow用户
提问于 2016-05-06 15:02:38
回答 2查看 7.5K关注 0票数 16

在这个LaTeX片段中,有什么方法可以与交叉引用等价吗?(取自这里.)

代码语言:javascript
运行
复制
\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生成

代码语言:javascript
运行
复制
1. This is a numbered item
2. This is another numbered item
3. Same as 1

Cross-referencing items 2 and 3.

也就是说,我希望能够在不显式编号的情况下引用减价列表中的项目,这样我就可以将上面的列表更改为以下内容,而不必手动更新交叉引用:

代码语言:javascript
运行
复制
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.
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-10 20:23:29

HTML甚至不能做到这一点,而且Markdown是HTML的一个子集,所以答案是否定的。

例如,列表将被表示为这样(当由Markdown呈现时):

代码语言:javascript
运行
复制
<ol>
    <li>This is a numbered item</li>
    <li>This is another numbered item</li>
    <li>Same as 1</li>
</ol>

请注意,就编号而言,没有指示哪一项是哪一项。这都是浏览器在呈现时推断出来的。但是,数字值不存储在文档中,也不能引用或链接。它们只供展示,并无其他用途。

现在,您可以编写一些自定义HTML来唯一地标识每个列表项,并使它们可以引用:

代码语言:javascript
运行
复制
<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是硬编码的,与用于显示项目的数字无关。不过,我想这就是你想要的。若要进行更新更改,请执行以下操作:

代码语言:javascript
运行
复制
<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与预期的项目保持在一起。但是,让我们继续到这些列表项的链接。注意,在第一次迭代中,我们有:

代码语言:javascript
运行
复制
<a href="#item1">1</a>

我们得到的最新消息是:

代码语言:javascript
运行
复制
<a href="#item1">2</a>

唯一的区别是链接的标签(从"1“改为"2")。这实际上是通过某种宏魔术来改变文档文本。HTML是做不到的,至少没有JavaScript和/或CSS的帮助。

换言之,每次更新清单时,都需要在整个文件中手动更新每一项提及的文本。这是针对HTML的。那Markdown呢?作为规则状态

标记不是HTML的替代品,甚至也不是接近HTML的替代品。它的语法非常小,只对应于一个非常小的HTML标记子集。

因此,在标准的Markdown中,甚至没有向列表项分配ID的任何方法。

在我看来,你要么需要使用列表以外的东西,要么需要使用Markdown/HTML以外的东西。

票数 5
EN

Stack Overflow用户

发布于 2017-11-09 11:09:57

也许你需要使用H1..。H6然后Markdown生成一个可以链接到的锚点:

代码语言:javascript
运行
复制
# H1
## H2
### H3
#### H4
##### H5
###### H6

类似于:

代码语言:javascript
运行
复制
###### 1. This is a numbered item
###### 2. This is another numbered item
###### 3. Same as 1

生成:

代码语言:javascript
运行
复制
<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>
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37075663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档