Substantially Revised
In the light of the discussion in the comments, I've substantially revised this.
\documentclass[]{article}
\usepackage[backend=biber,style=alphabetic]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{my.bib}
@inproceedings{inproc1,
Author = {Test Author},
Crossref = {proc},
Pages = {1--10},
Title = {Testing the Title}}
@inproceedings{inproc2,
Author = {Test Author},
Crossref = {proc},
Pages = {10--20},
Title = {Testing the second Title}}
@proceedings{proc,
Editor = {Senor Editor and Senora Editora},
Publisher = {Any Publisher},
Title = {My Proceedings},
Year = {2013}}
@inproceedings{inproc3,
Author = {Nother Author},
Publisher = {Nother Publisher},
Title = {In Some Other Proceedings},
Maintitle = {Main Title of Other Proceedings},
Year = {2001},
}
\end{filecontents}
\DeclareBibliographyDriver{inproceedings}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/translator+others}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{in:}%
\iffieldundef{crossref}
{\usebibmacro{crossref:full}}
{\usebibmacro{crossref:label}}
\newunit\newblock
\usebibmacro{chapter+pages}%
\iffieldundef{crossref}
{\usebibmacro{crossref:extrainfo}}
{}
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\usebibmacro{finentry}}
\newbibmacro{crossref:full}{%
\usebibmacro{maintitle+booktitle}%
\newunit\newblock
\usebibmacro{event+venue+date}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}%
\newunit
\printfield{volumes}%
\newunit\newblock
\usebibmacro{series+number}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\printlist{organization}%
\newunit
\usebibmacro{publisher+location+date}}
\newbibmacro{crossref:label}{%
\entrydata{\strfield{crossref}}
{\printtext{\mkbibbrackets
{\printfield{labelalpha}\printfield{extraalpha}}}}}
\newbibmacro{crossref:extrainfo}{%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{isbn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}}%
\addbibresource{my.bib}
\begin{document}
Test \cite{inproc1} and \cite{inproc2} and \cite{inproc3}
\printbibliography
\end{document}
This redefinition of the driver for inproceedings
checks to see if there is a cross reference field defined. If there is, then it prints the label for the cross-referenced work. If there is not (ie if the inproceedings
entry is self-contained) it prints full information.
I've only done this for inproceedings
: it might be necessary to use a similar redefinition for inbook
and incollection
if you use these in a similar way.
(Note: this replaces my original answer, which involved a (bad) hackish redefinition of the maintitle+booktitle
macro, and which would have had unfortunate effects if crossreferences were not defined. This should be safe if a crossreference is defined, so long as it is valid and refers to a work that is cited. It also carries the health warning that I haven't tested it extensively with a large number of examples, and it's always the corner cases that catch you when you try to write bibliography drivers.)
This is something Biber can do in its tool mode.
Unfortunately, the solution originally suggested here ceased to work a while ago. Following https://github.com/plk/biber/issues/301 Biber was adjusted so things would work again. The fix will be available in Biber 2.15. For versions in between, I'm afraid I can not offer a simple Biber-based solution. (Maybe bibtool
can help here.)
Biber version 2.15 and above
We need the following config file, called, say, biber-date.conf
<?xml version="1.0" encoding="UTF-8"?>
<config>
<output_fieldcase>lower</output_fieldcase>
<datamodel>
<fields>
<field fieldtype="field" datatype="literal">year</field>
<field fieldtype="field" datatype="literal">month</field>
</fields>
<entryfields>
<field>year</field>
<field>month</field>
</entryfields>
</datamodel>
<sourcemap>
<maps datatype="bibtex">
<map map_overwrite="1">
<map_step map_field_source="date" map_match="[0-9]{4}-([0-9]{2})" map_final="1"/>
<map_step map_field_set="montha" map_field_value="$1"/>
</map>
<map map_overwrite="1">
<map_step map_field_source="date" map_match="([0-9]{4})" map_final="1"/>
<map_step map_field_set="yeara" map_field_value="$1"/>
</map>
</maps>
</sourcemap>
</config>
To convert the date
fields in your .bib
file run
biber --tool --configfile=biber-date.conf <yourbibfile>
For the example file augustus.bib
@article{kattan_timeseries_2015,
title = {Time-series event-based prediction: An unsupervised learning framework based on genetic programming},
journaltitle = {Information Sciences},
author = {Kattan, Ahmed and Fatima, Shaheen and Arif, Muhammad},
date = {2015-04}
}
@book{lorem,
title = {Lorem},
author = {Anne Uthor},
date = {2015}
}
@book{ipsum,
title = {Ipsum},
author = {Anne Uthor},
date = {2015-08-07},
}
the output (which you can find in augustus_bibertools.bib
after the biber --tool --configfile=biber-date.conf augustus.bib
run) is
@article{kattan_timeseries_2015,
author = {Kattan, Ahmed and Fatima, Shaheen and Arif, Muhammad},
journaltitle = {Information Sciences},
month = {4},
title = {Time-series event-based prediction: An unsupervised learning framework based on genetic programming},
year = {2015},
}
@book{lorem,
author = {Uthor, Anne},
title = {Lorem},
year = {2015},
}
@book{ipsum,
author = {Uthor, Anne},
date = {2015-08-07},
title = {Ipsum},
}
Old versions of Biber
We need the following config file, called say biber-date.conf
<?xml version="1.0" encoding="UTF-8"?>
<config>
<output_fieldcase>lower</output_fieldcase>
<sourcemap>
<maps datatype="bibtex" map_overwrite="1">
<map map_overwrite="1">
<map_step map_field_source="date" map_match="[0-9]{4}?-([0-9]{2}?)" map_final="1"/>
<map_step map_field_set="month" map_field_value="$1"/>
</map>
<map map_overwrite="1">
<map_step map_field_source="date" map_match="([0-9]{4}?)" map_final="1"/>
<map_step map_field_set="year" map_field_value="$1"/>
</map>
</maps>
</sourcemap>
</config>
The regular expressions are not particularly elegant, but the first one copies the month position of the date
field to the month
field, the second maps the year position to the year
field.
Now you just need to run biber --tool --configfile=biber-date.conf <yourbibfile>
On the example file augustus.bib
@article{kattan_timeseries_2015,
title = {Time-series event-based prediction: An unsupervised learning framework based on genetic programming},
journaltitle = {Information Sciences},
author = {Kattan, Ahmed and Fatima, Shaheen and Arif, Muhammad},
date = {2015-04}
}
@book{lorem,
title = {Lorem},
author = {Anne Uthor},
date = {2015}
}
@book{ipsum,
title = {Ipsum},
author = {Anne Uthor},
date = {2015-08-07},
}
the output (which you can find in augustus_bibertools.bib
after the biber --tool --configfile=biber-date.conf augustus.bib
run) is
@article{kattan_timeseries_2015,
author = {Kattan, Ahmed and Fatima, Shaheen and Arif, Muhammad},
date = {2015-04},
journaltitle = {Information Sciences},
month = {04},
title = {Time-series event-based prediction: An unsupervised learning framework based on genetic programming},
year = {2015},
}
@book{lorem,
author = {Anne Uthor},
date = {2015},
title = {Lorem},
year = {2015},
}
@book{ipsum,
author = {Anne Uthor},
date = {2015-08-07},
month = {08},
title = {Ipsum},
year = {2015},
}
Best Answer
See here for details on entering multiple authors.
To display the information you require, search for BibTeX styles (good survey here) that use the fields desired. You may find that styles specific to your area of study include the fields you are expecting.
Not all styles use information from every field. For cases where the majority of the bibliography is as desired, but a few references are missing information, you can use the
note
field, which is always appended to the bib entry. But this should be used sparingly.