diff options
author | Hans Hagen <pragma@wxs.nl> | 2017-09-21 21:43:12 +0200 |
---|---|---|
committer | Context Git Mirror Bot <phg42.2a@gmail.com> | 2017-09-21 21:43:12 +0200 |
commit | f7ee609d470a08a16e5cdaad14582fc8ed993c5e (patch) | |
tree | 56f85523ff7b19d926d026f470bb2c75d192e23b /tex | |
parent | 772472f057060460c83828cf7fd1631298165e37 (diff) | |
download | context-f7ee609d470a08a16e5cdaad14582fc8ed993c5e.tar.gz |
2017-09-21 21:10:00
Diffstat (limited to 'tex')
44 files changed, 961 insertions, 758 deletions
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: |