Preserving all capitalization in BibTeX

I have a huge .bib file generated automatically from Papers for Mac and all the capitalization in the .bib is already the way I want it, but it doesn't have {} brackets on word like RNA.

Is there a way to force BibTeX to keep the capitalization rather than change some words to lowercase?

69218 次浏览

In that case you should just add {} around each entire title, which has the same effect and should be easy to do automatically.

If you prefer to edit the bibtex style (.bst) rather than the bibliography (.bib), you can search for occurences of change.case$ in it. This is the function that capitalizes or title-izes fields that are not people names.

Typically, for the title field, you should find something like title "t" change.case$. Since you want the title unmodified, replace that by just title.

I agree with Killian that the right thing is to put {}s to conserve capitalisation, but I don't recommend doing this always, since the behaviour is wrong in some contexts, and not automatisable, but instead the right thing with Bibtex is to do the following:

  1. Put book and article titles into title case (i.e., capitalising all significant words [1], but not protecting them yet);
  2. Protect the capitals of all proper names, e.g., From {B}rouwer to {H}ilbert;
  3. Protect the capitals of all technical acronyms, e.g., The definition of {S}tandard {ML}; and
  4. Protect the initial word of a subtitle, e.g. the {W}ittgenstein's Poker: {T}he story of a ten-minute argument.

Don't protect lowercase letters: this prevents Bibtex from converting the string to all-caps, which is required by some obscure bibliographical styles.

If you have been using a spell-checker, then the contents of its database will, with luck, contain nearly all of the material you need to know to capitalise properly: spell-checker's store information on which words are all-caps, and which are capitalised as proper names. If you can programmatically match words against this, then you can generate your Bibtex database automatically, with more than a little work, but it's maybe a two-hour project.

Tiresomely, Bibtex can't be used to get all bibliographies right, since different citation styles actually have different lists of non-significant words. However, in practice hardly anyone ever cares about the differences, so one can come up with a standard list of non-capitalised words.

[1] - Significant words:"a", all two-letter actual words, "the", "and", "some", all one-word prepositions, and all one-word pronouns would be an acceptable list of non-significant words , I think, to nearly all publishers.

I was getting the same issue with a title such as:

title = {blah blah AB blah AB blah}

turning out as:

"blah blah ab blah ab blah"

Using Charles Stewart's suggestion, I changed my title to:

title = {blah blah {A}{B} blah {A}{B} blah}

Now my title turns out right: blah blah AB blah AB blah

Hope this helps.

One alternative to using {curly brackets} is this:-

  1. Check your root folder for .bbl file, where .bbl is your BiBteX database, after you run pdflatex for the first time and then run bibtex on your BiBteX database file.bbl.

  2. Open this *.bbl file in an editor of your choice.

  3. The file would look like this:  

    \begin{thebibliography}{10}
    
    
    \expandafter\ifx\csname url\endcsname
    
    
    \relax
    \def\url#1{\texttt{#1}}
    
    
    \fi
    \expandafter\ifx\csname urlprefix\endcsname
    
    
    \relax\def\urlprefix{URL }
    
    
    \fi
    
    
    \bibitem{label}.....
    
  4. Edit this *.bbl file to meet your requirements and now run the pdflatex command on your .tex file. This should give you the desired result.

  5. By this method you can edit the bibliography in any manner. You can even add names with accented characters.