JabRef’s handling of BibTeX

The main class to handle a single BibTeX entry is org.jabref.model.entry.BibEntry. The content of a .bib file is handled in org.jabref.model.database.BibDatabase. The BibTeX contents (as in the BibDatabase) along with some metadata required for handling are stored in org.jabref.model.database.BibDatabaseContext. For instance, this stores the mode of the library, which can be BibTeX or biblatex.

Standard BibTeX fields known to JabRef are modeled in org.jabref.model.entry.field.StandardField. A user-defined field not known to JabRef’s code is modelled in org.jabref.model.entry.field.UnknownField. Typically, to get from a String to a Field, one needs to use org.jabref.model.entry.field.FieldFactory#parseField(java.lang.String).

Reading of .bib files is done in org.jabref.logic.importer.fileformat.BibtexImporter.

Cross-references

BibTeX allows for referencing other entries by the field crossref (org.jabref.model.entry.field.StandardField#CROSSREF). Note that BibTeX and biblatex handle this differently. The method org.jabref.model.entry.BibEntry#getResolvedFieldOrAlias(org.jabref.model.entry.field.Field, org.jabref.model.database.BibDatabase) handles this difference.