2009-11-06 6 views
6

Pygments가 강조한 Sphinx 코드 조각의 HTML 출력에서 ​​탭 너비를 어떻게 설정합니까? 기본적으로 성가신 8이지만 4를 원합니다. Sphinx conf.py에서이 설정에 대한 단어를 찾지 못했습니다.Sphinx (문서 도구) : 출력에서 ​​탭 너비를 설정하십시오.

+1

S. Lott와 동의하면 Java 세계에서도 탭 대신 공백을 사용할 수 있습니다. http://java.sun.com/docs/codeconv/html/CodeConventions.doc3.html#262 –

+2

공백으로 전환하는 것이 쉽지 않을 수도 있습니다. 전체 팀의 코드베이스가 탭을 잘 사용할 수 있고 공백을 사용하는 문서가 일치하지 않습니다. 모든 코드를 하나씩 사용하도록 변경하는 것은 비현실적이며 잠재적으로 파괴적입니다. 스핑크스는 다양한 언어와 환경에서 유용합니다. 최고의 서사용 문서 도구가 탭을 지원하지 않을 경우 깨지지 않는 논쟁은 "PEP8, 그 이유"가 근시안과 역효과이기 때문에 깨진 코드입니다. – Shabbyrobe

+1

또한, 탭 대체는 스핑크스가 아니라 docutils에서 발생하지만 스핑크스는이 문제로 인해 심각한 영향을받으며이를 처리하는 데 몇 가지 책임을 져야한다는 것을 알고 있습니다. – Shabbyrobe

답변

0

스핑크스 익스텐션을 작성해야합니다. Add your custom Lexer을 입력하고 VisibleWhitespaceFilter과 함께 적용하십시오.

+0

Sphinx를 0.6.3으로, Pygments를 1.1.1 (화일 -V)으로 업데이트했습니다. 데프 설정 (응용 프로그램) : 감동 내 모든 파일이 다음 conf.py이 추가 VisibleWhitespaceFilter를 가져 을 pygments.filters에서 pygments.lexers.compiled 수입 JavaLexer 에서 수입 렉서 을 sphinx.highlighting에서 myLexer = JavaLexer() myLexer.add_filter (VisibleWhitespaceFilter (spaces = '!'))); app.add_lexer ('java', myLexer); 자바 코드의 모든 탭을 8 개의 "!" 모든 공백은 이고 "!" 예상대로 옵션 탭 = '!'을 사용해도 아무 것도 변경되지 않았습니다. 옵션 tabsize = 4를 시도했지만 아무 것도 변경되지 않았습니다. – jbasko

+1

마치 탭이 어쨌든 에있는 공백으로 대체 된 것처럼 보입니다. 그래서이 필터를 다른 렉서 (rest, none) [ lexers [ 'rest']. add_filter (...)]에 추가하려고 시도했지만 그 중 어떤 것도 탭 또는 탭 크기에 영향을주지 않습니다. – jbasko

0

나는 sphinx-dev 그룹에서 같은 질문을 던졌으며 스핑크스가 사용하는 Docutils의 문제라고 밝혀졌습니다. Docutils는 모든 탭을 8 칸으로 대체했으며 현재는 그 값을 스핑크스에서 변경할 수 없습니다. 사용 공간 대신 ​​탭 -

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

유일한 가능한 솔루션은 내 질문에 대한 의견 S. 로트와 존 Paulett의 조언을 따를 것으로 보인다.

2

당신의 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 문서를 참조하십시오.

관련 문제