Biber 2.4, microtipo e caracteres especiais

Biber 2.4, microtipo e caracteres especiais

Acabei de realizar uma atualização de todos os pacotes da minha texlivedistribuição (2015) e agora estou tendo problemas para combinar biber+ biblatexcom o microtypepacote.

O erro parece surgir apenas ao usar caracteres 'especiais' no bibarquivo e somente quando peço para imprimir a bibliografia. Aqui está um exemplo 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}

A mensagem de erro que recebo começa assim:

! 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 

O problema desaparece se eu remover o \printbibliographycomando, mesmo que eu use o authoryearestilo de citação, para que os diacríticos por si só não gerem o problema. Ou seja, o seguinte é compilado conforme o esperado:

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

O erro parece ter algo a ver com a interação entre microtypee biber, já que não surge com apenas um deles (tentei microtypecom bibtexas backend for biblatexe funcionou muito bem; também tentei bibersem microtypee também funcionou bem).

Presumo que microtypenão foi atualizado desde 2013, então presumo que o problema foi introduzido com a versão mais recente de biber(2.4) ou com a versão mais recente de biblatex(3.3).

Responder1

Eu diria que isso é um bug em biblatex:

Em biblatex_.sty(que é a versão não legada usada com biber), encontramos logo no início:

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

Agora, \edefreceber a entrada do usuário é algo que nunca deve ser feito, ponto final.

O exemplo mínimo do OP funciona para mim se eu substituir \edefpor \protected@edef(que é a versão "segura para o usuário" do latex \edef), mas não posso prever quais outras consequências isso pode ter.

Responder2

Isto foi devido a uma mudança no biblatex. Eu estava tentando isolar os usuários tanto quanto possível das mudanças no namepart, mas isso não é realmente viável por causa desse tipo de consequência. Como mencionado, o problema não existe se você usar o fontenc, o que presumo que você deveria fazer de qualquer maneira. Porém, mudei o teste problemático do biblatex 3.4 para DEV e o problema não ocorre mais.

Responder3

Não recebo nenhum erro se apenas adicionar \usepackage[T1]{fontenc}. Não está muito claro onde microtypeengasga quando a codificação é OT1.

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

insira a descrição da imagem aqui

Responder4

Correr bibercom

biber --output-safechars <file>

No entanto, faz mais sentido escrever

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

e usando lualatexou pelo menos `

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

parapdflatex

informação relacionada