[Tex/LaTex] Biblatex: define custom style or modify existing

biblatexciting

The style I need citations in seems so far removed from the provided Biblatex styles that I'm unsure whether it's best to extensively modify an existing style or write a custom one; and not too sure how exactly to go about doing either. Full citations are to go in footnotes; no bibliography. Ibid. to be used where appropriate, but not op cit. Here is what I need:

ARTICLE:

First mention:

Allen Carlson, `Nature and Positive Aesthetics’, Environmental Ethics 6 (1984), 5–34, at 33–4.

Subsequent (if not Ibid.):

Carlson, `Nature and Positive Aesthetics’, 33-4.

(NB: only volume, no number)

BOOK:

First mention:

Donald Worster, Nature’s Economy: A History of Ecological Ideas (2nd edn, Cambridge: Cambridge University Press, 1994), 471.

Subsequent:

Worster, Nature’s Economy, 19–38.

INBOOK and INCOLLECTION:

First mention:

Charles Shah Pittendrigh, `Adaption, Natural Selection, and Behavior’, in Anne Roe and George Simpson (eds), Behavior and Evolution (New Haven: Yale University Press, 1958), 390–416, at 400.

Subsequent:

Pittendrigh, `Adaption, Natural Selection, and Behavior’, 392.

Advice gratefully received!

EDITS:

Additions:

Document MWE:

\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[bibstyle=verbose-ibid, citestyle=BJA,
usetranslator=true, ibidpage=true]{biblatex}
\bibliography{natural_aesthetics.bib}
\begin{document}
\footcite[37]{Godlovitch1994}
\footcite[37]{HumeSOT}
\footcite[37]{berleant2005}
\footcite[37]{Carroll1993}
\footcite[37]{Godlovitch1994}
\footcite[37]{HumeSOT}
\footcite[37]{berleant2005}
\footcite[37]{Carroll1993}
\end{document}

MWE bib file:

@BOOK{Berleant2005,
title = {Aesthetics and Environment},
publisher = {Ashgate},
year = {2005},
author = {Arnold Berleant},
location = {Aldershot}
}
@INCOLLECTION{Carroll1993,
author = {Noel Carroll},
title = {On Being Moved By Nature: Between Religion and Natural History},
booktitle = {Landscape, Natural Beauty and the Arts},
publisher = {Cambridge University Press},
year = {1993},
editor = {Salim Kemal and Ivan Gaskell},
pages = {244-266},
location = {Cambridge}
}
@INBOOK{HumeSOT,
pages = {134--149},
title = {Of The Standard of Taste},
publisher = {Ward, Lock and Bowden},
year = {1875},
author = {David Hume},
bookauthor = {David Hume},
booktitle = {Essays Literary, Moral, and Political},
location = {London}
}
@ARTICLE{Godlovitch1994,
author = {Stan Godlovitch},
title = {Icebreakers: Environmentalism and Natural Aesthetics},
journal = {Journal of Applied Philosophy},
year = {1994},
volume = {11},
pages = {15-30},
number = {1}
}

BJA.cbx in process of modification: took the advice to append things to verbose-ibid.cbx : my additions and requests at end.

% $Id: BJA.cbx,v 1.0 $

\ProvidesFile{BJA.cbx}
[\abx@cbxid $Id: BJA.cbx, v 1.0 $]

\RequireCitationStyle{verbose-ibid}

\AtEveryCitekey{
  \clearfield{number}} %removes journal number for articles

\renewbibmacro{in:}{%
  \ifentrytype{article}{}{%
  \printtext{\bibstring{in}\intitlepunct}}} % removes in for articles


\DeclareFieldFormat{postnote}{at #1}% replaces p and pp with at in page refs
\DeclareFieldFormat{multipostnote}{at #1}% replaces p and pp with at
\DeclareFieldFormat{pages}{#1} %omits pp in article etc
\renewcommand*{\newunitpunct}{\addcomma\space} %comma space between units

%for book: put (edition, location: publisher, year)

%for article, inbook, incollection: single quotes round titles

% for inbook, incollection: editors names (eds), title, (edition, location: publisher, year)

% for inbook, incollection: no punctuation after in


\endinput

Best Answer

Here, I think this should do more or less what you want (you may find some issues when you add new items with different fields… always happens). A couple of things you may be interested in:

  • You can load the package with autocite=footnote and add \let\cite=\autocite to your preamble, so that \cite will automatically put your citations in footnotes (unless you are already in one).

  • I loaded babel and csquotes with british language to get you the single quotes you need; I know of no other proper way to do it.

  • You still need to copy and modify english.lbx and change the shorthands for "edition" and "editor"/"editors". These changes can't be done in the preamble.

Now, add this to your preamble:

\usepackage[british]{babel}
\usepackage{csquotes}

And you can copy this to your style file:

% $Id: BJA.cbx,v 1.0 $

\ProvidesFile{BJA.cbx}
[\abx@cbxid $Id: BJA.cbx, v 1.0 $]

\RequireCitationStyle{verbose-ibid}

% Remove journal number for articles
\AtEveryCitekey{%
  \ifentrytype{article}
    {\clearfield{number}}
    {}}

% Delete pagination in postnote (p., etc.) — No idea why I had to do this for it to work
\AtEveryCitekey{%
  \ifciteseen
    {\DeclareFieldFormat{postnote}{#1}%
      \DeclareFieldFormat{multipostnote}{#1}}
    {\DeclareFieldFormat{postnote}{at #1}%
      \DeclareFieldFormat{multipostnote}{at #1}}}

% Remove "in" for articles
\renewbibmacro{in:}{%
  \ifentrytype{article}
    {}
    {\printtext{\bibstring{in}\nopunct\addspace}}}

% Don't italicise title
\DeclareFieldFormat{title}{#1}
\DeclareFieldFormat{citetitle}{#1}
\DeclareFieldFormat{booktitle}{#1}
\DeclareFieldFormat{maintitle}{#1}

% Don't italicise journal title
\DeclareFieldFormat{journaltitle}{#1}

% Cite "eds." in parentheses
\DeclareFieldFormat{editortype}{\mkbibparens{#1}}

% Omit "p." indicator
\DeclareFieldFormat{pages}{#1}

% Use comma and space between units
\renewcommand*{\newunitpunct}{\addcomma\space}

% Book Customisation

\DeclareBibliographyDriver{book}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/editor+others/translator+others}%
  \setunit{\labelnamepunct}\newblock
  \usebibmacro{maintitle+title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \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}%
  \space\nopunct
  \mkbibparens{%
    \setunit{\unspace}\newblock
    \iffieldundef{edition}
      {}
      {\printfield{edition}%
        \newunit}
    \usebibmacro{publisher+location+date}}
  \newunit\newblock
  \usebibmacro{chapter+pages}%
  \newunit
  \printfield{pagetotal}%
  \newunit\newblock
  \iftoggle{bbx:isbn}
    {\printfield{isbn}}
    {}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \usebibmacro{finentry}}

% Inbook Customisation

\DeclareBibliographyDriver{inbook}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \setunit{\labelnamepunct}\newblock
  \usebibmacro{title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{in:}%
  \usebibmacro{bybookauthor}%
  \newunit\newblock
  \ifnameundef{editor}
    {}
    {\printnames{editor}%
     \setunit{\addspace}%
     \usebibmacro{editor+othersstrg}}
  \newunit\newblock
  \usebibmacro{maintitle+booktitle}%
  \newunit\newblock
  \iffieldundef{maintitle}
    {\printfield{volume}%
     \printfield{part}}
    {}%
  \newunit
  \printfield{volumes}%
  \newunit\newblock
  \usebibmacro{series+number}%
  \newunit\newblock
  \printfield{note}%
  \space\nopunct
  \mkbibparens{%
    \setunit{\unspace}\newblock
    \iffieldundef{edition}
      {}
      {\printfield{edition}%
        \newunit}
    \usebibmacro{publisher+location+date}}
  \newunit\newblock
  \usebibmacro{chapter+pages}%
  \newunit\newblock
  \iftoggle{bbx:isbn}
    {\printfield{isbn}}
    {}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \usebibmacro{finentry}}

% Incollection Customisation

\DeclareBibliographyDriver{incollection}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \setunit{\labelnamepunct}\newblock
  \usebibmacro{title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{in:}%
  \newunit\newblock
  \ifnameundef{editor}
    {}
    {\printnames{editor}%
     \setunit{\addspace}
     \usebibmacro{editor+othersstrg}}
  \newunit\newblock
  \usebibmacro{maintitle+booktitle}%
  \newunit\newblock
  \iffieldundef{maintitle}
    {\printfield{volume}%
     \printfield{part}}
    {}%
  \newunit
  \printfield{volumes}%
  \newunit\newblock
  \usebibmacro{series+number}%
  \newunit\newblock
  \printfield{note}%
  \space\nopunct
  \mkbibparens{%
    \setunit{\unspace}\newblock
    \iffieldundef{edition}
      {}
      {\printfield{edition}%
        \newunit}
    \usebibmacro{publisher+location+date}}
  \newunit\newblock
  \usebibmacro{chapter+pages}%
  \newunit\newblock
  \iftoggle{bbx:isbn}
    {\printfield{isbn}}
    {}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \usebibmacro{finentry}}

% For "edition"="edn", modify a copy of english.lbx
% Same goes for "eds" without a dot

\endinput

Here is what it looks like:

enter image description here

Did I miss anything?

EDIT: Corrected the book and collection/inbook titles that appeared in italics. They are now in roman (but I didn't re-upload the picture).