18

在 LaTeX 中创建交叉引用的常用方法是\label在你想稍后引用的东西里面放一个,然后使用\ref. 因此,例如,as we saw in Section~\ref{intro}在 LaTeX 源代码中编写可能会在最终输出中产生“正如我们在第 1 节中看到的那样”。是否可以仅使用 HTML 和 CSS 获得相同的效果?CSS 的较新功能允许自动对节等进行编号,但我还没有找到任何可以让您从文档的其他地方引用这些计数器值的东西。

这是一个具体的例子:

<!DOCTYPE html>
<html>
<head>
    <title>Cross references</title>
    <meta charset="utf-8">
    <style type="text/css">
        body {
            counter-reset: section;
        }
        section > h1::before {
            counter-increment: section;
            content: counter(section) ". ";
        }
    </style>
</head>
<body>
<section>
    <h1 id="intro">Introduction</h1>
    <p>Pineapples contain essential vitamins.</p>
</section>

<section>
    <h1>Further discourse on pineapples</h1>
    <p>As we saw in Section ??, pineapples contain essential vitamins.</p>
</section>
</body>
</html>

在这个例子中,所有的章节标题都带有一个自动生成的数字。我想知道是否可以使用任何 HTML 标记或 CSS 样式来代替??将插入与#intro.

我意识到我可以<a href="#intro">用来创建引言的交叉超链接,但我也想在链接文本中包含节号。

如果仅使用 HTML 和 CSS 无法做到这一点,是否有任何 JavaScript 库可用于在文档中添加交叉引用?

4

1 回答 1

12

对我来说,表达这个问题的更好方法(事后看来)是“如何在不使用 JavaScript 的情况下访问 CSS 自动生成的内容?”,并且这些问题是相关的:

看起来即使使用 JavaScript 也不容易访问自动生成的计数器值,没有它就不可能,所以这回答了我的问题。

W3C 有许多文档讨论了计数器和生成的内容,但据我所知,没有一个文档讨论从文档的其他部分引用生成的内容:

W3C 的CSS 建议扩展列表中 一条注释准确地提到了交叉引用问题——它来自一封1998 年写的电子邮件,我还没有找到任何后续工作,所以我猜这不是高度优先。

更新

分页媒体模块的CSS 生成内容 明确讨论了交叉引用,并描述了使用 CSS 实现它们的功能target-countertarget-text然而,这是 2011 年 11 月 29 日的工作草案;这些功能似乎没有在任何主流浏览器中实现。A List Apart 的一篇文章讨论了使用这些 CSS 功能使用一些随机的专有工具从 HTML 生成 PDF 电子书。

于 2013-05-10T20:54:21.833 回答