gpt4 book ai didi

python - 使用 sphinx 指令创建来自 python 的链接列表

转载 作者:行者123 更新时间:2023-12-03 17:33:57 27 4
gpt4 key购买 nike

我有一个包含以下内容的 rst 文件:

..include:: other_file.rst

和 other_file.rst 包含如下内容:
* `Text Item 1 <https://link/to/somewhere>`__
* `Text Item 2 <https://link/to/somewhere_else>`__

现在我预先生成 other_file.rst 然后运行 ​​sphinx-build 来生成最终的 HTML。

我想要做的是切换它,以便我有一个自定义的 Sphinx 指令为我生成列表。

就像是:
from docutils import nodes
from docutils.parsers.rst import Directive
class MyDirective(Directive):
def run(self):
my_nodes = node.bullet_list(bullet='*')
for text, ref in [('Text Item 1', 'https://link/to/somewhere'),
('Text Item 2', 'https://link/to/somewhere_else')]:
item = nodes.list_item()
# Magic happens
my_nodes.append(item)
return [my_nodes]

如果我更换 # Magic happensitem += nodes.paragraph(text)我得到了一个项目列表,但是当我尝试使用 nodes.reference(...) 时,我得到了一个空项目符号列表。

我显然在做一些接近正确的事情,但遗漏了一些简单的事情。

最佳答案

引用应该放在一些容器内,如段落,并以某种方式表示内部节点

    def run(self):
my_nodes = nodes.bullet_list(bullet='*')
for text, ref in [('Text Item 1', 'https://link/to/somewhere'),
('Text Item 2', 'https://link/to/somewhere_else')]:
item = nodes.list_item()
# Magic happens
para = nodes.paragraph(text=text)
refnode = nodes.reference('', '', internal=False, refuri=ref)
innernode = nodes.emphasis("link", "link")
refnode.append(innernode)
para += refnode
item += para
my_nodes.append(item)
return [my_nodes]

此代码生成带有文本字段和链接的列表

generation result

关于python - 使用 sphinx 指令创建来自 python 的链接列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49769194/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com