laowantong / mocodo

Modélisation Conceptuelle de Données. Nickel. Ni souris.
https://www.mocodo.net
MIT License
181 stars 51 forks source link

Caractère # dans la sortie Latex #106

Closed fduchatea closed 9 months ago

fduchatea commented 9 months ago

Dans la sortie Latex, un '#' apparait devant le nom des attributs (clés étrangères), ce qui fait échouer la compilation Latex (il faudrait '#', mais a-priori c'est la macro \foreign qui est en charge de mettre le dièse). Il faut donc supprimer le '#' de la sortie.

\item \relat{V} (\prim{imp}, \foreign{\prim{#lib}})

Toujours en version Mocodo 4.0.5, mais ça a peut-être été corrigé dans une version plus récente.

laowantong commented 9 months ago

Ça ne marcherait pas simplement en l'échappant ?

fduchatea commented 9 months ago

Si on échappe le '#', alors il y aura 2 '#' (celui échappé + celui mis par la commande \foreign{}). Actuellement j'ai supprimé tous les # du fichier tex et le résultat est ok (il y a bien un # devant les clés étrangères, grâce à \foreign{}).

Une autre interrogation sur la sortie Latex : où sont définies les macros \foreign, \relat et \prim ? Avant elles étaient dans le fichier Latex. Est-ce que le gabarit latex-b fournit la définition de ces macros ? En tout cas, dans Mocodo online, la sortie Latex n'inclut pas la définition des macros et ça rend le code Latex inutilisable.

laowantong commented 9 months ago

Ok, il doit y avoir une redondance effectivement.

Le gabarit latex-b dérive de latex-bc qui définit ce qu'il faut.

fduchatea commented 9 months ago

J'ai trouvé la définition des macros : elle est dans latex-bc. Peut-être que mocodo online devrait produire ce gabarit latex-bc au lieu de latex ?

laowantong commented 9 months ago

Oui, pourquoi pas ? Il faut que je voie la cohérence avec les autres options.

fduchatea commented 9 months ago

La sortie Latex du schéma relationnel sous forme de liste n'est pas très esthétique (avec les puces devant chaque relation). Je vais voir pour modifier un gabarit.

laowantong commented 9 months ago

Ouais, après ça dépend de babel ou autre, c'est la typographie locale. Sémantiquement, c'est une liste en tout cas.

PR bienvenue.

fduchatea commented 9 months ago

Voici un gabarit (testé sous mocodo 4.0.5). Pas de PR car je n'ai pas encore le dépôt Mocodo en local... En plus il faut probablement le renommer.

latex-fd.yaml.zip

Voici un exemple de sortie Latex (liste sans puce, plus compacte) :

Capture d’écran 2023-12-05 à 18 58 40

Sinon, après avoir placé le nouveau gabarit dans resources/relation_templates/, on ne peut pas l'utiliser avec -t nouveau_gab : il faut utiliser -t relation:nouveau_gab. Peut-être mieux l'expliquer dans la doc (qui insiste surtout sur le chemin complet vers le gabarit).

Autre souci avec la sortie Latex : les noms de tables / attributs contenant des '_' doivent être échappés avec un backslash (cas fréquent si on génère un MCD ou si on utilise la notation snakecase).

laowantong commented 9 months ago

Merci pour le déboggage, je partirai très certainement de ton gabarit quand je me pencherai sur la question. Rajouter l'échappement des underscores n'est normalement pas très compliqué non plus.

Concernant les gabarits-utilisateur, je reverrai également la doc.

Le dossier de l'application n'est pas destiné à accueillir des fichiers de l'utilisateur. Ils doivent être placés en dehors, ne serait-ce que pour ne pas risquer d'être détruits lors d'une mise à jour.

Pour info, il y a un script dev/update_transfo_metadata.py à lancer manuellement après ajout d'un nouveau gabarit officiel pour l'indexer et mettre à jour la documentation. Mais encore une fois, placer un gabarit-utilisateur dans le dossier des gabarits officiels n'est pas une pratique recommandée.

laowantong commented 9 months ago
fduchatea commented 9 months ago

Ok pour les corrections, je regarderai plus tard.

Si ça intéresse d'autres personnes, voici comment retirer les puces quand on inclut le code Latex généré par Mocodo :

{%
\renewcommand\labelitemi{}% remove bullets
\input{dataset.tex}
}

Pour les gabarits : je ne les mets pas directement dans le répertoire relation_templates. Ils sont dans un répertoire perso, et un script les copie dans relation_templates.

laowantong commented 9 months ago

Si tu tiens à copier ton gabarit dans le dossier officiel, ton script doit aussi lancer dev/update_transfo_metadata.py.