19

I've been making the switch toward using biblatex-chicago to replace an old .bst (now out-dated), but I'm still confused as to how biblatex handles short-forms and abbreviations. For example, when I cite an article from the journal Vetus Testamentum, I want the footnote to use the abbreviation VT, but the bibliography to use the full form. In my old .bst file I used the .bib field shortjournal, but that doesn't seem to be the way biblatex works. Similarly, I would like to be able to abbreviate commonly cited reference works, e.g. Ancient Near Eastern Texts as ANET in my footnotes, and use it's full form in the bibliography.

I'm guessing that this functionality is built into biblatex, I just don't know how to use it.

1
  • I've never done it myself, but probably have a look at the section 4.3, page 151 of the biblatex documentation. Commented Aug 9, 2012 at 23:28

2 Answers 2

13

There are a few different fields you can use:

  • shorthand: Replaces the entire citation label. In verbose/"notes" styles, this abbreviation is used after the first citation.

  • shorttitle: Replaces title if it appears in the citation label. In verbose/"notes" styles, this abbreviation is used after the first citation.

  • shortjournal: Defined in the default data model, but not used in the standard styles or biblatex-chicago.

To incorporate shortjournal in the standard styles, you can modify the journal bibliography macro from biblatex.def in your preamble:

\renewbibmacro*{journal}{%
  \ifboolexpr{ test {\ifcitation} and not test {\iffieldundef{shortjournal}} }
    {\printfield[journaltitle]{shortjournal}}
    {\iffieldundef{journaltitle}
       {}
       {\printtext[journaltitle]{%
          \printfield[titlecase]{journaltitle}%
          \setunit{\subtitlepunct}%
          \printfield[titlecase]{journalsubtitle}}}}}

The biblatex-chicago styles have been tailored to meet the requirements of CMS. They are much more complicated than the standard styles and therefore difficult to modify. The following edit for the journal+sub macro from any one of the package's cbx files should work for most cases:

\renewbibmacro*{journal+sub}{%
  \ifboolexpr{ test {\ifcitation} and not test {\iffieldundef{shortjournal}} }
    {\printfield[journaltitle]{shortjournal}}
    {\iffieldundef{journaltitle}
       {}
       {\printtext[journaltitle]{%
        \printfield[noformat]{journaltitle}%
        \setunit{\addcolon\addspace}%
        \printfield[noformat]{journalsubtitle}}}}}
1
  • 1
    Audrey, since, by now, at least some of these features were fully implemented in biblatex-chicago, and are easily accessible: do you mind updating your answer to reflect these changes? That would be great!
    – Philipp
    Commented Oct 24, 2017 at 9:38
7

If you have shortjournal fields and use the biber backend, you can do

\DeclareSourcemap{%
  \maps[datatype=bibtex]{
    % Journal abbreviations
    \map[overwrite]{
      \step[fieldsource=shortjournal]
      \step[fieldset=journaltitle,origfieldval]
    }
  }
}

Many sites I download citations from (into Zotero) provide Journal Abbr (= shortjournal in the Better BibLaTeX export) but some do not. Then I need to add, for example

\DeclareSourcemap{%
  \maps[datatype=bibtex]{
    % Journal abbreviations
    \map{
      \step[fieldsource=journaltitle, match={Physics Letters A},
      replace={Phys. Lett. A}]%
    }
  }
}

Or put that in the Zotero database.

2
  • Isn't \regexp{.+} going to match everything? In that case, I would suggest simply using \step[fieldsource=shortjournal, final]. This will only terminate if shortjournal is empty (the same as your code, but without firing up regex). I haven't checked, but maybe the final isn't even needed, so \step[fieldsource=shortjournal] might suffice.
    – moewe
    Commented Apr 15, 2014 at 13:32
  • Well \regexp{.*} would match everything, even an empty field, I thought I needed to be safe against that. But I just tried an empty shortjournal field; it turns out biber deletes that, so that the original journaltitle would be used. So you are right, there is no need to check the field is nonempty. I changed the above code. Commented Apr 15, 2014 at 14:07

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .