katex 0.10.0-rc → 0.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/CHANGELOG.md +214 -126
  2. package/README.md +18 -17
  3. package/cli.js +5 -1
  4. package/contrib/auto-render/README.md +1 -1
  5. package/contrib/auto-render/auto-render.js +4 -1
  6. package/contrib/auto-render/test/auto-render-spec.js +17 -0
  7. package/contrib/copy-tex/README.md +8 -2
  8. package/contrib/copy-tex/copy-tex.js +0 -1
  9. package/contrib/copy-tex/copy-tex.webpack.js +6 -0
  10. package/contrib/mathtex-script-type/README.md +10 -6
  11. package/contrib/mhchem/README.md +19 -0
  12. package/contrib/mhchem/mhchem.js +1695 -0
  13. package/contrib/mhchem/mhchem.patch +235 -0
  14. package/dist/README.md +18 -17
  15. package/dist/contrib/auto-render.js +179 -161
  16. package/dist/contrib/auto-render.min.js +1 -1
  17. package/dist/contrib/auto-render.mjs +215 -0
  18. package/dist/contrib/copy-tex.js +84 -62
  19. package/dist/contrib/copy-tex.min.css +1 -1
  20. package/dist/contrib/copy-tex.min.js +1 -1
  21. package/dist/contrib/copy-tex.mjs +85 -0
  22. package/dist/contrib/mathtex-script-type.js +17 -14
  23. package/dist/contrib/mathtex-script-type.mjs +24 -0
  24. package/dist/contrib/mhchem.js +3241 -0
  25. package/dist/contrib/mhchem.min.js +1 -0
  26. package/dist/contrib/mhchem.mjs +3109 -0
  27. package/dist/fonts/KaTeX_AMS-Regular.ttf +0 -0
  28. package/dist/fonts/KaTeX_AMS-Regular.woff +0 -0
  29. package/dist/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  30. package/dist/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  31. package/dist/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  32. package/dist/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  33. package/dist/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  34. package/dist/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  35. package/dist/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  36. package/dist/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  37. package/dist/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  38. package/dist/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  39. package/dist/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  40. package/dist/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  41. package/dist/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  42. package/dist/fonts/KaTeX_Main-Bold.ttf +0 -0
  43. package/dist/fonts/KaTeX_Main-Bold.woff +0 -0
  44. package/dist/fonts/KaTeX_Main-Bold.woff2 +0 -0
  45. package/dist/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  46. package/dist/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  47. package/dist/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  48. package/dist/fonts/KaTeX_Main-Italic.ttf +0 -0
  49. package/dist/fonts/KaTeX_Main-Italic.woff +0 -0
  50. package/dist/fonts/KaTeX_Main-Italic.woff2 +0 -0
  51. package/dist/fonts/KaTeX_Main-Regular.ttf +0 -0
  52. package/dist/fonts/KaTeX_Main-Regular.woff +0 -0
  53. package/dist/fonts/KaTeX_Main-Regular.woff2 +0 -0
  54. package/dist/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  55. package/dist/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  56. package/dist/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  57. package/dist/fonts/KaTeX_Math-Italic.ttf +0 -0
  58. package/dist/fonts/KaTeX_Math-Italic.woff +0 -0
  59. package/dist/fonts/KaTeX_Math-Italic.woff2 +0 -0
  60. package/dist/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  61. package/dist/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  62. package/dist/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  63. package/dist/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  64. package/dist/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  65. package/dist/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  66. package/dist/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  67. package/dist/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  68. package/dist/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  69. package/dist/fonts/KaTeX_Script-Regular.ttf +0 -0
  70. package/dist/fonts/KaTeX_Script-Regular.woff +0 -0
  71. package/dist/fonts/KaTeX_Script-Regular.woff2 +0 -0
  72. package/dist/fonts/KaTeX_Size1-Regular.ttf +0 -0
  73. package/dist/fonts/KaTeX_Size1-Regular.woff +0 -0
  74. package/dist/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  75. package/dist/fonts/KaTeX_Size2-Regular.ttf +0 -0
  76. package/dist/fonts/KaTeX_Size2-Regular.woff +0 -0
  77. package/dist/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  78. package/dist/fonts/KaTeX_Size3-Regular.ttf +0 -0
  79. package/dist/fonts/KaTeX_Size3-Regular.woff +0 -0
  80. package/dist/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  81. package/dist/fonts/KaTeX_Size4-Regular.ttf +0 -0
  82. package/dist/fonts/KaTeX_Size4-Regular.woff +0 -0
  83. package/dist/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  84. package/dist/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  85. package/dist/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  86. package/dist/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  87. package/dist/katex.css +24 -9
  88. package/dist/katex.js +13295 -12413
  89. package/dist/katex.min.css +1 -1
  90. package/dist/katex.min.js +1 -1
  91. package/dist/katex.mjs +13388 -11826
  92. package/katex.js +1 -2
  93. package/package.json +60 -48
  94. package/src/Lexer.js +25 -25
  95. package/src/MacroExpander.js +0 -1
  96. package/src/Options.js +11 -75
  97. package/src/Parser.js +231 -313
  98. package/src/Settings.js +6 -0
  99. package/src/buildCommon.js +140 -103
  100. package/src/buildHTML.js +125 -121
  101. package/src/buildMathML.js +14 -4
  102. package/src/buildTree.js +16 -10
  103. package/src/delimiter.js +4 -3
  104. package/src/domTree.js +91 -44
  105. package/src/environments/array.js +120 -7
  106. package/src/fontMetrics.js +3 -2
  107. package/src/functions/arrow.js +21 -7
  108. package/src/functions/color.js +2 -37
  109. package/src/functions/delimsizing.js +18 -11
  110. package/src/functions/enclose.js +19 -4
  111. package/src/functions/environment.js +35 -4
  112. package/src/functions/font.js +1 -2
  113. package/src/functions/genfrac.js +35 -20
  114. package/src/functions/href.js +5 -3
  115. package/src/functions/includegraphics.js +146 -0
  116. package/src/functions/mclass.js +1 -0
  117. package/src/functions/op.js +21 -32
  118. package/src/functions/operatorname.js +1 -2
  119. package/src/functions/ordgroup.js +4 -0
  120. package/src/functions/phantom.js +7 -3
  121. package/src/functions/rule.js +20 -9
  122. package/src/functions/sizing.js +2 -4
  123. package/src/functions/smash.js +5 -2
  124. package/src/functions/sqrt.js +1 -4
  125. package/src/functions/styling.js +0 -1
  126. package/src/functions/supsub.js +6 -2
  127. package/src/functions/symbolsOp.js +4 -0
  128. package/src/functions/symbolsSpacing.js +29 -6
  129. package/src/functions/tag.js +20 -4
  130. package/src/functions/text.js +6 -4
  131. package/src/functions/verb.js +16 -4
  132. package/src/functions.js +2 -0
  133. package/src/katex.less +35 -12
  134. package/src/macros.js +161 -36
  135. package/src/mathMLTree.js +17 -19
  136. package/src/parseNode.js +27 -1
  137. package/src/stretchy.js +3 -1
  138. package/src/svgGeometry.js +1 -1
  139. package/src/symbols.js +39 -17
  140. package/src/tree.js +0 -4
  141. package/src/types.js +4 -3
  142. package/src/unicodeMake.js +1 -1
  143. package/src/utils.js +1 -62
  144. package/src/wide-character.js +2 -2
package/katex.js CHANGED
@@ -22,7 +22,6 @@ import {
22
22
  PathNode,
23
23
  LineNode,
24
24
  } from "./src/domTree";
25
- import utils from "./src/utils";
26
25
 
27
26
  import type {SettingsOptions} from "./src/Settings";
28
27
  import type {AnyParseNode} from "./src/parseNode";
@@ -42,7 +41,7 @@ let render = function(
42
41
  baseNode: Node,
43
42
  options: SettingsOptions,
44
43
  ) {
45
- utils.clearNode(baseNode);
44
+ baseNode.textContent = "";
46
45
  const node = renderToDomTree(expression, options).toNode();
47
46
  baseNode.appendChild(node);
48
47
  };
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "katex",
3
- "version": "0.10.0-rc",
3
+ "version": "0.10.2",
4
4
  "description": "Fast math typesetting for the web.",
5
- "main": "dist/katex",
6
- "module": "dist/katex.mjs",
5
+ "main": "dist/katex.js",
6
+ "homepage": "https://katex.org",
7
7
  "repository": {
8
8
  "type": "git",
9
- "url": "git://github.com/Khan/KaTeX.git"
9
+ "url": "git://github.com/KaTeX/KaTeX.git"
10
10
  },
11
11
  "files": [
12
12
  "katex.js",
@@ -17,54 +17,60 @@
17
17
  ],
18
18
  "license": "MIT",
19
19
  "devDependencies": {
20
- "babel-core": "^6.26.3",
21
- "babel-eslint": "^8.1.2",
22
- "babel-jest": "^23.0.1",
23
- "babel-loader": "^7.1.4",
24
- "babel-plugin-transform-class-properties": "^6.23.0",
25
- "babel-plugin-transform-runtime": "^6.15.0",
20
+ "@babel/core": "^7.3.3",
21
+ "@babel/plugin-proposal-class-properties": "^7.3.3",
22
+ "@babel/plugin-transform-runtime": "^7.2.0",
23
+ "@babel/preset-env": "^7.3.1",
24
+ "@babel/preset-flow": "^7.0.0",
25
+ "@babel/register": "^7.0.0",
26
+ "@babel/runtime": "^7.3.1",
27
+ "babel-eslint": "^10.0.1",
28
+ "babel-jest": "^24.1.0",
29
+ "babel-loader": "^8.0.5",
30
+ "babel-plugin-istanbul": "^5.1.1",
26
31
  "babel-plugin-version-inline": "^1.0.0",
27
- "babel-preset-es2015": "^6.18.0",
28
- "babel-preset-flow": "^6.23.0",
29
- "babel-register": "^6.26.0",
30
32
  "benchmark": "^2.1.4",
31
- "codecov": "^3.0.4",
32
- "css-loader": "^1.0.0",
33
- "cssnano": "^4.0.1",
34
- "eslint": "^5.0.0",
35
- "eslint-plugin-flowtype": "^2.40.1",
36
- "eslint-plugin-react": "^7.10.0",
37
- "eslint-plugin-transform-runtime-aliasing": "^1.0.0",
38
- "file-loader": "^1.1.11",
39
- "flow-bin": "^0.79.0",
40
- "fs-extra": "^7.0.0",
41
- "greenkeeper-lockfile": "^1.15.1",
42
- "husky": "^1.0.0-rc.8",
43
- "jest": "^23.0.1",
44
- "jest-serializer-html": "^5.0.0",
45
- "js-yaml": "^3.10.0",
33
+ "browserslist": "^4.4.1",
34
+ "caniuse-lite": "^1.0.30000938",
35
+ "codecov": "^3.2.0",
36
+ "css-loader": "^2.1.0",
37
+ "cssnano": "^4.1.10",
38
+ "eslint": "^5.14.1",
39
+ "eslint-plugin-flowtype": "^3.4.2",
40
+ "eslint-plugin-react": "^7.12.4",
41
+ "eslint-plugin-transform-runtime-aliasing": "^2.0.0",
42
+ "file-loader": "^3.0.1",
43
+ "flow-bin": "^0.93.0",
44
+ "fs-extra": "^7.0.1",
45
+ "husky": "^1.3.1",
46
+ "istanbul-api": "^2.1.1",
47
+ "istanbul-lib-coverage": "^2.0.3",
48
+ "jest": "^24.1.0",
49
+ "jest-serializer-html": "^6.0.0",
50
+ "js-yaml": "^3.12.1",
46
51
  "json-stable-stringify": "^1.0.1",
47
52
  "jspngopt": "^0.2.0",
48
- "less": "^3.0.4",
53
+ "less": "^3.9.0",
49
54
  "less-loader": "^4.1.0",
50
- "mini-css-extract-plugin": "^0.4.0",
55
+ "mini-css-extract-plugin": "^0.5.0",
51
56
  "mkdirp": "^0.5.1",
52
- "pako": "1.0.6",
57
+ "pako": "^1.0.8",
53
58
  "postcss-loader": "^3.0.0",
54
- "query-string": "^5.1.1",
55
- "rimraf": "^2.6.2",
56
- "rollup": "^0.63.4",
57
- "rollup-plugin-babel": "^3.0.7",
59
+ "query-string": "^6.2.0",
60
+ "rimraf": "^2.6.3",
61
+ "rollup": "^1.2.2",
62
+ "rollup-plugin-alias": "^1.5.1",
63
+ "rollup-plugin-babel": "^4.3.2",
58
64
  "selenium-webdriver": "^3.6.0",
59
65
  "sri-toolbox": "^0.2.0",
60
- "style-loader": "^0.22.0",
61
- "stylelint": "^9.2.1",
62
- "stylelint-config-standard": "^18.0.0",
63
- "uglifyjs-webpack-plugin": "^1.2.5",
64
- "webpack": "^4.9.1",
65
- "webpack-bundle-analyzer": "^2.13.0",
66
- "webpack-cli": "^3.0.1",
67
- "webpack-dev-server": "^3.1.4"
66
+ "style-loader": "^0.23.1",
67
+ "stylelint": "^9.10.1",
68
+ "stylelint-config-standard": "^18.2.0",
69
+ "terser-webpack-plugin": "^1.2.2",
70
+ "webpack": "^4.29.5",
71
+ "webpack-bundle-analyzer": "^3.0.4",
72
+ "webpack-cli": "^3.2.3",
73
+ "webpack-dev-server": "^3.2.0"
68
74
  },
69
75
  "bin": "cli.js",
70
76
  "scripts": {
@@ -82,16 +88,16 @@
82
88
  "test:perf": "yarn prestart && NODE_ENV=test node test/perf-test.js",
83
89
  "clean": "rm -rf dist/ node_modules/",
84
90
  "clean-install": "yarn clean && yarn",
85
- "prestart": "node check-node-version.js && yarn check && node src/unicodeMake.js",
91
+ "prestart": "node src/unicodeMake.js",
86
92
  "start": "webpack-dev-server --hot --config webpack.dev.js",
87
93
  "analyze": "webpack --config webpack.analyze.js",
88
94
  "build": "yarn prestart && rimraf dist/ && mkdirp dist && cp README.md dist && rollup -c && webpack",
89
95
  "watch": "yarn build --watch",
90
96
  "dist": "yarn test && yarn build && yarn dist:zip",
91
- "dist:zip": "cd dist && tar czf ../katex.tar.gz * && zip -rq ../katex.zip *"
97
+ "dist:zip": "rimraf katex/ katex.tar.gz katex.zip && cp -R dist katex && tar czf katex.tar.gz katex && zip -rq katex.zip katex && rimraf katex/"
92
98
  },
93
99
  "dependencies": {
94
- "commander": "^2.16.0"
100
+ "commander": "^2.19.0"
95
101
  },
96
102
  "husky": {
97
103
  "hooks": {
@@ -104,9 +110,12 @@
104
110
  "collectCoverageFrom": [
105
111
  "src/**/*.js",
106
112
  "contrib/**/*.js",
107
- "!src/unicodeMake.js"
113
+ "!src/unicodeMake.js",
114
+ "!contrib/mhchem/**"
115
+ ],
116
+ "setupFilesAfterEnv": [
117
+ "<rootDir>/test/setup.js"
108
118
  ],
109
- "setupTestFrameworkScriptFile": "<rootDir>/test/setup.js",
110
119
  "snapshotSerializers": [
111
120
  "jest-serializer-html"
112
121
  ],
@@ -116,6 +125,9 @@
116
125
  "testURL": "http://localhost/",
117
126
  "transform": {
118
127
  "^.+\\.js$": "babel-jest"
128
+ },
129
+ "moduleNameMapper": {
130
+ "^katex$": "<rootDir>/katex.js"
119
131
  }
120
132
  }
121
133
  }
package/src/Lexer.js CHANGED
@@ -21,7 +21,6 @@ import type Settings from "./Settings";
21
21
 
22
22
  /* The following tokenRegex
23
23
  * - matches typical whitespace (but not NBSP etc.) using its first group
24
- * - matches comments (must have trailing newlines)
25
24
  * - does not match any control character \x00-\x1f except whitespace
26
25
  * - does not match a bare backslash
27
26
  * - matches any ASCII character except those just mentioned
@@ -36,7 +35,6 @@ import type Settings from "./Settings";
36
35
  * still reject the input.
37
36
  */
38
37
  const spaceRegexString = "[ \r\n\t]";
39
- const commentRegexString = "%[^\n]*(?:\n|$)";
40
38
  const controlWordRegexString = "\\\\[a-zA-Z@]+";
41
39
  const controlSymbolRegexString = "\\\\[^\uD800-\uDFFF]";
42
40
  const controlWordWhitespaceRegexString =
@@ -46,38 +44,36 @@ const controlWordWhitespaceRegex = new RegExp(
46
44
  const combiningDiacriticalMarkString = "[\u0300-\u036f]";
47
45
  export const combiningDiacriticalMarksEndRegex =
48
46
  new RegExp(`${combiningDiacriticalMarkString}+$`);
49
- const urlFunctionRegexString = "(\\\\href|\\\\url)" +
50
- `(?:${spaceRegexString}*\\{((?:[^{}\\\\]|\\\\[^]|{[^{}]*})*)\\}` +
51
- `|${spaceRegexString}+([^{}])` +
52
- `|${spaceRegexString}*([^{}a-zA-Z]))`;
53
47
  const tokenRegexString = `(${spaceRegexString}+)|` + // whitespace
54
- `(${commentRegexString}` + // comments
55
- "|[!-\\[\\]-\u2027\u202A-\uD7FF\uF900-\uFFFF]" + // single codepoint
48
+ "([!-\\[\\]-\u2027\u202A-\uD7FF\uF900-\uFFFF]" + // single codepoint
56
49
  `${combiningDiacriticalMarkString}*` + // ...plus accents
57
50
  "|[\uD800-\uDBFF][\uDC00-\uDFFF]" + // surrogate pair
58
51
  `${combiningDiacriticalMarkString}*` + // ...plus accents
59
52
  "|\\\\verb\\*([^]).*?\\3" + // \verb*
60
53
  "|\\\\verb([^*a-zA-Z]).*?\\4" + // \verb unstarred
61
- `|${urlFunctionRegexString}` + // URL arguments
62
54
  `|${controlWordWhitespaceRegexString}` + // \macroName + spaces
63
55
  `|${controlSymbolRegexString})`; // \\, \', etc.
64
56
 
65
- // These regexs are for matching results from tokenRegex,
66
- // so they do have ^ markers.
67
- export const controlWordRegex = new RegExp(`^${controlWordRegexString}`);
68
- export const urlFunctionRegex = new RegExp(`^${urlFunctionRegexString}`);
69
-
70
57
  /** Main Lexer class */
71
58
  export default class Lexer implements LexerInterface {
72
59
  input: string;
73
60
  settings: Settings;
74
61
  tokenRegex: RegExp;
62
+ // category codes, only supports comment characters (14) for now
63
+ catcodes: {[string]: number};
75
64
 
76
65
  constructor(input: string, settings: Settings) {
77
66
  // Separate accents from characters
78
67
  this.input = input;
79
68
  this.settings = settings;
80
69
  this.tokenRegex = new RegExp(tokenRegexString, 'g');
70
+ this.catcodes = {
71
+ "%": 14, // comment character
72
+ };
73
+ }
74
+
75
+ setCatcode(char: string, code: number) {
76
+ this.catcodes[char] = code;
81
77
  }
82
78
 
83
79
  /**
@@ -97,22 +93,26 @@ export default class Lexer implements LexerInterface {
97
93
  }
98
94
  let text = match[2] || " ";
99
95
 
100
- // Trim any trailing whitespace from control word match
101
- const controlMatch = text.match(controlWordWhitespaceRegex);
102
- if (controlMatch) {
103
- text = controlMatch[1] + text.slice(controlMatch[0].length);
104
- }
105
-
106
- if (text[0] === "%") {
107
- if (text[text.length - 1] !== "\n") {
96
+ if (this.catcodes[text] === 14) { // comment character
97
+ const nlIndex = input.indexOf('\n', this.tokenRegex.lastIndex);
98
+ if (nlIndex === -1) {
99
+ this.tokenRegex.lastIndex = input.length; // EOF
108
100
  this.settings.reportNonstrict("commentAtEnd",
109
101
  "% comment has no terminating newline; LaTeX would " +
110
102
  "fail because of commenting the end of math mode (e.g. $)");
103
+ } else {
104
+ this.tokenRegex.lastIndex = nlIndex + 1;
111
105
  }
112
106
  return this.lex();
113
- } else {
114
- return new Token(text, new SourceLocation(this, pos,
115
- this.tokenRegex.lastIndex));
116
107
  }
108
+
109
+ // Trim any trailing whitespace from control word match
110
+ const controlMatch = text.match(controlWordWhitespaceRegex);
111
+ if (controlMatch) {
112
+ text = controlMatch[1];
113
+ }
114
+
115
+ return new Token(text, new SourceLocation(this, pos,
116
+ this.tokenRegex.lastIndex));
117
117
  }
118
118
  }
@@ -343,4 +343,3 @@ export default class MacroExpander implements MacroContextInterface {
343
343
  implicitCommands.hasOwnProperty(name);
344
344
  }
345
345
  }
346
-
package/src/Options.js CHANGED
@@ -36,6 +36,10 @@ const sizeAtStyle = function(size: number, style: StyleInterface): number {
36
36
  return style.size < 2 ? size : sizeStyleMap[size - 1][style.size - 1];
37
37
  };
38
38
 
39
+ // In these types, "" (empty string) means "no change".
40
+ export type FontWeight = "textbf" | "textmd" | "";
41
+ export type FontShape = "textit" | "textup" | "";
42
+
39
43
  export type OptionsData = {
40
44
  style: StyleInterface;
41
45
  color?: string | void;
@@ -44,8 +48,8 @@ export type OptionsData = {
44
48
  phantom?: boolean;
45
49
  font?: string;
46
50
  fontFamily?: string;
47
- fontWeight?: string;
48
- fontShape?: string;
51
+ fontWeight?: FontWeight;
52
+ fontShape?: FontShape;
49
53
  sizeMultiplier?: number;
50
54
  maxSize: number;
51
55
  };
@@ -68,8 +72,8 @@ class Options {
68
72
  // See: https://tex.stackexchange.com/questions/22350/difference-between-textrm-and-mathrm
69
73
  font: string;
70
74
  fontFamily: string;
71
- fontWeight: string;
72
- fontShape: string;
75
+ fontWeight: FontWeight;
76
+ fontShape: FontShape;
73
77
  sizeMultiplier: number;
74
78
  maxSize: number;
75
79
  _fontMetrics: FontMetrics | void;
@@ -244,7 +248,7 @@ class Options {
244
248
  /**
245
249
  * Creates a new options object with the given font weight
246
250
  */
247
- withTextFontWeight(fontWeight: string): Options {
251
+ withTextFontWeight(fontWeight: FontWeight): Options {
248
252
  return this.extend({
249
253
  fontWeight,
250
254
  font: "",
@@ -254,7 +258,7 @@ class Options {
254
258
  /**
255
259
  * Creates a new options object with the given font weight
256
260
  */
257
- withTextFontShape(fontShape: string): Options {
261
+ withTextFontShape(fontShape: FontShape): Options {
258
262
  return this.extend({
259
263
  fontShape,
260
264
  font: "",
@@ -295,81 +299,13 @@ class Options {
295
299
  return this._fontMetrics;
296
300
  }
297
301
 
298
- /**
299
- * A map of color names to CSS colors.
300
- * TODO(emily): Remove this when we have real macros
301
- */
302
- static colorMap = {
303
- "katex-blue": "#6495ed",
304
- "katex-orange": "#ffa500",
305
- "katex-pink": "#ff00af",
306
- "katex-red": "#df0030",
307
- "katex-green": "#28ae7b",
308
- "katex-gray": "gray",
309
- "katex-purple": "#9d38bd",
310
- "katex-blueA": "#ccfaff",
311
- "katex-blueB": "#80f6ff",
312
- "katex-blueC": "#63d9ea",
313
- "katex-blueD": "#11accd",
314
- "katex-blueE": "#0c7f99",
315
- "katex-tealA": "#94fff5",
316
- "katex-tealB": "#26edd5",
317
- "katex-tealC": "#01d1c1",
318
- "katex-tealD": "#01a995",
319
- "katex-tealE": "#208170",
320
- "katex-greenA": "#b6ffb0",
321
- "katex-greenB": "#8af281",
322
- "katex-greenC": "#74cf70",
323
- "katex-greenD": "#1fab54",
324
- "katex-greenE": "#0d923f",
325
- "katex-goldA": "#ffd0a9",
326
- "katex-goldB": "#ffbb71",
327
- "katex-goldC": "#ff9c39",
328
- "katex-goldD": "#e07d10",
329
- "katex-goldE": "#a75a05",
330
- "katex-redA": "#fca9a9",
331
- "katex-redB": "#ff8482",
332
- "katex-redC": "#f9685d",
333
- "katex-redD": "#e84d39",
334
- "katex-redE": "#bc2612",
335
- "katex-maroonA": "#ffbde0",
336
- "katex-maroonB": "#ff92c6",
337
- "katex-maroonC": "#ed5fa6",
338
- "katex-maroonD": "#ca337c",
339
- "katex-maroonE": "#9e034e",
340
- "katex-purpleA": "#ddd7ff",
341
- "katex-purpleB": "#c6b9fc",
342
- "katex-purpleC": "#aa87ff",
343
- "katex-purpleD": "#7854ab",
344
- "katex-purpleE": "#543b78",
345
- "katex-mintA": "#f5f9e8",
346
- "katex-mintB": "#edf2df",
347
- "katex-mintC": "#e0e5cc",
348
- "katex-grayA": "#f6f7f7",
349
- "katex-grayB": "#f0f1f2",
350
- "katex-grayC": "#e3e5e6",
351
- "katex-grayD": "#d6d8da",
352
- "katex-grayE": "#babec2",
353
- "katex-grayF": "#888d93",
354
- "katex-grayG": "#626569",
355
- "katex-grayH": "#3b3e40",
356
- "katex-grayI": "#21242c",
357
- "katex-kaBlue": "#314453",
358
- "katex-kaGreen": "#71B307",
359
- };
360
302
 
361
303
  /**
362
- * Gets the CSS color of the current options object, accounting for the
363
- * `colorMap`.
304
+ * Gets the CSS color of the current options object
364
305
  */
365
306
  getColor(): string | void {
366
307
  if (this.phantom) {
367
308
  return "transparent";
368
- } else if (
369
- this.color != null &&
370
- Options.colorMap.hasOwnProperty(this.color)
371
- ) {
372
- return Options.colorMap[this.color];
373
309
  } else {
374
310
  return this.color;
375
311
  }