Biber 2.4, microtipo y caracteres especiales

Biber 2.4, microtipo y caracteres especiales

Acabo de realizar una actualización de todos los paquetes de mi texlivedistribución (2015) y ahora tengo problemas para combinar biber+ biblatexcon el microtypepaquete.

El error parece surgir sólo cuando se utilizan caracteres "especiales" en el bibarchivo y sólo cuando solicito imprimir la bibliografía. Aquí hay un ejemplo mínimo:

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

El mensaje de error que recibo comienza así:

! 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 

El problema desaparece si elimino el \printbibliographycomando, incluso si uso el authoryearestilo de cita, de modo que los signos diacríticos por sí solos no generen el problema. Es decir, lo siguiente se compila como se esperaba:

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

El error parece tener algo que ver con la interacción entre microtypey biber, ya que no surge solo con uno de ellos (probé microtypecon bibtexcomo backend biblatexy funcionó bien; también probé bibersin microtypey también funcionó bien).

Supongo microtypeque no se ha actualizado desde 2013, por lo que supongo que el problema se introdujo con la versión más nueva de biber(2.4) o con la versión más nueva de biblatex(3.3).

Respuesta1

Yo diría que esto es un error en biblatex:

En biblatex_.sty(que es la versión no heredada que se usa con biber), encontramos justo al principio:

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

Ahora bien, \edefaceptar la entrada del usuario es algo que nunca se debe hacer, punto.

El ejemplo mínimo del OP funciona para mí si lo reemplazo \edefcon \protected@edef(que es la versión "segura para el usuario" de látex \edef), pero no puedo prever qué otras consecuencias podría tener esto.

Respuesta2

Esto fue debido a un cambio de biblatex. Estaba tratando de aislar a los usuarios lo más posible de los cambios en las partes del nombre, pero esto no es realmente factible debido a este tipo de consecuencias. Como se mencionó, el problema no existe si usa fontenc, lo cual supongo que debería hacer de todos modos. Sin embargo, cambié la prueba problemática en biblatex 3.4 en DEV y el problema ya no ocurre.

Respuesta3

No recibo ningún error si solo agrego \usepackage[T1]{fontenc}. No está muy claro dónde microtypese bloquea cuando la codificación es OT1.

biblatex 2016/03/03 v3.3ybiber 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}

ingrese la descripción de la imagen aquí

Respuesta4

Corre bibercon

biber --output-safechars <file>

Sin embargo, tiene más sentido escribir

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

y usando lualatexo al menos `

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

parapdflatex

información relacionada