Sphinx je pythonovský balíček primárně určený pro vytváření softwarové dokumentace, sekundárně pak pro vytváření obecných dokumentů v populárních formátech. Zdrojovým kódem je speciálně formátovaný textový soubor; člověk může dlouho vydržet s celkem dobře zapamatovatelným zlomkem sphinxovské syntaxe. Překládá se předchystaným skriptem, výstupem mohou být formáty HTML, PDF, LaTeX, prostý text a další. Pro správnou interpretaci češtiny stačí ukládat v kódování UTF-8. Užitečnost zvyšuje podpora texovské syntaxe pro vzorce s výstupem i do HTML - cílové rovnice jsou buď PNG obrázky nebo syntaxe, k jejíž interpretaci se stránka obrací na vnější webovou aplikaci MathJax.
Těžko lze snáze. Balíček se opatří obvyklým pythonovským způsobem nebo, např. v Ubuntu, obvyklým ubuntuvským způsobem,
easy_install sphinx
apt-get install python-sphinx
Projekt se inicializuje příkazem
sphinx-quickstart
a následnou interakcí. Na pokládané otázky lze vesměs odpovědět akceptováním defaultu; odpovědět je nutno na otázku po názvu projektu a autora a rozhodnout se je třeba u volby zpracování texovských vzorců. Stojí za to zkusit si obě nabízené možnosti, pngmath a mathjax. (Vybrat je třeba nejdřív jednu, jindy druhou.) Vzniknou potřebné adresáře pro zdroje i výstupy, konfigurační soubor conf.py a překladové skripty. V conf.py se naleznou jak odpovědi ze vstupního dotazování, tak řada přednastavených hodnot, vše otevřeno dalším změnám. Např. počeštění sphinxových textů ve výstupních souborech se dosáhne změnou language = 'cs' (kód jazyka je řetězec v apostrofech), jinak lze volit de, en, es, fr, sk ad. Pro HTML jsou k mání volby pro nastavení výstupního vzhledu čili tématu, pro nastavení různých režijních textů, pro LaTeX třeba velikost písma.
Dál se už edituje předchystaný soubor index.rst (formát reStructuredText alias reST s rozšířeními pro Sphinx) a volitelně vytvářejí další navázané soubory. Pro překládání je připraven buď konfigurační soubor pro make nebo, není-li make ve Windows k dispozici, dávkový soubor make.bat. Argumentem jednoho i druhého volání make je výstupní formát:
make html
make latexpdf
make latex ; cd _build/latex ; make
make text
a několik dalších. Výstupy se formují v podadresářích adresáře _build; latexovský výstup je třeba dále překládat, k čemuž je u něj přichystán další Makefile.
Odstavce, odsazené ukázky, seznamy, direktivy ad. se oddělují od okolí prázdným řádkem. Důležité je udržování pythonovského odsazování textových struktur zleva. Hlavní nadpis je podtržen rovnítky ===, vedlejší nadpisy pomlčkami ---, v další úrovni stříškami ^^^. Kurzíva je mezi hvězdičkami, tučný text mezi dvojhvězdami, podbarvený text mezi dvojitými zpětnými apostrofy. Položky nečíslovaných seznamů začínají hvězdičkou, číslované položky křížkem s tečkou nebo explicitním číslováním. Vnořování seznamů je možné. Pro naše i cizokrajné znaky je třeba zdrojový soubor kódovat v UTF-8 (with signature).
Ukázka vnořených seznamů:
Číslovaný seznam:
Tabulky mohou mít více podob, nejjednodušší je tato:
jméno | světec |
---|---|
Petr | ano |
Pavel | ano |
Pro webové odkazy jsou připraveny jednoduché zpětné apostrofy: odkaz na web jednookých je zapsán takto: `web jednookých <http://karel.troja.mff.cuni.cz/jednooci_slepym>`_. Obrázky je zvykem umístit do adresáře _static a odkázat direktivou .. image:: _static/figura.jpg, pro obrázky s legendou direktivou .. figure::.
Je definována řada dalších direktiv pro různě vyznačené odstavce, citace, poznámky “pod čarou” [1], substituce apod.
[1] | Poznámka k poznámce “pod čarou”. |
Ukázky “ukázek kódů”, to už tady bylo, a už je to tu zas. Odstavec se ukončí čtyřtečkou ::, následující kód se odsadí a máme toto:
! Fortran 95
real(8) pi
pi=atan(1._8)*4.
! Fortran 2003
real(8),parameter :: pi=atan(1._8)*4.
Lze si vyžádat číslování řádků; pro některé programovací jazyky (Python, C, nikoliv Fortran) je definováno barevné zvýraznění syntaxe.
1 2 3 | /* C */
double pi=atan(1.)*4.;
printf("pi = %f",pi);
|
Syntaxe vzorců je převzata z TeXu. Vzorce v textu následují po :math:`...`, např. tento malý: \(c=\sqrt{a^2+b^2}\), pro odsazené vzorce je určeno .. math::. Větší vzorec se zarovnáním:
Výbava je v rozsahu schopností balíčku AMS-LaTeX. Několik dalších detailů je v návodu Math support in Sphinx - jak rovnice číslovat, jak na ně odkazovat.
Překlad a zobrazení si latexovské formáty zajistí samy, do HTML buď pngmath (s podporou instalovaného LaTeXu a dvipng) připraví hotové PNG snímky rovnic nebo se ponechá symbolický zápis as-is, který pak interpretuje javascriptová aplikace MathJax při online zobrazení stránky. Výsledky nevypadají zcela shodně, ale obojí je pěkné, i třeba při zobrazení přes NX klient. Přepíná se před překladem v konfiguračním souboru conf.py, MathJax (včetně fontů) se bere buď z jejich webu nebo se může uložit na lokálním serveru.
Sphinxové weby
Výňatky z dokumentace