quantityToTex function

String quantityToTex(
  1. String number,
  2. String unit, {
  3. SiOptions options = const SiOptions(),
})

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);
}