Here's a solution using bibtex
and standard moderncv
. You need to hack a suitable BibTeX style; a good starting point is plainyr
, since it already has sorting by year and looks similar the mock-up in your question.
Make a copy of plainyr.bst
(use kpsewhere
or CTAN to find it) and call it, e.g., plainyrrev.bst
.
Edit FUNCTION {output.bibitem}
as follows:
FUNCTION {output.bibitem}
{ newline$
"\cvitem{" write$
year write$
"}" write$
newline$
"{" write$
""
before.all 'output.state :=
}
Edit FUNCTION {fin.entry}
as follows:
FUNCTION {fin.entry}
{ add.period$
write$
newline$
"}" write$
}
Remove everything relating to the bibliography environment from FUNCTION {begin.bib}
and FUNCTION {end.bib}
:
FUNCTION {begin.bib}
{
}
and
FUNCTION {end.bib}
{
newline$
}
Replace ITERATE {call.type$}
by REVERSE {call.type$}
.
Optional: If you want each year to appear only for the first paper of that year, add
STRINGS {oldyear}
FUNCTION {year.or.none}
{ 's :=
oldyear empty$
{ s 'oldyear := s }
{ s oldyear =
{ "" }
{ s 'oldyear := s }
if$
}
if$
}
before FUNCTION {output.bibitem}
and there change the line
year write$
to
year year.or.none write$
(shamelessly adapted from this answer).
Then,
\documentclass{moderncv}
\moderncvstyle{classic}
\moderncvcolor{blue}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{A01,
author = {Author, A.},
journal = {Good Journal},
year = {2001},
title = {Alpha},
}
@article{B02,
author = {Buthor, B.},
journal = {Very Good Journal},
year = {2008},
title = {Bravo},
}
@article{C03,
author = {Cuthor, C.},
journal = {Also Good Journal},
year = {2004},
title = {Charlie},
}
@article{D04,
author = {Duthor, D.},
year = {2004},
journal = {Best Journal},
title = {Delta},
}
\end{filecontents}
\firstname{E}
\familyname{Xample}
\begin{document}
\section{Publications}
\nocite{*}
\bibliographystyle{plainyrrev}
\bibliography{\jobname}
\end{document}
does the trick:
First thing to do is to add a field for the journal abbreviation to the article entrytype, journalabbr
in the MWE. Therefore you need to declare a datamodel (an extra file; in the MWE I've used filecontents to simulate that) and you have to tell biblatex/biber to use it in the package options.
Then you have to modify the cite command, so it fits your needs. \citep
from the authoryear-style (your citestyle) uses the \cite
command. There you just have to add a switch, which checks if the field journalabbr
is empty or not, and prints it out or not.
Last but not least you have to add the abbreviation fields to the entries.
MWE:
\begin{filecontents}{min.bib}
@article{boisson2003unexpected,
title={Unexpected protein families including cell defense components feature in the N-myristoylome of a higher eukaryote},
author={Boisson, B. and Giglione, Carmela and Meinnel, Thierry},
journal={Journal of Biological Chemistry},
journalabbr={JBC},
year={2003},
publisher={ASBMB}
}
\end{filecontents}
\begin{filecontents}{authorjabbryear.dbx}
\ProvidesFile{authorjabbryear.dbx}
\DeclareDatamodelFields[type=field,datatype=literal]{journalabbr}
\DeclareDatamodelEntryfields[article]{journalabbr}
\end{filecontents}
\documentclass[fontsize=11pt, paper=a4, ngerman, DIV=calc]{scrartcl}
\usepackage[scaled]{helvet}
\renewcommand*\familydefault{\sfdefault}
\usepackage{fixltx2e}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{babel}
\usepackage[german=quotes]{csquotes}
\usepackage[style=authoryear-comp,sortcites=true,sorting=nyt,isbn=false,natbib=true, citestyle=authoryear,bibstyle=authoryear,backend=biber,maxnames=1,maxcitenames=1,
,datamodel=authorjabbryear%added!
] {biblatex}
\DefineBibliographyStrings{ngerman}{ andothers = {{et\,al\adddot}} }
\renewbibmacro*{cite}{%from authoryear.cbx
\iffieldundef{shorthand}
{\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
{\usebibmacro{cite:label}%
\setunit{\addspace}}
{\printnames{labelname}%
\setunit{\nameyeardelim}}%
\iffieldundef{journalabbr}{}{%
\printfield{journalabbr}%
\setunit{\nameyeardelim}%
}%
\usebibmacro{cite:labelyear+extrayear}}
{\usebibmacro{cite:shorthand}}}
\addbibresource{min.bib}
\begin{document}
\citep{boisson2003unexpected}
How it should look like:
(Boisson et al., JBC, 2003)
\printbibliography
\end{document}
Best Answer
Here's a slightly simpler way to do it building on this answer.