├── xmlcatalog └── catalog.xml ├── example ├── katexify-example.xml ├── test.xpl └── example.xml ├── css └── katex-overrides.css ├── xspec ├── mtable.xspec └── subsup.xspec ├── xsl ├── invoke-mml2tex.xsl ├── function-names.xsl ├── test-mml.xsl ├── katexify.xsl ├── operators.xsl └── mml2tex.xsl ├── LICENSE ├── texmap └── texmap-upgreek.xml ├── xpl └── mml2tex.xpl └── README.md /xmlcatalog/catalog.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /example/katexify-example.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Γ 4 | = 5 | π 6 | 7 | 8 | r 9 | 10 | 11 | 2 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /css/katex-overrides.css: -------------------------------------------------------------------------------- 1 | /* KaTeX font overrides */ 2 | 3 | .katex .override-text { 4 | font-family: serif; 5 | font-style: normal; 6 | } 7 | 8 | .katex .override-textbf { 9 | font-family: serif; 10 | font-style: normal; 11 | font-weight: bold; 12 | } 13 | 14 | .katex .override-textsf { 15 | font-family: sans-serif; 16 | font-style: normal; 17 | } 18 | 19 | .katex .override-textsf { 20 | font-variant: small-caps; 21 | font-style: normal; 22 | } 23 | 24 | .katex .override-texttt { 25 | font-family: monospace; 26 | font-style: normal; 27 | } 28 | -------------------------------------------------------------------------------- /xspec/mtable.xspec: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 11 | 12 | 13 | = 14 | 15 | 16 | 13 17 | 18 | 19 | 20 | 21 | 21 22 | 23 | 24 | = 25 | 26 | 27 | 23 28 | 29 | 30 | 31 | 32 | 33 | \begin{array}{ccc} 34 | 11 & = & 13\\ 35 | 21 & = & 23 36 | \end{array} 37 | 38 | 39 | -------------------------------------------------------------------------------- /xsl/invoke-mml2tex.xsl: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015, transpect.io 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | * Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | * Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 15 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 17 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 18 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 20 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 21 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 22 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 | 25 | -------------------------------------------------------------------------------- /example/test.xpl: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 |
10 | Area enclosed by a circle 11 | 12 | A=πr2 13 | 14 |
15 |
16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
-------------------------------------------------------------------------------- /example/example.xml: -------------------------------------------------------------------------------- 1 | 2 |
3 | Area enclosed by a circle 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 1 12 | 13 | 14 | 15 | 16 | 17 | 0 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 0 34 | 35 | 36 | 37 | 38 | 39 | 1 40 | 41 | 42 | 43 | 44 | 45 | 46 |
47 | -------------------------------------------------------------------------------- /xspec/subsup.xspec: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | t 12 | 13 | 14 | r 15 | m 16 | 17 | 18 | 19 | 20 | 2 21 | 22 | 23 | 24 | 25 | {t_{rm}}_{2} 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | t 35 | 36 | 37 | r 38 | m 39 | 40 | 41 | 42 | 43 | 2 44 | 45 | 46 | 47 | 48 | {t_{rm}}^{2} 49 | 50 | 51 | -------------------------------------------------------------------------------- /xsl/function-names.xsl: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /xsl/test-mml.xsl: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | \documentclass{scrbook} 31 | \usepackage[T1]{fontenc} 32 | \usepackage[utf8]{inputenc} 33 | \usepackage{amsmath} 34 | \usepackage{amssymb} 35 | \usepackage{amsfonts} 36 | \usepackage{amsxtra} 37 | \usepackage{wasysym} 38 | \usepackage{isomath} 39 | \usepackage{mathtools} 40 | \usepackage{txfonts} 41 | \usepackage[ngerman]{babel} 42 | \begin{document} 43 | 44 | 45 | 46 | 47 | $ 48 | 49 | 50 | 51 | $ 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | \end{document} 61 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /texmap/texmap-upgreek.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | -------------------------------------------------------------------------------- /xpl/mml2tex.xpl: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 13 | Takes an XML file as input and generates processing 14 | instructions from MathML equations. 15 | 16 | 17 | 18 | 19 | Expects an XML document. 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | Expects a character map for mapping from Unicode to TeX. 32 | 33 | 34 | 35 | 36 | 37 | 38 | Provides the XML document with mml2tex processing instructions. 39 | 40 | 41 | 42 | 43 | 44 | Switch XSLT optimizations for MathML on or off. 45 | 46 | 47 | 48 | 49 | 50 | Used to switch debug mode on or off. Pass 'yes' to enable debug mode. 51 | 52 | 53 | 54 | 55 | 56 | Expects a file URI of the directory that should be used to store debug information. 57 | 58 | 59 | 60 | 61 | 62 | Whether to recover from some errors or not 63 | 64 | 65 | 66 | 67 | 68 | uri to texmap 69 | 70 | 71 | 72 | 73 | 74 | uri to texmap for upgreek chars 75 | 76 | 77 | 78 | 79 | 80 | [yes|no] Whether to output \textstyle or \displaystyle when math/@display is set 81 | 82 | 83 | 84 | 85 | 86 | [yes|no] Whether to always use \left and \right for ([{}]) etc. 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | MathML equations are converted to "mml2tex" processing instructions. 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # mml2tex 2 | 3 | mml2tex is an XProc/XSLT-library to convert MathML to LaTeX. 4 | 5 | It should currently support MathML 2 and 3 presentation markup. Content markup and some MathML 1 elements are not supported. 6 | 7 | You may either invoke mml2tex standalone or include it as library in your XSLT or XProc project. The LaTeX code is wrapped in processing instructions named `mml2tex`. 8 | 9 | This library is also used in [docx2tex](https://github.com/transpect/docx2tex) that converts Word docx files with OOMML (= new equation editor) formulas to LaTeX. 10 | 11 | Consider this XML input file … 12 | 13 | ```xml 14 | 15 |
16 | Area enclosed by a circle 17 | 18 | 19 | A 20 | = 21 | π 22 | 23 | 24 | r 25 | 26 | 27 | 2 28 | 29 | 30 | 31 | 32 |
33 | 34 | ``` 35 | 36 | … you should get this output: 37 | ```xml 38 |
39 | Area enclosed by a circle 40 | 41 | 42 | 43 |
44 | ``` 45 | 46 | 47 | ## Invoke standalone 48 | 49 | mml2tex is a library rather than a standalone stylesheet. If you intend to run mml2tex standalone, you need to include the dependencies, add a proper XML catalog and invoke Saxon with XML resolver support. 50 | 51 | ``` 52 | mkdir myProjectDir 53 | cd myProjectDir 54 | git clone git@github.com:transpect/mml2tex.git 55 | git clone git@github.com:transpect/xslt-util.git 56 | mkdir xmlcatalog 57 | touch xmlcatalog/catalog.xml 58 | ``` 59 | 60 | Then edit `xmlcatalog/catalog.xml` with your text editor of choice: 61 | 62 | ```xml 63 | 64 | 65 | 66 | 67 | ``` 68 | 69 | Download [Apache XML Commons Resolver](https://xerces.apache.org/mirrors.cgi) and invoke Saxon: 70 | 71 | ``` 72 | java -cp "C:/home/myUsername/xmltools/saxon/saxon9he.jar;C:/home/myUsername/xmltools/xml-commons-resolver/resolver.jar" \ 73 | -Dxml.catalog.files=C:/home/myUsername/myProjectDir/xmlcatalog/catalog.xml \ 74 | net.sf.saxon.Transform \ 75 | -catalog:xmlcatalog/catalog.xml \ 76 | -xsl:mml2tex/xsl/invoke-mml2tex.xsl \ 77 | -s:mml2tex/example/example.xml 78 | ``` 79 | 80 | 81 | ## Include as XSLT library 82 | 83 | You have to import `mml2tex.xsl` in your XSLT stylesheet and create a template that matches on the MathML equations. The MathML markup must be processed within the `mathml2tex` mode. You can take `xsl/mml2tex.xsl` as example: 84 | 85 | ```xml 86 | 87 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | ``` 125 | 126 | *Note:* You may omit the `xsl:processing-instruction`. Then the LaTeX code will be issued as plain text. This method is not recommended, because subsequent text replacements may break your LaTeX code. It's better to leave the LaTeX code within the processing instruction and resolve it as last step. 127 | 128 | ## Include as XProc library 129 | 130 | ### Get dependencies 131 | 132 | Running mml2tex requires an XProc processor, the libary store-debug.xpl and of course mml2tex. To facilitate the invocation of the XProc pipeline, we recommend to use our patched calabash-frontend. You can checkout the repositories with Git or SVN. 133 | 134 | #### Git 135 | 136 | ``` 137 | $ git clone https://github.com/transpect/calabash-frontend calabash --recursive 138 | $ git clone https://github.com/transpect/cascade 139 | $ git clone https://github.com/transpect/mml-normalize 140 | $ git clone https://github.com/transpect/mml2tex 141 | $ git clone https://github.com/transpect/xproc-util 142 | $ git clone https://github.com/transpect/xslt-util 143 | ``` 144 | 145 | #### SVN 146 | 147 | ``` 148 | $ svn co https://github.com/transpect/calabash-frontend/trunk calabash 149 | $ svn co https://github.com/transpect/cascade/trunk cascade 150 | $ svn co https://github.com/transpect/mml-normalize/trunk mml-normalize 151 | $ svn co https://github.com/transpect/mml2tex/trunk mml2tex 152 | $ svn co https://github.com/transpect/xproc-util/trunk xproc-util 153 | $ svn co https://github.com/transpect/xslt-util-util/trunk xslt-util 154 | ``` 155 | 156 | ### Create an XML catalog 157 | 158 | As a convention, our calabash frontend looks after an XML catalog file under `xmlcatalog/catalog.xml`. Therefore you have to create the directory and the file. 159 | ``` 160 | $ mkdir xmlcatalog 161 | $ touch xmlcatalog/catalog.xml 162 | ``` 163 | The catalog is necessary to resolve canonical URIs in import statements, such as `http://transpect.io/mml2tex/xpl/mml2tex.xpl`. Therefore, you have to edit the file `catalog.xml` and add appropriate `rewriteURI` statements for your dependencies. 164 | 165 | ```xml 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | ``` 177 | 178 | ### Include mml2tex in your XProc pipeline 179 | 180 | The step `mml2tex:convert` facilitates the use of the mml2tex library in your XProc pipeline. As prerequisites, you must add the namespace `http://transpect.io/mml2tex` and a `p:import` statement. A sample `test.xpl` may look like this: 181 | 182 | ```xml 183 | 184 | 188 | 189 | 190 | 191 |
192 | Area enclosed by a circle 193 | 194 | A=πr2 195 | 196 |
197 |
198 |
199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 |
214 | ``` 215 | ### Run the pipeline 216 | 217 | We provide frontend scripts for XML Calabash which look after the XML catalogs, make some paths suitable for XProc and add some Java libraries to the class path. There is a Bash script for Unix-like operating systems as well as an Batch file for Windows. You can find them in the calabash directory. 218 | ``` 219 | $ ./calabash/calabash.sh test.xpl 220 | ``` 221 | 222 | ### Alternative XSLT-only invocation for KaTeX-compatible output 223 | 224 | ``` 225 | $ saxon/saxon.sh -xsl:mml2tex/xsl/katexify.xsl -s:mml2tex/example/katexify-example.xml -im:mathml2tex 226 | ``` 227 | Assumptions: A Saxon front-end script is present in the current (project) directory, for example by 228 | 229 | ``` 230 | $ svn co https://subversion.le-tex.de/common/saxon-pe98/ saxon 231 | ``` 232 | 233 | And the additional transpect libraries xslt-util, xproc-util, cascade, and normalize-mml are present 234 | (all from https://github.com/transpect/[library]) in the project directory, see above. 235 | 236 | And there is an xmlcatalog/catalog.xml that imports the library catalogs using `nextCatalog` instructions. 237 | 238 | The Saxon front-end script will look for and use this catalog by default. 239 | 240 | Input: 241 | 242 | ```xml 243 | 244 | Γ 245 | = 246 | π 247 | 248 | 249 | r 250 | 251 | 252 | 2 253 | 254 | 255 | 256 | ``` 257 | 258 | Output: 259 | 260 | `\Gamma = \pi r ^{2}` 261 | -------------------------------------------------------------------------------- /xsl/katexify.xsl: -------------------------------------------------------------------------------- 1 | 2 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 40 | 44 | 45 | 46 | 47 | 51 | 52 | 53 | 54 | 55 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 68 | 69 | 70 | 71 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 125 | 126 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | \htmlClass{override- 178 | 179 | }{\text{ 180 | 181 | }} 182 | 183 | 184 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | \tag{ 204 | 205 | } 206 | 207 | 208 | 209 | \text{[cedil]} 210 | 211 | 212 | 213 | 214 | 216 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | -------------------------------------------------------------------------------- /xsl/operators.xsl: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 1140 | 1141 | 1142 | 1143 | 1144 | 1145 | 1146 | 1147 | 1150 | 1151 | 1152 | 1153 | -------------------------------------------------------------------------------- /xsl/mml2tex.xsl: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 42 | 43 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 83 | 84 | 85 | 86 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 114 | 115 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | \textstyle 152 | 153 | 154 | \displaystyle 155 | 156 | 157 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 228 | & 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | \newline 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | / 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 364 | 365 | 366 | 367 | { 368 | 369 | }{ 370 | 371 | } 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | {}^{ 390 | 391 | 392 | }_{ 393 | 394 | }{ 395 | 396 | 397 | }{ 398 | 399 | }^{ 400 | 401 | 402 | 403 | }_{ 404 | 405 | } 406 | 407 | 408 | 409 | 413 | 414 | \tensor*[ 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | ]{ 423 | 424 | }{ 425 | 426 | 427 | 428 | 429 | 430 | 431 | } 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | ^{ 440 | 441 | } 442 | 443 | 444 | _{ 445 | 446 | } 447 | 448 | 449 | 450 | 451 | 452 | \sqrt{ 453 | 454 | } 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | \sqrt 463 | 464 | 465 | [ 466 | 467 | ] 468 | 469 | 470 | { 471 | 472 | } 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | { 481 | 482 | 483 | { 484 | 485 | 486 | 492 | 493 | 494 | 495 | 496 | 497 | } 498 | } 499 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 | 510 | 511 | 512 | 513 | 530 | 531 | 533 | 534 | 536 | 537 | 538 | 539 | 540 | 541 | { 542 | 543 | 544 | 545 | 546 | { 547 | 548 | 549 | 550 | } 551 | 552 | 553 | \limits 554 | 555 | _{ 556 | 557 | }^{ 558 | 559 | 560 | 566 | 567 | 568 | 569 | 570 | 571 | } 572 | } 573 | 574 | 575 | 576 | 577 | 578 | 580 | 585 | \begin{array}{ 586 | 587 | 588 | 589 | 590 | 591 | : 592 | 593 | 594 | | 595 | 596 | 597 | 598 | 599 | } 600 | 601 | 602 | \end{array} 603 | 604 | 605 | 606 | 607 | 610 | 611 | 612 | 613 | 614 | 616 | 617 | 618 | \\ 619 | 620 | 621 | 622 | 623 | 624 | 625 | \hline 626 | 627 | 628 | 629 | \hdashline 630 | 631 | 632 | 633 | \hdashline[.4pt/1pt] 634 | 635 | 636 | 637 | 638 | 639 | 640 | 641 | 642 | & 643 | 644 | 645 | 646 | 647 | \multicolumn{ 648 | 649 | }{ 650 | 651 | }{ 652 | 653 | } 654 | 655 | & 656 | 657 | 658 | 659 | 672 | 673 | 674 | 675 | 676 | 677 | 678 | 679 | 680 | 681 | 682 | 683 | 684 | 685 | 686 | 687 | 688 | 689 | 690 | 694 | 695 | 696 | 697 | 698 | 699 | 700 | 701 | 702 | \text{\c 703 | 704 | 705 | } 706 | 707 | 708 | \hat 709 | 710 | 711 | \check 712 | 713 | 714 | \overbrace 715 | 716 | 717 | \underbrace 718 | 719 | 720 | \overbracket 721 | 722 | 723 | \underbracket 724 | 725 | 726 | \text{\H 727 | 728 | 729 | } 730 | 731 | 732 | \widehat 733 | 734 | 735 | \hat 736 | 737 | 738 | \widetilde 739 | 740 | 741 | \tilde 742 | 743 | 744 | \dot 745 | 746 | 747 | \ddot 748 | 749 | 750 | \dddot 751 | 752 | 753 | \ddddot 754 | 755 | 756 | \grave 757 | 758 | 759 | \acute 760 | 761 | 762 | \breve 763 | 764 | 765 | \mathring 766 | 767 | 768 | \overline 769 | 770 | 771 | \overline{\overline 772 | 773 | 774 | } 775 | 776 | 777 | \underline 778 | 779 | 780 | 781 | 782 | 783 | \overset{ 784 | 785 | } 786 | 787 | 788 | \underset{ 789 | 790 | } 791 | 792 | 793 | \xleftarrow 794 | 795 | 796 | \xrightarrow 797 | 798 | 801 | [ 802 | 803 | ] 804 | 805 | 807 | {} 808 | 809 | 810 | \vec 811 | 812 | 814 | \overrightarrow 815 | 816 | 818 | \underrightarrow 819 | 820 | 822 | \overleftarrow 823 | 824 | 826 | \underleftarrow 827 | 828 | 830 | \overleftrightarrow 831 | 832 | 834 | \underleftrightarrow 835 | 836 | 837 | \xleftrightarrow 838 | 839 | 840 | \xLeftarrow 841 | 842 | 843 | \xRightarrow 844 | 845 | 846 | \xLeftrightarrow 847 | 848 | 849 | \xleftharpoonup 850 | 851 | 852 | \xrightharpoonup 853 | 854 | 855 | \xleftrightharpoons 856 | 857 | 858 | \xrightleftharpoons 859 | 860 | 861 | 862 | 863 | 864 | 865 | 866 | 867 | 868 | 869 | 870 | 871 | 872 | 873 | 874 | 875 | \overset{ 876 | 877 | }{\underset{ 878 | 879 | }{ 880 | 881 | }} 882 | 883 | 884 | 886 | 887 | 888 | 889 | 890 | 891 | \limits 892 | 893 | 894 | } 895 | 896 | 897 | 903 | 904 | 907 | \begin{cases} 908 | 909 | 912 | \end{cases} 913 | 914 | 917 | 918 | 919 | 920 | 921 | 923 | \binom{ 924 | 925 | }{ 926 | 927 | } 928 | 929 | 930 | 931 | 932 | 933 | 934 | 935 | 936 | 941 | 942 | 943 | 944 | 945 | 946 | 947 | 948 | 949 | 950 | 951 | 952 | 953 | 954 | 955 | 956 | 957 | 958 | 959 | 960 | 961 | 962 | 963 | 964 | 965 | 966 | 967 | 968 | 969 | 970 | 971 | 972 | 973 | 974 | 975 | 976 | 982 | 983 | 984 | 985 | 986 | 987 | 988 | 994 | \begin{matrix} 995 | 996 | \end{matrix} 997 | 998 | 999 | 1001 | 1002 | 1003 | 1004 | 1005 | 1006 | 1007 | 1014 | 1015 | 1016 | 1017 | 1018 | 1019 | 1020 | 1021 | 1022 | 1023 | 1028 | 1029 | 1030 | 1031 | 1032 | 1033 | 1034 | 1035 | 1036 | 1037 | 1038 | 1039 | 1042 | 1043 | 1044 | 1045 | 1046 | 1047 | 1048 | 1049 | 1050 | 1051 | 1052 | 1053 | 1055 | 1056 | 1057 | 1058 | 1065 | 1066 | 1070 | 1072 | 1073 | 1074 | 1078 | 1079 | 1080 | 1082 | 1083 | 1084 | 1085 | 1086 | 1087 | 1088 | 1089 | 1090 | 1091 | 1092 | 1093 | 1094 | 1095 | 1096 | 1097 | 1098 | 1099 | 1100 | 1101 | 1102 | 1103 | 1104 | 1105 | 1106 | 1107 | 1108 | 1109 | 1110 | 1111 | 1112 | 1113 | 1114 | 1115 | 1116 | 1117 | 1118 | 1119 | 1120 | 1121 | 1122 | 1123 | 1124 | 1125 | 1126 | 1127 | 1128 | 1129 | 1130 | 1131 | 1132 | 1133 | 1134 | 1135 | 1136 | 1137 | 1138 | 1139 | 1140 | 1141 | 1142 | 1143 | 1144 | 1145 | 1146 | 1147 | 1148 | 1149 | 1150 | 1152 | 1153 | 1154 | 1157 | 1158 | 1159 | 1161 | 1162 | 1165 | 1166 | 1167 | 1168 | 1171 | 1172 | 1176 | 1177 | 1178 | 1179 | \text{ 1180 | 1181 | } 1182 | 1183 | 1188 | 1189 | 1190 | 1191 | \text{ 1192 | 1193 | } 1194 | 1195 | 1196 | 1197 | 1198 | 1201 | 1202 | 1203 | 1207 | 1208 | 1209 | 1210 | 1211 | 1212 | 1213 | 1214 | 1215 | 1216 | 1217 | 1218 | 1219 | 1221 | 1226 | 1227 | 1231 | 1232 | 1233 | 1234 | [WARNING]: mglyph () 1235 | 1236 | 1237 | 1238 | 1239 | 1240 | 1243 | 1244 | 1250 | 1251 | } 1252 | 1253 | 1254 | 1255 | 1256 | 1257 | 1258 | 1259 | 1260 | 1261 | 1262 | 1263 | 1264 | 1265 | 1266 | 1267 | 1270 | 1271 | 1272 | 1273 | 1274 | 1276 | 1277 | 1278 | 1279 | 1280 | 1287 | 1291 | 1294 | 1301 | 1302 | 1303 | 1304 | 1306 | 1307 | 1308 | 1309 | 1310 | 1311 | 1312 | 1313 | 1321 | 1322 | 1323 | 1324 | 1325 | 1327 | 1328 | 1329 | 1330 | 1331 | 1333 | 1334 | 1335 | 1336 | --------------------------------------------------------------------------------