jekyll-theme-hydejack 8.3.2 → 9.0.0
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.
- checksums.yaml +5 -5
- data/CHANGELOG.md +1208 -0
- data/LICENSE.md +9 -3
- data/NOTICE.md +290 -0
- data/README.md +135 -93
- data/_config.yml +73 -0
- data/_includes/base-classes +9 -0
- data/_includes/body/analytics.html +1 -1
- data/_includes/body/comments.html +1 -1
- data/_includes/body/footer.html +3 -3
- data/_includes/body/index.html +17 -16
- data/_includes/body/main.html +3 -13
- data/_includes/body/menu.html +3 -2
- data/_includes/body/nav.html +4 -4
- data/_includes/body/scripts.html +5 -20
- data/_includes/body/sidebar-bg.html +13 -0
- data/_includes/body/sidebar-sticky.html +25 -0
- data/_includes/body/sidebar.html +7 -40
- data/_includes/components/about.html +1 -1
- data/_includes/components/author.html +3 -3
- data/_includes/components/hy-img.html +15 -26
- data/_includes/components/link.html +1 -1
- data/_includes/components/message.html +1 -1
- data/_includes/components/post-list-item.html +3 -5
- data/_includes/components/post.html +14 -11
- data/_includes/components/related-posts.html +14 -4
- data/_includes/components/tag-list.html +5 -1
- data/_includes/head/css/inline +1 -0
- data/_includes/head/index.html +14 -8
- data/_includes/head/links-static.html +27 -0
- data/_includes/head/links.html +1 -34
- data/_includes/head/meta-static.html +18 -0
- data/_includes/head/meta.html +9 -21
- data/_includes/head/page-style.html +1 -3
- data/_includes/head/scripts.html +13 -14
- data/_includes/head/styles-inline.html +19 -0
- data/_includes/head/styles-layout.html +4 -0
- data/_includes/head/styles-no-inline.html +8 -0
- data/_includes/head/styles.html +5 -46
- data/_includes/header.txt +1 -1
- data/_includes/if-non-null +7 -0
- data/_includes/my-body.html +1 -1
- data/_includes/my-scripts.html +1 -1
- data/_includes/scripts/load-js.min.js +1 -1
- data/_includes/scripts/nomodule.js +21 -0
- data/_includes/scripts/nomodule.min.js +1 -0
- data/_includes/smart-url +1 -0
- data/_includes/smart-url.txt +1 -1
- data/_includes/styles/common.scss +18 -0
- data/_includes/styles/inline.scss +16 -38
- data/_includes/styles/page-style.scss +5 -52
- data/_includes/styles/style.scss +22 -43
- data/_includes/styles/variables.scss +62 -0
- data/_includes/templates/animation.html +1 -1
- data/_includes/templates/back.html +3 -3
- data/_includes/templates/error.html +1 -1
- data/_includes/templates/forward.html +6 -0
- data/_includes/templates/index.html +10 -10
- data/_includes/templates/loading.html +1 -1
- data/_includes/templates/permalink.html +2 -2
- data/_layouts/about.html +1 -1
- data/_layouts/base.html +7 -2
- data/_layouts/blog.html +9 -7
- data/_layouts/compress.html +1 -1
- data/_layouts/default.html +4 -4
- data/_layouts/list.html +11 -17
- data/_layouts/page.html +1 -0
- data/_layouts/post.html +5 -3
- data/_sass/_mixins.scss +7 -21
- data/_sass/_spinner.scss +1 -1
- data/_sass/_syntax.scss +142 -130
- data/_sass/_variables.scss +2 -43
- data/_sass/html.scss +42 -0
- data/_sass/hydejack/__inline__/_avatar.scss +10 -10
- data/_sass/hydejack/__inline__/_base.scss +7 -21
- data/_sass/hydejack/__inline__/_content.scss +9 -2
- data/_sass/hydejack/__inline__/_images.scss +1 -3
- data/_sass/hydejack/__inline__/_links.scss +28 -13
- data/_sass/hydejack/__inline__/_menu.scss +42 -13
- data/_sass/hydejack/__inline__/_sidebar.scss +40 -14
- data/_sass/hydejack/__inline__/_social.scss +3 -0
- data/_sass/hydejack/__inline__/_toc.scss +55 -0
- data/_sass/hydejack/__inline__/_utilities.scss +3 -0
- data/_sass/hydejack/__link__/_avatar.scss +0 -4
- data/_sass/hydejack/__link__/_base.scss +1 -2
- data/_sass/hydejack/__link__/_break-layout.scss +17 -8
- data/_sass/hydejack/__link__/_content.scss +1 -0
- data/_sass/hydejack/__link__/_footer.scss +6 -8
- data/_sass/hydejack/__link__/_images.scss +8 -39
- data/_sass/hydejack/__link__/_katex.scss +1 -26
- data/_sass/hydejack/__link__/_links.scss +29 -20
- data/_sass/hydejack/__link__/_mark-external.scss +2 -7
- data/_sass/hydejack/__link__/_menu.scss +63 -8
- data/_sass/hydejack/__link__/_sidebar.scss +12 -9
- data/_sass/hydejack/__link__/_toc.scss +53 -0
- data/_sass/hydejack/__link__/_utilities.scss +3 -0
- data/_sass/hydejack/_avatar.pre.scss +10 -12
- data/_sass/hydejack/_base.pre.scss +7 -23
- data/_sass/hydejack/_break-layout.pre.scss +19 -10
- data/_sass/hydejack/_content.pre.scss +10 -2
- data/_sass/hydejack/_footer.pre.scss +6 -8
- data/_sass/hydejack/_images.pre.scss +9 -41
- data/_sass/hydejack/_katex.pre.scss +3 -28
- data/_sass/hydejack/_links.pre.scss +49 -19
- data/_sass/hydejack/_mark-external.pre.scss +2 -7
- data/_sass/hydejack/_menu.pre.scss +91 -22
- data/_sass/hydejack/_sidebar.pre.scss +48 -22
- data/_sass/hydejack/_social.pre.scss +3 -0
- data/_sass/hydejack/_toc.pre.scss +65 -0
- data/_sass/hydejack/_utilities.pre.scss +3 -0
- data/_sass/my-inline.scss +2 -16
- data/_sass/my-style.scss +0 -9
- data/_sass/pooleparty/__inline__/_base.scss +14 -9
- data/_sass/pooleparty/__inline__/_message.scss +31 -0
- data/_sass/pooleparty/__inline__/_posts.scss +19 -2
- data/_sass/pooleparty/__inline__/_table.scss +0 -28
- data/_sass/pooleparty/__inline__/_type.scss +81 -15
- data/_sass/pooleparty/__link__/_base.scss +11 -5
- data/_sass/pooleparty/__link__/_code.scss +40 -7
- data/_sass/pooleparty/__link__/_footnotes.scss +4 -5
- data/_sass/pooleparty/__link__/_pagination.scss +3 -2
- data/_sass/pooleparty/__link__/_posts.scss +11 -6
- data/_sass/pooleparty/__link__/_read-more.scss +1 -1
- data/_sass/pooleparty/__link__/_table.scss +27 -17
- data/_sass/pooleparty/__link__/_type.scss +56 -19
- data/_sass/pooleparty/_base.pre.scss +29 -18
- data/_sass/pooleparty/_code.pre.scss +40 -7
- data/_sass/pooleparty/_footnotes.pre.scss +4 -5
- data/_sass/pooleparty/_message.pre.scss +33 -2
- data/_sass/pooleparty/_pagination.pre.scss +5 -4
- data/_sass/pooleparty/_posts.pre.scss +34 -12
- data/_sass/pooleparty/_read-more.pre.scss +1 -1
- data/_sass/pooleparty/_table.pre.scss +13 -21
- data/_sass/pooleparty/_type.pre.scss +100 -35
- data/assets/bower.json +1 -2
- data/assets/bower_components/MathJax/.bower.json +28 -0
- data/assets/bower_components/MathJax/LICENSE +202 -0
- data/assets/bower_components/MathJax/bower.json +11 -0
- data/assets/bower_components/MathJax/composer.json +14 -0
- data/assets/bower_components/MathJax/es5/a11y/assistive-mml.js +1 -0
- data/assets/bower_components/MathJax/es5/a11y/complexity.js +1 -0
- data/assets/bower_components/MathJax/es5/a11y/explorer.js +1 -0
- data/assets/bower_components/MathJax/es5/a11y/semantic-enrich.js +1 -0
- data/assets/bower_components/MathJax/es5/adaptors/liteDOM.js +1 -0
- data/assets/bower_components/MathJax/es5/core.js +1 -0
- data/assets/bower_components/MathJax/es5/input/asciimath.js +1 -0
- data/assets/bower_components/MathJax/es5/input/mml.js +1 -0
- data/assets/bower_components/MathJax/es5/input/mml/entities.js +1 -0
- data/assets/bower_components/MathJax/es5/input/tex-base.js +1 -0
- data/assets/bower_components/MathJax/es5/input/tex-full.js +1 -0
- data/assets/bower_components/MathJax/es5/input/tex.js +1 -0
- data/assets/bower_components/MathJax/es5/input/tex/extensions/action.js +1 -0
- data/assets/bower_components/MathJax/es5/input/tex/extensions/all-packages.js +1 -0
- data/assets/bower_components/MathJax/es5/input/tex/extensions/ams.js +1 -0
- data/assets/bower_components/MathJax/es5/input/tex/extensions/amscd.js +1 -0
- data/assets/bower_components/MathJax/es5/input/tex/extensions/autoload.js +1 -0
- data/assets/bower_components/MathJax/es5/input/tex/extensions/bbox.js +1 -0
- data/assets/bower_components/MathJax/es5/input/tex/extensions/boldsymbol.js +1 -0
- data/assets/bower_components/MathJax/es5/input/tex/extensions/braket.js +1 -0
- data/assets/bower_components/MathJax/es5/input/tex/extensions/bussproofs.js +1 -0
- data/assets/bower_components/MathJax/es5/input/tex/extensions/cancel.js +1 -0
- data/assets/bower_components/MathJax/es5/input/tex/extensions/color.js +1 -0
- data/assets/bower_components/MathJax/es5/input/tex/extensions/colorV2.js +1 -0
- data/assets/bower_components/MathJax/es5/input/tex/extensions/configMacros.js +1 -0
- data/assets/bower_components/MathJax/es5/input/tex/extensions/enclose.js +1 -0
- data/assets/bower_components/MathJax/es5/input/tex/extensions/extpfeil.js +1 -0
- data/assets/bower_components/MathJax/es5/input/tex/extensions/html.js +1 -0
- data/assets/bower_components/MathJax/es5/input/tex/extensions/mhchem.js +1 -0
- data/assets/bower_components/MathJax/es5/input/tex/extensions/newcommand.js +1 -0
- data/assets/bower_components/MathJax/es5/input/tex/extensions/noerrors.js +1 -0
- data/assets/bower_components/MathJax/es5/input/tex/extensions/noundefined.js +1 -0
- data/assets/bower_components/MathJax/es5/input/tex/extensions/physics.js +1 -0
- data/assets/bower_components/MathJax/es5/input/tex/extensions/require.js +1 -0
- data/assets/bower_components/MathJax/es5/input/tex/extensions/tagFormat.js +1 -0
- data/assets/bower_components/MathJax/es5/input/tex/extensions/unicode.js +1 -0
- data/assets/bower_components/MathJax/es5/input/tex/extensions/verb.js +1 -0
- data/assets/bower_components/MathJax/es5/latest.js +1 -0
- data/assets/bower_components/MathJax/es5/loader.js +1 -0
- data/assets/bower_components/MathJax/es5/mml-chtml.js +1 -0
- data/assets/bower_components/MathJax/es5/mml-svg.js +1 -0
- data/assets/bower_components/MathJax/es5/node-main.js +1 -0
- data/assets/bower_components/MathJax/es5/output/chtml.js +1 -0
- data/assets/bower_components/MathJax/es5/output/chtml/fonts/tex.js +1 -0
- data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_AMS-Regular.woff +0 -0
- data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Bold.woff +0 -0
- data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Regular.woff +0 -0
- data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Fraktur-Bold.woff +0 -0
- data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Fraktur-Regular.woff +0 -0
- data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Main-Bold.woff +0 -0
- data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Main-Italic.woff +0 -0
- data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Main-Regular.woff +0 -0
- data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Math-BoldItalic.woff +0 -0
- data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Math-Italic.woff +0 -0
- data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Math-Regular.woff +0 -0
- data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_SansSerif-Bold.woff +0 -0
- data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_SansSerif-Italic.woff +0 -0
- data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_SansSerif-Regular.woff +0 -0
- data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Script-Regular.woff +0 -0
- data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Size1-Regular.woff +0 -0
- data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Size2-Regular.woff +0 -0
- data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Size3-Regular.woff +0 -0
- data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Size4-Regular.woff +0 -0
- data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Typewriter-Regular.woff +0 -0
- data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Vector-Bold.woff +0 -0
- data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Vector-Regular.woff +0 -0
- data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Zero.woff +0 -0
- data/assets/bower_components/MathJax/es5/output/svg.js +1 -0
- data/assets/bower_components/MathJax/es5/output/svg/fonts/tex.js +1 -0
- data/assets/bower_components/MathJax/es5/sre/mathmaps/en.js +104 -0
- data/assets/bower_components/MathJax/es5/sre/mathmaps/es.js +104 -0
- data/assets/bower_components/MathJax/es5/sre/mathmaps/fr.js +104 -0
- data/assets/bower_components/MathJax/es5/sre/mathmaps/mathmaps_ie.js +410 -0
- data/assets/bower_components/MathJax/es5/sre/mathmaps/nemeth.js +104 -0
- data/assets/bower_components/MathJax/es5/sre/sre_browser.js +1709 -0
- data/assets/bower_components/MathJax/es5/startup.js +1 -0
- data/assets/bower_components/MathJax/es5/tex-chtml-full.js +1 -0
- data/assets/bower_components/MathJax/es5/tex-chtml.js +1 -0
- data/assets/bower_components/MathJax/es5/tex-mml-chtml.js +1 -0
- data/assets/bower_components/MathJax/es5/tex-mml-svg.js +1 -0
- data/assets/bower_components/MathJax/es5/tex-svg-full.js +1 -0
- data/assets/bower_components/MathJax/es5/tex-svg.js +1 -0
- data/assets/bower_components/MathJax/es5/ui/menu.js +1 -0
- data/assets/bower_components/MathJax/package.json +59 -0
- data/assets/bower_components/katex/.bower.json +7 -8
- data/assets/bower_components/katex/bower.json +1 -1
- data/assets/bower_components/katex/dist/contrib/auto-render.js +4 -0
- data/assets/bower_components/katex/dist/contrib/auto-render.min.js +1 -1
- data/assets/bower_components/katex/dist/contrib/auto-render.mjs +215 -0
- data/assets/bower_components/katex/dist/contrib/copy-tex.js +9 -4
- data/assets/bower_components/katex/dist/contrib/copy-tex.min.css +1 -1
- data/assets/bower_components/katex/dist/contrib/copy-tex.min.js +1 -1
- data/assets/bower_components/katex/dist/contrib/copy-tex.mjs +85 -0
- data/assets/bower_components/katex/dist/contrib/mathtex-script-type.min.js +1 -1
- data/assets/bower_components/katex/dist/contrib/mathtex-script-type.mjs +24 -0
- data/assets/bower_components/katex/dist/contrib/mhchem.js +3241 -0
- data/assets/bower_components/katex/dist/contrib/mhchem.min.js +1 -0
- data/assets/bower_components/katex/dist/contrib/mhchem.mjs +3109 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_AMS-Regular.ttf +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_AMS-Regular.woff +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_AMS-Regular.woff2 +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Fraktur-Bold.woff +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Fraktur-Regular.woff +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Bold.ttf +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Bold.woff +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Bold.woff2 +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Main-BoldItalic.woff +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Italic.ttf +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Italic.woff +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Italic.woff2 +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Regular.ttf +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Regular.woff +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Regular.woff2 +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Math-BoldItalic.woff +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Math-Italic.ttf +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Math-Italic.woff +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Math-Italic.woff2 +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Bold.woff +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Italic.woff +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Regular.woff +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Script-Regular.ttf +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Script-Regular.woff +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Script-Regular.woff2 +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Size1-Regular.ttf +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Size1-Regular.woff +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Size1-Regular.woff2 +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Size2-Regular.ttf +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Size2-Regular.woff +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Size2-Regular.woff2 +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Size3-Regular.ttf +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Size3-Regular.woff +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Size3-Regular.woff2 +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Size4-Regular.ttf +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Size4-Regular.woff +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Size4-Regular.woff2 +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Typewriter-Regular.woff +0 -0
- data/assets/bower_components/katex/dist/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
- data/assets/bower_components/katex/dist/katex.css +18 -4
- data/assets/bower_components/katex/dist/katex.js +1011 -663
- data/assets/bower_components/katex/dist/katex.min.css +1 -1
- data/assets/bower_components/katex/dist/katex.min.js +1 -1
- data/assets/bower_components/katex/dist/katex.mjs +904 -645
- data/assets/bower_components/katex/yarn.lock +3091 -2622
- data/assets/css/{hydejack-8.3.2.css → hydejack-9.0.0.css} +0 -0
- data/assets/icomoon/fonts/icomoon.eot +0 -0
- data/assets/icomoon/fonts/icomoon.svg +10 -2
- data/assets/icomoon/fonts/icomoon.ttf +0 -0
- data/assets/icomoon/fonts/icomoon.woff +0 -0
- data/assets/icomoon/selection.json +1 -2555
- data/assets/icomoon/style.css +37 -12
- data/assets/js/.gitkeep +0 -0
- data/assets/js/LEGACY-drawer-hydejack-9.0.0.js +14 -0
- data/assets/js/LEGACY-fetch-hydejack-9.0.0.js +14 -0
- data/assets/js/LEGACY-hydejack-9.0.0.js +28 -0
- data/assets/js/LEGACY-navbar-hydejack-9.0.0.js +14 -0
- data/assets/js/LEGACY-push-state-hydejack-9.0.0.js +14 -0
- data/assets/js/LEGACY-resize-observer-hydejack-9.0.0.js +14 -0
- data/assets/js/LEGACY-shadydom-hydejack-9.0.0.js +14 -0
- data/assets/js/LEGACY-vendors~drawer-hydejack-9.0.0.js +47 -0
- data/assets/js/LEGACY-vendors~drawer~push-state-hydejack-9.0.0.js +215 -0
- data/assets/js/LEGACY-vendors~fetch-hydejack-9.0.0.js +14 -0
- data/assets/js/LEGACY-vendors~intersection-observer-hydejack-9.0.0.js +14 -0
- data/assets/js/LEGACY-vendors~push-state-hydejack-9.0.0.js +33 -0
- data/assets/js/LEGACY-vendors~shadydom-hydejack-9.0.0.js +155 -0
- data/assets/js/LEGACY-vendors~webanimations-hydejack-9.0.0.js +14 -0
- data/assets/js/LEGACY-vendors~webcomponents-hydejack-9.0.0.js +34 -0
- data/assets/js/LEGACY-webcomponents-hydejack-9.0.0.js +14 -0
- data/assets/js/drawer-hydejack-9.0.0.js +14 -0
- data/assets/js/fetch-hydejack-9.0.0.js +14 -0
- data/assets/js/hydejack-9.0.0.js +28 -0
- data/assets/js/navbar-hydejack-9.0.0.js +14 -0
- data/assets/js/push-state-hydejack-9.0.0.js +14 -0
- data/assets/js/resize-observer-hydejack-9.0.0.js +14 -0
- data/assets/js/shadydom-hydejack-9.0.0.js +14 -0
- data/assets/js/vendors~drawer-hydejack-9.0.0.js +47 -0
- data/assets/js/vendors~drawer~push-state-hydejack-9.0.0.js +163 -0
- data/assets/js/vendors~intersection-observer-hydejack-9.0.0.js +14 -0
- data/assets/js/vendors~push-state-hydejack-9.0.0.js +33 -0
- data/assets/js/vendors~shadydom-hydejack-9.0.0.js +146 -0
- data/assets/js/vendors~webanimations-hydejack-9.0.0.js +14 -0
- data/assets/js/webcomponents-hydejack-9.0.0.js +14 -0
- data/assets/version.json +3 -2
- data/licenses/PRO.md +4 -0
- data/licenses/README.md +1 -1
- data/licenses/{W3C.md → W3C-20150513.md} +0 -0
- metadata +170 -55
- data/assets/Resume.pdf +0 -0
- data/assets/bower_components/fontfaceobserver/.bower.json +0 -33
- data/assets/bower_components/fontfaceobserver/.gitignore +0 -2
- data/assets/bower_components/fontfaceobserver/.travis.yml +0 -16
- data/assets/bower_components/fontfaceobserver/Gruntfile.js +0 -101
- data/assets/bower_components/fontfaceobserver/LICENSE +0 -23
- data/assets/bower_components/fontfaceobserver/bower.json +0 -22
- data/assets/bower_components/fontfaceobserver/exports.js +0 -8
- data/assets/bower_components/fontfaceobserver/externs-commonjs.js +0 -10
- data/assets/bower_components/fontfaceobserver/externs.js +0 -15
- data/assets/bower_components/fontfaceobserver/fontfaceobserver.js +0 -12
- data/assets/bower_components/fontfaceobserver/fontfaceobserver.standalone.js +0 -8
- data/assets/bower_components/fontfaceobserver/package.json +0 -57
- data/assets/bower_components/fontfaceobserver/src/descriptors.js +0 -10
- data/assets/bower_components/fontfaceobserver/src/observer.js +0 -349
- data/assets/bower_components/fontfaceobserver/src/ruler.js +0 -130
- data/assets/bower_components/fontfaceobserver/vendor/google/base.js +0 -1489
- data/assets/bower_components/katex/dist/README.md +0 -90
- data/assets/bower_components/katex/lint_blacklist.txt +0 -5
- data/assets/img/blog/COLOURlovers.com-Hydejack.png +0 -0
- data/assets/img/blog/blog-layout.jpg +0 -0
- data/assets/img/blog/caleb-george-old.jpg +0 -0
- data/assets/img/blog/caleb-george.jpg +0 -0
- data/assets/img/blog/cover-page.jpg +0 -0
- data/assets/img/blog/dark-mode-ii.jpg +0 -0
- data/assets/img/blog/dark-mode.jpg +0 -0
- data/assets/img/blog/example-content-ii.jpg +0 -0
- data/assets/img/blog/example-content-iii.jpg +0 -0
- data/assets/img/blog/hydejack-8.png +0 -0
- data/assets/img/blog/hydejack-8@0,25x.png +0 -0
- data/assets/img/blog/hydejack-8@0,5x.png +0 -0
- data/assets/img/blog/lazy-images.jpg +0 -0
- data/assets/img/blog/resume.png +0 -0
- data/assets/img/blog/steve-harvey.jpg +0 -0
- data/assets/img/blog/w3m.png +0 -0
- data/assets/img/blog/wade-lambert.jpg +0 -0
- data/assets/img/docs/google-fonts.png +0 -0
- data/assets/img/projects/hy-drawer.svg +0 -12
- data/assets/img/projects/hy-img.svg +0 -17
- data/assets/img/projects/hy-push-state.svg +0 -13
- data/assets/js/hydejack-8.3.1.js +0 -47
- data/assets/js/hydejack-8.3.2.js +0 -47
- data/assets/video/blog-layout.mp4 +0 -0
- data/assets/video/cover-page.mp4 +0 -0
- data/assets/video/dark-mode.mp4 +0 -0
- data/assets/video/lazy-images.mp4 +0 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -128,6 +128,9 @@
|
|
|
128
128
|
.katex * {
|
|
129
129
|
-ms-high-contrast-adjust: none !important;
|
|
130
130
|
}
|
|
131
|
+
.katex .katex-version::after {
|
|
132
|
+
content: "0.10.2";
|
|
133
|
+
}
|
|
131
134
|
.katex .katex-mathml {
|
|
132
135
|
position: absolute;
|
|
133
136
|
clip: rect(1px, 1px, 1px, 1px);
|
|
@@ -911,6 +914,13 @@
|
|
|
911
914
|
.katex svg path {
|
|
912
915
|
stroke: none;
|
|
913
916
|
}
|
|
917
|
+
.katex img {
|
|
918
|
+
border-style: none;
|
|
919
|
+
min-width: 0;
|
|
920
|
+
min-height: 0;
|
|
921
|
+
max-width: none;
|
|
922
|
+
max-height: none;
|
|
923
|
+
}
|
|
914
924
|
.katex .stretchy {
|
|
915
925
|
width: 100%;
|
|
916
926
|
display: block;
|
|
@@ -967,10 +977,7 @@
|
|
|
967
977
|
.katex .boxpad {
|
|
968
978
|
padding: 0 0.3em 0 0.3em;
|
|
969
979
|
}
|
|
970
|
-
.katex .fbox
|
|
971
|
-
box-sizing: border-box;
|
|
972
|
-
border: 0.04em solid black;
|
|
973
|
-
}
|
|
980
|
+
.katex .fbox,
|
|
974
981
|
.katex .fcolorbox {
|
|
975
982
|
box-sizing: border-box;
|
|
976
983
|
border: 0.04em solid;
|
|
@@ -1004,4 +1011,11 @@
|
|
|
1004
1011
|
position: absolute;
|
|
1005
1012
|
right: 0;
|
|
1006
1013
|
}
|
|
1014
|
+
.katex-display.leqno > .katex > .katex-html > .tag {
|
|
1015
|
+
left: 0;
|
|
1016
|
+
right: auto;
|
|
1017
|
+
}
|
|
1018
|
+
.katex-display.fleqn > .katex {
|
|
1019
|
+
text-align: left;
|
|
1020
|
+
}
|
|
1007
1021
|
|
|
@@ -91,7 +91,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
|
91
91
|
/******/
|
|
92
92
|
/******/
|
|
93
93
|
/******/ // Load entry module and return exports
|
|
94
|
-
/******/ return __webpack_require__(__webpack_require__.s =
|
|
94
|
+
/******/ return __webpack_require__(__webpack_require__.s = 1);
|
|
95
95
|
/******/ })
|
|
96
96
|
/************************************************************************/
|
|
97
97
|
/******/ ([
|
|
@@ -101,8 +101,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
|
101
101
|
// extracted by mini-css-extract-plugin
|
|
102
102
|
|
|
103
103
|
/***/ }),
|
|
104
|
-
/* 1
|
|
105
|
-
/* 2 */
|
|
104
|
+
/* 1 */
|
|
106
105
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
107
106
|
|
|
108
107
|
"use strict";
|
|
@@ -131,12 +130,6 @@ function () {
|
|
|
131
130
|
this.start = start;
|
|
132
131
|
this.end = end;
|
|
133
132
|
}
|
|
134
|
-
|
|
135
|
-
var _proto = SourceLocation.prototype;
|
|
136
|
-
|
|
137
|
-
_proto.getSource = function getSource() {
|
|
138
|
-
return this.lexer.input.slice(this.start, this.end);
|
|
139
|
-
};
|
|
140
133
|
/**
|
|
141
134
|
* Merges two `SourceLocation`s from location providers, given they are
|
|
142
135
|
* provided in order of appearance.
|
|
@@ -403,6 +396,8 @@ var Settings_Settings =
|
|
|
403
396
|
function () {
|
|
404
397
|
function Settings(options) {
|
|
405
398
|
this.displayMode = void 0;
|
|
399
|
+
this.leqno = void 0;
|
|
400
|
+
this.fleqn = void 0;
|
|
406
401
|
this.throwOnError = void 0;
|
|
407
402
|
this.errorColor = void 0;
|
|
408
403
|
this.macros = void 0;
|
|
@@ -414,6 +409,8 @@ function () {
|
|
|
414
409
|
// allow null options
|
|
415
410
|
options = options || {};
|
|
416
411
|
this.displayMode = utils.deflt(options.displayMode, false);
|
|
412
|
+
this.leqno = utils.deflt(options.leqno, false);
|
|
413
|
+
this.fleqn = utils.deflt(options.fleqn, false);
|
|
417
414
|
this.throwOnError = utils.deflt(options.throwOnError, true);
|
|
418
415
|
this.errorColor = utils.deflt(options.errorColor, "#cc0000");
|
|
419
416
|
this.macros = options.macros || {};
|
|
@@ -450,7 +447,7 @@ function () {
|
|
|
450
447
|
// won't happen in type-safe code
|
|
451
448
|
typeof console !== "undefined" && console.warn("LaTeX-incompatible input and strict mode is set to " + ("unrecognized '" + strict + "': " + errorMsg + " [" + errorCode + "]"));
|
|
452
449
|
}
|
|
453
|
-
}
|
|
450
|
+
}
|
|
454
451
|
/**
|
|
455
452
|
* Check whether to apply strict (LaTeX-adhering) behavior for unusual
|
|
456
453
|
* input (like `\\`). Unlike `nonstrict`, will not throw an error;
|
|
@@ -459,7 +456,7 @@ function () {
|
|
|
459
456
|
* "warn" prints a warning and returns `false`.
|
|
460
457
|
* This is for the second category of `errorCode`s listed in the README.
|
|
461
458
|
*/
|
|
462
|
-
|
|
459
|
+
;
|
|
463
460
|
|
|
464
461
|
_proto.useStrictBehavior = function useStrictBehavior(errorCode, errorMsg, token) {
|
|
465
462
|
var strict = this.strict;
|
|
@@ -527,54 +524,54 @@ function () {
|
|
|
527
524
|
|
|
528
525
|
_proto.sup = function sup() {
|
|
529
526
|
return Style_styles[_sup[this.id]];
|
|
530
|
-
}
|
|
527
|
+
}
|
|
531
528
|
/**
|
|
532
529
|
* Get the style of a subscript given a base in the current style.
|
|
533
530
|
*/
|
|
534
|
-
|
|
531
|
+
;
|
|
535
532
|
|
|
536
533
|
_proto.sub = function sub() {
|
|
537
534
|
return Style_styles[_sub[this.id]];
|
|
538
|
-
}
|
|
535
|
+
}
|
|
539
536
|
/**
|
|
540
537
|
* Get the style of a fraction numerator given the fraction in the current
|
|
541
538
|
* style.
|
|
542
539
|
*/
|
|
543
|
-
|
|
540
|
+
;
|
|
544
541
|
|
|
545
542
|
_proto.fracNum = function fracNum() {
|
|
546
543
|
return Style_styles[_fracNum[this.id]];
|
|
547
|
-
}
|
|
544
|
+
}
|
|
548
545
|
/**
|
|
549
546
|
* Get the style of a fraction denominator given the fraction in the current
|
|
550
547
|
* style.
|
|
551
548
|
*/
|
|
552
|
-
|
|
549
|
+
;
|
|
553
550
|
|
|
554
551
|
_proto.fracDen = function fracDen() {
|
|
555
552
|
return Style_styles[_fracDen[this.id]];
|
|
556
|
-
}
|
|
553
|
+
}
|
|
557
554
|
/**
|
|
558
555
|
* Get the cramped version of a style (in particular, cramping a cramped style
|
|
559
556
|
* doesn't change the style).
|
|
560
557
|
*/
|
|
561
|
-
|
|
558
|
+
;
|
|
562
559
|
|
|
563
560
|
_proto.cramp = function cramp() {
|
|
564
561
|
return Style_styles[_cramp[this.id]];
|
|
565
|
-
}
|
|
562
|
+
}
|
|
566
563
|
/**
|
|
567
564
|
* Get a text or display version of this style.
|
|
568
565
|
*/
|
|
569
|
-
|
|
566
|
+
;
|
|
570
567
|
|
|
571
568
|
_proto.text = function text() {
|
|
572
569
|
return Style_styles[_text[this.id]];
|
|
573
|
-
}
|
|
570
|
+
}
|
|
574
571
|
/**
|
|
575
572
|
* Return true if this style is tightly spaced (scriptstyle/scriptscriptstyle)
|
|
576
573
|
*/
|
|
577
|
-
|
|
574
|
+
;
|
|
578
575
|
|
|
579
576
|
_proto.isTight = function isTight() {
|
|
580
577
|
return this.size >= 2;
|
|
@@ -810,7 +807,7 @@ var svgGeometry_path = {
|
|
|
810
807
|
// The next ten paths support reaction arrows from the mhchem package.
|
|
811
808
|
// Arrows for \ce{<-->} are offset from xAxis by 0.22ex, per mhchem in LaTeX
|
|
812
809
|
// baraboveleftarrow is mostly from from glyph U+2190 in font KaTeX Main
|
|
813
|
-
baraboveleftarrow: "M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\nM100
|
|
810
|
+
baraboveleftarrow: "M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z",
|
|
814
811
|
// rightarrowabovebar is mostly from glyph U+2192, KaTeX Main
|
|
815
812
|
rightarrowabovebar: "M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z",
|
|
816
813
|
// The short left harpoon has 0.5em (i.e. 500 units) kern on the left end.
|
|
@@ -855,9 +852,9 @@ function () {
|
|
|
855
852
|
|
|
856
853
|
_proto.hasClass = function hasClass(className) {
|
|
857
854
|
return utils.contains(this.classes, className);
|
|
858
|
-
}
|
|
855
|
+
}
|
|
859
856
|
/** Convert the fragment into a node. */
|
|
860
|
-
|
|
857
|
+
;
|
|
861
858
|
|
|
862
859
|
_proto.toNode = function toNode() {
|
|
863
860
|
var frag = document.createDocumentFragment();
|
|
@@ -867,9 +864,9 @@ function () {
|
|
|
867
864
|
}
|
|
868
865
|
|
|
869
866
|
return frag;
|
|
870
|
-
}
|
|
867
|
+
}
|
|
871
868
|
/** Convert the fragment into HTML markup. */
|
|
872
|
-
|
|
869
|
+
;
|
|
873
870
|
|
|
874
871
|
_proto.toMarkup = function toMarkup() {
|
|
875
872
|
var markup = ""; // Simply concatenate the markup for the children together.
|
|
@@ -879,12 +876,12 @@ function () {
|
|
|
879
876
|
}
|
|
880
877
|
|
|
881
878
|
return markup;
|
|
882
|
-
}
|
|
879
|
+
}
|
|
883
880
|
/**
|
|
884
881
|
* Converts the math node into a string, similar to innerText. Applies to
|
|
885
882
|
* MathDomNode's only.
|
|
886
883
|
*/
|
|
887
|
-
|
|
884
|
+
;
|
|
888
885
|
|
|
889
886
|
_proto.toText = function toText() {
|
|
890
887
|
// To avoid this, we would subclass documentFragment separately for
|
|
@@ -1118,6 +1115,70 @@ function () {
|
|
|
1118
1115
|
|
|
1119
1116
|
return Anchor;
|
|
1120
1117
|
}();
|
|
1118
|
+
/**
|
|
1119
|
+
* This node represents an image embed (<img>) element.
|
|
1120
|
+
*/
|
|
1121
|
+
|
|
1122
|
+
var domTree_Img =
|
|
1123
|
+
/*#__PURE__*/
|
|
1124
|
+
function () {
|
|
1125
|
+
function Img(src, alt, style) {
|
|
1126
|
+
this.src = void 0;
|
|
1127
|
+
this.alt = void 0;
|
|
1128
|
+
this.classes = void 0;
|
|
1129
|
+
this.height = void 0;
|
|
1130
|
+
this.depth = void 0;
|
|
1131
|
+
this.maxFontSize = void 0;
|
|
1132
|
+
this.style = void 0;
|
|
1133
|
+
this.alt = alt;
|
|
1134
|
+
this.src = src;
|
|
1135
|
+
this.classes = ["mord"];
|
|
1136
|
+
this.style = style;
|
|
1137
|
+
}
|
|
1138
|
+
|
|
1139
|
+
var _proto3 = Img.prototype;
|
|
1140
|
+
|
|
1141
|
+
_proto3.hasClass = function hasClass(className) {
|
|
1142
|
+
return utils.contains(this.classes, className);
|
|
1143
|
+
};
|
|
1144
|
+
|
|
1145
|
+
_proto3.toNode = function toNode() {
|
|
1146
|
+
var node = document.createElement("img");
|
|
1147
|
+
node.src = this.src;
|
|
1148
|
+
node.alt = this.alt;
|
|
1149
|
+
node.className = "mord"; // Apply inline styles
|
|
1150
|
+
|
|
1151
|
+
for (var style in this.style) {
|
|
1152
|
+
if (this.style.hasOwnProperty(style)) {
|
|
1153
|
+
// $FlowFixMe
|
|
1154
|
+
node.style[style] = this.style[style];
|
|
1155
|
+
}
|
|
1156
|
+
}
|
|
1157
|
+
|
|
1158
|
+
return node;
|
|
1159
|
+
};
|
|
1160
|
+
|
|
1161
|
+
_proto3.toMarkup = function toMarkup() {
|
|
1162
|
+
var markup = "<img src='" + this.src + " 'alt='" + this.alt + "' "; // Add the styles, after hyphenation
|
|
1163
|
+
|
|
1164
|
+
var styles = "";
|
|
1165
|
+
|
|
1166
|
+
for (var style in this.style) {
|
|
1167
|
+
if (this.style.hasOwnProperty(style)) {
|
|
1168
|
+
styles += utils.hyphenate(style) + ":" + this.style[style] + ";";
|
|
1169
|
+
}
|
|
1170
|
+
}
|
|
1171
|
+
|
|
1172
|
+
if (styles) {
|
|
1173
|
+
markup += " style=\"" + utils.escape(styles) + "\"";
|
|
1174
|
+
}
|
|
1175
|
+
|
|
1176
|
+
markup += "'/>";
|
|
1177
|
+
return markup;
|
|
1178
|
+
};
|
|
1179
|
+
|
|
1180
|
+
return Img;
|
|
1181
|
+
}();
|
|
1121
1182
|
var iCombinations = {
|
|
1122
1183
|
'î': "\u0131\u0302",
|
|
1123
1184
|
'ï': "\u0131\u0308",
|
|
@@ -1172,18 +1233,18 @@ function () {
|
|
|
1172
1233
|
}
|
|
1173
1234
|
}
|
|
1174
1235
|
|
|
1175
|
-
var
|
|
1236
|
+
var _proto4 = SymbolNode.prototype;
|
|
1176
1237
|
|
|
1177
|
-
|
|
1238
|
+
_proto4.hasClass = function hasClass(className) {
|
|
1178
1239
|
return utils.contains(this.classes, className);
|
|
1179
|
-
}
|
|
1240
|
+
}
|
|
1180
1241
|
/**
|
|
1181
1242
|
* Creates a text node or span from a symbol node. Note that a span is only
|
|
1182
1243
|
* created if it is needed.
|
|
1183
1244
|
*/
|
|
1245
|
+
;
|
|
1184
1246
|
|
|
1185
|
-
|
|
1186
|
-
_proto3.toNode = function toNode() {
|
|
1247
|
+
_proto4.toNode = function toNode() {
|
|
1187
1248
|
var node = document.createTextNode(this.text);
|
|
1188
1249
|
var span = null;
|
|
1189
1250
|
|
|
@@ -1211,13 +1272,13 @@ function () {
|
|
|
1211
1272
|
} else {
|
|
1212
1273
|
return node;
|
|
1213
1274
|
}
|
|
1214
|
-
}
|
|
1275
|
+
}
|
|
1215
1276
|
/**
|
|
1216
1277
|
* Creates markup for a symbol node.
|
|
1217
1278
|
*/
|
|
1279
|
+
;
|
|
1218
1280
|
|
|
1219
|
-
|
|
1220
|
-
_proto3.toMarkup = function toMarkup() {
|
|
1281
|
+
_proto4.toMarkup = function toMarkup() {
|
|
1221
1282
|
// TODO(alpert): More duplication than I'd like from
|
|
1222
1283
|
// span.prototype.toMarkup and symbolNode.prototype.toNode...
|
|
1223
1284
|
var needsSpan = false;
|
|
@@ -1275,9 +1336,9 @@ function () {
|
|
|
1275
1336
|
this.attributes = attributes || {};
|
|
1276
1337
|
}
|
|
1277
1338
|
|
|
1278
|
-
var
|
|
1339
|
+
var _proto5 = SvgNode.prototype;
|
|
1279
1340
|
|
|
1280
|
-
|
|
1341
|
+
_proto5.toNode = function toNode() {
|
|
1281
1342
|
var svgNS = "http://www.w3.org/2000/svg";
|
|
1282
1343
|
var node = document.createElementNS(svgNS, "svg"); // Apply attributes
|
|
1283
1344
|
|
|
@@ -1294,7 +1355,7 @@ function () {
|
|
|
1294
1355
|
return node;
|
|
1295
1356
|
};
|
|
1296
1357
|
|
|
1297
|
-
|
|
1358
|
+
_proto5.toMarkup = function toMarkup() {
|
|
1298
1359
|
var markup = "<svg"; // Apply attributes
|
|
1299
1360
|
|
|
1300
1361
|
for (var attr in this.attributes) {
|
|
@@ -1325,9 +1386,9 @@ function () {
|
|
|
1325
1386
|
this.alternate = alternate; // Used only for tall \sqrt
|
|
1326
1387
|
}
|
|
1327
1388
|
|
|
1328
|
-
var
|
|
1389
|
+
var _proto6 = PathNode.prototype;
|
|
1329
1390
|
|
|
1330
|
-
|
|
1391
|
+
_proto6.toNode = function toNode() {
|
|
1331
1392
|
var svgNS = "http://www.w3.org/2000/svg";
|
|
1332
1393
|
var node = document.createElementNS(svgNS, "path");
|
|
1333
1394
|
|
|
@@ -1340,7 +1401,7 @@ function () {
|
|
|
1340
1401
|
return node;
|
|
1341
1402
|
};
|
|
1342
1403
|
|
|
1343
|
-
|
|
1404
|
+
_proto6.toMarkup = function toMarkup() {
|
|
1344
1405
|
if (this.alternate) {
|
|
1345
1406
|
return "<path d='" + this.alternate + "'/>";
|
|
1346
1407
|
} else {
|
|
@@ -1358,9 +1419,9 @@ function () {
|
|
|
1358
1419
|
this.attributes = attributes || {};
|
|
1359
1420
|
}
|
|
1360
1421
|
|
|
1361
|
-
var
|
|
1422
|
+
var _proto7 = LineNode.prototype;
|
|
1362
1423
|
|
|
1363
|
-
|
|
1424
|
+
_proto7.toNode = function toNode() {
|
|
1364
1425
|
var svgNS = "http://www.w3.org/2000/svg";
|
|
1365
1426
|
var node = document.createElementNS(svgNS, "line"); // Apply attributes
|
|
1366
1427
|
|
|
@@ -1373,7 +1434,7 @@ function () {
|
|
|
1373
1434
|
return node;
|
|
1374
1435
|
};
|
|
1375
1436
|
|
|
1376
|
-
|
|
1437
|
+
_proto7.toMarkup = function toMarkup() {
|
|
1377
1438
|
var markup = "<line";
|
|
1378
1439
|
|
|
1379
1440
|
for (var attr in this.attributes) {
|
|
@@ -1913,7 +1974,6 @@ function assertSpan(group) {
|
|
|
1913
1974
|
"730": [0, 0.69444, 0, 0, 0.86944],
|
|
1914
1975
|
"732": [0, 0.69444, 0, 0, 0.575],
|
|
1915
1976
|
"733": [0, 0.69444, 0, 0, 0.575],
|
|
1916
|
-
"824": [0.19444, 0.69444, 0, 0, 0],
|
|
1917
1977
|
"915": [0, 0.68611, 0, 0, 0.69166],
|
|
1918
1978
|
"916": [0, 0.68611, 0, 0, 0.95833],
|
|
1919
1979
|
"920": [0, 0.68611, 0, 0, 0.89444],
|
|
@@ -2041,7 +2101,8 @@ function assertSpan(group) {
|
|
|
2041
2101
|
"10217": [0.25, 0.75, 0, 0, 0.44722],
|
|
2042
2102
|
"10815": [0, 0.68611, 0, 0, 0.9],
|
|
2043
2103
|
"10927": [0.19667, 0.69667, 0, 0, 0.89444],
|
|
2044
|
-
"10928": [0.19667, 0.69667, 0, 0, 0.89444]
|
|
2104
|
+
"10928": [0.19667, 0.69667, 0, 0, 0.89444],
|
|
2105
|
+
"57376": [0.19444, 0.69444, 0, 0, 0]
|
|
2045
2106
|
},
|
|
2046
2107
|
"Main-BoldItalic": {
|
|
2047
2108
|
"33": [0, 0.69444, 0.11417, 0, 0.38611],
|
|
@@ -2424,7 +2485,6 @@ function assertSpan(group) {
|
|
|
2424
2485
|
"730": [0, 0.69444, 0, 0, 0.75],
|
|
2425
2486
|
"732": [0, 0.66786, 0, 0, 0.5],
|
|
2426
2487
|
"733": [0, 0.69444, 0, 0, 0.5],
|
|
2427
|
-
"824": [0.19444, 0.69444, 0, 0, 0],
|
|
2428
2488
|
"915": [0, 0.68333, 0, 0, 0.625],
|
|
2429
2489
|
"916": [0, 0.68333, 0, 0, 0.83334],
|
|
2430
2490
|
"920": [0, 0.68333, 0, 0, 0.77778],
|
|
@@ -2509,7 +2569,6 @@ function assertSpan(group) {
|
|
|
2509
2569
|
"8776": [-0.01688, 0.48312, 0, 0, 0.77778],
|
|
2510
2570
|
"8781": [-0.03625, 0.46375, 0, 0, 0.77778],
|
|
2511
2571
|
"8784": [-0.133, 0.67, 0, 0, 0.778],
|
|
2512
|
-
"8800": [0.215, 0.716, 0, 0, 0.778],
|
|
2513
2572
|
"8801": [-0.03625, 0.46375, 0, 0, 0.77778],
|
|
2514
2573
|
"8804": [0.13597, 0.63597, 0, 0, 0.77778],
|
|
2515
2574
|
"8805": [0.13597, 0.63597, 0, 0, 0.77778],
|
|
@@ -2576,10 +2635,10 @@ function assertSpan(group) {
|
|
|
2576
2635
|
"10236": [0.011, 0.511, 0, 0, 1.638],
|
|
2577
2636
|
"10815": [0, 0.68333, 0, 0, 0.75],
|
|
2578
2637
|
"10927": [0.13597, 0.63597, 0, 0, 0.77778],
|
|
2579
|
-
"10928": [0.13597, 0.63597, 0, 0, 0.77778]
|
|
2638
|
+
"10928": [0.13597, 0.63597, 0, 0, 0.77778],
|
|
2639
|
+
"57376": [0.19444, 0.69444, 0, 0, 0]
|
|
2580
2640
|
},
|
|
2581
2641
|
"Math-BoldItalic": {
|
|
2582
|
-
"47": [0.19444, 0.69444, 0, 0, 0],
|
|
2583
2642
|
"65": [0, 0.68611, 0, 0, 0.86944],
|
|
2584
2643
|
"66": [0, 0.68611, 0.04835, 0, 0.8664],
|
|
2585
2644
|
"67": [0, 0.68611, 0.06979, 0, 0.81694],
|
|
@@ -2675,7 +2734,6 @@ function assertSpan(group) {
|
|
|
2675
2734
|
"1013": [0, 0.44444, 0, 0, 0.48333]
|
|
2676
2735
|
},
|
|
2677
2736
|
"Math-Italic": {
|
|
2678
|
-
"47": [0.19444, 0.69444, 0, 0, 0],
|
|
2679
2737
|
"65": [0, 0.68333, 0, 0.13889, 0.75],
|
|
2680
2738
|
"66": [0, 0.68333, 0.05017, 0.08334, 0.75851],
|
|
2681
2739
|
"67": [0, 0.68333, 0.07153, 0.08334, 0.71472],
|
|
@@ -3749,13 +3807,13 @@ function getCharacterMetrics(character, font, mode) {
|
|
|
3749
3807
|
}
|
|
3750
3808
|
|
|
3751
3809
|
var ch = character.charCodeAt(0);
|
|
3810
|
+
var metrics = fontMetricsData[font][ch];
|
|
3752
3811
|
|
|
3753
|
-
if (character[0] in extraCharacterMap) {
|
|
3812
|
+
if (!metrics && character[0] in extraCharacterMap) {
|
|
3754
3813
|
ch = extraCharacterMap[character[0]].charCodeAt(0);
|
|
3814
|
+
metrics = fontMetricsData[font][ch];
|
|
3755
3815
|
}
|
|
3756
3816
|
|
|
3757
|
-
var metrics = fontMetricsData[font][ch];
|
|
3758
|
-
|
|
3759
3817
|
if (!metrics && mode === 'text') {
|
|
3760
3818
|
// We don't typically have font metrics for Asian scripts.
|
|
3761
3819
|
// But since we support them in text mode, we need to return
|
|
@@ -3820,7 +3878,7 @@ function getGlobalMetrics(size) {
|
|
|
3820
3878
|
normal font), or "ams" (the ams fonts).
|
|
3821
3879
|
* - group (required): the ParseNode group type the symbol should have (i.e.
|
|
3822
3880
|
"textord", "mathord", etc).
|
|
3823
|
-
See https://github.com/
|
|
3881
|
+
See https://github.com/KaTeX/KaTeX/wiki/Examining-TeX#group-types
|
|
3824
3882
|
* - replace: the character that this symbol or function should be
|
|
3825
3883
|
* replaced with (i.e. "\phi" has a replace value of "\u03d5", the phi
|
|
3826
3884
|
* character in the main font).
|
|
@@ -3883,7 +3941,7 @@ var op = "op-token";
|
|
|
3883
3941
|
var symbols_open = "open";
|
|
3884
3942
|
var punct = "punct";
|
|
3885
3943
|
var rel = "rel";
|
|
3886
|
-
var
|
|
3944
|
+
var symbols_spacing = "spacing";
|
|
3887
3945
|
var symbols_textord = "textord"; // Now comes the symbol table
|
|
3888
3946
|
// Relation Symbols
|
|
3889
3947
|
|
|
@@ -3988,12 +4046,13 @@ defineSymbol(symbols_math, main, rel, "\u21C1", "\\rightharpoondown", true);
|
|
|
3988
4046
|
defineSymbol(symbols_math, main, rel, "\u2196", "\\nwarrow", true);
|
|
3989
4047
|
defineSymbol(symbols_math, main, rel, "\u21CC", "\\rightleftharpoons", true); // AMS Negated Binary Relations
|
|
3990
4048
|
|
|
3991
|
-
defineSymbol(symbols_math, ams, rel, "\u226E", "\\nless", true);
|
|
3992
|
-
|
|
3993
|
-
defineSymbol(symbols_math, ams, rel, "\
|
|
4049
|
+
defineSymbol(symbols_math, ams, rel, "\u226E", "\\nless", true); // Symbol names preceeded by "@" each have a corresponding macro.
|
|
4050
|
+
|
|
4051
|
+
defineSymbol(symbols_math, ams, rel, "\uE010", "\\@nleqslant");
|
|
4052
|
+
defineSymbol(symbols_math, ams, rel, "\uE011", "\\@nleqq");
|
|
3994
4053
|
defineSymbol(symbols_math, ams, rel, "\u2A87", "\\lneq", true);
|
|
3995
4054
|
defineSymbol(symbols_math, ams, rel, "\u2268", "\\lneqq", true);
|
|
3996
|
-
defineSymbol(symbols_math, ams, rel, "\uE00C", "
|
|
4055
|
+
defineSymbol(symbols_math, ams, rel, "\uE00C", "\\@lvertneqq");
|
|
3997
4056
|
defineSymbol(symbols_math, ams, rel, "\u22E6", "\\lnsim", true);
|
|
3998
4057
|
defineSymbol(symbols_math, ams, rel, "\u2A89", "\\lnapprox", true);
|
|
3999
4058
|
defineSymbol(symbols_math, ams, rel, "\u2280", "\\nprec", true); // unicode-math maps \u22e0 to \npreccurlyeq. We'll use the AMS synonym.
|
|
@@ -4002,22 +4061,22 @@ defineSymbol(symbols_math, ams, rel, "\u22E0", "\\npreceq", true);
|
|
|
4002
4061
|
defineSymbol(symbols_math, ams, rel, "\u22E8", "\\precnsim", true);
|
|
4003
4062
|
defineSymbol(symbols_math, ams, rel, "\u2AB9", "\\precnapprox", true);
|
|
4004
4063
|
defineSymbol(symbols_math, ams, rel, "\u2241", "\\nsim", true);
|
|
4005
|
-
defineSymbol(symbols_math, ams, rel, "\uE006", "
|
|
4064
|
+
defineSymbol(symbols_math, ams, rel, "\uE006", "\\@nshortmid");
|
|
4006
4065
|
defineSymbol(symbols_math, ams, rel, "\u2224", "\\nmid", true);
|
|
4007
4066
|
defineSymbol(symbols_math, ams, rel, "\u22AC", "\\nvdash", true);
|
|
4008
4067
|
defineSymbol(symbols_math, ams, rel, "\u22AD", "\\nvDash", true);
|
|
4009
4068
|
defineSymbol(symbols_math, ams, rel, "\u22EA", "\\ntriangleleft");
|
|
4010
4069
|
defineSymbol(symbols_math, ams, rel, "\u22EC", "\\ntrianglelefteq", true);
|
|
4011
4070
|
defineSymbol(symbols_math, ams, rel, "\u228A", "\\subsetneq", true);
|
|
4012
|
-
defineSymbol(symbols_math, ams, rel, "\uE01A", "
|
|
4071
|
+
defineSymbol(symbols_math, ams, rel, "\uE01A", "\\@varsubsetneq");
|
|
4013
4072
|
defineSymbol(symbols_math, ams, rel, "\u2ACB", "\\subsetneqq", true);
|
|
4014
|
-
defineSymbol(symbols_math, ams, rel, "\uE017", "
|
|
4073
|
+
defineSymbol(symbols_math, ams, rel, "\uE017", "\\@varsubsetneqq");
|
|
4015
4074
|
defineSymbol(symbols_math, ams, rel, "\u226F", "\\ngtr", true);
|
|
4016
|
-
defineSymbol(symbols_math, ams, rel, "\uE00F", "
|
|
4017
|
-
defineSymbol(symbols_math, ams, rel, "\uE00E", "
|
|
4075
|
+
defineSymbol(symbols_math, ams, rel, "\uE00F", "\\@ngeqslant");
|
|
4076
|
+
defineSymbol(symbols_math, ams, rel, "\uE00E", "\\@ngeqq");
|
|
4018
4077
|
defineSymbol(symbols_math, ams, rel, "\u2A88", "\\gneq", true);
|
|
4019
4078
|
defineSymbol(symbols_math, ams, rel, "\u2269", "\\gneqq", true);
|
|
4020
|
-
defineSymbol(symbols_math, ams, rel, "\uE00D", "
|
|
4079
|
+
defineSymbol(symbols_math, ams, rel, "\uE00D", "\\@gvertneqq");
|
|
4021
4080
|
defineSymbol(symbols_math, ams, rel, "\u22E7", "\\gnsim", true);
|
|
4022
4081
|
defineSymbol(symbols_math, ams, rel, "\u2A8A", "\\gnapprox", true);
|
|
4023
4082
|
defineSymbol(symbols_math, ams, rel, "\u2281", "\\nsucc", true); // unicode-math maps \u22e1 to \nsucccurlyeq. We'll use the AMS synonym.
|
|
@@ -4027,20 +4086,20 @@ defineSymbol(symbols_math, ams, rel, "\u22E9", "\\succnsim", true);
|
|
|
4027
4086
|
defineSymbol(symbols_math, ams, rel, "\u2ABA", "\\succnapprox", true); // unicode-math maps \u2246 to \simneqq. We'll use the AMS synonym.
|
|
4028
4087
|
|
|
4029
4088
|
defineSymbol(symbols_math, ams, rel, "\u2246", "\\ncong", true);
|
|
4030
|
-
defineSymbol(symbols_math, ams, rel, "\uE007", "
|
|
4089
|
+
defineSymbol(symbols_math, ams, rel, "\uE007", "\\@nshortparallel");
|
|
4031
4090
|
defineSymbol(symbols_math, ams, rel, "\u2226", "\\nparallel", true);
|
|
4032
4091
|
defineSymbol(symbols_math, ams, rel, "\u22AF", "\\nVDash", true);
|
|
4033
4092
|
defineSymbol(symbols_math, ams, rel, "\u22EB", "\\ntriangleright");
|
|
4034
4093
|
defineSymbol(symbols_math, ams, rel, "\u22ED", "\\ntrianglerighteq", true);
|
|
4035
|
-
defineSymbol(symbols_math, ams, rel, "\uE018", "
|
|
4094
|
+
defineSymbol(symbols_math, ams, rel, "\uE018", "\\@nsupseteqq");
|
|
4036
4095
|
defineSymbol(symbols_math, ams, rel, "\u228B", "\\supsetneq", true);
|
|
4037
|
-
defineSymbol(symbols_math, ams, rel, "\uE01B", "
|
|
4096
|
+
defineSymbol(symbols_math, ams, rel, "\uE01B", "\\@varsupsetneq");
|
|
4038
4097
|
defineSymbol(symbols_math, ams, rel, "\u2ACC", "\\supsetneqq", true);
|
|
4039
|
-
defineSymbol(symbols_math, ams, rel, "\uE019", "
|
|
4098
|
+
defineSymbol(symbols_math, ams, rel, "\uE019", "\\@varsupsetneqq");
|
|
4040
4099
|
defineSymbol(symbols_math, ams, rel, "\u22AE", "\\nVdash", true);
|
|
4041
4100
|
defineSymbol(symbols_math, ams, rel, "\u2AB5", "\\precneqq", true);
|
|
4042
4101
|
defineSymbol(symbols_math, ams, rel, "\u2AB6", "\\succneqq", true);
|
|
4043
|
-
defineSymbol(symbols_math, ams, rel, "\uE016", "
|
|
4102
|
+
defineSymbol(symbols_math, ams, rel, "\uE016", "\\@nsubseteqq");
|
|
4044
4103
|
defineSymbol(symbols_math, ams, bin, "\u22B4", "\\unlhd");
|
|
4045
4104
|
defineSymbol(symbols_math, ams, bin, "\u22B5", "\\unrhd"); // AMS Negated Arrows
|
|
4046
4105
|
|
|
@@ -4063,7 +4122,6 @@ defineSymbol(symbols_math, ams, symbols_textord, "\u2204", "\\nexists");
|
|
|
4063
4122
|
defineSymbol(symbols_math, ams, symbols_textord, "\u2127", "\\mho");
|
|
4064
4123
|
defineSymbol(symbols_math, ams, symbols_textord, "\u2132", "\\Finv", true);
|
|
4065
4124
|
defineSymbol(symbols_math, ams, symbols_textord, "\u2141", "\\Game", true);
|
|
4066
|
-
defineSymbol(symbols_math, ams, symbols_textord, "k", "\\Bbbk");
|
|
4067
4125
|
defineSymbol(symbols_math, ams, symbols_textord, "\u2035", "\\backprime");
|
|
4068
4126
|
defineSymbol(symbols_math, ams, symbols_textord, "\u25B2", "\\blacktriangle");
|
|
4069
4127
|
defineSymbol(symbols_math, ams, symbols_textord, "\u25BC", "\\blacktriangledown");
|
|
@@ -4346,7 +4404,7 @@ defineSymbol(symbols_math, main, rel, "\u2265", "\\geq", true);
|
|
|
4346
4404
|
defineSymbol(symbols_math, main, rel, "\u2190", "\\gets");
|
|
4347
4405
|
defineSymbol(symbols_math, main, rel, ">", "\\gt");
|
|
4348
4406
|
defineSymbol(symbols_math, main, rel, "\u2208", "\\in", true);
|
|
4349
|
-
defineSymbol(symbols_math, main, rel, "\
|
|
4407
|
+
defineSymbol(symbols_math, main, rel, "\uE020", "\\@not");
|
|
4350
4408
|
defineSymbol(symbols_math, main, rel, "\u2282", "\\subset", true);
|
|
4351
4409
|
defineSymbol(symbols_math, main, rel, "\u2283", "\\supset", true);
|
|
4352
4410
|
defineSymbol(symbols_math, main, rel, "\u2286", "\\subseteq", true);
|
|
@@ -4362,17 +4420,17 @@ defineSymbol(symbols_math, main, rel, "\u2192", "\\rightarrow", true);
|
|
|
4362
4420
|
defineSymbol(symbols_math, main, rel, "\u2192", "\\to");
|
|
4363
4421
|
defineSymbol(symbols_math, ams, rel, "\u2271", "\\ngeq", true);
|
|
4364
4422
|
defineSymbol(symbols_math, ams, rel, "\u2270", "\\nleq", true);
|
|
4365
|
-
defineSymbol(symbols_math, main,
|
|
4366
|
-
defineSymbol(symbols_math, main,
|
|
4367
|
-
defineSymbol(symbols_math, main,
|
|
4368
|
-
|
|
4369
|
-
defineSymbol(symbols_math, main,
|
|
4370
|
-
defineSymbol(symbols_text, main,
|
|
4371
|
-
defineSymbol(symbols_text, main,
|
|
4372
|
-
defineSymbol(symbols_text, main,
|
|
4373
|
-
defineSymbol(symbols_text, main,
|
|
4374
|
-
defineSymbol(symbols_math, main,
|
|
4375
|
-
defineSymbol(symbols_math, main,
|
|
4423
|
+
defineSymbol(symbols_math, main, symbols_spacing, "\xA0", "\\ ");
|
|
4424
|
+
defineSymbol(symbols_math, main, symbols_spacing, "\xA0", "~");
|
|
4425
|
+
defineSymbol(symbols_math, main, symbols_spacing, "\xA0", "\\space"); // Ref: LaTeX Source 2e: \DeclareRobustCommand{\nobreakspace}{%
|
|
4426
|
+
|
|
4427
|
+
defineSymbol(symbols_math, main, symbols_spacing, "\xA0", "\\nobreakspace");
|
|
4428
|
+
defineSymbol(symbols_text, main, symbols_spacing, "\xA0", "\\ ");
|
|
4429
|
+
defineSymbol(symbols_text, main, symbols_spacing, "\xA0", "~");
|
|
4430
|
+
defineSymbol(symbols_text, main, symbols_spacing, "\xA0", "\\space");
|
|
4431
|
+
defineSymbol(symbols_text, main, symbols_spacing, "\xA0", "\\nobreakspace");
|
|
4432
|
+
defineSymbol(symbols_math, main, symbols_spacing, null, "\\nobreak");
|
|
4433
|
+
defineSymbol(symbols_math, main, symbols_spacing, null, "\\allowbreak");
|
|
4376
4434
|
defineSymbol(symbols_math, main, punct, ",", ",");
|
|
4377
4435
|
defineSymbol(symbols_math, main, punct, ";", ";");
|
|
4378
4436
|
defineSymbol(symbols_math, ams, bin, "\u22BC", "\\barwedge", true);
|
|
@@ -4422,6 +4480,8 @@ defineSymbol(symbols_math, main, symbols_textord, "\u2225", "\\|");
|
|
|
4422
4480
|
defineSymbol(symbols_math, main, symbols_textord, "\u2225", "\\Vert");
|
|
4423
4481
|
defineSymbol(symbols_text, main, symbols_textord, "\u2225", "\\textbardbl");
|
|
4424
4482
|
defineSymbol(symbols_text, main, symbols_textord, "~", "\\textasciitilde");
|
|
4483
|
+
defineSymbol(symbols_text, main, symbols_textord, "\\", "\\textbackslash");
|
|
4484
|
+
defineSymbol(symbols_text, main, symbols_textord, "^", "\\textasciicircum");
|
|
4425
4485
|
defineSymbol(symbols_math, main, rel, "\u2191", "\\uparrow", true);
|
|
4426
4486
|
defineSymbol(symbols_math, main, rel, "\u21D1", "\\Uparrow", true);
|
|
4427
4487
|
defineSymbol(symbols_math, main, rel, "\u2193", "\\downarrow", true);
|
|
@@ -4535,9 +4595,9 @@ defineSymbol(symbols_text, main, mathord, "\xA3", "\\pounds");
|
|
|
4535
4595
|
defineSymbol(symbols_text, main, mathord, "\xA3", "\\textsterling", true);
|
|
4536
4596
|
defineSymbol(symbols_math, ams, symbols_textord, "\u2720", "\\maltese");
|
|
4537
4597
|
defineSymbol(symbols_text, ams, symbols_textord, "\u2720", "\\maltese");
|
|
4538
|
-
defineSymbol(symbols_text, main,
|
|
4539
|
-
defineSymbol(symbols_text, main,
|
|
4540
|
-
defineSymbol(symbols_text, main,
|
|
4598
|
+
defineSymbol(symbols_text, main, symbols_spacing, "\xA0", "\\ ");
|
|
4599
|
+
defineSymbol(symbols_text, main, symbols_spacing, "\xA0", " ");
|
|
4600
|
+
defineSymbol(symbols_text, main, symbols_spacing, "\xA0", "~"); // There are lots of symbols which are the same, so we add them in afterwards.
|
|
4541
4601
|
// All of these are textords in math mode
|
|
4542
4602
|
|
|
4543
4603
|
var mathTextSymbols = "0123456789/@.\"";
|
|
@@ -4564,62 +4624,81 @@ for (var symbols_i2 = 0; symbols_i2 < letters.length; symbols_i2++) {
|
|
|
4564
4624
|
|
|
4565
4625
|
defineSymbol(symbols_math, main, mathord, _ch2, _ch2);
|
|
4566
4626
|
defineSymbol(symbols_text, main, symbols_textord, _ch2, _ch2);
|
|
4567
|
-
} //
|
|
4627
|
+
} // Blackboard bold and script letters in Unicode range
|
|
4628
|
+
|
|
4629
|
+
|
|
4630
|
+
defineSymbol(symbols_math, ams, symbols_textord, "C", "\u2102"); // blackboard bold
|
|
4631
|
+
|
|
4632
|
+
defineSymbol(symbols_text, ams, symbols_textord, "C", "\u2102");
|
|
4633
|
+
defineSymbol(symbols_math, ams, symbols_textord, "H", "\u210D");
|
|
4634
|
+
defineSymbol(symbols_text, ams, symbols_textord, "H", "\u210D");
|
|
4635
|
+
defineSymbol(symbols_math, ams, symbols_textord, "N", "\u2115");
|
|
4636
|
+
defineSymbol(symbols_text, ams, symbols_textord, "N", "\u2115");
|
|
4637
|
+
defineSymbol(symbols_math, ams, symbols_textord, "P", "\u2119");
|
|
4638
|
+
defineSymbol(symbols_text, ams, symbols_textord, "P", "\u2119");
|
|
4639
|
+
defineSymbol(symbols_math, ams, symbols_textord, "Q", "\u211A");
|
|
4640
|
+
defineSymbol(symbols_text, ams, symbols_textord, "Q", "\u211A");
|
|
4641
|
+
defineSymbol(symbols_math, ams, symbols_textord, "R", "\u211D");
|
|
4642
|
+
defineSymbol(symbols_text, ams, symbols_textord, "R", "\u211D");
|
|
4643
|
+
defineSymbol(symbols_math, ams, symbols_textord, "Z", "\u2124");
|
|
4644
|
+
defineSymbol(symbols_text, ams, symbols_textord, "Z", "\u2124");
|
|
4645
|
+
defineSymbol(symbols_math, main, mathord, "h", "\u210E"); // italic h, Planck constant
|
|
4646
|
+
|
|
4647
|
+
defineSymbol(symbols_text, main, mathord, "h", "\u210E"); // The next loop loads wide (surrogate pair) characters.
|
|
4568
4648
|
// We support some letters in the Unicode range U+1D400 to U+1D7FF,
|
|
4569
4649
|
// Mathematical Alphanumeric Symbols.
|
|
4570
4650
|
// Some editors do not deal well with wide characters. So don't write the
|
|
4571
4651
|
// string into this file. Instead, create the string from the surrogate pair.
|
|
4572
4652
|
|
|
4573
|
-
|
|
4574
4653
|
var symbols_wideChar = "";
|
|
4575
4654
|
|
|
4576
|
-
for (var
|
|
4577
|
-
var _ch3 = letters.charAt(
|
|
4655
|
+
for (var symbols_i3 = 0; symbols_i3 < letters.length; symbols_i3++) {
|
|
4656
|
+
var _ch3 = letters.charAt(symbols_i3); // The hex numbers in the next line are a surrogate pair.
|
|
4578
4657
|
// 0xD835 is the high surrogate for all letters in the range we support.
|
|
4579
4658
|
// 0xDC00 is the low surrogate for bold A.
|
|
4580
4659
|
|
|
4581
4660
|
|
|
4582
|
-
symbols_wideChar = String.fromCharCode(0xD835, 0xDC00 +
|
|
4661
|
+
symbols_wideChar = String.fromCharCode(0xD835, 0xDC00 + symbols_i3); // A-Z a-z bold
|
|
4583
4662
|
|
|
4584
4663
|
defineSymbol(symbols_math, main, mathord, _ch3, symbols_wideChar);
|
|
4585
4664
|
defineSymbol(symbols_text, main, symbols_textord, _ch3, symbols_wideChar);
|
|
4586
|
-
symbols_wideChar = String.fromCharCode(0xD835, 0xDC34 +
|
|
4665
|
+
symbols_wideChar = String.fromCharCode(0xD835, 0xDC34 + symbols_i3); // A-Z a-z italic
|
|
4587
4666
|
|
|
4588
4667
|
defineSymbol(symbols_math, main, mathord, _ch3, symbols_wideChar);
|
|
4589
4668
|
defineSymbol(symbols_text, main, symbols_textord, _ch3, symbols_wideChar);
|
|
4590
|
-
symbols_wideChar = String.fromCharCode(0xD835, 0xDC68 +
|
|
4669
|
+
symbols_wideChar = String.fromCharCode(0xD835, 0xDC68 + symbols_i3); // A-Z a-z bold italic
|
|
4591
4670
|
|
|
4592
4671
|
defineSymbol(symbols_math, main, mathord, _ch3, symbols_wideChar);
|
|
4593
4672
|
defineSymbol(symbols_text, main, symbols_textord, _ch3, symbols_wideChar);
|
|
4594
|
-
symbols_wideChar = String.fromCharCode(0xD835, 0xDD04 +
|
|
4673
|
+
symbols_wideChar = String.fromCharCode(0xD835, 0xDD04 + symbols_i3); // A-Z a-z Fractur
|
|
4595
4674
|
|
|
4596
4675
|
defineSymbol(symbols_math, main, mathord, _ch3, symbols_wideChar);
|
|
4597
4676
|
defineSymbol(symbols_text, main, symbols_textord, _ch3, symbols_wideChar);
|
|
4598
|
-
symbols_wideChar = String.fromCharCode(0xD835, 0xDDA0 +
|
|
4677
|
+
symbols_wideChar = String.fromCharCode(0xD835, 0xDDA0 + symbols_i3); // A-Z a-z sans-serif
|
|
4599
4678
|
|
|
4600
4679
|
defineSymbol(symbols_math, main, mathord, _ch3, symbols_wideChar);
|
|
4601
4680
|
defineSymbol(symbols_text, main, symbols_textord, _ch3, symbols_wideChar);
|
|
4602
|
-
symbols_wideChar = String.fromCharCode(0xD835, 0xDDD4 +
|
|
4681
|
+
symbols_wideChar = String.fromCharCode(0xD835, 0xDDD4 + symbols_i3); // A-Z a-z sans bold
|
|
4603
4682
|
|
|
4604
4683
|
defineSymbol(symbols_math, main, mathord, _ch3, symbols_wideChar);
|
|
4605
4684
|
defineSymbol(symbols_text, main, symbols_textord, _ch3, symbols_wideChar);
|
|
4606
|
-
symbols_wideChar = String.fromCharCode(0xD835, 0xDE08 +
|
|
4685
|
+
symbols_wideChar = String.fromCharCode(0xD835, 0xDE08 + symbols_i3); // A-Z a-z sans italic
|
|
4607
4686
|
|
|
4608
4687
|
defineSymbol(symbols_math, main, mathord, _ch3, symbols_wideChar);
|
|
4609
4688
|
defineSymbol(symbols_text, main, symbols_textord, _ch3, symbols_wideChar);
|
|
4610
|
-
symbols_wideChar = String.fromCharCode(0xD835, 0xDE70 +
|
|
4689
|
+
symbols_wideChar = String.fromCharCode(0xD835, 0xDE70 + symbols_i3); // A-Z a-z monospace
|
|
4611
4690
|
|
|
4612
4691
|
defineSymbol(symbols_math, main, mathord, _ch3, symbols_wideChar);
|
|
4613
4692
|
defineSymbol(symbols_text, main, symbols_textord, _ch3, symbols_wideChar);
|
|
4614
4693
|
|
|
4615
|
-
if (
|
|
4694
|
+
if (symbols_i3 < 26) {
|
|
4616
4695
|
// KaTeX fonts have only capital letters for blackboard bold and script.
|
|
4617
4696
|
// See exception for k below.
|
|
4618
|
-
symbols_wideChar = String.fromCharCode(0xD835, 0xDD38 +
|
|
4697
|
+
symbols_wideChar = String.fromCharCode(0xD835, 0xDD38 + symbols_i3); // A-Z double struck
|
|
4619
4698
|
|
|
4620
4699
|
defineSymbol(symbols_math, main, mathord, _ch3, symbols_wideChar);
|
|
4621
4700
|
defineSymbol(symbols_text, main, symbols_textord, _ch3, symbols_wideChar);
|
|
4622
|
-
symbols_wideChar = String.fromCharCode(0xD835, 0xDC9C +
|
|
4701
|
+
symbols_wideChar = String.fromCharCode(0xD835, 0xDC9C + symbols_i3); // A-Z script
|
|
4623
4702
|
|
|
4624
4703
|
defineSymbol(symbols_math, main, mathord, _ch3, symbols_wideChar);
|
|
4625
4704
|
defineSymbol(symbols_text, main, symbols_textord, _ch3, symbols_wideChar);
|
|
@@ -4633,22 +4712,22 @@ symbols_wideChar = String.fromCharCode(0xD835, 0xDD5C); // k double struck
|
|
|
4633
4712
|
defineSymbol(symbols_math, main, mathord, "k", symbols_wideChar);
|
|
4634
4713
|
defineSymbol(symbols_text, main, symbols_textord, "k", symbols_wideChar); // Next, some wide character numerals
|
|
4635
4714
|
|
|
4636
|
-
for (var
|
|
4637
|
-
var _ch4 =
|
|
4715
|
+
for (var symbols_i4 = 0; symbols_i4 < 10; symbols_i4++) {
|
|
4716
|
+
var _ch4 = symbols_i4.toString();
|
|
4638
4717
|
|
|
4639
|
-
symbols_wideChar = String.fromCharCode(0xD835, 0xDFCE +
|
|
4718
|
+
symbols_wideChar = String.fromCharCode(0xD835, 0xDFCE + symbols_i4); // 0-9 bold
|
|
4640
4719
|
|
|
4641
4720
|
defineSymbol(symbols_math, main, mathord, _ch4, symbols_wideChar);
|
|
4642
4721
|
defineSymbol(symbols_text, main, symbols_textord, _ch4, symbols_wideChar);
|
|
4643
|
-
symbols_wideChar = String.fromCharCode(0xD835, 0xDFE2 +
|
|
4722
|
+
symbols_wideChar = String.fromCharCode(0xD835, 0xDFE2 + symbols_i4); // 0-9 sans serif
|
|
4644
4723
|
|
|
4645
4724
|
defineSymbol(symbols_math, main, mathord, _ch4, symbols_wideChar);
|
|
4646
4725
|
defineSymbol(symbols_text, main, symbols_textord, _ch4, symbols_wideChar);
|
|
4647
|
-
symbols_wideChar = String.fromCharCode(0xD835, 0xDFEC +
|
|
4726
|
+
symbols_wideChar = String.fromCharCode(0xD835, 0xDFEC + symbols_i4); // 0-9 bold sans
|
|
4648
4727
|
|
|
4649
4728
|
defineSymbol(symbols_math, main, mathord, _ch4, symbols_wideChar);
|
|
4650
4729
|
defineSymbol(symbols_text, main, symbols_textord, _ch4, symbols_wideChar);
|
|
4651
|
-
symbols_wideChar = String.fromCharCode(0xD835, 0xDFF6 +
|
|
4730
|
+
symbols_wideChar = String.fromCharCode(0xD835, 0xDFF6 + symbols_i4); // 0-9 monospace
|
|
4652
4731
|
|
|
4653
4732
|
defineSymbol(symbols_math, main, mathord, _ch4, symbols_wideChar);
|
|
4654
4733
|
defineSymbol(symbols_text, main, symbols_textord, _ch4, symbols_wideChar);
|
|
@@ -4784,7 +4863,8 @@ var sizeMultipliers = [// fontMetrics.js:getGlobalMetrics also uses size indexes
|
|
|
4784
4863
|
|
|
4785
4864
|
var sizeAtStyle = function sizeAtStyle(size, style) {
|
|
4786
4865
|
return style.size < 2 ? size : sizeStyleMap[size - 1][style.size - 1];
|
|
4787
|
-
};
|
|
4866
|
+
}; // In these types, "" (empty string) means "no change".
|
|
4867
|
+
|
|
4788
4868
|
|
|
4789
4869
|
/**
|
|
4790
4870
|
* This is the main options class. It contains the current style, size, color,
|
|
@@ -4858,12 +4938,12 @@ function () {
|
|
|
4858
4938
|
}
|
|
4859
4939
|
|
|
4860
4940
|
return new Options(data);
|
|
4861
|
-
}
|
|
4941
|
+
}
|
|
4862
4942
|
/**
|
|
4863
4943
|
* Return an options object with the given style. If `this.style === style`,
|
|
4864
4944
|
* returns `this`.
|
|
4865
4945
|
*/
|
|
4866
|
-
|
|
4946
|
+
;
|
|
4867
4947
|
|
|
4868
4948
|
_proto.havingStyle = function havingStyle(style) {
|
|
4869
4949
|
if (this.style === style) {
|
|
@@ -4874,21 +4954,21 @@ function () {
|
|
|
4874
4954
|
size: sizeAtStyle(this.textSize, style)
|
|
4875
4955
|
});
|
|
4876
4956
|
}
|
|
4877
|
-
}
|
|
4957
|
+
}
|
|
4878
4958
|
/**
|
|
4879
4959
|
* Return an options object with a cramped version of the current style. If
|
|
4880
4960
|
* the current style is cramped, returns `this`.
|
|
4881
4961
|
*/
|
|
4882
|
-
|
|
4962
|
+
;
|
|
4883
4963
|
|
|
4884
4964
|
_proto.havingCrampedStyle = function havingCrampedStyle() {
|
|
4885
4965
|
return this.havingStyle(this.style.cramp());
|
|
4886
|
-
}
|
|
4966
|
+
}
|
|
4887
4967
|
/**
|
|
4888
4968
|
* Return an options object with the given size and in at least `\textstyle`.
|
|
4889
4969
|
* Returns `this` if appropriate.
|
|
4890
4970
|
*/
|
|
4891
|
-
|
|
4971
|
+
;
|
|
4892
4972
|
|
|
4893
4973
|
_proto.havingSize = function havingSize(size) {
|
|
4894
4974
|
if (this.size === size && this.textSize === size) {
|
|
@@ -4901,12 +4981,12 @@ function () {
|
|
|
4901
4981
|
sizeMultiplier: sizeMultipliers[size - 1]
|
|
4902
4982
|
});
|
|
4903
4983
|
}
|
|
4904
|
-
}
|
|
4984
|
+
}
|
|
4905
4985
|
/**
|
|
4906
4986
|
* Like `this.havingSize(BASESIZE).havingStyle(style)`. If `style` is omitted,
|
|
4907
4987
|
* changes to at least `\textstyle`.
|
|
4908
4988
|
*/
|
|
4909
|
-
|
|
4989
|
+
;
|
|
4910
4990
|
|
|
4911
4991
|
_proto.havingBaseStyle = function havingBaseStyle(style) {
|
|
4912
4992
|
style = style || this.style.text();
|
|
@@ -4920,12 +5000,12 @@ function () {
|
|
|
4920
5000
|
size: wantSize
|
|
4921
5001
|
});
|
|
4922
5002
|
}
|
|
4923
|
-
}
|
|
5003
|
+
}
|
|
4924
5004
|
/**
|
|
4925
5005
|
* Remove the effect of sizing changes such as \Huge.
|
|
4926
5006
|
* Keep the effect of the current style, such as \scriptstyle.
|
|
4927
5007
|
*/
|
|
4928
|
-
|
|
5008
|
+
;
|
|
4929
5009
|
|
|
4930
5010
|
_proto.havingBaseSizing = function havingBaseSizing() {
|
|
4931
5011
|
var size;
|
|
@@ -4952,76 +5032,76 @@ function () {
|
|
|
4952
5032
|
style: this.style.text(),
|
|
4953
5033
|
size: size
|
|
4954
5034
|
});
|
|
4955
|
-
}
|
|
5035
|
+
}
|
|
4956
5036
|
/**
|
|
4957
5037
|
* Create a new options object with the given color.
|
|
4958
5038
|
*/
|
|
4959
|
-
|
|
5039
|
+
;
|
|
4960
5040
|
|
|
4961
5041
|
_proto.withColor = function withColor(color) {
|
|
4962
5042
|
return this.extend({
|
|
4963
5043
|
color: color
|
|
4964
5044
|
});
|
|
4965
|
-
}
|
|
5045
|
+
}
|
|
4966
5046
|
/**
|
|
4967
5047
|
* Create a new options object with "phantom" set to true.
|
|
4968
5048
|
*/
|
|
4969
|
-
|
|
5049
|
+
;
|
|
4970
5050
|
|
|
4971
5051
|
_proto.withPhantom = function withPhantom() {
|
|
4972
5052
|
return this.extend({
|
|
4973
5053
|
phantom: true
|
|
4974
5054
|
});
|
|
4975
|
-
}
|
|
5055
|
+
}
|
|
4976
5056
|
/**
|
|
4977
5057
|
* Creates a new options object with the given math font or old text font.
|
|
4978
5058
|
* @type {[type]}
|
|
4979
5059
|
*/
|
|
4980
|
-
|
|
5060
|
+
;
|
|
4981
5061
|
|
|
4982
5062
|
_proto.withFont = function withFont(font) {
|
|
4983
5063
|
return this.extend({
|
|
4984
5064
|
font: font
|
|
4985
5065
|
});
|
|
4986
|
-
}
|
|
5066
|
+
}
|
|
4987
5067
|
/**
|
|
4988
5068
|
* Create a new options objects with the given fontFamily.
|
|
4989
5069
|
*/
|
|
4990
|
-
|
|
5070
|
+
;
|
|
4991
5071
|
|
|
4992
5072
|
_proto.withTextFontFamily = function withTextFontFamily(fontFamily) {
|
|
4993
5073
|
return this.extend({
|
|
4994
5074
|
fontFamily: fontFamily,
|
|
4995
5075
|
font: ""
|
|
4996
5076
|
});
|
|
4997
|
-
}
|
|
5077
|
+
}
|
|
4998
5078
|
/**
|
|
4999
5079
|
* Creates a new options object with the given font weight
|
|
5000
5080
|
*/
|
|
5001
|
-
|
|
5081
|
+
;
|
|
5002
5082
|
|
|
5003
5083
|
_proto.withTextFontWeight = function withTextFontWeight(fontWeight) {
|
|
5004
5084
|
return this.extend({
|
|
5005
5085
|
fontWeight: fontWeight,
|
|
5006
5086
|
font: ""
|
|
5007
5087
|
});
|
|
5008
|
-
}
|
|
5088
|
+
}
|
|
5009
5089
|
/**
|
|
5010
5090
|
* Creates a new options object with the given font weight
|
|
5011
5091
|
*/
|
|
5012
|
-
|
|
5092
|
+
;
|
|
5013
5093
|
|
|
5014
5094
|
_proto.withTextFontShape = function withTextFontShape(fontShape) {
|
|
5015
5095
|
return this.extend({
|
|
5016
5096
|
fontShape: fontShape,
|
|
5017
5097
|
font: ""
|
|
5018
5098
|
});
|
|
5019
|
-
}
|
|
5099
|
+
}
|
|
5020
5100
|
/**
|
|
5021
5101
|
* Return the CSS sizing classes required to switch from enclosing options
|
|
5022
5102
|
* `oldOptions` to `this`. Returns an array of classes.
|
|
5023
5103
|
*/
|
|
5024
|
-
|
|
5104
|
+
;
|
|
5025
5105
|
|
|
5026
5106
|
_proto.sizingClasses = function sizingClasses(oldOptions) {
|
|
5027
5107
|
if (oldOptions.size !== this.size) {
|
|
@@ -5029,12 +5109,12 @@ function () {
|
|
|
5029
5109
|
} else {
|
|
5030
5110
|
return [];
|
|
5031
5111
|
}
|
|
5032
|
-
}
|
|
5112
|
+
}
|
|
5033
5113
|
/**
|
|
5034
5114
|
* Return the CSS sizing classes required to switch to the base size. Like
|
|
5035
5115
|
* `this.havingSize(BASESIZE).sizingClasses(this)`.
|
|
5036
5116
|
*/
|
|
5037
|
-
|
|
5117
|
+
;
|
|
5038
5118
|
|
|
5039
5119
|
_proto.baseSizingClasses = function baseSizingClasses() {
|
|
5040
5120
|
if (this.size !== Options.BASESIZE) {
|
|
@@ -5042,11 +5122,11 @@ function () {
|
|
|
5042
5122
|
} else {
|
|
5043
5123
|
return [];
|
|
5044
5124
|
}
|
|
5045
|
-
}
|
|
5125
|
+
}
|
|
5046
5126
|
/**
|
|
5047
5127
|
* Return the font metrics for this size.
|
|
5048
5128
|
*/
|
|
5049
|
-
|
|
5129
|
+
;
|
|
5050
5130
|
|
|
5051
5131
|
_proto.fontMetrics = function fontMetrics() {
|
|
5052
5132
|
if (!this._fontMetrics) {
|
|
@@ -5054,22 +5134,15 @@ function () {
|
|
|
5054
5134
|
}
|
|
5055
5135
|
|
|
5056
5136
|
return this._fontMetrics;
|
|
5057
|
-
}
|
|
5137
|
+
}
|
|
5058
5138
|
/**
|
|
5059
|
-
*
|
|
5060
|
-
* TODO(emily): Remove this when we have real macros
|
|
5139
|
+
* Gets the CSS color of the current options object
|
|
5061
5140
|
*/
|
|
5141
|
+
;
|
|
5062
5142
|
|
|
5063
|
-
|
|
5064
|
-
/**
|
|
5065
|
-
* Gets the CSS color of the current options object, accounting for the
|
|
5066
|
-
* `colorMap`.
|
|
5067
|
-
*/
|
|
5068
5143
|
_proto.getColor = function getColor() {
|
|
5069
5144
|
if (this.phantom) {
|
|
5070
5145
|
return "transparent";
|
|
5071
|
-
} else if (this.color != null && Options.colorMap.hasOwnProperty(this.color)) {
|
|
5072
|
-
return Options.colorMap[this.color];
|
|
5073
5146
|
} else {
|
|
5074
5147
|
return this.color;
|
|
5075
5148
|
}
|
|
@@ -5079,64 +5152,6 @@ function () {
|
|
|
5079
5152
|
}();
|
|
5080
5153
|
|
|
5081
5154
|
Options_Options.BASESIZE = 6;
|
|
5082
|
-
Options_Options.colorMap = {
|
|
5083
|
-
"katex-blue": "#6495ed",
|
|
5084
|
-
"katex-orange": "#ffa500",
|
|
5085
|
-
"katex-pink": "#ff00af",
|
|
5086
|
-
"katex-red": "#df0030",
|
|
5087
|
-
"katex-green": "#28ae7b",
|
|
5088
|
-
"katex-gray": "gray",
|
|
5089
|
-
"katex-purple": "#9d38bd",
|
|
5090
|
-
"katex-blueA": "#ccfaff",
|
|
5091
|
-
"katex-blueB": "#80f6ff",
|
|
5092
|
-
"katex-blueC": "#63d9ea",
|
|
5093
|
-
"katex-blueD": "#11accd",
|
|
5094
|
-
"katex-blueE": "#0c7f99",
|
|
5095
|
-
"katex-tealA": "#94fff5",
|
|
5096
|
-
"katex-tealB": "#26edd5",
|
|
5097
|
-
"katex-tealC": "#01d1c1",
|
|
5098
|
-
"katex-tealD": "#01a995",
|
|
5099
|
-
"katex-tealE": "#208170",
|
|
5100
|
-
"katex-greenA": "#b6ffb0",
|
|
5101
|
-
"katex-greenB": "#8af281",
|
|
5102
|
-
"katex-greenC": "#74cf70",
|
|
5103
|
-
"katex-greenD": "#1fab54",
|
|
5104
|
-
"katex-greenE": "#0d923f",
|
|
5105
|
-
"katex-goldA": "#ffd0a9",
|
|
5106
|
-
"katex-goldB": "#ffbb71",
|
|
5107
|
-
"katex-goldC": "#ff9c39",
|
|
5108
|
-
"katex-goldD": "#e07d10",
|
|
5109
|
-
"katex-goldE": "#a75a05",
|
|
5110
|
-
"katex-redA": "#fca9a9",
|
|
5111
|
-
"katex-redB": "#ff8482",
|
|
5112
|
-
"katex-redC": "#f9685d",
|
|
5113
|
-
"katex-redD": "#e84d39",
|
|
5114
|
-
"katex-redE": "#bc2612",
|
|
5115
|
-
"katex-maroonA": "#ffbde0",
|
|
5116
|
-
"katex-maroonB": "#ff92c6",
|
|
5117
|
-
"katex-maroonC": "#ed5fa6",
|
|
5118
|
-
"katex-maroonD": "#ca337c",
|
|
5119
|
-
"katex-maroonE": "#9e034e",
|
|
5120
|
-
"katex-purpleA": "#ddd7ff",
|
|
5121
|
-
"katex-purpleB": "#c6b9fc",
|
|
5122
|
-
"katex-purpleC": "#aa87ff",
|
|
5123
|
-
"katex-purpleD": "#7854ab",
|
|
5124
|
-
"katex-purpleE": "#543b78",
|
|
5125
|
-
"katex-mintA": "#f5f9e8",
|
|
5126
|
-
"katex-mintB": "#edf2df",
|
|
5127
|
-
"katex-mintC": "#e0e5cc",
|
|
5128
|
-
"katex-grayA": "#f6f7f7",
|
|
5129
|
-
"katex-grayB": "#f0f1f2",
|
|
5130
|
-
"katex-grayC": "#e3e5e6",
|
|
5131
|
-
"katex-grayD": "#d6d8da",
|
|
5132
|
-
"katex-grayE": "#babec2",
|
|
5133
|
-
"katex-grayF": "#888d93",
|
|
5134
|
-
"katex-grayG": "#626569",
|
|
5135
|
-
"katex-grayH": "#3b3e40",
|
|
5136
|
-
"katex-grayI": "#21242c",
|
|
5137
|
-
"katex-kaBlue": "#314453",
|
|
5138
|
-
"katex-kaGreen": "#71B307"
|
|
5139
|
-
};
|
|
5140
5155
|
/* harmony default export */ var src_Options = (Options_Options);
|
|
5141
5156
|
// CONCATENATED MODULE: ./src/units.js
|
|
5142
5157
|
/**
|
|
@@ -6270,25 +6285,8 @@ var buildHTML_makeSpan = buildCommon.makeSpan; // Binary atoms (first class `mbi
|
|
|
6270
6285
|
// depending on their surroundings. See TeXbook pg. 442-446, Rules 5 and 6,
|
|
6271
6286
|
// and the text before Rule 19.
|
|
6272
6287
|
|
|
6273
|
-
var
|
|
6274
|
-
|
|
6275
|
-
// of its `classes` array. A later cleanup should ensure this, for
|
|
6276
|
-
// instance by changing the signature of `makeSpan`.
|
|
6277
|
-
if (node) {
|
|
6278
|
-
return utils.contains(["mbin", "mopen", "mrel", "mop", "mpunct"], getTypeOfDomTree(node, "right"));
|
|
6279
|
-
} else {
|
|
6280
|
-
return isRealGroup;
|
|
6281
|
-
}
|
|
6282
|
-
};
|
|
6283
|
-
|
|
6284
|
-
var buildHTML_isBinRightCanceller = function isBinRightCanceller(node, isRealGroup) {
|
|
6285
|
-
if (node) {
|
|
6286
|
-
return utils.contains(["mrel", "mclose", "mpunct"], getTypeOfDomTree(node, "left"));
|
|
6287
|
-
} else {
|
|
6288
|
-
return isRealGroup;
|
|
6289
|
-
}
|
|
6290
|
-
};
|
|
6291
|
-
|
|
6288
|
+
var binLeftCanceller = ["leftmost", "mbin", "mopen", "mrel", "mop", "mpunct"];
|
|
6289
|
+
var binRightCanceller = ["rightmost", "mrel", "mclose", "mpunct"];
|
|
6292
6290
|
var buildHTML_styleMap = {
|
|
6293
6291
|
"display": src_Style.DISPLAY,
|
|
6294
6292
|
"text": src_Style.TEXT,
|
|
@@ -6320,114 +6318,159 @@ var buildHTML_buildExpression = function buildExpression(expression, options, is
|
|
|
6320
6318
|
}
|
|
6321
6319
|
|
|
6322
6320
|
// Parse expressions into `groups`.
|
|
6323
|
-
var
|
|
6321
|
+
var groups = [];
|
|
6324
6322
|
|
|
6325
6323
|
for (var i = 0; i < expression.length; i++) {
|
|
6326
6324
|
var output = buildHTML_buildGroup(expression[i], options);
|
|
6327
6325
|
|
|
6328
6326
|
if (output instanceof tree_DocumentFragment) {
|
|
6329
6327
|
var children = output.children;
|
|
6330
|
-
|
|
6328
|
+
groups.push.apply(groups, children);
|
|
6331
6329
|
} else {
|
|
6332
|
-
|
|
6330
|
+
groups.push(output);
|
|
6333
6331
|
}
|
|
6334
|
-
} //
|
|
6335
|
-
//
|
|
6336
|
-
// spacing should go between atoms of different classes, and add dummy
|
|
6337
|
-
// spans for determining spacings between surrounding atoms.
|
|
6332
|
+
} // If `expression` is a partial group, let the parent handle spacings
|
|
6333
|
+
// to avoid processing groups multiple times.
|
|
6338
6334
|
|
|
6339
6335
|
|
|
6340
|
-
|
|
6341
|
-
return
|
|
6342
|
-
}
|
|
6343
|
-
// Binary operators change to ordinary symbols in some contexts.
|
|
6336
|
+
if (!isRealGroup) {
|
|
6337
|
+
return groups;
|
|
6338
|
+
}
|
|
6344
6339
|
|
|
6345
|
-
|
|
6346
|
-
var nonSpacesI = assert(nonSpaces[_i]);
|
|
6347
|
-
var left = buildHTML_getOutermostNode(nonSpacesI, "left");
|
|
6340
|
+
var glueOptions = options;
|
|
6348
6341
|
|
|
6349
|
-
|
|
6350
|
-
|
|
6342
|
+
if (expression.length === 1) {
|
|
6343
|
+
var node = checkNodeType(expression[0], "sizing") || checkNodeType(expression[0], "styling");
|
|
6344
|
+
|
|
6345
|
+
if (!node) {// No match.
|
|
6346
|
+
} else if (node.type === "sizing") {
|
|
6347
|
+
glueOptions = options.havingSize(node.size);
|
|
6348
|
+
} else if (node.type === "styling") {
|
|
6349
|
+
glueOptions = options.havingStyle(buildHTML_styleMap[node.style]);
|
|
6351
6350
|
}
|
|
6351
|
+
} // Dummy spans for determining spacings between surrounding atoms.
|
|
6352
|
+
// If `expression` has no atoms on the left or right, class "leftmost"
|
|
6353
|
+
// or "rightmost", respectively, is used to indicate it.
|
|
6354
|
+
|
|
6355
|
+
|
|
6356
|
+
var dummyPrev = buildHTML_makeSpan([surrounding[0] || "leftmost"], [], options);
|
|
6357
|
+
var dummyNext = buildHTML_makeSpan([surrounding[1] || "rightmost"], [], options); // TODO: These code assumes that a node's math class is the first element
|
|
6358
|
+
// of its `classes` array. A later cleanup should ensure this, for
|
|
6359
|
+
// instance by changing the signature of `makeSpan`.
|
|
6360
|
+
// Before determining what spaces to insert, perform bin cancellation.
|
|
6361
|
+
// Binary operators change to ordinary symbols in some contexts.
|
|
6352
6362
|
|
|
6353
|
-
|
|
6363
|
+
traverseNonSpaceNodes(groups, function (node, prev) {
|
|
6364
|
+
var prevType = prev.classes[0];
|
|
6365
|
+
var type = node.classes[0];
|
|
6354
6366
|
|
|
6355
|
-
if (
|
|
6356
|
-
|
|
6367
|
+
if (prevType === "mbin" && utils.contains(binRightCanceller, type)) {
|
|
6368
|
+
prev.classes[0] = "mord";
|
|
6369
|
+
} else if (type === "mbin" && utils.contains(binLeftCanceller, prevType)) {
|
|
6370
|
+
node.classes[0] = "mord";
|
|
6357
6371
|
}
|
|
6358
|
-
}
|
|
6372
|
+
}, {
|
|
6373
|
+
node: dummyPrev
|
|
6374
|
+
}, dummyNext);
|
|
6375
|
+
traverseNonSpaceNodes(groups, function (node, prev) {
|
|
6376
|
+
var prevType = getTypeOfDomTree(prev);
|
|
6377
|
+
var type = getTypeOfDomTree(node); // 'mtight' indicates that the node is script or scriptscript style.
|
|
6359
6378
|
|
|
6360
|
-
|
|
6361
|
-
var j = 0;
|
|
6379
|
+
var space = prevType && type ? node.hasClass("mtight") ? tightSpacings[prevType][type] : spacings[prevType][type] : null;
|
|
6362
6380
|
|
|
6363
|
-
|
|
6364
|
-
|
|
6365
|
-
|
|
6366
|
-
|
|
6381
|
+
if (space) {
|
|
6382
|
+
// Insert glue (spacing) after the `prev`.
|
|
6383
|
+
return buildCommon.makeGlue(space, glueOptions);
|
|
6384
|
+
}
|
|
6385
|
+
}, {
|
|
6386
|
+
node: dummyPrev
|
|
6387
|
+
}, dummyNext);
|
|
6388
|
+
return groups;
|
|
6389
|
+
}; // Depth-first traverse non-space `nodes`, calling `callback` with the current and
|
|
6390
|
+
// previous node as arguments, optionally returning a node to insert after the
|
|
6391
|
+
// previous node. `prev` is an object with the previous node and `insertAfter`
|
|
6392
|
+
// function to insert after it. `next` is a node that will be added to the right.
|
|
6393
|
+
// Used for bin cancellation and inserting spacings.
|
|
6394
|
+
|
|
6395
|
+
var traverseNonSpaceNodes = function traverseNonSpaceNodes(nodes, callback, prev, next) {
|
|
6396
|
+
if (next) {
|
|
6397
|
+
// temporarily append the right node, if exists
|
|
6398
|
+
nodes.push(next);
|
|
6399
|
+
}
|
|
6367
6400
|
|
|
6368
|
-
|
|
6369
|
-
// if current non-space node is left dummy span, add a glue before
|
|
6370
|
-
// first real non-space node
|
|
6371
|
-
if (j === 0) {
|
|
6372
|
-
groups.pop();
|
|
6373
|
-
_i2--;
|
|
6374
|
-
} // Get the type of the current non-space node. If it's a document
|
|
6375
|
-
// fragment, get the type of the rightmost node in the fragment.
|
|
6401
|
+
var i = 0;
|
|
6376
6402
|
|
|
6403
|
+
for (; i < nodes.length; i++) {
|
|
6404
|
+
var node = nodes[i];
|
|
6405
|
+
var partialGroup = buildHTML_checkPartialGroup(node);
|
|
6377
6406
|
|
|
6378
|
-
|
|
6379
|
-
//
|
|
6407
|
+
if (partialGroup) {
|
|
6408
|
+
// Recursive DFS
|
|
6409
|
+
traverseNonSpaceNodes(partialGroup.children, callback, prev);
|
|
6410
|
+
continue;
|
|
6411
|
+
} // Ignore explicit spaces (e.g., \;, \,) when determining what implicit
|
|
6412
|
+
// spacing should go between atoms of different classes
|
|
6380
6413
|
|
|
6381
6414
|
|
|
6382
|
-
|
|
6383
|
-
|
|
6384
|
-
|
|
6415
|
+
if (node.classes[0] === "mspace") {
|
|
6416
|
+
continue;
|
|
6417
|
+
}
|
|
6385
6418
|
|
|
6419
|
+
var result = callback(node, prev.node);
|
|
6386
6420
|
|
|
6387
|
-
|
|
6388
|
-
|
|
6389
|
-
|
|
6421
|
+
if (result) {
|
|
6422
|
+
if (prev.insertAfter) {
|
|
6423
|
+
prev.insertAfter(result);
|
|
6424
|
+
} else {
|
|
6425
|
+
// insert at front
|
|
6426
|
+
nodes.unshift(result);
|
|
6427
|
+
i++;
|
|
6428
|
+
}
|
|
6429
|
+
}
|
|
6390
6430
|
|
|
6391
|
-
|
|
6392
|
-
var glueOptions = options;
|
|
6431
|
+
prev.node = node;
|
|
6393
6432
|
|
|
6394
|
-
|
|
6395
|
-
|
|
6433
|
+
prev.insertAfter = function (index) {
|
|
6434
|
+
return function (n) {
|
|
6435
|
+
nodes.splice(index + 1, 0, n);
|
|
6436
|
+
i++;
|
|
6437
|
+
};
|
|
6438
|
+
}(i);
|
|
6439
|
+
}
|
|
6396
6440
|
|
|
6397
|
-
|
|
6398
|
-
|
|
6399
|
-
|
|
6400
|
-
|
|
6401
|
-
glueOptions = options.havingStyle(buildHTML_styleMap[node.style]);
|
|
6402
|
-
}
|
|
6403
|
-
}
|
|
6441
|
+
if (next) {
|
|
6442
|
+
nodes.pop();
|
|
6443
|
+
}
|
|
6444
|
+
}; // Check if given node is a partial group, i.e., does not affect spacing around.
|
|
6404
6445
|
|
|
6405
|
-
groups.push(buildCommon.makeGlue(space, glueOptions));
|
|
6406
|
-
}
|
|
6407
|
-
}
|
|
6408
6446
|
|
|
6409
|
-
|
|
6410
|
-
|
|
6447
|
+
var buildHTML_checkPartialGroup = function checkPartialGroup(node) {
|
|
6448
|
+
if (node instanceof tree_DocumentFragment || node instanceof domTree_Anchor) {
|
|
6449
|
+
return node;
|
|
6411
6450
|
}
|
|
6412
6451
|
|
|
6413
|
-
return
|
|
6452
|
+
return null;
|
|
6414
6453
|
}; // Return the outermost node of a domTree.
|
|
6415
6454
|
|
|
6416
|
-
|
|
6417
|
-
|
|
6418
|
-
|
|
6455
|
+
|
|
6456
|
+
var getOutermostNode = function getOutermostNode(node, side) {
|
|
6457
|
+
var partialGroup = buildHTML_checkPartialGroup(node);
|
|
6458
|
+
|
|
6459
|
+
if (partialGroup) {
|
|
6460
|
+
var children = partialGroup.children;
|
|
6419
6461
|
|
|
6420
6462
|
if (children.length) {
|
|
6421
6463
|
if (side === "right") {
|
|
6422
6464
|
return getOutermostNode(children[children.length - 1], "right");
|
|
6423
6465
|
} else if (side === "left") {
|
|
6424
|
-
return getOutermostNode(children[0], "
|
|
6466
|
+
return getOutermostNode(children[0], "left");
|
|
6425
6467
|
}
|
|
6426
6468
|
}
|
|
6427
6469
|
}
|
|
6428
6470
|
|
|
6429
6471
|
return node;
|
|
6430
6472
|
}; // Return math atom class (mclass) of a domTree.
|
|
6473
|
+
// If `side` is given, it will get the type of the outermost node at given side.
|
|
6431
6474
|
|
|
6432
6475
|
|
|
6433
6476
|
var getTypeOfDomTree = function getTypeOfDomTree(node, side) {
|
|
@@ -6435,18 +6478,13 @@ var getTypeOfDomTree = function getTypeOfDomTree(node, side) {
|
|
|
6435
6478
|
return null;
|
|
6436
6479
|
}
|
|
6437
6480
|
|
|
6438
|
-
|
|
6481
|
+
if (side) {
|
|
6482
|
+
node = getOutermostNode(node, side);
|
|
6483
|
+
} // This makes a lot of assumptions as to where the type of atom
|
|
6439
6484
|
// appears. We should do a better job of enforcing this.
|
|
6440
6485
|
|
|
6486
|
+
|
|
6441
6487
|
return DomEnum[node.classes[0]] || null;
|
|
6442
|
-
}; // If `node` is an atom return whether it's been assigned the mtight class.
|
|
6443
|
-
// If `node` is a document fragment, return the value of isLeftTight() for the
|
|
6444
|
-
// leftmost node in the fragment.
|
|
6445
|
-
// 'mtight' indicates that the node is script or scriptscript style.
|
|
6446
|
-
|
|
6447
|
-
var isLeftTight = function isLeftTight(node) {
|
|
6448
|
-
node = buildHTML_getOutermostNode(node, "left");
|
|
6449
|
-
return node.hasClass("mtight");
|
|
6450
6488
|
};
|
|
6451
6489
|
var makeNullDelimiter = function makeNullDelimiter(options, classes) {
|
|
6452
6490
|
var moreClasses = ["nulldelimiter"].concat(options.baseSizingClasses());
|
|
@@ -6534,10 +6572,10 @@ function buildHTML(tree, options) {
|
|
|
6534
6572
|
|
|
6535
6573
|
if (expression[i].hasClass("mbin") || expression[i].hasClass("mrel") || expression[i].hasClass("allowbreak")) {
|
|
6536
6574
|
// Put any post-operator glue on same line as operator.
|
|
6537
|
-
// Watch for \nobreak along the way.
|
|
6575
|
+
// Watch for \nobreak along the way, and stop at \newline.
|
|
6538
6576
|
var nobreak = false;
|
|
6539
6577
|
|
|
6540
|
-
while (i < expression.length - 1 && expression[i + 1].hasClass("mspace")) {
|
|
6578
|
+
while (i < expression.length - 1 && expression[i + 1].hasClass("mspace") && !expression[i + 1].hasClass("newline")) {
|
|
6541
6579
|
i++;
|
|
6542
6580
|
parts.push(expression[i]);
|
|
6543
6581
|
|
|
@@ -6632,19 +6670,19 @@ function () {
|
|
|
6632
6670
|
|
|
6633
6671
|
_proto.setAttribute = function setAttribute(name, value) {
|
|
6634
6672
|
this.attributes[name] = value;
|
|
6635
|
-
}
|
|
6673
|
+
}
|
|
6636
6674
|
/**
|
|
6637
6675
|
* Gets an attribute on a MathML node.
|
|
6638
6676
|
*/
|
|
6639
|
-
|
|
6677
|
+
;
|
|
6640
6678
|
|
|
6641
6679
|
_proto.getAttribute = function getAttribute(name) {
|
|
6642
6680
|
return this.attributes[name];
|
|
6643
|
-
}
|
|
6681
|
+
}
|
|
6644
6682
|
/**
|
|
6645
6683
|
* Converts the math node into a MathML-namespaced DOM element.
|
|
6646
6684
|
*/
|
|
6647
|
-
|
|
6685
|
+
;
|
|
6648
6686
|
|
|
6649
6687
|
_proto.toNode = function toNode() {
|
|
6650
6688
|
var node = document.createElementNS("http://www.w3.org/1998/Math/MathML", this.type);
|
|
@@ -6660,11 +6698,11 @@ function () {
|
|
|
6660
6698
|
}
|
|
6661
6699
|
|
|
6662
6700
|
return node;
|
|
6663
|
-
}
|
|
6701
|
+
}
|
|
6664
6702
|
/**
|
|
6665
6703
|
* Converts the math node into an HTML markup string.
|
|
6666
6704
|
*/
|
|
6667
|
-
|
|
6705
|
+
;
|
|
6668
6706
|
|
|
6669
6707
|
_proto.toMarkup = function toMarkup() {
|
|
6670
6708
|
var markup = "<" + this.type; // Add the attributes
|
|
@@ -6685,11 +6723,11 @@ function () {
|
|
|
6685
6723
|
|
|
6686
6724
|
markup += "</" + this.type + ">";
|
|
6687
6725
|
return markup;
|
|
6688
|
-
}
|
|
6726
|
+
}
|
|
6689
6727
|
/**
|
|
6690
6728
|
* Converts the math node into a string, similar to innerText, but escaped.
|
|
6691
6729
|
*/
|
|
6692
|
-
|
|
6730
|
+
;
|
|
6693
6731
|
|
|
6694
6732
|
_proto.toText = function toText() {
|
|
6695
6733
|
return this.children.map(function (child) {
|
|
@@ -6706,15 +6744,9 @@ function () {
|
|
|
6706
6744
|
var mathMLTree_TextNode =
|
|
6707
6745
|
/*#__PURE__*/
|
|
6708
6746
|
function () {
|
|
6709
|
-
function TextNode(text
|
|
6710
|
-
if (needsEscape === void 0) {
|
|
6711
|
-
needsEscape = true;
|
|
6712
|
-
}
|
|
6713
|
-
|
|
6747
|
+
function TextNode(text) {
|
|
6714
6748
|
this.text = void 0;
|
|
6715
|
-
this.needsEscape = void 0;
|
|
6716
6749
|
this.text = text;
|
|
6717
|
-
this.needsEscape = needsEscape;
|
|
6718
6750
|
}
|
|
6719
6751
|
/**
|
|
6720
6752
|
* Converts the text node into a DOM text node.
|
|
@@ -6724,25 +6756,25 @@ function () {
|
|
|
6724
6756
|
var _proto2 = TextNode.prototype;
|
|
6725
6757
|
|
|
6726
6758
|
_proto2.toNode = function toNode() {
|
|
6727
|
-
return document.createTextNode(this.
|
|
6728
|
-
}
|
|
6759
|
+
return document.createTextNode(this.text);
|
|
6760
|
+
}
|
|
6729
6761
|
/**
|
|
6730
6762
|
* Converts the text node into escaped HTML markup
|
|
6731
6763
|
* (representing the text itself).
|
|
6732
6764
|
*/
|
|
6733
|
-
|
|
6765
|
+
;
|
|
6734
6766
|
|
|
6735
6767
|
_proto2.toMarkup = function toMarkup() {
|
|
6736
|
-
return this.toText();
|
|
6737
|
-
}
|
|
6768
|
+
return utils.escape(this.toText());
|
|
6769
|
+
}
|
|
6738
6770
|
/**
|
|
6739
|
-
* Converts the text node into
|
|
6771
|
+
* Converts the text node into a string
|
|
6740
6772
|
* (representing the text iteself).
|
|
6741
6773
|
*/
|
|
6742
|
-
|
|
6774
|
+
;
|
|
6743
6775
|
|
|
6744
6776
|
_proto2.toText = function toText() {
|
|
6745
|
-
return this.
|
|
6777
|
+
return this.text;
|
|
6746
6778
|
};
|
|
6747
6779
|
|
|
6748
6780
|
return TextNode;
|
|
@@ -6762,26 +6794,26 @@ function () {
|
|
|
6762
6794
|
this.width = void 0;
|
|
6763
6795
|
this.character = void 0;
|
|
6764
6796
|
this.width = width; // See https://www.w3.org/TR/2000/WD-MathML2-20000328/chapter6.html
|
|
6765
|
-
// for a table of space-like characters. We
|
|
6766
|
-
// &LongNames;
|
|
6767
|
-
//
|
|
6797
|
+
// for a table of space-like characters. We use Unicode
|
|
6798
|
+
// representations instead of &LongNames; as it's not clear how to
|
|
6799
|
+
// make the latter via document.createTextNode.
|
|
6768
6800
|
|
|
6769
6801
|
if (width >= 0.05555 && width <= 0.05556) {
|
|
6770
|
-
this.character = "
|
|
6802
|
+
this.character = "\u200A"; //  
|
|
6771
6803
|
} else if (width >= 0.1666 && width <= 0.1667) {
|
|
6772
|
-
this.character = "
|
|
6804
|
+
this.character = "\u2009"; //  
|
|
6773
6805
|
} else if (width >= 0.2222 && width <= 0.2223) {
|
|
6774
|
-
this.character = "
|
|
6806
|
+
this.character = "\u2005"; //  
|
|
6775
6807
|
} else if (width >= 0.2777 && width <= 0.2778) {
|
|
6776
|
-
this.character = "
|
|
6808
|
+
this.character = "\u2005\u200A"; //   
|
|
6777
6809
|
} else if (width >= -0.05556 && width <= -0.05555) {
|
|
6778
|
-
this.character = "​
|
|
6810
|
+
this.character = "\u200A\u2063"; // ​
|
|
6779
6811
|
} else if (width >= -0.1667 && width <= -0.1666) {
|
|
6780
|
-
this.character = "​
|
|
6812
|
+
this.character = "\u2009\u2063"; // ​
|
|
6781
6813
|
} else if (width >= -0.2223 && width <= -0.2222) {
|
|
6782
|
-
this.character = "​
|
|
6814
|
+
this.character = "\u205F\u2063"; // ​
|
|
6783
6815
|
} else if (width >= -0.2778 && width <= -0.2777) {
|
|
6784
|
-
this.character = "​
|
|
6816
|
+
this.character = "\u2005\u2063"; // ​
|
|
6785
6817
|
} else {
|
|
6786
6818
|
this.character = null;
|
|
6787
6819
|
}
|
|
@@ -6801,11 +6833,11 @@ function () {
|
|
|
6801
6833
|
node.setAttribute("width", this.width + "em");
|
|
6802
6834
|
return node;
|
|
6803
6835
|
}
|
|
6804
|
-
}
|
|
6836
|
+
}
|
|
6805
6837
|
/**
|
|
6806
6838
|
* Converts the math node into an HTML markup string.
|
|
6807
6839
|
*/
|
|
6808
|
-
|
|
6840
|
+
;
|
|
6809
6841
|
|
|
6810
6842
|
_proto3.toMarkup = function toMarkup() {
|
|
6811
6843
|
if (this.character) {
|
|
@@ -6813,11 +6845,11 @@ function () {
|
|
|
6813
6845
|
} else {
|
|
6814
6846
|
return "<mspace width=\"" + this.width + "em\"/>";
|
|
6815
6847
|
}
|
|
6816
|
-
}
|
|
6848
|
+
}
|
|
6817
6849
|
/**
|
|
6818
6850
|
* Converts the math node into a string, similar to innerText.
|
|
6819
6851
|
*/
|
|
6820
|
-
|
|
6852
|
+
;
|
|
6821
6853
|
|
|
6822
6854
|
_proto3.toText = function toText() {
|
|
6823
6855
|
if (this.character) {
|
|
@@ -6971,13 +7003,24 @@ var buildMathML_buildExpression = function buildExpression(expression, options)
|
|
|
6971
7003
|
|
|
6972
7004
|
continue;
|
|
6973
7005
|
}
|
|
7006
|
+
} else if (lastGroup.type === 'mi' && lastGroup.children.length === 1) {
|
|
7007
|
+
var lastChild = lastGroup.children[0];
|
|
7008
|
+
|
|
7009
|
+
if (lastChild instanceof mathMLTree_TextNode && lastChild.text === "\u0338" && (group.type === 'mo' || group.type === 'mi' || group.type === 'mn')) {
|
|
7010
|
+
var _child = group.children[0];
|
|
7011
|
+
|
|
7012
|
+
if (_child instanceof mathMLTree_TextNode && _child.text.length > 0) {
|
|
7013
|
+
// Overlay with combining character long solidus
|
|
7014
|
+
_child.text = _child.text.slice(0, 1) + "\u0338" + _child.text.slice(1);
|
|
7015
|
+
groups.pop();
|
|
7016
|
+
}
|
|
7017
|
+
}
|
|
6974
7018
|
}
|
|
6975
7019
|
}
|
|
6976
7020
|
|
|
6977
7021
|
groups.push(group);
|
|
6978
7022
|
lastGroup = group;
|
|
6979
|
-
}
|
|
6980
|
-
|
|
7023
|
+
}
|
|
6981
7024
|
|
|
6982
7025
|
return groups;
|
|
6983
7026
|
};
|
|
@@ -7055,28 +7098,36 @@ var buildTree_optionsFromSettings = function optionsFromSettings(settings) {
|
|
|
7055
7098
|
});
|
|
7056
7099
|
};
|
|
7057
7100
|
|
|
7101
|
+
var buildTree_displayWrap = function displayWrap(node, settings) {
|
|
7102
|
+
if (settings.displayMode) {
|
|
7103
|
+
var classes = ["katex-display"];
|
|
7104
|
+
|
|
7105
|
+
if (settings.leqno) {
|
|
7106
|
+
classes.push("leqno");
|
|
7107
|
+
}
|
|
7108
|
+
|
|
7109
|
+
if (settings.fleqn) {
|
|
7110
|
+
classes.push("fleqn");
|
|
7111
|
+
}
|
|
7112
|
+
|
|
7113
|
+
node = buildCommon.makeSpan(classes, [node]);
|
|
7114
|
+
}
|
|
7115
|
+
|
|
7116
|
+
return node;
|
|
7117
|
+
};
|
|
7118
|
+
|
|
7058
7119
|
var buildTree_buildTree = function buildTree(tree, expression, settings) {
|
|
7059
7120
|
var options = buildTree_optionsFromSettings(settings);
|
|
7060
7121
|
var mathMLNode = buildMathML(tree, expression, options);
|
|
7061
7122
|
var htmlNode = buildHTML(tree, options);
|
|
7062
7123
|
var katexNode = buildCommon.makeSpan(["katex"], [mathMLNode, htmlNode]);
|
|
7063
|
-
|
|
7064
|
-
if (settings.displayMode) {
|
|
7065
|
-
return buildCommon.makeSpan(["katex-display"], [katexNode]);
|
|
7066
|
-
} else {
|
|
7067
|
-
return katexNode;
|
|
7068
|
-
}
|
|
7124
|
+
return buildTree_displayWrap(katexNode, settings);
|
|
7069
7125
|
};
|
|
7070
7126
|
var buildTree_buildHTMLTree = function buildHTMLTree(tree, expression, settings) {
|
|
7071
7127
|
var options = buildTree_optionsFromSettings(settings);
|
|
7072
7128
|
var htmlNode = buildHTML(tree, options);
|
|
7073
7129
|
var katexNode = buildCommon.makeSpan(["katex"], [htmlNode]);
|
|
7074
|
-
|
|
7075
|
-
if (settings.displayMode) {
|
|
7076
|
-
return buildCommon.makeSpan(["katex-display"], [katexNode]);
|
|
7077
|
-
} else {
|
|
7078
|
-
return katexNode;
|
|
7079
|
-
}
|
|
7130
|
+
return buildTree_displayWrap(katexNode, settings);
|
|
7080
7131
|
};
|
|
7081
7132
|
/* harmony default export */ var src_buildTree = (buildTree_buildTree);
|
|
7082
7133
|
// CONCATENATED MODULE: ./src/stretchy.js
|
|
@@ -7100,8 +7151,10 @@ var stretchyCodePoint = {
|
|
|
7100
7151
|
overrightarrow: "\u2192",
|
|
7101
7152
|
underrightarrow: "\u2192",
|
|
7102
7153
|
xrightarrow: "\u2192",
|
|
7103
|
-
underbrace: "\
|
|
7154
|
+
underbrace: "\u23DF",
|
|
7104
7155
|
overbrace: "\u23DE",
|
|
7156
|
+
overgroup: "\u23E0",
|
|
7157
|
+
undergroup: "\u23E1",
|
|
7105
7158
|
overleftrightarrow: "\u2194",
|
|
7106
7159
|
underleftrightarrow: "\u2194",
|
|
7107
7160
|
xleftrightarrow: "\u2194",
|
|
@@ -7707,9 +7760,18 @@ defineFunction({
|
|
|
7707
7760
|
|
|
7708
7761
|
|
|
7709
7762
|
|
|
7710
|
-
|
|
7711
|
-
|
|
7712
|
-
|
|
7763
|
+
|
|
7764
|
+
// Helper function
|
|
7765
|
+
var arrow_paddedNode = function paddedNode(group) {
|
|
7766
|
+
var node = new mathMLTree.MathNode("mpadded", group ? [group] : []);
|
|
7767
|
+
node.setAttribute("width", "+0.6em");
|
|
7768
|
+
node.setAttribute("lspace", "0.3em");
|
|
7769
|
+
return node;
|
|
7770
|
+
}; // Stretchy arrows with an optional argument
|
|
7771
|
+
|
|
7772
|
+
|
|
7773
|
+
defineFunction({
|
|
7774
|
+
type: "xArrow",
|
|
7713
7775
|
names: ["\\xleftarrow", "\\xrightarrow", "\\xLeftarrow", "\\xRightarrow", "\\xleftrightarrow", "\\xLeftrightarrow", "\\xhookleftarrow", "\\xhookrightarrow", "\\xmapsto", "\\xrightharpoondown", "\\xrightharpoonup", "\\xleftharpoondown", "\\xleftharpoonup", "\\xrightleftharpoons", "\\xleftrightharpoons", "\\xlongequal", "\\xtwoheadrightarrow", "\\xtwoheadleftarrow", "\\xtofrom", // The next 3 functions are here to support the mhchem extension.
|
|
7714
7776
|
// Direct use of these functions is discouraged and may break someday.
|
|
7715
7777
|
"\\xrightleftarrows", "\\xrightequilibrium", "\\xleftequilibrium"],
|
|
@@ -7802,22 +7864,25 @@ defineFunction({
|
|
|
7802
7864
|
mathmlBuilder: function mathmlBuilder(group, options) {
|
|
7803
7865
|
var arrowNode = stretchy.mathMLnode(group.label);
|
|
7804
7866
|
var node;
|
|
7805
|
-
var lowerNode;
|
|
7806
7867
|
|
|
7807
7868
|
if (group.body) {
|
|
7808
|
-
var upperNode = buildMathML_buildGroup(group.body, options);
|
|
7869
|
+
var upperNode = arrow_paddedNode(buildMathML_buildGroup(group.body, options));
|
|
7809
7870
|
|
|
7810
7871
|
if (group.below) {
|
|
7811
|
-
lowerNode = buildMathML_buildGroup(group.below, options);
|
|
7872
|
+
var lowerNode = arrow_paddedNode(buildMathML_buildGroup(group.below, options));
|
|
7812
7873
|
node = new mathMLTree.MathNode("munderover", [arrowNode, lowerNode, upperNode]);
|
|
7813
7874
|
} else {
|
|
7814
7875
|
node = new mathMLTree.MathNode("mover", [arrowNode, upperNode]);
|
|
7815
7876
|
}
|
|
7816
7877
|
} else if (group.below) {
|
|
7817
|
-
|
|
7818
|
-
|
|
7878
|
+
var _lowerNode = arrow_paddedNode(buildMathML_buildGroup(group.below, options));
|
|
7879
|
+
|
|
7880
|
+
node = new mathMLTree.MathNode("munder", [arrowNode, _lowerNode]);
|
|
7819
7881
|
} else {
|
|
7820
|
-
|
|
7882
|
+
// This should never happen.
|
|
7883
|
+
// Parser.js throws an error if there is no argument.
|
|
7884
|
+
node = arrow_paddedNode();
|
|
7885
|
+
node = new mathMLTree.MathNode("mover", [arrowNode, node]);
|
|
7821
7886
|
}
|
|
7822
7887
|
|
|
7823
7888
|
return node;
|
|
@@ -7879,7 +7944,7 @@ var color_htmlBuilder = function htmlBuilder(group, options) {
|
|
|
7879
7944
|
};
|
|
7880
7945
|
|
|
7881
7946
|
var color_mathmlBuilder = function mathmlBuilder(group, options) {
|
|
7882
|
-
var inner = buildMathML_buildExpression(group.body, options);
|
|
7947
|
+
var inner = buildMathML_buildExpression(group.body, options.withColor(group.color));
|
|
7883
7948
|
var node = new mathMLTree.MathNode("mstyle", inner);
|
|
7884
7949
|
node.setAttribute("mathcolor", group.color);
|
|
7885
7950
|
return node;
|
|
@@ -7907,29 +7972,6 @@ defineFunction({
|
|
|
7907
7972
|
},
|
|
7908
7973
|
htmlBuilder: color_htmlBuilder,
|
|
7909
7974
|
mathmlBuilder: color_mathmlBuilder
|
|
7910
|
-
}); // TODO(kevinb): define these using macros
|
|
7911
|
-
|
|
7912
|
-
defineFunction({
|
|
7913
|
-
type: "color",
|
|
7914
|
-
names: ["\\blue", "\\orange", "\\pink", "\\red", "\\green", "\\gray", "\\purple", "\\blueA", "\\blueB", "\\blueC", "\\blueD", "\\blueE", "\\tealA", "\\tealB", "\\tealC", "\\tealD", "\\tealE", "\\greenA", "\\greenB", "\\greenC", "\\greenD", "\\greenE", "\\goldA", "\\goldB", "\\goldC", "\\goldD", "\\goldE", "\\redA", "\\redB", "\\redC", "\\redD", "\\redE", "\\maroonA", "\\maroonB", "\\maroonC", "\\maroonD", "\\maroonE", "\\purpleA", "\\purpleB", "\\purpleC", "\\purpleD", "\\purpleE", "\\mintA", "\\mintB", "\\mintC", "\\grayA", "\\grayB", "\\grayC", "\\grayD", "\\grayE", "\\grayF", "\\grayG", "\\grayH", "\\grayI", "\\kaBlue", "\\kaGreen"],
|
|
7915
|
-
props: {
|
|
7916
|
-
numArgs: 1,
|
|
7917
|
-
allowedInText: true,
|
|
7918
|
-
greediness: 3
|
|
7919
|
-
},
|
|
7920
|
-
handler: function handler(_ref2, args) {
|
|
7921
|
-
var parser = _ref2.parser,
|
|
7922
|
-
funcName = _ref2.funcName;
|
|
7923
|
-
var body = args[0];
|
|
7924
|
-
return {
|
|
7925
|
-
type: "color",
|
|
7926
|
-
mode: parser.mode,
|
|
7927
|
-
color: "katex-" + funcName.slice(1),
|
|
7928
|
-
body: defineFunction_ordargument(body)
|
|
7929
|
-
};
|
|
7930
|
-
},
|
|
7931
|
-
htmlBuilder: color_htmlBuilder,
|
|
7932
|
-
mathmlBuilder: color_mathmlBuilder
|
|
7933
7975
|
});
|
|
7934
7976
|
defineFunction({
|
|
7935
7977
|
type: "color",
|
|
@@ -7940,9 +7982,9 @@ defineFunction({
|
|
|
7940
7982
|
greediness: 3,
|
|
7941
7983
|
argTypes: ["color"]
|
|
7942
7984
|
},
|
|
7943
|
-
handler: function handler(
|
|
7944
|
-
var parser =
|
|
7945
|
-
breakOnTokenText =
|
|
7985
|
+
handler: function handler(_ref2, args) {
|
|
7986
|
+
var parser = _ref2.parser,
|
|
7987
|
+
breakOnTokenText = _ref2.breakOnTokenText;
|
|
7946
7988
|
var color = assertNodeType(args[0], "color-token").color; // If we see a styling function, parse out the implicit body
|
|
7947
7989
|
|
|
7948
7990
|
var body = parser.parseExpression(true, breakOnTokenText);
|
|
@@ -8867,7 +8909,7 @@ defineFunction({
|
|
|
8867
8909
|
htmlBuilder: function htmlBuilder(group, options) {
|
|
8868
8910
|
assertParsed(group); // Build the inner expression
|
|
8869
8911
|
|
|
8870
|
-
var inner = buildHTML_buildExpression(group.body, options, true, [
|
|
8912
|
+
var inner = buildHTML_buildExpression(group.body, options, true, ["mopen", "mclose"]);
|
|
8871
8913
|
var innerHeight = 0;
|
|
8872
8914
|
var innerDepth = 0;
|
|
8873
8915
|
var hadMiddle = false; // Calculate its height and depth
|
|
@@ -8990,8 +9032,17 @@ defineFunction({
|
|
|
8990
9032
|
return middleDelim;
|
|
8991
9033
|
},
|
|
8992
9034
|
mathmlBuilder: function mathmlBuilder(group, options) {
|
|
8993
|
-
|
|
8994
|
-
|
|
9035
|
+
// A Firefox \middle will strech a character vertically only if it
|
|
9036
|
+
// is in the fence part of the operator dictionary at:
|
|
9037
|
+
// https://www.w3.org/TR/MathML3/appendixc.html.
|
|
9038
|
+
// So we need to avoid U+2223 and use plain "|" instead.
|
|
9039
|
+
var textNode = group.delim === "\\vert" || group.delim === "|" ? buildMathML_makeText("|", "text") : buildMathML_makeText(group.delim, group.mode);
|
|
9040
|
+
var middleNode = new mathMLTree.MathNode("mo", [textNode]);
|
|
9041
|
+
middleNode.setAttribute("fence", "true"); // MathML gives 5/18em spacing to each <mo> element.
|
|
9042
|
+
// \middle should get delimiter spacing instead.
|
|
9043
|
+
|
|
9044
|
+
middleNode.setAttribute("lspace", "0.05em");
|
|
9045
|
+
middleNode.setAttribute("rspace", "0.05em");
|
|
8995
9046
|
return middleNode;
|
|
8996
9047
|
}
|
|
8997
9048
|
});
|
|
@@ -9106,7 +9157,7 @@ var enclose_htmlBuilder = function htmlBuilder(group, options) {
|
|
|
9106
9157
|
};
|
|
9107
9158
|
|
|
9108
9159
|
var enclose_mathmlBuilder = function mathmlBuilder(group, options) {
|
|
9109
|
-
var node = new mathMLTree.MathNode("menclose", [buildMathML_buildGroup(group.body, options)]);
|
|
9160
|
+
var node = new mathMLTree.MathNode(group.label.indexOf("colorbox") > -1 ? "mpadded" : "menclose", [buildMathML_buildGroup(group.body, options)]);
|
|
9110
9161
|
|
|
9111
9162
|
switch (group.label) {
|
|
9112
9163
|
case "\\cancel":
|
|
@@ -9126,8 +9177,20 @@ var enclose_mathmlBuilder = function mathmlBuilder(group, options) {
|
|
|
9126
9177
|
break;
|
|
9127
9178
|
|
|
9128
9179
|
case "\\fcolorbox":
|
|
9129
|
-
|
|
9130
|
-
|
|
9180
|
+
case "\\colorbox":
|
|
9181
|
+
// <menclose> doesn't have a good notation option. So use <mpadded>
|
|
9182
|
+
// instead. Set some attributes that come included with <menclose>.
|
|
9183
|
+
node.setAttribute("width", "+6pt");
|
|
9184
|
+
node.setAttribute("height", "+6pt");
|
|
9185
|
+
node.setAttribute("lspace", "3pt"); // LaTeX source2e: \fboxsep = 3pt
|
|
9186
|
+
|
|
9187
|
+
node.setAttribute("voffset", "3pt");
|
|
9188
|
+
|
|
9189
|
+
if (group.label === "\\fcolorbox") {
|
|
9190
|
+
var thk = options.fontMetrics().defaultRuleThickness;
|
|
9191
|
+
node.setAttribute("style", "border: " + thk + "em solid " + String(group.borderColor));
|
|
9192
|
+
}
|
|
9193
|
+
|
|
9131
9194
|
break;
|
|
9132
9195
|
|
|
9133
9196
|
case "\\xcancel":
|
|
@@ -9315,7 +9378,8 @@ function parseArray(parser, _ref, style) {
|
|
|
9315
9378
|
var hskipBeforeAndAfter = _ref.hskipBeforeAndAfter,
|
|
9316
9379
|
addJot = _ref.addJot,
|
|
9317
9380
|
cols = _ref.cols,
|
|
9318
|
-
arraystretch = _ref.arraystretch
|
|
9381
|
+
arraystretch = _ref.arraystretch,
|
|
9382
|
+
colSeparationType = _ref.colSeparationType;
|
|
9319
9383
|
// Parse body of array with \\ temporarily mapped to \cr
|
|
9320
9384
|
parser.gullet.beginGroup();
|
|
9321
9385
|
parser.gullet.macros.set("\\\\", "\\cr"); // Get current arraystretch if it's not set by the environment
|
|
@@ -9400,7 +9464,8 @@ function parseArray(parser, _ref, style) {
|
|
|
9400
9464
|
cols: cols,
|
|
9401
9465
|
rowGaps: rowGaps,
|
|
9402
9466
|
hskipBeforeAndAfter: hskipBeforeAndAfter,
|
|
9403
|
-
hLinesBeforeRow: hLinesBeforeRow
|
|
9467
|
+
hLinesBeforeRow: hLinesBeforeRow,
|
|
9468
|
+
colSeparationType: colSeparationType
|
|
9404
9469
|
};
|
|
9405
9470
|
} // Decides on a style for cells in an array according to whether the given
|
|
9406
9471
|
// environment name starts with the letter 'd'.
|
|
@@ -9650,12 +9715,118 @@ var array_htmlBuilder = function htmlBuilder(group, options) {
|
|
|
9650
9715
|
return buildCommon.makeSpan(["mord"], [body], options);
|
|
9651
9716
|
};
|
|
9652
9717
|
|
|
9718
|
+
var alignMap = {
|
|
9719
|
+
c: "center ",
|
|
9720
|
+
l: "left ",
|
|
9721
|
+
r: "right "
|
|
9722
|
+
};
|
|
9723
|
+
|
|
9653
9724
|
var array_mathmlBuilder = function mathmlBuilder(group, options) {
|
|
9654
|
-
|
|
9725
|
+
var table = new mathMLTree.MathNode("mtable", group.body.map(function (row) {
|
|
9655
9726
|
return new mathMLTree.MathNode("mtr", row.map(function (cell) {
|
|
9656
9727
|
return new mathMLTree.MathNode("mtd", [buildMathML_buildGroup(cell, options)]);
|
|
9657
9728
|
}));
|
|
9658
|
-
}));
|
|
9729
|
+
})); // Set column alignment, row spacing, column spacing, and
|
|
9730
|
+
// array lines by setting attributes on the table element.
|
|
9731
|
+
// Set the row spacing. In MathML, we specify a gap distance.
|
|
9732
|
+
// We do not use rowGap[] because MathML automatically increases
|
|
9733
|
+
// cell height with the height/depth of the element content.
|
|
9734
|
+
// LaTeX \arraystretch multiplies the row baseline-to-baseline distance.
|
|
9735
|
+
// We simulate this by adding (arraystretch - 1)em to the gap. This
|
|
9736
|
+
// does a reasonable job of adjusting arrays containing 1 em tall content.
|
|
9737
|
+
// The 0.16 and 0.09 values are found emprically. They produce an array
|
|
9738
|
+
// similar to LaTeX and in which content does not interfere with \hines.
|
|
9739
|
+
|
|
9740
|
+
var gap = 0.16 + group.arraystretch - 1 + (group.addJot ? 0.09 : 0);
|
|
9741
|
+
table.setAttribute("rowspacing", gap + "em"); // MathML table lines go only between cells.
|
|
9742
|
+
// To place a line on an edge we'll use <menclose>, if necessary.
|
|
9743
|
+
|
|
9744
|
+
var menclose = "";
|
|
9745
|
+
var align = "";
|
|
9746
|
+
|
|
9747
|
+
if (group.cols) {
|
|
9748
|
+
// Find column alignment, column spacing, and vertical lines.
|
|
9749
|
+
var cols = group.cols;
|
|
9750
|
+
var columnLines = "";
|
|
9751
|
+
var prevTypeWasAlign = false;
|
|
9752
|
+
var iStart = 0;
|
|
9753
|
+
var iEnd = cols.length;
|
|
9754
|
+
|
|
9755
|
+
if (cols[0].type === "separator") {
|
|
9756
|
+
menclose += "top ";
|
|
9757
|
+
iStart = 1;
|
|
9758
|
+
}
|
|
9759
|
+
|
|
9760
|
+
if (cols[cols.length - 1].type === "separator") {
|
|
9761
|
+
menclose += "bottom ";
|
|
9762
|
+
iEnd -= 1;
|
|
9763
|
+
}
|
|
9764
|
+
|
|
9765
|
+
for (var i = iStart; i < iEnd; i++) {
|
|
9766
|
+
if (cols[i].type === "align") {
|
|
9767
|
+
align += alignMap[cols[i].align];
|
|
9768
|
+
|
|
9769
|
+
if (prevTypeWasAlign) {
|
|
9770
|
+
columnLines += "none ";
|
|
9771
|
+
}
|
|
9772
|
+
|
|
9773
|
+
prevTypeWasAlign = true;
|
|
9774
|
+
} else if (cols[i].type === "separator") {
|
|
9775
|
+
// MathML accepts only single lines between cells.
|
|
9776
|
+
// So we read only the first of consecutive separators.
|
|
9777
|
+
if (prevTypeWasAlign) {
|
|
9778
|
+
columnLines += cols[i].separator === "|" ? "solid " : "dashed ";
|
|
9779
|
+
prevTypeWasAlign = false;
|
|
9780
|
+
}
|
|
9781
|
+
}
|
|
9782
|
+
}
|
|
9783
|
+
|
|
9784
|
+
table.setAttribute("columnalign", align.trim());
|
|
9785
|
+
|
|
9786
|
+
if (/[sd]/.test(columnLines)) {
|
|
9787
|
+
table.setAttribute("columnlines", columnLines.trim());
|
|
9788
|
+
}
|
|
9789
|
+
} // Set column spacing.
|
|
9790
|
+
|
|
9791
|
+
|
|
9792
|
+
if (group.colSeparationType === "align") {
|
|
9793
|
+
var _cols = group.cols || [];
|
|
9794
|
+
|
|
9795
|
+
var spacing = "";
|
|
9796
|
+
|
|
9797
|
+
for (var _i = 1; _i < _cols.length; _i++) {
|
|
9798
|
+
spacing += _i % 2 ? "0em " : "1em ";
|
|
9799
|
+
}
|
|
9800
|
+
|
|
9801
|
+
table.setAttribute("columnspacing", spacing.trim());
|
|
9802
|
+
} else if (group.colSeparationType === "alignat") {
|
|
9803
|
+
table.setAttribute("columnspacing", "0em");
|
|
9804
|
+
} else {
|
|
9805
|
+
table.setAttribute("columnspacing", "1em");
|
|
9806
|
+
} // Address \hline and \hdashline
|
|
9807
|
+
|
|
9808
|
+
|
|
9809
|
+
var rowLines = "";
|
|
9810
|
+
var hlines = group.hLinesBeforeRow;
|
|
9811
|
+
menclose += hlines[0].length > 0 ? "left " : "";
|
|
9812
|
+
menclose += hlines[hlines.length - 1].length > 0 ? "right " : "";
|
|
9813
|
+
|
|
9814
|
+
for (var _i2 = 1; _i2 < hlines.length - 1; _i2++) {
|
|
9815
|
+
rowLines += hlines[_i2].length === 0 ? "none " // MathML accepts only a single line between rows. Read one element.
|
|
9816
|
+
: hlines[_i2][0] ? "dashed " : "solid ";
|
|
9817
|
+
}
|
|
9818
|
+
|
|
9819
|
+
if (/[sd]/.test(rowLines)) {
|
|
9820
|
+
table.setAttribute("rowlines", rowLines.trim());
|
|
9821
|
+
}
|
|
9822
|
+
|
|
9823
|
+
if (menclose === "") {
|
|
9824
|
+
return table;
|
|
9825
|
+
} else {
|
|
9826
|
+
var wrapper = new mathMLTree.MathNode("menclose", [table]);
|
|
9827
|
+
wrapper.setAttribute("notation", menclose.trim());
|
|
9828
|
+
return wrapper;
|
|
9829
|
+
}
|
|
9659
9830
|
}; // Convenience function for aligned and alignedat environments.
|
|
9660
9831
|
|
|
9661
9832
|
|
|
@@ -9697,9 +9868,9 @@ var array_alignedHandler = function alignedHandler(context, args) {
|
|
|
9697
9868
|
|
|
9698
9869
|
var isAligned = !numCols;
|
|
9699
9870
|
res.body.forEach(function (row) {
|
|
9700
|
-
for (var
|
|
9871
|
+
for (var _i3 = 1; _i3 < row.length; _i3 += 2) {
|
|
9701
9872
|
// Modify ordgroup node within styling node
|
|
9702
|
-
var styling = assertNodeType(row[
|
|
9873
|
+
var styling = assertNodeType(row[_i3], "styling");
|
|
9703
9874
|
|
|
9704
9875
|
var _ordgroup = assertNodeType(styling.body[0], "ordgroup");
|
|
9705
9876
|
|
|
@@ -9721,18 +9892,18 @@ var array_alignedHandler = function alignedHandler(context, args) {
|
|
|
9721
9892
|
// In aligned mode, we add one \qquad between columns;
|
|
9722
9893
|
// otherwise we add nothing.
|
|
9723
9894
|
|
|
9724
|
-
for (var
|
|
9895
|
+
for (var _i4 = 0; _i4 < numCols; ++_i4) {
|
|
9725
9896
|
var align = "r";
|
|
9726
9897
|
var pregap = 0;
|
|
9727
9898
|
|
|
9728
|
-
if (
|
|
9899
|
+
if (_i4 % 2 === 1) {
|
|
9729
9900
|
align = "l";
|
|
9730
|
-
} else if (
|
|
9901
|
+
} else if (_i4 > 0 && isAligned) {
|
|
9731
9902
|
// "aligned" mode.
|
|
9732
9903
|
pregap = 1; // add one \quad
|
|
9733
9904
|
}
|
|
9734
9905
|
|
|
9735
|
-
cols[
|
|
9906
|
+
cols[_i4] = {
|
|
9736
9907
|
type: "align",
|
|
9737
9908
|
align: align,
|
|
9738
9909
|
pregap: pregap,
|
|
@@ -9740,6 +9911,7 @@ var array_alignedHandler = function alignedHandler(context, args) {
|
|
|
9740
9911
|
};
|
|
9741
9912
|
}
|
|
9742
9913
|
|
|
9914
|
+
res.colSeparationType = isAligned ? "align" : "alignat";
|
|
9743
9915
|
return res;
|
|
9744
9916
|
}; // Arrays are part of LaTeX, defined in lttab.dtx so its documentation
|
|
9745
9917
|
// is part of the source2e.pdf file of LaTeX2e source documentation.
|
|
@@ -10107,6 +10279,7 @@ defineFunction({
|
|
|
10107
10279
|
mode: baseArg.mode,
|
|
10108
10280
|
limits: true,
|
|
10109
10281
|
alwaysHandleSupSub: true,
|
|
10282
|
+
parentIsSupSub: false,
|
|
10110
10283
|
symbol: false,
|
|
10111
10284
|
suppressBaseShift: funcName !== "\\stackrel",
|
|
10112
10285
|
body: defineFunction_ordargument(baseArg)
|
|
@@ -10221,7 +10394,6 @@ defineFunction({
|
|
|
10221
10394
|
funcName = _ref3.funcName,
|
|
10222
10395
|
breakOnTokenText = _ref3.breakOnTokenText;
|
|
10223
10396
|
var mode = parser.mode;
|
|
10224
|
-
parser.consumeSpaces();
|
|
10225
10397
|
var body = parser.parseExpression(true, breakOnTokenText);
|
|
10226
10398
|
var style = "math" + funcName.slice(1);
|
|
10227
10399
|
return {
|
|
@@ -10250,23 +10422,30 @@ defineFunction({
|
|
|
10250
10422
|
|
|
10251
10423
|
|
|
10252
10424
|
|
|
10253
|
-
var
|
|
10254
|
-
// Fractions are handled in the TeXbook on pages 444-445, rules 15(a-e).
|
|
10425
|
+
var genfrac_adjustStyle = function adjustStyle(size, originalStyle) {
|
|
10255
10426
|
// Figure out what style this fraction should be in based on the
|
|
10256
10427
|
// function used
|
|
10257
|
-
var style =
|
|
10428
|
+
var style = originalStyle;
|
|
10258
10429
|
|
|
10259
|
-
if (
|
|
10260
|
-
style
|
|
10261
|
-
|
|
10430
|
+
if (size === "display") {
|
|
10431
|
+
// Get display style as a default.
|
|
10432
|
+
// If incoming style is sub/sup, use style.text() to get correct size.
|
|
10433
|
+
style = style.id >= src_Style.SCRIPT.id ? style.text() : src_Style.DISPLAY;
|
|
10434
|
+
} else if (size === "text" && style.size === src_Style.DISPLAY.size) {
|
|
10262
10435
|
// We're in a \tfrac but incoming style is displaystyle, so:
|
|
10263
10436
|
style = src_Style.TEXT;
|
|
10264
|
-
} else if (
|
|
10437
|
+
} else if (size === "script") {
|
|
10265
10438
|
style = src_Style.SCRIPT;
|
|
10266
|
-
} else if (
|
|
10439
|
+
} else if (size === "scriptscript") {
|
|
10267
10440
|
style = src_Style.SCRIPTSCRIPT;
|
|
10268
10441
|
}
|
|
10269
10442
|
|
|
10443
|
+
return style;
|
|
10444
|
+
};
|
|
10445
|
+
|
|
10446
|
+
var genfrac_htmlBuilder = function htmlBuilder(group, options) {
|
|
10447
|
+
// Fractions are handled in the TeXbook on pages 444-445, rules 15(a-e).
|
|
10448
|
+
var style = genfrac_adjustStyle(group.size, options.style);
|
|
10270
10449
|
var nstyle = style.fracNum();
|
|
10271
10450
|
var dstyle = style.fracDen();
|
|
10272
10451
|
var newOptions;
|
|
@@ -10309,7 +10488,7 @@ var genfrac_htmlBuilder = function htmlBuilder(group, options) {
|
|
|
10309
10488
|
var clearance;
|
|
10310
10489
|
var denomShift;
|
|
10311
10490
|
|
|
10312
|
-
if (style.size === src_Style.DISPLAY.size) {
|
|
10491
|
+
if (style.size === src_Style.DISPLAY.size || group.size === "display") {
|
|
10313
10492
|
numShift = options.fontMetrics().num1;
|
|
10314
10493
|
|
|
10315
10494
|
if (ruleWidth > 0) {
|
|
@@ -10429,11 +10608,20 @@ var genfrac_mathmlBuilder = function mathmlBuilder(group, options) {
|
|
|
10429
10608
|
node.setAttribute("linethickness", ruleWidth + "em");
|
|
10430
10609
|
}
|
|
10431
10610
|
|
|
10611
|
+
var style = genfrac_adjustStyle(group.size, options.style);
|
|
10612
|
+
|
|
10613
|
+
if (style.size !== options.style.size) {
|
|
10614
|
+
node = new mathMLTree.MathNode("mstyle", [node]);
|
|
10615
|
+
var isDisplay = style.size === src_Style.DISPLAY.size ? "true" : "false";
|
|
10616
|
+
node.setAttribute("displaystyle", isDisplay);
|
|
10617
|
+
node.setAttribute("scriptlevel", "0");
|
|
10618
|
+
}
|
|
10619
|
+
|
|
10432
10620
|
if (group.leftDelim != null || group.rightDelim != null) {
|
|
10433
10621
|
var withDelims = [];
|
|
10434
10622
|
|
|
10435
10623
|
if (group.leftDelim != null) {
|
|
10436
|
-
var leftOp = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode(group.leftDelim)]);
|
|
10624
|
+
var leftOp = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode(group.leftDelim.replace("\\", ""))]);
|
|
10437
10625
|
leftOp.setAttribute("fence", "true");
|
|
10438
10626
|
withDelims.push(leftOp);
|
|
10439
10627
|
}
|
|
@@ -10441,7 +10629,7 @@ var genfrac_mathmlBuilder = function mathmlBuilder(group, options) {
|
|
|
10441
10629
|
withDelims.push(node);
|
|
10442
10630
|
|
|
10443
10631
|
if (group.rightDelim != null) {
|
|
10444
|
-
var rightOp = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode(group.rightDelim)]);
|
|
10632
|
+
var rightOp = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode(group.rightDelim.replace("\\", ""))]);
|
|
10445
10633
|
rightOp.setAttribute("fence", "true");
|
|
10446
10634
|
withDelims.push(rightOp);
|
|
10447
10635
|
}
|
|
@@ -10609,24 +10797,20 @@ defineFunction({
|
|
|
10609
10797
|
var numer = args[4];
|
|
10610
10798
|
var denom = args[5]; // Look into the parse nodes to get the desired delimiters.
|
|
10611
10799
|
|
|
10612
|
-
var leftNode = checkNodeType(args[0], "
|
|
10800
|
+
var leftNode = checkNodeType(args[0], "atom");
|
|
10613
10801
|
|
|
10614
10802
|
if (leftNode) {
|
|
10615
|
-
leftNode = assertAtomFamily(leftNode.body[0], "open");
|
|
10616
|
-
} else {
|
|
10617
10803
|
leftNode = assertAtomFamily(args[0], "open");
|
|
10618
10804
|
}
|
|
10619
10805
|
|
|
10620
|
-
var leftDelim = delimFromValue(leftNode.text);
|
|
10621
|
-
var rightNode = checkNodeType(args[1], "
|
|
10806
|
+
var leftDelim = leftNode ? delimFromValue(leftNode.text) : null;
|
|
10807
|
+
var rightNode = checkNodeType(args[1], "atom");
|
|
10622
10808
|
|
|
10623
10809
|
if (rightNode) {
|
|
10624
|
-
rightNode = assertAtomFamily(rightNode.body[0], "close");
|
|
10625
|
-
} else {
|
|
10626
10810
|
rightNode = assertAtomFamily(args[1], "close");
|
|
10627
10811
|
}
|
|
10628
10812
|
|
|
10629
|
-
var rightDelim = delimFromValue(rightNode.text);
|
|
10813
|
+
var rightDelim = rightNode ? delimFromValue(rightNode.text) : null;
|
|
10630
10814
|
var barNode = assertNodeType(args[2], "size");
|
|
10631
10815
|
var hasBarLine;
|
|
10632
10816
|
var barSize = null;
|
|
@@ -11214,7 +11398,10 @@ defineFunction({
|
|
|
11214
11398
|
|
|
11215
11399
|
|
|
11216
11400
|
|
|
11217
|
-
//
|
|
11401
|
+
// Most operators have a large successor symbol, but these don't.
|
|
11402
|
+
var noSuccessor = ["\\smallint"]; // NOTE: Unlike most `htmlBuilder`s, this one handles not only "op", but also
|
|
11403
|
+
// "supsub" since some of them (like \int) can affect super/subscripting.
|
|
11404
|
+
|
|
11218
11405
|
var op_htmlBuilder = function htmlBuilder(grp, options) {
|
|
11219
11406
|
// Operators are handled in the TeXbook pg. 443-444, rule 13(a).
|
|
11220
11407
|
var supGroup;
|
|
@@ -11235,9 +11422,7 @@ var op_htmlBuilder = function htmlBuilder(grp, options) {
|
|
|
11235
11422
|
group = assertNodeType(grp, "op");
|
|
11236
11423
|
}
|
|
11237
11424
|
|
|
11238
|
-
var style = options.style;
|
|
11239
|
-
|
|
11240
|
-
var noSuccessor = ["\\smallint"];
|
|
11425
|
+
var style = options.style;
|
|
11241
11426
|
var large = false;
|
|
11242
11427
|
|
|
11243
11428
|
if (style.size === src_Style.DISPLAY.size && group.symbol && !utils.contains(noSuccessor, group.name)) {
|
|
@@ -11449,11 +11634,15 @@ var op_htmlBuilder = function htmlBuilder(grp, options) {
|
|
|
11449
11634
|
};
|
|
11450
11635
|
|
|
11451
11636
|
var op_mathmlBuilder = function mathmlBuilder(group, options) {
|
|
11452
|
-
var node;
|
|
11637
|
+
var node;
|
|
11453
11638
|
|
|
11454
11639
|
if (group.symbol) {
|
|
11455
11640
|
// This is a symbol. Just add the symbol.
|
|
11456
11641
|
node = new mathMLTree_MathNode("mo", [buildMathML_makeText(group.name, group.mode)]);
|
|
11642
|
+
|
|
11643
|
+
if (utils.contains(noSuccessor, group.name)) {
|
|
11644
|
+
node.setAttribute("largeop", "false");
|
|
11645
|
+
}
|
|
11457
11646
|
} else if (group.body) {
|
|
11458
11647
|
// This is an operator with children. Add them.
|
|
11459
11648
|
node = new mathMLTree_MathNode("mo", buildMathML_buildExpression(group.body, options));
|
|
@@ -11466,7 +11655,12 @@ var op_mathmlBuilder = function mathmlBuilder(group, options) {
|
|
|
11466
11655
|
// ref: https://www.w3.org/TR/REC-MathML/chap3_2.html#sec3.2.4
|
|
11467
11656
|
|
|
11468
11657
|
var operator = new mathMLTree_MathNode("mo", [buildMathML_makeText("\u2061", "text")]);
|
|
11469
|
-
|
|
11658
|
+
|
|
11659
|
+
if (group.parentIsSupSub) {
|
|
11660
|
+
node = new mathMLTree_MathNode("mo", [node, operator]);
|
|
11661
|
+
} else {
|
|
11662
|
+
node = newDocumentFragment([node, operator]);
|
|
11663
|
+
}
|
|
11470
11664
|
}
|
|
11471
11665
|
|
|
11472
11666
|
return node;
|
|
@@ -11479,7 +11673,7 @@ var singleCharBigOps = {
|
|
|
11479
11673
|
"\u22C0": "\\bigwedge",
|
|
11480
11674
|
"\u22C1": "\\bigvee",
|
|
11481
11675
|
"\u22C2": "\\bigcap",
|
|
11482
|
-
"\u22C3": "\\
|
|
11676
|
+
"\u22C3": "\\bigcup",
|
|
11483
11677
|
"\u2A00": "\\bigodot",
|
|
11484
11678
|
"\u2A01": "\\bigoplus",
|
|
11485
11679
|
"\u2A02": "\\bigotimes",
|
|
@@ -11505,6 +11699,7 @@ defineFunction({
|
|
|
11505
11699
|
type: "op",
|
|
11506
11700
|
mode: parser.mode,
|
|
11507
11701
|
limits: true,
|
|
11702
|
+
parentIsSupSub: false,
|
|
11508
11703
|
symbol: true,
|
|
11509
11704
|
name: fName
|
|
11510
11705
|
};
|
|
@@ -11527,6 +11722,7 @@ defineFunction({
|
|
|
11527
11722
|
type: "op",
|
|
11528
11723
|
mode: parser.mode,
|
|
11529
11724
|
limits: false,
|
|
11725
|
+
parentIsSupSub: false,
|
|
11530
11726
|
symbol: false,
|
|
11531
11727
|
body: defineFunction_ordargument(body)
|
|
11532
11728
|
};
|
|
@@ -11559,6 +11755,7 @@ defineFunction({
|
|
|
11559
11755
|
type: "op",
|
|
11560
11756
|
mode: parser.mode,
|
|
11561
11757
|
limits: false,
|
|
11758
|
+
parentIsSupSub: false,
|
|
11562
11759
|
symbol: false,
|
|
11563
11760
|
name: funcName
|
|
11564
11761
|
};
|
|
@@ -11580,6 +11777,7 @@ defineFunction({
|
|
|
11580
11777
|
type: "op",
|
|
11581
11778
|
mode: parser.mode,
|
|
11582
11779
|
limits: true,
|
|
11780
|
+
parentIsSupSub: false,
|
|
11583
11781
|
symbol: false,
|
|
11584
11782
|
name: funcName
|
|
11585
11783
|
};
|
|
@@ -11607,6 +11805,7 @@ defineFunction({
|
|
|
11607
11805
|
type: "op",
|
|
11608
11806
|
mode: parser.mode,
|
|
11609
11807
|
limits: false,
|
|
11808
|
+
parentIsSupSub: false,
|
|
11610
11809
|
symbol: true,
|
|
11611
11810
|
name: fName
|
|
11612
11811
|
};
|
|
@@ -11717,9 +11916,8 @@ defineFunction({
|
|
|
11717
11916
|
// Write a single TextNode instead of multiple nested tags.
|
|
11718
11917
|
var word = expression.map(function (node) {
|
|
11719
11918
|
return node.toText();
|
|
11720
|
-
}).join("");
|
|
11721
|
-
|
|
11722
|
-
expression = [new mathMLTree.TextNode(word, false)];
|
|
11919
|
+
}).join("");
|
|
11920
|
+
expression = [new mathMLTree.TextNode(word)];
|
|
11723
11921
|
}
|
|
11724
11922
|
|
|
11725
11923
|
var identifier = new mathMLTree.MathNode("mi", expression);
|
|
@@ -11738,6 +11936,10 @@ defineFunction({
|
|
|
11738
11936
|
defineFunctionBuilders({
|
|
11739
11937
|
type: "ordgroup",
|
|
11740
11938
|
htmlBuilder: function htmlBuilder(group, options) {
|
|
11939
|
+
if (group.semisimple) {
|
|
11940
|
+
return buildCommon.makeFragment(buildHTML_buildExpression(group.body, options, false));
|
|
11941
|
+
}
|
|
11942
|
+
|
|
11741
11943
|
return buildCommon.makeSpan(["mord"], buildHTML_buildExpression(group.body, options, true), options);
|
|
11742
11944
|
},
|
|
11743
11945
|
mathmlBuilder: function mathmlBuilder(group, options) {
|
|
@@ -11866,13 +12068,16 @@ defineFunction({
|
|
|
11866
12068
|
type: "elem",
|
|
11867
12069
|
elem: node
|
|
11868
12070
|
}]
|
|
11869
|
-
}, options);
|
|
11870
|
-
|
|
12071
|
+
}, options); // For spacing, TeX treats \smash as a math group (same spacing as ord).
|
|
12072
|
+
|
|
12073
|
+
return buildCommon.makeSpan(["mord"], [node], options);
|
|
11871
12074
|
},
|
|
11872
12075
|
mathmlBuilder: function mathmlBuilder(group, options) {
|
|
11873
12076
|
var inner = buildMathML_buildExpression(defineFunction_ordargument(group.body), options);
|
|
11874
|
-
var
|
|
12077
|
+
var phantom = new mathMLTree.MathNode("mphantom", inner);
|
|
12078
|
+
var node = new mathMLTree.MathNode("mpadded", [phantom]);
|
|
11875
12079
|
node.setAttribute("height", "0px");
|
|
12080
|
+
node.setAttribute("depth", "0px");
|
|
11876
12081
|
return node;
|
|
11877
12082
|
}
|
|
11878
12083
|
});
|
|
@@ -11899,7 +12104,8 @@ defineFunction({
|
|
|
11899
12104
|
},
|
|
11900
12105
|
mathmlBuilder: function mathmlBuilder(group, options) {
|
|
11901
12106
|
var inner = buildMathML_buildExpression(defineFunction_ordargument(group.body), options);
|
|
11902
|
-
var
|
|
12107
|
+
var phantom = new mathMLTree.MathNode("mphantom", inner);
|
|
12108
|
+
var node = new mathMLTree.MathNode("mpadded", [phantom]);
|
|
11903
12109
|
node.setAttribute("width", "0px");
|
|
11904
12110
|
return node;
|
|
11905
12111
|
}
|
|
@@ -11952,7 +12158,6 @@ defineFunction({
|
|
|
11952
12158
|
var breakOnTokenText = _ref.breakOnTokenText,
|
|
11953
12159
|
funcName = _ref.funcName,
|
|
11954
12160
|
parser = _ref.parser;
|
|
11955
|
-
parser.consumeSpaces();
|
|
11956
12161
|
var body = parser.parseExpression(false, breakOnTokenText);
|
|
11957
12162
|
return {
|
|
11958
12163
|
type: "sizing",
|
|
@@ -12068,14 +12273,9 @@ defineFunction({
|
|
|
12068
12273
|
// Make an empty span for the rule
|
|
12069
12274
|
var rule = buildCommon.makeSpan(["mord", "rule"], [], options); // Calculate the shift, width, and height of the rule, and account for units
|
|
12070
12275
|
|
|
12071
|
-
var shift = 0;
|
|
12072
|
-
|
|
12073
|
-
if (group.shift) {
|
|
12074
|
-
shift = units_calculateSize(group.shift, options);
|
|
12075
|
-
}
|
|
12076
|
-
|
|
12077
12276
|
var width = units_calculateSize(group.width, options);
|
|
12078
|
-
var height = units_calculateSize(group.height, options);
|
|
12277
|
+
var height = units_calculateSize(group.height, options);
|
|
12278
|
+
var shift = group.shift ? units_calculateSize(group.shift, options) : 0; // Style the rule to the right size
|
|
12079
12279
|
|
|
12080
12280
|
rule.style.borderRightWidth = width + "em";
|
|
12081
12281
|
rule.style.borderTopWidth = height + "em";
|
|
@@ -12091,10 +12291,25 @@ defineFunction({
|
|
|
12091
12291
|
return rule;
|
|
12092
12292
|
},
|
|
12093
12293
|
mathmlBuilder: function mathmlBuilder(group, options) {
|
|
12094
|
-
|
|
12095
|
-
|
|
12096
|
-
var
|
|
12097
|
-
|
|
12294
|
+
var width = units_calculateSize(group.width, options);
|
|
12295
|
+
var height = units_calculateSize(group.height, options);
|
|
12296
|
+
var shift = group.shift ? units_calculateSize(group.shift, options) : 0;
|
|
12297
|
+
var color = options.color && options.getColor() || "black";
|
|
12298
|
+
var rule = new mathMLTree.MathNode("mspace");
|
|
12299
|
+
rule.setAttribute("mathbackground", color);
|
|
12300
|
+
rule.setAttribute("width", width + "em");
|
|
12301
|
+
rule.setAttribute("height", height + "em");
|
|
12302
|
+
var wrapper = new mathMLTree.MathNode("mpadded", [rule]);
|
|
12303
|
+
|
|
12304
|
+
if (shift >= 0) {
|
|
12305
|
+
wrapper.setAttribute("height", "+" + shift + "em");
|
|
12306
|
+
} else {
|
|
12307
|
+
wrapper.setAttribute("height", shift + "em");
|
|
12308
|
+
wrapper.setAttribute("depth", "+" + -shift + "em");
|
|
12309
|
+
}
|
|
12310
|
+
|
|
12311
|
+
wrapper.setAttribute("voffset", shift + "em");
|
|
12312
|
+
return wrapper;
|
|
12098
12313
|
}
|
|
12099
12314
|
});
|
|
12100
12315
|
// CONCATENATED MODULE: ./src/functions/smash.js
|
|
@@ -12155,7 +12370,7 @@ defineFunction({
|
|
|
12155
12370
|
};
|
|
12156
12371
|
},
|
|
12157
12372
|
htmlBuilder: function htmlBuilder(group, options) {
|
|
12158
|
-
var node = buildCommon.makeSpan([
|
|
12373
|
+
var node = buildCommon.makeSpan([], [buildHTML_buildGroup(group.body, options)]);
|
|
12159
12374
|
|
|
12160
12375
|
if (!group.smashHeight && !group.smashDepth) {
|
|
12161
12376
|
return node;
|
|
@@ -12185,13 +12400,15 @@ defineFunction({
|
|
|
12185
12400
|
// from acting on that line height. So we'll call makeVList now.
|
|
12186
12401
|
|
|
12187
12402
|
|
|
12188
|
-
|
|
12403
|
+
var smashedNode = buildCommon.makeVList({
|
|
12189
12404
|
positionType: "firstBaseline",
|
|
12190
12405
|
children: [{
|
|
12191
12406
|
type: "elem",
|
|
12192
12407
|
elem: node
|
|
12193
12408
|
}]
|
|
12194
|
-
}, options);
|
|
12409
|
+
}, options); // For spacing, TeX treats \hphantom as a math group (same spacing as ord).
|
|
12410
|
+
|
|
12411
|
+
return buildCommon.makeSpan(["mord"], [smashedNode], options);
|
|
12195
12412
|
},
|
|
12196
12413
|
mathmlBuilder: function mathmlBuilder(group, options) {
|
|
12197
12414
|
var node = new mathMLTree.MathNode("mpadded", [buildMathML_buildGroup(group.body, options)]);
|
|
@@ -12348,7 +12565,6 @@ defineFunction({
|
|
|
12348
12565
|
funcName = _ref.funcName,
|
|
12349
12566
|
parser = _ref.parser;
|
|
12350
12567
|
// parse out the implicit body
|
|
12351
|
-
parser.consumeSpaces();
|
|
12352
12568
|
var body = parser.parseExpression(true, breakOnTokenText); // TODO: Refactor to avoid duplicating styleMap in multiple places (e.g.
|
|
12353
12569
|
// here and in buildHTML and de-dupe the enumeration of all the styles).
|
|
12354
12570
|
// $FlowFixMe: The names above exactly match the styles.
|
|
@@ -12596,6 +12812,10 @@ defineFunctionBuilders({
|
|
|
12596
12812
|
}
|
|
12597
12813
|
}
|
|
12598
12814
|
|
|
12815
|
+
if (group.base && group.base.type === "op") {
|
|
12816
|
+
group.base.parentIsSupSub = true;
|
|
12817
|
+
}
|
|
12818
|
+
|
|
12599
12819
|
var children = [buildMathML_buildGroup(group.base, options)];
|
|
12600
12820
|
|
|
12601
12821
|
if (group.sub) {
|
|
@@ -12613,7 +12833,7 @@ defineFunctionBuilders({
|
|
|
12613
12833
|
} else if (!group.sub) {
|
|
12614
12834
|
var base = group.base;
|
|
12615
12835
|
|
|
12616
|
-
if (base && base.type === "op" && base.limits && options.style === src_Style.DISPLAY) {
|
|
12836
|
+
if (base && base.type === "op" && base.limits && (options.style === src_Style.DISPLAY || base.alwaysHandleSupSub)) {
|
|
12617
12837
|
nodeType = "mover";
|
|
12618
12838
|
} else {
|
|
12619
12839
|
nodeType = "msup";
|
|
@@ -12621,7 +12841,7 @@ defineFunctionBuilders({
|
|
|
12621
12841
|
} else if (!group.sup) {
|
|
12622
12842
|
var _base = group.base;
|
|
12623
12843
|
|
|
12624
|
-
if (_base && _base.type === "op" && _base.limits && options.style === src_Style.DISPLAY) {
|
|
12844
|
+
if (_base && _base.type === "op" && _base.limits && (options.style === src_Style.DISPLAY || _base.alwaysHandleSupSub)) {
|
|
12625
12845
|
nodeType = "munder";
|
|
12626
12846
|
} else {
|
|
12627
12847
|
nodeType = "msub";
|
|
@@ -12662,6 +12882,10 @@ defineFunctionBuilders({
|
|
|
12662
12882
|
}
|
|
12663
12883
|
} else if (group.family === "punct") {
|
|
12664
12884
|
node.setAttribute("separator", "true");
|
|
12885
|
+
} else if (group.family === "open" || group.family === "close") {
|
|
12886
|
+
// Delims built here should not stretch vertically.
|
|
12887
|
+
// See delimsizing.js for stretchy delims.
|
|
12888
|
+
node.setAttribute("stretchy", "false");
|
|
12665
12889
|
}
|
|
12666
12890
|
|
|
12667
12891
|
return node;
|
|
@@ -12792,12 +13016,25 @@ defineFunctionBuilders({
|
|
|
12792
13016
|
|
|
12793
13017
|
|
|
12794
13018
|
|
|
13019
|
+
|
|
13020
|
+
var tag_pad = function pad() {
|
|
13021
|
+
var padNode = new mathMLTree.MathNode("mtd", []);
|
|
13022
|
+
padNode.setAttribute("width", "50%");
|
|
13023
|
+
return padNode;
|
|
13024
|
+
};
|
|
13025
|
+
|
|
12795
13026
|
defineFunctionBuilders({
|
|
12796
13027
|
type: "tag",
|
|
12797
13028
|
mathmlBuilder: function mathmlBuilder(group, options) {
|
|
12798
|
-
var table = new mathMLTree.MathNode("mtable", [new mathMLTree.MathNode("
|
|
12799
|
-
table.setAttribute("
|
|
12800
|
-
return table;
|
|
13029
|
+
var table = new mathMLTree.MathNode("mtable", [new mathMLTree.MathNode("mtr", [tag_pad(), new mathMLTree.MathNode("mtd", [buildExpressionRow(group.body, options)]), tag_pad(), new mathMLTree.MathNode("mtd", [buildExpressionRow(group.tag, options)])])]);
|
|
13030
|
+
table.setAttribute("width", "100%");
|
|
13031
|
+
return table; // TODO: Left-aligned tags.
|
|
13032
|
+
// Currently, the group and options passed here do not contain
|
|
13033
|
+
// enough info to set tag alignment. `leqno` is in Settings but it is
|
|
13034
|
+
// not passed to Options. On the HTML side, leqno is
|
|
13035
|
+
// set by a CSS class applied in buildTree.js. That would have worked
|
|
13036
|
+
// in MathML if browsers supported <mlabeledtr>. Since they don't, we
|
|
13037
|
+
// need to rewrite the way this function is called.
|
|
12801
13038
|
}
|
|
12802
13039
|
});
|
|
12803
13040
|
// CONCATENATED MODULE: ./src/functions/text.js
|
|
@@ -12814,10 +13051,12 @@ var textFontFamilies = {
|
|
|
12814
13051
|
"\\textnormal": "textrm"
|
|
12815
13052
|
};
|
|
12816
13053
|
var textFontWeights = {
|
|
12817
|
-
"\\textbf": "textbf"
|
|
13054
|
+
"\\textbf": "textbf",
|
|
13055
|
+
"\\textmd": "textmd"
|
|
12818
13056
|
};
|
|
12819
13057
|
var textFontShapes = {
|
|
12820
|
-
"\\textit": "textit"
|
|
13058
|
+
"\\textit": "textit",
|
|
13059
|
+
"\\textup": "textup"
|
|
12821
13060
|
};
|
|
12822
13061
|
|
|
12823
13062
|
var optionsWithFont = function optionsWithFont(group, options) {
|
|
@@ -12838,8 +13077,8 @@ defineFunction({
|
|
|
12838
13077
|
type: "text",
|
|
12839
13078
|
names: [// Font families
|
|
12840
13079
|
"\\text", "\\textrm", "\\textsf", "\\texttt", "\\textnormal", // Font weights
|
|
12841
|
-
"\\textbf", // Font Shapes
|
|
12842
|
-
"\\textit"],
|
|
13080
|
+
"\\textbf", "\\textmd", // Font Shapes
|
|
13081
|
+
"\\textit", "\\textup"],
|
|
12843
13082
|
props: {
|
|
12844
13083
|
numArgs: 1,
|
|
12845
13084
|
argTypes: ["text"],
|
|
@@ -12997,6 +13236,8 @@ var functions = _functions;
|
|
|
12997
13236
|
|
|
12998
13237
|
|
|
12999
13238
|
|
|
13239
|
+
// Disabled until https://github.com/KaTeX/KaTeX/pull/1794 is merged.
|
|
13240
|
+
// import "./functions/includegraphics";
|
|
13000
13241
|
|
|
13001
13242
|
|
|
13002
13243
|
|
|
@@ -13070,28 +13311,37 @@ combiningDiacriticalMarkString + "*") + // ...plus accents
|
|
|
13070
13311
|
"|\\\\verb([^*a-zA-Z]).*?\\4" + ( // \verb unstarred
|
|
13071
13312
|
"|" + controlWordWhitespaceRegexString) + ( // \macroName + spaces
|
|
13072
13313
|
"|" + controlSymbolRegexString + ")"); // \\, \', etc.
|
|
13073
|
-
// These regexs are for matching results from tokenRegex,
|
|
13074
|
-
// so they do have ^ markers.
|
|
13075
13314
|
|
|
13076
|
-
var controlWordRegex = new RegExp("^" + controlWordRegexString);
|
|
13077
13315
|
/** Main Lexer class */
|
|
13078
13316
|
|
|
13079
13317
|
var Lexer_Lexer =
|
|
13080
13318
|
/*#__PURE__*/
|
|
13081
13319
|
function () {
|
|
13082
|
-
|
|
13320
|
+
// category codes, only supports comment characters (14) for now
|
|
13321
|
+
function Lexer(input, settings) {
|
|
13083
13322
|
this.input = void 0;
|
|
13323
|
+
this.settings = void 0;
|
|
13084
13324
|
this.tokenRegex = void 0;
|
|
13325
|
+
this.catcodes = void 0;
|
|
13085
13326
|
// Separate accents from characters
|
|
13086
13327
|
this.input = input;
|
|
13328
|
+
this.settings = settings;
|
|
13087
13329
|
this.tokenRegex = new RegExp(tokenRegexString, 'g');
|
|
13330
|
+
this.catcodes = {
|
|
13331
|
+
"%": 14 // comment character
|
|
13332
|
+
|
|
13333
|
+
};
|
|
13334
|
+
}
|
|
13335
|
+
|
|
13336
|
+
var _proto = Lexer.prototype;
|
|
13337
|
+
|
|
13338
|
+
_proto.setCatcode = function setCatcode(char, code) {
|
|
13339
|
+
this.catcodes[char] = code;
|
|
13088
13340
|
}
|
|
13089
13341
|
/**
|
|
13090
13342
|
* This function lexes a single token.
|
|
13091
13343
|
*/
|
|
13092
|
-
|
|
13093
|
-
|
|
13094
|
-
var _proto = Lexer.prototype;
|
|
13344
|
+
;
|
|
13095
13345
|
|
|
13096
13346
|
_proto.lex = function lex() {
|
|
13097
13347
|
var input = this.input;
|
|
@@ -13107,7 +13357,23 @@ function () {
|
|
|
13107
13357
|
throw new src_ParseError("Unexpected character: '" + input[pos] + "'", new Token_Token(input[pos], new SourceLocation(this, pos, pos + 1)));
|
|
13108
13358
|
}
|
|
13109
13359
|
|
|
13110
|
-
var text = match[2] || " ";
|
|
13360
|
+
var text = match[2] || " ";
|
|
13361
|
+
|
|
13362
|
+
if (this.catcodes[text] === 14) {
|
|
13363
|
+
// comment character
|
|
13364
|
+
var nlIndex = input.indexOf('\n', this.tokenRegex.lastIndex);
|
|
13365
|
+
|
|
13366
|
+
if (nlIndex === -1) {
|
|
13367
|
+
this.tokenRegex.lastIndex = input.length; // EOF
|
|
13368
|
+
|
|
13369
|
+
this.settings.reportNonstrict("commentAtEnd", "% comment has no terminating newline; LaTeX would " + "fail because of commenting the end of math mode (e.g. $)");
|
|
13370
|
+
} else {
|
|
13371
|
+
this.tokenRegex.lastIndex = nlIndex + 1;
|
|
13372
|
+
}
|
|
13373
|
+
|
|
13374
|
+
return this.lex();
|
|
13375
|
+
} // Trim any trailing whitespace from control word match
|
|
13376
|
+
|
|
13111
13377
|
|
|
13112
13378
|
var controlMatch = text.match(controlWordWhitespaceRegex);
|
|
13113
13379
|
|
|
@@ -13166,11 +13432,11 @@ function () {
|
|
|
13166
13432
|
|
|
13167
13433
|
_proto.beginGroup = function beginGroup() {
|
|
13168
13434
|
this.undefStack.push({});
|
|
13169
|
-
}
|
|
13435
|
+
}
|
|
13170
13436
|
/**
|
|
13171
13437
|
* End current nested group, restoring values before the group began.
|
|
13172
13438
|
*/
|
|
13173
|
-
|
|
13439
|
+
;
|
|
13174
13440
|
|
|
13175
13441
|
_proto.endGroup = function endGroup() {
|
|
13176
13442
|
if (this.undefStack.length === 0) {
|
|
@@ -13188,16 +13454,16 @@ function () {
|
|
|
13188
13454
|
}
|
|
13189
13455
|
}
|
|
13190
13456
|
}
|
|
13191
|
-
}
|
|
13457
|
+
}
|
|
13192
13458
|
/**
|
|
13193
13459
|
* Detect whether `name` has a definition. Equivalent to
|
|
13194
13460
|
* `get(name) != null`.
|
|
13195
13461
|
*/
|
|
13196
|
-
|
|
13462
|
+
;
|
|
13197
13463
|
|
|
13198
13464
|
_proto.has = function has(name) {
|
|
13199
13465
|
return this.current.hasOwnProperty(name) || this.builtins.hasOwnProperty(name);
|
|
13200
|
-
}
|
|
13466
|
+
}
|
|
13201
13467
|
/**
|
|
13202
13468
|
* Get the current value of a name, or `undefined` if there is no value.
|
|
13203
13469
|
*
|
|
@@ -13206,7 +13472,7 @@ function () {
|
|
|
13206
13472
|
* to `false` in JavaScript. Use `if (namespace.get(...) != null)` or
|
|
13207
13473
|
* `if (namespace.has(...))`.
|
|
13208
13474
|
*/
|
|
13209
|
-
|
|
13475
|
+
;
|
|
13210
13476
|
|
|
13211
13477
|
_proto.get = function get(name) {
|
|
13212
13478
|
if (this.current.hasOwnProperty(name)) {
|
|
@@ -13214,14 +13480,14 @@ function () {
|
|
|
13214
13480
|
} else {
|
|
13215
13481
|
return this.builtins[name];
|
|
13216
13482
|
}
|
|
13217
|
-
}
|
|
13483
|
+
}
|
|
13218
13484
|
/**
|
|
13219
13485
|
* Set the current value of a name, and optionally set it globally too.
|
|
13220
13486
|
* Local set() sets the current value and (when appropriate) adds an undo
|
|
13221
13487
|
* operation to the undo stack. Global set() may change the undo
|
|
13222
13488
|
* operation at every level, so takes time linear in their number.
|
|
13223
13489
|
*/
|
|
13224
|
-
|
|
13490
|
+
;
|
|
13225
13491
|
|
|
13226
13492
|
_proto.set = function set(name, value, global) {
|
|
13227
13493
|
if (global === void 0) {
|
|
@@ -13544,9 +13810,7 @@ defineMacro("\\providecommand", function (context) {
|
|
|
13544
13810
|
// \let\bgroup={ \let\egroup=}
|
|
13545
13811
|
|
|
13546
13812
|
defineMacro("\\bgroup", "{");
|
|
13547
|
-
defineMacro("\\egroup", "}");
|
|
13548
|
-
defineMacro("\\begingroup", "{");
|
|
13549
|
-
defineMacro("\\endgroup", "}"); // Symbols from latex.ltx:
|
|
13813
|
+
defineMacro("\\egroup", "}"); // Symbols from latex.ltx:
|
|
13550
13814
|
// \def\lq{`}
|
|
13551
13815
|
// \def\rq{'}
|
|
13552
13816
|
// \def \aa {\r a}
|
|
@@ -13564,17 +13828,7 @@ defineMacro("\\AA", "\\r A"); // Copyright (C) and registered (R) symbols. Use r
|
|
|
13564
13828
|
|
|
13565
13829
|
defineMacro("\\textcopyright", "\\html@mathml{\\textcircled{c}}{\\char`©}");
|
|
13566
13830
|
defineMacro("\\copyright", "\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");
|
|
13567
|
-
defineMacro("\\textregistered", "\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}"); // Unicode
|
|
13568
|
-
|
|
13569
|
-
defineMacro("\u2102", "\\mathbb{C}");
|
|
13570
|
-
defineMacro("\u210D", "\\mathbb{H}");
|
|
13571
|
-
defineMacro("\u2115", "\\mathbb{N}");
|
|
13572
|
-
defineMacro("\u2119", "\\mathbb{P}");
|
|
13573
|
-
defineMacro("\u211A", "\\mathbb{Q}");
|
|
13574
|
-
defineMacro("\u211D", "\\mathbb{R}");
|
|
13575
|
-
defineMacro("\u2124", "\\mathbb{Z}");
|
|
13576
|
-
defineMacro("\u210E", "\\mathit{h}"); // Planck constant
|
|
13577
|
-
// Characters omitted from Unicode range 1D400–1D7FF
|
|
13831
|
+
defineMacro("\\textregistered", "\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}"); // Characters omitted from Unicode range 1D400–1D7FF
|
|
13578
13832
|
|
|
13579
13833
|
defineMacro("\u212C", "\\mathscr{B}"); // script
|
|
13580
13834
|
|
|
@@ -13588,7 +13842,9 @@ defineMacro("\u211B", "\\mathscr{R}");
|
|
|
13588
13842
|
defineMacro("\u212D", "\\mathfrak{C}"); // Fraktur
|
|
13589
13843
|
|
|
13590
13844
|
defineMacro("\u210C", "\\mathfrak{H}");
|
|
13591
|
-
defineMacro("\u2128", "\\mathfrak{Z}"); //
|
|
13845
|
+
defineMacro("\u2128", "\\mathfrak{Z}"); // Define \Bbbk with a macro that works in both HTML and MathML.
|
|
13846
|
+
|
|
13847
|
+
defineMacro("\\Bbbk", "\\Bbb{k}"); // Unicode middle dot
|
|
13592
13848
|
// The KaTeX fonts do not contain U+00B7. Instead, \cdotp displays
|
|
13593
13849
|
// the dot at U+22C5 and gives it punct spacing.
|
|
13594
13850
|
|
|
@@ -13600,8 +13856,9 @@ defineMacro("\\clap", "\\mathclap{\\textrm{#1}}"); // \not is defined by base/fo
|
|
|
13600
13856
|
// \DeclareMathSymbol{\not}{\mathrel}{symbols}{"36}
|
|
13601
13857
|
// It's thus treated like a \mathrel, but defined by a symbol that has zero
|
|
13602
13858
|
// width but extends to the right. We use \rlap to get that spacing.
|
|
13859
|
+
// For MathML we write U+0338 here. buildMathML.js will then do the overlay.
|
|
13603
13860
|
|
|
13604
|
-
defineMacro("\\not", '\\mathrel{\\mathrlap\\@not}'); // Negated symbols from base/fontmath.ltx:
|
|
13861
|
+
defineMacro("\\not", '\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}'); // Negated symbols from base/fontmath.ltx:
|
|
13605
13862
|
// \def\neq{\not=} \let\ne=\neq
|
|
13606
13863
|
// \DeclareRobustCommand
|
|
13607
13864
|
// \notin{\mathrel{\m@th\mathpalette\c@ncel\in}}
|
|
@@ -13917,31 +14174,37 @@ defineMacro("\\ordinarycolon", ":"); //\def\vcentcolon{\mathrel{\mathop\ordinary
|
|
|
13917
14174
|
|
|
13918
14175
|
defineMacro("\\vcentcolon", "\\mathrel{\\mathop\\ordinarycolon}"); // \providecommand*\dblcolon{\vcentcolon\mathrel{\mkern-.9mu}\vcentcolon}
|
|
13919
14176
|
|
|
13920
|
-
defineMacro("\\dblcolon", "\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}"); // \providecommand*\coloneqq{\vcentcolon\mathrel{\mkern-1.2mu}=}
|
|
14177
|
+
defineMacro("\\dblcolon", "\\html@mathml{" + "\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}" + "{\\mathop{\\char\"2237}}"); // \providecommand*\coloneqq{\vcentcolon\mathrel{\mkern-1.2mu}=}
|
|
14178
|
+
|
|
14179
|
+
defineMacro("\\coloneqq", "\\html@mathml{" + "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}" + "{\\mathop{\\char\"2254}}"); // ≔
|
|
14180
|
+
// \providecommand*\Coloneqq{\dblcolon\mathrel{\mkern-1.2mu}=}
|
|
13921
14181
|
|
|
13922
|
-
defineMacro("\\
|
|
14182
|
+
defineMacro("\\Coloneqq", "\\html@mathml{" + "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}" + "{\\mathop{\\char\"2237\\char\"3d}}"); // \providecommand*\coloneq{\vcentcolon\mathrel{\mkern-1.2mu}\mathrel{-}}
|
|
13923
14183
|
|
|
13924
|
-
defineMacro("\\
|
|
14184
|
+
defineMacro("\\coloneq", "\\html@mathml{" + "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}" + "{\\mathop{\\char\"3a\\char\"2212}}"); // \providecommand*\Coloneq{\dblcolon\mathrel{\mkern-1.2mu}\mathrel{-}}
|
|
13925
14185
|
|
|
13926
|
-
defineMacro("\\
|
|
14186
|
+
defineMacro("\\Coloneq", "\\html@mathml{" + "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}" + "{\\mathop{\\char\"2237\\char\"2212}}"); // \providecommand*\eqqcolon{=\mathrel{\mkern-1.2mu}\vcentcolon}
|
|
13927
14187
|
|
|
13928
|
-
defineMacro("\\
|
|
14188
|
+
defineMacro("\\eqqcolon", "\\html@mathml{" + "\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}" + "{\\mathop{\\char\"2255}}"); // ≕
|
|
14189
|
+
// \providecommand*\Eqqcolon{=\mathrel{\mkern-1.2mu}\dblcolon}
|
|
13929
14190
|
|
|
13930
|
-
defineMacro("\\
|
|
14191
|
+
defineMacro("\\Eqqcolon", "\\html@mathml{" + "\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}" + "{\\mathop{\\char\"3d\\char\"2237}}"); // \providecommand*\eqcolon{\mathrel{-}\mathrel{\mkern-1.2mu}\vcentcolon}
|
|
13931
14192
|
|
|
13932
|
-
defineMacro("\\
|
|
14193
|
+
defineMacro("\\eqcolon", "\\html@mathml{" + "\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}" + "{\\mathop{\\char\"2239}}"); // \providecommand*\Eqcolon{\mathrel{-}\mathrel{\mkern-1.2mu}\dblcolon}
|
|
13933
14194
|
|
|
13934
|
-
defineMacro("\\
|
|
14195
|
+
defineMacro("\\Eqcolon", "\\html@mathml{" + "\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}" + "{\\mathop{\\char\"2212\\char\"2237}}"); // \providecommand*\colonapprox{\vcentcolon\mathrel{\mkern-1.2mu}\approx}
|
|
13935
14196
|
|
|
13936
|
-
defineMacro("\\
|
|
14197
|
+
defineMacro("\\colonapprox", "\\html@mathml{" + "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}" + "{\\mathop{\\char\"3a\\char\"2248}}"); // \providecommand*\Colonapprox{\dblcolon\mathrel{\mkern-1.2mu}\approx}
|
|
13937
14198
|
|
|
13938
|
-
defineMacro("\\
|
|
14199
|
+
defineMacro("\\Colonapprox", "\\html@mathml{" + "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}" + "{\\mathop{\\char\"2237\\char\"2248}}"); // \providecommand*\colonsim{\vcentcolon\mathrel{\mkern-1.2mu}\sim}
|
|
13939
14200
|
|
|
13940
|
-
defineMacro("\\
|
|
14201
|
+
defineMacro("\\colonsim", "\\html@mathml{" + "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}" + "{\\mathop{\\char\"3a\\char\"223c}}"); // \providecommand*\Colonsim{\dblcolon\mathrel{\mkern-1.2mu}\sim}
|
|
13941
14202
|
|
|
13942
|
-
defineMacro("\\
|
|
14203
|
+
defineMacro("\\Colonsim", "\\html@mathml{" + "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}" + "{\\mathop{\\char\"2237\\char\"223c}}"); // Some Unicode characters are implemented with macros to mathtools functions.
|
|
13943
14204
|
|
|
13944
|
-
defineMacro("
|
|
14205
|
+
defineMacro("\u2237", "\\dblcolon"); // ::
|
|
14206
|
+
|
|
14207
|
+
defineMacro("\u2239", "\\eqcolon"); // -:
|
|
13945
14208
|
|
|
13946
14209
|
defineMacro("\u2254", "\\coloneqq"); // :=
|
|
13947
14210
|
|
|
@@ -13975,13 +14238,37 @@ defineMacro("\\approxcoloncolon", "\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\d
|
|
|
13975
14238
|
defineMacro("\\notni", "\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220C}}");
|
|
13976
14239
|
defineMacro("\\limsup", "\\DOTSB\\mathop{\\operatorname{lim\\,sup}}\\limits");
|
|
13977
14240
|
defineMacro("\\liminf", "\\DOTSB\\mathop{\\operatorname{lim\\,inf}}\\limits"); //////////////////////////////////////////////////////////////////////
|
|
13978
|
-
//
|
|
13979
|
-
|
|
13980
|
-
|
|
13981
|
-
|
|
13982
|
-
defineMacro("
|
|
13983
|
-
|
|
13984
|
-
defineMacro("
|
|
14241
|
+
// MathML alternates for KaTeX glyphs in the Unicode private area
|
|
14242
|
+
|
|
14243
|
+
defineMacro("\\gvertneqq", "\\html@mathml{\\@gvertneqq}{\u2269}");
|
|
14244
|
+
defineMacro("\\lvertneqq", "\\html@mathml{\\@lvertneqq}{\u2268}");
|
|
14245
|
+
defineMacro("\\ngeqq", "\\html@mathml{\\@ngeqq}{\u2271}");
|
|
14246
|
+
defineMacro("\\ngeqslant", "\\html@mathml{\\@ngeqslant}{\u2271}");
|
|
14247
|
+
defineMacro("\\nleqq", "\\html@mathml{\\@nleqq}{\u2270}");
|
|
14248
|
+
defineMacro("\\nleqslant", "\\html@mathml{\\@nleqslant}{\u2270}");
|
|
14249
|
+
defineMacro("\\nshortmid", "\\html@mathml{\\@nshortmid}{∤}");
|
|
14250
|
+
defineMacro("\\nshortparallel", "\\html@mathml{\\@nshortparallel}{∦}");
|
|
14251
|
+
defineMacro("\\nsubseteqq", "\\html@mathml{\\@nsubseteqq}{\u2288}");
|
|
14252
|
+
defineMacro("\\nsupseteqq", "\\html@mathml{\\@nsupseteqq}{\u2289}");
|
|
14253
|
+
defineMacro("\\varsubsetneq", "\\html@mathml{\\@varsubsetneq}{⊊}");
|
|
14254
|
+
defineMacro("\\varsubsetneqq", "\\html@mathml{\\@varsubsetneqq}{⫋}");
|
|
14255
|
+
defineMacro("\\varsupsetneq", "\\html@mathml{\\@varsupsetneq}{⊋}");
|
|
14256
|
+
defineMacro("\\varsupsetneqq", "\\html@mathml{\\@varsupsetneqq}{⫌}"); //////////////////////////////////////////////////////////////////////
|
|
14257
|
+
// stmaryrd and semantic
|
|
14258
|
+
// The stmaryrd and semantic packages render the next four items by calling a
|
|
14259
|
+
// glyph. Those glyphs do not exist in the KaTeX fonts. Hence the macros.
|
|
14260
|
+
|
|
14261
|
+
defineMacro("\\llbracket", "\\html@mathml{" + "\\mathopen{[\\mkern-3.2mu[}}" + "{\\mathopen{\\char`\u27E6}}");
|
|
14262
|
+
defineMacro("\\rrbracket", "\\html@mathml{" + "\\mathclose{]\\mkern-3.2mu]}}" + "{\\mathclose{\\char`\u27E7}}");
|
|
14263
|
+
defineMacro("\u27E6", "\\llbracket"); // blackboard bold [
|
|
14264
|
+
|
|
14265
|
+
defineMacro("\u27E7", "\\rrbracket"); // blackboard bold ]
|
|
14266
|
+
|
|
14267
|
+
defineMacro("\\lBrace", "\\html@mathml{" + "\\mathopen{\\{\\mkern-3.2mu[}}" + "{\\mathopen{\\char`\u2983}}");
|
|
14268
|
+
defineMacro("\\rBrace", "\\html@mathml{" + "\\mathclose{]\\mkern-3.2mu\\}}}" + "{\\mathclose{\\char`\u2984}}");
|
|
14269
|
+
defineMacro("\u2983", "\\lBrace"); // blackboard bold {
|
|
14270
|
+
|
|
14271
|
+
defineMacro("\u2984", "\\rBrace"); // blackboard bold }
|
|
13985
14272
|
// TODO: Create variable sized versions of the last two items. I believe that
|
|
13986
14273
|
// will require new font glyphs.
|
|
13987
14274
|
//////////////////////////////////////////////////////////////////////
|
|
@@ -14043,7 +14330,7 @@ defineMacro("\\Rarr", "\\Rightarrow");
|
|
|
14043
14330
|
defineMacro("\\real", "\\Re");
|
|
14044
14331
|
defineMacro("\\reals", "\\mathbb{R}");
|
|
14045
14332
|
defineMacro("\\Reals", "\\mathbb{R}");
|
|
14046
|
-
defineMacro("\\Rho", "\\mathrm{
|
|
14333
|
+
defineMacro("\\Rho", "\\mathrm{P}");
|
|
14047
14334
|
defineMacro("\\sdot", "\\cdot");
|
|
14048
14335
|
defineMacro("\\sect", "\\S");
|
|
14049
14336
|
defineMacro("\\spades", "\\spadesuit");
|
|
@@ -14054,7 +14341,69 @@ defineMacro("\\Tau", "\\mathrm{T}");
|
|
|
14054
14341
|
defineMacro("\\thetasym", "\\vartheta"); // TODO: defineMacro("\\varcoppa", "\\\mbox{\\coppa}");
|
|
14055
14342
|
|
|
14056
14343
|
defineMacro("\\weierp", "\\wp");
|
|
14057
|
-
defineMacro("\\Zeta", "\\mathrm{Z}");
|
|
14344
|
+
defineMacro("\\Zeta", "\\mathrm{Z}"); //////////////////////////////////////////////////////////////////////
|
|
14345
|
+
// statmath.sty
|
|
14346
|
+
// https://ctan.math.illinois.edu/macros/latex/contrib/statmath/statmath.pdf
|
|
14347
|
+
|
|
14348
|
+
defineMacro("\\argmin", "\\DOTSB\\mathop{\\operatorname{arg\\,min}}\\limits");
|
|
14349
|
+
defineMacro("\\argmax", "\\DOTSB\\mathop{\\operatorname{arg\\,max}}\\limits"); // Custom Khan Academy colors, should be moved to an optional package
|
|
14350
|
+
|
|
14351
|
+
defineMacro("\\blue", "\\textcolor{##6495ed}{#1}");
|
|
14352
|
+
defineMacro("\\orange", "\\textcolor{##ffa500}{#1}");
|
|
14353
|
+
defineMacro("\\pink", "\\textcolor{##ff00af}{#1}");
|
|
14354
|
+
defineMacro("\\red", "\\textcolor{##df0030}{#1}");
|
|
14355
|
+
defineMacro("\\green", "\\textcolor{##28ae7b}{#1}");
|
|
14356
|
+
defineMacro("\\gray", "\\textcolor{gray}{##1}");
|
|
14357
|
+
defineMacro("\\purple", "\\textcolor{##9d38bd}{#1}");
|
|
14358
|
+
defineMacro("\\blueA", "\\textcolor{##ccfaff}{#1}");
|
|
14359
|
+
defineMacro("\\blueB", "\\textcolor{##80f6ff}{#1}");
|
|
14360
|
+
defineMacro("\\blueC", "\\textcolor{##63d9ea}{#1}");
|
|
14361
|
+
defineMacro("\\blueD", "\\textcolor{##11accd}{#1}");
|
|
14362
|
+
defineMacro("\\blueE", "\\textcolor{##0c7f99}{#1}");
|
|
14363
|
+
defineMacro("\\tealA", "\\textcolor{##94fff5}{#1}");
|
|
14364
|
+
defineMacro("\\tealB", "\\textcolor{##26edd5}{#1}");
|
|
14365
|
+
defineMacro("\\tealC", "\\textcolor{##01d1c1}{#1}");
|
|
14366
|
+
defineMacro("\\tealD", "\\textcolor{##01a995}{#1}");
|
|
14367
|
+
defineMacro("\\tealE", "\\textcolor{##208170}{#1}");
|
|
14368
|
+
defineMacro("\\greenA", "\\textcolor{##b6ffb0}{#1}");
|
|
14369
|
+
defineMacro("\\greenB", "\\textcolor{##8af281}{#1}");
|
|
14370
|
+
defineMacro("\\greenC", "\\textcolor{##74cf70}{#1}");
|
|
14371
|
+
defineMacro("\\greenD", "\\textcolor{##1fab54}{#1}");
|
|
14372
|
+
defineMacro("\\greenE", "\\textcolor{##0d923f}{#1}");
|
|
14373
|
+
defineMacro("\\goldA", "\\textcolor{##ffd0a9}{#1}");
|
|
14374
|
+
defineMacro("\\goldB", "\\textcolor{##ffbb71}{#1}");
|
|
14375
|
+
defineMacro("\\goldC", "\\textcolor{##ff9c39}{#1}");
|
|
14376
|
+
defineMacro("\\goldD", "\\textcolor{##e07d10}{#1}");
|
|
14377
|
+
defineMacro("\\goldE", "\\textcolor{##a75a05}{#1}");
|
|
14378
|
+
defineMacro("\\redA", "\\textcolor{##fca9a9}{#1}");
|
|
14379
|
+
defineMacro("\\redB", "\\textcolor{##ff8482}{#1}");
|
|
14380
|
+
defineMacro("\\redC", "\\textcolor{##f9685d}{#1}");
|
|
14381
|
+
defineMacro("\\redD", "\\textcolor{##e84d39}{#1}");
|
|
14382
|
+
defineMacro("\\redE", "\\textcolor{##bc2612}{#1}");
|
|
14383
|
+
defineMacro("\\maroonA", "\\textcolor{##ffbde0}{#1}");
|
|
14384
|
+
defineMacro("\\maroonB", "\\textcolor{##ff92c6}{#1}");
|
|
14385
|
+
defineMacro("\\maroonC", "\\textcolor{##ed5fa6}{#1}");
|
|
14386
|
+
defineMacro("\\maroonD", "\\textcolor{##ca337c}{#1}");
|
|
14387
|
+
defineMacro("\\maroonE", "\\textcolor{##9e034e}{#1}");
|
|
14388
|
+
defineMacro("\\purpleA", "\\textcolor{##ddd7ff}{#1}");
|
|
14389
|
+
defineMacro("\\purpleB", "\\textcolor{##c6b9fc}{#1}");
|
|
14390
|
+
defineMacro("\\purpleC", "\\textcolor{##aa87ff}{#1}");
|
|
14391
|
+
defineMacro("\\purpleD", "\\textcolor{##7854ab}{#1}");
|
|
14392
|
+
defineMacro("\\purpleE", "\\textcolor{##543b78}{#1}");
|
|
14393
|
+
defineMacro("\\mintA", "\\textcolor{##f5f9e8}{#1}");
|
|
14394
|
+
defineMacro("\\mintB", "\\textcolor{##edf2df}{#1}");
|
|
14395
|
+
defineMacro("\\mintC", "\\textcolor{##e0e5cc}{#1}");
|
|
14396
|
+
defineMacro("\\grayA", "\\textcolor{##f6f7f7}{#1}");
|
|
14397
|
+
defineMacro("\\grayB", "\\textcolor{##f0f1f2}{#1}");
|
|
14398
|
+
defineMacro("\\grayC", "\\textcolor{##e3e5e6}{#1}");
|
|
14399
|
+
defineMacro("\\grayD", "\\textcolor{##d6d8da}{#1}");
|
|
14400
|
+
defineMacro("\\grayE", "\\textcolor{##babec2}{#1}");
|
|
14401
|
+
defineMacro("\\grayF", "\\textcolor{##888d93}{#1}");
|
|
14402
|
+
defineMacro("\\grayG", "\\textcolor{##626569}{#1}");
|
|
14403
|
+
defineMacro("\\grayH", "\\textcolor{##3b3e40}{#1}");
|
|
14404
|
+
defineMacro("\\grayI", "\\textcolor{##21242c}{#1}");
|
|
14405
|
+
defineMacro("\\kaBlue", "\\textcolor{##314453}{#1}");
|
|
14406
|
+
defineMacro("\\kaGreen", "\\textcolor{##71B307}{#1}");
|
|
14058
14407
|
// CONCATENATED MODULE: ./src/MacroExpander.js
|
|
14059
14408
|
/**
|
|
14060
14409
|
* This file contains the “gullet” where macros are expanded
|
|
@@ -14109,37 +14458,37 @@ function () {
|
|
|
14109
14458
|
var _proto = MacroExpander.prototype;
|
|
14110
14459
|
|
|
14111
14460
|
_proto.feed = function feed(input) {
|
|
14112
|
-
this.lexer = new Lexer_Lexer(input);
|
|
14113
|
-
}
|
|
14461
|
+
this.lexer = new Lexer_Lexer(input, this.settings);
|
|
14462
|
+
}
|
|
14114
14463
|
/**
|
|
14115
14464
|
* Switches between "text" and "math" modes.
|
|
14116
14465
|
*/
|
|
14117
|
-
|
|
14466
|
+
;
|
|
14118
14467
|
|
|
14119
14468
|
_proto.switchMode = function switchMode(newMode) {
|
|
14120
14469
|
this.mode = newMode;
|
|
14121
|
-
}
|
|
14470
|
+
}
|
|
14122
14471
|
/**
|
|
14123
14472
|
* Start a new group nesting within all namespaces.
|
|
14124
14473
|
*/
|
|
14125
|
-
|
|
14474
|
+
;
|
|
14126
14475
|
|
|
14127
14476
|
_proto.beginGroup = function beginGroup() {
|
|
14128
14477
|
this.macros.beginGroup();
|
|
14129
|
-
}
|
|
14478
|
+
}
|
|
14130
14479
|
/**
|
|
14131
14480
|
* End current group nesting within all namespaces.
|
|
14132
14481
|
*/
|
|
14133
|
-
|
|
14482
|
+
;
|
|
14134
14483
|
|
|
14135
14484
|
_proto.endGroup = function endGroup() {
|
|
14136
14485
|
this.macros.endGroup();
|
|
14137
|
-
}
|
|
14486
|
+
}
|
|
14138
14487
|
/**
|
|
14139
14488
|
* Returns the topmost token on the stack, without expanding it.
|
|
14140
14489
|
* Similar in behavior to TeX's `\futurelet`.
|
|
14141
14490
|
*/
|
|
14142
|
-
|
|
14491
|
+
;
|
|
14143
14492
|
|
|
14144
14493
|
_proto.future = function future() {
|
|
14145
14494
|
if (this.stack.length === 0) {
|
|
@@ -14147,40 +14496,40 @@ function () {
|
|
|
14147
14496
|
}
|
|
14148
14497
|
|
|
14149
14498
|
return this.stack[this.stack.length - 1];
|
|
14150
|
-
}
|
|
14499
|
+
}
|
|
14151
14500
|
/**
|
|
14152
14501
|
* Remove and return the next unexpanded token.
|
|
14153
14502
|
*/
|
|
14154
|
-
|
|
14503
|
+
;
|
|
14155
14504
|
|
|
14156
14505
|
_proto.popToken = function popToken() {
|
|
14157
14506
|
this.future(); // ensure non-empty stack
|
|
14158
14507
|
|
|
14159
14508
|
return this.stack.pop();
|
|
14160
|
-
}
|
|
14509
|
+
}
|
|
14161
14510
|
/**
|
|
14162
14511
|
* Add a given token to the token stack. In particular, this get be used
|
|
14163
14512
|
* to put back a token returned from one of the other methods.
|
|
14164
14513
|
*/
|
|
14165
|
-
|
|
14514
|
+
;
|
|
14166
14515
|
|
|
14167
14516
|
_proto.pushToken = function pushToken(token) {
|
|
14168
14517
|
this.stack.push(token);
|
|
14169
|
-
}
|
|
14518
|
+
}
|
|
14170
14519
|
/**
|
|
14171
14520
|
* Append an array of tokens to the token stack.
|
|
14172
14521
|
*/
|
|
14173
|
-
|
|
14522
|
+
;
|
|
14174
14523
|
|
|
14175
14524
|
_proto.pushTokens = function pushTokens(tokens) {
|
|
14176
14525
|
var _this$stack;
|
|
14177
14526
|
|
|
14178
14527
|
(_this$stack = this.stack).push.apply(_this$stack, tokens);
|
|
14179
|
-
}
|
|
14528
|
+
}
|
|
14180
14529
|
/**
|
|
14181
14530
|
* Consume all following space tokens, without expansion.
|
|
14182
14531
|
*/
|
|
14183
|
-
|
|
14532
|
+
;
|
|
14184
14533
|
|
|
14185
14534
|
_proto.consumeSpaces = function consumeSpaces() {
|
|
14186
14535
|
for (;;) {
|
|
@@ -14192,12 +14541,12 @@ function () {
|
|
|
14192
14541
|
break;
|
|
14193
14542
|
}
|
|
14194
14543
|
}
|
|
14195
|
-
}
|
|
14544
|
+
}
|
|
14196
14545
|
/**
|
|
14197
14546
|
* Consume the specified number of arguments from the token stream,
|
|
14198
14547
|
* and return the resulting array of arguments.
|
|
14199
14548
|
*/
|
|
14200
|
-
|
|
14549
|
+
;
|
|
14201
14550
|
|
|
14202
14551
|
_proto.consumeArgs = function consumeArgs(numArgs) {
|
|
14203
14552
|
var args = []; // obtain arguments, either single token or balanced {…} group
|
|
@@ -14237,7 +14586,7 @@ function () {
|
|
|
14237
14586
|
}
|
|
14238
14587
|
|
|
14239
14588
|
return args;
|
|
14240
|
-
}
|
|
14589
|
+
}
|
|
14241
14590
|
/**
|
|
14242
14591
|
* Expand the next token only once if possible.
|
|
14243
14592
|
*
|
|
@@ -14258,7 +14607,7 @@ function () {
|
|
|
14258
14607
|
* i.e. things like those defined by \def\foo#1\end{…}.
|
|
14259
14608
|
* See the TeX book page 202ff. for details on how those should behave.
|
|
14260
14609
|
*/
|
|
14261
|
-
|
|
14610
|
+
;
|
|
14262
14611
|
|
|
14263
14612
|
_proto.expandOnce = function expandOnce() {
|
|
14264
14613
|
var topToken = this.popToken();
|
|
@@ -14314,23 +14663,23 @@ function () {
|
|
|
14314
14663
|
|
|
14315
14664
|
this.pushTokens(tokens);
|
|
14316
14665
|
return tokens;
|
|
14317
|
-
}
|
|
14666
|
+
}
|
|
14318
14667
|
/**
|
|
14319
14668
|
* Expand the next token only once (if possible), and return the resulting
|
|
14320
14669
|
* top token on the stack (without removing anything from the stack).
|
|
14321
14670
|
* Similar in behavior to TeX's `\expandafter\futurelet`.
|
|
14322
14671
|
* Equivalent to expandOnce() followed by future().
|
|
14323
14672
|
*/
|
|
14324
|
-
|
|
14673
|
+
;
|
|
14325
14674
|
|
|
14326
14675
|
_proto.expandAfterFuture = function expandAfterFuture() {
|
|
14327
14676
|
this.expandOnce();
|
|
14328
14677
|
return this.future();
|
|
14329
|
-
}
|
|
14678
|
+
}
|
|
14330
14679
|
/**
|
|
14331
14680
|
* Recursively expand first token, then return first non-expandable token.
|
|
14332
14681
|
*/
|
|
14333
|
-
|
|
14682
|
+
;
|
|
14334
14683
|
|
|
14335
14684
|
_proto.expandNextToken = function expandNextToken() {
|
|
14336
14685
|
for (;;) {
|
|
@@ -14350,12 +14699,12 @@ function () {
|
|
|
14350
14699
|
|
|
14351
14700
|
|
|
14352
14701
|
throw new Error(); // eslint-disable-line no-unreachable
|
|
14353
|
-
}
|
|
14702
|
+
}
|
|
14354
14703
|
/**
|
|
14355
14704
|
* Fully expand the given macro name and return the resulting list of
|
|
14356
14705
|
* tokens, or return `undefined` if no such macro is defined.
|
|
14357
14706
|
*/
|
|
14358
|
-
|
|
14707
|
+
;
|
|
14359
14708
|
|
|
14360
14709
|
_proto.expandMacro = function expandMacro(name) {
|
|
14361
14710
|
if (!this.macros.get(name)) {
|
|
@@ -14375,12 +14724,12 @@ function () {
|
|
|
14375
14724
|
}
|
|
14376
14725
|
|
|
14377
14726
|
return output;
|
|
14378
|
-
}
|
|
14727
|
+
}
|
|
14379
14728
|
/**
|
|
14380
14729
|
* Fully expand the given macro name and return the result as a string,
|
|
14381
14730
|
* or return `undefined` if no such macro is defined.
|
|
14382
14731
|
*/
|
|
14383
|
-
|
|
14732
|
+
;
|
|
14384
14733
|
|
|
14385
14734
|
_proto.expandMacroAsText = function expandMacroAsText(name) {
|
|
14386
14735
|
var tokens = this.expandMacro(name);
|
|
@@ -14392,12 +14741,12 @@ function () {
|
|
|
14392
14741
|
} else {
|
|
14393
14742
|
return tokens;
|
|
14394
14743
|
}
|
|
14395
|
-
}
|
|
14744
|
+
}
|
|
14396
14745
|
/**
|
|
14397
14746
|
* Returns the expanded macro as a reversed array of tokens and a macro
|
|
14398
14747
|
* argument count. Or returns `null` if no such macro.
|
|
14399
14748
|
*/
|
|
14400
|
-
|
|
14749
|
+
;
|
|
14401
14750
|
|
|
14402
14751
|
_proto._getExpansion = function _getExpansion(name) {
|
|
14403
14752
|
var definition = this.macros.get(name);
|
|
@@ -14420,7 +14769,7 @@ function () {
|
|
|
14420
14769
|
}
|
|
14421
14770
|
}
|
|
14422
14771
|
|
|
14423
|
-
var bodyLexer = new Lexer_Lexer(expansion);
|
|
14772
|
+
var bodyLexer = new Lexer_Lexer(expansion, this.settings);
|
|
14424
14773
|
var tokens = [];
|
|
14425
14774
|
var tok = bodyLexer.lex();
|
|
14426
14775
|
|
|
@@ -14439,14 +14788,14 @@ function () {
|
|
|
14439
14788
|
}
|
|
14440
14789
|
|
|
14441
14790
|
return expansion;
|
|
14442
|
-
}
|
|
14791
|
+
}
|
|
14443
14792
|
/**
|
|
14444
14793
|
* Determine whether a command is currently "defined" (has some
|
|
14445
14794
|
* functionality), meaning that it's a macro (in the current group),
|
|
14446
14795
|
* a function, a symbol, or one of the special commands listed in
|
|
14447
14796
|
* `implicitCommands`.
|
|
14448
14797
|
*/
|
|
14449
|
-
|
|
14798
|
+
;
|
|
14450
14799
|
|
|
14451
14800
|
_proto.isDefined = function isDefined(name) {
|
|
14452
14801
|
return this.macros.has(name) || src_functions.hasOwnProperty(name) || src_symbols.math.hasOwnProperty(name) || src_symbols.text.hasOwnProperty(name) || implicitCommands.hasOwnProperty(name);
|
|
@@ -15229,29 +15578,29 @@ function () {
|
|
|
15229
15578
|
if (consume) {
|
|
15230
15579
|
this.consume();
|
|
15231
15580
|
}
|
|
15232
|
-
}
|
|
15581
|
+
}
|
|
15233
15582
|
/**
|
|
15234
15583
|
* Considers the current look ahead token as consumed,
|
|
15235
15584
|
* and fetches the one after that as the new look ahead.
|
|
15236
15585
|
*/
|
|
15237
|
-
|
|
15586
|
+
;
|
|
15238
15587
|
|
|
15239
15588
|
_proto.consume = function consume() {
|
|
15240
15589
|
this.nextToken = this.gullet.expandNextToken();
|
|
15241
|
-
}
|
|
15590
|
+
}
|
|
15242
15591
|
/**
|
|
15243
15592
|
* Switches between "text" and "math" modes.
|
|
15244
15593
|
*/
|
|
15245
|
-
|
|
15594
|
+
;
|
|
15246
15595
|
|
|
15247
15596
|
_proto.switchMode = function switchMode(newMode) {
|
|
15248
15597
|
this.mode = newMode;
|
|
15249
15598
|
this.gullet.switchMode(newMode);
|
|
15250
|
-
}
|
|
15599
|
+
}
|
|
15251
15600
|
/**
|
|
15252
15601
|
* Main parsing function, which parses an entire input.
|
|
15253
15602
|
*/
|
|
15254
|
-
|
|
15603
|
+
;
|
|
15255
15604
|
|
|
15256
15605
|
_proto.parse = function parse() {
|
|
15257
15606
|
// Create a group namespace for the math expression.
|
|
@@ -15274,17 +15623,6 @@ function () {
|
|
|
15274
15623
|
return parse;
|
|
15275
15624
|
};
|
|
15276
15625
|
|
|
15277
|
-
/**
|
|
15278
|
-
* Parses an "expression", which is a list of atoms.
|
|
15279
|
-
*
|
|
15280
|
-
* `breakOnInfix`: Should the parsing stop when we hit infix nodes? This
|
|
15281
|
-
* happens when functions have higher precendence han infix
|
|
15282
|
-
* nodes in implicit parses.
|
|
15283
|
-
*
|
|
15284
|
-
* `breakOnTokenText`: The text of the token that the expression should end
|
|
15285
|
-
* with, or `null` if something else should end the
|
|
15286
|
-
* expression.
|
|
15287
|
-
*/
|
|
15288
15626
|
_proto.parseExpression = function parseExpression(breakOnInfix, breakOnTokenText) {
|
|
15289
15627
|
var body = []; // Keep adding atoms to the body until we can't parse any more atoms (either
|
|
15290
15628
|
// we reached the end, a }, or a \right)
|
|
@@ -15323,7 +15661,7 @@ function () {
|
|
|
15323
15661
|
}
|
|
15324
15662
|
|
|
15325
15663
|
return this.handleInfixNodes(body);
|
|
15326
|
-
}
|
|
15664
|
+
}
|
|
15327
15665
|
/**
|
|
15328
15666
|
* Rewrites infix operators such as \over with corresponding commands such
|
|
15329
15667
|
* as \frac.
|
|
@@ -15331,7 +15669,7 @@ function () {
|
|
|
15331
15669
|
* There can only be one infix operator per group. If there's more than one
|
|
15332
15670
|
* then the expression is ambiguous. This can be resolved by adding {}.
|
|
15333
15671
|
*/
|
|
15334
|
-
|
|
15672
|
+
;
|
|
15335
15673
|
|
|
15336
15674
|
_proto.handleInfixNodes = function handleInfixNodes(body) {
|
|
15337
15675
|
var overIndex = -1;
|
|
@@ -15388,8 +15726,8 @@ function () {
|
|
|
15388
15726
|
} else {
|
|
15389
15727
|
return body;
|
|
15390
15728
|
}
|
|
15391
|
-
}
|
|
15392
|
-
|
|
15729
|
+
} // The greediness of a superscript or subscript
|
|
15730
|
+
;
|
|
15393
15731
|
|
|
15394
15732
|
/**
|
|
15395
15733
|
* Handle a subscript or superscript with nice errors.
|
|
@@ -15407,12 +15745,12 @@ function () {
|
|
|
15407
15745
|
}
|
|
15408
15746
|
|
|
15409
15747
|
return group;
|
|
15410
|
-
}
|
|
15748
|
+
}
|
|
15411
15749
|
/**
|
|
15412
15750
|
* Converts the textual input of an unsupported command into a text node
|
|
15413
15751
|
* contained within a color node whose color is determined by errorColor
|
|
15414
15752
|
*/
|
|
15415
|
-
|
|
15753
|
+
;
|
|
15416
15754
|
|
|
15417
15755
|
_proto.handleUnsupportedCmd = function handleUnsupportedCmd() {
|
|
15418
15756
|
var text = this.nextToken.text;
|
|
@@ -15439,11 +15777,11 @@ function () {
|
|
|
15439
15777
|
};
|
|
15440
15778
|
this.consume();
|
|
15441
15779
|
return colorNode;
|
|
15442
|
-
}
|
|
15780
|
+
}
|
|
15443
15781
|
/**
|
|
15444
15782
|
* Parses a group with optional super/subscripts.
|
|
15445
15783
|
*/
|
|
15446
|
-
|
|
15784
|
+
;
|
|
15447
15785
|
|
|
15448
15786
|
_proto.parseAtom = function parseAtom(breakOnTokenText) {
|
|
15449
15787
|
// The body of an atom is an implicit group, so that things like
|
|
@@ -15524,8 +15862,6 @@ function () {
|
|
|
15524
15862
|
mode: this.mode,
|
|
15525
15863
|
body: primes
|
|
15526
15864
|
};
|
|
15527
|
-
} else if (lex.text === "%") {
|
|
15528
|
-
this.consumeComment();
|
|
15529
15865
|
} else {
|
|
15530
15866
|
// If it wasn't ^, _, or ', stop parsing super/subscripts
|
|
15531
15867
|
break;
|
|
@@ -15547,11 +15883,11 @@ function () {
|
|
|
15547
15883
|
// Otherwise return the original body
|
|
15548
15884
|
return base;
|
|
15549
15885
|
}
|
|
15550
|
-
}
|
|
15886
|
+
}
|
|
15551
15887
|
/**
|
|
15552
15888
|
* Parses an entire function, including its base and all of its arguments.
|
|
15553
15889
|
*/
|
|
15554
|
-
|
|
15890
|
+
;
|
|
15555
15891
|
|
|
15556
15892
|
_proto.parseFunction = function parseFunction(breakOnTokenText, name, // For error reporting.
|
|
15557
15893
|
greediness) {
|
|
@@ -15569,6 +15905,11 @@ function () {
|
|
|
15569
15905
|
throw new src_ParseError("Can't use function '" + func + "' in text mode", token);
|
|
15570
15906
|
} else if (this.mode === "math" && funcData.allowedInMath === false) {
|
|
15571
15907
|
throw new src_ParseError("Can't use function '" + func + "' in math mode", token);
|
|
15908
|
+
} // hyperref package sets the catcode of % as an active character
|
|
15909
|
+
|
|
15910
|
+
|
|
15911
|
+
if (funcData.argTypes && funcData.argTypes[0] === "url") {
|
|
15912
|
+
this.gullet.lexer.setCatcode("%", 13);
|
|
15572
15913
|
} // Consume the command token after possibly switching to the
|
|
15573
15914
|
// mode specified by the function (for instant mode switching),
|
|
15574
15915
|
// and then immediately switch back.
|
|
@@ -15588,11 +15929,11 @@ function () {
|
|
|
15588
15929
|
optArgs = _this$parseArguments.optArgs;
|
|
15589
15930
|
|
|
15590
15931
|
return this.callFunction(func, args, optArgs, token, breakOnTokenText);
|
|
15591
|
-
}
|
|
15932
|
+
}
|
|
15592
15933
|
/**
|
|
15593
15934
|
* Call a function handler with a suitable context and arguments.
|
|
15594
15935
|
*/
|
|
15595
|
-
|
|
15936
|
+
;
|
|
15596
15937
|
|
|
15597
15938
|
_proto.callFunction = function callFunction(name, args, optArgs, token, breakOnTokenText) {
|
|
15598
15939
|
var context = {
|
|
@@ -15608,11 +15949,11 @@ function () {
|
|
|
15608
15949
|
} else {
|
|
15609
15950
|
throw new src_ParseError("No function handler for " + name);
|
|
15610
15951
|
}
|
|
15611
|
-
}
|
|
15952
|
+
}
|
|
15612
15953
|
/**
|
|
15613
15954
|
* Parses the arguments of a function or environment
|
|
15614
15955
|
*/
|
|
15615
|
-
|
|
15956
|
+
;
|
|
15616
15957
|
|
|
15617
15958
|
_proto.parseArguments = function parseArguments(func, // Should look like "\name" or "\begin{name}".
|
|
15618
15959
|
funcData) {
|
|
@@ -15669,11 +16010,11 @@ function () {
|
|
|
15669
16010
|
args: args,
|
|
15670
16011
|
optArgs: optArgs
|
|
15671
16012
|
};
|
|
15672
|
-
}
|
|
16013
|
+
}
|
|
15673
16014
|
/**
|
|
15674
16015
|
* Parses a group when the mode is changing.
|
|
15675
16016
|
*/
|
|
15676
|
-
|
|
16017
|
+
;
|
|
15677
16018
|
|
|
15678
16019
|
_proto.parseGroupOfType = function parseGroupOfType(name, type, optional, greediness) {
|
|
15679
16020
|
switch (type) {
|
|
@@ -15690,6 +16031,25 @@ function () {
|
|
|
15690
16031
|
case "text":
|
|
15691
16032
|
return this.parseGroup(name, optional, greediness, undefined, type);
|
|
15692
16033
|
|
|
16034
|
+
case "raw":
|
|
16035
|
+
{
|
|
16036
|
+
if (optional && this.nextToken.text === "{") {
|
|
16037
|
+
return null;
|
|
16038
|
+
}
|
|
16039
|
+
|
|
16040
|
+
var token = this.parseStringGroup("raw", optional, true);
|
|
16041
|
+
|
|
16042
|
+
if (token) {
|
|
16043
|
+
return {
|
|
16044
|
+
type: "raw",
|
|
16045
|
+
mode: "text",
|
|
16046
|
+
string: token.text
|
|
16047
|
+
};
|
|
16048
|
+
} else {
|
|
16049
|
+
throw new src_ParseError("Expected raw group", this.nextToken);
|
|
16050
|
+
}
|
|
16051
|
+
}
|
|
16052
|
+
|
|
15693
16053
|
case "original":
|
|
15694
16054
|
case null:
|
|
15695
16055
|
case undefined:
|
|
@@ -15704,34 +16064,12 @@ function () {
|
|
|
15704
16064
|
while (this.nextToken.text === " ") {
|
|
15705
16065
|
this.consume();
|
|
15706
16066
|
}
|
|
15707
|
-
}
|
|
15708
|
-
|
|
15709
|
-
_proto.consumeComment = function consumeComment() {
|
|
15710
|
-
// the newline character is normalized in Lexer, check original source
|
|
15711
|
-
while (this.nextToken.text !== "EOF" && this.nextToken.loc && this.nextToken.loc.getSource().indexOf("\n") === -1) {
|
|
15712
|
-
this.consume();
|
|
15713
|
-
}
|
|
15714
|
-
|
|
15715
|
-
if (this.nextToken.text === "EOF") {
|
|
15716
|
-
this.settings.reportNonstrict("commentAtEnd", "% comment has no terminating newline; LaTeX would " + "fail because of commenting the end of math mode (e.g. $)");
|
|
15717
|
-
}
|
|
15718
|
-
|
|
15719
|
-
if (this.mode === "math") {
|
|
15720
|
-
this.consumeSpaces(); // ignore spaces in math mode
|
|
15721
|
-
} else if (this.nextToken.loc) {
|
|
15722
|
-
// text mode
|
|
15723
|
-
var source = this.nextToken.loc.getSource();
|
|
15724
|
-
|
|
15725
|
-
if (source.indexOf("\n") === source.length - 1) {
|
|
15726
|
-
this.consumeSpaces(); // if no space after the first newline
|
|
15727
|
-
}
|
|
15728
|
-
}
|
|
15729
|
-
};
|
|
16067
|
+
}
|
|
15730
16068
|
/**
|
|
15731
16069
|
* Parses a group, essentially returning the string formed by the
|
|
15732
16070
|
* brace-enclosed tokens plus some position information.
|
|
15733
16071
|
*/
|
|
15734
|
-
|
|
16072
|
+
;
|
|
15735
16073
|
|
|
15736
16074
|
_proto.parseStringGroup = function parseStringGroup(modeName, // Used to describe the mode in error messages.
|
|
15737
16075
|
optional, raw) {
|
|
@@ -15744,6 +16082,8 @@ function () {
|
|
|
15744
16082
|
return null;
|
|
15745
16083
|
} else if (raw && nextToken.text !== "EOF" && /[^{}[\]]/.test(nextToken.text)) {
|
|
15746
16084
|
// allow a single character in raw string group
|
|
16085
|
+
this.gullet.lexer.setCatcode("%", 14); // reset the catcode of %
|
|
16086
|
+
|
|
15747
16087
|
this.consume();
|
|
15748
16088
|
return nextToken;
|
|
15749
16089
|
}
|
|
@@ -15763,15 +16103,6 @@ function () {
|
|
|
15763
16103
|
case "EOF":
|
|
15764
16104
|
throw new src_ParseError("Unexpected end of input in " + modeName, firstToken.range(lastToken, str));
|
|
15765
16105
|
|
|
15766
|
-
case "%":
|
|
15767
|
-
if (!raw) {
|
|
15768
|
-
// allow % in raw string group
|
|
15769
|
-
this.consumeComment();
|
|
15770
|
-
continue;
|
|
15771
|
-
}
|
|
15772
|
-
|
|
15773
|
-
break;
|
|
15774
|
-
|
|
15775
16106
|
case groupBegin:
|
|
15776
16107
|
nested++;
|
|
15777
16108
|
break;
|
|
@@ -15787,15 +16118,17 @@ function () {
|
|
|
15787
16118
|
}
|
|
15788
16119
|
|
|
15789
16120
|
this.mode = outerMode;
|
|
16121
|
+
this.gullet.lexer.setCatcode("%", 14); // reset the catcode of %
|
|
16122
|
+
|
|
15790
16123
|
this.expect(groupEnd);
|
|
15791
16124
|
return firstToken.range(lastToken, str);
|
|
15792
|
-
}
|
|
16125
|
+
}
|
|
15793
16126
|
/**
|
|
15794
16127
|
* Parses a regex-delimited group: the largest sequence of tokens
|
|
15795
16128
|
* whose concatenated strings match `regex`. Returns the string
|
|
15796
16129
|
* formed by the tokens plus some position information.
|
|
15797
16130
|
*/
|
|
15798
|
-
|
|
16131
|
+
;
|
|
15799
16132
|
|
|
15800
16133
|
_proto.parseRegexGroup = function parseRegexGroup(regex, modeName) {
|
|
15801
16134
|
var outerMode = this.mode;
|
|
@@ -15804,12 +16137,7 @@ function () {
|
|
|
15804
16137
|
var lastToken = firstToken;
|
|
15805
16138
|
var str = "";
|
|
15806
16139
|
|
|
15807
|
-
while (this.nextToken.text !== "EOF" &&
|
|
15808
|
-
if (this.nextToken.text === "%") {
|
|
15809
|
-
this.consumeComment();
|
|
15810
|
-
continue;
|
|
15811
|
-
}
|
|
15812
|
-
|
|
16140
|
+
while (this.nextToken.text !== "EOF" && regex.test(str + this.nextToken.text)) {
|
|
15813
16141
|
lastToken = this.nextToken;
|
|
15814
16142
|
str += lastToken.text;
|
|
15815
16143
|
this.consume();
|
|
@@ -15821,11 +16149,11 @@ function () {
|
|
|
15821
16149
|
|
|
15822
16150
|
this.mode = outerMode;
|
|
15823
16151
|
return firstToken.range(lastToken, str);
|
|
15824
|
-
}
|
|
16152
|
+
}
|
|
15825
16153
|
/**
|
|
15826
16154
|
* Parses a color description.
|
|
15827
16155
|
*/
|
|
15828
|
-
|
|
16156
|
+
;
|
|
15829
16157
|
|
|
15830
16158
|
_proto.parseColorGroup = function parseColorGroup(optional) {
|
|
15831
16159
|
var res = this.parseStringGroup("color", optional);
|
|
@@ -15854,11 +16182,11 @@ function () {
|
|
|
15854
16182
|
mode: this.mode,
|
|
15855
16183
|
color: color
|
|
15856
16184
|
};
|
|
15857
|
-
}
|
|
16185
|
+
}
|
|
15858
16186
|
/**
|
|
15859
16187
|
* Parses a size specification, consisting of magnitude and unit.
|
|
15860
16188
|
*/
|
|
15861
|
-
|
|
16189
|
+
;
|
|
15862
16190
|
|
|
15863
16191
|
_proto.parseSizeGroup = function parseSizeGroup(optional) {
|
|
15864
16192
|
var res;
|
|
@@ -15905,11 +16233,11 @@ function () {
|
|
|
15905
16233
|
value: data,
|
|
15906
16234
|
isBlank: isBlank
|
|
15907
16235
|
};
|
|
15908
|
-
}
|
|
16236
|
+
}
|
|
15909
16237
|
/**
|
|
15910
16238
|
* Parses an URL, checking escaped letters and allowed protocols.
|
|
15911
16239
|
*/
|
|
15912
|
-
|
|
16240
|
+
;
|
|
15913
16241
|
|
|
15914
16242
|
_proto.parseUrlGroup = function parseUrlGroup(optional) {
|
|
15915
16243
|
var res = this.parseStringGroup("url", optional, true); // get raw string
|
|
@@ -15936,7 +16264,7 @@ function () {
|
|
|
15936
16264
|
mode: this.mode,
|
|
15937
16265
|
url: url
|
|
15938
16266
|
};
|
|
15939
|
-
}
|
|
16267
|
+
}
|
|
15940
16268
|
/**
|
|
15941
16269
|
* If `optional` is false or absent, this parses an ordinary group,
|
|
15942
16270
|
* which is either a single nucleus (like "x") or an expression
|
|
@@ -15949,7 +16277,7 @@ function () {
|
|
|
15949
16277
|
* If `mode` is present, switches to that mode while parsing the group,
|
|
15950
16278
|
* and switches back after.
|
|
15951
16279
|
*/
|
|
15952
|
-
|
|
16280
|
+
;
|
|
15953
16281
|
|
|
15954
16282
|
_proto.parseGroup = function parseGroup(name, // For error reporting.
|
|
15955
16283
|
optional, greediness, breakOnTokenText, mode) {
|
|
@@ -15961,29 +16289,29 @@ function () {
|
|
|
15961
16289
|
this.switchMode(mode);
|
|
15962
16290
|
}
|
|
15963
16291
|
|
|
15964
|
-
var
|
|
16292
|
+
var groupEnd;
|
|
16293
|
+
var result; // Try to parse an open brace or \begingroup
|
|
16294
|
+
|
|
16295
|
+
if (optional ? text === "[" : text === "{" || text === "\\begingroup") {
|
|
16296
|
+
groupEnd = Parser.endOfGroup[text]; // Start a new group namespace
|
|
15965
16297
|
|
|
15966
|
-
if (text === (optional ? "[" : "{")) {
|
|
15967
|
-
// Start a new group namespace
|
|
15968
16298
|
this.gullet.beginGroup(); // If we get a brace, parse an expression
|
|
15969
16299
|
|
|
15970
16300
|
this.consume();
|
|
15971
|
-
var expression = this.parseExpression(false,
|
|
15972
|
-
var lastToken = this.nextToken; //
|
|
15973
|
-
|
|
15974
|
-
if (mode) {
|
|
15975
|
-
this.switchMode(outerMode);
|
|
15976
|
-
} // End group namespace before consuming symbol after close brace
|
|
15977
|
-
|
|
16301
|
+
var expression = this.parseExpression(false, groupEnd);
|
|
16302
|
+
var lastToken = this.nextToken; // End group namespace before consuming symbol after close brace
|
|
15978
16303
|
|
|
15979
|
-
this.gullet.endGroup();
|
|
15980
|
-
|
|
15981
|
-
this.expect(optional ? "]" : "}");
|
|
15982
|
-
return {
|
|
16304
|
+
this.gullet.endGroup();
|
|
16305
|
+
result = {
|
|
15983
16306
|
type: "ordgroup",
|
|
15984
16307
|
mode: this.mode,
|
|
15985
16308
|
loc: SourceLocation.range(firstToken, lastToken),
|
|
15986
|
-
body: expression
|
|
16309
|
+
body: expression,
|
|
16310
|
+
// A group formed by \begingroup...\endgroup is a semi-simple group
|
|
16311
|
+
// which doesn't affect spacing in math mode, i.e., is transparent.
|
|
16312
|
+
// https://tex.stackexchange.com/questions/1930/when-should-one-
|
|
16313
|
+
// use-begingroup-instead-of-bgroup
|
|
16314
|
+
semisimple: text === "\\begingroup" || undefined
|
|
15987
16315
|
};
|
|
15988
16316
|
} else if (optional) {
|
|
15989
16317
|
// Return nothing for an optional group
|
|
@@ -16005,10 +16333,15 @@ function () {
|
|
|
16005
16333
|
|
|
16006
16334
|
if (mode) {
|
|
16007
16335
|
this.switchMode(outerMode);
|
|
16336
|
+
} // Make sure we got a close brace
|
|
16337
|
+
|
|
16338
|
+
|
|
16339
|
+
if (groupEnd) {
|
|
16340
|
+
this.expect(groupEnd);
|
|
16008
16341
|
}
|
|
16009
16342
|
|
|
16010
16343
|
return result;
|
|
16011
|
-
}
|
|
16344
|
+
}
|
|
16012
16345
|
/**
|
|
16013
16346
|
* Form ligature-like combinations of characters for text mode.
|
|
16014
16347
|
* This includes inputs like "--", "---", "``" and "''".
|
|
@@ -16017,7 +16350,7 @@ function () {
|
|
|
16017
16350
|
* characters in its value. The representation is still ASCII source.
|
|
16018
16351
|
* The group will be modified in place.
|
|
16019
16352
|
*/
|
|
16020
|
-
|
|
16353
|
+
;
|
|
16021
16354
|
|
|
16022
16355
|
_proto.formLigatures = function formLigatures(group) {
|
|
16023
16356
|
var n = group.length - 1;
|
|
@@ -16057,12 +16390,12 @@ function () {
|
|
|
16057
16390
|
n -= 1;
|
|
16058
16391
|
}
|
|
16059
16392
|
}
|
|
16060
|
-
}
|
|
16393
|
+
}
|
|
16061
16394
|
/**
|
|
16062
16395
|
* Parse a single symbol out of the string. Here, we handle single character
|
|
16063
16396
|
* symbols and special functions like verbatim
|
|
16064
16397
|
*/
|
|
16065
|
-
|
|
16398
|
+
;
|
|
16066
16399
|
|
|
16067
16400
|
_proto.parseSymbol = function parseSymbol() {
|
|
16068
16401
|
var nucleus = this.nextToken;
|
|
@@ -16091,9 +16424,6 @@ function () {
|
|
|
16091
16424
|
body: arg,
|
|
16092
16425
|
star: star
|
|
16093
16426
|
};
|
|
16094
|
-
} else if (text === "%") {
|
|
16095
|
-
this.consumeComment();
|
|
16096
|
-
return this.parseSymbol();
|
|
16097
16427
|
} // At this point, we should have a symbol, possibly with accents.
|
|
16098
16428
|
// First expand any accented base symbol according to unicodeSymbols.
|
|
16099
16429
|
|
|
@@ -16207,7 +16537,24 @@ function () {
|
|
|
16207
16537
|
return Parser;
|
|
16208
16538
|
}();
|
|
16209
16539
|
|
|
16210
|
-
Parser_Parser.endOfExpression = ["}", "\\end", "\\right", "&"];
|
|
16540
|
+
Parser_Parser.endOfExpression = ["}", "\\endgroup", "\\end", "\\right", "&"];
|
|
16541
|
+
Parser_Parser.endOfGroup = {
|
|
16542
|
+
"[": "]",
|
|
16543
|
+
"{": "}",
|
|
16544
|
+
"\\begingroup": "\\endgroup"
|
|
16545
|
+
/**
|
|
16546
|
+
* Parses an "expression", which is a list of atoms.
|
|
16547
|
+
*
|
|
16548
|
+
* `breakOnInfix`: Should the parsing stop when we hit infix nodes? This
|
|
16549
|
+
* happens when functions have higher precendence han infix
|
|
16550
|
+
* nodes in implicit parses.
|
|
16551
|
+
*
|
|
16552
|
+
* `breakOnTokenText`: The text of the token that the expression should end
|
|
16553
|
+
* with, or `null` if something else should end the
|
|
16554
|
+
* expression.
|
|
16555
|
+
*/
|
|
16556
|
+
|
|
16557
|
+
};
|
|
16211
16558
|
Parser_Parser.SUPSUB_GREEDINESS = 1;
|
|
16212
16559
|
|
|
16213
16560
|
// CONCATENATED MODULE: ./src/parseTree.js
|
|
@@ -16363,7 +16710,7 @@ var katex_renderToHTMLTree = function renderToHTMLTree(expression, options) {
|
|
|
16363
16710
|
/**
|
|
16364
16711
|
* Current KaTeX version
|
|
16365
16712
|
*/
|
|
16366
|
-
version: "0.10.
|
|
16713
|
+
version: "0.10.2",
|
|
16367
16714
|
|
|
16368
16715
|
/**
|
|
16369
16716
|
* Renders the given LaTeX into an HTML+MathML combination, and adds
|
|
@@ -16446,8 +16793,9 @@ var katex_renderToHTMLTree = function renderToHTMLTree(expression, options) {
|
|
|
16446
16793
|
});
|
|
16447
16794
|
// CONCATENATED MODULE: ./katex.webpack.js
|
|
16448
16795
|
/**
|
|
16449
|
-
* This is the webpack entry point for KaTeX. As flow[1] and jest[2]
|
|
16450
|
-
* CSS modules natively, a separate entry point is used and
|
|
16796
|
+
* This is the webpack entry point for KaTeX. As ECMAScript, flow[1] and jest[2]
|
|
16797
|
+
* doesn't support CSS modules natively, a separate entry point is used and
|
|
16798
|
+
* it is not flowtyped.
|
|
16451
16799
|
*
|
|
16452
16800
|
* [1] https://gist.github.com/lambdahands/d19e0da96285b749f0ef
|
|
16453
16801
|
* [2] https://facebook.github.io/jest/docs/en/webpack.html
|