Fehler „Fehlende Nummer“ bei Acro nach dem Aktualisieren und Installieren von Paketen

Fehler „Fehlende Nummer“ bei Acro nach dem Aktualisieren und Installieren von Paketen

Ich habe vor Kurzem l3kernelandere Pakete aktualisiert und installiert biblatex-chem. libertinust1mathJetzt erhalte ich eine Fehlermeldung bezüglich des acroPakets.

Genauer gesagt versuche ich, es im folgenden Minimalbeispiel zu verwenden \emph{\Iac{NFA}}und erhalte die Meldung „FEHLER: Fehlende Zahl, wird als Null behandelt“ \l__acro_article_Indefinite_bool. (Die vollständige Fehlermeldung finden Sie weiter unten.) Vor dem Aktualisieren und Installieren der obigen Pakete hat mit dem Dokument, aus dem ich dieses Beispiel abgeleitet habe, alles ordnungsgemäß funktioniert.

Ich bin mir nicht sicher, was los ist, aber es scheint biblatexirgendwie damit zusammenzuhängen. Weiß jemand, woran das liegt?

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

Hier ist ein Abschnitt der .logDatei, die den Fehler beschreibt. Die vollständige .logDatei finden Sie unter.log des Fehlers

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

Antwort1

Autsch! Das ist aber hinterhältig.

Erstens hat das Problem nichts mit zu tun biblatex. Das Problem tritt dort nur auf, weil zu 's biblatexhinzugefügt wird . Wenn Sie das manuell mit tun\NoCaseChangeexpl3\text_expand:n

\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

Sie können es biblatexaus der Gleichung entfernen.

Das Problem besteht darin, dass \NoCaseChangegleich ist \use:nund \use:neinäußerstallgegenwärtiges Makro, das alles machtsehenwie \NoCaseChange, was nicht gut ist. Im speziellen Fall von durchläuft acroes \tl_map_tokens:nneine Liste, die enthält {indefinite}, und erreicht schließlich einen Code, der wie folgt aussieht:

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

Dadurch sollte die {indefinite}Token-Liste an übergeben werden \__acro_article:nnn {NFA}{long-acc}, was hervorragend funktioniert ... es sei denn, es \use:nbedeutet, das Argument beim Ändern der Groß-/Kleinschreibung zu überspringen, und genau das passiert hier: Das \__acro_article:nnnDing wird übersprungen, indefinitedie Groß-/Kleinschreibung wird in geändert Indefiniteund alles gerät aus den Fugen.

Ich denke, der richtige Weg, dies zu beheben, wäre,\NoCaseChange andersvon \use:nund \@firstofonedamit man es nicht so leicht verwechselt:

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

Fügen Sie es nach dem Laden zu Ihrem Dokument hinzu biblatex, dann sollte es problemlos funktionieren:

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

verwandte Informationen