Un fichier .nlx est le document Notebook natif de Nelson. C'est un conteneur zip (de type OPC) qui garde séparés la source, les résultats sauvegardés et les figures dans un seul fichier portable.
Le conteneur comporte ces entrées :
manifest.json - le marqueur de format : format (nelson-notebook) et version.
document.json - la source : un objet avec un tableau blocks (le contenu ordonné du Notebook). Cette partie reste légère et se compare proprement, et le lecteur headless l'analyse directement.
output.json - les résultats sauvegardés : pour chaque cellule de code, sa dernière sortie texte, son erreur et ses références de figures, indexés par identifiant de bloc. Régénérables en réexécutant le document, et tenus à part pour ne jamais polluer la source.
media/ - les figures produites par une cellule de code, extraites en fichiers image (par exemple media/fig0.png) pour garder les parties JSON légères et conserver les images sans perte.
Chaque élément de blocks est un objet avec un type et un objet props :
heading / paragraph - texte mis en forme (un titre porte props.level).
codecell - une cellule de code Nelson ; props.code est le code. Ses résultats vivent dans output.json, pas dans la cellule.
equation - une équation LaTeX (props.latex).
les contrôles interactifs (curseur, liste déroulante, case à cocher, ...) et les tâches interactives - stockés avec leur variable liée et leur valeur dans props.
Seules les cellules codecell sont exécutables. notebook et run évaluent leur props.code dans l'ordre dans l'espace de travail de base ; edit ouvre le document dans l'éditeur Notebook.
Un Notebook peut aussi être enregistré en texte brut .m, où chaque bloc est écrit sous un marqueur %% [kind] : il s'ouvre dans n'importe quel éditeur et s'exécute comme un script ordinaire.
manifest.json
document.json
output.json
media/fig0.png
{
"blocks": [
{ "type": "heading", "props": { "level": 1 }, "content": "Mon Notebook" },
{ "type": "paragraph", "content": "Une courte description." },
{ "type": "codecell", "props": { "code": "x = linspace(0, 1, 10);\nplot(x)" } }
]
}
| Version | Description |
|---|---|
| 2.0.0 | version initiale |