¿Por qué recibo una "advertencia de opciones globales no utilizadas" para las opciones enviadas a un paquete, excepto la primera opción?

¿Por qué recibo una "advertencia de opciones globales no utilizadas" para las opciones enviadas a un paquete, excepto la primera opción?

Estoy trabajando en un paquete personalizado para mis macros y atajos, y una clase personalizada para mi estilo preferido de documento. Estoy usando DeclareKeyspara definir opciones clave-valor en mi paquete, y luego mi clase, que carga este paquete, le reenvía las opciones globalmente reenviándolas a la clase base (artículo). Funciona bien, pero recibo advertencias extrañas sobre opciones globales no utilizadas. Aquí está el código:

% demo-pkg.sty
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{demo-pkg}[Demo]

\RequirePackage{xstring}

\DeclareKeys[my]
{
    lang.choices:nn =
        { english, hebrew }
        {\ExpandArgs{Nc}\let\@my@lang{l_keys_choice_tl}},
    lang.usage = load,
    lang.initial:n = english,
    notation.choices:nn =
        { physics, math }
        {\ExpandArgs{Nc}\let\@my@notation{l_keys_choice_tl}},
    notation.usage = load,
    notation.initial:n = physics,
    foo.choices:nn =
        { bar, baz }
        {\ExpandArgs{Nc}\let\@my@foo{l_keys_choice_tl}},
    foo.usage = load,
    foo.initial:n = bar
}

\ProcessKeyOptions[my]

\RequirePackage{xparse}

\IfStrEqCase{\@my@notation}{%
{physics}{%
\NewDocumentCommand{\Conjugate}{ m }{{##1}^{\ast}}%
}%
{math}{%
\NewDocumentCommand{\Conjugate}{ m }{\overline{##1}}%
}%
}%

 

% demo-cls.cls
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{demo-cls}[Demo class]

\DeclareKeys[demo-cls]
{
    unknown.code = \PassOptionsToClass{\CurrentOption}{article}
}

\ProcessKeyOptions[demo-cls]

\LoadClass[a4paper, 12pt]{article}
\RequirePackage{demo-pkg}

 

% main.tex
\documentclass[lang=hebrew, notation=math, foo=baz]{demo-cls}

\usepackage{amsmath}

\begin{document}
\[ z = x + iy \Longleftrightarrow \Conjugate{z} = x - iy \]
\end{document}

Al ejecutar este código se genera el documento correcto, pero aparece una advertencia:

LaTeX Warning: Unused global option(s):
    [notation,foo].

Mi paquete claramente eligió estas opciones y las usó (solo muestro el uso de la notationopción por simplicidad), entonces, ¿por qué recibo esta advertencia y por qué no hay ninguna advertencia para la primera opción lang=hebrew?

Cambiar el orden de las opciones \documentclass[notation=math, lang=hebrew, foo=baz]{demo-cls}cambia la advertencia a

LaTeX Warning: Unused global option(s):
    [lang,foo].

Sin embargo, el documento aún se compila y se ve bien.

¿Por qué recibo advertencias para cada opción excepto la primera y cómo puedo solucionar estas advertencias?

Respuesta1

Este es un error al manejar las listas de opciones en el nuevo controlador de opciones basado en l3keys. Puede evitar la advertencia falsa asegurándose de que no haya exceso de espacio en blanco entre las opciones, de modo que

\documentclass[lang=hebrew,notation=math,foo=baz]{demo-cls}

en este ejemplo.

El código ya se corrigió (en una solicitud de extracción de @Skillmon) en las fuentes de látex, por lo que se corregirá en una próxima versión.

Informe de error

https://github.com/latex3/latex2e/issues/1238

Solicitud de extracción con corrección

https://github.com/latex3/latex2e/pull/1239

Gracias por el informe y el archivo de prueba limpio.

información relacionada