diff options
112 files changed, 1462 insertions, 1016 deletions
diff --git a/doc/context/documents/general/manuals/details.pdf b/doc/context/documents/general/manuals/details.pdf Binary files differindex b99ae19a9..d607714d1 100644 --- a/doc/context/documents/general/manuals/details.pdf +++ b/doc/context/documents/general/manuals/details.pdf diff --git a/doc/context/documents/general/manuals/luatex.pdf b/doc/context/documents/general/manuals/luatex.pdf Binary files differindex e1c592dc8..691ec0b37 100644 --- a/doc/context/documents/general/manuals/luatex.pdf +++ b/doc/context/documents/general/manuals/luatex.pdf diff --git a/doc/context/documents/general/manuals/mkiv-publications.pdf b/doc/context/documents/general/manuals/mkiv-publications.pdf Binary files differindex 22e9f4ccf..1f1d7fcd5 100644 --- a/doc/context/documents/general/manuals/mkiv-publications.pdf +++ b/doc/context/documents/general/manuals/mkiv-publications.pdf diff --git a/doc/context/documents/general/qrcs/setup-cs.pdf b/doc/context/documents/general/qrcs/setup-cs.pdf Binary files differindex 49afa30e7..e993f1544 100644 --- a/doc/context/documents/general/qrcs/setup-cs.pdf +++ b/doc/context/documents/general/qrcs/setup-cs.pdf diff --git a/doc/context/documents/general/qrcs/setup-de.pdf b/doc/context/documents/general/qrcs/setup-de.pdf Binary files differindex 05acbe68a..eea03e492 100644 --- a/doc/context/documents/general/qrcs/setup-de.pdf +++ b/doc/context/documents/general/qrcs/setup-de.pdf diff --git a/doc/context/documents/general/qrcs/setup-en.pdf b/doc/context/documents/general/qrcs/setup-en.pdf Binary files differindex bf72c9fcc..5c441b1f7 100644 --- a/doc/context/documents/general/qrcs/setup-en.pdf +++ b/doc/context/documents/general/qrcs/setup-en.pdf diff --git a/doc/context/documents/general/qrcs/setup-fr.pdf b/doc/context/documents/general/qrcs/setup-fr.pdf Binary files differindex f5ca50d89..32b81870e 100644 --- a/doc/context/documents/general/qrcs/setup-fr.pdf +++ b/doc/context/documents/general/qrcs/setup-fr.pdf diff --git a/doc/context/documents/general/qrcs/setup-it.pdf b/doc/context/documents/general/qrcs/setup-it.pdf Binary files differindex 7bae220c5..1ef4327d8 100644 --- a/doc/context/documents/general/qrcs/setup-it.pdf +++ b/doc/context/documents/general/qrcs/setup-it.pdf diff --git a/doc/context/documents/general/qrcs/setup-nl.pdf b/doc/context/documents/general/qrcs/setup-nl.pdf Binary files differindex 77066eb39..e574aa5dd 100644 --- a/doc/context/documents/general/qrcs/setup-nl.pdf +++ b/doc/context/documents/general/qrcs/setup-nl.pdf diff --git a/doc/context/documents/general/qrcs/setup-ro.pdf b/doc/context/documents/general/qrcs/setup-ro.pdf Binary files differindex 1e3add650..465711bd9 100644 --- a/doc/context/documents/general/qrcs/setup-ro.pdf +++ b/doc/context/documents/general/qrcs/setup-ro.pdf diff --git a/doc/context/scripts/mkii/ctxtools.html b/doc/context/scripts/mkii/ctxtools.html index 405965c1e..06acff7e0 100644 --- a/doc/context/scripts/mkii/ctxtools.html +++ b/doc/context/scripts/mkii/ctxtools.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">CtxTools 1.3.5 </div> </div> </div> @@ -60,5 +60,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkii/imgtopdf.html b/doc/context/scripts/mkii/imgtopdf.html index ec75e4886..acf645981 100644 --- a/doc/context/scripts/mkii/imgtopdf.html +++ b/doc/context/scripts/mkii/imgtopdf.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">ImgToPdf 1.1.2 </div> </div> </div> @@ -51,5 +51,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkii/mptopdf.html b/doc/context/scripts/mkii/mptopdf.html index 24f1325dd..9781a51f3 100644 --- a/doc/context/scripts/mkii/mptopdf.html +++ b/doc/context/scripts/mkii/mptopdf.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">MPtoPDF 1.4.1 </div> </div> </div> @@ -46,5 +46,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkii/pdftools.html b/doc/context/scripts/mkii/pdftools.html index 94b5f1a2a..7c1474258 100644 --- a/doc/context/scripts/mkii/pdftools.html +++ b/doc/context/scripts/mkii/pdftools.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">PDFTools 1.2.1 </div> </div> </div> @@ -51,5 +51,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkii/pstopdf.html b/doc/context/scripts/mkii/pstopdf.html index 9b8f50762..4470e6176 100644 --- a/doc/context/scripts/mkii/pstopdf.html +++ b/doc/context/scripts/mkii/pstopdf.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">PStoPDF 2.0.1 </div> </div> </div> @@ -45,5 +45,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkii/rlxtools.html b/doc/context/scripts/mkii/rlxtools.html index 5aeffa129..6af4c5954 100644 --- a/doc/context/scripts/mkii/rlxtools.html +++ b/doc/context/scripts/mkii/rlxtools.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">RlxTools 1.0.1 </div> </div> </div> @@ -45,5 +45,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkii/texexec.html b/doc/context/scripts/mkii/texexec.html index 8a3a60abd..5f775068c 100644 --- a/doc/context/scripts/mkii/texexec.html +++ b/doc/context/scripts/mkii/texexec.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">TeXExec 6.2.1 </div> </div> </div> @@ -59,5 +59,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkii/texmfstart.html b/doc/context/scripts/mkii/texmfstart.html index 9a86eeee3..6e1f7f618 100644 --- a/doc/context/scripts/mkii/texmfstart.html +++ b/doc/context/scripts/mkii/texmfstart.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">texmfstart 7.0.0 </div> </div> </div> @@ -99,5 +99,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkii/textools.html b/doc/context/scripts/mkii/textools.html index 397de9d8b..9bd9ac5c9 100644 --- a/doc/context/scripts/mkii/textools.html +++ b/doc/context/scripts/mkii/textools.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">TeXTools 1.3.1 </div> </div> </div> @@ -59,5 +59,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkii/texutil.html b/doc/context/scripts/mkii/texutil.html index b5974ab99..4dd23fa3a 100644 --- a/doc/context/scripts/mkii/texutil.html +++ b/doc/context/scripts/mkii/texutil.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">TeXUtil 9.1.0 </div> </div> </div> @@ -50,5 +50,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkii/tmftools.html b/doc/context/scripts/mkii/tmftools.html index 1e13062b9..17a182896 100644 --- a/doc/context/scripts/mkii/tmftools.html +++ b/doc/context/scripts/mkii/tmftools.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">TMFTools 1.2.1 </div> </div> </div> @@ -46,5 +46,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkii/xmltools.html b/doc/context/scripts/mkii/xmltools.html index fcb27aaf4..d6733ae7a 100644 --- a/doc/context/scripts/mkii/xmltools.html +++ b/doc/context/scripts/mkii/xmltools.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">XMLTools 1.2.1 </div> </div> </div> @@ -50,5 +50,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/context.html b/doc/context/scripts/mkiv/context.html index c63c81132..199277b4e 100644 --- a/doc/context/scripts/mkiv/context.html +++ b/doc/context/scripts/mkiv/context.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">ConTeXt Process Management 1.01 </div> </div> </div> @@ -118,5 +118,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/luatools.html b/doc/context/scripts/mkiv/luatools.html index 5ec428efd..af51be9d1 100644 --- a/doc/context/scripts/mkiv/luatools.html +++ b/doc/context/scripts/mkiv/luatools.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">luatools 1.35 </div> </div> </div> @@ -61,5 +61,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-babel.html b/doc/context/scripts/mkiv/mtx-babel.html index 97f891516..bc92dc27f 100644 --- a/doc/context/scripts/mkiv/mtx-babel.html +++ b/doc/context/scripts/mkiv/mtx-babel.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">Babel Input To UTF Conversion 1.20 </div> </div> </div> @@ -46,5 +46,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-base.html b/doc/context/scripts/mkiv/mtx-base.html index 7eceb57fc..19b06162a 100644 --- a/doc/context/scripts/mkiv/mtx-base.html +++ b/doc/context/scripts/mkiv/mtx-base.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">ConTeXt TDS Management Tool (aka luatools) 1.35 </div> </div> </div> @@ -61,5 +61,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-bibtex.html b/doc/context/scripts/mkiv/mtx-bibtex.html index a70c88483..33924a883 100644 --- a/doc/context/scripts/mkiv/mtx-bibtex.html +++ b/doc/context/scripts/mkiv/mtx-bibtex.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">bibtex helpers </div> </div> </div> @@ -51,5 +51,5 @@ <br/><tt>mtxrun --script bibtex --search --list --pattern=match(author:foo) bar.bib</tt> <br/><br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-cache.html b/doc/context/scripts/mkiv/mtx-cache.html index e69a73977..475095eb4 100644 --- a/doc/context/scripts/mkiv/mtx-cache.html +++ b/doc/context/scripts/mkiv/mtx-cache.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">ConTeXt & MetaTeX Cache Management 0.10 </div> </div> </div> @@ -48,5 +48,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-chars.html b/doc/context/scripts/mkiv/mtx-chars.html index 0cc3840e6..b92a3f267 100644 --- a/doc/context/scripts/mkiv/mtx-chars.html +++ b/doc/context/scripts/mkiv/mtx-chars.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">MkII Character Table Generators 0.10 </div> </div> </div> @@ -46,5 +46,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-check.html b/doc/context/scripts/mkiv/mtx-check.html index df50c7288..f64afe35c 100644 --- a/doc/context/scripts/mkiv/mtx-check.html +++ b/doc/context/scripts/mkiv/mtx-check.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">Basic ConTeXt Syntax Checking 0.10 </div> </div> </div> @@ -44,5 +44,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-colors.html b/doc/context/scripts/mkiv/mtx-colors.html index f9b05c74c..91c088eef 100644 --- a/doc/context/scripts/mkiv/mtx-colors.html +++ b/doc/context/scripts/mkiv/mtx-colors.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">ConTeXt Color Management 0.10 </div> </div> </div> @@ -46,5 +46,5 @@ <tt>mtxrun --script color --table somename</tt> <br/><br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-context.html b/doc/context/scripts/mkiv/mtx-context.html index c63c81132..199277b4e 100644 --- a/doc/context/scripts/mkiv/mtx-context.html +++ b/doc/context/scripts/mkiv/mtx-context.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">ConTeXt Process Management 1.01 </div> </div> </div> @@ -118,5 +118,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-dvi.html b/doc/context/scripts/mkiv/mtx-dvi.html index e83c43748..a763189f3 100644 --- a/doc/context/scripts/mkiv/mtx-dvi.html +++ b/doc/context/scripts/mkiv/mtx-dvi.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">ConTeXt DVI Helpers 0.10 </div> </div> </div> @@ -44,5 +44,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-epub.html b/doc/context/scripts/mkiv/mtx-epub.html index 1a92a794a..efd8ad704 100644 --- a/doc/context/scripts/mkiv/mtx-epub.html +++ b/doc/context/scripts/mkiv/mtx-epub.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">ConTeXt EPUB Helpers 1.10 </div> </div> </div> @@ -51,5 +51,5 @@ <tt>mtxrun --script epub --make mydocument</tt> <br/><br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-fcd.html b/doc/context/scripts/mkiv/mtx-fcd.html index ec928f79d..5b8f44761 100644 --- a/doc/context/scripts/mkiv/mtx-fcd.html +++ b/doc/context/scripts/mkiv/mtx-fcd.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">Fast Directory Change 1.00 </div> </div> </div> @@ -58,5 +58,5 @@ <br/><tt>fcd --list</tt> <br/><br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-flac.html b/doc/context/scripts/mkiv/mtx-flac.html index c4fb4efc4..fd3323477 100644 --- a/doc/context/scripts/mkiv/mtx-flac.html +++ b/doc/context/scripts/mkiv/mtx-flac.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">ConTeXt Flac Helpers 0.10 </div> </div> </div> @@ -48,5 +48,5 @@ <br/><tt>mtxrun --script flac --collect --pattern="m:/music/**")</tt> <br/><br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-fonts.html b/doc/context/scripts/mkiv/mtx-fonts.html index 80c5d04b4..b175139c8 100644 --- a/doc/context/scripts/mkiv/mtx-fonts.html +++ b/doc/context/scripts/mkiv/mtx-fonts.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">ConTeXt Font Database Management 0.21 </div> </div> </div> @@ -77,5 +77,5 @@ <br/><tt>mtxrun --script font --convert --names texgyrepagella-regular.otf</tt> <br/><br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-grep.html b/doc/context/scripts/mkiv/mtx-grep.html index 184ca0df3..10df98cf4 100644 --- a/doc/context/scripts/mkiv/mtx-grep.html +++ b/doc/context/scripts/mkiv/mtx-grep.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">Simple Grepper 0.10 </div> </div> </div> @@ -57,5 +57,5 @@ <br/><tt>mtxrun --script grep --pattern=module --n=10 *.mkiv</tt> <br/><br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-interface.html b/doc/context/scripts/mkiv/mtx-interface.html index 045dea546..a4c86a5a7 100644 --- a/doc/context/scripts/mkiv/mtx-interface.html +++ b/doc/context/scripts/mkiv/mtx-interface.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">ConTeXt Interface Related Goodies 0.13 </div> </div> </div> @@ -60,5 +60,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-metapost.html b/doc/context/scripts/mkiv/mtx-metapost.html index 793a411b9..0c0ccef47 100644 --- a/doc/context/scripts/mkiv/mtx-metapost.html +++ b/doc/context/scripts/mkiv/mtx-metapost.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">MetaPost to PDF processor 0.10 </div> </div> </div> @@ -52,5 +52,5 @@ <br/><tt>mtxrun --script metapost yourfile.123 myfile.mps</tt> <br/><br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-metatex.html b/doc/context/scripts/mkiv/mtx-metatex.html index 0bdc78987..18866c0d0 100644 --- a/doc/context/scripts/mkiv/mtx-metatex.html +++ b/doc/context/scripts/mkiv/mtx-metatex.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">MetaTeX Process Management 0.10 </div> </div> </div> @@ -45,5 +45,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-modules.html b/doc/context/scripts/mkiv/mtx-modules.html index 8278c1aca..5bbed809e 100644 --- a/doc/context/scripts/mkiv/mtx-modules.html +++ b/doc/context/scripts/mkiv/mtx-modules.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">ConTeXt Module Documentation Generators 1.00 </div> </div> </div> @@ -46,5 +46,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-package.html b/doc/context/scripts/mkiv/mtx-package.html index 3ebf5c5be..e2682a8c6 100644 --- a/doc/context/scripts/mkiv/mtx-package.html +++ b/doc/context/scripts/mkiv/mtx-package.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">Distribution Related Goodies 0.10 </div> </div> </div> @@ -44,5 +44,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-patterns.html b/doc/context/scripts/mkiv/mtx-patterns.html index 8aa378298..7d5da995d 100644 --- a/doc/context/scripts/mkiv/mtx-patterns.html +++ b/doc/context/scripts/mkiv/mtx-patterns.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">ConTeXt Pattern File Management 0.20 </div> </div> </div> @@ -57,5 +57,5 @@ <br/><tt>mtxrun --script pattern --hyphenate --language=nl --left=3 nogalwiedes inderdaad</tt> <br/><br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-pdf.html b/doc/context/scripts/mkiv/mtx-pdf.html index e2961d94d..b156c154e 100644 --- a/doc/context/scripts/mkiv/mtx-pdf.html +++ b/doc/context/scripts/mkiv/mtx-pdf.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">ConTeXt PDF Helpers 0.10 </div> </div> </div> @@ -47,5 +47,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-plain.html b/doc/context/scripts/mkiv/mtx-plain.html index 2ceda35e7..e634dfe36 100644 --- a/doc/context/scripts/mkiv/mtx-plain.html +++ b/doc/context/scripts/mkiv/mtx-plain.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">Plain TeX Runner 1.00 </div> </div> </div> @@ -49,5 +49,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-profile.html b/doc/context/scripts/mkiv/mtx-profile.html index 50ac0c42e..e049d3417 100644 --- a/doc/context/scripts/mkiv/mtx-profile.html +++ b/doc/context/scripts/mkiv/mtx-profile.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">ConTeXt MkIV LuaTeX Profiler 1.00 </div> </div> </div> @@ -45,5 +45,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-rsync.html b/doc/context/scripts/mkiv/mtx-rsync.html index 5a55fcbe5..c760fcba6 100644 --- a/doc/context/scripts/mkiv/mtx-rsync.html +++ b/doc/context/scripts/mkiv/mtx-rsync.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">Rsync Helpers 0.10 </div> </div> </div> @@ -46,5 +46,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-scite.html b/doc/context/scripts/mkiv/mtx-scite.html index 3b540fa81..497098f9e 100644 --- a/doc/context/scripts/mkiv/mtx-scite.html +++ b/doc/context/scripts/mkiv/mtx-scite.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">Scite Helper Script 1.00 </div> </div> </div> @@ -46,5 +46,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-server.html b/doc/context/scripts/mkiv/mtx-server.html index 01cf1cdf7..733bc3d49 100644 --- a/doc/context/scripts/mkiv/mtx-server.html +++ b/doc/context/scripts/mkiv/mtx-server.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">Simple Webserver For Helpers 0.10 </div> </div> </div> @@ -49,5 +49,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-texworks.html b/doc/context/scripts/mkiv/mtx-texworks.html index 5de6a748f..677420926 100644 --- a/doc/context/scripts/mkiv/mtx-texworks.html +++ b/doc/context/scripts/mkiv/mtx-texworks.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">TeXworks Startup Script 1.00 </div> </div> </div> @@ -45,5 +45,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-timing.html b/doc/context/scripts/mkiv/mtx-timing.html index 1da0e6439..54598c8ca 100644 --- a/doc/context/scripts/mkiv/mtx-timing.html +++ b/doc/context/scripts/mkiv/mtx-timing.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">ConTeXt Timing Tools 0.10 </div> </div> </div> @@ -46,5 +46,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-tools.html b/doc/context/scripts/mkiv/mtx-tools.html index 0cb6d6de3..012320794 100644 --- a/doc/context/scripts/mkiv/mtx-tools.html +++ b/doc/context/scripts/mkiv/mtx-tools.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">Some File Related Goodies 1.01 </div> </div> </div> @@ -59,5 +59,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-unicode.html b/doc/context/scripts/mkiv/mtx-unicode.html index 6c0729e0e..9302e26de 100644 --- a/doc/context/scripts/mkiv/mtx-unicode.html +++ b/doc/context/scripts/mkiv/mtx-unicode.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">Checker for char-def.lua 1.02 </div> </div> </div> @@ -44,5 +44,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-unzip.html b/doc/context/scripts/mkiv/mtx-unzip.html index 885599f8f..655c1be8d 100644 --- a/doc/context/scripts/mkiv/mtx-unzip.html +++ b/doc/context/scripts/mkiv/mtx-unzip.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">Simple Unzipper 0.10 </div> </div> </div> @@ -46,5 +46,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-update.html b/doc/context/scripts/mkiv/mtx-update.html index 577453246..58595f0d8 100644 --- a/doc/context/scripts/mkiv/mtx-update.html +++ b/doc/context/scripts/mkiv/mtx-update.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">ConTeXt Minimals Updater 1.02 </div> </div> </div> @@ -62,5 +62,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-watch.html b/doc/context/scripts/mkiv/mtx-watch.html index 1f0e49bb4..cb24b18d6 100644 --- a/doc/context/scripts/mkiv/mtx-watch.html +++ b/doc/context/scripts/mkiv/mtx-watch.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">ConTeXt Request Watchdog 1.00 </div> </div> </div> @@ -51,5 +51,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-youless.html b/doc/context/scripts/mkiv/mtx-youless.html index 6edb3fee6..726403371 100644 --- a/doc/context/scripts/mkiv/mtx-youless.html +++ b/doc/context/scripts/mkiv/mtx-youless.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">YouLess Fetcher 1.00 </div> </div> </div> @@ -52,5 +52,5 @@ <br/><tt>mtxrun --script youless --collect --host=192.168.2.50 --watt somefile.lua</tt> <br/><br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtxrun.html b/doc/context/scripts/mkiv/mtxrun.html index 8b6155041..3df54da6e 100644 --- a/doc/context/scripts/mkiv/mtxrun.html +++ b/doc/context/scripts/mkiv/mtxrun.html @@ -21,9 +21,9 @@ </style> <style type="text/css"> </style> - </head> - <body> - <div id="top"> <div id="top-one"> + </head> + <body> + <div id="top"> <div id="top-one"> <div id="top-two">ConTeXt TDS Runner Tool 1.32 </div> </div> </div> @@ -99,5 +99,5 @@ <br/> </div> </div> - </body> - </html> + </body> +</html> diff --git a/doc/context/sources/general/manuals/details/details-floatingaround.tex b/doc/context/sources/general/manuals/details/details-floatingaround.tex index 11fe0601c..719819fb6 100644 --- a/doc/context/sources/general/manuals/details/details-floatingaround.tex +++ b/doc/context/sources/general/manuals/details/details-floatingaround.tex @@ -1132,6 +1132,169 @@ The black rules are set up with: \setupbackgrounds [text] [leftmargin] [background=] \setupbackgrounds [text] [rightmargin] [background=] +We will now demonstrate some features in a way that makes it possible to +compare to the simple default case. Options can be passed as keywords: + +\starttyping +\placefigure + [left,...] + [fig:whatever] + {caption} + {content} +\stoptyping + +or as settings: + +\starttyping +\startplacefigure + [default={left,...}, + title=caption, + reference=fig:whatever] + + content + +\stopplacefigure +\stoptyping + +It is important to realize that all that spacing can interfere with additional +hard coded corrections at the users end. We don't show the effects of \type +{sidespacebefore} and \type {sidespaceafter}, the two general vertical spacing +hooks. These are currently set to {\tttf \rootfloatparameter {sidespacebefore}} +and {\tttf \rootfloatparameter {sidespaceafter}} respectively. The \type +{sidealign} parameter is always winning from a keyword doing the same. + +The last few examples demonstrate that you can define an instance. Often that's +the best way to deal with special cases in a consistent way. For instance: + +\starttyping +\definefloat + [LeftTwo] + [figure] + +\setupfloat + [LeftTwo] + [default=left, + sidealign=line] +\stoptyping + +First we show some keyword variant, next some parameter driven versions. + +\def\SampleKeyword#1% + {\setbuffer[foo] + \useMPlibrary[dum] + \setupbodyfont[dejavu] + \setuplayout[page] + \placefigure[left]{}{\externalfigure[dummy]} \samplefile{sapolsky} \samplefile{sapolsky} + \placefigure[#1] {}{\externalfigure[dummy]} \samplefile{sapolsky} \samplefile{sapolsky} + \endbuffer + \framed + [background=color,backgroundcolor=white] + {\scale + [width=.45\textwidth] + {\typesetbuffer[foo]}}} + +\def\SampleSettings#1#2#3% + {\setbuffer[foo] + \useMPlibrary[dum] + \setupbodyfont[dejavu] + \setuplayout[page] + \definefloat[#1][figure] + \setupfloat[#1][default=left] + \definefloat[#2][figure] + \setupfloat[#2][#3] + \startplacefloat[#1] \externalfigure[dummy] \stopplacefloat \samplefile{sapolsky} \samplefile{sapolsky} + \startplacefloat[#2] \externalfigure[dummy] \stopplacefloat \samplefile{sapolsky} \samplefile{sapolsky} + \endbuffer + \framed + [background=color,backgroundcolor=white] + {\scale + [width=.45\textwidth] + {\typesetbuffer[foo]}}} + +\startbuffer[LeftOne] +\definefloat[LeftOne][figure] + +\setupfloat + [LeftOne] + [default=left] +\stopbuffer + +\startbuffer[LeftTwo] +\definefloat[LeftTwo][figure] + +\setupfloat + [LeftTwo] + [default=left, + sidealign=line] +\stopbuffer + +\startbuffer[LeftThree] +\definefloat[LeftThree][figure] + +\setupfloat + [LeftThree] + [default={left,2*line}] +\stopbuffer + +\startbuffer[LeftFour] +\definefloat[LeftFour][figure] + +\setupfloat + [LeftFour] + [default={left}, + topoffset=5pt] +\stopbuffer + +\startbuffer[LeftFive] +\definefloat[LeftFive][figure] + +\setupfloat + [LeftFive] + [default={left}, + bottomoffset=5pt, + topoffset=5pt] +\stopbuffer + +\startlinecorrection +\startcombination[2*2] + {\SampleKeyword{left,high}} {\type{left,high}} + {\SampleKeyword{left,low}} {\type{left,low}} + {\SampleKeyword{left,high,low}} {\type{left,high,low}} + {\SampleKeyword{left,fit}} {\type{left,fit}} +\stopcombination +\stoplinecorrection + +\startlinecorrection +\startcombination[2*2] + {\SampleKeyword{left,halfline}} {\type{left,halfline}} + {\SampleKeyword{left,height}} {\type{left,height}} + {\SampleKeyword{left,depth}} {\type{left,depth}} + {\SampleKeyword{left,grid}} {\type{left,grid}} +\stopcombination +\stoplinecorrection + +\startlinecorrection +\startcombination[2*2] + {\SampleKeyword{left,line}} {\type{left,line}} + {\SampleKeyword{left,1*line}} {\type{left,1*line}} + {\SampleKeyword{left,2*line}} {\type{left,2*line}} + {\SampleKeyword{left,3*line}} {\type{left,3*line}} +\stopcombination +\stoplinecorrection + +\startlinecorrection +\startcombination[2*2] + {\SampleSettings{LeftOne}{LeftTwo} {default={left,line}}} + {\typ{default={left,line}}} + {\SampleSettings{LeftOne}{LeftThree}{default={left,2*line}}} + {\typ{default={left,2*line}}} + {\SampleSettings{LeftOne}{LeftFour} {default=left,topoffset=5pt}} + {\typ{default=left, topoffset=5pt}} + {\SampleSettings{LeftOne}{LeftFive} {default=left, topoffset=5pt, bottomoffset=5pt}} + {\typ{default=left, topoffset=5pt, bottomoffset=5pt}} +\stopcombination +\stoplinecorrection + \stopchapter \stopcomponent diff --git a/doc/context/sources/general/manuals/luatex/luatex-modifications.tex b/doc/context/sources/general/manuals/luatex/luatex-modifications.tex index 10b4fd7a4..af2c69363 100644 --- a/doc/context/sources/general/manuals/luatex/luatex-modifications.tex +++ b/doc/context/sources/general/manuals/luatex/luatex-modifications.tex @@ -1255,6 +1255,28 @@ previous code (that mostly used \type {getc} calls), it can be quite a bit faste \stopsubsection +\startsubsection[title=Tabs and spaces] + +We conform to the way other \TEX\ engines handle trailing tabs and spaces. For +decades trailing tabs and spaces (before a newline) were removed from the input +but this behaviour was changed in September 2017 to only handle spaces. We are +aware that this can introduce compatibility issues in existing workflows but +because we don't want too many differences with upstream \TEXLIVE\ we just follow +up on that patch (which is a functional one and not really a fix). It is up to +macro packages maintainers to deal with possible compatibility issues and in +\LUATEX\ they can do so via the callbacks that deal with reading from files. + +The previous behaviour was a known side effect and (as that kind of input +normally comes from generated sources) it was normally dealt with by adding a +comment token to the line in case the spaces and|/|or tabs were intentional and +to be kept. We are aware of the fact that this contradicts some of our other +choices but consistency with other engines and the fact that in \KPSE\ mode a +common file \IO\ layer is used can have a side effect of breaking compatibility. +We still stick to our view that at the log level we can (and might be) more +incompatible. + +\stopsubsection + \stopsection \stopchapter diff --git a/doc/context/sources/general/manuals/publications/publications-database.tex b/doc/context/sources/general/manuals/publications/publications-database.tex index 13663b1b5..675a28286 100644 --- a/doc/context/sources/general/manuals/publications/publications-database.tex +++ b/doc/context/sources/general/manuals/publications/publications-database.tex @@ -531,6 +531,38 @@ that these programs are not standards and many of them may introduce invalid extensions that might not even be handled correctly by \BIBTEX\ itself. \stopaside +Here is an example of a loader. Each loader takes two arguments, a dataset +identifier and a filename. The \LUA\ loader takes an extra optional argument: a +function that returns a \LUA\ table. Here we use one of the loaders present in +\CONTEXT: + +\starttyping +\startluacode + function publications.loaders.json(dataset,filename) + publications.loaders.lua(dataset,filename,utilities.json.load) + end +\stopluacode +\stoptyping + +Here is an easy way to debug your own functions: + +\starttyping +\startluacode + local function myloader(filename) + inspect(filename) -- shows the full filename used + local result = { + -- loaded entries + } + inspect(result) -- shows the loaded data + return result + end + + function publications.loaders.json(dataset,filename) + return publications.loaders.lua(dataset,filename,myloader) + end +\stopluacode +\stoptyping + \stopsection \stopchapter diff --git a/scripts/context/lua/mtx-context.lua b/scripts/context/lua/mtx-context.lua index 02d942eb0..c02b1a012 100644 --- a/scripts/context/lua/mtx-context.lua +++ b/scripts/context/lua/mtx-context.lua @@ -755,7 +755,10 @@ function scripts.context.run(ctxdata,filename) if formatfile and scriptfile then local suffix = validstring(getargument("suffix")) local resultname = validstring(getargument("result")) - if suffix then + local resultpath = file.pathpart(resultname) + if resultpath ~= "" then + resultname = nil + elseif suffix then resultname = removesuffix(jobname) .. suffix end local oldbase = "" @@ -962,6 +965,10 @@ function scripts.context.run(ctxdata,filename) result_save_keep(oldbase,newbase) end report("result renamed to: %s",newbase) + elseif resultpath ~= "" then + report() + report("results are to be on the running path, not on %a, ignoring --result",resultpath) + report() end -- -- -- needs checking diff --git a/scripts/context/lua/mtx-server-ctx-fonttest.lua b/scripts/context/lua/mtx-server-ctx-fonttest.lua index ab324d3cb..d5437587b 100644 --- a/scripts/context/lua/mtx-server-ctx-fonttest.lua +++ b/scripts/context/lua/mtx-server-ctx-fonttest.lua @@ -9,17 +9,36 @@ if not modules then modules = { } end modules ['mtx-server-ctx-fonttest'] = { -- probably too much but who cares dofile(resolvers.findfile("trac-lmx.lua","tex")) +dofile(resolvers.findfile("char-def.lua","tex")) + dofile(resolvers.findfile("font-ini.lua","tex")) +dofile(resolvers.findfile("font-log.lua","tex")) dofile(resolvers.findfile("font-con.lua","tex")) --- dofile(resolvers.findfile("font-oti.lua","tex")) --- dofile(resolvers.findfile("font-otf.lua","tex")) --- dofile(resolvers.findfile("font-otp.lua","tex")) +dofile(resolvers.findfile("font-cft.lua","tex")) +dofile(resolvers.findfile("font-enc.lua","tex")) +dofile(resolvers.findfile("font-agl.lua","tex")) +dofile(resolvers.findfile("font-cid.lua","tex")) +dofile(resolvers.findfile("font-map.lua","tex")) dofile(resolvers.findfile("font-otr.lua","tex")) +dofile(resolvers.findfile("font-web.lua","tex")) dofile(resolvers.findfile("font-cff.lua","tex")) --- dofile(resolvers.findfile("font-ttf.lua","tex")) --- dofile(resolvers.findfile("font-ott.lua","tex")) +dofile(resolvers.findfile("font-ttf.lua","tex")) dofile(resolvers.findfile("font-dsp.lua","tex")) +dofile(resolvers.findfile("font-hsh.lua","tex")) +dofile(resolvers.findfile("font-oti.lua","tex")) +dofile(resolvers.findfile("font-ott.lua","tex")) +dofile(resolvers.findfile("font-otl.lua","tex")) +-- dofile(resolvers.findfile("font-oto.lua","tex")) +-- dofile(resolvers.findfile("font-otj.lua","tex")) +dofile(resolvers.findfile("font-oup.lua","tex")) +-- dofile(resolvers.findfile("font-ots.lua","tex")) +-- dofile(resolvers.findfile("font-otd.lua","tex")) +-- dofile(resolvers.findfile("font-otc.lua","tex")) +-- dofile(resolvers.findfile("font-oth.lua","tex")) +-- dofile(resolvers.findfile("font-osd.lua","tex")) +-- dofile(resolvers.findfile("font-ocl.lua","tex")) dofile(resolvers.findfile("font-onr.lua","tex")) + dofile(resolvers.findfile("font-syn.lua","tex")) dofile(resolvers.findfile("font-mis.lua","tex")) @@ -102,7 +121,7 @@ local javascripts = formatters [ [[ function selected_radio(name) { var form = document.forms["main-form"] ; var script = form.elements[name] ; - if (script) { + if (script) { var n = script.length ; if (n) { for (var i=0; i<n; i++) { @@ -110,8 +129,8 @@ function selected_radio(name) { return script[i].value ; } } - } - } + } + } return "" ; } diff --git a/scripts/context/lua/mtxrun.lua b/scripts/context/lua/mtxrun.lua index e9c1f31d3..77b6d12f5 100644 --- a/scripts/context/lua/mtxrun.lua +++ b/scripts/context/lua/mtxrun.lua @@ -21463,7 +21463,7 @@ function runners.execute_ctx_script(filename,...) end filename = environment.files[1] if e_verbose then - report("using script: %s\n",fullname) + report("using script: %s (if --path is used don't run on path where mtxrun lives)\n",fullname) end environment.ownscript = fullname dofile(fullname) diff --git a/scripts/context/stubs/mswin/mtxrun.lua b/scripts/context/stubs/mswin/mtxrun.lua index e9c1f31d3..77b6d12f5 100644 --- a/scripts/context/stubs/mswin/mtxrun.lua +++ b/scripts/context/stubs/mswin/mtxrun.lua @@ -21463,7 +21463,7 @@ function runners.execute_ctx_script(filename,...) end filename = environment.files[1] if e_verbose then - report("using script: %s\n",fullname) + report("using script: %s (if --path is used don't run on path where mtxrun lives)\n",fullname) end environment.ownscript = fullname dofile(fullname) diff --git a/scripts/context/stubs/unix/mtxrun b/scripts/context/stubs/unix/mtxrun index e9c1f31d3..77b6d12f5 100644 --- a/scripts/context/stubs/unix/mtxrun +++ b/scripts/context/stubs/unix/mtxrun @@ -21463,7 +21463,7 @@ function runners.execute_ctx_script(filename,...) end filename = environment.files[1] if e_verbose then - report("using script: %s\n",fullname) + report("using script: %s (if --path is used don't run on path where mtxrun lives)\n",fullname) end environment.ownscript = fullname dofile(fullname) diff --git a/scripts/context/stubs/win64/mtxrun.lua b/scripts/context/stubs/win64/mtxrun.lua index e9c1f31d3..77b6d12f5 100644 --- a/scripts/context/stubs/win64/mtxrun.lua +++ b/scripts/context/stubs/win64/mtxrun.lua @@ -21463,7 +21463,7 @@ function runners.execute_ctx_script(filename,...) end filename = environment.files[1] if e_verbose then - report("using script: %s\n",fullname) + report("using script: %s (if --path is used don't run on path where mtxrun lives)\n",fullname) end environment.ownscript = fullname dofile(fullname) diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii index f31bce976..27f417f29 100644 --- a/tex/context/base/mkii/cont-new.mkii +++ b/tex/context/base/mkii/cont-new.mkii @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2017.09.15 20:03} +\newcontextversion{2017.09.21 21:05} %D This file is loaded at runtime, thereby providing an %D excellent place for hacks, patches, extensions and new diff --git a/tex/context/base/mkii/context.mkii b/tex/context/base/mkii/context.mkii index 93dd75394..66e27204f 100644 --- a/tex/context/base/mkii/context.mkii +++ b/tex/context/base/mkii/context.mkii @@ -20,7 +20,7 @@ %D your styles an modules. \edef\contextformat {\jobname} -\edef\contextversion{2017.09.15 20:03} +\edef\contextversion{2017.09.21 21:05} %D For those who want to use this: diff --git a/tex/context/base/mkii/mult-en.mkii b/tex/context/base/mkii/mult-en.mkii index e1f59ed93..8a0ab18a5 100644 --- a/tex/context/base/mkii/mult-en.mkii +++ b/tex/context/base/mkii/mult-en.mkii @@ -753,6 +753,7 @@ \setinterfaceconstant{direction}{direction} \setinterfaceconstant{directory}{directory} \setinterfaceconstant{display}{display} +\setinterfaceconstant{displaythreshold}{displaythreshold} \setinterfaceconstant{distance}{distance} \setinterfaceconstant{domain}{domain} \setinterfaceconstant{dot}{dot} @@ -862,6 +863,7 @@ \setinterfaceconstant{index}{index} \setinterfaceconstant{indicator}{indicator} \setinterfaceconstant{initialsep}{initialsep} +\setinterfaceconstant{inlinethreshold}{inlinethreshold} \setinterfaceconstant{inner}{inner} \setinterfaceconstant{innermargin}{innermargin} \setinterfaceconstant{inputfile}{inputfile} diff --git a/tex/context/base/mkii/mult-it.mkii b/tex/context/base/mkii/mult-it.mkii index a79b0b9e8..c0eb9332b 100644 --- a/tex/context/base/mkii/mult-it.mkii +++ b/tex/context/base/mkii/mult-it.mkii @@ -753,6 +753,7 @@ \setinterfaceconstant{direction}{direzione} \setinterfaceconstant{directory}{directory} \setinterfaceconstant{display}{display} +\setinterfaceconstant{displaythreshold}{displaythreshold} \setinterfaceconstant{distance}{distanza} \setinterfaceconstant{domain}{domain} \setinterfaceconstant{dot}{punto} @@ -862,6 +863,7 @@ \setinterfaceconstant{index}{index} \setinterfaceconstant{indicator}{indicatore} \setinterfaceconstant{initialsep}{initialsep} +\setinterfaceconstant{inlinethreshold}{inlinethreshold} \setinterfaceconstant{inner}{interno} \setinterfaceconstant{innermargin}{margineinterno} \setinterfaceconstant{inputfile}{inputfile} diff --git a/tex/context/base/mkiv/back-exp.lua b/tex/context/base/mkiv/back-exp.lua index 3ad9418ec..5e78c38b7 100644 --- a/tex/context/base/mkiv/back-exp.lua +++ b/tex/context/base/mkiv/back-exp.lua @@ -3519,7 +3519,7 @@ local htmltemplate = [[ local function validpath(what,pathname) if lfs.isdir(pathname) then - report_export("using exiting %s path %a",what,pathname) + report_export("using existing %s path %a",what,pathname) return pathname end lfs.mkdir(pathname) diff --git a/tex/context/base/mkiv/back-exp.mkiv b/tex/context/base/mkiv/back-exp.mkiv index 6e24ed641..4cab46bdd 100644 --- a/tex/context/base/mkiv/back-exp.mkiv +++ b/tex/context/base/mkiv/back-exp.mkiv @@ -270,6 +270,9 @@ \clf_initializeexport \setsystemmode\v!export \exportingtrue + \writestatus\m!backend\empty % so messages will stand out a bit + \the\everyinitializeexport + \writestatus\m!backend\empty % so messages will stand out a bit \glet\doinitializeexport\relax \fi} diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv index c3305ba66..249a503d7 100644 --- a/tex/context/base/mkiv/cont-new.mkiv +++ b/tex/context/base/mkiv/cont-new.mkiv @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2017.09.15 20:03} +\newcontextversion{2017.09.21 21:05} %D This file is loaded at runtime, thereby providing an excellent place for %D hacks, patches, extensions and new features. diff --git a/tex/context/base/mkiv/context-base.lmx b/tex/context/base/mkiv/context-base.lmx index 482d43e88..af8c3c127 100644 --- a/tex/context/base/mkiv/context-base.lmx +++ b/tex/context/base/mkiv/context-base.lmx @@ -25,6 +25,9 @@ <style type="text/css"> <?lua inject(variables.cssdata) ?> </style> + <?lua if variables.javascriptfiles then for k, v in ipairs(variables.javascriptfiles) do ?> + <script src="<?lua inject(v) ?>"></script> + <?lua end end ?> <?lua if variables.styles then for k, v in ipairs(variables.styles) do ?> <link rel="StyleSheet" href="<?lua inject(v) ?>" type="text/css" /> <?lua end end ?> @@ -36,10 +39,14 @@ </script> <![endif]--> <?lua end ?> + <body> <?lua if variables.action then ?> - <form action="<?lua inject(variables.action) ?>" enctype="multi-part/form-data" method="post"> + <?lua if variables.formmethod == "get" then ?> + <form action="<?lua inject(variables.action) ?>" method="get"> + <?lua else ?> + <form action="<?lua inject(variables.action) ?>" enctype="multi-part/form-data" method="post"> + <?lua end ?> <?lua end ?> - <body> <div id="top"><?lua if variables.title then ?> <div id="top-one"> <div id="top-two"><?lua @@ -81,8 +88,8 @@ <?lua inject(variables.maintext) ?> </div> </div> - </body> <?lua if variables.action then ?> </form> <?lua end ?> + </body> </html> diff --git a/tex/context/base/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv index 4033f2c7d..50aa3a843 100644 --- a/tex/context/base/mkiv/context.mkiv +++ b/tex/context/base/mkiv/context.mkiv @@ -41,7 +41,7 @@ %D up and the dependencies are more consistent. \edef\contextformat {\jobname} -\edef\contextversion{2017.09.15 20:03} +\edef\contextversion{2017.09.21 21:05} \edef\contextkind {beta} %D For those who want to use this: diff --git a/tex/context/base/mkiv/core-ini.mkiv b/tex/context/base/mkiv/core-ini.mkiv index 35790f131..cb8881c22 100644 --- a/tex/context/base/mkiv/core-ini.mkiv +++ b/tex/context/base/mkiv/core-ini.mkiv @@ -87,6 +87,10 @@ \newtoks \everyinsidefloat +%D Exporting: + +\newtoks\everyinitializeexport + %D Sectioning: %newtoks \everyheadstart diff --git a/tex/context/base/mkiv/data-tex.lua b/tex/context/base/mkiv/data-tex.lua index b6b97a0a9..2d2c9b24d 100644 --- a/tex/context/base/mkiv/data-tex.lua +++ b/tex/context/base/mkiv/data-tex.lua @@ -57,6 +57,33 @@ resolvers.inputstack = resolvers.inputstack or { } local inputstack = resolvers.inputstack +---------------------------------------- + +local lpegmatch = lpeg.match +local newline = lpeg.patterns.newline +local tsplitat = lpeg.tsplitat + +local linesplitters = { + tsplitat(newline), -- default since we started + tsplitat(lpeg.S(" ")^0 * newline), + tsplitat(lpeg.S(" \t")^0 * newline), + tsplitat(lpeg.S(" \f\t")^0 * newline), -- saves a bit of space at the cost of runtime + -- tsplitat(lpeg.S(" \v\f\t")^0 * newline), + -- tsplitat(lpeg.R("\0\31")^0 * newline), +} + +local linesplitter = linesplitters[1] + +directives.register("system.linesplitmethod",function(v) + linesplitter = linesplitters[tonumber(v) or 1] or linesplitters[1] +end) + +local function splitlines(str) + return lpegmatch(linesplitter,str) +end + +----------------------------------------- + function helpers.textopener(tag,filename,filehandle,coding) local lines local t_filehandle = type(filehandle) diff --git a/tex/context/base/mkiv/file-job.mkvi b/tex/context/base/mkiv/file-job.mkvi index 75362d5a9..49598a494 100644 --- a/tex/context/base/mkiv/file-job.mkvi +++ b/tex/context/base/mkiv/file-job.mkvi @@ -345,4 +345,14 @@ %S The document: namespace will be used elsewhere too. +% Bonus: + +\installcorenamespace{samplefile} + +\unexpanded\def\samplefile#1% + {\ifcsname\??samplefile#1\endcsname \else + \setxvalue{\??samplefile#1}{\cldloadfile{#1}}% + \fi + \lastnamedcs} + \protect \endinput diff --git a/tex/context/base/mkiv/font-hsh.lua b/tex/context/base/mkiv/font-hsh.lua index 95914b50c..60a27c043 100644 --- a/tex/context/base/mkiv/font-hsh.lua +++ b/tex/context/base/mkiv/font-hsh.lua @@ -61,8 +61,8 @@ hashes.originals = originals hashes.modes = modes hashes.variants = variants -local nodepool = nodes.pool -local dummyglyph = nodepool.register(nodepool.glyph()) +local nodepool = nodes and nodes.pool +local dummyglyph = nodepool and nodepool.register(nodepool.glyph()) local nulldata = allocate { name = "nullfont", @@ -239,7 +239,7 @@ setmetatableindex(quads, function(t,k) local quad if parameters then quad = parameters.quad - else + elseif dummyglyph then dummyglyph.font = k dummyglyph.char = 0x2014 -- emdash quad = dummyglyph.width -- dirty trick @@ -260,7 +260,7 @@ setmetatableindex(xheights, function(t,k) local xheight if parameters then xheight = parameters.xheight - else + elseif dummyglyph then dummyglyph.font = k dummyglyph.char = 0x78 -- x xheight = dummyglyph.height -- dirty trick diff --git a/tex/context/base/mkiv/font-mis.lua b/tex/context/base/mkiv/font-mis.lua index 6d2b99871..e1f158c83 100644 --- a/tex/context/base/mkiv/font-mis.lua +++ b/tex/context/base/mkiv/font-mis.lua @@ -27,24 +27,31 @@ if readers then function fonts.helpers.getfeatures(name,save) local filename = resolvers.findfile(name) or "" if filename ~= "" then - local name = file.removesuffix(file.basename(filename)) - local cleanname = containers.cleanname(name) - local data = containers.read(otf.cache,cleanname) - if data then - readers.unpack(data) - else - data = readers.loadfont(filename) -- we can do a more minimal load - -- if data and save then - -- -- keep this in sync with font-otl - -- readers.compact(data) - -- readers.rehash(data,"unicodes") - -- readers.addunicodetable(data) - -- readers.extend(data) - -- readers.pack(data) - -- -- till here - -- containers.write(otf.cache,cleanname,data) - -- end - end +-- local name = file.removesuffix(file.basename(filename)) +-- local cleanname = containers.cleanname(name) +-- local data = containers.read(otf.cache,cleanname) +-- if data then +-- readers.unpack(data) +-- else +-- data = readers.loadfont(filename) -- we can do a more minimal load +-- -- if data and save then +-- -- -- keep this in sync with font-otl +-- -- readers.compact(data) +-- -- readers.rehash(data,"unicodes") +-- -- readers.addunicodetable(data) +-- -- readers.extend(data) +-- -- readers.pack(data) +-- -- -- till here +-- -- containers.write(otf.cache,cleanname,data) +-- -- end +-- end +-- if not data then +-- data = readers.loadfont(filename) -- we can do a more minimal load +-- end +-- if data then +-- readers.unpack(data) +-- end +local data = otf.load(filename) return data and data.resources and data.resources.features end end diff --git a/tex/context/base/mkiv/lpdf-epd.lua b/tex/context/base/mkiv/lpdf-epd.lua index 0f62d6189..06afaa087 100644 --- a/tex/context/base/mkiv/lpdf-epd.lua +++ b/tex/context/base/mkiv/lpdf-epd.lua @@ -57,6 +57,8 @@ local dictGetLength, dictGetVal, dictGetValNF, dictGetKey local arrayGetLength, arrayGetNF, arrayGet local streamReset, streamGetDict, streamGetChar +-- getCatalog getNumPages getPageRef fetch getXRef getDocInfo + do local object = epdf.Object() -- @@ -538,6 +540,8 @@ function lpdf_epdf.load(filename) -- local Catalog = some_dictionary(__xref__:getCatalog():getDict(),document) local Info = some_dictionary(__xref__:getDocInfo():getDict(),document) +-- local Catalog = some_dictionary(getDict(__xref__:getCatalog()),document) +-- local Info = some_dictionary(getDict(__xref__:getDocInfo()),document) -- document.Catalog = Catalog document.Info = Info diff --git a/tex/context/base/mkiv/mult-mes.lua b/tex/context/base/mkiv/mult-mes.lua index 979831726..ffb9b32da 100644 --- a/tex/context/base/mkiv/mult-mes.lua +++ b/tex/context/base/mkiv/mult-mes.lua @@ -490,6 +490,14 @@ return { no = "there is nothing to split", ro = "there is nothing to split", }, + ["floatblocks:14"] = { + en = "float locations will be forced to %a due to exporting", + nl = "blok plaatsing is altijd %a vanwege export", + }, + ["floatblocks:15"] = { + en = "location %a changed to %a due to exporting", + nl = "plaatsing %a vervangen door %a vanwege export", + }, ["floatblocks:1"] = { en = "%a is empty", }, diff --git a/tex/context/base/mkiv/mult-sys.mkiv b/tex/context/base/mkiv/mult-sys.mkiv index 038d5e5af..2fffe3084 100644 --- a/tex/context/base/mkiv/mult-sys.mkiv +++ b/tex/context/base/mkiv/mult-sys.mkiv @@ -479,6 +479,7 @@ \definemessageconstant {metapost} \definemessageconstant {chemicals} \definemessageconstant {publications} +\definemessageconstant {backend} %D When we use numbers and dimensions the same applies as with the keywords like %D \type {width} and \type {plus} mentioned earlier. diff --git a/tex/context/base/mkiv/page-cst.mkiv b/tex/context/base/mkiv/page-cst.mkiv index ed4512561..1dc324d8c 100644 --- a/tex/context/base/mkiv/page-cst.mkiv +++ b/tex/context/base/mkiv/page-cst.mkiv @@ -326,7 +326,7 @@ \fi}}% \clf_finishcolumnsetflush{\currentpagegrid}% \egroup - \page_otr_construct_and_shipout\box\b_page_grid_collected + \page_otr_construct_and_shipout\box\b_page_grid_collected\zerocount % three arguments \clf_flushcolumnsetareas{\currentpagegrid}\relax \page_grid_command_flush_saved_floats} diff --git a/tex/context/base/mkiv/page-ini.mkiv b/tex/context/base/mkiv/page-ini.mkiv index 7ffd00c65..3e145690f 100644 --- a/tex/context/base/mkiv/page-ini.mkiv +++ b/tex/context/base/mkiv/page-ini.mkiv @@ -36,7 +36,7 @@ \newconditional\c_otr_shipout_enabled \settrue\c_otr_shipout_enabled -\unexpanded\def\page_otr_shipout +\unexpanded\def\page_otr_shipout % not used at all {\ifconditional\c_otr_shipout_enabled \expandafter\page_otr_shipout_yes \else @@ -90,13 +90,57 @@ \fi} \def\page_otr_flush_pending_content - {\vskip\zeropoint\relax % brrr .. get rid of this + {\vskip\zeropoint\relax \ifvoid\normalpagebox \else \unvbox\normalpagebox \penalty\outputpenalty \fi} -\def\page_otr_construct_and_shipout#1#2% +\newconstant\c_page_postponed_mode % \c_page_postponed_mode\plusone +\newbox \b_page_otr_saved + +\installoutputroutine\savepagecontent + {\global\setbox\b_page_otr_saved\box\normalpagebox} + +\unexpanded\def\flushpagecontent + {\ifvoid\b_page_otr_saved\else\unvbox\b_page_otr_saved\fi} + +% Test case: assumes one group level for output routine, todo: +% a toks. +% +% \starttext +% +% \startbuffer[makeup] +% \startpagemakeup[pagestate=start,page=no] +% \color[red]{ +% \vfill +% \dorecurse{3}{ +% \samplefile{klein} +% \vfill +% } +% } +% \stoppagemakeup +% \stopbuffer +% +% \startcolor[green] +% \dorecurse{10}{ +% \dontleavehmode{\bf 1:#1:} \samplefile{sapolsky}\par +% } +% \stopcolor +% +% \startpostponing % [+3] +% \getbuffer[makeup] +% \stoppostponing +% +% \startcolor[blue] +% \dorecurse{25}{ +% \dontleavehmode{\bf 2:#1:} \samplefile{sapolsky}\par +% } +% \stopcolor +% +% \stoptext + +\def\page_otr_construct_and_shipout#1#2#3% {\forgetall \page_boxes_shipout{\page_boxes_constructed_page#1#2}% \hbox removed \page_otr_flush_pending_content @@ -112,7 +156,16 @@ \page_otr_check_for_pending_inserts \page_floats_flush_page_floats % before postponed blocks \page_spread_flush % defined later - \page_postponed_blocks_flush} + \ifnum#3=\plusone + % this is tricky! we need to make sure we are in the output group + \ifnum\c_page_postponed_mode=\plusone + \aftergroup\page_postponed_blocks_flush + \else + \page_postponed_blocks_flush + \fi + \else + \page_postponed_blocks_flush + \fi} % Can't we get rid of this hackery? It's used in some widgets % stuff so probably not. diff --git a/tex/context/base/mkiv/page-mix.mkiv b/tex/context/base/mkiv/page-mix.mkiv index 8b58a4c3d..73ed9466c 100644 --- a/tex/context/base/mkiv/page-mix.mkiv +++ b/tex/context/base/mkiv/page-mix.mkiv @@ -239,7 +239,7 @@ \def\page_mix_routine_error {\showmessage\m!columns3\empty - \page_otr_construct_and_shipout\unvbox\normalpagebox} + \page_otr_construct_and_shipout\unvbox\normalpagebox\zerocount} % three arguments %D Some settings (and actions) depend on the current output routine and setting the %D hsize and vsize is among them. The calculation of the hsize is done elsewhere. @@ -737,7 +737,7 @@ \setbox\b_page_mix_collected\vpack{\unvbox\normalpagebox}% brrr we need to make a tight box (combine this in lua) \page_mix_routine_construct\v!no \page_mix_routine_package - \page_otr_construct_and_shipout\box\b_page_mix_collected + \page_otr_construct_and_shipout\box\b_page_mix_collected\zerocount % three arguments \clf_mixflushrest \clf_mixcleanup \egroup} @@ -775,7 +775,7 @@ % 1 = we have stuff left, so flush and rebalance %writestatus\m!columns{flush continue}% \page_mix_routine_package - \page_otr_construct_and_shipout\box\b_page_mix_collected + \page_otr_construct_and_shipout\box\b_page_mix_collected\zerocount % three arguments \setbox\b_page_mix_collected\vpack{\clf_mixflushrest}% we could avoid this \clf_mixcleanup \ifdim\ht\b_page_mix_collected=\zeropoint @@ -938,10 +938,10 @@ \unexpanded\def\page_mix_place_float_force {\page_one_place_float_force} -\unexpanded\def\page_mix_command_side_float_output % hm - {\page_otr_construct_and_shipout\unvbox\normalpagebox} +\unexpanded\def\page_mix_command_side_float_output + {\page_otr_construct_and_shipout\unvbox\normalpagebox\zerocount} % three arguments -\unexpanded\def\page_mix_command_synchronize_side_floats % hm +\unexpanded\def\page_mix_command_synchronize_side_floats {\page_sides_forget_floats} \unexpanded\def\page_mix_command_flush_side_floats diff --git a/tex/context/base/mkiv/page-mul.mkiv b/tex/context/base/mkiv/page-mul.mkiv index 14b9eb992..5b4f064d0 100644 --- a/tex/context/base/mkiv/page-mul.mkiv +++ b/tex/context/base/mkiv/page-mul.mkiv @@ -86,7 +86,7 @@ {\page_one_place_float_force} \unexpanded\def\page_mul_command_side_float_output - {\page_otr_construct_and_shipout\unvbox\normalpagebox} + {\page_otr_construct_and_shipout\unvbox\normalpagebox\zerocount} % three arguments \unexpanded\def\page_mul_command_flush_side_floats {\page_sides_forget_floats} @@ -341,7 +341,7 @@ \def\page_mul_routine_error {\showmessage\m!columns3\empty - \page_otr_construct_and_shipout\unvbox\normalpagebox} + \page_otr_construct_and_shipout\unvbox\normalpagebox\zerocount} % three arguments %D When we leave the multi||column mode, we have to process the not yet shipped out %D part of the columns. When we don't balance, we simply force a continuous output, @@ -858,7 +858,7 @@ {\ht\currentcolumnbox\d_page_mul_balance_target}% redundant \fi \setbox\b_page_mul_preceding\vbox{\page_mul_flush_packaged_columns_continued}% - \page_otr_construct_and_shipout\box\b_page_mul_preceding + \page_otr_construct_and_shipout\box\b_page_mul_preceding\zerocount % three arguments \page_otr_command_set_hsize \page_otr_command_set_vsize \page_mul_flush_floats diff --git a/tex/context/base/mkiv/page-one.mkiv b/tex/context/base/mkiv/page-one.mkiv index d113d3d54..f3d7aa3e4 100644 --- a/tex/context/base/mkiv/page-one.mkiv +++ b/tex/context/base/mkiv/page-one.mkiv @@ -192,7 +192,7 @@ \egroup} \unexpanded\def\page_one_command_side_float_output - {\page_otr_construct_and_shipout\unvbox\normalpagebox} + {\page_otr_construct_and_shipout\unvbox\normalpagebox\plusone} % three arguments, we need to be in the output group \unexpanded\def\page_one_command_routine {\page_sides_output_routine} diff --git a/tex/context/base/mkiv/page-otr.mkvi b/tex/context/base/mkiv/page-otr.mkvi index ec38a06c1..22d622db8 100644 --- a/tex/context/base/mkiv/page-otr.mkvi +++ b/tex/context/base/mkiv/page-otr.mkvi @@ -166,6 +166,26 @@ #content\relax \the\everyafteroutput}} +% Just as fuzzy (and in 'one' we are okay with \aftergroup anyway): +% +% \ifdefined\everybeforeoutputgroup \else \newtoks\everybeforeoutputgroup \fi +% \ifdefined\everyafteroutputgroup \else \newtoks\everyafteroutputgroup \fi +% +% \def\page_otf_set_engine_output_routine#content% +% {\the\everybeforeoutputgroup +% \global\output +% {\inotrtrue +% \the\everybeforeoutput +% #content\relax +% \the\everyafteroutput +% \aftergroup\the\aftergroup\everyafteroutputgroup}} +% +% \appendtoks +% \ifnum\c_page_postponed_mode=\plusone +% \page_postponed_blocks_flush % and then not in \page_otr_construct_and_shipout +% \fi +% \to \everyafteroutputgroup + \page_otf_set_engine_output_routine\page_otr_triggered_output_routine \installoutputroutine\synchronizeoutput diff --git a/tex/context/base/mkiv/page-pst.mkiv b/tex/context/base/mkiv/page-pst.mkiv index f12663f66..05b4f4209 100644 --- a/tex/context/base/mkiv/page-pst.mkiv +++ b/tex/context/base/mkiv/page-pst.mkiv @@ -69,10 +69,15 @@ % officially we should flush again after a flush as there can be new future pages % but that will be looked into when we run into it +\c_page_postponed_mode\plusone + \unexpanded\def\page_postponed_blocks_flush_indeed {\begingroup \setsystemmode\v!postponing \settrue\c_page_postponed_busy + \ifnum\c_page_postponed_mode=\plusone + \savepagecontent + \fi \pagetotal\zeropoint % here? still needed? (was after flush pagefloats) \the\everytopofpage\relax %\flushrestfloats @@ -84,6 +89,9 @@ % page {123} \relax \page_otr_command_flush_floats % new but potential dangerous, maybe we need a classification + \ifnum\c_page_postponed_mode=\plusone + \flushpagecontent + \fi \endgroup} % of blocks: with and without flush \unexpanded\def\page_postponed_blocks_flush diff --git a/tex/context/base/mkiv/page-set.mkiv b/tex/context/base/mkiv/page-set.mkiv index f3fa01696..0d62df75a 100644 --- a/tex/context/base/mkiv/page-set.mkiv +++ b/tex/context/base/mkiv/page-set.mkiv @@ -560,14 +560,14 @@ {\ifdim\ht\OTRfinalpagebox=\textheight \bgroup \ifcase\OTRSETbalancemethod - \page_otr_construct_and_shipout\box\OTRfinalpagebox + \page_otr_construct_and_shipout\box\OTRfinalpagebox\zerocount % three arguments \else\ifdim\OTRSETbalht>\zeropoint % catch a bordercase \scratchdimen\OTRSETbalht \advance\scratchdimen\lineheight\relax \ifdim\scratchdimen>\textheight % full page - \page_otr_construct_and_shipout\box\OTRfinalpagebox + \page_otr_construct_and_shipout\box\OTRfinalpagebox\zerocount % three arguments \else % same page \global\setbox\OTRfinalpagebox \iftracecolumnset\ruledvbox\else\vbox\fi to \OTRSETbalht @@ -576,7 +576,7 @@ \snaptogrid\vbox{\vskip\OTRSETbalht}% hack \fi \else - \page_otr_construct_and_shipout\box\OTRfinalpagebox + \page_otr_construct_and_shipout\box\OTRfinalpagebox\zerocount % three arguments \fi \fi \globallet\OTRSETbalht\zeropoint \egroup diff --git a/tex/context/base/mkiv/publ-dat.lua b/tex/context/base/mkiv/publ-dat.lua index 0bddad216..2cebb4379 100644 --- a/tex/context/base/mkiv/publ-dat.lua +++ b/tex/context/base/mkiv/publ-dat.lua @@ -862,7 +862,7 @@ do publications.loadbibdata(dataset,data,fullname,kind) end - function loaders.lua(dataset,filename) -- if filename is a table we load that one + function loaders.lua(dataset,filename,loader) -- if filename is a table we load that one local current, data, fullname if type(filename) == "table" then current = datasets[dataset] @@ -873,7 +873,7 @@ do return end current = datasets[dataset] - data = table.load(fullname) + data = (loader or table.load)(fullname) end if data then local luadata = current.luadata @@ -888,6 +888,10 @@ do end end + function loaders.json(dataset,filename) + loaders.lua(dataset,filename,utilities.json.load) + end + function loaders.buffer(dataset,name) -- if filename is a table we load that one local current = datasets[dataset] local barename = file.removesuffix(name) diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf Binary files differindex e45d0d6c3..962f63e0a 100644 --- a/tex/context/base/mkiv/status-files.pdf +++ b/tex/context/base/mkiv/status-files.pdf diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf Binary files differindex 59f1db86f..fa7946a53 100644 --- a/tex/context/base/mkiv/status-lua.pdf +++ b/tex/context/base/mkiv/status-lua.pdf diff --git a/tex/context/base/mkiv/strc-flt.mkvi b/tex/context/base/mkiv/strc-flt.mkvi index 7ddb168ca..359b32a53 100644 --- a/tex/context/base/mkiv/strc-flt.mkvi +++ b/tex/context/base/mkiv/strc-flt.mkvi @@ -538,9 +538,20 @@ \setupfloat[\c!spacebefore=\v!none,\c!spaceafter=\v!none]% \to \c_floats_every_table_float +\appendtoks + \showmessage\m!floatblocks{14}\v!here +\to \everyinitializeexport + +\def\strc_floats_set_checked_location#location% + {\edef\floatlocation{#location}% + \ifexporting \ifx\floatlocation\v!here \else + \showmessage\m!floatblocks{15}{\floatlocation,\v!here}% + \let\floatlocation\v!here + \fi \fi} + \def\strc_floats_place_indeed[#location][#reference]#caption% {\strc_floats_reset_variables - \edef\floatlocation{\ifexporting\v!here\else#location\fi}% + \strc_floats_set_checked_location{#location}% \ifx\floatlocation\empty \edef\floatlocation{\floatparameter\c!default}% beware of a clash between alignment locations \fi @@ -592,7 +603,7 @@ \setexpandedfloatparameter\c!bottomoffset{\floatcaptionparameter\c!bottomoffset}% \setexpandedfloatparameter\c!freeregion {\floatcaptionparameter\c!freeregion}% \def\m_strc_floats_saved_userdata{#2}% - \edef\floatlocation{\ifexporting\v!here\else\floatcaptionparameter\c!location\fi}% + \strc_floats_set_checked_location{\floatcaptionparameter\c!location}% \setfloatcaptionparameter\c!location{\savedfloatlocation}% not expanded \ifx\floatlocation\empty \edef\floatlocation{\floatparameter\c!default}% @@ -1037,10 +1048,13 @@ \unexpanded\def\installfloatmovement#1#2{\setvalue{\??floatmovement#1}{#2}} +% \def\strc_floats_move_down#setting% +% {\csname\??floatmovement +% \ifcsname\??floatmovement#setting\endcsname#setting\fi +% \endcsname} + \def\strc_floats_move_down#setting% - {\csname\??floatmovement - \ifcsname\??floatmovement#setting\endcsname#setting\fi - \endcsname} + {\begincsname\??floatmovement#setting\endcsname} \def\strc_floats_move_down_line#sign% {\if!!donea \else @@ -1247,7 +1261,7 @@ \global\floatwidth \wd\floatbox \global\floatheight \ht\floatbox % forget about the depth \global\floattextwidth\dimexpr\hsize-\floatwidth-\rootfloatparameter\c!margin\relax - \edef\floatlocation{\ifexporting\v!here\else\floatlocationmethod\fi}% to be sure .. why + \strc_floats_set_checked_location\floatlocationmethod% to be sure .. why \doifelseinset\v!tall\floatlocationmethod {\floattextheight\dimexpr\pagegoal-\pagetotal-\bigskipamount\relax % ugly, this bigskip \ifdim\floattextheight>\textheight diff --git a/tex/context/base/mkiv/util-jsn.lua b/tex/context/base/mkiv/util-jsn.lua index e835c07d6..e75b5cf5d 100644 --- a/tex/context/base/mkiv/util-jsn.lua +++ b/tex/context/base/mkiv/util-jsn.lua @@ -158,4 +158,11 @@ end -- inspect(json.tostring(true)) +function json.load(filename) + local data = io.loaddata(filename) + if data then + return lpegmatch(jsonconverter,data) + end +end + return json diff --git a/tex/context/interface/mkii/keys-en.xml b/tex/context/interface/mkii/keys-en.xml index be455e9fc..3add761bc 100644 --- a/tex/context/interface/mkii/keys-en.xml +++ b/tex/context/interface/mkii/keys-en.xml @@ -759,6 +759,7 @@ <cd:constant name='direction' value='direction'/> <cd:constant name='directory' value='directory'/> <cd:constant name='display' value='display'/> + <cd:constant name='displaythreshold' value='displaythreshold'/> <cd:constant name='distance' value='distance'/> <cd:constant name='domain' value='domain'/> <cd:constant name='dot' value='dot'/> @@ -868,6 +869,7 @@ <cd:constant name='index' value='index'/> <cd:constant name='indicator' value='indicator'/> <cd:constant name='initialsep' value='initialsep'/> + <cd:constant name='inlinethreshold' value='inlinethreshold'/> <cd:constant name='inner' value='inner'/> <cd:constant name='innermargin' value='innermargin'/> <cd:constant name='inputfile' value='inputfile'/> diff --git a/tex/context/interface/mkii/keys-it.xml b/tex/context/interface/mkii/keys-it.xml index 0df2eba36..721902f8e 100644 --- a/tex/context/interface/mkii/keys-it.xml +++ b/tex/context/interface/mkii/keys-it.xml @@ -759,6 +759,7 @@ <cd:constant name='direction' value='direzione'/> <cd:constant name='directory' value='directory'/> <cd:constant name='display' value='display'/> + <cd:constant name='displaythreshold' value='displaythreshold'/> <cd:constant name='distance' value='distanza'/> <cd:constant name='domain' value='domain'/> <cd:constant name='dot' value='punto'/> @@ -868,6 +869,7 @@ <cd:constant name='index' value='index'/> <cd:constant name='indicator' value='indicatore'/> <cd:constant name='initialsep' value='initialsep'/> + <cd:constant name='inlinethreshold' value='inlinethreshold'/> <cd:constant name='inner' value='interno'/> <cd:constant name='innermargin' value='margineinterno'/> <cd:constant name='inputfile' value='inputfile'/> diff --git a/tex/context/interface/mkiv/i-context.pdf b/tex/context/interface/mkiv/i-context.pdf Binary files differindex bf72c9fcc..5c441b1f7 100644 --- a/tex/context/interface/mkiv/i-context.pdf +++ b/tex/context/interface/mkiv/i-context.pdf diff --git a/tex/context/interface/mkiv/i-readme.pdf b/tex/context/interface/mkiv/i-readme.pdf Binary files differindex 8f5f4a254..cbdfae1db 100644 --- a/tex/context/interface/mkiv/i-readme.pdf +++ b/tex/context/interface/mkiv/i-readme.pdf diff --git a/tex/context/test/mkiv/pdf-a1a-2005.mkiv b/tex/context/test/mkiv/pdf-a1a-2005.mkiv index 8f79d3f33..90ac0c242 100644 --- a/tex/context/test/mkiv/pdf-a1a-2005.mkiv +++ b/tex/context/test/mkiv/pdf-a1a-2005.mkiv @@ -6,6 +6,7 @@ [format=PDF/A-1a:2005, intent=sRGB IEC61966-2.1, % use <info> entry here; otherwise problems with predefined default profile profile=sRGB.icc, % use <filename> here + % profile={sRGB.icc,default_gray.icc}] level=0] \setuptagging[state=start] diff --git a/tex/context/test/mkiv/pdf-a1b-2005.mkiv b/tex/context/test/mkiv/pdf-a1b-2005.mkiv index bc970c3f9..f23942a97 100644 --- a/tex/context/test/mkiv/pdf-a1b-2005.mkiv +++ b/tex/context/test/mkiv/pdf-a1b-2005.mkiv @@ -6,6 +6,7 @@ [format=PDF/A-1b:2005, intent=sRGB IEC61966-2.1, % use <info> entry here; otherwise problems with predefined default profile profile=sRGB.icc, % use <filename> here + % profile={sRGB.icc,default_gray.icc}] level=0] \setuptagging[state=start] % needed even for 'b'-version diff --git a/tex/context/test/mkiv/pdf-a2a.mkiv b/tex/context/test/mkiv/pdf-a2a.mkiv index eea567f34..a0e181e69 100644 --- a/tex/context/test/mkiv/pdf-a2a.mkiv +++ b/tex/context/test/mkiv/pdf-a2a.mkiv @@ -5,7 +5,7 @@ \setupbackend [format=PDF/A-2a, intent=sRGB IEC61966-2.1, % use <info> entry here; otherwise problems with predefined default profile - profile=sRGB.icc, % use <filename> here + profile={sRGB.icc,default_gray.icc}, level=0] \setuptagging[state=start] diff --git a/tex/context/test/mkiv/pdf-a3a.mkiv b/tex/context/test/mkiv/pdf-a3a.mkiv index e7bba6fd8..7efb28e3c 100644 --- a/tex/context/test/mkiv/pdf-a3a.mkiv +++ b/tex/context/test/mkiv/pdf-a3a.mkiv @@ -8,7 +8,7 @@ \setupbackend [format=PDF/A-3a, intent=sRGB IEC61966-2.1, % use <info> entry here; otherwise problems with predefined default profile - profile=sRGB.icc, % use <filename> here + profile={sRGB.icc,default_gray.icc}, level=0] \setuptagging[state=start] diff --git a/tex/context/test/mkiv/pdf-x4.mkiv b/tex/context/test/mkiv/pdf-x4.mkiv index 062de3b34..93b40d943 100644 --- a/tex/context/test/mkiv/pdf-x4.mkiv +++ b/tex/context/test/mkiv/pdf-x4.mkiv @@ -6,6 +6,7 @@ \setupbackend [format=PDF/X-4, + %profile={sRGB.icc,default_gray.icc}, intent=ISOcoated_v2_eci.icc] \input pdf-x-common.mkiv diff --git a/tex/context/test/mkiv/pdf-x4p.mkiv b/tex/context/test/mkiv/pdf-x4p.mkiv index bfee0b238..92e98722f 100644 --- a/tex/context/test/mkiv/pdf-x4p.mkiv +++ b/tex/context/test/mkiv/pdf-x4p.mkiv @@ -5,6 +5,6 @@ \setupbackend [format=PDF/X-4p, intent={ISO Coated v2 (ECI)}, - profile=sRGB.icc] % test for default colorspace + profile={sRGB.icc,default_gray.icc}] \input pdf-x-common.mkiv diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index 1952a9819..7952d17f5 100644 --- a/tex/generic/context/luatex/luatex-fonts-merged.lua +++ b/tex/generic/context/luatex/luatex-fonts-merged.lua @@ -1,6 +1,6 @@ -- merged file : c:/data/develop/context/sources/luatex-fonts-merged.lua -- parent file : c:/data/develop/context/sources/luatex-fonts.lua --- merge date : 09/15/17 20:03:34 +-- merge date : 09/21/17 21:05:06 do -- begin closure to overcome local limits and interference diff --git a/tex/generic/context/luatex/luatex-math.tex b/tex/generic/context/luatex/luatex-math.tex index 0ed8992d4..4ed900ddc 100644 --- a/tex/generic/context/luatex/luatex-math.tex +++ b/tex/generic/context/luatex/luatex-math.tex @@ -18,6 +18,8 @@ % we provide a remap feature +% \protected makes our mp test work (no expansion) + \ifdefined\directlua \directlua{dofile(kpse.find_file('luatex-math.lua'))} \fi @@ -34,7 +36,7 @@ \let \sevenbf = \relax \let \fivebf = \relax -\def\latinmodern +\protected\def\latinmodern {\font\tenrm = file:lmroman10-regular.otf:+liga;+kern;+tlig;+trep at 10pt \font\sevenrm = file:lmroman7-regular.otf:+liga;+kern;+tlig;+trep at 7pt \font\fiverm = file:lmroman5-regular.otf:+liga;+kern;+tlig;+trep at 5pt @@ -63,7 +65,7 @@ % \tenrm} -\def\lucidabright +\protected\def\lucidabright {\font\tenrm = file:lucidabrightot.otf:+liga;+kern;+tlig;+trep at 10pt \font\sevenrm = file:lucidabrightot.otf:+liga;+kern;+tlig;+trep at 7pt \font\fiverm = file:lucidabrightot.otf:+liga;+kern;+tlig;+trep at 5pt @@ -112,12 +114,12 @@ % the following commands switch text as well as math -\def\rm{\fam0\relax\the\everymathrm\relax\tenrm\relax} -\def\it{\fam0\relax\the\everymathit\relax\tenit\relax} -\def\sl{\fam0\relax\the\everymathsl\relax\tensl\relax} -\def\bf{\fam0\relax\the\everymathbf\relax\tenbf\relax} -\def\bi{\fam0\relax\the\everymathbi\relax\tenbi\relax} -\def\tt{\fam0\relax\the\everymathtt\relax\tentt\relax} +\protected\def\rm{\fam0\relax\the\everymathrm\relax\tenrm\relax} +\protected\def\it{\fam0\relax\the\everymathit\relax\tenit\relax} +\protected\def\sl{\fam0\relax\the\everymathsl\relax\tensl\relax} +\protected\def\bf{\fam0\relax\the\everymathbf\relax\tenbf\relax} +\protected\def\bi{\fam0\relax\the\everymathbi\relax\tenbi\relax} +\protected\def\tt{\fam0\relax\the\everymathtt\relax\tentt\relax} % tex is fast enough for this kind of assignments: @@ -911,11 +913,11 @@ % much sense, it's more that in good old tex oldstyle was taken from % math fonts. So, just something compatible: -\def\oldstyle{\fam1\relax\tenos\relax} +\protected\def\oldstyle{\fam1\relax\tenos\relax} % Again a text and math one and it had better be used grouped. -\def\cal{\fam0\relax\the\everymathcal\relax\tenit\relax} +\protected\def\cal{\fam0\relax\the\everymathcal\relax\tenit\relax} \everymathcal {% \Umathcode"0041="0"0"1D49C% A @@ -1576,678 +1578,678 @@ % a couple of definitions (we could also use \mathchardef): -\def\acute {\Umathaccent"0"0"0000B4 } -\def\acwopencirclearrow {\Umathchar "3"0"0021BA } -\def\aleph {\Umathchar "0"0"002135 } -\def\Alpha {\Umathchar "0"0"000391 } -\def\alpha {\Umathchar "0"0"0003B1 } -\def\amalg {\Umathchar "2"0"002A3F } -\def\angle {\Umathchar "0"0"002220 } -\def\Angstrom {\Umathchar "0"0"00212B } -\def\approx {\Umathchar "3"0"002248 } -\def\approxEq {\Umathchar "3"0"002245 } -\def\approxeq {\Umathchar "3"0"00224A } -\def\approxnEq {\Umathchar "3"0"002247 } -\def\arrowvert {\Umathchar "0"0"00007C } -\def\Arrowvert {\Umathchar "0"0"002016 } -\def\ast {\Umathchar "2"0"002217 } -\def\ast {\Umathchar "2"0"002217 } -\def\asymp {\Umathchar "3"0"00224D } -\def\backepsilon {\Umathchar "0"0"0003F6 } -\def\backprime {\Umathchar "0"0"012035 } -\def\backsim {\Umathchar "3"0"00223D } -\def\backslash {\Umathchar "0"0"00005C } -\def\bar {\Umathaccent"0"0"0000AF } -\def\barleftarrow {\Umathchar "3"0"0021E4 } -\def\barleftarrowrightarrowbar {\Umathchar "3"0"0021B9 } -\def\barovernorthwestarrow {\Umathchar "3"0"0021B8 } -\def\barwedge {\Umathchar "2"0"0022BC } -\def\because {\Umathchar "3"0"002235 } -\def\Beta {\Umathchar "0"0"000392 } -\def\beta {\Umathchar "0"0"0003B2 } -\def\beth {\Umathchar "0"0"002136 } -\def\between {\Umathchar "3"0"00226C } -\def\bigcap {\Umathchar "1"0"0022C2 } -\def\bigcirc {\Umathchar "2"0"0025EF } -\def\bigcircle {\Umathchar "2"0"0020DD } -\def\bigcircle {\Umathchar "2"0"0020DD } -\def\bigcup {\Umathchar "1"0"0022C3 } -\def\bigdiamond {\Umathchar "0"0"0020DF } -\def\bigodot {\Umathchar "1"0"002A00 } -\def\bigoplus {\Umathchar "1"0"002A01 } -\def\bigotimes {\Umathchar "1"0"002A02 } -\def\bigsqcap {\Umathchar "1"0"002A05 } -\def\bigsqcup {\Umathchar "1"0"002A06 } -\def\bigsquare {\Umathchar "0"0"0020DE } -\def\bigstar {\Umathchar "0"0"002605 } -\def\bigtimes {\Umathchar "1"0"002A09 } -\def\bigtriangledown {\Umathchar "2"0"0025BD } -\def\bigtriangleup {\Umathchar "2"0"0025B3 } -\def\bigudot {\Umathchar "1"0"002A03 } -\def\biguplus {\Umathchar "1"0"002A04 } -\def\bigvee {\Umathchar "1"0"0022C1 } -\def\bigwedge {\Umathchar "1"0"0022C0 } -\def\blacklozenge {\Umathchar "0"0"002666 } -\def\blacksquare {\Umathchar "0"0"0025A0 } -\def\blacktriangle {\Umathchar "2"0"0025B2 } -\def\blacktriangledown {\Umathchar "2"0"0025BC } -\def\blacktriangleleft {\Umathchar "2"0"0025C0 } -\def\blacktriangleright {\Umathchar "2"0"0025B6 } -\def\bot {\Umathchar "0"0"0022A5 } -\def\bowtie {\Umathchar "3"0"0022C8 } -\def\Box {\Umathchar "0"0"0025A1 } -\def\boxdot {\Umathchar "2"0"0022A1 } -\def\boxminus {\Umathchar "2"0"00229F } -\def\boxplus {\Umathchar "2"0"00229E } -\def\boxtimes {\Umathchar "2"0"0022A0 } -%def\braceld {\Umathchar "0"0"000000 } -%def\bracerd {\Umathchar "0"0"000000 } -%def\bracelu {\Umathchar "0"0"000000 } -%def\braceru {\Umathchar "0"0"000000 } -\def\breve {\Umathaccent"0"0"0002D8 } -\def\bullet {\Umathchar "2"0"002022 } -\def\bullet {\Umathchar "2"0"002022 } -\def\Bumpeq {\Umathchar "3"0"00224E } -\def\cap {\Umathchar "2"0"002229 } -\def\Cap {\Umathchar "2"0"0022D2 } -\def\carriagereturn {\Umathchar "0"0"0021B5 } -\def\cdot {\Umathchar "2"0"0022C5 } -\def\cdotp {\Umathchar "6"0"0022C5 } -\def\cdots {\Umathchar "0"0"0022EF } -\def\centerdot {\Umathchar "2"0"0000B7 } -\def\check {\Umathaccent"0"0"0002C7 } -\def\checkmark {\Umathchar "0"0"002713 } -\def\Chi {\Umathchar "0"0"0003A7 } -\def\chi {\Umathchar "0"0"0003C7 } -\def\circ {\Umathchar "2"0"002218 } -\def\circeq {\Umathchar "3"0"002257 } -\def\circlearrowleft {\Umathchar "3"0"0021BB } -\def\circlearrowright {\Umathchar "3"0"0021BA } -\def\circledast {\Umathchar "2"0"00229B } -\def\circledcirc {\Umathchar "2"0"00229A } -\def\circleddash {\Umathchar "2"0"00229D } -\def\circledequals {\Umathchar "2"0"00229C } -\def\circledR {\Umathchar "0"0"0024C7 } -\def\circledS {\Umathchar "0"0"0024C8 } -\def\circleonrightarrow {\Umathchar "3"0"0021F4 } -\def\clubsuit {\Umathchar "0"0"002663 } -\def\colon {\Umathchar "6"0"002236 } -\def\colonequals {\Umathchar "3"0"002254 } -\def\complement {\Umathchar "0"0"002201 } -\def\complexes {\Umathchar "0"0"002102 } -\def\cong {\Umathchar "3"0"002245 } -\def\coprod {\Umathchar "1"0"002210 } -\def\cup {\Umathchar "2"0"00222A } -\def\Cup {\Umathchar "2"0"0022D3 } -\def\curlyeqprec {\Umathchar "3"0"0022DE } -\def\curlyeqsucc {\Umathchar "3"0"0022DF } -\def\curlyvee {\Umathchar "2"0"0022CE } -\def\curlywedge {\Umathchar "2"0"0022CF } -\def\curvearrowleft {\Umathchar "3"0"0021B6 } -\def\curvearrowright {\Umathchar "3"0"0021B7 } -\def\cwopencirclearrow {\Umathchar "3"0"0021BB } -\def\dag {\Umathchar "0"0"002020 } -\def\dagger {\Umathchar "2"0"002020 } -\def\daleth {\Umathchar "0"0"002138 } -\def\dasharrow {\Umathchar "3"0"0021E2 } -\def\dashedleftarrow {\Umathchar "3"0"00290C } -\def\dashedrightarrow {\Umathchar "3"0"00290D } -\def\dashv {\Umathchar "3"0"0022A3 } -\def\ddag {\Umathchar "0"0"002021 } -\def\ddagger {\Umathchar "2"0"002021 } -\def\dddot {\Umathaccent"0"0"0020DB } -\def\ddot {\Umathaccent"0"0"0000A8 } -\def\ddots {\Umathchar "0"0"0022F1 } -\def\Ddownarrow {\Umathchar "3"0"00290B } -\def\definedeq {\Umathchar "3"0"00225D } -\def\Delta {\Umathchar "0"0"000394 } -\def\delta {\Umathchar "0"0"0003B4 } -\def\diamond {\Umathchar "2"0"0022C4 } -\def\diamondsuit {\Umathchar "0"0"002662 } -\def\differentialD {\Umathchar "0"0"002145 } -\def\differentiald {\Umathchar "0"0"002146 } -\def\digamma {\Umathchar "0"0"0003DC } -\def\div {\Umathchar "2"0"0000F7 } -\def\divideontimes {\Umathchar "2"0"0022C7 } -\def\divides {\Umathchar "2"0"002223 } -\def\dot {\Umathaccent"0"0"0002D9 } -\def\doteq {\Umathchar "3"0"002250 } -\def\Doteq {\Umathchar "3"0"002251 } -\def\doteqdot {\Umathchar "3"0"002251 } -\def\dotminus {\Umathchar "2"0"002238 } -\def\dotplus {\Umathchar "2"0"002214 } -\def\dots {\Umathchar "0"0"002026 } -\def\dottedrightarrow {\Umathchar "3"0"002911 } -\def\doublecap {\Umathchar "2"0"0022D2 } -\def\doublecup {\Umathchar "2"0"0022D3 } -\def\doubleprime {\Umathchar "0"0"002033 } -\def\downarrow {\Umathchar "3"0"002193 } -\def\Downarrow {\Umathchar "3"0"0021D3 } -\def\downdasharrow {\Umathchar "3"0"0021E3 } -\def\downdownarrows {\Umathchar "3"0"0021CA } -\def\downharpoonleft {\Umathchar "3"0"0021C3 } -\def\downharpoonright {\Umathchar "3"0"0021C2 } -\def\downuparrows {\Umathchar "3"0"0021F5 } -\def\downwhitearrow {\Umathchar "0"0"0021E9 } -\def\downzigzagarrow {\Umathchar "3"0"0021AF } -\def\ell {\Umathchar "0"0"002113 } -\def\emptyset {\Umathchar "0"0"002205 } -\def\Epsilon {\Umathchar "0"0"000395 } -\def\epsilon {\Umathchar "0"0"0003F5 } -\def\eq {\Umathchar "3"0"00003D } -\def\eqcirc {\Umathchar "3"0"002256 } -\def\eqgtr {\Umathchar "3"0"0022DD } -\def\eqless {\Umathchar "3"0"0022DC } -\def\eqsim {\Umathchar "3"0"002242 } -\def\eqslantgtr {\Umathchar "3"0"002A96 } -\def\eqslantless {\Umathchar "3"0"002A95 } -\def\equalscolon {\Umathchar "3"0"002255 } -\def\equiv {\Umathchar "3"0"002261 } -\def\Eta {\Umathchar "0"0"000397 } -\def\eta {\Umathchar "0"0"0003B7 } -\def\eth {\Umathchar "0"0"0000F0 } -\def\Eulerconst {\Umathchar "0"0"002107 } -\def\exists {\Umathchar "0"0"002203 } -\def\exponentiale {\Umathchar "0"0"002147 } -\def\fallingdotseq {\Umathchar "3"0"002252 } -\def\Finv {\Umathchar "0"0"002132 } -\def\flat {\Umathchar "0"0"00266D } -\def\forall {\Umathchar "0"0"002200 } -\def\frown {\Umathchar "3"0"002322 } -\def\Game {\Umathchar "0"0"002141 } -\def\Gamma {\Umathchar "0"0"000393 } -\def\gamma {\Umathchar "0"0"0003B3 } -\def\ge {\Umathchar "3"0"002265 } -\def\geq {\Umathchar "3"0"002265 } -\def\geqq {\Umathchar "3"0"002267 } -\def\geqslant {\Umathchar "3"0"002A7E } -\def\gets {\Umathchar "3"0"002190 } -\def\gg {\Umathchar "3"0"00226B } -\def\ggg {\Umathchar "3"0"0022D9 } -\def\gggtr {\Umathchar "3"0"0022D9 } -\def\gimel {\Umathchar "0"0"002137 } -\def\gnapprox {\Umathchar "3"0"002A8A } -\def\gneqq {\Umathchar "3"0"002269 } -\def\gnsim {\Umathchar "3"0"0022E7 } -\def\grave {\Umathaccent"0"0"000060 } -\def\gt {\Umathchar "3"0"00003E } -\def\gtrapprox {\Umathchar "3"0"002A86 } -\def\gtrdot {\Umathchar "2"0"0022D7 } -\def\gtreqless {\Umathchar "3"0"0022DB } -\def\gtreqqless {\Umathchar "3"0"002A8C } -\def\gtrless {\Umathchar "3"0"002277 } -\def\gtrsim {\Umathchar "3"0"002273 } -\def\hat {\Umathaccent"0"0"0002C6 } -\def\hbar {\Umathchar "0"0"00210F } -\def\heartsuit {\Umathchar "0"0"002661 } -\def\hookleftarrow {\Umathchar "3"0"0021A9 } -\def\hookrightarrow {\Umathchar "3"0"0021AA } -\def\hslash {\Umathchar "0"0"00210F } -\def\iiint {\Umathchar "1"0"00222D } -\def\iiintop {\Umathchar "0"0"00222D } -\def\iint {\Umathchar "1"0"00222C } -\def\iintop {\Umathchar "0"0"00222C } -\def\Im {\Umathchar "0"0"002111 } -\def\imaginaryi {\Umathchar "0"0"002148 } -\def\imaginaryj {\Umathchar "0"0"002149 } -\def\imath {\Umathchar "0"0"01D6A4 } -\def\imply {\Umathchar "3"0"0021D2 } -\def\in {\Umathchar "0"0"002208 } -\def\infty {\Umathchar "0"0"00221E } -\def\int {\Umathchar "1"0"00222B } -\def\intclockwise {\Umathchar "1"0"002231 } -\def\integers {\Umathchar "0"0"002124 } -\def\intercal {\Umathchar "2"0"0022BA } -\def\intop {\Umathchar "0"0"00222B } -\def\Iota {\Umathchar "0"0"000399 } -\def\iota {\Umathchar "0"0"0003B9 } -\def\jmath {\Umathchar "0"0"01D6A5 } -\def\Join {\Umathchar "3"0"0022C8 } -\def\Kappa {\Umathchar "0"0"00039A } -\def\kappa {\Umathchar "0"0"0003BA } -\def\Lambda {\Umathchar "0"0"00039B } -\def\lambda {\Umathchar "0"0"0003BB } -\def\land {\Umathchar "2"0"002227 } -\def\langle {\Udelimiter "4"0"0027E8 } -\def\lbrace {\Udelimiter "4"0"00007B } -\def\lbrack {\Udelimiter "4"0"00005B } -\def\lceil {\Udelimiter "4"0"002308 } -\def\lceiling {\Udelimiter "4"0"002308 } -\def\ldotp {\Umathchar "6"0"00002E } -\def\ldots {\Umathchar "0"0"002026 } -\def\Ldsh {\Umathchar "3"0"0021B2 } -\def\le {\Umathchar "3"0"002264 } -\def\leadsto {\Umathchar "3"0"0021DD } -\def\leftarrow {\Umathchar "3"0"002190 } -\def\Leftarrow {\Umathchar "3"0"0021D0 } -\def\leftarrowtail {\Umathchar "3"0"0021A2 } -\def\leftarrowtriangle {\Umathchar "3"0"0021FD } -\def\leftdasharrow {\Umathchar "3"0"0021E0 } -\def\leftharpoondown {\Umathchar "3"0"0021BD } -\def\leftharpoonup {\Umathchar "3"0"0021BC } -\def\leftleftarrows {\Umathchar "3"0"0021C7 } -\def\leftrightarrow {\Umathchar "3"0"002194 } -\def\Leftrightarrow {\Umathchar "3"0"0021D4 } -\def\leftrightarrows {\Umathchar "3"0"0021C6 } -\def\leftrightarrowtriangle {\Umathchar "3"0"0021FF } -\def\leftrightharpoons {\Umathchar "3"0"0021CB } -\def\leftrightsquigarrow {\Umathchar "3"0"0021AD } -\def\leftsquigarrow {\Umathchar "3"0"0021DC } -\def\leftthreetimes {\Umathchar "2"0"0022CB } -\def\leftwavearrow {\Umathchar "3"0"00219C } -\def\leftwhitearrow {\Umathchar "0"0"0021E6 } -\def\leq {\Umathchar "3"0"002264 } -\def\leqq {\Umathchar "3"0"002266 } -\def\leqslant {\Umathchar "3"0"002A7D } -\def\lessapprox {\Umathchar "3"0"002A85 } -\def\lessdot {\Umathchar "2"0"0022D6 } -\def\lesseqgtr {\Umathchar "3"0"0022DA } -\def\lesseqqgtr {\Umathchar "3"0"002A8B } -\def\lessgtr {\Umathchar "3"0"002276 } -\def\lesssim {\Umathchar "3"0"002272 } -\def\lfloor {\Udelimiter "4"0"00230A } -\def\lgroup {\Udelimiter "4"0"0027EE } -\def\lhook {\Umathchar "3"0"0FE322 } -\def\lhooknwarrow {\Umathchar "3"0"002923 } -\def\lhooksearrow {\Umathchar "3"0"002925 } -\def\linefeed {\Umathchar "0"0"0021B4 } -\def\ll {\Umathchar "3"0"00226A } -\def\llangle {\Udelimiter "4"0"0027EA } -\def\llbracket {\Udelimiter "4"0"0027E6 } -\def\llcorner {\Udelimiter "4"0"00231E } -\def\Lleftarrow {\Umathchar "3"0"0021DA } -\def\lll {\Umathchar "3"0"0022D8 } -\def\llless {\Umathchar "3"0"0022D8 } -\def\lmoustache {\Udelimiter "4"0"0023B0 } -\def\lnapprox {\Umathchar "3"0"002A89 } -\def\lneq {\Umathchar "3"0"002A87 } -\def\lneqq {\Umathchar "3"0"002268 } -\def\lnot {\Umathchar "0"0"0000AC } -\def\lnsim {\Umathchar "3"0"0022E6 } -\def\longleftarrow {\Umathchar "3"0"0027F5 } -\def\Longleftarrow {\Umathchar "3"0"0027F8 } -\def\longleftrightarrow {\Umathchar "3"0"0027F7 } -\def\Longleftrightarrow {\Umathchar "3"0"0027FA } -\def\longmapsfrom {\Umathchar "3"0"0027FB } -\def\Longmapsfrom {\Umathchar "3"0"0027FD } -\def\longmapsto {\Umathchar "3"0"0027FC } -\def\Longmapsto {\Umathchar "3"0"0027FE } -\def\longrightarrow {\Umathchar "3"0"0027F6 } -\def\Longrightarrow {\Umathchar "3"0"0027F9 } -\def\longrightsquigarrow {\Umathchar "3"0"0027FF } -\def\looparrowleft {\Umathchar "3"0"0021AB } -\def\looparrowright {\Umathchar "3"0"0021AC } -\def\lor {\Umathchar "2"0"002228 } -\def\lozenge {\Umathchar "0"0"0025CA } -\def\lparent {\Udelimiter "4"0"000028 } -\def\lrcorner {\Udelimiter "5"0"00231F } -\def\Lsh {\Umathchar "3"0"0021B0 } -\def\lt {\Umathchar "3"0"00003C } -\def\ltimes {\Umathchar "2"0"0022C9 } -\def\lvert {\Udelimiter "4"0"00007C } -\def\lVert {\Udelimiter "4"0"002016 } -\def\maltese {\Umathchar "0"0"002720 } -\def\mapsdown {\Umathchar "3"0"0021A7 } -\def\mapsfrom {\Umathchar "3"0"0021A4 } -\def\Mapsfrom {\Umathchar "3"0"002906 } -\def\mapsfromchar {\Umathchar "3"0"0FE324 } -\def\mapsto {\Umathchar "3"0"0021A6 } -\def\Mapsto {\Umathchar "3"0"002907 } -\def\mapstochar {\Umathchar "3"0"0FE321 } -\def\mapsup {\Umathchar "3"0"0021A5 } -\def\mathring {\Umathaccent"0"0"0002DA } -\def\measuredangle {\Umathchar "0"0"002221 } -\def\measuredeq {\Umathchar "3"0"00225E } -\def\mho {\Umathchar "0"0"002127 } -\def\mid {\Umathchar "3"0"00007C } -\def\minus {\Umathchar "2"0"002212 } -\def\minuscolon {\Umathchar "2"0"002239 } -\def\models {\Umathchar "3"0"0022A7 } -\def\mp {\Umathchar "2"0"002213 } -\def\Mu {\Umathchar "0"0"00039C } -\def\mu {\Umathchar "0"0"0003BC } -\def\multimap {\Umathchar "3"0"0022B8 } -\def\napprox {\Umathchar "3"0"002249 } -\def\napproxEq {\Umathchar "3"0"002246 } -\def\nasymp {\Umathchar "3"0"00226D } -\def\natural {\Umathchar "0"0"00266E } -\def\naturalnumbers {\Umathchar "0"0"002115 } -\def\ncong {\Umathchar "3"0"002246 } -\def\ndivides {\Umathchar "2"0"002224 } -\def\ne {\Umathchar "3"0"002260 } -\def\nearrow {\Umathchar "3"0"002197 } -\def\Nearrow {\Umathchar "3"0"0021D7 } -\def\neg {\Umathchar "0"0"0000AC } -\def\negativesign {\Umathchar "2"0"00207B } -\def\neq {\Umathchar "3"0"002260 } -\def\nequiv {\Umathchar "3"0"002262 } -\def\neswarrow {\Umathchar "3"0"002922 } -\def\nexists {\Umathchar "0"0"002204 } -\def\ngeq {\Umathchar "3"0"002271 } -\def\ngtr {\Umathchar "3"0"00226F } -\def\ngtrless {\Umathchar "3"0"002279 } -\def\ngtrsim {\Umathchar "3"0"002275 } -\def\nHdownarrow {\Umathchar "3"0"0021DF } -\def\nHuparrow {\Umathchar "3"0"0021DE } -\def\ni {\Umathchar "3"0"00220B } -\def\nin {\Umathchar "3"0"002209 } -\def\nleftarrow {\Umathchar "3"0"00219A } -\def\nLeftarrow {\Umathchar "3"0"0021CD } -\def\nleftrightarrow {\Umathchar "3"0"0021AE } -\def\nLeftrightarrow {\Umathchar "3"0"0021CE } -\def\nleq {\Umathchar "3"0"002270 } -\def\nless {\Umathchar "3"0"00226E } -\def\nlessgtr {\Umathchar "3"0"002278 } -\def\nlesssim {\Umathchar "3"0"002274 } -\def\nmid {\Umathchar "3"0"002224 } -\def\nni {\Umathchar "3"0"00220C } -\def\not {\Umathchar "3"0"000338 } -\def\notin {\Umathchar "3"0"002209 } -\def\nowns {\Umathchar "3"0"00220C } -\def\nparallel {\Umathchar "3"0"002226 } -\def\nprec {\Umathchar "3"0"002280 } -\def\npreccurlyeq {\Umathchar "3"0"0022E0 } -\def\nrightarrow {\Umathchar "3"0"00219B } -\def\nRightarrow {\Umathchar "3"0"0021CF } -\def\nsim {\Umathchar "3"0"002241 } -\def\nsimeq {\Umathchar "3"0"002244 } -\def\nsqsubseteq {\Umathchar "3"0"0022E2 } -\def\nsqsupseteq {\Umathchar "3"0"0022E3 } -\def\nsubset {\Umathchar "3"0"002284 } -\def\nsubseteq {\Umathchar "3"0"002288 } -\def\nsucc {\Umathchar "3"0"002281 } -\def\nsucccurlyeq {\Umathchar "3"0"0022E1 } -\def\nsupset {\Umathchar "3"0"002285 } -\def\nsupseteq {\Umathchar "3"0"002289 } -\def\ntriangleleft {\Umathchar "3"0"0022EB } -\def\ntrianglelefteq {\Umathchar "3"0"0022EC } -\def\ntriangleright {\Umathchar "3"0"0022EA } -\def\ntrianglerighteq {\Umathchar "3"0"0022ED } -\def\Nu {\Umathchar "0"0"00039D } -\def\nu {\Umathchar "0"0"0003BD } -\def\nvdash {\Umathchar "3"0"0022AC } -\def\nvDash {\Umathchar "3"0"0022AD } -\def\nVdash {\Umathchar "3"0"0022AE } -\def\nVDash {\Umathchar "3"0"0022AF } -\def\nvleftarrow {\Umathchar "3"0"0021F7 } -\def\nVleftarrow {\Umathchar "3"0"0021FA } -\def\nvleftrightarrow {\Umathchar "3"0"0021F9 } -\def\nVleftrightarrow {\Umathchar "3"0"0021FC } -\def\nvrightarrow {\Umathchar "3"0"0021F8 } -\def\nVrightarrow {\Umathchar "3"0"0021FB } -\def\nwarrow {\Umathchar "3"0"002196 } -\def\Nwarrow {\Umathchar "3"0"0021D6 } -\def\nwsearrow {\Umathchar "3"0"002921 } -\def\odot {\Umathchar "2"0"002299 } -\def\ohm {\Umathchar "0"0"002126 } -\def\oiiint {\Umathchar "1"0"002230 } -\def\oiint {\Umathchar "1"0"00222F } -\def\oint {\Umathchar "1"0"00222E } -\def\ointclockwise {\Umathchar "1"0"002232 } -\def\ointctrclockwise {\Umathchar "1"0"002233 } -\def\Omega {\Umathchar "0"0"0003A9 } -\def\omega {\Umathchar "0"0"0003C9 } -\def\Omicron {\Umathchar "0"0"00039F } -\def\omicron {\Umathchar "0"0"0003BF } -\def\ominus {\Umathchar "2"0"002296 } -\def\oplus {\Umathchar "2"0"002295 } -\def\oslash {\Umathchar "2"0"002298 } -\def\otimes {\Umathchar "2"0"002297 } -\def\overbar {\Umathaccent"0"0"00203E } -\def\overbrace {\Umathaccent"0"0"0023DE } -\def\overbracket {\Umathaccent"0"0"0023B4 } -\def\overparent {\Umathaccent"0"0"0023DC } -\def\owns {\Umathchar "3"0"00220B } -\def\P {\Umathchar "0"0"0000B6 } -\def\parallel {\Umathchar "3"0"002225 } -\def\partial {\Umathchar "0"0"002202 } -\def\perp {\Umathchar "3"0"0022A5 } -\def\Phi {\Umathchar "0"0"0003A6 } -\def\phi {\Umathchar "0"0"0003D5 } -\def\Pi {\Umathchar "0"0"0003A0 } -\def\pi {\Umathchar "0"0"0003C0 } -\def\pitchfork {\Umathchar "3"0"0022D4 } -\def\Plankconst {\Umathchar "0"0"00210E } -\def\pm {\Umathchar "2"0"0000B1 } -\def\positivesign {\Umathchar "2"0"00207A } -\def\prec {\Umathchar "3"0"00227A } -\def\precapprox {\Umathchar "3"0"002AB7 } -\def\preccurlyeq {\Umathchar "3"0"00227C } -\def\preceq {\Umathchar "3"0"002AAF } -\def\preceqq {\Umathchar "3"0"002AB3 } -\def\precnapprox {\Umathchar "3"0"002AB9 } -\def\precneq {\Umathchar "3"0"002AB1 } -\def\precneqq {\Umathchar "3"0"002AB5 } -\def\precnsim {\Umathchar "3"0"0022E8 } -\def\precsim {\Umathchar "3"0"00227E } -\def\prime {\Umathchar "0"0"002032 } -\def\primes {\Umathchar "0"0"002119 } -\def\prod {\Umathchar "1"0"00220F } -\def\PropertyLine {\Umathchar "0"0"00214A } -\def\propto {\Umathchar "3"0"00221D } -\def\Psi {\Umathchar "0"0"0003A8 } -\def\psi {\Umathchar "0"0"0003C8 } -\def\questionedeq {\Umathchar "3"0"00225F } -\def\rangle {\Udelimiter "5"0"0027E9 } -\def\rationals {\Umathchar "0"0"00211A } -\def\rbrace {\Udelimiter "5"0"00007D } -\def\rbrack {\Udelimiter "5"0"00005D } -\def\rceil {\Udelimiter "5"0"002309 } -\def\rceiling {\Udelimiter "5"0"002309 } -\def\Rdsh {\Umathchar "3"0"0021B3 } -\def\Re {\Umathchar "0"0"00211C } -\def\reals {\Umathchar "0"0"00211D } -\def\Relbar {\Umathchar "3"0"00003D } -\def\relbar {\Umathchar "3"0"002212 } -\def\restriction {\Umathchar "3"0"0021BE } -\def\rfloor {\Udelimiter "5"0"00230B } -\def\rgroup {\Udelimiter "5"0"0027EF } -\def\Rho {\Umathchar "0"0"0003A1 } -\def\rho {\Umathchar "0"0"0003C1 } -\def\rhook {\Umathchar "3"0"0FE323 } -\def\rhooknearrow {\Umathchar "3"0"002924 } -\def\rhookswarrow {\Umathchar "3"0"002926 } -\def\rightangle {\Umathchar "0"0"00221F } -\def\rightarrow {\Umathchar "3"0"002192 } -\def\Rightarrow {\Umathchar "3"0"0021D2 } -\def\rightarrowbar {\Umathchar "3"0"0021E5 } -\def\rightarrowtail {\Umathchar "3"0"0021A3 } -\def\rightarrowtriangle {\Umathchar "3"0"0021FE } -\def\rightdasharrow {\Umathchar "3"0"0021E2 } -\def\rightharpoondown {\Umathchar "3"0"0021C1 } -\def\rightharpoonup {\Umathchar "3"0"0021C0 } -\def\rightleftarrows {\Umathchar "3"0"0021C4 } -\def\rightleftharpoons {\Umathchar "3"0"0021CC } -\def\rightrightarrows {\Umathchar "3"0"0021C9 } -\def\rightsquigarrow {\Umathchar "3"0"0021DD } -\def\rightthreearrows {\Umathchar "3"0"0021F6 } -\def\rightthreetimes {\Umathchar "2"0"0022CC } -\def\rightwavearrow {\Umathchar "3"0"00219D } -\def\rightwhitearrow {\Umathchar "0"0"0021E8 } -\def\risingdotseq {\Umathchar "3"0"002253 } -\def\rmoustache {\Udelimiter "5"0"0023B1 } -\def\rneq {\Umathchar "3"0"002A88 } -\def\rparent {\Udelimiter "5"0"000029 } -\def\rrangle {\Udelimiter "5"0"0027EB } -\def\rrbracket {\Udelimiter "5"0"0027E7 } -\def\Rrightarrow {\Umathchar "3"0"0021DB } -\def\Rsh {\Umathchar "3"0"0021B1 } -\def\rtimes {\Umathchar "2"0"0022CA } -\def\rvert {\Udelimiter "5"0"00007C } -\def\rVert {\Udelimiter "5"0"002016 } -\def\S {\Umathchar "0"0"0000A7 } -\def\searrow {\Umathchar "3"0"002198 } -\def\Searrow {\Umathchar "3"0"0021D8 } -\def\setminus {\Umathchar "2"0"002216 } -\def\sharp {\Umathchar "0"0"00266F } -\def\Sigma {\Umathchar "0"0"0003A3 } -\def\sigma {\Umathchar "0"0"0003C3 } -\def\sim {\Umathchar "3"0"00223C } -\def\simeq {\Umathchar "3"0"002243 } -\def\slash {\Umathchar "0"0"002044 } -\def\smile {\Umathchar "3"0"002323 } -\def\solidus {\Udelimiter "5"0"002044 } -\def\spadesuit {\Umathchar "0"0"002660 } -\def\sphericalangle {\Umathchar "0"0"002222 } -\def\sqcap {\Umathchar "2"0"002293 } -\def\sqcup {\Umathchar "2"0"002294 } -\def\sqsubset {\Umathchar "3"0"00228F } -\def\sqsubseteq {\Umathchar "2"0"002291 } -\def\sqsubsetneq {\Umathchar "3"0"0022E4 } -\def\sqsupset {\Umathchar "3"0"002290 } -\def\sqsupseteq {\Umathchar "2"0"002292 } -\def\sqsupsetneq {\Umathchar "3"0"0022E5 } -\def\square {\Umathchar "0"0"0025A1 } -\def\squaredots {\Umathchar "3"0"002237 } -\def\star {\Umathchar "2"0"0022C6 } -\def\stareq {\Umathchar "3"0"00225B } -\def\subset {\Umathchar "3"0"002282 } -\def\Subset {\Umathchar "3"0"0022D0 } -\def\subseteq {\Umathchar "3"0"002286 } -\def\subseteqq {\Umathchar "3"0"002AC5 } -\def\subsetneq {\Umathchar "3"0"00228A } -\def\subsetneqq {\Umathchar "3"0"002ACB } -\def\succ {\Umathchar "3"0"00227B } -\def\succapprox {\Umathchar "3"0"002AB8 } -\def\succcurlyeq {\Umathchar "3"0"00227D } -\def\succeq {\Umathchar "3"0"002AB0 } -\def\succeqq {\Umathchar "3"0"002AB4 } -\def\succnapprox {\Umathchar "3"0"002ABA } -\def\succneq {\Umathchar "3"0"002AB2 } -\def\succneqq {\Umathchar "3"0"002AB6 } -\def\succnsim {\Umathchar "3"0"0022E9 } -\def\succsim {\Umathchar "3"0"00227F } -\def\sum {\Umathchar "1"0"002211 } -\def\supset {\Umathchar "3"0"002283 } -\def\Supset {\Umathchar "3"0"0022D1 } -\def\supseteq {\Umathchar "3"0"002287 } -\def\supseteqq {\Umathchar "3"0"002AC6 } -\def\supsetneq {\Umathchar "3"0"00228B } -\def\supsetneqq {\Umathchar "3"0"002ACC } -\def\surd {\Umathchar "2"0"00221A } -\def\swarrow {\Umathchar "3"0"002199 } -\def\Swarrow {\Umathchar "3"0"0021D9 } -\def\Tau {\Umathchar "0"0"0003A4 } -\def\tau {\Umathchar "0"0"0003C4 } -\def\therefore {\Umathchar "3"0"002234 } -\def\Theta {\Umathchar "0"0"000398 } -\def\theta {\Umathchar "0"0"0003B8 } -\def\tilde {\Umathaccent"0"0"0002DC } -\def\times {\Umathchar "2"0"0000D7 } -\def\to {\Umathchar "3"0"002192 } -\def\top {\Umathchar "0"0"0022A4 } -\def\triangle {\Umathchar "0"0"0025B3 } -\def\triangledown {\Umathchar "2"0"0025BD } -\def\triangleleft {\Umathchar "2"0"0025C1 } -\def\triangleq {\Umathchar "3"0"00225C } -\def\triangleright {\Umathchar "2"0"0025B7 } -\def\tripleprime {\Umathchar "0"0"002034 } -\def\turnediota {\Umathchar "0"0"002129 } -\def\twoheaddownarrow {\Umathchar "3"0"0021A1 } -\def\twoheadleftarrow {\Umathchar "3"0"00219E } -\def\twoheadrightarrow {\Umathchar "3"0"0021A0 } -\def\twoheadrightarrowtail {\Umathchar "3"0"002916 } -\def\twoheaduparrow {\Umathchar "3"0"00219F } -\def\udots {\Umathchar "0"0"0022F0 } -\def\ulcorner {\Udelimiter "4"0"00231C } -\def\underbar {\Umathaccent bottom "0"0"00203E } -\def\underbrace {\Umathaccent bottom "0"0"0023DF } -\def\underbracket {\Umathaccent bottom "0"0"0023B5 } -\def\underparent {\Umathaccent bottom "0"0"0023DD } -\def\upand {\Umathchar "2"0"00214B } -\def\uparrow {\Umathchar "3"0"002191 } -\def\Uparrow {\Umathchar "3"0"0021D1 } -\def\updasharrow {\Umathchar "3"0"0021E1 } -\def\updownarrow {\Umathchar "3"0"002195 } -\def\Updownarrow {\Umathchar "3"0"0021D5 } -\def\updownarrowbar {\Umathchar "0"0"0021A8 } -\def\updownarrows {\Umathchar "3"0"0021C5 } -\def\upharpoonleft {\Umathchar "3"0"0021BF } -\def\upharpoonright {\Umathchar "3"0"0021BE } -\def\uplus {\Umathchar "2"0"00228E } -\def\Upsilon {\Umathchar "0"0"0003A5 } -\def\upsilon {\Umathchar "0"0"0003C5 } -\def\upuparrows {\Umathchar "3"0"0021C8 } -\def\upwhitearrow {\Umathchar "0"0"0021E7 } -\def\urcorner {\Udelimiter "5"0"00231D } -\def\Uuparrow {\Umathchar "3"0"00290A } -\def\varepsilon {\Umathchar "0"0"0003B5 } -\def\varkappa {\Umathchar "0"0"0003F0 } -\def\varkappa {\Umathchar "0"0"0003F0 } -\def\varnothing {\Umathchar "0"0"002300 } -\def\varphi {\Umathchar "0"0"0003C6 } -\def\varpi {\Umathchar "0"0"0003D6 } -\def\varrho {\Umathchar "0"0"01D71A } -\def\varsigma {\Umathchar "0"0"0003C2 } -\def\vartheta {\Umathchar "0"0"01D717 } -\def\varTheta {\Umathchar "0"0"0003D1 } -\def\vdash {\Umathchar "3"0"0022A2 } -\def\vDash {\Umathchar "3"0"0022A8 } -\def\Vdash {\Umathchar "3"0"0022A9 } -\def\VDash {\Umathchar "3"0"0022AB } -\def\vdots {\Umathchar "0"0"0022EE } -\def\vec {\Umathaccent"0"0"0020D7 } -\def\vee {\Umathchar "2"0"002228 } -\def\veebar {\Umathchar "2"0"0022BB } -\def\veeeq {\Umathchar "3"0"00225A } -\def\vert {\Udelimiter "0"0"00007C } -\def\Vert {\Udelimiter "0"0"002016 } -\def\Vvdash {\Umathchar "3"0"0022AA } -\def\wedge {\Umathchar "2"0"002227 } -\def\wedgeeq {\Umathchar "3"0"002259 } -\def\whitearrowupfrombar {\Umathchar "0"0"0021EB } -\def\widehat {\Umathaccent"0"0"000302 } -\def\widetilde {\Umathaccent"0"0"000303 } -\def\wp {\Umathchar "0"0"002118 } -\def\wr {\Umathchar "2"0"002240 } -\def\Xi {\Umathchar "0"0"00039E } -\def\xi {\Umathchar "0"0"0003BE } -\def\yen {\Umathchar "0"0"0000A5 } -\def\Zeta {\Umathchar "0"0"000396 } -\def\zeta {\Umathchar "0"0"0003B6 } +\protected\def\acute {\Umathaccent"0"0"0000B4 } +\protected\def\acwopencirclearrow {\Umathchar "3"0"0021BA } +\protected\def\aleph {\Umathchar "0"0"002135 } +\protected\def\Alpha {\Umathchar "0"0"000391 } +\protected\def\alpha {\Umathchar "0"0"0003B1 } +\protected\def\amalg {\Umathchar "2"0"002A3F } +\protected\def\angle {\Umathchar "0"0"002220 } +\protected\def\Angstrom {\Umathchar "0"0"00212B } +\protected\def\approx {\Umathchar "3"0"002248 } +\protected\def\approxEq {\Umathchar "3"0"002245 } +\protected\def\approxeq {\Umathchar "3"0"00224A } +\protected\def\approxnEq {\Umathchar "3"0"002247 } +\protected\def\arrowvert {\Umathchar "0"0"00007C } +\protected\def\Arrowvert {\Umathchar "0"0"002016 } +\protected\def\ast {\Umathchar "2"0"002217 } +\protected\def\ast {\Umathchar "2"0"002217 } +\protected\def\asymp {\Umathchar "3"0"00224D } +\protected\def\backepsilon {\Umathchar "0"0"0003F6 } +\protected\def\backprime {\Umathchar "0"0"012035 } +\protected\def\backsim {\Umathchar "3"0"00223D } +\protected\def\backslash {\Umathchar "0"0"00005C } +\protected\def\bar {\Umathaccent"0"0"0000AF } +\protected\def\barleftarrow {\Umathchar "3"0"0021E4 } +\protected\def\barleftarrowrightarrowbar {\Umathchar "3"0"0021B9 } +\protected\def\barovernorthwestarrow {\Umathchar "3"0"0021B8 } +\protected\def\barwedge {\Umathchar "2"0"0022BC } +\protected\def\because {\Umathchar "3"0"002235 } +\protected\def\Beta {\Umathchar "0"0"000392 } +\protected\def\beta {\Umathchar "0"0"0003B2 } +\protected\def\beth {\Umathchar "0"0"002136 } +\protected\def\between {\Umathchar "3"0"00226C } +\protected\def\bigcap {\Umathchar "1"0"0022C2 } +\protected\def\bigcirc {\Umathchar "2"0"0025EF } +\protected\def\bigcircle {\Umathchar "2"0"0020DD } +\protected\def\bigcircle {\Umathchar "2"0"0020DD } +\protected\def\bigcup {\Umathchar "1"0"0022C3 } +\protected\def\bigdiamond {\Umathchar "0"0"0020DF } +\protected\def\bigodot {\Umathchar "1"0"002A00 } +\protected\def\bigoplus {\Umathchar "1"0"002A01 } +\protected\def\bigotimes {\Umathchar "1"0"002A02 } +\protected\def\bigsqcap {\Umathchar "1"0"002A05 } +\protected\def\bigsqcup {\Umathchar "1"0"002A06 } +\protected\def\bigsquare {\Umathchar "0"0"0020DE } +\protected\def\bigstar {\Umathchar "0"0"002605 } +\protected\def\bigtimes {\Umathchar "1"0"002A09 } +\protected\def\bigtriangledown {\Umathchar "2"0"0025BD } +\protected\def\bigtriangleup {\Umathchar "2"0"0025B3 } +\protected\def\bigudot {\Umathchar "1"0"002A03 } +\protected\def\biguplus {\Umathchar "1"0"002A04 } +\protected\def\bigvee {\Umathchar "1"0"0022C1 } +\protected\def\bigwedge {\Umathchar "1"0"0022C0 } +\protected\def\blacklozenge {\Umathchar "0"0"002666 } +\protected\def\blacksquare {\Umathchar "0"0"0025A0 } +\protected\def\blacktriangle {\Umathchar "2"0"0025B2 } +\protected\def\blacktriangledown {\Umathchar "2"0"0025BC } +\protected\def\blacktriangleleft {\Umathchar "2"0"0025C0 } +\protected\def\blacktriangleright {\Umathchar "2"0"0025B6 } +\protected\def\bot {\Umathchar "0"0"0022A5 } +\protected\def\bowtie {\Umathchar "3"0"0022C8 } +\protected\def\Box {\Umathchar "0"0"0025A1 } +\protected\def\boxdot {\Umathchar "2"0"0022A1 } +\protected\def\boxminus {\Umathchar "2"0"00229F } +\protected\def\boxplus {\Umathchar "2"0"00229E } +\protected\def\boxtimes {\Umathchar "2"0"0022A0 } +%protected\def\braceld {\Umathchar "0"0"000000 } +%protected\def\bracerd {\Umathchar "0"0"000000 } +%protected\def\bracelu {\Umathchar "0"0"000000 } +%protected\def\braceru {\Umathchar "0"0"000000 } +\protected\def\breve {\Umathaccent"0"0"0002D8 } +\protected\def\bullet {\Umathchar "2"0"002022 } +\protected\def\bullet {\Umathchar "2"0"002022 } +\protected\def\Bumpeq {\Umathchar "3"0"00224E } +\protected\def\cap {\Umathchar "2"0"002229 } +\protected\def\Cap {\Umathchar "2"0"0022D2 } +\protected\def\carriagereturn {\Umathchar "0"0"0021B5 } +\protected\def\cdot {\Umathchar "2"0"0022C5 } +\protected\def\cdotp {\Umathchar "6"0"0022C5 } +\protected\def\cdots {\Umathchar "0"0"0022EF } +\protected\def\centerdot {\Umathchar "2"0"0000B7 } +\protected\def\check {\Umathaccent"0"0"0002C7 } +\protected\def\checkmark {\Umathchar "0"0"002713 } +\protected\def\Chi {\Umathchar "0"0"0003A7 } +\protected\def\chi {\Umathchar "0"0"0003C7 } +\protected\def\circ {\Umathchar "2"0"002218 } +\protected\def\circeq {\Umathchar "3"0"002257 } +\protected\def\circlearrowleft {\Umathchar "3"0"0021BB } +\protected\def\circlearrowright {\Umathchar "3"0"0021BA } +\protected\def\circledast {\Umathchar "2"0"00229B } +\protected\def\circledcirc {\Umathchar "2"0"00229A } +\protected\def\circleddash {\Umathchar "2"0"00229D } +\protected\def\circledequals {\Umathchar "2"0"00229C } +\protected\def\circledR {\Umathchar "0"0"0024C7 } +\protected\def\circledS {\Umathchar "0"0"0024C8 } +\protected\def\circleonrightarrow {\Umathchar "3"0"0021F4 } +\protected\def\clubsuit {\Umathchar "0"0"002663 } +\protected\def\colon {\Umathchar "6"0"002236 } +\protected\def\colonequals {\Umathchar "3"0"002254 } +\protected\def\complement {\Umathchar "0"0"002201 } +\protected\def\complexes {\Umathchar "0"0"002102 } +\protected\def\cong {\Umathchar "3"0"002245 } +\protected\def\coprod {\Umathchar "1"0"002210 } +\protected\def\cup {\Umathchar "2"0"00222A } +\protected\def\Cup {\Umathchar "2"0"0022D3 } +\protected\def\curlyeqprec {\Umathchar "3"0"0022DE } +\protected\def\curlyeqsucc {\Umathchar "3"0"0022DF } +\protected\def\curlyvee {\Umathchar "2"0"0022CE } +\protected\def\curlywedge {\Umathchar "2"0"0022CF } +\protected\def\curvearrowleft {\Umathchar "3"0"0021B6 } +\protected\def\curvearrowright {\Umathchar "3"0"0021B7 } +\protected\def\cwopencirclearrow {\Umathchar "3"0"0021BB } +\protected\def\dag {\Umathchar "0"0"002020 } +\protected\def\dagger {\Umathchar "2"0"002020 } +\protected\def\daleth {\Umathchar "0"0"002138 } +\protected\def\dasharrow {\Umathchar "3"0"0021E2 } +\protected\def\dashedleftarrow {\Umathchar "3"0"00290C } +\protected\def\dashedrightarrow {\Umathchar "3"0"00290D } +\protected\def\dashv {\Umathchar "3"0"0022A3 } +\protected\def\ddag {\Umathchar "0"0"002021 } +\protected\def\ddagger {\Umathchar "2"0"002021 } +\protected\def\dddot {\Umathaccent"0"0"0020DB } +\protected\def\ddot {\Umathaccent"0"0"0000A8 } +\protected\def\ddots {\Umathchar "0"0"0022F1 } +\protected\def\Ddownarrow {\Umathchar "3"0"00290B } +\protected\def\definedeq {\Umathchar "3"0"00225D } +\protected\def\Delta {\Umathchar "0"0"000394 } +\protected\def\delta {\Umathchar "0"0"0003B4 } +\protected\def\diamond {\Umathchar "2"0"0022C4 } +\protected\def\diamondsuit {\Umathchar "0"0"002662 } +\protected\def\differentialD {\Umathchar "0"0"002145 } +\protected\def\differentiald {\Umathchar "0"0"002146 } +\protected\def\digamma {\Umathchar "0"0"0003DC } +\protected\def\div {\Umathchar "2"0"0000F7 } +\protected\def\divideontimes {\Umathchar "2"0"0022C7 } +\protected\def\divides {\Umathchar "2"0"002223 } +\protected\def\dot {\Umathaccent"0"0"0002D9 } +\protected\def\doteq {\Umathchar "3"0"002250 } +\protected\def\Doteq {\Umathchar "3"0"002251 } +\protected\def\doteqdot {\Umathchar "3"0"002251 } +\protected\def\dotminus {\Umathchar "2"0"002238 } +\protected\def\dotplus {\Umathchar "2"0"002214 } +\protected\def\dots {\Umathchar "0"0"002026 } +\protected\def\dottedrightarrow {\Umathchar "3"0"002911 } +\protected\def\doublecap {\Umathchar "2"0"0022D2 } +\protected\def\doublecup {\Umathchar "2"0"0022D3 } +\protected\def\doubleprime {\Umathchar "0"0"002033 } +\protected\def\downarrow {\Umathchar "3"0"002193 } +\protected\def\Downarrow {\Umathchar "3"0"0021D3 } +\protected\def\downdasharrow {\Umathchar "3"0"0021E3 } +\protected\def\downdownarrows {\Umathchar "3"0"0021CA } +\protected\def\downharpoonleft {\Umathchar "3"0"0021C3 } +\protected\def\downharpoonright {\Umathchar "3"0"0021C2 } +\protected\def\downuparrows {\Umathchar "3"0"0021F5 } +\protected\def\downwhitearrow {\Umathchar "0"0"0021E9 } +\protected\def\downzigzagarrow {\Umathchar "3"0"0021AF } +\protected\def\ell {\Umathchar "0"0"002113 } +\protected\def\emptyset {\Umathchar "0"0"002205 } +\protected\def\Epsilon {\Umathchar "0"0"000395 } +\protected\def\epsilon {\Umathchar "0"0"0003F5 } +\protected\def\eq {\Umathchar "3"0"00003D } +\protected\def\eqcirc {\Umathchar "3"0"002256 } +\protected\def\eqgtr {\Umathchar "3"0"0022DD } +\protected\def\eqless {\Umathchar "3"0"0022DC } +\protected\def\eqsim {\Umathchar "3"0"002242 } +\protected\def\eqslantgtr {\Umathchar "3"0"002A96 } +\protected\def\eqslantless {\Umathchar "3"0"002A95 } +\protected\def\equalscolon {\Umathchar "3"0"002255 } +\protected\def\equiv {\Umathchar "3"0"002261 } +\protected\def\Eta {\Umathchar "0"0"000397 } +\protected\def\eta {\Umathchar "0"0"0003B7 } +\protected\def\eth {\Umathchar "0"0"0000F0 } +\protected\def\Eulerconst {\Umathchar "0"0"002107 } +\protected\def\exists {\Umathchar "0"0"002203 } +\protected\def\exponentiale {\Umathchar "0"0"002147 } +\protected\def\fallingdotseq {\Umathchar "3"0"002252 } +\protected\def\Finv {\Umathchar "0"0"002132 } +\protected\def\flat {\Umathchar "0"0"00266D } +\protected\def\forall {\Umathchar "0"0"002200 } +\protected\def\frown {\Umathchar "3"0"002322 } +\protected\def\Game {\Umathchar "0"0"002141 } +\protected\def\Gamma {\Umathchar "0"0"000393 } +\protected\def\gamma {\Umathchar "0"0"0003B3 } +\protected\def\ge {\Umathchar "3"0"002265 } +\protected\def\geq {\Umathchar "3"0"002265 } +\protected\def\geqq {\Umathchar "3"0"002267 } +\protected\def\geqslant {\Umathchar "3"0"002A7E } +\protected\def\gets {\Umathchar "3"0"002190 } +\protected\def\gg {\Umathchar "3"0"00226B } +\protected\def\ggg {\Umathchar "3"0"0022D9 } +\protected\def\gggtr {\Umathchar "3"0"0022D9 } +\protected\def\gimel {\Umathchar "0"0"002137 } +\protected\def\gnapprox {\Umathchar "3"0"002A8A } +\protected\def\gneqq {\Umathchar "3"0"002269 } +\protected\def\gnsim {\Umathchar "3"0"0022E7 } +\protected\def\grave {\Umathaccent"0"0"000060 } +\protected\def\gt {\Umathchar "3"0"00003E } +\protected\def\gtrapprox {\Umathchar "3"0"002A86 } +\protected\def\gtrdot {\Umathchar "2"0"0022D7 } +\protected\def\gtreqless {\Umathchar "3"0"0022DB } +\protected\def\gtreqqless {\Umathchar "3"0"002A8C } +\protected\def\gtrless {\Umathchar "3"0"002277 } +\protected\def\gtrsim {\Umathchar "3"0"002273 } +\protected\def\hat {\Umathaccent"0"0"0002C6 } +\protected\def\hbar {\Umathchar "0"0"00210F } +\protected\def\heartsuit {\Umathchar "0"0"002661 } +\protected\def\hookleftarrow {\Umathchar "3"0"0021A9 } +\protected\def\hookrightarrow {\Umathchar "3"0"0021AA } +\protected\def\hslash {\Umathchar "0"0"00210F } +\protected\def\iiint {\Umathchar "1"0"00222D } +\protected\def\iiintop {\Umathchar "0"0"00222D } +\protected\def\iint {\Umathchar "1"0"00222C } +\protected\def\iintop {\Umathchar "0"0"00222C } +\protected\def\Im {\Umathchar "0"0"002111 } +\protected\def\imaginaryi {\Umathchar "0"0"002148 } +\protected\def\imaginaryj {\Umathchar "0"0"002149 } +\protected\def\imath {\Umathchar "0"0"01D6A4 } +\protected\def\imply {\Umathchar "3"0"0021D2 } +\protected\def\in {\Umathchar "0"0"002208 } +\protected\def\infty {\Umathchar "0"0"00221E } +\protected\def\int {\Umathchar "1"0"00222B } +\protected\def\intclockwise {\Umathchar "1"0"002231 } +\protected\def\integers {\Umathchar "0"0"002124 } +\protected\def\intercal {\Umathchar "2"0"0022BA } +\protected\def\intop {\Umathchar "0"0"00222B } +\protected\def\Iota {\Umathchar "0"0"000399 } +\protected\def\iota {\Umathchar "0"0"0003B9 } +\protected\def\jmath {\Umathchar "0"0"01D6A5 } +\protected\def\Join {\Umathchar "3"0"0022C8 } +\protected\def\Kappa {\Umathchar "0"0"00039A } +\protected\def\kappa {\Umathchar "0"0"0003BA } +\protected\def\Lambda {\Umathchar "0"0"00039B } +\protected\def\lambda {\Umathchar "0"0"0003BB } +\protected\def\land {\Umathchar "2"0"002227 } +\protected\def\langle {\Udelimiter "4"0"0027E8 } +\protected\def\lbrace {\Udelimiter "4"0"00007B } +\protected\def\lbrack {\Udelimiter "4"0"00005B } +\protected\def\lceil {\Udelimiter "4"0"002308 } +\protected\def\lceiling {\Udelimiter "4"0"002308 } +\protected\def\ldotp {\Umathchar "6"0"00002E } +\protected\def\ldots {\Umathchar "0"0"002026 } +\protected\def\Ldsh {\Umathchar "3"0"0021B2 } +\protected\def\le {\Umathchar "3"0"002264 } +\protected\def\leadsto {\Umathchar "3"0"0021DD } +\protected\def\leftarrow {\Umathchar "3"0"002190 } +\protected\def\Leftarrow {\Umathchar "3"0"0021D0 } +\protected\def\leftarrowtail {\Umathchar "3"0"0021A2 } +\protected\def\leftarrowtriangle {\Umathchar "3"0"0021FD } +\protected\def\leftdasharrow {\Umathchar "3"0"0021E0 } +\protected\def\leftharpoondown {\Umathchar "3"0"0021BD } +\protected\def\leftharpoonup {\Umathchar "3"0"0021BC } +\protected\def\leftleftarrows {\Umathchar "3"0"0021C7 } +\protected\def\leftrightarrow {\Umathchar "3"0"002194 } +\protected\def\Leftrightarrow {\Umathchar "3"0"0021D4 } +\protected\def\leftrightarrows {\Umathchar "3"0"0021C6 } +\protected\def\leftrightarrowtriangle {\Umathchar "3"0"0021FF } +\protected\def\leftrightharpoons {\Umathchar "3"0"0021CB } +\protected\def\leftrightsquigarrow {\Umathchar "3"0"0021AD } +\protected\def\leftsquigarrow {\Umathchar "3"0"0021DC } +\protected\def\leftthreetimes {\Umathchar "2"0"0022CB } +\protected\def\leftwavearrow {\Umathchar "3"0"00219C } +\protected\def\leftwhitearrow {\Umathchar "0"0"0021E6 } +\protected\def\leq {\Umathchar "3"0"002264 } +\protected\def\leqq {\Umathchar "3"0"002266 } +\protected\def\leqslant {\Umathchar "3"0"002A7D } +\protected\def\lessapprox {\Umathchar "3"0"002A85 } +\protected\def\lessdot {\Umathchar "2"0"0022D6 } +\protected\def\lesseqgtr {\Umathchar "3"0"0022DA } +\protected\def\lesseqqgtr {\Umathchar "3"0"002A8B } +\protected\def\lessgtr {\Umathchar "3"0"002276 } +\protected\def\lesssim {\Umathchar "3"0"002272 } +\protected\def\lfloor {\Udelimiter "4"0"00230A } +\protected\def\lgroup {\Udelimiter "4"0"0027EE } +\protected\def\lhook {\Umathchar "3"0"0FE322 } +\protected\def\lhooknwarrow {\Umathchar "3"0"002923 } +\protected\def\lhooksearrow {\Umathchar "3"0"002925 } +\protected\def\linefeed {\Umathchar "0"0"0021B4 } +\protected\def\ll {\Umathchar "3"0"00226A } +\protected\def\llangle {\Udelimiter "4"0"0027EA } +\protected\def\llbracket {\Udelimiter "4"0"0027E6 } +\protected\def\llcorner {\Udelimiter "4"0"00231E } +\protected\def\Lleftarrow {\Umathchar "3"0"0021DA } +\protected\def\lll {\Umathchar "3"0"0022D8 } +\protected\def\llless {\Umathchar "3"0"0022D8 } +\protected\def\lmoustache {\Udelimiter "4"0"0023B0 } +\protected\def\lnapprox {\Umathchar "3"0"002A89 } +\protected\def\lneq {\Umathchar "3"0"002A87 } +\protected\def\lneqq {\Umathchar "3"0"002268 } +\protected\def\lnot {\Umathchar "0"0"0000AC } +\protected\def\lnsim {\Umathchar "3"0"0022E6 } +\protected\def\longleftarrow {\Umathchar "3"0"0027F5 } +\protected\def\Longleftarrow {\Umathchar "3"0"0027F8 } +\protected\def\longleftrightarrow {\Umathchar "3"0"0027F7 } +\protected\def\Longleftrightarrow {\Umathchar "3"0"0027FA } +\protected\def\longmapsfrom {\Umathchar "3"0"0027FB } +\protected\def\Longmapsfrom {\Umathchar "3"0"0027FD } +\protected\def\longmapsto {\Umathchar "3"0"0027FC } +\protected\def\Longmapsto {\Umathchar "3"0"0027FE } +\protected\def\longrightarrow {\Umathchar "3"0"0027F6 } +\protected\def\Longrightarrow {\Umathchar "3"0"0027F9 } +\protected\def\longrightsquigarrow {\Umathchar "3"0"0027FF } +\protected\def\looparrowleft {\Umathchar "3"0"0021AB } +\protected\def\looparrowright {\Umathchar "3"0"0021AC } +\protected\def\lor {\Umathchar "2"0"002228 } +\protected\def\lozenge {\Umathchar "0"0"0025CA } +\protected\def\lparent {\Udelimiter "4"0"000028 } +\protected\def\lrcorner {\Udelimiter "5"0"00231F } +\protected\def\Lsh {\Umathchar "3"0"0021B0 } +\protected\def\lt {\Umathchar "3"0"00003C } +\protected\def\ltimes {\Umathchar "2"0"0022C9 } +\protected\def\lvert {\Udelimiter "4"0"00007C } +\protected\def\lVert {\Udelimiter "4"0"002016 } +\protected\def\maltese {\Umathchar "0"0"002720 } +\protected\def\mapsdown {\Umathchar "3"0"0021A7 } +\protected\def\mapsfrom {\Umathchar "3"0"0021A4 } +\protected\def\Mapsfrom {\Umathchar "3"0"002906 } +\protected\def\mapsfromchar {\Umathchar "3"0"0FE324 } +\protected\def\mapsto {\Umathchar "3"0"0021A6 } +\protected\def\Mapsto {\Umathchar "3"0"002907 } +\protected\def\mapstochar {\Umathchar "3"0"0FE321 } +\protected\def\mapsup {\Umathchar "3"0"0021A5 } +\protected\def\mathring {\Umathaccent"0"0"0002DA } +\protected\def\measuredangle {\Umathchar "0"0"002221 } +\protected\def\measuredeq {\Umathchar "3"0"00225E } +\protected\def\mho {\Umathchar "0"0"002127 } +\protected\def\mid {\Umathchar "3"0"00007C } +\protected\def\minus {\Umathchar "2"0"002212 } +\protected\def\minuscolon {\Umathchar "2"0"002239 } +\protected\def\models {\Umathchar "3"0"0022A7 } +\protected\def\mp {\Umathchar "2"0"002213 } +\protected\def\Mu {\Umathchar "0"0"00039C } +\protected\def\mu {\Umathchar "0"0"0003BC } +\protected\def\multimap {\Umathchar "3"0"0022B8 } +\protected\def\napprox {\Umathchar "3"0"002249 } +\protected\def\napproxEq {\Umathchar "3"0"002246 } +\protected\def\nasymp {\Umathchar "3"0"00226D } +\protected\def\natural {\Umathchar "0"0"00266E } +\protected\def\naturalnumbers {\Umathchar "0"0"002115 } +\protected\def\ncong {\Umathchar "3"0"002246 } +\protected\def\ndivides {\Umathchar "2"0"002224 } +\protected\def\ne {\Umathchar "3"0"002260 } +\protected\def\nearrow {\Umathchar "3"0"002197 } +\protected\def\Nearrow {\Umathchar "3"0"0021D7 } +\protected\def\neg {\Umathchar "0"0"0000AC } +\protected\def\negativesign {\Umathchar "2"0"00207B } +\protected\def\neq {\Umathchar "3"0"002260 } +\protected\def\nequiv {\Umathchar "3"0"002262 } +\protected\def\neswarrow {\Umathchar "3"0"002922 } +\protected\def\nexists {\Umathchar "0"0"002204 } +\protected\def\ngeq {\Umathchar "3"0"002271 } +\protected\def\ngtr {\Umathchar "3"0"00226F } +\protected\def\ngtrless {\Umathchar "3"0"002279 } +\protected\def\ngtrsim {\Umathchar "3"0"002275 } +\protected\def\nHdownarrow {\Umathchar "3"0"0021DF } +\protected\def\nHuparrow {\Umathchar "3"0"0021DE } +\protected\def\ni {\Umathchar "3"0"00220B } +\protected\def\nin {\Umathchar "3"0"002209 } +\protected\def\nleftarrow {\Umathchar "3"0"00219A } +\protected\def\nLeftarrow {\Umathchar "3"0"0021CD } +\protected\def\nleftrightarrow {\Umathchar "3"0"0021AE } +\protected\def\nLeftrightarrow {\Umathchar "3"0"0021CE } +\protected\def\nleq {\Umathchar "3"0"002270 } +\protected\def\nless {\Umathchar "3"0"00226E } +\protected\def\nlessgtr {\Umathchar "3"0"002278 } +\protected\def\nlesssim {\Umathchar "3"0"002274 } +\protected\def\nmid {\Umathchar "3"0"002224 } +\protected\def\nni {\Umathchar "3"0"00220C } +\protected\def\not {\Umathchar "3"0"000338 } +\protected\def\notin {\Umathchar "3"0"002209 } +\protected\def\nowns {\Umathchar "3"0"00220C } +\protected\def\nparallel {\Umathchar "3"0"002226 } +\protected\def\nprec {\Umathchar "3"0"002280 } +\protected\def\npreccurlyeq {\Umathchar "3"0"0022E0 } +\protected\def\nrightarrow {\Umathchar "3"0"00219B } +\protected\def\nRightarrow {\Umathchar "3"0"0021CF } +\protected\def\nsim {\Umathchar "3"0"002241 } +\protected\def\nsimeq {\Umathchar "3"0"002244 } +\protected\def\nsqsubseteq {\Umathchar "3"0"0022E2 } +\protected\def\nsqsupseteq {\Umathchar "3"0"0022E3 } +\protected\def\nsubset {\Umathchar "3"0"002284 } +\protected\def\nsubseteq {\Umathchar "3"0"002288 } +\protected\def\nsucc {\Umathchar "3"0"002281 } +\protected\def\nsucccurlyeq {\Umathchar "3"0"0022E1 } +\protected\def\nsupset {\Umathchar "3"0"002285 } +\protected\def\nsupseteq {\Umathchar "3"0"002289 } +\protected\def\ntriangleleft {\Umathchar "3"0"0022EB } +\protected\def\ntrianglelefteq {\Umathchar "3"0"0022EC } +\protected\def\ntriangleright {\Umathchar "3"0"0022EA } +\protected\def\ntrianglerighteq {\Umathchar "3"0"0022ED } +\protected\def\Nu {\Umathchar "0"0"00039D } +\protected\def\nu {\Umathchar "0"0"0003BD } +\protected\def\nvdash {\Umathchar "3"0"0022AC } +\protected\def\nvDash {\Umathchar "3"0"0022AD } +\protected\def\nVdash {\Umathchar "3"0"0022AE } +\protected\def\nVDash {\Umathchar "3"0"0022AF } +\protected\def\nvleftarrow {\Umathchar "3"0"0021F7 } +\protected\def\nVleftarrow {\Umathchar "3"0"0021FA } +\protected\def\nvleftrightarrow {\Umathchar "3"0"0021F9 } +\protected\def\nVleftrightarrow {\Umathchar "3"0"0021FC } +\protected\def\nvrightarrow {\Umathchar "3"0"0021F8 } +\protected\def\nVrightarrow {\Umathchar "3"0"0021FB } +\protected\def\nwarrow {\Umathchar "3"0"002196 } +\protected\def\Nwarrow {\Umathchar "3"0"0021D6 } +\protected\def\nwsearrow {\Umathchar "3"0"002921 } +\protected\def\odot {\Umathchar "2"0"002299 } +\protected\def\ohm {\Umathchar "0"0"002126 } +\protected\def\oiiint {\Umathchar "1"0"002230 } +\protected\def\oiint {\Umathchar "1"0"00222F } +\protected\def\oint {\Umathchar "1"0"00222E } +\protected\def\ointclockwise {\Umathchar "1"0"002232 } +\protected\def\ointctrclockwise {\Umathchar "1"0"002233 } +\protected\def\Omega {\Umathchar "0"0"0003A9 } +\protected\def\omega {\Umathchar "0"0"0003C9 } +\protected\def\Omicron {\Umathchar "0"0"00039F } +\protected\def\omicron {\Umathchar "0"0"0003BF } +\protected\def\ominus {\Umathchar "2"0"002296 } +\protected\def\oplus {\Umathchar "2"0"002295 } +\protected\def\oslash {\Umathchar "2"0"002298 } +\protected\def\otimes {\Umathchar "2"0"002297 } +\protected\def\overbar {\Umathaccent"0"0"00203E } +\protected\def\overbrace {\Umathaccent"0"0"0023DE } +\protected\def\overbracket {\Umathaccent"0"0"0023B4 } +\protected\def\overparent {\Umathaccent"0"0"0023DC } +\protected\def\owns {\Umathchar "3"0"00220B } +\protected\def\P {\Umathchar "0"0"0000B6 } +\protected\def\parallel {\Umathchar "3"0"002225 } +\protected\def\partial {\Umathchar "0"0"002202 } +\protected\def\perp {\Umathchar "3"0"0022A5 } +\protected\def\Phi {\Umathchar "0"0"0003A6 } +\protected\def\phi {\Umathchar "0"0"0003D5 } +\protected\def\Pi {\Umathchar "0"0"0003A0 } +\protected\def\pi {\Umathchar "0"0"0003C0 } +\protected\def\pitchfork {\Umathchar "3"0"0022D4 } +\protected\def\Plankconst {\Umathchar "0"0"00210E } +\protected\def\pm {\Umathchar "2"0"0000B1 } +\protected\def\positivesign {\Umathchar "2"0"00207A } +\protected\def\prec {\Umathchar "3"0"00227A } +\protected\def\precapprox {\Umathchar "3"0"002AB7 } +\protected\def\preccurlyeq {\Umathchar "3"0"00227C } +\protected\def\preceq {\Umathchar "3"0"002AAF } +\protected\def\preceqq {\Umathchar "3"0"002AB3 } +\protected\def\precnapprox {\Umathchar "3"0"002AB9 } +\protected\def\precneq {\Umathchar "3"0"002AB1 } +\protected\def\precneqq {\Umathchar "3"0"002AB5 } +\protected\def\precnsim {\Umathchar "3"0"0022E8 } +\protected\def\precsim {\Umathchar "3"0"00227E } +\protected\def\prime {\Umathchar "0"0"002032 } +\protected\def\primes {\Umathchar "0"0"002119 } +\protected\def\prod {\Umathchar "1"0"00220F } +\protected\def\PropertyLine {\Umathchar "0"0"00214A } +\protected\def\propto {\Umathchar "3"0"00221D } +\protected\def\Psi {\Umathchar "0"0"0003A8 } +\protected\def\psi {\Umathchar "0"0"0003C8 } +\protected\def\questionedeq {\Umathchar "3"0"00225F } +\protected\def\rangle {\Udelimiter "5"0"0027E9 } +\protected\def\rationals {\Umathchar "0"0"00211A } +\protected\def\rbrace {\Udelimiter "5"0"00007D } +\protected\def\rbrack {\Udelimiter "5"0"00005D } +\protected\def\rceil {\Udelimiter "5"0"002309 } +\protected\def\rceiling {\Udelimiter "5"0"002309 } +\protected\def\Rdsh {\Umathchar "3"0"0021B3 } +\protected\def\Re {\Umathchar "0"0"00211C } +\protected\def\reals {\Umathchar "0"0"00211D } +\protected\def\Relbar {\Umathchar "3"0"00003D } +\protected\def\relbar {\Umathchar "3"0"002212 } +\protected\def\restriction {\Umathchar "3"0"0021BE } +\protected\def\rfloor {\Udelimiter "5"0"00230B } +\protected\def\rgroup {\Udelimiter "5"0"0027EF } +\protected\def\Rho {\Umathchar "0"0"0003A1 } +\protected\def\rho {\Umathchar "0"0"0003C1 } +\protected\def\rhook {\Umathchar "3"0"0FE323 } +\protected\def\rhooknearrow {\Umathchar "3"0"002924 } +\protected\def\rhookswarrow {\Umathchar "3"0"002926 } +\protected\def\rightangle {\Umathchar "0"0"00221F } +\protected\def\rightarrow {\Umathchar "3"0"002192 } +\protected\def\Rightarrow {\Umathchar "3"0"0021D2 } +\protected\def\rightarrowbar {\Umathchar "3"0"0021E5 } +\protected\def\rightarrowtail {\Umathchar "3"0"0021A3 } +\protected\def\rightarrowtriangle {\Umathchar "3"0"0021FE } +\protected\def\rightdasharrow {\Umathchar "3"0"0021E2 } +\protected\def\rightharpoondown {\Umathchar "3"0"0021C1 } +\protected\def\rightharpoonup {\Umathchar "3"0"0021C0 } +\protected\def\rightleftarrows {\Umathchar "3"0"0021C4 } +\protected\def\rightleftharpoons {\Umathchar "3"0"0021CC } +\protected\def\rightrightarrows {\Umathchar "3"0"0021C9 } +\protected\def\rightsquigarrow {\Umathchar "3"0"0021DD } +\protected\def\rightthreearrows {\Umathchar "3"0"0021F6 } +\protected\def\rightthreetimes {\Umathchar "2"0"0022CC } +\protected\def\rightwavearrow {\Umathchar "3"0"00219D } +\protected\def\rightwhitearrow {\Umathchar "0"0"0021E8 } +\protected\def\risingdotseq {\Umathchar "3"0"002253 } +\protected\def\rmoustache {\Udelimiter "5"0"0023B1 } +\protected\def\rneq {\Umathchar "3"0"002A88 } +\protected\def\rparent {\Udelimiter "5"0"000029 } +\protected\def\rrangle {\Udelimiter "5"0"0027EB } +\protected\def\rrbracket {\Udelimiter "5"0"0027E7 } +\protected\def\Rrightarrow {\Umathchar "3"0"0021DB } +\protected\def\Rsh {\Umathchar "3"0"0021B1 } +\protected\def\rtimes {\Umathchar "2"0"0022CA } +\protected\def\rvert {\Udelimiter "5"0"00007C } +\protected\def\rVert {\Udelimiter "5"0"002016 } +\protected\def\S {\Umathchar "0"0"0000A7 } +\protected\def\searrow {\Umathchar "3"0"002198 } +\protected\def\Searrow {\Umathchar "3"0"0021D8 } +\protected\def\setminus {\Umathchar "2"0"002216 } +\protected\def\sharp {\Umathchar "0"0"00266F } +\protected\def\Sigma {\Umathchar "0"0"0003A3 } +\protected\def\sigma {\Umathchar "0"0"0003C3 } +\protected\def\sim {\Umathchar "3"0"00223C } +\protected\def\simeq {\Umathchar "3"0"002243 } +\protected\def\slash {\Umathchar "0"0"002044 } +\protected\def\smile {\Umathchar "3"0"002323 } +\protected\def\solidus {\Udelimiter "5"0"002044 } +\protected\def\spadesuit {\Umathchar "0"0"002660 } +\protected\def\sphericalangle {\Umathchar "0"0"002222 } +\protected\def\sqcap {\Umathchar "2"0"002293 } +\protected\def\sqcup {\Umathchar "2"0"002294 } +\protected\def\sqsubset {\Umathchar "3"0"00228F } +\protected\def\sqsubseteq {\Umathchar "2"0"002291 } +\protected\def\sqsubsetneq {\Umathchar "3"0"0022E4 } +\protected\def\sqsupset {\Umathchar "3"0"002290 } +\protected\def\sqsupseteq {\Umathchar "2"0"002292 } +\protected\def\sqsupsetneq {\Umathchar "3"0"0022E5 } +\protected\def\square {\Umathchar "0"0"0025A1 } +\protected\def\squaredots {\Umathchar "3"0"002237 } +\protected\def\star {\Umathchar "2"0"0022C6 } +\protected\def\stareq {\Umathchar "3"0"00225B } +\protected\def\subset {\Umathchar "3"0"002282 } +\protected\def\Subset {\Umathchar "3"0"0022D0 } +\protected\def\subseteq {\Umathchar "3"0"002286 } +\protected\def\subseteqq {\Umathchar "3"0"002AC5 } +\protected\def\subsetneq {\Umathchar "3"0"00228A } +\protected\def\subsetneqq {\Umathchar "3"0"002ACB } +\protected\def\succ {\Umathchar "3"0"00227B } +\protected\def\succapprox {\Umathchar "3"0"002AB8 } +\protected\def\succcurlyeq {\Umathchar "3"0"00227D } +\protected\def\succeq {\Umathchar "3"0"002AB0 } +\protected\def\succeqq {\Umathchar "3"0"002AB4 } +\protected\def\succnapprox {\Umathchar "3"0"002ABA } +\protected\def\succneq {\Umathchar "3"0"002AB2 } +\protected\def\succneqq {\Umathchar "3"0"002AB6 } +\protected\def\succnsim {\Umathchar "3"0"0022E9 } +\protected\def\succsim {\Umathchar "3"0"00227F } +\protected\def\sum {\Umathchar "1"0"002211 } +\protected\def\supset {\Umathchar "3"0"002283 } +\protected\def\Supset {\Umathchar "3"0"0022D1 } +\protected\def\supseteq {\Umathchar "3"0"002287 } +\protected\def\supseteqq {\Umathchar "3"0"002AC6 } +\protected\def\supsetneq {\Umathchar "3"0"00228B } +\protected\def\supsetneqq {\Umathchar "3"0"002ACC } +\protected\def\surd {\Umathchar "2"0"00221A } +\protected\def\swarrow {\Umathchar "3"0"002199 } +\protected\def\Swarrow {\Umathchar "3"0"0021D9 } +\protected\def\Tau {\Umathchar "0"0"0003A4 } +\protected\def\tau {\Umathchar "0"0"0003C4 } +\protected\def\therefore {\Umathchar "3"0"002234 } +\protected\def\Theta {\Umathchar "0"0"000398 } +\protected\def\theta {\Umathchar "0"0"0003B8 } +\protected\def\tilde {\Umathaccent"0"0"0002DC } +\protected\def\times {\Umathchar "2"0"0000D7 } +\protected\def\to {\Umathchar "3"0"002192 } +\protected\def\top {\Umathchar "0"0"0022A4 } +\protected\def\triangle {\Umathchar "0"0"0025B3 } +\protected\def\triangledown {\Umathchar "2"0"0025BD } +\protected\def\triangleleft {\Umathchar "2"0"0025C1 } +\protected\def\triangleq {\Umathchar "3"0"00225C } +\protected\def\triangleright {\Umathchar "2"0"0025B7 } +\protected\def\tripleprime {\Umathchar "0"0"002034 } +\protected\def\turnediota {\Umathchar "0"0"002129 } +\protected\def\twoheaddownarrow {\Umathchar "3"0"0021A1 } +\protected\def\twoheadleftarrow {\Umathchar "3"0"00219E } +\protected\def\twoheadrightarrow {\Umathchar "3"0"0021A0 } +\protected\def\twoheadrightarrowtail {\Umathchar "3"0"002916 } +\protected\def\twoheaduparrow {\Umathchar "3"0"00219F } +\protected\def\udots {\Umathchar "0"0"0022F0 } +\protected\def\ulcorner {\Udelimiter "4"0"00231C } +\protected\def\underbar {\Umathaccent bottom "0"0"00203E } +\protected\def\underbrace {\Umathaccent bottom "0"0"0023DF } +\protected\def\underbracket {\Umathaccent bottom "0"0"0023B5 } +\protected\def\underparent {\Umathaccent bottom "0"0"0023DD } +\protected\def\upand {\Umathchar "2"0"00214B } +\protected\def\uparrow {\Umathchar "3"0"002191 } +\protected\def\Uparrow {\Umathchar "3"0"0021D1 } +\protected\def\updasharrow {\Umathchar "3"0"0021E1 } +\protected\def\updownarrow {\Umathchar "3"0"002195 } +\protected\def\Updownarrow {\Umathchar "3"0"0021D5 } +\protected\def\updownarrowbar {\Umathchar "0"0"0021A8 } +\protected\def\updownarrows {\Umathchar "3"0"0021C5 } +\protected\def\upharpoonleft {\Umathchar "3"0"0021BF } +\protected\def\upharpoonright {\Umathchar "3"0"0021BE } +\protected\def\uplus {\Umathchar "2"0"00228E } +\protected\def\Upsilon {\Umathchar "0"0"0003A5 } +\protected\def\upsilon {\Umathchar "0"0"0003C5 } +\protected\def\upuparrows {\Umathchar "3"0"0021C8 } +\protected\def\upwhitearrow {\Umathchar "0"0"0021E7 } +\protected\def\urcorner {\Udelimiter "5"0"00231D } +\protected\def\Uuparrow {\Umathchar "3"0"00290A } +\protected\def\varepsilon {\Umathchar "0"0"0003B5 } +\protected\def\varkappa {\Umathchar "0"0"0003F0 } +\protected\def\varkappa {\Umathchar "0"0"0003F0 } +\protected\def\varnothing {\Umathchar "0"0"002300 } +\protected\def\varphi {\Umathchar "0"0"0003C6 } +\protected\def\varpi {\Umathchar "0"0"0003D6 } +\protected\def\varrho {\Umathchar "0"0"01D71A } +\protected\def\varsigma {\Umathchar "0"0"0003C2 } +\protected\def\vartheta {\Umathchar "0"0"01D717 } +\protected\def\varTheta {\Umathchar "0"0"0003D1 } +\protected\def\vdash {\Umathchar "3"0"0022A2 } +\protected\def\vDash {\Umathchar "3"0"0022A8 } +\protected\def\Vdash {\Umathchar "3"0"0022A9 } +\protected\def\VDash {\Umathchar "3"0"0022AB } +\protected\def\vdots {\Umathchar "0"0"0022EE } +\protected\def\vec {\Umathaccent"0"0"0020D7 } +\protected\def\vee {\Umathchar "2"0"002228 } +\protected\def\veebar {\Umathchar "2"0"0022BB } +\protected\def\veeeq {\Umathchar "3"0"00225A } +\protected\def\vert {\Udelimiter "0"0"00007C } +\protected\def\Vert {\Udelimiter "0"0"002016 } +\protected\def\Vvdash {\Umathchar "3"0"0022AA } +\protected\def\wedge {\Umathchar "2"0"002227 } +\protected\def\wedgeeq {\Umathchar "3"0"002259 } +\protected\def\whitearrowupfrombar {\Umathchar "0"0"0021EB } +\protected\def\widehat {\Umathaccent"0"0"000302 } +\protected\def\widetilde {\Umathaccent"0"0"000303 } +\protected\def\wp {\Umathchar "0"0"002118 } +\protected\def\wr {\Umathchar "2"0"002240 } +\protected\def\Xi {\Umathchar "0"0"00039E } +\protected\def\xi {\Umathchar "0"0"0003BE } +\protected\def\yen {\Umathchar "0"0"0000A5 } +\protected\def\Zeta {\Umathchar "0"0"000396 } +\protected\def\zeta {\Umathchar "0"0"0003B6 } %D The following are suggested by Bruno. As I don't use plain and as the above are %D taken from text unicode greek I suppose his list is better: -\def\alpha {\Umathchar "0"0"01D6FC } -\def\beta {\Umathchar "0"0"01D6FD } -\def\chi {\Umathchar "0"0"01D712 } -\def\delta {\Umathchar "0"0"01D6FF } -\def\digamma {\Umathchar "0"0"0003DC } -\def\epsilon {\Umathchar "0"0"01D716 } -\def\eta {\Umathchar "0"0"01D702 } -\def\gamma {\Umathchar "0"0"01D6FE } -\def\iota {\Umathchar "0"0"01D704 } -\def\kappa {\Umathchar "0"0"01D705 } -\def\lambda {\Umathchar "0"0"01D706 } -\def\mu {\Umathchar "0"0"01D707 } -\def\nu {\Umathchar "0"0"01D708 } -\def\omega {\Umathchar "0"0"01D714 } -\def\omicron {\Umathchar "0"0"01D70A } -\def\phi {\Umathchar "0"0"01D719 } -\def\pi {\Umathchar "0"0"01D70B } -\def\psi {\Umathchar "0"0"01D713 } -\def\rho {\Umathchar "0"0"01D70C } -\def\sigma {\Umathchar "0"0"01D70E } -\def\tau {\Umathchar "0"0"01D70F } -\def\theta {\Umathchar "0"0"01D703 } -\def\upsilon {\Umathchar "0"0"01D710 } -\def\varepsilon {\Umathchar "0"0"01D700 } -\def\varkappa {\Umathchar "0"0"01D718 } -\def\varphi {\Umathchar "0"0"01D711 } -\def\varpi {\Umathchar "0"0"01D71B } -\def\varrho {\Umathchar "0"0"01D71A } -\def\varsigma {\Umathchar "0"0"01D70D } -\def\vartheta {\Umathchar "0"0"01D717 } -\def\xi {\Umathchar "0"0"01D709 } -\def\zeta {\Umathchar "0"0"01D701 } +\protected\def\alpha {\Umathchar "0"0"01D6FC } +\protected\def\beta {\Umathchar "0"0"01D6FD } +\protected\def\chi {\Umathchar "0"0"01D712 } +\protected\def\delta {\Umathchar "0"0"01D6FF } +\protected\def\digamma {\Umathchar "0"0"0003DC } +\protected\def\epsilon {\Umathchar "0"0"01D716 } +\protected\def\eta {\Umathchar "0"0"01D702 } +\protected\def\gamma {\Umathchar "0"0"01D6FE } +\protected\def\iota {\Umathchar "0"0"01D704 } +\protected\def\kappa {\Umathchar "0"0"01D705 } +\protected\def\lambda {\Umathchar "0"0"01D706 } +\protected\def\mu {\Umathchar "0"0"01D707 } +\protected\def\nu {\Umathchar "0"0"01D708 } +\protected\def\omega {\Umathchar "0"0"01D714 } +\protected\def\omicron {\Umathchar "0"0"01D70A } +\protected\def\phi {\Umathchar "0"0"01D719 } +\protected\def\pi {\Umathchar "0"0"01D70B } +\protected\def\psi {\Umathchar "0"0"01D713 } +\protected\def\rho {\Umathchar "0"0"01D70C } +\protected\def\sigma {\Umathchar "0"0"01D70E } +\protected\def\tau {\Umathchar "0"0"01D70F } +\protected\def\theta {\Umathchar "0"0"01D703 } +\protected\def\upsilon {\Umathchar "0"0"01D710 } +\protected\def\varepsilon {\Umathchar "0"0"01D700 } +\protected\def\varkappa {\Umathchar "0"0"01D718 } +\protected\def\varphi {\Umathchar "0"0"01D711 } +\protected\def\varpi {\Umathchar "0"0"01D71B } +\protected\def\varrho {\Umathchar "0"0"01D71A } +\protected\def\varsigma {\Umathchar "0"0"01D70D } +\protected\def\vartheta {\Umathchar "0"0"01D717 } +\protected\def\xi {\Umathchar "0"0"01D709 } +\protected\def\zeta {\Umathchar "0"0"01D701 } -\def\varTheta {\Umathchar "0"0"0003F4 } +\protected\def\varTheta {\Umathchar "0"0"0003F4 } % a few definitions: -\def\sqrt {\Uroot "0 "221A{}} -\def\root#1\of{\Uroot "0 "221A{#1}} +\protected\def\sqrt {\Uroot "0 "221A{}} +\protected\def\root#1\of{\Uroot "0 "221A{#1}} % \skewchar\teni='177 \skewchar\seveni='177 \skewchar\fivei='177 % \skewchar\tensy='60 \skewchar\sevensy='60 \skewchar\fivesy='60 @@ -2280,25 +2282,25 @@ % just use utf -\def\`#1{#1^^^^0300} -\def\'#1{#1^^^^0301} -\def\^#1{#1^^^^0302} -\def\~#1{#1^^^^0303} -\def\=#1{#1^^^^0304} -\def\u#1{#1^^^^0306} -\def\.#1{#1^^^^0307} -\def\"#1{#1^^^^0308} -\def\r#1{#1^^^^030a} % not in plain -\def\H#1{#1^^^^030b} -\def\v#1{#1^^^^030c} -\def\d#1{#1^^^^0323} -\def\c#1{#1^^^^0327} -\def\k#1{#1^^^^0328} % not in plain -\def\b#1{#1^^^^0331} +\protected\def\`#1{#1^^^^0300} +\protected\def\'#1{#1^^^^0301} +\protected\def\^#1{#1^^^^0302} +\protected\def\~#1{#1^^^^0303} +\protected\def\=#1{#1^^^^0304} +\protected\def\u#1{#1^^^^0306} +\protected\def\.#1{#1^^^^0307} +\protected\def\"#1{#1^^^^0308} +\protected\def\r#1{#1^^^^030a} % not in plain +\protected\def\H#1{#1^^^^030b} +\protected\def\v#1{#1^^^^030c} +\protected\def\d#1{#1^^^^0323} +\protected\def\c#1{#1^^^^0327} +\protected\def\k#1{#1^^^^0328} % not in plain +\protected\def\b#1{#1^^^^0331} -\def\*{\discretionary{\thinspace\the\textfont0\char"00D7}{}{}} +\protected\def\*{\discretionary{\thinspace\the\textfont0\char"00D7}{}{}} -\def\t#1{% +\protected\def\t#1{% %\quitvmode \begingroup \setbox0\hbox{#1}% @@ -2342,9 +2344,9 @@ \catcode`@=11 - \def\sqrt{\Uradical "0 "221A } + \protected\def\sqrt{\Uradical "0 "221A } - \def\root#1\of + \protected\def\root#1\of {\setbox\rootbox\hbox\bgroup $\m@th\scriptscriptstyle{#1}$% \egroup diff --git a/tex/generic/context/luatex/luatex-mplib.lua b/tex/generic/context/luatex/luatex-mplib.lua index 976bb59f9..785bc707c 100644 --- a/tex/generic/context/luatex/luatex-mplib.lua +++ b/tex/generic/context/luatex/luatex-mplib.lua @@ -230,7 +230,14 @@ else return "" end - function metapost.load(name) + local modes = { + scaled = true, + decimal = true, + binary = true, + double = true, + } + + function metapost.load(name,mode) local mpd = { buffer = { }, verbatim = { } @@ -241,6 +248,7 @@ else make_text = function(...) return metapost.maketext (mpd,...) end, run_script = function(...) return metapost.runscript(mpd,...) end, extensions = 1, + math_mode = mode and modes[mode] and mode or "scaled", } local result if not mpx then @@ -283,9 +291,9 @@ else return true end - function metapost.process(mpx, data) + function metapost.process(format,data,mode) local converted, result = false, {} - mpx = metapost.load(mpx) + local mpx = metapost.load(format,mode) if mpx and data then local result = mpx:execute(data) if not result then @@ -300,6 +308,8 @@ else else metapost.report("mp error: unknown error, maybe no beginfig/endfig") end +-- mpx:finish() +-- mpx = nil else metapost.report("mp error: mem file not found") end diff --git a/tex/generic/context/luatex/luatex-mplib.tex b/tex/generic/context/luatex/luatex-mplib.tex index f9de4b223..a99de37e4 100644 --- a/tex/generic/context/luatex/luatex-mplib.tex +++ b/tex/generic/context/luatex/luatex-mplib.tex @@ -29,6 +29,7 @@ %D \stoptyping \def\setmplibformat#1{\def\mplibformat{#1}} +\def\setmplibmode #1{\def\mplibmode {#1}} \def\setupmplibcatcodes {\catcode`\{=12 % could be optional .. not really needed @@ -39,7 +40,8 @@ \catcode`\_=12 \catcode`\%=12 \catcode`\&=12 - \catcode`\$=12 } + \catcode`\$=12 + \obeylines} \def\mplibcode {\bgroup @@ -48,11 +50,12 @@ \long\def\domplibcode#1\endmplibcode {\egroup - \directlua{metapost.process('\mplibformat',[[#1]])}} + \directlua{metapost.process('\mplibformat',[[#1]],'\mplibmode')}} %D We default to \type {plain} \METAPOST: \def\mplibformat{plain} +\def\mplibmode {scaled} %D We use a dedicated scratchbox: |