Saya menggunakan Sphinx untuk mendokumentasikan proyek non-Python. Saya ingin mendistribusikan ./doc
folder di setiap submodule, berisi submodule_name.rst
file untuk mendokumentasikan modul itu. Saya kemudian ingin memasukkan file-file itu ke dalam hierarki master untuk membuat spesifikasi untuk keseluruhan desain.
Yaitu:
Project
docs
spec
project_spec.rst
conf.py
modules
module1
docs
module1.rst
src
module2
docs
module2.rst
src
Saya mencoba memasukkan file dalam project_spec.rst
dokumen master toctree seperti ini:
.. toctree::
:numbered:
:maxdepth: 2
Module 1 <../../modules/module1/docs/module1>
Namun pesan kesalahan ini menghasilkan:
PERINGATAN: toctree berisi referensi ke dokumen yang tidak ada u'modules / module1 / docs / module1 '
Apakah tidak mungkin untuk digunakan ../
dalam jalur dokumen entah bagaimana?
Pembaruan: Menambahkan lokasi conf.py
Pembaruan: Selain trik sertakan di bawah ini, ini masih (2019) tidak memungkinkan. Ada masalah terbuka yang terus dimajukan: https://github.com/sphinx-doc/sphinx/issues/701
sumber
.rst
ekstensi ke saluranModule 1 <../../modules/module1/docs/module1>
?source_suffix
sudah diatur ke.rst
dalamconf.py
file konfigurasi Anda . Selain itu, di mana file ini dalam hierarki direktori Anda, karena tampaknya semua jalur relatif terhadap file ini?source_suffix
diatur ke.rst
danconf.py
ada di folder yang sama denganproject_spec.rst
file.Jawaban:
Ya kamu bisa!
Sebagai pengganti symlink (yang tidak akan berfungsi di Windows), buat dokumen rintisan yang tidak memiliki apa pun di dalamnya selain
.. include::
arahan.Saya mengalami ini mencoba untuk menautkan ke file README yang ada di atas pohon sumber. Saya meletakkan yang berikut ini dalam sebuah file bernama
readme_link.rst
:Kemudian
index.rst
, saya membuat toctree terlihat seperti:Contents: .. toctree:: :maxdepth: 2 readme_link other_stuff
Dan sekarang saya memiliki link ke catatan rilis saya di halaman indeks saya.
Terima kasih kepada http://reinout.vanrees.org/weblog/2010/12/08/include-external-in-sphinx.html atas sarannya
sumber
docs
) yang tertaut ke direktori-saat ini ('.'). Kemudian Anda dapat menggunakan: download:docs\foo.rst
dan ini akan berfungsi untuk file di dalamdocs
folder atau induknya... include:: ../readme.rst
termasuk ekstensi.Tampaknya jawabannya adalah tidak, dokumen yang terdaftar di pohon-toc harus berada di dalam direktori sumber , yaitu direktori yang berisi dokumen master Anda dan
conf.py
(dan subdirektori lainnya).Dari milis sphinx-dev :
Jadi daripada menyalin file menggunakan
shutil
Anda bisa mencoba menambahkan symlink ke semua modul Anda diProject/docs/spec
direktori. Jika Anda membuat symlink keProject/modules
Anda maka akan mereferensikan file-file ini di toc-tree Anda hanya sebagaimodules/module1/docs/module1
dll.sumber
sys.path
dalam conf.py tapi itu tidak berhasil.Di conf.py, tambahkan jalur relatif ke sistem menggunakan sys.path dan os.path
Sebagai contoh:
import os import sys sys.path.insert(0, os.path.abspath('..')) sys.path.insert(0, os.path.abspath('../../Directory1')) sys.path.insert(0, os.path.abspath('../../Directory2'))
Kemudian gunakan index.rst Anda seperti biasa, dengan mereferensikan file pertama di direktori yang sama. Jadi di index.rst saya di folder Sphinx lokal saya:
Contents: .. toctree:: :maxdepth: 4 Package1 <package1.rst> Package2 <package2.rst> Package3 <package3.rst>
Kemudian di package1.rst, Anda seharusnya dapat mereferensikan paket relatif secara normal.
sumber
Package1
? Apakah itu pertama kalipath
ditentukan menggunakansys.path.insert
? Atau, apakah ada tutorial di suatu tempat? Sepertinya saya tidak dapat menemukan dokumen yang relevan.Package1
adalah entri bernama sehingga TOC menampilkan "Package1" sebagai judul bagian.Anda juga dapat mengkonfigurasi sphinx agar hanya memiliki file index.rst di root dan semua hal sphinx lainnya di Project / docs:
Untuk windows saya memindahkan semua file sphinx dan dirs (kecuali index.rst) ke docs / dan mengubah:
docs/make.bat
: Ubahuntuk
docs/conf.py
: Menambahkansys.path.insert(0, os.path.abspath('..'))
sumber
Saya memecahkan masalah saya yang sangat mirip dengan perbedaan yang saya inginkan untuk menyertakan notebook jupyter eksternal. Saya telah menginstal nbsphinx tetapi saya tidak dapat membuatnya berfungsi. Apa yang tidak berhasil:
Saya memiliki direktori yang ingin saya sertakan root di jalur:
conf.py:
import os import sys sys.path.insert(...
Menggunakan
.. include:: directive
file tersebut disertakan dalam dokumentasi tetapi apa adanya.Akhirnya yang menyelesaikan masalah adalah menginstal paket nbsphinx-link
sumber
Satu solusi, jika benar-benar tidak mungkin untuk menggunakan tautan relatif yang dicadangkan
../
adalah yang dapat saya gunakanshutil
untuk menyalin file ke pohon folder spesifikasi diconf.py
untuk spesifikasi, tetapi saya lebih suka tidak memiliki banyak salinan kecuali benar-benar diperlukan.sumber