Error de número faltante con acro después de actualizar e instalar paquetes

Error de número faltante con acro después de actualizar e instalar paquetes

Recientemente actualicé l3kernelotros paquetes e instalé biblatex-chemy libertinust1math. Ahora recibo un error con el acropaquete.

Específicamente, estoy tratando de usar \emph{\Iac{NFA}}y obtengo "ERROR: Número faltante, tratado como cero" \l__acro_article_Indefinite_boolen el siguiente ejemplo mínimo. (Consulte a continuación el mensaje de error completo). Antes de actualizar e instalar los paquetes anteriores, todo funcionaba correctamente con el documento del que derivé este ejemplo.

No estoy seguro de lo que está pasando, aunque parece estar relacionado biblatexpor alguna razón. ¿Alguien sabe qué está causando esto?

\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}

Aquí hay una sección del .logarchivo que rodea el error. El .logarchivo completo se puede encontrar en.registro de error

\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.

Respuesta1

¡Ay! Éste es astuto.

Primero, el problema no está relacionado (más o menos) con biblatex. El problema sólo aparece allí porque biblatexse suma \NoCaseChangea expl3's \text_expand:n. Si lo haces manualmente con

\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

puedes eliminar biblatexde la ecuación.

El problema es que \NoCaseChangees igual a \use:ny \use:nes unextremadamentemacro omnipresente, por lo que hará cualquier cosamirarMe gusta \NoCaseChange, lo cual no es bueno. En el caso específico de acro, utiliza \tl_map_tokens:nnpara iterar en una lista que contiene {indefinite}y finalmente llega a un código que se parece a:

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

que debería pasar la {indefinite}lista de tokens a \__acro_article:nnn {NFA}{long-acc}, lo cual funciona muy bien... a menos que \use:nsignifique omitir el argumento mientras se cambia el caso, que es exactamente lo que sucede aquí: la \__acro_article:nnncosa se omite, indefinitese cambia el título y el caso a Indefinite, y todo se sale del pistas.

Creo que la forma correcta de solucionar este problema sería hacer\NoCaseChange diferentede \use:ny \@firstofonepara que no se confunda tan fácilmente:

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

Agregue eso a su documento después de cargarlo biblatexy debería funcionar bien:

\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}

información relacionada