Latex3: xparse no funciona en ConTeXt MkIV

Creado en 18 jun. 2020  ·  7Comentarios  ·  Fuente: latex3/latex3

Lo siguiente ocurre cuando se intenta usar xparse en 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 

En lugar de "Sólo foo bar y foo", aparece "@ traceoff @ traceon Sólo foo @ traceoff @ traceon bar y foo".
errorfile.pdf

bug generic-mode xparse

Todos 7 comentarios

El código espera que @ tenga la letra catcode. Entonces, lo siguiente funciona, pero no sé cuánto de xparse realmente funciona en contexto: la idea de las definiciones de comandos y la sintaxis es bastante diferente aquí.

~~~~
\ input expl3-genérico
\ catcode \@=11 \input xparse-generic \catcode \ @ = 12
\ starttext
NewDocumentCommand \ hola {om}
{
\ IfNoValueTF {# 1}
{Solo 2}
{# 1 y # 2}
}
\ hola {foo} \ hola [bar] {foo}
\ stoptext

~~~~

xparse-generic es en gran medida un marcador de posición para los próximos cambios: no se ha probado con TeX simple o ConTeXt, por lo que no me sorprende que falle aquí. Es probable que lo tengamos más asentado una vez que lleguemos al otoño.

Estoy muy contento de que esto funcione en absoluto: para ConTeXt, supongo que podríamos tener que agregar la configuración del entorno \start... / \stop... .

He leído sobre la compatibilidad con ConTeXt, así que lo estoy probando en caso de que haya algún tipo de código compatible cruzado, ya que MkIV tiene su propio manejo idiomático de argumentos opcionales ( \dosingleempty , \dodoubleempty , etc.). Yo también estoy contento.

Hasta hace poco, xparse era puramente un paquete LaTeX2e. Vamos a fusionar la mayor parte en expl3-generic en el otoño, momento en el que será parte de la oferta de plataforma neutral, pero no hay planes para hacer que el idom sea más 'neutral'. Por supuesto, ConTeXt todavía usa argumentos de tipo o - y m archivo principal.

@JairoAdelRio Hace algún tiempo escribí algún tipo de capa de compatibilidad para permitir xparse tanto en Plain como en ConTeXt para el paquete scontents (https://github.com/pablgonz/scontents). Tal vez puedas tomar algunas ideas (no estoy seguro de lo buenas que son ;-) de allí.

En el momento en que xparse estaba completamente en xparse.sty , gran parte de la capa de compatibilidad está definiendo \ProvidesPackage y así sucesivamente. Hoy en día sería mucho más fácil con xparse-generic , pero esto probablemente cambiará en futuras versiones, así que esperaría un poco si es posible.

Creo que el punto de @ u-fischer es correcto, además de que la próxima fusión con expl3 debería abordar más cosas: estoy cerrando.

¿Fue útil esta página
0 / 5 - 0 calificaciones