For example: "Philos Trans R Soc" should become "Philos. Trans. R. Soc."

| improve this question | | | | |
  • 1
    Probably no solution - some abbreviated journal names are only partially abbreviated, such as CNS Drugs Rev. and the like, so probably biblatex has no way of knowing how to do this generally. – Michael Palmer Nov 10 '11 at 2:30
  • 2
    If you have a lot of occurrences of this particular journal, you could define @STRING{Philos ="Philos. Trans. R. Soc."} in your .bib file, and then use journal = Philos. I know this doesn't answer the question, hence it's a comment. – cmhughes Nov 10 '11 at 4:36
  • A similar approach to @cmhughes but at the LaTeX level is to define a macro, so \journal, which takes a string for the name and expands either to the abbreviated or abbreviated + full stops version, depending on some setting. (That avoids needing to mess with your database, but you would need to have some 'fall back' built in so is not ideal.) – Joseph Wright Nov 10 '11 at 7:07
  • Thanks cm and Joseph - both good suggestions. It turns out JabRef, which I'm using, has a mechanism to deal with this problem. – Michael Palmer Nov 10 '11 at 14:30
  • 2
    Also, if you are using biber, 0.9.6 beta has functionality to map datasource information as it is read in. One thing you can do is to use full Perl regular expressions to change data field values as the datasource is read, without changing the data source itself. This may help. See the biber manual section 3.1.1 This functionality will be officially release in biber 0.9.6/biblatex 1.7 which will be out soon. – PLK Nov 11 '11 at 11:31

I prepared a solution using the new biber feature. Please update your biber to 0.9.6 first.

I prepared this minimal input file:


\usepackage[backend=biber, style=numeric-comp]{biblatex}


with this manuell.bib-file

author = {C. Reynolds and B. Serin and W. Wright and L. Nesbitt}, 
journal = {Philos Trans R Soc},
title = {Superconductivity of isotopes of mercury},
pages = {487},
volume = {78},
year = {1950}

LaTeX, biber, LaTeX leads to:

nobiberconf which is the unchanged output. Now, we use the biber regular expression matching to change the journal name to a new version with periods. The file named biber.conf has the following content:

    <globalfield journal>
      BMAP_MATCH Philos\sTrans\sR\sSoc
      BMAP_REPLACE "Philos. Trans. R. Soc."

It is explained in the biber manual section 3.1.1 The map option. Please note the regular expression \s to match a white space. After putting the biber.conf file in the actual directory, we get (LaTeX, biber, LaTeX):

withbiberconf which is the desired change. It is most likely not possible to do this fully automatic for all journals with one regular expression, because (cp. comment @Michael Palmer) CNS Drugs rev would become CNS Drugs. rev. if a period is simply added after every word.

Also note, the input file format will change in 0.9.7 and this solution has to be updated once the new version is out.

Quote @PLK:

The config file format will change for biber 0.9.7 as it was too restrictive.

taken from his answer to this question.

Here is the config file format for biber 0.9.8 and above:

    <maps datatype="bibtex" map_overwrite="1">
          map_replace="Philos. Trans. R. Soc." />
| improve this answer | | | | |
  • Yes, the format will change in biber 0.9.7 which is currently available in the dev folder on Sourceforge. – PLK Nov 25 '11 at 8:54
  • 2
    Thanks for the answer, and it's good to see an example of how to use biber. However, this solution still requires dealing with each journal individually, whereas my original question was looking for a general solution (which is not feasible). – Michael Palmer Jan 5 '12 at 18:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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