2009-11-06 22 views
6

Sekme genişliğini, Pygments tarafından vurgulanan Sfenks kod parçacıklarının HTML çıktısında nasıl belirlersiniz? Varsayılan olarak, can sıkıcı bir 8'dir, ancak 4 istiyorum. Bu ayar hakkında Sphinx conf.py'de bir sözcük bulamadınız.Sphinx (belge aracı): çıkışta sekme genişliğini ayarlama

+1

S. Lott ile anlaştıysanız, Java dünyasında bile sekmeler yerine boşluk kullanabilirsiniz. http://java.sun.com/docs/codeconv/html/CodeConventions.doc3.html#262 –

+2

Bazılarının sadece alanlara geçiş yapması o kadar kolay olmayabilir: Tüm ekibinizin kod tabanı, sekmeleri kullanabilir ve tedarik edebilir boşlukları kullanan belgeler tutarsızdır. Tüm kodun bir diğerini kullanacak şekilde değiştirilmesi pratik değildir ve potansiyel olarak yıkıcıdır. Sfenks birçok farklı dil ve ortam için yararlıdır. Sekmeler desteklemiyorsa, çevredeki en iyi anlatımsal dokümantasyon araçlarının bozulmadığı argümanı, "PEP8, bu yüzden" en iyi ihtimalle kısa süreli ve ters tepki verdiğinden, bu sizin kırılan kodunuz. – Shabbyrobe

+1

Ayrıca, sekme yerine, sfenks değil, seküler değiştirme olur farkındayım, ancak sfenks sorundan ciddi şekilde etkilenir ve onunla başa çıkmak için bazı sorumluluk almalıdır. – Shabbyrobe

cevap

0

Bir Sphinx Uzantısı yazmanız gerekecektir. Add your custom Lexer ve VisibleWhitespaceFilter ile uygulayın.

+0

Sphinx'imi 0.6.3'e ve Pygments'a 1.1.1 olarak güncelledim (pygmentize -V). def kurulumu (uygulama):: Dokundu Tüm dosyalarım, sonra conf.py bu eklenen VisibleWhitespaceFilter içe pygments.filters gelen pygments.lexers.compiled ithalat JavaLexer ithal lexers sphinx.highlighting gelen myLexer = JavaLexer() myLexer.add_filter (VisibleWhitespaceFilter (boşluk = '!')); app.add_lexer ('java', myLexer); Bu, Java kodumdaki tüm sekmeleri sekiz "!" Ile değiştirdi ve tüm boşlukları "!" ile beklenildiği gibi. Seçenek sekmelerini denediğimde = '!', Hiçbir şey değişmedi. Seçenek tabsize = 4'ü denediğimde hiçbir şey değişmedi. – jbasko

+1

Sekmeler, daha önce zincirindeki boşluklarla değiştirilmiş gibi görünüyor. Yani, bu süzgeci diğer lexer'lara (dinlenme, hiçbiri) [ lexers ['rest']. Add_filter (...)] ile eklemeyi denedim, ancak bunların hiçbiri sekmeleri veya tabsize üzerinde herhangi bir etkiye sahip değildi. – jbasko

0

Aynı soruyu sphinx-dev grubunda da sordum ve bu, Sphinx tarafından kullanılan Docutils ile ilgili bir sorun ortaya çıkıyor. Docutils, tüm sekmeleri 8 boşlukla değiştirir ve şu anda Sphinx'ten bu değeri değiştirmenin bir yolu yoktur. Kullanım alanlarının yerine sekmelerin -

http://groups.google.com/group/sphinx-dev/browse_thread/thread/35b8071ffe9a8feb

tek çözümdür Sorum için yorumlarda S.Lott ve John Paulett tavsiye takip etmek gibi görünüyor.

2

sizin conf.py için böyle bir şey ekleyin:

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) 

Sfenks Docstring preprocessing belgelerine de bakınız.

İlgili konular