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:
- Put book and article titles into title case (i.e., capitalising all non-significant words [*]);
- Protect the capitals of all proper names, e.g.,
From {B}rouwer to {H}ilbert
;
- Protect the capitals of all technical acronyms, e.g.,
The definition of {S}tandard {ML}
; and
- 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.
[*] "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-standard words , I think, to nearly all publishers.