13

rst2htmldocutils に付属のツールを使用して reST から HTML を作成しています。コードはすでにid個々のセクションに属性を割り当てているようです。これは、URL のフラグメント識別子として、つまりページの特定の部分にジャンプするためのアンカーとして使用できます。これらのid値は、セクションの見出しのテキストに基づいています。その見出しの文言を変更すると、識別子も変更され、古い URL が無効になります。

リンクを無効にすることなく見出しを編集できるように、特定のセクションの識別子として使用する名前を指定する方法はありますか? 自分のスクリプトから自分で docutils パブリッシャーを呼び出す方法はありますか?

4

2 に答える 2

4

reST セクションで明示的な ID を設定できるとは思いませんが、間違っている可能性があります。

タイトルではなく、ドキュメント ツリー内のセクションの順序に依存する番号付きの ID を使用したい場合は、docutils/nodes.py の document.set_id() メソッドを少し変更することでそれを行うことができます (私のバージョンでは 997 行目です。)

パッチは次のとおりです。

 def set_id(self, node, msgnode=None):
     for id in node['ids']:
         if id in self.ids and self.ids[id] is not node:
             msg = self.reporter.severe('Duplicate ID: "%s".' % id)
             if msgnode != None:
                 msgnode += msg
     if not node['ids']:
-        for name in node['names']:
-            id = self.settings.id_prefix + make_id(name)
-            if id and id not in self.ids:
-                break
-        else:
+        if True: #forcing numeric ids
             id = ''
             while not id or id in self.ids:
                 id = (self.settings.id_prefix +
                       self.settings.auto_id_prefix + str(self.id_start))
                 self.id_start += 1
         node['ids'].append(id)
     self.ids[id] = node
     return id

テストしたところ、セクションIDがid1、id2 ...として生成されます。

このシステム全体のファイルを変更したくない場合は、おそらくカスタム rst2html コマンドからモンキー パッチを適用できます。

于 2013-03-14T14:02:06.657 に答える