
Ich habe gerade ein Update aller Pakete in meiner texlive
Distribution (2015) durchgeführt und habe jetzt Probleme, biber
+ biblatex
mit dem microtype
Paket zu kombinieren.
Der Fehler tritt anscheinend nur auf, wenn in der Datei „Sonderzeichen“ verwendet werden bib
und 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 \printbibliography
Befehl entferne, selbst wenn ich den authoryear
Zitierstil 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 microtype
und zu tun zu haben biber
, da er nicht bei nur einem von beiden auftritt (ich habe es microtype
mit bibtex
als Backend für versucht biblatex
und es hat problemlos funktioniert; ich habe es auch biber
ohne versucht microtype
und es hat auch problemlos funktioniert).
Ich nehme an, microtype
dass 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}}
\edef
Benutzereingaben sollten grundsätzlich nicht verarbeitet werden, Punkt .
Das Minimalbeispiel des OP funktioniert für mich, wenn ich \edef
durch 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 microtype
es klemmt, wenn die Kodierung OT1 ist.
biblatex 2016/03/03 v3.3
Undbiber 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}
Antwort4
Ausführen biber
mit
biber --output-safechars <file>
Sinnvoller ist es jedoch zu schreiben
author = {Rényi, Alfréd},
und mit lualatex
oder zumindest `
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
fürpdflatex