【问题标题】:How to show and hide code in sphinx doc?如何在 sphinx doc 中显示和隐藏代码?
【发布时间】:2011-12-30 09:43:46
【问题描述】:

我希望在 Sphinx, reStructuredText show/hide code snippets 中提及相同的功能。但是该帖子上没有共享代码。

【问题讨论】:

  • 所以你基本上是在要求我们为你实现这个?这不仅仅是几行代码。
  • @SvenMarnach 我不是说开发的意思,我认为它可能是 sphinx 功能,如果它已经存在或者 sphinx 或 3rd 方扩展提供的扩展,那么有人可以分享......

标签: python python-sphinx


【解决方案1】:

SQLAlchemy 文档

SQLAlchemy 文档使用特殊扩展名 (https://bitbucket.org/zzzeek/zzzeeksphinx/)。

文档源包含带有自定义选项和标记的标记,如下例所示:

.. sourcecode:: python+sql
 
    {sql}>>> engine.execute("select 1").scalar()
    select 1
    ()
    {stop}1

这由特殊的 Pygments lexer (PythonWithSQLLexer) 和 Pygments formatter (PopupSQLFormatter) 处理,以生成带有代码 sn-p 的“弹出窗口”<div> 和显示的链接/隐藏它。源代码在sqlformatter.py

显示/隐藏切换由 init.js 中的 jQuery 魔术处理。

Mako 模板系统用于生成 HTML 页面(Sphinx 中的默认模板系统是 Jinja)。这是通过在mako.py 中继承TemplateBridge 来配置的。

在模板文件layout.mako 中,指定了CSS 和JavaScript 文件(包括init.js)的路径。有关 Sphinx 模板的更多信息,请参阅 http://sphinx-doc.org/templating.html

Python 文档

Python 文档中的许多代码示例都有一个“按钮”,用于切换交互式提示(>>>...)的显示并以 doctest 样式的代码 sn-ps 输出。通过提示和输出,可以更轻松地复制和粘贴代码。这里有几个例子:http://docs.python.org/library/datetime.html#module-datetime

该功能在copybutton.js中实现。

【讨论】:

  • @shahjapan:整合是什么意思?
  • 我的意思是我应该把这个 init.js 放在哪里?
  • 你可以把它放在任何你想要的地方......在 SQLAlchemy 文档中,init.js 位于 Sphinx 构建的 _static 目录中。查看this page的来源。另请参阅 Mako 模板文件 layout.mako
猜你喜欢
  • 2011-01-28
  • 2012-06-25
  • 1970-01-01
  • 1970-01-01
  • 2022-07-03
  • 2018-05-22
  • 2015-11-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多