我的发起人有一个非常不寻常的要求:参考书目需要首先按照所引用项目的具体类型进行排序,然后按作者和出版年份进行排序。
我设法通过使用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 文档更多细节。
使用bibtopic
与 一样splitbib
,bibtopic
除了按类型单独列出书目之外,还旨在实现其他可能的用途。
自从它需要单独的数据库对于每个参考书目部分,当您已经将它们视为这样时(即,.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
需要bibtex
通过,因此您应该使用
latex <file>
bibtex <file>1
bibtex <file>2
...
bibtex <file>n
latex <file>
latex <file>
查看bibtopic
文档更多细节。
使用multibib
与splitbib
和 一样bibtopic
,multibib
除了按类型单独列出书目之外,还旨在实现其他可能的用途。
它不需要单独的数据库,但它会为您在序言中定义的每种类型的项目创建一个特殊的引用命令。
基本用法是在序言中创建一个新的引用类型:
\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}
请注意(与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,我建议您阅读以下问题: