Je suis heureux de voir que ta curiosité pour Troff ne fléchit pas !
Il me semble utile, bien qu'un peu long, de commencer par donner quelques précisions pour pouvoir répondre simplement à tes questions.
Précisions
« Troff » désigne tant le langage que l'interpréteur du langage (il en va de même pour Tex). Le langage Troff est graphique: il indique comment afficher les éléments dans la page, et ne donne donc aucune indication sémantique sur ces éléments. On peut composer un document sans utiliser de macros:
.sp1v\" saute une ligne
.ftR\" utilise la police romane
.adb\" alignement justifé
lorem ipsum
Les macros sont composées en langage Troff. Elles désignent d'abord une fonction troff, et par extension, un fichier rassemblant plusieurs fonctions. Elles définissent des raccourcis pour positionner les éléments dans la page. C'est donc au niveau des macros que peut être définie la sémantique du document (paragraphe, citation...), de sorte que la macro gère le rapport entre le fond et la forme:
.dePP\" macro définissant les paragraphes.sp1v.ftR.adb..
.PP
lorem ipsum
.PP
lorem ipsum
Historiquement, il existe plusieurs macros: ms, me, man, mdoc. Plus récemment, mom a été créé. Chacune des ces macros propose une syntaxe particulière. Par exemple ms commence les notes de bas de page par .FS (footnote start), utmac préfère .NS (note start). Outre qu'elles ont chacune une syntaxe, chaque macro a sa philosophie: man, très vieille macro, propose des fonctions graphiques plus que sémantiques, ms commence à être sémantique, mom est très hautement configurable, utmac sépare strictement le fond de la forme.
Il n'est donc pas possible de créer un document interprétable par toutes les macros. Par contre, il est possible de créer un document interprétable sans avoir besoin d'une des macros existante: il suffit d'ajouter en entête du document les fonctions dont on a besoin.
Maintenant, je peux répondre à tes questions...
Réponses aux questions
Est-ce qu'il existe une sorte de (t)roff générique, sur les fonctionalités de base (titres, gras, souligné, italique...) qui pourrait être compris par mom, utroff etc ?
Placer ses propres macros en tête de son document est une façon de créer un fichier troff générique: il sera interprétable par troff sans avoir besoin de macros. Mais les macros existantes ne pourront pas être utilisées pour mettre en forme ce document.
Utroff comprend la syntaxe de la macro ms ou c'est complètement différent ?
C'est complètement différent, même si, en bricolant une macro interface, on pourrait imaginer qu'Utroff puisse interpréter la syntaxe de ms.
Quelle extension ?
les macros historiques ont un type mime et une extension: .ms, .man, .me, peut-être .mom. Sinon, l'extension des documents troff est .tr ou .t (vieille époque des extensions à une lettre !). Pour les macros .tmac tend à s'imposer. Pour utroff, faute de type mime spécifique, il faut utiliser .tr.
tu conseillerais donc un export vers ms, vers utroff ou vers les 2 ?
Je conseillerais les deux, mais tout dépend de l'usage final. Et pourquoi ne pas utiliser mom si l'export vers mom est déjà implémenté ?
La macro ms a l'avantage d'être installée par défaut avec toutes les versions de troff, ce qui est loin d'être le cas d'utroff. C'est la macro qui fut utilisée pour toute la documentation d'Unix, et plus récemment pour celle de Plan9. Elle est simple et efficace. Je l'ai utilisée pendant longtemps.
Les macros Utmac apportent une meilleure qualité typographique, et des fonctions avancées (sommaires, index, etc.). Il faudra par contre les installer manuellement, et gérer l'utilisation d'Heirloom Troff (que les distributions installent généralement dans un répertoire qui n'est pas dans le PATH). Il faudra aussi assumer la jeunesse et la fragilité du projet.
Si je créé le canevas sur le svn de txt2tags, tu pourrais aider pour remplir la syntaxe qui va bien pour utroff, voire ms ?
Avec grand plaisir, tant pour utroff que pour ms. En plus, si je me souviens bien, txt2tags est en python, que j'apprécie.
[^] # Re: Des styles ! Des systèmes de documentation automatique !
Posté par Sygne (site web personnel) . En réponse à la dépêche Utroff : la renaissance de Troff. Évalué à 5.
Salut,
Je suis heureux de voir que ta curiosité pour Troff ne fléchit pas !
Il me semble utile, bien qu'un peu long, de commencer par donner quelques précisions pour pouvoir répondre simplement à tes questions.
Précisions
« Troff » désigne tant le langage que l'interpréteur du langage (il en va de même pour Tex). Le langage Troff est graphique: il indique comment afficher les éléments dans la page, et ne donne donc aucune indication sémantique sur ces éléments. On peut composer un document sans utiliser de macros:
Les macros sont composées en langage Troff. Elles désignent d'abord une fonction troff, et par extension, un fichier rassemblant plusieurs fonctions. Elles définissent des raccourcis pour positionner les éléments dans la page. C'est donc au niveau des macros que peut être définie la sémantique du document (paragraphe, citation...), de sorte que la macro gère le rapport entre le fond et la forme:
Historiquement, il existe plusieurs macros: ms, me, man, mdoc. Plus récemment, mom a été créé. Chacune des ces macros propose une syntaxe particulière. Par exemple ms commence les notes de bas de page par .FS (footnote start), utmac préfère .NS (note start). Outre qu'elles ont chacune une syntaxe, chaque macro a sa philosophie: man, très vieille macro, propose des fonctions graphiques plus que sémantiques, ms commence à être sémantique, mom est très hautement configurable, utmac sépare strictement le fond de la forme.
Il n'est donc pas possible de créer un document interprétable par toutes les macros. Par contre, il est possible de créer un document interprétable sans avoir besoin d'une des macros existante: il suffit d'ajouter en entête du document les fonctions dont on a besoin.
Maintenant, je peux répondre à tes questions...
Réponses aux questions
Placer ses propres macros en tête de son document est une façon de créer un fichier troff générique: il sera interprétable par troff sans avoir besoin de macros. Mais les macros existantes ne pourront pas être utilisées pour mettre en forme ce document.
C'est complètement différent, même si, en bricolant une macro interface, on pourrait imaginer qu'Utroff puisse interpréter la syntaxe de ms.
les macros historiques ont un type mime et une extension: .ms, .man, .me, peut-être .mom. Sinon, l'extension des documents troff est .tr ou .t (vieille époque des extensions à une lettre !). Pour les macros .tmac tend à s'imposer. Pour utroff, faute de type mime spécifique, il faut utiliser .tr.
Je conseillerais les deux, mais tout dépend de l'usage final. Et pourquoi ne pas utiliser mom si l'export vers mom est déjà implémenté ?
La macro ms a l'avantage d'être installée par défaut avec toutes les versions de troff, ce qui est loin d'être le cas d'utroff. C'est la macro qui fut utilisée pour toute la documentation d'Unix, et plus récemment pour celle de Plan9. Elle est simple et efficace. Je l'ai utilisée pendant longtemps.
Les macros Utmac apportent une meilleure qualité typographique, et des fonctions avancées (sommaires, index, etc.). Il faudra par contre les installer manuellement, et gérer l'utilisation d'Heirloom Troff (que les distributions installent généralement dans un répertoire qui n'est pas dans le PATH). Il faudra aussi assumer la jeunesse et la fragilité du projet.
Avec grand plaisir, tant pour utroff que pour ms. En plus, si je me souviens bien, txt2tags est en python, que j'apprécie.