18

LaTeX で相互参照を作成する通常の方法は\label、後で参照したいものの中に a を入れてから を使用すること\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 を使っても簡単ではなく、JavaScript がないとできないようです。それで私の質問に答えます。

カウンターと生成されたコンテンツについて議論している W3C のドキュメントは多数ありますが、ドキュメントの他の部分から生成されたコンテンツを参照することについて議論している限りではありません。

W3C のCSS に対する推奨される拡張機能のリスト に、相互参照の問題について正確に言及しているメモがあります。これは 1998 年に書かれた電子メールからのものでありフォローアップ作業が見つからなかったので、これはそうではなかったと思います。優先度が高い。

アップデート

ページ付きメディア モジュールのCSS 生成コンテンツでは、 相互参照について明示的に説明し、CSS でそれらを実装するためのtarget-counterおよび関数について説明しています。target-textただし、これは 2011 年 11 月 29 日付けのワーキング ドラフトです。これらの機能は、どの主要ブラウザにも実装されていないようです。A List Apartの記事では、これらの CSS 機能を使用して、ランダムな適切なツールを使用して HTML から PDF eBook を作成する方法について説明しています。

于 2013-05-10T20:54:21.833 に答える