Sphinx*

Auteur:

J.Soranzo

Date:

Octobre 2019

Societe:

VoRoBoTics

Entity:

VoLAB

Sphinx pour la documentation

alternate text

Voici mon utilisation de Sphinx !

Pourquoi ?

J’ai longtemps cherché un bon outil de documentation.

Quels sont mes critéres ?

A compléter.

Doc-O-Matic

Je le met ici mais je créerai un article plus tard quand j’aurai regardé de plus près

Oui mais non parce que c’est payant ! Même la version de base.

site Doc-O-Matic [1]

Documenter du code source Python

voir Documenter du code Python et relaton avec Sphinx

Doc officielle

Site officiel Sphinx [2]

Memo rst Sphinx readthedoc [3]

Autres docs

Cheat sheet sur openalea.gforge.inria.fr [4]

Au VoLAB

Globalement, on utilise github-pages dont l’abréviation est gh-pages

Méthode Pierre: voir sur son journal de manip [5]

Que je compléterais par:

  1. Créer le répertoire du projet

  2. Créer à l’intérieur un répertoire “projet” et un autre “webdoc”

  3. Dans projet créer _01-userDoc se placer dedans pour lancer sphinx-quickstart

  4. Selon qu’on est sous Linux ou sous Windwos on peut effacer un des 2 make (make.bat pour Windwos)

De même que dans son chapitre Installer Préparation de l’arborescence, il faut se déplacer dans projet et faire un git init

Note

sphinx-quickstart crée automatiquement le répertoire source

Commencer le boulot après…

Retouches de conf.py:

master_doc = 'index'

exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']

html_theme = 'nature'

html_theme_options = {
    "body_max_width" : "70%"
}

Retouches de index.rst

Si toctree il y a (ou doit y avoir):
.. toctree::
   :maxdepth: 2
   :caption: Articles:
   :titlesonly:

Supprimer : * :ref:`modindex` (on fait pas du Python ;-)

Mise en places des gh-pages (précisions)

Au premier push du projet, git demande de faire –up-stream origine uri.

Dans le dossier html avant le git clone de l’étape 8 on peut effacer le contenu du dossier (puisqu’on le génère avec un make html)

Le commentaire associé à la commande:

git symbolic-ref HEAD refs/heads/gh-pages

est très très important : puis on bascule automatiquement sur cette nouvelle branche

C’est à l’étape 9.4 qu’on crée la branche distante:

git push origin gh-pages

A partir de cette étape, on peut activer les pages sur gihub, dans setting/pages.

../_images/githubpagesInterface.jpg

css pas dans gh-pages

Mettre de le fichier .nojekyll dans le répertoire source et pas dans le répertoire html ;-)

Le 17/09/2022, en créant la doc de la CNC, je crois qu’il est nécessaire aussi dans le dossier html

Ce fichier est utilisé par make html

Bypassing Jekyll on GitHub Pages [6]

git clone après un crash

Autre soucis après un crash disque ne pas faire un git clone le_lien_github mais faire git clone le_liengithub . le point est très important.

Dans sa doc Pierre, à l’étape 8, fait :

git clone [url_copiée_depuis_GitHub] html

Avertissement

Préciser le répertoire de destination dans la commande git clone permet de changer le nom de l’arborescence distante.

Préciser le répertoire de destination dans la commande git clone permet de changer le nom de l’arborescence distante.

Intégrer un fichier csv

.. csv-table:: Legende
:file: fichier.csv
:header-rows: 1

make file automatique voir site webdevdesigner.com [7] excel to csv n ligne de commande

Intégrer un svg

Sphinx supporte les svg mais lors de la génération du pdf cela coince. Donc plutôt que d’essayer de faire des conditions avec des directives autant tout mettre tout de suite en png.

Et pour qu’ils soient à jour l’idée est d’ajouter au fichier make.bat (sous Linux c’est le ficher Makefile) la commande Inkscape qui les génère:

set /p rep="Generer les fichiers externe ? o/n "

if "%rep%" == "n" goto extFilesUpToDate

inkscape --export-type=png specSoft\images\diagramSeqBoot.svg
inkscape --export-type=png verification\images\strapDeConf.svg

L’avantage du Makefile est qu’on peut se passer de la question Generer les fichiers externe ?

Intégrer du Graphviz ou plantUML

A ajouter au config.py:

extensions = [ 'sphinx.ext.graphviz', 'sphinxcontrib.plantuml' ]

plantuml = 'java -jar c:/plantuml/plantuml.jar'

graphviz_output_format = "svg"
plantuml_output_format = "svg_obj"

Puis dans le code:

.. graphviz:: graphviz/config4Access.gv

ou

.. uml:: graphviz/config4json.wsd

Utiliser sur le projet Electrical Power Stip IoT.

Voir aussi : plantUML dans C++

Graphviz

Graphiz interactiv preview dans visual Studio Code : pas de touche de rac mais ctrl+shift+p et cherche Graphviz interactive preview. L’extension est :

../_images/graphizPreviewer.jpg

site officiel de GraphViz [9] La doc est en ligne.

Petite astuce dans la doc allez au chapitre attributs [8], la Gallery d’exemples peut être aussi très utile.

../_images/exempleGraphviz.JPG

Le code:

digraph{
    label = "Architecture"
    labelloc="t"
    rankdir="LR"

    splines="line";



    node [shape=box, height=0.5]
    subgraph cluster_0 {
        label="sb1";
        A -> B [label="lien série"];
        C -> B [label = "RSEDA" ];


    }

    subgraph cluster_1 {
        label= "sub graph"
        // edge[dir = back]
        // B -> D [color = red]
        // node[color=blue]
        // B -> X
        A -> G -> C
    }

    autres[label="etiquette longue", fillcolor="turquoise", style="rounded,filled"]
    molette[fillcolor="coral", style="filled"]
    autres -> molette -> vis

    node [shape=folder, height=0.5]
    fichier[color=yellow, shape=tab]
    dossier -> fichier node[color=green]
    fichier -> texte[dir="both", arrowhead="olbox", arrowtail="box"]

}

Avertissement

Ce qui est en bas dans le texte est en haut dans le graphique.

Cela donne:

digraph{ label = "Architecture" labelloc="t" rankdir="LR" splines="line"; node [shape=box, height=0.5] subgraph cluster_0 { label="sb1"; A -> B [label="lien série"]; C -> B [label = "RSEDA" ]; } subgraph cluster_1 { label= "sub graph" // edge[dir = back] // B -> D [color = red] // node[color=blue] // B -> X A -> G -> C } autres[label="etiquette longue", fillcolor="turquoise", style="rounded,filled"] subgraph cluster_3 { label = "BTSE" a } autres -> a [label="115200"] a -> vis node [shape=folder, height=0.5] fichier[color=yellow, shape=tab] dossier -> fichier node[color=green] fichier -> texte }

Astuce images dans une table (list-table)

Utiliser dans notes Blender.rst:

.. |im1| image:: images/eveeReflexionAvec.jpg
   :width: 300 px

.. |im2| image:: images/eveeReflexionSans.jpg
   :width: 300 px

.. list-table::
   :widths: 30 30
   :header-rows: 1

   * - Avec reflections
     - Sans

   * - |im1|
     - |im2|

Les liens

Liens externes locaux (fichier word, pdf…)

Exemple vers un fichier pdf stocké dans la même arborescence. Externe en ce sens que ce ne sont pas des fichier rst

On peut utiliser le role :download:

Page Sphinx sur download [10]

Exemple doc pdf sphinx

Autre utilisation avec un word

Liens internes locaux (lien vers fichier rst)

Lien simple dans le même fichier vers une section nommé du fichier css pas dans gh-pages

`nom_de_la_section`_

Liens vers un fichier .rst de la même arbo directive :ref: Lien vers un point en particulier dans un fichier de l’arbo directive :ref:

.. _ref_lien:

usage : :ref:`ref-lien`
ou :ref:`nom_a_afficher<rel_lien>`

Attention le _ dans la définition est obligatoire mais pas dans l'utilisation
Astuce : si la définition précède un titre pas besoin de nom_a_afficher

Voir aide officielle ref [11]

Lien externe distant (url internet)

exemple url externe au système documentaire:

`link_desc`_

.. _`link_desc` : url

Themes

Recherche d’un thème avec barre de navigation fixe

Note

Ce serait l’option stickysidebar bar https://www.sphinx-doc.org/en/master/usage/theming.html au moins pour le theme classic

Le pb est que les options ne sont pas commune d’un thème à l’autre.

La page des themes Sphinx [12]

Nouveau en 2023

Ahd

Voir aussi

SITE OFFICIEL

sphinx-ahd-theme 5.3.8 sur pypi.org [13]

Nefertiti

Avertissement

ATTENTION INSTALL SPHINX 7.x !!!!!!!!!!!!!!!!!!!!!!!!!!!

Voir aussi

SITE OFFICIEL

Nefertiti for Sphinx [14]

testés

PSphinxTheme

Avertissement

Dans les premier ! Avec sidebar rétractable 5 colorations fournies. Theme difficile à installer sous Windows !!! Erreur dans setup.py (os supported arch Linux ! )

guzzle

Ne support pas body_max_width dommage

../_images/guzzle.jpg

cloud

Plutôt pas mal, beaucoup d’option mais je trouve l’écartement entre les lignes de mon header

Auteur:

J.Soranzo

Date:

Octobre 2019

Societe:

VoLAB

Entity:

VoRoBoTics

trop important ! Même en passant bodylineheight de 1.5 à 1em directement dans le fichier de configuration du theme:

Python38-32\Lib\site-packages\cloud_sptheme\themes\cloud\theme.conf
../_images/cloud.jpg

Installaton par pip install du fichier wheels fourni sur le site.

Theme possédant un site très complet. Existe en greencloud, redcloud mais solarcloud, magenta_cloud ne fonctionnent pas pourtant les 2 fichiers se ressemblent beaucoup

Permet de régler la largeur avec :

html_theme_options = {
    'max_width' : '70%'
}

Pour mettre la même couleur entre le fond et les bordures: 'borderless_decor' : 'true'

La config du theme est dans:

C:\Program Files\Python37\Lib\site-packages\cloud_sptheme\themes\cloud\theme.conf

murray

Trop blanc mais intéressant pour son menu repliable.

Astropy

S’install avec un fichier wheel. pip install astropy_sphinx_theme-1.1-py2.py3-none-any.whl Source sur github

Nécessite quelque retouche dans la barre mais mériterait de regénérer un wheel modifié pour le logo

...\Python\Python38-32\Lib\site-packages\astropy_sphinx_theme\bootstrap-astropy\static

astropy_logo_32.png

et dans layout.html changer le lien vers une autre destination

A partir de la ligne 530 du css, il y a la largeur du doc

div.body {
        background-color: #ffffff;
        padding: 0 0 0px 20px;
        min-width: 450px;
        max-width: 2000px;
}


div.bodywrapper {
        margin: 0 0 0 230px;
        max-width: 80em;
}

A tester

Rejetés

  • agoraplex.themes.sphinx : aucune des fonctionnalités recherchées

Sphinx to pdf

make latexpdf

mais il faut installer basic-miktex-2.9.7216-x64.exe et perl.exe

Essais du 17/06/2020: problème d’encodage pour latex. Installation de nombreuses dépendances latex en automatique

Nouvel article non testé, le 16/09/2024:

Attention l’intallation de rst2pdf risque de casser la config. Donc le faire avec du venv.

Petits trucs

Liens Doxygen

doxylink : contributed extension

Doxylink documentation [16]


Séparateur html

Clearer:

.. |clearer|  raw:: html

    <div class="clearer"></div>
_usage : |clearer|

Autres astuces difficilement classable

7/3/20 J’ai trouvé ce site ou plutot ce MOOT de l’université de Grenoble :

ReFlexPro, Univ. Grenoble Alpes [17]