2011-08-11 9 views
37

Używam Sphinx do generowania dokumentów dla projektu Pythona. Wyjściowy html nie zachowuje podziałów linii, które są obecne w docstringu. Przykład:Jak zachować podział wiersza podczas generowania dokumentacji Pythona przy użyciu Sphinx

Kod

def testMethod(arg1,arg2): 
    """ 
    This is a test method 

    Arguments: 
    arg1: arg1 description 
    arg2: arg2 description 

    Returns: 
    None 
    """ 
    print "I am a test method" 

Sphinx O/P:

TestModule.testMethod(arg1, arg2) 

This is a test method 

Arguments: arg1: arg1 description arg2: arg2 description 

Returns: None 

Każdy pomysł jak to naprawić?

+0

przykładu potrzebne. Zmodyfikowany format tekstowy jest poprawnie zachowany przez Sphinx. –

+0

Dodano przykład. –

+0

Masz pomysł, jak to zrobić, gdy twoje docstrukcje są w formacie Google i chcesz uniknąć dodania wielu \ n? –

Odpowiedz

31

Ogólnie w restructuredtext używać

| Vertical bars 
| like this 

zachować linię łamie

+8

Nie dodawaj po prostu | na dwóch oddzielnych liniach (powiedz jeśli chcesz dwie linie podziału) ... upewnij się, że masz 2 puste przestrzenie po | Staje się więc: | (spacja) (spacja) dla nowej linii. – Augiwan

5

W moim przypadku, ja starałem się dostać autodoktora czytać ciąg doc (""" my doc string """). I skończył przy użyciu \n wszędzie Musiałem dodać podział wiersza:

This is the first line\n 
and this is the second line\n 
+0

jak to zrobić, gdy twój docstring jest w formacie Google? –

18

Jeśli dodać następujące wpisy do pliku głównego .rst:

.. |br| raw:: html 

    <br /> 

Następnie w znacznikach można dodać w celu |br| tworzyć linebreaks tylko dla HTML.

I want to break this line here: |br| after the break. 

Od: http://docutils.sourceforge.net/FAQ.html#how-to-indicate-a-line-break-or-a-significant-newline

+0

Działa to z podpisami rysunków, podczas gdy nie mogłem uzyskać pionowych pasków do działania. – Dennis

+3

Pamiętaj, że | br | w tekście muszą być otoczone spacjami. –

8

W twoim przypadku można napisać:

def testMethod(arg1,arg2): 
    """ 
    This is a test method 

    | Arguments: 
    | arg1: arg1 description 
    | arg2: arg2 description 

    | Returns: 
    | None 
    """ 
    print "I am a test method" 
10

Ta odpowiedź przychodzi późno, ale być może będzie ona nadal być przydatne dla innych.

Możesz użyć reStructuredText w swoich docstrings. To coś będzie wyglądać

:param arg1: arg1 description 
:type arg1: str 
:param arg2: arg2 description 
:type arg2: str 

od spojrzeń swoim przykładzie jednak wydaje się, że używasz stylu Google dla docstrings (http://google-styleguide.googlecode.com/svn/trunk/pyguide.html?showone=Comments#Comments).

Sfinks natywnie nie obsługuje tych. Istnieje jednak rozszerzenie o nazwie napoleon, które analizuje nagłówki Google i Numpy pod numerem https://pypi.python.org/pypi/sphinxcontrib-napoleon.

Aby użyć rozszerzenia trzeba dołączyć 'sphinxcontrib.napoleon' do extension -list w Sfinksa conf.py (zwykle doc/source/conf.py), więc staje się coś podobnego

extensions = [                 
'sphinx.ext.autodoc',              
'sphinxcontrib.napoleon',             
'sphinx.ext.doctest',                            
] 
+0

To była dokładna odpowiedź, której szukałem, starając się zrozumieć, dlaczego sfinks nie oddawałby stylu Google Style, chociaż linie przewodnie zalecają nawet użycie Sphinx. –

+2

Od Sfinksa 1.3, rozszerzenie napoleona przyjdzie pakowane z Sfinksem pod sphinx.ext.napoleon. Rozszerzenie sphinxcontrib.napoleon będzie kontynuować pracę ze Sphinxem <= 1,2. – ash84

+1

W jaki sposób rozwiązuje problem podziałów linii? – minerals

Powiązane problemy