maintenance.init_mathPbs

Ce module code et présente le manifeste du dépôt math-pbs.

Modifié le 09/03/23 @author: remy

Le manifeste d'un dépôt décrit

  • les conventions de nommage des fichiers permettant leur traitement local avant publication et contextualisation,
  • les commandes de traitement local,
  • les données du serveur de publication spécifique au dépôt,
  • les données du serveur de contextualisation spécifique au dépôt.

Ce module définit un dictionnaire nommé manifeste.

  • manifeste['nom'] présente le nom du dépôt : 'math-pbs'
  • manifeste['execloc'] présente les paramètre de traitement local
  • manifeste['espace'] présente les paramètres de publication
  • manifeste['context'] présente les paramètres de contextualisation

Conventions de nommage

L'élément essentiel de ce dépôt est un problème. Un problème particulier est caractérisé par une chaîne de caractère (appelé ici son titre) qui évoque vaguement son thème.

Le nom des fichiers LateX associés à un problème est formé à partir de son titre:

  • précédé par E pour un énoncé et C pour un corrigé (sources LateX),
  • précédé par A pour le fichier à compiler en pdf du problème corrigé.

Exemple alglin15 est le titre d'un problème d'algèbre linéaire. L'énoncé est Ealglin15.tex, le corrigé est Calglin15.tex. Le fichier à compiler présentant le problème corrigé est Aalglin15.tex.

Énoncés ou corrigés peuvent utiliser des fichiers annexes (figures, codes,..) dont le nom est obtenu en ajoutant _numéro à la fin avant l'extension.

Exemple p3impko est le titre d'un problème portant sur le thème "période 3 implique chaos". Le corrigé comporte une figure Cp3impko_1.pdf formée à partir de la source Cp3impko_1.asy écrit en asymptote (langage de création de figure) compilé en pdf. L'énoncé comporte aussi une figure Ep3impko_1.pdf formée à partir de Ep3impko_1.asy

Pour le moment, un fichier dont le nom est Atitre.tex est édité à la main. Remarque, dans le dépôt d'exercices, les fichiers analogues sont formés et mis à jour par la maintenance.

Traitement local

  • Avant publication

    • Les fichiers Atitre.tex sont compilés en pdf et placés dans pdfdir.
  • Avant contextualisation

    • Les énoncés sources sont scannés pour extraire les descriptions (voir contextualisation).

    • Les fichiers *.idx sont scannés pour extraire les index (voir contextualisation).

Voir les sous modules execlocal, exl_mathPbs pour la mise en oeuvre des traitements locaux et les résultats passés aux classes de publication et de contextualisation.

Publication

Les fichiers images Atitre.pdf dans pdfdir sont téléchargés dans l'espace associé au dépôt.

Voir le sous-module espace pour la mis en oeuvre de la publication.

Ce sous-module ne définit en clair que les paramètres publics du serveur de publication. Les credentials secrets sont définis dans le fichier local ~/.aws.

Contextualisation

Noeuds

À chaque problème correspond un unique noeud dans la base en graphe caractérisé par son label et ses propriétés typeDoc et titre. L'exemple suivant de requête cypher renvoie l'unique noeud associé au problème de titre "prob4".

MATCH (d:Document {typeDoc:"problème", titre:"prob4"}) RETURN d

Descriptions

Chaque problème comporte une description codée en dur dans la première ligne de la source de son énoncé entre les tags %<dscrpt> et %</dscrpt>. Le début de Eprob4.tex est

%<dscrpt>Lancers de pièces.</dscrpt>
On dispose de deux pièces de monnaie discernables, désignées dans la suite
de l'exercice par \og pièce 1g~ et \og pièce 2g. On ...

Le noeud renvoyé par la requête précédente est

{
"identity": 7214,
"labels": [
    "Document"
],
"properties": {
    "date": "2018-05-06T21:36:11Z",
    "titre": "prob4",
    "urlSrcEnon": "https://github.com/nicolair/math-pbs/blob/master/Eprob4.tex",
    "typeDoc": "problème",
    "urlSrcCorr": "https://github.com/nicolair/math-pbs/blob/master/Cprob4.tex",
    "description": "Lancers de pièces.",
    "url": "https://maquisdoc-math.fra1.digitaloceanspaces.com/maths-pbs/Aprob4.pdf"
},
"elementId": "7214"
}

La description du problème est la propriété description de ce noeud.

Index

Les index sont définis dans la source LateX par la commande \index. Lors de la compilation, un fichier .idx est créé qui permet localement d'associer l'index et le problème. Du côté de la base en graphe, un index est un noeud labelisé Concept. Une arête labélisée INDEXE issue du noeud associé au problème pointe vers le noeud associé à l'index.

Si on considère l'arête dans l'autre sens c'est à dire pointant de l'index vers le problème, un index apparait comme un mot-clé.
Un mot-clé défini par un utilisateur sera défini avec une arète dont la source est le noeud représentant le mot et dont la cible est le noeud représentant le problème. Cette fonctionnalité n'est pas encore implémentée et les labels du noeud représentant le mot et de l'arête ne sont pas fixés.

Voir les sous modules graphdb, bdg_mathPbs pour la mise en oeuvre de la contextualisation.

Ce sous-module ne définit en clair que les paramètres publics du serveur de contextualisation. Les credentials secrets sont définis dans les variables d'environnement NEO4J_URL et NEO4J_PASSWORD.

Scénarios de travail admissibles

  • suppression d'un problème
  • création d'un problème
  • modification; texte, description, index
  1"""
  2Ce module code et présente le *manifeste* du dépôt `math-pbs`. 
  3
  4Modifié le 09/03/23 @author: remy
  5
  6Le manifeste d'un dépôt décrit
  7- les conventions de nommage des fichiers permettant leur traitement local avant publication et contextualisation,
  8- les commandes de traitement local,
  9- les données du serveur de publication spécifique au dépôt,
 10- les données du serveur de contextualisation spécifique au dépôt.
 11
 12
 13Ce module définit un dictionnaire nommé `manifeste`.
 14- `manifeste['nom']` présente le nom du dépôt : 'math-pbs'
 15- `manifeste['execloc']` présente les paramètre de traitement local
 16- `manifeste['espace']` présente les paramètres de publication
 17- `manifeste['context']` présente les paramètres de contextualisation
 18
 19### Conventions de nommage
 20
 21L'élément essentiel de ce dépôt est un problème. Un problème particulier est caractérisé par une chaîne de caractère (appelé ici son titre) qui évoque vaguement son thème.
 22
 23Le nom des fichiers LateX associés à un problème est formé à partir de son titre:
 24- précédé par `E` pour un énoncé et `C` pour un corrigé (sources LateX),
 25- précédé par `A` pour le fichier à compiler en pdf du problème corrigé.
 26
 27Exemple `alglin15` est le titre d'un problème d'algèbre linéaire.
 28L'énoncé est `Ealglin15.tex`, le corrigé est `Calglin15.tex`.
 29Le fichier à compiler présentant le problème corrigé est `Aalglin15.tex`.
 30
 31Énoncés ou corrigés peuvent utiliser des fichiers annexes (figures, codes,..)
 32dont le nom est obtenu en ajoutant `_numéro` à la fin avant l'extension.
 33
 34Exemple `p3impko` est le titre d'un problème portant sur le thème
 35"période 3 implique chaos". Le corrigé comporte une figure `Cp3impko_1.pdf`
 36formée à partir de la source `Cp3impko_1.asy` écrit en `asymptote` (langage
 37de création de figure) compilé en pdf. L'énoncé comporte aussi une figure
 38`Ep3impko_1.pdf` formée à partir de `Ep3impko_1.asy`
 39
 40Pour le moment, un fichier dont le nom est `Atitre.tex` est édité à la main.
 41Remarque, dans le dépôt d'exercices, les fichiers analogues sont formés et mis à jour par la maintenance.
 42
 43###  Traitement local 
 44
 45- Avant publication
 46  - Les fichiers `Atitre.tex` sont compilés en pdf et placés dans `pdfdir`.
 47
 48- Avant contextualisation
 49 - Les énoncés sources sont scannés pour extraire les descriptions (voir contextualisation).
 50
 51 - Les fichiers `*.idx` sont scannés pour extraire les index (voir contextualisation).
 52
 53Voir les sous modules [`execlocal`](execlocal.html), [`exl_mathPbs`](exl_mathPbs.html) pour la mise en oeuvre des traitements locaux et les résultats passés aux classes de publication et de contextualisation.
 54
 55### Publication 
 56
 57Les fichiers images `Atitre.pdf` dans `pdfdir` sont téléchargés dans l'espace associé au dépôt.
 58
 59Voir le sous-module [`espace`](espace.html) pour la mis en oeuvre de la publication. 
 60
 61Ce sous-module ne définit en clair que les paramètres publics du serveur de publication.
 62Les credentials secrets sont définis dans le fichier local `~/.aws`.
 63
 64### Contextualisation 
 65
 66#### Noeuds
 67
 68À chaque problème correspond un unique noeud dans la base en graphe caractérisé par son label et ses propriétés `typeDoc` et `titre`. L'exemple suivant de requête cypher renvoie l'unique noeud associé au problème de titre "prob4".
 69
 70    MATCH (d:Document {typeDoc:"problème", titre:"prob4"}) RETURN d
 71    
 72#### Descriptions
 73
 74Chaque problème comporte une *description* codée en dur dans la première ligne de la source de son énoncé entre les tags `%<dscrpt>` et `%</dscrpt>`. Le début de `Eprob4.tex` est
 75
 76    %<dscrpt>Lancers de pièces.</dscrpt>
 77    On dispose de deux pièces de monnaie discernables, désignées dans la suite
 78    de l'exercice par \og pièce 1\fg~ et \og pièce 2\fg. On ...
 79
 80Le noeud renvoyé par la requête précédente est
 81
 82    {
 83    "identity": 7214,
 84    "labels": [
 85        "Document"
 86    ],
 87    "properties": {
 88        "date": "2018-05-06T21:36:11Z",
 89        "titre": "prob4",
 90        "urlSrcEnon": "https://github.com/nicolair/math-pbs/blob/master/Eprob4.tex",
 91        "typeDoc": "problème",
 92        "urlSrcCorr": "https://github.com/nicolair/math-pbs/blob/master/Cprob4.tex",
 93        "description": "Lancers de pièces.",
 94        "url": "https://maquisdoc-math.fra1.digitaloceanspaces.com/maths-pbs/Aprob4.pdf"
 95    },
 96    "elementId": "7214"
 97    }
 98
 99La description du problème est la propriété `description` de ce noeud.
100
101#### Index
102
103Les index sont définis dans la source LateX par la commande `\index`. Lors de la compilation, un fichier `.idx` est créé qui permet localement d'associer l'index et le problème. Du côté de la base en graphe, un index est un noeud labelisé `Concept`. Une arête labélisée `INDEXE` issue du noeud associé au problème pointe vers le noeud associé à l'index.
104
105Si on considère l'arête dans l'autre sens c'est à dire pointant de l'index vers le problème, un index apparait comme un mot-clé.  
106Un mot-clé défini par un utilisateur sera défini avec une arète dont la source est le noeud représentant le mot et dont la cible est le noeud représentant le problème. Cette fonctionnalité n'est pas encore implémentée et les labels du noeud représentant le mot et de l'arête ne sont pas fixés. 
107
108Voir les sous modules [`graphdb`](graphdb.html), [`bdg_mathPbs`](bdg_mathPbs.html) pour la mise en oeuvre de la contextualisation.
109
110Ce sous-module ne définit en clair que les paramètres publics du serveur de contextualisation.
111Les credentials secrets sont définis dans les variables d'environnement `NEO4J_URL` et `NEO4J_PASSWORD`.
112
113### Scénarios de travail admissibles
114- suppression d'un problème
115- création d'un problème
116- modification; texte, description, index
117
118"""
119
120import os
121
122# Nouvelle organisation
123execloc = {
124    'relative_path': '../math-pbs/',
125    'modulespec': 'exl_mathPbs',
126    'commandes': [
127        {'ext': '.tex',
128         'patterns': ['A*.tex'],
129         'imgdir': 'pdfdir/',
130         'imgext': '.pdf',
131         'command': [
132             "latexmk",
133             "-pdf",
134             "-emulate-aux-dir",
135             "-auxdir=auxdir",
136             "-outdir=pdfdir"
137             ]
138         },
139         {'ext': '.asy',
140          'patterns': ['*_fig.asy'],
141          'imgdir': '',
142          'imgext':'.pdf',
143          'command': [
144              "asy",
145              "-f",
146              "pdf"
147              ]
148          },
149          {'ext': '.py',
150           'patterns': ['*_fig.py'],
151           'imgdir': '', 'imgext': '.pdf',
152           'command': ["python3"]},
153          ],
154    'publish_data': {
155        'patterns': ['pdfdir/A*.pdf'],
156        },
157    'context_data': {
158        'idx_path_pattern': 'auxdir/A*.idx',
159        'description': {
160            'path_pattern': 'E*.tex',
161            'tags': ['%<dscrpt>', '</dscrpt>']
162            }
163        }
164    }
165
166espace = {
167    'credentials': {
168        'region_name': 'fra1',
169        'endpoint_url': 'https://fra1.digitaloceanspaces.com',
170        'bucket': 'maquisdoc-math',
171        'prefix': 'maths-pbs/',
172                   },
173    'uri_esp': 'https://maquisdoc-math.fra1.digitaloceanspaces.com/'
174    }
175
176context = {
177    'credentials': {
178        'URI': os.getenv('NEO4J_URL'),
179        'user': os.getenv('NEO4J_USERNAME'),
180        'password': os.getenv('NEO4J_PASSWORD')
181        },
182    'modulespec': 'bdg_mathPbs'
183    }
184
185manifeste = {'nom': 'math-pbs',
186             'execloc': execloc,
187             'espace': espace,
188             'context': context}