Gallery: Constants
This example is taken from the “Examples” chapter of bib2gls’s user manual.The entries are defined in a .bib file,
constants.bib. Instead of using the standard entry types
(such as @entry) and field
names (such as name) recognised by bib2gls, these
entries are all defined using a custom field @constant and
custom field names (constantname, constantsymbol, definition, alternative,
identifier and value). These can be aliased on a
per-document basis to allow for greater flexibility. For example,
one document might alias the unknown constantname field to
the known name field, but another document might alias the
unknown constantsymbol to the name field instead.
Some semantic commands are provided in the @preamble:
@preamble{"\providecommand{\constanti}{\mathrm{i}}
\providecommand{\constantj}{\mathrm{j}}
\providecommand{\constante}{\mathrm{e}}
\providecommand{\constantpi}{\uppi}
\providecommand{\constantgamma}{\upgamma}
\providecommand{\constantphi}{\upphi}
\providecommand{\constantlambda}{\uplambda}"}
By placing them within the @preamble of the .bib file, the definitions can be accessed by bib2gls if it needs to interpret them.
The actual entry definitions look like:
@constant{pi,
constantname={pi},
constantsymbol={\ensuremath{\constantpi}},
definition={the ratio of the length of the circumference
of a circle to its diameter},
value={3.14159},
identifier={constant}
}
Some of the entries don’t have the value field set. For example:
@constant{one,
constantname={one},
constantsymbol={\ensuremath{1}},
definition={single entity, unity},
identifier={constant}
}
@constant{imaginary,
constantname={imaginary unit},
constantsymbol={\ensuremath{\constanti}},
definition={defined as $\constanti^2 = -1$},
identifier={constant},
alternative={\ensuremath{\constantj}}
}
Some of these entries use commands from the upgreek package, so a document that uses this .bib file must load that package to ensure they are defined.
This example document aliases @constant to @number with
entry-type-aliases={constant=entry} and aliases the unknown
fields with field-aliases. The numeric value is aliased to
the user1 field, so it’s possible to sort the entries
numerically by selecting that field as the sort value.
\GlsXtrLoadResources[
src={constants},% data in constants.bib
% make @constant behave like @number:
entry-type-aliases={constant=number},
field-aliases={
identifier=category,
constantsymbol=name,
constantname=description,
value=user1,
definition=user2,
alternative=user3
},
type=main,
set-widest,
sort-field=user1,
missing-sort-fallback=name,
sort=double,
selection=all
]
(The numeric comparator will treat an empty value as 0).
The post-description category hook, provided by the glossaries-extra package, is used to append an alternative symbol and the approximate value after the description:
\newcommand{\glsxtrpostdescconstant}{%
\glsxtrifhasfield{useriii}{\glscurrententrylabel}%
{ (also denoted \glscurrentfieldvalue
\glsxtrifhasfield{useri}{\glscurrententrylabel}%
{, approximately \glscurrentfieldvalue}%
{}%
)%
}%
{%
\glsxtrifhasfield{useri}{\glscurrententrylabel}%
{ (approximately \glscurrentfieldvalue)}%
{}%
}%
\glsxtrifhasfield{userii}{\glscurrententrylabel}%
{: \glscurrentfieldvalue}%
{}%
}
The complete document code follows:
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage{upgreek}
\usepackage[record,% use bib2gls
nostyles,% don't load default styles
postdot,% add dot after descriptions
% load glossary-tree.sty and patch styles:
stylemods={tree},
style=alttree]{glossaries-extra}
\GlsXtrLoadResources[
src={constants},% data in constants.bib
% make @constant behave like @number
entry-type-aliases={constant=number},
field-aliases={
identifier=category,
constantsymbol=name,
constantname=description,
value=user1,
definition=user2,
alternative=user3
},
type=main,
set-widest,
sort-field=user1,
missing-sort-fallback=name,
sort=double,
selection=all
]
\newcommand{\glsxtrpostdescconstant}{%
\glsxtrifhasfield{useriii}{\glscurrententrylabel}%
{ (also denoted \glscurrentfieldvalue
\glsxtrifhasfield{useri}{\glscurrententrylabel}%
{, approximately \glscurrentfieldvalue}%
{}%
)%
}%
{%
\glsxtrifhasfield{useri}{\glscurrententrylabel}%
{ (approximately \glscurrentfieldvalue)}%
{}%
}%
\glsxtrifhasfield{userii}{\glscurrententrylabel}%
{: \glscurrentfieldvalue}%
{}%
}
\begin{document}
\printunsrtglossary[title={Constants}]
\end{document}
To build the document, you need to run the following commands:
pdflatex bib2gls-constants bib2gls bib2gls-constants pdflatex bib2gls-constants
(See Incorporating makeglossaries or makeglossaries-lite or bib2gls into the document build.) Note that bib2gls is not invoked with the --group switch.
Download: PDF (87.31K), source code (1.21K), constants.bib (2.34K).
