我目前正在使用Sphinx来记录一个混合语言项目,该文档不仅包含 Python 中的交互式会话示例,还包含 bash 和 Windows 命令行以及 MATLAB 和其他解释器中的交互式会话示例。虽然 Pygments 很好地突出显示了所有内容,但到目前为止我在文档中包含的所有交互式会话都显示在 HTML 输出中,前面带有 Python 提示符>>>. $例如,在记录 bash 会话时,如何将该提示更改为?
编辑澄清:
如 Sphinx 手册中的“显示代码示例”下所述,Sphinx 文档的 ReST 源可以包含如下代码:
>>> # python code here
>>> print "foo"
foo
Run Code Online (Sandbox Code Playgroud)
然后,此代码将转换为标记,如Python 标准库文档中的argparse 文档中演示的那样,将 后面的代码显示>>>为突出显示的代码片段。虽然很明显,可以简单地将未突出显示的块与其他提示字符一起排版,但我想知道如何将提示与argparse 示例>>>中显示的交互式提示样式结合起来。
我正在努力弄清楚如何将 Python 类的特定成员的文档放置在 Sphinx 文档的特定部分中,理想情况下,同时在另一个部分中自动记录其余部分。
我有一个Python课程
class MyClass(object):
def funky(self, arg):
"""Some docs."""
...
Run Code Online (Sandbox Code Playgroud)
定义my/module.py其中按预期工作,我可以使用以下方式记录而不会出现问题
***************************
MyModule - :mod:`my.module`
***************************
.. automodule:: my.module
.. autoclass:: MyClass
:members:
:undoc-members:
:show-inheritance:
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试更好地控制文档的组织时,我无法让事情正常进行。具体来说,我希望将一些成员记录在明确的部分中(此处仅显示一个成员,但会有多个),其余成员自动记录为一组。
但是当我尝试这个时,例如
***************************
MyModule - :mod:`my.module`
***************************
To document
===========
Things that are not yet documented.
.. automodule:: my.module
.. autoclass:: MyClass
:members:
:undoc-members:
:show-inheritance:
:exclude-members: funky
Funky things
------------
Some funky things.
.. automethod:: funky
Run Code Online (Sandbox Code Playgroud)
我明白了
警告:不知道要导入哪个模块来自动记录 u'funky' (尝试在文档中放置“module”或“currentmodule”指令,或者给出明确的模块名称)
但没有变化
.. currentmodule:: my.module
.. class:: MyClass
.. automethod:: …Run Code Online (Sandbox Code Playgroud) 我已经设置了 Sphinx api 文档,它可以从我的 python 代码生成 html 文档。所以唯一缺少的是它没有生成 # TODO 文档。
我检查了不同的网站和 Sphinx api-doc 文档并检查了我的配置,它看起来不错。
这是我的配置:
配置文件
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.todo',
'sphinx.ext.viewcode',
]
todo_include_todos = True
Run Code Online (Sandbox Code Playgroud)
在设置快速启动时,
todo: 写入可以在构建时显示或隐藏的“todo”条目 (y/n) [n]: y
以及 .py 文件中的文档
def post(self):
"""
Adds a :class:`Persona` resource in Persona resource list.
:returns: A newly created Persona resource with http 201 response code.
"""
args = parser.parse_args()
persona_id = int(max(PERSONAS.keys())) + 1
persona_id = '%i' % persona_id
PERSONAS[persona_id] = {'name': args['name']}
# TODO Validate all …Run Code Online (Sandbox Code Playgroud) 修改标题,因为我发现问题与我想象的完全不同。我应该删除这个问题还是把它留在这里以防其他人犯同样的错误?
原标题是:某些 Sphinx 交叉引用无法识别部分标题?
原问题:
我看到了一些非常奇怪的行为 - 根据http://sphinx-doc.org/markup/inline.html#ref-role,我的 Sphinx 标记中有交叉引用
但是当我构建文档(HTML 或 LaTEXPDF)时,我在其中的一些文档中遇到了这些错误:
警告:未定义标签:_unhiding(如果链接没有标题,则标签必须位于节标题之前)
事情是,在我看来,工作和不工作的人看起来完全一样。
在职的:
.. _conditions:
Monitoring Conditions and Alerts
================================
Run Code Online (Sandbox Code Playgroud)
破碎的:
.. _performance:
Viewing System Performance
==========================
Run Code Online (Sandbox Code Playgroud)
也坏了:
.. _unhiding:
Unhiding Conditions and Canceling Auto-Dismiss
-----------------------------------------------
Run Code Online (Sandbox Code Playgroud)
我什至复制了工作中的一个并替换了参考术语,但这没有帮助。
我应该能够通过明确定义标题来解决这个问题,但这令人困惑......
我有一个派生自Python 标准库类的类,它有许多公共方法。我的自定义类应该作为包装器,直接提供使用其协议与我的设备进行通信的方法。因此,我只想在自动摘要表中包含一些选定的继承方法。
.. autoclass:: my_module.MyClass
:members:
:show-inheritance:
.. autosummary::
my_method
another_method
Run Code Online (Sandbox Code Playgroud)
该..autosummary::块完全符合我的要求,但..autoclass::会自动创建完整的方法表。有没有办法禁用此功能?
直接使用autosummary指令,我可以生成一个仅包含my_method和 的方法表another_method:
.. autosummary::
my_method
another_method
Run Code Online (Sandbox Code Playgroud)
但是,当使用autoclass或automodule 而不使用以下自动摘要指令时,我仍然会得到一个方法表,该方法表看起来与上面的自动摘要块创建的方法表一模一样,只是包含所描述的所有方法:
.. autoclass:: my_module.MyClass
:members:
:show-inheritance
Run Code Online (Sandbox Code Playgroud)
假设我们有一个如下所示的文档结构
.
|____src
| |____abc.py
|____docs
Run Code Online (Sandbox Code Playgroud)
现在我们使用以下命令生成文档:
sphinx-apidoc -F -o docs src
Run Code Online (Sandbox Code Playgroud)
这会在./docs/文件夹中生成多个文件,其中包括./docs/abc.rst,我现在可以使用文件夹make html中的来构建它./docs/。
现在,在添加一些附加功能后,./src/abc.py我想重建文档。我尝试了同样的操作,Sphinx 说其余文件已经存在,因此它没有得到更新。我必须手动删除相关文件才能更新文档。
现在的问题是,如何在不删除.rst文件的情况下完成整个过程。
我在 github 上有一个存储库:
https://github.com/springer-math/Mathematics-of-Epidemics-on-Networks
里面有一个文件
文档/SIR_2dgrid.mp4
其中包含我想出现在 readthedocs 文档中的动画(特别是在此页面:http://epidemicsonnetworks.readthedocs.io/en/latest/Simulation_Investigation.html)此外,还有一个文件
文档/Simulation_Investigation.rst
它对该页面进行编码并尝试引用该 mp4。我尝试了很多变体(尝试复制https://groups.google.com/d/msg/sphinx-users/_z00m3zoRAY/Ryx4D5sxgtcJ上的说明),但没有运气。我能让 mp4 出现在所需的 readthedocs 页面上的唯一方法是链接到 github 上的 mp4(但加载有点延迟,而且并不完美)。
我似乎无法通过 readthedocs 将 mp4 复制到可以建立相对链接的目录中。
有没有办法让 readthedocs 将该文件复制到我可以链接到的地方?
或者,除了将 mp4 放在另一个网站上之外,还有其他方法可以将视频嵌入到 readthedocs 中吗?
我正在尝试使用todo功能,我在sphinx-docs和以下语法上找到了一个链接
.. todo::
Run Code Online (Sandbox Code Playgroud)
但它说,我需要设置todo_include_todos到True默认情况下它是,因为False,我需要更新能够得到哪些文件?
我发现另一个SO帖子Sphinx todo盒没有显示,但不认为它提到我需要设置配置的文件.
我有一个带有一些脚注的文档:
文档.rst
This sentence needs clarification\ [#fn1]_.
Run Code Online (Sandbox Code Playgroud)
如果我将脚注放在同一个文件中,它就可以正常工作。但是,我想要一个单独的文件,其中包含来自几个不同文档的脚注:
补充.rst
[#fn1] A word of explanation.
Run Code Online (Sandbox Code Playgroud)
这给了我两组警告。首先是警告supplement.rst:
...supplement.rst:1: WARNING: Footnote [#] is not referenced.
Run Code Online (Sandbox Code Playgroud)
然后是一对警告doc.rst:
...doc.rst:1: WARNING: Too many autonumbered footnote references: only 0 corresponding footnotes available.
...doc.rst:1: WARNING: Unknown target name "fn1".
Run Code Online (Sandbox Code Playgroud)
中的引用doc.html呈现为带有文本的链接[#fn1]_,但无处可去,并且注释左侧的数字supplement.html呈灰色。
如何在 sphinx 中实现跨文档脚注?
我需要从 RST 更改 Sphinx 生成的 Latexpdf 的封面页。
如何在不修改 Sphinx 包本身的情况下做到这一点?
我注意到conf文件中的latex_preamble,但这似乎只是附加了一些东西。如果是这样的话,一个例子会有所帮助。现在我所做的一切似乎只是添加而不是删除封面页。