Erro de número ausente com acro após atualizar e instalar pacotes

Erro de número ausente com acro após atualizar e instalar pacotes

Recentemente atualizei l3kerneloutros pacotes e instalei biblatex-chemo libertinust1math. Agora estou recebendo um erro com o acropacote.

Especificamente, estou tentando usar \emph{\Iac{NFA}}e obtendo "ERRO: Número ausente, tratado como zero" \l__acro_article_Indefinite_boolno exemplo mínimo a seguir. (Veja abaixo a mensagem de erro completa.) Antes de atualizar e instalar os pacotes acima, tudo estava funcionando corretamente com o documento do qual extraí este exemplo.

Não tenho certeza do que está acontecendo, embora pareça relacionado biblatexpor algum motivo. Alguém sabe o que está causando isso?

\documentclass{article}

\usepackage[backend=biber]{biblatex}
\addbibresource{biblatex-examples.bib}

\usepackage{acro}
\DeclareAcronym{NFA}{%
  short = NFA,
  short-indefinite = an,
  long = nondeterministic finite automaton,
  long-plural-form = nondeterministic finite automata%
}

\listfiles

\begin{document}
\emph{\Iac{NFA}} is a mathematical machine.
\cite{knuth:ct:a}
\end{document}

Aqui está uma seção do .logarquivo em torno do erro. O .logarquivo completo pode ser encontrado em.log de erro

\openout3 = `thesis.bcf'.

Package biblatex Info: Trying to load bibliographic data...
Package biblatex Info: ... file 'thesis.bbl' found.

(./thesis.bbl)
Package biblatex Info: Reference section=0 on input line 16.
Package biblatex Info: Reference segment=0 on input line 16.
\l__acro_aux_file_iow=\write4
\openout4 = `thesis.acr'.

\AtBeginShipoutBox=\box46

(/usr/local/texlive/2020basic/texmf-dist/tex/latex/translations/translations-ba
sic-dictionary-english.trsl
File: translations-basic-dictionary-english.trsl (english translation file `tra
nslations-basic-dictionary')
)
Package translations Info: loading dictionary `translations-basic-dictionary' f
or `english'. on input line 16.

./thesis.tex:17: Missing number, treated as zero.
<to be read again> 
                   \l__acro_article_Indefinite_bool 
l.17 \emph{\Iac{NFA}}
                      is a mathematical machine.
A number should have been here; I inserted `0'.
(If you can't figure out why I needed to see a number,
look up `weird error' in the index to The TeXbook.)

Package atveryend Info: Empty hook `BeforeClearDocument' on input line 19.
[1{/usr/local/texlive/2020basic/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
Package atveryend Info: Executing hook `AfterLastShipout' on input line 19.

(./thesis.aux (./thesis.acr))
Package atveryend Info: Empty hook `AtVeryEndDocument' on input line 19.

Responder1

Ai! Este é sorrateiro.

Primeiro, o problema não está relacionado (mais ou menos) com o biblatex. O problema só aparece lá porque biblatexadiciona \NoCaseChangeao expl3's \text_expand:n. Se você fizer isso manualmente com

\ExplSyntaxOn
\tl_put_right:Nn \l_text_expand_exclude_tl { \NoCaseChange }
\tl_put_right:Nn \l_text_case_exclude_arg_tl { \NoCaseChange }
\cs_set_eq:NN \NoCaseChange \use:n
\ExplSyntaxOff

você pode remover biblatexda equação.

O problema é que \NoCaseChangeé igual a \use:ne \use:né umextremamentemacro onipresente, então isso fará com que qualquer coisaolhartipo \NoCaseChange, o que não é bom. No caso específico de acro, ele usa \tl_map_tokens:nnpara iterar em uma lista que contém {indefinite}e, eventualmente, atinge um código semelhante a:

\use:n{\__acro_article:nnn {NFA}{long-acc}}{indefinite}

que deve passar a {indefinite}lista de tokens para \__acro_article:nnn {NFA}{long-acc}, o que funciona muito bem ... a menos que \use:nsignifique pular o argumento durante a mudança de maiúsculas e minúsculas, que é exatamente o que acontece aqui: a \__acro_article:nnncoisa é ignorada e indefinitea caixa do título é alterada para Indefinite, e tudo sai do faixas.

Acho que a maneira correta de corrigir isso seria fazer\NoCaseChange diferentede \use:ne \@firstofonepara que não seja tão facilmente confundido:

\ExplSyntaxOn
\cs_gset:Npn \NoCaseChange #1 { \use:n {#1} }
\ExplSyntaxOff

Adicione isso ao seu documento após carregá-lo biblatexe ele deverá funcionar bem:

\documentclass{article}

\usepackage[backend=biber]{biblatex}
\addbibresource{biblatex-examples.bib}

\usepackage{acro}
\DeclareAcronym{NFA}{%
  short = NFA,
  short-indefinite = an,
  long = nondeterministic finite automaton,
  long-plural-form = nondeterministic finite automata%
}

\listfiles

%% Workaround to \NoCaseChange and \tl_map_tokens:nn issue:
\ExplSyntaxOn
\cs_gset:Npn \NoCaseChange #1 { \use:n {#1} }
\ExplSyntaxOff

\begin{document}
\emph{\Iac{NFA}} is a mathematical machine.
\cite{knuth:ct:a}
\end{document}

informação relacionada