Biber 2.4, Mikrotypie und Sonderzeichen

Biber 2.4, Mikrotypie und Sonderzeichen

Ich habe gerade ein Update aller Pakete in meiner texliveDistribution (2015) durchgeführt und habe jetzt Probleme, biber+ biblatexmit dem microtypePaket zu kombinieren.

Der Fehler tritt anscheinend nur auf, wenn in der Datei „Sonderzeichen“ verwendet werden bibund nur, wenn ich die Bibliographie ausdrucken möchte. Hier ist ein minimales Beispiel:

\documentclass{article}
\usepackage{filecontents}
\usepackage{microtype}
\usepackage[backend=biber]{biblatex}


\begin{filecontents}{\jobname.bib}
@book{renyi1970,
  author = {R\'enyi, Alfr\'ed},
  location = {San Francisco},
  publisher = {Holden-Day},
  title = {Foundations of Probability},
  year = {1970},
}
\end{filecontents}

\addbibresource{\jobname.bib}

\begin{document}
    \cite{renyi1970}

    \printbibliography


\end{document}

Die Fehlermeldung, die ich bekomme, beginnt so:

! Argument of \MT@res@a has an extra }.
<inserted text> 
                \par 
l.23 

I've run across a `}' that doesn't seem to match anything.
For example, `\def\a#1{...}' and `\a}' would produce
this error. If you simply proceed now, the `\par' that
I've just inserted will cause me to report a runaway
argument that might be the root of the problem. But if
your `}' was spurious, just type `2' and it will go away.

Runaway argument?
##1,\OT1/cmr/m/n/10 ,##2##3\@nnil {\ifx ##2\@empty \MT@inlist@false \else \ETC.
! Paragraph ended before \MT@res@a was complete.
<to be read again> 
                   \par 
l.23 

Das Problem verschwindet, wenn ich den \printbibliographyBefehl entferne, selbst wenn ich den authoryearZitierstil verwende, sodass die diakritischen Zeichen allein das Problem nicht verursachen. Das heißt, das Folgende wird wie erwartet kompiliert:

\documentclass{article}
\usepackage{filecontents}
\usepackage{microtype}
\usepackage[backend=biber, citestyle=authoryear]{biblatex}


\begin{filecontents}{\jobname.bib}
@book{renyi1970,
  author = {R\'enyi, Alfr\'ed},
  location = {San Francisco},
  publisher = {Holden-Day},
  title = {Foundations of Probability},
  year = {1970},
}
\end{filecontents}

\addbibresource{\jobname.bib}

\begin{document}
    \cite{renyi1970}


\end{document}

Der Fehler scheint etwas mit der Interaktion zwischen microtypeund zu tun zu haben biber, da er nicht bei nur einem von beiden auftritt (ich habe es microtypemit bibtexals Backend für versucht biblatexund es hat problemlos funktioniert; ich habe es auch biberohne versucht microtypeund es hat auch problemlos funktioniert).

Ich nehme an, microtypedass es seit 2013 nicht mehr aktualisiert wurde, daher gehe ich davon aus, dass das Problem mit der neueren Version von biber(2.4) oder mit der neueren Version von biblatex(3.3) aufgetreten ist.

Antwort1

Ich würde sagen, das ist ein Fehler in biblatex:

In biblatex_.sty(das ist die nicht-veraltete Version, die mit verwendet wird biber) finden wir gleich zu Beginn:

% Tests for emptiness, regardless whether the arg is macro or literal
% Expand everything and test as string
\def\ifempty#1{%
  \edef\z{#1}%
  \expandafter\ifblank\expandafter{\z}}

\edefBenutzereingaben sollten grundsätzlich nicht verarbeitet werden, Punkt .

Das Minimalbeispiel des OP funktioniert für mich, wenn ich \edefdurch ersetze \protected@edef(was die „benutzersichere“ Version von in Latex ist \edef), aber ich kann nicht vorhersehen, welche anderen Konsequenzen dies haben könnte.

Antwort2

Dies lag an einer Änderung in Biblatex. Ich habe versucht, die Benutzer so weit wie möglich vor den Namensteiländerungen zu schützen, aber das ist aufgrund dieser Art von Konsequenzen nicht wirklich machbar. Wie erwähnt, besteht das Problem nicht, wenn Sie fontenc verwenden, was Sie vermutlich sowieso tun sollten. Ich habe jedoch den problematischen Test in Biblatex 3.4 auf DEV geändert und das Problem tritt nicht mehr auf.

Antwort3

Ich erhalte keinen Fehler, wenn ich einfach hinzufüge \usepackage[T1]{fontenc}. Es ist nicht wirklich klar, wo microtypees klemmt, wenn die Kodierung OT1 ist.

biblatex 2016/03/03 v3.3Undbiber version: 2.4

\RequirePackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{renyi1970,
  author = {R\'enyi, Alfr\'ed},
  location = {San Francisco},
  publisher = {Holden-Day},
  title = {Foundations of Probability},
  year = {1970},
}
\end{filecontents}

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[backend=biber]{biblatex}
\usepackage{microtype}

\addbibresource{\jobname.bib}

\begin{document}

\cite{renyi1970}

\printbibliography

\end{document}

Bildbeschreibung hier eingeben

Antwort4

Ausführen bibermit

biber --output-safechars <file>

Sinnvoller ist es jedoch zu schreiben

author = {Rényi, Alfréd},

und mit lualatexoder zumindest `

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc} 

fürpdflatex

verwandte Informationen