Bibtex Latex-Workshop 누락된 endcsname 삽입됨

Bibtex Latex-Workshop 누락된 endcsname 삽입됨

저는 Textlive와 vscode를 확장한 Latex-Workshop을 사용하여 Linux에서 작업하는 라텍스를 처음 접했습니다. 함께 작동하는 데 약간의 시간이 걸렸지만 결국 "Missing"이라는 제목의 오류가 계속 발생하는 것을 제외하고는 잘 작동합니다. 내 bibfile의 특정 항목에 endcsname이 삽입되었습니다.

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

이미 이전 질문을 찾았지만 턱받이 파일에서 이상한 문자가 있는 키를 사용하거나 일부 필드에서 밑줄을 사용하는 질문과 원격으로 유사한 유일한 질문입니다.

답변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하고 ñ. 불행하게도 스페인어 바벨 밖에서 ~도 캐릭터는 (특정 유형의) 공백을 삽입합니다.natbib (특히 스타일에서 chicago) 이를 사용하여 참고문헌 항목의 일부 형식을 지정합니다.

두 가지 가능한 솔루션

  • 바벨 속기를 전혀 사용하지 않는 경우(게시한 MWE에 따르면 문서를 유니코드로 입력하고 문자를 ñ직접 입력할 수 있는 것으로 나타남) 가장 쉬운 방법은 바벨에서 짧은 손을 완전히 끄는 것입니다. 에 적절한 옵션을 추가하면 됩니다 \uspackage[...]{babel}. 예를 들면 다음과 같습니다.

    \usepackage[spanish, es-noshorthands, shorthands=off]{babel}
    
  • 실제로 바벨 속기를 사용하는 경우 참고문헌이 인쇄되기 전에 문제가 되는 속기를 끌 수도 있습니다. 코드의 마지막 몇 줄을 다음으로 바꿔보세요.

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

\end{document}

관련 정보