Table des matières

Introduction

1. Objectifs

Scidoc est un logiciel de programmation litérale permettant de produire des pages HTML et PDF. Je l'ai conçu et réalisé dans le but de construire le présent site web.

Scidoc est principalement, mais pas exclusivement, destiné à fonctionner avec des langages de script, c'est-à-dire dont le code source ne nécessite pas de compilation. Il contient actuellement des interfaces avec Python, Scilab et Mathematica.

Les sorties produites par l'exécution du script, sorties textuelles ou graphiques, sont automatiquement incorporées dans la page finale. Par exemple, les graphiques produits par un script Mathematica sont incorporés juste après le code correspondant.

De plus, Scidoc génère des équations mathématiques au format MathML et des graphiques vectoriels au format SVG. Seul le navigateur Firefox est capable d'afficher directement les équations MathML. Afin de permettre l'affichage de ces équations sur tout navigateur, nous utilisons le moteur javascript MathJax (qui n'existait pas au moment de la création de ce site).

2. Connaissances requises

Scilab utilise la technologie XML. Pour l'utiliser, il faut connaître la syntaxe de base de XML et avoir quelques notions de HTML. L'écriture des équations mathématiques se fait avec la syntaxe LaTeX.

3. Principe de fonctionnement

Il prend en entrée une page écrite dans un format XML, appelé scidocxml. Cette page contient du texte, des équations mathématiques, les liens hypertextes, du code source de différents langages, des figures, etc. Scidoc produit en sortie une page XHTML et une page PDF, obtenue via LaTeX.

Le traitement de la page initiale, écrite en scidocxml, se fait en deux étapes :

La première partie traite uniquement le contenu de la page, en ajoutant différents contenus comme les graphiques générés par les scripts.

La mise en forme de la page finale se fait uniquement dans la seconde partie, grace à une feuille de style XSLT. L'apparence de la page XHTML finale (polices de caractères, couleurs, etc) est gérée par une feuille de style CSS qui peut être facilement modifiée.

4. Filtres de traitement du contenu

Ces traitements sont effectués par des filtres écrits en Python. Les principaux traitements réalisés sont les suivants :

Chaque opération est réalisée par un filtre particulier. Les filtres utilisent tous le principe suivant. Un élément XML est analysé et traité puis son contenu est remplacé par un nouveau contenu. Par exemple, le filtre traitant les équations LaTeX traite les éléments XML de la forme suivante :

<ptex>\begin{equation}y=\frac{x^2}{x+1}\end{equation}</ptex>

Après traitement, chaque élément ptex est remplacé par un élément MathML.

Les éléments contenant un script, par exemple Scilab, sont analysés d'un bloc pour produire un code source Scilab. Ce code source contient le code figurant dans la page initiale plus du code générant un fichier XML contenant les sorties textuels et les liens vers les figures. Précisons en restant sur l'exemple de Scilab. La page scidocxml contient des éléments de la forme :

<scilab>script scilab</scilab>

Le fichier source scilab généré exécute le script tout en générant un fichier XML contenant autant d'éléments scilab que la page initiale. Chacun de ces éléments contient le contenu de remplacement de l'élément initial scilab correspondant. Ce contenu est constitué généralement du code source lui-même, des sorties textuelles et des liens vers les figures générées.

Creative Commons LicenseTextes et figures sont mis à disposition sous contrat Creative Commons.