无法使用非默认排序技术编译 bibtex 书目

无法使用非默认排序技术编译 bibtex 书目

使用 elegantbook 模板,我的文档的最小版本如下所示:

\RequirePackage{fix-cm}

\documentclass[bibend=bibtex, lang=en, onecolumn, a4, 12pt]{elegantbook}

\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{setspace}
\doublespacing
\usepackage{tocloft}
\usepackage{biblatex}
%\usepackage{parskip}
\addbibresource{reference.bib}

\addtolength{\cftchapnumwidth}{40pt}

\begin{document}



\frontmatter

\tableofcontents

\mainmatter



\chapter{Introduction}

Blah blah blah \cite{en1}

\printbibliography[heading=bibintoc, title=\ebibname]

\end{document}

但如果我通过以下方式改变参考书目排序技术:

\usepackage[sorting=none]{biblatex}

我收到以下错误:

Option clash for package biblatex. \addbibresource

似乎无论我将排序选项放在哪里(例如在 addbibresource 中),它都不起作用。但文档说这应该有效 - 我错在哪里了?

附言:这是使用 elegantbook 模板制作书目的标准方法。我似乎无法使用 \bibliography 等来做到这一点。

答案1

该课程elegantbookbiblatex为您加载,但是只允许您使用其众多选项中的三个。您可以将backendbibstylecitestyle选项传递给您的类并将它们转发到biblatex,但仅此而已。(就我个人而言,我认为让通用文档类强制执行特定的参考书目包没有什么意义,特别是如果它没有基于该包添加进一步的自定义。)

您无法使用biblatex与文档类设置的选项不匹配的选项进行第二次加载。因此,仅添加\usepackage[backend=bibtex, sorting=none]{biblatex}或执行类似操作将失败。

您可以\ExecuteBibliographyOptions在前言中使用它来设置排序。虽然并非所有biblatex选项都可以通过此命令使用,但大多数选项都sorting=none,可以使用。

\documentclass[bibend=bibtex, bibstyle=numeric,]{elegantbook}

\ExecuteBibliographyOptions{sorting=none} 

\addbibresource{biblatex-examples.bib}

\begin{document}
\frontmatter

\tableofcontents

\mainmatter

\chapter{Introduction}

Lorem \cite{sigfridsson}
ipsum \autocite{worman}
dolor \autocite{geer}

\printbibliography[heading=bibintoc, title=\ebibname]
\end{document}

Lorem [1] ipsum [2] 忧伤 [3]

参考书目部分


如果您不想使用\ExecuteBibliographyOptions或想要设置无法通过该命令获得的选项,您可以滥用bibstyle文档类选项,并尝试通过添加几个花括号来传递该sorting选项biblatex 。目前,由于类的编码方式,这种方法是可行的。(但我不认为这是预期的界面。如果相关的话,您可能需要与类作者联系并与他们讨论您的用例。)

\documentclass[bibend=bibtex, bibstyle={numeric, sorting=none,},]{elegantbook}

\addbibresource{biblatex-examples.bib}

\begin{document}
\frontmatter

\tableofcontents

\mainmatter

\chapter{Introduction}

Lorem \cite{sigfridsson}
ipsum \autocite{worman}
dolor \autocite{geer}

\printbibliography[heading=bibintoc, title=\ebibname]

\end{document}

相关内容