使用 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
该课程elegantbook
已biblatex
为您加载,但是它只允许您使用其众多选项中的三个。您可以将backend
、bibstyle
和citestyle
选项传递给您的类并将它们转发到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}
如果您不想使用\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}