Latex3: xparse não funciona em ConTeXt MkIV

Criado em 18 jun. 2020  ·  7Comentários  ·  Fonte: latex3/latex3

O seguinte ocorre quando se tenta usar xparse em 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 

Em vez de "Apenas foo bar e foo" aparece "@ traceoff @ traceon Apenas foo @ traceoff @ traceon bar e foo".
errorfile.pdf

bug generic-mode xparse

Todos 7 comentários

O código espera que @ tenha a letra catcode. Portanto, o seguinte funciona, mas não sei quanto do xparse realmente funciona no contexto - a ideia de definições e sintaxe de comando é bem diferente aqui.

~~~~
\ input expl3-generic
\ catcode \@=11 \input xparse-generic \catcode \ @ = 12
\ starttext
NewDocumentCommand \ hello {om}
{
\ IfNoValueTF {# 1}
{Somente 2}
{# 1 e # 2}
}
\ hello {foo} \ hello [bar] {foo}
\ stoptext

~~~~

xparse-generic é muito mais um substituto para as mudanças futuras: ele não foi testado com TeX simples ou ConTeXt, então não estou surpreso que falhe aqui. É provável que tenhamos tudo resolvido assim que chegarmos ao outono.

Estou muito satisfeito por isso funcionar: para ConTeXt, acho que podemos ter que adicionar \start... / \stop... configuração do ambiente.

Eu li sobre compatibilidade com ConTeXt, então estou testando para o caso de haver algum tipo de código compatível, já que MkIV tem seu próprio tratamento idiomático de argumentos opcionais ( \dosingleempty , \dodoubleempty , etc). Estou satisfeito também.

Até recentemente, xparse era puramente um pacote LaTeX2e. Vamos fundir a maior parte dele em expl3-generic no outono, momento em que fará parte da oferta de plataforma neutra, mas não há planos para tornar o idom mais 'neutro'. Obviamente, o ConTeXt ainda usa argumentos o - e m -type no principal.

@JairoAdelRio Algum tempo atrás eu escrevi algum tipo de camada de compatibilidade para permitir xparse em Plain e ConTeXt para o pacote scontents (https://github.com/pablgonz/scontents). Talvez você possa pegar algumas idéias (não tenho certeza se são boas ;-) lá.

No momento em que xparse estava inteiramente em xparse.sty , grande parte da camada de compatibilidade estava definindo \ProvidesPackage e assim por diante. Hoje em dia seria muito mais fácil com xparse-generic , mas isso provavelmente mudará em versões futuras, então eu esperaria um pouco, se possível

Acho que o ponto de @ u-fischer está certo, além do que a próxima fusão para expl3 deve abordar mais coisas: Estou fechando.

Esta página foi útil?
0 / 5 - 0 avaliações