puToTex function
Converts the argument of \pu (a physical quantity) to TeX:
123 kJ/mol → 123\,\mathrm{kJ}/\mathrm{mol}, 1.2e3 m/s →
1.2\cdot 10^{3}\,\mathrm{m}/\mathrm{s}.
Implementation
String puToTex(String input) {
final m = RegExp(
r'^\s*([-+−]?\d+(?:[.,]\d+)?(?:\(\d+\))?)(?:\s*(?:[eE]|\*\s*10\^|×\s*10\^)\s*([-+−]?\d+))?',
).firstMatch(input);
if (m == null) return _units(input.trim());
final b = StringBuffer(m[1]!.replaceAll(',', '{,}'));
if (m[2] != null) b.write('\\cdot 10^{${m[2]}}');
final rest = input.substring(m.end).trim();
if (rest.isNotEmpty) b.write('\\,${_units(rest)}');
return b.toString();
}