formulas_list)
35 | {
36 | //Full Page Correction Rubric list click
37 | this.mContext = context;
38 | this.cardClick = click;
39 | this.formulas = formulas_list;
40 | }
41 |
42 |
43 |
44 |
45 |
46 | @Override
47 | public MathListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
48 | View v = LayoutInflater.from(this.mContext)
49 | .inflate(R.layout.card_math_recyclerview, parent, false);
50 | v.setOnClickListener(this.cardClick);
51 | ViewHolder vh = new ViewHolder(v);
52 | return vh;
53 | }
54 |
55 | @Override
56 | public void onBindViewHolder(MathListAdapter.ViewHolder holder, int position) {
57 | if (selected_card_position==position) {
58 | holder.math_view.setViewBackgroundColor(ContextCompat.getColor(mContext, R.color.cardview_light_background));
59 | holder.math_view.setTextColor(ContextCompat.getColor(mContext,R.color.cardview_dark_background));
60 | holder.math_view.setTextSize(14);
61 | }
62 | else {
63 | holder.math_view.setViewBackgroundColor(Helpers.getRandomColor(mContext,position));
64 | holder.math_view.setTextColor(ContextCompat.getColor(mContext,R.color.cardview_light_background));
65 | holder.math_view.setTextSize(14);
66 | }
67 | holder.math_view.setDisplayText(formulas.get(position));
68 |
69 | }
70 |
71 |
72 |
73 | @Override
74 | public int getItemCount() {
75 |
76 | return formulas.size();
77 | }
78 |
79 | public static class ViewHolder extends RecyclerView.ViewHolder {
80 | CardView cardView;
81 | MathView math_view;
82 |
83 |
84 | public ViewHolder(View v) {
85 | super(v);
86 | cardView = (CardView) v.findViewById(R.id.card_view);
87 | math_view = (MathView) v.findViewById(R.id.math_view);
88 | }
89 | }
90 |
91 |
92 | public void toggleMarked(int position) {
93 | if (selected_card_position==position)
94 | {
95 | selected_card_position = -1;
96 | //de selecting a previous selection;
97 | }
98 | else
99 | {
100 | selected_card_position = position;
101 | // mentioning a new selection
102 | }
103 | notifyItemChanged(position);
104 | }
105 |
106 |
107 | }
108 |
--------------------------------------------------------------------------------
/katexmathview/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 |
3 | /*Bintray release config
4 | apply plugin: 'com.jfrog.bintray'
5 | apply plugin: 'com.github.dcendents.android-maven' //Apply maven plugin
6 | apply plugin: 'maven-publish'
7 | */
8 |
9 | /*Bintray release config
10 | ext {
11 | bintrayRepo = 'KatexMathView' //The repository name in bintray dashboard
12 | bintrayName = 'KatexMathView' //The package name of the Bintray Repository
13 | libraryName = 'katexmathview' //The library module name in your Android Studio project
14 | //Artifact information
15 | // For example implementation 'in.hourglass.mathrender:katexmathview:1.0'
16 | publishedGroupId = 'in.hourglass.mathrender' //The id you want to add in 'implementation' line
17 | artifact = 'katexmathview' //The artifact you want to add in
18 | libraryVersion = '1.0.3'
19 |
20 | libraryDescription = 'A Custom webview to render Math formulas using katex'
21 | siteUrl= 'https://github.com/lingarajsankaravelu/Katex'
22 | gitUrl='https://github.com/lingarajsankaravelu/Katex.git'
23 | developerId = '****'
24 | developerName = '****'
25 | developerEmail = '****'
26 | licenseName= 'The Apache Software License, Version 2.0'
27 | licenseUrl ='http://www.apache.org/licenses/LICENSE-2.0.txt'
28 | allLicenses = ["Apache-2.0"]
29 | }
30 |
31 | def pomConfig = {
32 | licenses {
33 | license {
34 | name "The Apache Software License, Version 2.0"
35 | url "http://www.apache.org/licenses/LICENSE-2.0.txt"
36 | distribution "repo"
37 | }
38 | }
39 | developers {
40 | developer {
41 | id "****"
42 | name "S Lingaraj"
43 | email "****"
44 | }
45 | }
46 |
47 | scm {
48 | url "https://github.com/lingarajsankaravelu/Katex"
49 | }
50 | }
51 |
52 | publishing {
53 | publications {
54 | mavenPublication(MavenPublication) {
55 | groupId 'in.hourglass.mathrender'
56 | artifactId 'katexmathview'
57 | version '1.0.3'
58 | pom.withXml {
59 | def root = asNode()
60 | root.appendNode('description', 'A Custom webview to render Math formulas using katex')
61 | root.appendNode('name', 'katexmathview')
62 | root.appendNode('url', 'https://github.com/lingarajsankaravelu/Katex')
63 | root.children().last() + pomConfig
64 | }
65 | }
66 | }
67 | }
68 | */
69 |
70 |
71 | android {
72 | compileSdkVersion project.ext.compileSdkVersion
73 | buildToolsVersion project.ext.buildToolsVersion
74 | defaultConfig {
75 | minSdkVersion project.ext.minSdkVersion
76 | targetSdkVersion project.ext.targetSdkVersion
77 | versionCode project.ext.versionCode
78 | versionName project.ext.versionName
79 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
80 |
81 | }
82 | buildTypes {
83 | release {
84 | minifyEnabled false
85 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
86 | }
87 | }
88 | }
89 |
90 | dependencies {
91 | implementation fileTree(dir: 'libs', include: ['*.jar'])
92 | androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
93 | exclude group: 'com.android.support', module: 'support-annotations'
94 | })
95 | implementation "com.android.support:appcompat-v7:$supportLibrary"
96 | implementation "com.android.support:support-v4:$supportLibrary"
97 | testImplementation 'junit:junit:4.12'
98 | }
99 |
100 | /*Bintray Release config
101 | if (project.rootProject.file('local.properties').exists()){
102 | apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/installv1.gradle'
103 | apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/bintrayv1.gradle'
104 |
105 | }*/
106 |
107 |
--------------------------------------------------------------------------------
/katexmathview/src/main/assets/katex/README.md:
--------------------------------------------------------------------------------
1 | # [ ](https://katex.org/)
2 | [](https://www.npmjs.com/package/katex)
3 | [](https://circleci.com/gh/KaTeX/KaTeX)
4 | [](https://codecov.io/gh/KaTeX/KaTeX)
5 | [](https://gitter.im/KaTeX/KaTeX?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
6 | [](https://greenkeeper.io/)
7 | [](https://www.jsdelivr.com/package/npm/katex)
8 | 
9 |
10 | KaTeX is a fast, easy-to-use JavaScript library for TeX math rendering on the web.
11 |
12 | * **Fast:** KaTeX renders its math synchronously and doesn't need to reflow the page. See how it compares to a competitor in [this speed test](http://www.intmath.com/cg5/katex-mathjax-comparison.php).
13 | * **Print quality:** KaTeX's layout is based on Donald Knuth's TeX, the gold standard for math typesetting.
14 | * **Self contained:** KaTeX has no dependencies and can easily be bundled with your website resources.
15 | * **Server side rendering:** KaTeX produces the same output regardless of browser or environment, so you can pre-render expressions using Node.js and send them as plain HTML.
16 |
17 | KaTeX is compatible with all major browsers, including Chrome, Safari, Firefox, Opera, Edge, and IE 9–11.
18 |
19 | KaTeX supports much (but not all) of LaTeX and many LaTeX packages. See the [list of supported functions](https://katex.org/docs/supported.html).
20 |
21 | Try out KaTeX [on the demo page](https://katex.org/#demo)!
22 |
23 | ## Getting started
24 |
25 | ### Starter template
26 |
27 | ```html
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
40 |
41 | ...
42 |
43 | ```
44 |
45 | You can also [download KaTeX](https://github.com/KaTeX/KaTeX/releases) and host it yourself.
46 |
47 | For details on how to configure auto-render extension, refer to [the documentation](https://katex.org/docs/autorender.html).
48 |
49 | ### API
50 |
51 | Call `katex.render` to render a TeX expression directly into a DOM element.
52 | For example:
53 |
54 | ```js
55 | katex.render("c = \\pm\\sqrt{a^2 + b^2}", element, {
56 | throwOnError: false
57 | });
58 | ```
59 |
60 | Call `katex.renderToString` to generate an HTML string of the rendered math,
61 | e.g., for server-side rendering. For example:
62 |
63 | ```js
64 | var html = katex.renderToString("c = \\pm\\sqrt{a^2 + b^2}", {
65 | throwOnError: false
66 | });
67 | // '... '
68 | ```
69 |
70 | Make sure to include the CSS and font files in both cases.
71 | If you are doing all rendering on the server, there is no need to include the
72 | JavaScript on the client.
73 |
74 | The examples above use the `throwOnError: false` option, which renders invalid
75 | inputs as the TeX source code in red (by default), with the error message as
76 | hover text. For other available options, see the
77 | [API documentation](https://katex.org/docs/api.html),
78 | [options documentation](https://katex.org/docs/options.html), and
79 | [handling errors documentation](https://katex.org/docs/error.html).
80 |
81 | ## Demo and Documentation
82 |
83 | Learn more about using KaTeX [on the website](https://katex.org)!
84 |
85 | ## Contributing
86 |
87 | See [CONTRIBUTING.md](CONTRIBUTING.md)
88 |
89 | ## License
90 |
91 | KaTeX is licensed under the [MIT License](http://opensource.org/licenses/MIT).
92 |
--------------------------------------------------------------------------------
/katexmathview/src/main/assets/latex_parser.js:
--------------------------------------------------------------------------------
1 | (function(){
2 |
3 | window.onload = function(){
4 | // console.log('juery',$);
5 | //setTimeout(function(){
6 | var latexElement = $('body').find('.latexEle');
7 | console.log(latexElement.length);
8 | for (var j = 0; j < latexElement.length; j++) {
9 | var latex = $(latexElement[j]).attr('data-latex');
10 | console.log(latex);
11 | var splittedLatex = splitLatex(latex);
12 | console.log('splittedLatex',splittedLatex);
13 | if (splittedLatex.length > 1) {
14 | $(latexElement[j]).removeClass('latexEle');
15 | $(latexElement[j]).removeAttr('data-latex');
16 | latexElement[j].innerHTML = '';
17 | for (var k = 0; k < splittedLatex.length; k++) {
18 | var latexItem = splittedLatex[k];
19 | if (latexItem) {
20 | var temp = $(' ');
21 | $(latexElement[j]).append($('
').append(temp));
22 | temp.attr('data-latex', latexItem);
23 | temp.text('$'+latexItem+'$');
24 | }
25 | }
26 | } else {
27 | $(latexElement[j]).text('$'+splittedLatex[0]+'$');
28 | }
29 | }
30 | renderMathInElement(document.body);
31 | // },500)
32 |
33 | }
34 |
35 | })();
36 |
37 | var splitLatex = function (latex) {
38 | // handling line breaks
39 | // katex does not support line breaks so need to split the latex into multiple formulaes based on line breaks
40 | // need to support matrix environment
41 | // line breaks are supported in environments so need to skip handling line breaks for closed environment
42 | // handling brackets if matrix is wrapped in brackets need to handle the scenario
43 |
44 | var matches = [];
45 |
46 | function globalMatch(regex) {
47 | return new RegExp(regex.source, 'g');
48 | }
49 |
50 | // matches the pattern \begin{matrix}any-valid-char\end{matrix}
51 | var environmentMatch = new RegExp(/(\\begin{(\w*)}(.*?)(\\end){(\2)})/);
52 | var bracketMatch = new RegExp(/(\\left[\[\(\{\|])(.*?)(\\right[\]\}\)\|])/);
53 | var positionMatch = new RegExp(/(\$[\d]*\$)/);
54 | var match = latex.match(environmentMatch);
55 | // prevent infinite loop in remote scenario
56 | var iteration = 0;
57 |
58 | while (match && iteration < 10) {
59 | matches.push(match[0]);
60 | latex = latex.replace(match[0], '$' + (matches.length - 1) + '$');
61 | match = latex.match(environmentMatch);
62 | iteration++;
63 | }
64 |
65 | iteration = 0;
66 |
67 | match = latex.match(bracketMatch);
68 | while (match && iteration < 10) {
69 | matches.push(match[0]);
70 | latex = latex.replace(match[0], '$' + (matches.length - 1) + '$');
71 | match = latex.match(bracketMatch);
72 | iteration++;
73 | }
74 |
75 |
76 | var splittedLatex = latex.split('\\\\');
77 | // filter empty strings
78 | splittedLatex = splittedLatex.filter(function (item) {
79 | return item.length;
80 | });
81 |
82 | splittedLatex = splittedLatex.map(function (item, index) {
83 | var pos = item.match(positionMatch);
84 | var iteration = 0;
85 | while (iteration < 10 && pos) {
86 | index = Number(pos[0].substring(1, pos[0].length - 1));
87 | item = item.replace(pos[0], matches[index]);
88 | pos = item.match(positionMatch);
89 | iteration++;
90 | }
91 | return item;
92 | });
93 |
94 |
95 | var tempArray = [];
96 | for (var a = 0; a < splittedLatex.length; a++) {
97 | if (splittedLatex[a].match(environmentMatch) || splittedLatex[a].match(bracketMatch)) {
98 | tempArray.push(splittedLatex[a]);
99 | } else {
100 | var temp = splittedLatex[a].split(/\\\\/).map(function (item) {
101 | return item.trim();
102 | }).filter(function (item) {
103 | return item.length;
104 | });
105 | tempArray = tempArray.concat(temp);
106 | }
107 | }
108 |
109 | splittedLatex = tempArray;
110 |
111 | // handle therefore and because symbol
112 |
113 | splittedLatex = splittedLatex.map(function (item) {
114 | item = item.replace(/(\\text)?(\{)?\∴(\})?(\\\:)?/g, '\\therefore ');
115 | item = item.replace(/(\\text)?(\{)?\∵(\})?(\\\:)?/g, '\\because ');
116 | return item;
117 | });
118 |
119 | return splittedLatex;
120 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | [](https://android-arsenal.com/details/1/5577)
3 | 
4 |
5 | A [KhanAcademy Katex](https://khan.github.io/KaTeX/) based Library for Rendering math faster in various Android Devices.
6 | This a View which is created from extending webview. This view allows you to render latex in your android devices. It can load
7 | normal text, text with latex and latex alone. The only thing you have to make sure is your latex should be enclosed inside
8 | either $your latex formula$ or $$your latex formula$$. This will also allow you to beautify your formula text by setting color
9 | and text size.
10 |
11 | ---
12 |
13 |
14 |
15 | ### Accepted Inputs
16 | $x=\frac{1+y}{1+2z^2}$
17 |
18 | or
19 |
20 | $$x=\frac{1+y}{1+2z^2}$$
21 | or
22 |
23 | sum of ratios =4+3=7 $=\frac{4}{7}\times560=320$
24 | or
25 |
26 | Data Included inside HTML TAGS
27 |
28 | If $x:35::48:60$ , find the value of $x$ .
29 |
30 | ### Setup
31 |
32 | Dependencies
33 | {
34 | implementation 'in.hourglass.mathrender:katexmathview:1.0.3'
35 | }
36 |
37 | ### Attributes supported
38 |
39 | setTextColor -> Allows you to beautify your latex with specific color of your choice
40 | setTextSize -> Allows you to set text size of the latex displayed on screen
41 | setViewBackgroudColor -> set the background color of the view.
42 | setClickable
43 | i.True -> Setting this to true will allow KatexMathview to act as Textview and it will also intercept parent layout touchevent useful to register click
44 | when this view is used with List,Recyclerview.
45 | ii.False -> Setting this to false will make katexMathvview act as an webview with zoom in controls etc.
46 |
47 |
48 |
49 | ### Adding to your XML Layout
50 |
51 |
59 |
60 |
61 | ### Adding at runtime
62 |
63 | MathView mathView = new MathView(getApplicationContext());
64 | mathView.setClickable(true);
65 | mathView.setTextSize(14);
66 | mathView.setTextColor(ContextCompat.getColor(getApplicationContext(),android.R.color.white));
67 | mathView.setDisplayText(getResources().getString(R.string.runtime_formula));
68 | mathView.setViewBackgroundColor(ContextCompat.getColor(getApplicationContext(),android.R.color.black));
69 | parent_layout.addView(mathView);
70 |
71 |
72 |
73 | ### Demo
74 |   
75 |
76 | Sample code is available under the app module, in this same repo
77 |
78 | # License
79 |
80 | The MIT License (MIT)
81 |
82 | Copyright (c) 2017 Lingaraj Sankaravelu
83 |
84 | Permission is hereby granted, free of charge, to any person obtaining a copy
85 | of this software and associated documentation files (the "Software"), to deal
86 | in the Software without restriction, including without limitation the rights
87 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
88 | copies of the Software, and to permit persons to whom the Software is
89 | furnished to do so, subject to the following conditions:
90 |
91 | The above copyright notice and this permission notice shall be included in all
92 | copies or substantial portions of the Software.
93 |
94 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
95 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
96 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
97 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
98 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
99 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
100 | SOFTWARE.
101 |
102 |
103 |
--------------------------------------------------------------------------------
/gradlew:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | ##############################################################################
4 | ##
5 | ## Gradle start up script for UN*X
6 | ##
7 | ##############################################################################
8 |
9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
10 | DEFAULT_JVM_OPTS=""
11 |
12 | APP_NAME="Gradle"
13 | APP_BASE_NAME=`basename "$0"`
14 |
15 | # Use the maximum available, or set MAX_FD != -1 to use that value.
16 | MAX_FD="maximum"
17 |
18 | warn ( ) {
19 | echo "$*"
20 | }
21 |
22 | die ( ) {
23 | echo
24 | echo "$*"
25 | echo
26 | exit 1
27 | }
28 |
29 | # OS specific support (must be 'true' or 'false').
30 | cygwin=false
31 | msys=false
32 | darwin=false
33 | case "`uname`" in
34 | CYGWIN* )
35 | cygwin=true
36 | ;;
37 | Darwin* )
38 | darwin=true
39 | ;;
40 | MINGW* )
41 | msys=true
42 | ;;
43 | esac
44 |
45 | # Attempt to set APP_HOME
46 | # Resolve links: $0 may be a link
47 | PRG="$0"
48 | # Need this for relative symlinks.
49 | while [ -h "$PRG" ] ; do
50 | ls=`ls -ld "$PRG"`
51 | link=`expr "$ls" : '.*-> \(.*\)$'`
52 | if expr "$link" : '/.*' > /dev/null; then
53 | PRG="$link"
54 | else
55 | PRG=`dirname "$PRG"`"/$link"
56 | fi
57 | done
58 | SAVED="`pwd`"
59 | cd "`dirname \"$PRG\"`/" >/dev/null
60 | APP_HOME="`pwd -P`"
61 | cd "$SAVED" >/dev/null
62 |
63 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
64 |
65 | # Determine the Java command to use to start the JVM.
66 | if [ -n "$JAVA_HOME" ] ; then
67 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
68 | # IBM's JDK on AIX uses strange locations for the executables
69 | JAVACMD="$JAVA_HOME/jre/sh/java"
70 | else
71 | JAVACMD="$JAVA_HOME/bin/java"
72 | fi
73 | if [ ! -x "$JAVACMD" ] ; then
74 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
75 |
76 | Please set the JAVA_HOME variable in your environment to match the
77 | location of your Java installation."
78 | fi
79 | else
80 | JAVACMD="java"
81 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
82 |
83 | Please set the JAVA_HOME variable in your environment to match the
84 | location of your Java installation."
85 | fi
86 |
87 | # Increase the maximum file descriptors if we can.
88 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
89 | MAX_FD_LIMIT=`ulimit -H -n`
90 | if [ $? -eq 0 ] ; then
91 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
92 | MAX_FD="$MAX_FD_LIMIT"
93 | fi
94 | ulimit -n $MAX_FD
95 | if [ $? -ne 0 ] ; then
96 | warn "Could not set maximum file descriptor limit: $MAX_FD"
97 | fi
98 | else
99 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
100 | fi
101 | fi
102 |
103 | # For Darwin, add options to specify how the application appears in the dock
104 | if $darwin; then
105 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
106 | fi
107 |
108 | # For Cygwin, switch paths to Windows format before running java
109 | if $cygwin ; then
110 | APP_HOME=`cygpath --path --mixed "$APP_HOME"`
111 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
112 | JAVACMD=`cygpath --unix "$JAVACMD"`
113 |
114 | # We build the pattern for arguments to be converted via cygpath
115 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
116 | SEP=""
117 | for dir in $ROOTDIRSRAW ; do
118 | ROOTDIRS="$ROOTDIRS$SEP$dir"
119 | SEP="|"
120 | done
121 | OURCYGPATTERN="(^($ROOTDIRS))"
122 | # Add a user-defined pattern to the cygpath arguments
123 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then
124 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
125 | fi
126 | # Now convert the arguments - kludge to limit ourselves to /bin/sh
127 | i=0
128 | for arg in "$@" ; do
129 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
130 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
131 |
132 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
133 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
134 | else
135 | eval `echo args$i`="\"$arg\""
136 | fi
137 | i=$((i+1))
138 | done
139 | case $i in
140 | (0) set -- ;;
141 | (1) set -- "$args0" ;;
142 | (2) set -- "$args0" "$args1" ;;
143 | (3) set -- "$args0" "$args1" "$args2" ;;
144 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
145 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
146 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
147 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
148 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
149 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
150 | esac
151 | fi
152 |
153 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
154 | function splitJvmOpts() {
155 | JVM_OPTS=("$@")
156 | }
157 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
158 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
159 |
160 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
161 |
--------------------------------------------------------------------------------
/katexmathview/src/main/assets/katex/contrib/auto-render.min.js:
--------------------------------------------------------------------------------
1 | ! function (e, t) {
2 | "object" == typeof exports && "object" == typeof module ? module.exports = t(require("katex")) : "function" == typeof define && define.amd ? define(["katex"], t) : "object" == typeof exports ? exports.renderMathInElement = t(require("katex")) : e.renderMathInElement = t(e.katex)
3 | }("undefined" != typeof self ? self : this, function (e) {
4 | return function (e) {
5 | var t = {};
6 |
7 | function r(n) {
8 | if (t[n]) return t[n].exports;
9 | var o = t[n] = {
10 | i: n,
11 | l: !1,
12 | exports: {}
13 | };
14 | return e[n].call(o.exports, o, o.exports, r), o.l = !0, o.exports
15 | }
16 | return r.m = e, r.c = t, r.d = function (e, t, n) {
17 | r.o(e, t) || Object.defineProperty(e, t, {
18 | enumerable: !0,
19 | get: n
20 | })
21 | }, r.r = function (e) {
22 | "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
23 | value: "Module"
24 | }), Object.defineProperty(e, "__esModule", {
25 | value: !0
26 | })
27 | }, r.t = function (e, t) {
28 | if (1 & t && (e = r(e)), 8 & t) return e;
29 | if (4 & t && "object" == typeof e && e && e.__esModule) return e;
30 | var n = Object.create(null);
31 | if (r.r(n), Object.defineProperty(n, "default", {
32 | enumerable: !0,
33 | value: e
34 | }), 2 & t && "string" != typeof e)
35 | for (var o in e) r.d(n, o, function (t) {
36 | return e[t]
37 | }.bind(null, o));
38 | return n
39 | }, r.n = function (e) {
40 | var t = e && e.__esModule ? function () {
41 | return e.default
42 | } : function () {
43 | return e
44 | };
45 | return r.d(t, "a", t), t
46 | }, r.o = function (e, t) {
47 | return Object.prototype.hasOwnProperty.call(e, t)
48 | }, r.p = "", r(r.s = 1)
49 | }([function (t, r) {
50 | t.exports = e
51 | }, function (e, t, r) {
52 | "use strict";
53 | r.r(t);
54 | var n = r(0),
55 | o = r.n(n),
56 | a = function (e, t, r) {
57 | for (var n = r, o = 0, a = e.length; n < t.length;) {
58 | var i = t[n];
59 | if (o <= 0 && t.slice(n, n + a) === e) return n;
60 | "\\" === i ? n++ : "{" === i ? o++ : "}" === i && o--, n++
61 | }
62 | return -1
63 | },
64 | i = function (e, t, r, n) {
65 | for (var o = [], i = 0; i < e.length; i++)
66 | if ("text" === e[i].type) {
67 | var l = e[i].data,
68 | d = !0,
69 | s = 0,
70 | f = void 0;
71 | for (-1 !== (f = l.indexOf(t)) && (s = f, o.push({
72 | type: "text",
73 | data: l.slice(0, s)
74 | }), d = !1);;) {
75 | if (d) {
76 | if (-1 === (f = l.indexOf(t, s))) break;
77 | o.push({
78 | type: "text",
79 | data: l.slice(s, f)
80 | }), s = f
81 | } else {
82 | if (-1 === (f = a(r, l, s + t.length))) break;
83 | o.push({
84 | type: "math",
85 | data: l.slice(s + t.length, f),
86 | rawData: l.slice(s, f + r.length),
87 | display: n
88 | }), s = f + r.length
89 | }
90 | d = !d
91 | }
92 | o.push({
93 | type: "text",
94 | data: l.slice(s)
95 | })
96 | } else o.push(e[i]);
97 | return o
98 | },
99 | l = function (e, t) {
100 | for (var r = function (e, t) {
101 | for (var r = [{
102 | type: "text",
103 | data: e
104 | }], n = 0; n < t.length; n++) {
105 | var o = t[n];
106 | r = i(r, o.left, o.right, o.display || !1)
107 | }
108 | return r
109 | }(e, t.delimiters), n = document.createDocumentFragment(), a = 0; a < r.length; a++)
110 | if ("text" === r[a].type) n.appendChild(document.createTextNode(r[a].data));
111 | else {
112 | var l = document.createElement("span"),
113 | d = r[a].data;
114 | t.displayMode = r[a].display;
115 | try {
116 | t.preProcess && (d = t.preProcess(d)), o.a.render(d, l, t)
117 | } catch (e) {
118 | if (!(e instanceof o.a.ParseError)) throw e;
119 | t.errorCallback("KaTeX auto-render: Failed to parse `" + r[a].data + "` with ", e), n.appendChild(document.createTextNode(r[a].rawData));
120 | continue
121 | }
122 | n.appendChild(l)
123 | }
124 | return n
125 | };
126 | t.default = function (e, t) {
127 | if (!e) throw new Error("No element provided to render");
128 | var r = {};
129 | for (var n in t) t.hasOwnProperty(n) && (r[n] = t[n]);
130 | r.delimiters = r.delimiters || [{
131 | left: "$$",
132 | right: "$$",
133 | display: !1
134 | }, {
135 | left: "\\(",
136 | right: "\\)",
137 | display: !1
138 | }, {
139 | left: "\\[",
140 | right: "\\]",
141 | display: !0
142 | },{
143 | //Allows the katex to look for formula wrapped around $sqrt(2)$ to render and display
144 | left: "$",
145 | right: "$",
146 | display: !1
147 | }], r.ignoredTags = r.ignoredTags || ["script", "noscript", "style", "textarea", "pre", "code"], r.ignoredClasses = r.ignoredClasses || [], r.errorCallback = r.errorCallback || console.error, r.macros = r.macros || {},
148 | function e(t, r) {
149 | for (var n = 0; n < t.childNodes.length; n++) {
150 | var o = t.childNodes[n];
151 | if (3 === o.nodeType) {
152 | var a = l(o.textContent, r);
153 | n += a.childNodes.length - 1, t.replaceChild(a, o)
154 | } else 1 === o.nodeType && function () {
155 | var t = " " + o.className + " "; - 1 === r.ignoredTags.indexOf(o.nodeName.toLowerCase()) && r.ignoredClasses.every(function (e) {
156 | return -1 === t.indexOf(" " + e + " ")
157 | }) && e(o, r)
158 | }()
159 | }
160 | }(e, r)
161 | }
162 | }]).default
163 | });
--------------------------------------------------------------------------------
/katexmathview/src/main/assets/katex/contrib/mathtex-script-type.js:
--------------------------------------------------------------------------------
1 | (function webpackUniversalModuleDefinition(root, factory) {
2 | if(typeof exports === 'object' && typeof module === 'object')
3 | module.exports = factory(require("katex"));
4 | else if(typeof define === 'function' && define.amd)
5 | define(["katex"], factory);
6 | else {
7 | var a = typeof exports === 'object' ? factory(require("katex")) : factory(root["katex"]);
8 | for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
9 | }
10 | })((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__0__) {
11 | return /******/ (function(modules) { // webpackBootstrap
12 | /******/ // The module cache
13 | /******/ var installedModules = {};
14 | /******/
15 | /******/ // The require function
16 | /******/ function __webpack_require__(moduleId) {
17 | /******/
18 | /******/ // Check if module is in cache
19 | /******/ if(installedModules[moduleId]) {
20 | /******/ return installedModules[moduleId].exports;
21 | /******/ }
22 | /******/ // Create a new module (and put it into the cache)
23 | /******/ var module = installedModules[moduleId] = {
24 | /******/ i: moduleId,
25 | /******/ l: false,
26 | /******/ exports: {}
27 | /******/ };
28 | /******/
29 | /******/ // Execute the module function
30 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
31 | /******/
32 | /******/ // Flag the module as loaded
33 | /******/ module.l = true;
34 | /******/
35 | /******/ // Return the exports of the module
36 | /******/ return module.exports;
37 | /******/ }
38 | /******/
39 | /******/
40 | /******/ // expose the modules object (__webpack_modules__)
41 | /******/ __webpack_require__.m = modules;
42 | /******/
43 | /******/ // expose the module cache
44 | /******/ __webpack_require__.c = installedModules;
45 | /******/
46 | /******/ // define getter function for harmony exports
47 | /******/ __webpack_require__.d = function(exports, name, getter) {
48 | /******/ if(!__webpack_require__.o(exports, name)) {
49 | /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
50 | /******/ }
51 | /******/ };
52 | /******/
53 | /******/ // define __esModule on exports
54 | /******/ __webpack_require__.r = function(exports) {
55 | /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
56 | /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
57 | /******/ }
58 | /******/ Object.defineProperty(exports, '__esModule', { value: true });
59 | /******/ };
60 | /******/
61 | /******/ // create a fake namespace object
62 | /******/ // mode & 1: value is a module id, require it
63 | /******/ // mode & 2: merge all properties of value into the ns
64 | /******/ // mode & 4: return value when already ns object
65 | /******/ // mode & 8|1: behave like require
66 | /******/ __webpack_require__.t = function(value, mode) {
67 | /******/ if(mode & 1) value = __webpack_require__(value);
68 | /******/ if(mode & 8) return value;
69 | /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
70 | /******/ var ns = Object.create(null);
71 | /******/ __webpack_require__.r(ns);
72 | /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
73 | /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
74 | /******/ return ns;
75 | /******/ };
76 | /******/
77 | /******/ // getDefaultExport function for compatibility with non-harmony modules
78 | /******/ __webpack_require__.n = function(module) {
79 | /******/ var getter = module && module.__esModule ?
80 | /******/ function getDefault() { return module['default']; } :
81 | /******/ function getModuleExports() { return module; };
82 | /******/ __webpack_require__.d(getter, 'a', getter);
83 | /******/ return getter;
84 | /******/ };
85 | /******/
86 | /******/ // Object.prototype.hasOwnProperty.call
87 | /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
88 | /******/
89 | /******/ // __webpack_public_path__
90 | /******/ __webpack_require__.p = "";
91 | /******/
92 | /******/
93 | /******/ // Load entry module and return exports
94 | /******/ return __webpack_require__(__webpack_require__.s = 1);
95 | /******/ })
96 | /************************************************************************/
97 | /******/ ([
98 | /* 0 */
99 | /***/ (function(module, exports) {
100 |
101 | module.exports = __WEBPACK_EXTERNAL_MODULE__0__;
102 |
103 | /***/ }),
104 | /* 1 */
105 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
106 |
107 | "use strict";
108 | __webpack_require__.r(__webpack_exports__);
109 | /* harmony import */ var katex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
110 | /* harmony import */ var katex__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(katex__WEBPACK_IMPORTED_MODULE_0__);
111 |
112 | var scripts = document.body.getElementsByTagName("script");
113 | scripts = Array.prototype.slice.call(scripts);
114 | scripts.forEach(function (script) {
115 | if (!script.type || !script.type.match(/math\/tex/i)) {
116 | return -1;
117 | }
118 |
119 | var display = script.type.match(/mode\s*=\s*display(;|\s|\n|$)/) != null;
120 | var katexElement = document.createElement(display ? "div" : "span");
121 | katexElement.setAttribute("class", display ? "equation" : "inline-equation");
122 |
123 | try {
124 | katex__WEBPACK_IMPORTED_MODULE_0___default.a.render(script.text, katexElement, {
125 | displayMode: display
126 | });
127 | } catch (err) {
128 | //console.error(err); linter doesn't like this
129 | katexElement.textContent = script.text;
130 | }
131 |
132 | script.parentNode.replaceChild(katexElement, script);
133 | });
134 |
135 | /***/ })
136 | /******/ ])["default"];
137 | });
--------------------------------------------------------------------------------
/katexmathview/src/main/assets/katex/contrib/auto-render.mjs:
--------------------------------------------------------------------------------
1 | import katex from '../katex.mjs';
2 |
3 | /* eslint no-constant-condition:0 */
4 | const findEndOfMath = function findEndOfMath(delimiter, text, startIndex) {
5 | // Adapted from
6 | // https://github.com/Khan/perseus/blob/master/src/perseus-markdown.jsx
7 | let index = startIndex;
8 | let braceLevel = 0;
9 | const delimLength = delimiter.length;
10 |
11 | while (index < text.length) {
12 | const character = text[index];
13 |
14 | if (braceLevel <= 0 && text.slice(index, index + delimLength) === delimiter) {
15 | return index;
16 | } else if (character === "\\") {
17 | index++;
18 | } else if (character === "{") {
19 | braceLevel++;
20 | } else if (character === "}") {
21 | braceLevel--;
22 | }
23 |
24 | index++;
25 | }
26 |
27 | return -1;
28 | };
29 |
30 | const splitAtDelimiters = function splitAtDelimiters(startData, leftDelim, rightDelim, display) {
31 | const finalData = [];
32 |
33 | for (let i = 0; i < startData.length; i++) {
34 | if (startData[i].type === "text") {
35 | const text = startData[i].data;
36 | let lookingForLeft = true;
37 | let currIndex = 0;
38 | let nextIndex;
39 | nextIndex = text.indexOf(leftDelim);
40 |
41 | if (nextIndex !== -1) {
42 | currIndex = nextIndex;
43 | finalData.push({
44 | type: "text",
45 | data: text.slice(0, currIndex)
46 | });
47 | lookingForLeft = false;
48 | }
49 |
50 | while (true) {
51 | if (lookingForLeft) {
52 | nextIndex = text.indexOf(leftDelim, currIndex);
53 |
54 | if (nextIndex === -1) {
55 | break;
56 | }
57 |
58 | finalData.push({
59 | type: "text",
60 | data: text.slice(currIndex, nextIndex)
61 | });
62 | currIndex = nextIndex;
63 | } else {
64 | nextIndex = findEndOfMath(rightDelim, text, currIndex + leftDelim.length);
65 |
66 | if (nextIndex === -1) {
67 | break;
68 | }
69 |
70 | finalData.push({
71 | type: "math",
72 | data: text.slice(currIndex + leftDelim.length, nextIndex),
73 | rawData: text.slice(currIndex, nextIndex + rightDelim.length),
74 | display: display
75 | });
76 | currIndex = nextIndex + rightDelim.length;
77 | }
78 |
79 | lookingForLeft = !lookingForLeft;
80 | }
81 |
82 | finalData.push({
83 | type: "text",
84 | data: text.slice(currIndex)
85 | });
86 | } else {
87 | finalData.push(startData[i]);
88 | }
89 | }
90 |
91 | return finalData;
92 | };
93 |
94 | /* eslint no-console:0 */
95 |
96 | const splitWithDelimiters = function splitWithDelimiters(text, delimiters) {
97 | let data = [{
98 | type: "text",
99 | data: text
100 | }];
101 |
102 | for (let i = 0; i < delimiters.length; i++) {
103 | const delimiter = delimiters[i];
104 | data = splitAtDelimiters(data, delimiter.left, delimiter.right, delimiter.display || false);
105 | }
106 |
107 | return data;
108 | };
109 | /* Note: optionsCopy is mutated by this method. If it is ever exposed in the
110 | * API, we should copy it before mutating.
111 | */
112 |
113 |
114 | const renderMathInText = function renderMathInText(text, optionsCopy) {
115 | const data = splitWithDelimiters(text, optionsCopy.delimiters);
116 | const fragment = document.createDocumentFragment();
117 |
118 | for (let i = 0; i < data.length; i++) {
119 | if (data[i].type === "text") {
120 | fragment.appendChild(document.createTextNode(data[i].data));
121 | } else {
122 | const span = document.createElement("span");
123 | let math = data[i].data; // Override any display mode defined in the settings with that
124 | // defined by the text itself
125 |
126 | optionsCopy.displayMode = data[i].display;
127 |
128 | try {
129 | if (optionsCopy.preProcess) {
130 | math = optionsCopy.preProcess(math);
131 | }
132 |
133 | katex.render(math, span, optionsCopy);
134 | } catch (e) {
135 | if (!(e instanceof katex.ParseError)) {
136 | throw e;
137 | }
138 |
139 | optionsCopy.errorCallback("KaTeX auto-render: Failed to parse `" + data[i].data + "` with ", e);
140 | fragment.appendChild(document.createTextNode(data[i].rawData));
141 | continue;
142 | }
143 |
144 | fragment.appendChild(span);
145 | }
146 | }
147 |
148 | return fragment;
149 | };
150 |
151 | const renderElem = function renderElem(elem, optionsCopy) {
152 | for (let i = 0; i < elem.childNodes.length; i++) {
153 | const childNode = elem.childNodes[i];
154 |
155 | if (childNode.nodeType === 3) {
156 | // Text node
157 | const frag = renderMathInText(childNode.textContent, optionsCopy);
158 | i += frag.childNodes.length - 1;
159 | elem.replaceChild(frag, childNode);
160 | } else if (childNode.nodeType === 1) {
161 | // Element node
162 | const className = ' ' + childNode.className + ' ';
163 | const shouldRender = optionsCopy.ignoredTags.indexOf(childNode.nodeName.toLowerCase()) === -1 && optionsCopy.ignoredClasses.every(x => className.indexOf(' ' + x + ' ') === -1);
164 |
165 | if (shouldRender) {
166 | renderElem(childNode, optionsCopy);
167 | }
168 | } // Otherwise, it's something else, and ignore it.
169 |
170 | }
171 | };
172 |
173 | const renderMathInElement = function renderMathInElement(elem, options) {
174 | if (!elem) {
175 | throw new Error("No element provided to render");
176 | }
177 |
178 | const optionsCopy = {}; // Object.assign(optionsCopy, option)
179 |
180 | for (const option in options) {
181 | if (options.hasOwnProperty(option)) {
182 | optionsCopy[option] = options[option];
183 | }
184 | } // default options
185 |
186 |
187 | optionsCopy.delimiters = optionsCopy.delimiters || [{
188 | left: "$$",
189 | right: "$$",
190 | display: true
191 | }, {
192 | left: "\\(",
193 | right: "\\)",
194 | display: false
195 | }, // LaTeX uses $…$, but it ruins the display of normal `$` in text:
196 | // {left: "$", right: "$", display: false},
197 | // \[…\] must come last in this array. Otherwise, renderMathInElement
198 | // will search for \[ before it searches for $$ or \(
199 | // That makes it susceptible to finding a \\[0.3em] row delimiter and
200 | // treating it as if it were the start of a KaTeX math zone.
201 | {
202 | left: "\\[",
203 | right: "\\]",
204 | display: true
205 | }];
206 | optionsCopy.ignoredTags = optionsCopy.ignoredTags || ["script", "noscript", "style", "textarea", "pre", "code"];
207 | optionsCopy.ignoredClasses = optionsCopy.ignoredClasses || [];
208 | optionsCopy.errorCallback = optionsCopy.errorCallback || console.error; // Enable sharing of global macros defined via `\gdef` between different
209 | // math elements within a single call to `renderMathInElement`.
210 |
211 | optionsCopy.macros = optionsCopy.macros || {};
212 | renderElem(elem, optionsCopy);
213 | };
214 |
215 | export default renderMathInElement;
216 |
--------------------------------------------------------------------------------
/katexmathview/src/main/java/katex/hourglass/in/mathlib/MathView.java:
--------------------------------------------------------------------------------
1 | package katex.hourglass.in.mathlib;
2 |
3 | import android.annotation.SuppressLint;
4 | import android.content.Context;
5 | import android.content.res.TypedArray;
6 | import android.support.v4.content.ContextCompat;
7 | import android.util.AttributeSet;
8 | import android.util.Log;
9 | import android.view.MotionEvent;
10 | import android.view.View;
11 | import android.webkit.WebSettings;
12 | import android.webkit.WebView;
13 |
14 | /**
15 | * Created by lingaraj on 3/15/17.
16 | */
17 |
18 | public class MathView extends WebView {
19 | private String TAG = "KhanAcademyKatexView";
20 | private static final float default_text_size = 18;
21 | private String display_text;
22 | private int text_color;
23 | private int text_size;
24 | private boolean clickable = false;
25 | private boolean enable_zoom_in_controls = false;
26 |
27 |
28 |
29 |
30 | public MathView(Context context) {
31 | super(context);
32 | configurationSettingWebView(enable_zoom_in_controls);
33 | setDefaultTextColor(context);
34 | setDefaultTextSize();
35 | }
36 |
37 |
38 |
39 | public MathView(Context context, AttributeSet attrs) {
40 | super(context, attrs);
41 | configurationSettingWebView(enable_zoom_in_controls);
42 | TypedArray mTypeArray = context.getTheme().obtainStyledAttributes(
43 | attrs,
44 | R.styleable.MathView,
45 | 0, 0);
46 | try {
47 | setBackgroundColor(mTypeArray.getInteger(R.styleable.MathView_setViewBackgroundColor,ContextCompat.getColor(context,android.R.color.transparent)));
48 | setTextColor(mTypeArray.getColor(R.styleable.MathView_setTextColor,ContextCompat.getColor(context,android.R.color.black)));
49 | pixelSizeConversion(mTypeArray.getDimension(R.styleable.MathView_setTextSize,default_text_size));
50 | setDisplayText(mTypeArray.getString(R.styleable.MathView_setText));
51 | setClickable(mTypeArray.getBoolean(R.styleable.MathView_setClickable,false));
52 |
53 |
54 | }
55 | catch (Exception e)
56 | {
57 | Log.d(TAG,"Exception:"+e.toString());
58 | }
59 |
60 |
61 | }
62 | public void setViewBackgroundColor(int color)
63 | {
64 | setBackgroundColor(color);
65 | this.invalidate();
66 | }
67 |
68 | private void pixelSizeConversion(float dimension) {
69 | if (dimension==default_text_size)
70 | {
71 | setTextSize((int)default_text_size);
72 | }
73 | else
74 | {
75 | int pixel_dimen_equivalent_size = (int) ((double) dimension / 1.6);
76 | setTextSize(pixel_dimen_equivalent_size);
77 | }
78 | }
79 |
80 |
81 | @SuppressLint({"SetJavaScriptEnabled", "NewApi"})
82 | private void configurationSettingWebView(boolean enable_zoom_in_controls)
83 | {
84 | this.setLayerType(View.LAYER_TYPE_HARDWARE,null);
85 | WebSettings settings = this.getSettings();
86 | settings.setJavaScriptEnabled(true);
87 | settings.setAllowFileAccess(true);
88 | settings.setDisplayZoomControls(enable_zoom_in_controls);
89 | settings.setBuiltInZoomControls(enable_zoom_in_controls);
90 | settings.setSupportZoom(enable_zoom_in_controls);
91 | this.setVerticalScrollBarEnabled(enable_zoom_in_controls);
92 | this.setHorizontalScrollBarEnabled(enable_zoom_in_controls);
93 | Log.d(TAG,"Zoom in controls:"+enable_zoom_in_controls);
94 | }
95 |
96 |
97 | public void setDisplayText(String formula_text) {
98 | this.display_text = formula_text;
99 | loadData();
100 | }
101 |
102 |
103 | private String getOfflineKatexConfig()
104 | {
105 | String offline_config = "\n" +
106 | "\n" +
107 | " \n" +
108 | " \n" +
109 | " Auto-render test \n" +
110 | " \n" +
111 | " \n" +
112 | " \n" +
113 | " \n" +
114 | " \n" +
115 | " \n" +
116 | " \n"+
117 | " \n"+
118 | " \n" +
119 | ""+
127 | " \n" +
128 | " \n" +
129 | " {formula}\n" +
130 | " \n" +
131 | "";
132 | String start = " ";
134 |
135 | String end = "";
136 | return offline_config.replace("{formula}",this.display_text);
137 |
138 |
139 | }
140 |
141 | public void setTextSize(int size)
142 | {
143 | this.text_size = size;
144 | loadData();
145 |
146 | }
147 | public void setTextColor(int color)
148 | {
149 |
150 | this.text_color = color;
151 | loadData();
152 | }
153 | private String getHexColor(int intColor)
154 | {
155 | //Android and javascript color format differ javascript support Hex color, so the android color which user sets is converted to hexcolor to replicate the same in javascript.
156 | String hexColor = String.format("#%06X", (0xFFFFFF & intColor));
157 | Log.d(TAG,"Hex Color:"+hexColor);
158 | return hexColor;
159 | }
160 |
161 |
162 | private void setDefaultTextColor(Context context) {
163 | //sets default text color to black
164 | this.text_color = ContextCompat.getColor(context,android.R.color.black);
165 |
166 | }
167 |
168 | private void setDefaultTextSize() {
169 | //sets view default text size to 18
170 | this.text_size =(int) default_text_size;
171 | }
172 |
173 | private void loadData()
174 | {
175 | if (this.display_text!=null)
176 | {
177 | this.loadDataWithBaseURL("null",getOfflineKatexConfig(),"text/html","UTF-8","about:blank");
178 | }
179 |
180 | }
181 |
182 | public void setClickable(boolean is_clickable)
183 | {
184 | this.setEnabled(true);
185 | this.clickable = is_clickable;
186 | this.enable_zoom_in_controls = !is_clickable;
187 | configurationSettingWebView(this.enable_zoom_in_controls);
188 | this.invalidate();
189 | }
190 |
191 | @SuppressLint("NewApi")
192 | @Override public boolean onTouchEvent(MotionEvent event) {
193 | if (this.clickable && event.getAction() == MotionEvent.ACTION_DOWN) {
194 | this.callOnClick();
195 | return false;
196 | }
197 | else {
198 | return super.onTouchEvent(event);
199 | }
200 | }
201 |
202 | }
203 |
--------------------------------------------------------------------------------
/katexmathview/src/main/assets/katex/contrib/copy-tex.js:
--------------------------------------------------------------------------------
1 | (function webpackUniversalModuleDefinition(root, factory) {
2 | if(typeof exports === 'object' && typeof module === 'object')
3 | module.exports = factory();
4 | else if(typeof define === 'function' && define.amd)
5 | define([], factory);
6 | else {
7 | var a = factory();
8 | for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
9 | }
10 | })((typeof self !== 'undefined' ? self : this), function() {
11 | return /******/ (function(modules) { // webpackBootstrap
12 | /******/ // The module cache
13 | /******/ var installedModules = {};
14 | /******/
15 | /******/ // The require function
16 | /******/ function __webpack_require__(moduleId) {
17 | /******/
18 | /******/ // Check if module is in cache
19 | /******/ if(installedModules[moduleId]) {
20 | /******/ return installedModules[moduleId].exports;
21 | /******/ }
22 | /******/ // Create a new module (and put it into the cache)
23 | /******/ var module = installedModules[moduleId] = {
24 | /******/ i: moduleId,
25 | /******/ l: false,
26 | /******/ exports: {}
27 | /******/ };
28 | /******/
29 | /******/ // Execute the module function
30 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
31 | /******/
32 | /******/ // Flag the module as loaded
33 | /******/ module.l = true;
34 | /******/
35 | /******/ // Return the exports of the module
36 | /******/ return module.exports;
37 | /******/ }
38 | /******/
39 | /******/
40 | /******/ // expose the modules object (__webpack_modules__)
41 | /******/ __webpack_require__.m = modules;
42 | /******/
43 | /******/ // expose the module cache
44 | /******/ __webpack_require__.c = installedModules;
45 | /******/
46 | /******/ // define getter function for harmony exports
47 | /******/ __webpack_require__.d = function(exports, name, getter) {
48 | /******/ if(!__webpack_require__.o(exports, name)) {
49 | /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
50 | /******/ }
51 | /******/ };
52 | /******/
53 | /******/ // define __esModule on exports
54 | /******/ __webpack_require__.r = function(exports) {
55 | /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
56 | /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
57 | /******/ }
58 | /******/ Object.defineProperty(exports, '__esModule', { value: true });
59 | /******/ };
60 | /******/
61 | /******/ // create a fake namespace object
62 | /******/ // mode & 1: value is a module id, require it
63 | /******/ // mode & 2: merge all properties of value into the ns
64 | /******/ // mode & 4: return value when already ns object
65 | /******/ // mode & 8|1: behave like require
66 | /******/ __webpack_require__.t = function(value, mode) {
67 | /******/ if(mode & 1) value = __webpack_require__(value);
68 | /******/ if(mode & 8) return value;
69 | /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
70 | /******/ var ns = Object.create(null);
71 | /******/ __webpack_require__.r(ns);
72 | /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
73 | /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
74 | /******/ return ns;
75 | /******/ };
76 | /******/
77 | /******/ // getDefaultExport function for compatibility with non-harmony modules
78 | /******/ __webpack_require__.n = function(module) {
79 | /******/ var getter = module && module.__esModule ?
80 | /******/ function getDefault() { return module['default']; } :
81 | /******/ function getModuleExports() { return module; };
82 | /******/ __webpack_require__.d(getter, 'a', getter);
83 | /******/ return getter;
84 | /******/ };
85 | /******/
86 | /******/ // Object.prototype.hasOwnProperty.call
87 | /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
88 | /******/
89 | /******/ // __webpack_public_path__
90 | /******/ __webpack_require__.p = "";
91 | /******/
92 | /******/
93 | /******/ // Load entry module and return exports
94 | /******/ return __webpack_require__(__webpack_require__.s = 1);
95 | /******/ })
96 | /************************************************************************/
97 | /******/ ([
98 | /* 0 */
99 | /***/ (function(module, exports, __webpack_require__) {
100 |
101 | // extracted by mini-css-extract-plugin
102 |
103 | /***/ }),
104 | /* 1 */
105 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
106 |
107 | "use strict";
108 | __webpack_require__.r(__webpack_exports__);
109 |
110 | // EXTERNAL MODULE: ./contrib/copy-tex/copy-tex.css
111 | var copy_tex = __webpack_require__(0);
112 |
113 | // CONCATENATED MODULE: ./contrib/copy-tex/katex2tex.js
114 | // Set these to how you want inline and display math to be delimited.
115 | var defaultCopyDelimiters = {
116 | inline: ['$', '$'],
117 | // alternative: ['\(', '\)']
118 | display: ['$$', '$$'] // alternative: ['\[', '\]']
119 |
120 | }; // Replace .katex elements with their TeX source ( element).
121 | // Modifies fragment in-place. Useful for writing your own 'copy' handler,
122 | // as in copy-tex.js.
123 |
124 | var katexReplaceWithTex = function katexReplaceWithTex(fragment, copyDelimiters) {
125 | if (copyDelimiters === void 0) {
126 | copyDelimiters = defaultCopyDelimiters;
127 | }
128 |
129 | // Remove .katex-html blocks that are preceded by .katex-mathml blocks
130 | // (which will get replaced below).
131 | var katexHtml = fragment.querySelectorAll('.katex-mathml + .katex-html');
132 |
133 | for (var i = 0; i < katexHtml.length; i++) {
134 | var element = katexHtml[i];
135 |
136 | if (element.remove) {
137 | element.remove(null);
138 | } else {
139 | element.parentNode.removeChild(element);
140 | }
141 | } // Replace .katex-mathml elements with their annotation (TeX source)
142 | // descendant, with inline delimiters.
143 |
144 |
145 | var katexMathml = fragment.querySelectorAll('.katex-mathml');
146 |
147 | for (var _i = 0; _i < katexMathml.length; _i++) {
148 | var _element = katexMathml[_i];
149 |
150 | var texSource = _element.querySelector('annotation');
151 |
152 | if (texSource) {
153 | if (_element.replaceWith) {
154 | _element.replaceWith(texSource);
155 | } else {
156 | _element.parentNode.replaceChild(texSource, _element);
157 | }
158 |
159 | texSource.innerHTML = copyDelimiters.inline[0] + texSource.innerHTML + copyDelimiters.inline[1];
160 | }
161 | } // Switch display math to display delimiters.
162 |
163 |
164 | var displays = fragment.querySelectorAll('.katex-display annotation');
165 |
166 | for (var _i2 = 0; _i2 < displays.length; _i2++) {
167 | var _element2 = displays[_i2];
168 | _element2.innerHTML = copyDelimiters.display[0] + _element2.innerHTML.substr(copyDelimiters.inline[0].length, _element2.innerHTML.length - copyDelimiters.inline[0].length - copyDelimiters.inline[1].length) + copyDelimiters.display[1];
169 | }
170 |
171 | return fragment;
172 | };
173 | /* harmony default export */ var katex2tex = (katexReplaceWithTex);
174 | // CONCATENATED MODULE: ./contrib/copy-tex/copy-tex.js
175 | // Global copy handler to modify behavior on .katex elements.
176 |
177 | document.addEventListener('copy', function (event) {
178 | var selection = window.getSelection();
179 |
180 | if (selection.isCollapsed) {
181 | return; // default action OK if selection is empty
182 | }
183 |
184 | var fragment = selection.getRangeAt(0).cloneContents();
185 |
186 | if (!fragment.querySelector('.katex-mathml')) {
187 | return; // default action OK if no .katex-mathml elements
188 | } // Preserve usual HTML copy/paste behavior.
189 |
190 |
191 | var html = [];
192 |
193 | for (var i = 0; i < fragment.childNodes.length; i++) {
194 | html.push(fragment.childNodes[i].outerHTML);
195 | }
196 |
197 | event.clipboardData.setData('text/html', html.join('')); // Rewrite plain-text version.
198 |
199 | event.clipboardData.setData('text/plain', katex2tex(fragment).textContent); // Prevent normal copy handling.
200 |
201 | event.preventDefault();
202 | });
203 | // CONCATENATED MODULE: ./contrib/copy-tex/copy-tex.webpack.js
204 | /**
205 | * This is the webpack entry point for KaTeX. As ECMAScript doesn't support
206 | * CSS modules natively, a separate entry point is used.
207 | */
208 |
209 |
210 |
211 | /***/ })
212 | /******/ ])["default"];
213 | });
--------------------------------------------------------------------------------
/katexmathview/src/main/assets/katex/contrib/auto-render.js:
--------------------------------------------------------------------------------
1 | (function webpackUniversalModuleDefinition(root, factory) {
2 | if(typeof exports === 'object' && typeof module === 'object')
3 | module.exports = factory(require("katex"));
4 | else if(typeof define === 'function' && define.amd)
5 | define(["katex"], factory);
6 | else if(typeof exports === 'object')
7 | exports["renderMathInElement"] = factory(require("katex"));
8 | else
9 | root["renderMathInElement"] = factory(root["katex"]);
10 | })((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__0__) {
11 | return /******/ (function(modules) { // webpackBootstrap
12 | /******/ // The module cache
13 | /******/ var installedModules = {};
14 | /******/
15 | /******/ // The require function
16 | /******/ function __webpack_require__(moduleId) {
17 | /******/
18 | /******/ // Check if module is in cache
19 | /******/ if(installedModules[moduleId]) {
20 | /******/ return installedModules[moduleId].exports;
21 | /******/ }
22 | /******/ // Create a new module (and put it into the cache)
23 | /******/ var module = installedModules[moduleId] = {
24 | /******/ i: moduleId,
25 | /******/ l: false,
26 | /******/ exports: {}
27 | /******/ };
28 | /******/
29 | /******/ // Execute the module function
30 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
31 | /******/
32 | /******/ // Flag the module as loaded
33 | /******/ module.l = true;
34 | /******/
35 | /******/ // Return the exports of the module
36 | /******/ return module.exports;
37 | /******/ }
38 | /******/
39 | /******/
40 | /******/ // expose the modules object (__webpack_modules__)
41 | /******/ __webpack_require__.m = modules;
42 | /******/
43 | /******/ // expose the module cache
44 | /******/ __webpack_require__.c = installedModules;
45 | /******/
46 | /******/ // define getter function for harmony exports
47 | /******/ __webpack_require__.d = function(exports, name, getter) {
48 | /******/ if(!__webpack_require__.o(exports, name)) {
49 | /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
50 | /******/ }
51 | /******/ };
52 | /******/
53 | /******/ // define __esModule on exports
54 | /******/ __webpack_require__.r = function(exports) {
55 | /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
56 | /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
57 | /******/ }
58 | /******/ Object.defineProperty(exports, '__esModule', { value: true });
59 | /******/ };
60 | /******/
61 | /******/ // create a fake namespace object
62 | /******/ // mode & 1: value is a module id, require it
63 | /******/ // mode & 2: merge all properties of value into the ns
64 | /******/ // mode & 4: return value when already ns object
65 | /******/ // mode & 8|1: behave like require
66 | /******/ __webpack_require__.t = function(value, mode) {
67 | /******/ if(mode & 1) value = __webpack_require__(value);
68 | /******/ if(mode & 8) return value;
69 | /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
70 | /******/ var ns = Object.create(null);
71 | /******/ __webpack_require__.r(ns);
72 | /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
73 | /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
74 | /******/ return ns;
75 | /******/ };
76 | /******/
77 | /******/ // getDefaultExport function for compatibility with non-harmony modules
78 | /******/ __webpack_require__.n = function(module) {
79 | /******/ var getter = module && module.__esModule ?
80 | /******/ function getDefault() { return module['default']; } :
81 | /******/ function getModuleExports() { return module; };
82 | /******/ __webpack_require__.d(getter, 'a', getter);
83 | /******/ return getter;
84 | /******/ };
85 | /******/
86 | /******/ // Object.prototype.hasOwnProperty.call
87 | /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
88 | /******/
89 | /******/ // __webpack_public_path__
90 | /******/ __webpack_require__.p = "";
91 | /******/
92 | /******/
93 | /******/ // Load entry module and return exports
94 | /******/ return __webpack_require__(__webpack_require__.s = 1);
95 | /******/ })
96 | /************************************************************************/
97 | /******/ ([
98 | /* 0 */
99 | /***/ (function(module, exports) {
100 |
101 | module.exports = __WEBPACK_EXTERNAL_MODULE__0__;
102 |
103 | /***/ }),
104 | /* 1 */
105 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
106 |
107 | "use strict";
108 | __webpack_require__.r(__webpack_exports__);
109 |
110 | // EXTERNAL MODULE: external "katex"
111 | var external_katex_ = __webpack_require__(0);
112 | var external_katex_default = /*#__PURE__*/__webpack_require__.n(external_katex_);
113 |
114 | // CONCATENATED MODULE: ./contrib/auto-render/splitAtDelimiters.js
115 | /* eslint no-constant-condition:0 */
116 | var findEndOfMath = function findEndOfMath(delimiter, text, startIndex) {
117 | // Adapted from
118 | // https://github.com/Khan/perseus/blob/master/src/perseus-markdown.jsx
119 | var index = startIndex;
120 | var braceLevel = 0;
121 | var delimLength = delimiter.length;
122 |
123 | while (index < text.length) {
124 | var character = text[index];
125 |
126 | if (braceLevel <= 0 && text.slice(index, index + delimLength) === delimiter) {
127 | return index;
128 | } else if (character === "\\") {
129 | index++;
130 | } else if (character === "{") {
131 | braceLevel++;
132 | } else if (character === "}") {
133 | braceLevel--;
134 | }
135 |
136 | index++;
137 | }
138 |
139 | return -1;
140 | };
141 |
142 | var splitAtDelimiters = function splitAtDelimiters(startData, leftDelim, rightDelim, display) {
143 | var finalData = [];
144 |
145 | for (var i = 0; i < startData.length; i++) {
146 | if (startData[i].type === "text") {
147 | var text = startData[i].data;
148 | var lookingForLeft = true;
149 | var currIndex = 0;
150 | var nextIndex = void 0;
151 | nextIndex = text.indexOf(leftDelim);
152 |
153 | if (nextIndex !== -1) {
154 | currIndex = nextIndex;
155 | finalData.push({
156 | type: "text",
157 | data: text.slice(0, currIndex)
158 | });
159 | lookingForLeft = false;
160 | }
161 |
162 | while (true) {
163 | if (lookingForLeft) {
164 | nextIndex = text.indexOf(leftDelim, currIndex);
165 |
166 | if (nextIndex === -1) {
167 | break;
168 | }
169 |
170 | finalData.push({
171 | type: "text",
172 | data: text.slice(currIndex, nextIndex)
173 | });
174 | currIndex = nextIndex;
175 | } else {
176 | nextIndex = findEndOfMath(rightDelim, text, currIndex + leftDelim.length);
177 |
178 | if (nextIndex === -1) {
179 | break;
180 | }
181 |
182 | finalData.push({
183 | type: "math",
184 | data: text.slice(currIndex + leftDelim.length, nextIndex),
185 | rawData: text.slice(currIndex, nextIndex + rightDelim.length),
186 | display: display
187 | });
188 | currIndex = nextIndex + rightDelim.length;
189 | }
190 |
191 | lookingForLeft = !lookingForLeft;
192 | }
193 |
194 | finalData.push({
195 | type: "text",
196 | data: text.slice(currIndex)
197 | });
198 | } else {
199 | finalData.push(startData[i]);
200 | }
201 | }
202 |
203 | return finalData;
204 | };
205 |
206 | /* harmony default export */ var auto_render_splitAtDelimiters = (splitAtDelimiters);
207 | // CONCATENATED MODULE: ./contrib/auto-render/auto-render.js
208 | /* eslint no-console:0 */
209 |
210 |
211 |
212 | var auto_render_splitWithDelimiters = function splitWithDelimiters(text, delimiters) {
213 | var data = [{
214 | type: "text",
215 | data: text
216 | }];
217 |
218 | for (var i = 0; i < delimiters.length; i++) {
219 | var delimiter = delimiters[i];
220 | data = auto_render_splitAtDelimiters(data, delimiter.left, delimiter.right, delimiter.display || false);
221 | }
222 |
223 | return data;
224 | };
225 | /* Note: optionsCopy is mutated by this method. If it is ever exposed in the
226 | * API, we should copy it before mutating.
227 | */
228 |
229 |
230 | var auto_render_renderMathInText = function renderMathInText(text, optionsCopy) {
231 | var data = auto_render_splitWithDelimiters(text, optionsCopy.delimiters);
232 | var fragment = document.createDocumentFragment();
233 |
234 | for (var i = 0; i < data.length; i++) {
235 | if (data[i].type === "text") {
236 | fragment.appendChild(document.createTextNode(data[i].data));
237 | } else {
238 | var span = document.createElement("span");
239 | var math = data[i].data; // Override any display mode defined in the settings with that
240 | // defined by the text itself
241 |
242 | optionsCopy.displayMode = data[i].display;
243 |
244 | try {
245 | if (optionsCopy.preProcess) {
246 | math = optionsCopy.preProcess(math);
247 | }
248 |
249 | external_katex_default.a.render(math, span, optionsCopy);
250 | } catch (e) {
251 | if (!(e instanceof external_katex_default.a.ParseError)) {
252 | throw e;
253 | }
254 |
255 | optionsCopy.errorCallback("KaTeX auto-render: Failed to parse `" + data[i].data + "` with ", e);
256 | fragment.appendChild(document.createTextNode(data[i].rawData));
257 | continue;
258 | }
259 |
260 | fragment.appendChild(span);
261 | }
262 | }
263 |
264 | return fragment;
265 | };
266 |
267 | var renderElem = function renderElem(elem, optionsCopy) {
268 | for (var i = 0; i < elem.childNodes.length; i++) {
269 | var childNode = elem.childNodes[i];
270 |
271 | if (childNode.nodeType === 3) {
272 | // Text node
273 | var frag = auto_render_renderMathInText(childNode.textContent, optionsCopy);
274 | i += frag.childNodes.length - 1;
275 | elem.replaceChild(frag, childNode);
276 | } else if (childNode.nodeType === 1) {
277 | (function () {
278 | // Element node
279 | var className = ' ' + childNode.className + ' ';
280 | var shouldRender = optionsCopy.ignoredTags.indexOf(childNode.nodeName.toLowerCase()) === -1 && optionsCopy.ignoredClasses.every(function (x) {
281 | return className.indexOf(' ' + x + ' ') === -1;
282 | });
283 |
284 | if (shouldRender) {
285 | renderElem(childNode, optionsCopy);
286 | }
287 | })();
288 | } // Otherwise, it's something else, and ignore it.
289 |
290 | }
291 | };
292 |
293 | var renderMathInElement = function renderMathInElement(elem, options) {
294 | if (!elem) {
295 | throw new Error("No element provided to render");
296 | }
297 |
298 | var optionsCopy = {}; // Object.assign(optionsCopy, option)
299 |
300 | for (var option in options) {
301 | if (options.hasOwnProperty(option)) {
302 | optionsCopy[option] = options[option];
303 | }
304 | } // default options
305 |
306 |
307 | optionsCopy.delimiters = optionsCopy.delimiters || [{
308 | left: "$$",
309 | right: "$$",
310 | display: true
311 | }, {
312 | left: "\\(",
313 | right: "\\)",
314 | display: false
315 | }, // LaTeX uses $…$, but it ruins the display of normal `$` in text:
316 | // {left: "$", right: "$", display: false},
317 | // \[…\] must come last in this array. Otherwise, renderMathInElement
318 | // will search for \[ before it searches for $$ or \(
319 | // That makes it susceptible to finding a \\[0.3em] row delimiter and
320 | // treating it as if it were the start of a KaTeX math zone.
321 | {
322 | left: "\\[",
323 | right: "\\]",
324 | display: true
325 | },{
326 | // allows to display formulas wrapped around $$ inline.
327 | left:"$",
328 | right:"$",
329 | display:false
330 | }];
331 | optionsCopy.ignoredTags = optionsCopy.ignoredTags || ["script", "noscript", "style", "textarea", "pre", "code"];
332 | optionsCopy.ignoredClasses = optionsCopy.ignoredClasses || [];
333 | optionsCopy.errorCallback = optionsCopy.errorCallback || console.error; // Enable sharing of global macros defined via `\gdef` between different
334 | // math elements within a single call to `renderMathInElement`.
335 |
336 | optionsCopy.macros = optionsCopy.macros || {};
337 | renderElem(elem, optionsCopy);
338 | };
339 |
340 | /* harmony default export */ var auto_render = __webpack_exports__["default"] = (renderMathInElement);
341 |
342 | /***/ })
343 | /******/ ])["default"];
344 | });
--------------------------------------------------------------------------------
/app/src/main/java/hourglass/github/in/katex/DataHelpers.java:
--------------------------------------------------------------------------------
1 | package hourglass.github.in.katex;
2 |
3 | import android.content.Context;
4 | import android.util.Log;
5 | import java.util.ArrayList;
6 | import java.util.Arrays;
7 | import java.util.List;
8 |
9 | public class DataHelpers {
10 | private static final String TAG = "DATA";
11 | public static String getMathWithDisplayStyle(){
12 | return "$\\displaystyle {1 + \\frac{q^2}{(1-q)}+\\frac{q^6}{(1-q)(1-q^2)}+\\cdots }= \\prod_{j=0}^{\\infty}\\frac{1}{(1-q^{5j+2})(1-q^{5j+3})}, \\quad\\quad \\text{for }\\lvert q\\rvert<1. $";
13 | }
14 |
15 | public static String getScrollableData(){
16 | return "(a) $\\frac{1}{18}$
(b) $\\frac{7}{18}$
(c) $\\frac{5}{18}$
(d) $\\frac{1}{9}$
Ans: $\\frac{5}{18}$
Solution
Hints : – Let, C be the event that ‘the difference of nos. shown is 1’
$C = \\left \\{ \\left ( 1, 2 \\right )\\left ( 2, 1 \\right )\\left ( 2, 3 \\right )\\left ( 3, 2 \\right )\\left ( 3, 4 \\right )\\left ( 4, 3 \\right )\\left ( 4, 5 \\right )\\left ( 5, 4 \\right )\\left ( 5, 6 \\right )\\left ( 6, 5 \\right ) \\right \\}$
∴ $n\\left ( C \\right ) = 10$ , $n\\left ( S \\right ) = 36$
∴ $P\\left ( C \\right ) = \\frac{n\\left ( C \\right )}{n\\left ( S \\right )}$
$=\\frac{10}{36}$
$=\\frac{5}{18}$
Table Example:
$2x+y^{2}$ $C = \\left \\{ \\left ( 1, 2 \\right )\\left ( 2, 1 \\right )\\left ( 2, 3 \\right )\\left ( 3, 2 \\right )\\left ( 3, 4 \\right )\\left ( 4, 3 \\right )\\left ( 4, 5 \\right )\\left ( 5, 4 \\right )\\left ( 5, 6 \\right )\\left ( 6, 5 \\right ) \\right \\}$ $\\large \\frac{12-n+5}{30\\left ( n-5 \\right )}=\\frac{1}{\\left ( n-4 \\right )\\left ( n-5 \\right )}$ $\\large \\frac{2}{5\\left ( n-5 \\right )}=\\frac{1}{\\left ( n-4 \\right )\\left ( n-5 \\right )}+\\frac{1}{30}$ Row 2 Column 1 Row 2 Column 2 Row 2 Column 3 Row 2 Column 4 Test Test $\\frac{5}{18}$
";
17 | }
18 |
19 | public static String getSimpleMath(){
20 | return "${\rm{Mn}}{{\rm{O}}_{\rm{2}}}$";
21 | }
22 |
23 | public static String getPlainTextWithMath(){
24 | return "This formula $f(x) = x^2$ is an example.";
25 |
26 | }
27 |
28 | public static String getNormalHtmlData() {
29 | return "\n"
30 | + " As Xenophanes recognized as long ago as the sixth century before Christ,\n"
31 | + " whether or not God made man in His own image, it is certain that man makes\n"
32 | + " gods in his. The gods of Greek mythology first appear in the writings of\n"
33 | + " Homer and Hesiod, and, from the character and actions of these picturesque\n"
34 | + " and, for the most part, friendly beings, we get some idea of the men who\n"
35 | + " made them and brought them to Greece.\n"
36 | + "
\n"
37 | + "\n"
38 | + " But ritual is more fundamental than mythology, and the study of Greek\n"
39 | + " ritual during recent years has shown that, beneath the belief or skepticism\n"
40 | + " with which the Olympians were regarded, lay an older magic, with\n"
41 | + " traditional rites for the promotion of fertility by the celebration of the\n"
42 | + " annual cycle of life and death, and the propitiation of unfriendly ghosts,\n"
43 | + " gods or demons. Against this dark and dangerous background arose Olympic\n"
44 | + " mythology on the one hand and early philosophy and science on the other.\n"
45 | + "
\n"
46 | + "\n"
47 | + " In classical times the need of a creed higher than the Olympian was felt,\n"
48 | + " and Aeschylus, Sophocles and Plato finally evolved from the pleasant but\n"
49 | + " crude polytheism the idea of a single, supreme and righteous Zeus. But the\n"
50 | + " decay of Olympus led to a revival of old and the invasion of new magic\n"
51 | + " cults among the people, while some philosophers were looking to a vision of\n"
52 | + " the uniformity of nature under divine and universal law.\n"
53 | + "
\n"
54 | + "\n"
55 | + " From Sir William Cecil Dampier, A Shorter History of Science ,\n"
56 | + " ©1957, Meridian Books.\n"
57 | + "
";
58 | }
59 |
60 | public static String getMathQuestionWithHtmlTags(){
61 | return "\n"
62 | + "\t\n"
63 | + "\t\t\n"
64 | + "\t\t\t\n"
65 | + "\t\t\t\t\n"
66 | + "\t\t\t\t\t\n"
67 | + "\t\t\t\t\t\t\n"
68 | + "\t\t\t\t\t\t\tx \n"
69 | + "\t\t\t\t\t\t\t= \n"
70 | + "\t\t\t\t\t\t\t\n"
71 | + "\t\t\t\t\t\t\t\t{ \n"
72 | + "\t\t\t\t\t\t\t\t\n"
73 | + "\t\t\t\t\t\t\t\t\t\n"
74 | + "\t\t\t\t\t\t\t\t\t\t\n"
75 | + "\t\t\t\t\t\t\t\t\t\t\t\n"
76 | + "\t\t\t\t\t\t\t\t\t\t\t\ta \n"
77 | + "\t\t\t\t\t\t\t\t\t\t\t \n"
78 | + "\t\t\t\t\t\t\t\t\t\t \n"
79 | + "\t\t\t\t\t\t\t\t\t\t\n"
80 | + "\t\t\t\t\t\t\t\t\t\t\t\n"
81 | + "\t\t\t\t\t\t\t\t\t\t\t\t\n"
82 | + "\t\t\t\t\t\t\t\t\t\t\t\t\tif \n"
83 | + "\t\t\t\t\t\t\t\t\t\t\t\t\tb \n"
84 | + "\t\t\t\t\t\t\t\t\t\t\t\t \n"
85 | + "\t\t\t\t\t\t\t\t\t\t\t \n"
86 | + "\t\t\t\t\t\t\t\t\t\t \n"
87 | + "\t\t\t\t\t\t\t\t\t \n"
88 | + "\t\t\t\t\t\t\t\t\t\n"
89 | + "\t\t\t\t\t\t\t\t\t\t\n"
90 | + "\t\t\t\t\t\t\t\t\t\t\t\n"
91 | + "\t\t\t\t\t\t\t\t\t\t\t\tc \n"
92 | + "\t\t\t\t\t\t\t\t\t\t\t \n"
93 | + "\t\t\t\t\t\t\t\t\t\t \n"
94 | + "\t\t\t\t\t\t\t\t\t\t\n"
95 | + "\t\t\t\t\t\t\t\t\t\t\t\n"
96 | + "\t\t\t\t\t\t\t\t\t\t\t\t\n"
97 | + "\t\t\t\t\t\t\t\t\t\t\t\t\tif \n"
98 | + "\t\t\t\t\t\t\t\t\t\t\t\t\td \n"
99 | + "\t\t\t\t\t\t\t\t\t\t\t\t \n"
100 | + "\t\t\t\t\t\t\t\t\t\t\t \n"
101 | + "\t\t\t\t\t\t\t\t\t\t \n"
102 | + "\t\t\t\t\t\t\t\t\t \n"
103 | + "\t\t\t\t\t\t\t\t \n"
104 | + "\t\t\t\t\t\t\t \n"
105 | + "\t\t\t\t\t\t \n"
106 | + "\t\t\t\t\t\t$x = \\begin{cases} a &\\text{if } b \\\\ c &\\text{if } d \\end{cases}$ \n"
107 | + "\t\t\t\t\t \n"
108 | + "\t\t\t\t \n"
109 | + "\t\t\t \n"
110 | + "\t\t\t\n"
111 | + "\t\t\t\t\n"
112 | + "\t\t\t\t\t \n"
113 | + "\t\t\t\t\tx \n"
114 | + "\t\t\t\t\t \n"
115 | + "\t\t\t\t\t= \n"
116 | + "\t\t\t\t\t \n"
117 | + "\t\t\t\t \n"
118 | + "\t\t\t\t\n"
119 | + "\t\t\t\t\t \n"
120 | + "\t\t\t\t\t\n"
121 | + "\t\t\t\t\t\t\n"
122 | + "\t\t\t\t\t\t\t{ \n"
123 | + "\t\t\t\t\t\t \n"
124 | + "\t\t\t\t\t\t\n"
125 | + "\t\t\t\t\t\t\t\n"
126 | + "\t\t\t\t\t\t\t\t\n"
127 | + "\t\t\t\t\t\t\t\t\t\n"
128 | + "\t\t\t\t\t\t\t\t\t\t\n"
129 | + "\t\t\t\t\t\t\t\t\t\t\t\n"
130 | + "\t\t\t\t\t\t\t\t\t\t\t\t\n"
131 | + "\t\t\t\t\t\t\t\t\t\t\t\t\t \n"
132 | + "\t\t\t\t\t\t\t\t\t\t\t\t\t\n"
133 | + "\t\t\t\t\t\t\t\t\t\t\t\t\t\ta \n"
134 | + "\t\t\t\t\t\t\t\t\t\t\t\t\t \n"
135 | + "\t\t\t\t\t\t\t\t\t\t\t\t \n"
136 | + "\t\t\t\t\t\t\t\t\t\t\t\t\n"
137 | + "\t\t\t\t\t\t\t\t\t\t\t\t\t \n"
138 | + "\t\t\t\t\t\t\t\t\t\t\t\t\t\n"
139 | + "\t\t\t\t\t\t\t\t\t\t\t\t\t\tc \n"
140 | + "\t\t\t\t\t\t\t\t\t\t\t\t\t \n"
141 | + "\t\t\t\t\t\t\t\t\t\t\t\t \n"
142 | + "\t\t\t\t\t\t\t\t\t\t\t \n"
143 | + "\t\t\t\t\t\t\t\t\t\t\t\u200B \n"
144 | + "\t\t\t\t\t\t\t\t\t\t \n"
145 | + "\t\t\t\t\t\t\t\t\t\t\n"
146 | + "\t\t\t\t\t\t\t\t\t\t\t\n"
147 | + "\t\t\t\t\t\t\t\t\t\t\t\t \n"
148 | + "\t\t\t\t\t\t\t\t\t\t\t \n"
149 | + "\t\t\t\t\t\t\t\t\t\t \n"
150 | + "\t\t\t\t\t\t\t\t\t \n"
151 | + "\t\t\t\t\t\t\t\t \n"
152 | + "\t\t\t\t\t\t\t\t \n"
153 | + "\t\t\t\t\t\t\t\t\n"
154 | + "\t\t\t\t\t\t\t\t\t\n"
155 | + "\t\t\t\t\t\t\t\t\t\t\n"
156 | + "\t\t\t\t\t\t\t\t\t\t\t\n"
157 | + "\t\t\t\t\t\t\t\t\t\t\t\t\n"
158 | + "\t\t\t\t\t\t\t\t\t\t\t\t\t \n"
159 | + "\t\t\t\t\t\t\t\t\t\t\t\t\t\n"
160 | + "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n"
161 | + "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif \n"
162 | + "\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n"
163 | + "\t\t\t\t\t\t\t\t\t\t\t\t\t\tb \n"
164 | + "\t\t\t\t\t\t\t\t\t\t\t\t\t \n"
165 | + "\t\t\t\t\t\t\t\t\t\t\t\t \n"
166 | + "\t\t\t\t\t\t\t\t\t\t\t\t\n"
167 | + "\t\t\t\t\t\t\t\t\t\t\t\t\t \n"
168 | + "\t\t\t\t\t\t\t\t\t\t\t\t\t\n"
169 | + "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n"
170 | + "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif \n"
171 | + "\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n"
172 | + "\t\t\t\t\t\t\t\t\t\t\t\t\t\td \n"
173 | + "\t\t\t\t\t\t\t\t\t\t\t\t\t \n"
174 | + "\t\t\t\t\t\t\t\t\t\t\t\t \n"
175 | + "\t\t\t\t\t\t\t\t\t\t\t \n"
176 | + "\t\t\t\t\t\t\t\t\t\t\t\u200B \n"
177 | + "\t\t\t\t\t\t\t\t\t\t \n"
178 | + "\t\t\t\t\t\t\t\t\t\t\n"
179 | + "\t\t\t\t\t\t\t\t\t\t\t\n"
180 | + "\t\t\t\t\t\t\t\t\t\t\t\t \n"
181 | + "\t\t\t\t\t\t\t\t\t\t\t \n"
182 | + "\t\t\t\t\t\t\t\t\t\t \n"
183 | + "\t\t\t\t\t\t\t\t\t \n"
184 | + "\t\t\t\t\t\t\t\t \n"
185 | + "\t\t\t\t\t\t\t \n"
186 | + "\t\t\t\t\t\t \n"
187 | + "\t\t\t\t\t\t \n"
188 | + "\t\t\t\t\t \n"
189 | + "\t\t\t\t \n"
190 | + "\t\t\t \n"
191 | + "\t\t \n"
192 | + "\t\t$x = \\begin{cases} a &\\text{if } b \\\\ c &\\text{if } d \\end{cases}$ \n"
193 | + "\t \n"
194 | + "\t \n"
195 | + "\t
";
196 | }
197 |
198 | public static List getFormulas(Context context) {
199 | List formulas = new ArrayList<>(Arrays.asList(context.getResources().getStringArray(R.array.formulas)));
200 | formulas.add(getMathWithDisplayStyle());
201 | formulas.add(getSimpleMath());
202 | formulas.add(getPlainTextWithMath());
203 | formulas.add(getNormalHtmlData());
204 | formulas.add(getMathQuestionWithHtmlTags());
205 | Log.d(TAG,formulas.toArray().toString());
206 | return formulas;
207 |
208 | }
209 | }
210 |
--------------------------------------------------------------------------------
/katexmathview/src/main/assets/katex/katex.min.css:
--------------------------------------------------------------------------------
1 | @font-face{font-family:KaTeX_AMS;src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(fonts/KaTeX_Fraktur-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(fonts/KaTeX_Fraktur-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(fonts/KaTeX_Main-Bold.woff) format("woff"),url(fonts/KaTeX_Main-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(fonts/KaTeX_Main-Italic.woff) format("woff"),url(fonts/KaTeX_Main-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(fonts/KaTeX_Main-Regular.woff) format("woff"),url(fonts/KaTeX_Main-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Math-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(fonts/KaTeX_Math-Italic.woff) format("woff"),url(fonts/KaTeX_Math-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"KaTeX_SansSerif";src:url(fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(fonts/KaTeX_SansSerif-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:"KaTeX_SansSerif";src:url(fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(fonts/KaTeX_SansSerif-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"KaTeX_SansSerif";src:url(fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(fonts/KaTeX_SansSerif-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Script;src:url(fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(fonts/KaTeX_Script-Regular.woff) format("woff"),url(fonts/KaTeX_Script-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size1;src:url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size1-Regular.woff) format("woff"),url(fonts/KaTeX_Size1-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size2;src:url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size2-Regular.woff) format("woff"),url(fonts/KaTeX_Size2-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size3;src:url(fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size3-Regular.woff) format("woff"),url(fonts/KaTeX_Size3-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size4;src:url(fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size4-Regular.woff) format("woff"),url(fonts/KaTeX_Size4-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Typewriter;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(fonts/KaTeX_Typewriter-Regular.ttf) format("truetype");font-weight:400;font-style:normal}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathdefault{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-weight:700;font-style:italic}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;vertical-align:bottom;position:relative}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;vertical-align:bottom;font-size:1px;width:2px;min-width:2px}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{width:0;position:relative}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{display:inline-block;border:0 solid;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline{display:inline-block;width:100%;border-bottom-style:dashed}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer,.katex .sizing{display:inline-block}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .op-limits>.vlist-t{text-align:center}.katex .accent>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;margin:0 -.025em;border-right:.05em solid;min-width:1px}.katex .mtable .vs-dashed{border-right:.05em dashed}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{display:block;position:absolute;width:100%;height:inherit;fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex svg path{stroke:none}.katex .stretchy{width:100%;display:block;position:relative;overflow:hidden}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{width:100%;position:relative;overflow:hidden}.katex .halfarrow-left{position:absolute;left:0;width:50.2%;overflow:hidden}.katex .halfarrow-right{position:absolute;right:0;width:50.2%;overflow:hidden}.katex .brace-left{position:absolute;left:0;width:25.1%;overflow:hidden}.katex .brace-center{position:absolute;left:25%;width:50%;overflow:hidden}.katex .brace-right{position:absolute;right:0;width:25.1%;overflow:hidden}.katex .x-arrow-pad{padding:0 .5em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{box-sizing:border-box;border:.04em solid}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{text-align:left}
2 |
--------------------------------------------------------------------------------
/katexmathview/src/main/assets/katex/katex.css:
--------------------------------------------------------------------------------
1 | /* stylelint-disable font-family-no-missing-generic-family-keyword */
2 | @font-face {
3 | font-family: 'KaTeX_AMS';
4 | src: url(fonts/KaTeX_AMS-Regular.woff2) format('woff2'), url(fonts/KaTeX_AMS-Regular.woff) format('woff'), url(fonts/KaTeX_AMS-Regular.ttf) format('truetype');
5 | font-weight: normal;
6 | font-style: normal;
7 | }
8 | @font-face {
9 | font-family: 'KaTeX_Caligraphic';
10 | src: url(fonts/KaTeX_Caligraphic-Bold.woff2) format('woff2'), url(fonts/KaTeX_Caligraphic-Bold.woff) format('woff'), url(fonts/KaTeX_Caligraphic-Bold.ttf) format('truetype');
11 | font-weight: bold;
12 | font-style: normal;
13 | }
14 | @font-face {
15 | font-family: 'KaTeX_Caligraphic';
16 | src: url(fonts/KaTeX_Caligraphic-Regular.woff2) format('woff2'), url(fonts/KaTeX_Caligraphic-Regular.woff) format('woff'), url(fonts/KaTeX_Caligraphic-Regular.ttf) format('truetype');
17 | font-weight: normal;
18 | font-style: normal;
19 | }
20 | @font-face {
21 | font-family: 'KaTeX_Fraktur';
22 | src: url(fonts/KaTeX_Fraktur-Bold.woff2) format('woff2'), url(fonts/KaTeX_Fraktur-Bold.woff) format('woff'), url(fonts/KaTeX_Fraktur-Bold.ttf) format('truetype');
23 | font-weight: bold;
24 | font-style: normal;
25 | }
26 | @font-face {
27 | font-family: 'KaTeX_Fraktur';
28 | src: url(fonts/KaTeX_Fraktur-Regular.woff2) format('woff2'), url(fonts/KaTeX_Fraktur-Regular.woff) format('woff'), url(fonts/KaTeX_Fraktur-Regular.ttf) format('truetype');
29 | font-weight: normal;
30 | font-style: normal;
31 | }
32 | @font-face {
33 | font-family: 'KaTeX_Main';
34 | src: url(fonts/KaTeX_Main-Bold.woff2) format('woff2'), url(fonts/KaTeX_Main-Bold.woff) format('woff'), url(fonts/KaTeX_Main-Bold.ttf) format('truetype');
35 | font-weight: bold;
36 | font-style: normal;
37 | }
38 | @font-face {
39 | font-family: 'KaTeX_Main';
40 | src: url(fonts/KaTeX_Main-BoldItalic.woff2) format('woff2'), url(fonts/KaTeX_Main-BoldItalic.woff) format('woff'), url(fonts/KaTeX_Main-BoldItalic.ttf) format('truetype');
41 | font-weight: bold;
42 | font-style: italic;
43 | }
44 | @font-face {
45 | font-family: 'KaTeX_Main';
46 | src: url(fonts/KaTeX_Main-Italic.woff2) format('woff2'), url(fonts/KaTeX_Main-Italic.woff) format('woff'), url(fonts/KaTeX_Main-Italic.ttf) format('truetype');
47 | font-weight: normal;
48 | font-style: italic;
49 | }
50 | @font-face {
51 | font-family: 'KaTeX_Main';
52 | src: url(fonts/KaTeX_Main-Regular.woff2) format('woff2'), url(fonts/KaTeX_Main-Regular.woff) format('woff'), url(fonts/KaTeX_Main-Regular.ttf) format('truetype');
53 | font-weight: normal;
54 | font-style: normal;
55 | }
56 | @font-face {
57 | font-family: 'KaTeX_Math';
58 | src: url(fonts/KaTeX_Math-BoldItalic.woff2) format('woff2'), url(fonts/KaTeX_Math-BoldItalic.woff) format('woff'), url(fonts/KaTeX_Math-BoldItalic.ttf) format('truetype');
59 | font-weight: bold;
60 | font-style: italic;
61 | }
62 | @font-face {
63 | font-family: 'KaTeX_Math';
64 | src: url(fonts/KaTeX_Math-Italic.woff2) format('woff2'), url(fonts/KaTeX_Math-Italic.woff) format('woff'), url(fonts/KaTeX_Math-Italic.ttf) format('truetype');
65 | font-weight: normal;
66 | font-style: italic;
67 | }
68 | @font-face {
69 | font-family: 'KaTeX_SansSerif';
70 | src: url(fonts/KaTeX_SansSerif-Bold.woff2) format('woff2'), url(fonts/KaTeX_SansSerif-Bold.woff) format('woff'), url(fonts/KaTeX_SansSerif-Bold.ttf) format('truetype');
71 | font-weight: bold;
72 | font-style: normal;
73 | }
74 | @font-face {
75 | font-family: 'KaTeX_SansSerif';
76 | src: url(fonts/KaTeX_SansSerif-Italic.woff2) format('woff2'), url(fonts/KaTeX_SansSerif-Italic.woff) format('woff'), url(fonts/KaTeX_SansSerif-Italic.ttf) format('truetype');
77 | font-weight: normal;
78 | font-style: italic;
79 | }
80 | @font-face {
81 | font-family: 'KaTeX_SansSerif';
82 | src: url(fonts/KaTeX_SansSerif-Regular.woff2) format('woff2'), url(fonts/KaTeX_SansSerif-Regular.woff) format('woff'), url(fonts/KaTeX_SansSerif-Regular.ttf) format('truetype');
83 | font-weight: normal;
84 | font-style: normal;
85 | }
86 | @font-face {
87 | font-family: 'KaTeX_Script';
88 | src: url(fonts/KaTeX_Script-Regular.woff2) format('woff2'), url(fonts/KaTeX_Script-Regular.woff) format('woff'), url(fonts/KaTeX_Script-Regular.ttf) format('truetype');
89 | font-weight: normal;
90 | font-style: normal;
91 | }
92 | @font-face {
93 | font-family: 'KaTeX_Size1';
94 | src: url(fonts/KaTeX_Size1-Regular.woff2) format('woff2'), url(fonts/KaTeX_Size1-Regular.woff) format('woff'), url(fonts/KaTeX_Size1-Regular.ttf) format('truetype');
95 | font-weight: normal;
96 | font-style: normal;
97 | }
98 | @font-face {
99 | font-family: 'KaTeX_Size2';
100 | src: url(fonts/KaTeX_Size2-Regular.woff2) format('woff2'), url(fonts/KaTeX_Size2-Regular.woff) format('woff'), url(fonts/KaTeX_Size2-Regular.ttf) format('truetype');
101 | font-weight: normal;
102 | font-style: normal;
103 | }
104 | @font-face {
105 | font-family: 'KaTeX_Size3';
106 | src: url(fonts/KaTeX_Size3-Regular.woff2) format('woff2'), url(fonts/KaTeX_Size3-Regular.woff) format('woff'), url(fonts/KaTeX_Size3-Regular.ttf) format('truetype');
107 | font-weight: normal;
108 | font-style: normal;
109 | }
110 | @font-face {
111 | font-family: 'KaTeX_Size4';
112 | src: url(fonts/KaTeX_Size4-Regular.woff2) format('woff2'), url(fonts/KaTeX_Size4-Regular.woff) format('woff'), url(fonts/KaTeX_Size4-Regular.ttf) format('truetype');
113 | font-weight: normal;
114 | font-style: normal;
115 | }
116 | @font-face {
117 | font-family: 'KaTeX_Typewriter';
118 | src: url(fonts/KaTeX_Typewriter-Regular.woff2) format('woff2'), url(fonts/KaTeX_Typewriter-Regular.woff) format('woff'), url(fonts/KaTeX_Typewriter-Regular.ttf) format('truetype');
119 | font-weight: normal;
120 | font-style: normal;
121 | }
122 | .katex {
123 | font: normal 1.21em KaTeX_Main, Times New Roman, serif;
124 | line-height: 1.2;
125 | text-indent: 0;
126 | text-rendering: auto;
127 | }
128 | .katex * {
129 | -ms-high-contrast-adjust: none !important;
130 | }
131 | .katex .katex-mathml {
132 | position: absolute;
133 | clip: rect(1px, 1px, 1px, 1px);
134 | padding: 0;
135 | border: 0;
136 | height: 1px;
137 | width: 1px;
138 | overflow: hidden;
139 | }
140 | .katex .katex-html {
141 | /* \newline is an empty block at top level, between .base elements */
142 | }
143 | .katex .katex-html > .newline {
144 | display: block;
145 | }
146 | .katex .base {
147 | position: relative;
148 | display: inline-block;
149 | white-space: nowrap;
150 | width: min-content;
151 | }
152 | .katex .strut {
153 | display: inline-block;
154 | }
155 | .katex .textbf {
156 | font-weight: bold;
157 | }
158 | .katex .textit {
159 | font-style: italic;
160 | }
161 | .katex .textrm {
162 | font-family: KaTeX_Main;
163 | }
164 | .katex .textsf {
165 | font-family: KaTeX_SansSerif;
166 | }
167 | .katex .texttt {
168 | font-family: KaTeX_Typewriter;
169 | }
170 | .katex .mathdefault {
171 | font-family: KaTeX_Math;
172 | font-style: italic;
173 | }
174 | .katex .mathit {
175 | font-family: KaTeX_Main;
176 | font-style: italic;
177 | }
178 | .katex .mathrm {
179 | font-style: normal;
180 | }
181 | .katex .mathbf {
182 | font-family: KaTeX_Main;
183 | font-weight: bold;
184 | }
185 | .katex .boldsymbol {
186 | font-family: KaTeX_Math;
187 | font-weight: bold;
188 | font-style: italic;
189 | }
190 | .katex .amsrm {
191 | font-family: KaTeX_AMS;
192 | }
193 | .katex .mathbb,
194 | .katex .textbb {
195 | font-family: KaTeX_AMS;
196 | }
197 | .katex .mathcal {
198 | font-family: KaTeX_Caligraphic;
199 | }
200 | .katex .mathfrak,
201 | .katex .textfrak {
202 | font-family: KaTeX_Fraktur;
203 | }
204 | .katex .mathtt {
205 | font-family: KaTeX_Typewriter;
206 | }
207 | .katex .mathscr,
208 | .katex .textscr {
209 | font-family: KaTeX_Script;
210 | }
211 | .katex .mathsf,
212 | .katex .textsf {
213 | font-family: KaTeX_SansSerif;
214 | }
215 | .katex .mathboldsf,
216 | .katex .textboldsf {
217 | font-family: KaTeX_SansSerif;
218 | font-weight: bold;
219 | }
220 | .katex .mathitsf,
221 | .katex .textitsf {
222 | font-family: KaTeX_SansSerif;
223 | font-style: italic;
224 | }
225 | .katex .mainrm {
226 | font-family: KaTeX_Main;
227 | font-style: normal;
228 | }
229 | .katex .vlist-t {
230 | display: inline-table;
231 | table-layout: fixed;
232 | }
233 | .katex .vlist-r {
234 | display: table-row;
235 | }
236 | .katex .vlist {
237 | display: table-cell;
238 | vertical-align: bottom;
239 | position: relative;
240 | }
241 | .katex .vlist > span {
242 | display: block;
243 | height: 0;
244 | position: relative;
245 | }
246 | .katex .vlist > span > span {
247 | display: inline-block;
248 | }
249 | .katex .vlist > span > .pstrut {
250 | overflow: hidden;
251 | width: 0;
252 | }
253 | .katex .vlist-t2 {
254 | margin-right: -2px;
255 | }
256 | .katex .vlist-s {
257 | display: table-cell;
258 | vertical-align: bottom;
259 | font-size: 1px;
260 | width: 2px;
261 | min-width: 2px;
262 | }
263 | .katex .msupsub {
264 | text-align: left;
265 | }
266 | .katex .mfrac > span > span {
267 | text-align: center;
268 | }
269 | .katex .mfrac .frac-line {
270 | display: inline-block;
271 | width: 100%;
272 | border-bottom-style: solid;
273 | }
274 | .katex .mfrac .frac-line,
275 | .katex .overline .overline-line,
276 | .katex .underline .underline-line,
277 | .katex .hline,
278 | .katex .hdashline,
279 | .katex .rule {
280 | min-height: 1px;
281 | }
282 | .katex .mspace {
283 | display: inline-block;
284 | }
285 | .katex .llap,
286 | .katex .rlap,
287 | .katex .clap {
288 | width: 0;
289 | position: relative;
290 | }
291 | .katex .llap > .inner,
292 | .katex .rlap > .inner,
293 | .katex .clap > .inner {
294 | position: absolute;
295 | }
296 | .katex .llap > .fix,
297 | .katex .rlap > .fix,
298 | .katex .clap > .fix {
299 | display: inline-block;
300 | }
301 | .katex .llap > .inner {
302 | right: 0;
303 | }
304 | .katex .rlap > .inner,
305 | .katex .clap > .inner {
306 | left: 0;
307 | }
308 | .katex .clap > .inner > span {
309 | margin-left: -50%;
310 | margin-right: 50%;
311 | }
312 | .katex .rule {
313 | display: inline-block;
314 | border: solid 0;
315 | position: relative;
316 | }
317 | .katex .overline .overline-line,
318 | .katex .underline .underline-line,
319 | .katex .hline {
320 | display: inline-block;
321 | width: 100%;
322 | border-bottom-style: solid;
323 | }
324 | .katex .hdashline {
325 | display: inline-block;
326 | width: 100%;
327 | border-bottom-style: dashed;
328 | }
329 | .katex .sqrt > .root {
330 | margin-left: 0.27777778em;
331 | margin-right: -0.55555556em;
332 | }
333 | .katex .sizing,
334 | .katex .fontsize-ensurer {
335 | display: inline-block;
336 | }
337 | .katex .sizing.reset-size1.size1,
338 | .katex .fontsize-ensurer.reset-size1.size1 {
339 | font-size: 1em;
340 | }
341 | .katex .sizing.reset-size1.size2,
342 | .katex .fontsize-ensurer.reset-size1.size2 {
343 | font-size: 1.2em;
344 | }
345 | .katex .sizing.reset-size1.size3,
346 | .katex .fontsize-ensurer.reset-size1.size3 {
347 | font-size: 1.4em;
348 | }
349 | .katex .sizing.reset-size1.size4,
350 | .katex .fontsize-ensurer.reset-size1.size4 {
351 | font-size: 1.6em;
352 | }
353 | .katex .sizing.reset-size1.size5,
354 | .katex .fontsize-ensurer.reset-size1.size5 {
355 | font-size: 1.8em;
356 | }
357 | .katex .sizing.reset-size1.size6,
358 | .katex .fontsize-ensurer.reset-size1.size6 {
359 | font-size: 2em;
360 | }
361 | .katex .sizing.reset-size1.size7,
362 | .katex .fontsize-ensurer.reset-size1.size7 {
363 | font-size: 2.4em;
364 | }
365 | .katex .sizing.reset-size1.size8,
366 | .katex .fontsize-ensurer.reset-size1.size8 {
367 | font-size: 2.88em;
368 | }
369 | .katex .sizing.reset-size1.size9,
370 | .katex .fontsize-ensurer.reset-size1.size9 {
371 | font-size: 3.456em;
372 | }
373 | .katex .sizing.reset-size1.size10,
374 | .katex .fontsize-ensurer.reset-size1.size10 {
375 | font-size: 4.148em;
376 | }
377 | .katex .sizing.reset-size1.size11,
378 | .katex .fontsize-ensurer.reset-size1.size11 {
379 | font-size: 4.976em;
380 | }
381 | .katex .sizing.reset-size2.size1,
382 | .katex .fontsize-ensurer.reset-size2.size1 {
383 | font-size: 0.83333333em;
384 | }
385 | .katex .sizing.reset-size2.size2,
386 | .katex .fontsize-ensurer.reset-size2.size2 {
387 | font-size: 1em;
388 | }
389 | .katex .sizing.reset-size2.size3,
390 | .katex .fontsize-ensurer.reset-size2.size3 {
391 | font-size: 1.16666667em;
392 | }
393 | .katex .sizing.reset-size2.size4,
394 | .katex .fontsize-ensurer.reset-size2.size4 {
395 | font-size: 1.33333333em;
396 | }
397 | .katex .sizing.reset-size2.size5,
398 | .katex .fontsize-ensurer.reset-size2.size5 {
399 | font-size: 1.5em;
400 | }
401 | .katex .sizing.reset-size2.size6,
402 | .katex .fontsize-ensurer.reset-size2.size6 {
403 | font-size: 1.66666667em;
404 | }
405 | .katex .sizing.reset-size2.size7,
406 | .katex .fontsize-ensurer.reset-size2.size7 {
407 | font-size: 2em;
408 | }
409 | .katex .sizing.reset-size2.size8,
410 | .katex .fontsize-ensurer.reset-size2.size8 {
411 | font-size: 2.4em;
412 | }
413 | .katex .sizing.reset-size2.size9,
414 | .katex .fontsize-ensurer.reset-size2.size9 {
415 | font-size: 2.88em;
416 | }
417 | .katex .sizing.reset-size2.size10,
418 | .katex .fontsize-ensurer.reset-size2.size10 {
419 | font-size: 3.45666667em;
420 | }
421 | .katex .sizing.reset-size2.size11,
422 | .katex .fontsize-ensurer.reset-size2.size11 {
423 | font-size: 4.14666667em;
424 | }
425 | .katex .sizing.reset-size3.size1,
426 | .katex .fontsize-ensurer.reset-size3.size1 {
427 | font-size: 0.71428571em;
428 | }
429 | .katex .sizing.reset-size3.size2,
430 | .katex .fontsize-ensurer.reset-size3.size2 {
431 | font-size: 0.85714286em;
432 | }
433 | .katex .sizing.reset-size3.size3,
434 | .katex .fontsize-ensurer.reset-size3.size3 {
435 | font-size: 1em;
436 | }
437 | .katex .sizing.reset-size3.size4,
438 | .katex .fontsize-ensurer.reset-size3.size4 {
439 | font-size: 1.14285714em;
440 | }
441 | .katex .sizing.reset-size3.size5,
442 | .katex .fontsize-ensurer.reset-size3.size5 {
443 | font-size: 1.28571429em;
444 | }
445 | .katex .sizing.reset-size3.size6,
446 | .katex .fontsize-ensurer.reset-size3.size6 {
447 | font-size: 1.42857143em;
448 | }
449 | .katex .sizing.reset-size3.size7,
450 | .katex .fontsize-ensurer.reset-size3.size7 {
451 | font-size: 1.71428571em;
452 | }
453 | .katex .sizing.reset-size3.size8,
454 | .katex .fontsize-ensurer.reset-size3.size8 {
455 | font-size: 2.05714286em;
456 | }
457 | .katex .sizing.reset-size3.size9,
458 | .katex .fontsize-ensurer.reset-size3.size9 {
459 | font-size: 2.46857143em;
460 | }
461 | .katex .sizing.reset-size3.size10,
462 | .katex .fontsize-ensurer.reset-size3.size10 {
463 | font-size: 2.96285714em;
464 | }
465 | .katex .sizing.reset-size3.size11,
466 | .katex .fontsize-ensurer.reset-size3.size11 {
467 | font-size: 3.55428571em;
468 | }
469 | .katex .sizing.reset-size4.size1,
470 | .katex .fontsize-ensurer.reset-size4.size1 {
471 | font-size: 0.625em;
472 | }
473 | .katex .sizing.reset-size4.size2,
474 | .katex .fontsize-ensurer.reset-size4.size2 {
475 | font-size: 0.75em;
476 | }
477 | .katex .sizing.reset-size4.size3,
478 | .katex .fontsize-ensurer.reset-size4.size3 {
479 | font-size: 0.875em;
480 | }
481 | .katex .sizing.reset-size4.size4,
482 | .katex .fontsize-ensurer.reset-size4.size4 {
483 | font-size: 1em;
484 | }
485 | .katex .sizing.reset-size4.size5,
486 | .katex .fontsize-ensurer.reset-size4.size5 {
487 | font-size: 1.125em;
488 | }
489 | .katex .sizing.reset-size4.size6,
490 | .katex .fontsize-ensurer.reset-size4.size6 {
491 | font-size: 1.25em;
492 | }
493 | .katex .sizing.reset-size4.size7,
494 | .katex .fontsize-ensurer.reset-size4.size7 {
495 | font-size: 1.5em;
496 | }
497 | .katex .sizing.reset-size4.size8,
498 | .katex .fontsize-ensurer.reset-size4.size8 {
499 | font-size: 1.8em;
500 | }
501 | .katex .sizing.reset-size4.size9,
502 | .katex .fontsize-ensurer.reset-size4.size9 {
503 | font-size: 2.16em;
504 | }
505 | .katex .sizing.reset-size4.size10,
506 | .katex .fontsize-ensurer.reset-size4.size10 {
507 | font-size: 2.5925em;
508 | }
509 | .katex .sizing.reset-size4.size11,
510 | .katex .fontsize-ensurer.reset-size4.size11 {
511 | font-size: 3.11em;
512 | }
513 | .katex .sizing.reset-size5.size1,
514 | .katex .fontsize-ensurer.reset-size5.size1 {
515 | font-size: 0.55555556em;
516 | }
517 | .katex .sizing.reset-size5.size2,
518 | .katex .fontsize-ensurer.reset-size5.size2 {
519 | font-size: 0.66666667em;
520 | }
521 | .katex .sizing.reset-size5.size3,
522 | .katex .fontsize-ensurer.reset-size5.size3 {
523 | font-size: 0.77777778em;
524 | }
525 | .katex .sizing.reset-size5.size4,
526 | .katex .fontsize-ensurer.reset-size5.size4 {
527 | font-size: 0.88888889em;
528 | }
529 | .katex .sizing.reset-size5.size5,
530 | .katex .fontsize-ensurer.reset-size5.size5 {
531 | font-size: 1em;
532 | }
533 | .katex .sizing.reset-size5.size6,
534 | .katex .fontsize-ensurer.reset-size5.size6 {
535 | font-size: 1.11111111em;
536 | }
537 | .katex .sizing.reset-size5.size7,
538 | .katex .fontsize-ensurer.reset-size5.size7 {
539 | font-size: 1.33333333em;
540 | }
541 | .katex .sizing.reset-size5.size8,
542 | .katex .fontsize-ensurer.reset-size5.size8 {
543 | font-size: 1.6em;
544 | }
545 | .katex .sizing.reset-size5.size9,
546 | .katex .fontsize-ensurer.reset-size5.size9 {
547 | font-size: 1.92em;
548 | }
549 | .katex .sizing.reset-size5.size10,
550 | .katex .fontsize-ensurer.reset-size5.size10 {
551 | font-size: 2.30444444em;
552 | }
553 | .katex .sizing.reset-size5.size11,
554 | .katex .fontsize-ensurer.reset-size5.size11 {
555 | font-size: 2.76444444em;
556 | }
557 | .katex .sizing.reset-size6.size1,
558 | .katex .fontsize-ensurer.reset-size6.size1 {
559 | font-size: 0.5em;
560 | }
561 | .katex .sizing.reset-size6.size2,
562 | .katex .fontsize-ensurer.reset-size6.size2 {
563 | font-size: 0.6em;
564 | }
565 | .katex .sizing.reset-size6.size3,
566 | .katex .fontsize-ensurer.reset-size6.size3 {
567 | font-size: 0.7em;
568 | }
569 | .katex .sizing.reset-size6.size4,
570 | .katex .fontsize-ensurer.reset-size6.size4 {
571 | font-size: 0.8em;
572 | }
573 | .katex .sizing.reset-size6.size5,
574 | .katex .fontsize-ensurer.reset-size6.size5 {
575 | font-size: 0.9em;
576 | }
577 | .katex .sizing.reset-size6.size6,
578 | .katex .fontsize-ensurer.reset-size6.size6 {
579 | font-size: 1em;
580 | }
581 | .katex .sizing.reset-size6.size7,
582 | .katex .fontsize-ensurer.reset-size6.size7 {
583 | font-size: 1.2em;
584 | }
585 | .katex .sizing.reset-size6.size8,
586 | .katex .fontsize-ensurer.reset-size6.size8 {
587 | font-size: 1.44em;
588 | }
589 | .katex .sizing.reset-size6.size9,
590 | .katex .fontsize-ensurer.reset-size6.size9 {
591 | font-size: 1.728em;
592 | }
593 | .katex .sizing.reset-size6.size10,
594 | .katex .fontsize-ensurer.reset-size6.size10 {
595 | font-size: 2.074em;
596 | }
597 | .katex .sizing.reset-size6.size11,
598 | .katex .fontsize-ensurer.reset-size6.size11 {
599 | font-size: 2.488em;
600 | }
601 | .katex .sizing.reset-size7.size1,
602 | .katex .fontsize-ensurer.reset-size7.size1 {
603 | font-size: 0.41666667em;
604 | }
605 | .katex .sizing.reset-size7.size2,
606 | .katex .fontsize-ensurer.reset-size7.size2 {
607 | font-size: 0.5em;
608 | }
609 | .katex .sizing.reset-size7.size3,
610 | .katex .fontsize-ensurer.reset-size7.size3 {
611 | font-size: 0.58333333em;
612 | }
613 | .katex .sizing.reset-size7.size4,
614 | .katex .fontsize-ensurer.reset-size7.size4 {
615 | font-size: 0.66666667em;
616 | }
617 | .katex .sizing.reset-size7.size5,
618 | .katex .fontsize-ensurer.reset-size7.size5 {
619 | font-size: 0.75em;
620 | }
621 | .katex .sizing.reset-size7.size6,
622 | .katex .fontsize-ensurer.reset-size7.size6 {
623 | font-size: 0.83333333em;
624 | }
625 | .katex .sizing.reset-size7.size7,
626 | .katex .fontsize-ensurer.reset-size7.size7 {
627 | font-size: 1em;
628 | }
629 | .katex .sizing.reset-size7.size8,
630 | .katex .fontsize-ensurer.reset-size7.size8 {
631 | font-size: 1.2em;
632 | }
633 | .katex .sizing.reset-size7.size9,
634 | .katex .fontsize-ensurer.reset-size7.size9 {
635 | font-size: 1.44em;
636 | }
637 | .katex .sizing.reset-size7.size10,
638 | .katex .fontsize-ensurer.reset-size7.size10 {
639 | font-size: 1.72833333em;
640 | }
641 | .katex .sizing.reset-size7.size11,
642 | .katex .fontsize-ensurer.reset-size7.size11 {
643 | font-size: 2.07333333em;
644 | }
645 | .katex .sizing.reset-size8.size1,
646 | .katex .fontsize-ensurer.reset-size8.size1 {
647 | font-size: 0.34722222em;
648 | }
649 | .katex .sizing.reset-size8.size2,
650 | .katex .fontsize-ensurer.reset-size8.size2 {
651 | font-size: 0.41666667em;
652 | }
653 | .katex .sizing.reset-size8.size3,
654 | .katex .fontsize-ensurer.reset-size8.size3 {
655 | font-size: 0.48611111em;
656 | }
657 | .katex .sizing.reset-size8.size4,
658 | .katex .fontsize-ensurer.reset-size8.size4 {
659 | font-size: 0.55555556em;
660 | }
661 | .katex .sizing.reset-size8.size5,
662 | .katex .fontsize-ensurer.reset-size8.size5 {
663 | font-size: 0.625em;
664 | }
665 | .katex .sizing.reset-size8.size6,
666 | .katex .fontsize-ensurer.reset-size8.size6 {
667 | font-size: 0.69444444em;
668 | }
669 | .katex .sizing.reset-size8.size7,
670 | .katex .fontsize-ensurer.reset-size8.size7 {
671 | font-size: 0.83333333em;
672 | }
673 | .katex .sizing.reset-size8.size8,
674 | .katex .fontsize-ensurer.reset-size8.size8 {
675 | font-size: 1em;
676 | }
677 | .katex .sizing.reset-size8.size9,
678 | .katex .fontsize-ensurer.reset-size8.size9 {
679 | font-size: 1.2em;
680 | }
681 | .katex .sizing.reset-size8.size10,
682 | .katex .fontsize-ensurer.reset-size8.size10 {
683 | font-size: 1.44027778em;
684 | }
685 | .katex .sizing.reset-size8.size11,
686 | .katex .fontsize-ensurer.reset-size8.size11 {
687 | font-size: 1.72777778em;
688 | }
689 | .katex .sizing.reset-size9.size1,
690 | .katex .fontsize-ensurer.reset-size9.size1 {
691 | font-size: 0.28935185em;
692 | }
693 | .katex .sizing.reset-size9.size2,
694 | .katex .fontsize-ensurer.reset-size9.size2 {
695 | font-size: 0.34722222em;
696 | }
697 | .katex .sizing.reset-size9.size3,
698 | .katex .fontsize-ensurer.reset-size9.size3 {
699 | font-size: 0.40509259em;
700 | }
701 | .katex .sizing.reset-size9.size4,
702 | .katex .fontsize-ensurer.reset-size9.size4 {
703 | font-size: 0.46296296em;
704 | }
705 | .katex .sizing.reset-size9.size5,
706 | .katex .fontsize-ensurer.reset-size9.size5 {
707 | font-size: 0.52083333em;
708 | }
709 | .katex .sizing.reset-size9.size6,
710 | .katex .fontsize-ensurer.reset-size9.size6 {
711 | font-size: 0.5787037em;
712 | }
713 | .katex .sizing.reset-size9.size7,
714 | .katex .fontsize-ensurer.reset-size9.size7 {
715 | font-size: 0.69444444em;
716 | }
717 | .katex .sizing.reset-size9.size8,
718 | .katex .fontsize-ensurer.reset-size9.size8 {
719 | font-size: 0.83333333em;
720 | }
721 | .katex .sizing.reset-size9.size9,
722 | .katex .fontsize-ensurer.reset-size9.size9 {
723 | font-size: 1em;
724 | }
725 | .katex .sizing.reset-size9.size10,
726 | .katex .fontsize-ensurer.reset-size9.size10 {
727 | font-size: 1.20023148em;
728 | }
729 | .katex .sizing.reset-size9.size11,
730 | .katex .fontsize-ensurer.reset-size9.size11 {
731 | font-size: 1.43981481em;
732 | }
733 | .katex .sizing.reset-size10.size1,
734 | .katex .fontsize-ensurer.reset-size10.size1 {
735 | font-size: 0.24108004em;
736 | }
737 | .katex .sizing.reset-size10.size2,
738 | .katex .fontsize-ensurer.reset-size10.size2 {
739 | font-size: 0.28929605em;
740 | }
741 | .katex .sizing.reset-size10.size3,
742 | .katex .fontsize-ensurer.reset-size10.size3 {
743 | font-size: 0.33751205em;
744 | }
745 | .katex .sizing.reset-size10.size4,
746 | .katex .fontsize-ensurer.reset-size10.size4 {
747 | font-size: 0.38572806em;
748 | }
749 | .katex .sizing.reset-size10.size5,
750 | .katex .fontsize-ensurer.reset-size10.size5 {
751 | font-size: 0.43394407em;
752 | }
753 | .katex .sizing.reset-size10.size6,
754 | .katex .fontsize-ensurer.reset-size10.size6 {
755 | font-size: 0.48216008em;
756 | }
757 | .katex .sizing.reset-size10.size7,
758 | .katex .fontsize-ensurer.reset-size10.size7 {
759 | font-size: 0.57859209em;
760 | }
761 | .katex .sizing.reset-size10.size8,
762 | .katex .fontsize-ensurer.reset-size10.size8 {
763 | font-size: 0.69431051em;
764 | }
765 | .katex .sizing.reset-size10.size9,
766 | .katex .fontsize-ensurer.reset-size10.size9 {
767 | font-size: 0.83317261em;
768 | }
769 | .katex .sizing.reset-size10.size10,
770 | .katex .fontsize-ensurer.reset-size10.size10 {
771 | font-size: 1em;
772 | }
773 | .katex .sizing.reset-size10.size11,
774 | .katex .fontsize-ensurer.reset-size10.size11 {
775 | font-size: 1.19961427em;
776 | }
777 | .katex .sizing.reset-size11.size1,
778 | .katex .fontsize-ensurer.reset-size11.size1 {
779 | font-size: 0.20096463em;
780 | }
781 | .katex .sizing.reset-size11.size2,
782 | .katex .fontsize-ensurer.reset-size11.size2 {
783 | font-size: 0.24115756em;
784 | }
785 | .katex .sizing.reset-size11.size3,
786 | .katex .fontsize-ensurer.reset-size11.size3 {
787 | font-size: 0.28135048em;
788 | }
789 | .katex .sizing.reset-size11.size4,
790 | .katex .fontsize-ensurer.reset-size11.size4 {
791 | font-size: 0.32154341em;
792 | }
793 | .katex .sizing.reset-size11.size5,
794 | .katex .fontsize-ensurer.reset-size11.size5 {
795 | font-size: 0.36173633em;
796 | }
797 | .katex .sizing.reset-size11.size6,
798 | .katex .fontsize-ensurer.reset-size11.size6 {
799 | font-size: 0.40192926em;
800 | }
801 | .katex .sizing.reset-size11.size7,
802 | .katex .fontsize-ensurer.reset-size11.size7 {
803 | font-size: 0.48231511em;
804 | }
805 | .katex .sizing.reset-size11.size8,
806 | .katex .fontsize-ensurer.reset-size11.size8 {
807 | font-size: 0.57877814em;
808 | }
809 | .katex .sizing.reset-size11.size9,
810 | .katex .fontsize-ensurer.reset-size11.size9 {
811 | font-size: 0.69453376em;
812 | }
813 | .katex .sizing.reset-size11.size10,
814 | .katex .fontsize-ensurer.reset-size11.size10 {
815 | font-size: 0.83360129em;
816 | }
817 | .katex .sizing.reset-size11.size11,
818 | .katex .fontsize-ensurer.reset-size11.size11 {
819 | font-size: 1em;
820 | }
821 | .katex .delimsizing.size1 {
822 | font-family: KaTeX_Size1;
823 | }
824 | .katex .delimsizing.size2 {
825 | font-family: KaTeX_Size2;
826 | }
827 | .katex .delimsizing.size3 {
828 | font-family: KaTeX_Size3;
829 | }
830 | .katex .delimsizing.size4 {
831 | font-family: KaTeX_Size4;
832 | }
833 | .katex .delimsizing.mult .delim-size1 > span {
834 | font-family: KaTeX_Size1;
835 | }
836 | .katex .delimsizing.mult .delim-size4 > span {
837 | font-family: KaTeX_Size4;
838 | }
839 | .katex .nulldelimiter {
840 | display: inline-block;
841 | width: 0.12em;
842 | }
843 | .katex .delimcenter {
844 | position: relative;
845 | }
846 | .katex .op-symbol {
847 | position: relative;
848 | }
849 | .katex .op-symbol.small-op {
850 | font-family: KaTeX_Size1;
851 | }
852 | .katex .op-symbol.large-op {
853 | font-family: KaTeX_Size2;
854 | }
855 | .katex .op-limits > .vlist-t {
856 | text-align: center;
857 | }
858 | .katex .accent > .vlist-t {
859 | text-align: center;
860 | }
861 | .katex .accent .accent-body {
862 | position: relative;
863 | }
864 | .katex .accent .accent-body:not(.accent-full) {
865 | width: 0;
866 | }
867 | .katex .overlay {
868 | display: block;
869 | }
870 | .katex .mtable .vertical-separator {
871 | display: inline-block;
872 | margin: 0 -0.025em;
873 | border-right: 0.05em solid;
874 | min-width: 1px;
875 | }
876 | .katex .mtable .vs-dashed {
877 | border-right: 0.05em dashed;
878 | }
879 | .katex .mtable .arraycolsep {
880 | display: inline-block;
881 | }
882 | .katex .mtable .col-align-c > .vlist-t {
883 | text-align: center;
884 | }
885 | .katex .mtable .col-align-l > .vlist-t {
886 | text-align: left;
887 | }
888 | .katex .mtable .col-align-r > .vlist-t {
889 | text-align: right;
890 | }
891 | .katex .svg-align {
892 | text-align: left;
893 | }
894 | .katex svg {
895 | display: block;
896 | position: absolute;
897 | width: 100%;
898 | height: inherit;
899 | fill: currentColor;
900 | stroke: currentColor;
901 | fill-rule: nonzero;
902 | fill-opacity: 1;
903 | stroke-width: 1;
904 | stroke-linecap: butt;
905 | stroke-linejoin: miter;
906 | stroke-miterlimit: 4;
907 | stroke-dasharray: none;
908 | stroke-dashoffset: 0;
909 | stroke-opacity: 1;
910 | }
911 | .katex svg path {
912 | stroke: none;
913 | }
914 | .katex .stretchy {
915 | width: 100%;
916 | display: block;
917 | position: relative;
918 | overflow: hidden;
919 | }
920 | .katex .stretchy::before,
921 | .katex .stretchy::after {
922 | content: "";
923 | }
924 | .katex .hide-tail {
925 | width: 100%;
926 | position: relative;
927 | overflow: hidden;
928 | }
929 | .katex .halfarrow-left {
930 | position: absolute;
931 | left: 0;
932 | width: 50.2%;
933 | overflow: hidden;
934 | }
935 | .katex .halfarrow-right {
936 | position: absolute;
937 | right: 0;
938 | width: 50.2%;
939 | overflow: hidden;
940 | }
941 | .katex .brace-left {
942 | position: absolute;
943 | left: 0;
944 | width: 25.1%;
945 | overflow: hidden;
946 | }
947 | .katex .brace-center {
948 | position: absolute;
949 | left: 25%;
950 | width: 50%;
951 | overflow: hidden;
952 | }
953 | .katex .brace-right {
954 | position: absolute;
955 | right: 0;
956 | width: 25.1%;
957 | overflow: hidden;
958 | }
959 | .katex .x-arrow-pad {
960 | padding: 0 0.5em;
961 | }
962 | .katex .x-arrow,
963 | .katex .mover,
964 | .katex .munder {
965 | text-align: center;
966 | }
967 | .katex .boxpad {
968 | padding: 0 0.3em 0 0.3em;
969 | }
970 | .katex .fbox,
971 | .katex .fcolorbox {
972 | box-sizing: border-box;
973 | border: 0.04em solid;
974 | }
975 | .katex .cancel-pad {
976 | padding: 0 0.2em 0 0.2em;
977 | }
978 | .katex .cancel-lap {
979 | margin-left: -0.2em;
980 | margin-right: -0.2em;
981 | }
982 | .katex .sout {
983 | border-bottom-style: solid;
984 | border-bottom-width: 0.08em;
985 | }
986 | .katex-display {
987 | display: block;
988 | margin: 1em 0;
989 | text-align: center;
990 | }
991 | .katex-display > .katex {
992 | display: block;
993 | text-align: center;
994 | white-space: nowrap;
995 | }
996 | .katex-display > .katex > .katex-html {
997 | display: block;
998 | position: relative;
999 | }
1000 | .katex-display > .katex > .katex-html > .tag {
1001 | position: absolute;
1002 | right: 0;
1003 | }
1004 | .katex-display.leqno > .katex > .katex-html > .tag {
1005 | left: 0;
1006 | right: auto;
1007 | }
1008 | .katex-display.fleqn > .katex {
1009 | text-align: left;
1010 | }
1011 |
1012 |
--------------------------------------------------------------------------------