For the original question, the modification required is:
\renewbibmacro*{title}{%
\ifthenelse{\iffieldundef{title}\AND\iffieldundef{subtitle}}
{}
{\printtext[title]{%
\printfield[apacase]{title}%
\setunit{\subtitlepunct}%
\printfield[apacase]{subtitle}}%
\setunit{\addspace}%
\printfield{titleaddon}%
\iffieldequalstr{entrytype}{book}%
{\setunit{\addspace}\usebibmacro{bookaddinfo}}%
{}%
\ifthenelse{%
\ifnameundef{author}\AND%
\(\ifnameundef{editor}\AND\NOT\boolean{bbx:editorinauthpos}\)\AND%
\ifnameundef{producer}\AND%
\ifnameundef{director}\AND%
\ifnameundef{writer}}
{\newunit\newblock
\usebibmacro{labelyear+extrayear}}
{}}}
\DeclareFieldFormat{origyear}{%
\mkbibparenss{\bibcpstring{origyear}~\thefield{origyear}%
\iffieldundef{origtitle}
{}%
{\addcolon\addspace\printfield{origtitle}}}%
}
\newbibmacro*{origyear}{%
\ifthenelse{
\NOT\iffieldundef{labelyear}
\AND\NOT\iffieldsequal{labelyear}{origyear}
\OR
\NOT\iffieldsequal{title}{origtitle}}
{\printfield{origyear}}
{}%
}
\DefineBibliographyStrings{german}{%
origyear = {Original erschienen}
}
This can be inserted in the preamble of your document.
For the extended version one has either to introduce new fields (this can be done,by modifying the data model, or by using the BibLaTeX facilities for related
).
EDIT 1 and EDIT 2
To accommodate the case where the author of the original publication is different the first step is to modify the data model, this can be done with:
\begin{filecontents}{biblatex-dm.cfg}
\DeclareDatamodelFields[type=list, datatype=name,skipout=false]{origauthor}
\DeclareDatamodelEntryfields{origauthor}
\end{filecontents}
This generates a file called biblatex-dm.cfg
in the current directory with the instruction about how to extend BibLaTeX data model.
Notice that BibLaTeX provides a titleaddon
field and this could be used to the extra information for the title ("Die Liebe" in the OP).
Eventually, one could add a field titletranslation
for the selfmade translation, i.e., one can include the following two lines in the datamodel file.
\DeclareDatamodelField[type=field, datatype=literal,skipout=false]{titletranslation}
\DeclareDatamodelEntryfields{titletranslation}
Another possibility is to use an "unused" field, for example, reprinttitle
. In what follow I'm going to use this option.
The next step is to modify the appropriate bibmacro
s. In this case, title
and origyear
for the formatting of the title (and related information about the original publication)
\renewbibmacro*{title}{%
\ifthenelse{\iffieldundef{title}\AND\iffieldundef{subtitle}}
{}
{\printtext[title]{%
\printfield[apacase]{title}%
\setunit{\subtitlepunct}%
\printfield[apacase]{subtitle}}%
\setunit{\addspace}%
\printfield{titleaddon}%
\setunit{\addspace}%
\printfield{reprinttitle}%
\iffieldequalstr{entrytype}{book}%
{\setunit{\addspace}\usebibmacro{bookaddinfo}}%
{}%
\ifthenelse{%
\ifnameundef{author}\AND%
\(\ifnameundef{editor}\AND\NOT\boolean{bbx:editorinauthpos}\)\AND%
\ifnameundef{producer}\AND%
\ifnameundef{director}\AND%
\ifnameundef{writer}}
{\newunit\newblock
\usebibmacro{labelyear+extrayear}}
{}}}
For originyear
the first thing to do is to define the format. To this we check that originauthor
is defined, and we set the punctuation accordingly:
\DeclareFieldFormat{origyear}{%
\mkbibparens{\bibcpstring{origyear}~\thefield{origyear}%
\ifnameundef{origauthor}
{}
{\addspace\bibstring{as}\addspace\printnames[FirstLast]{origauthor}}%
\iffieldundef{origtitle}
{}%
{\ifnameundef{origauthor}
{\setunit{\addcolon\addspace}}
{\setunit{\addcomma\addspace}}%
\printfield{origtitle}}}%
}
Then we have to consider the cases when we have to output the information about the original publication (here the condition is that either the year, or the title, or the author(s) is different).
\renewbibmacro*{origyear}{%
\ifthenelse{
\NOT\iffieldsequal{labelyear}{origdateyear}
\OR
\NOT\iffieldsequal{title}{origtitle}
\OR
\NOT\ifnamesequal{author}{origauthor}
}
{\printfield{origyear}}
{}%
}
Caveat A problem with the above solution is that not all bib entry types include instructions to format the information about the original publication using the above method. A more robust technique would be to use the facilities provided by BibLaTeX to handle related publications.
The last step is to use the appropriate value for the localisation strings origyear
and as
.
\NewBibliographyString{origyear,as}
\DefineBibliographyStrings{ngerman}{%
origyear = {Original erschienen},
as = {als}
}
\DefineBibliographyStrings{american}{%
as = {as}
}
Finally, to change the rendering of names, we have to modify the formatting instructions for apaauthor
\DeclareNameFormat{FirstLast}{%
\ifthenelse{\value{listcount}=\maxprtauth\AND\value{listcount}<\value{listtotal}}
{\addcomma\addspace\ldots}
{\ifthenelse{\value{listcount}>\maxprtauth\AND\value{listcount}<\value{listtotal}}
{}
{\iffirstinits
{\usebibmacro{name:first-last}{#1}{#4}{#5}{#7}}
{\usebibmacro{name:first-last}{#1}{#3}{#5}{#7}}}}
\ifmorenames{\andothersdelim\bibstring{andothers}}{}}
Since you're ultimately wanting an annotated bibliography, I'd use the annotation
field (or its alias annote
). It typically isn't printed unless the bibliography style is already annotated. So you can just modify the finentry
bibliography macro.
\documentclass{article}
\usepackage[style=chem-rsc]{biblatex}
\renewbibmacro*{finentry}{%
\iffieldundef{annotation}
{\finentry}
{\setunit{\finentrypunct\par\vspace{\bibitemsep}\nobreak}
\printfield{annotation}%
\finentry}}
\addbibresource{biblatex-examples.bib}
\begin{document}
\nocite{knuth:ct,markey,glashow}
\printbibliography
\end{document}
The note
field is often printed in bibliography styles. So if you insist on using this field, you need to avoid printing it twice. This can be done by clearing note
in the begentry
bibliography macro and then restoring it in finentry
.
\renewbibmacro*{begentry}{%
\iffieldundef{note}
{\undef\bbxnote}
{\savefield{note}{\bbxnote}%
\clearfield{note}}}
\renewbibmacro*{finentry}{%
\restorefield{note}{\bbxnote}%
\iffieldundef{note}
{\finentry}
{\setunit{\finentrypunct\par\vspace{\bibitemsep}\nobreak}
\printfield{note}%
\finentry}}
Best Answer
The
biblatex
documentation states on page 14: "This [theaddendum
field] is similar to thenote
field except that it is printed at the end of the bibliography entry."So instead of
note
it is better to useaddendum
.biblatex-apa
automatically wrapsaddendum
into parentheses, so there is no need to do that manually.NB: It is always better to let
biblatex
handle such cases: It is quite tiresome to always remember to put the parentheses around the words, and what if you want to get rid of them?So the entry in the
.bib
file should look like this.If you can not be bothered to use
addendum
manually, you can makebiblatex
/biber
do the mapping for you.Just add this to the preamble.
It will copy the
note
field into theaddendum
field (only if the latter one is empty), thenote
field will be removed afterwards.You can then use
note
as usual.The least convenient way is to modify all the drivers defined in
apa.bbx
. Unfortunatelyapa.bbx
does not use any macros to printnote
andaddendum
, but the bare\printfield{note}
and\printfield{addendum}
.In
\DeclareBibliographyDriver{book}
we find:You could manually move all the
\printfield{note}
near\printfield{addendum}
like soor you could
xpatch
all the drivers viaYou will have to do this for all drivers though. So you might want to wrap this into a command
To patch a driver, use
\movenote{article}
, you can call this command for all drivers like this:or