BibTeX

BibTeX

我的发起人有一个非常不寻常的要求:参考书目需要首先按照所引用项目的具体类型进行排序,然后按作者和出版年份进行排序。

我设法通过使用makebst和手动编辑来完成这种自定义排序.bst,但现在对我来说存在更大的问题:参考书目本身必须分段,因此它应该看起来像这样:


来源

Aahn,A. 2008,随便吧兄弟

Aahn,A. 2009,随便吧,老兄,真的

字典

万物百科全书,1999

维基百科,2000 年至今

文章

Aahn, B. 和 Boss, C., 1889 这个问题与我们无关,好人

其他材料

Bactera, EC, 1987,我们如何彻底避免毁灭整个地球。


可以使用 自动完成此操作吗bibtex?还是我必须手动编辑生成的文件?

答案1

有几种方法可以根据引用项的类型来单独列出参考书目。我将在这里介绍其中的一些方法,即:

BibTeX

有几种或多或少复杂的解决方案可以用 来按类型分离参考书目bibtex,但这根本不是“自动”的......

使用splitbib

您可以使用splitbib 包,您必须定义一个书目类别并手动向其中添加相应的项目,如下所示:

\begin{category}[A]{First category}
\SBentries{entry1,entry4}
\end{category}

以下是 MWE:

\documentclass{article}
\usepackage{splitbib}
\begin{category}[A]{First category}
  \SBentries{article-minimal,article-full}
\end{category}
\begin{category}[B]{Second category}
  \SBentries{book-minimal,book-full}
\end{category}
\begin{document}
\cite{article-minimal,article-full,book-minimal,book-full}
\bibliography{xampl.bib}
\bibliographystyle{plain}
\end{document}

splitbib 示例

查看splitbib 文档更多细节。

使用bibtopic

与 一样splitbibbibtopic除了按类型单独列出书目之外,还旨在实现其他可能的用途。

自从它需要单独的数据库对于每个参考书目部分,当您已经将它们视为这样时(即,.bib每种项目都有单独的文件),它会更加明显。

用法基本上是,例如:

\begin{btSect}{books}
\section{References from books}
\btPrintCited     % for cited references
\btPrintNotCited  % for references not cited
\end{btSect}

以下是 MWE:

\documentclass{article}
\usepackage{bibtopic}
\begin{filecontents}{books.bib}
@BOOK{book-minimal,
   author = {Donald E. Knuth},
   title = {Seminumerical Algorithms},
   publisher = {Addison-Wesley},
   year = {1981},
}
@BOOK{book-full,
   author = {Donald E. Knuth},
   title = {Seminumerical Algorithms},
   volume = 2,
   series = {The Art of Computer Programming},
   publisher = {Addison-Wesley},
   address = {Reading, Massachusetts},
   edition = {Second},
   month = {10~} # jan,
   year = {1981},
}
\end{filecontents}
\begin{filecontents}{articles.bib}
@ARTICLE{article-minimal,
   author = {L[eslie] A. Aamport},
   title = {The Gnats and Gnus Document Preparation System},
   journal = {\mbox{G-Animal's} Journal},
   year = 1986,
}
@ARTICLE{article-full,
   author = {L[eslie] A. Aamport},
   title = {The Gnats and Gnus Document Preparation System},
   journal = {\mbox{G-Animal's} Journal},
   year = 1986,
   volume = 41,
   number = 7,
   pages = {73+},
   month = jul,
   note = {This is a full ARTICLE entry},
}
@ARTICLE{article-notcited,
   author = {L[eslie] A. Aamport},
   title = {The Gnus and Gnats Document Preparation System},
   pages = "73+",
   journal = {\mbox{G-Animal's} Journal},
   year = 1987,
   volume = 42,
   number = 8,
   month = jul,
}
\end{filecontents}
\begin{document}
\bibliographystyle{alpha}
\section{Testing}
Let’s cite all the books: \cite{book-minimal,book-full}; and articles:
\cite{article-minimal,article-full}.
\begin{btSect}{books}
\section{References from books}
\btPrintCited
\end{btSect}
\begin{btSect}[plain]{articles}
\section{References from articles}
\btPrintCited
\section{Articles not cited}
\btPrintNotCited
\end{btSect}
\end{document}

bibtopic 示例

请注意,每个部分都bibtopic需要bibtex通过,因此您应该使用

latex <file>
bibtex <file>1
bibtex <file>2
...
bibtex <file>n
latex <file>
latex <file>

查看bibtopic文档更多细节。

使用multibib

splitbib和 一样bibtopicmultibib 除了按类型单独列出书目之外,还旨在实现其他可能的用途。

它不需要单独的数据库,但它会为您在序言中定义的每种类型的项目创建一个特殊的引用命令。

基本用法是在序言中创建一个新的引用类型:

\newcites{mytype}{A Header for your special bibliographic type(s)}

然后用命令引用新类型中应考虑的条目 \cite<newcites-arg>,例如\citemytype

以下是 MWE:

\documentclass{article}
\usepackage{multibib}
\newcites{book}{Books}
\begin{document}
\citebook{book-full,book-minimal}

\cite{article-minimal,article-full}
\bibliographystylebook{alpha}
\bibliographybook{xampl}
\renewcommand{\refname}{Other References}
\bibliographystyle{plain}
\bibliography{xampl}
\end{document}

multibib 示例

请注意(与bibtopic)它需要特殊bibtex通行证:

latex <file>
bibtex <file>
bibtex <mytype>
latex <file>
latex <file>

查看multibib文档更多细节。

使用biblatex

你可以用biblatex包!用法很简单:

\printbibliography[type=book]
\printbibliography[type=collection]
\printbibliography[type=thesis]

或者在你的书目条目中添加一个keywords字段,并将其拆分为书目

\printbibliography[keyword=keyword1]
\printbibliography[keyword=keyword2]

或者通过像splitbib包一样创建类别,例如

\DeclareBibliographyCategory{<category>}
\addtocategory{<category>}{<key>}

下面是使用第一个提到的选项的 MWE:

\documentclass{article}
\usepackage[style=numeric]{biblatex}
\addbibresource{xampl.bib}
\begin{document}
\cite{article-minimal,article-full,book-minimal,book-full}
\printbibliography[type=article,title={Articles}]
\printbibliography[type=book,title={Books}]
\end{document}

biblatex 示例

查看biblatex 文档了解更多信息。

要转到 biblatex,我建议您阅读以下问题:

相关内容