2011-12-12 11 views
14

Tôi có một số mã và dữ liệu mẫu sao chép để _static thư mục và tôi muốn liên kết đến các tập tin trong tài liệu, một cái gì đó như:Trong Python nhân sư, làm thế nào để liên kết đến một tập tin trong thư mục _static

.. _pca-run.py: _static/example.data 

Nhưng vấn đề là nhân sư không tạo ra một liên kết tương đối phù hợp với tệp này, nhưng chỉ sao chép các giá trị như nó. Vì vậy, đối với các tệp lồng nhau trong đó _static không nằm trong cùng một liên kết thư mục không hoạt động.

+3

Dường như có vai trò '': download: '': http://stackoverflow.com/questions/2921724/include-a-text-file-as-is-in-python-sphinx-docs – Mitar

Trả lời

9

Điều bạn muốn là vai trò văn bản :download:. (như Mitar đã đề cập trong bình luận của ông).

http://sphinx.pocoo.org/markup/inline.html#role-download

Sử dụng này sẽ cho Sphinx để sao chép các tập tin trao cho một "_downloads" thư mục và tạo ra một siêu liên kết đến nó. Điều này ban đầu được dự định sẽ được sử dụng cho các tệp có thể tải xuống, giống như các tệp PDF (trong đầu ra html) hoặc tarballs hoặc bất kỳ thứ gì. Nó hoạt động tốt cho bất kỳ tập tin khác không phải là ReST.

Nếu bạn thực sự muốn, bạn có thể viết phần mở rộng để làm điều này, nhưng tôi chưa bao giờ thấy cần thiết, vì :download: thực hiện chính xác những gì tôi muốn.

+0

Nhưng ' ': download:' 'rất dài dòng. Nếu bạn muốn sử dụng nó nhiều lần, nó sẽ trở nên mệt mỏi. – Mitar

+0

Bạn có biết bất kỳ vai trò nào hoạt động như ': download:' nhưng chấp nhận ký tự đại diện (hoặc 'glob' patterns)? – Unode

+0

@Unode: Tôi không chắc tôi hiểu tại sao bạn muốn làm điều đó, nhưng có thể bạn sẽ phải tạo phần mở rộng của riêng mình. Nó không phải là khó khăn mặc dù. Xem [sphinx-contrib] (https://bitbucket.org/birkenfeld/sphinx-contrib/) cho một loạt các ví dụ. –

5

Chỉ cần tìm câu trả lời đúng cho điều này cho hình ảnh: preprend đường dẫn của tệp đích với /. Đối với hình ảnh tham chiếu từ một automodule

.. image:: some_file.png 

sẽ đề cập đến các tập tin some_file.png tương đối so với file python đang được xử lý, trong khi

.. image:: /some_file.png 

sẽ đề cập đến các tập tin some_file.png tương đối so với vị trí của conf.py. Bằng cách này, không cần phải gây ô nhiễm hệ thống phân cấp nguồn với hình ảnh.

+1

Đúng, đã làm việc cho tôi: '.. image ::/_static/foo.png' – FraggaMuffin