Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

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.

share|improve this question
    
I've never done it myself, but probably have a look at the section 4.3, page 151 of the biblatex documentation. –  Timothée Poisot Aug 9 '12 at 23:28
add comment

2 Answers

up vote 10 down vote accepted

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}}}}}
share|improve this answer
add comment

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.

share|improve this answer
    
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 yesterday
    
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. –  Jan-Åke Larsson yesterday
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.