Bibtex Latex-Workshop Отсутствует endcsname вставлено

Bibtex Latex-Workshop Отсутствует endcsname вставлено

Я новичок в Latex, работаю в Linux с TextLive и VScode с расширением Latex-Workshop. Мне пришлось потратить немного времени, чтобы заставить их работать вместе, но в итоге все работает нормально, за исключением того, что я постоянно получаю сообщение об ошибке в заголовке «Отсутствует endcsname вставлено» для одной конкретной записи в моем bibfile:

@article{llavearticulo,
  author  = {Arthur B Cummings and David Eftekhary and Frank G House},
  title   = {The accurate determination of college students
             coefficients of friction},
  journal = {Journal of Sketchy Physics},
  volume  = {13},
  year    = {2003},
  number  = {2},
  pages   = {46--129}
}

Это просто фиктивная статья из курса по латексу. MWE:

\documentclass[12pt]{report}

\usepackage[a4paper, margin=2.54cm, head=1.27cm, foot=1.27cm]{geometry}
\usepackage[spanish]{babel}
\usepackage{natbib}
\usepackage{fancyhdr}
\usepackage{import}
\usepackage{hyperref}
\usepackage{xcolor}
\usepackage[table]{xcolor}
\usepackage{pdflscape}
\usepackage{ulem}
\usepackage{amsmath}
\usepackage{multicol}
\usepackage{tabularx}
\usepackage{multirow}
\usepackage{cellspace}
\usepackage{graphicx}
\usepackage[spanish]{cleveref}
\usepackage{url}

\graphicspath{{./images}}

\newcommand{\mychapter}[2]{
    %\setcounter{chapter}{#1}
    %\setcounter{section}{0}
    \chapter*{#1 #2}
    \addcontentsline{toc}{chapter}{#1 #2}
    \refstepcounter{chapter}
}

\fancypagestyle{plain}{
    \fancyhf{}
    \renewcommand{\headrulewidth}{0pt}
    \renewcommand{\footrulewidth}{0pt}
}
\pagestyle{plain}

\renewcommand{\contentsname}{Índice general}
\renewcommand{\listfigurename}{Índice de cuadros}
\renewcommand{\listtablename}{Índice de figuras}

\title{My title}
\author{My myself}
\date{}

\begin{document}

\maketitle

Otras formas de citas
\begin{itemize}
    \item \cite[p.12]{llavearticulo}
    \item \cite[e.g.][p.12]{llavearticulo}
    \item \cite[e.g.][]{llavearticulo}
    \item \cite[][]{llavearticulo}
    \item \citep{llavearticulo}
    \item \cite*{llavearticulo}
    \item \citep*{llavearticulo}
\end{itemize}


\newpage
\bibliography{sources}
\bibliographystyle{chicago}

\end{document}

Проверяем сгенерированные файлы, в файле main.bbl обнаружена ошибка в строке перед концом:

\begin{thebibliography}{}

\bibitem[\protect\citeauthoryear{Cummings, Eftekhary, and House}{Cummings et~al.}{2003}]{llavearticulo}
Cummings, A.~B., D.~Eftekhary, and F.~G. House (2003).
\newblock The accurate determination of college students coefficients of friction.
\newblock {\em Journal of Sketchy Physics\/}~{\em 13\/}(2), 46--129.

\end{thebibliography}

Я уже искал ответы на предыдущие вопросы, но единственные, которые хоть немного напоминали мне, были те, в которых использовались ключи со странными символами в файле bib или подчеркивание в каком-то поле.

решение1

В качестве вступления: в будущем, пожалуйста, лучше поработайте над обрезкой вашего MWE. Большинство загруженных вами пакетов не используются в документе, и если вы выполните предварительную обрезку (комментируя каждый пакет по одному и проверяя, влияет ли это на проблему), вы, возможно, придете к выводу, что следующий пример гораздо более минималистичный

\documentclass[12pt]{report}

\usepackage[spanish]{babel}
\usepackage{natbib}



\title{My title}
\author{My myself}
\date{}

\begin{document}

\maketitle

Otras formas de citas
\begin{itemize}
    \item \cite[p.12]{llavearticulo}
    \item \cite[e.g.][p.12]{llavearticulo}
    \item \cite[e.g.][]{llavearticulo}
    \item \cite[][]{llavearticulo}
    \item \citep{llavearticulo}
    \item \cite*{llavearticulo}
    \item \citep*{llavearticulo}
\end{itemize}


\newpage
\bibliography{sources}
\bibliographystyle{chicago}

\end{document}

и что виновник — babelс spanishопцией.

Проблема в том, что babel-spanish создает несколько сокращений для быстрого ввода акцентированных символов с использованием стандартного набора символов ASCII. Среди них — возможность печатать ~nи компилировать его в ñ. К сожалению, за пределами испанского babel этот ~символ также вставляет (определенный тип) пробела и natbib(особенно в chicagoстиле) использует его для форматирования некоторых элементов библиографии.

Два возможных решения

  • Если вы вообще не используете сокращения babel (судя по MWE, который вы опубликовали, вы печатаете документ в Unicode и можете вводить символы как ñнапрямую), проще всего полностью отключить сокращения в babel. Это можно сделать, добавив соответствующие параметры в \uspackage[...]{babel}. Попробуйте, например,

    \usepackage[spanish, es-noshorthands, shorthands=off]{babel}
    
  • Если вы действительно используете сокращения Babel, вы также можете отключить нежелательное сокращение до того, как ваша библиография будет напечатана. Попробуйте заменить последние несколько строк вашего кода на

\newpage
\shorthandoff{~}   % <- turns off the ~ short hand
\bibliography{sources}
\bibliographystyle{chicago}

\end{document}

Связанный контент