GensymbConfiguration.ts 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /*************************************************************
  2. *
  3. * Copyright (c) 2021-2022 The MathJax Consortium
  4. *
  5. * Licensed under the Apache License, Version 2.0 (the "License");
  6. * you may not use this file except in compliance with the License.
  7. * You may obtain a copy of the License at
  8. *
  9. * http://www.apache.org/licenses/LICENSE-2.0
  10. *
  11. * Unless required by applicable law or agreed to in writing, software
  12. * distributed under the License is distributed on an "AS IS" BASIS,
  13. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. * See the License for the specific language governing permissions and
  15. * limitations under the License.
  16. */
  17. /**
  18. * @fileoverview Configuration file for the gensymb package.
  19. *
  20. * @author v.sorge@mathjax.org (Volker Sorge)
  21. */
  22. import {Configuration} from '../Configuration.js';
  23. import {Symbol} from '../Symbol.js';
  24. import {TexConstant} from '../TexConstants.js';
  25. import {CharacterMap} from '../SymbolMap.js';
  26. import TexParser from '../TexParser.js';
  27. /**
  28. * Handle characters that are known units.
  29. * @param {TexParser} parser The current tex parser.
  30. * @param {Symbol} mchar The parsed symbol.
  31. */
  32. function mathcharUnit(parser: TexParser, mchar: Symbol) {
  33. const def = mchar.attributes || {};
  34. def.mathvariant = TexConstant.Variant.NORMAL;
  35. def.class = 'MathML-Unit';
  36. const node = parser.create('token', 'mi', def, mchar.char);
  37. parser.Push(node);
  38. }
  39. /**
  40. * gensymb units.
  41. */
  42. new CharacterMap('gensymb-symbols', mathcharUnit, {
  43. ohm: '\u2126',
  44. degree: '\u00B0',
  45. celsius: '\u2103',
  46. perthousand: '\u2030',
  47. micro: '\u00B5'
  48. });
  49. export const GensymbConfiguration = Configuration.create(
  50. 'gensymb', {
  51. handler: {macro: ['gensymb-symbols']},
  52. }
  53. );