Por que recebo um "aviso de opções globais não utilizadas" para opções encaminhadas para um pacote, exceto para a primeira opção?

Por que recebo um "aviso de opções globais não utilizadas" para opções encaminhadas para um pacote, exceto para a primeira opção?

Estou trabalhando em um pacote personalizado para minhas macros e atalhos e em uma classe personalizada para meu estilo preferido de documento. Estou usando DeclareKeyspara definir opções de valores-chave em meu pacote e, em seguida, minha classe, que carrega esse pacote, encaminha as opções para ele globalmente, encaminhando-as para a classe base (artigo). Funciona bem, mas recebo avisos estranhos sobre opções globais não utilizadas. Aqui está o 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}

A execução deste código produz o documento correto, mas recebo um aviso:

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

Meu pacote claramente pegou essas opções e as usou (eu só mostro o uso da notationopção para simplificar), então por que recebo esse aviso e por que não há aviso para a primeira opção lang=hebrew?

Alterar a ordem das opções para \documentclass[notation=math, lang=hebrew, foo=baz]{demo-cls}altera o aviso para

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

O documento ainda é compilado e parece bom.

Por que recebo avisos para todas as opções, exceto a primeira, e como posso resolver esses avisos?

Responder1

Este é um bug ao lidar com as listas de opções no novo manipulador de opções baseado em l3keys. Você pode evitar o aviso falso garantindo que não haja excesso de espaço em branco entre as opções, então

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

neste exemplo.

O código já foi corrigido (em uma solicitação pull de @Skillmon) nas fontes de látex, portanto será corrigido em uma versão futura.

Relatório de erro

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

Solicitação pull com correção

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

Obrigado pelo relatório e arquivo de teste limpo.

informação relacionada