为自定义指令的节点生成标签

2024-03-10

使用Sphinx“TODO”指令示例 https://www.sphinx-doc.org/en/master/development/tutorials/todo.html我想参考一下todo嵌入在 .rst 文件中的实例。例如,如果 .rst 文件内容包含:

.. todo:: foo

.. todo:: bar

我可以看到以下代码(取自 Sphinx TODO 示例页面)

class TodoDirective(SphinxDirective):

    # this enables content in the directive
    has_content = True

    def run(self):
        targetid = 'todo-%d' % self.env.new_serialno('todo')
        targetnode = nodes.target('', '', ids=[targetid])

        todo_node = todo('\n'.join(self.content))
        todo_node += nodes.title(_('Todo'), _('Todo'))
        self.state.nested_parse(self.content, self.content_offset, todo_node)

        if not hasattr(self.env, 'todo_all_todos'):
            self.env.todo_all_todos = []

        self.env.todo_all_todos.append({
            'docname': self.env.docname,
            'lineno': self.lineno,
            'todo': todo_node.deepcopy(),
            'target': targetnode,
        })

        return [targetnode, todo_node]

创建目标节点ids: todo-0 and todo-1。 通过将指令嵌入到 .rst 文件中,可以成功引用这些指令:

.. todolist::

我想做的是参考todo.rst 文件中的项目如下所示:

:ref:`todo-0`
:ref:`todo-1`

这需要获得TodoDirective为每个目标节点生成标签。我一直不知道该怎么做。

这个简单的项目发布在这里:https://github.com/natersoz/sphinx_sandbox https://github.com/natersoz/sphinx_sandbox


我遇到了和你一样的问题,通过查看解决了这个问题自动切片标签 https://github.com/sphinx-doc/sphinx/blob/3.x/sphinx/ext/autosectionlabel.py#L36扩大。

他们所做的就是添加对标签域数据的引用。我让它在自定义指令中工作,如下所示:

nodeId = nodes.make_id("some-id")
self.env.app.env.domaindata["std"]["labels"][nodeId] = self.env.docname, nodeId, "Title"
section = nodes.section(ids=[nodeId])
section.append(nodes.title(text="Title"))

关键是上面代码的第二行。

您还想将标签添加到anonlabels能够通过引用它

:ref:`foo <nodeId>`

like so:

self.env.app.env.domaindata["std"]["anonlabels"][nodeId] = self.env.docname, nodeId
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为自定义指令的节点生成标签 的相关文章

  • 适用于 Python 3.x 的 Hive 客户端

    是否可以使用 Python 3 x 连接到 hadoop 并运行 hive 查询 我正在使用Python 3 4 1 我发现可以按照这里写的方式完成 https cwiki apache org confluence display Hiv
  • 生成 Flask 中使用的签名会话 cookie 值

    我正在用另一个需要将项目注入会话的 Flask 服务器代理 Flask 服务器 两台服务器具有相同的密钥 因此加密签名将相同 当使用 Flask 和会话时 http 响应包含一个 Set Cookie 标头session text 其中 t
  • 使用 glGetFloatv 检索 pyglet 中的模型视图矩阵

    我正在使用 pyglet 在 python 中进行 3D 可视化 并且需要检索模型视图和投影矩阵来进行一些选择 我使用以下方式定义我的窗口 from pyglet gl import from pyglet window import wi
  • Huggingface 变形金刚模块未被 anaconda 识别

    我正在使用 Anaconda python 3 7 Windows 10 我尝试通过安装变压器https huggingface co transformers https huggingface co transformers 在我的环境
  • Python实时读取串口数据

    我正在使用 Python 中的脚本通过串行端口以 2Mbps 的速度从 PIC 微控制器收集数据 PIC 在 2Mbps 下完美定时工作 FTDI USB 串行端口在 2Mbps 下工作也很好 均通过示波器验证 我每秒发送消息 大小约为 1
  • 如果每个区域内至少有 5 个连续行,如何在每个标题区域的末尾使用 Title[Name]2 发布新行?

    我想在每个 Title 区域的末尾使用 Title Name 2 发布新行的最简单方法是通过一个计算连续行数的变量 其中至少有 5 个连续行包含 1 1 1 1在每个 标题区域内 我不确定我对计数变量做错了什么 也许 确实必须在每个 Tit
  • Tensorflow 训练期间 GPU 使用率非常低

    我正在尝试为 10 类图像分类任务训练一个简单的多层感知器 这是 Udacity 深度学习课程作业的一部分 更准确地说 任务是对各种字体呈现的字母进行分类 数据集称为 notMNIST 我最终得到的代码看起来相当简单 但无论如何我在训练期间
  • 如何将嵌套的Python字典转换为简单的命名空间?

    假设我有一个深度为 N 的嵌套字典 如何将每个内部嵌套字典转换为简单的命名空间 example input key0a test key0b key1a key2a keyNx key2b test key1b test example o
  • 使用 NumPy 的 Mittag-Leffler 函数的不稳定性

    在尝试重现时Wolfram MathWorld 上的情节 http mathworld wolfram com Mittag LefflerFunction html 并试图帮助这个问题 https stackoverflow com qu
  • 按字符串子字符串的列过滤 Pandas 数据框

    我正在尝试使用列中的字符串值是数据框外部字符串的子字符串的条件来过滤数据框 下面的例子 df a b c hello bye hello reference str hello there output a c 一种方法可能是使用正则表达式
  • 完全定制的Python帮助用法

    我正在尝试使用 Python 创建完全自定义的 帮助 用法 我计划将其导入到许多我想要具有风格一致性的程序中 但遇到了一些麻烦 我不知道为什么我的描述忽略换行符 尝试过 和 我无法让 出现在 ARGS 行的 换行符之后 显然它们坐在自己的行
  • 自定义 Keras 损失函数中的 conv2d

    我正在尝试基于两个图像的拉普拉斯算子在带有 TF 后端的 Keras 中实现自定义损失函数 def blur loss y true y pred weighting of blur loss alpha 1 mae losses mean
  • t /= d 是什么意思? Python 和错误

    t current time b begInnIng value c change In value d duration def easeOutQuad swing function x t b c d alert jQuery easi
  • 如何打印和显示子进程 stdout 和 stderr 输出而不失真?

    也许有人可以帮助我解决这个问题 我在 SO 上看到了许多与此类似的问题 但没有一个问题同时处理标准输出和标准错误 也没有处理像我这样的情况 因此出现了这个新问题 我有一个 python 函数 它打开一个子进程 等待它完成 然后输出返回代码以
  • 导入我自己的模块时出现“ImportError:没有名为...的模块”

    我正在尝试导入模块 但不断收到导入错误 在 PortfolioStatus py 文件中 我有以下代码 它从 share data py 模块导入 share data 类 from Shares share data import sha
  • 保存游戏最高分?

    我使用 pygame 在 python 中制作了一个非常简单的游戏 分数取决于玩家达到的级别 我将级别作为变量称为score 我想在游戏开始或结束时显示顶级 我会更乐意显示多个分数 但我见过的所有其他线程都太复杂 我无法理解 所以请保持简单
  • 枚举上的 random.choice

    我想用random choice on an Enum I tried class Foo Enum a 0 b 1 c 2 bar random choice Foo 但是这段代码失败了KeyError 我怎样才能随机选择一个成员Enum
  • 如何从 IDLE 命令行运行 Python 脚本?

    在 bash shell 中 我可以使用 bash 或 source 手动调用脚本 我可以在 Python IDLE 的交互式 shell 中做类似的事情吗 我知道我可以转到文件 gt gt 打开模块 然后在单独的窗口中运行它 但这很麻烦
  • 在 Python 中伪造一个对象是否是类的实例

    假设我有一堂课FakePerson它模仿基类的所有属性和功能RealPerson 不扩展它 在Python 3中 是否可以伪造isinstance 为了认识到FakePerson as a RealPerson只通过修改对象FakePers
  • PyMC3 和 Theano - 导入 pymc3 后,有效的 Theano 代码停止工作

    一些简单的 theano 代码可以完美运行 当我导入 pymc3 时停止工作 这里有一些片段可以重现错误 Initial Theano Code this works import theano tensor as tsr x tsr ds

随机推荐

  • Dart:异步抽象方法

    我正在尝试设计一个接口来抽象不应直接从 UI 使用的长时间运行的操作 为了抽象它 我创建了一个抽象类 其中包含执行此类操作的唯一方法 abstract class MakeSomething Result make Param param
  • 如何出现“创建目标表后架构已更改”错误?

    当我的 Web 应用程序尝试在 MSSQL 2005 数据库上执行 SELECT INTO 时 我遇到了此错误 我确实有两个问题 这个错误是什么意思以及这是如何发生的 有没有办法通过以不同的方式编码来防止这些错误 除了明显的情况之外 有人在
  • 适用于 Windows 的优秀开源错误跟踪/问题跟踪软件 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Android 未使用/查找我的希伯来语本地化。

    我正在努力将我的应用程序本地化为多种语言 西班牙语运行良好 但希伯来语没有出现 让我困惑的是 如果我将希伯来语字符串文件夹的内容放在西班牙语文件夹 values es 中 它会很好用 我的希伯来语文件夹中的西班牙语 值 他 不起作用 任何想
  • SQL Case 语句在 where 子句中指定条件?

    我有以下查询 SELECT FROM dbo tblOrders o WHERE o OrderId IN SELECT Value FROM dbo udf GenerateVarcharTableFromStringList Order
  • 相当于 git 的“svn checkout”?

    我应该使用什么 git 命令来相当于svn checkout git checkout 非常感谢 git clone https www kernel org pub software scm git docs git clone html
  • ftp 在 java 中无法正确下载文件?

    当我使用以下代码下载文件时 它只是将文件写入本地目的地 但文件大小均为零 有人能说为什么会发生这种情况以及如何解决它吗 import org apache commons net ftp FTPClient import org apach
  • BIOS 是否将 512 字节引导加载程序复制到 0x7c00

    我正在编写内核 在写这么复杂的东西之前 我认为对内核 引导加载程序 寄存器 BIOS 等进行一些理论阅读不仅会有所帮助 而且是必要的 本文 http lennartb home xs4all nl bootloaders node3 htm
  • 如何在 iTextSharp 中调整字体大小以填充固定高度的表格单元格

    我正在从 iTextSharp 创建 PDF 进行打印 我有可变长度的文本 我希望始终采用最大字体大小来填充固定高度的表格单元格 而不会在视线之外环绕 如何才能做到这一点 您首先需要能够测量所选字体中文本的宽度 来自 iTextSharp
  • 是否可以在经典asp中进行友好的url(url重写)?

    我知道如何在 asp net 中创建 实现友好的 url 但是是否可以 如果可以的话 如何 在经典 asp 中执行此操作 如果不可能 谷歌将如何响应 SEO 创建其唯一目的是重定向 加载时 到不同页面的页面 thanks Use a URL
  • 将 JSON 对象转换为 JSON 树

    var obj id 1 child 2 4 data hello id 2 child 3 data I m second id 3 child data I m third id 4 child 6 data I m fourth id
  • 如何在 PHP 中打印或回显数组索引

    我正在努力完成我的任务 这是现在要做的最后一件事 我知道如果我想打印整个数组我可以使用foreach以及许多不同的方法来打印整个数组 foreach v as k gt variable name echo p This is index
  • 使用 datetime.strptime 创建日期时间对象列表

    我有一个字符串列表 date str 2012 11 04 1 05 21 2013 11 03 1 05 21 2014 11 02 1 07 31 我想将它们作为日期时间对象来读取 对于一根弦 我做 datetime strptime
  • 运行 ssh 并立即执行命令[重复]

    这个问题在这里已经有答案了 我试图找到 UNIX 或 bash 命令来在连接到 ssh 服务器后运行命令 例如 ssh name ip tmux list sessions 上面的代码有效 它列出了会话 但随后立即断开连接 将它放在服务器端
  • 为什么列必须出现在 GROUP BY 中?

    我有这个 SELECT name value MIN value as find min FROM history WHERE date num gt 1609459200 AND date num lt 1640995200 AND na
  • 打印时防止表格分页

    我有一个页面正在尝试设置用于打印 该页面包含大量单独的表格 这些表格的大小各不相同 但一般来说 我可以在每页上放置 2 5 到 3 个表格 我希望能够防止表格因分页符而损坏 知道我怎样才能做到这一点吗 我试过这个 reportTable p
  • 优化多个分层组的 SUM OVER PARTITION BY

    我有一个如下表 Region Country Manufacturer Brand Period Spend R1 C1 M1 B1 2016 5 R1 C1 M1 B1 2017 10 R1 C1 M1 B1 2017 20 R1 C1
  • NodeJs压力测试工具/方法[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我搜索了很多关于对 NodeJs 应用程序 模块进行压力测试的信息 但没有找到任何内容 我有一个推送服务器应用程序 类似于 socket
  • react-admin 创建一个可以从菜单侧边栏访问的自定义页面

    我是反应管理新手 如何创建可以从菜单侧边栏访问的自定义页面 我正在寻找与本教程类似的内容 https marmelab com blog 2019 03 07 react admin advanced recipes user profil
  • 为自定义指令的节点生成标签

    使用Sphinx TODO 指令示例 https www sphinx doc org en master development tutorials todo html我想参考一下todo嵌入在 rst 文件中的实例 例如 如果 rst