如何在Pygments突出顯示的Sphinx代碼片段的HTML輸出中設置製表符寬度? 默認情況下,它是令人討厭的8,但我想要4. 在Sphinx conf.py中找不到關於此設置的字樣。獅身人面像(文檔工具):在輸出中設置製表符寬度
回答
您將需要編寫一個獅身人面像擴展。 Add your custom Lexer,並將其與VisibleWhitespaceFilter一起使用。
我更新了獅身人面像到0.6.3和Pygments到1.1.1(pygmentize -V)。 感動我的所有文件,然後將此添加到conf.py: 畫質設置(應用程序): 從pygments.filters從pygments.lexers.compiled進口JavaLexer sphinx.highlighting進口詞法分析器 導入VisibleWhitespaceFilter myLexer = JavaLexer () myLexer.add_filter(VisibleWhitespaceFilter(spaces ='!')); app.add_lexer('java',myLexer); 這將我的Java代碼中的所有選項卡替換爲八個「!」和「!」的所有空間 如預期。 當我嘗試選項標籤='!'時,沒有任何改變。 當我嘗試選項tabsize = 4時,沒有任何改變。 – jbasko 2009-11-09 15:13:01
看起來標籤已被 之前的某個地方的空間替換。 因此,我試圖添加此過濾器到其他詞法分析器(其餘,沒有)[與 詞法分析器['rest']。add_filter(...)],但沒有任何影響 選項卡或製表符。 – jbasko 2009-11-09 15:13:39
我問了關於sphinx-dev組的相同問題,結果發現這是Sphinx使用的Docutils的問題。 Docutils將所有標籤替換爲8個空格,並且目前無法從Sphinx更改該值。
http://groups.google.com/group/sphinx-dev/browse_thread/thread/35b8071ffe9a8feb
唯一可行的解決方案似乎是遵循美國洛特和約翰Paulett建議在評論我的問題 - 用空格代替製表符。
添加這樣的事情你conf.py:
import re
def process_docstring(app, what, name, obj, options, lines):
spaces_pat = re.compile(r"({8})")
ll = []
for l in lines:
ll.append(spaces_pat.sub(" ",l))
lines[:] = ll
def setup(app):
app.connect('autodoc-process-docstring', process_docstring)
又見獅身人面像Docstring preprocessing文檔。
- 1. 獅身人面像文檔
- 2. 獅身人面像定製autoclass輸出
- 3. 爲獅身人面像設置Django設置(文檔)
- 4. 解析獅身人面像像文檔
- 5. 獅身人面像類屬性文檔
- 6. 獅身人面像文檔變量
- 7. 顯示*僅*文檔字符串獅身人面像文檔
- 8. 獅身人面像中的組方法文檔字符串
- 9. 我如何讓獅身人面像表適合寬度?
- 10. 有獅身人面像頂替文檔字符串文本
- 11. 獅身人面像和JavaScript文檔工作流程
- 12. MathJax在獅身人面像
- 13. 在獅身人面像
- 14. 思維獅身人面像找不到獅身人面像
- 15. 獅身人面像的控制面板?
- 16. 如何創建一個PDF-外的獅身人面像的文檔工具
- 17. 獅身人面像只返回2(出)使用獅身人面像PHP API
- 18. 在獅身人面像輸出中顯示縮進
- 19. 印度英語CMU獅身人面像
- 20. 在Rails中設置思維獅身人面像
- 21. 獅身人面像文件在本地工作,但不是在閱讀文檔
- 22. 問題設立獅身人面像
- 23. 獅身人面像php api不工作
- 24. 包括文本文件*如(Python)的獅身人面像文檔
- 25. 獅身人面像LaTeX標記限制
- 26. 獅身人面像4 - 控制檯
- 27. Rails,思維獅身人面像配置任務不工作...沒有輸出
- 28. 獅身人面像通配符匹配
- 29. 獅身人面像 - 分隔符
- 30. 獅身人面像削減符號
與S.洛特一致,即使在Java世界中,您也可以使用空格而不是製表符。 http://java.sun.com/docs/codeconv/html/CodeConventions.doc3.html#262 – 2009-11-06 13:14:56
對於某些人來說,切換到空格可能並不那麼容易:整個團隊的代碼庫可以很好地使用製表符,並提供使用空格的文檔不一致。將所有代碼更改爲使用一個代碼是不切實際的並且可能具有破壞性。獅身人面像適用於許多不同的語言和環境。最好的敘述文檔工具如果不支持製表符,那麼它就不會被破壞,這是因爲「PEP8,這就是爲什麼」的代碼已經被破壞,這是充其量只是短視和適得其反的結果。 – Shabbyrobe 2012-05-17 02:00:48
此外,我知道tabtil替代發生在docutils,而不是在獅身人面像,但獅身人面像受到嚴重影響的問題,應承擔一定的責任來處理它。 – Shabbyrobe 2012-05-17 02:04:30