--- title: "BibTeX and CFF" subtitle: A potential crosswalk bibliography: REFERENCES.bib author: Diego Hernangómez ORCID logo description: >- This article presents a crosswalk between BibTeX and Citation File Format [@druskat_citation_2021], as it is performed by the cffr package [@hernangomez2021]. abstract: >- This article presents a crosswalk between BibTeX and Citation File Format [@druskat_citation_2021], as it is performed by the cffr package [@hernangomez2021]. Several crosswalk models specific for each BibTeX entry type [@patashnik1988] 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. link-citations: yes documentclass: article editor_options: markdown: wrap: 120 output: rmarkdown::html_vignette: toc: true vignette: > %\VignetteIndexEntry{BibTeX and CFF} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "" ) options(width = 60) ``` ## Citation Please cite this article as: ```{r cit, echo=FALSE, results='asis'} thisart <- bibentry("article", title = "{BibTeX} and {CFF}, a potential crosswalk", key = "hernangomez2022", author = "Diego Hernangómez", journal = "The {cffr} package", year = 2022, volume = "Vignettes", ) cat(" \n") thisart ``` A BibTeX entry for LaTeX users: ``` bibtex @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](https://en.wikipedia.org/wiki/BibTeX) is a well-known format for storing references created by [Oren Patashnik](https://en.wikipedia.org/wiki/Oren_Patashnik "Oren Patashnik") and [Leslie Lamport](https://en.wikipedia.org/wiki/Leslie_Lamport "Leslie Lamport") back in 1985. BibTeX that may be reused by another software, like [LaTeX](https://en.wikipedia.org/wiki/LaTeX), for adding references to a work. An example structure of a BibTeX entry would be: ``` bibtex @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_2021], we can replicate this structure using the `bibentry()` and `toBibtex()` functions: ```{r bibentry, comment="#>"} 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) ``` The final results of the entry as a text string would be parsed as[^1]: [^1]: By default R Pandoc would generate the cite on the Chicago author-date format [@rmarkdowncookbook2020] ```{r echo=FALSE, results='asis'} entry ``` Additionally, **cffr** [@hernangomez2021] incorporates a function `cff_from_bibtex()` than can be used to read and transform BibTeX strings into different formats: ```{r cffbibread,comment="#>"} string <- "@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}" # To cff library(cffr) cff_format <- cff_from_bibtex(string) cff_format # To citation R format and bibtex citation_format <- cff_to_bibtex(cff_format) class(citation_format) citation_format toBibtex(citation_format) ``` ## BibTeX definitions @patashnik1988 provides a comprehensive explanation of the BibTeX formats. We can distinguish between **Entries** and **Fields**. ### Entries {#entries} Each entry type defines a different type of work. The 14 entry types defined on BibTeX[^2] are: [^2]: Other implementations similar to BibTeX, as [BibLaTeX](https://www.ctan.org/pkg/biblatex), expand the definitions of entries including other types as **online**, **software** or **dataset**. On BibTeX these entries should be reclassified to **misc**. - **\@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, @patashnik1988 provides also a definition for each of the possible standard BibTeX fields[^3]. An entry can include other fields that would be ignored on the raw implementation of BibTeX: [^3]: As in the case of the entries, other implementations based on BibTeX may recognize additional fields. - **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 [@lamport86latex]. - **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 [@lamport86latex]. 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 [@lamport86latex] (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 **x** and optional fields are flagged as **o**. Fields on parenthesis (**(x), (o)**) denotes that there are some degree of flexibility on the requirement of the field, see @patashnik1988 for more information. ```{r entry_fields1, echo=FALSE} bibtex_field_entry <- read.csv( system.file("extdata/bibtex_field_entry.csv", package = "cffr" ), sep = "," ) t1 <- bibtex_field_entry[, c(1:7)] knitr::kable(t1, col.names = gsub("\\.", ",", names(t1)), align = c("l", rep("c", 6)), caption = "BibTeX, required fields by entry" ) ``` ```{r entry_fields2, echo=FALSE} t2 <- bibtex_field_entry[, c(1, 8:13)] knitr::kable(t2, col.names = gsub("\\.", ",", names(t2)), align = c("l", rep("c", 6)), caption = "(cont) BibTeX, required fields by entry" ) ``` 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](https://citation-file-format.github.io/)) [@druskat_citation_2021] are plain text files with human- and machine-readable citation information for software (and datasets). Among the [valid keys of CFF](https://github.com/citation-file-format/citation-file-format/blob/main/schema-guide.md#valid-keys) there are two keys, `preferred-citation` and `references` of special interest for citing and referring to related works[^4]: [^4]: See [Guide to Citation File Format schema version 1.2.0](https://github.com/citation-file-format/citation-file-format/blob/main/schema-guide.md#preferred-citation). - **`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`](https://github.com/citation-file-format/citation-file-format/blob/main/schema-guide.md#definitionsreference) objects, therefore they may contain the following keys: ```{r refkeys, echo=FALSE, message=FALSE, warning=FALSE, results='asis'} library(cffr) # Fill with whites l <- c(cff_schema_definitions_refs(), rep("", 4)) refkeys <- matrix(l, ncol = 5, byrow = TRUE) knitr::kable(refkeys, caption = "Valid keys on CFF `definition-reference` objects" ) ``` 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 work[^5], therefore this is the equivalent to the BibTeX entries (see [Entries](#entries)). [^5]: See a complete list of possible values of CFF type on the [Guide to Citation File Format schema version 1.2.0](https://github.com/citation-file-format/citation-file-format/blob/main/schema-guide.md#definitionsreferencetype). ## Proposed crosswalk The **cffr** package [@hernangomez2021] 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_Ruby_CFF_Library_2021[^6]. [^6]: Note that this software performs only the conversion from CFF to BibTeX, however **cffr** can perform the conversion in both directions. 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]. For a better understanding of this paper, when a field is in **bold** (i.e. **\@book**, **edition**) the field correspond to **BibTex** and when the field is [underlined]{.underline} (i.e. [book]{.underline}, [edition]{.underline}) the field correspond to [CFF]{.underline}. ### Entry/Type crosswalk For converting general **BibTeX** entries to [CFF]{.underline} types, the following crosswalk is proposed: +----------------------------+-----------------------------------------------------------+----------------------------+ | BibTeX Entry | [**Value of CFF key: type**]{.underline} | Notes | +============================+===========================================================+============================+ | **\@article** | [article]{.underline} | | +----------------------------+-----------------------------------------------------------+----------------------------+ | **\@book** | [book]{.underline} | | +----------------------------+-----------------------------------------------------------+----------------------------+ | **\@booklet** | [pamphlet]{.underline} | | +----------------------------+-----------------------------------------------------------+----------------------------+ | **\@conference** | [conference-paper]{.underline} | | +----------------------------+-----------------------------------------------------------+----------------------------+ | **\@inbook** | [book]{.underline} | See [Entry Models] | +----------------------------+-----------------------------------------------------------+----------------------------+ | **\@incollection** | [generic]{.underline} | See [Entry Models] | +----------------------------+-----------------------------------------------------------+----------------------------+ | **\@inproceedings** | [conference-paper]{.underline} | | +----------------------------+-----------------------------------------------------------+----------------------------+ | **\@manual** | [manual]{.underline} | | +----------------------------+-----------------------------------------------------------+----------------------------+ | **\@mastersthesis** | [thesis]{.underline} | See [Entry Models] | +----------------------------+-----------------------------------------------------------+----------------------------+ | **\@misc** | [generic]{.underline} | | +----------------------------+-----------------------------------------------------------+----------------------------+ | **\@phdthesis** | [thesis]{.underline} | See [Entry Models] | +----------------------------+-----------------------------------------------------------+----------------------------+ | **\@proceedings** | [proceedings]{.underline} | | +----------------------------+-----------------------------------------------------------+----------------------------+ | **\@techreport** | [report]{.underline} | | +----------------------------+-----------------------------------------------------------+----------------------------+ | **\@unpublished** | [unpublished]{.underline} | | +----------------------------+-----------------------------------------------------------+----------------------------+ : Entry/Type crosswalk: From **BibTeX** to [CFF]{.underline} Also, given that CFF provides with a [wide range of allowed values](https://github.com/citation-file-format/citation-file-format/blob/main/schema-guide.md#definitionsreferencetype) on type, the following conversion would be performed from [CFF]{.underline} to **BibTeX**: +------------------------------------+---------------------------------+---------------------------------------------+ | [Value of CFF key: | BibTeX Entry | Notes | | type]{.underline} | | | +====================================+=================================+=============================================+ | [book]{.underline} | **\@book** **/ \@inbook** | See [Entry Models] | +------------------------------------+---------------------------------+---------------------------------------------+ | [conference]{.underline} | **\@inproceedings** | | +------------------------------------+---------------------------------+---------------------------------------------+ | [conference-paper]{.underline} | **\@inproceedings** | | +------------------------------------+---------------------------------+---------------------------------------------+ | [magazine-article]{.underline} | **\@article** | | +------------------------------------+---------------------------------+---------------------------------------------+ | [manual]{.underline} | **\@manual** | | +------------------------------------+---------------------------------+---------------------------------------------+ | [newspaper-article]{.underline} | **\@article** | | +------------------------------------+---------------------------------+---------------------------------------------+ | [pamphlet]{.underline} | **\@booklet** | | +------------------------------------+---------------------------------+---------------------------------------------+ | [proceedings]{.underline} | **\@proceedings** | | +------------------------------------+---------------------------------+---------------------------------------------+ | [report]{.underline} | **\@techreport** | | +------------------------------------+---------------------------------+---------------------------------------------+ | [thesis]{.underline} | **\@mastersthesis / | See [Entry Models] | | | \@phdthesis** | | +------------------------------------+---------------------------------+---------------------------------------------+ | [unpublished]{.underline} | **\@unpublished** | | +------------------------------------+---------------------------------+---------------------------------------------+ | [generic]{.underline} | **\@misc / \@incollection** | Under specific conditions, see [Entry | | | | Models] | +------------------------------------+---------------------------------+---------------------------------------------+ | \ | **\@misc** | | +------------------------------------+---------------------------------+---------------------------------------------+ : Entry/Type crosswalk: From [CFF]{.underline} to **BibTeX** ### Fields/Key crosswalk There is a large degree of similarity between the definition and names of some **BibTeX** fields and [CFF]{.underline} keys. On the following cases, the equivalence is almost straightforward: | BibTeX Field | [CFF key]{.underline} | |------------------|-----------------------------------------| | **address** | See [Entry Models] | | ***annote*** | \- | | **author** | [authors]{.underline} | | **booktitle** | [collection-title]{.underline} | | **chapter** | [section]{.underline} | | ***crossref*** | \- | | **edition** | [edition]{.underline} | | **editor** | [editors]{.underline} | | **howpublished** | [medium]{.underline} | | **institution** | See [Entry Models] | | **journal** | [journal]{.underline} | | ***key*** | \- | | **month** | [month]{.underline} | | **note** | [notes]{.underline} | | **number** | [issue]{.underline} | | **organization** | See [Entry Models] | | **pages** | [start]{.underline} & [end]{.underline} | | **publisher** | [publisher]{.underline} | | **school** | See [Entry Models] | | **series** | See [Entry Models] | | **title** | [title]{.underline} | | ***type*** | \- | | **volume** | [volume]{.underline} | | **year** | [year]{.underline} | : BibTeX - CFF Field/Key crosswalk Additionally, there are other additional CFF keys that have a correspondence with BibLaTeX fields. We propose also to include these fields on the crosswalk[^7], although they are not part of the core BibTeX fields definition. [^7]: See @biblatexcheatsheet for a preview of the accepted BibLaTeX fields. | BibLaTeX Field | [CFF key]{.underline} | |----------------|------------------------------| | **abstract** | [abstract]{.underline} | | **date** | [date-published]{.underline} | | **doi** | [doi]{.underline} | | **file** | [filename]{.underline} | | **isbn** | [isbn]{.underline} | | **issn** | [issn]{.underline} | | **issuetitle** | [issue-title]{.underline} | | **pagetotal** | [pages]{.underline} | | **translator** | [translators]{.underline} | | **url** | [url]{.underline} | | **urldate** | [date-accessed]{.underline} | | **version** | [version]{.underline} | : BibLaTeX - CFF Field/Key crosswalk ## 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](https://tug.org/texmf-docs/bibtex/xampl.bib) file provided with the bibtex package [@patashnik]. ### article The crosswalk of **\@article** does not require any special treatment. +------------------------+------------------------------------------+------------------------------------------------+ | BibTeX | [CFF]{.underline} | Note | +========================+==========================================+================================================+ | **\@article** | [type: article]{.underline} | When converting CFF to BibTeX, [type | | | | magazine-article]{.underline} and | | | | [newspaper-article]{.underline} are converted | | | | to **\@article**. | +------------------------+------------------------------------------+------------------------------------------------+ | **author\*** | [authors]{.underline} | | +------------------------+------------------------------------------+------------------------------------------------+ | **title\*** | [title]{.underline} | | +------------------------+------------------------------------------+------------------------------------------------+ | **journal\*** | [journal]{.underline} | | +------------------------+------------------------------------------+------------------------------------------------+ | **year\*** | [year]{.underline} | | +------------------------+------------------------------------------+------------------------------------------------+ | **volume** | [volume]{.underline} | | +------------------------+------------------------------------------+------------------------------------------------+ | **number** | [issue]{.underline} | | +------------------------+------------------------------------------+------------------------------------------------+ | **pages** | [start]{.underline} and | Separated by `--`, i.e, **pages = {3\--5}** | | | [end]{.underline} | would be parsed as: | | | | | | | | - [start: 3]{.underline} | | | | | | | | - [end: 5]{.underline} | +------------------------+------------------------------------------+------------------------------------------------+ | **month** | [month]{.underline} | As a fallback, **month** could be extracted | | | | also from **date** (BibLaTeX field) or | | | | [date-published]{.underline} | +------------------------+------------------------------------------+------------------------------------------------+ | **note** | [notes]{.underline} | | +------------------------+------------------------------------------+------------------------------------------------+ : **\@article** Model **Examples** [*BibTeX entry*]{.underline} ``` bibtex @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*]{.underline} ```{r echo=FALSE} bib <- "@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_from_bibtex(bib) ``` [*From CFF to BibTeX*]{.underline} ```{r echo=FALSE} toBibtex(cff_to_bibtex(cff_from_bibtex(bib))) ``` ### 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]{.underline} with [section]{.underline} and [start]{.underline}-[end]{.underline} fields (CFF). Another specificity is that **series** field is mapped to [collection-title]{.underline} and **address** is mapped as the [address]{.underline} of the [publisher]{.underline} (CFF). +----------------------+---------------------------+------------------------------------------------------------------+ | BibTeX | [CFF]{.underline} | Note | +======================+===========================+==================================================================+ | **\@book** | [type: book]{.underline} | | +----------------------+---------------------------+------------------------------------------------------------------+ | **\@inbook** | [type: book]{.underline} | For identifying an **\@inbook** in CFF, assess if | | | | [section]{.underline} or [start/end]{.underline} information is | | | | available | +----------------------+---------------------------+------------------------------------------------------------------+ | **author\*** | [authors]{.underline} | | +----------------------+---------------------------+------------------------------------------------------------------+ | **editor\*** | [editors]{.underline} | | +----------------------+---------------------------+------------------------------------------------------------------+ | **title\*** | [title]{.underline} | | +----------------------+---------------------------+------------------------------------------------------------------+ | **publisher\*** | [publisher]{.underline} | | +----------------------+---------------------------+------------------------------------------------------------------+ | **year\*** | [year]{.underline} | | +----------------------+---------------------------+------------------------------------------------------------------+ | **chapter\*** | [section]{.underline} | Only required on **\@inbook** | +----------------------+---------------------------+------------------------------------------------------------------+ | **pages\*** | [start]{.underline} and | Only required on **\@inbook** | | | [end]{.underline} | | +----------------------+---------------------------+------------------------------------------------------------------+ | **volume** | [volume]{.underline} | | +----------------------+---------------------------+------------------------------------------------------------------+ | **number** | [issue]{.underline} | | +----------------------+---------------------------+------------------------------------------------------------------+ | **series** | [coll | | | | ection-title]{.underline} | | +----------------------+---------------------------+------------------------------------------------------------------+ | **address** | [address]{.underline} | As a fallback, the field [location]{.underline} can be used | | | property of | | | | [publisher]{.underline} | | +----------------------+---------------------------+------------------------------------------------------------------+ | **edition** | [edition]{.underline} | | +----------------------+---------------------------+------------------------------------------------------------------+ | **month** | [month]{.underline} | See **Note** on [article] | +----------------------+---------------------------+------------------------------------------------------------------+ | **note** | [notes]{.underline} | | +----------------------+---------------------------+------------------------------------------------------------------+ : **\@book/\@inbook** Model **Examples: book** [*BibTeX entry*]{.underline} ``` bibtex @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*]{.underline} ```{r echo=FALSE} bib <- "@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_from_bibtex(bib) ``` [*From CFF to BibTeX*]{.underline} ```{r, echo=FALSE} toBibtex(cff_to_bibtex(cff_from_bibtex(bib))) ``` **Examples: inbook** [*BibTeX entry*]{.underline} ``` bibtex @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*]{.underline} ```{r echo=FALSE,} bib <- "@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_from_bibtex(bib) ``` [*From CFF to BibTeX*]{.underline} ```{r echo=FALSE,} toBibtex(cff_to_bibtex(cff_from_bibtex(bib))) ``` ### booklet In **\@booklet** **address** is mapped to [location]{.underline}. +---------------------+---------------------+--------------------------------------------------------------------------+ | BibTeX | [CFF]{.underline} | Note | +=====================+=====================+==========================================================================+ | **\@booklet** | [type: | | | | pa | | | | mphlet]{.underline} | | +---------------------+---------------------+--------------------------------------------------------------------------+ | **title\*** | [title]{.underline} | | +---------------------+---------------------+--------------------------------------------------------------------------+ | **author\*** | [a | | | | uthors]{.underline} | | +---------------------+---------------------+--------------------------------------------------------------------------+ | **howpublished** | [ | | | | medium]{.underline} | | +---------------------+---------------------+--------------------------------------------------------------------------+ | **address** | [lo | | | | cation]{.underline} | | +---------------------+---------------------+--------------------------------------------------------------------------+ | **month** | [month]{.underline} | See **Note** on [article] | +---------------------+---------------------+--------------------------------------------------------------------------+ | **year** | [year]{.underline} | As a fallback, **year** could be extracted also from **date** (BibLaTeX | | | | field)/ [date-published]{.underline} | +---------------------+---------------------+--------------------------------------------------------------------------+ | **note** | [notes]{.underline} | | +---------------------+---------------------+--------------------------------------------------------------------------+ : **\@booklet** Model **Examples** [*BibTeX entry*]{.underline} ``` bibtex @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*]{.underline} ```{r echo=FALSE, } bib <- "@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_from_bibtex(bib) ``` [*From CFF to BibTeX*]{.underline} ```{r echo=FALSE, } toBibtex(cff_to_bibtex(cff_from_bibtex(bib))) ``` ### conference/inproceedings Note that in this case, **organization** is mapped to [institution]{.underline}, as BibTeX does not prescribe the use of **institution** on these entries. +---------------------------+----------------------------+-------------------------------------------------------------+ | BibTeX | CFF | Note | +===========================+============================+=============================================================+ | **\@conference / | [type: | CFF entries with [type; conference]{.underline} are mapped | | \@inproceedings** | con | back to **\@inproceedings**. | | | ference-paper]{.underline} | | +---------------------------+----------------------------+-------------------------------------------------------------+ | **author\*** | [authors]{.underline} | | +---------------------------+----------------------------+-------------------------------------------------------------+ | **title\*** | [title]{.underline} | | +---------------------------+----------------------------+-------------------------------------------------------------+ | **booktitle\*** | [col | | | | lection-title]{.underline} | | +---------------------------+----------------------------+-------------------------------------------------------------+ | **year\*** | [year]{.underline} | | +---------------------------+----------------------------+-------------------------------------------------------------+ | **editor** | [editors]{.underline} | | +---------------------------+----------------------------+-------------------------------------------------------------+ | **volume** | [volume]{.underline} | | +---------------------------+----------------------------+-------------------------------------------------------------+ | **number** | [issue]{.underline} | | +---------------------------+----------------------------+-------------------------------------------------------------+ | **series** | [conference]{.underline} | | +---------------------------+----------------------------+-------------------------------------------------------------+ | **pages** | [start]{.underline} and | See **Note** on [article] | | | [end]{.underline} | | +---------------------------+----------------------------+-------------------------------------------------------------+ | **address** | [location]{.underline} | As a fallback, [address]{.underline} property of | | | | [conference]{.underline} can be used | +---------------------------+----------------------------+-------------------------------------------------------------+ | **month** | [month]{.underline} | See **Note** on [article] | +---------------------------+----------------------------+-------------------------------------------------------------+ | **organization** | [institution]{.underline} | | +---------------------------+----------------------------+-------------------------------------------------------------+ | **publisher** | [publisher]{.underline} | | +---------------------------+----------------------------+-------------------------------------------------------------+ | **note** | [notes]{.underline} | | +---------------------------+----------------------------+-------------------------------------------------------------+ : **\@conference/\@inproceedings** Model **Examples** [*BibTeX entry*]{.underline} ``` bibtex @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*]{.underline} ```{r echo=FALSE,} bib <- "@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_from_bibtex(bib) ``` [*From CFF to BibTeX*]{.underline} ```{r echo=FALSE,} toBibtex(cff_to_bibtex(cff_from_bibtex(bib))) ``` ### incollection As **booktitle** is a required field, we propose to map that field to [collection-title]{.underline} and the [type]{.underline} to [generic]{.underline}. Therefore, an **\@incollection** is a [type: generic]{.underline} with a [collection-title]{.underline} key. +-------------------------+-------------------------------------------------+-----------------------------------------+ | **BibTeX** | [CFF]{.underline} | Note | +=========================+=================================================+=========================================+ | **\@incollection** | [type: generic]{.underline} | Including a | | | | [collection-title]{.underline} value | +-------------------------+-------------------------------------------------+-----------------------------------------+ | **author\*** | [authors]{.underline} | | +-------------------------+-------------------------------------------------+-----------------------------------------+ | **title\*** | [title]{.underline} | | +-------------------------+-------------------------------------------------+-----------------------------------------+ | **booktitle\*** | [collection-title]{.underline} | | +-------------------------+-------------------------------------------------+-----------------------------------------+ | **publisher\*** | [publisher]{.underline} | | +-------------------------+-------------------------------------------------+-----------------------------------------+ | **year\*** | [year]{.underline} | | +-------------------------+-------------------------------------------------+-----------------------------------------+ | **editor** | [editors]{.underline} | | +-------------------------+-------------------------------------------------+-----------------------------------------+ | **volume** | [volume]{.underline} | | +-------------------------+-------------------------------------------------+-----------------------------------------+ | **number** | [issue]{.underline} | | +-------------------------+-------------------------------------------------+-----------------------------------------+ | **series** | [series]{.underline} | | +-------------------------+-------------------------------------------------+-----------------------------------------+ | **type** | \- | Ignored | +-------------------------+-------------------------------------------------+-----------------------------------------+ | **chapter** | [section]{.underline} | | +-------------------------+-------------------------------------------------+-----------------------------------------+ | **pages** | [start]{.underline} and [end]{.underline} | See **Note** on [article] | +-------------------------+-------------------------------------------------+-----------------------------------------+ | **address** | [address]{.underline} property of | See **Note** on [book/inbook] | | | [publisher]{.underline} | | +-------------------------+-------------------------------------------------+-----------------------------------------+ | **edition** | [edition]{.underline} | | +-------------------------+-------------------------------------------------+-----------------------------------------+ | **month** | [month]{.underline} | See **Note** on [article] | +-------------------------+-------------------------------------------------+-----------------------------------------+ | **note** | [notes]{.underline} | | +-------------------------+-------------------------------------------------+-----------------------------------------+ : **\@incollection** Model **Examples** [*BibTeX entry*]{.underline} ``` bibtex @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*]{.underline} ```{r echo=FALSE,} bib <- "@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_from_bibtex(bib) ``` [*From CFF to BibTeX*]{.underline} ```{r echo=FALSE,} toBibtex(cff_to_bibtex(cff_from_bibtex(bib))) ``` ### manual As in the case of [conference/inproceedings], **organization** is mapped to [institution]{.underline}. +----------------------------+--------------------------------------------+-------------------------------------------+ | **BibTeX** | [CFF]{.underline} | Note | +============================+============================================+===========================================+ | **\@manual** | [type: manual]{.underline} | | +----------------------------+--------------------------------------------+-------------------------------------------+ | **title\*** | [title]{.underline} | | +----------------------------+--------------------------------------------+-------------------------------------------+ | **author** | [authors]{.underline} | | +----------------------------+--------------------------------------------+-------------------------------------------+ | **organization** | [institution]{.underline} | | +----------------------------+--------------------------------------------+-------------------------------------------+ | **address** | [location]{.underline} | | +----------------------------+--------------------------------------------+-------------------------------------------+ | **edition** | [edition]{.underline} | | +----------------------------+--------------------------------------------+-------------------------------------------+ | **month** | [month]{.underline} | See **Note** on [article] | +----------------------------+--------------------------------------------+-------------------------------------------+ | **year** | [year]{.underline} | See **Note** on [booklet] | +----------------------------+--------------------------------------------+-------------------------------------------+ | **note** | [notes]{.underline} | | +----------------------------+--------------------------------------------+-------------------------------------------+ : **\@manual** Model **Examples** [*BibTeX entry*]{.underline} 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. ``` bibtex @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*]{.underline} ```{r echo=FALSE,} bib <- "@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_from_bibtex(bib) ``` [*From CFF to BibTeX*]{.underline} ```{r echo=FALSE,} toBibtex(cff_to_bibtex(cff_from_bibtex(bib))) ``` ### 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]{.underline} (CFF). So if [thesis-type]{.underline} contains a [regex pattern](https://regex101.com/r/mBWfbs/1) `(?i)(phd)` it would be recognized as **\@phdthesis**. +------------------------+------------------------------------------+-------------------------------------------------+ | BibTeX | [CFF]{.underline} | Note | +========================+==========================================+=================================================+ | **\@mastersthesis** | [type: thesis]{.underline} | Use also [thesis-type]{.underline} for | | | | identifying the thesis type. | +------------------------+------------------------------------------+-------------------------------------------------+ | **\@phdthesis** | [type: thesis]{.underline} | Use also [thesis-type]{.underline} for | | | | identifying the thesis type. | +------------------------+------------------------------------------+-------------------------------------------------+ | **author\*** | [authors]{.underline} | | +------------------------+------------------------------------------+-------------------------------------------------+ | **title\*** | [title]{.underline} | | +------------------------+------------------------------------------+-------------------------------------------------+ | **school\*** | [institution]{.underline} | | +------------------------+------------------------------------------+-------------------------------------------------+ | **year\*** | [year]{.underline} | | +------------------------+------------------------------------------+-------------------------------------------------+ | **type** | | | +------------------------+------------------------------------------+-------------------------------------------------+ | **address** | [address]{.underline} property of | See **Note** on [book/inbook] | | | [institution]{.underline} | | +------------------------+------------------------------------------+-------------------------------------------------+ | **month** | [month]{.underline} | See **Note** on [article] | +------------------------+------------------------------------------+-------------------------------------------------+ | **note** | [notes]{.underline} | | +------------------------+------------------------------------------+-------------------------------------------------+ : **\@mastersthesis/phdthesis** Model **Examples: mastersthesis** [*BibTeX entry*]{.underline} ``` bibtex @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*]{.underline} ```{r echo=FALSE} bib <- "@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_from_bibtex(bib) ``` [*From CFF to BibTeX*]{.underline} ```{r, echo=FALSE} toBibtex(cff_to_bibtex(cff_from_bibtex(bib))) ``` **Examples: phdthesis** [*BibTeX entry*]{.underline} ``` bibtex @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*]{.underline} ```{r echo=FALSE,} bib <- "@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_from_bibtex(bib) ``` [*From CFF to BibTeX*]{.underline} ```{r echo=FALSE,} toBibtex(cff_to_bibtex(cff_from_bibtex(bib))) ``` ### misc The crosswalk of **\@misc** does not require any special treatment. This entry does not require any field. Note also that it is mapped to [type: generic]{.underline} as [incollection], but in this case **booktitle** is not even an option, so the proposed definition should cover both **\@misc** and **\@incollection** without problems. +----------------------------+---------------------------------------------+------------------------------------------+ | **BibTeX** | [CFF]{.underline} | Note | +============================+=============================================+==========================================+ | **\@misc** | [type: generic]{.underline} | | +----------------------------+---------------------------------------------+------------------------------------------+ | **author** | [authors]{.underline} | | +----------------------------+---------------------------------------------+------------------------------------------+ | **title** | [title]{.underline} | | +----------------------------+---------------------------------------------+------------------------------------------+ | **howpublished** | [medium]{.underline} | | +----------------------------+---------------------------------------------+------------------------------------------+ | **month** | [month]{.underline} | See **Note** on [article] | +----------------------------+---------------------------------------------+------------------------------------------+ | **year** | [year]{.underline} | See **Note** on [booklet] | +----------------------------+---------------------------------------------+------------------------------------------+ | **note** | [notes]{.underline} | | +----------------------------+---------------------------------------------+------------------------------------------+ : **\@misc** Model **Examples** [*BibTeX entry*]{.underline} ``` bibtex @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*]{.underline} ```{r echo=FALSE,} bib <- "@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_from_bibtex(bib) ``` [*From CFF to BibTeX*]{.underline} ```{r echo=FALSE,} toBibtex(cff_to_bibtex(cff_from_bibtex(bib))) ``` ### proceedings The proposed model is similar to [conference/inproceedings]. Note that **\@proceedings** does not prescribe a **author** field. On this cases, as [authors]{.underline} is required on CFF, we would use *anonymous*[^8] when converting to CFF and omit it on the conversion back to CFF. [^8]: As proposed on [*How to deal with unknown individual authors?*](https://github.com/citation-file-format/citation-file-format/blob/main/schema-guide.md#how-to-deal-with-unknown-individual-authors), **(Guide to Citation File Format schema version 1.2.0)** +-----------------------+-----------------------+--------------------------------------------------------------------+ | BibTeX | [CFF]{.underline} | Note | +=======================+=======================+====================================================================+ | **\@proceedings** | [type: | | | | pro | | | | ceedings]{.underline} | | +-----------------------+-----------------------+--------------------------------------------------------------------+ | **title\*** | [title]{.underline} | | +-----------------------+-----------------------+--------------------------------------------------------------------+ | **year\*** | [year]{.underline} | | +-----------------------+-----------------------+--------------------------------------------------------------------+ | **editor** | [editors]{.underline} | | +-----------------------+-----------------------+--------------------------------------------------------------------+ | **volume** | [volume]{.underline} | | +-----------------------+-----------------------+--------------------------------------------------------------------+ | **number** | [issue]{.underline} | | +-----------------------+-----------------------+--------------------------------------------------------------------+ | **series** | [co | | | | nference]{.underline} | | +-----------------------+-----------------------+--------------------------------------------------------------------+ | **address** | [ | As a fallback, [address]{.underline} property of | | | location]{.underline} | [conference]{.underline} can be used | +-----------------------+-----------------------+--------------------------------------------------------------------+ | **month** | [month]{.underline} | See **Note** on [article] | +-----------------------+-----------------------+--------------------------------------------------------------------+ | **organization** | [ins | | | | titution]{.underline} | | +-----------------------+-----------------------+--------------------------------------------------------------------+ | **publisher** | [p | | | | ublisher]{.underline} | | +-----------------------+-----------------------+--------------------------------------------------------------------+ | **note** | [notes]{.underline} | | +-----------------------+-----------------------+--------------------------------------------------------------------+ : **\@conference/\@inproceedings** Model **Examples** [*BibTeX entry*]{.underline} ``` bibtex @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*]{.underline} ```{r echo=FALSE,} bib <- "@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_from_bibtex(bib) ``` [*From CFF to BibTeX*]{.underline} ```{r echo=FALSE,} toBibtex(cff_to_bibtex(cff_from_bibtex(bib))) ``` ### techreport +-------------------------+-------------------------------------------------------------+-----------------------------+ | **BibTeX** | [CFF]{.underline} | Note | +=========================+=============================================================+=============================+ | **\@techreport** | [type: report]{.underline} | | +-------------------------+-------------------------------------------------------------+-----------------------------+ | **author\*** | [authors]{.underline} | | +-------------------------+-------------------------------------------------------------+-----------------------------+ | **title\*** | [title]{.underline} | | +-------------------------+-------------------------------------------------------------+-----------------------------+ | **institution\*** | [institution]{.underline} | | +-------------------------+-------------------------------------------------------------+-----------------------------+ | **year\*** | [year]{.underline} | | +-------------------------+-------------------------------------------------------------+-----------------------------+ | **type** | \- | Ignored | +-------------------------+-------------------------------------------------------------+-----------------------------+ | **number** | [issue]{.underline} | | +-------------------------+-------------------------------------------------------------+-----------------------------+ | **address** | [address]{.underline} property of [institution]{.underline} | See **Note** on | | | | [book/inbook] | +-------------------------+-------------------------------------------------------------+-----------------------------+ | **month** | [month]{.underline} | See **Note** on [article] | +-------------------------+-------------------------------------------------------------+-----------------------------+ | **note** | [notes]{.underline} | | +-------------------------+-------------------------------------------------------------+-----------------------------+ : **\@techreport** Model **Examples** [*BibTeX entry*]{.underline} ``` bibtex @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*]{.underline} ```{r echo=FALSE,} bib <- "@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_from_bibtex(bib) ``` [*From CFF to BibTeX*]{.underline} ```{r echo=FALSE,} toBibtex(cff_to_bibtex(cff_from_bibtex(bib))) ``` ### unpublished +----------------------------+------------------------------------------------+---------------------------------------+ | **BibTeX** | [CFF]{.underline} | Note | +============================+================================================+=======================================+ | **\@unpublished** | [type: unpublished]{.underline} | | +----------------------------+------------------------------------------------+---------------------------------------+ | **author\*** | [authors]{.underline} | | +----------------------------+------------------------------------------------+---------------------------------------+ | **title\*** | [title]{.underline} | | +----------------------------+------------------------------------------------+---------------------------------------+ | **note\*** | [notes]{.underline} | | +----------------------------+------------------------------------------------+---------------------------------------+ | **month** | [month]{.underline} | See **Note** on [article] | +----------------------------+------------------------------------------------+---------------------------------------+ | **year** | [year]{.underline} | See **Note** on [booklet] | +----------------------------+------------------------------------------------+---------------------------------------+ : **\@unpublished** Model **Examples** [*BibTeX entry*]{.underline} ``` bibtex @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*]{.underline} ```{r echo=FALSE,} bib <- "@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_from_bibtex(bib) ``` [*From CFF to BibTeX*]{.underline} ```{r echo=FALSE,} toBibtex(cff_to_bibtex(cff_from_bibtex(bib))) ``` ## References