7

I keep all my references in one huge BibTeX file, which happens to include the full journal name for each one. I'm currently preparing a manuscript that needs the journal names to be abbreviated.

From the research I've done (including reading related questions on this site), it seems that (i) there is no standard automatic way to do this, but (ii) there are various tools such as biber and jabref that will allow me to pre-process my .bib file with a sort of global seach-and-replace for the journal names.

However, since my manuscript only has a few references it would be easier to just manually type in the new journal name for each entry. Is there a way to do this? I'm looking for a quick-and-dirty LaTeX-only solution that won't require me to install anything that isn't already part of TeX Live, since I'm on a tight schedule. I know I could just edit the entries in my .bib file, but I don't want to do that, because I like to keep all my references in the same place.

In case it's relevant, I maintain my .bib file using BibDesk on a Mac, I'm using the natbib package, and the bibliography style is apalike.

  • For the sake of portability, what I do is extract (using bibtool) from my main bibliography.bib file the relevant references for the particular project once it's done (or very, very close to being done). This is better for long term portability, especially since you can now archive the .tex file along with the .bib and any custom .sty or .cls (etc.) you used to create the document. If you go this route, there is nothing 'wrong' with hard-coding journal abbreviations into the new/local .bib file; in fact this would be the smart thing to do! (But I also encourage using biber.) – jon Apr 10 '13 at 5:12
  • @jon thanks for the suggestion - I might do that if a better way doesn't come up. There's a trade-off between long-term portability and medium-term editability, though. When my paper comes back from the reviewers I might need to add extra references, and in that case I either have to add the new ones to both .bib files, or I have to do the extraction and manual editing all over again. I realise that keeping everything in one big .bib file is fragile, but this is the reason I prefer to do it anyway. – Nathaniel Apr 10 '13 at 5:56
  • True -- I usually to the extraction after the article has been accepted: like I said, when it is done (or when I think it is, at least). And I've never had to deal with forced journal abbreviations, which admittedly kind of complicates things.... – jon Apr 10 '13 at 6:20
7

one approach to normalizing journal (and publisher) names is to use the @String function in your .bib file. for example,

@String{j-CACM = "Communications of the ACM"}

would give you the full name, while

@String{j-CACM = "Comm. ACM"}

would be substituted when abbreviations are needed.

the specific entry would then include

@Article{...,
  ...
  journal = j-CACM,
  ...,
}

(no quotes). parallel collections of full titles or abbreviations could then be substituted as needed. this also avoids possible problems of inconsistent typing of names in the individual entries.

this approach, along with much other information regarding maintenance of bibtex databases, was presented by nelson beebe at the 2004 practical tex conference, and resulted in an extensive article on the topic. (nelson knows more about, and has more experience with, bibtex bibliographies than anyone else i know. his recommendations are solid and well worth examining.)

  • Thanks, Barbara. I knew there was a way to do this in the bib file, but couldn't find the documentation for it. – Alan Munn Apr 10 '13 at 12:52
  • 3
    The @STRING constants can be even in a different file. I have a journal-abbrv.bib defining only the strings of abbreviated journal names, and similarly a journal-full.bib defining the same constants j-CACM etc., but with full journal names. Then, I can easily switch between \bibliography{journal-abbrv,hugebib}, and \bibliography{journal-full,hugebib}. – mafp Apr 10 '13 at 13:57
  • 1
    @mafp -- thanks for that info. (i knew it existed, but i couldn't find the syntax quickly.) makes things really easy for an author! (but if submitting to a publisher, it's still highly desirable, if not mandatory, to send just the relevant material, in as few files as possible.) – barbara beeton Apr 10 '13 at 14:09
  • @barbarabeeton Indeed. – mafp Apr 10 '13 at 14:10
  • 1
    (A point for future readers, not mafp or barbara beeton.) When submitting to a journal, it may be wise to concatenate the 'strings' file and the bibliography file, which is easy to do; e.g., cat journal-abbrv.bib hugebib.bib > article.bib. I would further recommend using bibtool to pare down the submitted bibliography to only the relevant references. An article with fifty references does not require a database of 2000. – jon Apr 10 '13 at 15:49
7

I think that your restrictions of not installing anything make a simple solution difficult, so I will suggest the following solution based on this answer.

How to abbreviate journal name in citation

  1. Download the jabbrv package from here: http://www.compholio.com/latex/jabbrv/

  2. Download the jabbrv_apalike.bst from here: http://www.msu.edu/~amunn/latex/jabbrv_apalike.bst (I created this file based on the the other .bst files included with the package.)

  3. If you're really in a hurry, add the jabbrv_apalike.bst file to the jabbrv folder and place your TeX document in that folder too. (This is the fastest way to not install anything).

If you want to install things properly you should install the package in your local texmf folder in the following places (you'll need to create the jabbrv folders yourself). On a Mac, the <path-to-your-local-texmf> = ~/Library/texmf.

  • Put *.bst in <path-to-your-local-texmf>/bibtex/bst/jabbrv
  • Put jabbrv.sty in <path-to-your-local-texmf>/tex/latex/jabbrv
  • Put *.ldf in <path-to-your-local-texmf>/tex/latex/jabbrv

In your TeX document add the following line to your preamble:

\usepackage[warnundef]{jabbrv}

And change your bibliography style command:

 \bibliographystyle{jabbrv_apalike}

Check the warnings for any words that were not abbreviated, and for those words, add the lines like the following to your preamble:

\DefineJournalAbbreviation{long name}{abbreviation} % No period at the end

It took me longer to write this answer than to get an existing document of mine working with this package.

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.