从 natbib 更改为 BibLaTex 书目会导致重大错误

从 natbib 更改为 BibLaTex 书目会导致重大错误

我正在使用 Overleaf 撰写我的硕士论文。我曾使用过natbib包(效果很好),但我想将其更改为biblatex以便能够使用不同的样式。我使用 JabRef 作为参考书目管理器,将我的参考书目作为 bib 文件上传到 Overleaf。正如我所提到的,这在使用时效果很好natbib,但当我将命令更改为biblatex并编译时,我有时会收到错误消息,提示“输入第 3 行未定义”,并且文档中的引文仅标记为粗体 citekeys,有时我会收到致命错误,并且没有生成带有大量错误的 pdf:

编译错误。抱歉,您的 LaTeX 代码由于某种原因无法编译。请查看以下错误以了解详细信息,或查看原始日志。

*失控的论点?{三分之一的结肠癌病例与遗传有关。嗨\ETC。!扫描\field 的使用时文件结束。\par

l.70 \begin{document} 我怀疑你}', causing me to read past where you wanted me to stop. I'll try to recover; but if the error is serious, you'd better type现在已经忘记了一个 E' 或 `X' 并修复了你的文件。

acknowledgements/acknowledgements.tex,第 9 行 \NewCount 定义中的参数数量非法。

               *1 l.9 \begin{itemize}
                You meant to type ## instead of #, right? Or maybe a } was forgotten somewhere earlier, and things are all screwed up?

我假设你的意思是##。**

++++错误不断出现。

这是我的主文档中的代码:

\documentclass[a4paper,12pt,twoside]{report}
\usepackage[left=2cm,right=2cm,top=2cm,bottom=3cm]{geometry}
\usepackage[T1]{fontenc} 
\usepackage[utf8]{inputenc} 
\usepackage[english]{babel}
\DeclareUnicodeCharacter{2212}{-}
\usepackage{csquotes}
\usepackage{newcent}
\usepackage{amsmath}
\usepackage{siunitx}
\usepackage{xcolor}
\usepackage{longtable}
\usepackage{tabu}
\usepackage{multirow}
\usepackage{multicol}
%AKRONYM
\usepackage{acronym}
%NOMENKLATUR
\usepackage{nomencl}
\renewcommand{\nomname}{\LARGE{Nomenclature}}
\makenomenclature
\usepackage{graphicx}
\graphicspath{ {./images/} }
\usepackage[export]{adjustbox}
\usepackage{wrapfig}
\usepackage{subfiles}
\usepackage{setspace}
\usepackage{tocloft}
\setlength\cftparskip{0pt}
\setlength{\cftbeforesecskip}{1pt}
\setlength{\cftbeforechapskip}{6pt}
\usepackage{titlesec}
\titlespacing{\subsubsection}{0pt}{\parskip}{-\parskip}
%\setcounter{secnumdepth}{3}
%\titlespacing*{\section}
%{0pt}{5.5ex plus 1ex minus .2ex}{4.3ex plus .2ex}
%\titlespacing*{\subsection}
%{0pt}{5.5ex plus 1ex minus .2ex}{4.3ex plus .2ex}

%BIBLIOGRAFI
%NATBIB
%\usepackage[square,numbers,round,sort&compress]{natbib}
%BIBLATEX
\usepackage[backend=biber,citestyle=nature, sorting=none, natbib=true]{biblatex}
\include{thesis.preamble}
\addbibresource{bibliografimaster.bib}
\begin{document}
\title{\LARGE {\bf } Haplotype analysis \\
 \vspace*{6mm}
}
\maketitle
\preface
\body
\part{Part 1}
\part{Part 2}
\input{Method/Method}
\input{Results/Results.tex}
\addcontentsline{toc}{chapter}{Bibliography}
%NATBIB
%\bibliographystyle{unsrt} 
%\bibliography{bibliografimaster.bib}
%BIBLATEX
\printbibliography
\newpage
\addcontentsline{toc}{chapter}{Appendix}
{\Huge\textbf{Appendix}} 
\appendix
% appendices come here
\input{Appendix/appendix.tex}
\end{document}

natbib我已经包含了用于引用样式和 for 的代码biblatex(前面有百分号,natbib所以不使用)。我还删除了所有命令natbib以查看这是否会产生任何变化,但结果没有。natbib我使用的命令运行良好,所以我只是想将它们包括在内以显示我所做的工作以及这些参数是否有效。

我可能在我的工作示例中包含了许多不相关的命令,但我想知道我使用的任何参数是否可以解释为什么natbib似乎有效而无效biblatex

我使用相同的 bib 文件biblatex(与我在上面的主项目中使用的命令相同)制作了一个工作示例,并且运行良好。

\documentclass{article}
\usepackage[utf8]{inputenc}
\title{TesterReferanser}
\author{SS}
\date{January 2019}
\usepackage[backend=biber,citestyle=nature, sorting=none, natbib=true]{biblatex}
\addbibresource{bibliografimaster.bib}
\begin{document}
\maketitle
\section{Introduction}
må teste referanser \cite{RN272}.
\printbibliography
\end{document}

产生很好的引用和参考书目!!

因此,我相信我在序言中使用的一些其他命令是导致错误消息的原因。

如果有人能帮助我,我将不胜感激。我错过了什么?

答案1

报告的错误

Runaway argument?
{Inheritance is involved in up to one third of colon cancer cases. Hi\ETC.
! File ended while scanning use of \field.
<inserted text> 
                \par 
l.36 \begin{document}

.bib通常在文件中的非逐字字段包含未转义字符时抛出%。错误的具体位置在.bbl文件中,其中包含以下内容

  \field{abstract}{Lorem ipsum % dolor}

.bbl当读取文件时,错误发生在文档的开头。

由于%在 TeX 中是注释字符,TeX 将忽略 之后的所有内容,特别是不会看到结束花括号。缺少的花括号会导致错误。即使您不想打印该特定字段,也会抛出该错误。只要它是的数据模型%已知的字段就足够了。biblatex

基于 BibTeX 的参考书目解决方案(例如)在字段中natbib未转义的 s 方面问题较少%。如果未打印该字段,则未转义的特殊字符没有任何问题,因为它永远不会写入 TeX 读取的文件中。如果打印该字段,则输出很可能是错误的,并且可能会出现错误,但这不是肯定的。

对错误消息中的文本进行简短的 Google 搜索,我们可以找到https://doi.org/10.1016/j.ddmec.2008.05.004那里的摘要确实写道

多达三分之一的结肠癌病例与遗传有关。高渗透性遗传综合征约占 3%,而更常见但渗透性较低的遗传因素在其余病例中发挥作用。本综述将概述如何识别这些类别和综合征、在有指征时使用基因检测进行诊断以及进行适当的癌症筛查和监测。

并包含一个%字符。更糟糕的是,.bibElsevier 导出的文件如下所示

@article{BURT2007293,
title = "Inheritance of colorectal cancer",
journal = "Drug Discovery Today: Disease Mechanisms",
volume = "4",
number = "4",
pages = "293 - 300",
year = "2007",
issn = "1740-6765",
doi = "https://doi.org/10.1016/j.ddmec.2008.05.004",
url = "http://www.sciencedirect.com/science/article/pii/S1740676508000369",
author = "Randall Burt",
abstract = "Inheritance is involved in up to one-third of colon cancer cases. Highly penetrant inherited syndromes account for approximately 3%, while more common, but less penetrant inherited factors play a role in the remainder. Approaches to recognizing each of these categories and syndromes, using genetic testing for diagnosis where indicated, and accomplishing proper cancer screening and surveillance will be outlined in this review."
}

in未转义。这是错误%3%

正确的输入应该是这样的

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[style=authoryear, backend=biber]{biblatex}


\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{burt,
  author   = {Randall Burt},
  title    = {Inheritance of colorectal cancer},
  journal  = {Drug Discovery Today: Disease Mechanisms},
  volume   = {4},
  number   = {4},
  pages    = {293-300},
  doi      = {10.1016/j.ddmec.2008.05.004},
  date     = {2007-12},
  abstract = {Inheritance is involved in up to one third of colon cancer
              cases. Highly penetrant inherited syndromes account for
              approximately 3\%, while more common, but less penetrant
              inherited factors play a role in the remainder.
              Approaches to recognizing each of these categories and
              syndromes, using genetic testing for diagnosis where
              indicated, and accomplishing proper cancer screening and
              surveillance will be outlined in this review.},
}
\end{filecontents}

\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}


\begin{document}
\cite{sigfridsson,burt}
\printbibliography
\end{document}

一般情况下,我建议不要将abstract字段导出到.bib文件。这样做弊大于利,而且几乎从不打印,所以它只会使.bib文件膨胀.bbl

要删除 JabRef 中的字段,请转到“编辑 > 设置/清除/重命名字段”。在“字段名称”下插入abstract,然后选择是否要删除所有条目的字段或仅删除选定条目的字段,最后在最后一部分中选择“清除字段”。

JabRef 的“设置/清除/重命名字段”对话框的屏幕截图,所有选择如上所述

如果您随后单击“确定”,则所有abstract字段将被清除。然后您可以保存更改。

也可以看看http://help.jabref.org/en/SetClearRenameFields

如果你不想abstract手动修复所有错误字段,并且不能或不想关闭 JabRef 中的字段导出功能,防止 biber 因摘要中的“%”字符而窒息?描述了如何在磁场造成任何损害之前迅速消除它。

相关内容