Namespace: config

@citation-js/plugin-bibtex.config

Members

(static) constants :Object

Contains various constants used while parsing, mapping and formatting BibTeX- related file formats.

Required types

The list of required fields for each type for BibLaTeX and BibTeX is available under config.constants.required.biblatex and config.constants.required.bibtex respectively. In both cases, the list consists of strings for required fields and arrays for sets of fields where at least one should be present (year OR date for BibLaTeX for example).

config.constants.required.biblatex.book = [
  'title',
  ['author', 'editor'],
  'publisher',
  ['year', 'date']
]

Field types

Field types (used for both BibLaTeX and BibTeX) are available through config.constants.fieldTypes. This returns an object mapping Bib(La)TeX field names to an array containing a field type and a value type. The former is either field, list (" and "-delimited), or separated (comma-delimited). As for the latter:

Value type Description
literal Normal text or numeric content
title Like literal but can be affected by config.parse.sentenceCase
name A personal or organizational name
date An EDTF Level 1 date
verbatim Unaltered text (no expansion of commands, etc.)
uri Same as verbatim but if needed the URL is encoded
other No special behaviour, treated like literal
// Add `daturl` for dat:// URLs
config.constants.fieldTypes.daturl = ['field', 'uri']
// Do not treat `publisher` as a list
config.constants.fieldTypes.publisher = ['field', 'literal']

Unicode

  • config.constants.diacritics maps commands (\") to diacritics
  • config.constants.commands maps commands (\textinterrobangdown) to general unicode characters ()
  • config.constants.ligatures maps non-command character sequences (---, ~, etc.) to their replacements (emdash, no-breaking space, etc.)
  • config.constants.ligaturePattern is a RegExp that recognizes the ligatures mapped above
  • config.constants.mathScripts maps superscript and subscript (in properties ^ and _ respectively)
config.constants.diacritics['"'] = '\u0308'
config.constants.commands.textinterrobangdown = '⸘'
config.constants.ligatures = {
  '---': '\u2014',
  '~': '\u00A0'
}
config.constants.ligaturePattern = /---|~/g // Don't forget the (g)lobal flag
config.constants.mathScripts = {
  '^': { '1': '¹' },
  '_': { '1': '₁' }
}

Formatting

  • config.constants.formattingEnvs maps environment commands to formatting
  • config.constants.formattingCommands maps regular commands to formatting
  • config.constants.mathScriptFormatting maps ^ and _ to resp. super- and subscript
  • config.constants.formatting maps formatting to HTML (though RTF or Markdown could be substituted)
config.constants.formattingEnvs.bf = 'bold'
config.constants.formattingCommands.textbf = 'bold'
config.constants.mathScriptFormatting['^'] = 'superscript'
config.constants.formatting = {
  bold: ['<b>', '</b>'],
  superscript: ['<sup>', '</sup>']
}

Other commands

The object config.constants.argumentCommands maps command names to functions handling them. This does not include commands used above. Braced arguments are parsed automatically based on how many arguments the function takes. It does not support optional arguments (i.e. those in square braces) yet.

config.constants.argumentCommands.href = function (url, displayText) {
  // Note: <a> tags are not supported by CSL so watch out if you use this
  return `<a href="${url}">${displayText}</a>`
}

// You can also use it to replace commands that produce text
config.constants.argumentCommands.LaTeX = () => 'LaTeX'

English languages

The array config.constants.sentenceCaseLanguages affects which languages are eligible for sentence-casing when config.parse.sentenceCase is set to 'english'. All entries should be lowercase.

config.constants.sentenceCaseLanguages = [
  'english',
  'en-us',
  'en-gb'
]

Replacement strings

The object config.constants.defaultStrings determines which strings are defined by default.

config.constants.defaultStrings.larsgw = "Willighagen, Lars G"
Type:
  • Object
Properties:
Name Type Description
required Object
Properties
Name Type Description
biblatex Object.<String, Array.<(String|Array.<String>)>>
bibtex Object.<String, Array.<(String|Array.<String>)>>
fieldTypes Object.<String, Array.<String>>
diacritics Object.<String, String>
commands Object.<String, String>
ligatures Object.<String, String>
ligaturePattern RegExp
mathScripts Object
Properties
Name Type Description
^ Object.<String, String>

Superscript

_ Object.<String, String>

Subscript

formattingEnvs Object.<String, String>
formattingCommands Object.<String, String>
mathScriptFormatting Object.<String, String>
formatting Object.<String, String>
argumentCommands Object.<String, function()>
sentenceCaseLanguages Array.<String>
defaultStrings Object.<String, String>
Source:

(static) format :Object

Type:
  • Object
Properties:
Name Type Attributes Default Description
format.useIdAsLabel Boolean <optional>
false

Use the entry ID as the label instead of generating one.

Source:

(static) parse :Object

Type:
  • Object
Properties:
Name Type Attributes Default Description
strict Boolean <optional>
false

When true, entries are checked for required fields.

sentenceCase String <optional>
'never'

Convert titles to sentence case when parsing.

Source:

(static) types :Object

Entry type mappings between BibLaTeX or BibTeX and CSL-JSON are available through config.types.biblatex and config.types.bibtex. In both cases, the Bib(La)TeX mappings are in the source field and the reverse mappings in the target field.

config.types.biblatex.source.inproceedings = 'paper-conference'
config.types.biblatex.target['paper-conference'] = 'inproceedings'
Type:
  • Object
Properties:
Name Type Description
biblatex Object
Properties
Name Type Description
source Object.<String, String>

BibLaTeX to CSL

target Object.<String, String>

CSL to BibLaTeX

bibtex Object
Properties
Name Type Description
source Object.<String, String>

BibTeX to CSL

target Object.<String, String>

CSL to BibTeX

Source: