quantityToTex function
A number with a unit (\qty, \SI).
Implementation
String quantityToTex(
String number,
String unit, {
SiOptions options = const SiOptions(),
}) {
final o = options._forUnit(unit);
final u = _unitToTex(unit, o, 1);
if (number.trim().isEmpty) return u;
final parsed = o['parse-numbers'] == 'false' ? null : _parseNumber(number, o);
if (parsed == null) return _quantityParts(number, unit, u, o);
final n = _process(parsed, o);
// A separate uncertainty: brackets around the number, or the unit after
// each part.
if (n.uncertainty.isNotEmpty && o['uncertainty-mode'] == 'separate') {
switch (o['separate-uncertainty-units']) {
case 'repeat':
final value = n.copy()..uncertainty = '';
final (m, e) = _formatParts(value, o, quantity: true);
final places = n.decimal?.length ?? 0;
final un = _augment(n.uncertainty, places, o);
return '${_quantityParts(_cat(m, e), unit, u, o)}\\pm '
'${_quantityParts(_cat(un, e), unit, u, o)}';
case 'single':
return _quantityParts(_formatNumber(n, o, quantity: true), unit, u, o);
default:
final (m, e) = _formatParts(n, o, quantity: true);
return _quantityParts(_cat('($m)', e), unit, u, o);
}
}
return _quantityParts(_formatNumber(n, o, quantity: true), unit, u, o);
}