如何在预制文档类/模板中从 Natbib 切换到 Biblatex?

如何在预制文档类/模板中从 Natbib 切换到 Biblatex?

我在用这个模板写我的论文。模板使用 Natlib 作为参考,而我真正需要的是 Biblatex。

当我尝试将 \usepackage[natbib] 更改为 biblatex 时,我收到错误消息

This is BibTeX, Version 0.99d (TeX Live 2016/Debian)
Capacity: max_strings=100000, hash_size=100000, hash_prime=85009
The top-level auxiliary file: aagot-1-report.aux
The style file: acm.bst
Illegal, another \bibstyle command---line 80 of file aagot-1-report.aux
 : \bibstyle
 :          {acm}
 I'm skipping whatever remains of this command
Database file #1: Mendeleytry.bib.bib
Warning--I didn't find a database entry for ""
You've used 14 entries,code here

解决方案

\usepackage[backend=bibtex, natbib=true, style=numeric]{biblatex}

没有用。

另一个可能的解决方案是从头开始重新编译以删除 .aux 文件,但这会导致

/usr/share/texlive/texmf-dist/tex/latex/biblatex/biblatex.sty:462:
LaTeX Error:
 Command \bibhang already defined.
           Or name \end... illegal, see p.192 of the manual.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.462 \newlength{\bibhang}

我曾尝试使用这个“marco”来覆盖 \requirePackage 设置,但这也没有用,并导致

LaTeX Error: Two \documentclass or \documentstyle comm
ands.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.45 \documentclass[whitelogo]{
                           tudelft-report} 

我似乎无法删除任何文档类,除非获得 tudelft-package 和 biblatex 引用的功能(或者实际上根本无法让它工作!)

(no line number):
[0] Config.pm:343> INFO - This is Biber 2.5
[0] Config.pm:346> INFO - Logfile is 'aagot-1-report.blg'
[62] biber:290> INFO - === Tue Apr 24, 2018, 22:24:06
[246] Utils.pm:165> ERROR - aagot-1-report.bcf is malformed, last biblatex 
run probably failed. Deleted aagot-1-report.bbl
[246] Biber.pm:113> INFO - ERRORS: 1

有什么方法可以让这个模板与 Biblatex 兼容吗?Natlib 似乎深深植根于文件中,我不知道如何更改它/访问设置/“.sty”文件。我可以将示例文档类与 biblatex 结合使用(而不是标准 natbib),而不会丢失文档类其余部分的重要部分吗?

非常感谢 :)

答案1

如果您是代尔夫特理工大学的学生,您可能需要与您的导师核实您是否确实需要使用biblatex。您也可以联系模板的负责人寻求帮助。

如果你不是在代尔夫特理工大学学习,你可能不应该使用该模板。如果你想要更改任何内容,这种模板真的很难修改——如果你不是在代尔夫特理工大学,你很可能需要进行一些更改。另请参阅https://github.com/johannesbottcher/templateConfusion。如果出现问题,这样的模板调试起来要比从已建立的文档类(如、、reportKOMAbook类之一或)开始调试memoir困难得多。模板通常会加载许多包,通常是许多您不需要或不想要的包 - 这大大增加了不兼容的可能性(正如您必须发现的那样)。如果您使用如此复杂的设置,人们也很难帮助您。

此外,这里可能还存在法律问题:可以从https://www.tudelft.nl/en/tu-delft-corporate-design/downloads/没有明确的许可声明。尽管我通常会假设将模板用于您的文档是没问题的(虽然我不是我的朋友),但这些模板也包括了内部字体,TUDelft-UltraLight.ttf并且没有许可证指示——使用没有许可证的字体可能会更加成问题。

无论如何,您的问题是类(和.tex文件)加载natbibnatbib与 不兼容biblatex。因此,如果您想使用,biblatex则需要阻止类加载natbib。这可以通过包来完成scrlfile:添加\RequirePackage{scrlfile},然后\PreventPackageFromLoading{natbib}在加载之前\documentclass{tudelft-report}。除此之外,您还需要按照以下步骤操作要切换到 biblatex 该怎么做?如何从 natbib 过渡到 biblatex?

来自report.texhttps://www.tudelft.nl/en/tu-delft-corporate-design/downloads/那么看起来就像

\RequirePackage{scrlfile}          % <- to prevent
\PreventPackageFromLoading{natbib} % <- natbib from loading
\documentclass[whitelogo]{tudelft-report}
\usepackage[backend=biber,style=numeric,natbib=true]{biblatex}% <- load biblatex instead
\addbibresource{report.bib}% <- the .bib file needs to be given here

%\usepackage{natbib}% <- no idea why the template loads natbib again, again we don't do that
\usepackage{changes}

\begin{document}
\frontmatter
\title[tudelft-white]{Title}
\subtitle[tudelft-black]{Optional subtitle}
\author[tudelft-white]{J.\ Random Author}
\affiliation{Technische Universiteit Delft}
\coverimage{tank.jpg}
\covertext[tudelft-white]{
    \textbf{Cover Text} \\
    possibly \\
    spanning 
    multiple 
    lines
    \vfill
    ISBN 000-00-0000-000-0
}
\setpagecolor{tudelft-cyan}
\makecover[split]

\input{title}

\input{preface}

\tableofcontents

\mainmatter

\input{chapter-1}

\appendix
\cite{Reference1,Reference2,Reference3}

\printbibliography% <- to print the bibliography
\end{document}

请记住,在此文件上运行 Biber 而不是 BibTeX。请参阅Biblatex 与 Biber:配置我的编辑器以避免未定义的引用(看使用问号或粗体引用关键字代替引用编号有关 Biber 和 BibTeX 的背景知识,请参阅biber 故障排除用于 Biber 问题的急救)。


如果你使用的是代尔夫特理工大学论文模板,dissertation.cls则需要停止natbibchapterbib加载,这样你的文件将以

\RequirePackage{scrlfile}              % <- to prevent
\PreventPackageFromLoading{natbib}     % <- natbib and
\PreventPackageFromLoading{chapterbib} % <- chapterbib from loading
\documentclass{dissertation}
\usepackage[backend=biber,style=numeric,natbib=true]{biblatex}% <- load biblatex instead
\addbibresource{diss.bib}% <- the .bib file needs to be given here

相关内容