如何在Sphinx文档中显示和隐藏代码?

15

4
所以你基本上是在要求我们为您实现这个?这不仅仅是几行代码。 - Sven Marnach
2
@SvenMarnach 我不是指开发,我认为这可能是Sphinx的功能,如果已经存在或由Sphinx提供的扩展或第三方扩展,则有人可以分享... - Nilesh
1个回答

8

SQLAlchemy文档

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

文档源包含具有自定义选项和令牌的标记,就像这个例子一样:

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

这段文字是通过特殊的 Pygments 词法分析器 (PythonWithSQLLexer) 和 Pygments 格式化器 (PopupSQLFormatter) 处理,以生成一个带有代码片段和显示/隐藏链接的 "弹出" <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样式代码片段中的输出。通过隐藏提示和输出,代码可以更轻松地复制和粘贴。以下是几个示例:http://docs.python.org/library/datetime.html#module-datetime
该功能由copybutton.js实现。

@shahjapan:你说的整合是什么意思? - mzjn
我的意思是我应该把这个init.js放在哪里? - shahjapan
2
你可以把它放在任何你想要的地方... 在SQLAlchemy文档中,init.js是Sphinx构建的"_static"目录中的一部分。查看此页面的源代码。还请参考Mako模板文件layout.mako - mzjn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接