44

I'm writing my research proposal and my supervisor wants me to abbreviate the journal name (and remove part of the month from the publication date). How can I achieve that?

Edit: I am using BibTeX and my .bib file holds the full journal name. I writing using Emacs on an Arch Linux machine. I don't really mind switching to other LaTeX format but I don't know anything about them.

5
  • 6
    This is very little information. How do you create your references? Do you use bibtex and a bitex style or are you using biblatex. Long story short, please provide a minimal working example.
    – Martin H
    Commented Nov 2, 2011 at 12:55
  • 2
    If you have to quickly finish the proposal, I recommend to duplicate and open the .bib file and use the search and replace function of your preferred editor to simply replace the journal names with appropriate abbreviations. You can also delete the month entries. Ugly, but quick...
    – Andy
    Commented Nov 3, 2011 at 6:36
  • 1
    @Andy: As you said, ugly but quick. I was hoping for something more general for future work. Thanks.
    – Yotam
    Commented Nov 3, 2011 at 7:42
  • Related: tex.stackexchange.com/questions/111724/… Commented Sep 18, 2017 at 15:32
  • for mathematical citation, I use the amsscinet database, which include the journal and fjournal filed, the journal field is the abbrevation.
    – user19832
    Commented Mar 7, 2019 at 5:36

7 Answers 7

34

A while back I created a package and some BibTeX styles for automatic journal abbreviations that uses the ISSN database to do exactly this: https://github.com/compholio/jabbrv

This is now included as an Overleaf template: https://www.overleaf.com/latex/templates/automatic-journal-abbreviations/mxfsdscmvxcr

Edit: Changed link to git repository (old link: http://www.compholio.com/latex/jabbrv/)

18
  • 3
    @Comppholio Is this on CTAN? I've wondered in the past about providing something that at least in the first instance looks similar (i.e. a 'magic' macro that converts full names to abbreviations), so I'll be taking a look at how you've tackled this.
    – Joseph Wright
    Commented Aug 12, 2012 at 6:57
  • 2
    @Joseph No, I've not yet contributed anything to CTAN. I recently got tired of making new BibTeX styles all the time and decided to use some of the techniques from developing jabbrv to make a package that processes BibTeX files using a simpler style file syntax.
    – Compholio
    Commented Aug 15, 2012 at 15:32
  • 1
    that looks very interesting! Is it also compatible with biblatex and biber, or does it require bibtex? Commented Feb 27, 2015 at 3:56
  • 1
    @AnonymousPhysicist It's not that difficult to modify the styles, and I do have one: github.com/compholio/jabbrv/blob/master/jabbrv_apsrev4-1.bst
    – Compholio
    Commented Jul 2, 2018 at 13:26
  • 1
    Overleaf now provides this as a template here: overleaf.com/latex/templates/automatic-journal-abbreviations/…
    – Shep Bryan
    Commented Feb 2, 2022 at 19:05
24

EDIT: There is an elegant way now with biber 0.9.6. Together with biblatex 1.7. the data can be changed on the fly without changing the input .bib file itself. It utilizes the map feature of biber as described in section 3.1.1 of the manual. The biber.conf file looks like this:

<map>
  <bibtex>
  BMAP_OVERWRITE 1
    <globalfield journal>
      BMAP_MATCH Physical\sReview
      BMAP_REPLACE "Phys. Rev."
    </globalfield>
  </bibtex>
</map>

which would replace Physical Review with Phys. Rev. Please find a verbose explanation in my answer to this question.

/EDIT

One possible way would be to come up with a work abbreviation. Then, you use the editor of your choice and search and replace the journal title with the work abbreviation. Let's say the journal is A long journal name and you call it alj. You replace Journal={A long journal name} with Journal=alj in the bibtex file. Now, you can make two bibtex files: short.bib and long.bib with the content @string{alj="A l. J. N."} and @string{alj="A long journal name"}, respectively. Whenever you feel like it, you can add another way to display the journal title.

MWE (you could have provided that):

\documentclass{article}

\begin{document}
Test\cite{brown08}

\bibliography{long,cvpubs}
\bibliographystyle{unsrt}

\end{document}

use either \bibliography{long,cvpubs} or \bibliography{short,cvpubs} for long or short journal titles.

cvpubs.bib:

@article{brown08,
    Author = {Seth Brown and Michael Cole and Albert Erives},
    Journal = alj,
    Title = {Evolution of the holozoan ribosome biogenesis regulon},
    Volume = {9},
    Year = {2008},
    Pages = {113}

short.bib:

@string{alj="A l. J. N."}

long.bib

@string{alj="A long journal name"}

leading to

short example and long example

1
  • 1
    Please note the the biber config file format will change for biber 0.9.7 because the current one is not easy to extend and it a bit confusing for the mapping options. The new one is XML and much easier to understand for mapping options. The manual has been re-written for 0.9.7 with examples. You can get 0.9.7 beta from sourceforge now in the development folder.
    – PLK
    Commented Nov 25, 2011 at 9:02
16

You should be aware that the abbreviation is not arbitrary, because there is the standard ISO 4 that defines a List of Title Word Abbreviations (LTWA). As far as I know, every abbreviation is unique, so that abbreviating/un-abbreviating should work unambigously in both directions.

The CAS has a small online tool CASSI that can be used to search for journal names and/or their official LTWA abbreviation.

JabRef has a journal name abbreviation feature that also uses the LTWA. This feature can be configured under Options → Manage journal abbreviations.

13

I have made a little Python script that processes a bibtex database, searching for the journal names and replacing them with their official abbreviation (taken from the Jabref source): https://gist.github.com/FilipDominec/9ff081952dbc4aae1df657a56c3db4ea

7
  • 2
    It took some 20 minutes to write the script. But it is surprisingly nontrivial to find an usable list of journal names... The world's academic community is obviously missing some central source of such information.
    – dominecf
    Commented Apr 9, 2016 at 10:18
  • 1
    It lacks so much....
    – Yotam
    Commented Apr 9, 2016 at 19:13
  • 1
    This script just does a find replace based on all the text in the bibtex file and I found that it replaces things in abstracts etc. if the journal title isn't specific enough.
    – salotz
    Commented Dec 19, 2017 at 22:32
  • 3
    @Yotam We would all be better off if journals just stopped caring about abbreviations at all. It truly is an extremely outdated practice.
    – salotz
    Commented Dec 19, 2017 at 22:33
  • 1
    It seems the "journallist.txt" is not there anymore. E.g. my browser gives "404: Not Found" and the script fails to execute with an error that seems like the list is empty. Commented Jan 19, 2020 at 11:41
11

betterbib (a small project of mine) now gives you a choice on the journal names; short ones are the default. Simply install with

pip install betterbib

and run it over your bib file:

betterbib update your.bib > out.bib

Use --long-journal-name/-l to switch to long journal names.

EDIT: The package has been update and now the > is necessary to make this work.

3
  • installs nicely but gives an error: betterbib bib.bib out.bib Traceback (most recent call last): File "/usr/local/bin/betterbib", line 6, in <module> from betterbib.cli.full import main File "/usr/local/lib/python2.7/site-packages/betterbib/__init__.py", line 5, in <module> from .__about__ import version, author, author_email, website File "/usr/local/lib/python2.7/site-packages/betterbib/__about__.py", line 8, in <module> copyright = u"Copyright (c) 2013-2019, {} <{}>".format(author, author_email) Commented Jan 19, 2020 at 11:17
  • 1
    Don't use Python 2 anymore, you probably got an ancient version. Commented Jan 21, 2020 at 9:48
  • Might be the case that the syntax of the example is obsolete? To make it work I run betterbib abbreviate-journal-names your.bib > out.bib. Thanks for the great proyect.
    – Alf Pascu
    Commented Oct 2, 2021 at 18:04
0

I ended up writing a simple Python script that takes a bibtex file, and creates a copy of that file with journal names replaced by their abbreviations. It can be found here: https://gitlab.com/GuusAvis/abbreviate_journals .

In my case I really wanted something with little overhead (doing one thing and one thing only) that I could easily understand. This led me to try and use the script posted by @dominecf. However, it replaced more fields in my bibtex file than I wanted, and is based on a list of abbreviations that has in the mean time been outdated. I ended up editing this script posted on github in response to the one made by @dominecf, and combining it with the abbrv.jabref.org database such that it automatically remains up to date (the other script tries to pull a version that no longer exists).

It also allows choosing which abbreviation lists from the abbrv.jabref.org database to use. This can be useful, as there appear to be conflicts between those lists, potentially resulting in undesired behavior. This is what happened to me when using jabref to add abbreviations.

Hopefully there is someone who still finds this useful, almost twelve years after the original question was posed!

0

This is a common problem. My solution

pipx install bibiso4
bibiso4 your_refs.bib > iso4_your_refs.bib

You must log in to answer this question.

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