A descending labelnumber
in the bibliography is easy to obtain when entries for the subbibliographies are drawn from separate bib
files. The problem is addressed in this post.
Like any citation command, \nocite
makes bibliographic data available to biblatex
. It can't be limited to entrytype
a priori unless you pass a list of entry keys that are entrytype
-specific. For example:
\nocite{<articlekey1>, <articlekey2>, <articlekey3>, ...}
...
\nocite{<reportkey1>, <reportkey2>, <reportkey3>, ...}
Descending labelnumber
with one bib
file can be obtained by making the item counters entrytype
-specific. An easy way to perform counting and printing by entrytype
is to modify \bibbycategory
. The code below demonstrates this approach. It assumes that bibliographic data are made available only via \nocite
.
Extensions to flexible category
definitions and all citation commands are possible. For an illustration, see this previous answer.
\documentclass{article}
\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[style=numeric,sorting=ydnt,defernumbers=true]{biblatex}
\DeclareFieldFormat{labelnumber}{\mkbibdesc{#1}}
\makeatletter
% Print labelnumber as actual number, plus item total, minus one
\newrobustcmd{\mkbibdesc}[1]{%
\number\numexpr\csuse{bbx@itemtotal}+1-#1\relax}
% Initialize category counters
\def\bbx@initcategory#1{\csnumgdef{bbx@count@#1}{0}}
\forlistloop{\bbx@initcategory}{\blx@categories}
% Increment category counters
\def\bbx@countcategory#1{%
\ifentrytype{#1}
{\csnumgdef{bbx@count@#1}{\csuse{bbx@count@#1}+1}%
\addtocategory{#1}{\thefield{entrykey}}%
\listbreak}
{}}
\AtDataInput{\forlistloop{\bbx@countcategory}{\blx@categories}}
% Modify \bibbycategory to set item total
\patchcmd{\blx@bibcategory}
{\blx@key@heading{#1}}
{\blx@key@heading{#1}%
\csnumdef{blx@labelnumber@\the\c@refsection}{0}%
\csnumgdef{bbx@itemtotal}{\csuse{bbx@count@#1}}}
{}{}
\makeatother
\DeclareBibliographyCategory{article}
\DeclareBibliographyCategory{report}
\DeclareBibliographyCategory{inproceedings}
\defbibheading{bibliography}{\section*{Publications and Presentations}}
\defbibheading{article}{\subsection*{Journal Articles}}
\defbibheading{report}{\subsection*{Reports}}
\defbibheading{inproceedings}{\subsection*{Presentations}}
\addbibresource{biblatex-examples.bib}
\begin{document}
\nocite{aksin,bertram,chiu,companion,padhye,angenendt,moraux}
\printbibheading
\bibbycategory
\end{document}
I would make a seperate LaTeX document for it, and then just include the resulting bibliography. You second document, let's say myrefs.tex
might look like this:
\documentclass{article}
\usepackage{natbib}
% whatever you need here, basically a good idea is to use your real thesis header
\begin{document}
Hello world!
\nocite{*}
\bibliographystyle{mystyle}
\bibliography{myrefbibfile}
\end{document}
Now you compile this by standard sequence latex
+bibtex
+latex
+latex
. In your real thesis you add the following:
\begingroup
\def\refname{List of my Publications}
\def\bibname{List of my Publications}
\input{myrefs.bbl}
\endgroup
This should add the bibliography from the second document into the first one, and the name of the chapter/section should be List of my Publications
. Note that we could surely omit one of the two almost identical lines, and change \def
to \renewcommand
in the one we keep, but since different classes use \refname
or \bibname
, we better keep both lines to make things work robustly.
Best Answer
Assuming that the tag you have set is correct (you are using
biblatex
) you should not usemultibib
or other packages, which are not compatible. It can all be done withinbiblatex
. The basic method is as follows:Instead of a simple
\printbibliography
command, you enter\printbibliography[]
The optional command (which I have shown with[]
) limits that bibliography to a particular sub-category of materials: here you put one of the filtering commands described below.Of course, you then have to tell the package what category to use. For that you use one of the following instructions.
type=
will include only works of a certain entry type, e.g.type=book
will include only books. You can only have onetype
instruction:type=book, type=article
will not work. (This is common to all the examples that follow: you can have only one inclusive instruction, but more than one exclusion. If you want complex tests, you need to set up a custombibfilter
.nottype=
will exclude all works in the given type, e.g.nottype=book
will exclude all books. You can have more than onenottype
instruction.nottype=book, nottype=article
will exclude both books and articles.keyword=
will include works based on whether a keyword (which can be anything) has been set in your.bib
file. For instance, in your.bib
file you could putkeywords = {important}
by things you thought were especially important; then you could print a bibliography of just the "important" works with\printbibliography[keyword=important]
.notkeyword=
will exclude works based on whether a keyword (which can be anything) has been set in your.bib
file.category=
will include works based on whether you have assigned the work to a category in your.tex
file. To do that you first set up a category with\DeclareBibliographyCategory{}
in your preamble, and then assign works (by their key) using\addtocategory{category}{key}
in the document. Basically this serves a similar function to keywords, but it lets you set them in your.tex
source rather than your.bib
file, so they can be document specific.notcategory=
will exclude works based on whether you have assigned them to a category.\defbibfilter
which lets you combine various tests using and, or and not, which are covered extensively in thebiblatex
documentation (3.6.7).You may also want to adjust the titles used. Usually, you want something like:
The
title
option controls what is printed. Theheading
option controls the formatting (in this case to print as a sub-heading, in effect).So, in your case, you will want to work out how to identify articles and conference papers. You may be able to map those simply to entrytypes, such as
article
andinproceedings
, or you may need to use keywords (if, for instance, some of your conference papers have thearticle
type in your.bib
file). Then simply use\nocite{*}
to make all the references available for typesetting and then produce two (or more) filtered bibliographies using one of the filters above.The alternative way of dividing bibliographies uses
refsections
andrefsegments
. It is rather intended for cases where you want to produce bibliographies for different parts of a document (e.g. for each chapter separately), than for bibliographies that are divided by topic.