Latex3: xparse ne fonctionne pas dans ConTeXt MkIV

Créé le 18 juin 2020  ·  7Commentaires  ·  Source: latex3/latex3

Ce qui suit se produit lorsque l'on essaie d'utiliser xparse dans ConTeXt Mark IV (LuaTeX)

\input expl3-generic
\input xparse-generic
\starttext 
\NewDocumentCommand\hello{om}
{
    \IfNoValueTF{#1}
    {Only #2}
    {#1 and #2}
}
\hello{foo} \hello[bar]{foo}
\stoptext 

Au lieu de "Only foo bar and foo", il apparaît "@ traceoff@traceon Only foo @ traceoff@traceon bar and foo".
fichiererreur.pdf

bug generic-mode xparse

Tous les 7 commentaires

Le code s'attend à ce que @ ait une lettre catcode. Donc, ce qui suit fonctionne, mais je ne sais pas dans quelle mesure xparse fonctionne réellement dans le contexte - l'idée des définitions et de la syntaxe des commandes est assez différente ici.

~~~~
\input expl3-générique
\catcode \@=11 \input xparse-generic \catcode \@=12
\starttext
NewDocumentCommand\hello{om}
{
\IfNoValueTF{#1}
{Seulement 2}
{#1 et #2}
}
\bonjour{foo} \bonjour[bar]{foo}
\stoptext

~~~~

xparse-generic est vraiment un espace réservé pour les changements à venir : il n'a pas été testé avec plain TeX ou ConTeXt, donc je ne suis pas surpris qu'il échoue ici. Nous aurons probablement plus de choses à régler une fois que nous arriverons à l'automne.

Je suis très content que cela fonctionne : pour ConTeXt, je suppose que nous devrons peut-être ajouter la configuration de l'environnement \start... / \stop... .

J'ai lu des articles sur la compatibilité avec ConTeXt, donc je le teste au cas où il y aurait une sorte de code de compatibilité croisée, car MkIV a sa propre gestion idiomatique des arguments facultatifs ( \dosingleempty , \dodoubleempty , etc). Je suis content aussi.

Jusqu'à récemment, xparse était purement un package LaTeX2e. Nous allons en fusionner la plupart dans expl3-generic à l'automne, date à laquelle il fera partie de l'offre neutre en termes de plate-forme, mais il n'est pas prévu de rendre l'idom plus « neutre ». Bien sûr, ConTeXt utilise toujours les arguments de type o - et m - dans le fichier main.

@JairoAdelRio Il y a quelque temps, j'ai écrit une sorte de couche de compatibilité pour autoriser xparse dans Plain et ConTeXt pour le package scontents (https://github.com/pablgonz/scontents). Peut-être que vous pouvez prendre quelques idées (pas sûr de leur qualité ;-) à partir de là.

À l'époque, xparse était entièrement dans xparse.sty , une grande partie de la couche de compatibilité définit \ProvidesPackage et ainsi de suite. De nos jours, ce serait beaucoup plus facile avec xparse-generic , mais cela changera probablement dans les prochaines versions, donc j'attendrais un peu si possible

Je pense que le point de @u-fischer est juste, et la prochaine fusion vers expl3 devrait aborder plus de choses : je ferme.

Cette page vous a été utile?
0 / 5 - 0 notes