
Estou usando biblatex
pela primeira vez. Quando faço uma compilação rápida no documento ele compila sem problemas, depois executo o comando BibTeX e também funciona. Depois disso tento uma compilação rápida novamente para gerar o pdf com a bibliografia, mas recebo esses tipos de erros para todas as fontes citadas no meu arquivo .bib:
! Undefined control sequence.
<to be read again> \edef \lbx@tempa {{wen-mei}z
w.hwu}
l.90 \end{document}
Este é meu arquivo LaTeX principal
% El documento está pensado para ser impreso en hojas por ambos lados (twoside)
% openright causa que los capítulos empiecen en hoja impar
\documentclass[12pt,letterpaper,twoside,openright]{report}
\usepackage[spanish]{babel}
\usepackage[utf8]{inputenc} %Uso de tildes si desarrolla en Linux
\usepackage[backend=bibtex]{biblatex}
\addbibresource{mybib_test.bib}
\usepackage{listings}
\begin{document}
\pagenumbering{arabic}
\include{capitulo_01_test} % 1. Introducción
% ------------ Comienza la bibliografía ---------------
\printbibliography
\end{document}
Este é o segundo arquivo tex chamado capitulo_01_test.tex
\cite{brasnett2007} \cite{chapman2007} \cite{duda1972} \cite{kirk2010} \cite{vanginkel2004}.
Quando eu excluo \usepackage{listings} do meu arquivo tex principal, o problema desaparece. Mas por que? e preciso do pacote de listagens.
Este é o meu arquivo bibtex
% This file was created with JabRef 2.6.
% Encoding: UTF-8
@INPROCEEDINGS{brasnett2007,
author = {P. Brasnett and M. Z. Bober},
title = {Robust Visual Identifier Using the Trace Transform},
booktitle = {Visual Information Engineering Conference (VIE 2007)},
year = {2007},
pages = {25-27}
}
@BOOK{chapman2007,
title = {Using OpenMP: Portable Shared Memory Parallel Programming},
year = {2007},
author = { Barbara Chapman and Gabriele Jost and Ruud van van der Pas},
publisher = "The MIT Press",
address = "Massachusetts, Estados Unidos"
}
@ARTICLE{duda1972,
author = {Richard O. Duda and Peter E. Hart},
title = {Use of the Hough Transformation to Detect Lines and Curves in Pictures},
journal = {Communications of the ACM},
year = {1972},
volume = "15",
number = "1",
pages = "11--15"
}
@BOOK{kirk2010,
title = {Programming Massively Parallel Processors: A Hands-on Approach},
year = {2010},
author = {David B. Kirk and {Wen-mei} W. Hwu},
publisher = "Morgan Kaufmann",
address = "Massachusetts, Estados Unidos"
}
@TECHREPORT{vanginkel2004,
author = {Michael van Ginkel and Cris L. Luengo Hendriks and Lucas J. van Vliet},
title = {A short introduction to the Radon and Hough transforms and how they relate to each other},
institution = {Quantitative Imaging Group, Delft University of Technology},
year = {2004},
address = {Delft, Holanda},
}
Ouvi dizer que poderia ser o "-" entre Wen-mei por exemplo, mas mudei várias vezes e não funcionou.
Quando eu estava usando o bibtex não tive esse problema.
Nota (editar): editei a pergunta para seguir a sugestão do cfr e descobri que se eu deletar a \usepackage{listings}
parte do meu arquivo .tex principal a compilação não terá problemas. Alguma ideia do porquê?
Responder1
É um bug listings
que deixa para trás um erro \lccode
para ~
. Não consegui encontrar o motivo pelo qual o bug aparece apenas quando o idioma é o espanhol, mas o problema certamente está nessa configuração ruim.
Você resolve seu problema adicionando
\lccode`~=0
depois
\usepackage{listings}
Em outras palavras, o preâmbulo deve ser
\documentclass[12pt,letterpaper,twoside,openright]{report}
\usepackage[spanish]{babel}
\usepackage[utf8]{inputenc} %Uso de tildes si desarrolla en Linux
\usepackage[backend=bibtex]{biblatex}
\addbibresource{mybib_test.bib}
\usepackage{listings}
\lccode`~=0
O código errado listings.sty
é a definição de\lst@CCPut
884 \def\lst@CCPut#1#2{%
885 \ifnum#2=\z@
886 \expandafter\@gobbletwo
887 \else
888 \lccode`\~=#2\lccode`\/=#2\lowercase{\lst@CCPut@~{#1/}}%
889 \fi
890 \lst@CCPut#1}
onde a linha 888 deveria estar
\begingroup\lccode`\~=#2\lccode`\/=#2\lowercase{\endgroup\lst@CCPut@~{#1/}}%
Há também outra configuração errada deixada para trás listings
que deve ser corrigida; na \lst@RestoreCatcodes
tarefa errada
\lccode`\/=`\/
é realizada, o que deve ser removido ou anulado pelo
\lccode`\/=0
assim como aquele para ~
.