我有一个主要使用Python编写的软件包,大部分是为Python使用而设计的。但是,在Sage下使用该模块时还有一些额外的函数可用。问题是,Sage doctest必须以为前缀,而不是<>>>,而Sphinx在生成文档时无法识别这些内容。
是否有办法让Sphinx在生成HTML(或其他)文档时将前缀识别为与<>>>等效?
是否有办法让Sphinx在生成HTML(或其他)文档时将前缀识别为与<>>>等效?
你可以使用Sage内置的Sphinx版本和文档生成器。Sage正在进行工作,在http://trac.sagemath.org/ticket/13679上允许构建单个Python文件的文档,该文件不在Sage的源代码树中,因此您可以尝试该方法。
sage/doc/common
)是否有所帮助。 Sphinx的quickstart.py
中也有一行:PROMPT_PREFIX = '> '
。您可以尝试修改它并查看发生了什么。 - John Palmierisage/doctest/parsing.py
中有一些内容,但是它们之间的联系并不清楚。有趣的是,在Sphinx中搜索 ['"]>>>
,只会出现 highlighting.py
,修改它并不能解决问题。也许doctest
或pygments
中的某些内容是相关的。 - Dan Stahlke我终于找到了如何预处理文档字符串的方法,将sage:
更改为>>>
。以下代码将放入我的项目的doc/conf.py
文件中:
# Adapted from https://dev59.com/52bWa4cB1Zd3GeqPYqLn#11746519
def process_docstring(app, what, name, obj, options, lines):
for i in range(len(lines)):
lines[i] = re.sub(r'^(\s*)sage: ', r'\1>>> ', lines[i])
def setup(app):
app.connect('autodoc-process-docstring', process_docstring)
You can use numpy style indexes:
>>> x[0, 0]
0j
到
You can use numpy style indexes::
sage: x[0, 0]
0j
我添加了双冒号,并将提示更改为sage:
。我尝试使用您的代码进行此操作,但注释掉了您对conf.py
的修改。有关源代码块,请参见Sphinx文档。
然后您需要修改一个Sphinx文件:
diff -ur sphinx/highlighting.py sphinx/highlighting.py
--- sphinx/highlighting.py 2010-08-11 17:17:48.000000000 +0200
+++ sphinx/highlighting.py 2010-11-28 12:04:44.068642703 +0100
@@ -161,7 +161,7 @@
# find out which lexer to use
if lang in ('py', 'python'):
- if source.startswith('>>>'):
+ if source.startswith('>>>') or source.startswith('sage: '):
# interactive session
lexer = lexers['pycon']
else:
sage:
doctest。此外,我试图避免使用monkey patch Sphinx。但如果找到了一个好的解决方案,也许可以向他们提交一个补丁。 - Dan Stahlkesage -t 文件
,Sage会运行那些doctest。这是所有Sage doctest的格式。 - John Palmieri
sphinx-quickstart
,它会设置一个conf.py
和一个Makefile
,这样你就可以执行make clean && make html
。它会询问一些问题,最好告诉它使用一个doc
目录,否则会污染你的项目目录。如果你想直接尝试我的项目,它在GitHub上的名称是qitensor
,我已经在下面的回答中提到的地方修改了conf.py
。 - Dan Stahlke