Author: Diego Hernangómez

# BibTeX and CFF

### A potential crosswalk

#### Diego Hernangómez

Abstract

This article presents a crosswalk between BibTeX and Citation File Format (Druskat et al. 2021), as it is performed by the cffr package (Hernangómez 2021). Several crosswalk models specific for each BibTeX entry type (Patashnik 1988) are proposed. The article also provide examples using real BibTeX entries and tips for developers that would like to implement the crosswalk on different programming languages.

## Citation

Please cite this article as:

Hernangómez D (2022). “BibTeX and CFF, a potential crosswalk.” The cffr package, Vignettes.

A BibTeX entry for LaTeX users:

    @article{hernangomez2022,
        title        = {{BibTeX} and {CFF}, a potential crosswalk},
        author       = {Diego Hernangómez},
        year         = 2022,
        journal      = {The {cffr} package},
        volume       = {Vignettes}
    }

## BibTeX and R

BibTeX is a well-known format for storing references created by Oren Patashnik and Leslie Lamport back in 1985. BibTeX that may be reused by another software, like LaTeX, for adding references to a work. An example structure of a BibTeX entry would be:

    @book{einstein1921,
        title        = {Relativity: The Special and the General Theory},
        author       = {Einstein, A.},
        year         = 1920,
        publisher    = {Henry Holt and Company},
        address      = {London, United Kingdom},
        isbn         = 9781587340925
    }

On this case, the entry (identified as `einstein1921`) would refer to a book. This entry then can be used on a document and include references to it.

On R (R Core Team 2021), we can replicate this structure using the `bibentry()` and `toBibtex()` functions:

    entry <- bibentry("book",
      key = "einstein1921",
      title = "Relativity: The Special and the General Theory",
      author = person("A.", "Einstein"),
      year = 1920,
      publisher = "Henry Holt and Company",
      address = "London, United Kingdom",
      isbn = 9781587340925,
    )

    toBibtex(entry)
    #> @Book{einstein1921,
    #>   title = {Relativity: The Special and the General Theory},
    #>   author = {A. Einstein},
    #>   year = {1920},
    #>   publisher = {Henry Holt and Company},
    #>   address = {London, United Kingdom},
    #>   isbn = {9781587340925},
    #> }

The final results of the entry as a text string would be parsed as1:

Einstein A (1920). Relativity: The Special and the General Theory. Henry Holt and Company, London, United Kingdom. ISBN 9781587340925.

## BibTeX definitions

Patashnik (1988) provides a comprehensive explanation of the BibTeX formats. We can distinguish between Entries and Fields.

### Entries

Each entry type defines a different type of work. The 14 entry types defined on BibTeX2 are:

- @article: An article from a journal or magazine.
- @book: A book with an explicit publisher.
- @booklet: A work that is printed and bound, but without a named publisher or sponsoring institution.
- @conference: The same as @inproceedings, included for Scribe compatibility.
- @inbook: A part of a book, which may be a chapter (or section or whatever) and/or a range of pages.
- @incollection: A part of a book having its own title.
- @inproceedings: An article in a conference proceedings.
- @manual: Technical documentation.
- @mastersthesis: A Master’s thesis.
- @misc: Use this type when nothing else fits.
- @phdthesis: A PhD thesis.
- @proceedings: The proceedings of a conference.
- @techreport: A report published by a school or other institution, usually numbered within a series.
- @unpublished: A document having an author and title, but not formally published.

Regarding the entries, `bibentry()` R function does not implement @conference . However, we can replace that key by @inproceedings given that the definition is identical.

### Fields

As in the case of Entries, Patashnik (1988) provides also a definition for each of the possible standard BibTeX fields3. An entry can include other fields that would be ignored on the raw implementation of BibTeX:

- address: Usually the address of the publisher or other of institution.
- annote: An annotation. It is not used by the standard bibliography styles, but may be used by others that produce an annotated bibliography.
- author: The name(s) of the author(s), in the format described in the LaTeX book (Lamport 1986).
- booktitle: Title of a book, part of which is being cited. For @book entries, use the title field instead.
- chapter: A chapter (or section or whatever) number.
- crossref: The database key of the entry being cross referenced.
- edition: The edition of a @book - for example, “Second”. This should be an ordinal, and should have the first letter capitalized, the standard styles convert to lower case when necessary.
- editor: Name(s) of editor(s), typed as indicated in the LaTeX book (Lamport 1986). If there is also an author field, then the editor field gives the editor of the book or collection in which the reference appears.
- howpublished: How something strange has been published. The first word should be capitalized.
- institution: The sponsoring institution of a technical report.
- journal: A journal name.
- key: Used for alphabetizing, cross referencing, and creating a label when the author information is missing.
- month: The month in which the work was published or, for an unpublished work, in which it was written. You should use the standard three-letter abbreviation, as described in Appendix B.1.3 of the LaTeX book (Lamport 1986) (i.e. `jan, feb, mar`).
- note: Any additional information that can help the reader. The first word should be capitalized.
- number: The number of a journal, magazine, technical report, or of a work in a series. An issue of a journal or magazine is usually identified by its volume: and number; the organization that issues a technical report usually gives it a number; and sometimes books are given numbers in a named series.
- organization: The organization that sponsors a @conference or that publishes a manual.
- pages: One or more page numbers or range of numbers, such as `42--111` or `7,41,73--97` or `43+`.
- publisher: The publisher’s name.
- school: The name of the school where a thesis was written.
- series: The name of a series or set of books. When citing an entire book, the title field gives its title and an optional series field gives the name of a series or multi-volume set in which the book is published.
- title: The work’s title.
- type: The type of a technical report—for example, “Research Note”.
- volume: The volume of a journal or multivolume book.
- year: The year of publication or, for an unpublished work, the year it was written. Generally it should consist of four numerals, such as `1984`.

There is a strict relation between Entries and Fields on BibTeX. Depending on the type of entries, some fields are required while others are optional or even ignored. On the following table, required field are flagged as * and optional fields are flagged as -. Fields on parenthesis () denotes that there are some degree of flexibility on the requirement of the field, see Patashnik (1988) for more information.

BibTeX, required fields by entry
field | article | book | booklet | inbook | incollection | conference,inproceedings
--- | --- | --- | --- | --- | --- | ---
title | x | x | x | x | x | x
year | x | x | o | x | x | x
author | x | (x) | o | (x) | x | x
note | o | o | o | o | o | o
month | o | o | o | o | o | o
address |  | o | o | o | o | o
publisher |  | x |  | x | x | o
editor |  | (x) |  | (x) | o | o
number | o | (o) |  | (o) | (o) | (o)
volume | o | (o) |  | (o) | (o) | (o)
pages | o |  |  | (x) | o | o
series |  | o |  | o | o | o
booktitle |  |  |  |  | x | x
edition |  | o |  | o | o |
type |  |  |  | o | o |
chapter |  |  |  | (x) | o |
organization |  |  |  |  |  | o
howpublished |  |  | o |  |  |
institution |  |  |  |  |  |
journal | x |  |  |  |  |
school |  |  |  |  |  |
annote |  |  |  |  |  |
crossref |  |  |  |  |  |
key |  |  |  |  |  |

(cont) BibTeX, required fields by entry
field | manual | mastersthesis,phdthesis | misc | proceedings | techreport | unpublished
--- | --- | --- | --- | --- | --- | ---
title | x | x | o | x | x | x
year | o | x | o | x | x | o
author | o | x | o |  | x | x
note | o | o | o | o | o | x
month | o | o | o | o | o | o
address | o | o |  | o | o |
publisher |  |  |  | o |  |
editor |  |  |  | o |  |
number |  |  |  | (o) | o |
volume |  |  |  | (o) |  |
pages |  |  |  |  |  |
series |  |  |  | o |  |
booktitle |  |  |  |  |  |
edition | o |  |  |  |  |
type |  | o |  |  | o |
chapter |  |  |  |  |  |
organization | o |  |  | o |  |
howpublished |  |  | o |  |  |
institution |  |  |  |  | x |
journal |  |  |  |  |  |
school |  | x |  |  |  |
annote |  |  |  |  |  |
crossref |  |  |  |  |  |
key |  |  |  |  |  |

It can be observed that just a subset of fields is required in any of the Entries. For example, title, year and author are either required or optional on almost every entry, while crossref, annote or key are never required.

## Citation File Format

Citation File Format (CFF) (Druskat et al. 2021) are plain text files with human- and machine-readable citation information for software (and datasets). Among the valid keys of CFF there are two keys, `preferred-citation` and `references` of special interest for citing and referring to related works4:

- `preferred-citation`: A reference to another work that should be cited instead of the software or dataset itself.

- `references`: Reference(s) to other creative works. Similar to a list of references in a paper, references of the software or dataset may include other software (dependencies), or other research products that the software or dataset builds on, but not work describing the software or dataset.

These two keys are expected to be `definition.reference` objects, therefore they may contain the following keys:

Valid keys on CFF `definition-reference` objects
abbreviation | abstract | authors | collection-doi | collection-title
collection-type | commit | conference | contact | copyright
data-type | database-provider | database | date-accessed | date-downloaded
date-published | date-released | department | doi | edition
editors | editors-series | end | entry | filename
format | identifiers | institution | isbn | issn
issue | issue-date | issue-title | journal | keywords
languages | license | license-url | loc-end | loc-start
location | medium | month | nihmsid | notes
number | number-volumes | pages | patent-states | pmcid
publisher | recipients | repository | repository-artifact | repository-code
scope | section | senders | start | status
term | thesis-type | title | translators | type
url | version | volume | volume-title | year
year-original |  |  |  |

These keys are the equivalent to the fields of BibTeX (see Fields), with the exception of the key type. On CFF, this key defines the type of work5, therefore this is the equivalent to the BibTeX entries (see Entries).

## Proposed crosswalk

The cffr package (Hernangómez 2021) provides utilities from converting BibTeX entries (via the R base function `bibentry()`) to CFF files and vice-versa. This section describes how the conversion between both formats have been implemented. This crosswalk is based partially on Haines and The Ruby Citation File Format Developers (2021)6.

On the following two section I present an overview of the proposed mapping between the Entries and Fields of BibTeX and the CFF keys. After this initial mapping, I propose further transformations to improve the compatibility between both systems using different Entry Models.

### Entry/Type crosswalk

For converting general BibTeX entries to CFF types, the following crosswalk is proposed:

Entry/Type crosswalk: From BibTeX to CFF
BibTeX Entry | Value of CFF key: type | Notes
--- | --- | ---
@article | article |
@book | book |
@booklet | pamphlet |
@conference | conference-paper |
@inbook | book | See Entry Models
@incollection | generic | See Entry Models
@inproceedings | conference-paper |
@manual | manual |
@mastersthesis | thesis | See Entry Models
@misc | generic |
@phdthesis | thesis | See Entry Models
@proceedings | proceedings |
@techreport | report |
@unpublished | unpublished |

Also, given that CFF provides with a wide range of allowed values on type, the following conversion would be performed from CFF to BibTeX:

Entry/Type crosswalk: From CFF to BibTeX
Value of CFF key: type | BibTeX Entry | Notes
--- | --- | ---
book | @book / @inbook | See Entry Models
conference | @inproceedings |
conference-paper | @inproceedings |
magazine-article | @article |
manual | @manual |
newspaper-article | @article |
pamphlet | @booklet |
proceedings | @proceedings |
report | @techreport |
thesis | @mastersthesis / @phdthesis | See Entry Models
unpublished | @unpublished |
generic | @misc / @incollection | Under specific conditions, see Entry Models
<any other value> | @misc |

### Fields/Key crosswalk

There is a large degree of similarity between the definition and names of some BibTeX fields and CFF keys7. On the following cases, the equivalence is almost straightforward:

BibTeX - CFF Field/Key crosswalk
BibTeX Field | CFF key
--- | ---
address | See Entry Models
annote | -
author | authors
booktitle | collection-title
chapter | section
crossref | -
edition | edition
editor | editors
howpublished | medium
institution | See Entry Models
journal | journal
key | -
month | month
note | notes
number | issue
organization | See Entry Models
pages | start & end
publisher | publisher
school | See Entry Models
series | See Entry Models
title | title
type | -
volume | volume
year | year

Additionally, there are other additional CFF keys that have a correspondence with BibLaTeX fields. We propose also to include these fields on the crosswalk8, although they are not part of the core BibTeX fields definition.

BibLaTeX - CFF Field/Key crosswalk
BibLaTeX Field | CFF key
--- | ---
abstract | abstract
date | date-published
doi | doi
file | filename
isbn | isbn
issn | issn
issuetitle | issue-title
pagetotal | pages
translator | translators
url | url
urldate | date-accessed
version | version

## Entry Models

This section presents the specific mapping proposed for each of the BibTeX entries, providing further information on how each field is treated. Examples are adapted from the xampl.bib file provided with the bibtex package (Patashnik and Berry 2010).

### article

The crosswalk of @article does not require any special treatment.

@article Model
BibTeX | CFF | Note
--- | --- | ---
@article | type: article | When converting CFF to BibTeX, type magazine-article and newspaper-article are converted to @article.
author* | authors |
title* | title |
journal* | journal |
year* | year |
volume | volume |
number | issue |
pages | start and end | Separated by `--`, i.e, pages = {3–5} would be parsed as start: 3 end: 5
month | month | As a fallback, month could be extracted also from date (BibLaTeX field)/ date-published
note | notes |

Examples

BibTeX entry

    @article{article-full,
        title        = {The Gnats and Gnus Document Preparation System},
        author       = {Leslie A. Aamport},
        year         = 1986,
        month        = jul,
        journal      = {{G-Animal's} Journal},
        volume       = 41,
        number       = 7,
        pages        = {73+},
        note         = {This is a full ARTICLE entry}
    }

CFF entry

    type: article
    title: The Gnats and Gnus Document Preparation System
    authors:
    - family-names: Aamport
      given-names: Leslie A.
    year: '1986'
    month: '7'
    journal: G-Animal's Journal
    volume: '41'
    issue: '7'
    notes: This is a full ARTICLE entry
    start: 73+

From CFF to BibTeX

    @Article{aamport:1986,
      title = {The Gnats and Gnus Document Preparation System},
      author = {Leslie A. Aamport},
      year = {1986},
      month = {jul},
      journal = {G-Animal's Journal},
      volume = {41},
      number = {7},
      pages = {73+},
      note = {This is a full ARTICLE entry},
    }

### book/inbook

In terms of field required on BibTeX, the only difference between @book and @inbook is that the latter requires also a chapter or pages, while for @book these fields are not even optional. So we propose here to identify an @inbook on CFF as a book with section and start-end fields (CFF).

Another specificity is that series field is mapped to collection-title and address is mapped as the address of the publisher (CFF).

@book/@inbook Model
BibTeX | CFF | Note
--- | --- | ---
@book | type: book |
@inbook | type: book | For identifying an @inbook in CFF, assess if section or start-end information is available
author* | authors |
editor* | editors |
title* | title |
publisher* | publisher |
year* | year |
chapter* | section | Only required on @inbook
pages* | start and end | Only required on @inbook
volume | volume |
number | issue |
series | collection-title |
address | address property of publisher | As a fallback, the field location can be used
edition | edition |
month | month | See Note on article
note | notes |

Examples: book

BibTeX entry

    @book{book-full,
        title        = {Seminumerical Algorithms},
        author       = {Donald E. Knuth},
        year         = 1981,
        month        = 10,
        publisher    = {Addison-Wesley},
        address      = {Reading, Massachusetts},
        series       = {The Art of Computer Programming},
        volume       = 2,
        note         = {This is a full BOOK entry},
        edition      = {Second}
    }

CFF entry

    type: book
    title: Seminumerical Algorithms
    authors:
    - family-names: Knuth
      given-names: Donald E.
    year: '1981'
    month: '10'
    publisher:
      name: Addison-Wesley
      address: Reading, Massachusetts
    volume: '2'
    notes: This is a full BOOK entry
    edition: Second
    collection-title: The Art of Computer Programming

From CFF to BibTeX

    @Book{knuth:1981,
      title = {Seminumerical Algorithms},
      author = {Donald E. Knuth},
      year = {1981},
      month = {oct},
      publisher = {Addison-Wesley},
      address = {Reading, Massachusetts},
      series = {The Art of Computer Programming},
      volume = {2},
      note = {This is a full BOOK entry},
      edition = {Second},
    }

Examples: inbook

BibTeX entry

    @inbook{inbook-full,
        title        = {Fundamental Algorithms},
        author       = {Donald E. Knuth},
        year         = 1973,
        month        = 10,
        publisher    = {Addison-Wesley},
        address      = {Reading, Massachusetts},
        series       = {The Art of Computer Programming},
        volume       = 1,
        pages        = {10--119},
        note         = {This is a full INBOOK entry},
        edition      = {Second},
        type         = {Section},
        chapter      = {1.2}
    }

CFF entry

    type: book
    title: Fundamental Algorithms
    authors:
    - family-names: Knuth
      given-names: Donald E.
    year: '1973'
    month: '10'
    publisher:
      name: Addison-Wesley
      address: Reading, Massachusetts
    volume: '1'
    notes: This is a full INBOOK entry
    edition: Second
    section: '1.2'
    start: '10'
    end: '119'
    collection-title: The Art of Computer Programming

From CFF to BibTeX

    @InBook{knuth:1973,
      title = {Fundamental Algorithms},
      author = {Donald E. Knuth},
      year = {1973},
      month = {oct},
      publisher = {Addison-Wesley},
      address = {Reading, Massachusetts},
      series = {The Art of Computer Programming},
      volume = {1},
      pages = {10--119},
      note = {This is a full INBOOK entry},
      chapter = {1.2},
      edition = {Second},
    }

### booklet

In @booklet address is mapped to location.

@booklet Model
BibTeX | CFF | Note
--- | --- | ---
@booklet | type: pamphlet |
title* | title |
author* | authors |
howpublished | medium |
address | location |
month | month | See Note on article
year | year | As a fallback, year could be extracted also from date (BibLaTeX field)/ date-published
note | notes |

Examples

BibTeX entry

    @booklet{booklet-full,
        title        = {The Programming of Computer Art},
        author       = {Jill C. Knvth},
        date         = {1988-03-14},
        month        = feb,
        address      = {Stanford, California},
        note         = {This is a full BOOKLET entry},
        howpublished = {Vernier Art Center}
    }

CFF entry

    type: pamphlet
    title: The Programming of Computer Art
    authors:
    - family-names: Knvth
      given-names: Jill C.
    date-published: '1988-03-14'
    month: '2'
    location:
      name: Stanford, California
    notes: This is a full BOOKLET entry
    medium: Vernier Art Center
    year: '1988'

From CFF to BibTeX

    @Booklet{knvth:1988,
      title = {The Programming of Computer Art},
      author = {Jill C. Knvth},
      year = {1988},
      month = {feb},
      address = {Stanford, California},
      note = {This is a full BOOKLET entry},
      howpublished = {Vernier Art Center},
      date = {1988-03-14},
    }

### conference/inproceedings

Note that in this case, organization is mapped to institution, as BibTeX does not prescribe the use of institution on these entries.

@conference/@inproceedings Model
BibTeX | CFF | Note
--- | --- | ---
@conference / @inproceedings | type: conference-paper | CFF entries with type =conference are mapped back to @inproceedings.
author* | authors |
title* | title |
booktitle* | collection-title |
year* | year |
editor | editors |
volume | volume |
number | issue |
series | conference |
pages | start and end | See Note on article
address | location | As a fallback, address property of conference can be used
month | month | See Note on article
organization | institution |
publisher | publisher |
note | notes |

Examples

BibTeX entry

    @inproceedings{inproceedings-full,
        title        = {On Notions of Information Transfer in {VLSI} Circuits},
        author       = {Alfred V. Oaho and Jeffrey D. Ullman and Mihalis Yannakakis},
        year         = 1983,
        month        = mar,
        booktitle    = {Proc. Fifteenth Annual ACM Symposium on the Theory of Computing},
        publisher    = {Academic Press},
        address      = {Boston},
        series       = {All ACM Conferences},
        number       = 17,
        pages        = {133--139},
        editor       = {Wizard V. Oz and Mihalis Yannakakis},
        organization = {The OX Association for Computing Machinery}
    }

CFF entry

    type: conference-paper
    title: On Notions of Information Transfer in VLSI Circuits
    authors:
    - family-names: Oaho
      given-names: Alfred V.
    - family-names: Ullman
      given-names: Jeffrey D.
    - family-names: Yannakakis
      given-names: Mihalis
    year: '1983'
    month: '3'
    collection-title: Proc. Fifteenth Annual ACM Symposium on the Theory of Computing
    publisher:
      name: Academic Press
    location:
      name: Boston
    issue: '17'
    editors:
    - family-names: Oz
      given-names: Wizard V.
    - family-names: Yannakakis
      given-names: Mihalis
    start: '133'
    end: '139'
    conference:
      name: All ACM Conferences
      address: Boston
    institution:
      name: The OX Association for Computing Machinery

From CFF to BibTeX

    @InProceedings{oahoullman:1983,
      title = {On Notions of Information Transfer in VLSI Circuits},
      author = {Alfred V. Oaho and Jeffrey D. Ullman and Mihalis Yannakakis},
      year = {1983},
      month = {mar},
      booktitle = {Proc. Fifteenth Annual ACM Symposium on the Theory of Computing},
      publisher = {Academic Press},
      address = {Boston},
      editor = {Wizard V. Oz and Mihalis Yannakakis},
      series = {All ACM Conferences},
      number = {17},
      pages = {133--139},
      organization = {The OX Association for Computing Machinery},
    }

### incollection

As booktitle is a required field, we propose to map that field to collection-title and the type to generic. Therefore, an @incollection is a type: generic with a collection-title key.

@incollection Model
BibTeX | CFF | Note
--- | --- | ---
@incollection | type: generic | Including a collection-title value
author* | authors |
title* | title |
booktitle* | collection-title |
publisher* | publisher |
year* | year |
editor | editors |
volume | volume |
number | issue |
series | series |
type | - | Ignored
chapter | section |
pages | start and end | See Note on article
address | address property of publisher | See Note on book/inbook
edition | edition |
month | month | See Note on article
note | notes |

Examples

BibTeX entry

    @incollection{incollection-full,
        title        = {Semigroups of Recurrences},
        author       = {Daniel D. Lincoll},
        year         = 1977,
        month        = sep,
        booktitle    = {High Speed Computer and Algorithm Organization},
        publisher    = {Academic Press},
        address      = {New York},
        series       = {Fast Computers},
        number       = 23,
        pages        = {179--183},
        note         = {This is a full INCOLLECTION entry},
        editor       = {David J. Lipcoll and D. H. Lawrie and A. H. Sameh},
        chapter      = 3,
        type         = {Part},
        edition      = {Third}
    }

CFF entry

    type: generic
    title: Semigroups of Recurrences
    authors:
    - family-names: Lincoll
      given-names: Daniel D.
    year: '1977'
    month: '9'
    collection-title: High Speed Computer and Algorithm Organization
    publisher:
      name: Academic Press
      address: New York
    issue: '23'
    notes: This is a full INCOLLECTION entry
    editors:
    - family-names: Lipcoll
      given-names: David J.
    - family-names: Lawrie
      given-names: D. H.
    - family-names: Sameh
      given-names: A. H.
    section: '3'
    edition: Third
    start: '179'
    end: '183'

From CFF to BibTeX

    @InCollection{lincoll:1977,
      title = {Semigroups of Recurrences},
      author = {Daniel D. Lincoll},
      year = {1977},
      month = {sep},
      booktitle = {High Speed Computer and Algorithm Organization},
      publisher = {Academic Press},
      address = {New York},
      editor = {David J. Lipcoll and D. H. Lawrie and A. H. Sameh},
      number = {23},
      pages = {179--183},
      note = {This is a full INCOLLECTION entry},
      chapter = {3},
      edition = {Third},
    }

### manual

As in the case of conference/inproceedings, organization is mapped to institution.

@manual Model
BibTeX | CFF | Note
--- | --- | ---
@manual | type: manual |
title* | title |
author | authors |
organization | institution |
address | location |
edition | edition |
month | month | See Note on article
year | year | See Note on booklet
note | notes |

Examples

BibTeX entry

Note that month can’t be parsed to a single integer in the range `1--12` as required on CFF, so it is not parsed to avoid validation errors.

    @manual{manual-full,
      title        = {The Definitive Computer Manual},
        author       = {Larry Manmaker},
        year         = 1986,
        month        = {apr-may},
        address      = {Silicon Valley},
        note         = {This is a full MANUAL entry},
        organization = {Chips-R-Us},
        edition      = {Silver}
    }

CFF entry

    type: manual
    title: The Definitive Computer Manual
    authors:
    - family-names: Manmaker
      given-names: Larry
    year: '1986'
    location:
      name: Silicon Valley
    notes: This is a full MANUAL entry
    edition: Silver
    institution:
      name: Chips-R-Us

From CFF to BibTeX

    @Manual{manmaker:1986,
      title = {The Definitive Computer Manual},
      author = {Larry Manmaker},
      year = {1986},
      address = {Silicon Valley},
      note = {This is a full MANUAL entry},
      edition = {Silver},
      organization = {Chips-R-Us},
    }

### mastersthesis/phdthesis

In terms of field required on BibTeX, it is identical for both @mastersthesis and @phdthesis.

We propose here to identify each type of thesis using the field thesis-type (CFF). So if thesis-type contains a regex pattern `(?i)(phd)` it would be recognized as @phdthesis.

@mastersthesis/phdthesis Model
BibTeX | CFF | Note
--- | --- | ---
@mastersthesis | type: thesis | Use also thesis-type for identifying the thesis type.
@phdthesis | type: thesis | Use also thesis-type for identifying the thesis type.
author* | authors |
title* | title |
school* | institution |
year* | year |
type |  |
address | address property of institution | See Note on book/inbook
month | month | See Note on article
note | notes |

Examples: mastersthesis

BibTeX entry

    @mastersthesis{mastersthesis-full,
        title        = {Mastering Thesis Writing},
        author       = {Edouard Masterly},
        year         = 1988,
        month        = jun,
        address      = {English Department},
        note         = {This is a full MASTERSTHESIS entry},
        school       = {Stanford University},
        type         = {Master's project}
    }

CFF entry

    type: thesis
    title: Mastering Thesis Writing
    authors:
    - family-names: Masterly
      given-names: Edouard
    year: '1988'
    month: '6'
    notes: This is a full MASTERSTHESIS entry
    institution:
      name: Stanford University
      address: English Department
    thesis-type: Master's Thesis

From CFF to BibTeX

    @MastersThesis{masterly:1988,
      title = {Mastering Thesis Writing},
      author = {Edouard Masterly},
      year = {1988},
      month = {jun},
      note = {This is a full MASTERSTHESIS entry},
      school = {Stanford University},
    }

Examples: phdthesis

BibTeX entry

    @phdthesis{phdthesis-full,
        title        = {Fighting Fire with Fire: Festooning {F}rench Phrases},
        author       = {F. Phidias Phony-Baloney},
        year         = 1988,
        month        = jun,
        address      = {Department of French},
        note         = {This is a full PHDTHESIS entry},
        school       = {Fanstord University},
        type         = {{PhD} Dissertation}
    }

CFF entry

    type: thesis
    title: 'Fighting Fire with Fire: Festooning French Phrases'
    authors:
    - family-names: Phony-Baloney
      given-names: F. Phidias
    year: '1988'
    month: '6'
    notes: This is a full PHDTHESIS entry
    institution:
      name: Fanstord University
      address: Department of French
    thesis-type: PhD Thesis

From CFF to BibTeX

    @PhdThesis{phony?baloney:1988,
      title = {Fighting Fire with Fire: Festooning French Phrases},
      author = {F. Phidias Phony-Baloney},
      year = {1988},
      month = {jun},
      note = {This is a full PHDTHESIS entry},
      school = {Fanstord University},
    }

### misc

The crosswalk of @misc does not require any special treatment. This entry does not require any field.

Note als that it is mapped to type: generic as incollection, but in this case booktitle is not even an option, so the proposed definition should cover both @misc and @incollection without problems.

@misc Model
BibTeX | CFF | Note
--- | --- | ---
@misc | type: generic |
author | authors |
title | title |
howpublished | medium |
month | month | See Note on article
year | year | See Note on booklet
note | notes |

Examples

BibTeX entry

    @misc{misc-full,
        title        = {Handing out random pamphlets in airports},
        author       = {Joe-Bob Missilany},
        year         = 1984,
        month        = oct,
        note         = {This is a full MISC entry},
        howpublished = {Handed out at O'Hare}
    }

CFF entry

    type: generic
    title: Handing out random pamphlets in airports
    authors:
    - name: anonymous
    year: '1984'
    month: '10'
    notes: This is a MISC entry
    medium: Handed out at O'Hare

From CFF to BibTeX

    @Misc{anonymous:1984,
      title = {Handing out random pamphlets in airports},
      year = {1984},
      month = {oct},
      note = {This is a MISC entry},
      howpublished = {Handed out at O'Hare},
    }

### proceedings

The proposed model is similar to conference/inproceedings. Note that @proceedings does not prescribe a author field. On this cases, as authors is required on CFF, we would use anonymous9 when converting to CFF and omit it on the conversion back to CFF.

@conference/@inproceedings Model
BibTeX | CFF | Note
--- | --- | ---
@proceedings | type: proceedings |
title* | title |
year* | year |
editor | editors |
volume | volume |
number | issue |
series | conference |
address | location | As a fallback, address property of conference can be used
month | month | See Note on article
organization | institution |
publisher | publisher |
note | notes |

Examples

BibTeX entry

    @proceedings{proceedings-full,
        title        = {Proc. Fifteenth Annual ACM Symposium on the Theory of Computing},
        year         = 1983,
        month        = mar,
        publisher    = {Academic Press},
        address      = {Boston},
        series       = {All ACM Conferences},
        number       = 17,
        note         = {This is a full PROCEEDINGS entry},
        editor       = {Wizard V. Oz and Mihalis Yannakakis},
        organization = {The OX Association for Computing Machinery}
    }

CFF entry

    type: proceedings
    title: Proc. Fifteenth Annual ACM Symposium on the Theory of Computing
    authors:
    - name: anonymous
    year: '1983'
    month: '3'
    publisher:
      name: Academic Press
    location:
      name: Boston
    issue: '17'
    notes: This is a full PROCEEDINGS entry
    editors:
    - family-names: Oz
      given-names: Wizard V.
    - family-names: Yannakakis
      given-names: Mihalis
    conference:
      name: All ACM Conferences
      address: Boston
    institution:
      name: The OX Association for Computing Machinery

From CFF to BibTeX

    @Proceedings{anonymous:1983,
      title = {Proc. Fifteenth Annual ACM Symposium on the Theory of Computing},
      year = {1983},
      month = {mar},
      publisher = {Academic Press},
      address = {Boston},
      editor = {Wizard V. Oz and Mihalis Yannakakis},
      series = {All ACM Conferences},
      number = {17},
      note = {This is a full PROCEEDINGS entry},
      organization = {The OX Association for Computing Machinery},
    }

### techreport

@techreport Model
BibTeX | CFF | Note
--- | --- | ---
@techreport | type: report |
author* | authors |
title* | title |
institution* | institution |
year* | year |
type | - | Ignored
number | issue |
address | address property of institution | See Note on book/inbook
month | month | See Note on article
note | notes |

Examples

BibTeX entry

    @techreport{techreport-full,
        title        = {A Sorting Algorithm},
        author       = {Tom Terrific},
        year         = 1988,
        month        = oct,
        address      = {Computer Science Department, Fanstord, California},
        number       = 7,
        note         = {This is a full TECHREPORT entry},
        institution  = {Fanstord University},
        type         = {Wishful Research Result}
    }

CFF entry

    type: report
    title: A Sorting Algorithm
    authors:
    - family-names: Terrific
      given-names: Tom
    year: '1988'
    month: '10'
    issue: '7'
    notes: This is a full TECHREPORT entry
    institution:
      name: Fanstord University
      address: Computer Science Department, Fanstord, California

From CFF to BibTeX

    @TechReport{terrific:1988,
      title = {A Sorting Algorithm},
      author = {Tom Terrific},
      year = {1988},
      month = {oct},
      address = {Computer Science Department, Fanstord, California},
      number = {7},
      note = {This is a full TECHREPORT entry},
      institution = {Fanstord University},
    }

### unpublished

@unpublished Model
BibTeX | CFF | Note
--- | --- | ---
@unpublished | type: unpublished |
author* | authors |
title* | title |
note* | notes |
month | month | See Note on article
year | year | See Note on booklet

Examples

BibTeX entry

    @unpublished{unpublished-minimal,
        title        = {Lower Bounds for Wishful Research Results},
        author       = {Ulrich Underwood and Ned Net and Paul Pot},
        note         = {Talk at Fanstord University (this is a minimal UNPUBLISHED entry)}
    }

CFF entry

    type: unpublished
    title: Lower Bounds for Wishful Research Results
    authors:
    - family-names: Underwood
      given-names: Ulrich
    - family-names: Net
      given-names: Ned
    - family-names: Pot
      given-names: Paul
    notes: Talk at Fanstord University (this is a minimal UNPUBLISHED entry)

From CFF to BibTeX

    @Unpublished{underwoodnet,
      title = {Lower Bounds for Wishful Research Results},
      author = {Ulrich Underwood and Ned Net and Paul Pot},
      note = {Talk at Fanstord University (this is a minimal UNPUBLISHED entry)},
    }

## References

Druskat, Stephan, Jurriaan H. Spaaks, Neil Chue Hong, Robert Haines, James Baker, Spencer Bliven, Egon Willighagen, David Pérez-Suárez, and Alexander Konovalov. 2021. “Citation File Format.” https://doi.org/10.5281/zenodo.5171937.
Haines, Robert, and The Ruby Citation File Format Developers. 2021. “Ruby CFF Library.” Zenodo. https://doi.org/10.5281/ZENODO.1184077.
Hernangómez, Diego. 2021. “cffr: Generate Citation File Format Metadata for R Packages.” Journal of Open Source Software 6 (67): 3900. https://doi.org/10.21105/joss.03900.
Lamport, Leslie. 1986. LaTeX: A Document Preparation System. Reading, Mass: Addison-Wesley Pub. Co.
Patashnik, Oren. 1988. “BIBTEXTING.” https://osl.ugr.es/CTAN/biblio/bibtex/base/btxdoc.pdf.
Patashnik, Oren, and Karl Berry. 2010. “CTAN: Package Bibtex.” https://ctan.org/pkg/bibtex.
R Core Team. 2021. R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing; R Foundation for Statistical Computing. https://www.R-project.org/.
Rees, Clea F. 2017. “BibLaTeX Cheat Sheet.” https://osl.ugr.es/CTAN/info/biblatex-cheatsheet/biblatex-cheatsheet.pdf.
Xie, Yihui, Christophe Dervieux, and Emily Riederer. 2020. “Bibliographies and Citations.” In R Markdown Cookbook. The R Series. Boca Raton, Florida: Chapman; Hall/CRC. https://bookdown.org/yihui/rmarkdown-cookbook.

1. By default R Pandoc would generate the cite on the Chicago author-date format (Xie, Dervieux, and Riederer 2020)↩︎

2. Other implementations similar to BibTeX, as BibLaTeX, expand the definitions of entries including other types as online, software or dataset. On BibTeX these entries should be reclassified to misc.↩︎

3. As in the case of the entries, other implementations based on BibTeX may recognize additional fields.↩︎

4. See Guide to Citation File Format schema version 1.2.0.↩︎

5. See a complete list of possible values of CFF type on the Guide to Citation File Format schema version 1.2.0.↩︎

6. Note that this software performs only the conversion from CFF to BibTeX, however cffr can perform the conversion in both directions.↩︎

7. To avoid errors on the interpretation, names in bold correspond to BibTeX fields while the same number on underscore would refer to CFF.↩︎

8. See Rees (2017) for a preview of the accepted BibLaTeX fields.↩︎

9. As proposed on How to deal with unknown individual authors?, (Guide to Citation File Format schema version 1.2.0)↩︎