2010-03-18 2 views
5

내 문서 문자열에는 내가 정의한 다른 파이썬 클래스에 대한 참조가 있습니다. Sphinx가 이러한 클래스 중 하나를 만날 때마다 나는 다른 클래스의 문서에 대한 링크를 삽입하고 싶습니다. 스핑크스에서 가능합니까?스핑크스에서는 항상 링크로 번역해야하는 키워드를 등록 할 수 있습니까?

은 특히, 내가 같은 문서화 문자열이 있습니다

'''This class contains a bunch of :class:`~foo.Foo` objects''' 

그러나 나는 스핑크스가 Foo 일치하는 모든 텍스트를 발견 선호하고 내가 가진 것처럼 보일 수 있습니다 것 :

'''This class contains a bunch of Foo objects''' 

을 내가 쓸 수 을 입력하십시오 : 클래스 : ~foo.Foo

답변

7

매크로를 사용할 수 있습니다.

내 프로젝트에는 "중요한"클래스와 전역 함수 및 그 약어가 포함 된 헤더 파일이 있습니다. 두 예 선 : 내 rst 파일에서

.. |PostItem| replace:: :class:`PostItem <hklib.PostItem>` 
.. |PostNotFoundError| replace:: :class:`PostNotFoundError <hklib.PostNotFoundError>` 

, 나는이 헤더 파일을 포함한다.

.. include:: defs.hrst 

|PostItem| is a nice class. |PostNotFoundError|, on the other hand is not. 

(.. 당신은 그에서 매크로뿐만 아니라 대체됩니다 autogen 확장을 사용뿐만 아니라, 파이썬 소스 파일에서 문서화 문자열을 포함 할 수 있습니다)

소개 : 그럼 나는 어떤 rst 파일에 매크로를 사용할 수 있습니다 귀하의 예 : 나는 헤더 파일에 Foo을 추가하고 다음과 같이 문서 문자열을 작성합니다.

'''This class contains a bunch of |Foo| objects''' 
2

스핑크스는 이에 대한 엄청난 수의 해석 된 텍스트 역할을 가지고 있습니다. 클래스 : 비현실적 소리 ~foo.Foo

내가 푸를 입력하고 내가 쓴 것처럼 스핑크스 그것을 해석하고 싶지

http://sphinx.pocoo.org/markup/inline.html#cross-referencing-python-objects

. 그것은 당신의 텍스트를 구문 분석하려고하는 RST를 마비시키는 것 같습니다. 해석 된 텍스트와 RST가 지원하는 몇 가지 인용 규칙 ( *_|`)을 찾는 것은 실용적인 한계에 관한 것입니다.

귀하가 궁금한 점은 하루 종일 가능한 모든 상황에서 각 인스턴스 Foo을 확인하기 위해 하루 종일 걸리는 RST로 연결될 수 있으며 링크를 원할 지 여부를 결정할 수 있습니다. 너는 Foo의 다르게 꾸며지지 않은 경우에만 이것을 원할 것이다. 사소한 검색 및 교체가 작동하지 않습니다.

문서 처리 전처리를 혼란스럽게 할 수 있습니다.

http://sphinx.pocoo.org/ext/autodoc.html#docstring-preprocessing

이것은 당신의 문서화 문자열 텍스트에 글로벌 검색 및 바꾸기 전략을 시도 할 수 있습니다.

관련 문제