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}
For the approach with the abbrvnat
bibliography style, try issuing the instruction
\setcitestyle{authoryear,round,semicolon}
after loading natbib
. Thus, omit the open={(},close={)}
part. By the way, whenever one makes changes to the argument of \setcitestyle
, one should recompile the document fully -- LaTeX, BibTeX, and LaTeX twice more -- to propagate all changes.
As far as I can tell, both the natbib
and the harvard
citation management packages order the formatted citation call-outs in the ordering provided in the input (\citep
and \citet
). Thus, I'm afraid it's up to you to list the arguments of \citep
in the desired ordering.
Best Answer
To achieve your objective, you should
load the
natbib
package with the optionauthoyear
,load the
hyperref
package, anduse the optional argument of the
\bibitem
macro to provide the pieces of information that are needed to form the authoryear-style citation callouts. Note that there must not be a space between the author's name (or authors' names) and the year in the optional argument of\bibitem
:With such a setup, it's possible to use both the
\citep
and\citet
macros of thenatbib
package.A final remark: Just because it's possible to use this method doesn't mean it's advisable to do so. In the medium and long term, you'll do yourself a huge favor by learning how to use BibTeX and/or biblatex to handle the chores related to creating a formatted bibliography and generating appropriately formatted citation call-outs.