Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I'm trying to figure out how to work with BibTeX. The thing is, I think I've followed all I can make of BibTeX tutorials in the net still to no avail. So far, here's how my bibliography looks like (biblio.bib)

@ARTICLE{bovik_clark_geisler,
author="Alan Conrad Bovik, Marianna Clark and Wilson Geisler",
title={Multichannel texture analysis using localized spatial filters},
journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},
volume={12},
year={1990},
pages={55-73},
}

@ARTICLE{marcos
author="Maria Sheila Angeli Marcos, Maricor Soriano and Caesar Saloma",
title={Classification of coral reef images from underwater video using neural networks},
journal={Optics Express},
volume={13},
number={22},
pages={8766-8771},
}

@ARTICLE{weldon
author="Thomas Weldon, William Higgins and Dennis Dunn",
title={Efficient Gabor Filter Design for Texture Segmentation},
journal={Pattern Recognition},
volume={29},
number={12},
pages={2005-2015},
}

@MISC{zhang
author="Dengsheng Zhang, Aylwin Wong, Maria Indrawan and Guojun Lu",
title={Content-based Image Retrieval Using Gabor Texture Features}
}

I've figured (correct me if I'm wrong) that BibTeX is using regular expressions to parse entries and its different contents, to produce the appropriate reference format depending on the specified style (ACM, IEEE, etc.). However, I can't figure out what this format is. I'm following the compilation process at http://www.bibtex.org/Using/ , but upon calling on bibtex, I get errors like

I was expecting a `,' or a `}'---line 25 of file biblio.bib
...
Warning--to sort, need author or key in weldon
Warning--empty author in weldon
Warning--empty title in weldon
Warning--empty journal in weldon
Warning--empty year in weldon

Where line 25 is the author attribute of weldon.

Same goes for marcos and zhang though zhang is only complaining for the key. What's a key then? How come I don't see it specified in online resources? I've also tried changing the curly braces in the attributes to quote marks but it still complains of the same errors. Is there anything I'm missing, any tutorial you may recommend to make this work?

UPDATE:

So, I figured out, thanks to Wikipedia, that BibTeX parses using and and not commas. However, I still get the same error. The output, before I changed them to and, was something like

[1]

[2]

[3]

[4] Citation entry for bovik_clark_geisler

But Bovik and Clark's name isn't delimited at all and looks like one name. After reading Wikipedia, they got separated with a comma but still the same output (blank 1-3, citation for bovik_clark_geisler at 4).

share|improve this question

3 Answers 3

up vote 8 down vote accepted

In the entries with keys weldon, marcos, and zhang, you are missing a comma separating the key from the entry fields; when an entry has several authors, use and to separate all of them (that's how bibTeX knows where an author ends and another one begins); if you want to preserve the capitalization in the title field, use braces to enclose letters that must remain capitalized (as I did with {G}abor in the code below). Here's an example based on your example code, with the modifications suggested (I also added the year field for marcos and weldon to prevent a bibTeX warning):

\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@ARTICLE{bovik_clark_geisler,
  author = "Alan Conrad Bovik and Marianna Clark and Wilson Geisler",
  title = {Multichannel texture analysis using localized spatial filters},
  journal = {IEEE Transactions on Pattern Analysis and Machine Intelligence},
  volume = {12},
  year = {1990},
  pages = {55-73},
}

@ARTICLE{marcos,
  author = "Maria Sheila Angeli Marcos and Maricor Soriano and Caesar Saloma",
  title = {Classification of coral reef images from underwater video using neural networks},
  journal = {Optics Express},
  volume = {13},
  number = {22},
  pages = {8766-8771},
  year = {1989}
}

@ARTICLE{weldon,
  author = "Thomas Weldon and William Higgins and Dennis Dunn",
  title = {Efficient {G}abor Filter Design for Texture Segmentation},
  journal = {Pattern Recognition},
  volume = {29},
  number = {12},
  pages = {2005-2015},
  year = {2005}
}

@MISC{zhang,
  author = "Dengsheng Zhang and Aylwin Wong and Maria Indrawan and Guojun Lu",
  title = {Content-based Image Retrieval Using {G}abor Texture Features}
}
\end{filecontents*}

\begin{document}

\nocite{*}

\bibliographystyle{plain}
\bibliography{\jobname}

\end{document}

enter image description here

share|improve this answer
4  
The name Maria Sheila Angeli Marcos should be better input as Angeli Marcos, Maria Sheila or Marcos, Maria Sheila Angeli depending on which is the correct surname. This is important for bib styles that do the inversion for the first author (or for all of them). I also wouldn't use different delimiters for fields: either "..." or {...} (the latter is better, IMO). –  egreg Mar 17 '12 at 11:25
    
@skytreader: Other than helping to get the correct references if a bib style inverts the order of authors' given names and surnames, there are (at least) two additional reasons for using commas in cases where an author's name that contains a compound last name using commas, Angeli Marcos, Maria Sheila in your example . The reasons are: (i) bib styles in which the authors' given names are abbreviated (e.g., M. S. Angeli Marco rather than M. S. A. Marco) and (ii) author-year citation styles: one should want to get Angeli Marco et al (1990) rather than Marco et al (1990), right? –  Mico Mar 17 '12 at 13:28
    
@egreg and Mico: I will incorporate your suggestions to my answer as soon as I can (right now I don't have time). Thank you both. –  Gonzalo Medina Mar 17 '12 at 14:38
    
Owwww....what an embarassing mistake. Nonetheless, thanks for all these tips! –  skytreader Mar 17 '12 at 19:38

I think I've followed all I can make of BibTeX tutorials in the net still to no avail

Since you appear to be quite interested in the structure and philosophy of BibTEX, you may also wish to read Nicolas Markey's essay Tame the BeaST -- The B to X of BibTeX. It provides wonderfully clear explanations of

  • the basic LaTeX approach (i.e., sans-BibTeX) to creating citations and typesetting a list of bibliographic entries (acquiring this background knowledge is very useful for developing an in-depth understanding of how BibTeX interacts with LaTeX's basic bibliography- and citation-related mechanims),
  • how to use BibTeX,
  • the structure of a .bib file, and
  • the structure of .bst (i.e., bibliography style) files.

You may also find it helpful to review some basic bibtex-related terminology:

  • To handle all citation- and reference-creating tasks with BibTeX (and LaTeX), you'll need to

    • create one or more .bib files,
    • choose a .bst bibliography style file (which contains instructions to BibTeX on how the entries are supposed to be formatted), and
    • choose (usually, but not necessarily) a citation management package -- such as cite, harvard (one of the first packages that was written specifically for authors who wish to use the author-year citation style), or natbib -- to enable and simplify various citation-related tasks (beyond what's made possible by LaTeX's own \cite command)
  • .bib files contain entries as well as, possibly, some auxilliary material. An entry is the basic self-contained unit that contains all information related to a publication (or entity of just about any kind, really) that you wish to cite and reference.

  • An entry consists of:

    • a type specifier, such as @book or @article;
    • opening and closing delimiters of the entry's contents -- generally a pair of curly braces, but a pair of round parentheses works too;
    • a key, which is the string you'll use to cite the entry; each entry's key must be unique to this entry (at least within the set of all entries contained in the .bib files you tell LaTeX about via the \bibliography{...} instruction; and
    • several fields, such as author, title, year, and pages (to name but a few).

    • Each field, if included in an entry, should have some content assigned to it, e.g.,

      author = "Isaac Newton",
      

      or

      title = {Philosophiae Naturalis Principia Mathematica},
      

      Fields are separated from each other (and from the entry's key) with commas.

      Note that it doesn't matter if you delimit the field's contents with double-quotes or curly braces (as long as you're consistent).

      Confusingly, BibTeX also recognizes a field named key, in addition to the entry's key string. Be sure not to specify an entry's key using the key = "...", construct.

  • BibTeX's original .bst files (plain, unsrt, and abbrev) were set up to recognize and process 22 different fields (23, if one includes the special-purpose crossref field). (In case you're curious about these fields, find the file plain.bst in your TeX distributions and look for the contents of ENTRY.) More modern .bst files, such as those provided by the natbib package, provide instructions on how to recognize and process additional fields such as doi, eid, isbn, issn, and url.

  • Depending on the entry's type, some fields will be either required, optional, or ignored. For instance, if you use the plain bibliography style, the required fields for entries of type article are author, title, journal, and year, and the optional fields are volume, number, pages, and month. All other fields in an entry of type article -- including url, if you use plain.bst -- are ignored.

  • Many entries, of course, will have author and/or editor fields that contain more than one author. In such cases, separate the authors' names from each other with the and particle, not commas. Why not commas? See the next item.

  • Generally, BibTeX does a very good job parsing an author's name into the "FirstName(s)", "von", "LastName", and "Jr." components. However, for some names, the parsing algorithm may go off track badly and you'll have to intervene -- by inserting commas judciously.

    • For instance, for the case of

      author = "Ludwig Mies van der Rohe",
      

      BibTeX will probably "decide" that this person has two first names ("Ludwig" and "Mies"), a "von" component consisting of "van der", and a last name consisting of the single word "Rohe". However, this person actually has only one first name (Ludwig), no "von" component, and a compound last name (Mies van der Rohe). One should therefore specify this field (note the inversion of the "normal" firstname-lastname order) as

      author = "Mies van der Rohe, Ludwig",
      
    • For Spanish surnames, and for those of movie actors, it's not uncommon to encounter instances of surnames that consist of two (or more) components not connected with a hyphen. Suppose you need to cite a work edited by Arantxa Sanchez Vicario and Kristin Scott Thomas (I have no idea if such a work exists...); you should probably set up the entry's editor field as

      editor = "S{\'a}nchez Vicario, Arantxa and Scott Thomas, Kristin",
      

      Note the use of the and particle to separate the two editors' names and of the commas to structure the contents of each name.

    • Using commas to instruct BibTeX about first and last names is important for (at least!) three reasons. (i) It enables the proper display of the authors' and editors' surnames and, if enabled, the alphabetical sorting of entries by the first author's surname. (ii) It enables the correct abbreviation of first names (in case the bibliography style you're using abbreviates first names). (iii) It's also essential for generating proper in-text citations that use the author-year citation style.

I will heartily second @YiannisLazarides' recommendation to use a dedicated program such as JabRef, or at least some bibtex-aware macros that may come with your editor, to help simplify and automate the creation, updating, and pretty-printing of your bib entries.

A notorious shortcoming of BibTeX, one that's connected importantly to its embedding in English-language conventions and its by now near-Methusaleh age (that, and the fact that it hasn't been updated significantly in more than 20 years), is that accented characters have to be entered with care in order not to create problems. (Did you notice the {\'a} construct, rather than the direct use of á, in the preceding example?) If your bibliography features more than just a handful of names and other words containing characters with accents, umlauts, and other diacritics, you may consider doing yourself a serious favor by becoming familiar with biblatex (a modern and well-maintained package): biblatex has no problems handling words that contain accented characters.

Moreover, depending on the language of your document, the sorting order of vowels or consonants containing accents may not be what would apply in an English-language document (which is, unsurprisingly given its origins, what BibTeX assumes to be the case). Fortunately, if you use biblatex and babel, such sorting issues will be handled for you automatically. Even though there are ways, using "plain" bibtex, to influence alphabetical sorting orders to conform to a given language's peculiarities, engaging in this business by hand would be a rather inefficient use of your time. Really! For (much) more information on switching to bilatex see, e.g., the question "What to do to switch to biblatex" and the associated answers.

share|improve this answer
    
Thanks! I'll look into the essay you linked to. –  skytreader Mar 17 '12 at 19:39

If you entering bibliographies by hand is very error prone. Try and work from minimal examples. You can use the filecontents package to save them. In the example below I named it myrefs. The myrefs.bib file can then be used in your main write-up.

\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{myrefs.bib}
@INBOOK{chicago,
   title = "The Chicago Manual of Style",
   publisher = "University of Chicago Press",
   edition = "Thirteenth",
   year = 1982,
   pages = "400--401",
   key = "Chicago"
   }
@ARTICLE{bovik_clark_geisler,
author="Alan Conrad Bovik, Marianna Clark and Wilson Geisler",
title={Multichannel texture analysis using localized spatial filters},
journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},
volume={12},
year={1990},
pages={55-73},
}
\end{filecontents*}
\begin{document}
The \cite{chicago} and \cite{bovik_clark_geisler}
\bibliographystyle{plain}   % (uses file "plain.bst")
\bibliography{myrefs}   
\end{document}

You should get this when you run the above:

enter image description here

A better approach (especially if you starting out), is to use two great tools. JabRef to manage your bibliography and use Biblatex rather than bibtex.

share|improve this answer
    
@skytreader: Note that because the author field of the first bib entry currently incorrectly contains a comma instead of an and as the separator of the first two authors' names, Marianna Clark has become (by BibTeX's lexical rules) the pair of first names to an author with last name Alan Conrad Bovik. –  Mico Mar 17 '12 at 13:49
    
@Mico Thanks for clarifying this point. –  Yiannis Lazarides Mar 17 '12 at 14:20

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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