diff options
Diffstat (limited to 'tex')
954 files changed, 8967 insertions, 6602 deletions
diff --git a/tex/context/base/anch-bar.mkii b/tex/context/base/anch-bar.mkii index d08573c0f..39d5c7f77 100644 --- a/tex/context/base/anch-bar.mkii +++ b/tex/context/base/anch-bar.mkii @@ -5,7 +5,7 @@ %D subtitle=Margin Bars and alike, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/anch-bar.mkiv b/tex/context/base/anch-bar.mkiv index 1013e7609..47cd4835e 100644 --- a/tex/context/base/anch-bar.mkiv +++ b/tex/context/base/anch-bar.mkiv @@ -5,7 +5,7 @@ %D subtitle=Margin Bars and alike, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/anch-pgr.mkii b/tex/context/base/anch-pgr.mkii index cc7ae77f4..ebcc3fc69 100644 --- a/tex/context/base/anch-pgr.mkii +++ b/tex/context/base/anch-pgr.mkii @@ -5,7 +5,7 @@ %D subtitle=Positioning Graphics, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/anch-pgr.mkiv b/tex/context/base/anch-pgr.mkiv index afa881933..8f3804fae 100644 --- a/tex/context/base/anch-pgr.mkiv +++ b/tex/context/base/anch-pgr.mkiv @@ -5,7 +5,7 @@ %D subtitle=Positioning Graphics, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -238,7 +238,7 @@ \fi} \appendtoks - \let\dohandlepositionboxes\doinsertpositionboxes % was handle ? + \let\dohandlepositionboxes\doinsertpositionboxes % was handle ? \to \everyinsertpositionaction \def\docleanpositionboxes#1#2#3% pos tag setups @@ -247,7 +247,7 @@ \fi} \appendtoks - \let\dohandlepositionboxes\docleanpositionboxes + \let\dohandlepositionboxes\docleanpositionboxes \to \everycleanpositionaction %D A position graphic is a normal (non||reused) \METAPOST\ @@ -352,7 +352,7 @@ \fi} \appendtoks - \let\dohandleMPpositiongraphic\doinsertMPpositiongraphic + \let\dohandleMPpositiongraphic\doinsertMPpositiongraphic \to \everyinsertpositionaction \def\docleanMPpositiongraphic#1#2#3% pos tag setups @@ -361,7 +361,7 @@ \fi} \appendtoks - \let\dohandleMPpositiongraphic\docleanMPpositiongraphic + \let\dohandleMPpositiongraphic\docleanMPpositiongraphic \to \everycleanpositionaction %D Graphics that span two positions (beware, does not cross pages). @@ -399,7 +399,7 @@ \fi} \appendtoks - \let\dohandleMPpositiongraphicrange\doinsertMPpositiongraphicrange + \let\dohandleMPpositiongraphicrange\doinsertMPpositiongraphicrange \to \everyinsertpositionaction \def\docleanMPpositiongraphicrange#1#2#3#4% pos tag setups @@ -408,7 +408,7 @@ \fi} \appendtoks - \let\dohandleMPpositiongraphicrange\docleanMPpositiongraphicrange + \let\dohandleMPpositiongraphicrange\docleanMPpositiongraphicrange \to \everycleanpositionaction % will be overloaded, and/or code below moved to core-box @@ -609,15 +609,15 @@ \ifx\totalnofparbackgrounds\undefined \newcounter\totalnofparbackgrounds \fi \appendtoks - \expanded{\savecurrentvalue\noexpand\totalnofparbackgrounds{\number\nofparbackgrounds}}% + \expanded{\savecurrentvalue\noexpand\totalnofparbackgrounds{\number\nofparbackgrounds}}% \to \everybye % actually we can just ask lua to give us the nofpositions (or a least n<>0) \appendtoks - % a position can be mid paragraph in which case we're behind - % this will change when we move positions to lua - \initializeparbackgrounds + % a position can be mid paragraph in which case we're behind + % this will change when we move positions to lua + \initializeparbackgrounds \to \everystarttext \def\initializeparbackgrounds @@ -1362,8 +1362,8 @@ \box\scratchbox} \appendtoks - \global\advance\noftabpositions\plusone - \global\setfalse\tablehaspositions + \global\advance\noftabpositions\plusone + \global\setfalse\tablehaspositions \to \everytabulate % We need to handle paragraphs as well. @@ -1386,16 +1386,19 @@ \iftrialtypesetting\else\ifconditional\tablehaspositions\doflushtabulateepos\fi\fi} \appendtoks - \let\dotablebpos\dotabulatebpos - \let\dotableepos\dotabulateepos - \glet\doflushtabulateepos\relax + \let\dotablebpos\dotabulatebpos + \let\dotableepos\dotabulateepos + \glet\doflushtabulateepos\relax \to \everytabulate %D In order to prevent potential clashes with abbreviations, %D postpone the mapping. \appendtoks - \let\GSC\tbGSC \let\GFC\tbGFC \let\GTC\tbGTC \let\XC\tbXC + \let\GSC\tbGSC + \let\GFC\tbGFC + \let\GTC\tbGTC + \let\XC \tbXC \to \everytabulate %D \macros @@ -1435,14 +1438,17 @@ \def\normalTABLEquote {\unskip\!ttRightGlue&\omit\tablepos&} % " \appendtoks - \global\advance\noftabpositions\plusone - \global\setfalse\tablehaspositions + \global\advance\noftabpositions\plusone + \global\setfalse\tablehaspositions \to \everytable %D Since we don't want nameclashes: \appendtoks - \let\GSC\tbGSC \let\GFC\tbGFC \let\GTC\tbGTC \let\XC\tbXC + \let\GSC\tbGSC + \let\GFC\tbGFC + \let\GTC\tbGTC + \let\XC \tbXC \to \everytable %D In the previous example, we could have provided an overlay to diff --git a/tex/context/base/anch-pos.mkii b/tex/context/base/anch-pos.mkii index c793f7ba4..b86cee5cc 100644 --- a/tex/context/base/anch-pos.mkii +++ b/tex/context/base/anch-pos.mkii @@ -5,7 +5,7 @@ %D subtitle=Positioning Support, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/anch-pos.mkiv b/tex/context/base/anch-pos.mkiv index dc231bcff..2893e5e2c 100644 --- a/tex/context/base/anch-pos.mkiv +++ b/tex/context/base/anch-pos.mkiv @@ -5,7 +5,7 @@ %D subtitle=Positioning Support, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/anch-snc.mkii b/tex/context/base/anch-snc.mkii index cf5b35d69..01704e0c8 100644 --- a/tex/context/base/anch-snc.mkii +++ b/tex/context/base/anch-snc.mkii @@ -5,7 +5,7 @@ %D subtitle=Synchronization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/anch-snc.mkiv b/tex/context/base/anch-snc.mkiv index f976047c9..4940ff274 100644 --- a/tex/context/base/anch-snc.mkiv +++ b/tex/context/base/anch-snc.mkiv @@ -5,7 +5,7 @@ %D subtitle=Synchronization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/attr-col.mkiv b/tex/context/base/attr-col.mkiv index 8d61ee8ae..268c2d362 100644 --- a/tex/context/base/attr-col.mkiv +++ b/tex/context/base/attr-col.mkiv @@ -5,7 +5,7 @@ %D subtitle=Color, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/attr-eff.mkiv b/tex/context/base/attr-eff.mkiv index 3526276c7..c78893307 100644 --- a/tex/context/base/attr-eff.mkiv +++ b/tex/context/base/attr-eff.mkiv @@ -5,7 +5,7 @@ %D subtitle=Effects, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/attr-ini.lua b/tex/context/base/attr-ini.lua index 96d7c7228..d29809706 100644 --- a/tex/context/base/attr-ini.lua +++ b/tex/context/base/attr-ini.lua @@ -34,7 +34,9 @@ storage.register("attributes/list", list, "attributes.list") function attributes.define(name,number) -- at the tex end if not numbers[name] then - numbers[name], names[number], list[number] = number, name, { } + numbers[name] = number + names[number] = name + list[number] = { } end end diff --git a/tex/context/base/attr-ini.mkiv b/tex/context/base/attr-ini.mkiv index ba6ca369f..578d02c27 100644 --- a/tex/context/base/attr-ini.mkiv +++ b/tex/context/base/attr-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/attr-lay.mkiv b/tex/context/base/attr-lay.mkiv index b1f3c944e..293122f42 100644 --- a/tex/context/base/attr-lay.mkiv +++ b/tex/context/base/attr-lay.mkiv @@ -5,7 +5,7 @@ %D subtitle=Viewerlayers, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/attr-neg.mkiv b/tex/context/base/attr-neg.mkiv index 2b817bb71..dc8f5e4f9 100644 --- a/tex/context/base/attr-neg.mkiv +++ b/tex/context/base/attr-neg.mkiv @@ -5,7 +5,7 @@ %D subtitle=Negation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/back-exp.lua b/tex/context/base/back-exp.lua index 7f52223a1..7e27bd259 100644 --- a/tex/context/base/back-exp.lua +++ b/tex/context/base/back-exp.lua @@ -12,14 +12,18 @@ if not modules then modules = { } end modules ['back-exp'] = { -- Because we need to look ahead we now always build a tree (this was optional in -- the beginning). The extra overhead in the frontend is neglectable. --- We can consider replacing attributes by the hash entry ... slower in resolving but it's still --- quite okay. +-- We can consider replacing attributes by the hash entry ... slower +-- in resolving but it's still quite okay. -- todo: less attributes e.g. internal only first node -- todo: build xml tree in mem (handy for cleaning) -- delimited: left/right string (needs marking) +-- we can optimize the code ... currently the overhead is some 10% for xml + html + +-- option: pack strings each page so that we save memory + local nodecodes = nodes.nodecodes local traverse_nodes = node.traverse local hlist_code = nodecodes.hlist @@ -46,14 +50,13 @@ nodes.locate = locate local next, type = next, type local format, match, concat, rep, sub, gsub, gmatch = string.format, string.match, table.concat, string.rep, string.sub, string.gsub, string.gmatch local lpegmatch = lpeg.match -local utfchar, utfsub = utf.char, utf.sub +local utfchar, utfbyte, utfsub, utfgsub = utf.char, utf.byte, utf.sub, utf.gsub local insert, remove = table.insert, table.remove local trace_export = false trackers.register ("structures.export", function(v) trace_export = v end) -local trace_spaces = false trackers.register ("structures.export.spaces", function(v) trace_spaces = v end) -local trace_tree = false trackers.register ("structures.export.showtree", function(v) trace_tree = v end) local less_state = false directives.register("structures.export.lessstate", function(v) less_state = v end) local page_breaks = false directives.register("structures.export.pagebreaks", function(v) page_breaks = v end) +local show_comment = true directives.register("structures.export.comment", function(v) show_comment = v end) local report_export = logs.reporter("backend","export") @@ -86,9 +89,14 @@ local refximage_code = whatsitcodes.pdfrefximage local userskip_code = skipcodes.userskip local rightskip_code = skipcodes.rightskip local parfillskip_code = skipcodes.parfillskip +local spaceskip_code = skipcodes.spaceskip +local xspaceskip_code = skipcodes.xspaceskip local line_code = listcodes.line +local a_characters = attributes.private('characters') +local a_exportstatus = attributes.private('exportstatus') + local a_tagged = attributes.private('tagged') local a_image = attributes.private('image') @@ -100,10 +108,16 @@ local a_taggedpacked = attributes.private("taggedpacked") local a_taggedsymbol = attributes.private("taggedsymbol") local a_taggedinsert = attributes.private("taggedinsert") local a_taggedtag = attributes.private("taggedtag") +local a_mathcategory = attributes.private("mathcategory") +local a_mathmode = attributes.private("mathmode") local a_reference = attributes.private('reference') +local a_textblock = attributes.private("textblock") + local has_attribute = node.has_attribute +local set_attribute = node.set_attribute +local traverse_id = node.traverse_id local traverse_nodes = node.traverse local slide_nodelist = node.slide local texattribute = tex.attribute @@ -116,32 +130,48 @@ local taglist = structurestags.taglist local properties = structurestags.properties local userdata = structurestags.userdata -- might be combines with taglist local tagdata = structurestags.data +local tagmetadata = structurestags.metadata local starttiming = statistics.starttiming local stoptiming = statistics.stoptiming -- todo: more locals (and optimize) -local version = "0.20" -local result = nil -- todo: nofresult -local entry = nil -local attributehash = { } -local hyphen = utfchar(0xAD) -- todo: also emdash etc -local colonsplitter = lpeg.splitat(":") -local dashsplitter = lpeg.splitat("-") -local threshold = 65536 -local indexing = false -local linedone = false -local inlinedepth = 0 -local tree = { data = { }, depth = 0 } -- root -local treestack = { } -local treehash = { } -local extras = { } -local nofbreaks = 0 -local used = { } -local exporting = false -local last = nil -local lastpar = nil +local exportversion = "0.22" + +local nofcurrentcontent = 0 -- so we don't free (less garbage collection) +local currentcontent = { } +local currentnesting = nil +local currentattribute = nil +local last = nil +local currentparagraph = nil + +local noftextblocks = 0 + +local attributehash = { } -- to be considered: set the values at the tex end +local hyphen = utfchar(0xAD) -- todo: also emdash etc +local colonsplitter = lpeg.splitat(":") +local dashsplitter = lpeg.splitat("-") +local threshold = 65536 +local indexing = false + +local treestack = { } +local nesting = { } +local currentdepth = 0 + +local tree = { data = { }, depth = 0, fulltag == "root" } -- root +local treeroot = tree +local treehash = { } +local extras = { } +local nofbreaks = 0 +local used = { } +local exporting = false +local restart = false +local specialspaces = { [0x20] = " " } -- for conversion +local somespace = { [0x20] = true, [" "] = true } -- for testing +local entities = { ["&"] = "&", [">"] = ">", ["<"] = "<" } + +local defaultnature = "mixed" -- "inline" setmetatableindex(used, function(t,k) if k then @@ -151,16 +181,15 @@ setmetatableindex(used, function(t,k) end end) -local joiner_1 = " " -local joiner_2 = " " -- todo: test if this one can always be "" -local joiner_3 = " " -local joiner_4 = " " -local joiner_5 = " " -local joiner_6 = " " -local joiner_7 = "\n" -local joiner_8 = " " -local joiner_9 = " " -local joiner_0 = " " +setmetatableindex(specialspaces, function(t,k) + local v = utfchar(k) + t[k] = v + entities[v] = format("&#%X;",k) + somespace[k] = true + somespace[v] = true + return v +end) + local namespaced = { -- filled on @@ -185,13 +214,19 @@ local namespaces = { merror = "m", math = "m", mrow = "m", + mtable = "m", + mtr = "m", + mtd = "m", + mfenced = "m", } setmetatableindex(namespaced, function(t,k) - local namespace = namespaces[k] - local v = namespace and namespace .. ":" .. k or k - t[k] = v - return v + if k then + local namespace = namespaces[k] + local v = namespace and namespace .. ":" .. k or k + t[k] = v + return v + end end) -- local P, C, Cc = lpeg.P, lpeg.C, lpeg.Cc @@ -218,24 +253,45 @@ end local spaces = { } -- watch how we also moved the -1 in depth-1 to the creator -setmetatableindex(spaces, function(t,k) t[k] = rep(" ",k-1) return t[k] end) +setmetatableindex(spaces, function(t,k) local s = rep(" ",k-1) t[k] = s return s end) + +function structurestags.setattributehash(fulltag,key,value) + if type(fulltag) == "number" then + fulltag = taglist[fulltag] + if fulltag then + fulltag = fulltag[#fulltag] + end + end + if fulltag then + local ah = attributehash[fulltag] -- could be metatable magic + if not ah then + ah = { } + attributehash[fulltag] = ah + end + ah[key] = value + end +end properties.vspace = { export = "break", nature = "display" } properties.pbreak = { export = "pagebreak", nature = "display" } -local function makebreak(entry) +local function makebreaklist(list) nofbreaks = nofbreaks + 1 - local t, tl = { }, entry[1] - if tl then - for i=1,#tl do - t[i] = tl[i] + local t = { } + if list then + for i=1,#list do + t[i] = list[i] end end - t[#t+1] = "break-" .. nofbreaks - return { t, { "" }, 0, 0 } + t[#t+1] = "break-" .. nofbreaks -- maybe no number + return t end -local function makebreaknode(node) +local breakattributes = { + type = "collapse" +} + +local function makebreaknode(node) -- maybe no fulltag nofbreaks = nofbreaks + 1 return { tg = "break", @@ -244,31 +300,49 @@ local function makebreaknode(node) depth = node.depth, element = "break", nature = "display", - data = { }, - attribute = { } , - parnumber = 0, + -- attributes = breakattributes, + -- data = { }, -- not needed + -- attribute = 0, -- not needed + -- parnumber = 0, } end local fields = { "title", "subtitle", "author", "keywords" } -function extras.document(handle,element,detail,n,fulltag,hash) - handle:write(format(" language=%q",languagenames[tex.count.mainlanguagenumber])) +local function checkdocument(root) + local data = root.data + if data then + for i=1,#data do + local di = data[i] + if type(di) == "table" then + if di.tg == "ignore" then + di.element = "" + else + checkdocument(di) + end + end + end + end +end + +function extras.document(result,element,detail,n,fulltag,di) + result[#result+1] = format(" language=%q",languagenames[tex.count.mainlanguagenumber]) if not less_state then - handle:write(format(" file=%q",tex.jobname)) - handle:write(format(" date=%q",os.date())) - handle:write(format(" context=%q",environment.version)) - handle:write(format(" version=%q",version)) - handle:write(format(" xmlns:m=%q","http://www.w3.org/1998/Math/MathML")) + result[#result+1] = format(" file=%q",tex.jobname) + result[#result+1] = format(" date=%q",os.date()) + result[#result+1] = format(" context=%q",environment.version) + result[#result+1] = format(" version=%q",exportversion) + result[#result+1] = format(" xmlns:m=%q","http://www.w3.org/1998/Math/MathML") local identity = interactions.general.getidentity() for i=1,#fields do local key = fields[i] local value = identity[key] if value and value ~= "" then - handle:write(format(" %s=%q",key,value)) + result[#result+1] = format(" %s=%q",key,value) end end end + checkdocument(di) end local snames, snumbers = { }, { } @@ -319,51 +393,51 @@ function structurestags.setdescriptionid(tag,n) end end -function extras.descriptiontag(handle,element,detail,n,fulltag,di) +function extras.descriptiontag(result,element,detail,n,fulltag,di) local hash = attributehash[fulltag] if hash then local v = hash.insert v = v and insertids[v] if v then - handle:write(" insert='",v,"'") + result[#result+1] = format(" insert='%s'",v) end end end -function extras.descriptionsymbol(handle,element,detail,n,fulltag,di) +function extras.descriptionsymbol(result,element,detail,n,fulltag,di) local hash = attributehash[fulltag] if hash then local v = hash.insert v = v and insertids[v] if v then - handle:write(" insert='",v,"'") + result[#result+1] = format(" insert='%s'",v) end end end -function extras.synonym(handle,element,detail,n,fulltag,di) +function extras.synonym(result,element,detail,n,fulltag,di) local hash = attributehash[fulltag] if hash then local v = hash.tag v = v and synonymnames[v] if v then - handle:write(" tag='",v,"'") + result[#result+1] = format(" tag='%s'",v) end end end -function extras.sorting(handle,element,detail,n,fulltag,di) +function extras.sorting(result,element,detail,n,fulltag,di) local hash = attributehash[fulltag] if hash then local v = hash.tag v = v and sortingnames[v] if v then - handle:write(" tag='",v,"'") + result[#result+1] = format(" tag='%s'",v) end end end -function extras.image(handle,element,detail,n,fulltag,di) +function extras.image(result,element,detail,n,fulltag,di) local hash = attributehash[fulltag] if hash then local v = hash.imageindex @@ -375,13 +449,13 @@ function extras.image(handle,element,detail,n,fulltag,di) local path = file.dirname(fullname) local page = figure.page or 1 if name ~= "" then - handle:write(" name='",name,"'") + result[#result+1] = format(" name='%s'",name) end if path ~= "" then - handle:write(" path='",path,"'") + result[#result+1] = format(" path='%s'",path) end if page > 1 then - handle:write(" page='",page,"'") + result[#result+1] = format(" page='%s'",page) end end end @@ -393,37 +467,37 @@ end local evaluators = { } local specials = { } -evaluators.inner = function(handle,var) +evaluators.inner = function(result,var) local inner = var.inner - if var.inner then - handle:write(" location='",inner,"'") + if inner then + result[#result+1] = format(" location='%s'",inner) end end -evaluators.outer = function(handle,var) +evaluators.outer = function(result,var) local file, url = references.checkedfileorurl(var.outer,var.outer) if url then - handle:write(" url='",url,"'") + result[#result+1] = format(" url='%s'",url) elseif file then - handle:write(" file='",file,"'") + result[#result+1] = format(" file='%s'",file) end end -evaluators["outer with inner"] = function(handle,var) +evaluators["outer with inner"] = function(result,var) local file = references.checkedfile(var.f) if file then - handle:write(" file='",file,"'") + result[#result+1] = format(" file='%s'",file) end local inner = var.inner - if var.inner then - handle:write(" location='",inner,"'") + if inner then + result[#result+1] = format(" location='%s'",inner) end end -evaluators.special = function(handle,var) +evaluators.special = function(result,var) local handler = specials[var.special] if handler then - handler(handle,var) + handler(result,var) end end @@ -431,80 +505,80 @@ evaluators["special outer with operation"] = evaluators.special evaluators["special operation"] = evaluators.special evaluators["special operation with arguments"] = evaluators.special -function specials.url(handle,var) +function specials.url(result,var) local url = references.checkedurl(var.operation) if url then - handle:write(" url='",url,"'") + result[#result+1] = format(" url='%s'",url) end end -function specials.file(handle,var) +function specials.file(result,var) local file = references.checkedfile(var.operation) if file then - handle:write(" file='",file,"'") + result[#result+1] = format(" file='%s'",file) end end -function specials.fileorurl(handle,var) +function specials.fileorurl(result,var) local file, url = references.checkedfileorurl(var.operation,var.operation) if url then - handle:write(" url='",url,"'") + result[#result+1] = format(" url='%s'",url) elseif file then - handle:write(" file='",file,"'") + result[#result+1] = format(" file='%s'",file) end end -function specials.internal(handle,var) +function specials.internal(result,var) local internal = references.checkedurl(var.operation) if internal then - handle:write(" location='aut:",internal,"'") + result[#result+1] = format(" location='aut:%s'",internal) end end -local function adddestination(handle,references) -- todo: specials -> exporters and then concat +local function adddestination(result,references) -- todo: specials -> exporters and then concat if references then local reference = references.reference if reference and reference ~= "" then local prefix = references.prefix if prefix and prefix ~= "" then - handle:write(" prefix='",prefix,"'") + result[#result+1] = format(" prefix='%s'",prefix) end - handle:write(" destination='",reference,"'") + result[#result+1] = format(" destination='%s'",reference) for i=1,#references do local r = references[i] local e = evaluators[r.kind] if e then - e(handle,r) + e(result,r) end end end end end -local function addreference(handle,references) +local function addreference(result,references) if references then local reference = references.reference if reference and reference ~= "" then local prefix = references.prefix if prefix and prefix ~= "" then - handle:write(" prefix='",prefix,"'") + result[#result+1] = format(" prefix='%s'",prefix) end - handle:write(" reference='",reference,"'") + result[#result+1] = format(" reference='%s'",reference) end local internal = references.internal if internal and internal ~= "" then - handle:write(" location='aut:",internal,"'") + result[#result+1] = format(" location='aut:%s'",internal) end end end -function extras.link(handle,element,detail,n,fulltag,di) +function extras.link(result,element,detail,n,fulltag,di) -- for instance in lists a link has nested elements and no own text local hash = attributehash[fulltag] if hash then local references = hash.reference if references then - adddestination(handle,structures.references.get(references)) + adddestination(result,structures.references.get(references)) end return true else @@ -512,7 +586,7 @@ function extras.link(handle,element,detail,n,fulltag,di) if data then for i=1,#data do local di = data[i] - if di and extras.link(handle,element,detail,n,di.fulltag,di) then + if di and extras.link(result,element,detail,n,di.fulltag,di) then return true end end @@ -520,10 +594,297 @@ function extras.link(handle,element,detail,n,fulltag,di) end end -function extras.section(handle,element,detail,n,fulltag,di) +local automathrows = true directives.register("backend.export.math.autorows", function(v) automathrows = v end) +local automathapply = true directives.register("backend.export.math.autoapply", function(v) automathapply = v end) +local automathnumber = true directives.register("backend.export.math.autonumber", function(v) automathnumber = v end) +local automathstrip = true directives.register("backend.export.math.autostrip", function(v) automathstrip = v end) + +local functions = mathematics.categories.functions + +local function collapse(di,i,data,ndata,detail,element) + local collapsing = di.data + if data then + di.element = element + di.detail = nil + i = i + 1 + while i <= ndata do + local dn = data[i] + if dn.detail == detail then + collapsing[#collapsing+1] = dn.data[1] + dn.skip = "ignore" + i = i + 1 + else + break + end + end + end + return i +end + +local function collapse_mn(di,i,data,ndata) + local collapsing = di.data + if data then + i = i + 1 + while i <= ndata do + local dn = data[i] + local tg = dn.tg + if tg == "mn" then + collapsing[#collapsing+1] = dn.data[1] + dn.skip = "ignore" + i = i + 1 + elseif tg == "mo" then + local d = dn.data[1] + if d == "." then + collapsing[#collapsing+1] = d + dn.skip = "ignore" + i = i + 1 + else + break + end + else + break + end + end + end + return i +end + +-- maybe delay __i__ till we need it + +local function checkmath(root) -- we can provide utf.toentities as an option + local data = root.data + if data then + local ndata = #data + local roottg = root.tg + if roottg == "msubsup" then + local nucleus, superscript, subscript + for i=1,ndata do + if type(data[i]) == "table" then + if not nucleus then + nucleus = i + elseif not superscript then + superscript = i + elseif not subscript then + subscript = i + else + -- error + end + end + end + if superscript and subscript then + local sup, sub = data[superscript], data[subscript] + data[superscript], data[subscript] = sub, sup + -- sub.__o__, sup.__o__ = subscript, superscript + sub.__i__, sup.__i__ = superscript, subscript + end + elseif roottg == "mfenced" then + local new, n = { }, 0 + local attributes = { } + root.attributes = attributes + for i=1,ndata do + local di = data[i] + if type(di) == "table" then + local tg = di.tg + if tg == "mleft" then + attributes.left = tostring(di.data[1].data[1]) + elseif tg == "mmiddle" then + attributes.middle = tostring(di.data[1].data[1]) + elseif tg == "mright" then + attributes.right = tostring(di.data[1].data[1]) + else + n = n + 1 + di.__i__ = n + new[n] = di + end + else + n = n + 1 + new[n] = di + end + end + root.data = new + ndata = n + end + if ndata == 0 then + return + elseif ndata == 1 then + local d = data[1] + if type(d) ~= "table" then + return -- can be string or false + elseif #root.data == 1 then + local tg = d.tg + if automathrows and roottg == "mrow" then + if tg == "mrow" or tg == "mfenced" or tg == "mfrac" or tg == "mroot" then + root.skip = "comment" + end + elseif roottg == "mo" then + if tg == "mo" then + root.skip = "comment" + end + end + end + end + local i = 1 + while i <= ndata do -- -- -- TOO MUCH NESTED CHECKING -- -- -- + local di = data[i] + if di and type(di) == "table" then + local tg = di.tg + local detail = di.detail + if tg == "math" then + -- di.element = "mrow" -- when properties + di.skip = "comment" + checkmath(di) + i = i + 1 + elseif tg == "mover" or tg == "munder" or tg == "munderover" then + if detail == "accent" then + di.attributes = { accent = "true" } + di.detail = nil + end + checkmath(di) + i = i + 1 + elseif tg == "break" then + di.skip = "comment" + i = i + 1 + elseif detail then + -- no checkmath(di) here + local category = tonumber(detail) or 0 + if category == 1 then -- mo + i = collapse(di,i,data,ndata,detail,"mo") + elseif category == 2 then -- mi + i = collapse(di,i,data,ndata,detail,"mi") + elseif category == 3 then -- mn + i = collapse(di,i,data,ndata,detail,"mn") + elseif category == 4 then -- ms + i = collapse(di,i,data,ndata,detail,"ms") + elseif category >= 1000 then + local apply = category >= 2000 + if apply then + category = category - 1000 + end + if tg == "mi" then -- function + if root.tg == "mrow" then + root.skip = "comment" + root.element = "function" + end + i = collapse(di,i,data,ndata,detail,"mi") + local tag = functions[category] + if tag then + di.data = { tag } + end + if apply then + di.after = { + { + element = "mo", + -- comment = "apply function", + -- data = { utfchar(0x2061) }, + data = { "⁡" }, + nature = "mixed", + depth = di.depth, + } + } + elseif automathapply then -- make function + local following + if i <= ndata then + -- normally not the case + following = data[i] + else + local parent = di.__p__ -- == root + if parent.tg == "mrow" then + parent = parent.__p__ + end + local index = parent.__i__ + following = parent.data[index+1] + end + if following then + local tg = following.tg + if tg == "mrow" or tg == "mfenced" then -- we need to figure out the right condition + di.after = { + { + element = "mo", + -- comment = "apply function", + -- data = { utfchar(0x2061) }, + data = { "⁡" }, + nature = "mixed", + depth = di.depth, + } + } + end + end + end + else -- some problem + checkmath(di) + i = i + 1 + end + else + checkmath(di) + i = i + 1 + end + elseif automathnumber and tg == "mn" then + checkmath(di) + i = collapse_mn(di,i,data,ndata) + else + checkmath(di) + i = i + 1 + end + else -- can be string or boolean + if parenttg ~= "mtext" and di == " " then + data[i] = false + end + i = i + 1 + end + end + end +end + +function stripmath(di) + local tg = di.tg + if tg == "mtext" or tg == "ms" then + return di + else + local data = di.data + local ndata = #data + local n = 0 + for i=1,ndata do + local di = data[i] + if type(di) == "table" then + di = stripmath(di) + end + if not di or di == " " or di == "" then + -- skip + elseif type(di) == "table" then + n = n + 1 + di.__i__ = n + data[n] = di + else + n = n + 1 + data[n] = di + end + end + for i=ndata,n+1,-1 do + data[i] = nil + end + if #data > 0 then + return di + end + end +end + +function extras.math(result,element,detail,n,fulltag,di) + if di then + local hash = attributehash[di.fulltag] + di.attributes = { + display = (hash and hash.mode) == "display" and "block" or "inline" + } + if automathstrip then + stripmath(di) + end + checkmath(di) + end +end + +function extras.section(result,element,detail,n,fulltag,di) local data = listdata[fulltag] if data then - addreference(handle,data.references) + addreference(result,data.references) return true else local data = di.data @@ -532,7 +893,7 @@ function extras.section(handle,element,detail,n,fulltag,di) local di = data[i] if di then local ft = di.fulltag - if ft and extras.section(handle,element,detail,n,ft,di) then + if ft and extras.section(result,element,detail,n,ft,di) then return true end end @@ -541,17 +902,17 @@ function extras.section(handle,element,detail,n,fulltag,di) end end -function extras.float(handle,element,detail,n,fulltag,di) +function extras.float(result,element,detail,n,fulltag,di) local data = listdata[fulltag] if data then - addreference(handle,data.references) + addreference(result,data.references) return true else local data = di.data if data then for i=1,#data do local di = data[i] - if di and extras.section(handle,element,detail,n,di.fulltag,di) then + if di and extras.section(result,element,detail,n,di.fulltag,di) then return true end end @@ -559,28 +920,30 @@ function extras.float(handle,element,detail,n,fulltag,di) end end -function extras.itemgroup(handle,element,detail,n,fulltag,di) +function extras.itemgroup(result,element,detail,n,fulltag,di) local data = di.data - for i=1,#data do - local di = data[i] - if type(di) == "table" and di.tg == "item" then - local ddata = di.data - for i=1,#ddata do - local ddi = ddata[i] - if type(ddi) == "table" then - local tg = ddi.tg - if tg == "itemtag" or tg == "itemcontent" then - local hash = attributehash[ddi.fulltag] - if hash then - local v = hash.packed - if v and v == 1 then - handle:write(" packed='yes'") - end - local v = hash.symbol - if v then - handle:write(" symbol='",snames[v],"'") + if data then + for i=1,#data do + local di = data[i] + if type(di) == "table" and di.tg == "item" then + local ddata = di.data + for i=1,#ddata do + local ddi = ddata[i] + if type(ddi) == "table" then + local tg = ddi.tg + if tg == "itemtag" or tg == "itemcontent" then + local hash = attributehash[ddi.fulltag] + if hash then + local v = hash.packed + if v and v == 1 then + result[#result+1] = " packed='yes'" + end + local v = hash.symbol + if v then + result[#result+1] = format(" symbol='%s'",snames[v]) + end + return end - return end end end @@ -589,276 +952,246 @@ function extras.itemgroup(handle,element,detail,n,fulltag,di) end end -function extras.tablecell(handle,element,detail,n,fulltag,di) +function extras.tablecell(result,element,detail,n,fulltag,di) local hash = attributehash[fulltag] if hash then local v = hash.align if not v or v == 0 then -- normal elseif v == 1 then - handle:write(" align='flushright'") + result[#result+1] = " align='flushright'" elseif v == 2 then - handle:write(" align='middle'") + result[#result+1] = " align='middle'" elseif v == 3 then - handle:write(" align='flushleft'") + result[#result+1] = " align='flushleft'" end local v = hash.columns if v and v > 1 then - handle:write(" columns='",v,"'") + result[#result+1] = format(" columns='%s'",v) end local v = hash.rows if v and v > 1 then - handle:write(" rows='",v,"'") + result[#result+1] = format(" rows='%s'",v) end end end -function extras.tabulatecell(handle,element,detail,n,fulltag,di) +function extras.tabulatecell(result,element,detail,n,fulltag,di) local hash = attributehash[fulltag] if hash then local v = hash.align if not v or v == 0 then -- normal elseif v == 1 then - handle:write(" align='flushright'") + result[#result+1] = " align='flushright'" elseif v == 2 then - handle:write(" align='middle'") + result[#result+1] = " align='middle'" elseif v == 3 then - handle:write(" align='flushleft'") + result[#result+1] = " align='flushleft'" end end end -local function emptytag(handle,element,nature,depth) - handle:write("\n",spaces[depth],"<",namespaced[element],"/>\n") +-- flusher + +local linedone = false -- can go ... we strip newlines anyway +local inlinedepth = 0 + +local function emptytag(result,element,nature,depth) + if linedone then + result[#result+1] = format("%s<%s/>\n",spaces[depth],namespaced[element]) + else + result[#result+1] = format("\n%s<%s/>\n",spaces[depth],namespaced[element]) + end + linedone = false end -local function begintag(handle,element,nature,depth,di,empty) - local detail, n, fulltag = di.detail, di.n, di.fulltag +local function begintag(result,element,nature,depth,di,skip) + -- if needed we can use a local result with xresult +--~ local result = { } + local detail = di.detail + local n = di.n + local fulltag = di.fulltag + local comment = di.comment if nature == "inline" then linedone = false inlinedepth = inlinedepth + 1 + if show_comment and comment then + result[#result+1] = format("<!-- %s -->",comment) + end elseif nature == "mixed" then if inlinedepth > 0 then + if show_comment and comment then + result[#result+1] = format("<!-- %s -->",comment) + end elseif linedone then - handle:write(spaces[depth]) + result[#result+1] = spaces[depth] + if show_comment and comment then + result[#result+1] = format("<!-- %s -->",comment) + end else - handle:write("\n",spaces[depth]) + result[#result+1] = format("\n%s",spaces[depth]) linedone = false + if show_comment and comment then + result[#result+1] = format("<!-- %s -->\n%s",comment,spaces[depth]) + end end inlinedepth = inlinedepth + 1 else if inlinedepth > 0 then + if show_comment and comment then + result[#result+1] = format("<!-- %s -->",comment) + end elseif linedone then - handle:write(spaces[depth]) + result[#result+1] = spaces[depth] + if show_comment and comment then + result[#result+1] = format("<!-- %s -->",comment) + end else - handle:write("\n",spaces[depth]) + result[#result+1] = format("\n%s",spaces[depth]) -- can introduced extra line in mixed+mixed (filtered later on) linedone = false + if show_comment and comment then + result[#result+1] = format("<!-- %s -->\n%s",comment,spaces[depth]) + end end end - handle:write("<",namespaced[element]) - if detail then - handle:write(" detail='",detail,"'") - end - if indexing and n then - handle:write(" n='",n,"'") - end - local extra = extras[element] - if extra then - extra(handle,element,detail,n,fulltag,di) - end - local u = userdata[fulltag] - if u then - for k, v in next, u do - handle:write(format(" %s=%q",k,v)) + if skip == "comment" then + if show_comment then + result[#result+1] = format("<!-- begin %s -->",namespaced[element]) + end + elseif skip then + -- ignore + else + result[#result+1] = format("<%s",namespaced[element]) + if detail then + result[#result+1] = format(" detail=%q",detail) + end + if indexing and n then + result[#result+1] = format(" n=%q",n) + end + local extra = extras[element] + if extra then + extra(result,element,detail,n,fulltag,di) + end + local u = userdata[fulltag] + if u then + for k, v in next, u do + result[#result+1] = format(" %s=%q",k,v) + end end + local a = di.attributes + if a then + for k, v in next, a do + result[#result+1] = format(" %s=%q",k,v) + end + end + result[#result+1] = ">" end - if not empty then - handle:write(">") - if inlinedepth > 0 then - elseif nature == "display" then - handle:write("\n") - linedone = true + if inlinedepth > 0 then + elseif nature == "display" then + result[#result+1] = "\n" + linedone = true + end +--~ xresult[#xresult+1] = concat(result) + used[element][detail or ""] = nature -- for template css + local metadata = tagmetadata[fulltag] + if metadata then + -- used[element] = "mixed" + metadata = table.toxml(metadata,"metadata",true,depth*2,2) -- nobanner + if not linedone then + result[#result+1] = format("\n%s\n",metadata) + else + result[#result+1] = format("%s\n",metadata) end + linedone = true end - used[element][detail or ""] = nature end -local function endtag(handle,element,nature,depth,empty) +local function endtag(result,element,nature,depth,skip) if nature == "display" then if inlinedepth == 0 then - if empty then - handle:write("</>\n") - else - if not linedone then - handle:write("\n") + if not linedone then + result[#result+1] = "\n" + end + if skip == "comment" then + if show_comment then + result[#result+1] = format("%s<!-- end %s -->\n",spaces[depth],namespaced[element]) end - handle:write(spaces[depth],"</",namespaced[element],">\n") + elseif skip then + -- ignore + else + result[#result+1] = format("%s</%s>\n",spaces[depth],namespaced[element]) end linedone = true else - if empty then - handle:write("/>") + if skip == "comment" then + if show_comment then + result[#result+1] = format("<!-- end %s -->",namespaced[element]) + end + elseif skip then + -- ignore else - handle:write("</",namespaced[element],">") + result[#result+1] = format("</%s>",namespaced[element]) end end else inlinedepth = inlinedepth - 1 - if empty then - handle:write("/>") + if skip == "comment" then + if show_comment then + result[#result+1] = format("<!-- end %s -->",namespaced[element]) + end + elseif skip then + -- ignore else - handle:write("</",namespaced[element],">") + result[#result+1] = format("</%s>",namespaced[element]) end linedone = false end end -local function push(fulltag,depth,entry) - local attribute, parnumber = entry[3], entry[4] - -- local tg, detail, n = lpegmatch(tagsplitter,fulltag) - local tag, n = lpegmatch(dashsplitter,fulltag) - local tg, detail = lpegmatch(colonsplitter,tag) - local element, nature - if detail then - local pd = properties[tag] - local pt = properties[tg] - element = pd and pd.export or pt and pt.export or tg - nature = pd and pd.nature or pt and pt.nature or "inline" - else - local p = properties[tg] - element = p and p.export or tg - nature = p and p.nature or "inline" - end - local t = { - -- parent = tree, - tg = tg, - fulltag = fulltag, - detail = detail, - n = tonumber(n), -- more efficient - depth = depth, - element = element, - nature = nature, - data = { }, - attribute = attribute, - parnumber = parnumber, - -- node = entry[5], -- will go - } - local treedata = tree.data - treedata[#treedata+1] = t - insert(treestack,tree) - tree = t - local h = treehash[fulltag] - if h then - h[#h+1] = t - else - treehash[fulltag] = { t } - end -end - -local function pop() - tree = remove(treestack) -end - -local function flushresult(entry) - local current, content = entry[1], entry[2] - if not content then - -- skip, normally this cannot happen - else - local newdepth, olddepth, content = #current, #treestack, concat(content) - if trace_export then - report_export("%s => %s : handling: %s",olddepth,newdepth,current[newdepth]) - end - if olddepth <= 0 then - for i=1,newdepth do - if trace_export then - report_export("[1] push : %s",current[i]) - end - push(current[i],i,entry) - end - if content then - tree.data[#tree.data+1] = content - end - elseif newdepth < olddepth then - for i=newdepth,olddepth-1 do - if trace_export then - report_export("[2a] pop : %s",current[i]) - end - pop() - end - -- we can have a pagebreak and for instance a new chapter - -- will mess up the structure then - for i=newdepth,1,-1 do - if current[i] ~= treestack[i].fulltag then -- needs checking - if trace_export then - report_export("[2b] pop : %s",current[i]) - end - pop() - else - break - end - end - olddepth = #treestack - for i=olddepth+1,newdepth do - if trace_export then - report_export("[2] push : %s",current[i]) - end - push(current[i],i,entry) - end - if content then - tree.data[#tree.data+1] = content - end - elseif newdepth > olddepth then - for i=olddepth,1,-1 do - if current[i] ~= treestack[i].fulltag then - if trace_export then - report_export("[3] pop : %s",current[i]) - end - pop() +local function flushtree(result,data,nature) + local nofdata = #data + for i=1,nofdata do + local di = data[i] + if not di then -- or di == "" + -- collapsed + elseif type(di) == "string" then +di = utfgsub(di,".",entities) + if i == nofdata and sub(di,-1) == "\n" then + if nature == "inline" or nature == "mixed" then + result[#result+1] = sub(di,1,-2) else - break - end - end - olddepth = #treestack - for i=olddepth+1,newdepth do - if trace_export then - report_export("[3] push : %s",current[i]) + result[#result+1] = sub(di,1,-2) + result[#result+1] = " " end - push(current[i],i,entry) - end - if content then - tree.data[#tree.data+1] = content - end - elseif current[newdepth] == treestack[olddepth] then --move up ? - -- continuation - if content then - tree.data[#tree.data+1] = content + else + result[#result+1] = di end - else - for i=olddepth,1,-1 do - if current[i] ~= treestack[i].fulltag then - if trace_export then - report_export("[4] pop : %s",current[i]) - end - pop() - else - break + linedone = false + elseif not di.collapsed then + local element = di.element + if element == "break" or element == "pagebreak" then + emptytag(result,element,nature,di.depth) + elseif element == "" or di.skip == "ignore" then + -- skip + else + if di.before then + flushtree(result,di.before,nature) end - end - olddepth = #treestack - for i=olddepth+1,newdepth do - if trace_export then - report_export("[4] push : %s",current[i]) + local nature, depth, skip = di.nature, di.depth, di.skip + begintag(result,element,nature,depth,di,skip) + flushtree(result,di.data,nature) + endtag(result,element,nature,depth,skip) + if di.after then + flushtree(result,di.after,nature) end - push(current[i],i,entry) - end - if content then - tree.data[#tree.data+1] = content end end end end +-- finalizers + local function checkinserts(data) local nofinserts = 0 for i=1,#data do @@ -876,316 +1209,354 @@ local function checkinserts(data) -- something is wrong end end - if di.data then - checkinserts(di.data) - end - end - end -end - -local function flushtree(handle,data,nature) - local nofdata = #data - for i=1,nofdata do - local di = data[i] - if not di then - -- collapsed - elseif type(di) == "string" then -if i == nofdata and sub(di,-1) == joiner_7 then - if nature == "inline" or nature == "mixed" then - handle:write(sub(di,1,-2)) - else - handle:write(sub(di,1,-2)," ") - end -else - handle:write(di) -end - linedone = false - elseif not di.collapsed then - local element = di.element - if element == "break" or element == "pagebreak" then - emptytag(handle,element,nature,di.depth) - else - local nature, depth = di.nature, di.depth - local did = di.data - local nid = #did - if nid == 0 or (nid == 1 and did[1] == "") then - begintag(handle,element,nature,depth,di,true) - -- no content - endtag(handle,element,nature,depth,true) - else - begintag(handle,element,nature,depth,di) - flushtree(handle,did,nature) - endtag(handle,element,nature,depth) - end + local d = di.data + if d then + checkinserts(d) end end end end -local function collapsetree() - for k, v in next, treehash do - local d = v[1].data - local nd = #d - for i=2,#v do - local vi = v[i] - local vd = vi.data - local done = false - local lpn = v[i-1].parnumber - if lpn and lpn == 0 then lpn = nil end - if type(d[1]) ~= "string" then lpn = nil end -- no need anyway so no further testing needed -local justdone = false - for j=1,#vd do - local vdj = vd[j] - if type(vdj) == "string" then ---~ print(vdj) - -- experiment, should be improved - -- can be simplified ... lpn instead of done - if done then - nd = nd + 1 - d[nd] = joiner_1 - else - done = true - local pn = vi.parnumber - if not pn then - nd = nd + 1 - d[nd] = joiner_2 - lpn = nil - elseif not lpn then - nd = nd + 1 - d[nd] = joiner_3 - lpn = pn - elseif pn and pn ~= lpn then +--~ local function collapsetree() -- maybe better traverse tree (par stuff) +--~ for tag, trees in next, treehash do +--~ local d = trees[1].data +--~ if d then +--~ local nd = #d +--~ if nd > 0 then +--~ for i=2,#trees do +--~ local currenttree = trees[i] +--~ local currentdata = currenttree.data +--~ local previouspar = trees[i-1].parnumber +--~ currenttree.collapsed = true +--~ if previouspar == 0 or type(currentdata[1]) ~= "string" then +--~ previouspar = nil -- no need anyway so no further testing needed +--~ end +--~ local done = false +--~ local breakdone = false +--~ local spacedone = false +--~ for j=1,#currentdata do +--~ local cd = currentdata[j] +--~ if not cd then +--~ -- skip +--~ elseif type(cd) == "string" then +--~ if cd == "" then +--~ -- skip +--~ elseif cd == " " then +--~ -- done check ? +--~ if not spacedone and not breakdone then +--~ nd = nd + 1 +--~ d[nd] = cd +--~ spacedone = true +--~ end +--~ elseif done then +--~ if not spacedone and not breakdone then +--~ nd = nd + 1 +--~ d[nd] = " " +--~ spacedone = true +--~ end +--~ nd = nd + 1 +--~ d[nd] = cd +--~ else +--~ done = true +--~ local currentpar = d.parnumber +--~ if not currentpar then +--~ if not spacedone and not breakdone then +--~ nd = nd + 1 +--~ d[nd] = " " -- +--~ spacedone = true +--~ end +--~ previouspar = nil +--~ elseif not previouspar then +--~ if not spacedone and not breakdone then +--~ nd = nd + 1 +--~ d[nd] = " " +--~ spacedone = true +--~ end +--~ previouspar = currentpar +--~ elseif currentpar ~= previouspar then +--~ if not breakdone then +--~ if not spacedone then +--~ nd = nd + 1 +--~ end +--~ d[nd] = makebreaknode(currenttree) +--~ breakdone = true +--~ end +--~ previouspar = currentpar +--~ else +--~ spacedone = false +--~ breakdone = false +--~ end +--~ nd = nd + 1 +--~ d[nd] = cd +--~ end +--~ else +--~ if cd.tg == "break" then +--~ breakdone = true +--~ end +--~ nd = nd + 1 +--~ d[nd] = cd +--~ end +--~ currentdata[j] = false +--~ end +--~ end +--~ end +--~ end +--~ end +--~ end + +local function collapsetree() -- maybe better traverse tree (par stuff) + for tag, trees in next, treehash do + local d = trees[1].data + if d then + local nd = #d + if nd > 0 then + for i=2,#trees do + local currenttree = trees[i] + local currentdata = currenttree.data + local previouspar = trees[i-1].parnumber + currenttree.collapsed = true + if previouspar == 0 or type(currentdata[1]) ~= "string" then + previouspar = nil -- no need anyway so no further testing needed + end + for j=1,#currentdata do + local cd = currentdata[j] + if not cd or cd == "" then + -- skip + elseif type(cd) == "string" then + local currentpar = d.parnumber + if not currentpar then + -- add space ? + elseif not previouspar then + -- add space ? + elseif currentpar ~= previouspar then + nd = nd + 1 + d[nd] = makebreaknode(currenttree) + end + previouspar = currentpar nd = nd + 1 - d[nd] = makebreaknode(vi) - lpn = pn + d[nd] = cd else - -- nd = nd + 1 - -- d[nd] = joiner_4 -- we need to be more clever + nd = nd + 1 + d[nd] = cd end + currentdata[j] = false end - else ---~ nd = nd + 1 ---~ d[nd] = joiner_3 - -- lpn = nil end - if vdj ~= "" then - nd = nd + 1 - d[nd] = vdj -- hm, any? - end - vd[j] = false end - v[i].collapsed = true end end end -local function prunetree(tree) - if not tree.collapsed then - local data = tree.data - if data then - local p, np = { }, 0 - for i=1,#data do - local d = data[i] - if type(d) == "table" then - if not d.collapsed then - prunetree(d) - np = np + 1 - p[np] = d - end - elseif type(d) == "string" then - np = np + 1 - p[np] = d - end +local function indextree(tree) + local data = tree.data + if data then + for i=1,#data do + local d = data[i] + if type(d) == "table" then + d.__i__ = i + d.__p__ = tree + indextree(d) end - tree.data = np > 0 and p end end end -local function finishexport() - if entry then - local result = entry[2] - if result and result[#result] == " " then - result[#result] = nil -- nicer, remove last space - end - flushresult(entry) +-- collector code + +local function push(fulltag,depth) + local tag, n = lpegmatch(dashsplitter,fulltag) + local tg, detail = lpegmatch(colonsplitter,tag) + local element, nature + if detail then + local pd = properties[tag] + local pt = properties[tg] + element = pd and pd.export or pt and pt.export or tg + nature = pd and pd.nature or pt and pt.nature or defaultnature + else + local p = properties[tg] + element = p and p.export or tg + nature = p and p.nature or "inline" end - for i=#treestack,1,-1 do - pop() + local treedata = tree.data + local t = { + tg = tg, + fulltag = fulltag, + detail = detail, + n = tonumber(n), -- more efficient + depth = depth, + element = element, + nature = nature, + data = { }, + attribute = currentattribute, + parnumber = currentparagraph, + } + treedata[#treedata+1] = t + currentdepth = currentdepth + 1 + nesting[currentdepth] = fulltag + treestack[currentdepth] = tree + if trace_export then + report_export("%s<%s trigger='%s' index='%s'>",spaces[currentdepth-1],fulltag,currentattribute,#treedata) + end + tree = t + if tg == "break" then + -- no need for this + else + local h = treehash[fulltag] + if h then + h[#h+1] = t + else + treehash[fulltag] = { t } + end end end -local displaymapping = { - inline = "inline", - display = "block", - mixed = "inline", -} - -local e_template = [[ -%s { - display: %s ; -}]] - -local d_template = [[ -%s[detail=%s] { - display: %s ; -}]] - --- encoding='utf-8' - -local xmlpreamble = [[ -<?xml version='1.0' encoding='UTF-8' standalone='yes' ?> - -<!-- input filename : %- 17s --> -<!-- processing date : %- 17s --> -<!-- context version : %- 17s --> -<!-- exporter version : %- 17s --> -]] - -local csspreamble = [[ - -<?xml-stylesheet type="text/css" href="%s"?> -]] - -local cssfile, xhtmlfile = nil, nil - -directives.register("backend.export.css", function(v) cssfile = v end) -directives.register("backend.export.xhtml",function(v) xhtmlfile = v end) - -local function stopexport(v) - starttiming(treehash) - report_export("finalizing") - finishexport() - collapsetree() - if trace_tree then - prunetree(tree) - report_export(table.serialize(tree,"root")) +local function pop() + local top = nesting[currentdepth] + tree = treestack[currentdepth] + currentdepth = currentdepth - 1 + if trace_export then + if top then + report_export("%s</%s>",spaces[currentdepth],top) + else + report_export("</%s>",top) + end end - checkinserts(tree.data) - hashlistdata() - if type(v) ~= "string" or v == variables.yes or v == "" then - v = tex.jobname +end + +local function continueexport() + if nofcurrentcontent > 0 then + if trace_export then + report_export("%s<!-- injecting pagebreak space -->",spaces[currentdepth]) + end + nofcurrentcontent = nofcurrentcontent + 1 + currentcontent[nofcurrentcontent] = " " -- pagebreak end - local xmlfile = file.addsuffix(v,"export") - local handle = io.open(xmlfile,"wb") - if handle then - local files = { } - local specification = { - name = file.removesuffix(v), - identifier = os.uuid(), - files = files, - } - report_export("saving xml data in '%s",xmlfile) - handle:write(format(xmlpreamble,tex.jobname,os.date(),environment.version,version)) - if type(cssfile) == "string" then - local cssfiles = settings_to_array(cssfile) - for i=1,#cssfiles do - local cssfile = cssfiles[i] - files[#files+1] = cssfile - if type(cssfile) ~= "string" or cssfile == variables.yes or cssfile == "" or cssfile == xmlfile then - cssfile = file.replacesuffix(xmlfile,"css") - else - cssfile = file.addsuffix(cssfile,"css") - end - report_export("adding css reference '%s",cssfile) - handle:write(format(csspreamble,cssfile)) - end +end + +local function pushentry(current) + if current then + if restart then + continueexport() + restart = false end - flushtree(handle,tree.data) - handle:close() - -- css template file - local cssfile = file.replacesuffix(xmlfile,"template") - report_export("saving css template in '%s",cssfile) - local templates = { format("/* template for file %s */",xmlfile) } - for element, details in table.sortedhash(used) do - templates[#templates+1] = format("/* category: %s */",element) - for detail, nature in table.sortedhash(details) do - local d = displaymapping[nature or "display"] or "block" - if detail == "" then - templates[#templates+1] = format(e_template,element,d) - else - templates[#templates+1] = format(d_template,element,detail,d) - end - end + local newdepth = #current + local olddepth = currentdepth + if trace_export then + report_export("%s<!-- moving from depth %s to %s (%s) -->",spaces[currentdepth],olddepth,newdepth,current[newdepth]) end - io.savedata(cssfile,concat(templates,"\n\n")) - -- xhtml references - if xhtmlfile then - -- messy - if type(v) ~= "string" or xhtmlfile == true or xhtmlfile == variables.yes or xhtmlfile == "" or xhtmlfile == xmlfile then - xhtmlfile = file.replacesuffix(xmlfile,"xhtml") - else - xhtmlfile = file.addsuffix(xhtmlfile,"xhtml") + if olddepth <= 0 then + for i=1,newdepth do + push(current[i],i) end - report_export("saving xhtml variant in '%s",xhtmlfile) - local xmltree = xml.load(xmlfile) - if xmltree then - local xmlwrap = xml.wrap - for e in xml.collected(xmltree,"/document") do - e.at["xmlns:xhtml"] = "http://www.w3.org/1999/xhtml" - break - end - local wrapper = { tg = "a", ns = "xhtml", at = { href = "unknown" } } - for e in xml.collected(xmltree,"link") do - local location = e.at.location - if location then - wrapper.at.href = "#" .. gsub(location,":","_") - xmlwrap(e,wrapper) + else + local difference + if olddepth < newdepth then + for i=1,olddepth do + if current[i] ~= nesting[i] then + difference = i + break end end - local wrapper = { tg = "a", ns = "xhtml", at = { name = "unknown" } } - for e in xml.collected(xmltree,"!link[@location]") do - local location = e.at.location - if location then - wrapper.at.name = gsub(location,":","_") - xmlwrap(e,wrapper) + else + for i=1,newdepth do + if current[i] ~= nesting[i] then + difference = i + break end end - xml.save(xmltree,xhtmlfile) end - files[#files+1] = xhtmlfile - specification.root = xhtmlfile - local specfile = file.replacesuffix(xmlfile,"specification") - report_export("saving specification in '%s' (mtxrun --script epub --make %s)",specfile,specfile) - io.savedata(specfile,table.serialize(specification,true)) + if difference then + for i=olddepth,difference,-1 do + pop() + end + for i=difference,newdepth do + push(current[i],i) + end + elseif newdepth > olddepth then + for i=olddepth+1,newdepth do + push(current[i],i) + end + elseif newdepth < olddepth then + for i=olddepth,newdepth,-1 do + pop() + end + elseif trace_export then + report_export("%s<!-- staying at depth %s (%s) -->",spaces[currentdepth],newdepth,nesting[newdepth] or "?") + end end - else - report_export("unable to saving xml in '%s",xmlfile) + return olddepth, newdepth end - stoptiming(treehash) end -local function startexport(v) - if v and not exporting then - nodes.tasks.appendaction("shipouts", "normalizers", "nodes.handlers.export") - report_export("enabling export to xml") - luatex.registerstopactions(function() stopexport(v) end) - if trace_spaces then - joiner_1 = "<S1/>" joiner_2 = "<S2/>" joiner_3 = "<S3/>" joiner_4 = "<S4/>" joiner_5 = "<S5/>" - joiner_6 = "<S6/>" joiner_7 = "<S7/>" joiner_8 = "<S8/>" joiner_9 = "<S9/>" joiner_0 = "<S0/>" +local function pushcontent(addbreak) + if nofcurrentcontent > 0 then + if addbreak then + if currentcontent[nofcurrentcontent] == "\n" then + if trace_export then + report_export("%s<!-- removing newline -->",spaces[currentdepth]) + end + nofcurrentcontent = nofcurrentcontent - 1 + end end - exporting = true + local content = concat(currentcontent,"",1,nofcurrentcontent) + if content == "" then + -- omit; when addbreak we could push, remove spaces, pop +--~ elseif content == " " and addbreak then + elseif somespace[content] and addbreak then + -- omit; when addbreak we could push, remove spaces, pop + else + local olddepth, newdepth + local list = taglist[currentattribute] + if list then + olddepth, newdepth = pushentry(list) + end + local td = tree.data + local nd = #td + td[nd+1] = content + if trace_export then + report_export("%s<!-- start content with length %s -->",spaces[currentdepth],#content) + report_export("%s%s",spaces[currentdepth],content) + report_export("%s<!-- stop content -->",spaces[currentdepth]) + end + if olddepth then + for i=newdepth-1,olddepth,-1 do + pop() + end + end + end + nofcurrentcontent = 0 + end + if addbreak then + pushentry(makebreaklist(currentnesting)) + -- if trace_export then + -- report_export("%s<!-- add break -->",spaces[currentdepth]) + -- end end end -directives.register("backend.export",startexport) -- maybe .name - -local function injectbreak() - flushresult(entry) - flushresult(makebreak(entry)) - result = { } - entry = { entry[1], result, last, lastpar } -- entry[1] ? -end - -local function injectspace(a,joiner) - flushresult(entry) - result = { joiner } - local tl = taglist[a] - entry = { tl , result, a, lastpar, n } +local function finishexport() + if trace_export then + report_export("%s<!-- start finalizing -->",spaces[currentdepth]) + end + if nofcurrentcontent > 0 then + if somespace[currentcontent[nofcurrentcontent]] then + if trace_export then + report_export("%s<!-- removing space -->",spaces[currentdepth]) + end + nofcurrentcontent = nofcurrentcontent - 1 + end + pushcontent() + end + for i=currentdepth,1,-1 do + pop() + end + currentcontent = { } -- we're nice and do a cleanup + if trace_export then + report_export("%s<!-- stop finalizing -->",spaces[currentdepth]) + end end -local function collectresults(head,list,p) - local preceding = p or false +local function collectresults(head,list) for n in traverse_nodes(head) do local id = n.id -- 14: image, 8: literal (mp) if id == glyph_code then @@ -1198,23 +1569,19 @@ local function collectresults(head,list,p) -- we could add tonunicodes for ligatures (todo) local components = n.components if components then -- we loose data - collectresults(components,nil,preceding) ---~ preceding = true + collectresults(components,nil) else + local c = n.char if last ~= at then local tl = taglist[at] - if entry then - flushresult(entry) - end - if preceding then - preceding = false - result = { joiner_5 } - else - result = { } + if trace_export then + report_export("%s<!-- processing glyph %s (tag %s) -->",spaces[currentdepth],utfchar(c),at) end - lastpar = has_attribute(n,a_taggedpar) - entry = { tl, result, at, lastpar, n } - local ah = { -- this includes detail ! + pushcontent() + currentparagraph = has_attribute(n,a_taggedpar) + currentnesting = tl + currentattribute = at + local ah = { -- this includes detail ! -- we can move some to te tex end align = has_attribute(n,a_taggedalign ), columns = has_attribute(n,a_taggedcolumns), rows = has_attribute(n,a_taggedrows ), @@ -1228,22 +1595,62 @@ local function collectresults(head,list,p) attributehash[tl[#tl]] = ah end last = at + pushentry(currentnesting) elseif last then local at = has_attribute(n,a_taggedpar) - if at ~= lastpar then - injectbreak() - lastpar = at + if at ~= currentparagraph then + -- inject break + pushcontent(true) -- add break + pushentry(currentnesting) + currentattribute = last + currentparagraph = at + end + if trace_export then + report_export("%s<!-- processing glyph %s (tag %s) -->",spaces[currentdepth],utfchar(c),last) + end + else + if trace_export then + report_export("%s<!-- processing glyph %s (tag %s) -->",spaces[currentdepth],utfchar(c),at) end end - local c = n.char - if c == 0x26 then - result[#result+1] = "&" - elseif c == 0x3E then - result[#result+1] = ">" - elseif c == 0x3C then - result[#result+1] = "<" - elseif c == 0 then - result[#result+1] = "" -- utfchar(0) -- todo: check if "" is needed + local s = has_attribute(n,a_exportstatus) + if s then + c = s + end + if c == 0 then + if trace_export then + report_export("%s<!-- skipping last glyph -->",spaces[currentdepth]) + end + -- skip +--~ elseif c == 0x26 then +--~ nofcurrentcontent = nofcurrentcontent + 1 +--~ currentcontent[nofcurrentcontent] = "&" +--~ if trace_export then +--~ report_export("%s<!-- turning last glyph into entity &-->",spaces[currentdepth]) +--~ end +--~ elseif c == 0x3E then +--~ nofcurrentcontent = nofcurrentcontent + 1 +--~ currentcontent[nofcurrentcontent] = ">" +--~ if trace_export then +--~ report_export("%s<!-- turning last glyph into entity >-->",spaces[currentdepth]) +--~ end +--~ elseif c == 0x3C then +--~ nofcurrentcontent = nofcurrentcontent + 1 +--~ currentcontent[nofcurrentcontent] = "<" +--~ if trace_export then +--~ report_export("%s<!-- turning last glyph into entity <-->",spaces[currentdepth]) +--~ end + elseif c == 0x20 then + local a = has_attribute(n,a_characters) + nofcurrentcontent = nofcurrentcontent + 1 + if a then + if trace_export then + report_export("%s<!-- turning last space into special space U+%05X -->",spaces[currentdepth],a) + end + currentcontent[nofcurrentcontent] = specialspaces[a] -- special space + else + currentcontent[nofcurrentcontent] = " " + end else local fc = fontchar[n.font] if fc then @@ -1251,17 +1658,22 @@ local function collectresults(head,list,p) if fc then local u = fc.tounicode if u and u ~= "" then + -- tracing for s in gmatch(u,"....") do -- is this ok? - result[#result+1] = utfchar(tonumber(s,16)) + nofcurrentcontent = nofcurrentcontent + 1 + currentcontent[nofcurrentcontent] = utfchar(tonumber(s,16)) end else - result[#result+1] = utfchar(c) + nofcurrentcontent = nofcurrentcontent + 1 + currentcontent[nofcurrentcontent] = utfchar(c) end else -- weird, happens in hz (we really need to get rid of the pseudo fonts) - result[#result+1] = utfchar(c) + nofcurrentcontent = nofcurrentcontent + 1 + currentcontent[nofcurrentcontent] = utfchar(c) end else - result[#result+1] = utfchar(c) + nofcurrentcontent = nofcurrentcontent + 1 + currentcontent[nofcurrentcontent] = utfchar(c) end end end @@ -1270,112 +1682,357 @@ local function collectresults(head,list,p) local ai = has_attribute(n,a_image) if ai then local at = has_attribute(n,a_tagged) - if entry then - flushresult(entry) - result = { } - entry[2] = result -- mess, to be sorted out, but otherwise duplicates (still some spacing issues) + if nofcurrentcontent > 0 then + pushcontent() + pushentry(currentnesting) -- ?? end local tl = taglist[at] local i = locate_node(n,whatsit_code,refximage_code) if i then attributehash[tl[#tl]] = { imageindex = i.index } end - flushresult { tl, { }, 0, 0 } -- has an index, todo: flag empty element + pushentry(tl) -- has an index, todo: flag empty element + if trace_export then + report_export("%s<!-- processing image (tag %s)",spaces[currentdepth],last) + end last = nil - lastpar = nil + currentparagraph = nil else ---~ if result and #result > 0 then -- and n.subtype == line_code then ---~ local r = result[#result] ---~ if type(r) == "string" and r ~= " " then ---~ local s = utfsub(r,-1) ---~ if s == hyphen then ---~ result[#result] = utfsub(r,1,-2) ---~ elseif s ~= joiner_7 then ---~ result[#result] = r .. joiner_7 ---~ --~ preceding = true ---~ end ---~ end ---~ preceding = false ---~ end -- we need to determine an end-of-line - preceding = collectresults(n.list,n,preceding) - preceding = false + collectresults(n.list,n) end elseif id == disc_code then -- probably too late collectresults(n.replace,nil) - preceding = false elseif id == glue_code then -- we need to distinguish between hskips and vskips local subtype = n.subtype - if subtype == userskip_code then -- todo space_code - if n.spec.width > threshold then ---~ preceding = true - if result and last and #result > 0 and result[#result] ~= " " then + if subtype == userskip_code then + local ca = has_attribute(n,a_characters) + if ca then + if ca == 0 then + -- skip this one ... already converted special character (node-acc) + else + local a = has_attribute(n,a_tagged) + if somespace[currentcontent[nofcurrentcontent]] then + if trace_export then + report_export("%s<!-- removing space -->",spaces[currentdepth]) + end + nofcurrentcontent = nofcurrentcontent - 1 + end + if last ~= a then + pushcontent() + last = a + currentnesting = taglist[last] + pushentry(currentnesting) + currentattribute = last + end + nofcurrentcontent = nofcurrentcontent + 1 + currentcontent[nofcurrentcontent] = specialspaces[ca] -- utfchar(ca) + if trace_export then + report_export("%s<!-- adding special space/glue (tag %s => %s) -->",spaces[currentdepth],last,a) + end + end + elseif n.spec.width > threshold then +--~ if has_attribute(n,a_textblock) then +--~ -- todo +--~ else + if last and not somespace[currentcontent[nofcurrentcontent]] then local a = has_attribute(n,a_tagged) if a == last then - result[#result+1] = joiner_6 - preceding = false + if trace_export then + report_export("%s<!-- injecting spacing 5a -->",spaces[currentdepth]) + end + nofcurrentcontent = nofcurrentcontent + 1 + currentcontent[nofcurrentcontent] = " " elseif a then -- e.g LOGO<space>LOGO - preceding = false + if trace_export then + report_export("%s<!-- processing glue > threshold (tag %s => %s) -->",spaces[currentdepth],last,a) + end + pushcontent() + if trace_export then + report_export("%s<!-- injecting spacing 5b -->",spaces[currentdepth]) + end last = a - injectspace(last,joiner_6) + nofcurrentcontent = nofcurrentcontent + 1 + currentcontent[nofcurrentcontent] = " " + currentnesting = taglist[last] + pushentry(currentnesting) + currentattribute = last end end end +--~ end + elseif subtype == spaceskip_code or subtype == xspaceskip_code then + if not somespace[currentcontent[nofcurrentcontent]] then + if trace_export then + report_export("%s<!-- injecting spacing 7 -->",spaces[currentdepth]) + end + nofcurrentcontent = nofcurrentcontent + 1 + currentcontent[nofcurrentcontent] = " " + end elseif subtype == rightskip_code or subtype == parfillskip_code then -if result and #result > 0 then -- and n.subtype == line_code then - local r = result[#result] - if type(r) == "string" and r ~= " " then - local s = utfsub(r,-1) - if s == hyphen then - result[#result] = utfsub(r,1,-2) - elseif s ~= joiner_7 then - result[#result] = r .. joiner_7 ---~ preceding = true - end - end - preceding = false -end + if nofcurrentcontent > 0 then -- and n.subtype == line_code then + local r = currentcontent[nofcurrentcontent] + if type(r) == "string" and r ~= " " then + local s = utfsub(r,-1) + if s == hyphen then + currentcontent[nofcurrentcontent] = utfsub(r,1,-2) + elseif s ~= "\n" then + if trace_export then + report_export("%s<!-- injecting newline 1 -->",spaces[currentdepth]) + end + nofcurrentcontent = nofcurrentcontent + 1 + currentcontent[nofcurrentcontent] = "\n" + end + end + end end elseif id == kern_code then if n.kern > threshold then ---~ preceding = true - if result and last and #result > 0 and result[#result] ~= " " then + if last and not somespace[currentcontent[nofcurrentcontent]] then local a = has_attribute(n,a_tagged) if a == last then - result[#result+1] = joiner_8 - preceding = false + if not somespace[currentcontent[nofcurrentcontent]] then + if trace_export then + report_export("%s<!-- injecting spacing 8 -->",spaces[currentdepth]) + end + nofcurrentcontent = nofcurrentcontent + 1 + currentcontent[nofcurrentcontent] = " " + end elseif a then -- e.g LOGO<space>LOGO - preceding = false + if trace_export then + report_export("%s<!-- processing kern > threshold (tag %s => %s)",spaces[currentdepth],last,a) + end last = a - injectspace(last,joiner_8) + pushcontent() + if trace_export then + report_export("%s<!-- injecting spacing 9 -->",spaces[currentdepth]) + end + nofcurrentcontent = nofcurrentcontent + 1 + currentcontent[nofcurrentcontent] = " " + currentnesting = taglist[last] + pushentry(currentnesting) + currentattribute = last end end end end end - return preceding end -function nodes.handlers.export(head) - if result then - -- maybe we need a better test for what is in result so far - if page_breaks then - joiner_0 = "<pagebreak/>" - end - result[#result+1] = joiner_0 - end +function nodes.handlers.export(head) -- hooks into the page builder starttiming(treehash) + if trace_export then + report_export("%s<!-- start flushing page -->",spaces[currentdepth]) + end + -- continueexport() + restart = true collectresults(head) - -- no flush here, pending page stuff + if trace_export then + report_export("%s<!-- stop flushing page -->",spaces[currentdepth]) + end stoptiming(treehash) return head, true end +function builders.paragraphs.tag(head) + noftextblocks = noftextblocks + 1 + for n in traverse_id(hlist_code,head) do + local subtype = n.subtype + if subtype == line_code then + set_attribute(n,a_textblock,noftextblocks) + elseif subtype == glue_code or subtype == kern_code then + set_attribute(n,a_textblock,0) + end + end + return false +end + +-- wrapper + +local displaymapping = { + inline = "inline", + display = "block", + mixed = "inline", +} + +local e_template = [[ +%s { + display: %s ; +}]] + +local d_template = [[ +%s[detail=%s] { + display: %s ; +}]] + +-- encoding='utf-8' + +local xmlpreamble = [[ +<?xml version='1.0' encoding='UTF-8' standalone='yes' ?> + +<!-- input filename : %- 17s --> +<!-- processing date : %- 17s --> +<!-- context version : %- 17s --> +<!-- exporter version : %- 17s --> +]] + +local csspreamble = [[ + +<?xml-stylesheet type="text/css" href="%s"?> +]] + +-- local xhtmlpreamble = [[ +-- <!DOCTYPE html PUBLIC +-- "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" +-- "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd" +-- > +-- ]] + +local cssfile, xhtmlfile = nil, nil + +directives.register("backend.export.css", function(v) cssfile = v end) +directives.register("backend.export.xhtml",function(v) xhtmlfile = v end) + +local function stopexport(v) + starttiming(treehash) + finishexport() + collapsetree(tree) + indextree(tree) + checkinserts(tree.data) + hashlistdata() + if type(v) ~= "string" or v == variables.yes or v == "" then + v = tex.jobname + end + local xmlfile = file.addsuffix(v,"export") + if type(cssfile) ~= "string" or cssfile == "" then + cssfile = nil + end + local files = { } + local specification = { + name = file.removesuffix(v), + identifier = os.uuid(), + files = files, + } + report_export("saving xml data in '%s",xmlfile) + local results = { } + results[#results+1] = format(xmlpreamble,tex.jobname,os.date(),environment.version,exportversion) + if cssfile then + local cssfiles = settings_to_array(cssfile) + for i=1,#cssfiles do + local cssfile = cssfiles[i] + files[#files+1] = cssfile + if type(cssfile) ~= "string" or cssfile == variables.yes or cssfile == "" or cssfile == xmlfile then + cssfile = file.replacesuffix(xmlfile,"css") + else + cssfile = file.addsuffix(cssfile,"css") + end + report_export("adding css reference '%s",cssfile) + results[#results+1] = format(csspreamble,cssfile) + end + end + -- collect tree + local result = { } + flushtree(result,tree.data) + result = concat(result) + result = gsub(result,"\n *\n","\n") + results[#results+1] = result + results = concat(results) + -- if needed we can do a cleanup of the tree (no need to load for xhtml then) + -- write to file + io.savedata(xmlfile,results) + -- css template file + if cssfile then + local cssfile = file.replacesuffix(xmlfile,"template") + report_export("saving css template in '%s",cssfile) + local templates = { format("/* template for file %s */",xmlfile) } + for element, details in table.sortedhash(used) do + templates[#templates+1] = format("/* category: %s */",element) + for detail, nature in table.sortedhash(details) do + local d = displaymapping[nature or "display"] or "block" + if detail == "" then + templates[#templates+1] = format(e_template,element,d) + else + templates[#templates+1] = format(d_template,element,detail,d) + end + end + end + io.savedata(cssfile,concat(templates,"\n\n")) + end + -- xhtml references + if xhtmlfile then + -- messy + if type(v) ~= "string" or xhtmlfile == true or xhtmlfile == variables.yes or xhtmlfile == "" or xhtmlfile == xmlfile then + xhtmlfile = file.replacesuffix(xmlfile,"xhtml") + else + xhtmlfile = file.addsuffix(xhtmlfile,"xhtml") + end + report_export("saving xhtml variant in '%s",xhtmlfile) + -- local xmltree = xml.load(xmlfile) + local xmltree = xml.convert(results) + if xmltree then + local xmlwrap = xml.wrap + for e in xml.collected(xmltree,"/document") do + e.at["xmlns:xhtml"] = "http://www.w3.org/1999/xhtml" + break + end + -- todo: inject xhtmlpreamble (xmlns should have be enough) + local wrapper = { tg = "a", ns = "xhtml", at = { href = "unknown" } } + for e in xml.collected(xmltree,"link") do + local location = e.at.location + if location then + wrapper.at.href = "#" .. gsub(location,":","_") + xmlwrap(e,wrapper) + end + end + local wrapper = { tg = "a", ns = "xhtml", at = { name = "unknown" } } + for e in xml.collected(xmltree,"!link[@location]") do + local location = e.at.location + if location then + wrapper.at.name = gsub(location,":","_") + xmlwrap(e,wrapper) + end + end + xml.save(xmltree,xhtmlfile) + end + files[#files+1] = xhtmlfile + specification.root = xhtmlfile + local specfile = file.replacesuffix(xmlfile,"specification") + report_export("saving specification in '%s' (mtxrun --script epub --make %s)",specfile,specfile) + io.savedata(specfile,table.serialize(specification,true)) + end + stoptiming(treehash) +end + +local appendaction = nodes.tasks.appendaction +local enableaction = nodes.tasks.enableaction + +local function startexport(v) + if v and not exporting then + report_export("enabling export to xml") +-- not yet known in task-ini + appendaction("shipouts", "normalizers", "nodes.handlers.export") +-- enableaction("shipouts","nodes.handlers.export") +-- + enableaction("shipouts","nodes.handlers.accessibility") + enableaction("math", "noads.handlers.tags") +--~ enableaction("finalizers","builders.paragraphs.tag") + luatex.registerstopactions(function() stopexport(v) end) + exporting = true + end +end + +directives.register("backend.export",startexport) -- maybe .name + statistics.register("xml exporting time", function() if exporting then - return format("%s seconds", statistics.elapsedtime(treehash)) + return format("%s seconds, version %s", statistics.elapsedtime(treehash),exportversion) end end) + +commands.settagitemgroup = structurestags.setitemgroup +commands.settagsynonym = structurestags.setsynonym +commands.settagsorting = structurestags.setsorting +commands.settagdescriptionid = structurestags.setdescriptionid diff --git a/tex/context/base/back-exp.mkiv b/tex/context/base/back-exp.mkiv index 88272fca7..d6fb74a97 100644 --- a/tex/context/base/back-exp.mkiv +++ b/tex/context/base/back-exp.mkiv @@ -5,7 +5,7 @@ %D subtitle=XML export, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -38,13 +38,16 @@ \def\setelementexporttag {\dotripleargument\dosetelementexporttag} -\def\dosetelementexporttag[#1][#2][#3]% +\def\dosetelementexporttag {\ifthirdargument - \ctxlua{structures.tags.settagproperty("#1","#2", "#3")}% + \expandafter\dosetelementexporttaga \else\ifsecondargument - \ctxlua{structures.tags.settagproperty("#1","export", "#2")}% + \expandafter\expandafter\expandafter\dosetelementexporttagb \fi\fi} +\def\dosetelementexporttaga[#1][#2][#3]{\ctxcommand{settagproperty("#1","#2","#3")}} +\def\dosetelementexporttagb[#1][#2][#3]{\ctxcommand{settagproperty("#1","export","#2")}} + \newcount\tagparcounter \let\dotagsetparcounter\relax @@ -62,13 +65,17 @@ \to \everytabulatepar % tricky, maybe this should be neverypar \appendtoks - \def\dotagnoftablecolumns{\attribute\taggedcolumnsattribute\!!counta}% - \def\dotagnoftablerows {\attribute\taggedrowsattribute \!!countb}% + \def\dotagnofTABLEcolumns{\attribute\taggedcolumnsattribute\!!counta}% + \def\dotagnofTABLErows {\attribute\taggedrowsattribute \!!countb}% \to \everyenableelements \appendtoks \def\dotagTABLEalign{\attribute\taggedalignattribute\raggedstatus}% - \def\dotagTABLEcell {\char\zerocount}% + \def\dotagTABLEcell {\char\zerocount}% brrr, we need to tag empty cells (unless we start numbering) +\to \everyenableelements + +\appendtoks + \def\dotagtabulatesignal{\dontleavehmode\char\zerocount\ignorespaces}% \to \everyenableelements \appendtoks @@ -76,11 +83,11 @@ \to \everyenableelements \appendtoks - \def\dotagsynonym{\ctxlua{structures.tags.setsynonym("\currentsynonym","\currentsynonymtag")}}% + \def\dotagsynonym{\ctxcommand{settagsynonym("\currentsynonym","\currentsynonymtag")}}% \to \everyenableelements \appendtoks - \def\dotagsorting{\ctxlua{structures.tags.setsorting("\currentsorting","\currentsortingtag")}}% + \def\dotagsorting{\ctxcommand{settagsorting("\currentsorting","\currentsortingtag")}}% \to \everyenableelements \appendtoks @@ -88,15 +95,15 @@ \to \everyenableelements \appendtoks - \def\dotagsetitemize{\ctxlua{structures.tags.setitemgroup(\ifconditional\packlistitem true\else false\fi,"\currentitemsymbol")}}% + \def\dotagsetitemize{\ctxcommand{settagitemgroup(\ifconditional\packlistitem true\else false\fi,"\currentitemsymbol")}}% \to \everyenableelements \appendtoks - \def\dotagsetdescriptiontag{\ctxlua{structures.tags.setdescriptionid("\currentdescription",\currentdescriptionnumberentry)}}% + \def\dotagsetdescriptiontag{\ctxcommand{settagdescriptionid("\currentdescription",\currentdescriptionnumberentry)}}% \to \everyenableelements \appendtoks - \def\dotagsetnotesymbol{\ctxlua{structures.tags.setdescriptionid("\currentnote",\currentnotenumber)}}% + \def\dotagsetnotesymbol{\ctxcommand{settagdescriptionid("\currentnote",\currentnotenumber)}}% \to \everyenableelements \appendtoks diff --git a/tex/context/base/back-ini.mkiv b/tex/context/base/back-ini.mkiv index a3cf2ca54..518057a8f 100644 --- a/tex/context/base/back-ini.mkiv +++ b/tex/context/base/back-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/back-pdf.lua b/tex/context/base/back-pdf.lua index 32f5d3504..63261aa3b 100644 --- a/tex/context/base/back-pdf.lua +++ b/tex/context/base/back-pdf.lua @@ -6,574 +6,7 @@ if not modules then modules = { } end modules ['back-pdf'] = { license = "see context related readme files" } --- we will move code to lpdf-* files (second cleanup stage in 2011/2012) - --- the push/pop is a mess (only needed for calculate ...) .. will be done differently - ---[[ldx-- -<p>This module implements a couple of cleanup methods. We need these -in order to meet the <l n='pdf'/> specification. Watch the double -parenthesis; they are needed because otherwise we would pass more -than one argument to <l n='tex'/>.</p> ---ldx]]-- - -local type, next, tostring = type, next, tostring -local char, byte, format, gsub, rep, gmatch = string.char, string.byte, string.format, string.gsub, string.rep, string.gmatch -local concat = table.concat -local round = math.round -local utfcharacters, utfvalues = string.utfcharacters, string.utfvalues - -local backends, lpdf, nodes, node = backends, lpdf, nodes, node - -local copy_node = node.copy - -local nodeinjections = backends.pdf.nodeinjections -local codeinjections = backends.pdf.codeinjections -local registrations = backends.pdf.registrations - -local nodepool = nodes.pool - -local register = nodepool.register - -local pdfconstant = lpdf.constant -local pdfstring = lpdf.string -local pdfdictionary = lpdf.dictionary -local pdfarray = lpdf.array -local pdfreference = lpdf.reference -local pdfverbose = lpdf.verbose -local pdfflushobject = lpdf.flushobject -local pdfimmediateobject = lpdf.immediateobject - -local pdfliteral = nodepool.pdfliteral -local pdfannotation_node = nodepool.pdfannotation - -function nodeinjections.rgbcolor(r,g,b) - return register(pdfliteral(format("%s %s %s rg %s %s %s RG",r,g,b,r,g,b))) -end - -function nodeinjections.cmykcolor(c,m,y,k) - return register(pdfliteral(format("%s %s %s %s k %s %s %s %s K",c,m,y,k,c,m,y,k))) -end - -function nodeinjections.graycolor(s) -- caching 0/1 does not pay off - return register(pdfliteral(format("%s g %s G",s,s))) -end - -function nodeinjections.spotcolor(n,f,d,p) - if type(p) == "string" then - p = gsub(p,","," ") -- brr misuse of spot - end - return register(pdfliteral(format("/%s cs /%s CS %s SCN %s scn",n,n,p,p))) -end - -function nodeinjections.transparency(n) - return register(pdfliteral(format("/Tr%s gs",n))) -end - -local effects = { - normal = 0, - inner = 0, - outer = 1, - both = 2, - hidden = 3, -} - -function nodeinjections.effect(effect,stretch,rulethickness) - -- always, no zero test (removed) - rulethickness = number.dimenfactors["bp"] * rulethickness - effect = effects[effect] or effects['normal'] - return register(pdfliteral(format("%s Tc %s w %s Tr",stretch,rulethickness,effect))) -- watch order -end - --- cached .. - -local cache = { } - -function codeinjections.startlayer(name) - codeinjections.useviewerlayer(name) - return format("/OC /%s BDC",name) -end - -function codeinjections.stoplayer(name) - return "EMC" -end - -function nodeinjections.startlayer(name) - local c = cache[name] - if not c then - codeinjections.useviewerlayer(name) - c = register(pdfliteral(format("/OC /%s BDC",name))) - cache[name] = c - end - return copy_node(c) -end - -local stop = register(pdfliteral("EMC")) - -function nodeinjections.stoplayer() - return copy_node(stop) -end - -local cache = { } - -function nodeinjections.switchlayer(name) -- not used, optimization - local c = cache[name] - if not c then - codeinjections.useviewerlayer(name) - c = register(pdfliteral(format("EMC /OC /%s BDC",name))) - end - return copy_node(c) -end - --- code, will move to lpdf-* - -function nodeinjections.insertmovie(specification) - -- managed in figure inclusion: width, height, factor, repeat, controls, preview, label, foundname - local width = specification.width - local height = specification.height - local factor = specification.factor or number.dimenfactors.bp - local moviedict = pdfdictionary { - F = specification.foundname, - Aspect = pdfarray { factor * width, factor * height }, - Poster = (specification.preview and true) or false, - } - local controldict = pdfdictionary { - ShowControls = (specification.controls and true) or false, - Mode = (specification["repeat"] and pdfconstant("Repeat")) or nil, - } - local action = pdfdictionary { - Subtype = pdfconstant("Movie"), - Border = pdfarray { 0, 0, 0 }, - T = format("movie %s",specification.label), - Movie = moviedict, - A = controldict, - } - node.write(pdfannotation_node(width,height,0,action())) -end - -function nodeinjections.insertsound(specification) - -- rmanaged in interaction: repeat, label, foundname - local soundclip = interactions.soundclips.soundclip(specification.label) - if soundclip then - local controldict = pdfdictionary { - Mode = (specification["repeat"] and pdfconstant("Repeat")) or nil - } - local sounddict = pdfdictionary { - F = soundclip.filename - } - local action = pdfdictionary { - Subtype = pdfconstant("Movie"), - Border = pdfarray { 0, 0, 0 }, - T = format("sound %s",specification.label), - Movie = sounddict, - A = controldict, - } - node.write(pdfannotation_node(0,0,0,action())) - end -end - --- spot- and indexcolors - -local pdf_separation = pdfconstant("Separation") -local pdf_indexed = pdfconstant("Indexed") -local pdf_device_n = pdfconstant("DeviceN") -local pdf_device_rgb = pdfconstant("DeviceRGB") -local pdf_device_cmyk = pdfconstant("DeviceCMYK") -local pdf_device_gray = pdfconstant("DeviceGray") -local pdf_extgstate = pdfconstant("ExtGState") - -local pdf_rbg_range = pdfarray { 0, 1, 0, 1, 0, 1 } -local pdf_cmyk_range = pdfarray { 0, 1, 0, 1, 0, 1, 0, 1 } -local pdf_gray_range = pdfarray { 0, 1 } - -local rgb_function = "dup %s mul exch dup %s mul exch %s mul" -local cmyk_function = "dup %s mul exch dup %s mul exch dup %s mul exch %s mul" -local gray_function = "%s mul" - -local documentcolorspaces = pdfdictionary() - -local spotcolorhash = { } -- not needed -local spotcolornames = { } -local indexcolorhash = { } -local delayedindexcolors = { } - -function registrations.spotcolorname(name,e) - spotcolornames[name] = e or name -end - -function registrations.getspotcolorreference(name) - return spotcolorhash[name] -end - --- beware: xpdf/okular/evince cannot handle the spot->process shade - --- This should become delayed i.e. only flush when used; in that case we need --- need to store the specification and then flush them when accesssomespotcolor --- is called. At this moment we assume that splotcolors that get defined are --- also used which keeps the overhad small anyway. - -local processcolors - -local function registersomespotcolor(name,noffractions,names,p,colorspace,range,funct) - noffractions = tonumber(noffractions) or 1 -- to be checked - if noffractions == 0 then - -- can't happen - elseif noffractions == 1 then - local dictionary = pdfdictionary { - FunctionType = 4, - Domain = { 0, 1 }, - Range = range, - } - local calculations = pdfimmediateobject("stream",format("{ %s }",funct),dictionary()) -- todo: lpdf.stream - -- local calculations = pdfobject { - -- type = "stream", - -- immediate = true, - -- string = format("{ %s }",funct), - -- attr = dictionary(), - -- } - local array = pdfarray { - pdf_separation, - pdfconstant(spotcolornames[name] or name), - colorspace, - pdfreference(calculations), - } - local m = pdfimmediateobject(tostring(array)) - local mr = pdfreference(m) - spotcolorhash[name] = m - documentcolorspaces[name] = mr - lpdf.adddocumentcolorspace(name,mr) - else - local cnames = pdfarray() - local domain = pdfarray() - local colorants = pdfdictionary() - for n in gmatch(names,"[^,]+") do - local name = spotcolornames[n] or n - if n == "cyan" then - name = "Cyan" - elseif n == "magenta" then - name = "Magenta" - elseif n == "yellow" then - name = "Yellow" - elseif n == "black" then - name = "Black" - else - colorants[name] = pdfreference(spotcolorhash[name] or spotcolorhash[n]) - end - cnames[#cnames+1] = pdfconstant(name) - domain[#domain+1] = 0 - domain[#domain+1] = 1 - end - if not processcolors then - local specification = pdfdictionary { - ColorSpace = pdfconstant("DeviceCMYK"), - Components = pdfarray { - pdfconstant("Cyan"), - pdfconstant("Magenta"), - pdfconstant("Yellow"), - pdfconstant("Black") - } - } - processcolors = pdfreference(pdfimmediateobject(tostring(specification))) - end - local dictionary = pdfdictionary { - FunctionType = 4, - Domain = domain, - Range = range, - } - local calculation = pdfimmediateobject("stream",format("{ %s %s }",rep("pop ",noffractions),funct),dictionary()) - local channels = pdfdictionary { - Subtype = pdfconstant("NChannel"), - Colorants = colorants, - Process = processcolors, - } - local array = pdfarray { - pdf_device_n, - cnames, - colorspace, - pdfreference(calculation), - lpdf.shareobjectreference(tostring(channels)), -- optional but needed for shades - } - local m = pdfimmediateobject(tostring(array)) - local mr = pdfreference(m) - spotcolorhash[name] = m - documentcolorspaces[name] = mr - lpdf.adddocumentcolorspace(name,mr) - end -end - --- wrong name - -local function registersomeindexcolor(name,noffractions,names,p,colorspace,range,funct) - noffractions = tonumber(noffractions) or 1 -- to be checked - local cnames = pdfarray() - local domain = pdfarray() - if names == "" then - names = name .. ",None" - else - names = names .. ",None" - end - for n in gmatch(names,"[^,]+") do - cnames[#cnames+1] = pdfconstant(spotcolornames[n] or n) - domain[#domain+1] = 0 - domain[#domain+1] = 1 - end - local dictionary = pdfdictionary { - FunctionType = 4, - Domain = domain, - Range = range, - } - local n = pdfimmediateobject("stream",format("{ %s %s }",rep("exch pop ",noffractions),funct),dictionary()) -- exch pop - local a = pdfarray { - pdf_device_n, - cnames, - colorspace, - pdfreference(n), - } - if p == "" then - p = "1" - else - p = p .. ",1" - end - local pi = { } - for pp in gmatch(p,"[^,]+") do - pi[#pi+1] = tonumber(pp) - end - local vector, set, n = { }, { }, #pi - for i=255,0,-1 do - for j=1,n do - set[j] = format("%02X",round(pi[j]*i)) - end - vector[#vector+1] = concat(set) - end - vector = pdfverbose { "<", concat(vector, " "), ">" } - local n = pdfimmediateobject(tostring(pdfarray{ pdf_indexed, a, 255, vector })) - lpdf.adddocumentcolorspace(format("%s_indexed",name),pdfreference(n)) - return n -end - --- actually, names (parent) is the hash - -local function delayindexcolor(name,names,func) - local hash = (names ~= "" and names) or name - delayedindexcolors[hash] = func -end - -local function indexcolorref(name) -- actually, names (parent) is the hash - if not indexcolorhash[name] then - local delayedindexcolor = delayedindexcolors[name] - if type(delayedindexcolor) == "function" then - indexcolorhash[name] = delayedindexcolor() - delayedindexcolors[name] = true - end - end - return indexcolorhash[name] -end - -function registrations.rgbspotcolor(name,noffractions,names,p,r,g,b) - if noffractions == 1 then - registersomespotcolor(name,noffractions,names,p,pdf_device_rgb,pdf_rbg_range,format(rgb_function,r,g,b)) - else - registersomespotcolor(name,noffractions,names,p,pdf_device_rgb,pdf_rbg_range,format("%s %s %s",r,g,b)) - end - delayindexcolor(name,names,function() - return registersomeindexcolor(name,noffractions,names,p,pdf_device_rgb,pdf_rgb_range,format(rgb_function,r,g,b)) - end) -end - -function registrations.cmykspotcolor(name,noffractions,names,p,c,m,y,k) - if noffractions == 1 then - registersomespotcolor(name,noffractions,names,p,pdf_device_cmyk,pdf_cmyk_range,format(cmyk_function,c,m,y,k)) - else - registersomespotcolor(name,noffractions,names,p,pdf_device_cmyk,pdf_cmyk_range,format("%s %s %s %s",c,m,y,k)) - end - delayindexcolor(name,names,function() - return registersomeindexcolor(name,noffractions,names,p,pdf_device_cmyk,pdf_cmyk_range,format(cmyk_function,c,m,y,k)) - end) -end - -function registrations.grayspotcolor(name,noffractions,names,p,s) - if noffractions == 1 then - registersomespotcolor(name,noffractions,names,p,pdf_device_gray,pdf_gray_range,format(gray_function,s)) - else - registersomespotcolor(name,noffractions,names,p,pdf_device_gray,pdf_gray_range,s) - end - delayindexcolor(name,names,function() - return registersomeindexcolor(name,noffractions,names,p,pdf_device_gray,pdf_gray_range,format(gray_function,s)) - end) -end - -function registrations.rgbindexcolor(name,noffractions,names,p,r,g,b) - registersomeindexcolor(name,noffractions,names,p,pdf_device_rgb,pdf_rgb_range,format(rgb_function,r,g,b)) -end - -function registrations.cmykindexcolor(name,noffractions,names,p,c,m,y,k) - registersomeindexcolor(name,noffractions,names,p,pdf_device_cmyk,pdf_cmyk_range,format(cmyk_function,c,m,y,k)) -end - -function registrations.grayindexcolor(name,noffractions,names,p,s) - registersomeindexcolor(name,noffractions,names,p,pdf_device_gray,pdf_gray_range,gray_function) -end - -function codeinjections.setfigurecolorspace(data,figure) - local color = data.request.color - if color then - local ref = indexcolorref(color) - if ref then - figure.colorspace = ref - data.used.color = color - end - end -end - --- transparency - -local transparencies = { [0] = - pdfconstant("Normal"), - pdfconstant("Normal"), - pdfconstant("Multiply"), - pdfconstant("Screen"), - pdfconstant("Overlay"), - pdfconstant("SoftLight"), - pdfconstant("HardLight"), - pdfconstant("ColorDodge"), - pdfconstant("ColorBurn"), - pdfconstant("Darken"), - pdfconstant("Lighten"), - pdfconstant("Difference"), - pdfconstant("Exclusion"), - pdfconstant("Compatible"), -} - -local documenttransparencies = { } -local transparencyhash = { } -- share objects - -local done = false - -function registrations.transparency(n,a,t) - if not done then - local d = pdfdictionary { - Type = pdf_extgstate, - ca = 1, - CA = 1, - BM = transparencies[1], - AIS = false, - } - local m = pdfimmediateobject(tostring(d)) - local mr = pdfreference(m) - transparencyhash[0] = m - documenttransparencies[0] = mr - lpdf.adddocumentextgstate("Tr0",mr) - done = true - end - if n > 0 and not transparencyhash[n] then - local d = pdfdictionary { - Type = pdf_extgstate, - ca = tonumber(t), - CA = tonumber(t), - BM = transparencies[tonumber(a)] or transparencies[0], - AIS = false, - } - local m = pdfimmediateobject(tostring(d)) - local mr = pdfreference(m) - transparencyhash[n] = m - documenttransparencies[n] = mr - lpdf.adddocumentextgstate(format("Tr%s",n),mr) - end -end - --- overloaded in lpdf-xmp: - -function codeinjections.adddocumentinfo(key,value) - lpdf.addtoinfo(key,lpdf.tosixteen(value)) -end - --- graphics - -function codeinjections.setfigurealternative(data,figure) - local request = data.request - local display = request.display - if display and display ~= "" then - local nested = figures.push { - name = display, - page = request.page, - size = request.size, - prefix = request.prefix, - cache = request.cache, - width = request.width, - height = request.height, - } - figures.identify() - local displayfigure = figures.check() - if displayfigure then - -- figure.aform = true - img.immediatewrite(figure) - local a = pdfarray { - pdfdictionary { - Image = pdfreference(figure.objnum), - DefaultForPrinting = true, - } - } - local d = pdfdictionary { - Alternates = pdfreference(pdfimmediateobject(tostring(a))), - } - displayfigure.attr = d() - figures.pop() - return displayfigure, nested - else - figures.pop() - end - end -end - -function codeinjections.getpreviewfigure(request) - local figure = figures.initialize(request) - if not figure then - return - end - figure = figures.identify(figure) - if not figure then - return - end - figure = figures.check(figure) - if not figure then - return - end - local image = figure.status.private - if image then - img.immediatewrite(image) - end - return figure -end - -function codeinjections.setfiguremask(data,figure) -- mark - local request = data.request - local mask = request.mask - if mask and mask ~= "" then - figures.push { - name = mask, - page = request.page, - size = request.size, - prefix = request.prefix, - cache = request.cache, - width = request.width, - height = request.height, - } - figures.identify() - local maskfigure = figures.check() - if maskfigure then - local image = maskfigure.status.private - if image then - img.immediatewrite(image) - local d = pdfdictionary { - Interpolate = false, - SMask = pdfreference(image.objnum), - } - figure.attr = d() - end - end - figures.pop() - end -end +local codeinjections = backends.pdf.codeinjections local outputfilename @@ -584,35 +17,4 @@ function codeinjections.getoutputfilename() return outputfilename end --- temp hack - -local factor = number.dimenfactors.bp - -function img.package(image) - local boundingbox = image.bbox - local imagetag = "Im" .. image.index - local resources = pdfdictionary { - ProcSet = pdfarray { - pdfconstant("PDF"), - pdfconstant("ImageC") - }, - Resources = pdfdictionary { - XObject = pdfdictionary { - [imagetag] = pdfreference(image.objnum) - } - } - } - local width = boundingbox[3] - local height = boundingbox[4] - local xform = img.scan { - attr = resources(), - stream = format("%s 0 0 %s 0 0 cm /%s Do",width,height,imagetag), - bbox = { 0, 0, width/factor, height/factor }, - } - img.immediatewrite(xform) - return xform -end - --- till here - backends.install("pdf") diff --git a/tex/context/base/back-pdf.mkiv b/tex/context/base/back-pdf.mkiv index 5b7de128d..30beb2fb9 100644 --- a/tex/context/base/back-pdf.mkiv +++ b/tex/context/base/back-pdf.mkiv @@ -5,7 +5,7 @@ %D subtitle=\PDF, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -14,15 +14,16 @@ \writestatus{loading}{ConTeXt Backend Macros / PDF} \registerctxluafile{lpdf-ini}{1.001} +\registerctxluafile{lpdf-nod}{1.001} \registerctxluafile{lpdf-col}{1.000} \registerctxluafile{lpdf-xmp}{1.001} -\registerctxluafile{lpdf-nod}{1.001} \registerctxluafile{lpdf-mis}{1.001} \registerctxluafile{lpdf-ano}{1.001} \registerctxluafile{lpdf-ren}{1.001} \registerctxluafile{lpdf-grp}{1.001} \registerctxluafile{lpdf-wid}{1.001} \registerctxluafile{lpdf-fld}{1.001} +\registerctxluafile{lpdf-mov}{1.001} \registerctxluafile{lpdf-u3d}{1.001} \registerctxluafile{lpdf-swf}{1.001} \registerctxluafile{lpdf-tag}{1.001} @@ -140,7 +141,7 @@ \def\dostartmirroring{\pdfliteral{-1 0 0 1 0 0 cm}} \def\dostopmirroring {\pdfliteral{-1 0 0 1 0 0 cm}} -\def\dostartclipping#1#2#3% todo (still needed?) +\def\dostartclipping#1#2#3% todo (still needed?) (can move to lua) {\PointsToBigPoints{#2}\width \PointsToBigPoints{#3}\height \grabMPclippath{#1}{1}\width\height{0 0 m \width\space 0 l \width \height l 0 \height l}% diff --git a/tex/context/base/back-u3d.mkiv b/tex/context/base/back-u3d.mkiv index e26094496..dfe8a90c2 100644 --- a/tex/context/base/back-u3d.mkiv +++ b/tex/context/base/back-u3d.mkiv @@ -5,7 +5,7 @@ %D subtitle=U3D Experiment, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/bibl-bib.mkiv b/tex/context/base/bibl-bib.mkiv index 681be325f..760338f39 100644 --- a/tex/context/base/bibl-bib.mkiv +++ b/tex/context/base/bibl-bib.mkiv @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen \& Taco Hoekwater, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/bibl-tra.mkii b/tex/context/base/bibl-tra.mkii index 2c03a7f91..a9ce392a2 100644 --- a/tex/context/base/bibl-tra.mkii +++ b/tex/context/base/bibl-tra.mkii @@ -5,7 +5,7 @@ %D subtitle=Publications, %D author=Taco Hoekwater, %D date=\currentdate, -%D copyright=Public Domain] +%D copyright={Public Domain}] %C %C Donated to the public domain. diff --git a/tex/context/base/bibl-tra.mkiv b/tex/context/base/bibl-tra.mkiv index 8e2f61641..77df70b69 100644 --- a/tex/context/base/bibl-tra.mkiv +++ b/tex/context/base/bibl-tra.mkiv @@ -5,7 +5,7 @@ %D subtitle=Publications, %D author=Taco Hoekwater, %D date=\currentdate, -%D copyright=Public Domain] +%D copyright={Public Domain}] %C %C Donated to the public domain. diff --git a/tex/context/base/blob-ini.mkiv b/tex/context/base/blob-ini.mkiv index 7f63ec73d..eaaae844c 100644 --- a/tex/context/base/blob-ini.mkiv +++ b/tex/context/base/blob-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/buff-imp-default.mkiv b/tex/context/base/buff-imp-default.mkiv index 7a935e218..5cff34c70 100644 --- a/tex/context/base/buff-imp-default.mkiv +++ b/tex/context/base/buff-imp-default.mkiv @@ -5,7 +5,7 @@ %D subtitle=Default, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/buff-imp-escaped.mkiv b/tex/context/base/buff-imp-escaped.mkiv index 55d2fb093..13850475a 100644 --- a/tex/context/base/buff-imp-escaped.mkiv +++ b/tex/context/base/buff-imp-escaped.mkiv @@ -5,7 +5,7 @@ %D subtitle=Escaped, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/buff-imp-lua.mkiv b/tex/context/base/buff-imp-lua.mkiv index a04e23851..dc601bd7b 100644 --- a/tex/context/base/buff-imp-lua.mkiv +++ b/tex/context/base/buff-imp-lua.mkiv @@ -5,7 +5,7 @@ %D subtitle=\LUA, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/buff-imp-mp.mkiv b/tex/context/base/buff-imp-mp.mkiv index 55e13b12d..a40eb6c30 100644 --- a/tex/context/base/buff-imp-mp.mkiv +++ b/tex/context/base/buff-imp-mp.mkiv @@ -5,7 +5,7 @@ %D subtitle=\METAPOST, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/buff-imp-nested.mkiv b/tex/context/base/buff-imp-nested.mkiv index 627acc685..7815086db 100644 --- a/tex/context/base/buff-imp-nested.mkiv +++ b/tex/context/base/buff-imp-nested.mkiv @@ -5,7 +5,7 @@ %D subtitle=Nested, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/buff-imp-parsed-xml.mkiv b/tex/context/base/buff-imp-parsed-xml.mkiv index 1aa8fbc74..bd348a67d 100644 --- a/tex/context/base/buff-imp-parsed-xml.mkiv +++ b/tex/context/base/buff-imp-parsed-xml.mkiv @@ -5,7 +5,7 @@ %D subtitle=Parsed \XML, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/buff-imp-tex.mkiv b/tex/context/base/buff-imp-tex.mkiv index 384975729..6f5ba6b10 100644 --- a/tex/context/base/buff-imp-tex.mkiv +++ b/tex/context/base/buff-imp-tex.mkiv @@ -5,7 +5,7 @@ %D subtitle=\TEX, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/buff-imp-xml.mkiv b/tex/context/base/buff-imp-xml.mkiv index 68dc9ed13..f880ab882 100644 --- a/tex/context/base/buff-imp-xml.mkiv +++ b/tex/context/base/buff-imp-xml.mkiv @@ -5,7 +5,7 @@ %D subtitle=\XML, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/buff-ini.lua b/tex/context/base/buff-ini.lua index 70328f0f1..c52753cf9 100644 --- a/tex/context/base/buff-ini.lua +++ b/tex/context/base/buff-ini.lua @@ -59,11 +59,14 @@ local function collectcontent(names,separator) -- no print if type(names) == "string" then names = settings_to_array(names) end - if #names == 1 then + local nnames = #names + if nnames == 0 then + return data[""] or "" -- default buffer + elseif nnames == 1 then return getcontent(names[1]) else local t, n = { }, 0 - for i=1,#names do + for i=1,nnames do local c = getcontent(names[i]) if c ~= "" then n = n + 1 diff --git a/tex/context/base/buff-ini.mkii b/tex/context/base/buff-ini.mkii index fc147d090..40baaec93 100644 --- a/tex/context/base/buff-ini.mkii +++ b/tex/context/base/buff-ini.mkii @@ -5,7 +5,7 @@ %D subtitle=Buffers, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/buff-ini.mkiv b/tex/context/base/buff-ini.mkiv index 7bd382fe2..4db373836 100644 --- a/tex/context/base/buff-ini.mkiv +++ b/tex/context/base/buff-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=Buffers, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/buff-par.mkiv b/tex/context/base/buff-par.mkiv index c44a75050..02e250b81 100644 --- a/tex/context/base/buff-par.mkiv +++ b/tex/context/base/buff-par.mkiv @@ -5,7 +5,7 @@ %D subtitle=Parallel, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/buff-ver.mkii b/tex/context/base/buff-ver.mkii index 355296101..fbe56892e 100644 --- a/tex/context/base/buff-ver.mkii +++ b/tex/context/base/buff-ver.mkii @@ -5,7 +5,7 @@ %D subtitle=Verbatim, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/buff-ver.mkiv b/tex/context/base/buff-ver.mkiv index c8f07ddb4..15a8d2887 100644 --- a/tex/context/base/buff-ver.mkiv +++ b/tex/context/base/buff-ver.mkiv @@ -5,7 +5,7 @@ %D subtitle=Verbatim, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/bxml-apa.mkiv b/tex/context/base/bxml-apa.mkiv index 5fc87e5ef..35319e4ce 100644 --- a/tex/context/base/bxml-apa.mkiv +++ b/tex/context/base/bxml-apa.mkiv @@ -5,7 +5,7 @@ %D subtitle=Publications, %D author={Taco Hoekwater \& Hans Hagen}, %D date=\currentdate, -%D copyright={Hans Hagen \& Taco Hoekwater}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/catc-act.mkii b/tex/context/base/catc-act.mkii index 41b7e8b98..6535afc56 100644 --- a/tex/context/base/catc-act.mkii +++ b/tex/context/base/catc-act.mkii @@ -5,7 +5,7 @@ %D subtitle=Default Catcode Tables, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/catc-act.mkiv b/tex/context/base/catc-act.mkiv index 2cde28e44..c1a044df1 100644 --- a/tex/context/base/catc-act.mkiv +++ b/tex/context/base/catc-act.mkiv @@ -5,7 +5,7 @@ %D subtitle=Default Catcode Tables, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/catc-ctx.mkii b/tex/context/base/catc-ctx.mkii index 6bf4e9cfb..8bb43c1f9 100644 --- a/tex/context/base/catc-ctx.mkii +++ b/tex/context/base/catc-ctx.mkii @@ -5,7 +5,7 @@ %D subtitle=Extra Tables, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/catc-ctx.mkiv b/tex/context/base/catc-ctx.mkiv index bdba6aeee..347c37da4 100644 --- a/tex/context/base/catc-ctx.mkiv +++ b/tex/context/base/catc-ctx.mkiv @@ -5,7 +5,7 @@ %D subtitle=Extra Tables, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -46,9 +46,10 @@ \catcode\formfeedasciicode \endoflinecatcode \catcode\spaceasciicode \spacecatcode \catcode\endoffileasciicode \ignorecatcode - \catcode\circumflexasciicode\superscriptcatcode + \catcode\circumflexasciicode\superscriptcatcode % candidate \catcode\underscoreasciicode\lettercatcode \catcode\ampersandasciicode \alignmentcatcode +% \catcode\colonasciicode \lettercatcode % candidate \catcode\backslashasciicode \escapecatcode \catcode\leftbraceasciicode \begingroupcatcode \catcode\rightbraceasciicode\endgroupcatcode diff --git a/tex/context/base/catc-def.mkii b/tex/context/base/catc-def.mkii index 275a9a6cd..25044bdf0 100644 --- a/tex/context/base/catc-def.mkii +++ b/tex/context/base/catc-def.mkii @@ -5,7 +5,7 @@ %D subtitle=Default Tables, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/catc-def.mkiv b/tex/context/base/catc-def.mkiv index 0bd7deed7..0c6c5370d 100644 --- a/tex/context/base/catc-def.mkiv +++ b/tex/context/base/catc-def.mkiv @@ -5,7 +5,7 @@ %D subtitle=Default Tables, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/catc-ini.mkii b/tex/context/base/catc-ini.mkii index 900f61756..7527466e1 100644 --- a/tex/context/base/catc-ini.mkii +++ b/tex/context/base/catc-ini.mkii @@ -5,7 +5,7 @@ %D subtitle=Catcode Handling, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/catc-ini.mkiv b/tex/context/base/catc-ini.mkiv index 9221d17c5..9e7693203 100644 --- a/tex/context/base/catc-ini.mkiv +++ b/tex/context/base/catc-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=Catcode Handling, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -48,6 +48,7 @@ \setnewconstant\dollarasciicode 36 \setnewconstant\commentasciicode 37 \setnewconstant\ampersandasciicode 38 +\setnewconstant\colonasciicode 58 \setnewconstant\backslashasciicode 92 % `\\ \setnewconstant\circumflexasciicode 94 \setnewconstant\underscoreasciicode 95 diff --git a/tex/context/base/catc-sym.mkii b/tex/context/base/catc-sym.mkii index 91cac5f90..55782f11e 100644 --- a/tex/context/base/catc-sym.mkii +++ b/tex/context/base/catc-sym.mkii @@ -5,7 +5,7 @@ %D subtitle=Some Handy Constants, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/catc-sym.mkiv b/tex/context/base/catc-sym.mkiv index 91cac5f90..55782f11e 100644 --- a/tex/context/base/catc-sym.mkiv +++ b/tex/context/base/catc-sym.mkiv @@ -5,7 +5,7 @@ %D subtitle=Some Handy Constants, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/catc-xml.mkii b/tex/context/base/catc-xml.mkii index 2349e01a2..45eb5a421 100644 --- a/tex/context/base/catc-xml.mkii +++ b/tex/context/base/catc-xml.mkii @@ -5,7 +5,7 @@ %D subtitle=\XML\ Catcode Tables, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/catc-xml.mkiv b/tex/context/base/catc-xml.mkiv index 1f11d353a..5e7df11f5 100644 --- a/tex/context/base/catc-xml.mkiv +++ b/tex/context/base/catc-xml.mkiv @@ -5,7 +5,7 @@ %D subtitle=\XML\ Catcode Tables, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/char-act.mkiv b/tex/context/base/char-act.mkiv index 1045d5975..9e219bccf 100644 --- a/tex/context/base/char-act.mkiv +++ b/tex/context/base/char-act.mkiv @@ -5,7 +5,7 @@ %D subtitle=Active, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/char-def.lua b/tex/context/base/char-def.lua index c830774cb..529cf8fee 100644 --- a/tex/context/base/char-def.lua +++ b/tex/context/base/char-def.lua @@ -458,6 +458,7 @@ characters.data={ description="SOLIDUS", direction="cs", linebreak="sy", + mathclass="binary", mathsymbol=0x2044, unicodeslot=0x002F, }, @@ -50190,7 +50191,7 @@ characters.data={ }, [0x200A]={ category="zs", - contextname="figurespace", + contextname="hairspace", description="HAIR SPACE", direction="ws", linebreak="ba", @@ -53010,6 +53011,7 @@ characters.data={ }, }, mathstretch="h", + mathfiller="leftarrowfill", unicodeslot=0x2190, }, [0x2191]={ @@ -53048,6 +53050,7 @@ characters.data={ name="overrightarrow", }, }, + mathfiller="rightarrowfill", mathstretch="h", unicodeslot=0x2192, }, @@ -56858,7 +56861,7 @@ characters.data={ direction="on", linebreak="al", mathclass="open", - mathname="lceil", + mathname="lceiling", mirror=0x2309, unicodeslot=0x2308, }, @@ -56868,7 +56871,7 @@ characters.data={ direction="on", linebreak="al", mathclass="close", - mathname="rceil", + mathname="rceiling", mirror=0x2308, unicodeslot=0x2309, }, diff --git a/tex/context/base/char-enc.mkiv b/tex/context/base/char-enc.mkiv index 9fe9a363b..86ab2591a 100644 --- a/tex/context/base/char-enc.mkiv +++ b/tex/context/base/char-enc.mkiv @@ -5,7 +5,7 @@ %D subtitle=Encodings, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/char-ent.lua b/tex/context/base/char-ent.lua new file mode 100644 index 000000000..c330d81a4 --- /dev/null +++ b/tex/context/base/char-ent.lua @@ -0,0 +1,2258 @@ +if not modules then modules = { } end modules ['math-ent'] = { + version = 1.001, + comment = "companion to math-ini.mkiv", + author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", + copyright = "derived from the mathml 2.0 specification", +} + +-- http://www.w3.org/2003/entities/2007/w3centities-f.ent +-- http://www.w3.org/2003/entities/2007/htmlmathml-f.ent + +-- this might go into char-def + +local entities = utilities.storage.allocate { + ["AElig"] = "Æ", -- U+000C6 + ["AMP"] = "&", -- U+00026 + ["Aacgr"] = "Ά", -- U+00386 + ["Aacute"] = "Á", -- U+000C1 + ["Abreve"] = "Ă", -- U+00102 + ["Acirc"] = "Â", -- U+000C2 + ["Acy"] = "А", -- U+00410 + ["Afr"] = "𝔄", -- U+1D504 + ["Agr"] = "Α", -- U+00391 + ["Agrave"] = "À", -- U+000C0 + ["Alpha"] = "Α", -- U+00391 + ["Amacr"] = "Ā", -- U+00100 + ["And"] = "⩓", -- U+02A53 + ["Aogon"] = "Ą", -- U+00104 + ["Aopf"] = "𝔸", -- U+1D538 + ["ApplyFunction"] = "", -- U+02061 + ["Aring"] = "Å", -- U+000C5 + ["Ascr"] = "𝒜", -- U+1D49C + ["Assign"] = "≔", -- U+02254 + ["Atilde"] = "Ã", -- U+000C3 + ["Auml"] = "Ä", -- U+000C4 + ["Backslash"] = "∖", -- U+02216 + ["Barv"] = "⫧", -- U+02AE7 + ["Barwed"] = "⌆", -- U+02306 + ["Bcy"] = "Б", -- U+00411 + ["Because"] = "∵", -- U+02235 + ["Bernoullis"] = "ℬ", -- U+0212C + ["Beta"] = "Β", -- U+00392 + ["Bfr"] = "𝔅", -- U+1D505 + ["Bgr"] = "Β", -- U+00392 + ["Bopf"] = "𝔹", -- U+1D539 + ["Breve"] = "˘", -- U+002D8 + ["Bscr"] = "ℬ", -- U+0212C + ["Bumpeq"] = "≎", -- U+0224E + ["CHcy"] = "Ч", -- U+00427 + ["COPY"] = "©", -- U+000A9 + ["Cacute"] = "Ć", -- U+00106 + ["Cap"] = "⋒", -- U+022D2 + ["CapitalDifferentialD"] = "ⅅ", -- U+02145 + ["Cayleys"] = "ℭ", -- U+0212D + ["Ccaron"] = "Č", -- U+0010C + ["Ccedil"] = "Ç", -- U+000C7 + ["Ccirc"] = "Ĉ", -- U+00108 + ["Cconint"] = "∰", -- U+02230 + ["Cdot"] = "Ċ", -- U+0010A + ["Cedilla"] = "¸", -- U+000B8 + ["CenterDot"] = "·", -- U+000B7 + ["Cfr"] = "ℭ", -- U+0212D + ["Chi"] = "Χ", -- U+003A7 + ["CircleDot"] = "⊙", -- U+02299 + ["CircleMinus"] = "⊖", -- U+02296 + ["CirclePlus"] = "⊕", -- U+02295 + ["CircleTimes"] = "⊗", -- U+02297 + ["ClockwiseContourIntegral"] = "∲", -- U+02232 + ["CloseCurlyDoubleQuote"] = "”", -- U+0201D + ["CloseCurlyQuote"] = "’", -- U+02019 + ["Colon"] = "∷", -- U+02237 + ["Colone"] = "⩴", -- U+02A74 + ["Congruent"] = "≡", -- U+02261 + ["Conint"] = "∯", -- U+0222F + ["ContourIntegral"] = "∮", -- U+0222E + ["Copf"] = "ℂ", -- U+02102 + ["Coproduct"] = "∐", -- U+02210 + ["CounterClockwiseContourIntegral"] = "∳", -- U+02233 + ["Cross"] = "⨯", -- U+02A2F + ["Cscr"] = "𝒞", -- U+1D49E + ["Cup"] = "⋓", -- U+022D3 + ["CupCap"] = "≍", -- U+0224D + ["DD"] = "ⅅ", -- U+02145 + ["DDotrahd"] = "⤑", -- U+02911 + ["DJcy"] = "Ђ", -- U+00402 + ["DScy"] = "Ѕ", -- U+00405 + ["DZcy"] = "Џ", -- U+0040F + ["Dagger"] = "‡", -- U+02021 + ["Darr"] = "↡", -- U+021A1 + ["Dashv"] = "⫤", -- U+02AE4 + ["Dcaron"] = "Ď", -- U+0010E + ["Dcy"] = "Д", -- U+00414 + ["Del"] = "∇", -- U+02207 + ["Delta"] = "Δ", -- U+00394 + ["Dfr"] = "𝔇", -- U+1D507 + ["Dgr"] = "Δ", -- U+00394 + ["DiacriticalAcute"] = "´", -- U+000B4 + ["DiacriticalDot"] = "˙", -- U+002D9 + ["DiacriticalDoubleAcute"] = "˝", -- U+002DD + ["DiacriticalGrave"] = "`", -- U+00060 + ["DiacriticalTilde"] = "˜", -- U+002DC + ["Diamond"] = "⋄", -- U+022C4 + ["DifferentialD"] = "ⅆ", -- U+02146 + ["Dopf"] = "𝔻", -- U+1D53B + ["Dot"] = "¨", -- U+000A8 + ["DotDot"] = "⃜", -- U+020DC + ["DotEqual"] = "≐", -- U+02250 + ["DoubleContourIntegral"] = "∯", -- U+0222F + ["DoubleDot"] = "¨", -- U+000A8 + ["DoubleDownArrow"] = "⇓", -- U+021D3 + ["DoubleLeftArrow"] = "⇐", -- U+021D0 + ["DoubleLeftRightArrow"] = "⇔", -- U+021D4 + ["DoubleLeftTee"] = "⫤", -- U+02AE4 + ["DoubleLongLeftArrow"] = "⟸", -- U+027F8 + ["DoubleLongLeftRightArrow"] = "⟺", -- U+027FA + ["DoubleLongRightArrow"] = "⟹", -- U+027F9 + ["DoubleRightArrow"] = "⇒", -- U+021D2 + ["DoubleRightTee"] = "⊨", -- U+022A8 + ["DoubleUpArrow"] = "⇑", -- U+021D1 + ["DoubleUpDownArrow"] = "⇕", -- U+021D5 + ["DoubleVerticalBar"] = "∥", -- U+02225 + ["DownArrow"] = "↓", -- U+02193 + ["DownArrowBar"] = "⤓", -- U+02913 + ["DownArrowUpArrow"] = "⇵", -- U+021F5 + ["DownBreve"] = "̑", -- U+00311 + ["DownLeftRightVector"] = "⥐", -- U+02950 + ["DownLeftTeeVector"] = "⥞", -- U+0295E + ["DownLeftVector"] = "↽", -- U+021BD + ["DownLeftVectorBar"] = "⥖", -- U+02956 + ["DownRightTeeVector"] = "⥟", -- U+0295F + ["DownRightVector"] = "⇁", -- U+021C1 + ["DownRightVectorBar"] = "⥗", -- U+02957 + ["DownTee"] = "⊤", -- U+022A4 + ["DownTeeArrow"] = "↧", -- U+021A7 + ["Downarrow"] = "⇓", -- U+021D3 + ["Dscr"] = "𝒟", -- U+1D49F + ["Dstrok"] = "Đ", -- U+00110 + ["EEacgr"] = "Ή", -- U+00389 + ["EEgr"] = "Η", -- U+00397 + ["ENG"] = "Ŋ", -- U+0014A + ["ETH"] = "Ð", -- U+000D0 + ["Eacgr"] = "Έ", -- U+00388 + ["Eacute"] = "É", -- U+000C9 + ["Ecaron"] = "Ě", -- U+0011A + ["Ecirc"] = "Ê", -- U+000CA + ["Ecy"] = "Э", -- U+0042D + ["Edot"] = "Ė", -- U+00116 + ["Efr"] = "𝔈", -- U+1D508 + ["Egr"] = "Ε", -- U+00395 + ["Egrave"] = "È", -- U+000C8 + ["Element"] = "∈", -- U+02208 + ["Emacr"] = "Ē", -- U+00112 + ["EmptySmallSquare"] = "◻", -- U+025FB + ["EmptyVerySmallSquare"] = "▫", -- U+025AB + ["Eogon"] = "Ę", -- U+00118 + ["Eopf"] = "𝔼", -- U+1D53C + ["Epsilon"] = "Ε", -- U+00395 + ["Equal"] = "⩵", -- U+02A75 + ["EqualTilde"] = "≂", -- U+02242 + ["Equilibrium"] = "⇌", -- U+021CC + ["Escr"] = "ℰ", -- U+02130 + ["Esim"] = "⩳", -- U+02A73 + ["Eta"] = "Η", -- U+00397 + ["Euml"] = "Ë", -- U+000CB + ["Exists"] = "∃", -- U+02203 + ["ExponentialE"] = "ⅇ", -- U+02147 + ["Fcy"] = "Ф", -- U+00424 + ["Ffr"] = "𝔉", -- U+1D509 + ["FilledSmallSquare"] = "◼", -- U+025FC + ["FilledVerySmallSquare"] = "▪", -- U+025AA + ["Fopf"] = "𝔽", -- U+1D53D + ["ForAll"] = "∀", -- U+02200 + ["Fouriertrf"] = "ℱ", -- U+02131 + ["Fscr"] = "ℱ", -- U+02131 + ["GJcy"] = "Ѓ", -- U+00403 + ["GT"] = ">", -- U+0003E + ["Gamma"] = "Γ", -- U+00393 + ["Gammad"] = "Ϝ", -- U+003DC + ["Gbreve"] = "Ğ", -- U+0011E + ["Gcedil"] = "Ģ", -- U+00122 + ["Gcirc"] = "Ĝ", -- U+0011C + ["Gcy"] = "Г", -- U+00413 + ["Gdot"] = "Ġ", -- U+00120 + ["Gfr"] = "𝔊", -- U+1D50A + ["Gg"] = "⋙", -- U+022D9 + ["Ggr"] = "Γ", -- U+00393 + ["Gopf"] = "𝔾", -- U+1D53E + ["GreaterEqual"] = "≥", -- U+02265 + ["GreaterEqualLess"] = "⋛", -- U+022DB + ["GreaterFullEqual"] = "≧", -- U+02267 + ["GreaterGreater"] = "⪢", -- U+02AA2 + ["GreaterLess"] = "≷", -- U+02277 + ["GreaterSlantEqual"] = "⩾", -- U+02A7E + ["GreaterTilde"] = "≳", -- U+02273 + ["Gscr"] = "𝒢", -- U+1D4A2 + ["Gt"] = "≫", -- U+0226B + ["HARDcy"] = "Ъ", -- U+0042A + ["Hacek"] = "ˇ", -- U+002C7 + ["Hat"] = "^", -- U+0005E + ["Hcirc"] = "Ĥ", -- U+00124 + ["Hfr"] = "ℌ", -- U+0210C + ["HilbertSpace"] = "ℋ", -- U+0210B + ["Hopf"] = "ℍ", -- U+0210D + ["HorizontalLine"] = "─", -- U+02500 + ["Hscr"] = "ℋ", -- U+0210B + ["Hstrok"] = "Ħ", -- U+00126 + ["HumpDownHump"] = "≎", -- U+0224E + ["HumpEqual"] = "≏", -- U+0224F + ["IEcy"] = "Е", -- U+00415 + ["IJlig"] = "IJ", -- U+00132 + ["IOcy"] = "Ё", -- U+00401 + ["Iacgr"] = "Ί", -- U+0038A + ["Iacute"] = "Í", -- U+000CD + ["Icirc"] = "Î", -- U+000CE + ["Icy"] = "И", -- U+00418 + ["Idigr"] = "Ϊ", -- U+003AA + ["Idot"] = "İ", -- U+00130 + ["Ifr"] = "ℑ", -- U+02111 + ["Igr"] = "Ι", -- U+00399 + ["Igrave"] = "Ì", -- U+000CC + ["Im"] = "ℑ", -- U+02111 + ["Imacr"] = "Ī", -- U+0012A + ["ImaginaryI"] = "ⅈ", -- U+02148 + ["Implies"] = "⇒", -- U+021D2 + ["Int"] = "∬", -- U+0222C + ["Integral"] = "∫", -- U+0222B + ["Intersection"] = "⋂", -- U+022C2 + ["InvisibleComma"] = "", -- U+02063 + ["InvisibleTimes"] = "", -- U+02062 + ["Iogon"] = "Į", -- U+0012E + ["Iopf"] = "𝕀", -- U+1D540 + ["Iota"] = "Ι", -- U+00399 + ["Iscr"] = "ℐ", -- U+02110 + ["Itilde"] = "Ĩ", -- U+00128 + ["Iukcy"] = "І", -- U+00406 + ["Iuml"] = "Ï", -- U+000CF + ["Jcirc"] = "Ĵ", -- U+00134 + ["Jcy"] = "Й", -- U+00419 + ["Jfr"] = "𝔍", -- U+1D50D + ["Jopf"] = "𝕁", -- U+1D541 + ["Jscr"] = "𝒥", -- U+1D4A5 + ["Jsercy"] = "Ј", -- U+00408 + ["Jukcy"] = "Є", -- U+00404 + ["KHcy"] = "Х", -- U+00425 + ["KHgr"] = "Χ", -- U+003A7 + ["KJcy"] = "Ќ", -- U+0040C + ["Kappa"] = "Κ", -- U+0039A + ["Kcedil"] = "Ķ", -- U+00136 + ["Kcy"] = "К", -- U+0041A + ["Kfr"] = "𝔎", -- U+1D50E + ["Kgr"] = "Κ", -- U+0039A + ["Kopf"] = "𝕂", -- U+1D542 + ["Kscr"] = "𝒦", -- U+1D4A6 + ["LJcy"] = "Љ", -- U+00409 + ["LT"] = "<", -- U+00026 + ["Lacute"] = "Ĺ", -- U+00139 + ["Lambda"] = "Λ", -- U+0039B + ["Lang"] = "⟪", -- U+027EA + ["Laplacetrf"] = "ℒ", -- U+02112 + ["Larr"] = "↞", -- U+0219E + ["Lcaron"] = "Ľ", -- U+0013D + ["Lcedil"] = "Ļ", -- U+0013B + ["Lcy"] = "Л", -- U+0041B + ["LeftAngleBracket"] = "⟨", -- U+027E8 + ["LeftArrow"] = "←", -- U+02190 + ["LeftArrowBar"] = "⇤", -- U+021E4 + ["LeftArrowRightArrow"] = "⇆", -- U+021C6 + ["LeftCeiling"] = "⌈", -- U+02308 + ["LeftDoubleBracket"] = "⟦", -- U+027E6 + ["LeftDownTeeVector"] = "⥡", -- U+02961 + ["LeftDownVector"] = "⇃", -- U+021C3 + ["LeftDownVectorBar"] = "⥙", -- U+02959 + ["LeftFloor"] = "⌊", -- U+0230A + ["LeftRightArrow"] = "↔", -- U+02194 + ["LeftRightVector"] = "⥎", -- U+0294E + ["LeftTee"] = "⊣", -- U+022A3 + ["LeftTeeArrow"] = "↤", -- U+021A4 + ["LeftTeeVector"] = "⥚", -- U+0295A + ["LeftTriangle"] = "⊲", -- U+022B2 + ["LeftTriangleBar"] = "⧏", -- U+029CF + ["LeftTriangleEqual"] = "⊴", -- U+022B4 + ["LeftUpDownVector"] = "⥑", -- U+02951 + ["LeftUpTeeVector"] = "⥠", -- U+02960 + ["LeftUpVector"] = "↿", -- U+021BF + ["LeftUpVectorBar"] = "⥘", -- U+02958 + ["LeftVector"] = "↼", -- U+021BC + ["LeftVectorBar"] = "⥒", -- U+02952 + ["Leftarrow"] = "⇐", -- U+021D0 + ["Leftrightarrow"] = "⇔", -- U+021D4 + ["LessEqualGreater"] = "⋚", -- U+022DA + ["LessFullEqual"] = "≦", -- U+02266 + ["LessGreater"] = "≶", -- U+02276 + ["LessLess"] = "⪡", -- U+02AA1 + ["LessSlantEqual"] = "⩽", -- U+02A7D + ["LessTilde"] = "≲", -- U+02272 + ["Lfr"] = "𝔏", -- U+1D50F + ["Lgr"] = "Λ", -- U+0039B + ["Ll"] = "⋘", -- U+022D8 + ["Lleftarrow"] = "⇚", -- U+021DA + ["Lmidot"] = "Ŀ", -- U+0013F + ["LongLeftArrow"] = "⟵", -- U+027F5 + ["LongLeftRightArrow"] = "⟷", -- U+027F7 + ["LongRightArrow"] = "⟶", -- U+027F6 + ["Longleftarrow"] = "⟸", -- U+027F8 + ["Longleftrightarrow"] = "⟺", -- U+027FA + ["Longrightarrow"] = "⟹", -- U+027F9 + ["Lopf"] = "𝕃", -- U+1D543 + ["LowerLeftArrow"] = "↙", -- U+02199 + ["LowerRightArrow"] = "↘", -- U+02198 + ["Lscr"] = "ℒ", -- U+02112 + ["Lsh"] = "↰", -- U+021B0 + ["Lstrok"] = "Ł", -- U+00141 + ["Lt"] = "≪", -- U+0226A + ["Map"] = "⤅", -- U+02905 + ["Mcy"] = "М", -- U+0041C + ["MediumSpace"] = " ", -- U+0205F + ["Mellintrf"] = "ℳ", -- U+02133 + ["Mfr"] = "𝔐", -- U+1D510 + ["Mgr"] = "Μ", -- U+0039C + ["MinusPlus"] = "∓", -- U+02213 + ["Mopf"] = "𝕄", -- U+1D544 + ["Mscr"] = "ℳ", -- U+02133 + ["Mu"] = "Μ", -- U+0039C + ["NJcy"] = "Њ", -- U+0040A + ["Nacute"] = "Ń", -- U+00143 + ["Ncaron"] = "Ň", -- U+00147 + ["Ncedil"] = "Ņ", -- U+00145 + ["Ncy"] = "Н", -- U+0041D + ["NegativeMediumSpace"] = "", -- U+0200B + ["NegativeThickSpace"] = "", -- U+0200B + ["NegativeThinSpace"] = "", -- U+0200B + ["NegativeVeryThinSpace"] = "", -- U+0200B + ["NestedGreaterGreater"] = "≫", -- U+0226B + ["NestedLessLess"] = "≪", -- U+0226A + ["Nfr"] = "𝔑", -- U+1D511 + ["Ngr"] = "Ν", -- U+0039D + ["NoBreak"] = "", -- U+02060 + ["NonBreakingSpace"] = " ", -- U+000A0 + ["Nopf"] = "ℕ", -- U+02115 + ["Not"] = "⫬", -- U+02AEC + ["NotCongruent"] = "≢", -- U+02262 + ["NotCupCap"] = "≭", -- U+0226D + ["NotDoubleVerticalBar"] = "∦", -- U+02226 + ["NotElement"] = "∉", -- U+02209 + ["NotEqual"] = "≠", -- U+02260 + ["NotEqualTilde"] = "≂̸", -- U+02242 00338 + ["NotExists"] = "∄", -- U+02204 + ["NotGreater"] = "≯", -- U+0226F + ["NotGreaterEqual"] = "≱", -- U+02271 + ["NotGreaterFullEqual"] = "≧̸", -- U+02267 00338 + ["NotGreaterGreater"] = "≫̸", -- U+0226B 00338 + ["NotGreaterLess"] = "≹", -- U+02279 + ["NotGreaterSlantEqual"] = "⩾̸", -- U+02A7E 00338 + ["NotGreaterTilde"] = "≵", -- U+02275 + ["NotHumpDownHump"] = "≎̸", -- U+0224E 00338 + ["NotHumpEqual"] = "≏̸", -- U+0224F 00338 + ["NotLeftTriangle"] = "⋪", -- U+022EA + ["NotLeftTriangleBar"] = "⧏̸", -- U+029CF 00338 + ["NotLeftTriangleEqual"] = "⋬", -- U+022EC + ["NotLess"] = "≮", -- U+0226E + ["NotLessEqual"] = "≰", -- U+02270 + ["NotLessGreater"] = "≸", -- U+02278 + ["NotLessLess"] = "≪̸", -- U+0226A 00338 + ["NotLessSlantEqual"] = "⩽̸", -- U+02A7D 00338 + ["NotLessTilde"] = "≴", -- U+02274 + ["NotNestedGreaterGreater"] = "⪢̸", -- U+02AA2 00338 + ["NotNestedLessLess"] = "⪡̸", -- U+02AA1 00338 + ["NotPrecedes"] = "⊀", -- U+02280 + ["NotPrecedesEqual"] = "⪯̸", -- U+02AAF 00338 + ["NotPrecedesSlantEqual"] = "⋠", -- U+022E0 + ["NotReverseElement"] = "∌", -- U+0220C + ["NotRightTriangle"] = "⋫", -- U+022EB + ["NotRightTriangleBar"] = "⧐̸", -- U+029D0 00338 + ["NotRightTriangleEqual"] = "⋭", -- U+022ED + ["NotSquareSubset"] = "⊏̸", -- U+0228F 00338 + ["NotSquareSubsetEqual"] = "⋢", -- U+022E2 + ["NotSquareSuperset"] = "⊐̸", -- U+02290 00338 + ["NotSquareSupersetEqual"] = "⋣", -- U+022E3 + ["NotSubset"] = "⊂⃒", -- U+02282 020D2 + ["NotSubsetEqual"] = "⊈", -- U+02288 + ["NotSucceeds"] = "⊁", -- U+02281 + ["NotSucceedsEqual"] = "⪰̸", -- U+02AB0 00338 + ["NotSucceedsSlantEqual"] = "⋡", -- U+022E1 + ["NotSucceedsTilde"] = "≿̸", -- U+0227F 00338 + ["NotSuperset"] = "⊃⃒", -- U+02283 020D2 + ["NotSupersetEqual"] = "⊉", -- U+02289 + ["NotTilde"] = "≁", -- U+02241 + ["NotTildeEqual"] = "≄", -- U+02244 + ["NotTildeFullEqual"] = "≇", -- U+02247 + ["NotTildeTilde"] = "≉", -- U+02249 + ["NotVerticalBar"] = "∤", -- U+02224 + ["Nscr"] = "𝒩", -- U+1D4A9 + ["Ntilde"] = "Ñ", -- U+000D1 + ["Nu"] = "Ν", -- U+0039D + ["OElig"] = "Œ", -- U+00152 + ["OHacgr"] = "Ώ", -- U+0038F + ["OHgr"] = "Ω", -- U+003A9 + ["Oacgr"] = "Ό", -- U+0038C + ["Oacute"] = "Ó", -- U+000D3 + ["Ocirc"] = "Ô", -- U+000D4 + ["Ocy"] = "О", -- U+0041E + ["Odblac"] = "Ő", -- U+00150 + ["Ofr"] = "𝔒", -- U+1D512 + ["Ogr"] = "Ο", -- U+0039F + ["Ograve"] = "Ò", -- U+000D2 + ["Omacr"] = "Ō", -- U+0014C + ["Omega"] = "Ω", -- U+003A9 + ["Omicron"] = "Ο", -- U+0039F + ["Oopf"] = "𝕆", -- U+1D546 + ["OpenCurlyDoubleQuote"] = "“", -- U+0201C + ["OpenCurlyQuote"] = "‘", -- U+02018 + ["Or"] = "⩔", -- U+02A54 + ["Oscr"] = "𝒪", -- U+1D4AA + ["Oslash"] = "Ø", -- U+000D8 + ["Otilde"] = "Õ", -- U+000D5 + ["Otimes"] = "⨷", -- U+02A37 + ["Ouml"] = "Ö", -- U+000D6 + ["OverBar"] = "‾", -- U+0203E + ["OverBrace"] = "⏞", -- U+023DE + ["OverBracket"] = "⎴", -- U+023B4 + ["OverParenthesis"] = "⏜", -- U+023DC + ["PHgr"] = "Φ", -- U+003A6 + ["PSgr"] = "Ψ", -- U+003A8 + ["PartialD"] = "∂", -- U+02202 + ["Pcy"] = "П", -- U+0041F + ["Pfr"] = "𝔓", -- U+1D513 + ["Pgr"] = "Π", -- U+003A0 + ["Phi"] = "Φ", -- U+003A6 + ["Pi"] = "Π", -- U+003A0 + ["PlusMinus"] = "±", -- U+000B1 + ["Poincareplane"] = "ℌ", -- U+0210C + ["Popf"] = "ℙ", -- U+02119 + ["Pr"] = "⪻", -- U+02ABB + ["Precedes"] = "≺", -- U+0227A + ["PrecedesEqual"] = "⪯", -- U+02AAF + ["PrecedesSlantEqual"] = "≼", -- U+0227C + ["PrecedesTilde"] = "≾", -- U+0227E + ["Prime"] = "″", -- U+02033 + ["Product"] = "∏", -- U+0220F + ["Proportion"] = "∷", -- U+02237 + ["Proportional"] = "∝", -- U+0221D + ["Pscr"] = "𝒫", -- U+1D4AB + ["Psi"] = "Ψ", -- U+003A8 + ["QUOT"] = "\"", -- U+00022 + ["Qfr"] = "𝔔", -- U+1D514 + ["Qopf"] = "ℚ", -- U+0211A + ["Qscr"] = "𝒬", -- U+1D4AC + ["RBarr"] = "⤐", -- U+02910 + ["REG"] = "®", -- U+000AE + ["Racute"] = "Ŕ", -- U+00154 + ["Rang"] = "⟫", -- U+027EB + ["Rarr"] = "↠", -- U+021A0 + ["Rarrtl"] = "⤖", -- U+02916 + ["Rcaron"] = "Ř", -- U+00158 + ["Rcedil"] = "Ŗ", -- U+00156 + ["Rcy"] = "Р", -- U+00420 + ["Re"] = "ℜ", -- U+0211C + ["ReverseElement"] = "∋", -- U+0220B + ["ReverseEquilibrium"] = "⇋", -- U+021CB + ["ReverseUpEquilibrium"] = "⥯", -- U+0296F + ["Rfr"] = "ℜ", -- U+0211C + ["Rgr"] = "Ρ", -- U+003A1 + ["Rho"] = "Ρ", -- U+003A1 + ["RightAngleBracket"] = "⟩", -- U+027E9 + ["RightArrow"] = "→", -- U+02192 + ["RightArrowBar"] = "⇥", -- U+021E5 + ["RightArrowLeftArrow"] = "⇄", -- U+021C4 + ["RightCeiling"] = "⌉", -- U+02309 + ["RightDoubleBracket"] = "⟧", -- U+027E7 + ["RightDownTeeVector"] = "⥝", -- U+0295D + ["RightDownVector"] = "⇂", -- U+021C2 + ["RightDownVectorBar"] = "⥕", -- U+02955 + ["RightFloor"] = "⌋", -- U+0230B + ["RightTee"] = "⊢", -- U+022A2 + ["RightTeeArrow"] = "↦", -- U+021A6 + ["RightTeeVector"] = "⥛", -- U+0295B + ["RightTriangle"] = "⊳", -- U+022B3 + ["RightTriangleBar"] = "⧐", -- U+029D0 + ["RightTriangleEqual"] = "⊵", -- U+022B5 + ["RightUpDownVector"] = "⥏", -- U+0294F + ["RightUpTeeVector"] = "⥜", -- U+0295C + ["RightUpVector"] = "↾", -- U+021BE + ["RightUpVectorBar"] = "⥔", -- U+02954 + ["RightVector"] = "⇀", -- U+021C0 + ["RightVectorBar"] = "⥓", -- U+02953 + ["Rightarrow"] = "⇒", -- U+021D2 + ["Ropf"] = "ℝ", -- U+0211D + ["RoundImplies"] = "⥰", -- U+02970 + ["Rrightarrow"] = "⇛", -- U+021DB + ["Rscr"] = "ℛ", -- U+0211B + ["Rsh"] = "↱", -- U+021B1 + ["RuleDelayed"] = "⧴", -- U+029F4 + ["SHCHcy"] = "Щ", -- U+00429 + ["SHcy"] = "Ш", -- U+00428 + ["SOFTcy"] = "Ь", -- U+0042C + ["Sacute"] = "Ś", -- U+0015A + ["Sc"] = "⪼", -- U+02ABC + ["Scaron"] = "Š", -- U+00160 + ["Scedil"] = "Ş", -- U+0015E + ["Scirc"] = "Ŝ", -- U+0015C + ["Scy"] = "С", -- U+00421 + ["Sfr"] = "𝔖", -- U+1D516 + ["Sgr"] = "Σ", -- U+003A3 + ["ShortDownArrow"] = "↓", -- U+02193 + ["ShortLeftArrow"] = "←", -- U+02190 + ["ShortRightArrow"] = "→", -- U+02192 + ["ShortUpArrow"] = "↑", -- U+02191 + ["Sigma"] = "Σ", -- U+003A3 + ["SmallCircle"] = "∘", -- U+02218 + ["Sopf"] = "𝕊", -- U+1D54A + ["Sqrt"] = "√", -- U+0221A + ["Square"] = "□", -- U+025A1 + ["SquareIntersection"] = "⊓", -- U+02293 + ["SquareSubset"] = "⊏", -- U+0228F + ["SquareSubsetEqual"] = "⊑", -- U+02291 + ["SquareSuperset"] = "⊐", -- U+02290 + ["SquareSupersetEqual"] = "⊒", -- U+02292 + ["SquareUnion"] = "⊔", -- U+02294 + ["Sscr"] = "𝒮", -- U+1D4AE + ["Star"] = "⋆", -- U+022C6 + ["Sub"] = "⋐", -- U+022D0 + ["Subset"] = "⋐", -- U+022D0 + ["SubsetEqual"] = "⊆", -- U+02286 + ["Succeeds"] = "≻", -- U+0227B + ["SucceedsEqual"] = "⪰", -- U+02AB0 + ["SucceedsSlantEqual"] = "≽", -- U+0227D + ["SucceedsTilde"] = "≿", -- U+0227F + ["SuchThat"] = "∋", -- U+0220B + ["Sum"] = "∑", -- U+02211 + ["Sup"] = "⋑", -- U+022D1 + ["Superset"] = "⊃", -- U+02283 + ["SupersetEqual"] = "⊇", -- U+02287 + ["Supset"] = "⋑", -- U+022D1 + ["THORN"] = "Þ", -- U+000DE + ["THgr"] = "Θ", -- U+00398 + ["TRADE"] = "™", -- U+02122 + ["TSHcy"] = "Ћ", -- U+0040B + ["TScy"] = "Ц", -- U+00426 + ["Tab"] = "\9", -- U+00009 + ["Tau"] = "Τ", -- U+003A4 + ["Tcaron"] = "Ť", -- U+00164 + ["Tcedil"] = "Ţ", -- U+00162 + ["Tcy"] = "Т", -- U+00422 + ["Tfr"] = "𝔗", -- U+1D517 + ["Tgr"] = "Τ", -- U+003A4 + ["Therefore"] = "∴", -- U+02234 + ["Theta"] = "Θ", -- U+00398 + ["ThickSpace"] = " ", -- U+0205F 0200A + ["ThinSpace"] = " ", -- U+02009 + ["Tilde"] = "∼", -- U+0223C + ["TildeEqual"] = "≃", -- U+02243 + ["TildeFullEqual"] = "≅", -- U+02245 + ["TildeTilde"] = "≈", -- U+02248 + ["Topf"] = "𝕋", -- U+1D54B + ["TripleDot"] = "⃛", -- U+020DB + ["Tscr"] = "𝒯", -- U+1D4AF + ["Tstrok"] = "Ŧ", -- U+00166 + ["Uacgr"] = "Ύ", -- U+0038E + ["Uacute"] = "Ú", -- U+000DA + ["Uarr"] = "↟", -- U+0219F + ["Uarrocir"] = "⥉", -- U+02949 + ["Ubrcy"] = "Ў", -- U+0040E + ["Ubreve"] = "Ŭ", -- U+0016C + ["Ucirc"] = "Û", -- U+000DB + ["Ucy"] = "У", -- U+00423 + ["Udblac"] = "Ű", -- U+00170 + ["Udigr"] = "Ϋ", -- U+003AB + ["Ufr"] = "𝔘", -- U+1D518 + ["Ugr"] = "Υ", -- U+003A5 + ["Ugrave"] = "Ù", -- U+000D9 + ["Umacr"] = "Ū", -- U+0016A + ["UnderBar"] = "_", -- U+0005F + ["UnderBrace"] = "⏟", -- U+023DF + ["UnderBracket"] = "⎵", -- U+023B5 + ["UnderParenthesis"] = "⏝", -- U+023DD + ["Union"] = "⋃", -- U+022C3 + ["UnionPlus"] = "⊎", -- U+0228E + ["Uogon"] = "Ų", -- U+00172 + ["Uopf"] = "𝕌", -- U+1D54C + ["UpArrow"] = "↑", -- U+02191 + ["UpArrowBar"] = "⤒", -- U+02912 + ["UpArrowDownArrow"] = "⇅", -- U+021C5 + ["UpDownArrow"] = "↕", -- U+02195 + ["UpEquilibrium"] = "⥮", -- U+0296E + ["UpTee"] = "⊥", -- U+022A5 + ["UpTeeArrow"] = "↥", -- U+021A5 + ["Uparrow"] = "⇑", -- U+021D1 + ["Updownarrow"] = "⇕", -- U+021D5 + ["UpperLeftArrow"] = "↖", -- U+02196 + ["UpperRightArrow"] = "↗", -- U+02197 + ["Upsi"] = "ϒ", -- U+003D2 + ["Upsilon"] = "Υ", -- U+003A5 + ["Uring"] = "Ů", -- U+0016E + ["Uscr"] = "𝒰", -- U+1D4B0 + ["Utilde"] = "Ũ", -- U+00168 + ["Uuml"] = "Ü", -- U+000DC + ["VDash"] = "⊫", -- U+022AB + ["Vbar"] = "⫫", -- U+02AEB + ["Vcy"] = "В", -- U+00412 + ["Vdash"] = "⊩", -- U+022A9 + ["Vdashl"] = "⫦", -- U+02AE6 + ["Vee"] = "⋁", -- U+022C1 + ["Verbar"] = "‖", -- U+02016 + ["Vert"] = "‖", -- U+02016 + ["VerticalBar"] = "∣", -- U+02223 + ["VerticalLine"] = "|", -- U+0007C + ["VerticalSeparator"] = "❘", -- U+02758 + ["VerticalTilde"] = "≀", -- U+02240 + ["VeryThinSpace"] = " ", -- U+0200A + ["Vfr"] = "𝔙", -- U+1D519 + ["Vopf"] = "𝕍", -- U+1D54D + ["Vscr"] = "𝒱", -- U+1D4B1 + ["Vvdash"] = "⊪", -- U+022AA + ["Wcirc"] = "Ŵ", -- U+00174 + ["Wedge"] = "⋀", -- U+022C0 + ["Wfr"] = "𝔚", -- U+1D51A + ["Wopf"] = "𝕎", -- U+1D54E + ["Wscr"] = "𝒲", -- U+1D4B2 + ["Xfr"] = "𝔛", -- U+1D51B + ["Xgr"] = "Ξ", -- U+0039E + ["Xi"] = "Ξ", -- U+0039E + ["Xopf"] = "𝕏", -- U+1D54F + ["Xscr"] = "𝒳", -- U+1D4B3 + ["YAcy"] = "Я", -- U+0042F + ["YIcy"] = "Ї", -- U+00407 + ["YUcy"] = "Ю", -- U+0042E + ["Yacute"] = "Ý", -- U+000DD + ["Ycirc"] = "Ŷ", -- U+00176 + ["Ycy"] = "Ы", -- U+0042B + ["Yfr"] = "𝔜", -- U+1D51C + ["Yopf"] = "𝕐", -- U+1D550 + ["Yscr"] = "𝒴", -- U+1D4B4 + ["Yuml"] = "Ÿ", -- U+00178 + ["ZHcy"] = "Ж", -- U+00416 + ["Zacute"] = "Ź", -- U+00179 + ["Zcaron"] = "Ž", -- U+0017D + ["Zcy"] = "З", -- U+00417 + ["Zdot"] = "Ż", -- U+0017B + ["ZeroWidthSpace"] = "", -- U+0200B + ["Zeta"] = "Ζ", -- U+00396 + ["Zfr"] = "ℨ", -- U+02128 + ["Zgr"] = "Ζ", -- U+00396 + ["Zopf"] = "ℤ", -- U+02124 + ["Zscr"] = "𝒵", -- U+1D4B5 + ["aacgr"] = "ά", -- U+003AC + ["aacute"] = "á", -- U+000E1 + ["abreve"] = "ă", -- U+00103 + ["ac"] = "∾", -- U+0223E + ["acE"] = "∾̳", -- U+0223E 00333 + ["acd"] = "∿", -- U+0223F + ["acirc"] = "â", -- U+000E2 + ["acute"] = "´", -- U+000B4 + ["acy"] = "а", -- U+00430 + ["aelig"] = "æ", -- U+000E6 + ["af"] = "", -- U+02061 + ["afr"] = "𝔞", -- U+1D51E + ["agr"] = "α", -- U+003B1 + ["agrave"] = "à", -- U+000E0 + ["alefsym"] = "ℵ", -- U+02135 + ["aleph"] = "ℵ", -- U+02135 + ["alpha"] = "α", -- U+003B1 + ["amacr"] = "ā", -- U+00101 + ["amalg"] = "⨿", -- U+02A3F + ["amp"] = "&", -- U+00026 + ["and"] = "∧", -- U+02227 + ["andand"] = "⩕", -- U+02A55 + ["andd"] = "⩜", -- U+02A5C + ["andslope"] = "⩘", -- U+02A58 + ["andv"] = "⩚", -- U+02A5A + ["ang"] = "∠", -- U+02220 + ["ange"] = "⦤", -- U+029A4 + ["angle"] = "∠", -- U+02220 + ["angmsd"] = "∡", -- U+02221 + ["angmsdaa"] = "⦨", -- U+029A8 + ["angmsdab"] = "⦩", -- U+029A9 + ["angmsdac"] = "⦪", -- U+029AA + ["angmsdad"] = "⦫", -- U+029AB + ["angmsdae"] = "⦬", -- U+029AC + ["angmsdaf"] = "⦭", -- U+029AD + ["angmsdag"] = "⦮", -- U+029AE + ["angmsdah"] = "⦯", -- U+029AF + ["angrt"] = "∟", -- U+0221F + ["angrtvb"] = "⊾", -- U+022BE + ["angrtvbd"] = "⦝", -- U+0299D + ["angsph"] = "∢", -- U+02222 + ["angst"] = "Å", -- U+000C5 + ["angzarr"] = "⍼", -- U+0237C + ["aogon"] = "ą", -- U+00105 + ["aopf"] = "𝕒", -- U+1D552 + ["ap"] = "≈", -- U+02248 + ["apE"] = "⩰", -- U+02A70 + ["apacir"] = "⩯", -- U+02A6F + ["ape"] = "≊", -- U+0224A + ["apid"] = "≋", -- U+0224B + ["apos"] = "'", -- U+00027 + ["approx"] = "≈", -- U+02248 + ["approxeq"] = "≊", -- U+0224A + ["aring"] = "å", -- U+000E5 + ["ascr"] = "𝒶", -- U+1D4B6 + ["ast"] = "*", -- U+0002A + ["asymp"] = "≈", -- U+02248 + ["asympeq"] = "≍", -- U+0224D + ["atilde"] = "ã", -- U+000E3 + ["auml"] = "ä", -- U+000E4 + ["awconint"] = "∳", -- U+02233 + ["awint"] = "⨑", -- U+02A11 + ["b.Delta"] = "𝚫", -- U+1D6AB + ["b.Gamma"] = "𝚪", -- U+1D6AA + ["b.Gammad"] = "𝟊", -- U+1D7CA + ["b.Lambda"] = "𝚲", -- U+1D6B2 + ["b.Omega"] = "𝛀", -- U+1D6C0 + ["b.Phi"] = "𝚽", -- U+1D6BD + ["b.Pi"] = "𝚷", -- U+1D6B7 + ["b.Psi"] = "𝚿", -- U+1D6BF + ["b.Sigma"] = "𝚺", -- U+1D6BA + ["b.Theta"] = "𝚯", -- U+1D6AF + ["b.Upsi"] = "𝚼", -- U+1D6BC + ["b.Xi"] = "𝚵", -- U+1D6B5 + ["b.alpha"] = "𝛂", -- U+1D6C2 + ["b.beta"] = "𝛃", -- U+1D6C3 + ["b.chi"] = "𝛘", -- U+1D6D8 + ["b.delta"] = "𝛅", -- U+1D6C5 + ["b.epsi"] = "𝛆", -- U+1D6C6 + ["b.epsiv"] = "𝛜", -- U+1D6DC + ["b.eta"] = "𝛈", -- U+1D6C8 + ["b.gamma"] = "𝛄", -- U+1D6C4 + ["b.gammad"] = "𝟋", -- U+1D7CB + ["b.iota"] = "𝛊", -- U+1D6CA + ["b.kappa"] = "𝛋", -- U+1D6CB + ["b.kappav"] = "𝛞", -- U+1D6DE + ["b.lambda"] = "𝛌", -- U+1D6CC + ["b.mu"] = "𝛍", -- U+1D6CD + ["b.nu"] = "𝛎", -- U+1D6CE + ["b.omega"] = "𝛚", -- U+1D6DA + ["b.phi"] = "𝛗", -- U+1D6D7 + ["b.phiv"] = "𝛟", -- U+1D6DF + ["b.pi"] = "𝛑", -- U+1D6D1 + ["b.piv"] = "𝛡", -- U+1D6E1 + ["b.psi"] = "𝛙", -- U+1D6D9 + ["b.rho"] = "𝛒", -- U+1D6D2 + ["b.rhov"] = "𝛠", -- U+1D6E0 + ["b.sigma"] = "𝛔", -- U+1D6D4 + ["b.sigmav"] = "𝛓", -- U+1D6D3 + ["b.tau"] = "𝛕", -- U+1D6D5 + ["b.thetas"] = "𝛉", -- U+1D6C9 + ["b.thetav"] = "𝛝", -- U+1D6DD + ["b.upsi"] = "𝛖", -- U+1D6D6 + ["b.xi"] = "𝛏", -- U+1D6CF + ["b.zeta"] = "𝛇", -- U+1D6C7 + ["bNot"] = "⫭", -- U+02AED + ["backcong"] = "≌", -- U+0224C + ["backepsilon"] = "϶", -- U+003F6 + ["backprime"] = "‵", -- U+02035 + ["backsim"] = "∽", -- U+0223D + ["backsimeq"] = "⋍", -- U+022CD + ["barvee"] = "⊽", -- U+022BD + ["barwed"] = "⌅", -- U+02305 + ["barwedge"] = "⌅", -- U+02305 + ["bbrk"] = "⎵", -- U+023B5 + ["bbrktbrk"] = "⎶", -- U+023B6 + ["bcong"] = "≌", -- U+0224C + ["bcy"] = "б", -- U+00431 + ["bdquo"] = "„", -- U+0201E + ["becaus"] = "∵", -- U+02235 + ["because"] = "∵", -- U+02235 + ["bemptyv"] = "⦰", -- U+029B0 + ["bepsi"] = "϶", -- U+003F6 + ["bernou"] = "ℬ", -- U+0212C + ["beta"] = "β", -- U+003B2 + ["beth"] = "ℶ", -- U+02136 + ["between"] = "≬", -- U+0226C + ["bfr"] = "𝔟", -- U+1D51F + ["bgr"] = "β", -- U+003B2 + ["bigcap"] = "⋂", -- U+022C2 + ["bigcirc"] = "◯", -- U+025EF + ["bigcup"] = "⋃", -- U+022C3 + ["bigodot"] = "⨀", -- U+02A00 + ["bigoplus"] = "⨁", -- U+02A01 + ["bigotimes"] = "⨂", -- U+02A02 + ["bigsqcup"] = "⨆", -- U+02A06 + ["bigstar"] = "★", -- U+02605 + ["bigtriangledown"] = "▽", -- U+025BD + ["bigtriangleup"] = "△", -- U+025B3 + ["biguplus"] = "⨄", -- U+02A04 + ["bigvee"] = "⋁", -- U+022C1 + ["bigwedge"] = "⋀", -- U+022C0 + ["bkarow"] = "⤍", -- U+0290D + ["blacklozenge"] = "⧫", -- U+029EB + ["blacksquare"] = "▪", -- U+025AA + ["blacktriangle"] = "▴", -- U+025B4 + ["blacktriangledown"] = "▾", -- U+025BE + ["blacktriangleleft"] = "◂", -- U+025C2 + ["blacktriangleright"] = "▸", -- U+025B8 + ["blank"] = "␣", -- U+02423 + ["blk12"] = "▒", -- U+02592 + ["blk14"] = "░", -- U+02591 + ["blk34"] = "▓", -- U+02593 + ["block"] = "█", -- U+02588 + ["bne"] = "=⃥", -- U+0003D 020E5 + ["bnequiv"] = "≡⃥", -- U+02261 020E5 + ["bnot"] = "⌐", -- U+02310 + ["bopf"] = "𝕓", -- U+1D553 + ["bot"] = "⊥", -- U+022A5 + ["bottom"] = "⊥", -- U+022A5 + ["bowtie"] = "⋈", -- U+022C8 + ["boxDL"] = "╗", -- U+02557 + ["boxDR"] = "╔", -- U+02554 + ["boxDl"] = "╖", -- U+02556 + ["boxDr"] = "╓", -- U+02553 + ["boxH"] = "═", -- U+02550 + ["boxHD"] = "╦", -- U+02566 + ["boxHU"] = "╩", -- U+02569 + ["boxHd"] = "╤", -- U+02564 + ["boxHu"] = "╧", -- U+02567 + ["boxUL"] = "╝", -- U+0255D + ["boxUR"] = "╚", -- U+0255A + ["boxUl"] = "╜", -- U+0255C + ["boxUr"] = "╙", -- U+02559 + ["boxV"] = "║", -- U+02551 + ["boxVH"] = "╬", -- U+0256C + ["boxVL"] = "╣", -- U+02563 + ["boxVR"] = "╠", -- U+02560 + ["boxVh"] = "╫", -- U+0256B + ["boxVl"] = "╢", -- U+02562 + ["boxVr"] = "╟", -- U+0255F + ["boxbox"] = "⧉", -- U+029C9 + ["boxdL"] = "╕", -- U+02555 + ["boxdR"] = "╒", -- U+02552 + ["boxdl"] = "┐", -- U+02510 + ["boxdr"] = "┌", -- U+0250C + ["boxh"] = "─", -- U+02500 + ["boxhD"] = "╥", -- U+02565 + ["boxhU"] = "╨", -- U+02568 + ["boxhd"] = "┬", -- U+0252C + ["boxhu"] = "┴", -- U+02534 + ["boxminus"] = "⊟", -- U+0229F + ["boxplus"] = "⊞", -- U+0229E + ["boxtimes"] = "⊠", -- U+022A0 + ["boxuL"] = "╛", -- U+0255B + ["boxuR"] = "╘", -- U+02558 + ["boxul"] = "┘", -- U+02518 + ["boxur"] = "└", -- U+02514 + ["boxv"] = "│", -- U+02502 + ["boxvH"] = "╪", -- U+0256A + ["boxvL"] = "╡", -- U+02561 + ["boxvR"] = "╞", -- U+0255E + ["boxvh"] = "┼", -- U+0253C + ["boxvl"] = "┤", -- U+02524 + ["boxvr"] = "├", -- U+0251C + ["bprime"] = "‵", -- U+02035 + ["breve"] = "˘", -- U+002D8 + ["brvbar"] = "¦", -- U+000A6 + ["bscr"] = "𝒷", -- U+1D4B7 + ["bsemi"] = "⁏", -- U+0204F + ["bsim"] = "∽", -- U+0223D + ["bsime"] = "⋍", -- U+022CD + ["bsol"] = "\\", -- U+0005C + ["bsolb"] = "⧅", -- U+029C5 + ["bsolhsub"] = "⟈", -- U+027C8 + ["bull"] = "•", -- U+02022 + ["bullet"] = "•", -- U+02022 + ["bump"] = "≎", -- U+0224E + ["bumpE"] = "⪮", -- U+02AAE + ["bumpe"] = "≏", -- U+0224F + ["bumpeq"] = "≏", -- U+0224F + ["cacute"] = "ć", -- U+00107 + ["cap"] = "∩", -- U+02229 + ["capand"] = "⩄", -- U+02A44 + ["capbrcup"] = "⩉", -- U+02A49 + ["capcap"] = "⩋", -- U+02A4B + ["capcup"] = "⩇", -- U+02A47 + ["capdot"] = "⩀", -- U+02A40 + ["caps"] = "∩︀", -- U+02229 0FE00 + ["caret"] = "⁁", -- U+02041 + ["caron"] = "ˇ", -- U+002C7 + ["ccaps"] = "⩍", -- U+02A4D + ["ccaron"] = "č", -- U+0010D + ["ccedil"] = "ç", -- U+000E7 + ["ccirc"] = "ĉ", -- U+00109 + ["ccups"] = "⩌", -- U+02A4C + ["ccupssm"] = "⩐", -- U+02A50 + ["cdot"] = "ċ", -- U+0010B + ["cedil"] = "¸", -- U+000B8 + ["cemptyv"] = "⦲", -- U+029B2 + ["cent"] = "¢", -- U+000A2 + ["centerdot"] = "·", -- U+000B7 + ["cfr"] = "𝔠", -- U+1D520 + ["chcy"] = "ч", -- U+00447 + ["check"] = "✓", -- U+02713 + ["checkmark"] = "✓", -- U+02713 + ["chi"] = "χ", -- U+003C7 + ["cir"] = "○", -- U+025CB + ["cirE"] = "⧃", -- U+029C3 + ["circ"] = "ˆ", -- U+002C6 + ["circeq"] = "≗", -- U+02257 + ["circlearrowleft"] = "↺", -- U+021BA + ["circlearrowright"] = "↻", -- U+021BB + ["circledR"] = "®", -- U+000AE + ["circledS"] = "Ⓢ", -- U+024C8 + ["circledast"] = "⊛", -- U+0229B + ["circledcirc"] = "⊚", -- U+0229A + ["circleddash"] = "⊝", -- U+0229D + ["cire"] = "≗", -- U+02257 + ["cirfnint"] = "⨐", -- U+02A10 + ["cirmid"] = "⫯", -- U+02AEF + ["cirscir"] = "⧂", -- U+029C2 + ["clubs"] = "♣", -- U+02663 + ["clubsuit"] = "♣", -- U+02663 + ["colon"] = ":", -- U+0003A + ["colone"] = "≔", -- U+02254 + ["coloneq"] = "≔", -- U+02254 + ["comma"] = ",", -- U+0002C + ["commat"] = "@", -- U+00040 + ["comp"] = "∁", -- U+02201 + ["compfn"] = "∘", -- U+02218 + ["complement"] = "∁", -- U+02201 + ["complexes"] = "ℂ", -- U+02102 + ["cong"] = "≅", -- U+02245 + ["congdot"] = "⩭", -- U+02A6D + ["conint"] = "∮", -- U+0222E + ["copf"] = "𝕔", -- U+1D554 + ["coprod"] = "∐", -- U+02210 + ["copy"] = "©", -- U+000A9 + ["copysr"] = "℗", -- U+02117 + ["crarr"] = "↵", -- U+021B5 + ["cross"] = "✗", -- U+02717 + ["cscr"] = "𝒸", -- U+1D4B8 + ["csub"] = "⫏", -- U+02ACF + ["csube"] = "⫑", -- U+02AD1 + ["csup"] = "⫐", -- U+02AD0 + ["csupe"] = "⫒", -- U+02AD2 + ["ctdot"] = "⋯", -- U+022EF + ["cudarrl"] = "⤸", -- U+02938 + ["cudarrr"] = "⤵", -- U+02935 + ["cuepr"] = "⋞", -- U+022DE + ["cuesc"] = "⋟", -- U+022DF + ["cularr"] = "↶", -- U+021B6 + ["cularrp"] = "⤽", -- U+0293D + ["cup"] = "∪", -- U+0222A + ["cupbrcap"] = "⩈", -- U+02A48 + ["cupcap"] = "⩆", -- U+02A46 + ["cupcup"] = "⩊", -- U+02A4A + ["cupdot"] = "⊍", -- U+0228D + ["cupor"] = "⩅", -- U+02A45 + ["cups"] = "∪︀", -- U+0222A 0FE00 + ["curarr"] = "↷", -- U+021B7 + ["curarrm"] = "⤼", -- U+0293C + ["curlyeqprec"] = "⋞", -- U+022DE + ["curlyeqsucc"] = "⋟", -- U+022DF + ["curlyvee"] = "⋎", -- U+022CE + ["curlywedge"] = "⋏", -- U+022CF + ["curren"] = "¤", -- U+000A4 + ["curvearrowleft"] = "↶", -- U+021B6 + ["curvearrowright"] = "↷", -- U+021B7 + ["cuvee"] = "⋎", -- U+022CE + ["cuwed"] = "⋏", -- U+022CF + ["cwconint"] = "∲", -- U+02232 + ["cwint"] = "∱", -- U+02231 + ["cylcty"] = "⌭", -- U+0232D + ["dArr"] = "⇓", -- U+021D3 + ["dHar"] = "⥥", -- U+02965 + ["dagger"] = "†", -- U+02020 + ["daleth"] = "ℸ", -- U+02138 + ["darr"] = "↓", -- U+02193 + ["dash"] = "‐", -- U+02010 + ["dashv"] = "⊣", -- U+022A3 + ["dbkarow"] = "⤏", -- U+0290F + ["dblac"] = "˝", -- U+002DD + ["dcaron"] = "ď", -- U+0010F + ["dcy"] = "д", -- U+00434 + ["dd"] = "ⅆ", -- U+02146 + ["ddagger"] = "‡", -- U+02021 + ["ddarr"] = "⇊", -- U+021CA + ["ddotseq"] = "⩷", -- U+02A77 + ["deg"] = "°", -- U+000B0 + ["delta"] = "δ", -- U+003B4 + ["demptyv"] = "⦱", -- U+029B1 + ["dfisht"] = "⥿", -- U+0297F + ["dfr"] = "𝔡", -- U+1D521 + ["dgr"] = "δ", -- U+003B4 + ["dharl"] = "⇃", -- U+021C3 + ["dharr"] = "⇂", -- U+021C2 + ["diam"] = "⋄", -- U+022C4 + ["diamond"] = "⋄", -- U+022C4 + ["diamondsuit"] = "♦", -- U+02666 + ["diams"] = "♦", -- U+02666 + ["die"] = "¨", -- U+000A8 + ["digamma"] = "ϝ", -- U+003DD + ["disin"] = "⋲", -- U+022F2 + ["div"] = "÷", -- U+000F7 + ["divide"] = "÷", -- U+000F7 + ["divideontimes"] = "⋇", -- U+022C7 + ["divonx"] = "⋇", -- U+022C7 + ["djcy"] = "ђ", -- U+00452 + ["dlcorn"] = "⌞", -- U+0231E + ["dlcrop"] = "⌍", -- U+0230D + ["dollar"] = "$", -- U+00024 + ["dopf"] = "𝕕", -- U+1D555 + ["dot"] = "˙", -- U+002D9 + ["doteq"] = "≐", -- U+02250 + ["doteqdot"] = "≑", -- U+02251 + ["dotminus"] = "∸", -- U+02238 + ["dotplus"] = "∔", -- U+02214 + ["dotsquare"] = "⊡", -- U+022A1 + ["doublebarwedge"] = "⌆", -- U+02306 + ["downarrow"] = "↓", -- U+02193 + ["downdownarrows"] = "⇊", -- U+021CA + ["downharpoonleft"] = "⇃", -- U+021C3 + ["downharpoonright"] = "⇂", -- U+021C2 + ["drbkarow"] = "⤐", -- U+02910 + ["drcorn"] = "⌟", -- U+0231F + ["drcrop"] = "⌌", -- U+0230C + ["dscr"] = "𝒹", -- U+1D4B9 + ["dscy"] = "ѕ", -- U+00455 + ["dsol"] = "⧶", -- U+029F6 + ["dstrok"] = "đ", -- U+00111 + ["dtdot"] = "⋱", -- U+022F1 + ["dtri"] = "▿", -- U+025BF + ["dtrif"] = "▾", -- U+025BE + ["duarr"] = "⇵", -- U+021F5 + ["duhar"] = "⥯", -- U+0296F + ["dwangle"] = "⦦", -- U+029A6 + ["dzcy"] = "џ", -- U+0045F + ["dzigrarr"] = "⟿", -- U+027FF + ["eDDot"] = "⩷", -- U+02A77 + ["eDot"] = "≑", -- U+02251 + ["eacgr"] = "έ", -- U+003AD + ["eacute"] = "é", -- U+000E9 + ["easter"] = "⩮", -- U+02A6E + ["ecaron"] = "ě", -- U+0011B + ["ecir"] = "≖", -- U+02256 + ["ecirc"] = "ê", -- U+000EA + ["ecolon"] = "≕", -- U+02255 + ["ecy"] = "э", -- U+0044D + ["edot"] = "ė", -- U+00117 + ["ee"] = "ⅇ", -- U+02147 + ["eeacgr"] = "ή", -- U+003AE + ["eegr"] = "η", -- U+003B7 + ["efDot"] = "≒", -- U+02252 + ["efr"] = "𝔢", -- U+1D522 + ["eg"] = "⪚", -- U+02A9A + ["egr"] = "ε", -- U+003B5 + ["egrave"] = "è", -- U+000E8 + ["egs"] = "⪖", -- U+02A96 + ["egsdot"] = "⪘", -- U+02A98 + ["el"] = "⪙", -- U+02A99 + ["elinters"] = "⏧", -- U+023E7 + ["ell"] = "ℓ", -- U+02113 + ["els"] = "⪕", -- U+02A95 + ["elsdot"] = "⪗", -- U+02A97 + ["emacr"] = "ē", -- U+00113 + ["empty"] = "∅", -- U+02205 + ["emptyset"] = "∅", -- U+02205 + ["emptyv"] = "∅", -- U+02205 + ["emsp"] = " ", -- U+02003 + ["emsp13"] = " ", -- U+02004 + ["emsp14"] = " ", -- U+02005 + ["eng"] = "ŋ", -- U+0014B + ["ensp"] = " ", -- U+02002 + ["eogon"] = "ę", -- U+00119 + ["eopf"] = "𝕖", -- U+1D556 + ["epar"] = "⋕", -- U+022D5 + ["eparsl"] = "⧣", -- U+029E3 + ["eplus"] = "⩱", -- U+02A71 + ["epsi"] = "ε", -- U+003B5 + ["epsilon"] = "ε", -- U+003B5 + ["epsiv"] = "ϵ", -- U+003F5 + ["eqcirc"] = "≖", -- U+02256 + ["eqcolon"] = "≕", -- U+02255 + ["eqsim"] = "≂", -- U+02242 + ["eqslantgtr"] = "⪖", -- U+02A96 + ["eqslantless"] = "⪕", -- U+02A95 + ["equals"] = "=", -- U+0003D + ["equest"] = "≟", -- U+0225F + ["equiv"] = "≡", -- U+02261 + ["equivDD"] = "⩸", -- U+02A78 + ["eqvparsl"] = "⧥", -- U+029E5 + ["erDot"] = "≓", -- U+02253 + ["erarr"] = "⥱", -- U+02971 + ["escr"] = "ℯ", -- U+0212F + ["esdot"] = "≐", -- U+02250 + ["esim"] = "≂", -- U+02242 + ["eta"] = "η", -- U+003B7 + ["eth"] = "ð", -- U+000F0 + ["euml"] = "ë", -- U+000EB + ["euro"] = "€", -- U+020AC + ["excl"] = "!", -- U+00021 + ["exist"] = "∃", -- U+02203 + ["expectation"] = "ℰ", -- U+02130 + ["exponentiale"] = "ⅇ", -- U+02147 + ["fallingdotseq"] = "≒", -- U+02252 + ["fcy"] = "ф", -- U+00444 + ["female"] = "♀", -- U+02640 + ["ffilig"] = "ffi", -- U+0FB03 + ["fflig"] = "ff", -- U+0FB00 + ["ffllig"] = "ffl", -- U+0FB04 + ["ffr"] = "𝔣", -- U+1D523 + ["filig"] = "fi", -- U+0FB01 + ["fjlig"] = "fj", -- U+00066 0006A + ["flat"] = "♭", -- U+0266D + ["fllig"] = "fl", -- U+0FB02 + ["fltns"] = "▱", -- U+025B1 + ["fnof"] = "ƒ", -- U+00192 + ["fopf"] = "𝕗", -- U+1D557 + ["forall"] = "∀", -- U+02200 + ["fork"] = "⋔", -- U+022D4 + ["forkv"] = "⫙", -- U+02AD9 + ["fpartint"] = "⨍", -- U+02A0D + ["frac12"] = "½", -- U+000BD + ["frac13"] = "⅓", -- U+02153 + ["frac14"] = "¼", -- U+000BC + ["frac15"] = "⅕", -- U+02155 + ["frac16"] = "⅙", -- U+02159 + ["frac18"] = "⅛", -- U+0215B + ["frac23"] = "⅔", -- U+02154 + ["frac25"] = "⅖", -- U+02156 + ["frac34"] = "¾", -- U+000BE + ["frac35"] = "⅗", -- U+02157 + ["frac38"] = "⅜", -- U+0215C + ["frac45"] = "⅘", -- U+02158 + ["frac56"] = "⅚", -- U+0215A + ["frac58"] = "⅝", -- U+0215D + ["frac78"] = "⅞", -- U+0215E + ["frasl"] = "⁄", -- U+02044 + ["frown"] = "⌢", -- U+02322 + ["fscr"] = "𝒻", -- U+1D4BB + ["gE"] = "≧", -- U+02267 + ["gEl"] = "⪌", -- U+02A8C + ["gacute"] = "ǵ", -- U+001F5 + ["gamma"] = "γ", -- U+003B3 + ["gammad"] = "ϝ", -- U+003DD + ["gap"] = "⪆", -- U+02A86 + ["gbreve"] = "ğ", -- U+0011F + ["gcirc"] = "ĝ", -- U+0011D + ["gcy"] = "г", -- U+00433 + ["gdot"] = "ġ", -- U+00121 + ["ge"] = "≥", -- U+02265 + ["gel"] = "⋛", -- U+022DB + ["geq"] = "≥", -- U+02265 + ["geqq"] = "≧", -- U+02267 + ["geqslant"] = "⩾", -- U+02A7E + ["ges"] = "⩾", -- U+02A7E + ["gescc"] = "⪩", -- U+02AA9 + ["gesdot"] = "⪀", -- U+02A80 + ["gesdoto"] = "⪂", -- U+02A82 + ["gesdotol"] = "⪄", -- U+02A84 + ["gesl"] = "⋛︀", -- U+022DB 0FE00 + ["gesles"] = "⪔", -- U+02A94 + ["gfr"] = "𝔤", -- U+1D524 + ["gg"] = "≫", -- U+0226B + ["ggg"] = "⋙", -- U+022D9 + ["ggr"] = "γ", -- U+003B3 + ["gimel"] = "ℷ", -- U+02137 + ["gjcy"] = "ѓ", -- U+00453 + ["gl"] = "≷", -- U+02277 + ["glE"] = "⪒", -- U+02A92 + ["gla"] = "⪥", -- U+02AA5 + ["glj"] = "⪤", -- U+02AA4 + ["gnE"] = "≩", -- U+02269 + ["gnap"] = "⪊", -- U+02A8A + ["gnapprox"] = "⪊", -- U+02A8A + ["gne"] = "⪈", -- U+02A88 + ["gneq"] = "⪈", -- U+02A88 + ["gneqq"] = "≩", -- U+02269 + ["gnsim"] = "⋧", -- U+022E7 + ["gopf"] = "𝕘", -- U+1D558 + ["grave"] = "`", -- U+00060 + ["gscr"] = "ℊ", -- U+0210A + ["gsim"] = "≳", -- U+02273 + ["gsime"] = "⪎", -- U+02A8E + ["gsiml"] = "⪐", -- U+02A90 + ["gt"] = ">", -- U+0003E + ["gtcc"] = "⪧", -- U+02AA7 + ["gtcir"] = "⩺", -- U+02A7A + ["gtdot"] = "⋗", -- U+022D7 + ["gtlPar"] = "⦕", -- U+02995 + ["gtquest"] = "⩼", -- U+02A7C + ["gtrapprox"] = "⪆", -- U+02A86 + ["gtrarr"] = "⥸", -- U+02978 + ["gtrdot"] = "⋗", -- U+022D7 + ["gtreqless"] = "⋛", -- U+022DB + ["gtreqqless"] = "⪌", -- U+02A8C + ["gtrless"] = "≷", -- U+02277 + ["gtrsim"] = "≳", -- U+02273 + ["gvertneqq"] = "≩︀", -- U+02269 0FE00 + ["gvnE"] = "≩︀", -- U+02269 0FE00 + ["hArr"] = "⇔", -- U+021D4 + ["hairsp"] = " ", -- U+0200A + ["half"] = "½", -- U+000BD + ["hamilt"] = "ℋ", -- U+0210B + ["hardcy"] = "ъ", -- U+0044A + ["harr"] = "↔", -- U+02194 + ["harrcir"] = "⥈", -- U+02948 + ["harrw"] = "↭", -- U+021AD + ["hbar"] = "ℏ", -- U+0210F + ["hcirc"] = "ĥ", -- U+00125 + ["hearts"] = "♥", -- U+02665 + ["heartsuit"] = "♥", -- U+02665 + ["hellip"] = "…", -- U+02026 + ["hercon"] = "⊹", -- U+022B9 + ["hfr"] = "𝔥", -- U+1D525 + ["hksearow"] = "⤥", -- U+02925 + ["hkswarow"] = "⤦", -- U+02926 + ["hoarr"] = "⇿", -- U+021FF + ["homtht"] = "∻", -- U+0223B + ["hookleftarrow"] = "↩", -- U+021A9 + ["hookrightarrow"] = "↪", -- U+021AA + ["hopf"] = "𝕙", -- U+1D559 + ["horbar"] = "―", -- U+02015 + ["hscr"] = "𝒽", -- U+1D4BD + ["hslash"] = "ℏ", -- U+0210F + ["hstrok"] = "ħ", -- U+00127 + ["hybull"] = "⁃", -- U+02043 + ["hyphen"] = "‐", -- U+02010 + ["iacgr"] = "ί", -- U+003AF + ["iacute"] = "í", -- U+000ED + ["ic"] = "", -- U+02063 + ["icirc"] = "î", -- U+000EE + ["icy"] = "и", -- U+00438 + ["idiagr"] = "ΐ", -- U+00390 + ["idigr"] = "ϊ", -- U+003CA + ["iecy"] = "е", -- U+00435 + ["iexcl"] = "¡", -- U+000A1 + ["iff"] = "⇔", -- U+021D4 + ["ifr"] = "𝔦", -- U+1D526 + ["igr"] = "ι", -- U+003B9 + ["igrave"] = "ì", -- U+000EC + ["ii"] = "ⅈ", -- U+02148 + ["iiiint"] = "⨌", -- U+02A0C + ["iiint"] = "∭", -- U+0222D + ["iinfin"] = "⧜", -- U+029DC + ["iiota"] = "℩", -- U+02129 + ["ijlig"] = "ij", -- U+00133 + ["imacr"] = "ī", -- U+0012B + ["image"] = "ℑ", -- U+02111 + ["imagline"] = "ℐ", -- U+02110 + ["imagpart"] = "ℑ", -- U+02111 + ["imath"] = "ı", -- U+00131 + ["imof"] = "⊷", -- U+022B7 + ["imped"] = "Ƶ", -- U+001B5 + ["in"] = "∈", -- U+02208 + ["incare"] = "℅", -- U+02105 + ["infin"] = "∞", -- U+0221E + ["infintie"] = "⧝", -- U+029DD + ["inodot"] = "ı", -- U+00131 + ["int"] = "∫", -- U+0222B + ["intcal"] = "⊺", -- U+022BA + ["integers"] = "ℤ", -- U+02124 + ["intercal"] = "⊺", -- U+022BA + ["intlarhk"] = "⨗", -- U+02A17 + ["intprod"] = "⨼", -- U+02A3C + ["iocy"] = "ё", -- U+00451 + ["iogon"] = "į", -- U+0012F + ["iopf"] = "𝕚", -- U+1D55A + ["iota"] = "ι", -- U+003B9 + ["iprod"] = "⨼", -- U+02A3C + ["iquest"] = "¿", -- U+000BF + ["iscr"] = "𝒾", -- U+1D4BE + ["isin"] = "∈", -- U+02208 + ["isinE"] = "⋹", -- U+022F9 + ["isindot"] = "⋵", -- U+022F5 + ["isins"] = "⋴", -- U+022F4 + ["isinsv"] = "⋳", -- U+022F3 + ["isinv"] = "∈", -- U+02208 + ["it"] = "", -- U+02062 + ["itilde"] = "ĩ", -- U+00129 + ["iukcy"] = "і", -- U+00456 + ["iuml"] = "ï", -- U+000EF + ["jcirc"] = "ĵ", -- U+00135 + ["jcy"] = "й", -- U+00439 + ["jfr"] = "𝔧", -- U+1D527 + ["jmath"] = "ȷ", -- U+00237 + ["jopf"] = "𝕛", -- U+1D55B + ["jscr"] = "𝒿", -- U+1D4BF + ["jsercy"] = "ј", -- U+00458 + ["jukcy"] = "є", -- U+00454 + ["kappa"] = "κ", -- U+003BA + ["kappav"] = "ϰ", -- U+003F0 + ["kcedil"] = "ķ", -- U+00137 + ["kcy"] = "к", -- U+0043A + ["kfr"] = "𝔨", -- U+1D528 + ["kgr"] = "κ", -- U+003BA + ["kgreen"] = "ĸ", -- U+00138 + ["khcy"] = "х", -- U+00445 + ["khgr"] = "χ", -- U+003C7 + ["kjcy"] = "ќ", -- U+0045C + ["kopf"] = "𝕜", -- U+1D55C + ["kscr"] = "𝓀", -- U+1D4C0 + ["lAarr"] = "⇚", -- U+021DA + ["lArr"] = "⇐", -- U+021D0 + ["lAtail"] = "⤛", -- U+0291B + ["lBarr"] = "⤎", -- U+0290E + ["lE"] = "≦", -- U+02266 + ["lEg"] = "⪋", -- U+02A8B + ["lHar"] = "⥢", -- U+02962 + ["lacute"] = "ĺ", -- U+0013A + ["laemptyv"] = "⦴", -- U+029B4 + ["lagran"] = "ℒ", -- U+02112 + ["lambda"] = "λ", -- U+003BB + ["lang"] = "⟨", -- U+027E8 + ["langd"] = "⦑", -- U+02991 + ["langle"] = "⟨", -- U+027E8 + ["lap"] = "⪅", -- U+02A85 + ["laquo"] = "«", -- U+000AB + ["larr"] = "←", -- U+02190 + ["larrb"] = "⇤", -- U+021E4 + ["larrbfs"] = "⤟", -- U+0291F + ["larrfs"] = "⤝", -- U+0291D + ["larrhk"] = "↩", -- U+021A9 + ["larrlp"] = "↫", -- U+021AB + ["larrpl"] = "⤹", -- U+02939 + ["larrsim"] = "⥳", -- U+02973 + ["larrtl"] = "↢", -- U+021A2 + ["lat"] = "⪫", -- U+02AAB + ["latail"] = "⤙", -- U+02919 + ["late"] = "⪭", -- U+02AAD + ["lates"] = "⪭︀", -- U+02AAD 0FE00 + ["lbarr"] = "⤌", -- U+0290C + ["lbbrk"] = "❲", -- U+02772 + ["lbrace"] = "{", -- U+0007B + ["lbrack"] = "[", -- U+0005B + ["lbrke"] = "⦋", -- U+0298B + ["lbrksld"] = "⦏", -- U+0298F + ["lbrkslu"] = "⦍", -- U+0298D + ["lcaron"] = "ľ", -- U+0013E + ["lcedil"] = "ļ", -- U+0013C + ["lceil"] = "⌈", -- U+02308 + ["lcub"] = "{", -- U+0007B + ["lcy"] = "л", -- U+0043B + ["ldca"] = "⤶", -- U+02936 + ["ldquo"] = "“", -- U+0201C + ["ldquor"] = "„", -- U+0201E + ["ldrdhar"] = "⥧", -- U+02967 + ["ldrushar"] = "⥋", -- U+0294B + ["ldsh"] = "↲", -- U+021B2 + ["le"] = "≤", -- U+02264 + ["leftarrow"] = "←", -- U+02190 + ["leftarrowtail"] = "↢", -- U+021A2 + ["leftharpoondown"] = "↽", -- U+021BD + ["leftharpoonup"] = "↼", -- U+021BC + ["leftleftarrows"] = "⇇", -- U+021C7 + ["leftrightarrow"] = "↔", -- U+02194 + ["leftrightarrows"] = "⇆", -- U+021C6 + ["leftrightharpoons"] = "⇋", -- U+021CB + ["leftrightsquigarrow"] = "↭", -- U+021AD + ["leftthreetimes"] = "⋋", -- U+022CB + ["leg"] = "⋚", -- U+022DA + ["leq"] = "≤", -- U+02264 + ["leqq"] = "≦", -- U+02266 + ["leqslant"] = "⩽", -- U+02A7D + ["les"] = "⩽", -- U+02A7D + ["lescc"] = "⪨", -- U+02AA8 + ["lesdot"] = "⩿", -- U+02A7F + ["lesdoto"] = "⪁", -- U+02A81 + ["lesdotor"] = "⪃", -- U+02A83 + ["lesg"] = "⋚︀", -- U+022DA 0FE00 + ["lesges"] = "⪓", -- U+02A93 + ["lessapprox"] = "⪅", -- U+02A85 + ["lessdot"] = "⋖", -- U+022D6 + ["lesseqgtr"] = "⋚", -- U+022DA + ["lesseqqgtr"] = "⪋", -- U+02A8B + ["lessgtr"] = "≶", -- U+02276 + ["lesssim"] = "≲", -- U+02272 + ["lfisht"] = "⥼", -- U+0297C + ["lfloor"] = "⌊", -- U+0230A + ["lfr"] = "𝔩", -- U+1D529 + ["lg"] = "≶", -- U+02276 + ["lgE"] = "⪑", -- U+02A91 + ["lgr"] = "λ", -- U+003BB + ["lhard"] = "↽", -- U+021BD + ["lharu"] = "↼", -- U+021BC + ["lharul"] = "⥪", -- U+0296A + ["lhblk"] = "▄", -- U+02584 + ["ljcy"] = "љ", -- U+00459 + ["ll"] = "≪", -- U+0226A + ["llarr"] = "⇇", -- U+021C7 + ["llcorner"] = "⌞", -- U+0231E + ["llhard"] = "⥫", -- U+0296B + ["lltri"] = "◺", -- U+025FA + ["lmidot"] = "ŀ", -- U+00140 + ["lmoust"] = "⎰", -- U+023B0 + ["lmoustache"] = "⎰", -- U+023B0 + ["lnE"] = "≨", -- U+02268 + ["lnap"] = "⪉", -- U+02A89 + ["lnapprox"] = "⪉", -- U+02A89 + ["lne"] = "⪇", -- U+02A87 + ["lneq"] = "⪇", -- U+02A87 + ["lneqq"] = "≨", -- U+02268 + ["lnsim"] = "⋦", -- U+022E6 + ["loang"] = "⟬", -- U+027EC + ["loarr"] = "⇽", -- U+021FD + ["lobrk"] = "⟦", -- U+027E6 + ["longleftarrow"] = "⟵", -- U+027F5 + ["longleftrightarrow"] = "⟷", -- U+027F7 + ["longmapsto"] = "⟼", -- U+027FC + ["longrightarrow"] = "⟶", -- U+027F6 + ["looparrowleft"] = "↫", -- U+021AB + ["looparrowright"] = "↬", -- U+021AC + ["lopar"] = "⦅", -- U+02985 + ["lopf"] = "𝕝", -- U+1D55D + ["loplus"] = "⨭", -- U+02A2D + ["lotimes"] = "⨴", -- U+02A34 + ["lowast"] = "∗", -- U+02217 + ["lowbar"] = "_", -- U+0005F + ["loz"] = "◊", -- U+025CA + ["lozenge"] = "◊", -- U+025CA + ["lozf"] = "⧫", -- U+029EB + ["lpar"] = "(", -- U+00028 + ["lparlt"] = "⦓", -- U+02993 + ["lrarr"] = "⇆", -- U+021C6 + ["lrcorner"] = "⌟", -- U+0231F + ["lrhar"] = "⇋", -- U+021CB + ["lrhard"] = "⥭", -- U+0296D + ["lrm"] = "", -- U+0200E + ["lrtri"] = "⊿", -- U+022BF + ["lsaquo"] = "‹", -- U+02039 + ["lscr"] = "𝓁", -- U+1D4C1 + ["lsh"] = "↰", -- U+021B0 + ["lsim"] = "≲", -- U+02272 + ["lsime"] = "⪍", -- U+02A8D + ["lsimg"] = "⪏", -- U+02A8F + ["lsqb"] = "[", -- U+0005B + ["lsquo"] = "‘", -- U+02018 + ["lsquor"] = "‚", -- U+0201A + ["lstrok"] = "ł", -- U+00142 + ["lt"] = "<", -- U+00026 + ["ltcc"] = "⪦", -- U+02AA6 + ["ltcir"] = "⩹", -- U+02A79 + ["ltdot"] = "⋖", -- U+022D6 + ["lthree"] = "⋋", -- U+022CB + ["ltimes"] = "⋉", -- U+022C9 + ["ltlarr"] = "⥶", -- U+02976 + ["ltquest"] = "⩻", -- U+02A7B + ["ltrPar"] = "⦖", -- U+02996 + ["ltri"] = "◃", -- U+025C3 + ["ltrie"] = "⊴", -- U+022B4 + ["ltrif"] = "◂", -- U+025C2 + ["lurdshar"] = "⥊", -- U+0294A + ["luruhar"] = "⥦", -- U+02966 + ["lvertneqq"] = "≨︀", -- U+02268 0FE00 + ["lvnE"] = "≨︀", -- U+02268 0FE00 + ["mDDot"] = "∺", -- U+0223A + ["macr"] = "¯", -- U+000AF + ["male"] = "♂", -- U+02642 + ["malt"] = "✠", -- U+02720 + ["maltese"] = "✠", -- U+02720 + ["map"] = "↦", -- U+021A6 + ["mapsto"] = "↦", -- U+021A6 + ["mapstodown"] = "↧", -- U+021A7 + ["mapstoleft"] = "↤", -- U+021A4 + ["mapstoup"] = "↥", -- U+021A5 + ["marker"] = "▮", -- U+025AE + ["mcomma"] = "⨩", -- U+02A29 + ["mcy"] = "м", -- U+0043C + ["mdash"] = "—", -- U+02014 + ["measuredangle"] = "∡", -- U+02221 + ["mfr"] = "𝔪", -- U+1D52A + ["mgr"] = "μ", -- U+003BC + ["mho"] = "℧", -- U+02127 + ["micro"] = "µ", -- U+000B5 + ["mid"] = "∣", -- U+02223 + ["midast"] = "*", -- U+0002A + ["midcir"] = "⫰", -- U+02AF0 + ["middot"] = "·", -- U+000B7 + ["minus"] = "−", -- U+02212 + ["minusb"] = "⊟", -- U+0229F + ["minusd"] = "∸", -- U+02238 + ["minusdu"] = "⨪", -- U+02A2A + ["mlcp"] = "⫛", -- U+02ADB + ["mldr"] = "…", -- U+02026 + ["mnplus"] = "∓", -- U+02213 + ["models"] = "⊧", -- U+022A7 + ["mopf"] = "𝕞", -- U+1D55E + ["mp"] = "∓", -- U+02213 + ["mscr"] = "𝓂", -- U+1D4C2 + ["mstpos"] = "∾", -- U+0223E + ["mu"] = "μ", -- U+003BC + ["multimap"] = "⊸", -- U+022B8 + ["mumap"] = "⊸", -- U+022B8 + ["nGg"] = "⋙̸", -- U+022D9 00338 + ["nGt"] = "≫⃒", -- U+0226B 020D2 + ["nGtv"] = "≫̸", -- U+0226B 00338 + ["nLeftarrow"] = "⇍", -- U+021CD + ["nLeftrightarrow"] = "⇎", -- U+021CE + ["nLl"] = "⋘̸", -- U+022D8 00338 + ["nLt"] = "≪⃒", -- U+0226A 020D2 + ["nLtv"] = "≪̸", -- U+0226A 00338 + ["nRightarrow"] = "⇏", -- U+021CF + ["nVDash"] = "⊯", -- U+022AF + ["nVdash"] = "⊮", -- U+022AE + ["nabla"] = "∇", -- U+02207 + ["nacute"] = "ń", -- U+00144 + ["nang"] = "∠⃒", -- U+02220 020D2 + ["nap"] = "≉", -- U+02249 + ["napE"] = "⩰̸", -- U+02A70 00338 + ["napid"] = "≋̸", -- U+0224B 00338 + ["napos"] = "ʼn", -- U+00149 + ["napprox"] = "≉", -- U+02249 + ["natur"] = "♮", -- U+0266E + ["natural"] = "♮", -- U+0266E + ["naturals"] = "ℕ", -- U+02115 + ["nbsp"] = " ", -- U+000A0 + ["nbump"] = "≎̸", -- U+0224E 00338 + ["nbumpe"] = "≏̸", -- U+0224F 00338 + ["ncap"] = "⩃", -- U+02A43 + ["ncaron"] = "ň", -- U+00148 + ["ncedil"] = "ņ", -- U+00146 + ["ncong"] = "≇", -- U+02247 + ["ncongdot"] = "⩭̸", -- U+02A6D 00338 + ["ncup"] = "⩂", -- U+02A42 + ["ncy"] = "н", -- U+0043D + ["ndash"] = "–", -- U+02013 + ["ne"] = "≠", -- U+02260 + ["neArr"] = "⇗", -- U+021D7 + ["nearhk"] = "⤤", -- U+02924 + ["nearr"] = "↗", -- U+02197 + ["nearrow"] = "↗", -- U+02197 + ["nedot"] = "≐̸", -- U+02250 00338 + ["nequiv"] = "≢", -- U+02262 + ["nesear"] = "⤨", -- U+02928 + ["nesim"] = "≂̸", -- U+02242 00338 + ["nexist"] = "∄", -- U+02204 + ["nexists"] = "∄", -- U+02204 + ["nfr"] = "𝔫", -- U+1D52B + ["ngE"] = "≧̸", -- U+02267 00338 + ["nge"] = "≱", -- U+02271 + ["ngeq"] = "≱", -- U+02271 + ["ngeqq"] = "≧̸", -- U+02267 00338 + ["ngeqslant"] = "⩾̸", -- U+02A7E 00338 + ["nges"] = "⩾̸", -- U+02A7E 00338 + ["ngr"] = "ν", -- U+003BD + ["ngsim"] = "≵", -- U+02275 + ["ngt"] = "≯", -- U+0226F + ["ngtr"] = "≯", -- U+0226F + ["nhArr"] = "⇎", -- U+021CE + ["nharr"] = "↮", -- U+021AE + ["nhpar"] = "⫲", -- U+02AF2 + ["ni"] = "∋", -- U+0220B + ["nis"] = "⋼", -- U+022FC + ["nisd"] = "⋺", -- U+022FA + ["niv"] = "∋", -- U+0220B + ["njcy"] = "њ", -- U+0045A + ["nlArr"] = "⇍", -- U+021CD + ["nlE"] = "≦̸", -- U+02266 00338 + ["nlarr"] = "↚", -- U+0219A + ["nldr"] = "‥", -- U+02025 + ["nle"] = "≰", -- U+02270 + ["nleftarrow"] = "↚", -- U+0219A + ["nleftrightarrow"] = "↮", -- U+021AE + ["nleq"] = "≰", -- U+02270 + ["nleqq"] = "≦̸", -- U+02266 00338 + ["nleqslant"] = "⩽̸", -- U+02A7D 00338 + ["nles"] = "⩽̸", -- U+02A7D 00338 + ["nless"] = "≮", -- U+0226E + ["nlsim"] = "≴", -- U+02274 + ["nlt"] = "≮", -- U+0226E + ["nltri"] = "⋪", -- U+022EA + ["nltrie"] = "⋬", -- U+022EC + ["nmid"] = "∤", -- U+02224 + ["nopf"] = "𝕟", -- U+1D55F + ["not"] = "¬", -- U+000AC + ["notin"] = "∉", -- U+02209 + ["notinE"] = "⋹̸", -- U+022F9 00338 + ["notindot"] = "⋵̸", -- U+022F5 00338 + ["notinva"] = "∉", -- U+02209 + ["notinvb"] = "⋷", -- U+022F7 + ["notinvc"] = "⋶", -- U+022F6 + ["notni"] = "∌", -- U+0220C + ["notniva"] = "∌", -- U+0220C + ["notnivb"] = "⋾", -- U+022FE + ["notnivc"] = "⋽", -- U+022FD + ["npar"] = "∦", -- U+02226 + ["nparallel"] = "∦", -- U+02226 + ["nparsl"] = "⫽⃥", -- U+02AFD 020E5 + ["npart"] = "∂̸", -- U+02202 00338 + ["npolint"] = "⨔", -- U+02A14 + ["npr"] = "⊀", -- U+02280 + ["nprcue"] = "⋠", -- U+022E0 + ["npre"] = "⪯̸", -- U+02AAF 00338 + ["nprec"] = "⊀", -- U+02280 + ["npreceq"] = "⪯̸", -- U+02AAF 00338 + ["nrArr"] = "⇏", -- U+021CF + ["nrarr"] = "↛", -- U+0219B + ["nrarrc"] = "⤳̸", -- U+02933 00338 + ["nrarrw"] = "↝̸", -- U+0219D 00338 + ["nrightarrow"] = "↛", -- U+0219B + ["nrtri"] = "⋫", -- U+022EB + ["nrtrie"] = "⋭", -- U+022ED + ["nsc"] = "⊁", -- U+02281 + ["nsccue"] = "⋡", -- U+022E1 + ["nsce"] = "⪰̸", -- U+02AB0 00338 + ["nscr"] = "𝓃", -- U+1D4C3 + ["nshortmid"] = "∤", -- U+02224 + ["nshortparallel"] = "∦", -- U+02226 + ["nsim"] = "≁", -- U+02241 + ["nsime"] = "≄", -- U+02244 + ["nsimeq"] = "≄", -- U+02244 + ["nsmid"] = "∤", -- U+02224 + ["nspar"] = "∦", -- U+02226 + ["nsqsube"] = "⋢", -- U+022E2 + ["nsqsupe"] = "⋣", -- U+022E3 + ["nsub"] = "⊄", -- U+02284 + ["nsubE"] = "⫅̸", -- U+02AC5 00338 + ["nsube"] = "⊈", -- U+02288 + ["nsubset"] = "⊂⃒", -- U+02282 020D2 + ["nsubseteq"] = "⊈", -- U+02288 + ["nsubseteqq"] = "⫅̸", -- U+02AC5 00338 + ["nsucc"] = "⊁", -- U+02281 + ["nsucceq"] = "⪰̸", -- U+02AB0 00338 + ["nsup"] = "⊅", -- U+02285 + ["nsupE"] = "⫆̸", -- U+02AC6 00338 + ["nsupe"] = "⊉", -- U+02289 + ["nsupset"] = "⊃⃒", -- U+02283 020D2 + ["nsupseteq"] = "⊉", -- U+02289 + ["nsupseteqq"] = "⫆̸", -- U+02AC6 00338 + ["ntgl"] = "≹", -- U+02279 + ["ntilde"] = "ñ", -- U+000F1 + ["ntlg"] = "≸", -- U+02278 + ["ntriangleleft"] = "⋪", -- U+022EA + ["ntrianglelefteq"] = "⋬", -- U+022EC + ["ntriangleright"] = "⋫", -- U+022EB + ["ntrianglerighteq"] = "⋭", -- U+022ED + ["nu"] = "ν", -- U+003BD + ["num"] = "#", -- U+00023 + ["numero"] = "№", -- U+02116 + ["numsp"] = " ", -- U+02007 + ["nvDash"] = "⊭", -- U+022AD + ["nvHarr"] = "⤄", -- U+02904 + ["nvap"] = "≍⃒", -- U+0224D 020D2 + ["nvdash"] = "⊬", -- U+022AC + ["nvge"] = "≥⃒", -- U+02265 020D2 + ["nvgt"] = ">⃒", -- U+0003E 020D2 + ["nvinfin"] = "⧞", -- U+029DE + ["nvlArr"] = "⤂", -- U+02902 + ["nvle"] = "≤⃒", -- U+02264 020D2 + ["nvlt"] = "&⃒", -- U+00026 020D2 + ["nvltrie"] = "⊴⃒", -- U+022B4 020D2 + ["nvrArr"] = "⤃", -- U+02903 + ["nvrtrie"] = "⊵⃒", -- U+022B5 020D2 + ["nvsim"] = "∼⃒", -- U+0223C 020D2 + ["nwArr"] = "⇖", -- U+021D6 + ["nwarhk"] = "⤣", -- U+02923 + ["nwarr"] = "↖", -- U+02196 + ["nwarrow"] = "↖", -- U+02196 + ["nwnear"] = "⤧", -- U+02927 + ["oS"] = "Ⓢ", -- U+024C8 + ["oacgr"] = "ό", -- U+003CC + ["oacute"] = "ó", -- U+000F3 + ["oast"] = "⊛", -- U+0229B + ["ocir"] = "⊚", -- U+0229A + ["ocirc"] = "ô", -- U+000F4 + ["ocy"] = "о", -- U+0043E + ["odash"] = "⊝", -- U+0229D + ["odblac"] = "ő", -- U+00151 + ["odiv"] = "⨸", -- U+02A38 + ["odot"] = "⊙", -- U+02299 + ["odsold"] = "⦼", -- U+029BC + ["oelig"] = "œ", -- U+00153 + ["ofcir"] = "⦿", -- U+029BF + ["ofr"] = "𝔬", -- U+1D52C + ["ogon"] = "˛", -- U+002DB + ["ogr"] = "ο", -- U+003BF + ["ograve"] = "ò", -- U+000F2 + ["ogt"] = "⧁", -- U+029C1 + ["ohacgr"] = "ώ", -- U+003CE + ["ohbar"] = "⦵", -- U+029B5 + ["ohgr"] = "ω", -- U+003C9 + ["ohm"] = "Ω", -- U+003A9 + ["oint"] = "∮", -- U+0222E + ["olarr"] = "↺", -- U+021BA + ["olcir"] = "⦾", -- U+029BE + ["olcross"] = "⦻", -- U+029BB + ["oline"] = "‾", -- U+0203E + ["olt"] = "⧀", -- U+029C0 + ["omacr"] = "ō", -- U+0014D + ["omega"] = "ω", -- U+003C9 + ["omicron"] = "ο", -- U+003BF + ["omid"] = "⦶", -- U+029B6 + ["ominus"] = "⊖", -- U+02296 + ["oopf"] = "𝕠", -- U+1D560 + ["opar"] = "⦷", -- U+029B7 + ["operp"] = "⦹", -- U+029B9 + ["oplus"] = "⊕", -- U+02295 + ["or"] = "∨", -- U+02228 + ["orarr"] = "↻", -- U+021BB + ["ord"] = "⩝", -- U+02A5D + ["order"] = "ℴ", -- U+02134 + ["orderof"] = "ℴ", -- U+02134 + ["ordf"] = "ª", -- U+000AA + ["ordm"] = "º", -- U+000BA + ["origof"] = "⊶", -- U+022B6 + ["oror"] = "⩖", -- U+02A56 + ["orslope"] = "⩗", -- U+02A57 + ["orv"] = "⩛", -- U+02A5B + ["oscr"] = "ℴ", -- U+02134 + ["oslash"] = "ø", -- U+000F8 + ["osol"] = "⊘", -- U+02298 + ["otilde"] = "õ", -- U+000F5 + ["otimes"] = "⊗", -- U+02297 + ["otimesas"] = "⨶", -- U+02A36 + ["ouml"] = "ö", -- U+000F6 + ["ovbar"] = "⌽", -- U+0233D + ["par"] = "∥", -- U+02225 + ["para"] = "¶", -- U+000B6 + ["parallel"] = "∥", -- U+02225 + ["parsim"] = "⫳", -- U+02AF3 + ["parsl"] = "⫽", -- U+02AFD + ["part"] = "∂", -- U+02202 + ["pcy"] = "п", -- U+0043F + ["percnt"] = "%", -- U+00025 + ["period"] = ".", -- U+0002E + ["permil"] = "‰", -- U+02030 + ["perp"] = "⊥", -- U+022A5 + ["pertenk"] = "‱", -- U+02031 + ["pfr"] = "𝔭", -- U+1D52D + ["pgr"] = "π", -- U+003C0 + ["phgr"] = "φ", -- U+003C6 + ["phi"] = "φ", -- U+003C6 + ["phiv"] = "ϕ", -- U+003D5 + ["phmmat"] = "ℳ", -- U+02133 + ["phone"] = "☎", -- U+0260E + ["pi"] = "π", -- U+003C0 + ["pitchfork"] = "⋔", -- U+022D4 + ["piv"] = "ϖ", -- U+003D6 + ["planck"] = "ℏ", -- U+0210F + ["planckh"] = "ℎ", -- U+0210E + ["plankv"] = "ℏ", -- U+0210F + ["plus"] = "+", -- U+0002B + ["plusacir"] = "⨣", -- U+02A23 + ["plusb"] = "⊞", -- U+0229E + ["pluscir"] = "⨢", -- U+02A22 + ["plusdo"] = "∔", -- U+02214 + ["plusdu"] = "⨥", -- U+02A25 + ["pluse"] = "⩲", -- U+02A72 + ["plusmn"] = "±", -- U+000B1 + ["plussim"] = "⨦", -- U+02A26 + ["plustwo"] = "⨧", -- U+02A27 + ["pm"] = "±", -- U+000B1 + ["pointint"] = "⨕", -- U+02A15 + ["popf"] = "𝕡", -- U+1D561 + ["pound"] = "£", -- U+000A3 + ["pr"] = "≺", -- U+0227A + ["prE"] = "⪳", -- U+02AB3 + ["prap"] = "⪷", -- U+02AB7 + ["prcue"] = "≼", -- U+0227C + ["pre"] = "⪯", -- U+02AAF + ["prec"] = "≺", -- U+0227A + ["precapprox"] = "⪷", -- U+02AB7 + ["preccurlyeq"] = "≼", -- U+0227C + ["preceq"] = "⪯", -- U+02AAF + ["precnapprox"] = "⪹", -- U+02AB9 + ["precneqq"] = "⪵", -- U+02AB5 + ["precnsim"] = "⋨", -- U+022E8 + ["precsim"] = "≾", -- U+0227E + ["prime"] = "′", -- U+02032 + ["primes"] = "ℙ", -- U+02119 + ["prnE"] = "⪵", -- U+02AB5 + ["prnap"] = "⪹", -- U+02AB9 + ["prnsim"] = "⋨", -- U+022E8 + ["prod"] = "∏", -- U+0220F + ["profalar"] = "⌮", -- U+0232E + ["profline"] = "⌒", -- U+02312 + ["profsurf"] = "⌓", -- U+02313 + ["prop"] = "∝", -- U+0221D + ["propto"] = "∝", -- U+0221D + ["prsim"] = "≾", -- U+0227E + ["prurel"] = "⊰", -- U+022B0 + ["pscr"] = "𝓅", -- U+1D4C5 + ["psgr"] = "ψ", -- U+003C8 + ["psi"] = "ψ", -- U+003C8 + ["puncsp"] = " ", -- U+02008 + ["qfr"] = "𝔮", -- U+1D52E + ["qint"] = "⨌", -- U+02A0C + ["qopf"] = "𝕢", -- U+1D562 + ["qprime"] = "⁗", -- U+02057 + ["qscr"] = "𝓆", -- U+1D4C6 + ["quaternions"] = "ℍ", -- U+0210D + ["quatint"] = "⨖", -- U+02A16 + ["quest"] = "?", -- U+0003F + ["questeq"] = "≟", -- U+0225F + ["quot"] = "\"", -- U+00022 + ["rAarr"] = "⇛", -- U+021DB + ["rArr"] = "⇒", -- U+021D2 + ["rAtail"] = "⤜", -- U+0291C + ["rBarr"] = "⤏", -- U+0290F + ["rHar"] = "⥤", -- U+02964 + ["race"] = "∽̱", -- U+0223D 00331 + ["racute"] = "ŕ", -- U+00155 + ["radic"] = "√", -- U+0221A + ["raemptyv"] = "⦳", -- U+029B3 + ["rang"] = "⟩", -- U+027E9 + ["rangd"] = "⦒", -- U+02992 + ["range"] = "⦥", -- U+029A5 + ["rangle"] = "⟩", -- U+027E9 + ["raquo"] = "»", -- U+000BB + ["rarr"] = "→", -- U+02192 + ["rarrap"] = "⥵", -- U+02975 + ["rarrb"] = "⇥", -- U+021E5 + ["rarrbfs"] = "⤠", -- U+02920 + ["rarrc"] = "⤳", -- U+02933 + ["rarrfs"] = "⤞", -- U+0291E + ["rarrhk"] = "↪", -- U+021AA + ["rarrlp"] = "↬", -- U+021AC + ["rarrpl"] = "⥅", -- U+02945 + ["rarrsim"] = "⥴", -- U+02974 + ["rarrtl"] = "↣", -- U+021A3 + ["rarrw"] = "↝", -- U+0219D + ["ratail"] = "⤚", -- U+0291A + ["ratio"] = "∶", -- U+02236 + ["rationals"] = "ℚ", -- U+0211A + ["rbarr"] = "⤍", -- U+0290D + ["rbbrk"] = "❳", -- U+02773 + ["rbrace"] = "}", -- U+0007D + ["rbrack"] = "]", -- U+0005D + ["rbrke"] = "⦌", -- U+0298C + ["rbrksld"] = "⦎", -- U+0298E + ["rbrkslu"] = "⦐", -- U+02990 + ["rcaron"] = "ř", -- U+00159 + ["rcedil"] = "ŗ", -- U+00157 + ["rceil"] = "⌉", -- U+02309 + ["rcub"] = "}", -- U+0007D + ["rcy"] = "р", -- U+00440 + ["rdca"] = "⤷", -- U+02937 + ["rdldhar"] = "⥩", -- U+02969 + ["rdquo"] = "”", -- U+0201D + ["rdquor"] = "”", -- U+0201D + ["rdsh"] = "↳", -- U+021B3 + ["real"] = "ℜ", -- U+0211C + ["realine"] = "ℛ", -- U+0211B + ["realpart"] = "ℜ", -- U+0211C + ["reals"] = "ℝ", -- U+0211D + ["rect"] = "▭", -- U+025AD + ["reg"] = "®", -- U+000AE + ["rfisht"] = "⥽", -- U+0297D + ["rfloor"] = "⌋", -- U+0230B + ["rfr"] = "𝔯", -- U+1D52F + ["rgr"] = "ρ", -- U+003C1 + ["rhard"] = "⇁", -- U+021C1 + ["rharu"] = "⇀", -- U+021C0 + ["rharul"] = "⥬", -- U+0296C + ["rho"] = "ρ", -- U+003C1 + ["rhov"] = "ϱ", -- U+003F1 + ["rightarrow"] = "→", -- U+02192 + ["rightarrowtail"] = "↣", -- U+021A3 + ["rightharpoondown"] = "⇁", -- U+021C1 + ["rightharpoonup"] = "⇀", -- U+021C0 + ["rightleftarrows"] = "⇄", -- U+021C4 + ["rightleftharpoons"] = "⇌", -- U+021CC + ["rightrightarrows"] = "⇉", -- U+021C9 + ["rightsquigarrow"] = "↝", -- U+0219D + ["rightthreetimes"] = "⋌", -- U+022CC + ["ring"] = "˚", -- U+002DA + ["risingdotseq"] = "≓", -- U+02253 + ["rlarr"] = "⇄", -- U+021C4 + ["rlhar"] = "⇌", -- U+021CC + ["rlm"] = "", -- U+0200F + ["rmoust"] = "⎱", -- U+023B1 + ["rmoustache"] = "⎱", -- U+023B1 + ["rnmid"] = "⫮", -- U+02AEE + ["roang"] = "⟭", -- U+027ED + ["roarr"] = "⇾", -- U+021FE + ["robrk"] = "⟧", -- U+027E7 + ["ropar"] = "⦆", -- U+02986 + ["ropf"] = "𝕣", -- U+1D563 + ["roplus"] = "⨮", -- U+02A2E + ["rotimes"] = "⨵", -- U+02A35 + ["rpar"] = ")", -- U+00029 + ["rpargt"] = "⦔", -- U+02994 + ["rppolint"] = "⨒", -- U+02A12 + ["rrarr"] = "⇉", -- U+021C9 + ["rsaquo"] = "›", -- U+0203A + ["rscr"] = "𝓇", -- U+1D4C7 + ["rsh"] = "↱", -- U+021B1 + ["rsqb"] = "]", -- U+0005D + ["rsquo"] = "’", -- U+02019 + ["rsquor"] = "’", -- U+02019 + ["rthree"] = "⋌", -- U+022CC + ["rtimes"] = "⋊", -- U+022CA + ["rtri"] = "▹", -- U+025B9 + ["rtrie"] = "⊵", -- U+022B5 + ["rtrif"] = "▸", -- U+025B8 + ["rtriltri"] = "⧎", -- U+029CE + ["ruluhar"] = "⥨", -- U+02968 + ["rx"] = "℞", -- U+0211E + ["sacute"] = "ś", -- U+0015B + ["sbquo"] = "‚", -- U+0201A + ["sc"] = "≻", -- U+0227B + ["scE"] = "⪴", -- U+02AB4 + ["scap"] = "⪸", -- U+02AB8 + ["scaron"] = "š", -- U+00161 + ["sccue"] = "≽", -- U+0227D + ["sce"] = "⪰", -- U+02AB0 + ["scedil"] = "ş", -- U+0015F + ["scirc"] = "ŝ", -- U+0015D + ["scnE"] = "⪶", -- U+02AB6 + ["scnap"] = "⪺", -- U+02ABA + ["scnsim"] = "⋩", -- U+022E9 + ["scpolint"] = "⨓", -- U+02A13 + ["scsim"] = "≿", -- U+0227F + ["scy"] = "с", -- U+00441 + ["sdot"] = "⋅", -- U+022C5 + ["sdotb"] = "⊡", -- U+022A1 + ["sdote"] = "⩦", -- U+02A66 + ["seArr"] = "⇘", -- U+021D8 + ["searhk"] = "⤥", -- U+02925 + ["searr"] = "↘", -- U+02198 + ["searrow"] = "↘", -- U+02198 + ["sect"] = "§", -- U+000A7 + ["semi"] = ";", -- U+0003B + ["seswar"] = "⤩", -- U+02929 + ["setminus"] = "∖", -- U+02216 + ["setmn"] = "∖", -- U+02216 + ["sext"] = "✶", -- U+02736 + ["sfgr"] = "ς", -- U+003C2 + ["sfr"] = "𝔰", -- U+1D530 + ["sfrown"] = "⌢", -- U+02322 + ["sgr"] = "σ", -- U+003C3 + ["sharp"] = "♯", -- U+0266F + ["shchcy"] = "щ", -- U+00449 + ["shcy"] = "ш", -- U+00448 + ["shortmid"] = "∣", -- U+02223 + ["shortparallel"] = "∥", -- U+02225 + ["shy"] = "", -- U+000AD + ["sigma"] = "σ", -- U+003C3 + ["sigmaf"] = "ς", -- U+003C2 + ["sigmav"] = "ς", -- U+003C2 + ["sim"] = "∼", -- U+0223C + ["simdot"] = "⩪", -- U+02A6A + ["sime"] = "≃", -- U+02243 + ["simeq"] = "≃", -- U+02243 + ["simg"] = "⪞", -- U+02A9E + ["simgE"] = "⪠", -- U+02AA0 + ["siml"] = "⪝", -- U+02A9D + ["simlE"] = "⪟", -- U+02A9F + ["simne"] = "≆", -- U+02246 + ["simplus"] = "⨤", -- U+02A24 + ["simrarr"] = "⥲", -- U+02972 + ["slarr"] = "←", -- U+02190 + ["smallsetminus"] = "∖", -- U+02216 + ["smashp"] = "⨳", -- U+02A33 + ["smeparsl"] = "⧤", -- U+029E4 + ["smid"] = "∣", -- U+02223 + ["smile"] = "⌣", -- U+02323 + ["smt"] = "⪪", -- U+02AAA + ["smte"] = "⪬", -- U+02AAC + ["smtes"] = "⪬︀", -- U+02AAC 0FE00 + ["softcy"] = "ь", -- U+0044C + ["sol"] = "/", -- U+0002F + ["solb"] = "⧄", -- U+029C4 + ["solbar"] = "⌿", -- U+0233F + ["sopf"] = "𝕤", -- U+1D564 + ["spades"] = "♠", -- U+02660 + ["spadesuit"] = "♠", -- U+02660 + ["spar"] = "∥", -- U+02225 + ["sqcap"] = "⊓", -- U+02293 + ["sqcaps"] = "⊓︀", -- U+02293 0FE00 + ["sqcup"] = "⊔", -- U+02294 + ["sqcups"] = "⊔︀", -- U+02294 0FE00 + ["sqsub"] = "⊏", -- U+0228F + ["sqsube"] = "⊑", -- U+02291 + ["sqsubset"] = "⊏", -- U+0228F + ["sqsubseteq"] = "⊑", -- U+02291 + ["sqsup"] = "⊐", -- U+02290 + ["sqsupe"] = "⊒", -- U+02292 + ["sqsupset"] = "⊐", -- U+02290 + ["sqsupseteq"] = "⊒", -- U+02292 + ["squ"] = "□", -- U+025A1 + ["square"] = "□", -- U+025A1 + ["squarf"] = "▪", -- U+025AA + ["squf"] = "▪", -- U+025AA + ["srarr"] = "→", -- U+02192 + ["sscr"] = "𝓈", -- U+1D4C8 + ["ssetmn"] = "∖", -- U+02216 + ["ssmile"] = "⌣", -- U+02323 + ["sstarf"] = "⋆", -- U+022C6 + ["star"] = "☆", -- U+02606 + ["starf"] = "★", -- U+02605 + ["straightepsilon"] = "ϵ", -- U+003F5 + ["straightphi"] = "ϕ", -- U+003D5 + ["strns"] = "¯", -- U+000AF + ["sub"] = "⊂", -- U+02282 + ["subE"] = "⫅", -- U+02AC5 + ["subdot"] = "⪽", -- U+02ABD + ["sube"] = "⊆", -- U+02286 + ["subedot"] = "⫃", -- U+02AC3 + ["submult"] = "⫁", -- U+02AC1 + ["subnE"] = "⫋", -- U+02ACB + ["subne"] = "⊊", -- U+0228A + ["subplus"] = "⪿", -- U+02ABF + ["subrarr"] = "⥹", -- U+02979 + ["subset"] = "⊂", -- U+02282 + ["subseteq"] = "⊆", -- U+02286 + ["subseteqq"] = "⫅", -- U+02AC5 + ["subsetneq"] = "⊊", -- U+0228A + ["subsetneqq"] = "⫋", -- U+02ACB + ["subsim"] = "⫇", -- U+02AC7 + ["subsub"] = "⫕", -- U+02AD5 + ["subsup"] = "⫓", -- U+02AD3 + ["succ"] = "≻", -- U+0227B + ["succapprox"] = "⪸", -- U+02AB8 + ["succcurlyeq"] = "≽", -- U+0227D + ["succeq"] = "⪰", -- U+02AB0 + ["succnapprox"] = "⪺", -- U+02ABA + ["succneqq"] = "⪶", -- U+02AB6 + ["succnsim"] = "⋩", -- U+022E9 + ["succsim"] = "≿", -- U+0227F + ["sum"] = "∑", -- U+02211 + ["sung"] = "♪", -- U+0266A + ["sup"] = "⊃", -- U+02283 + ["sup1"] = "¹", -- U+000B9 + ["sup2"] = "²", -- U+000B2 + ["sup3"] = "³", -- U+000B3 + ["supE"] = "⫆", -- U+02AC6 + ["supdot"] = "⪾", -- U+02ABE + ["supdsub"] = "⫘", -- U+02AD8 + ["supe"] = "⊇", -- U+02287 + ["supedot"] = "⫄", -- U+02AC4 + ["suphsol"] = "⟉", -- U+027C9 + ["suphsub"] = "⫗", -- U+02AD7 + ["suplarr"] = "⥻", -- U+0297B + ["supmult"] = "⫂", -- U+02AC2 + ["supnE"] = "⫌", -- U+02ACC + ["supne"] = "⊋", -- U+0228B + ["supplus"] = "⫀", -- U+02AC0 + ["supset"] = "⊃", -- U+02283 + ["supseteq"] = "⊇", -- U+02287 + ["supseteqq"] = "⫆", -- U+02AC6 + ["supsetneq"] = "⊋", -- U+0228B + ["supsetneqq"] = "⫌", -- U+02ACC + ["supsim"] = "⫈", -- U+02AC8 + ["supsub"] = "⫔", -- U+02AD4 + ["supsup"] = "⫖", -- U+02AD6 + ["swArr"] = "⇙", -- U+021D9 + ["swarhk"] = "⤦", -- U+02926 + ["swarr"] = "↙", -- U+02199 + ["swarrow"] = "↙", -- U+02199 + ["swnwar"] = "⤪", -- U+0292A + ["szlig"] = "ß", -- U+000DF + ["target"] = "⌖", -- U+02316 + ["tau"] = "τ", -- U+003C4 + ["tbrk"] = "⎴", -- U+023B4 + ["tcaron"] = "ť", -- U+00165 + ["tcedil"] = "ţ", -- U+00163 + ["tcy"] = "т", -- U+00442 + ["tdot"] = "⃛", -- U+020DB + ["telrec"] = "⌕", -- U+02315 + ["tfr"] = "𝔱", -- U+1D531 + ["tgr"] = "τ", -- U+003C4 + ["there4"] = "∴", -- U+02234 + ["therefore"] = "∴", -- U+02234 + ["theta"] = "θ", -- U+003B8 + ["thetasym"] = "ϑ", -- U+003D1 + ["thetav"] = "ϑ", -- U+003D1 + ["thgr"] = "θ", -- U+003B8 + ["thickapprox"] = "≈", -- U+02248 + ["thicksim"] = "∼", -- U+0223C + ["thinsp"] = " ", -- U+02009 + ["thkap"] = "≈", -- U+02248 + ["thksim"] = "∼", -- U+0223C + ["thorn"] = "þ", -- U+000FE + ["tilde"] = "˜", -- U+002DC + ["times"] = "×", -- U+000D7 + ["timesb"] = "⊠", -- U+022A0 + ["timesbar"] = "⨱", -- U+02A31 + ["timesd"] = "⨰", -- U+02A30 + ["tint"] = "∭", -- U+0222D + ["toea"] = "⤨", -- U+02928 + ["top"] = "⊤", -- U+022A4 + ["topbot"] = "⌶", -- U+02336 + ["topcir"] = "⫱", -- U+02AF1 + ["topf"] = "𝕥", -- U+1D565 + ["topfork"] = "⫚", -- U+02ADA + ["tosa"] = "⤩", -- U+02929 + ["tprime"] = "‴", -- U+02034 + ["trade"] = "™", -- U+02122 + ["triangle"] = "▵", -- U+025B5 + ["triangledown"] = "▿", -- U+025BF + ["triangleleft"] = "◃", -- U+025C3 + ["trianglelefteq"] = "⊴", -- U+022B4 + ["triangleq"] = "≜", -- U+0225C + ["triangleright"] = "▹", -- U+025B9 + ["trianglerighteq"] = "⊵", -- U+022B5 + ["tridot"] = "◬", -- U+025EC + ["trie"] = "≜", -- U+0225C + ["triminus"] = "⨺", -- U+02A3A + ["triplus"] = "⨹", -- U+02A39 + ["trisb"] = "⧍", -- U+029CD + ["tritime"] = "⨻", -- U+02A3B + ["trpezium"] = "⏢", -- U+023E2 + ["tscr"] = "𝓉", -- U+1D4C9 + ["tscy"] = "ц", -- U+00446 + ["tshcy"] = "ћ", -- U+0045B + ["tstrok"] = "ŧ", -- U+00167 + ["twixt"] = "≬", -- U+0226C + ["twoheadleftarrow"] = "↞", -- U+0219E + ["twoheadrightarrow"] = "↠", -- U+021A0 + ["uArr"] = "⇑", -- U+021D1 + ["uHar"] = "⥣", -- U+02963 + ["uacgr"] = "ύ", -- U+003CD + ["uacute"] = "ú", -- U+000FA + ["uarr"] = "↑", -- U+02191 + ["ubrcy"] = "ў", -- U+0045E + ["ubreve"] = "ŭ", -- U+0016D + ["ucirc"] = "û", -- U+000FB + ["ucy"] = "у", -- U+00443 + ["udarr"] = "⇅", -- U+021C5 + ["udblac"] = "ű", -- U+00171 + ["udhar"] = "⥮", -- U+0296E + ["udiagr"] = "ΰ", -- U+003B0 + ["udigr"] = "ϋ", -- U+003CB + ["ufisht"] = "⥾", -- U+0297E + ["ufr"] = "𝔲", -- U+1D532 + ["ugr"] = "υ", -- U+003C5 + ["ugrave"] = "ù", -- U+000F9 + ["uharl"] = "↿", -- U+021BF + ["uharr"] = "↾", -- U+021BE + ["uhblk"] = "▀", -- U+02580 + ["ulcorn"] = "⌜", -- U+0231C + ["ulcorner"] = "⌜", -- U+0231C + ["ulcrop"] = "⌏", -- U+0230F + ["ultri"] = "◸", -- U+025F8 + ["umacr"] = "ū", -- U+0016B + ["uml"] = "¨", -- U+000A8 + ["uogon"] = "ų", -- U+00173 + ["uopf"] = "𝕦", -- U+1D566 + ["uparrow"] = "↑", -- U+02191 + ["updownarrow"] = "↕", -- U+02195 + ["upharpoonleft"] = "↿", -- U+021BF + ["upharpoonright"] = "↾", -- U+021BE + ["uplus"] = "⊎", -- U+0228E + ["upsi"] = "υ", -- U+003C5 + ["upsih"] = "ϒ", -- U+003D2 + ["upsilon"] = "υ", -- U+003C5 + ["upuparrows"] = "⇈", -- U+021C8 + ["urcorn"] = "⌝", -- U+0231D + ["urcorner"] = "⌝", -- U+0231D + ["urcrop"] = "⌎", -- U+0230E + ["uring"] = "ů", -- U+0016F + ["urtri"] = "◹", -- U+025F9 + ["uscr"] = "𝓊", -- U+1D4CA + ["utdot"] = "⋰", -- U+022F0 + ["utilde"] = "ũ", -- U+00169 + ["utri"] = "▵", -- U+025B5 + ["utrif"] = "▴", -- U+025B4 + ["uuarr"] = "⇈", -- U+021C8 + ["uuml"] = "ü", -- U+000FC + ["uwangle"] = "⦧", -- U+029A7 + ["vArr"] = "⇕", -- U+021D5 + ["vBar"] = "⫨", -- U+02AE8 + ["vBarv"] = "⫩", -- U+02AE9 + ["vDash"] = "⊨", -- U+022A8 + ["vangrt"] = "⦜", -- U+0299C + ["varepsilon"] = "ϵ", -- U+003F5 + ["varkappa"] = "ϰ", -- U+003F0 + ["varnothing"] = "∅", -- U+02205 + ["varphi"] = "ϕ", -- U+003D5 + ["varpi"] = "ϖ", -- U+003D6 + ["varpropto"] = "∝", -- U+0221D + ["varr"] = "↕", -- U+02195 + ["varrho"] = "ϱ", -- U+003F1 + ["varsigma"] = "ς", -- U+003C2 + ["varsubsetneq"] = "⊊︀", -- U+0228A 0FE00 + ["varsubsetneqq"] = "⫋︀", -- U+02ACB 0FE00 + ["varsupsetneq"] = "⊋︀", -- U+0228B 0FE00 + ["varsupsetneqq"] = "⫌︀", -- U+02ACC 0FE00 + ["vartheta"] = "ϑ", -- U+003D1 + ["vartriangleleft"] = "⊲", -- U+022B2 + ["vartriangleright"] = "⊳", -- U+022B3 + ["vcy"] = "в", -- U+00432 + ["vdash"] = "⊢", -- U+022A2 + ["vee"] = "∨", -- U+02228 + ["veebar"] = "⊻", -- U+022BB + ["veeeq"] = "≚", -- U+0225A + ["vellip"] = "⋮", -- U+022EE + ["verbar"] = "|", -- U+0007C + ["vert"] = "|", -- U+0007C + ["vfr"] = "𝔳", -- U+1D533 + ["vltri"] = "⊲", -- U+022B2 + ["vnsub"] = "⊂⃒", -- U+02282 020D2 + ["vnsup"] = "⊃⃒", -- U+02283 020D2 + ["vopf"] = "𝕧", -- U+1D567 + ["vprop"] = "∝", -- U+0221D + ["vrtri"] = "⊳", -- U+022B3 + ["vscr"] = "𝓋", -- U+1D4CB + ["vsubnE"] = "⫋︀", -- U+02ACB 0FE00 + ["vsubne"] = "⊊︀", -- U+0228A 0FE00 + ["vsupnE"] = "⫌︀", -- U+02ACC 0FE00 + ["vsupne"] = "⊋︀", -- U+0228B 0FE00 + ["vzigzag"] = "⦚", -- U+0299A + ["wcirc"] = "ŵ", -- U+00175 + ["wedbar"] = "⩟", -- U+02A5F + ["wedge"] = "∧", -- U+02227 + ["wedgeq"] = "≙", -- U+02259 + ["weierp"] = "℘", -- U+02118 + ["wfr"] = "𝔴", -- U+1D534 + ["wopf"] = "𝕨", -- U+1D568 + ["wp"] = "℘", -- U+02118 + ["wr"] = "≀", -- U+02240 + ["wreath"] = "≀", -- U+02240 + ["wscr"] = "𝓌", -- U+1D4CC + ["xcap"] = "⋂", -- U+022C2 + ["xcirc"] = "◯", -- U+025EF + ["xcup"] = "⋃", -- U+022C3 + ["xdtri"] = "▽", -- U+025BD + ["xfr"] = "𝔵", -- U+1D535 + ["xgr"] = "ξ", -- U+003BE + ["xhArr"] = "⟺", -- U+027FA + ["xharr"] = "⟷", -- U+027F7 + ["xi"] = "ξ", -- U+003BE + ["xlArr"] = "⟸", -- U+027F8 + ["xlarr"] = "⟵", -- U+027F5 + ["xmap"] = "⟼", -- U+027FC + ["xnis"] = "⋻", -- U+022FB + ["xodot"] = "⨀", -- U+02A00 + ["xopf"] = "𝕩", -- U+1D569 + ["xoplus"] = "⨁", -- U+02A01 + ["xotime"] = "⨂", -- U+02A02 + ["xrArr"] = "⟹", -- U+027F9 + ["xrarr"] = "⟶", -- U+027F6 + ["xscr"] = "𝓍", -- U+1D4CD + ["xsqcup"] = "⨆", -- U+02A06 + ["xuplus"] = "⨄", -- U+02A04 + ["xutri"] = "△", -- U+025B3 + ["xvee"] = "⋁", -- U+022C1 + ["xwedge"] = "⋀", -- U+022C0 + ["yacute"] = "ý", -- U+000FD + ["yacy"] = "я", -- U+0044F + ["ycirc"] = "ŷ", -- U+00177 + ["ycy"] = "ы", -- U+0044B + ["yen"] = "¥", -- U+000A5 + ["yfr"] = "𝔶", -- U+1D536 + ["yicy"] = "ї", -- U+00457 + ["yopf"] = "𝕪", -- U+1D56A + ["yscr"] = "𝓎", -- U+1D4CE + ["yucy"] = "ю", -- U+0044E + ["yuml"] = "ÿ", -- U+000FF + ["zacute"] = "ź", -- U+0017A + ["zcaron"] = "ž", -- U+0017E + ["zcy"] = "з", -- U+00437 + ["zdot"] = "ż", -- U+0017C + ["zeetrf"] = "ℨ", -- U+02128 + ["zeta"] = "ζ", -- U+003B6 + ["zfr"] = "𝔷", -- U+1D537 + ["zgr"] = "ζ", -- U+003B6 + ["zhcy"] = "ж", -- U+00436 + ["zigrarr"] = "⇝", -- U+021DD + ["zopf"] = "𝕫", -- U+1D56B + ["zscr"] = "𝓏", -- U+1D4CF + ["zwj"] = "", -- U+0200D + ["zwnj"] = "", -- U+0200C +} + +characters = characters or { } +characters.entities = entities + +entities.plusminus = "±" -- 0x000B1 +entities.minusplus = "∓" -- 0x02213 +entities.cdots = utf.char(0x02026) -- U+02026 + diff --git a/tex/context/base/char-ini.lua b/tex/context/base/char-ini.lua index 89f8336f8..930ca8eb2 100644 --- a/tex/context/base/char-ini.lua +++ b/tex/context/base/char-ini.lua @@ -8,6 +8,8 @@ if not modules then modules = { } end modules ['char-ini'] = { -- todo: make two files, one for format generation, one for format use +-- we can remove the tag range starting at 0xE0000 (special applications) + local tex = tex local utf = unicode.utf8 @@ -29,7 +31,7 @@ local ctxcatcodes = tex.ctxcatcodes local texcatcodes = tex.texcatcodes local setmetatableindex = table.setmetatableindex -local trace_defining = false trackers.register("characters.defining", function(v) characters_defining = v end) +local trace_defining = false trackers.register("characters.defining", function(v) characters_defining = v end) local report_defining = logs.reporter("characters") @@ -499,6 +501,14 @@ function tex.uprint(c,n) end end +local temphack = table.tohash { + 0x00A0, + 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x200B, + 0x202F, + 0x205F, + -- 0xFEFF, +} + function characters.define(tobelettered, tobeactivated) -- catcodetables if trace_defining then @@ -528,9 +538,11 @@ function characters.define(tobelettered, tobeactivated) -- catcodetables texprint(ctxcatcodes,format("\\def\\%s{%s}",contextname,utfchar(u))) end elseif is_command[category] then +if not temphack[u] then texsprint("{\\catcode",u,"=13\\unexpanded\\gdef ",utfchar(u),"{\\"..contextname,"}}") -- no texprint a = a + 1 activated[a] = u +end end end end @@ -564,7 +576,9 @@ function characters.define(tobelettered, tobeactivated) -- catcodetables if tobeactivated and nofactivated > 0 then for i=1,nofactivated do local u = activated[i] - report_defining("character 0x%05X is active in sets %s (%s)",u,concat(tobeactivated,","),data[u].description) + if u then + report_defining("character 0x%05X is active in sets %s (%s)",u,concat(tobeactivated,","),data[u].description) + end end local saved = tex.catcodetable for i=1,#tobeactivated do @@ -574,7 +588,10 @@ function characters.define(tobelettered, tobeactivated) -- catcodetables end tex.catcodetable = vector for i=1,nofactivated do - texsetcatcode(activated[i],13) + local u = activated[i] + if u then + texsetcatcode(u,13) + end end end tex.catcodetable = saved diff --git a/tex/context/base/char-ini.mkiv b/tex/context/base/char-ini.mkiv index 68bc3b497..22c233dac 100644 --- a/tex/context/base/char-ini.mkiv +++ b/tex/context/base/char-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/char-utf.lua b/tex/context/base/char-utf.lua index 30124a6a2..43591dd76 100644 --- a/tex/context/base/char-utf.lua +++ b/tex/context/base/char-utf.lua @@ -27,6 +27,7 @@ local allocate = utilities.storage.allocate local charfromnumber = characters.fromnumber -- todo: trackers +-- graphemes: basic symbols characters = characters or { } local characters = characters diff --git a/tex/context/base/char-utf.mkiv b/tex/context/base/char-utf.mkiv index 261735656..280e7ef6d 100644 --- a/tex/context/base/char-utf.mkiv +++ b/tex/context/base/char-utf.mkiv @@ -5,7 +5,7 @@ %D subtitle=Unicode UTF, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/chem-ini.mkiv b/tex/context/base/chem-ini.mkiv index c64575181..c0a1d021e 100644 --- a/tex/context/base/chem-ini.mkiv +++ b/tex/context/base/chem-ini.mkiv @@ -4,7 +4,7 @@ %D subtitle=Chemistry, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/chem-str.mkiv b/tex/context/base/chem-str.mkiv index 6430830f7..0f8044119 100644 --- a/tex/context/base/chem-str.mkiv +++ b/tex/context/base/chem-str.mkiv @@ -4,7 +4,7 @@ %D subtitle=Chemistry, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/cldf-com.lua b/tex/context/base/cldf-com.lua index e966b167b..08116974f 100644 --- a/tex/context/base/cldf-com.lua +++ b/tex/context/base/cldf-com.lua @@ -8,6 +8,7 @@ if not modules then modules = { } end modules ['cldf-com'] = { local tostring, type = tostring, type local format = string.format +local utfchar = utf.char local context = context local generics = context.generics @@ -40,7 +41,7 @@ function context.tabulaterowtyp (...) tabulaterow("typ", ...) end -- these will move up, just after cld definitions -function context.char(k) -- todo: if catcode == letter or other then just the utf +function context.char(k) -- used as escape too, so don't change to utf if type(k) == "table" then for i=1,#k do context(format([[\char%s\relax]],k[i])) diff --git a/tex/context/base/cldf-com.mkiv b/tex/context/base/cldf-com.mkiv index 43071a580..491909888 100644 --- a/tex/context/base/cldf-com.mkiv +++ b/tex/context/base/cldf-com.mkiv @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/cldf-ini.lua b/tex/context/base/cldf-ini.lua index 8edc05023..a7f7ce332 100644 --- a/tex/context/base/cldf-ini.lua +++ b/tex/context/base/cldf-ini.lua @@ -270,13 +270,13 @@ local function writer(parent,command,first,...) if v == "" then flush(currentcatcodes,",",k,'=') else - flush(currentcatcodes,",",k,'=',v) + flush(currentcatcodes,",",k,"={",v,"}") end else if v == "" then - flush(currentcatcodes,"[",k,'=') + flush(currentcatcodes,"[",k,"=") else - flush(currentcatcodes,"[",k,'=',v) + flush(currentcatcodes,"[",k,"={",v,"}") end done = true end diff --git a/tex/context/base/cldf-ini.mkiv b/tex/context/base/cldf-ini.mkiv index 8aef17f93..1b6786013 100644 --- a/tex/context/base/cldf-ini.mkiv +++ b/tex/context/base/cldf-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/cldf-int.mkiv b/tex/context/base/cldf-int.mkiv index cedac8fc0..e20ca54de 100644 --- a/tex/context/base/cldf-int.mkiv +++ b/tex/context/base/cldf-int.mkiv @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/cldf-ver.mkiv b/tex/context/base/cldf-ver.mkiv index f85b28a0c..4dcefc437 100644 --- a/tex/context/base/cldf-ver.mkiv +++ b/tex/context/base/cldf-ver.mkiv @@ -5,7 +5,7 @@ %D subtitle=Verbatim, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/colo-ema.mkii b/tex/context/base/colo-ema.mkii index e5e90b235..11d76f342 100644 --- a/tex/context/base/colo-ema.mkii +++ b/tex/context/base/colo-ema.mkii @@ -5,7 +5,7 @@ %D subtitle=Emacs Colors, %D author=Peter Rolf, %D date=\currentdate, -%D copyright=PRAGMA ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/colo-ext.mkii b/tex/context/base/colo-ext.mkii index 473c010e0..5b39a8e85 100644 --- a/tex/context/base/colo-ext.mkii +++ b/tex/context/base/colo-ext.mkii @@ -5,7 +5,7 @@ %D subtitle=Extras, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/colo-ext.mkiv b/tex/context/base/colo-ext.mkiv index 771974d4d..688b3d441 100644 --- a/tex/context/base/colo-ext.mkiv +++ b/tex/context/base/colo-ext.mkiv @@ -5,7 +5,7 @@ %D subtitle=Extras, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/colo-hex.mkii b/tex/context/base/colo-hex.mkii index db67f1841..ddf2d4706 100644 --- a/tex/context/base/colo-hex.mkii +++ b/tex/context/base/colo-hex.mkii @@ -5,7 +5,7 @@ %D subtitle=Hex Colors, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/colo-imp-ema.mkiv b/tex/context/base/colo-imp-ema.mkiv index e5e90b235..11d76f342 100644 --- a/tex/context/base/colo-imp-ema.mkiv +++ b/tex/context/base/colo-imp-ema.mkiv @@ -5,7 +5,7 @@ %D subtitle=Emacs Colors, %D author=Peter Rolf, %D date=\currentdate, -%D copyright=PRAGMA ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/colo-imp-rgb.mkiv b/tex/context/base/colo-imp-rgb.mkiv index 038e0ab0b..f734c7a01 100644 --- a/tex/context/base/colo-imp-rgb.mkiv +++ b/tex/context/base/colo-imp-rgb.mkiv @@ -5,7 +5,7 @@ %D subtitle=RGB, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/colo-imp-xwi.mkiv b/tex/context/base/colo-imp-xwi.mkiv index 81e09d871..557e9c57c 100644 --- a/tex/context/base/colo-imp-xwi.mkiv +++ b/tex/context/base/colo-imp-xwi.mkiv @@ -5,7 +5,7 @@ %D subtitle=X Windows, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/colo-ini.mkii b/tex/context/base/colo-ini.mkii index 484a085fe..c81cec43c 100644 --- a/tex/context/base/colo-ini.mkii +++ b/tex/context/base/colo-ini.mkii @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/colo-ini.mkiv b/tex/context/base/colo-ini.mkiv index 45fe14633..1ba6026ce 100644 --- a/tex/context/base/colo-ini.mkiv +++ b/tex/context/base/colo-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/colo-rgb.mkii b/tex/context/base/colo-rgb.mkii index 038e0ab0b..f734c7a01 100644 --- a/tex/context/base/colo-rgb.mkii +++ b/tex/context/base/colo-rgb.mkii @@ -5,7 +5,7 @@ %D subtitle=RGB, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/colo-run.mkii b/tex/context/base/colo-run.mkii index d94ea9801..02da462d3 100644 --- a/tex/context/base/colo-run.mkii +++ b/tex/context/base/colo-run.mkii @@ -5,7 +5,7 @@ %D subtitle=Runtime loaded commands, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/colo-run.mkiv b/tex/context/base/colo-run.mkiv index d94ea9801..02da462d3 100644 --- a/tex/context/base/colo-run.mkiv +++ b/tex/context/base/colo-run.mkiv @@ -5,7 +5,7 @@ %D subtitle=Runtime loaded commands, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/colo-xwi.mkii b/tex/context/base/colo-xwi.mkii index 81e09d871..557e9c57c 100644 --- a/tex/context/base/colo-xwi.mkii +++ b/tex/context/base/colo-xwi.mkii @@ -5,7 +5,7 @@ %D subtitle=X Windows, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/cont-cs.mkii b/tex/context/base/cont-cs.mkii index 714bf9568..89b781c37 100644 --- a/tex/context/base/cont-cs.mkii +++ b/tex/context/base/cont-cs.mkii @@ -5,7 +5,7 @@ %D subtitle=\CONTEXT\ Czech Format Generation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/cont-cs.mkiv b/tex/context/base/cont-cs.mkiv index e1805b1c9..75e30fe69 100644 --- a/tex/context/base/cont-cs.mkiv +++ b/tex/context/base/cont-cs.mkiv @@ -5,7 +5,7 @@ %D subtitle=\CONTEXT\ Czech Format Generation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/cont-de.mkii b/tex/context/base/cont-de.mkii index a110f67d2..5badc59d0 100644 --- a/tex/context/base/cont-de.mkii +++ b/tex/context/base/cont-de.mkii @@ -5,7 +5,7 @@ %D subtitle=\CONTEXT\ German Format Generation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/cont-de.mkiv b/tex/context/base/cont-de.mkiv index 1f4179781..998f76466 100644 --- a/tex/context/base/cont-de.mkiv +++ b/tex/context/base/cont-de.mkiv @@ -5,7 +5,7 @@ %D subtitle=\CONTEXT\ German Format Generation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/cont-en.mkii b/tex/context/base/cont-en.mkii index c3d510f98..9d0d4de2e 100644 --- a/tex/context/base/cont-en.mkii +++ b/tex/context/base/cont-en.mkii @@ -5,7 +5,7 @@ %D subtitle=\CONTEXT\ English Format Generation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/cont-en.mkiv b/tex/context/base/cont-en.mkiv index 1bf182cd8..f25ab69cb 100644 --- a/tex/context/base/cont-en.mkiv +++ b/tex/context/base/cont-en.mkiv @@ -5,7 +5,7 @@ %D subtitle=\CONTEXT\ English Format Generation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/cont-err.mkii b/tex/context/base/cont-err.mkii index f01ce87aa..00118f6cc 100644 --- a/tex/context/base/cont-err.mkii +++ b/tex/context/base/cont-err.mkii @@ -5,7 +5,7 @@ %D subtitle=Just A warning, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/cont-fil.mkii b/tex/context/base/cont-fil.mkii index b295872ca..a6276a482 100644 --- a/tex/context/base/cont-fil.mkii +++ b/tex/context/base/cont-fil.mkii @@ -5,7 +5,7 @@ %D subtitle=File Synonyms, %D author=J. Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/cont-fil.mkiv b/tex/context/base/cont-fil.mkiv index 2468f2998..b6d716237 100644 --- a/tex/context/base/cont-fil.mkiv +++ b/tex/context/base/cont-fil.mkiv @@ -5,7 +5,7 @@ %D subtitle=File Synonyms, %D author=J. Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/cont-fr.mkii b/tex/context/base/cont-fr.mkii index 6f1e806ad..e70cfe65e 100644 --- a/tex/context/base/cont-fr.mkii +++ b/tex/context/base/cont-fr.mkii @@ -5,7 +5,7 @@ %D subtitle=\CONTEXT\ French Format Generation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/cont-fr.mkiv b/tex/context/base/cont-fr.mkiv index 5b0946625..f45ec88c3 100644 --- a/tex/context/base/cont-fr.mkiv +++ b/tex/context/base/cont-fr.mkiv @@ -5,7 +5,7 @@ %D subtitle=\CONTEXT\ French Format Generation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/cont-gb.mkii b/tex/context/base/cont-gb.mkii index 35b7c85a4..5cd0a9635 100644 --- a/tex/context/base/cont-gb.mkii +++ b/tex/context/base/cont-gb.mkii @@ -5,7 +5,7 @@ %D subtitle=\CONTEXT\ English Format Generation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/cont-gb.mkiv b/tex/context/base/cont-gb.mkiv index 3a4ed609b..f6dd4ba9e 100644 --- a/tex/context/base/cont-gb.mkiv +++ b/tex/context/base/cont-gb.mkiv @@ -5,7 +5,7 @@ %D subtitle=\CONTEXT\ English Format Generation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/cont-it.mkii b/tex/context/base/cont-it.mkii index c594a0659..f15171403 100644 --- a/tex/context/base/cont-it.mkii +++ b/tex/context/base/cont-it.mkii @@ -5,7 +5,7 @@ %D subtitle=\CONTEXT\ Italian Format Generation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/cont-it.mkiv b/tex/context/base/cont-it.mkiv index af7a1149e..483eb8589 100644 --- a/tex/context/base/cont-it.mkiv +++ b/tex/context/base/cont-it.mkiv @@ -5,7 +5,7 @@ %D subtitle=\CONTEXT\ Italian Format Generation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/cont-log.mkii b/tex/context/base/cont-log.mkii index c89a2dd8f..6a7a70795 100644 --- a/tex/context/base/cont-log.mkii +++ b/tex/context/base/cont-log.mkii @@ -5,7 +5,7 @@ %D subtitle=\TEX\ Logos, %D author=J. Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/cont-log.mkiv b/tex/context/base/cont-log.mkiv index 171949ba0..3f2f34bc8 100644 --- a/tex/context/base/cont-log.mkiv +++ b/tex/context/base/cont-log.mkiv @@ -5,7 +5,7 @@ %D subtitle=\TEX\ Logos, %D author=J. Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/cont-new.mkii b/tex/context/base/cont-new.mkii index a147f13e5..839324aff 100644 --- a/tex/context/base/cont-new.mkii +++ b/tex/context/base/cont-new.mkii @@ -5,13 +5,13 @@ %D subtitle=New Macros, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2011.05.18 22:26} +\newcontextversion{2011.06.08 19:06} %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/cont-new.mkiv b/tex/context/base/cont-new.mkiv index 3de057567..2b07231c8 100644 --- a/tex/context/base/cont-new.mkiv +++ b/tex/context/base/cont-new.mkiv @@ -5,13 +5,13 @@ %D subtitle=New Macros, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2011.05.18 22:26} +\newcontextversion{2011.06.08 19:06} %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/cont-nl.mkii b/tex/context/base/cont-nl.mkii index 925ec8999..f9cefaaac 100644 --- a/tex/context/base/cont-nl.mkii +++ b/tex/context/base/cont-nl.mkii @@ -5,7 +5,7 @@ %D subtitle=\CONTEXT\ Dutch Format Generation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/cont-nl.mkiv b/tex/context/base/cont-nl.mkiv index f6d2671e3..890ad8ca5 100644 --- a/tex/context/base/cont-nl.mkiv +++ b/tex/context/base/cont-nl.mkiv @@ -5,7 +5,7 @@ %D subtitle=\CONTEXT\ Dutch Format Generation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/cont-pe.mkiv b/tex/context/base/cont-pe.mkiv index e65ad1328..4f7efe959 100644 --- a/tex/context/base/cont-pe.mkiv +++ b/tex/context/base/cont-pe.mkiv @@ -5,7 +5,7 @@ %D subtitle=\CONTEXT\ English Format Generation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/cont-ro.mkii b/tex/context/base/cont-ro.mkii index 595613194..d68cf5a45 100644 --- a/tex/context/base/cont-ro.mkii +++ b/tex/context/base/cont-ro.mkii @@ -5,7 +5,7 @@ %D subtitle=\CONTEXT\ Romanian Format Generation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/cont-ro.mkiv b/tex/context/base/cont-ro.mkiv index 90bbc27dc..ac6f159f5 100644 --- a/tex/context/base/cont-ro.mkiv +++ b/tex/context/base/cont-ro.mkiv @@ -5,7 +5,7 @@ %D subtitle=\CONTEXT\ Romanian Format Generation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/context.mkii b/tex/context/base/context.mkii index 1613819a6..884a21051 100644 --- a/tex/context/base/context.mkii +++ b/tex/context/base/context.mkii @@ -5,7 +5,7 @@ %D subtitle=\CONTEXT\ Format Generation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -20,7 +20,7 @@ %D your styles an modules. \edef\contextformat {\jobname} -\edef\contextversion{2011.05.18 22:26} +\edef\contextversion{2011.06.08 19:06} %D For those who want to use this: diff --git a/tex/context/base/context.mkiv b/tex/context/base/context.mkiv index 74ea5ff80..78601ae7c 100644 --- a/tex/context/base/context.mkiv +++ b/tex/context/base/context.mkiv @@ -5,7 +5,7 @@ %D subtitle=\CONTEXT\ Format Generation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -20,7 +20,7 @@ %D your styles an modules. \edef\contextformat {\jobname} -\edef\contextversion{2011.05.18 22:26} +\edef\contextversion{2011.06.08 19:06} %D For those who want to use this: @@ -54,8 +54,8 @@ %D We just quit if new functionality is expected. -\ifnum\luatexversion<60 % also change message - \writestatus{!!!!}{Your luatex binary is too old, you need at least version 0.60!} +\ifnum\luatexversion<70 % also change message + \writestatus{!!!!}{Your luatex binary is too old, you need at least version 0.70!} \expandafter\end \fi @@ -303,6 +303,8 @@ \loadmarkfile{font-col} \loadmarkfile{font-gds} +\loadmarkfile{spac-chr} % depends on fonts + \loadmarkfile{blob-ini} % not to be used, we only use a helper \loadmarkfile{typo-cln} @@ -330,6 +332,8 @@ \loadmarkfile{meta-fun} \loadmarkfile{meta-pag} +\loadmarkfile{page-mrk} % depends on mp + \loadmarkfile{page-flw} \loadmarkfile{page-spr} \loadmarkfile{page-plg} @@ -351,7 +355,7 @@ \loadmarkfile{math-del} \loadmarkfile{math-inl} \loadmarkfile{math-dis} -\loadmarkfile{math-lan} +%loadmarkfile{math-lan} \loadmarkfile{strc-mat} diff --git a/tex/context/base/core-con.mkii b/tex/context/base/core-con.mkii index c39bdd9d4..46fbe9b9e 100644 --- a/tex/context/base/core-con.mkii +++ b/tex/context/base/core-con.mkii @@ -5,7 +5,7 @@ %D subtitle=Conversion, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/core-con.mkiv b/tex/context/base/core-con.mkiv index e43e4ecda..c82c9901c 100644 --- a/tex/context/base/core-con.mkiv +++ b/tex/context/base/core-con.mkiv @@ -5,7 +5,7 @@ %D subtitle=Conversion, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/core-ctx.mkii b/tex/context/base/core-ctx.mkii index 93cf8b4be..c693d10db 100644 --- a/tex/context/base/core-ctx.mkii +++ b/tex/context/base/core-ctx.mkii @@ -5,7 +5,7 @@ %D subtitle=Job Control, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/core-ctx.mkiv b/tex/context/base/core-ctx.mkiv index f6e5a33f1..0595d0897 100644 --- a/tex/context/base/core-ctx.mkiv +++ b/tex/context/base/core-ctx.mkiv @@ -5,7 +5,7 @@ %D subtitle=Job Control, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/core-def.mkii b/tex/context/base/core-def.mkii index ff7283356..971e8953d 100644 --- a/tex/context/base/core-def.mkii +++ b/tex/context/base/core-def.mkii @@ -5,7 +5,7 @@ %D subtitle=Defaults, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/core-def.mkiv b/tex/context/base/core-def.mkiv index 59c2c89c1..59fdceb85 100644 --- a/tex/context/base/core-def.mkiv +++ b/tex/context/base/core-def.mkiv @@ -5,7 +5,7 @@ %D subtitle=Defaults, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/core-env.lua b/tex/context/base/core-env.lua index 694b2f07c..737904d23 100644 --- a/tex/context/base/core-env.lua +++ b/tex/context/base/core-env.lua @@ -99,3 +99,39 @@ local pattern = ( function commands.autosetups(str) lpegmatch(pattern,str) end + +-- new (inefficient) + +local lookuptoken = token.lookup + +local dimencode = lookuptoken("scratchdimen" )[1] +local countcode = lookuptoken("scratchcounter")[1] +local tokencode = lookuptoken("scratchtoken" )[1] +local skipcode = lookuptoken("scratchskip" )[1] + +local types = { + [dimencode] = "dimen", + [countcode] = "count", + [tokencode] = "token", + [skipcode ] = "skip", +} + +function tex.isdimen(name) + return lookuptoken(name)[1] == dimencode +end +function tex.iscount(name) + return lookuptoken(name)[1] == countcode +end +function tex.istoken(name) + return lookuptoken(name)[1] == tokencode +end +function tex.isskip(name) + return lookuptoken(name)[1] == skipcode +end + +function tex.type(name) + return types[lookuptoken(name)[1]] or "macro" +end + +-- inspect(tex.isdimen("xxxxxxxxxxxxxxx")) +-- inspect(tex.isdimen("textwidth")) diff --git a/tex/context/base/core-env.mkii b/tex/context/base/core-env.mkii index a22594b27..6058c4c9f 100644 --- a/tex/context/base/core-env.mkii +++ b/tex/context/base/core-env.mkii @@ -5,7 +5,7 @@ %D subtitle=New ones, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/core-env.mkiv b/tex/context/base/core-env.mkiv index 2451b5950..ce2155153 100644 --- a/tex/context/base/core-env.mkiv +++ b/tex/context/base/core-env.mkiv @@ -5,7 +5,7 @@ %D subtitle=New ones, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/core-fil.mkii b/tex/context/base/core-fil.mkii index 0355920c7..6b0d8caf5 100644 --- a/tex/context/base/core-fil.mkii +++ b/tex/context/base/core-fil.mkii @@ -5,7 +5,7 @@ %D subtitle=File Support, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/core-fil.mkiv b/tex/context/base/core-fil.mkiv index 263030a9b..78900215f 100644 --- a/tex/context/base/core-fil.mkiv +++ b/tex/context/base/core-fil.mkiv @@ -5,7 +5,7 @@ %D subtitle=File Support, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/core-fnt.mkii b/tex/context/base/core-fnt.mkii index 9bc2a66f5..542ca062a 100644 --- a/tex/context/base/core-fnt.mkii +++ b/tex/context/base/core-fnt.mkii @@ -5,7 +5,7 @@ %D subtitle=Fonts, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/core-fnt.mkiv b/tex/context/base/core-fnt.mkiv index 90dd93496..1ca8b8426 100644 --- a/tex/context/base/core-fnt.mkiv +++ b/tex/context/base/core-fnt.mkiv @@ -5,7 +5,7 @@ %D subtitle=Fonts, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/core-gen.mkii b/tex/context/base/core-gen.mkii index b6ab2a208..0d7fcebe0 100644 --- a/tex/context/base/core-gen.mkii +++ b/tex/context/base/core-gen.mkii @@ -5,7 +5,7 @@ %D subtitle=General, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/core-gen.mkiv b/tex/context/base/core-gen.mkiv index b6ab2a208..0d7fcebe0 100644 --- a/tex/context/base/core-gen.mkiv +++ b/tex/context/base/core-gen.mkiv @@ -5,7 +5,7 @@ %D subtitle=General, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/core-ini.mkii b/tex/context/base/core-ini.mkii index 69edf9735..04535bec6 100644 --- a/tex/context/base/core-ini.mkii +++ b/tex/context/base/core-ini.mkii @@ -5,7 +5,7 @@ %D subtitle=Additional Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/core-ini.mkiv b/tex/context/base/core-ini.mkiv index c823c9594..cdaa02a21 100644 --- a/tex/context/base/core-ini.mkiv +++ b/tex/context/base/core-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=Additional Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/core-job.mkii b/tex/context/base/core-job.mkii index 2cd22e409..e2dc16031 100644 --- a/tex/context/base/core-job.mkii +++ b/tex/context/base/core-job.mkii @@ -5,7 +5,7 @@ %D subtitle=Job Handling, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/core-job.mkiv b/tex/context/base/core-job.mkiv index db8d3ed93..a413d1d6a 100644 --- a/tex/context/base/core-job.mkiv +++ b/tex/context/base/core-job.mkiv @@ -5,7 +5,7 @@ %D subtitle=Job Handling, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/core-mis.mkii b/tex/context/base/core-mis.mkii index 6d77ef18e..c44d61cbc 100644 --- a/tex/context/base/core-mis.mkii +++ b/tex/context/base/core-mis.mkii @@ -5,7 +5,7 @@ %D subtitle=Miscelaneous, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/core-mis.mkiv b/tex/context/base/core-mis.mkiv index 06ee5b617..bb07f0628 100644 --- a/tex/context/base/core-mis.mkiv +++ b/tex/context/base/core-mis.mkiv @@ -5,7 +5,7 @@ %D subtitle=Miscelaneous, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/core-par.mkii b/tex/context/base/core-par.mkii index 0b283b294..69e2976d1 100644 --- a/tex/context/base/core-par.mkii +++ b/tex/context/base/core-par.mkii @@ -5,7 +5,7 @@ %D subtitle=Paragraph Tricks, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/core-stg.mkii b/tex/context/base/core-stg.mkii index 429e1e894..0d98da851 100644 --- a/tex/context/base/core-stg.mkii +++ b/tex/context/base/core-stg.mkii @@ -5,7 +5,7 @@ %D subtitle=Strategies, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/core-sys.mkii b/tex/context/base/core-sys.mkii index 24975ffb6..54778eeed 100644 --- a/tex/context/base/core-sys.mkii +++ b/tex/context/base/core-sys.mkii @@ -5,7 +5,7 @@ %D subtitle=System, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/core-sys.mkiv b/tex/context/base/core-sys.mkiv index f61cabec3..253ea6ece 100644 --- a/tex/context/base/core-sys.mkiv +++ b/tex/context/base/core-sys.mkiv @@ -5,7 +5,7 @@ %D subtitle=System, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/core-two.mkii b/tex/context/base/core-two.mkii index 0f2e0048c..235be988e 100644 --- a/tex/context/base/core-two.mkii +++ b/tex/context/base/core-two.mkii @@ -5,7 +5,7 @@ %D subtitle=Two Pass Data, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/core-two.mkiv b/tex/context/base/core-two.mkiv index 332b2c89b..adea52f90 100644 --- a/tex/context/base/core-two.mkiv +++ b/tex/context/base/core-two.mkiv @@ -5,7 +5,7 @@ %D subtitle=Two Pass Data, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/core-uti.mkii b/tex/context/base/core-uti.mkii index 5b8f66f50..bd2fa46a0 100644 --- a/tex/context/base/core-uti.mkii +++ b/tex/context/base/core-uti.mkii @@ -5,7 +5,7 @@ %D subtitle=Utility File Handling, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/core-uti.mkiv b/tex/context/base/core-uti.mkiv index 46a1e398a..6153bc847 100644 --- a/tex/context/base/core-uti.mkiv +++ b/tex/context/base/core-uti.mkiv @@ -5,7 +5,7 @@ %D subtitle=Utility File Handling, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/core-var.mkii b/tex/context/base/core-var.mkii index 4de1b8718..55c587fbf 100644 --- a/tex/context/base/core-var.mkii +++ b/tex/context/base/core-var.mkii @@ -5,7 +5,7 @@ %D subtitle=Variables, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/core-var.mkiv b/tex/context/base/core-var.mkiv index 45a593ee7..30ec91616 100644 --- a/tex/context/base/core-var.mkiv +++ b/tex/context/base/core-var.mkiv @@ -5,7 +5,7 @@ %D subtitle=Variables, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/data-res.lua b/tex/context/base/data-res.lua index 842eed169..695534377 100644 --- a/tex/context/base/data-res.lua +++ b/tex/context/base/data-res.lua @@ -55,17 +55,65 @@ resolvers.criticalvars = allocate { "SELFAUTOLOC", "SELFAUTODIR", "SELFAUTOPARE resolvers.luacnfname = 'texmfcnf.lua' resolvers.luacnfstate = "unknown" --- resolvers.luacnfspec = '{$SELFAUTODIR,$SELFAUTOPARENT}{,{/share,}/texmf{-local,}/web2c}' -- what a rubish path -resolvers.luacnfspec = 'selfautoparent:{/texmf{-local,}{,/web2c},}}' +-- The web2c tex binaries as well as kpse have built in paths for the configuration +-- files and there can be a depressing truckload of them. This is actually the weak +-- spot of a distribution. So we don't want: +-- +-- resolvers.luacnfspec = '{$SELFAUTODIR,$SELFAUTOPARENT}{,{/share,}/texmf{-local,}/web2c}' +-- +-- but instead use: +-- +-- resolvers.luacnfspec = 'selfautoparent:{/texmf{-local,}{,/web2c}}' +-- +-- which does not make texlive happy as there is a texmf-local tree one level up +-- (sigh), so we need this. (We can assume web2c as mkiv does not run on older +-- texlives anyway. +-- +-- texlive: +-- +-- selfautodir: +-- selfautoparent: +-- selfautodir:share/texmf-local/web2c +-- selfautodir:share/texmf/web2c +-- selfautodir:texmf-local/web2c +-- selfautodir:texmf/web2c +-- selfautoparent:share/texmf-local/web2c +-- selfautoparent:share/texmf/web2c +-- selfautoparent:texmf-local/web2c +-- selfautoparent:texmf/web2c +-- +-- minimals: +-- +-- home:texmf/web2c +-- selfautoparent:texmf-local/web2c +-- selfautoparent:texmf-context/web2c +-- selfautoparent:texmf/web2c + +if this_is_texlive then + -- resolvers.luacnfspec = '{selfautodir:,selfautoparent:}{,{/share,}/texmf{-local,}/web2c}' + -- resolvers.luacnfspec = '{selfautodir:{/share,}/texmf-local/web2c,selfautoparent:{/share,}/texmf{-local,}/web2c}' + -- resolvers.luacnfspec = 'selfautodir:/texmf-local/web2c;selfautoparent:/texmf{-local,}/web2c' + resolvers.luacnfspec = 'selfautodir:;selfautoparent:;{selfautodir:,selfautoparent:}{/share,}/texmf{-local,}/web2c' +else + resolvers.luacnfspec = 'home:texmf/web2c;selfautoparent:texmf{-local,-context,}/web2c' +end + +-- which (as we want users to use the web2c path) be can be simplified to this: +-- +-- if environment and environment.ownpath and string.find(environment.ownpath,"[\\/]texlive[\\/]") then +-- resolvers.luacnfspec = 'selfautodir:/texmf-local/web2c,selfautoparent:/texmf-local/web2c,selfautoparent:/texmf/web2c' +-- else +-- resolvers.luacnfspec = 'selfautoparent:/texmf-local/web2c,selfautoparent:/texmf/web2c' +-- end --~ -- not yet, some reporters expect strings --~ resolvers.luacnfspec = { ---~ "selfautoparent:/texmf-local", +--~ "selfautoparent:/texmf-local", -- is actually a user mistake --~ "selfautoparent:/texmf-local/web2c", ---~ "selfautoparent:/texmf", +--~ "selfautoparent:/texmf", -- idem --~ "selfautoparent:/texmf/web2c", ---~ "selfautoparent:", +--~ "selfautoparent:", -- idem --~ } local unset_variable = "unset" @@ -259,7 +307,7 @@ local function makepathexpression(str) end end -local function reportcriticalvariables() +local function reportcriticalvariables(cnfspec) if trace_locating then for i=1,#resolvers.criticalvars do local k = resolvers.criticalvars[i] @@ -267,6 +315,14 @@ local function reportcriticalvariables() report_resolving("variable '%s' set to '%s'",k,v) end report_resolving() + if cnfspec then + if type(cnfspec) == "table" then + report_resolving("using configuration specification '%s'",concat(cnfspec,",")) + else + report_resolving("using configuration specification '%s'",cnfspec) + end + end + report_resolving() end reportcriticalvariables = function() end end @@ -281,7 +337,7 @@ local function identify_configuration_files() else resolvers.luacnfstate = "environment" end - reportcriticalvariables() + reportcriticalvariables(cnfspec) local cnfpaths = expandedpathfromlist(resolvers.splitpath(cnfspec)) local luacnfname = resolvers.luacnfname for i=1,#cnfpaths do @@ -317,6 +373,19 @@ local function load_configuration_files() if blob then local setups = instance.setups local data = blob() +local parent = data and data.parent +if parent then + local filename = filejoin(pathname,parent) + local realname = resolvers.resolve(filename) -- no shortcut + local blob = loadfile(realname) + if blob then + local parentdata = blob() + if parentdata then + report_resolving("loading configuration file '%s'",filename) + data = table.merged(parentdata,data) + end + end +end data = data and data.content if data then if trace_locating then diff --git a/tex/context/base/enco-032.mkii b/tex/context/base/enco-032.mkii index d7e15126c..e3c24271e 100644 --- a/tex/context/base/enco-032.mkii +++ b/tex/context/base/enco-032.mkii @@ -5,7 +5,7 @@ %D subtitle=Unicode Goodies, %D author={Taco Hoekwater}, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/enco-037.mkii b/tex/context/base/enco-037.mkii index d9fc653b2..a2aad46a5 100644 --- a/tex/context/base/enco-037.mkii +++ b/tex/context/base/enco-037.mkii @@ -5,7 +5,7 @@ %D subtitle=Encoding for vector 37, %D author=Luigi Scarso, %D date=\currentdate, -%D copyright={PRAGMA}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/enco-acc.mkii b/tex/context/base/enco-acc.mkii index e02536be6..7484fd50e 100644 --- a/tex/context/base/enco-acc.mkii +++ b/tex/context/base/enco-acc.mkii @@ -5,7 +5,7 @@ %D subtitle=Composed Characters Commands, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=Hans Hagen \& Ton Otten] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/enco-ans.mkii b/tex/context/base/enco-ans.mkii index 88baf0ad0..c71b2451a 100644 --- a/tex/context/base/enco-ans.mkii +++ b/tex/context/base/enco-ans.mkii @@ -5,7 +5,7 @@ %D subtitle=\YandY\ texnansi Encoding, %D author={Patrick Gundlach, Hans Hagen}, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/enco-cas.mkii b/tex/context/base/enco-cas.mkii index 38d12f9fa..6ac35eb32 100644 --- a/tex/context/base/enco-cas.mkii +++ b/tex/context/base/enco-cas.mkii @@ -5,7 +5,7 @@ %D subtitle=Named Glyph Case Mapping, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/enco-chi.mkii b/tex/context/base/enco-chi.mkii index 9d77893a0..727720565 100644 --- a/tex/context/base/enco-chi.mkii +++ b/tex/context/base/enco-chi.mkii @@ -5,7 +5,7 @@ %D subtitle=Traditional and Simplified Chinese, %D author={Wang Lei \& Hans Hagen}, %D date=\currentdate, -%D copyright=Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/enco-com.mkii b/tex/context/base/enco-com.mkii index 42d0d4774..620ac0c96 100644 --- a/tex/context/base/enco-com.mkii +++ b/tex/context/base/enco-com.mkii @@ -5,7 +5,7 @@ %D subtitle=Composed Characters Commands, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=Hans Hagen \& Ton Otten] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/enco-cyr.mkii b/tex/context/base/enco-cyr.mkii index 36bca82b5..aa412d8d3 100644 --- a/tex/context/base/enco-cyr.mkii +++ b/tex/context/base/enco-cyr.mkii @@ -5,7 +5,7 @@ %D subtitle=Cyrillic, %D author=..., %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/enco-def.mkii b/tex/context/base/enco-def.mkii index 4d8e280cb..20c885d4d 100644 --- a/tex/context/base/enco-def.mkii +++ b/tex/context/base/enco-def.mkii @@ -5,7 +5,7 @@ %D subtitle=Default Character Definitions, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/enco-ec.mkii b/tex/context/base/enco-ec.mkii index f0964897f..918c85e12 100644 --- a/tex/context/base/enco-ec.mkii +++ b/tex/context/base/enco-ec.mkii @@ -5,7 +5,7 @@ %D subtitle=\LATEX\ EC Encoding, %D author={Patrick Gundlach, Hans Hagen, Taco Hoekwater, Mojca Miklavec}, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/enco-ecm.mkii b/tex/context/base/enco-ecm.mkii index b74473960..8a9706574 100644 --- a/tex/context/base/enco-ecm.mkii +++ b/tex/context/base/enco-ecm.mkii @@ -5,7 +5,7 @@ %D subtitle=Glyphs that may not be present in EC, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/enco-el.mkii b/tex/context/base/enco-el.mkii index 24729967b..f268dcb3c 100644 --- a/tex/context/base/enco-el.mkii +++ b/tex/context/base/enco-el.mkii @@ -5,7 +5,7 @@ %D subtitle=EuroLetter, %D author={Several Users}, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/enco-fde.mkii b/tex/context/base/enco-fde.mkii index da104b802..57e572c04 100644 --- a/tex/context/base/enco-fde.mkii +++ b/tex/context/base/enco-fde.mkii @@ -5,7 +5,7 @@ %D subtitle=German Input Filter, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/enco-ffr.mkii b/tex/context/base/enco-ffr.mkii index 259b59949..7e605bb05 100644 --- a/tex/context/base/enco-ffr.mkii +++ b/tex/context/base/enco-ffr.mkii @@ -5,7 +5,7 @@ %D subtitle=French Input Filter, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/enco-fpl.mkii b/tex/context/base/enco-fpl.mkii index 14d102ff1..ddf865698 100644 --- a/tex/context/base/enco-fpl.mkii +++ b/tex/context/base/enco-fpl.mkii @@ -5,7 +5,7 @@ %D subtitle=Polish Input Filter, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/enco-fro.mkii b/tex/context/base/enco-fro.mkii index e5f5e1257..af1272163 100644 --- a/tex/context/base/enco-fro.mkii +++ b/tex/context/base/enco-fro.mkii @@ -5,7 +5,7 @@ %D subtitle=Romanian Input Filter, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/enco-fsl.mkii b/tex/context/base/enco-fsl.mkii index 86a41c88a..8fbca98ca 100644 --- a/tex/context/base/enco-fsl.mkii +++ b/tex/context/base/enco-fsl.mkii @@ -5,7 +5,7 @@ %D subtitle=Slovenian Specialities, %D author={Hans Hagen, Mojka Miklavec}, %D date=\currentdate, -%D copyright=Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/enco-grk.mkii b/tex/context/base/enco-grk.mkii index 882a3c9b0..6264f362e 100644 --- a/tex/context/base/enco-grk.mkii +++ b/tex/context/base/enco-grk.mkii @@ -5,7 +5,7 @@ %D subtitle=Greek, %D author=Apostolos Syropoulos, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/enco-heb.mkii b/tex/context/base/enco-heb.mkii index 443745752..a4ef2cd2c 100644 --- a/tex/context/base/enco-heb.mkii +++ b/tex/context/base/enco-heb.mkii @@ -5,7 +5,7 @@ %D subtitle=Hebrew, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/enco-il2.mkii b/tex/context/base/enco-il2.mkii index 9fb87b2fd..9b08dc897 100644 --- a/tex/context/base/enco-il2.mkii +++ b/tex/context/base/enco-il2.mkii @@ -5,7 +5,7 @@ %D subtitle=Czech and Slovak ISO Latin 2 Encoding, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/enco-ini.mkii b/tex/context/base/enco-ini.mkii index a277e7450..8603f2420 100644 --- a/tex/context/base/enco-ini.mkii +++ b/tex/context/base/enco-ini.mkii @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/enco-ini.mkiv b/tex/context/base/enco-ini.mkiv index 491084b8c..a5dc60f93 100644 --- a/tex/context/base/enco-ini.mkiv +++ b/tex/context/base/enco-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/enco-l7x.mkii b/tex/context/base/enco-l7x.mkii index 776c683c1..2a0d12c9f 100644 --- a/tex/context/base/enco-l7x.mkii +++ b/tex/context/base/enco-l7x.mkii @@ -5,7 +5,7 @@ %D subtitle=\LATEX\ L7x Encoding, %D author={Hans Hagen \& Mojca Miklavec}, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/enco-mis.mkii b/tex/context/base/enco-mis.mkii index 92dc61b3f..28523685e 100644 --- a/tex/context/base/enco-mis.mkii +++ b/tex/context/base/enco-mis.mkii @@ -5,7 +5,7 @@ %D subtitle=Missing Glyphs, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/enco-pdf.mkii b/tex/context/base/enco-pdf.mkii index a03e81df2..28e960673 100644 --- a/tex/context/base/enco-pdf.mkii +++ b/tex/context/base/enco-pdf.mkii @@ -5,7 +5,7 @@ %D subtitle=\YandY\ texnansi Encoding, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/enco-pfr.mkii b/tex/context/base/enco-pfr.mkii index b279e40aa..aca2436c1 100644 --- a/tex/context/base/enco-pfr.mkii +++ b/tex/context/base/enco-pfr.mkii @@ -5,7 +5,7 @@ %D subtitle=PDF Resources, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/enco-pol.mkii b/tex/context/base/enco-pol.mkii index a012f0370..ec49c6e1d 100644 --- a/tex/context/base/enco-pol.mkii +++ b/tex/context/base/enco-pol.mkii @@ -5,7 +5,7 @@ %D subtitle=Polish Mixed Encoding, %D author={Taco Hoekwater \& Hans Hagen}, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/enco-qx.mkii b/tex/context/base/enco-qx.mkii index 798a18249..b184fe0ac 100644 --- a/tex/context/base/enco-qx.mkii +++ b/tex/context/base/enco-qx.mkii @@ -5,7 +5,7 @@ %D subtitle=Polish QX Encoding, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/enco-run.mkii b/tex/context/base/enco-run.mkii index 50fb52e15..2f60a35b8 100644 --- a/tex/context/base/enco-run.mkii +++ b/tex/context/base/enco-run.mkii @@ -5,7 +5,7 @@ %D subtitle=Runtime Macros, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=Hans Hagen \& Ton Otten] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/enco-t5.mkii b/tex/context/base/enco-t5.mkii index a8d80be14..3f51b8585 100644 --- a/tex/context/base/enco-t5.mkii +++ b/tex/context/base/enco-t5.mkii @@ -5,7 +5,7 @@ %D subtitle=New Vietnamese Encoding, %D author=Hans Hagen \& Adam Lindsay, %D date=\currentdate, -%D copyright=PRAGMA \& Adam Lindsay] +%D copyright={Adam Lindsay \& Hans Hagen}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/enco-tbo.mkii b/tex/context/base/enco-tbo.mkii index 475be4602..5733acd32 100644 --- a/tex/context/base/enco-tbo.mkii +++ b/tex/context/base/enco-tbo.mkii @@ -5,7 +5,7 @@ %D subtitle=TeXBaseOne Encoding, %D author={Patrick Gundlach, Hans Hagen}, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/enco-uc.mkii b/tex/context/base/enco-uc.mkii index 981eb6ae4..0be22318a 100644 --- a/tex/context/base/enco-uc.mkii +++ b/tex/context/base/enco-uc.mkii @@ -5,7 +5,7 @@ %D subtitle=Unicode (backwards mapping), %D author={Adam Lindsay \& Hans Hagen}, %D date=\currentdate, -%D copyright=PRAGMA ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/enco-vna.mkii b/tex/context/base/enco-vna.mkii index 05753f37b..42fee4341 100644 --- a/tex/context/base/enco-vna.mkii +++ b/tex/context/base/enco-vna.mkii @@ -5,7 +5,7 @@ %D subtitle=Vietnamese Accents, %D author=Han The Thanh & Adam Lindsay & Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/enco-x5.mkii b/tex/context/base/enco-x5.mkii index d3b701c1a..cde394e29 100644 --- a/tex/context/base/enco-x5.mkii +++ b/tex/context/base/enco-x5.mkii @@ -5,7 +5,7 @@ %D subtitle=Vietnamese Encoding, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/filt-bas.mkii b/tex/context/base/filt-bas.mkii index ca3bc3d70..fedeb694b 100644 --- a/tex/context/base/filt-bas.mkii +++ b/tex/context/base/filt-bas.mkii @@ -5,7 +5,7 @@ %D subtitle=A Base Collection, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/filt-ini.mkii b/tex/context/base/filt-ini.mkii index 6e1a16e9a..f2f59349a 100644 --- a/tex/context/base/filt-ini.mkii +++ b/tex/context/base/filt-ini.mkii @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/font-bfm.mkii b/tex/context/base/font-bfm.mkii index 23e3176c4..0a25ec742 100644 --- a/tex/context/base/font-bfm.mkii +++ b/tex/context/base/font-bfm.mkii @@ -5,7 +5,7 @@ %D subtitle=Mixed Normal and Bold Math, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/font-chi.mkii b/tex/context/base/font-chi.mkii index 0acf710d5..5e5457227 100644 --- a/tex/context/base/font-chi.mkii +++ b/tex/context/base/font-chi.mkii @@ -6,7 +6,7 @@ %D author=Hans Hagen, %D date=\currentdate, %D suggestions=Wang Lei, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/font-col.mkiv b/tex/context/base/font-col.mkiv index f4f9a9dc7..038a618b7 100644 --- a/tex/context/base/font-col.mkiv +++ b/tex/context/base/font-col.mkiv @@ -5,7 +5,7 @@ %D subtitle=Fallbacks (collections), %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/font-ctx.lua b/tex/context/base/font-ctx.lua index 887aa9984..329894407 100644 --- a/tex/context/base/font-ctx.lua +++ b/tex/context/base/font-ctx.lua @@ -21,11 +21,13 @@ local round = math.round local P, S, C, Cc, Cf, Cg, Ct, lpegmatch = lpeg.P, lpeg.S, lpeg.C, lpeg.Cc, lpeg.Cf, lpeg.Cg, lpeg.Ct, lpeg.match +local trace_features = false trackers.register("fonts.features", function(v) trace_features = v end) local trace_defining = false trackers.register("fonts.defining", function(v) trace_defining = v end) local trace_usage = false trackers.register("fonts.usage", function(v) trace_usage = v end) -local trace_mapfiles = false trackers.register("fonts.mapfiles", function(v) trace_mapfiles = v end) -local trace_automode = false trackers.register("fonts.automode", function(v) trace_automode = v end) +local trace_mapfiles = false trackers.register("fonts.mapfiles", function(v) trace_mapfiles = v end) +local trace_automode = false trackers.register("fonts.automode", function(v) trace_automode = v end) +local report_features = logs.reporter("fonts","features") local report_defining = logs.reporter("fonts","defining") local report_status = logs.reporter("fonts","status") local report_mapfiles = logs.reporter("fonts","mapfiles") @@ -149,6 +151,9 @@ local needsnodemode = { } local function modechecker(tfmdata,features,mode) -- we cannot adapt features as they are shared! + if trace_features then + report_features(serialize(features,"used")) + end if mode == "auto" then local rawdata = tfmdata.shared.rawdata local resources = rawdata and rawdata.resources @@ -726,10 +731,17 @@ function definers.stage_two(global,cs,str,size,inheritancemode,classfeatures,fon setsomefontsize(fontdata[tfmdata].parameters.size .. "sp") texsetcount("global","lastfontid",tfmdata) else -tfmdata.characters[0] = nil -- we use char0 as signal - -- local t = os.clock(t) + -- setting the extra characters will move elsewhere + local characters = tfmdata.characters + local parameters = tfmdata.parameters + -- we use char0 as signal + characters[0] = nil + -- cf the spec pdf can handle this (no char in slot) + -- characters[0x00A0] = { width = parameters.space } + -- characters[0x2007] = { width = characters[0x0030] and characters[0x0030].width or parameters.space } -- figure + -- characters[0x2008] = { width = characters[0x002E] and characters[0x002E].width or parameters.space } -- period + -- local id = font.define(tfmdata) - -- print(name,os.clock()-t) tfmdata.properties.id = id definers.register(tfmdata,id) -- to be sure, normally already done tex.definefont(global,cs,id) diff --git a/tex/context/base/font-fbk.lua b/tex/context/base/font-fbk.lua index 6712fbe88..fc12ea2b1 100644 --- a/tex/context/base/font-fbk.lua +++ b/tex/context/base/font-fbk.lua @@ -10,11 +10,13 @@ local cos, tan, rad, format = math.cos, math.tan, math.rad, string.format local utfbyte, utfchar = utf.byte, utf.char local trace_combining = false trackers.register("fonts.combining", function(v) trace_combining = v end) -local trace_combining_all = false trackers.register("fonts.combining.all", function(v) trace_combining_all = v end) +local trace_combining_all = false trackers.register("fonts.combining.all", function(v) trace_combining = v + trace_combining_all = v end) local force_combining = false -- just for demo purposes (see mk) -trackers.register("fonts.composing", "fonts.combining") +trackers.register("fonts.composing", "fonts.combining") +trackers.register("fonts.composing.all", "fonts.combining.all") local report_combining = logs.reporter("fonts","combining") @@ -71,7 +73,7 @@ local function composecharacters(tfmdata) report_combining("using compose information from goodies file") end local done = false - for i,c in next, unicodecharacters do -- loop over all characters ... not that efficient but a specials hash takes memory + for i, c in next, unicodecharacters do -- loop over all characters ... not that efficient but a specials hash takes memory if force_combining or not characters[i] then local s = c.specials if s and s[1] == 'char' then @@ -118,57 +120,104 @@ local function composecharacters(tfmdata) local ab = descriptions[acc].boundingbox -- todo: adapt height if cb and ab then - -- can be sped up for scale == 1 local c_llx, c_lly, c_urx, c_ury = scale*cb[1], scale*cb[2], scale*cb[3], scale*cb[4] local a_llx, a_lly, a_urx, a_ury = scale*ab[1], scale*ab[2], scale*ab[3], scale*ab[4] - local dx = (c_urx - a_urx - a_llx + c_llx)/2 - local dd = (c_urx - c_llx)*italicfactor - if a_ury < 0 then - if trace_combining then - t.commands = { push, {"right", dx-dd}, red, acc_t, black, pop, chr_t } - else - t.commands = { push, {"right", dx-dd}, acc_t, pop, chr_t } - end - elseif c_ury > a_lly then -- messy test - local dy - if compose then - -- experimental: we could use sx but all that testing - -- takes time and code - dy = compose[i] - if dy then - dy = dy.DY +local done = false +if compose then + local i_compose = compose[i] + local i_anchored = i_compose and i_compose.anchored + if i_anchored then + local c_compose = compose[chr] + local a_compose = compose[acc] + local c_anchors = c_compose and c_compose.anchors + local a_anchors = a_compose and a_compose.anchors + if c_anchors and a_anchors then + local c_anchor = c_anchors[i_anchored] + local a_anchor = a_anchors[i_anchored] + if c_anchor and a_anchor then + local cx = c_anchor.x or 0 + local cy = c_anchor.y or 0 + local ax = a_anchor.x or 0 + local ay = a_anchor.y or 0 + local dx = cx - ax + local dy = cy - ay + if trace_combining_all then + report_combining("building U+%05X (%s) from U+%05X (%s) and U+%05X (%s)",i,utfchar(i),chr,utfchar(chr),acc,utfchar(acc)) + report_combining(" boundingbox:") + report_combining(" chr: %3i %3i %3i %3i",unpack(cb)) + report_combining(" acc: %3i %3i %3i %3i",unpack(ab)) + report_combining(" anchors:") + report_combining(" chr: %3i %3i",cx,cy) + report_combining(" acc: %3i %3i",ax,ay) + report_combining(" delta:") + report_combining(" %s: %3i %3i",i_anchored,dx,dy) + end + if trace_combining then + t.commands = { push, {"right", scale*dx}, {"down",-scale*dy}, green, acc_t, black, pop, chr_t } + -- t.commands = { + -- push, {"right", scale*cx}, {"down", -scale*cy}, red, {"rule",10000,10000,10000}, pop, + -- push, {"right", scale*ax}, {"down", -scale*ay}, blue, {"rule",10000,10000,10000}, pop, + -- push, {"right", scale*dx}, {"down", -scale*dy}, green, acc_t, black, pop, chr_t + -- } + else + t.commands = { push, {"right", scale*dx}, {"down",-scale*dy}, acc_t, pop, chr_t } + end + done = true + end + end + end +end + if not done then + -- can be sped up for scale == 1 + local dx = (c_urx - a_urx - a_llx + c_llx)/2 + local dd = (c_urx - c_llx)*italicfactor + if a_ury < 0 then + if trace_combining then + t.commands = { push, {"right", dx-dd}, red, acc_t, black, pop, chr_t } + else + t.commands = { push, {"right", dx-dd}, acc_t, pop, chr_t } end - if not dy then - dy = compose[acc] + elseif c_ury > a_lly then -- messy test + local dy + if compose then + -- experimental: we could use sx but all that testing + -- takes time and code + dy = compose[i] if dy then - dy = dy and dy.DY + dy = dy.DY end - end - if not dy then - dy = compose.DY - end - if not dy then + if not dy then + dy = compose[acc] + if dy then + dy = dy and dy.DY + end + end + if not dy then + dy = compose.DY + end + if not dy then + dy = - deltaxheight + extraxheight + elseif dy > -1.5 and dy < 1.5 then + -- we assume a fraction of (percentage) + dy = - dy * deltaxheight + else + -- we assume fontunits (value smaller than 2 make no sense) + dy = - dy * scale + end + else dy = - deltaxheight + extraxheight - elseif dy > -1.5 and dy < 1.5 then - -- we assume a fraction of (percentage) - dy = - dy * deltaxheight + end + if trace_combining then + t.commands = { push, {"right", dx+dd}, {"down", dy}, green, acc_t, black, pop, chr_t } else - -- we assume fontunits (value smaller than 2 make no sense) - dy = - dy * scale + t.commands = { push, {"right", dx+dd}, {"down", dy}, acc_t, pop, chr_t } end else - dy = - deltaxheight + extraxheight - end - if trace_combining then - t.commands = { push, {"right", dx+dd}, {"down", dy}, green, acc_t, black, pop, chr_t } - else - t.commands = { push, {"right", dx+dd}, {"down", dy}, acc_t, pop, chr_t } - end - else - if trace_combining then - t.commands = { push, {"right", dx+dd}, blue, acc_t, black, pop, chr_t } - else - t.commands = { push, {"right", dx+dd}, acc_t, pop, chr_t } + if trace_combining then + t.commands = { push, {"right", dx+dd}, blue, acc_t, black, pop, chr_t } + else + t.commands = { push, {"right", dx+dd}, acc_t, pop, chr_t } + end end end else diff --git a/tex/context/base/font-gds.mkiv b/tex/context/base/font-gds.mkiv index 083cd9128..7932a85ca 100644 --- a/tex/context/base/font-gds.mkiv +++ b/tex/context/base/font-gds.mkiv @@ -5,7 +5,7 @@ %D subtitle=Colorschemes, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/font-ini.mkii b/tex/context/base/font-ini.mkii index 7b84125fa..2bee00637 100644 --- a/tex/context/base/font-ini.mkii +++ b/tex/context/base/font-ini.mkii @@ -6,7 +6,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/font-ini.mkiv b/tex/context/base/font-ini.mkiv index 1c9cdcd32..0613ac709 100644 --- a/tex/context/base/font-ini.mkiv +++ b/tex/context/base/font-ini.mkiv @@ -6,7 +6,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/font-jap.mkii b/tex/context/base/font-jap.mkii index 42480df43..b8aa3d836 100644 --- a/tex/context/base/font-jap.mkii +++ b/tex/context/base/font-jap.mkii @@ -6,7 +6,7 @@ %D author=Hans Hagen, %D date=\currentdate, %D suggestions=Wang Lei, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/font-run.mkii b/tex/context/base/font-run.mkii index 0a0ddd057..04fcd576a 100644 --- a/tex/context/base/font-run.mkii +++ b/tex/context/base/font-run.mkii @@ -6,7 +6,7 @@ %D subtitle=Runtime Macros, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/font-run.mkiv b/tex/context/base/font-run.mkiv index 7a6764ac8..537272085 100644 --- a/tex/context/base/font-run.mkiv +++ b/tex/context/base/font-run.mkiv @@ -6,7 +6,7 @@ %D subtitle=Runtime Macros, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/font-tra.mkiv b/tex/context/base/font-tra.mkiv index 37ea4541a..8344b7658 100644 --- a/tex/context/base/font-tra.mkiv +++ b/tex/context/base/font-tra.mkiv @@ -5,7 +5,7 @@ %D subtitle=Tracing, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/font-uni.mkii b/tex/context/base/font-uni.mkii index 02ab6ce2c..77eb680e2 100644 --- a/tex/context/base/font-uni.mkii +++ b/tex/context/base/font-uni.mkii @@ -5,7 +5,7 @@ %D subtitle=\UNICODE, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/font-uni.mkiv b/tex/context/base/font-uni.mkiv index 8fb5d0996..223d27606 100644 --- a/tex/context/base/font-uni.mkiv +++ b/tex/context/base/font-uni.mkiv @@ -5,7 +5,7 @@ %D subtitle=\UNICODE, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/font-unk.mkii b/tex/context/base/font-unk.mkii index 30f824781..241369f68 100644 --- a/tex/context/base/font-unk.mkii +++ b/tex/context/base/font-unk.mkii @@ -5,7 +5,7 @@ %D subtitle=Unknown Defaults, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/font-unk.mkiv b/tex/context/base/font-unk.mkiv index bd699ef71..3cf0852be 100644 --- a/tex/context/base/font-unk.mkiv +++ b/tex/context/base/font-unk.mkiv @@ -5,7 +5,7 @@ %D subtitle=Unknown Defaults, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/font-xtx.mkii b/tex/context/base/font-xtx.mkii index 9930124be..e7a6c8d80 100644 --- a/tex/context/base/font-xtx.mkii +++ b/tex/context/base/font-xtx.mkii @@ -5,7 +5,7 @@ %D subtitle=\XETEX\ Hacks, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/grph-epd.mkiv b/tex/context/base/grph-epd.mkiv index b066e1adc..f3f29ebd8 100644 --- a/tex/context/base/grph-epd.mkiv +++ b/tex/context/base/grph-epd.mkiv @@ -5,7 +5,7 @@ %D subtitle=Merging Goodies, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/grph-fig.mkii b/tex/context/base/grph-fig.mkii index c7f990af2..c488ccc4f 100644 --- a/tex/context/base/grph-fig.mkii +++ b/tex/context/base/grph-fig.mkii @@ -5,7 +5,7 @@ %D subtitle=Figure Inclusion, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -285,7 +285,7 @@ \processcommalist[#1]\docommand}% \global\setbox\colorbarbox\vbox {\hskip2em\box\colorbarbox}% - \global\wd\colorbarbox\zeropoint} + \wd\colorbarbox\zeropoint} \def\placestartfigure[#1][#2][#3]#4\placestopfigure[#5]% {\hbox diff --git a/tex/context/base/grph-fig.mkiv b/tex/context/base/grph-fig.mkiv index fad1c864a..603604fd1 100644 --- a/tex/context/base/grph-fig.mkiv +++ b/tex/context/base/grph-fig.mkiv @@ -5,7 +5,7 @@ %D subtitle=Figure Inclusion, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -370,7 +370,7 @@ \processcommalist[#1]\docommand}% \global\setbox\colorbarbox\vbox {\hskip2em\box\colorbarbox}% - \global\wd\colorbarbox\zeropoint} + \wd\colorbarbox\zeropoint} \unexpanded\def\placestartfigure[#1][#2][#3]#4\placestopfigure[#5]% {\hbox diff --git a/tex/context/base/grph-inc.mkii b/tex/context/base/grph-inc.mkii index 1bd7544d8..33f11a2bc 100644 --- a/tex/context/base/grph-inc.mkii +++ b/tex/context/base/grph-inc.mkii @@ -5,7 +5,7 @@ %D subtitle=Figure Inclusion, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -660,8 +660,8 @@ \xdef\noffigurepages{\number\nofinsertpages}% \fi \fi - \global\wd\foundexternalfigure\finalscaleboxwidth - \global\ht\foundexternalfigure\finalscaleboxheight + \wd\foundexternalfigure\finalscaleboxwidth + \ht\foundexternalfigure\finalscaleboxheight \global\let\lastfigureobjectname\externalfigurestamp \doresetobjects} % clean up driver left overs diff --git a/tex/context/base/grph-inc.mkiv b/tex/context/base/grph-inc.mkiv index aa2157b9f..f63848587 100644 --- a/tex/context/base/grph-inc.mkiv +++ b/tex/context/base/grph-inc.mkiv @@ -5,7 +5,7 @@ %D subtitle=Figure Inclusion, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/grph-raw.mkiv b/tex/context/base/grph-raw.mkiv index 426262b4f..8b8c80e1c 100644 --- a/tex/context/base/grph-raw.mkiv +++ b/tex/context/base/grph-raw.mkiv @@ -5,7 +5,7 @@ %D subtitle=Raw Bitmaps, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/grph-trf.mkii b/tex/context/base/grph-trf.mkii index 3e32395b4..bd9875806 100644 --- a/tex/context/base/grph-trf.mkii +++ b/tex/context/base/grph-trf.mkii @@ -5,7 +5,7 @@ %D subtitle=Transformations, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/grph-trf.mkiv b/tex/context/base/grph-trf.mkiv index 9924a68e8..9b4201116 100644 --- a/tex/context/base/grph-trf.mkiv +++ b/tex/context/base/grph-trf.mkiv @@ -5,7 +5,7 @@ %D subtitle=Transformations, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/hand-def.mkii b/tex/context/base/hand-def.mkii index 0a19ce270..ab0044a8e 100644 --- a/tex/context/base/hand-def.mkii +++ b/tex/context/base/hand-def.mkii @@ -5,7 +5,7 @@ %D subtitle=Default Protruding Factors, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/hand-ini.mkii b/tex/context/base/hand-ini.mkii index ac8a94696..1d41c3ada 100644 --- a/tex/context/base/hand-ini.mkii +++ b/tex/context/base/hand-ini.mkii @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/hand-ini.mkiv b/tex/context/base/hand-ini.mkiv index 7b9732059..cf659389b 100644 --- a/tex/context/base/hand-ini.mkiv +++ b/tex/context/base/hand-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/java-ans.mkii b/tex/context/base/java-ans.mkii index 636c894f9..7e310baa4 100644 --- a/tex/context/base/java-ans.mkii +++ b/tex/context/base/java-ans.mkii @@ -5,7 +5,7 @@ %D subtitle=Answer Analization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/java-exa.mkii b/tex/context/base/java-exa.mkii index f40f70f84..584ee1351 100644 --- a/tex/context/base/java-exa.mkii +++ b/tex/context/base/java-exa.mkii @@ -5,7 +5,7 @@ %D subtitle=Example Support, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/java-fil.mkii b/tex/context/base/java-fil.mkii index 4d79a2ace..20376af44 100644 --- a/tex/context/base/java-fil.mkii +++ b/tex/context/base/java-fil.mkii @@ -5,7 +5,7 @@ %D subtitle=Filing and Printing, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/java-fld.mkii b/tex/context/base/java-fld.mkii index 93a90dc0a..0a76cc93c 100644 --- a/tex/context/base/java-fld.mkii +++ b/tex/context/base/java-fld.mkii @@ -5,7 +5,7 @@ %D subtitle=Field Support, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/java-imp-exa.mkiv b/tex/context/base/java-imp-exa.mkiv index f40f70f84..584ee1351 100644 --- a/tex/context/base/java-imp-exa.mkiv +++ b/tex/context/base/java-imp-exa.mkiv @@ -5,7 +5,7 @@ %D subtitle=Example Support, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/java-imp-fil.mkiv b/tex/context/base/java-imp-fil.mkiv index 592e9460d..808950f28 100644 --- a/tex/context/base/java-imp-fil.mkiv +++ b/tex/context/base/java-imp-fil.mkiv @@ -5,7 +5,7 @@ %D subtitle=Filing and Printing, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/java-imp-fld.mkiv b/tex/context/base/java-imp-fld.mkiv index a0909f594..625bfce11 100644 --- a/tex/context/base/java-imp-fld.mkiv +++ b/tex/context/base/java-imp-fld.mkiv @@ -5,7 +5,7 @@ %D subtitle=Field Support, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/java-imp-stp.mkiv b/tex/context/base/java-imp-stp.mkiv index ebddd8cc6..8ac5d58b8 100644 --- a/tex/context/base/java-imp-stp.mkiv +++ b/tex/context/base/java-imp-stp.mkiv @@ -5,7 +5,7 @@ %D subtitle=Stepping, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/java-ini.mkii b/tex/context/base/java-ini.mkii index 68516ec4e..2e62ca166 100644 --- a/tex/context/base/java-ini.mkii +++ b/tex/context/base/java-ini.mkii @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/java-ini.mkiv b/tex/context/base/java-ini.mkiv index 4013d82af..16d145ba0 100644 --- a/tex/context/base/java-ini.mkiv +++ b/tex/context/base/java-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/java-stp.mkii b/tex/context/base/java-stp.mkii index df4fbcc2f..7283c8ceb 100644 --- a/tex/context/base/java-stp.mkii +++ b/tex/context/base/java-stp.mkii @@ -5,7 +5,7 @@ %D subtitle=Stepping, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/l-file.lua b/tex/context/base/l-file.lua index c3199f022..bb5a5d49c 100644 --- a/tex/context/base/l-file.lua +++ b/tex/context/base/l-file.lua @@ -146,9 +146,39 @@ end --~ print(file.join("http:///a","/y")) --~ print(file.join("//nas-1","/y")) +-- We should be able to use: +-- +-- function file.is_writable(name) +-- local a = attributes(name) or attributes(dirname(name,".")) +-- return a and sub(a.permissions,2,2) == "w" +-- end +-- +-- But after some testing Taco and I came up with: + function file.is_writable(name) - local a = attributes(name) or attributes(dirname(name,".")) - return a and sub(a.permissions,2,2) == "w" + if lfs.isdir(name) then + name = name .. "/m_t_x_t_e_s_t.tmp" + local f = io.open(name,"wb") + if f then + f:close() + os.remove(name) + return true + end + elseif lfs.isfile(name) then + local f = io.open(name,"ab") + if f then + f:close() + return true + end + else + local f = io.open(name,"ab") + if f then + f:close() + os.remove(name) + return true + end + end + return false end function file.is_readable(name) diff --git a/tex/context/base/l-unicode.lua b/tex/context/base/l-unicode.lua index 2fa50282f..0c7b24bd4 100644 --- a/tex/context/base/l-unicode.lua +++ b/tex/context/base/l-unicode.lua @@ -380,12 +380,29 @@ end --~ print(unicode.utfcodes(str)) local lpegmatch = lpeg.match -local utftype = lpeg.patterns.utftype +local patterns = lpeg.patterns +local utftype = patterns.utftype function unicode.filetype(data) return data and lpegmatch(utftype,data) or "unknown" end +local toentities = lpeg.Cs ( + ( + patterns.utf8one + + ( + patterns.utf8two + + patterns.utf8three + + patterns.utf8four + ) / function(s) local b = utfbyte(s) if b < 127 then return s else return format("&#%X;",b) end end + )^0 +) + +patterns.toentities = toentities + +function utf.toentities(str) + return lpegmatch(toentities,str) +end --~ local utfchr = { } -- 60K -> 2.638 M extra mem but currently not called that often (on latin) --~ --~ setmetatable(utfchr, { __index = function(t,k) local v = utfchar(k) t[k] = v return v end } ) diff --git a/tex/context/base/lang-alt.mkii b/tex/context/base/lang-alt.mkii index f65acbda3..1e49945d5 100644 --- a/tex/context/base/lang-alt.mkii +++ b/tex/context/base/lang-alt.mkii @@ -5,7 +5,7 @@ %D subtitle=Altaic Languages, %D author=Hans Hagen / Tobias Burnus, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lang-ana.mkii b/tex/context/base/lang-ana.mkii index c108655c4..f2dc4a17c 100644 --- a/tex/context/base/lang-ana.mkii +++ b/tex/context/base/lang-ana.mkii @@ -5,7 +5,7 @@ %D subtitle=Anatolian Languages, %D author=Hans Hagen / Tobias Burnus, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lang-art.mkii b/tex/context/base/lang-art.mkii index e8be91630..20216b571 100644 --- a/tex/context/base/lang-art.mkii +++ b/tex/context/base/lang-art.mkii @@ -5,7 +5,7 @@ %D subtitle=Artificial Languages, %D author=Hans Hagen / Tobias Burnus, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lang-bal.mkii b/tex/context/base/lang-bal.mkii index 394e9d93c..4ab751a44 100644 --- a/tex/context/base/lang-bal.mkii +++ b/tex/context/base/lang-bal.mkii @@ -5,7 +5,7 @@ %D subtitle=Baltic Languages, %D author=Marius Aleknevičius, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lang-cel.mkii b/tex/context/base/lang-cel.mkii index 4d93957f1..e6519497b 100644 --- a/tex/context/base/lang-cel.mkii +++ b/tex/context/base/lang-cel.mkii @@ -5,7 +5,7 @@ %D subtitle=Celtic Languages, %D author=Hans Hagen / Tobias Burnus, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lang-chi.mkii b/tex/context/base/lang-chi.mkii index 278e10745..5d61281b0 100644 --- a/tex/context/base/lang-chi.mkii +++ b/tex/context/base/lang-chi.mkii @@ -5,7 +5,7 @@ %D subtitle=Chinese, %D author={Hans Hagen \& Wang Lei}, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lang-ctx.mkii b/tex/context/base/lang-ctx.mkii index 09f28dda1..2aecb918e 100644 --- a/tex/context/base/lang-ctx.mkii +++ b/tex/context/base/lang-ctx.mkii @@ -5,7 +5,7 @@ %D subtitle=Generic Patterns, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lang-cyr.mkii b/tex/context/base/lang-cyr.mkii index 470402bb1..eed3ec80e 100644 --- a/tex/context/base/lang-cyr.mkii +++ b/tex/context/base/lang-cyr.mkii @@ -5,7 +5,7 @@ %D subtitle=Cyrillic Languages, %D author=see below, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lang-def.mkiv b/tex/context/base/lang-def.mkiv index 359006fef..b720a1813 100644 --- a/tex/context/base/lang-def.mkiv +++ b/tex/context/base/lang-def.mkiv @@ -5,7 +5,7 @@ %D subtitle=Languages Definitions, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lang-dis.mkii b/tex/context/base/lang-dis.mkii index f081bf4a9..213c5110f 100644 --- a/tex/context/base/lang-dis.mkii +++ b/tex/context/base/lang-dis.mkii @@ -5,7 +5,7 @@ %D subtitle=Distribution Patterns, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lang-frd.mkii b/tex/context/base/lang-frd.mkii index 6cc27080b..be4e07b75 100644 --- a/tex/context/base/lang-frd.mkii +++ b/tex/context/base/lang-frd.mkii @@ -5,7 +5,7 @@ %D subtitle=Language Frequency Table Data, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lang-frq.mkii b/tex/context/base/lang-frq.mkii index 773230e6c..afeb5329c 100644 --- a/tex/context/base/lang-frq.mkii +++ b/tex/context/base/lang-frq.mkii @@ -5,7 +5,7 @@ %D subtitle=Frequency Tables, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lang-ger.mkii b/tex/context/base/lang-ger.mkii index 04551a891..d33620cc7 100644 --- a/tex/context/base/lang-ger.mkii +++ b/tex/context/base/lang-ger.mkii @@ -5,7 +5,7 @@ %D subtitle=Germanic Languages, %D author=Hans Hagen / Tobias Burnus, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lang-grk.mkii b/tex/context/base/lang-grk.mkii index 862f3c5f4..9fd59382a 100644 --- a/tex/context/base/lang-grk.mkii +++ b/tex/context/base/lang-grk.mkii @@ -5,7 +5,7 @@ %D subtitle=Uralic Languages, %D author=Apostolos Syropoulos %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lang-ind.mkii b/tex/context/base/lang-ind.mkii index 9b6e5ff1d..bb33dacfd 100644 --- a/tex/context/base/lang-ind.mkii +++ b/tex/context/base/lang-ind.mkii @@ -5,7 +5,7 @@ %D subtitle=Indo Iranian Languages, %D author=Hans Hagen / Tobias Burnus, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lang-ini.mkii b/tex/context/base/lang-ini.mkii index 50a3689cf..6ad6f02e3 100644 --- a/tex/context/base/lang-ini.mkii +++ b/tex/context/base/lang-ini.mkii @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lang-ini.mkiv b/tex/context/base/lang-ini.mkiv index 5dccab4dc..6504b82b8 100644 --- a/tex/context/base/lang-ini.mkiv +++ b/tex/context/base/lang-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lang-ita.mkii b/tex/context/base/lang-ita.mkii index 03efb0614..04acf3265 100644 --- a/tex/context/base/lang-ita.mkii +++ b/tex/context/base/lang-ita.mkii @@ -5,7 +5,7 @@ %D subtitle=Italic Languages, %D author=Hans Hagen / Tobias Burnus, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lang-jap.mkii b/tex/context/base/lang-jap.mkii index 05c9b1d41..1417e8ec5 100644 --- a/tex/context/base/lang-jap.mkii +++ b/tex/context/base/lang-jap.mkii @@ -5,7 +5,7 @@ %D subtitle=Japanese, %D author={Richard Gabriel}, %D date=\currentdate, -%D copyright={PRAGMA / RG}] +%D copyright={Richard Gabriel \& Hans Hagen}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lang-lab.mkii b/tex/context/base/lang-lab.mkii index 269ac249b..1ff964615 100644 --- a/tex/context/base/lang-lab.mkii +++ b/tex/context/base/lang-lab.mkii @@ -5,7 +5,7 @@ %D subtitle=Labels, %D author=Hans Hagen / Tobias Burnus, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lang-lab.mkiv b/tex/context/base/lang-lab.mkiv index 025958ade..ea845450e 100644 --- a/tex/context/base/lang-lab.mkiv +++ b/tex/context/base/lang-lab.mkiv @@ -5,7 +5,7 @@ %D subtitle=Labels, %D author=Hans Hagen / Tobias Burnus, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -85,18 +85,6 @@ \def#4{\reallanguagetag{\defaultlanguage\currentmainlanguage}}% \ifnum#2=\plustwo \def#3{#5#4}% -% \def#5##1##2% ##1=language -% {\ifcsname\??ml:#1:##1:##2\endcsname -% \csname\??ml:#1:##1:##2\endcsname -% \else\ifcsname\??la#4\s!default\endcsname -% \expandafter#5\csname\??la#4\s!default\endcsname{##2}% -% \else\ifcsname\??ml:#1:##2\endcsname -% \csname\??ml:#1:##2\endcsname -% \else\ifcsname\??ml:#1:\s!en:##2\endcsname -% \csname\??ml:#1:\s!en:##2\endcsname -% \else -% ##2% -% \fi\fi\fi\fi}% \def#5##1##2% ##1=language {\ifcsname\??ml:\currentlabelcategory#1:##1:##2\endcsname \csname\??ml:\currentlabelcategory#1:##1:##2\endcsname diff --git a/tex/context/base/lang-mis.mkii b/tex/context/base/lang-mis.mkii index eb7bb1a04..3923df3e8 100644 --- a/tex/context/base/lang-mis.mkii +++ b/tex/context/base/lang-mis.mkii @@ -5,7 +5,7 @@ %D subtitle=Compounds, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lang-mis.mkiv b/tex/context/base/lang-mis.mkiv index 231697c7e..610624f97 100644 --- a/tex/context/base/lang-mis.mkiv +++ b/tex/context/base/lang-mis.mkiv @@ -5,7 +5,7 @@ %D subtitle=Compounds, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lang-run.mkii b/tex/context/base/lang-run.mkii index 4b332cfb9..320ee8dab 100644 --- a/tex/context/base/lang-run.mkii +++ b/tex/context/base/lang-run.mkii @@ -5,7 +5,7 @@ %D subtitle=Runtime Macros, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lang-sla.mkii b/tex/context/base/lang-sla.mkii index 2834b652f..81f9a9bf7 100644 --- a/tex/context/base/lang-sla.mkii +++ b/tex/context/base/lang-sla.mkii @@ -5,7 +5,7 @@ %D subtitle=Slavic Languages, %D author=Hans Hagen / Tobias Burnus, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lang-spa.mkii b/tex/context/base/lang-spa.mkii index f6e22aa51..313e5f3e6 100644 --- a/tex/context/base/lang-spa.mkii +++ b/tex/context/base/lang-spa.mkii @@ -5,7 +5,7 @@ %D subtitle=Spacing, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lang-spa.mkiv b/tex/context/base/lang-spa.mkiv index 2cc88b84f..e7cb0025f 100644 --- a/tex/context/base/lang-spa.mkiv +++ b/tex/context/base/lang-spa.mkiv @@ -5,7 +5,7 @@ %D subtitle=Spacing, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lang-spe.mkii b/tex/context/base/lang-spe.mkii index 7911b0c95..11c57af3f 100644 --- a/tex/context/base/lang-spe.mkii +++ b/tex/context/base/lang-spe.mkii @@ -5,7 +5,7 @@ %D subtitle=Specifics, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lang-ura.mkii b/tex/context/base/lang-ura.mkii index a2bcd3d2b..21bc8d94a 100644 --- a/tex/context/base/lang-ura.mkii +++ b/tex/context/base/lang-ura.mkii @@ -5,7 +5,7 @@ %D subtitle=Uralic Languages, %D author=Hans Hagen / Tobias Burnus, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lang-url.mkii b/tex/context/base/lang-url.mkii index fdf530b45..1f340ffb0 100644 --- a/tex/context/base/lang-url.mkii +++ b/tex/context/base/lang-url.mkii @@ -5,7 +5,7 @@ %D subtitle=Language Options, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lang-url.mkiv b/tex/context/base/lang-url.mkiv index cba013324..d34b33bd5 100644 --- a/tex/context/base/lang-url.mkiv +++ b/tex/context/base/lang-url.mkiv @@ -5,7 +5,7 @@ %D subtitle=Language Options, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lang-vn.mkii b/tex/context/base/lang-vn.mkii index 27d2a48a1..e564d989c 100644 --- a/tex/context/base/lang-vn.mkii +++ b/tex/context/base/lang-vn.mkii @@ -5,7 +5,7 @@ %D subtitle=Vietnamese, %D author={Han The Thanh \& Adam Lindsay \& Hans Hagen}, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lang-wrd.mkiv b/tex/context/base/lang-wrd.mkiv index 22c234d0c..2fda3b344 100644 --- a/tex/context/base/lang-wrd.mkiv +++ b/tex/context/base/lang-wrd.mkiv @@ -5,7 +5,7 @@ %D subtitle=Checking, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/layo-ini.mkiv b/tex/context/base/layo-ini.mkiv index 463612978..9097265c9 100644 --- a/tex/context/base/layo-ini.mkiv +++ b/tex/context/base/layo-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lpdf-ano.lua b/tex/context/base/lpdf-ano.lua index 9f452c34d..a133c24d7 100644 --- a/tex/context/base/lpdf-ano.lua +++ b/tex/context/base/lpdf-ano.lua @@ -52,7 +52,6 @@ local pdfunicode = lpdf.unicode local pdfconstant = lpdf.constant local pdfflushobject = lpdf.flushobject local pdfshareobjectreference = lpdf.shareobjectreference -local pdfimmediateobject = lpdf.immediateobject local pdfreserveobject = lpdf.reserveobject local pdfpagereference = lpdf.pagereference local pdfdelayedobject = lpdf.delayedobject @@ -245,7 +244,7 @@ local function use_normal_annotations() end --- evenrually we can do this for special refs only +-- eventually we can do this for special refs only local hashed, nofunique, nofused = { }, 0, 0 diff --git a/tex/context/base/lpdf-col.lua b/tex/context/base/lpdf-col.lua index dc40e555c..6aa412d6a 100644 --- a/tex/context/base/lpdf-col.lua +++ b/tex/context/base/lpdf-col.lua @@ -6,10 +6,29 @@ if not modules then modules = { } end modules ['lpdf-mis'] = { license = "see context related readme files" } -local type = type -local format, gsub = string.format, string.gsub +local type, next, tostring = type, next, tostring +local char, byte, format, gsub, rep, gmatch = string.char, string.byte, string.format, string.gsub, string.rep, string.gmatch +local concat = table.concat +local round = math.round -local backends, lpdf = backends, lpdf +local backends, lpdf, nodes = backends, lpdf, nodes + +local nodeinjections = backends.pdf.nodeinjections +local codeinjections = backends.pdf.codeinjections +local registrations = backends.pdf.registrations + +local nodepool = nodes.pool +local register = nodepool.register +local pdfliteral = nodepool.pdfliteral + +local pdfconstant = lpdf.constant +local pdfstring = lpdf.string +local pdfdictionary = lpdf.dictionary +local pdfarray = lpdf.array +local pdfreference = lpdf.reference +local pdfverbose = lpdf.verbose +local pdfflushobject = lpdf.flushobject +local pdfflushstreamobject = lpdf.flushstreamobject local colors = attributes.colors local transparencies = attributes.transparencies @@ -19,6 +38,361 @@ local colorsvalue = colors.value local transparenciesvalue = transparencies.value local forcedmodel = colors.forcedmodel +-- injection code (needs a bit reordering) + +-- color injection + +function nodeinjections.rgbcolor(r,g,b) + return register(pdfliteral(format("%s %s %s rg %s %s %s RG",r,g,b,r,g,b))) +end + +function nodeinjections.cmykcolor(c,m,y,k) + return register(pdfliteral(format("%s %s %s %s k %s %s %s %s K",c,m,y,k,c,m,y,k))) +end + +function nodeinjections.graycolor(s) -- caching 0/1 does not pay off + return register(pdfliteral(format("%s g %s G",s,s))) +end + +function nodeinjections.spotcolor(n,f,d,p) + if type(p) == "string" then + p = gsub(p,","," ") -- brr misuse of spot + end + return register(pdfliteral(format("/%s cs /%s CS %s SCN %s scn",n,n,p,p))) +end + +function nodeinjections.transparency(n) + return register(pdfliteral(format("/Tr%s gs",n))) +end + +-- a bit weird but let's keep it here for a while + +local effects = { + normal = 0, + inner = 0, + outer = 1, + both = 2, + hidden = 3, +} + +local bp = number.dimenfactors.bp + +function nodeinjections.effect(effect,stretch,rulethickness) + -- always, no zero test (removed) + rulethickness = bp * rulethickness + effect = effects[effect] or effects['normal'] + return register(pdfliteral(format("%s Tc %s w %s Tr",stretch,rulethickness,effect))) -- watch order +end + +-- spot- and indexcolors + +local pdf_separation = pdfconstant("Separation") +local pdf_indexed = pdfconstant("Indexed") +local pdf_device_n = pdfconstant("DeviceN") +local pdf_device_rgb = pdfconstant("DeviceRGB") +local pdf_device_cmyk = pdfconstant("DeviceCMYK") +local pdf_device_gray = pdfconstant("DeviceGray") +local pdf_extgstate = pdfconstant("ExtGState") + +local pdf_rbg_range = pdfarray { 0, 1, 0, 1, 0, 1 } +local pdf_cmyk_range = pdfarray { 0, 1, 0, 1, 0, 1, 0, 1 } +local pdf_gray_range = pdfarray { 0, 1 } + +local rgb_function = "dup %s mul exch dup %s mul exch %s mul" +local cmyk_function = "dup %s mul exch dup %s mul exch dup %s mul exch %s mul" +local gray_function = "%s mul" + +local documentcolorspaces = pdfdictionary() + +local spotcolorhash = { } -- not needed +local spotcolornames = { } +local indexcolorhash = { } +local delayedindexcolors = { } + +function registrations.spotcolorname(name,e) + spotcolornames[name] = e or name +end + +function registrations.getspotcolorreference(name) + return spotcolorhash[name] +end + +-- beware: xpdf/okular/evince cannot handle the spot->process shade + +-- This should become delayed i.e. only flush when used; in that case we need +-- need to store the specification and then flush them when accesssomespotcolor +-- is called. At this moment we assume that splotcolors that get defined are +-- also used which keeps the overhad small anyway. + +local processcolors + +local function registersomespotcolor(name,noffractions,names,p,colorspace,range,funct) + noffractions = tonumber(noffractions) or 1 -- to be checked + if noffractions == 0 then + -- can't happen + elseif noffractions == 1 then + local dictionary = pdfdictionary { + FunctionType = 4, + Domain = { 0, 1 }, + Range = range, + } + local calculations = pdfflushstreamobject(format("{ %s }",funct),dictionary) + -- local calculations = pdfobject { + -- type = "stream", + -- immediate = true, + -- string = format("{ %s }",funct), + -- attr = dictionary(), + -- } + local array = pdfarray { + pdf_separation, + pdfconstant(spotcolornames[name] or name), + colorspace, + pdfreference(calculations), + } + local m = pdfflushobject(array) + local mr = pdfreference(m) + spotcolorhash[name] = m + documentcolorspaces[name] = mr + lpdf.adddocumentcolorspace(name,mr) + else + local cnames = pdfarray() + local domain = pdfarray() + local colorants = pdfdictionary() + for n in gmatch(names,"[^,]+") do + local name = spotcolornames[n] or n + if n == "cyan" then + name = "Cyan" + elseif n == "magenta" then + name = "Magenta" + elseif n == "yellow" then + name = "Yellow" + elseif n == "black" then + name = "Black" + else + colorants[name] = pdfreference(spotcolorhash[name] or spotcolorhash[n]) + end + cnames[#cnames+1] = pdfconstant(name) + domain[#domain+1] = 0 + domain[#domain+1] = 1 + end + if not processcolors then + local specification = pdfdictionary { + ColorSpace = pdfconstant("DeviceCMYK"), + Components = pdfarray { + pdfconstant("Cyan"), + pdfconstant("Magenta"), + pdfconstant("Yellow"), + pdfconstant("Black") + } + } + processcolors = pdfreference(pdfflushobject(specification)) + end + local dictionary = pdfdictionary { + FunctionType = 4, + Domain = domain, + Range = range, + } + local calculation = pdfflushstreamobject(format("{ %s %s }",rep("pop ",noffractions),funct),dictionary) + local channels = pdfdictionary { + Subtype = pdfconstant("NChannel"), + Colorants = colorants, + Process = processcolors, + } + local array = pdfarray { + pdf_device_n, + cnames, + colorspace, + pdfreference(calculation), + lpdf.shareobjectreference(tostring(channels)), -- optional but needed for shades + } + local m = pdfflushobject(array) + local mr = pdfreference(m) + spotcolorhash[name] = m + documentcolorspaces[name] = mr + lpdf.adddocumentcolorspace(name,mr) + end +end + +-- wrong name + +local function registersomeindexcolor(name,noffractions,names,p,colorspace,range,funct) + noffractions = tonumber(noffractions) or 1 -- to be checked + local cnames = pdfarray() + local domain = pdfarray() + if names == "" then + names = name .. ",None" + else + names = names .. ",None" + end + for n in gmatch(names,"[^,]+") do + cnames[#cnames+1] = pdfconstant(spotcolornames[n] or n) + domain[#domain+1] = 0 + domain[#domain+1] = 1 + end + local dictionary = pdfdictionary { + FunctionType = 4, + Domain = domain, + Range = range, + } + local n = pdfflushstreamobject(format("{ %s %s }",rep("exch pop ",noffractions),funct),dictionary) -- exch pop + local a = pdfarray { + pdf_device_n, + cnames, + colorspace, + pdfreference(n), + } + if p == "" then + p = "1" + else + p = p .. ",1" + end + local pi = { } + for pp in gmatch(p,"[^,]+") do + pi[#pi+1] = tonumber(pp) + end + local vector, set, n = { }, { }, #pi + for i=255,0,-1 do + for j=1,n do + set[j] = format("%02X",round(pi[j]*i)) + end + vector[#vector+1] = concat(set) + end + vector = pdfverbose { "<", concat(vector, " "), ">" } + local n = pdfflushobject(pdfarray{ pdf_indexed, a, 255, vector }) + lpdf.adddocumentcolorspace(format("%s_indexed",name),pdfreference(n)) + return n +end + +-- actually, names (parent) is the hash + +local function delayindexcolor(name,names,func) + local hash = (names ~= "" and names) or name + delayedindexcolors[hash] = func +end + +local function indexcolorref(name) -- actually, names (parent) is the hash + if not indexcolorhash[name] then + local delayedindexcolor = delayedindexcolors[name] + if type(delayedindexcolor) == "function" then + indexcolorhash[name] = delayedindexcolor() + delayedindexcolors[name] = true + end + end + return indexcolorhash[name] +end + +function registrations.rgbspotcolor(name,noffractions,names,p,r,g,b) + if noffractions == 1 then + registersomespotcolor(name,noffractions,names,p,pdf_device_rgb,pdf_rbg_range,format(rgb_function,r,g,b)) + else + registersomespotcolor(name,noffractions,names,p,pdf_device_rgb,pdf_rbg_range,format("%s %s %s",r,g,b)) + end + delayindexcolor(name,names,function() + return registersomeindexcolor(name,noffractions,names,p,pdf_device_rgb,pdf_rgb_range,format(rgb_function,r,g,b)) + end) +end + +function registrations.cmykspotcolor(name,noffractions,names,p,c,m,y,k) + if noffractions == 1 then + registersomespotcolor(name,noffractions,names,p,pdf_device_cmyk,pdf_cmyk_range,format(cmyk_function,c,m,y,k)) + else + registersomespotcolor(name,noffractions,names,p,pdf_device_cmyk,pdf_cmyk_range,format("%s %s %s %s",c,m,y,k)) + end + delayindexcolor(name,names,function() + return registersomeindexcolor(name,noffractions,names,p,pdf_device_cmyk,pdf_cmyk_range,format(cmyk_function,c,m,y,k)) + end) +end + +function registrations.grayspotcolor(name,noffractions,names,p,s) + if noffractions == 1 then + registersomespotcolor(name,noffractions,names,p,pdf_device_gray,pdf_gray_range,format(gray_function,s)) + else + registersomespotcolor(name,noffractions,names,p,pdf_device_gray,pdf_gray_range,s) + end + delayindexcolor(name,names,function() + return registersomeindexcolor(name,noffractions,names,p,pdf_device_gray,pdf_gray_range,format(gray_function,s)) + end) +end + +function registrations.rgbindexcolor(name,noffractions,names,p,r,g,b) + registersomeindexcolor(name,noffractions,names,p,pdf_device_rgb,pdf_rgb_range,format(rgb_function,r,g,b)) +end + +function registrations.cmykindexcolor(name,noffractions,names,p,c,m,y,k) + registersomeindexcolor(name,noffractions,names,p,pdf_device_cmyk,pdf_cmyk_range,format(cmyk_function,c,m,y,k)) +end + +function registrations.grayindexcolor(name,noffractions,names,p,s) + registersomeindexcolor(name,noffractions,names,p,pdf_device_gray,pdf_gray_range,gray_function) +end + +function codeinjections.setfigurecolorspace(data,figure) + local color = data.request.color + if color then + local ref = indexcolorref(color) + if ref then + figure.colorspace = ref + data.used.color = color + end + end +end + +-- transparency + +local transparencies = { [0] = + pdfconstant("Normal"), + pdfconstant("Normal"), + pdfconstant("Multiply"), + pdfconstant("Screen"), + pdfconstant("Overlay"), + pdfconstant("SoftLight"), + pdfconstant("HardLight"), + pdfconstant("ColorDodge"), + pdfconstant("ColorBurn"), + pdfconstant("Darken"), + pdfconstant("Lighten"), + pdfconstant("Difference"), + pdfconstant("Exclusion"), + pdfconstant("Compatible"), +} + +local documenttransparencies = { } +local transparencyhash = { } -- share objects + +local done = false + +function registrations.transparency(n,a,t) + if not done then + local d = pdfdictionary { + Type = pdf_extgstate, + ca = 1, + CA = 1, + BM = transparencies[1], + AIS = false, + } + local m = pdfflushobject(d) + local mr = pdfreference(m) + transparencyhash[0] = m + documenttransparencies[0] = mr + lpdf.adddocumentextgstate("Tr0",mr) + done = true + end + if n > 0 and not transparencyhash[n] then + local d = pdfdictionary { + Type = pdf_extgstate, + ca = tonumber(t), + CA = tonumber(t), + BM = transparencies[tonumber(a)] or transparencies[0], + AIS = false, + } + local m = pdfflushobject(d) + local mr = pdfreference(m) + transparencyhash[n] = m + documenttransparencies[n] = mr + lpdf.adddocumentextgstate(format("Tr%s",n),mr) + end +end + -- Literals needed to inject code in the mp stream, we cannot use attributes there -- since literals may have qQ's, much may go away once we have mplib code in place. -- @@ -59,6 +433,29 @@ end lpdf.color = lpdfcolor +function lpdf.colorspec(model,ca,default) + if ca and ca > 0 then + local cv = colors.value(ca) + if cv then + if model == 1 then + model = cv[1] + end + if model == 2 then + return pdfarray { cv[2] } + elseif model == 3 then + return pdfarray { cv[3],cv[4],cv[5] } + elseif model == 4 then + return pdfarray { cv[6],cv[7],cv[8],cv[9] } + elseif model == 5 then + return pdfarray { cv[13] } + end + end + end + if default then + return default + end +end + function lpdf.pdfcolor(attribute) -- bonus, for pgf and friends context(lpdfcolor(1,attribute)) end @@ -214,6 +611,7 @@ function lpdf.transparencycode(a,t) return "" end end + function lpdf.finishtransparencycode() if transparencies.supported and intransparency then intransparency = false diff --git a/tex/context/base/lpdf-fld.lua b/tex/context/base/lpdf-fld.lua index 590aee1ab..f24e39e1a 100644 --- a/tex/context/base/lpdf-fld.lua +++ b/tex/context/base/lpdf-fld.lua @@ -53,7 +53,6 @@ local pdfstring = lpdf.string local pdfconstant = lpdf.constant local pdftoeight = lpdf.toeight local pdfflushobject = lpdf.flushobject -local pdfimmediateobject = lpdf.immediateobject local pdfshareobjectreference = lpdf.shareobjectreference local pdfshareobject = lpdf.shareobject local pdfreserveobject = lpdf.reserveobject @@ -369,11 +368,19 @@ local function fieldstates(specification,forceyes,values,default) else default = pdf_off end - local appearance = pdfdictionary { -- maybe also cache components - N = pdfdictionary { [forceyes or yesn] = registeredsymbol(yesn), Off = registeredsymbol(offn) }, - R = pdfdictionary { [forceyes or yesr] = registeredsymbol(yesr), Off = registeredsymbol(offr) }, - D = pdfdictionary { [forceyes or yesd] = registeredsymbol(yesd), Off = registeredsymbol(offd) } - } + if false then -- needs testing + local appearance = pdfdictionary { -- maybe also cache components + N = pdfshareobjectreference(pdfdictionary { [forceyes or yesn] = registeredsymbol(yesn), Off = registeredsymbol(offn) }), + R = pdfshareobjectreference(pdfdictionary { [forceyes or yesr] = registeredsymbol(yesr), Off = registeredsymbol(offr) }), + D = pdfshareobjectreference(pdfdictionary { [forceyes or yesd] = registeredsymbol(yesd), Off = registeredsymbol(offd) }), + } + else + local appearance = pdfdictionary { -- maybe also cache components + N = pdfdictionary { [forceyes or yesn] = registeredsymbol(yesn), Off = registeredsymbol(offn) }, + R = pdfdictionary { [forceyes or yesr] = registeredsymbol(yesr), Off = registeredsymbol(offr) }, + D = pdfdictionary { [forceyes or yesd] = registeredsymbol(yesd), Off = registeredsymbol(offd) } + } + end local appearanceref = pdfshareobjectreference(appearance) return appearanceref, default, yesvalue end diff --git a/tex/context/base/lpdf-fmt.lua b/tex/context/base/lpdf-fmt.lua index 017e28ebb..29f2ef5a0 100644 --- a/tex/context/base/lpdf-fmt.lua +++ b/tex/context/base/lpdf-fmt.lua @@ -10,6 +10,9 @@ if not modules then modules = { } end modules ['lpdf-fmt'] = { -- context --directives="backend.format=PDF/X-1a:2001" --trackers=backend.format yourfile +local lower, gmatch, format, find = string.lower, string.gmatch, string.format, string.find +local concat, serialize = table.concat, table.serialize + local trace_format = false trackers.register("backend.format", function(v) trace_format = v end) local trace_variables = false trackers.register("backend.variables", function(v) trace_variables = v end) @@ -17,27 +20,28 @@ local report_backend = logs.reporter("backend","profiles") local backends, lpdf = backends, lpdf -local codeinjections = backends.pdf.codeinjections +local codeinjections = backends.pdf.codeinjections -local variables = interfaces.variables -local viewerlayers = attributes.viewerlayers -local colors = attributes.colors -local transparencies = attributes.transparencies +local variables = interfaces.variables +local viewerlayers = attributes.viewerlayers +local colors = attributes.colors +local transparencies = attributes.transparencies -local pdfdictionary = lpdf.dictionary -local pdfarray = lpdf.array -local pdfconstant = lpdf.constant -local pdfreference = lpdf.reference -local pdfflushobject = lpdf.flushobject -local pdfstring = lpdf.string -local pdfverbose = lpdf.verbose -local pdfobject = lpdf.object +local pdfdictionary = lpdf.dictionary +local pdfarray = lpdf.array +local pdfconstant = lpdf.constant +local pdfreference = lpdf.reference +local pdfflushobject = lpdf.flushobject +local pdfstring = lpdf.string +local pdfverbose = lpdf.verbose +local pdfflushstreamfileobject = lpdf.flushstreamfileobject -local addtoinfo, injectxmpinfo, insertxmpinfo = lpdf.addtoinfo, lpdf.injectxmpinfo, lpdf.insertxmpinfo +local addtoinfo = lpdf.addtoinfo +local injectxmpinfo = lpdf.injectxmpinfo +local insertxmpinfo = lpdf.insertxmpinfo -local lower, gmatch, format, find = string.lower, string.gmatch, string.format, string.find -local concat, serialize = table.concat, table.serialize -local settings_to_array, settings_to_hash = utilities.parsers.settings_to_array, utilities.parsers.settings_to_hash +local settings_to_array = utilities.parsers.settings_to_array +local settings_to_hash = utilities.parsers.settings_to_hash --[[ Comments by Peter: @@ -434,14 +438,7 @@ local function handleinternalprofile(s,include) elseif not channel then report_backend("error, couldn't resolve channel entry for colorspace '%s'",colorspace) else - local a = pdfdictionary { N = channel } - profile = pdfobject { -- does a flush too - compresslevel = 0, - immediate = true, -- ! - type = "stream", - file = fullname, - attr = a(), - } + profile = pdfflushstreamfileobject(fullname,{ N = channel },false) -- uncompressed internalprofiles[tag] = profile if trace_format then report_backend("including '%s' color profile from '%s'",colorspace,fullname) diff --git a/tex/context/base/lpdf-grp.lua b/tex/context/base/lpdf-grp.lua index 2f7684a4d..5ea0442b6 100644 --- a/tex/context/base/lpdf-grp.lua +++ b/tex/context/base/lpdf-grp.lua @@ -6,7 +6,9 @@ if not modules then modules = { } end modules ['lpdf-grp'] = { license = "see context related readme files" } -local format = string.format +local format, gsub = string.format, string.gsub +local concat = table.concat +local round = math.round local backends, lpdf = backends, lpdf @@ -61,29 +63,6 @@ function lpdf.linearshade(name,domain,color_a,color_b,n,colorspace,coordinates,s shade(2,name,domain,color_a,color_b,n,colorspace,coordinates,separation) end -function lpdf.colorspec(model,ca,default) - if ca and ca > 0 then - local cv = colors.value(ca) - if cv then - if model == 1 then - model = cv[1] - end - if model == 2 then - return pdfarray { cv[2] } - elseif model == 3 then - return pdfarray { cv[3],cv[4],cv[5] } - elseif model == 4 then - return pdfarray { cv[6],cv[7],cv[8],cv[9] } - elseif model == 5 then - return pdfarray { cv[13] } - end - end - end - if default then - return default - end -end - -- inline bitmaps but xform'd -- -- we could derive the colorspace if we strip the data @@ -101,7 +80,7 @@ function nodeinjections.injectbitmap(t) local colorspace = t.colorspace if colorspace ~= "rgb" and colorspace ~= "cmyk" and colorspace ~= "gray" then -- not that efficient but ok - local d = string.gsub(t.data,"[^0-9a-f]","") + local d = gsub(t.data,"[^0-9a-f]","") local b = math.round(#d / (xresolution * yresolution)) if b == 2 then colorspace = "gray" @@ -148,3 +127,120 @@ function nodeinjections.injectbitmap(t) } return img.node(image) end + +-- general graphic helpers + +function codeinjections.setfigurealternative(data,figure) + local request = data.request + local display = request.display + if display and display ~= "" then + local nested = figures.push { + name = display, + page = request.page, + size = request.size, + prefix = request.prefix, + cache = request.cache, + width = request.width, + height = request.height, + } + figures.identify() + local displayfigure = figures.check() + if displayfigure then + -- figure.aform = true + img.immediatewrite(figure) + local a = pdfarray { + pdfdictionary { + Image = pdfreference(figure.objnum), + DefaultForPrinting = true, + } + } + local d = pdfdictionary { + Alternates = pdfreference(pdfflushobject(a)), + } + displayfigure.attr = d() + figures.pop() + return displayfigure, nested + else + figures.pop() + end + end +end + +function codeinjections.getpreviewfigure(request) + local figure = figures.initialize(request) + if not figure then + return + end + figure = figures.identify(figure) + if not figure then + return + end + figure = figures.check(figure) + if not figure then + return + end + local image = figure.status.private + if image then + img.immediatewrite(image) + end + return figure +end + +function codeinjections.setfiguremask(data,figure) -- mark + local request = data.request + local mask = request.mask + if mask and mask ~= "" then + figures.push { + name = mask, + page = request.page, + size = request.size, + prefix = request.prefix, + cache = request.cache, + width = request.width, + height = request.height, + } + figures.identify() + local maskfigure = figures.check() + if maskfigure then + local image = maskfigure.status.private + if image then + img.immediatewrite(image) + local d = pdfdictionary { + Interpolate = false, + SMask = pdfreference(image.objnum), + } + figure.attr = d() + end + end + figures.pop() + end +end + +-- temp hack + +local factor = number.dimenfactors.bp + +function img.package(image) -- see lpdf-u3d ** + local boundingbox = image.bbox + local imagetag = "Im" .. image.index + local resources = pdfdictionary { + ProcSet = pdfarray { + pdfconstant("PDF"), + pdfconstant("ImageC") + }, + Resources = pdfdictionary { + XObject = pdfdictionary { + [imagetag] = pdfreference(image.objnum) + } + } + } + local width = boundingbox[3] + local height = boundingbox[4] + local xform = img.scan { + attr = resources(), + stream = format("%s 0 0 %s 0 0 cm /%s Do",width,height,imagetag), + bbox = { 0, 0, width/factor, height/factor }, + } + img.immediatewrite(xform) + return xform +end diff --git a/tex/context/base/lpdf-ini.lua b/tex/context/base/lpdf-ini.lua index 74ecb36de..e22e33b4d 100644 --- a/tex/context/base/lpdf-ini.lua +++ b/tex/context/base/lpdf-ini.lua @@ -13,14 +13,13 @@ local texset = tex.set local sind, cosd = math.sind, math.cosd local lpegmatch = lpeg.match ---~ local pdfreserveobject = pdf and pdf.reserveobj or function() return 1 end -- for testing ---~ local pdfimmediateobject = pdf and pdf.immediateobj or function() return 2 end -- for testing - local pdfreserveobject = pdf.reserveobj local pdfimmediateobject = pdf.immediateobj local pdfdeferredobject = pdf.obj local pdfreferenceobject = pdf.refobj +local pdfobject = pdf.obj + local trace_finalizers = false trackers.register("backend.finalizers", function(v) trace_finalizers = v end) local trace_resources = false trackers.register("backend.resources", function(v) trace_resources = v end) local trace_objects = false trackers.register("backend.objects", function(v) trace_objects = v end) @@ -374,14 +373,15 @@ function lpdf.reserveannotation() return pdfreserveobject("annot") end -lpdf.immediateobject = pdfimmediateobject -lpdf.object = pdfdeferredobject -- the table interface, todo: auto attr() and so -lpdf.deferredobject = pdfdeferredobject -lpdf.referenceobject = pdfreferenceobject +-- lpdf.immediateobject = pdfimmediateobject +-- lpdf.deferredobject = pdfdeferredobject +-- lpdf.object = pdfdeferredobject +-- lpdf.referenceobject = pdfreferenceobject + lpdf.pagereference = pdf.pageref or tex.pdfpageref lpdf.registerannotation = pdf.registerannot -function lpdf.delayedobject(data) +function lpdf.delayedobject(data) -- we will get rid of this one local n = pdfdeferredobject(data) pdfreferenceobject(n) return n @@ -415,6 +415,35 @@ function lpdf.flushobject(name,data) end end + +function lpdf.flushstreamobject(data,dict,compressed) -- default compressed + if trace_objects then + report_objects("flushing stream object of %s bytes",#data) + end + local dtype = type(dict) + return pdfobject { + immediate = true, + compresslevel = compressed == false and 0 or nil, + type = "stream", + string = data, + attr = (dtype == "string" and dict) or (dtype == "table" and dict()) or nil, + } +end + +function lpdf.flushstreamfileobject(filename,dict,compressed) -- default compressed + if trace_objects then + report_objects("flushing stream file object '%s'",filename) + end + local dtype = type(dict) + return pdfobject { + immediate = true, + compresslevel = compressed == false and 0 or nil, + type = "stream", + file = filename, + attr = (dtype == "string" and dict) or (dtype == "table" and dict()) or nil, + } +end + local shareobjectcache, shareobjectreferencecache = { }, { } function lpdf.shareobject(content) diff --git a/tex/context/base/lpdf-mis.lua b/tex/context/base/lpdf-mis.lua index 426c00286..024127a4c 100644 --- a/tex/context/base/lpdf-mis.lua +++ b/tex/context/base/lpdf-mis.lua @@ -21,35 +21,33 @@ local texset = tex.set local backends, lpdf, nodes = backends, lpdf, nodes -local nodeinjections = backends.pdf.nodeinjections -local codeinjections = backends.pdf.codeinjections -local registrations = backends.pdf.registrations - -local copy_node = node.copy - -local nodepool = nodes.pool - -local pdfliteral, register = nodepool.pdfliteral, nodepool.register - -local pdfdictionary = lpdf.dictionary -local pdfarray = lpdf.array -local pdfboolean = lpdf.boolean -local pdfconstant = lpdf.constant -local pdfreference = lpdf.reference -local pdfunicode = lpdf.unicode -local pdfverbose = lpdf.verbose -local pdfstring = lpdf.string -local pdfflushobject = lpdf.flushobject -local pdfimmediateobject = lpdf.immediateobject - -local variables = interfaces.variables - --- - -local positive = register(pdfliteral("/GSpositive gs")) -local negative = register(pdfliteral("/GSnegative gs")) -local overprint = register(pdfliteral("/GSoverprint gs")) -local knockout = register(pdfliteral("/GSknockout gs")) +local nodeinjections = backends.pdf.nodeinjections +local codeinjections = backends.pdf.codeinjections +local registrations = backends.pdf.registrations + +local copy_node = node.copy + +local nodepool = nodes.pool +local pdfliteral = nodepool.pdfliteral +local register = nodepool.register + +local pdfdictionary = lpdf.dictionary +local pdfarray = lpdf.array +local pdfboolean = lpdf.boolean +local pdfconstant = lpdf.constant +local pdfreference = lpdf.reference +local pdfunicode = lpdf.unicode +local pdfverbose = lpdf.verbose +local pdfstring = lpdf.string +local pdfflushobject = lpdf.flushobject +local pdfflushstreamobject = lpdf.flushstreamobject + +local variables = interfaces.variables + +local positive = register(pdfliteral("/GSpositive gs")) +local negative = register(pdfliteral("/GSnegative gs")) +local overprint = register(pdfliteral("/GSoverprint gs")) +local knockout = register(pdfliteral("/GSknockout gs")) local function initializenegative() local a = pdfarray { 0, 1 } @@ -59,7 +57,7 @@ local function initializenegative() Range = a, Domain = a, } - local negative = pdfdictionary { Type = g, TR = pdfreference(pdfimmediateobject("stream","1 exch sub",d())) } + local negative = pdfdictionary { Type = g, TR = pdfreference(pdfflushstreamobject("1 exch sub",d)) } local positive = pdfdictionary { Type = g, TR = pdfconstant("Identity") } lpdf.adddocumentextgstate("GSnegative", pdfreference(pdfflushobject(negative))) lpdf.adddocumentextgstate("GSPositive", pdfreference(pdfflushobject(positive))) @@ -212,7 +210,7 @@ local function flushjavascripts() local name, script = t[i][1], t[i][2] local j = pdfdictionary { S = pdf_javascript, - JS = pdfreference(pdfimmediateobject("stream",script)), + JS = pdfreference(pdfflushstreamobject(script)), } a[#a+1] = pdfstring(name) a[#a+1] = pdfreference(pdfflushobject(j)) diff --git a/tex/context/base/lpdf-mov.lua b/tex/context/base/lpdf-mov.lua new file mode 100644 index 000000000..47e2fbb2a --- /dev/null +++ b/tex/context/base/lpdf-mov.lua @@ -0,0 +1,63 @@ +if not modules then modules = { } end modules ['lpdf-mov'] = { + version = 1.001, + comment = "companion to lpdf-ini.mkiv", + author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", + copyright = "PRAGMA ADE / ConTeXt Development Team", + license = "see context related readme files" +} + +local format = string.format + +local lpdf = lpdf + +local nodeinjections = backends.pdf.nodeinjections +local pdfannotation_node = nodes.pool.pdfannotation +local pdfconstant = lpdf.constant +local pdfdictionary = lpdf.dictionary +local pdfarray = lpdf.array +local write_node = node.write + +function nodeinjections.insertmovie(specification) + -- managed in figure inclusion: width, height, factor, repeat, controls, preview, label, foundname + local width = specification.width + local height = specification.height + local factor = specification.factor or number.dimenfactors.bp + local moviedict = pdfdictionary { + F = specification.foundname, + Aspect = pdfarray { factor * width, factor * height }, + Poster = (specification.preview and true) or false, + } + local controldict = pdfdictionary { + ShowControls = (specification.controls and true) or false, + Mode = (specification["repeat"] and pdfconstant("Repeat")) or nil, + } + local action = pdfdictionary { + Subtype = pdfconstant("Movie"), + Border = pdfarray { 0, 0, 0 }, + T = format("movie %s",specification.label), + Movie = moviedict, + A = controldict, + } + write_node(pdfannotation_node(width,height,0,action())) +end + +function nodeinjections.insertsound(specification) + -- rmanaged in interaction: repeat, label, foundname + local soundclip = interactions.soundclips.soundclip(specification.label) + if soundclip then + local controldict = pdfdictionary { + Mode = (specification["repeat"] and pdfconstant("Repeat")) or nil + } + local sounddict = pdfdictionary { + F = soundclip.filename + } + local action = pdfdictionary { + Subtype = pdfconstant("Movie"), + Border = pdfarray { 0, 0, 0 }, + T = format("sound %s",specification.label), + Movie = sounddict, + A = controldict, + } + write_node(pdfannotation_node(0,0,0,action())) + end +end diff --git a/tex/context/base/lpdf-nod.lua b/tex/context/base/lpdf-nod.lua index 39bba2d63..184e9cff7 100644 --- a/tex/context/base/lpdf-nod.lua +++ b/tex/context/base/lpdf-nod.lua @@ -6,17 +6,17 @@ if not modules then modules = { } end modules ['lpdf-nod'] = { license = "see context related readme files" } -local copy_node, new_node = node.copy, node.new +local copy_node = node.copy +local new_node = node.new -local nodepool = nodes.pool - -local register = nodepool.register +local nodepool = nodes.pool +local register = nodepool.register local pdfliteral = register(new_node("whatsit", 8)) pdfliteral.mode = 1 local pdfdest = register(new_node("whatsit",19)) pdfdest.named_id = 1 -- xyz_zoom untouched local pdfannot = register(new_node("whatsit",15)) -local variables = interfaces.variables +local variables = interfaces.variables local views = { -- beware, we do support the pdf keys but this is *not* official xyz = 0, [variables.standard] = 0, diff --git a/tex/context/base/lpdf-ren.lua b/tex/context/base/lpdf-ren.lua index 54c78845e..4221a8e47 100644 --- a/tex/context/base/lpdf-ren.lua +++ b/tex/context/base/lpdf-ren.lua @@ -12,7 +12,7 @@ local tostring, tonumber, next = tostring, tonumber, next local format = string.format local settings_to_array = utilities.parsers.settings_to_array -local backends, lpdf = backends, lpdf +local backends, lpdf, nodes, node = backends, lpdf, nodes, node local nodeinjections = backends.pdf.nodeinjections local codeinjections = backends.pdf.codeinjections @@ -41,6 +41,10 @@ local pdfreference = lpdf.reference local pdfflushobject = lpdf.flushobject local pdfreserveobject = lpdf.reserveobject +local nodepool = nodes.pool +local register = nodepool.register +local pdfliteral = nodepool.pdfliteral + local pdf_ocg = pdfconstant("OCG") local pdf_ocmd = pdfconstant("OCMD") local pdf_off = pdfconstant("OFF") @@ -48,12 +52,56 @@ local pdf_on = pdfconstant("ON") local pdf_toggle = pdfconstant("Toggle") local pdf_setocgstate = pdfconstant("SetOCGState") +local copy_node = node.copy + local lpdf_usage = pdfdictionary { Print = pdfdictionary { PrintState = pdf_off } } -- We can have references to layers before they are places, for instance from -- hide and vide actions. This is why we need to be able to force usage of layers -- at several moments. +-- injection + +local cache = { } + +function codeinjections.startlayer(name) + codeinjections.useviewerlayer(name) + return format("/OC /%s BDC",name) +end + +function codeinjections.stoplayer(name) + return "EMC" +end + +function nodeinjections.startlayer(name) + local c = cache[name] + if not c then + codeinjections.useviewerlayer(name) + c = register(pdfliteral(format("/OC /%s BDC",name))) + cache[name] = c + end + return copy_node(c) +end + +local stop = register(pdfliteral("EMC")) + +function nodeinjections.stoplayer() + return copy_node(stop) +end + +local cache = { } + +function nodeinjections.switchlayer(name) -- not used, optimization + local c = cache[name] + if not c then + codeinjections.useviewerlayer(name) + c = register(pdfliteral(format("EMC /OC /%s BDC",name))) + end + return copy_node(c) +end + +-- management + local pdfln, pdfld = { }, { } local textlayers, hidelayers, videlayers = pdfarray(), pdfarray(), pdfarray() local pagelayers, pagelayersreference, cache = nil, nil, { } diff --git a/tex/context/base/lpdf-swf.lua b/tex/context/base/lpdf-swf.lua index 04825446c..3825bd44e 100644 --- a/tex/context/base/lpdf-swf.lua +++ b/tex/context/base/lpdf-swf.lua @@ -21,7 +21,7 @@ local pdfdictionary = lpdf.dictionary local pdfarray = lpdf.array local pdfnull = lpdf.null local pdfreference = lpdf.reference -local pdfimmediateobject = lpdf.immediateobject +local pdfflushobject = lpdf.flushobject local checkedkey = lpdf.checkedkey @@ -75,7 +75,7 @@ local function insertswf(spec) }, } - local flashreference = pdfreference(pdfimmediateobject(tostring(flash))) + local flashreference = pdfreference(pdfflushobject(flash)) local configuration = pdfdictionary { Configurations = pdfarray { flashreference }, @@ -112,7 +112,7 @@ local function insertswf(spec) end end - local configurationreference = pdfreference(pdfimmediateobject(tostring(configuration))) + local configurationreference = pdfreference(pdfflushobject(configuration)) local activation = pdfdictionary { Type = pdfconstant("RichMediaActivation"), @@ -165,7 +165,7 @@ local function insertswf(spec) Deactivation = deactivation, } - local settingsreference = pdfreference(pdfimmediateobject(tostring(richmediasettings))) + local settingsreference = pdfreference(pdfflushobject(richmediasettings)) local appearance diff --git a/tex/context/base/lpdf-tag.lua b/tex/context/base/lpdf-tag.lua index 06f3377bc..0be9d3452 100644 --- a/tex/context/base/lpdf-tag.lua +++ b/tex/context/base/lpdf-tag.lua @@ -297,11 +297,14 @@ function nodeinjections.addtags(head) return head, true end +-- this belongs elsewhere (export is not pdf related) + function codeinjections.enabletags(tg,lb) structures.tags.handler = nodeinjections.addtags tasks.enableaction("shipouts","structures.tags.handler") tasks.enableaction("shipouts","nodes.handlers.accessibility") tasks.enableaction("math","noads.handlers.tags") + -- maybe also textblock if trace_tags then report_tags("enabling structure tags") end diff --git a/tex/context/base/lpdf-u3d.lua b/tex/context/base/lpdf-u3d.lua index f5a2bc2fa..ac6038997 100644 --- a/tex/context/base/lpdf-u3d.lua +++ b/tex/context/base/lpdf-u3d.lua @@ -22,22 +22,23 @@ local cos, sin, sqrt, pi, atan2, abs = math.cos, math.sin, math.sqrt, math.pi, m local backends, lpdf = backends, lpdf -local nodeinjections = backends.pdf.nodeinjections +local nodeinjections = backends.pdf.nodeinjections -local pdfconstant = lpdf.constant -local pdfboolean = lpdf.boolean -local pdfnumber = lpdf.number -local pdfunicode = lpdf.unicode -local pdfdictionary = lpdf.dictionary -local pdfarray = lpdf.array -local pdfnull = lpdf.null -local pdfreference = lpdf.reference -local pdfimmediateobject = lpdf.immediateobject +local pdfconstant = lpdf.constant +local pdfboolean = lpdf.boolean +local pdfnumber = lpdf.number +local pdfunicode = lpdf.unicode +local pdfdictionary = lpdf.dictionary +local pdfarray = lpdf.array +local pdfnull = lpdf.null +local pdfreference = lpdf.reference +local pdfflushstreamobject = lpdf.flushstreamobject +local pdfflushstreamfileobject = lpdf.flushstreamfileobject -local checkedkey = lpdf.checkedkey -local limited = lpdf.limited +local checkedkey = lpdf.checkedkey +local limited = lpdf.limited -local pdfannotation_node = nodes.pool.pdfannotation +local pdfannotation_node = nodes.pool.pdfannotation local schemes = table.tohash { "Artwork", "None", "White", "Day", "Night", "Hard", @@ -397,12 +398,12 @@ local function insert3d(spec) -- width, height, factor, display, controls, label if js then local jsref = stored_js[js] if not jsref then - jsref = pdfimmediateobject("streamfile",js) + jsref = pdfflushstreamfileobject(js) stored_js[js] = jsref end attr.OnInstantiate = pdfreference(jsref) end - stored_3d[label] = pdfimmediateobject("streamfile",foundname,attr()) + stored_3d[label] = pdfflushstreamfileobject(foundname,attr) stream = 1 else stream = stream + 1 @@ -436,14 +437,10 @@ local function insert3d(spec) -- width, height, factor, display, controls, label width = width, height = height } - -- local figure = img.immediatewrite { - -- stream = ".5 .75 .75 rg 0 0 20 10 re f", - -- bbox = { 0, 0, 20, 10 } - -- } ref = figure.objnum stored_pr[tag] = ref end - if ref then + if ref then -- see back-pdf ** .. here we have a local /IM ! local zero, one = pdfnumber(0), pdfnumber(1) -- not really needed local pw = pdfdictionary { Type = pdfconstant("XObject"), @@ -465,12 +462,7 @@ local function insert3d(spec) -- width, height, factor, display, controls, label }, ProcSet = pdfarray { pdfconstant("PDF"), pdfconstant("ImageC") }, } - local pwd = pdfimmediateobject( - "stream", - format("q /GS gs %s 0 0 %s 0 0 cm /IM Do Q", - factor*width,factor*height), - pw() - ) + local pwd = pdfflushstreamobject(format("q /GS gs %s 0 0 %s 0 0 cm /IM Do Q",factor*width,factor*height),pw) annot.AP = pdfdictionary { N = pdfreference(pwd) } diff --git a/tex/context/base/lpdf-wid.lua b/tex/context/base/lpdf-wid.lua index d0247f49a..3aa51c536 100644 --- a/tex/context/base/lpdf-wid.lua +++ b/tex/context/base/lpdf-wid.lua @@ -16,43 +16,44 @@ local report_attachment = logs.reporter("backend","attachment") local backends, lpdf, nodes = backends, lpdf, nodes -local nodeinjections = backends.pdf.nodeinjections -local codeinjections = backends.pdf.codeinjections -local registrations = backends.pdf.registrations - -local executers = structures.references.executers -local variables = interfaces.variables - -local v_hidden = variables.hidden -local v_normal = variables.normal -local v_auto = variables.auto -local v_embed = variables.embed -local v_unknown = variables.unknown -local v_max = variables.max - -local pdfconstant = lpdf.constant -local pdfdictionary = lpdf.dictionary -local pdfarray = lpdf.array -local pdfreference = lpdf.reference -local pdfunicode = lpdf.unicode -local pdfstring = lpdf.string -local pdfboolean = lpdf.boolean -local pdfcolorspec = lpdf.colorspec -local pdfflushobject = lpdf.flushobject -local pdfreserveannotation = lpdf.reserveannotation -local pdfreserveobject = lpdf.reserveobject -local pdfimmediateobject = lpdf.immediateobject -local pdfpagereference = lpdf.pagereference -local pdfshareobjectreference = lpdf.shareobjectreference - -local nodepool = nodes.pool - -local pdfannotation_node = nodepool.pdfannotation - -local hpack_node = node.hpack -local write_node = node.write - -local pdf_border = pdfarray { 0, 0, 0 } -- can be shared +local nodeinjections = backends.pdf.nodeinjections +local codeinjections = backends.pdf.codeinjections +local registrations = backends.pdf.registrations + +local executers = structures.references.executers +local variables = interfaces.variables + +local v_hidden = variables.hidden +local v_normal = variables.normal +local v_auto = variables.auto +local v_embed = variables.embed +local v_unknown = variables.unknown +local v_max = variables.max + +local pdfconstant = lpdf.constant +local pdfdictionary = lpdf.dictionary +local pdfarray = lpdf.array +local pdfreference = lpdf.reference +local pdfunicode = lpdf.unicode +local pdfstring = lpdf.string +local pdfboolean = lpdf.boolean +local pdfcolorspec = lpdf.colorspec +local pdfflushobject = lpdf.flushobject +local pdfflushstreamobject = lpdf.flushstreamobject +local pdfflushstreamfileobject = lpdf.flushstreamfileobject +local pdfreserveannotation = lpdf.reserveannotation +local pdfreserveobject = lpdf.reserveobject +local pdfpagereference = lpdf.pagereference +local pdfshareobjectreference = lpdf.shareobjectreference + +local nodepool = nodes.pool + +local pdfannotation_node = nodepool.pdfannotation + +local hpack_node = node.hpack +local write_node = node.write + +local pdf_border = pdfarray { 0, 0, 0 } -- can be shared -- symbols @@ -247,11 +248,11 @@ local basename = string.gsub(basename,"%./","") local a = pdfdictionary { Type = pdfconstant("EmbeddedFile") } local f if data then - f = pdfimmediateobject("stream",data,a()) + f = pdfflushstreamobject(data,a) specification.data = true -- signal that still data but already flushed else local foundname = specification.foundname or filename - f = pdfimmediateobject("streamfile",foundname,a()) + f = pdfflushstreamfileobject(foundname,a) end local d = pdfdictionary { Type = pdfconstant("Filespec"), @@ -269,10 +270,11 @@ function nodeinjections.attachfile(specification) local registered = specification.registered or "<unset>" local data = specification.data local hash + local filename if data then hash = md5.HEX(data) else - local filename = specification.file + filename = specification.file if not filename or filename == "" then report_attachment("missing file specification: registered '%s', using registered instead",registered) filename = registered @@ -301,7 +303,7 @@ function nodeinjections.attachfile(specification) title = "" end if author == "" then - author = v_unknown + author = filename or "<unknown>" end if title == "" then title = registered diff --git a/tex/context/base/lpdf-xmp.lua b/tex/context/base/lpdf-xmp.lua index c9bead8a5..557141449 100644 --- a/tex/context/base/lpdf-xmp.lua +++ b/tex/context/base/lpdf-xmp.lua @@ -16,14 +16,14 @@ local report_xmp = logs.reporter("backend","xmp") local backends, lpdf = backends, lpdf -local codeinjections = backends.pdf.codeinjections -- normally it is registered +local codeinjections = backends.pdf.codeinjections -- normally it is registered -local pdfdictionary = lpdf.dictionary -local pdfconstant = lpdf.constant -local pdfreference = lpdf.reference -local pdfobject = lpdf.object +local pdfdictionary = lpdf.dictionary +local pdfconstant = lpdf.constant +local pdfreference = lpdf.reference +local pdfflushstreamobject = lpdf.flushstreamobject --- i wonder why this begin end is empty / w (no time now to look into it) +-- I wonder why this begin end is empty / w (no time now to look into it) local xpacket = [[ <?xpacket begin="" id="%s"?> @@ -182,13 +182,7 @@ local function flushxmpinfo() if not verbose and tex.pdfcompresslevel > 0 then blob = gsub(blob,">%s+<","><") end - local r = pdfobject { - immediate = true, - compresslevel = 0, - type = "stream", - string = blob, - attr = md(), - } + local r = pdfflushstreamobject(blob,md,false) -- uncompressed lpdf.addtocatalog("Metadata",pdfreference(r)) commands.defrostrandomseed() -- hack diff --git a/tex/context/base/luat-bas.mkiv b/tex/context/base/luat-bas.mkiv index d5075b4cb..77b3be781 100644 --- a/tex/context/base/luat-bas.mkiv +++ b/tex/context/base/luat-bas.mkiv @@ -5,7 +5,7 @@ %D subtitle=Basic \LUA\ Libraries, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/luat-cod.mkiv b/tex/context/base/luat-cod.mkiv index 47a898440..d3512cc67 100644 --- a/tex/context/base/luat-cod.mkiv +++ b/tex/context/base/luat-cod.mkiv @@ -5,7 +5,7 @@ %D subtitle=Code, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/luat-fio.lua b/tex/context/base/luat-fio.lua index 5deb704f6..b7144c343 100644 --- a/tex/context/base/luat-fio.lua +++ b/tex/context/base/luat-fio.lua @@ -36,6 +36,8 @@ if not resolvers.instance then local register = callbacks.register + -- register('process_jobname' , function(name) return name end, true) + register('find_read_file' , function(id,name) return findtexfile(name) end, true) register('open_read_file' , function( name) return opentexfile(name) end, true) diff --git a/tex/context/base/luat-ini.mkiv b/tex/context/base/luat-ini.mkiv index a79ef6a02..a4ac23420 100644 --- a/tex/context/base/luat-ini.mkiv +++ b/tex/context/base/luat-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/luat-lib.mkiv b/tex/context/base/luat-lib.mkiv index 83b96639b..5a53b7ea2 100644 --- a/tex/context/base/luat-lib.mkiv +++ b/tex/context/base/luat-lib.mkiv @@ -5,7 +5,7 @@ %D subtitle=Libraries, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lxml-ctx.mkiv b/tex/context/base/lxml-ctx.mkiv index 73d082d0d..ab4e2546c 100644 --- a/tex/context/base/lxml-ctx.mkiv +++ b/tex/context/base/lxml-ctx.mkiv @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lxml-ent.lua b/tex/context/base/lxml-ent.lua index 5b24d9d68..f525d42d2 100644 --- a/tex/context/base/lxml-ent.lua +++ b/tex/context/base/lxml-ent.lua @@ -68,6 +68,22 @@ function xml.resolvedentity(str) end end -entities.amp = function() tex.write("&") end -entities.lt = function() tex.write("<") end -entities.gt = function() tex.write(">") end +--~ entities.amp = function() tex.write("&") end +--~ entities.lt = function() tex.write("<") end +--~ entities.gt = function() tex.write(">") end + +if characters and characters.entities then + + function characters.registerentities(forcecopy) + if forcecopy then + for name, value in next, characters.entities do + if not entities[name] then + entities[name] = value + end + end + else + table.setmetatableindex(xml.entities,characters.entities) + end + end + +end diff --git a/tex/context/base/lxml-ini.mkiv b/tex/context/base/lxml-ini.mkiv index a1d6b50a8..f54bfa0be 100644 --- a/tex/context/base/lxml-ini.mkiv +++ b/tex/context/base/lxml-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -20,10 +20,12 @@ %registerctxluafile{lxml-xml}{1.001} % xml finalizers %registerctxluafile{lxml-aux}{1.001} % extras using parser %registerctxluafile{lxml-mis}{1.001} % extras independent of parser +\registerctxluafile{char-ent}{1.001} \registerctxluafile{lxml-ent}{1.001} % entity hacks \registerctxluafile{lxml-tex}{1.001} % tex finalizers \registerctxluafile{lxml-dir}{1.001} % ctx hacks + \unprotect \def\c!entities{entities} % to be internationalized @@ -334,7 +336,7 @@ \def\xmlwithindex #1#2{\ctxlxml{withindex("\xmldocument","#1","#2")}} \def\xmlreference #1#2{\string\xmlwithindex{#1}{#2}} -%D Entities: +%D Entities (might change): \setnewconstant\xmlautoentities\plusone % 0=off, 1=upper, 2=upper,lower @@ -375,6 +377,24 @@ #1% \fi\fi} +% handy helpers (analogue to MP and LUA and TEX and also MkII) + +\unexpanded\def\processXMLbuffer + {\dosingleempty\doprocessXMLbuffer} + +\def\doprocessXMLbuffer[#1]% + {\xmlprocessbuffer{temp}{#1}{}} + +\unexpanded\def\processXMLfile#1% + {\xmlprocessfile{temp}{#1}{}} + +\unexpanded\def\XMLdata#1% + {\xmlprocessdata{temp}{#1}{}} + +\let\processxmlbuffer\processXMLbuffer +\let\processxmlfile \processXMLfile +\let\xmldata \XMLdata + \protect \endinput % \newcount\charactersactiveoffset \charactersactiveoffset="10000 diff --git a/tex/context/base/lxml-sor.mkiv b/tex/context/base/lxml-sor.mkiv index a3fc83dd1..88952d661 100644 --- a/tex/context/base/lxml-sor.mkiv +++ b/tex/context/base/lxml-sor.mkiv @@ -5,7 +5,7 @@ %D subtitle=Sorting, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/lxml-tab.lua b/tex/context/base/lxml-tab.lua index 7d38a8d5a..1c52e4013 100644 --- a/tex/context/base/lxml-tab.lua +++ b/tex/context/base/lxml-tab.lua @@ -399,6 +399,10 @@ local function handle_any_entity(str) a = entities[str] end if a then +if type(a) == "function" then + report_xml("expanding entity &%s; (function)",str) + a = a(str) or "" +end if trace_entities then report_xml("resolved entity &%s; -> %s (internal)",str,a) end @@ -530,6 +534,8 @@ local function normalentity(k,v ) entities[k] = v end local function systementity(k,v,n) entities[k] = v end local function publicentity(k,v,n) entities[k] = v end +-- todo: separate dtd parser + local begindoctype = open * P("!DOCTYPE") local enddoctype = close local beginset = P("[") @@ -537,12 +543,16 @@ local endset = P("]") local doctypename = C((1-somespace-close)^0) local elementdoctype = optionalspace * P("<!ELEMENT") * (1-close)^0 * close +local basiccomment = begincomment * ((1 - endcomment)^0) * endcomment + local normalentitytype = (doctypename * somespace * value)/normalentity local publicentitytype = (doctypename * somespace * P("PUBLIC") * somespace * value)/publicentity local systementitytype = (doctypename * somespace * P("SYSTEM") * somespace * value * somespace * P("NDATA") * somespace * doctypename)/systementity local entitydoctype = optionalspace * P("<!ENTITY") * somespace * (systementitytype + publicentitytype + normalentitytype) * optionalspace * close -local doctypeset = beginset * optionalspace * P(elementdoctype + entitydoctype + space)^0 * optionalspace * endset +-- we accept comments in doctypes + +local doctypeset = beginset * optionalspace * P(elementdoctype + entitydoctype + basiccomment + space)^0 * optionalspace * endset local definitiondoctype= doctypename * somespace * doctypeset local publicdoctype = doctypename * somespace * P("PUBLIC") * somespace * value * somespace * value * somespace * doctypeset local systemdoctype = doctypename * somespace * P("SYSTEM") * somespace * value * somespace * doctypeset diff --git a/tex/context/base/lxml-tex.lua b/tex/context/base/lxml-tex.lua index 26a8b2996..441cdb264 100644 --- a/tex/context/base/lxml-tex.lua +++ b/tex/context/base/lxml-tex.lua @@ -336,12 +336,13 @@ end local entities = xml.entities local function entityconverter(id,str) - return entities[str] and "&"..str..";" -- feed back into tex end later + return entities[str] or "" -- -and "&"..str..";" -- feed back into tex end later end function lxml.convert(id,data,entities,compress) local settings = { unify_predefined_entities = true, +--~ resolve_predefined_entities = true, } if compress and compress == variables.yes then settings.strip_cm_and_dt = true @@ -407,12 +408,12 @@ function xml.getbuffer(name,compress,entities) -- we need to make sure that comm end function lxml.loadbuffer(id,name,compress,entities) - if not name or name == "" then - name = tex.jobname - end +--~ if not name or name == "" then +--~ name = tex.jobname +--~ end starttiming(xml) nofconverted = nofconverted + 1 - local data = buffers.getcontent(name or id) + local data = buffers.collectcontent(name or id) -- name can be list local xmltable = lxml.convert(id,data,compress,entities) lxml.store(id,xmltable) stoptiming(xml) @@ -495,7 +496,7 @@ pihandlers[#pihandlers+1] = function(str) if str then local a, b, c, d = lpegmatch(parser,str) if d then - texsprint(ctxcatcodes,"\\xmlcontextdirective{",a",}{",b,"}{",c,"}{",d,"}") + texsprint(ctxcatcodes,"\\xmlcontextdirective{",a,"}{",b,"}{",c,"}{",d,"}") end end end @@ -925,7 +926,7 @@ local function index(collected,n) if collected then n = tonumber(n) or 0 if n < 0 then - n = #collected + n + 1 + n = #collected + n + 1 -- brrr end if n > 0 then texwrite(collected[n].ni or 0) diff --git a/tex/context/base/m-arabtex.mkii b/tex/context/base/m-arabtex.mkii index 61e56e93a..dea1cae25 100644 --- a/tex/context/base/m-arabtex.mkii +++ b/tex/context/base/m-arabtex.mkii @@ -5,7 +5,7 @@ %D subtitle=Arabic, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-barcodes.mkiv b/tex/context/base/m-barcodes.mkiv index b6a54089f..89e089522 100644 --- a/tex/context/base/m-barcodes.mkiv +++ b/tex/context/base/m-barcodes.mkiv @@ -5,7 +5,7 @@ %D subtitle=Barcodes, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-chart.mkii b/tex/context/base/m-chart.mkii index bddd435ef..9b44a2ce1 100644 --- a/tex/context/base/m-chart.mkii +++ b/tex/context/base/m-chart.mkii @@ -5,7 +5,7 @@ %D subtitle=Flow Charts, %D author={Hans Hagen \& Ton Otten}, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-chart.mkiv b/tex/context/base/m-chart.mkiv index 114e7d553..3850adf32 100644 --- a/tex/context/base/m-chart.mkiv +++ b/tex/context/base/m-chart.mkiv @@ -5,7 +5,7 @@ %D subtitle=Flow Charts, %D author={Hans Hagen \& Ton Otten}, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-chart.tex b/tex/context/base/m-chart.tex index c4e279d54..9f36004f5 100644 --- a/tex/context/base/m-chart.tex +++ b/tex/context/base/m-chart.tex @@ -5,7 +5,7 @@ %D subtitle=Flow Charts, %D author={Hans Hagen \& Ton Otten}, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-chemic.mkii b/tex/context/base/m-chemic.mkii index e6980e1ff..0b3c98221 100644 --- a/tex/context/base/m-chemic.mkii +++ b/tex/context/base/m-chemic.mkii @@ -5,8 +5,8 @@ %D subtitle=\PPCHTEX\ (Plain Pictex Context cHemie \TEX), %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}, -%D suggestions={Tobias Burnus, Dirk Kuypers \& Ton Otten}] +%D suggestions={Tobias Burnus, Dirk Kuypers \& Ton Otten}, +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-chemic.mkiv b/tex/context/base/m-chemic.mkiv index bd4cb093e..1dd403fae 100644 --- a/tex/context/base/m-chemic.mkiv +++ b/tex/context/base/m-chemic.mkiv @@ -5,8 +5,8 @@ %D subtitle=\PPCHTEX\ (Plain Pictex Context cHemie \TEX), %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}, -%D suggestions={Tobias Burnus, Dirk Kuypers \& Ton Otten}] +%D suggestions={Tobias Burnus, Dirk Kuypers \& Ton Otten}, +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-cweb.tex b/tex/context/base/m-cweb.tex index c416c9b36..bf80e229c 100644 --- a/tex/context/base/m-cweb.tex +++ b/tex/context/base/m-cweb.tex @@ -5,7 +5,7 @@ %D subtitle=\CWEB\ Pretty Printing Macros, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-database.mkii b/tex/context/base/m-database.mkii index 3bb050f14..abb67986e 100644 --- a/tex/context/base/m-database.mkii +++ b/tex/context/base/m-database.mkii @@ -5,8 +5,7 @@ %D subtitle=Database Thingies, %D author=Hans Hagen\& Taco Hoekwater, %D date=\currentdate, -%D copyright=PRAGMA -%D ] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-database.mkiv b/tex/context/base/m-database.mkiv index 0653bfa0e..80ae75258 100644 --- a/tex/context/base/m-database.mkiv +++ b/tex/context/base/m-database.mkiv @@ -5,8 +5,7 @@ %D subtitle=Database Thingies, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA -%D ] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-datastrc.tex b/tex/context/base/m-datastrc.tex index 4a6faa66b..1fd5a9e42 100644 --- a/tex/context/base/m-datastrc.tex +++ b/tex/context/base/m-datastrc.tex @@ -5,7 +5,7 @@ %D subtitle=Database Support, % 2A %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-dratex.mkii b/tex/context/base/m-dratex.mkii index 6c088daf9..2b5f0be2a 100644 --- a/tex/context/base/m-dratex.mkii +++ b/tex/context/base/m-dratex.mkii @@ -5,7 +5,7 @@ %D subtitle=\DRATEX\ Loading Macros, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-edtsnc.mkii b/tex/context/base/m-edtsnc.mkii index 0926f4488..0f66893e8 100644 --- a/tex/context/base/m-edtsnc.mkii +++ b/tex/context/base/m-edtsnc.mkii @@ -5,7 +5,7 @@ %D subtitle=Editor Synchronization, %D author={Hans Hagen \& Ton Otten}, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.edit for diff --git a/tex/context/base/m-educat.tex b/tex/context/base/m-educat.tex index ddfb72ff4..f5d55fa84 100644 --- a/tex/context/base/m-educat.tex +++ b/tex/context/base/m-educat.tex @@ -5,7 +5,7 @@ %D subtitle=Educational Extras, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-fields.mkiv b/tex/context/base/m-fields.mkiv index cd840f377..46b77f8d3 100644 --- a/tex/context/base/m-fields.mkiv +++ b/tex/context/base/m-fields.mkiv @@ -5,7 +5,7 @@ %D subtitle=Fields, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-format.tex b/tex/context/base/m-format.tex index 0f274b236..e974e4a11 100644 --- a/tex/context/base/m-format.tex +++ b/tex/context/base/m-format.tex @@ -5,7 +5,7 @@ %D subtitle=Ancient Formatting Code, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-graph.mkii b/tex/context/base/m-graph.mkii index 69d1d3d57..8e28cf537 100644 --- a/tex/context/base/m-graph.mkii +++ b/tex/context/base/m-graph.mkii @@ -5,7 +5,7 @@ %D subtitle=\METAPOST\ graph module support, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-graph.mkiv b/tex/context/base/m-graph.mkiv index e8aeb2375..53ca3962e 100644 --- a/tex/context/base/m-graph.mkiv +++ b/tex/context/base/m-graph.mkiv @@ -5,7 +5,7 @@ %D subtitle=\METAPOST\ graph module support, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-layout.tex b/tex/context/base/m-layout.tex index 0ee71da47..5ccf0e987 100644 --- a/tex/context/base/m-layout.tex +++ b/tex/context/base/m-layout.tex @@ -5,7 +5,7 @@ %D subtitle=Additional Layouts, %D author={Hans Hagen \& Ton Otten}, %D date=\currentdate, -%D copyright={PRAGMA ADE/ Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-level.mkii b/tex/context/base/m-level.mkii index 67d598733..d758288d7 100644 --- a/tex/context/base/m-level.mkii +++ b/tex/context/base/m-level.mkii @@ -5,7 +5,7 @@ %D subtitle=Catching Nesting Errors, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-mathcrap.mkiv b/tex/context/base/m-mathcrap.mkiv index 0c187155b..3edef3c72 100644 --- a/tex/context/base/m-mathcrap.mkiv +++ b/tex/context/base/m-mathcrap.mkiv @@ -5,7 +5,7 @@ %D subtitle=Math Crap, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-mkivhacks.mkiv b/tex/context/base/m-mkivhacks.mkiv index 0e959110e..3ed002e1d 100644 --- a/tex/context/base/m-mkivhacks.mkiv +++ b/tex/context/base/m-mkivhacks.mkiv @@ -5,7 +5,7 @@ %D subtitle=Temporary Compatilibility Hacks, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-morse.mkvi b/tex/context/base/m-morse.mkvi index d106acfde..aba83bb2d 100644 --- a/tex/context/base/m-morse.mkvi +++ b/tex/context/base/m-morse.mkvi @@ -5,7 +5,7 @@ %D subtitle=Morse, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-narrowtt.tex b/tex/context/base/m-narrowtt.tex index 2e11b99ad..129bf270b 100644 --- a/tex/context/base/m-narrowtt.tex +++ b/tex/context/base/m-narrowtt.tex @@ -5,7 +5,7 @@ %D subtitle=Narrow Verbatim, %D author={Hans Hagen \& Ton Otten}, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-newmat.tex b/tex/context/base/m-newmat.tex index 3fb75df5d..202fec76f 100644 --- a/tex/context/base/m-newmat.tex +++ b/tex/context/base/m-newmat.tex @@ -5,7 +5,7 @@ %D subtitle=AMS-like math extensions, %D author={Taco Hoekwater \& Hans Hagen}, %D date=\currentdate, -%D copyright={PRAGMA / Taco Hoekwater}] +%D copyright={Taco Hoekwater \& Hans Hagen}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See licen-en.pdf for diff --git a/tex/context/base/m-pdfsnc.mkii b/tex/context/base/m-pdfsnc.mkii index da59ab5d8..12e2e2d68 100644 --- a/tex/context/base/m-pdfsnc.mkii +++ b/tex/context/base/m-pdfsnc.mkii @@ -5,7 +5,7 @@ %D subtitle=Editor Synchronization, %D author={Hans Hagen \& Ton Otten}, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-pictex.tex b/tex/context/base/m-pictex.tex index 71b0a78fe..27dc6a439 100644 --- a/tex/context/base/m-pictex.tex +++ b/tex/context/base/m-pictex.tex @@ -5,7 +5,7 @@ %D subtitle=\PICTEX\ Loading Macros, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-pstricks.mkii b/tex/context/base/m-pstricks.mkii index 3ada9e07e..bdcf13b24 100644 --- a/tex/context/base/m-pstricks.mkii +++ b/tex/context/base/m-pstricks.mkii @@ -5,7 +5,7 @@ %D subtitle=\PSTRICKS\ Connections, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-pstricks.mkiv b/tex/context/base/m-pstricks.mkiv index c976982a6..0df013cac 100644 --- a/tex/context/base/m-pstricks.mkiv +++ b/tex/context/base/m-pstricks.mkiv @@ -5,7 +5,7 @@ %D subtitle=\PSTRICKS\ Connections, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-punk.mkiv b/tex/context/base/m-punk.mkiv index 71158d2a6..bae3d4de3 100644 --- a/tex/context/base/m-punk.mkiv +++ b/tex/context/base/m-punk.mkiv @@ -5,7 +5,7 @@ %D subtitle=Punk Support, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-quest.tex b/tex/context/base/m-quest.tex index d20c86c93..596abaa0a 100644 --- a/tex/context/base/m-quest.tex +++ b/tex/context/base/m-quest.tex @@ -5,7 +5,7 @@ %D subtitle=Exercise, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-r.tex b/tex/context/base/m-r.tex index bf7b07a14..ac895905c 100644 --- a/tex/context/base/m-r.tex +++ b/tex/context/base/m-r.tex @@ -5,7 +5,7 @@ %D subtitle=R Support, %D author={Johan Sandblom \& Hans Hagen}, %D date=\currentdate, -%D copyright={PRAGMA / Johan Sandblom}] +%D copyright={Johan Sandblom \& Hans Hagen}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-spreadsheet.mkiv b/tex/context/base/m-spreadsheet.mkiv index 49f59ded9..839214096 100644 --- a/tex/context/base/m-spreadsheet.mkiv +++ b/tex/context/base/m-spreadsheet.mkiv @@ -5,7 +5,7 @@ %D subtitle=Spreadsheets, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-steps.tex b/tex/context/base/m-steps.tex index 55e13b97d..660629810 100644 --- a/tex/context/base/m-steps.tex +++ b/tex/context/base/m-steps.tex @@ -5,7 +5,7 @@ %D subtitle=Step Charts \& Tables, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-streams.tex b/tex/context/base/m-streams.tex index 9d7e8d7dd..a8589a89c 100644 --- a/tex/context/base/m-streams.tex +++ b/tex/context/base/m-streams.tex @@ -5,7 +5,7 @@ %D subtitle=Streams, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-subsub.tex b/tex/context/base/m-subsub.tex index 4395ded8a..88be11680 100644 --- a/tex/context/base/m-subsub.tex +++ b/tex/context/base/m-subsub.tex @@ -5,7 +5,7 @@ %D subtitle=More Section Levels, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. This module is not public. diff --git a/tex/context/base/m-timing.mkiv b/tex/context/base/m-timing.mkiv index a91891a1b..409dde6ad 100644 --- a/tex/context/base/m-timing.mkiv +++ b/tex/context/base/m-timing.mkiv @@ -5,7 +5,7 @@ %D subtitle=Timing, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-translate.mkiv b/tex/context/base/m-translate.mkiv index c0e4aad72..ae4f3899d 100644 --- a/tex/context/base/m-translate.mkiv +++ b/tex/context/base/m-translate.mkiv @@ -5,7 +5,7 @@ %D subtitle=Translations, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-units.mkii b/tex/context/base/m-units.mkii index 6a899736b..af4629d48 100644 --- a/tex/context/base/m-units.mkii +++ b/tex/context/base/m-units.mkii @@ -5,7 +5,7 @@ %D subtitle=Scientific Units, %D author={Hans Hagen \& Ton Otten}, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-units.mkiv b/tex/context/base/m-units.mkiv index a7653c566..3f3f6233a 100644 --- a/tex/context/base/m-units.mkiv +++ b/tex/context/base/m-units.mkiv @@ -5,7 +5,7 @@ %D subtitle=Scientific Units, %D author={Hans Hagen \& Ton Otten}, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-visual.tex b/tex/context/base/m-visual.tex index d78455190..502a5c47f 100644 --- a/tex/context/base/m-visual.tex +++ b/tex/context/base/m-visual.tex @@ -5,7 +5,7 @@ %D subtitle=Visualization and Faking, %D author={Hans Hagen \& Ton Otten}, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/m-zint.mkiv b/tex/context/base/m-zint.mkiv index 3e6f7ab43..04af806a0 100644 --- a/tex/context/base/m-zint.mkiv +++ b/tex/context/base/m-zint.mkiv @@ -5,7 +5,7 @@ %D subtitle=Zint Barcode Generator, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/math-ali.mkiv b/tex/context/base/math-ali.mkiv index f83619a22..b00618785 100644 --- a/tex/context/base/math-ali.mkiv +++ b/tex/context/base/math-ali.mkiv @@ -5,7 +5,7 @@ %D subtitle=Math Alignments, %D author={Hans Hagen, Taco Hoekwater \& Aditya Mahajan}, %D date=\currentdate, -%D copyright=PRAGMA-ADE / Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -151,28 +151,145 @@ \let \equalignno \reqalignno \let\aligneqalignno\alignreqalignno -%D Here we implement the user interface part. +%D Here we implement the user interface part. We start with basic math alignments: -\unexpanded\def\setupmathalignment - {\dodoubleempty\dosetupmathalignment} +% \unexpanded\def\setupmathalignment +% {\dodoubleempty\dosetupmathalignment} +% +% \def\dosetupmathalignment[#1][#2]% +% {\ifsecondargument +% \getparameters[\??eq#1][#2]% +% \else +% \getparameters[\??eq][#1]% +% \fi} +% +% \let\currentmathalignment\empty +% +% \def\mathalignmentparameter#1% +% {\executeifdefined{\??eq\currentmathalignment#1}{\executeifdefined{\??eq#1}\empty}} +% +% \setupmathalignment +% [\c!n=2, +% \c!m=1, +% \c!distance=1em] +% +% \def\dostartmathalignment[#1][#2]% +% {% \begingroup not permitted ($$...assignments...\halign... ) +% \pushmacro\doalignNC +% \edef\currentmathalignment{#1}% +% \doifassignmentelse{#2}{\setupmathalignment[#1][#2]}\donothing +% \def\NC{\doalignNC}% +% \global\let\doalignNC\dodoalignNC +% \def\EQ{&=}% +% \def\NR{&\global\let\doalignNC\dodoalignNC\doxxdoubleempty\doalignNR}% +% % amstex compatibility mode: (ugly, will disappear) +% \def\notag{\def\\{&\crcr}}% +% \doifelse{#2}{*}{\def\\{&\crcr}}{\def\\{&\doalignNR[+][]\crcr}}% +% % end of compatibility mode +% \eqaligncolumn\zerocount +% \processcommacommand +% [\mathalignmentparameter\c!align] +% {\advance\eqaligncolumn\plusone\doseteqaligncolumn}% takes argument +% % the real action +% \global\eqaligncolumn\plusone +% \numberedeqalign} +% +% \def\dostopmathalignment +% {\finishalignno +% \popmacro\doalignNC} +% +% \unexpanded\def\definemathalignment +% {\dodoubleempty\dodefinemathalignment} +% +% \def\dodefinemathalignment[#1]% [#2]% +% {\setvalue{\e!start#1}{\dodoubleempty\dostartmathalignment[#1]}% +% \setvalue{\e!stop #1}{\dostopmathalignment}% +% \setupmathalignment[#1]}% [#2] +% +% \definemathalignment[align] % default case (this is what amstex users expect) +% \definemathalignment[\v!mathalignment] % prefered case (this is cleaner, less clashing) + +% we tag the mlist later but cells are hboxes so we can add wrappers + +\newtoks \everymathalignment + +\def\math_alignment_NR_indeed[#1][#2]% + {\donestedformulanumber{#1}{#2}% to be tagged (better an attribute) + \crcr + \dostoptagged % finish row + \noalign{\glet\math_alignment_NC\math_alignment_NC_first}} % noalign used for change state, conditional does not work here + +\def\math_alignment_NC_first + {\dostarttagged\t!mathtablerow\empty + \dostarttagged\t!mathtablecell\empty + \let\NC\math_alignment_NC_rest} + +\def\math_alignment_NC_rest + {\aligntab + \dostoptagged % finish cell + \dostarttagged\t!mathtablecell\empty} + +\def\math_alignment_EQ + {\NC=} + +\def\math_alignment_NR + {\aligntab + \dostoptagged % finish cell + \dodoubleempty\math_alignment_NR_indeed} % use xx from tabulate + +% amstex compatibility mode: (ugly, will disappear) +% \def\notag{\def\\{&\crcr}}% +% \doifelse{#2}{*}{\def\\{&\crcr}}{\def\\{&\doalignNR[+][]\crcr}}% +% end of compatibility mode + +\appendtoks + \glet\math_alignment_NC\math_alignment_NC_first + \unexpanded\def\NC{\math_alignment_NC}% messy, due to lookahead (we cannot use a flag) + \let\EQ\math_alignment_EQ + \let\NR\math_alignment_NR +\to \everymathalignment + +\def\math_alignment_start#1% + {\edef\currentmathalignment{#1}% + \dosingleempty\math_alignment_start_indeed} + +\def\math_alignment_start_indeed[#1]% + {% \begingroup not permitted ($$...assignments...\halign... ) + \iffirstargument + \setupmathalignment[\currentmathalignment][#1]% + \fi + \the\everymathalignment + \eqaligncolumn\zerocount + \processcommacommand + [\mathalignmentparameter\c!align] + {\advance\eqaligncolumn\plusone\doseteqaligncolumn}% takes argument + \global\eqaligncolumn\plusone + \dostarttagged\t!math\empty + \dostarttagged\t!mathtable\currentmathalignment + \numberedeqalign} -\def\dosetupmathalignment[#1][#2]% - {\ifsecondargument - \getparameters[\??eq#1][#2]% - \else - \getparameters[\??eq][#1]% - \fi} +\def\math_alignment_stop + {\finishalignno + \dostoptagged + \dostoptagged} -\let\currentmathalignment\empty +\installcommandhandler \??eq {mathalignment} \??eq -\def\mathalignmentparameter#1% - {\executeifdefined{\??eq\currentmathalignment#1}{\executeifdefined{\??eq#1}\empty}} +\appendtoks + \setevalue{\e!start\currentmathalignment}{\noexpand\math_alignment_start{\currentmathalignment}}% + \setevalue{\e!stop \currentmathalignment}{\noexpand\math_alignment_stop}% +\to \everydefinemathalignment \setupmathalignment [\c!n=2, \c!m=1, \c!distance=1em] +\definemathalignment[align] % default case (this is what amstex users expect) +\definemathalignment[\v!mathalignment] % prefered case (this is cleaner, less clashing) + +% helpers + \def\numberedeqalign {\doifelse{\formulaparameter\c!location}\v!left\alignleqalignno\alignreqalignno} @@ -213,46 +330,6 @@ %D \placeformula[eqn3]\startformula \startalign[n=1] a\NR[+] \stopalign \stopformula See \in[eqn3] %D \stoptyping -% todo: pop in cell - -\def\dostartmathalignment[#1][#2]% - {% \begingroup not permitted ($$...assignments...\halign... ) - \pushmacro\doalignNC - \edef\currentmathalignment{#1}% - \doifassignmentelse{#2}{\setupmathalignment[#1][#2]}\donothing - \def\NC{\doalignNC}% - \global\let\doalignNC\dodoalignNC - \def\EQ{&=}% - \def\NR{&\global\let\doalignNC\dodoalignNC\doxxdoubleempty\doalignNR}% - % amstex compatibility mode: (ugly, will disappear) - \def\notag{\def\\{&\crcr}}% - \doifelse{#2}{*}{\def\\{&\crcr}}{\def\\{&\doalignNR[+][]\crcr}}% - % end of compatibility mode - \eqaligncolumn\zerocount - \processcommacommand - [\mathalignmentparameter\c!align] - {\advance\eqaligncolumn\plusone\doseteqaligncolumn}% takes argument - % the real action - \global\eqaligncolumn\plusone - \numberedeqalign} - -\def\dostopmathalignment - {\finishalignno - \popmacro\doalignNC} - -\unexpanded\def\definemathalignment - {\dodoubleempty\dodefinemathalignment} - -\def\dodefinemathalignment[#1]% [#2]% - {\setvalue{\e!start#1}{\dodoubleempty\dostartmathalignment[#1]}% - \setvalue{\e!stop #1}{\dostopmathalignment}% - \setupmathalignment[#1]}% [#2] - -%D For the moment we only provide english commands. - -\definemathalignment[align] % default case (this is what amstex users expect) -\definemathalignment[\v!mathalignment] % prefered case (this is cleaner, less clashing) - %D \startbuffer %D \placeformula \startformula \eqalignno { %D a &= b & \formulanumber \cr diff --git a/tex/context/base/math-ams.mkii b/tex/context/base/math-ams.mkii index 83070d01a..c73a890c0 100644 --- a/tex/context/base/math-ams.mkii +++ b/tex/context/base/math-ams.mkii @@ -5,7 +5,7 @@ %D subtitle=AMS Specials, %D author={Hans Hagen \& Taco Hoekwater}, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/math-arr.mkii b/tex/context/base/math-arr.mkii index 3b9abaa91..71a833b89 100644 --- a/tex/context/base/math-arr.mkii +++ b/tex/context/base/math-arr.mkii @@ -5,7 +5,7 @@ %D subtitle=Arrows, %D author={Hans Hagen \& Taco Hoekwater \& Aditya Mahajan}, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/math-arr.mkiv b/tex/context/base/math-arr.mkiv index 31f8a66eb..3a7f2521e 100644 --- a/tex/context/base/math-arr.mkiv +++ b/tex/context/base/math-arr.mkiv @@ -5,7 +5,7 @@ %D subtitle=Arrows, %D author={Hans Hagen \& Taco Hoekwater \& Aditya Mahajan}, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/math-cow.mkii b/tex/context/base/math-cow.mkii index f0fc811c8..04f659b44 100644 --- a/tex/context/base/math-cow.mkii +++ b/tex/context/base/math-cow.mkii @@ -5,7 +5,7 @@ %D subtitle=Cow Math, %D author={Hans Hagen \& Taco Hoekwater}, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/math-def.mkiv b/tex/context/base/math-def.mkiv index a7e0df940..3b336855a 100644 --- a/tex/context/base/math-def.mkiv +++ b/tex/context/base/math-def.mkiv @@ -5,7 +5,7 @@ %D subtitle=Definitions, %D author={Hans Hagen, Taco Hoekwater \& Aditya Mahajan}, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -19,7 +19,7 @@ \startluacode mathematics.define() - mathematics.xml.registerentities() + -- mathematics.xml.registerentities() \stopluacode \activatemathcharacters @@ -95,12 +95,12 @@ \definemathcommand [tanh] [nolop] {\mfunctionlabeltext{tanh}} \definemathcommand [tan] [nolop] {\mfunctionlabeltext{tan}} -\definemathcommand [integers] {{\mathblackboard Z}} -\definemathcommand [reals] {{\mathblackboard R}} -\definemathcommand [rationals] {{\mathblackboard Q}} -\definemathcommand [naturalnumbers]{{\mathblackboard N}} -\definemathcommand [complexes] {{\mathblackboard C}} -\definemathcommand [primes] {{\mathblackboard P}} +% \definemathcommand [integers] {{\mathblackboard Z}} +% \definemathcommand [reals] {{\mathblackboard R}} +% \definemathcommand [rationals] {{\mathblackboard Q}} +% \definemathcommand [naturalnumbers]{{\mathblackboard N}} +% \definemathcommand [complexes] {{\mathblackboard C}} +% \definemathcommand [primes] {{\mathblackboard P}} \let\normalmatharg\arg % todo: maybe automatically @@ -356,6 +356,9 @@ \unexpanded\def\underrightarrow{\mathopwithlimits\normalunderrightarrow} \unexpanded\def\overrightarrow {\mathopwithlimits\normaloverrightarrow } +\let\lceil \lceiling +\let\rceil \rceiling + \let\normalsurd\surd \unexpanded\def\surd{\normalsurd{}} diff --git a/tex/context/base/math-del.mkiv b/tex/context/base/math-del.mkiv index 5ffda1919..b6579cc93 100644 --- a/tex/context/base/math-del.mkiv +++ b/tex/context/base/math-del.mkiv @@ -5,7 +5,7 @@ %D subtitle=Delimiters, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/math-dis.mkiv b/tex/context/base/math-dis.mkiv index 3eed2b162..5b70970f3 100644 --- a/tex/context/base/math-dis.mkiv +++ b/tex/context/base/math-dis.mkiv @@ -5,7 +5,7 @@ %D subtitle=Display, %D author={Hans Hagen, Taco Hoekwater \& Aditya Mahajan}, %D date=\currentdate, -%D copyright=PRAGMA-ADE / Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/math-ent.lua b/tex/context/base/math-ent.lua deleted file mode 100644 index 0eaa02939..000000000 --- a/tex/context/base/math-ent.lua +++ /dev/null @@ -1,2103 +0,0 @@ -if not modules then modules = { } end modules ['math-ent'] = { - version = 1.001, - comment = "companion to math-ini.mkiv", - author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", - copyright = "derived from the mathml 2.0 specification", -} - --- this might go into char-def - -mathematics.xml.entities = utilities.storage.allocate { - ["Aacute"]=0x000C1, - ["aacute"]=0x000E1, - ["Abreve"]=0x00102, - ["abreve"]=0x00103, - ["ac"]=0x0223E, - ["acd"]=0x0223F, - ["acE"]=0x0223E, - ["Acirc"]=0x000C2, - ["acirc"]=0x000E2, - ["acute"]=0x000B4, - ["Acy"]=0x00410, - ["acy"]=0x00430, - ["AElig"]=0x000C6, - ["aelig"]=0x000E6, - ["af"]=0x02061, - ["Afr"]=0x1D504, - ["afr"]=0x1D51E, - ["Agrave"]=0x000C0, - ["agrave"]=0x000E0, - ["aleph"]=0x02135, - ["alpha"]=0x003B1, - ["Amacr"]=0x00100, - ["amacr"]=0x00101, - ["amalg"]=0x02A3F, - ["amp"]=0x00026, - ["And"]=0x02A53, - ["and"]=0x02227, - ["andand"]=0x02A55, - ["andd"]=0x02A5C, - ["andslope"]=0x02A58, - ["andv"]=0x02A5A, - ["ang"]=0x02220, - ["ange"]=0x029A4, - ["angle"]=0x02220, - ["angmsd"]=0x02221, - ["angmsdaa"]=0x029A8, - ["angmsdab"]=0x029A9, - ["angmsdac"]=0x029AA, - ["angmsdad"]=0x029AB, - ["angmsdae"]=0x029AC, - ["angmsdaf"]=0x029AD, - ["angmsdag"]=0x029AE, - ["angmsdah"]=0x029AF, - ["angrt"]=0x0221F, - ["angrtvb"]=0x022BE, - ["angrtvbd"]=0x0299D, - ["angsph"]=0x02222, - ["angst"]=0x0212B, - ["angzarr"]=0x0237C, - ["Aogon"]=0x00104, - ["aogon"]=0x00105, - ["Aopf"]=0x1D538, - ["aopf"]=0x1D552, - ["ap"]=0x02248, - ["apacir"]=0x02A6F, - ["apE"]=0x02A70, - ["ape"]=0x0224A, - ["apid"]=0x0224B, - ["apos"]=0x00027, - ["ApplyFunction"]=0x02061, - ["approx"]=0x02248, - ["approxeq"]=0x0224A, - ["Aring"]=0x000C5, - ["aring"]=0x000E5, - ["Ascr"]=0x1D49C, - ["ascr"]=0x1D4B6, - ["Assign"]=0x02254, - ["ast"]=0x0002A, - ["asymp"]=0x02248, - ["asympeq"]=0x0224D, - ["Atilde"]=0x000C3, - ["atilde"]=0x000E3, - ["Auml"]=0x000C4, - ["auml"]=0x000E4, - ["awconint"]=0x02233, - ["awint"]=0x02A11, - ["backcong"]=0x0224C, - ["backepsilon"]=0x003F6, - ["backprime"]=0x02035, - ["backsim"]=0x0223D, - ["backsimeq"]=0x022CD, - ["Backslash"]=0x02216, - ["Barv"]=0x02AE7, - ["barvee"]=0x022BD, - ["Barwed"]=0x02306, - ["barwed"]=0x02305, - ["barwedge"]=0x02305, - ["bbrk"]=0x023B5, - ["bbrktbrk"]=0x023B6, - ["bcong"]=0x0224C, - ["Bcy"]=0x00411, - ["bcy"]=0x00431, - ["becaus"]=0x02235, - ["Because"]=0x02235, - ["because"]=0x02235, - ["bemptyv"]=0x029B0, - ["bepsi"]=0x003F6, - ["bernou"]=0x0212C, - ["Bernoullis"]=0x0212C, - ["beta"]=0x003B2, - ["beth"]=0x02136, - ["between"]=0x0226C, - ["Bfr"]=0x1D505, - ["bfr"]=0x1D51F, - ["bigcap"]=0x022C2, - ["bigcirc"]=0x025EF, - ["bigcup"]=0x022C3, - ["bigodot"]=0x02A00, - ["bigoplus"]=0x02A01, - ["bigotimes"]=0x02A02, - ["bigsqcup"]=0x02A06, - ["bigstar"]=0x02605, - ["bigtriangledown"]=0x025BD, - ["bigtriangleup"]=0x025B3, - ["biguplus"]=0x02A04, - ["bigvee"]=0x022C1, - ["bigwedge"]=0x022C0, - ["bkarow"]=0x0290D, - ["blacklozenge"]=0x029EB, - ["blacksquare"]=0x025AA, - ["blacktriangle"]=0x025B4, - ["blacktriangledown"]=0x025BE, - ["blacktriangleleft"]=0x025C2, - ["blacktriangleright"]=0x025B8, - ["blank"]=0x02423, - ["blk12"]=0x02592, - ["blk14"]=0x02591, - ["blk34"]=0x02593, - ["block"]=0x02588, - ["bne"]=0x0003D, - ["bnequiv"]=0x02261, - ["bNot"]=0x02AED, - ["bnot"]=0x02310, - ["Bopf"]=0x1D539, - ["bopf"]=0x1D553, - ["bot"]=0x022A5, - ["bottom"]=0x022A5, - ["bowtie"]=0x022C8, - ["boxbox"]=0x029C9, - ["boxDL"]=0x02557, - ["boxDl"]=0x02556, - ["boxdL"]=0x02555, - ["boxdl"]=0x02510, - ["boxDR"]=0x02554, - ["boxDr"]=0x02553, - ["boxdR"]=0x02552, - ["boxdr"]=0x0250C, - ["boxH"]=0x02550, - ["boxh"]=0x02500, - ["boxHD"]=0x02566, - ["boxHd"]=0x02564, - ["boxhD"]=0x02565, - ["boxhd"]=0x0252C, - ["boxHU"]=0x02569, - ["boxHu"]=0x02567, - ["boxhU"]=0x02568, - ["boxhu"]=0x02534, - ["boxminus"]=0x0229F, - ["boxplus"]=0x0229E, - ["boxtimes"]=0x022A0, - ["boxUL"]=0x0255D, - ["boxUl"]=0x0255C, - ["boxuL"]=0x0255B, - ["boxul"]=0x02518, - ["boxUR"]=0x0255A, - ["boxUr"]=0x02559, - ["boxuR"]=0x02558, - ["boxur"]=0x02514, - ["boxV"]=0x02551, - ["boxv"]=0x02502, - ["boxVH"]=0x0256C, - ["boxVh"]=0x0256B, - ["boxvH"]=0x0256A, - ["boxvh"]=0x0253C, - ["boxVL"]=0x02563, - ["boxVl"]=0x02562, - ["boxvL"]=0x02561, - ["boxvl"]=0x02524, - ["boxVR"]=0x02560, - ["boxVr"]=0x0255F, - ["boxvR"]=0x0255E, - ["boxvr"]=0x0251C, - ["bprime"]=0x02035, - ["Breve"]=0x002D8, - ["breve"]=0x002D8, - ["brvbar"]=0x000A6, - ["Bscr"]=0x0212C, - ["bscr"]=0x1D4B7, - ["bsemi"]=0x0204F, - ["bsim"]=0x0223D, - ["bsime"]=0x022CD, - ["bsol"]=0x0005C, - ["bsolb"]=0x029C5, - ["bsolhsub"]=0x0005C, - ["bull"]=0x02022, - ["bullet"]=0x02022, - ["bump"]=0x0224E, - ["bumpE"]=0x02AAE, - ["bumpe"]=0x0224F, - ["Bumpeq"]=0x0224E, - ["bumpeq"]=0x0224F, - ["Cacute"]=0x00106, - ["cacute"]=0x00107, - ["Cap"]=0x022D2, - ["cap"]=0x02229, - ["capand"]=0x02A44, - ["capbrcup"]=0x02A49, - ["capcap"]=0x02A4B, - ["capcup"]=0x02A47, - ["capdot"]=0x02A40, - ["CapitalDifferentialD"]=0x02145, - ["caps"]=0x02229, - ["caret"]=0x02041, - ["caron"]=0x002C7, - ["Cayleys"]=0x0212D, - ["ccaps"]=0x02A4D, - ["Ccaron"]=0x0010C, - ["ccaron"]=0x0010D, - ["Ccedil"]=0x000C7, - ["ccedil"]=0x000E7, - ["Ccirc"]=0x00108, - ["ccirc"]=0x00109, - ["Cconint"]=0x02230, - ["ccups"]=0x02A4C, - ["ccupssm"]=0x02A50, - ["Cdot"]=0x0010A, - ["cdot"]=0x0010B, - ["cedil"]=0x000B8, - ["Cedilla"]=0x000B8, - ["cemptyv"]=0x029B2, - ["cent"]=0x000A2, - ["CenterDot"]=0x000B7, - ["centerdot"]=0x000B7, - ["Cfr"]=0x0212D, - ["cfr"]=0x1D520, - ["CHcy"]=0x00427, - ["chcy"]=0x00447, - ["check"]=0x02713, - ["checkmark"]=0x02713, - ["chi"]=0x003C7, - ["cir"]=0x025CB, - ["circ"]=0x002C6, - ["circeq"]=0x02257, - ["circlearrowleft"]=0x021BA, - ["circlearrowright"]=0x021BB, - ["circledast"]=0x0229B, - ["circledcirc"]=0x0229A, - ["circleddash"]=0x0229D, - ["CircleDot"]=0x02299, - ["circledR"]=0x000AE, - ["circledS"]=0x024C8, - ["CircleMinus"]=0x02296, - ["CirclePlus"]=0x02295, - ["CircleTimes"]=0x02297, - ["cirE"]=0x029C3, - ["cire"]=0x02257, - ["cirfnint"]=0x02A10, - ["cirmid"]=0x02AEF, - ["cirscir"]=0x029C2, - ["ClockwiseContourIntegral"]=0x02232, - ["CloseCurlyDoubleQuote"]=0x0201D, - ["CloseCurlyQuote"]=0x02019, - ["clubs"]=0x02663, - ["clubsuit"]=0x02663, - ["Colon"]=0x02237, - ["colon"]=0x0003A, - ["Colone"]=0x02A74, - ["colone"]=0x02254, - ["coloneq"]=0x02254, - ["comma"]=0x0002C, - ["commat"]=0x00040, - ["comp"]=0x02201, - ["compfn"]=0x02218, - ["complement"]=0x02201, - ["complexes"]=0x02102, - ["cong"]=0x02245, - ["congdot"]=0x02A6D, - ["Congruent"]=0x02261, - ["Conint"]=0x0222F, - ["conint"]=0x0222E, - ["ContourIntegral"]=0x0222E, - ["Copf"]=0x02102, - ["copf"]=0x1D554, - ["coprod"]=0x02210, - ["Coproduct"]=0x02210, - ["copy"]=0x000A9, - ["copysr"]=0x02117, - ["CounterClockwiseContourIntegral"]=0x02233, - ["Cross"]=0x02A2F, - ["cross"]=0x02717, - ["Cscr"]=0x1D49E, - ["cscr"]=0x1D4B8, - ["csub"]=0x02ACF, - ["csube"]=0x02AD1, - ["csup"]=0x02AD0, - ["csupe"]=0x02AD2, - ["ctdot"]=0x022EF, - ["cudarrl"]=0x02938, - ["cudarrr"]=0x02935, - ["cuepr"]=0x022DE, - ["cuesc"]=0x022DF, - ["cularr"]=0x021B6, - ["cularrp"]=0x0293D, - ["Cup"]=0x022D3, - ["cup"]=0x0222A, - ["cupbrcap"]=0x02A48, - ["CupCap"]=0x0224D, - ["cupcap"]=0x02A46, - ["cupcup"]=0x02A4A, - ["cupdot"]=0x0228D, - ["cupor"]=0x02A45, - ["cups"]=0x0222A, - ["curarr"]=0x021B7, - ["curarrm"]=0x0293C, - ["curlyeqprec"]=0x022DE, - ["curlyeqsucc"]=0x022DF, - ["curlyvee"]=0x022CE, - ["curlywedge"]=0x022CF, - ["curren"]=0x000A4, - ["curvearrowleft"]=0x021B6, - ["curvearrowright"]=0x021B7, - ["cuvee"]=0x022CE, - ["cuwed"]=0x022CF, - ["cwconint"]=0x02232, - ["cwint"]=0x02231, - ["cylcty"]=0x0232D, - ["Dagger"]=0x02021, - ["Dagger"]=0x02021, - ["dagger"]=0x02020, - ["dagger"]=0x02020, - ["daleth"]=0x02138, - ["Darr"]=0x021A1, - ["dArr"]=0x021D3, - ["darr"]=0x02193, - ["dash"]=0x02010, - ["Dashv"]=0x02AE4, - ["dashv"]=0x022A3, - ["dbkarow"]=0x0290F, - ["dblac"]=0x002DD, - ["Dcaron"]=0x0010E, - ["dcaron"]=0x0010F, - ["Dcy"]=0x00414, - ["dcy"]=0x00434, - ["DD"]=0x02145, - ["dd"]=0x02146, - ["ddagger"]=0x02021, - ["ddarr"]=0x021CA, - ["DDotrahd"]=0x02911, - ["ddotseq"]=0x02A77, - ["deg"]=0x000B0, - ["Del"]=0x02207, - ["Delta"]=0x00394, - ["delta"]=0x003B4, - ["demptyv"]=0x029B1, - ["dfisht"]=0x0297F, - ["Dfr"]=0x1D507, - ["dfr"]=0x1D521, - ["dHar"]=0x02965, - ["dharl"]=0x021C3, - ["dharr"]=0x021C2, - ["DiacriticalAcute"]=0x000B4, - ["DiacriticalDot"]=0x002D9, - ["DiacriticalDoubleAcute"]=0x002DD, - ["DiacriticalGrave"]=0x00060, - ["DiacriticalTilde"]=0x002DC, - ["diam"]=0x022C4, - ["Diamond"]=0x022C4, - ["diamond"]=0x022C4, - ["diamondsuit"]=0x02666, - ["diams"]=0x02666, - ["die"]=0x000A8, - ["DifferentialD"]=0x02146, - ["digamma"]=0x003DD, - ["disin"]=0x022F2, - ["div"]=0x000F7, - ["divide"]=0x000F7, - ["divideontimes"]=0x022C7, - ["divonx"]=0x022C7, - ["DJcy"]=0x00402, - ["djcy"]=0x00452, - ["dlcorn"]=0x0231E, - ["dlcrop"]=0x0230D, - ["dollar"]=0x00024, - ["Dopf"]=0x1D53B, - ["dopf"]=0x1D555, - ["Dot"]=0x000A8, - ["dot"]=0x002D9, - ["DotDot"]=0x020DC, - ["doteq"]=0x02250, - ["doteqdot"]=0x02251, - ["DotEqual"]=0x02250, - ["dotminus"]=0x02238, - ["dotplus"]=0x02214, - ["dotsquare"]=0x022A1, - ["doublebarwedge"]=0x02306, - ["DoubleContourIntegral"]=0x0222F, - ["DoubleDot"]=0x000A8, - ["DoubleDownArrow"]=0x021D3, - ["DoubleLeftArrow"]=0x021D0, - ["DoubleLeftRightArrow"]=0x021D4, - ["DoubleLeftTee"]=0x02AE4, - ["DoubleLongLeftArrow"]=0x027F8, - ["DoubleLongLeftRightArrow"]=0x027FA, - ["DoubleLongRightArrow"]=0x027F9, - ["DoubleRightArrow"]=0x021D2, - ["DoubleRightTee"]=0x022A8, - ["DoubleUpArrow"]=0x021D1, - ["DoubleUpDownArrow"]=0x021D5, - ["DoubleVerticalBar"]=0x02225, - ["DownArrow"]=0x02193, - ["Downarrow"]=0x021D3, - ["downarrow"]=0x02193, - ["DownArrowBar"]=0x02913, - ["DownArrowUpArrow"]=0x021F5, - ["DownBreve"]=0x00311, - ["downdownarrows"]=0x021CA, - ["downharpoonleft"]=0x021C3, - ["downharpoonright"]=0x021C2, - ["DownLeftRightVector"]=0x02950, - ["DownLeftTeeVector"]=0x0295E, - ["DownLeftVector"]=0x021BD, - ["DownLeftVectorBar"]=0x02956, - ["DownRightTeeVector"]=0x0295F, - ["DownRightVector"]=0x021C1, - ["DownRightVectorBar"]=0x02957, - ["DownTee"]=0x022A4, - ["DownTeeArrow"]=0x021A7, - ["drbkarow"]=0x02910, - ["drcorn"]=0x0231F, - ["drcrop"]=0x0230C, - ["Dscr"]=0x1D49F, - ["dscr"]=0x1D4B9, - ["DScy"]=0x00405, - ["dscy"]=0x00455, - ["dsol"]=0x029F6, - ["Dstrok"]=0x00110, - ["dstrok"]=0x00111, - ["dtdot"]=0x022F1, - ["dtri"]=0x025BF, - ["dtrif"]=0x025BE, - ["duarr"]=0x021F5, - ["duhar"]=0x0296F, - ["dwangle"]=0x029A6, - ["DZcy"]=0x0040F, - ["dzcy"]=0x0045F, - ["dzigrarr"]=0x027FF, - ["Eacute"]=0x000C9, - ["eacute"]=0x000E9, - ["easter"]=0x02A6E, - ["Ecaron"]=0x0011A, - ["ecaron"]=0x0011B, - ["ecir"]=0x02256, - ["Ecirc"]=0x000CA, - ["ecirc"]=0x000EA, - ["ecolon"]=0x02255, - ["Ecy"]=0x0042D, - ["ecy"]=0x0044D, - ["eDDot"]=0x02A77, - ["Edot"]=0x00116, - ["eDot"]=0x02251, - ["edot"]=0x00117, - ["ee"]=0x02147, - ["efDot"]=0x02252, - ["Efr"]=0x1D508, - ["efr"]=0x1D522, - ["eg"]=0x02A9A, - ["Egrave"]=0x000C8, - ["egrave"]=0x000E8, - ["egs"]=0x02A96, - ["egsdot"]=0x02A98, - ["el"]=0x02A99, - ["Element"]=0x02208, - ["elinters"]=0x0FFFD, - ["ell"]=0x02113, - ["els"]=0x02A95, - ["elsdot"]=0x02A97, - ["Emacr"]=0x00112, - ["emacr"]=0x00113, - ["empty"]=0x02205, - ["emptyset"]=0x02205, - ["EmptySmallSquare"]=0x025FB, - ["emptyv"]=0x02205, - ["EmptyVerySmallSquare"]=0x025AB, - ["emsp"]=0x02003, - ["emsp13"]=0x02004, - ["emsp14"]=0x02005, - ["ENG"]=0x0014A, - ["eng"]=0x0014B, - ["ensp"]=0x02002, - ["Eogon"]=0x00118, - ["eogon"]=0x00119, - ["Eopf"]=0x1D53C, - ["eopf"]=0x1D556, - ["epar"]=0x022D5, - ["eparsl"]=0x029E3, - ["eplus"]=0x02A71, - ["epsi"]=0x003F5, - ["epsiv"]=0x003B5, - ["eqcirc"]=0x02256, - ["eqcolon"]=0x02255, - ["eqsim"]=0x02242, - ["eqslantgtr"]=0x02A96, - ["eqslantless"]=0x02A95, - ["Equal"]=0x02A75, - ["equals"]=0x0003D, - ["EqualTilde"]=0x02242, - ["equest"]=0x0225F, - ["Equilibrium"]=0x021CC, - ["equiv"]=0x02261, - ["equivDD"]=0x02A78, - ["eqvparsl"]=0x029E5, - ["erarr"]=0x02971, - ["erDot"]=0x02253, - ["Escr"]=0x02130, - ["escr"]=0x0212F, - ["esdot"]=0x02250, - ["Esim"]=0x02A73, - ["esim"]=0x02242, - ["eta"]=0x003B7, - ["ETH"]=0x000D0, - ["eth"]=0x000F0, - ["Euml"]=0x000CB, - ["euml"]=0x000EB, - ["excl"]=0x00021, - ["exist"]=0x02203, - ["Exists"]=0x02203, - ["expectation"]=0x02130, - ["ExponentialE"]=0x02147, - ["exponentiale"]=0x02147, - ["fallingdotseq"]=0x02252, - ["Fcy"]=0x00424, - ["fcy"]=0x00444, - ["female"]=0x02640, - ["ffilig"]=0x0FB03, - ["fflig"]=0x0FB00, - ["ffllig"]=0x0FB04, - ["Ffr"]=0x1D509, - ["ffr"]=0x1D523, - ["filig"]=0x0FB01, - ["FilledSmallSquare"]=0x025FC, - ["FilledVerySmallSquare"]=0x025AA, - ["flat"]=0x0266D, - ["fllig"]=0x0FB02, - ["fltns"]=0x025B1, - ["fnof"]=0x00192, - ["Fopf"]=0x1D53D, - ["fopf"]=0x1D557, - ["ForAll"]=0x02200, - ["forall"]=0x02200, - ["fork"]=0x022D4, - ["forkv"]=0x02AD9, - ["Fouriertrf"]=0x02131, - ["fpartint"]=0x02A0D, - ["frac12"]=0x000BD, - ["frac13"]=0x02153, - ["frac14"]=0x000BC, - ["frac15"]=0x02155, - ["frac16"]=0x02159, - ["frac18"]=0x0215B, - ["frac23"]=0x02154, - ["frac25"]=0x02156, - ["frac34"]=0x000BE, - ["frac35"]=0x02157, - ["frac38"]=0x0215C, - ["frac45"]=0x02158, - ["frac56"]=0x0215A, - ["frac58"]=0x0215D, - ["frac78"]=0x0215E, - ["frown"]=0x02322, - ["Fscr"]=0x02131, - ["fscr"]=0x1D4BB, - ["gacute"]=0x001F5, - ["Gamma"]=0x00393, - ["gamma"]=0x003B3, - ["Gammad"]=0x003DC, - ["gammad"]=0x003DD, - ["gap"]=0x02A86, - ["Gbreve"]=0x0011E, - ["gbreve"]=0x0011F, - ["Gcedil"]=0x00122, - ["Gcirc"]=0x0011C, - ["gcirc"]=0x0011D, - ["Gcy"]=0x00413, - ["gcy"]=0x00433, - ["Gdot"]=0x00120, - ["gdot"]=0x00121, - ["gE"]=0x02267, - ["ge"]=0x02265, - ["gEl"]=0x02A8C, - ["gel"]=0x022DB, - ["geq"]=0x02265, - ["geqq"]=0x02267, - ["geqslant"]=0x02A7E, - ["ges"]=0x02A7E, - ["gescc"]=0x02AA9, - ["gesdot"]=0x02A80, - ["gesdoto"]=0x02A82, - ["gesdotol"]=0x02A84, - ["gesl"]=0x022DB, - ["gesles"]=0x02A94, - ["Gfr"]=0x1D50A, - ["gfr"]=0x1D524, - ["Gg"]=0x022D9, - ["gg"]=0x0226B, - ["ggg"]=0x022D9, - ["gimel"]=0x02137, - ["GJcy"]=0x00403, - ["gjcy"]=0x00453, - ["gl"]=0x02277, - ["gla"]=0x02AA5, - ["glE"]=0x02A92, - ["glj"]=0x02AA4, - ["gnap"]=0x02A8A, - ["gnapprox"]=0x02A8A, - ["gnE"]=0x02269, - ["gne"]=0x02A88, - ["gneq"]=0x02A88, - ["gneqq"]=0x02269, - ["gnsim"]=0x022E7, - ["Gopf"]=0x1D53E, - ["gopf"]=0x1D558, - ["grave"]=0x00060, - ["GreaterEqual"]=0x02265, - ["GreaterEqualLess"]=0x022DB, - ["GreaterFullEqual"]=0x02267, - ["GreaterGreater"]=0x02AA2, - ["GreaterLess"]=0x02277, - ["GreaterSlantEqual"]=0x02A7E, - ["GreaterTilde"]=0x02273, - ["Gscr"]=0x1D4A2, - ["gscr"]=0x0210A, - ["gsim"]=0x02273, - ["gsime"]=0x02A8E, - ["gsiml"]=0x02A90, - ["Gt"]=0x0226B, - ["gt"]=0x0003E, - ["gtcc"]=0x02AA7, - ["gtcir"]=0x02A7A, - ["gtdot"]=0x022D7, - ["gtlPar"]=0x02995, - ["gtquest"]=0x02A7C, - ["gtrapprox"]=0x02A86, - ["gtrarr"]=0x02978, - ["gtrdot"]=0x022D7, - ["gtreqless"]=0x022DB, - ["gtreqqless"]=0x02A8C, - ["gtrless"]=0x02277, - ["gtrsim"]=0x02273, - ["gvertneqq"]=0x02269, - ["gvnE"]=0x02269, - ["Hacek"]=0x002C7, - ["hairsp"]=0x0200A, - ["half"]=0x000BD, - ["hamilt"]=0x0210B, - ["HARDcy"]=0x0042A, - ["hardcy"]=0x0044A, - ["hArr"]=0x021D4, - ["harr"]=0x02194, - ["harrcir"]=0x02948, - ["harrw"]=0x021AD, - ["Hat"]=0x0005E, - ["hbar"]=0x0210F, - ["Hcirc"]=0x00124, - ["hcirc"]=0x00125, - ["hearts"]=0x02665, - ["heartsuit"]=0x02665, - ["hellip"]=0x02026, - ["hercon"]=0x022B9, - ["Hfr"]=0x0210C, - ["hfr"]=0x1D525, - ["HilbertSpace"]=0x0210B, - ["hksearow"]=0x02925, - ["hkswarow"]=0x02926, - ["hoarr"]=0x021FF, - ["homtht"]=0x0223B, - ["hookleftarrow"]=0x021A9, - ["hookrightarrow"]=0x021AA, - ["Hopf"]=0x0210D, - ["hopf"]=0x1D559, - ["horbar"]=0x02015, - ["HorizontalLine"]=0x02500, - ["Hscr"]=0x0210B, - ["hscr"]=0x1D4BD, - ["hslash"]=0x0210F, - ["Hstrok"]=0x00126, - ["hstrok"]=0x00127, - ["HumpDownHump"]=0x0224E, - ["HumpEqual"]=0x0224F, - ["hybull"]=0x02043, - ["hyphen"]=0x02010, - ["Iacute"]=0x000CD, - ["iacute"]=0x000ED, - ["ic"]=0x02063, - ["Icirc"]=0x000CE, - ["icirc"]=0x000EE, - ["Icy"]=0x00418, - ["icy"]=0x00438, - ["Idot"]=0x00130, - ["IEcy"]=0x00415, - ["iecy"]=0x00435, - ["iexcl"]=0x000A1, - ["iff"]=0x021D4, - ["Ifr"]=0x02111, - ["ifr"]=0x1D526, - ["Igrave"]=0x000CC, - ["igrave"]=0x000EC, - ["ii"]=0x02148, - ["iiiint"]=0x02A0C, - ["iiint"]=0x0222D, - ["iinfin"]=0x029DC, - ["iiota"]=0x02129, - ["IJlig"]=0x00132, - ["ijlig"]=0x00133, - ["Im"]=0x02111, - ["Imacr"]=0x0012A, - ["imacr"]=0x0012B, - ["image"]=0x02111, - ["ImaginaryI"]=0x02148, - ["imagline"]=0x02110, - ["imagpart"]=0x02111, - ["imath"]=0x00131, - ["imof"]=0x022B7, - ["imped"]=0x001B5, - ["Implies"]=0x021D2, - ["in"]=0x02208, - ["incare"]=0x02105, - ["infin"]=0x0221E, - ["infintie"]=0x029DD, - ["inodot"]=0x00131, - ["Int"]=0x0222C, - ["int"]=0x0222B, - ["intcal"]=0x022BA, - ["integers"]=0x02124, - ["Integral"]=0x0222B, - ["intercal"]=0x022BA, - ["Intersection"]=0x022C2, - ["intlarhk"]=0x02A17, - ["intprod"]=0x02A3C, - ["InvisibleComma"]=0x02063, - ["InvisibleTimes"]=0x02062, - ["IOcy"]=0x00401, - ["iocy"]=0x00451, - ["Iogon"]=0x0012E, - ["iogon"]=0x0012F, - ["Iopf"]=0x1D540, - ["iopf"]=0x1D55A, - ["iota"]=0x003B9, - ["iprod"]=0x02A3C, - ["iquest"]=0x000BF, - ["Iscr"]=0x02110, - ["iscr"]=0x1D4BE, - ["isin"]=0x02208, - ["isindot"]=0x022F5, - ["isinE"]=0x022F9, - ["isins"]=0x022F4, - ["isinsv"]=0x022F3, - ["isinv"]=0x02208, - ["it"]=0x02062, - ["Itilde"]=0x00128, - ["itilde"]=0x00129, - ["Iukcy"]=0x00406, - ["iukcy"]=0x00456, - ["Iuml"]=0x000CF, - ["iuml"]=0x000EF, - ["Jcirc"]=0x00134, - ["jcirc"]=0x00135, - ["Jcy"]=0x00419, - ["jcy"]=0x00439, - ["Jfr"]=0x1D50D, - ["jfr"]=0x1D527, - ["jmath"]=0x0006A, - ["Jopf"]=0x1D541, - ["jopf"]=0x1D55B, - ["Jscr"]=0x1D4A5, - ["jscr"]=0x1D4BF, - ["Jsercy"]=0x00408, - ["jsercy"]=0x00458, - ["Jukcy"]=0x00404, - ["jukcy"]=0x00454, - ["kappa"]=0x003BA, - ["kappav"]=0x003F0, - ["Kcedil"]=0x00136, - ["kcedil"]=0x00137, - ["Kcy"]=0x0041A, - ["kcy"]=0x0043A, - ["Kfr"]=0x1D50E, - ["kfr"]=0x1D528, - ["kgreen"]=0x00138, - ["KHcy"]=0x00425, - ["khcy"]=0x00445, - ["KJcy"]=0x0040C, - ["kjcy"]=0x0045C, - ["Kopf"]=0x1D542, - ["kopf"]=0x1D55C, - ["Kscr"]=0x1D4A6, - ["kscr"]=0x1D4C0, - ["lAarr"]=0x021DA, - ["Lacute"]=0x00139, - ["lacute"]=0x0013A, - ["laemptyv"]=0x029B4, - ["lagran"]=0x02112, - ["Lambda"]=0x0039B, - ["lambda"]=0x003BB, - ["Lang"]=0x0300A, - ["lang"]=0x02329, - ["langd"]=0x02991, - ["langle"]=0x02329, - ["lap"]=0x02A85, - ["Laplacetrf"]=0x02112, - ["laquo"]=0x000AB, - ["Larr"]=0x0219E, - ["lArr"]=0x021D0, - ["larr"]=0x02190, - ["larrb"]=0x021E4, - ["larrbfs"]=0x0291F, - ["larrfs"]=0x0291D, - ["larrhk"]=0x021A9, - ["larrlp"]=0x021AB, - ["larrpl"]=0x02939, - ["larrsim"]=0x02973, - ["larrtl"]=0x021A2, - ["lat"]=0x02AAB, - ["lAtail"]=0x0291B, - ["latail"]=0x02919, - ["late"]=0x02AAD, - ["lates"]=0x02AAD, - ["lBarr"]=0x0290E, - ["lbarr"]=0x0290C, - ["lbbrk"]=0x03014, - ["lbrace"]=0x0007B, - ["lbrack"]=0x0005B, - ["lbrke"]=0x0298B, - ["lbrksld"]=0x0298F, - ["lbrkslu"]=0x0298D, - ["Lcaron"]=0x0013D, - ["lcaron"]=0x0013E, - ["Lcedil"]=0x0013B, - ["lcedil"]=0x0013C, - ["lceil"]=0x02308, - ["lcub"]=0x0007B, - ["Lcy"]=0x0041B, - ["lcy"]=0x0043B, - ["ldca"]=0x02936, - ["ldquo"]=0x0201C, - ["ldquor"]=0x0201E, - ["ldrdhar"]=0x02967, - ["ldrushar"]=0x0294B, - ["ldsh"]=0x021B2, - ["lE"]=0x02266, - ["le"]=0x02264, - ["LeftAngleBracket"]=0x02329, - ["LeftArrow"]=0x02190, - ["Leftarrow"]=0x021D0, - ["leftarrow"]=0x02190, - ["LeftArrowBar"]=0x021E4, - ["LeftArrowRightArrow"]=0x021C6, - ["leftarrowtail"]=0x021A2, - ["LeftCeiling"]=0x02308, - ["LeftDoubleBracket"]=0x0301A, - ["LeftDownTeeVector"]=0x02961, - ["LeftDownVector"]=0x021C3, - ["LeftDownVectorBar"]=0x02959, - ["LeftFloor"]=0x0230A, - ["leftharpoondown"]=0x021BD, - ["leftharpoonup"]=0x021BC, - ["leftleftarrows"]=0x021C7, - ["LeftRightArrow"]=0x02194, - ["Leftrightarrow"]=0x021D4, - ["leftrightarrow"]=0x02194, - ["leftrightarrows"]=0x021C6, - ["leftrightharpoons"]=0x021CB, - ["leftrightsquigarrow"]=0x021AD, - ["LeftRightVector"]=0x0294E, - ["LeftTee"]=0x022A3, - ["LeftTeeArrow"]=0x021A4, - ["LeftTeeVector"]=0x0295A, - ["leftthreetimes"]=0x022CB, - ["LeftTriangle"]=0x022B2, - ["LeftTriangleBar"]=0x029CF, - ["LeftTriangleEqual"]=0x022B4, - ["LeftUpDownVector"]=0x02951, - ["LeftUpTeeVector"]=0x02960, - ["LeftUpVector"]=0x021BF, - ["LeftUpVectorBar"]=0x02958, - ["LeftVector"]=0x021BC, - ["LeftVectorBar"]=0x02952, - ["lEg"]=0x02A8B, - ["leg"]=0x022DA, - ["leq"]=0x02264, - ["leqq"]=0x02266, - ["leqslant"]=0x02A7D, - ["les"]=0x02A7D, - ["lescc"]=0x02AA8, - ["lesdot"]=0x02A7F, - ["lesdoto"]=0x02A81, - ["lesdotor"]=0x02A83, - ["lesg"]=0x022DA, - ["lesges"]=0x02A93, - ["lessapprox"]=0x02A85, - ["lessdot"]=0x022D6, - ["lesseqgtr"]=0x022DA, - ["lesseqqgtr"]=0x02A8B, - ["LessEqualGreater"]=0x022DA, - ["LessFullEqual"]=0x02266, - ["LessGreater"]=0x02276, - ["lessgtr"]=0x02276, - ["LessLess"]=0x02AA1, - ["lesssim"]=0x02272, - ["LessSlantEqual"]=0x02A7D, - ["LessTilde"]=0x02272, - ["lfisht"]=0x0297C, - ["lfloor"]=0x0230A, - ["Lfr"]=0x1D50F, - ["lfr"]=0x1D529, - ["lg"]=0x02276, - ["lgE"]=0x02A91, - ["lHar"]=0x02962, - ["lhard"]=0x021BD, - ["lharu"]=0x021BC, - ["lharul"]=0x0296A, - ["lhblk"]=0x02584, - ["LJcy"]=0x00409, - ["ljcy"]=0x00459, - ["Ll"]=0x022D8, - ["ll"]=0x0226A, - ["llarr"]=0x021C7, - ["llcorner"]=0x0231E, - ["Lleftarrow"]=0x021DA, - ["llhard"]=0x0296B, - ["lltri"]=0x025FA, - ["Lmidot"]=0x0013F, - ["lmidot"]=0x00140, - ["lmoust"]=0x023B0, - ["lmoustache"]=0x023B0, - ["lnap"]=0x02A89, - ["lnapprox"]=0x02A89, - ["lnE"]=0x02268, - ["lne"]=0x02A87, - ["lneq"]=0x02A87, - ["lneqq"]=0x02268, - ["lnsim"]=0x022E6, - ["loang"]=0x03018, - ["loarr"]=0x021FD, - ["lobrk"]=0x0301A, - ["LongLeftArrow"]=0x027F5, - ["Longleftarrow"]=0x027F8, - ["longleftarrow"]=0x027F5, - ["LongLeftRightArrow"]=0x027F7, - ["Longleftrightarrow"]=0x027FA, - ["longleftrightarrow"]=0x027F7, - ["longmapsto"]=0x027FC, - ["LongRightArrow"]=0x027F6, - ["Longrightarrow"]=0x027F9, - ["longrightarrow"]=0x027F6, - ["looparrowleft"]=0x021AB, - ["looparrowright"]=0x021AC, - ["lopar"]=0x02985, - ["Lopf"]=0x1D543, - ["lopf"]=0x1D55D, - ["loplus"]=0x02A2D, - ["lotimes"]=0x02A34, - ["lowast"]=0x02217, - ["lowbar"]=0x0005F, - ["LowerLeftArrow"]=0x02199, - ["LowerRightArrow"]=0x02198, - ["loz"]=0x025CA, - ["lozenge"]=0x025CA, - ["lozf"]=0x029EB, - ["lpar"]=0x00028, - ["lparlt"]=0x02993, - ["lrarr"]=0x021C6, - ["lrcorner"]=0x0231F, - ["lrhar"]=0x021CB, - ["lrhard"]=0x0296D, - ["lrtri"]=0x022BF, - ["Lscr"]=0x02112, - ["lscr"]=0x1D4C1, - ["Lsh"]=0x021B0, - ["lsh"]=0x021B0, - ["lsim"]=0x02272, - ["lsime"]=0x02A8D, - ["lsimg"]=0x02A8F, - ["lsqb"]=0x0005B, - ["lsquo"]=0x02018, - ["lsquor"]=0x0201A, - ["Lstrok"]=0x00141, - ["lstrok"]=0x00142, - ["Lt"]=0x0226A, - ["lt"]=0x0003C, - ["ltcc"]=0x02AA6, - ["ltcir"]=0x02A79, - ["ltdot"]=0x022D6, - ["lthree"]=0x022CB, - ["ltimes"]=0x022C9, - ["ltlarr"]=0x02976, - ["ltquest"]=0x02A7B, - ["ltri"]=0x025C3, - ["ltrie"]=0x022B4, - ["ltrif"]=0x025C2, - ["ltrPar"]=0x02996, - ["lurdshar"]=0x0294A, - ["luruhar"]=0x02966, - ["lvertneqq"]=0x02268, - ["lvnE"]=0x02268, - ["macr"]=0x000AF, - ["male"]=0x02642, - ["malt"]=0x02720, - ["maltese"]=0x02720, - ["Map"]=0x02905, - ["map"]=0x021A6, - ["mapsto"]=0x021A6, - ["mapstodown"]=0x021A7, - ["mapstoleft"]=0x021A4, - ["mapstoup"]=0x021A5, - ["marker"]=0x025AE, - ["mcomma"]=0x02A29, - ["Mcy"]=0x0041C, - ["mcy"]=0x0043C, - ["mdash"]=0x02014, - ["mDDot"]=0x0223A, - ["measuredangle"]=0x02221, - ["MediumSpace"]=0x0205F, - ["Mellintrf"]=0x02133, - ["Mfr"]=0x1D510, - ["mfr"]=0x1D52A, - ["mho"]=0x02127, - ["micro"]=0x000B5, - ["mid"]=0x02223, - ["midast"]=0x0002A, - ["midcir"]=0x02AF0, - ["middot"]=0x000B7, - ["minus"]=0x02212, - ["minusb"]=0x0229F, - ["minusd"]=0x02238, - ["minusdu"]=0x02A2A, - ["MinusPlus"]=0x02213, - ["mlcp"]=0x02ADB, - ["mldr"]=0x02026, - ["mnplus"]=0x02213, - ["models"]=0x022A7, - ["Mopf"]=0x1D544, - ["mopf"]=0x1D55E, - ["mp"]=0x02213, - ["Mscr"]=0x02133, - ["mscr"]=0x1D4C2, - ["mstpos"]=0x0223E, - ["mu"]=0x003BC, - ["multimap"]=0x022B8, - ["mumap"]=0x022B8, - ["nabla"]=0x02207, - ["Nacute"]=0x00143, - ["nacute"]=0x00144, - ["nang"]=0x02220, - ["nap"]=0x02249, - ["napE"]=0x02A70, - ["napid"]=0x0224B, - ["napos"]=0x00149, - ["napprox"]=0x02249, - ["natur"]=0x0266E, - ["natural"]=0x0266E, - ["naturals"]=0x02115, - ["nbsp"]=0x000A0, - ["nbump"]=0x0224E, - ["nbumpe"]=0x0224F, - ["ncap"]=0x02A43, - ["Ncaron"]=0x00147, - ["ncaron"]=0x00148, - ["Ncedil"]=0x00145, - ["ncedil"]=0x00146, - ["ncong"]=0x02247, - ["ncongdot"]=0x02A6D, - ["ncup"]=0x02A42, - ["Ncy"]=0x0041D, - ["ncy"]=0x0043D, - ["ndash"]=0x02013, - ["ne"]=0x02260, - ["nearhk"]=0x02924, - ["neArr"]=0x021D7, - ["nearr"]=0x02197, - ["nearrow"]=0x02197, - ["nedot"]=0x02250, - ["NegativeMediumSpace"]=0x0200B, - ["NegativeThickSpace"]=0x0200B, - ["NegativeThinSpace"]=0x0200B, - ["NegativeVeryThinSpace"]=0x0200B, - ["nequiv"]=0x02262, - ["nesear"]=0x02928, - ["nesim"]=0x02242, - ["NestedGreaterGreater"]=0x0226B, - ["NestedLessLess"]=0x0226A, - ["NewLine"]=0x0000A, - ["nexist"]=0x02204, - ["nexists"]=0x02204, - ["Nfr"]=0x1D511, - ["nfr"]=0x1D52B, - ["ngE"]=0x02267, - ["nge"]=0x02271, - ["ngeq"]=0x02271, - ["ngeqq"]=0x02267, - ["ngeqslant"]=0x02A7E, - ["nges"]=0x02A7E, - ["nGg"]=0x022D9, - ["ngsim"]=0x02275, - ["nGt"]=0x0226B, - ["ngt"]=0x0226F, - ["ngtr"]=0x0226F, - ["nGtv"]=0x0226B, - ["nhArr"]=0x021CE, - ["nharr"]=0x021AE, - ["nhpar"]=0x02AF2, - ["ni"]=0x0220B, - ["nis"]=0x022FC, - ["nisd"]=0x022FA, - ["niv"]=0x0220B, - ["NJcy"]=0x0040A, - ["njcy"]=0x0045A, - ["nlArr"]=0x021CD, - ["nlarr"]=0x0219A, - ["nldr"]=0x02025, - ["nlE"]=0x02266, - ["nle"]=0x02270, - ["nLeftarrow"]=0x021CD, - ["nleftarrow"]=0x0219A, - ["nLeftrightarrow"]=0x021CE, - ["nleftrightarrow"]=0x021AE, - ["nleq"]=0x02270, - ["nleqq"]=0x02266, - ["nleqslant"]=0x02A7D, - ["nles"]=0x02A7D, - ["nless"]=0x0226E, - ["nLl"]=0x022D8, - ["nlsim"]=0x02274, - ["nLt"]=0x0226A, - ["nlt"]=0x0226E, - ["nltri"]=0x022EA, - ["nltrie"]=0x022EC, - ["nLtv"]=0x0226A, - ["nmid"]=0x02224, - ["NoBreak"]=0x02060, - ["NonBreakingSpace"]=0x000A0, - ["Nopf"]=0x02115, - ["nopf"]=0x1D55F, - ["Not"]=0x02AEC, - ["not"]=0x000AC, - ["NotCongruent"]=0x02262, - ["NotCupCap"]=0x0226D, - ["NotDoubleVerticalBar"]=0x02226, - ["NotElement"]=0x02209, - ["NotEqual"]=0x02260, - ["NotEqualTilde"]=0x02242, - ["NotExists"]=0x02204, - ["NotGreater"]=0x0226F, - ["NotGreaterEqual"]=0x02271, - ["NotGreaterFullEqual"]=0x02266, - ["NotGreaterGreater"]=0x0226B, - ["NotGreaterLess"]=0x02279, - ["NotGreaterSlantEqual"]=0x02A7E, - ["NotGreaterTilde"]=0x02275, - ["NotHumpDownHump"]=0x0224E, - ["NotHumpEqual"]=0x0224F, - ["notin"]=0x02209, - ["notindot"]=0x022F5, - ["notinE"]=0x022F9, - ["notinva"]=0x02209, - ["notinvb"]=0x022F7, - ["notinvc"]=0x022F6, - ["NotLeftTriangle"]=0x022EA, - ["NotLeftTriangleBar"]=0x029CF, - ["NotLeftTriangleEqual"]=0x022EC, - ["NotLess"]=0x0226E, - ["NotLessEqual"]=0x02270, - ["NotLessGreater"]=0x02278, - ["NotLessLess"]=0x0226A, - ["NotLessSlantEqual"]=0x02A7D, - ["NotLessTilde"]=0x02274, - ["NotNestedGreaterGreater"]=0x02AA2, - ["NotNestedLessLess"]=0x02AA1, - ["notni"]=0x0220C, - ["notniva"]=0x0220C, - ["notnivb"]=0x022FE, - ["notnivc"]=0x022FD, - ["NotPrecedes"]=0x02280, - ["NotPrecedesEqual"]=0x02AAF, - ["NotPrecedesSlantEqual"]=0x022E0, - ["NotReverseElement"]=0x0220C, - ["NotRightTriangle"]=0x022EB, - ["NotRightTriangleBar"]=0x029D0, - ["NotRightTriangleEqual"]=0x022ED, - ["NotSquareSubset"]=0x0228F, - ["NotSquareSubsetEqual"]=0x022E2, - ["NotSquareSuperset"]=0x02290, - ["NotSquareSupersetEqual"]=0x022E3, - ["NotSubset"]=0x02282, - ["NotSubsetEqual"]=0x02288, - ["NotSucceeds"]=0x02281, - ["NotSucceedsEqual"]=0x02AB0, - ["NotSucceedsSlantEqual"]=0x022E1, - ["NotSucceedsTilde"]=0x0227F, - ["NotSuperset"]=0x02283, - ["NotSupersetEqual"]=0x02289, - ["NotTilde"]=0x02241, - ["NotTildeEqual"]=0x02244, - ["NotTildeFullEqual"]=0x02247, - ["NotTildeTilde"]=0x02249, - ["NotVerticalBar"]=0x02224, - ["npar"]=0x02226, - ["nparallel"]=0x02226, - ["nparsl"]=0x02AFD, - ["npart"]=0x02202, - ["npolint"]=0x02A14, - ["npr"]=0x02280, - ["nprcue"]=0x022E0, - ["npre"]=0x02AAF, - ["nprec"]=0x02280, - ["npreceq"]=0x02AAF, - ["nrArr"]=0x021CF, - ["nrarr"]=0x0219B, - ["nrarrc"]=0x02933, - ["nrarrw"]=0x0219D, - ["nRightarrow"]=0x021CF, - ["nrightarrow"]=0x0219B, - ["nrtri"]=0x022EB, - ["nrtrie"]=0x022ED, - ["nsc"]=0x02281, - ["nsccue"]=0x022E1, - ["nsce"]=0x02AB0, - ["Nscr"]=0x1D4A9, - ["nscr"]=0x1D4C3, - ["nshortmid"]=0x02224, - ["nshortparallel"]=0x02226, - ["nsim"]=0x02241, - ["nsime"]=0x02244, - ["nsimeq"]=0x02244, - ["nsmid"]=0x02224, - ["nspar"]=0x02226, - ["nsqsube"]=0x022E2, - ["nsqsupe"]=0x022E3, - ["nsub"]=0x02284, - ["nsubE"]=0x02AC5, - ["nsube"]=0x02288, - ["nsubset"]=0x02282, - ["nsubseteq"]=0x02288, - ["nsubseteqq"]=0x02AC5, - ["nsucc"]=0x02281, - ["nsucceq"]=0x02AB0, - ["nsup"]=0x02285, - ["nsupE"]=0x02AC6, - ["nsupe"]=0x02289, - ["nsupset"]=0x02283, - ["nsupseteq"]=0x02289, - ["nsupseteqq"]=0x02AC6, - ["ntgl"]=0x02279, - ["Ntilde"]=0x000D1, - ["ntilde"]=0x000F1, - ["ntlg"]=0x02278, - ["ntriangleleft"]=0x022EA, - ["ntrianglelefteq"]=0x022EC, - ["ntriangleright"]=0x022EB, - ["ntrianglerighteq"]=0x022ED, - ["nu"]=0x003BD, - ["num"]=0x00023, - ["numero"]=0x02116, - ["numsp"]=0x02007, - ["nvap"]=0x0224D, - ["nVDash"]=0x022AF, - ["nVdash"]=0x022AE, - ["nvDash"]=0x022AD, - ["nvdash"]=0x022AC, - ["nvge"]=0x02265, - ["nvgt"]=0x0003E, - ["nvHarr"]=0x02904, - ["nvinfin"]=0x029DE, - ["nvlArr"]=0x02902, - ["nvle"]=0x02264, - ["nvlt"]=0x0003C, - ["nvltrie"]=0x022B4, - ["nvrArr"]=0x02903, - ["nvrtrie"]=0x022B5, - ["nvsim"]=0x0223C, - ["nwarhk"]=0x02923, - ["nwArr"]=0x021D6, - ["nwarr"]=0x02196, - ["nwarrow"]=0x02196, - ["nwnear"]=0x02927, - ["Oacute"]=0x000D3, - ["oacute"]=0x000F3, - ["oast"]=0x0229B, - ["ocir"]=0x0229A, - ["Ocirc"]=0x000D4, - ["ocirc"]=0x000F4, - ["Ocy"]=0x0041E, - ["ocy"]=0x0043E, - ["odash"]=0x0229D, - ["Odblac"]=0x00150, - ["odblac"]=0x00151, - ["odiv"]=0x02A38, - ["odot"]=0x02299, - ["odsold"]=0x029BC, - ["OElig"]=0x00152, - ["oelig"]=0x00153, - ["ofcir"]=0x029BF, - ["Ofr"]=0x1D512, - ["ofr"]=0x1D52C, - ["ogon"]=0x002DB, - ["Ograve"]=0x000D2, - ["ograve"]=0x000F2, - ["ogt"]=0x029C1, - ["ohbar"]=0x029B5, - ["ohm"]=0x02126, - ["oint"]=0x0222E, - ["olarr"]=0x021BA, - ["olcir"]=0x029BE, - ["olcross"]=0x029BB, - ["olt"]=0x029C0, - ["Omacr"]=0x0014C, - ["omacr"]=0x0014D, - ["Omega"]=0x003A9, - ["omega"]=0x003C9, - ["omid"]=0x029B6, - ["ominus"]=0x02296, - ["Oopf"]=0x1D546, - ["oopf"]=0x1D560, - ["opar"]=0x029B7, - ["OpenCurlyDoubleQuote"]=0x0201C, - ["OpenCurlyQuote"]=0x02018, - ["operp"]=0x029B9, - ["oplus"]=0x02295, - ["Or"]=0x02A54, - ["or"]=0x02228, - ["orarr"]=0x021BB, - ["ord"]=0x02A5D, - ["order"]=0x02134, - ["orderof"]=0x02134, - ["ordf"]=0x000AA, - ["ordm"]=0x000BA, - ["origof"]=0x022B6, - ["oror"]=0x02A56, - ["orslope"]=0x02A57, - ["orv"]=0x02A5B, - ["oS"]=0x024C8, - ["Oscr"]=0x1D4AA, - ["oscr"]=0x02134, - ["Oslash"]=0x000D8, - ["oslash"]=0x000F8, - ["osol"]=0x02298, - ["Otilde"]=0x000D5, - ["otilde"]=0x000F5, - ["Otimes"]=0x02A37, - ["otimes"]=0x02297, - ["otimesas"]=0x02A36, - ["Ouml"]=0x000D6, - ["ouml"]=0x000F6, - ["ovbar"]=0x0233D, - ["OverBar"]=0x000AF, - ["OverBrace"]=0x0FE37, - ["OverBracket"]=0x023B4, - ["OverParenthesis"]=0x0FE35, - ["par"]=0x02225, - ["para"]=0x000B6, - ["parallel"]=0x02225, - ["parsim"]=0x02AF3, - ["parsl"]=0x02AFD, - ["part"]=0x02202, - ["PartialD"]=0x02202, - ["Pcy"]=0x0041F, - ["pcy"]=0x0043F, - ["percnt"]=0x00025, - ["period"]=0x0002E, - ["permil"]=0x02030, - ["perp"]=0x022A5, - ["pertenk"]=0x02031, - ["Pfr"]=0x1D513, - ["pfr"]=0x1D52D, - ["Phi"]=0x003A6, - ["phi"]=0x003D5, - ["phiv"]=0x003C6, - ["phmmat"]=0x02133, - ["phone"]=0x0260E, - ["Pi"]=0x003A0, - ["pi"]=0x003C0, - ["pitchfork"]=0x022D4, - ["piv"]=0x003D6, - ["planck"]=0x0210F, - ["planckh"]=0x0210E, - ["plankv"]=0x0210F, - ["plus"]=0x0002B, - ["plusacir"]=0x02A23, - ["plusb"]=0x0229E, - ["pluscir"]=0x02A22, - ["plusdo"]=0x02214, - ["plusdu"]=0x02A25, - ["pluse"]=0x02A72, - ["PlusMinus"]=0x000B1, - ["plusmn"]=0x000B1, - ["plussim"]=0x02A26, - ["plustwo"]=0x02A27, - ["pm"]=0x000B1, - ["Poincareplane"]=0x0210C, - ["pointint"]=0x02A15, - ["Popf"]=0x02119, - ["popf"]=0x1D561, - ["pound"]=0x000A3, - ["Pr"]=0x02ABB, - ["pr"]=0x0227A, - ["prap"]=0x02AB7, - ["prcue"]=0x0227C, - ["prE"]=0x02AB3, - ["pre"]=0x02AAF, - ["prec"]=0x0227A, - ["precapprox"]=0x02AB7, - ["preccurlyeq"]=0x0227C, - ["Precedes"]=0x0227A, - ["PrecedesEqual"]=0x02AAF, - ["PrecedesSlantEqual"]=0x0227C, - ["PrecedesTilde"]=0x0227E, - ["preceq"]=0x02AAF, - ["precnapprox"]=0x02AB9, - ["precneqq"]=0x02AB5, - ["precnsim"]=0x022E8, - ["precsim"]=0x0227E, - ["Prime"]=0x02033, - ["prime"]=0x02032, - ["primes"]=0x02119, - ["prnap"]=0x02AB9, - ["prnE"]=0x02AB5, - ["prnsim"]=0x022E8, - ["prod"]=0x0220F, - ["Product"]=0x0220F, - ["profalar"]=0x0232E, - ["profline"]=0x02312, - ["profsurf"]=0x02313, - ["prop"]=0x0221D, - ["Proportion"]=0x02237, - ["Proportional"]=0x0221D, - ["propto"]=0x0221D, - ["prsim"]=0x0227E, - ["prurel"]=0x022B0, - ["Pscr"]=0x1D4AB, - ["pscr"]=0x1D4C5, - ["Psi"]=0x003A8, - ["psi"]=0x003C8, - ["puncsp"]=0x02008, - ["Qfr"]=0x1D514, - ["qfr"]=0x1D52E, - ["qint"]=0x02A0C, - ["Qopf"]=0x0211A, - ["qopf"]=0x1D562, - ["qprime"]=0x02057, - ["Qscr"]=0x1D4AC, - ["qscr"]=0x1D4C6, - ["quaternions"]=0x0210D, - ["quatint"]=0x02A16, - ["quest"]=0x0003F, - ["questeq"]=0x0225F, - ["quot"]=0x00022, - ["rAarr"]=0x021DB, - ["race"]=0x029DA, - ["Racute"]=0x00154, - ["racute"]=0x00155, - ["radic"]=0x0221A, - ["raemptyv"]=0x029B3, - ["Rang"]=0x0300B, - ["rang"]=0x0232A, - ["rangd"]=0x02992, - ["range"]=0x029A5, - ["rangle"]=0x0232A, - ["raquo"]=0x000BB, - ["Rarr"]=0x021A0, - ["rArr"]=0x021D2, - ["rarr"]=0x02192, - ["rarrap"]=0x02975, - ["rarrb"]=0x021E5, - ["rarrbfs"]=0x02920, - ["rarrc"]=0x02933, - ["rarrfs"]=0x0291E, - ["rarrhk"]=0x021AA, - ["rarrlp"]=0x021AC, - ["rarrpl"]=0x02945, - ["rarrsim"]=0x02974, - ["Rarrtl"]=0x02916, - ["rarrtl"]=0x021A3, - ["rarrw"]=0x0219D, - ["rAtail"]=0x0291C, - ["ratail"]=0x0291A, - ["ratio"]=0x02236, - ["rationals"]=0x0211A, - ["RBarr"]=0x02910, - ["rBarr"]=0x0290F, - ["rbarr"]=0x0290D, - ["rbbrk"]=0x03015, - ["rbrace"]=0x0007D, - ["rbrack"]=0x0005D, - ["rbrke"]=0x0298C, - ["rbrksld"]=0x0298E, - ["rbrkslu"]=0x02990, - ["Rcaron"]=0x00158, - ["rcaron"]=0x00159, - ["Rcedil"]=0x00156, - ["rcedil"]=0x00157, - ["rceil"]=0x02309, - ["rcub"]=0x0007D, - ["Rcy"]=0x00420, - ["rcy"]=0x00440, - ["rdca"]=0x02937, - ["rdldhar"]=0x02969, - ["rdquo"]=0x0201D, - ["rdquor"]=0x0201D, - ["rdsh"]=0x021B3, - ["Re"]=0x0211C, - ["real"]=0x0211C, - ["realine"]=0x0211B, - ["realpart"]=0x0211C, - ["reals"]=0x0211D, - ["rect"]=0x025AD, - ["reg"]=0x000AE, - ["ReverseElement"]=0x0220B, - ["ReverseEquilibrium"]=0x021CB, - ["ReverseUpEquilibrium"]=0x0296F, - ["rfisht"]=0x0297D, - ["rfloor"]=0x0230B, - ["Rfr"]=0x0211C, - ["rfr"]=0x1D52F, - ["rHar"]=0x02964, - ["rhard"]=0x021C1, - ["rharu"]=0x021C0, - ["rharul"]=0x0296C, - ["rho"]=0x003C1, - ["rhov"]=0x003F1, - ["RightAngleBracket"]=0x0232A, - ["RightArrow"]=0x02192, - ["Rightarrow"]=0x021D2, - ["rightarrow"]=0x02192, - ["RightArrowBar"]=0x021E5, - ["RightArrowLeftArrow"]=0x021C4, - ["rightarrowtail"]=0x021A3, - ["RightCeiling"]=0x02309, - ["RightDoubleBracket"]=0x0301B, - ["RightDownTeeVector"]=0x0295D, - ["RightDownVector"]=0x021C2, - ["RightDownVectorBar"]=0x02955, - ["RightFloor"]=0x0230B, - ["rightharpoondown"]=0x021C1, - ["rightharpoonup"]=0x021C0, - ["rightleftarrows"]=0x021C4, - ["rightleftharpoons"]=0x021CC, - ["rightrightarrows"]=0x021C9, - ["rightsquigarrow"]=0x0219D, - ["RightTee"]=0x022A2, - ["RightTeeArrow"]=0x021A6, - ["RightTeeVector"]=0x0295B, - ["rightthreetimes"]=0x022CC, - ["RightTriangle"]=0x022B3, - ["RightTriangleBar"]=0x029D0, - ["RightTriangleEqual"]=0x022B5, - ["RightUpDownVector"]=0x0294F, - ["RightUpTeeVector"]=0x0295C, - ["RightUpVector"]=0x021BE, - ["RightUpVectorBar"]=0x02954, - ["RightVector"]=0x021C0, - ["RightVectorBar"]=0x02953, - ["ring"]=0x002DA, - ["risingdotseq"]=0x02253, - ["rlarr"]=0x021C4, - ["rlhar"]=0x021CC, - ["rmoust"]=0x023B1, - ["rmoustache"]=0x023B1, - ["rnmid"]=0x02AEE, - ["roang"]=0x03019, - ["roarr"]=0x021FE, - ["robrk"]=0x0301B, - ["ropar"]=0x02986, - ["Ropf"]=0x0211D, - ["ropf"]=0x1D563, - ["roplus"]=0x02A2E, - ["rotimes"]=0x02A35, - ["RoundImplies"]=0x02970, - ["rpar"]=0x00029, - ["rpargt"]=0x02994, - ["rppolint"]=0x02A12, - ["rrarr"]=0x021C9, - ["Rrightarrow"]=0x021DB, - ["Rscr"]=0x0211B, - ["rscr"]=0x1D4C7, - ["Rsh"]=0x021B1, - ["rsh"]=0x021B1, - ["rsqb"]=0x0005D, - ["rsquo"]=0x02019, - ["rsquor"]=0x02019, - ["rthree"]=0x022CC, - ["rtimes"]=0x022CA, - ["rtri"]=0x025B9, - ["rtrie"]=0x022B5, - ["rtrif"]=0x025B8, - ["rtriltri"]=0x029CE, - ["RuleDelayed"]=0x029F4, - ["ruluhar"]=0x02968, - ["rx"]=0x0211E, - ["Sacute"]=0x0015A, - ["sacute"]=0x0015B, - ["Sc"]=0x02ABC, - ["sc"]=0x0227B, - ["scap"]=0x02AB8, - ["Scaron"]=0x00160, - ["scaron"]=0x00161, - ["sccue"]=0x0227D, - ["scE"]=0x02AB4, - ["sce"]=0x02AB0, - ["Scedil"]=0x0015E, - ["scedil"]=0x0015F, - ["Scirc"]=0x0015C, - ["scirc"]=0x0015D, - ["scnap"]=0x02ABA, - ["scnE"]=0x02AB6, - ["scnsim"]=0x022E9, - ["scpolint"]=0x02A13, - ["scsim"]=0x0227F, - ["Scy"]=0x00421, - ["scy"]=0x00441, - ["sdot"]=0x022C5, - ["sdotb"]=0x022A1, - ["sdote"]=0x02A66, - ["searhk"]=0x02925, - ["seArr"]=0x021D8, - ["searr"]=0x02198, - ["searrow"]=0x02198, - ["sect"]=0x000A7, - ["semi"]=0x0003B, - ["seswar"]=0x02929, - ["setminus"]=0x02216, - ["setmn"]=0x02216, - ["sext"]=0x02736, - ["Sfr"]=0x1D516, - ["sfr"]=0x1D530, - ["sfrown"]=0x02322, - ["sharp"]=0x0266F, - ["SHCHcy"]=0x00429, - ["shchcy"]=0x00449, - ["SHcy"]=0x00428, - ["shcy"]=0x00448, - ["ShortDownArrow"]=0x02193, - ["ShortLeftArrow"]=0x02190, - ["shortmid"]=0x02223, - ["shortparallel"]=0x02225, - ["ShortRightArrow"]=0x02192, - ["ShortUpArrow"]=0x02191, - ["shy"]=0x000AD, - ["Sigma"]=0x003A3, - ["sigma"]=0x003C3, - ["sigmav"]=0x003C2, - ["sim"]=0x0223C, - ["simdot"]=0x02A6A, - ["sime"]=0x02243, - ["simeq"]=0x02243, - ["simg"]=0x02A9E, - ["simgE"]=0x02AA0, - ["siml"]=0x02A9D, - ["simlE"]=0x02A9F, - ["simne"]=0x02246, - ["simplus"]=0x02A24, - ["simrarr"]=0x02972, - ["slarr"]=0x02190, - ["SmallCircle"]=0x02218, - ["smallsetminus"]=0x02216, - ["smashp"]=0x02A33, - ["smeparsl"]=0x029E4, - ["smid"]=0x02223, - ["smile"]=0x02323, - ["smt"]=0x02AAA, - ["smte"]=0x02AAC, - ["smtes"]=0x02AAC, - ["SOFTcy"]=0x0042C, - ["softcy"]=0x0044C, - ["sol"]=0x0002F, - ["solb"]=0x029C4, - ["solbar"]=0x0233F, - ["Sopf"]=0x1D54A, - ["sopf"]=0x1D564, - ["spades"]=0x02660, - ["spadesuit"]=0x02660, - ["spar"]=0x02225, - ["sqcap"]=0x02293, - ["sqcaps"]=0x02293, - ["sqcup"]=0x02294, - ["sqcups"]=0x02294, - ["Sqrt"]=0x0221A, - ["sqsub"]=0x0228F, - ["sqsube"]=0x02291, - ["sqsubset"]=0x0228F, - ["sqsubseteq"]=0x02291, - ["sqsup"]=0x02290, - ["sqsupe"]=0x02292, - ["sqsupset"]=0x02290, - ["sqsupseteq"]=0x02292, - ["squ"]=0x025A1, - ["Square"]=0x025A1, - ["square"]=0x025A1, - ["SquareIntersection"]=0x02293, - ["SquareSubset"]=0x0228F, - ["SquareSubsetEqual"]=0x02291, - ["SquareSuperset"]=0x02290, - ["SquareSupersetEqual"]=0x02292, - ["SquareUnion"]=0x02294, - ["squarf"]=0x025AA, - ["squf"]=0x025AA, - ["srarr"]=0x02192, - ["Sscr"]=0x1D4AE, - ["sscr"]=0x1D4C8, - ["ssetmn"]=0x02216, - ["ssmile"]=0x02323, - ["sstarf"]=0x022C6, - ["Star"]=0x022C6, - ["star"]=0x02606, - ["starf"]=0x02605, - ["straightepsilon"]=0x003F5, - ["straightphi"]=0x003D5, - ["strns"]=0x000AF, - ["Sub"]=0x022D0, - ["sub"]=0x02282, - ["subdot"]=0x02ABD, - ["subE"]=0x02AC5, - ["sube"]=0x02286, - ["subedot"]=0x02AC3, - ["submult"]=0x02AC1, - ["subnE"]=0x02ACB, - ["subne"]=0x0228A, - ["subplus"]=0x02ABF, - ["subrarr"]=0x02979, - ["Subset"]=0x022D0, - ["subset"]=0x02282, - ["subseteq"]=0x02286, - ["subseteqq"]=0x02AC5, - ["SubsetEqual"]=0x02286, - ["subsetneq"]=0x0228A, - ["subsetneqq"]=0x02ACB, - ["subsim"]=0x02AC7, - ["subsub"]=0x02AD5, - ["subsup"]=0x02AD3, - ["succ"]=0x0227B, - ["succapprox"]=0x02AB8, - ["succcurlyeq"]=0x0227D, - ["Succeeds"]=0x0227B, - ["SucceedsEqual"]=0x02AB0, - ["SucceedsSlantEqual"]=0x0227D, - ["SucceedsTilde"]=0x0227F, - ["succeq"]=0x02AB0, - ["succnapprox"]=0x02ABA, - ["succneqq"]=0x02AB6, - ["succnsim"]=0x022E9, - ["succsim"]=0x0227F, - ["SuchThat"]=0x0220B, - ["Sum"]=0x02211, - ["sum"]=0x02211, - ["sung"]=0x0266A, - ["Sup"]=0x022D1, - ["sup"]=0x02283, - ["sup1"]=0x000B9, - ["sup2"]=0x000B2, - ["sup3"]=0x000B3, - ["supdot"]=0x02ABE, - ["supdsub"]=0x02AD8, - ["supE"]=0x02AC6, - ["supe"]=0x02287, - ["supedot"]=0x02AC4, - ["Superset"]=0x02283, - ["SupersetEqual"]=0x02287, - ["suphsol"]=0x02283, - ["suphsub"]=0x02AD7, - ["suplarr"]=0x0297B, - ["supmult"]=0x02AC2, - ["supnE"]=0x02ACC, - ["supne"]=0x0228B, - ["supplus"]=0x02AC0, - ["Supset"]=0x022D1, - ["supset"]=0x02283, - ["supseteq"]=0x02287, - ["supseteqq"]=0x02AC6, - ["supsetneq"]=0x0228B, - ["supsetneqq"]=0x02ACC, - ["supsim"]=0x02AC8, - ["supsub"]=0x02AD4, - ["supsup"]=0x02AD6, - ["swarhk"]=0x02926, - ["swArr"]=0x021D9, - ["swarr"]=0x02199, - ["swarrow"]=0x02199, - ["swnwar"]=0x0292A, - ["szlig"]=0x000DF, - ["Tab"]=0x00009, - ["target"]=0x02316, - ["tau"]=0x003C4, - ["tbrk"]=0x023B4, - ["Tcaron"]=0x00164, - ["tcaron"]=0x00165, - ["Tcedil"]=0x00162, - ["tcedil"]=0x00163, - ["Tcy"]=0x00422, - ["tcy"]=0x00442, - ["tdot"]=0x020DB, - ["telrec"]=0x02315, - ["Tfr"]=0x1D517, - ["tfr"]=0x1D531, - ["there4"]=0x02234, - ["Therefore"]=0x02234, - ["therefore"]=0x02234, - ["Theta"]=0x00398, - ["theta"]=0x003B8, - ["thetav"]=0x003D1, - ["thickapprox"]=0x02248, - ["thicksim"]=0x0223C, - ["ThickSpace"]=0x02009, - ["thinsp"]=0x02009, - ["ThinSpace"]=0x02009, - ["thkap"]=0x02248, - ["thksim"]=0x0223C, - ["THORN"]=0x000DE, - ["thorn"]=0x000FE, - ["Tilde"]=0x0223C, - ["tilde"]=0x002DC, - ["TildeEqual"]=0x02243, - ["TildeFullEqual"]=0x02245, - ["TildeTilde"]=0x02248, - ["times"]=0x000D7, - ["timesb"]=0x022A0, - ["timesbar"]=0x02A31, - ["timesd"]=0x02A30, - ["tint"]=0x0222D, - ["toea"]=0x02928, - ["top"]=0x022A4, - ["topbot"]=0x02336, - ["topcir"]=0x02AF1, - ["Topf"]=0x1D54B, - ["topf"]=0x1D565, - ["topfork"]=0x02ADA, - ["tosa"]=0x02929, - ["tprime"]=0x02034, - ["trade"]=0x02122, - ["triangle"]=0x025B5, - ["triangledown"]=0x025BF, - ["triangleleft"]=0x025C3, - ["trianglelefteq"]=0x022B4, - ["triangleq"]=0x0225C, - ["triangleright"]=0x025B9, - ["trianglerighteq"]=0x022B5, - ["tridot"]=0x025EC, - ["trie"]=0x0225C, - ["triminus"]=0x02A3A, - ["TripleDot"]=0x020DB, - ["triplus"]=0x02A39, - ["trisb"]=0x029CD, - ["tritime"]=0x02A3B, - ["trpezium"]=0x0FFFD, - ["Tscr"]=0x1D4AF, - ["tscr"]=0x1D4C9, - ["TScy"]=0x00426, - ["tscy"]=0x00446, - ["TSHcy"]=0x0040B, - ["tshcy"]=0x0045B, - ["Tstrok"]=0x00166, - ["tstrok"]=0x00167, - ["twixt"]=0x0226C, - ["twoheadleftarrow"]=0x0219E, - ["twoheadrightarrow"]=0x021A0, - ["Uacute"]=0x000DA, - ["uacute"]=0x000FA, - ["Uarr"]=0x0219F, - ["uArr"]=0x021D1, - ["uarr"]=0x02191, - ["Uarrocir"]=0x02949, - ["Ubrcy"]=0x0040E, - ["ubrcy"]=0x0045E, - ["Ubreve"]=0x0016C, - ["ubreve"]=0x0016D, - ["Ucirc"]=0x000DB, - ["ucirc"]=0x000FB, - ["Ucy"]=0x00423, - ["ucy"]=0x00443, - ["udarr"]=0x021C5, - ["Udblac"]=0x00170, - ["udblac"]=0x00171, - ["udhar"]=0x0296E, - ["ufisht"]=0x0297E, - ["Ufr"]=0x1D518, - ["ufr"]=0x1D532, - ["Ugrave"]=0x000D9, - ["ugrave"]=0x000F9, - ["uHar"]=0x02963, - ["uharl"]=0x021BF, - ["uharr"]=0x021BE, - ["uhblk"]=0x02580, - ["ulcorn"]=0x0231C, - ["ulcorner"]=0x0231C, - ["ulcrop"]=0x0230F, - ["ultri"]=0x025F8, - ["Umacr"]=0x0016A, - ["umacr"]=0x0016B, - ["uml"]=0x000A8, - ["UnderBar"]=0x00332, - ["UnderBrace"]=0x0FE38, - ["UnderBracket"]=0x023B5, - ["UnderParenthesis"]=0x0FE36, - ["Union"]=0x022C3, - ["UnionPlus"]=0x0228E, - ["Uogon"]=0x00172, - ["uogon"]=0x00173, - ["Uopf"]=0x1D54C, - ["uopf"]=0x1D566, - ["UpArrow"]=0x02191, - ["Uparrow"]=0x021D1, - ["uparrow"]=0x02191, - ["UpArrowBar"]=0x02912, - ["UpArrowDownArrow"]=0x021C5, - ["UpDownArrow"]=0x02195, - ["Updownarrow"]=0x021D5, - ["updownarrow"]=0x02195, - ["UpEquilibrium"]=0x0296E, - ["upharpoonleft"]=0x021BF, - ["upharpoonright"]=0x021BE, - ["uplus"]=0x0228E, - ["UpperLeftArrow"]=0x02196, - ["UpperRightArrow"]=0x02197, - ["Upsi"]=0x003D2, - ["upsi"]=0x003C5, - ["Upsilon"]=0x003A5, - ["upsilon"]=0x003C5, - ["UpTee"]=0x022A5, - ["UpTeeArrow"]=0x021A5, - ["upuparrows"]=0x021C8, - ["urcorn"]=0x0231D, - ["urcorner"]=0x0231D, - ["urcrop"]=0x0230E, - ["Uring"]=0x0016E, - ["uring"]=0x0016F, - ["urtri"]=0x025F9, - ["Uscr"]=0x1D4B0, - ["uscr"]=0x1D4CA, - ["utdot"]=0x022F0, - ["Utilde"]=0x00168, - ["utilde"]=0x00169, - ["utri"]=0x025B5, - ["utrif"]=0x025B4, - ["uuarr"]=0x021C8, - ["Uuml"]=0x000DC, - ["uuml"]=0x000FC, - ["uwangle"]=0x029A7, - ["vangrt"]=0x0299C, - ["varepsilon"]=0x003B5, - ["varkappa"]=0x003F0, - ["varnothing"]=0x02205, - ["varphi"]=0x003C6, - ["varpi"]=0x003D6, - ["varpropto"]=0x0221D, - ["vArr"]=0x021D5, - ["varr"]=0x02195, - ["varrho"]=0x003F1, - ["varsigma"]=0x003C2, - ["varsubsetneq"]=0x0228A, - ["varsubsetneqq"]=0x02ACB, - ["varsupsetneq"]=0x0228B, - ["varsupsetneqq"]=0x02ACC, - ["vartheta"]=0x003D1, - ["vartriangleleft"]=0x022B2, - ["vartriangleright"]=0x022B3, - ["Vbar"]=0x02AEB, - ["vBar"]=0x02AE8, - ["vBarv"]=0x02AE9, - ["Vcy"]=0x00412, - ["vcy"]=0x00432, - ["VDash"]=0x022AB, - ["Vdash"]=0x022A9, - ["vDash"]=0x022A8, - ["vdash"]=0x022A2, - ["Vdashl"]=0x02AE6, - ["Vee"]=0x022C1, - ["vee"]=0x02228, - ["veebar"]=0x022BB, - ["veeeq"]=0x0225A, - ["vellip"]=0x022EE, - ["Verbar"]=0x02016, - ["verbar"]=0x0007C, - ["Vert"]=0x02016, - ["vert"]=0x0007C, - ["VerticalBar"]=0x02223, - ["VerticalLine"]=0x0007C, - ["VerticalSeparator"]=0x02758, - ["VerticalTilde"]=0x02240, - ["VeryThinSpace"]=0x0200A, - ["Vfr"]=0x1D519, - ["vfr"]=0x1D533, - ["vltri"]=0x022B2, - ["vnsub"]=0x02282, - ["vnsup"]=0x02283, - ["Vopf"]=0x1D54D, - ["vopf"]=0x1D567, - ["vprop"]=0x0221D, - ["vrtri"]=0x022B3, - ["Vscr"]=0x1D4B1, - ["vscr"]=0x1D4CB, - ["vsubnE"]=0x02ACB, - ["vsubne"]=0x0228A, - ["vsupnE"]=0x02ACC, - ["vsupne"]=0x0228B, - ["Vvdash"]=0x022AA, - ["vzigzag"]=0x0299A, - ["Wcirc"]=0x00174, - ["wcirc"]=0x00175, - ["wedbar"]=0x02A5F, - ["Wedge"]=0x022C0, - ["wedge"]=0x02227, - ["wedgeq"]=0x02259, - ["weierp"]=0x02118, - ["Wfr"]=0x1D51A, - ["wfr"]=0x1D534, - ["Wopf"]=0x1D54E, - ["wopf"]=0x1D568, - ["wp"]=0x02118, - ["wr"]=0x02240, - ["wreath"]=0x02240, - ["Wscr"]=0x1D4B2, - ["wscr"]=0x1D4CC, - ["xcap"]=0x022C2, - ["xcirc"]=0x025EF, - ["xcup"]=0x022C3, - ["xdtri"]=0x025BD, - ["Xfr"]=0x1D51B, - ["xfr"]=0x1D535, - ["xhArr"]=0x027FA, - ["xharr"]=0x027F7, - ["Xi"]=0x0039E, - ["xi"]=0x003BE, - ["xlArr"]=0x027F8, - ["xlarr"]=0x027F5, - ["xmap"]=0x027FC, - ["xnis"]=0x022FB, - ["xodot"]=0x02A00, - ["Xopf"]=0x1D54F, - ["xopf"]=0x1D569, - ["xoplus"]=0x02A01, - ["xotime"]=0x02A02, - ["xrArr"]=0x027F9, - ["xrarr"]=0x027F6, - ["Xscr"]=0x1D4B3, - ["xscr"]=0x1D4CD, - ["xsqcup"]=0x02A06, - ["xuplus"]=0x02A04, - ["xutri"]=0x025B3, - ["xvee"]=0x022C1, - ["xwedge"]=0x022C0, - ["Yacute"]=0x000DD, - ["yacute"]=0x000FD, - ["YAcy"]=0x0042F, - ["yacy"]=0x0044F, - ["Ycirc"]=0x00176, - ["ycirc"]=0x00177, - ["Ycy"]=0x0042B, - ["ycy"]=0x0044B, - ["yen"]=0x000A5, - ["Yfr"]=0x1D51C, - ["yfr"]=0x1D536, - ["YIcy"]=0x00407, - ["yicy"]=0x00457, - ["Yopf"]=0x1D550, - ["yopf"]=0x1D56A, - ["Yscr"]=0x1D4B4, - ["yscr"]=0x1D4CE, - ["YUcy"]=0x0042E, - ["yucy"]=0x0044E, - ["Yuml"]=0x00178, - ["yuml"]=0x000FF, - ["Zacute"]=0x00179, - ["zacute"]=0x0017A, - ["Zcaron"]=0x0017D, - ["zcaron"]=0x0017E, - ["Zcy"]=0x00417, - ["zcy"]=0x00437, - ["Zdot"]=0x0017B, - ["zdot"]=0x0017C, - ["zeetrf"]=0x02128, - ["ZeroWidthSpace"]=0x0200B, - ["zeta"]=0x003B6, - ["Zfr"]=0x02128, - ["zfr"]=0x1D537, - ["ZHcy"]=0x00416, - ["zhcy"]=0x00436, - ["zigrarr"]=0x021DD, - ["Zopf"]=0x02124, - ["zopf"]=0x1D56B, - ["Zscr"]=0x1D4B5, - ["zscr"]=0x1D4CF, - - ["plusminus"]=0x000B1, - ["minusplus"]=0x02213, - ["cdots"]=0x2026, -} diff --git a/tex/context/base/math-eul.mkii b/tex/context/base/math-eul.mkii index 7552957a8..f50244525 100644 --- a/tex/context/base/math-eul.mkii +++ b/tex/context/base/math-eul.mkii @@ -5,7 +5,7 @@ %D subtitle=Virtual Euler Specials, %D author={Hans Hagen \& Taco Hoekwater \& Adam Lindsay}, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/math-for.mkiv b/tex/context/base/math-for.mkiv index e33276d53..16cab9a65 100644 --- a/tex/context/base/math-for.mkiv +++ b/tex/context/base/math-for.mkiv @@ -5,7 +5,7 @@ %D subtitle=Math Numbering, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE / Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/math-fou.mkii b/tex/context/base/math-fou.mkii index 8a72f1288..26b03d73e 100644 --- a/tex/context/base/math-fou.mkii +++ b/tex/context/base/math-fou.mkii @@ -5,7 +5,7 @@ %D subtitle=Fourier Specials, %D author={Michel Biovani \& Hans Hagen}, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/math-frc.mkii b/tex/context/base/math-frc.mkii index 767c5ec5c..b14c93774 100644 --- a/tex/context/base/math-frc.mkii +++ b/tex/context/base/math-frc.mkii @@ -5,7 +5,7 @@ %D subtitle=Fractions, %D author={Hans Hagen \& Taco Hoekwater \& Aditya Mahajan}, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/math-frc.mkiv b/tex/context/base/math-frc.mkiv index f6331126f..d69937ad3 100644 --- a/tex/context/base/math-frc.mkiv +++ b/tex/context/base/math-frc.mkiv @@ -5,7 +5,7 @@ %D subtitle=Fractions, %D author={Hans Hagen \& Taco Hoekwater}, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/math-ini.lua b/tex/context/base/math-ini.lua index a122f7229..358a7fbae 100644 --- a/tex/context/base/math-ini.lua +++ b/tex/context/base/math-ini.lua @@ -11,6 +11,8 @@ if not modules then modules = { } end modules ['math-ext'] = { local texsprint, format, utfchar, utfbyte = tex.sprint, string.format, utf.char, utf.byte local setmathcode, setdelcode = tex.setmathcode, tex.setdelcode +local texattribute = tex.attribute +local floor = math.floor local allocate = utilities.storage.allocate @@ -53,8 +55,20 @@ local classes = allocate { nolop = 1, -- mathnolopcomm @@mathnolopcomm } +local codes = allocate { + ordinary = 0, [0] = "ordinary", + largeoperator = 1, [1] = "largeoperator", + binaryoperator = 2, [2] = "binaryoperator", + relation = 3, [3] = "relation", + openingsymbol = 4, [4] = "openingsymbol", + closingsymbol = 5, [5] = "closingsymbol", + punctuation = 6, [6] = "punctuation", + variable = 7, [7] = "variable", +} + mathematics.families = families mathematics.classes = classes +mathematics.codes = codes classes.alphabetic = classes.alpha classes.unknown = classes.nothing @@ -98,14 +112,8 @@ end local function mathtopaccent(class,family,slot) return format('\\Umathaccent "%X "%X "%X ',0,family,slot) -- no class end -if tex.luatexversion > 65 then -- this will disappear at 0.70 - local function mathbotaccent(class,family,slot) - return format('\\Umathaccent bottom "%X "%X "%X ',0,family,slot) -- no class - end -else - local function mathbotaccent(class,family,slot) - return format('\\Umathbotaccent "%X "%X "%X ',0,family,slot) -- no class - end +local function mathbotaccent(class,family,slot) + return format('\\Umathaccent bottom "%X "%X "%X ',0,family,slot) -- no class end local function mathtopdelimiter(class,family,slot) return format('\\Udelimiterover "%X "%X ',family,slot) -- no class @@ -307,34 +315,24 @@ function mathematics.utfmathclass(chr, default) local cd = characters.data[utfbyte(chr)] return (cd and cd.mathclass) or default or "unknown" end + function mathematics.utfmathstretch(chr, default) -- "h", "v", "b", "" local cd = characters.data[utfbyte(chr)] return (cd and cd.mathstretch) or default or "" end + function mathematics.utfmathcommand(chr, default) local cd = characters.data[utfbyte(chr)] local cmd = cd and cd.mathname return cmd or default or "" end + function mathematics.utfmathfiller(chr, default) local cd = characters.data[utfbyte(chr)] local cmd = cd and (cd.mathfiller or cd.mathname) return cmd or default or "" end --- xml - -mathematics.xml = { entities = { } } - -function mathematics.xml.registerentities() - local entities = xml.entities - for name, unicode in next, mathematics.xml.entities do - if not entities[name] then - entities[name] = utfchar(unicode) - end - end -end - -- helpers function mathematics.big(tfmdata,unicode,n) @@ -365,3 +363,70 @@ function mathematics.big(tfmdata,unicode,n) return unicode end +-- experimental + +-- local categories = { } -- indexed + hashed +-- +-- local a_mathcategory = attributes.private("mathcategory") +-- +-- local function registercategory(category,tag,data) -- always same data for tag +-- local c = categories[category] +-- if not c then +-- c = { } +-- categories[category] = c +-- end +-- local n = c[tag] +-- if not n then +-- n = #c + 1 +-- c[n] = data +-- n = n * 1000 + category +-- c[tag] = n +-- end +-- return n +-- end +-- +-- function mathematics.getcategory(n) +-- local category = n % 1000 +-- return category, categories[category][floor(n/1000)] +-- end +-- +-- mathematics.registercategory = registercategory +-- +-- function commands.taggedmathfunction(tag,label) +-- if label then +-- texattribute[a_mathcategory] = registercategory(1,tag,tag) +-- context.mathlabeltext(tag) +-- else +-- texattribute[a_mathcategory] = 1 +-- context(tag) +-- end +-- end + +local categories = { } +mathematics.categories = categories + +local a_mathcategory = attributes.private("mathcategory") + +local functions = storage.allocate() +local noffunctions = 1000 -- offset + +categories.functions = functions + +function commands.taggedmathfunction(tag,label,apply) + local delta = apply and 1000 or 0 + if label then + local n = functions[tag] + if not n then + noffunctions = noffunctions + 1 + functions[noffunctions] = tag + functions[tag] = noffunctions + texattribute[a_mathcategory] = noffunctions + delta + else + texattribute[a_mathcategory] = n + delta + end + context.mathlabeltext(tag) + else + texattribute[a_mathcategory] = 1000 + delta + context(tag) + end +end diff --git a/tex/context/base/math-ini.mkii b/tex/context/base/math-ini.mkii index 9f7ab49e5..d6d10feb3 100644 --- a/tex/context/base/math-ini.mkii +++ b/tex/context/base/math-ini.mkii @@ -5,7 +5,7 @@ %D subtitle=Initializations, %D author={Hans Hagen \& Taco Hoekwater}, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/math-ini.mkiv b/tex/context/base/math-ini.mkiv index f778afa08..a6519dbe5 100644 --- a/tex/context/base/math-ini.mkiv +++ b/tex/context/base/math-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=Initializations, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -37,10 +37,10 @@ \registerctxluafile{math-ini}{1.001} \registerctxluafile{math-dim}{1.001} \registerctxluafile{math-act}{1.001} -\registerctxluafile{math-ent}{1.001} \registerctxluafile{math-ext}{1.001} \registerctxluafile{math-vfu}{1.001} \registerctxluafile{math-map}{1.001} +\registerctxluafile{math-ren}{1.001} \registerctxluafile{math-noa}{1.001} \registerctxluafile{math-tag}{1.001} @@ -49,17 +49,40 @@ \definesystemattribute[mathpunctuation][public] \definesystemattribute[mathgreek] [public] \definesystemattribute[mathalternate] [public] +\definesystemattribute[mathrendering] [public] +\definesystemattribute[mathcategory] [public] +\definesystemattribute[mathmode] [public] -% experiment +\appendtoks + \attribute\mathmodeattribute\plusone +\to \everydisplay + +\appendtoks + \attribute\mathmodeattribute\plusone +\to \everybeforedisplayformula + +%D \macros +%D {setupmathematics} +%D +%D Configuration for integrals. (If needed we can speed this up and make it +%D installable; no processaction is needed then). + +\newtoks\everysetupmathematics + +\unexpanded\def\setupmathematics + {\dosingleargument\dosetupmathematics} + +\def\dosetupmathematics[#1]% + {\getparameters[\??mo][#1]% + \the\everysetupmathematics} + +\def\mathematicsparameter#1% + {\ifcsname\??mo#1\endcsname\csname\??mo#1\endcsname\fi} % Normally this is applied to only one character. % % $ABC$ $\cal ABC$ $\mathaltcal ABC$ -\def\mathalternate#1{\ctxlua{mathematics.setalternate(0,"#1")}} % fam 0 - -\def\mathaltcal{\mathalternate{cal}\cal} % ss01 in xits - % todo: only in mmode \unexpanded\def\mathgreekupright{\attribute\mathgreekattribute22 } @@ -72,24 +95,46 @@ \def\setmathattribute#1#2{\ifmmode\ctxlua{mathematics.syncboth ("#1","#2")}\fi} \def\setmathalphabet #1{\ifmmode\ctxlua{mathematics.syncname ("#1")}\fi} \def\setmathstyle #1{\ifmmode\ctxlua{mathematics.syncstyle("#1")}\fi} +\def\setmathalternate #1{\ifmmode\ctxlua{mathematics.setalternate(0,"#1")}\fi} % fam 0 + +\def\setmathstylealterternate#1% + {\ifcsname\??mo:\c!alternative:\fontclass:#1\endcsname + \setmathalternate{\csname\??mo:\c!alternative:\fontclass:#1\endcsname}% + \else\ifcsname\??mo:\c!alternative:#1\endcsname + \setmathalternate{\csname\??mo:\c!alternative:#1\endcsname}% + \fi\fi} + +\unexpanded\def\setupmathrendering % the name might change + {\dodoubleargument\dosetupmathrendering} + +\def\dosetupmathrendering[#1][#2]% + {\ifsecondargument + \getparameters[\??mo:\c!alternative:#1:][#2]% + \else + \getparameters[\??mo:\c!alternative:][#1]% + \fi} + +\def\mathaltcal{\setmathalternate{cal}\cal} % ss01 in xits + +\let\mathalternate\setmathalternate % obsolete -\unexpanded\def\mr {\setmathattribute{regular}{tf}} +\unexpanded\def\mr {\setmathattribute{regular}{tf}\setmathstylealterternate{tf}} -\unexpanded\def\mathdefault {\setmathattribute{regular}{it}} -\unexpanded\def\mathscript {\setmathalphabet{script}} -\unexpanded\def\mathfraktur {\setmathalphabet{fraktur}} -\unexpanded\def\mathblackboard{\setmathalphabet{blackboard}} +\unexpanded\def\mathdefault {\setmathattribute{regular}{it}\setmathstylealterternate{it}} +\unexpanded\def\mathscript {\setmathalphabet{script}\setmathstylealterternate{script}} +\unexpanded\def\mathfraktur {\setmathalphabet{fraktur}\setmathstylealterternate{fraktur}} +\unexpanded\def\mathblackboard{\setmathalphabet{blackboard}\setmathstylealterternate{blackboard}} -\unexpanded\def\mathrm{\setmathattribute{rm}{tf}} -\unexpanded\def\mathss{\setmathattribute{ss}{tf}} -\unexpanded\def\mathtt{\setmathattribute{tt}{tf}} +\unexpanded\def\mathrm{\setmathattribute{rm}{tf}\setmathstylealterternate{tf}} +\unexpanded\def\mathss{\setmathattribute{ss}{tf}\setmathstylealterternate{tf}} +\unexpanded\def\mathtt{\setmathattribute{tt}{tf}\setmathstylealterternate{tf}} -\unexpanded\def\mathtf{\setmathstyle{tf}} -\unexpanded\def\mathbf{\setmathstyle{bf}} -\unexpanded\def\mathsl{\setmathstyle{sl}} -\unexpanded\def\mathit{\setmathstyle{it}} -\unexpanded\def\mathbs{\setmathstyle{bs}} -\unexpanded\def\mathbi{\setmathstyle{bi}} +\unexpanded\def\mathtf{\setmathstyle{tf}\setmathstylealterternate{tf}} +\unexpanded\def\mathbf{\setmathstyle{bf}\setmathstylealterternate{bf}} +\unexpanded\def\mathsl{\setmathstyle{it}\setmathstylealterternate{it}} % no sl +\unexpanded\def\mathit{\setmathstyle{it}\setmathstylealterternate{it}} +\unexpanded\def\mathbs{\setmathstyle{bi}\setmathstylealterternate{bi}} % no sl +\unexpanded\def\mathbi{\setmathstyle{bi}\setmathstylealterternate{bi}} \let\tfmath\mathtf % maybe a grouped command \let\bfmath\mathbf @@ -141,6 +186,38 @@ \mathdefault \to \everymathematics +%D We could set the renderign attribute at the \LUA\ end but as there +%D can be many small math snippets we keep track of the state at the +%D \TEX\ end (mapping is export safe). +%D +%D \starttyping +%D \startformula +%D \reals {\mathbf R} \utfchar{"0211D} \utfchar{"1D411} +%D \stopformula +%D +%D \setupmathematics +%D [symbolset=blackboard-to-bold] +%D +%D \startformula +%D \reals {\mathbf R} \utfchar{"0211D} \utfchar{"1D411} +%D \stopformula +%D \stoptyping + +\newcount\math_renderings_attribute + +\appendtoks + \math_renderings_attribute\cldcontext{mathematics.renderset("\mathematicsparameter\c!symbolset")}\relax +\to \everysetupmathematics + +\appendtoks + \ifcase\math_renderings_attribute\else + \attribute\mathrenderingattribute\math_renderings_attribute + \fi +\to \everymathematics + +\setupmathematics + [\c!symbolset=] + %D \macros %D {boldsymbol} %D @@ -212,29 +289,54 @@ % this will be sorted out: -\let\mathcharacter \getvalue -\let\textcharacter \getvalue -\unexpanded\def\definefamilysynonym {\dotripleempty\dodefinefamilysynonym} -\def\dodefinefamilysynonym [#1][#2][#3]{} -\unexpanded\def\definemathsymbol {\dosixtupleempty\dodefinemathsymbol} -\def\dodefinemathsymbol [#1][#2][#3][#4][#5][#6]{} -\unexpanded\def\definemathcharacter {\dosixtupleempty\dodefinemathcharacter} -\def\dodefinemathcharacter [#1][#2][#3][#4][#5][#6]{} +% \let\mathcharacter \getvalue +% \let\textcharacter \getvalue +% +% \unexpanded\def\definefamilysynonym {\dotripleempty\dodefinefamilysynonym} +% \def\dodefinefamilysynonym [#1][#2][#3]{} +% \unexpanded\def\definemathsymbol {\dosixtupleempty\dodefinemathsymbol} +% \def\dodefinemathsymbol [#1][#2][#3][#4][#5][#6]{} +% \unexpanded\def\definemathcharacter {\dosixtupleempty\dodefinemathcharacter} +% \def\dodefinemathcharacter [#1][#2][#3][#4][#5][#6]{} \unexpanded\def\definemathcommand {\dotripleempty\dodefinemathcommand} +% \def\dodefinemathcommand[#1][#2][#3]#4% command class args meaning +% {\ifthirdargument +% \edef\nofmathcommandarguments{#3}% +% \ifx\nofmathcommandarguments\v!one +% \setuvalue{#1}##1{\puremathcomm{#2}{#4{##1}}}% +% \else\ifx\nofmathcommandarguments\v!two +% \setuvalue{#1}##1##2{\puremathcomm{#2}{#4{##1}{##2}}}% +% \else +% \setuvalue{#1}{\puremathcomm{#2}{#4}}% +% \fi\fi +% \else\ifsecondargument +% \setuvalue{#1}{\puremathcomm{#2}{#4}}% +% \else +% \setuvalue{#1}{\puremathcomm{nothing}{#4}}% +% \fi\fi} + \def\dodefinemathcommand[#1][#2][#3]#4% command class args meaning {\ifthirdargument - \processaction - [#3] - [one=>\setuvalue{#1}##1{\puremathcomm{#2}{#4{##1}}}, - two=>\setuvalue{#1}##1##2{\puremathcomm{#2}{#4{##1}{##2}}}]% + \edef\nofmathcommandarguments{#3}% + \ifx\nofmathcommandarguments\v!one + \setuvalue{\??mo::#1}##1{\puremathcomm{#2}{#4{##1}}}% + \else\ifx\nofmathcommandarguments\v!two + \setuvalue{\??mo::#1}##1##2{\puremathcomm{#2}{#4{##1}{##2}}}% + \else + \setuvalue{\??mo::#1}{\puremathcomm{#2}{#4}}% + \fi\fi \else\ifsecondargument - \setuvalue{#1}{\puremathcomm{#2}{#4}}% + \setuvalue{\??mo::#1}{\puremathcomm{#2}{#4}}% \else - \setuvalue{#1}{\puremathcomm{nothing}{#4}}% - \fi\fi} + \setuvalue{\??mo::#1}{\puremathcomm{nothing}{#4}}% + \fi\fi + \letcsnamecsname\csname#1\endcsname\csname\??mo::#1\endcsname} + +\unexpanded\def\mathcommand#1% + {\csname\??mo::#1\endcsname} %D Moved from font-ini.mkiv: %D @@ -267,12 +369,61 @@ \let\hbox\mbox \to\everymathematics} -%D needed for sin, cos etc +%D needed for sin, cos etc (todo: store #1 so that we can export it) \let\mathfunction\firstofoneargument -\def\mfunction #1{{\mr#1}} -\def\mfunctionlabeltext#1{{\mr\mathlabeltext{#1}}} +\let\taggedmathfunction \firstofoneargument +\let\taggedmathfunctionlabeltext\mathlabeltext + +\let\taggedmathmo\firstofoneargument +\let\taggedmathmi\firstofoneargument + +\def\taggedmathmn#1{\begingroup\mr#1\endgroup} +\def\taggedmathms#1{\begingroup\mr#1\endgroup} + +\def\mfunction #1{{\mr\taggedmathfunction{#1}}} +\def\mfunctionlabeltext#1{{\mr\taggedmathfunctionlabeltext{#1}}} + +% Once this is stable we can store the number at the tex end which is +% faster. Functions getnumbers >= 1000. + +\def\dotaggedmathfunction #1{\ctxcommand{taggedmathfunction("#1",false,\ifconditional\c_apply_function true\else false\fi)}} +\def\dotaggedmathfunctionlabeltext#1{\ctxcommand{taggedmathfunction("#1",true ,\ifconditional\c_apply_function true\else false\fi)}} + +\def\dotaggedmo#1{\begingroup \attribute\mathcategoryattribute\plusone #1\endgroup} +\def\dotaggedmi#1{\begingroup \attribute\mathcategoryattribute\plustwo #1\endgroup} +\def\dotaggedmn#1{\begingroup\mr\attribute\mathcategoryattribute\plusthree#1\endgroup} +\def\dotaggedms#1{\begingroup\mr\attribute\mathcategoryattribute\plusfour #1\endgroup} + +\newconditional\c_apply_function + +\def\taggedmathapply#1#2% + {\begingroup + \settrue\c_apply_function + #1% + \endgroup + \begingroup + % todo: auto () + #2% + \endgroup} + +\appendtoks + \let\taggedmathfunction \dotaggedmathfunction + \let\taggedmathfunctionlabeltext\dotaggedmathfunctionlabeltext + \let\taggedmathmo \dotaggedmo + \let\taggedmathmi \dotaggedmi + \let\taggedmathmn \dotaggedmn + \let\taggedmathms \dotaggedms +\to \everyenableelements + +\appendtoks + \let\mo \taggedmathmo + \let\mi \taggedmathmi + \let\mn \taggedmathmn + \let\ms \taggedmathms + \let\apply\taggedmathapply +\to\everymathematics % \def\mlimitsfunction #1{\mathlimopcomm{{\mr#1}} % \def\mnolimitsfunction#1{\mathnolopcomm{{\mr#1}} @@ -283,8 +434,8 @@ \def\currentmscaledstyle{rm} % will be plugged into the typeface text=ss option \unexpanded\def\do@mathopnolimits #1{\mathop{\mscaledtext{#1}}\nolimits} -\unexpanded\def\do@mfunction #1{\mscaledtext{#1}} -\unexpanded\def\do@mfunctionlabeltext#1{\mscaledtext{\mathlabeltext{#1}}} +\unexpanded\def\do@mfunction #1{\mscaledtext{\taggedmathfunction{#1}}} +\unexpanded\def\do@mfunctionlabeltext#1{\mscaledtext{\taggedmathfunctionlabeltext{#1}}} \def\setmathfunctionstyle#1% rm ss tt (can be made faster if needed) {\doifsomething{#1} @@ -478,23 +629,6 @@ \def\nulloperator{\mathortext{\mathop{\emptyhbox}}{\emptyhbox}} -%D \macros -%D {setupmathematics} -%D -%D Configuration for integrals. (If needed we can speed this up and make it -%D installable; no processaction is needed then). - -\newtoks\everysetupmathematics - -\unexpanded\def\setupmathematics - {\dosingleargument\dosetupmathematics} - -\def\dosetupmathematics[#1]% - {\getparameters[\??mo][#1]% - \the\everysetupmathematics} - -\def\mathematicsparameter#1{\ifcsname\??mo#1\endcsname\csname\??mo#1\endcsname\fi} - %D Memory saver: \appendtoks @@ -727,8 +861,6 @@ % for a while: -\ifnum\luatexversion>65 - \def\Umathbotaccent{\Umathaccent bottom } -\fi +\def\Umathbotaccent{\Umathaccent bottom } \protect \endinput diff --git a/tex/context/base/math-inl.mkiv b/tex/context/base/math-inl.mkiv index 89de0242b..f3a59d956 100644 --- a/tex/context/base/math-inl.mkiv +++ b/tex/context/base/math-inl.mkiv @@ -5,7 +5,7 @@ %D subtitle=Inline, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE / Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/math-int.mkiv b/tex/context/base/math-int.mkiv index a99142a04..de3ff2608 100644 --- a/tex/context/base/math-int.mkiv +++ b/tex/context/base/math-int.mkiv @@ -5,7 +5,7 @@ %D subtitle=Scripts, %D author={Hans Hagen \& Taco Hoekwater \& Aditya Mahajan}, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/math-lan.mkiv b/tex/context/base/math-lan.mkiv deleted file mode 100644 index 1d3132578..000000000 --- a/tex/context/base/math-lan.mkiv +++ /dev/null @@ -1,67 +0,0 @@ -%D \module -%D [ file=math-lan, -%D version=2009.03.10, -%D title=\CONTEXT\ Math Macros, -%D subtitle=Language Support, -%D author=Hans Hagen, -%D date=\currentdate, -%D copyright=PRAGMA] -%C -%C This module is part of the \CONTEXT\ macro||package and is -%C therefore copyrighted by \PRAGMA. See mreadme.pdf for -%C details. - -\writestatus{loading}{ConTeXt Math Macros / Language Support} - -\unprotect - -\setupmathlabeltext [\s!en] [arccos=arccos] -\setupmathlabeltext [\s!en] [arcsin=arcsin] -\setupmathlabeltext [\s!en] [arctan=arctan] -\setupmathlabeltext [\s!en] [arg=arg] -\setupmathlabeltext [\s!en] [cosh=cosh] -\setupmathlabeltext [\s!en] [cos=cos] -\setupmathlabeltext [\s!en] [coth=coth] -\setupmathlabeltext [\s!en] [cot=cot] -\setupmathlabeltext [\s!en] [csc=csc] -\setupmathlabeltext [\s!en] [deg=deg] -\setupmathlabeltext [\s!en] [det=det] -\setupmathlabeltext [\s!en] [dim=dim] -\setupmathlabeltext [\s!en] [exp=exp] -\setupmathlabeltext [\s!en] [gcd=gcd] -\setupmathlabeltext [\s!en] [hom=hom] -\setupmathlabeltext [\s!en] [inf=inf] -\setupmathlabeltext [\s!en] [injlim=inj\,lim] -\setupmathlabeltext [\s!en] [ker=ker] -\setupmathlabeltext [\s!en] [lg=lg] -\setupmathlabeltext [\s!en] [liminf=lim\,inf] -\setupmathlabeltext [\s!en] [limsup=lim\,sup] -\setupmathlabeltext [\s!en] [lim=lim] -\setupmathlabeltext [\s!en] [ln=ln] -\setupmathlabeltext [\s!en] [log=log] -\setupmathlabeltext [\s!en] [median=median] -\setupmathlabeltext [\s!en] [max=max] -\setupmathlabeltext [\s!en] [min=min] -\setupmathlabeltext [\s!en] [mod=mod] -\setupmathlabeltext [\s!en] [projlim=proj\,lim] -\setupmathlabeltext [\s!en] [Pr=Pr] -\setupmathlabeltext [\s!en] [sec=sec] -\setupmathlabeltext [\s!en] [sinh=sinh] -\setupmathlabeltext [\s!en] [sin=sin] -\setupmathlabeltext [\s!en] [sup=sup] -\setupmathlabeltext [\s!en] [tanh=tanh] -\setupmathlabeltext [\s!en] [tan=tan] - -\setupmathlabeltext [\s!pl] [tg=tg] -\setupmathlabeltext [\s!pl] [cot=ctg] -\setupmathlabeltext [\s!pl] [ctg=ctg] -\setupmathlabeltext [\s!pl] [arcsin=arc\,sin] -\setupmathlabeltext [\s!pl] [arccos=arc\,cos] -\setupmathlabeltext [\s!pl] [arctan=arc\,tg] -\setupmathlabeltext [\s!pl] [arctg=arc\,tg] -\setupmathlabeltext [\s!pl] [arcctg=arc\,ctg] - -\setupmathlabeltext [\s!nl] [gcd=ggd] -\setupmathlabeltext [\s!nl] [lcm=kgv] - -\protect \endinput diff --git a/tex/context/base/math-lbr.mkii b/tex/context/base/math-lbr.mkii index 6392c762e..0aa1df665 100644 --- a/tex/context/base/math-lbr.mkii +++ b/tex/context/base/math-lbr.mkii @@ -5,7 +5,7 @@ %D subtitle=Lucida Specials, %D author={Hans Hagen \& Taco Hoekwater}, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/math-map.lua b/tex/context/base/math-map.lua index b6d57bff5..238b72edd 100644 --- a/tex/context/base/math-map.lua +++ b/tex/context/base/math-map.lua @@ -309,6 +309,21 @@ alphabets.monospaced.it = alphabets.sansserif.tf alphabets.monospaced.bf = alphabets.sansserif.tf alphabets.monospaced.bi = alphabets.sansserif.bf +alphabets.regular.normal = alphabets.regular.tf +alphabets.regular.italic = alphabets.regular.it +alphabets.regular.bold = alphabets.regular.bf +alphabets.regular.bolditalic = alphabets.regular.bi + +alphabets.sansserif.normal = alphabets.sansserif.tf +alphabets.sansserif.italic = alphabets.sansserif.it +alphabets.sansserif.bold = alphabets.sansserif.bf +alphabets.sansserif.bolditalic = alphabets.sansserif.bi + +alphabets.monospaced.normal = alphabets.monospaced.tf +alphabets.monospaced.italic = alphabets.monospaced.it +alphabets.monospaced.bold = alphabets.monospaced.bf +alphabets.monospaced.bolditalic = alphabets.monospaced.bi + alphabets.blackboard.tf.symbols = table.merged(alphabets.regular.tf.symbols, alphabets.blackboard.tf.symbols) alphabets.blackboard.tf.lcgreek = table.merged(alphabets.regular.tf.lcgreek, alphabets.blackboard.tf.lcgreek) alphabets.blackboard.tf.ucgreek = table.merged(alphabets.regular.tf.ucgreek, alphabets.blackboard.tf.ucgreek) @@ -364,6 +379,19 @@ end local mathalphabet = attributes.private("mathalphabet") +function mathematics.getboth(alphabet,style) + local data = alphabets[alphabet or "regular"] or alphabets.regular + data = data[style or "tf"] or data.tf + return data and data.attribute +end + +function mathematics.getstyle(style) + local r = mathremap[texattribute[mathalphabet]] + local alphabet = r and r.alphabet or "regular" + local data = alphabets[alphabet][style] + return data and data.attribute +end + function mathematics.syncboth(alphabet,style) local data = alphabets[alphabet or "regular"] or alphabets.regular data = data[style or "tf"] or data.tf @@ -371,7 +399,6 @@ function mathematics.syncboth(alphabet,style) end function mathematics.syncstyle(style) ---~ local r = mathremap[mathalphabet] local r = mathremap[texattribute[mathalphabet]] local alphabet = r and r.alphabet or "regular" local data = alphabets[alphabet][style] @@ -397,7 +424,7 @@ local remapping = { } function mathematics.remapalphabets(char,mathalphabet,mathgreek) - if mathgreek > 0 then + if mathgreek and mathgreek > 0 then local lc, uc = floor(mathgreek/10), mathgreek % 10 -- 2 == upright 3 == italic if lc > 1 or uc > 1 then local islc, isuc = islcgreek[char] and lc, isucgreek[char] and uc @@ -419,7 +446,7 @@ function mathematics.remapalphabets(char,mathalphabet,mathgreek) end end end - if mathalphabet > 0 then + if mathalphabet and mathalphabet > 0 then local newchar local offset = mathremap[mathalphabet] if not offset then diff --git a/tex/context/base/math-noa.lua b/tex/context/base/math-noa.lua index c298a8068..5c4bb6f19 100644 --- a/tex/context/base/math-noa.lua +++ b/tex/context/base/math-noa.lua @@ -31,10 +31,14 @@ local trace_remapping = false trackers.register("math.remapping", functio local trace_processing = false trackers.register("math.processing", function(v) trace_processing = v end) local trace_analyzing = false trackers.register("math.analyzing", function(v) trace_analyzing = v end) local trace_normalizing = false trackers.register("math.normalizing", function(v) trace_normalizing = v end) +local trace_goodies = false trackers.register("math.goodies", function(v) trace_goodies = v end) + +local check_coverage = true directives.register("math.checkcoverage", function(v) check_coverage = v end) local report_processing = logs.reporter("mathematics","processing") local report_remapping = logs.reporter("mathematics","remapping") local report_normalizing = logs.reporter("mathematics","normalizing") +local report_goodies = logs.reporter("mathematics","goodies") local set_attribute = node.set_attribute local has_attribute = node.has_attribute @@ -43,6 +47,7 @@ local font_of_family = node.family_font local fonthashes = fonts.hashes local fontdata = fonthashes.identifiers +local fontcharacters = fonthashes.characters noads = noads or { } -- todo: only here local noads = noads @@ -158,34 +163,30 @@ end local remapalphabets = mathematics.remapalphabets local setnodecolor = nodes.tracers.colors.set --- we can have a global famdata == fonts.famdata - --~ This does not work out well, as there are no fallbacks. Ok, we could --~ define a poor mans simplify mechanism. ---~ ---~ local function checked(pointer) ---~ local char = pointer.char ---~ local fam = pointer.fam ---~ local id = font_of_family(fam) ---~ local tfmdata = fontdata[id] ---~ local tc = tfmdata and tfmdata.characters ---~ if not tc[char] then ---~ local specials = characters.data[char].specials ---~ if specials and (specials[1] == "char" or specials[1] == "font") then ---~ newchar = specials[#specials] ---~ if trace_remapping then ---~ report_remap("fallback",id,char,newchar) ---~ end ---~ if trace_analyzing then ---~ setnodecolor(pointer,"font:isol") ---~ end ---~ pointer.char = newchar ---~ return true ---~ end ---~ end ---~ end -local current_id, current_characters +local function checked(pointer) + local char = pointer.char + local fam = pointer.fam + local id = font_of_family(fam) + local tc = fontcharacters[id] + if not tc[char] then + local specials = characters.data[char].specials + if specials and (specials[1] == "char" or specials[1] == "font") then + newchar = specials[#specials] + if trace_remapping then + report_remap("fallback",id,char,newchar) + end + if trace_analyzing then + setnodecolor(pointer,"font:isol") + end + set_attribute(pointer,exportstatus,char) -- testcase: exponentiale + pointer.char = newchar + return true + end + end +end processors.relocate[math_char] = function(pointer) local g = has_attribute(pointer,mathgreek) or 0 @@ -202,15 +203,8 @@ processors.relocate[math_char] = function(pointer) if newchar then local fam = pointer.fam local id = font_of_family(fam) - -- - local tfmdata = fontdata[id] - if tfmdata and tfmdata.characters[newchar] then - -- -- to be tested: - -- if id ~= current_id then - -- current_id = id - -- current_characters = fontdata[id].characters - -- end - -- if current_characters and current_characters[newchar] then + local characters = fontcharacters[id] + if characters and characters[newchar] then if trace_remapping then report_remap("char",id,char,newchar) end @@ -219,18 +213,19 @@ processors.relocate[math_char] = function(pointer) end pointer.char = newchar return true - elseif trace_remapping then - report_remap("char",id,char,newchar," fails") + else + if trace_remapping then + report_remap("char",id,char,newchar," fails") + end end - else - -- return checked(pointer) end - else - -- return checked(pointer) end if trace_analyzing then setnodecolor(pointer,"font:medi") end + if check_coverage then + return checked(pointer) + end end processors.relocate[math_textchar] = function(pointer) @@ -250,6 +245,40 @@ function handlers.relocate(head,style,penalties) return true end +-- rendering (beware, not exported) + +local a_mathrendering = attributes.private("mathrendering") +local a_exportstatus = attributes.private("exportstatus") + +processors.render = { } + +local rendersets = mathematics.renderings.numbers or { } -- store + +processors.render[math_char] = function(pointer) + local attr = has_attribute(pointer,a_mathrendering) + if attr and attr > 0 then + local char = pointer.char + local renderset = rendersets[attr] + if renderset then + local newchar = renderset[char] + if newchar then + local fam = pointer.fam + local id = font_of_family(fam) + local characters = fontcharacters[id] + if characters and characters[newchar] then + pointer.char = newchar + set_attribute(pointer,a_exportstatus,char) + end + end + end + end +end + +function handlers.render(head,style,penalties) + process(head,processors.render) + return true +end + -- some resize options (this works ok because the content is -- empty and no larger next will be forced) -- @@ -373,8 +402,8 @@ collapse[math_noad] = function(pointer) if newchar then local fam = current_nucleus.fam local id = font_of_family(fam) - local tfmdata = fontdata[id] - if tfmdata and tfmdata.characters[newchar] then + local characters = fontcharacters[id] + if characters and characters[newchar] then -- print("!!!!!",current_char,next_char,newchar) current_nucleus.char = newchar local next_next_noad = next_noad.next @@ -504,7 +533,8 @@ statistics.register("math script replacements", function() end end) --- math alternates: (in xits lgf: $ABC$ $\cal ABC$ $\mathalternate{cal}\cal ABC$) +-- math alternates: (in xits lgf: $ABC$ $\cal ABC$ $\mathalternate{cal}\cal ABC$) +-- math alternates: (in lucidanova lgf: $ABC \mathalternate{italic} ABC$) local function initializemathalternates(tfmdata) local goodies = tfmdata.goodies @@ -516,6 +546,9 @@ local function initializemathalternates(tfmdata) local mathgoodies = goodies[i].mathematics local alternates = mathgoodies and mathgoodies.alternates if alternates then + if trace_goodies then + report_goodies("loading alternates for font '%s'",tfmdata.properties.name) + end local lastattribute, attributes = 0, { } for k, v in next, alternates do lastattribute = lastattribute + 1 diff --git a/tex/context/base/math-pln.mkii b/tex/context/base/math-pln.mkii index f2f3ff183..975869c70 100644 --- a/tex/context/base/math-pln.mkii +++ b/tex/context/base/math-pln.mkii @@ -5,7 +5,7 @@ %D subtitle=Plain Helpers, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/math-pln.mkiv b/tex/context/base/math-pln.mkiv index 6deac5efb..6a70c6711 100644 --- a/tex/context/base/math-pln.mkiv +++ b/tex/context/base/math-pln.mkiv @@ -5,7 +5,7 @@ %D subtitle=Plain Helpers, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/math-ren.lua b/tex/context/base/math-ren.lua new file mode 100644 index 000000000..10456ad05 --- /dev/null +++ b/tex/context/base/math-ren.lua @@ -0,0 +1,65 @@ +if not modules then modules = { } end modules ['math-ren'] = { + version = 1.001, + comment = "companion to math-ren.mkiv", + author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", + copyright = "PRAGMA ADE / ConTeXt Development Team", + license = "see context related readme files" +} + +local next = next +local gsub = string.gsub + +local settings_to_array = utilities.parsers.settings_to_array +local allocate = storage.allocate + +local renderings = { } +mathematics.renderings = renderings + +local mappings = allocate() +renderings.mappings = mappings + +local numbers = allocate() +renderings.numbers = numbers + +local sets = allocate() +renderings.sets = sets + +mappings["blackboard-to-bold"] = { + [0x1D538] = 0x1D400, [0x1D539] = 0x1D401, [0x02102] = 0x1D402, [0x1D53B] = 0x1D403, [0x1D53C] = 0x1D404, + [0x1D53D] = 0x1D405, [0x1D53E] = 0x1D406, [0x0210D] = 0x1D407, [0x1D540] = 0x1D408, [0x1D541] = 0x1D409, + [0x1D542] = 0x1D40A, [0x1D543] = 0x1D40B, [0x1D544] = 0x1D40C, [0x02115] = 0x1D40D, [0x1D546] = 0x1D40E, + [0x02119] = 0x1D40F, [0x0211A] = 0x1D410, [0x0211D] = 0x1D411, [0x1D54A] = 0x1D412, [0x1D54B] = 0x1D413, + [0x1D54C] = 0x1D414, [0x1D54D] = 0x1D415, [0x1D54E] = 0x1D416, [0x1D54F] = 0x1D417, [0x1D550] = 0x1D418, + [0x02124] = 0x1D419, +} + +local function renderset(list) -- order matters + local tag = gsub(list," ","") + local n = sets[tag] + if not n then + local list = settings_to_array(tag) + local mapping = { } + for i=1,#list do + local m = mappings[list[i]] + if m then + for k, v in next, m do + mapping[k] = v + end + end + end + if next(mapping) then + n = #numbers + 1 + numbers[n] = mapping + else + n = attributes.unsetvalue + end + sets[tag] = n + end + return n +end + +mathematics.renderset = renderset + +-- function commands.setmatrendering(list) +-- tex.setattribute(renderset(list)) +-- end diff --git a/tex/context/base/math-run.mkii b/tex/context/base/math-run.mkii index 6bc4bf4d5..79d08fbed 100644 --- a/tex/context/base/math-run.mkii +++ b/tex/context/base/math-run.mkii @@ -5,7 +5,7 @@ %D subtitle=Runtime Macros, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=Hans Hagen \& Ton Otten] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/math-scr.mkiv b/tex/context/base/math-scr.mkiv index e17ce42f3..280297db2 100644 --- a/tex/context/base/math-scr.mkiv +++ b/tex/context/base/math-scr.mkiv @@ -5,7 +5,7 @@ %D subtitle=Scripts, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/math-tag.lua b/tex/context/base/math-tag.lua index e5ad30be0..815e76b9a 100644 --- a/tex/context/base/math-tag.lua +++ b/tex/context/base/math-tag.lua @@ -6,6 +6,8 @@ if not modules then modules = { } end modules ['math-tag'] = { license = "see context related readme files" } +local find = string.find + local attributes, nodes = attributes, nodes local get_attribute = nodes.getattribute @@ -33,6 +35,9 @@ local vlist_code = nodecodes.vlist local glyph_code = nodecodes.glyph local a_tagged = attributes.private('tagged') +local a_exportstatus = attributes.private('exportstatus') +local a_mathcategory = attributes.private('mathcategory') +local a_mathmode = attributes.private('mathmode') local tags = structures.tags @@ -40,18 +45,26 @@ local start_tagged = tags.start local stop_tagged = tags.stop local taglist = tags.taglist -local chardata = characters.data +local chardata = characters.data + +local getmathcode = tex.getmathcode +local mathcodes = mathematics.codes +local ordinary_code = mathcodes.ordinary +local variable_code = mathcodes.variable local process local function processsubsup(start) + -- At some point we might need to add an attribute signaling the + -- super- and subscripts because TeX and MathML use a different + -- order. local nucleus, sup, sub = start.nucleus, start.sup, start.sub if sub then if sup then set_attribute(start,a_tagged,start_tagged("msubsup")) process(nucleus) - process(sup) process(sub) + process(sup) stop_tagged() else set_attribute(start,a_tagged,start_tagged("msub")) @@ -69,25 +82,47 @@ local function processsubsup(start) end end +-- todo: check function here and keep attribute the same + process = function(start) -- we cannot use the processor as we have no finalizers (yet) while start do local id = start.id if id == math_char_code then + local char = start.char -- check for code - local ch = chardata[start.char] - local mc = ch and ch.mathclass - if mc == "number" then - set_attribute(start,a_tagged,start_tagged("mn")) - elseif mc == "variable" or not mc then -- variable is default - set_attribute(start,a_tagged,start_tagged("mi")) + local a = get_attribute(start,a_mathcategory) + if a then + a = { detail = a } + end + local code = getmathcode(char) + if code then + code = code[1] + end + local tag + if code == ordinary_code or code == variable_code then + local ch = chardata[char] + local mc = ch and ch.mathclass + if mc == "number" then + tag = "mn" + elseif mc == "variable" or not mc then -- variable is default + tag = "mi" + else + tag = "mo" + end else - set_attribute(start,a_tagged,start_tagged("mo")) + tag = "mo" end + set_attribute(start,a_tagged,start_tagged(tag,a)) stop_tagged() - break + break -- okay? elseif id == math_textchar_code then -- check for code - set_attribute(start,a_tagged,start_tagged("ms")) + local a = get_attribute(start,a_mathcategory) + if a then + set_attribute(start,a_tagged,start_tagged("ms"),{ detail = a }) + else + set_attribute(start,a_tagged,start_tagged("ms")) + end stop_tagged() break elseif id == math_delim_code then @@ -102,6 +137,10 @@ process = function(start) -- we cannot use the processor as we have no finalizer elseif id == math_box_code or id == hlist_code or id == vlist_code then -- keep an eye on math_box_code and see what ends up in there local attr = get_attribute(start,a_tagged) +local last = attr and taglist[attr] +if last and find(last[#last],"formulacaption%-") then + -- leave alone, will nicely move to the outer level +else local text = start_tagged("mtext") set_attribute(start,a_tagged,text) local list = start.list @@ -123,8 +162,8 @@ process = function(start) -- we cannot use the processor as we have no finalizer local id = n.id if id == hlist_code or id == vlist_code then runner(n.list) - elseif id == glyph_code then - local aa = get_attribute(n,a_tagged) -- only glyph needed + else -- if id == glyph_code then + local aa = get_attribute(n,a_tagged) -- only glyph needed (huh?) if aa then local ac = cache[aa] if not ac then @@ -152,6 +191,7 @@ process = function(start) -- we cannot use the processor as we have no finalizer runner(list) end stop_tagged() +end elseif id == math_sub_code then local list = start.list if list then @@ -191,15 +231,38 @@ process = function(start) -- we cannot use the processor as we have no finalizer end elseif id == math_fence_code then local delim = start.delim - if delim then - set_attribute(start,a_tagged,start_tagged("mo")) - process(delim) + local subtype = start.subtype + if subtype == 1 then + -- left + set_attribute(start,a_tagged,start_tagged("mfenced")) + if delim then + set_attribute(start,a_tagged,start_tagged("mleft")) + process(delim) + stop_tagged() + end + elseif subtype == 2 then + -- middle + if delim then + set_attribute(start,a_tagged,start_tagged("mmiddle")) + process(delim) + stop_tagged() + end + elseif subtype == 3 then + if delim then + set_attribute(start,a_tagged,start_tagged("mright")) + process(delim) + stop_tagged() + end stop_tagged() + else + -- can't happen end elseif id == math_radical_code then local left, degree = start.left, start.degree if left then - process(left) -- mrow needed ? + start_tagged("") + process(left) -- root symbol, ignored + stop_tagged() end if degree then set_attribute(start,a_tagged,start_tagged("mroot")) @@ -215,21 +278,21 @@ process = function(start) -- we cannot use the processor as we have no finalizer local accent, bot_accent = start.accent, start.bot_accent if bot_accent then if accent then - set_attribute(start,a_tagged,start_tagged("munderover")) - process(accent) + set_attribute(start,a_tagged,start_tagged("munderover",{ detail = "accent" })) processsubsup(start) process(bot_accent) + process(accent) stop_tagged() else - set_attribute(start,a_tagged,start_tagged("munder")) + set_attribute(start,a_tagged,start_tagged("munder",{ detail = "accent" })) processsubsup(start) process(bot_accent) stop_tagged() end elseif accent then - set_attribute(start,a_tagged,start_tagged("mover")) - process(accent) + set_attribute(start,a_tagged,start_tagged("mover",{ detail = "accent" })) processsubsup(start) + process(accent) stop_tagged() else processsubsup(start) @@ -243,8 +306,12 @@ process = function(start) -- we cannot use the processor as we have no finalizer end function noads.handlers.tags(head,style,penalties) - set_attribute(head,a_tagged,start_tagged("math")) - set_attribute(head,a_tagged,start_tagged("mrow")) + local v_math = start_tagged("math") + local v_mrow = start_tagged("mrow") + local v_mode = get_attribute(head,a_mathmode) + set_attribute(head,a_tagged,v_math) + set_attribute(head,a_tagged,v_mrow) + tags.setattributehash(v_math,"mode",v_mode == 1 and "display" or "inline") process(head) stop_tagged() stop_tagged() diff --git a/tex/context/base/math-tex.mkii b/tex/context/base/math-tex.mkii index 8f34a190e..e3dd634e6 100644 --- a/tex/context/base/math-tex.mkii +++ b/tex/context/base/math-tex.mkii @@ -4,7 +4,7 @@ %D subtitle=Plain Specials, %D author={Hans Hagen, Taco Hoekwater \& Aditya Mahajan}, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/math-tim.mkii b/tex/context/base/math-tim.mkii index 3b9aea103..da7d17e7b 100644 --- a/tex/context/base/math-tim.mkii +++ b/tex/context/base/math-tim.mkii @@ -5,7 +5,7 @@ %D subtitle=Mathtime Specials, %D author={Hans Hagen \& Taco Hoekwater}, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/math-uni.mkii b/tex/context/base/math-uni.mkii index e8fd3f05d..5c75a9fb4 100644 --- a/tex/context/base/math-uni.mkii +++ b/tex/context/base/math-uni.mkii @@ -5,7 +5,7 @@ %D subtitle=unicode support, %D author={Nikolai Weibull \& Taco Hoekwater}, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] \unprotect diff --git a/tex/context/base/meta-clp.mkii b/tex/context/base/meta-clp.mkii index be2506b19..5c9206dee 100644 --- a/tex/context/base/meta-clp.mkii +++ b/tex/context/base/meta-clp.mkii @@ -5,7 +5,7 @@ %D subtitle=Clipping, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/meta-dum.mkii b/tex/context/base/meta-dum.mkii index bc19f3c5f..dae30ed69 100644 --- a/tex/context/base/meta-dum.mkii +++ b/tex/context/base/meta-dum.mkii @@ -5,7 +5,7 @@ %D subtitle=Dummy (External) Graphics, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/meta-fig.mkii b/tex/context/base/meta-fig.mkii index 3edd73b57..31fe5fc0c 100644 --- a/tex/context/base/meta-fig.mkii +++ b/tex/context/base/meta-fig.mkii @@ -5,7 +5,7 @@ %D subtitle=Stand Alone Graphics, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/meta-fig.mkiv b/tex/context/base/meta-fig.mkiv index adaad4647..3c8c07c0d 100644 --- a/tex/context/base/meta-fig.mkiv +++ b/tex/context/base/meta-fig.mkiv @@ -5,7 +5,7 @@ %D subtitle=Stand Alone Graphics, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/meta-fun.mkiv b/tex/context/base/meta-fun.mkiv index fbe91fd6a..c3a4ce8d4 100644 --- a/tex/context/base/meta-fun.mkiv +++ b/tex/context/base/meta-fun.mkiv @@ -5,7 +5,7 @@ %D subtitle=Goodies, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/meta-imp-clp.mkiv b/tex/context/base/meta-imp-clp.mkiv index be2506b19..5c9206dee 100644 --- a/tex/context/base/meta-imp-clp.mkiv +++ b/tex/context/base/meta-imp-clp.mkiv @@ -5,7 +5,7 @@ %D subtitle=Clipping, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/meta-imp-dum.mkiv b/tex/context/base/meta-imp-dum.mkiv index 60ab0a41d..98538bd87 100644 --- a/tex/context/base/meta-imp-dum.mkiv +++ b/tex/context/base/meta-imp-dum.mkiv @@ -5,7 +5,7 @@ %D subtitle=Dummy (External) Graphics, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/meta-imp-mis.mkiv b/tex/context/base/meta-imp-mis.mkiv index 29ab43007..e8282c381 100644 --- a/tex/context/base/meta-imp-mis.mkiv +++ b/tex/context/base/meta-imp-mis.mkiv @@ -5,7 +5,7 @@ %D subtitle=Misc Test Graphics, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/meta-imp-nav.mkiv b/tex/context/base/meta-imp-nav.mkiv index 9c1cbb4db..45a31ba5e 100644 --- a/tex/context/base/meta-imp-nav.mkiv +++ b/tex/context/base/meta-imp-nav.mkiv @@ -5,7 +5,7 @@ %D subtitle=Navigational Graphics, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/meta-imp-pre.mkiv b/tex/context/base/meta-imp-pre.mkiv index cb861ff20..098be030b 100644 --- a/tex/context/base/meta-imp-pre.mkiv +++ b/tex/context/base/meta-imp-pre.mkiv @@ -5,7 +5,7 @@ %D subtitle=Predefined Goodies, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/meta-imp-txt.mkiv b/tex/context/base/meta-imp-txt.mkiv index 474253a40..dc8bb7ca8 100644 --- a/tex/context/base/meta-imp-txt.mkiv +++ b/tex/context/base/meta-imp-txt.mkiv @@ -5,7 +5,7 @@ %D subtitle=Text Tricks, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/meta-ini.lua b/tex/context/base/meta-ini.lua index 5150c3835..872c628aa 100644 --- a/tex/context/base/meta-ini.lua +++ b/tex/context/base/meta-ini.lua @@ -27,3 +27,56 @@ function metapost.uselibrary(name) report_metapost("unknown: library '%s'",name) end) end + +-- experimental + +local colorhash = attributes.list[attributes.private('color')] + +local validdimen = lpeg.patterns.validdimen * lpeg.P(-1) + +local lpegmatch = lpeg.match +local gmatch = string.gmatch +local textype = tex.type +local MPcolor = context.MPcolor + +function commands.prepareMPvariable(v) -- slow but ok + if v == "" then + MPcolor("black") + else + local typ, var = string.match(v,"(.):(.*)") + if not typ then + -- parse + if colorhash[v] then + MPcolor(v) + elseif tonumber(v) then + context(v) + elseif lpegmatch(validdimen,v) then + return context("\\the\\dimexpr %s",v) + else + for s in gmatch(v,"\\(.-)") do + local t = textype(s) + if t == "dimen" then + return context("\\the\\dimexpr %s",v) + elseif t == "count" then + return context("\\the\\numexpr %s",v) + end + end + return context("\\number %s",v) -- 0.4 ... + end + elseif typ == "d" then + -- dimension + context("\\the\\dimexpr %s",var) + elseif typ == "n" then + -- number + context("\\the\\numexpr %s",var) + elseif typ == "s" then + -- string + context(var) + elseif typ == "c" then + -- color + MPcolor(var) + else + context(var) + end + end +end diff --git a/tex/context/base/meta-ini.mkii b/tex/context/base/meta-ini.mkii index fd6ef9a61..e7a7441f1 100644 --- a/tex/context/base/meta-ini.mkii +++ b/tex/context/base/meta-ini.mkii @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/meta-ini.mkiv b/tex/context/base/meta-ini.mkiv index e95eb1786..d435f5772 100644 --- a/tex/context/base/meta-ini.mkiv +++ b/tex/context/base/meta-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/meta-mis.mkii b/tex/context/base/meta-mis.mkii index 29ab43007..e8282c381 100644 --- a/tex/context/base/meta-mis.mkii +++ b/tex/context/base/meta-mis.mkii @@ -5,7 +5,7 @@ %D subtitle=Misc Test Graphics, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/meta-nav.mkii b/tex/context/base/meta-nav.mkii index 9c1cbb4db..45a31ba5e 100644 --- a/tex/context/base/meta-nav.mkii +++ b/tex/context/base/meta-nav.mkii @@ -5,7 +5,7 @@ %D subtitle=Navigational Graphics, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/meta-pag.mkii b/tex/context/base/meta-pag.mkii index 000e56a2e..82a525a08 100644 --- a/tex/context/base/meta-pag.mkii +++ b/tex/context/base/meta-pag.mkii @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/meta-pag.mkiv b/tex/context/base/meta-pag.mkiv index ef3817721..22483319b 100644 --- a/tex/context/base/meta-pag.mkiv +++ b/tex/context/base/meta-pag.mkiv @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/meta-pdf.mkii b/tex/context/base/meta-pdf.mkii index 0ba3fb979..e13113398 100644 --- a/tex/context/base/meta-pdf.mkii +++ b/tex/context/base/meta-pdf.mkii @@ -5,7 +5,7 @@ %D subtitle=Conversion to \PDF, %D author=Hans Hagen \& others (see text), %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/meta-pdf.mkiv b/tex/context/base/meta-pdf.mkiv index 4d5e5232a..9a63b5034 100644 --- a/tex/context/base/meta-pdf.mkiv +++ b/tex/context/base/meta-pdf.mkiv @@ -5,7 +5,7 @@ %D subtitle=Conversion to \PDF, %D author=Hans Hagen \& others (see text), %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/meta-pdh.mkiv b/tex/context/base/meta-pdh.mkiv index 978128f3a..677b40aec 100644 --- a/tex/context/base/meta-pdh.mkiv +++ b/tex/context/base/meta-pdh.mkiv @@ -5,7 +5,7 @@ %D subtitle=Conversion to \PDF, %D author=Hans Hagen \& others (see text), %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/meta-pre.mkii b/tex/context/base/meta-pre.mkii index cb861ff20..098be030b 100644 --- a/tex/context/base/meta-pre.mkii +++ b/tex/context/base/meta-pre.mkii @@ -5,7 +5,7 @@ %D subtitle=Predefined Goodies, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/meta-tex.mkii b/tex/context/base/meta-tex.mkii index 190a694d9..ab0f24457 100644 --- a/tex/context/base/meta-tex.mkii +++ b/tex/context/base/meta-tex.mkii @@ -5,7 +5,7 @@ %D subtitle=\METAPOST\ fast text insertion, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/meta-tex.mkiv b/tex/context/base/meta-tex.mkiv index 2496440c7..6e1beeba6 100644 --- a/tex/context/base/meta-tex.mkiv +++ b/tex/context/base/meta-tex.mkiv @@ -5,7 +5,7 @@ %D subtitle=\METAPOST\ fast text insertion, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/meta-txt.mkii b/tex/context/base/meta-txt.mkii index 474253a40..dc8bb7ca8 100644 --- a/tex/context/base/meta-txt.mkii +++ b/tex/context/base/meta-txt.mkii @@ -5,7 +5,7 @@ %D subtitle=Text Tricks, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/meta-xml.mkii b/tex/context/base/meta-xml.mkii index f6f81f767..71708a0f9 100644 --- a/tex/context/base/meta-xml.mkii +++ b/tex/context/base/meta-xml.mkii @@ -5,7 +5,7 @@ %D subtitle=XML Hacks, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/meta-xml.mkiv b/tex/context/base/meta-xml.mkiv index 6ce9612cc..bd93bda8c 100644 --- a/tex/context/base/meta-xml.mkiv +++ b/tex/context/base/meta-xml.mkiv @@ -5,7 +5,7 @@ %D subtitle=XML Hacks, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/metatex.tex b/tex/context/base/metatex.tex index cb965dc48..b5f54c4ee 100644 --- a/tex/context/base/metatex.tex +++ b/tex/context/base/metatex.tex @@ -5,7 +5,7 @@ %D subtitle=\METATEX\ Format Generation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=Hans Hagen / \CONTEXT\ Development Team] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/mlib-ctx.mkiv b/tex/context/base/mlib-ctx.mkiv index 6f56b7e68..75ff45488 100644 --- a/tex/context/base/mlib-ctx.mkiv +++ b/tex/context/base/mlib-ctx.mkiv @@ -5,7 +5,7 @@ %D subtitle=Basics, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/mlib-pdf.mkiv b/tex/context/base/mlib-pdf.mkiv index 8506b3b15..f1b2f040d 100644 --- a/tex/context/base/mlib-pdf.mkiv +++ b/tex/context/base/mlib-pdf.mkiv @@ -5,7 +5,7 @@ %D subtitle=Conversion to PDF, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/mlib-pps.mkiv b/tex/context/base/mlib-pps.mkiv index 357f85b1a..8dac53b74 100644 --- a/tex/context/base/mlib-pps.mkiv +++ b/tex/context/base/mlib-pps.mkiv @@ -5,7 +5,7 @@ %D subtitle=Basics, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/mtx-context-arrange.tex b/tex/context/base/mtx-context-arrange.tex index b3d8a4df1..9ee0391b6 100644 --- a/tex/context/base/mtx-context-arrange.tex +++ b/tex/context/base/mtx-context-arrange.tex @@ -5,7 +5,7 @@ %D subtitle=Arrange Files, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/mtx-context-combine.tex b/tex/context/base/mtx-context-combine.tex index 8a861ab83..3c48080ee 100644 --- a/tex/context/base/mtx-context-combine.tex +++ b/tex/context/base/mtx-context-combine.tex @@ -5,7 +5,7 @@ %D subtitle=Combine Files, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/mtx-context-common.tex b/tex/context/base/mtx-context-common.tex index 8327dd28d..a34e47747 100644 --- a/tex/context/base/mtx-context-common.tex +++ b/tex/context/base/mtx-context-common.tex @@ -5,7 +5,7 @@ %D subtitle=Common Stuff, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/mtx-context-ideas.tex b/tex/context/base/mtx-context-ideas.tex index 24d11a5b5..d10eefc76 100644 --- a/tex/context/base/mtx-context-ideas.tex +++ b/tex/context/base/mtx-context-ideas.tex @@ -5,7 +5,7 @@ %D subtitle=Placeholder File, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/mtx-context-listing.tex b/tex/context/base/mtx-context-listing.tex index 0cbd73784..d69db9934 100644 --- a/tex/context/base/mtx-context-listing.tex +++ b/tex/context/base/mtx-context-listing.tex @@ -5,7 +5,7 @@ %D subtitle=Listing Files, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/mtx-context-select.tex b/tex/context/base/mtx-context-select.tex index 8a02bdff7..7d6535119 100644 --- a/tex/context/base/mtx-context-select.tex +++ b/tex/context/base/mtx-context-select.tex @@ -7,7 +7,7 @@ %D subtitle=Listing Files, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/mtx-context-timing.tex b/tex/context/base/mtx-context-timing.tex index b788d4b63..1bc5b4776 100644 --- a/tex/context/base/mtx-context-timing.tex +++ b/tex/context/base/mtx-context-timing.tex @@ -5,7 +5,7 @@ %D subtitle=Timing Runs, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/mult-aux.mkii b/tex/context/base/mult-aux.mkii index f06833bff..3869a95db 100644 --- a/tex/context/base/mult-aux.mkii +++ b/tex/context/base/mult-aux.mkii @@ -5,7 +5,7 @@ %D subtitle=helpers, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/mult-aux.mkiv b/tex/context/base/mult-aux.mkiv index 1dfe6fb8e..47d578ab5 100644 --- a/tex/context/base/mult-aux.mkiv +++ b/tex/context/base/mult-aux.mkiv @@ -5,7 +5,7 @@ %D subtitle=helpers, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -113,8 +113,8 @@ \unexpanded\def\doinstallattributehandler#1#2#3% #1 not used here {\def#2##1##2% style color - {\edef\fontattributehash {#3{##1}}% - \edef\colorattributehash{#3{##2}}% + {\edef\fontattributehash {#3{##1}}% this name is public + \edef\colorattributehash{#3{##2}}% this name is public \ifx\fontattributehash \empty\else\dosetfontattribute \fontattributehash {##1}\fi \ifx\colorattributehash\empty\else\dosetcolorattribute\colorattributehash{##2}\fi}} @@ -194,6 +194,42 @@ \expandafter\noexpand\csname everysetup#2\endcsname \expandafter\noexpand\csname setupcurrent#2\endcsname}} +\unexpanded\def\doinstallswitchsetuphandler#1#2#3#4#5#6% + {\ifx#3\relax\let#3\empty\fi + \unexpanded\def#2{\dodoubleempty#4}% + \unexpanded\def#6{\getparameters[#1#3]}% + \newtoks#5% + \def#4[##1][##2]% maybe helper + {\ifsecondargument % no commalist here + \let\savedsetupwhatever#3% + \edef#3{##1}% + \getparameters[#1#3][##2]% + \the#5% + \let#3\savedsetupwhatever + \else\iffirstargument + \doifassignmentelse{##1} + {\let\savedsetupwhatever#3% + \let#3\empty + \getparameters[#1][##1]% + \the#5% + \let#3\savedsetupwhatever} + {\edef#3{##1}% this will catch reset + \the#5}% + \else + \let#3\empty + \the#5% + \fi\fi}} + +\unexpanded\def\installswitchsetuphandler#1#2% + {\normalexpanded + {\doinstallswitchsetuphandler + {\noexpand#1}% \??aa + \expandafter\noexpand\csname setup#2\endcsname + \expandafter\noexpand\csname current#2\endcsname + \expandafter\noexpand\csname d@setup#2\endcsname + \expandafter\noexpand\csname everysetup#2\endcsname + \expandafter\noexpand\csname setupcurrent#2\endcsname}} + \unexpanded\def\installcommandhandler#1#2#3% \??self name \??parent (can be \??self) {\installparameterhandler {#1}{#2}% \installparameterhashhandler{#1}{#2}% @@ -202,6 +238,14 @@ \installsetuphandler {#1}{#2}% \installattributehandler {#1}{#2}} +\unexpanded\def\installswitchcommandhandler#1#2#3% \??self name \??parent (can be \??self) + {\installparameterhandler {#1}{#2}% + \installparameterhashhandler{#1}{#2}% + \installparametersethandler {#1}{#2}% + \installdefinehandler {#1}{#2}{#3}% + \installswitchsetuphandler {#1}{#2}% + \installattributehandler {#1}{#2}} + \unexpanded\def\installnamespace#1% {\setvalue{????#1}{@@@@#1}} diff --git a/tex/context/base/mult-chk.mkii b/tex/context/base/mult-chk.mkii index 60f568a1e..cde00fd44 100644 --- a/tex/context/base/mult-chk.mkii +++ b/tex/context/base/mult-chk.mkii @@ -5,7 +5,7 @@ %D subtitle=Checking, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/mult-chk.mkiv b/tex/context/base/mult-chk.mkiv index cf38daf67..e3a6a4c54 100644 --- a/tex/context/base/mult-chk.mkiv +++ b/tex/context/base/mult-chk.mkiv @@ -5,7 +5,7 @@ %D subtitle=Checking, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/mult-com.mkii b/tex/context/base/mult-com.mkii index 118616837..600819b7e 100644 --- a/tex/context/base/mult-com.mkii +++ b/tex/context/base/mult-com.mkii @@ -5,7 +5,7 @@ %D subtitle=Commands, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See licen-en.pdf for diff --git a/tex/context/base/mult-con.mkii b/tex/context/base/mult-con.mkii index 62e97d567..7d0a47bd0 100644 --- a/tex/context/base/mult-con.mkii +++ b/tex/context/base/mult-con.mkii @@ -5,7 +5,7 @@ %D subtitle=Constants, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/mult-de.mkii b/tex/context/base/mult-de.mkii index 6d6b04dca..7a7ba6be2 100644 --- a/tex/context/base/mult-de.mkii +++ b/tex/context/base/mult-de.mkii @@ -356,6 +356,7 @@ \setinterfacevariable{previousoddpage}{vorigeungeradeseite} \setinterfacevariable{previouspage}{vorigeseite} \setinterfacevariable{previoussubpage}{vorigeunterseite} +\setinterfacevariable{print}{print} \setinterfacevariable{printable}{druckbar} \setinterfacevariable{process}{process} \setinterfacevariable{product}{produkt} diff --git a/tex/context/base/mult-def.lua b/tex/context/base/mult-def.lua index 8499dd43b..a26c8c0cf 100644 --- a/tex/context/base/mult-def.lua +++ b/tex/context/base/mult-def.lua @@ -14678,13 +14678,17 @@ return { ["pe"]="زیرصفحهقبلی", ["ro"]="subpaginaanterioara", }, + ["print"]={ + ["en"]="print", + ["nl"]="print", -- afdruk + }, ["printable"]={ ["cs"]="tisknutelne", ["de"]="druckbar", ["en"]="printable", ["fr"]="editable", ["it"]="stampabile", - ["nl"]="printbaar", + ["nl"]="printbaar", -- afdrukbaar ["pe"]="قابلچاپ", ["ro"]="tiparibil", }, diff --git a/tex/context/base/mult-def.mkii b/tex/context/base/mult-def.mkii index 0e1a7dee7..a75ef993f 100644 --- a/tex/context/base/mult-def.mkii +++ b/tex/context/base/mult-def.mkii @@ -5,7 +5,7 @@ %D subtitle=Definitions, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/mult-def.mkiv b/tex/context/base/mult-def.mkiv index a273fa18a..a09809cf7 100644 --- a/tex/context/base/mult-def.mkiv +++ b/tex/context/base/mult-def.mkiv @@ -5,7 +5,7 @@ %D subtitle=Definitions, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/mult-en.mkii b/tex/context/base/mult-en.mkii index a40f341c6..f07fb688c 100644 --- a/tex/context/base/mult-en.mkii +++ b/tex/context/base/mult-en.mkii @@ -356,6 +356,7 @@ \setinterfacevariable{previousoddpage}{previousoddpage} \setinterfacevariable{previouspage}{previouspage} \setinterfacevariable{previoussubpage}{previoussubpage} +\setinterfacevariable{print}{print} \setinterfacevariable{printable}{printable} \setinterfacevariable{process}{process} \setinterfacevariable{product}{product} diff --git a/tex/context/base/mult-fr.mkii b/tex/context/base/mult-fr.mkii index 875d92bbc..8cf9ff3b1 100644 --- a/tex/context/base/mult-fr.mkii +++ b/tex/context/base/mult-fr.mkii @@ -356,6 +356,7 @@ \setinterfacevariable{previousoddpage}{pageimpaireprecedente} \setinterfacevariable{previouspage}{pageprecedente} \setinterfacevariable{previoussubpage}{souspageprecedente} +\setinterfacevariable{print}{print} \setinterfacevariable{printable}{editable} \setinterfacevariable{process}{process} \setinterfacevariable{product}{produit} diff --git a/tex/context/base/mult-fst.mkii b/tex/context/base/mult-fst.mkii index e655e3d26..36c3f181f 100644 --- a/tex/context/base/mult-fst.mkii +++ b/tex/context/base/mult-fst.mkii @@ -5,7 +5,7 @@ %D subtitle=Speed Up, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/mult-fst.mkiv b/tex/context/base/mult-fst.mkiv index 11558b557..e9d7c0b22 100644 --- a/tex/context/base/mult-fst.mkiv +++ b/tex/context/base/mult-fst.mkiv @@ -5,7 +5,7 @@ %D subtitle=Speed Up, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/mult-ini.mkii b/tex/context/base/mult-ini.mkii index c2bb40861..76f6d69f2 100644 --- a/tex/context/base/mult-ini.mkii +++ b/tex/context/base/mult-ini.mkii @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/mult-ini.mkiv b/tex/context/base/mult-ini.mkiv index afddf692e..f7b5ef247 100644 --- a/tex/context/base/mult-ini.mkiv +++ b/tex/context/base/mult-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/mult-it.mkii b/tex/context/base/mult-it.mkii index 3823e651c..6692e7c06 100644 --- a/tex/context/base/mult-it.mkii +++ b/tex/context/base/mult-it.mkii @@ -356,6 +356,7 @@ \setinterfacevariable{previousoddpage}{paginadispariprecedente} \setinterfacevariable{previouspage}{paginaprecedente} \setinterfacevariable{previoussubpage}{sottopaginaprecedente} +\setinterfacevariable{print}{print} \setinterfacevariable{printable}{stampabile} \setinterfacevariable{process}{process} \setinterfacevariable{product}{prodotto} diff --git a/tex/context/base/mult-nl.mkii b/tex/context/base/mult-nl.mkii index a5b62ad33..732b467a0 100644 --- a/tex/context/base/mult-nl.mkii +++ b/tex/context/base/mult-nl.mkii @@ -356,6 +356,7 @@ \setinterfacevariable{previousoddpage}{vorigeonevenpagina} \setinterfacevariable{previouspage}{vorigepagina} \setinterfacevariable{previoussubpage}{vorigesubpagina} +\setinterfacevariable{print}{print} \setinterfacevariable{printable}{printbaar} \setinterfacevariable{process}{proces} \setinterfacevariable{product}{produkt} diff --git a/tex/context/base/mult-pe.mkii b/tex/context/base/mult-pe.mkii index 284fa40e8..c08fd3cc0 100644 --- a/tex/context/base/mult-pe.mkii +++ b/tex/context/base/mult-pe.mkii @@ -356,6 +356,7 @@ \setinterfacevariable{previousoddpage}{صفحهفردقبلی} \setinterfacevariable{previouspage}{صفحهقبلی} \setinterfacevariable{previoussubpage}{زیرصفحهقبلی} +\setinterfacevariable{print}{print} \setinterfacevariable{printable}{قابلچاپ} \setinterfacevariable{process}{پردازش} \setinterfacevariable{product}{محصول} diff --git a/tex/context/base/mult-ro.mkii b/tex/context/base/mult-ro.mkii index 474cf7c43..1fa93dd98 100644 --- a/tex/context/base/mult-ro.mkii +++ b/tex/context/base/mult-ro.mkii @@ -356,6 +356,7 @@ \setinterfacevariable{previousoddpage}{paginaimparaprecedenta} \setinterfacevariable{previouspage}{paginaanterioara} \setinterfacevariable{previoussubpage}{subpaginaanterioara} +\setinterfacevariable{print}{print} \setinterfacevariable{printable}{tiparibil} \setinterfacevariable{process}{process} \setinterfacevariable{product}{produs} diff --git a/tex/context/base/mult-sys.mkii b/tex/context/base/mult-sys.mkii index 1484acecc..1961fdf11 100644 --- a/tex/context/base/mult-sys.mkii +++ b/tex/context/base/mult-sys.mkii @@ -5,7 +5,7 @@ %D subtitle=System, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/mult-sys.mkiv b/tex/context/base/mult-sys.mkiv index 4e3138c86..9d037368a 100644 --- a/tex/context/base/mult-sys.mkiv +++ b/tex/context/base/mult-sys.mkiv @@ -5,7 +5,7 @@ %D subtitle=System, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -371,8 +371,6 @@ \definesystemconstant {vwa} % automatic (illustrations) \definesystemconstant {vwb} % automatic (illustrations) -\definesystemconstant {kop} % kop % still dutch - %D Reference labels can be tagged by users, for instance by %D means of \type{tag:}. The reference mechanism itself uses %D some tags too. These are definitely not to be used by users. diff --git a/tex/context/base/node-acc.lua b/tex/context/base/node-acc.lua index 537405921..d773b7acf 100644 --- a/tex/context/base/node-acc.lua +++ b/tex/context/base/node-acc.lua @@ -14,6 +14,7 @@ local tasks = nodes.tasks local traverse_nodes = node.traverse local traverse_id = node.traverse_id local has_attribute = node.has_attribute +local set_attribute = node.set_attribute local copy_node = node.copy local free_nodelist = node.flush_list @@ -22,6 +23,10 @@ local glyph_code = nodecodes.glyph local hlist_code = nodecodes.hlist local vlist_code = nodecodes.vlist +local a_characters = attributes.private("characters") + +-- todo: nbsp etc + local function injectspaces(head) local p for n in traverse_nodes(head) do @@ -29,6 +34,10 @@ local function injectspaces(head) if id == glue_code then -- todo: check for subtype related to spacing (13/14 but most seems to be 0) -- local at = has_attribute(n,attribute) -- if at then +--~ local a = has_attribute(n,a_characters) +--~ if a then +--~ -- handle this in the export +--~ else if p and p.id == glyph_code then local g = copy_node(p) local c = g.components @@ -37,13 +46,20 @@ local function injectspaces(head) g.components = nil g.subtype = 256 end + local a = has_attribute(n,a_characters) local s = copy_node(n.spec) g.char, n.spec = 32, s p.next, g.prev = g, p g.next, n.prev = n, g s.width = s.width - g.width + if a then + set_attribute(g,a_characters,a) + end + set_attribute(s,a_characters,0) + set_attribute(n,a_characters,0) end -- end +--~ end elseif id == hlist_code or id == vlist_code then injectspaces(n.list,attribute) end diff --git a/tex/context/base/node-bck.mkiv b/tex/context/base/node-bck.mkiv index 88fb390a9..f53584396 100644 --- a/tex/context/base/node-bck.mkiv +++ b/tex/context/base/node-bck.mkiv @@ -5,7 +5,7 @@ %D subtitle=Backgrounds, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/node-fin.mkiv b/tex/context/base/node-fin.mkiv index ffa4b8bf5..3faf2e319 100644 --- a/tex/context/base/node-fin.mkiv +++ b/tex/context/base/node-fin.mkiv @@ -5,7 +5,7 @@ %D subtitle=Finalizing, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/node-ini.mkiv b/tex/context/base/node-ini.mkiv index 8d048122f..9924a092a 100644 --- a/tex/context/base/node-ini.mkiv +++ b/tex/context/base/node-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/node-mig.mkiv b/tex/context/base/node-mig.mkiv index c07f5ed5b..69ed1d9e7 100644 --- a/tex/context/base/node-mig.mkiv +++ b/tex/context/base/node-mig.mkiv @@ -5,7 +5,7 @@ %D subtitle=Inserts, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/node-pag.mkiv b/tex/context/base/node-pag.mkiv index 487901ad0..b8ed197fe 100644 --- a/tex/context/base/node-pag.mkiv +++ b/tex/context/base/node-pag.mkiv @@ -5,7 +5,7 @@ %D subtitle=Page Building, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/node-par.lua b/tex/context/base/node-par.lua index b0879c750..8eafd1f6e 100644 --- a/tex/context/base/node-par.lua +++ b/tex/context/base/node-par.lua @@ -89,7 +89,9 @@ end -- pre and post hooks and only one parbuilder makes sense, so no: -- -- local actions = nodes.tasks.actions("parbuilders") - +-- +-- yet (maybe some day). +-- -- todo: enable one as main local actions = constructors.handler diff --git a/tex/context/base/node-par.mkiv b/tex/context/base/node-par.mkiv index 2e9efde1f..e6a322637 100644 --- a/tex/context/base/node-par.mkiv +++ b/tex/context/base/node-par.mkiv @@ -5,7 +5,7 @@ %D subtitle=Paragraph Building, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/node-pro.lua b/tex/context/base/node-pro.lua index 2d04a4d71..73d22697e 100644 --- a/tex/context/base/node-pro.lua +++ b/tex/context/base/node-pro.lua @@ -16,15 +16,16 @@ local report_nodes = logs.reporter("nodes","processors") local nodes, node = nodes, node -local nodecodes = nodes.nodecodes -local glyph_code = nodecodes.glyph -local tasks = nodes.tasks +local nodecodes = nodes.nodecodes +local glyph_code = nodecodes.glyph +local tasks = nodes.tasks -local free_node = node.free -local first_glyph = node.first_glyph or node.first_character +local free_node = node.free +local first_glyph = node.first_glyph or node.first_character +local has_attribute = node.has_attribute -nodes.processors = nodes.processors or { } -local processors = nodes.processors +nodes.processors = nodes.processors or { } +local processors = nodes.processors -- vbox: grouptype: vbox vtop output split_off split_keep | box_type: exactly|aditional -- hbox: grouptype: hbox adjusted_hbox(=hbox_in_vmode) | box_type: exactly|aditional diff --git a/tex/context/base/node-rul.mkiv b/tex/context/base/node-rul.mkiv index 90bcd9e40..cf94ac5e0 100644 --- a/tex/context/base/node-rul.mkiv +++ b/tex/context/base/node-rul.mkiv @@ -5,7 +5,7 @@ %D subtitle=Bars, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/node-spl.mkiv b/tex/context/base/node-spl.mkiv index 8ad6795a5..3630212af 100644 --- a/tex/context/base/node-spl.mkiv +++ b/tex/context/base/node-spl.mkiv @@ -5,7 +5,7 @@ %D subtitle=Splitters, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/norm-alo.mkii b/tex/context/base/norm-alo.mkii index d47f49037..d359cf7e8 100644 --- a/tex/context/base/norm-alo.mkii +++ b/tex/context/base/norm-alo.mkii @@ -5,7 +5,7 @@ %D subtitle=\ALEPH\ and \OMEGA, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/norm-ctx.mkii b/tex/context/base/norm-ctx.mkii index 707705d89..b1a4c7d35 100644 --- a/tex/context/base/norm-ctx.mkii +++ b/tex/context/base/norm-ctx.mkii @@ -5,7 +5,7 @@ %D subtitle=\ALEPH\ and \OMEGA, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/norm-ctx.mkiv b/tex/context/base/norm-ctx.mkiv index 707705d89..b1a4c7d35 100644 --- a/tex/context/base/norm-ctx.mkiv +++ b/tex/context/base/norm-ctx.mkiv @@ -5,7 +5,7 @@ %D subtitle=\ALEPH\ and \OMEGA, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/norm-etx.mkii b/tex/context/base/norm-etx.mkii index 3edd8e7ef..bd244e4d1 100644 --- a/tex/context/base/norm-etx.mkii +++ b/tex/context/base/norm-etx.mkii @@ -5,7 +5,7 @@ %D subtitle=\ETEX, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/norm-ltx.mkii b/tex/context/base/norm-ltx.mkii index a779735dd..cd02cffec 100644 --- a/tex/context/base/norm-ltx.mkii +++ b/tex/context/base/norm-ltx.mkii @@ -5,7 +5,7 @@ %D subtitle=\LUATEX, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/norm-ptx.mkii b/tex/context/base/norm-ptx.mkii index 352a884f0..14a57aeec 100644 --- a/tex/context/base/norm-ptx.mkii +++ b/tex/context/base/norm-ptx.mkii @@ -5,7 +5,7 @@ %D subtitle=\PDFTEX, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/norm-tex.mkii b/tex/context/base/norm-tex.mkii index 61f9740ef..0bd54f71a 100644 --- a/tex/context/base/norm-tex.mkii +++ b/tex/context/base/norm-tex.mkii @@ -5,7 +5,7 @@ %D subtitle=\TEX, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/norm-xtx.mkii b/tex/context/base/norm-xtx.mkii index 3da944656..851b90b31 100644 --- a/tex/context/base/norm-xtx.mkii +++ b/tex/context/base/norm-xtx.mkii @@ -5,7 +5,7 @@ %D subtitle=\XETEX, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/pack-bar.mkiv b/tex/context/base/pack-bar.mkiv index 05afd32d0..6967173e2 100644 --- a/tex/context/base/pack-bar.mkiv +++ b/tex/context/base/pack-bar.mkiv @@ -5,7 +5,7 @@ %D subtitle=Bars, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/pack-box.mkii b/tex/context/base/pack-box.mkii index f27d8b4fd..8e7700b21 100644 --- a/tex/context/base/pack-box.mkii +++ b/tex/context/base/pack-box.mkii @@ -5,7 +5,7 @@ %D subtitle=Boxes, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -234,7 +234,7 @@ {\lower\ht\collectorbox\box\collectorbox}% % just to be sure \ifdim\wd\collectorbox<\@@layerxsiz - \global\wd\collectorbox\@@layerxsiz + \wd\collectorbox\@@layerxsiz \fi} \def\flushcollector[#1]% @@ -260,7 +260,7 @@ \def\adaptcollector {\dodoubleargument\doadaptcollector} -\def\doadaptcollector[#1][#2]% +\def\doadaptcollector[#1][#2]% % a typical case where \global\wd looks better in the code {\bgroup \def\currentcollector{#1}% \mathchardef\collectorbox\csname\@@collectorbox#1\endcsname diff --git a/tex/context/base/pack-box.mkiv b/tex/context/base/pack-box.mkiv index fa771b485..5bd617b1b 100644 --- a/tex/context/base/pack-box.mkiv +++ b/tex/context/base/pack-box.mkiv @@ -5,7 +5,7 @@ %D subtitle=Boxes, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -234,7 +234,7 @@ {\lower\ht\collectorbox\box\collectorbox}% % just to be sure \ifdim\wd\collectorbox<\@@layerxsiz - \global\wd\collectorbox\@@layerxsiz + \wd\collectorbox\@@layerxsiz \fi} \def\flushcollector[#1]% @@ -260,7 +260,7 @@ \def\adaptcollector {\dodoubleargument\doadaptcollector} -\def\doadaptcollector[#1][#2]% +\def\doadaptcollector[#1][#2]% % a typical case where \global\wd looks better in the code {\bgroup \def\currentcollector{#1}% \chardef\collectorbox\csname\@@collectorbox#1\endcsname diff --git a/tex/context/base/pack-lyr.mkii b/tex/context/base/pack-lyr.mkii index 85549bccb..1b0c0fd63 100644 --- a/tex/context/base/pack-lyr.mkii +++ b/tex/context/base/pack-lyr.mkii @@ -5,7 +5,7 @@ %D subtitle=Layers, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/pack-lyr.mkiv b/tex/context/base/pack-lyr.mkiv index 5242b56de..f812586ce 100644 --- a/tex/context/base/pack-lyr.mkiv +++ b/tex/context/base/pack-lyr.mkiv @@ -5,7 +5,7 @@ %D subtitle=Layers, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/pack-mis.mkvi b/tex/context/base/pack-mis.mkvi index ab6d2b334..f7c506b8e 100644 --- a/tex/context/base/pack-mis.mkvi +++ b/tex/context/base/pack-mis.mkvi @@ -5,7 +5,7 @@ %D subtitle=Miscelaneous, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/pack-obj.mkii b/tex/context/base/pack-obj.mkii index 6971ad04f..81523d525 100644 --- a/tex/context/base/pack-obj.mkii +++ b/tex/context/base/pack-obj.mkii @@ -5,7 +5,7 @@ %D subtitle=Objects, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/pack-obj.mkiv b/tex/context/base/pack-obj.mkiv index 3d87f52b5..a89e72207 100644 --- a/tex/context/base/pack-obj.mkiv +++ b/tex/context/base/pack-obj.mkiv @@ -5,7 +5,7 @@ %D subtitle=Objects, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -265,55 +265,27 @@ {\globalpopmacro\crossreferenceobject \dododosetobject{#1}{#2}{#3}\egroup}} -\ifnum\luatexversion<66 - - \def\dododosetobject#1#2#3% this is a hack: luatex adds 1bp around each side - {\begingroup - \dontshowcomposition % rather fuzzy in \setxvalue ... \hbox - \ifcase#1\relax - \scratchdimen-\onebasepoint % compensates auto 1 bp - \else\ifdim\objectoffset>\zeropoint - \scratchdimen \objectoffset - \else - \scratchdimen-\onebasepoint % compensates auto 1 bp - \fi\fi - \@EA\xdef\csname\r!object#2::#3\endcsname - {\noexpand\dohandleobject{#2}{#3}% - {\ifhbox\nextbox\hbox\else\vbox\fi}% - {\number\nextboxwd}{\number\nextboxht}{\number\nextboxdp}% - {\number\scratchdimen}}% - \expanded % freeze the dimensions since \dostartobject may use \nextbox - {\dostartobject{#2}{#3}{\the\nextboxwd}{\the\nextboxht}{\the\nextboxdp}}% - \setbox\nextbox\vbox spread 2\scratchdimen - {\forgetall \offinterlineskip - \vss\hbox spread 2\scratchdimen{\hss\flushnextbox\hss}\vss}% - \flushnextbox - \dostopobject - \endgroup} - -\else - - \def\dododosetobject#1#2#3% - {\begingroup - \dontshowcomposition % rather fuzzy in \setxvalue ... \hbox - \scratchdimen\objectoffset - \@EA\xdef\csname\r!object#2::#3\endcsname - {\noexpand\dohandleobject{#2}{#3}% - {\ifhbox\nextbox\hbox\else\vbox\fi}% - {\number\nextboxwd}{\number\nextboxht}{\number\nextboxdp}% - {\number\scratchdimen}}% - \expanded % freeze the dimensions since \dostartobject may use \nextbox - {\dostartobject{#2}{#3}{\the\nextboxwd}{\the\nextboxht}{\the\nextboxdp}}% - \ifcase#1\relax\else \ifdim\objectoffset>\zeropoint - \setbox\nextbox\vbox spread 2\scratchdimen - {\forgetall \offinterlineskip - \vss\hbox spread 2\scratchdimen{\hss\flushnextbox\hss}\vss}% - \fi \fi - \flushnextbox - \dostopobject - \endgroup} +% in luatex version < 66 we had a 1bp compensation (hardcoded in luatex) -\fi +\def\dododosetobject#1#2#3% + {\begingroup + \dontshowcomposition % rather fuzzy in \setxvalue ... \hbox + \scratchdimen\objectoffset + \@EA\xdef\csname\r!object#2::#3\endcsname + {\noexpand\dohandleobject{#2}{#3}% + {\ifhbox\nextbox\hbox\else\vbox\fi}% + {\number\nextboxwd}{\number\nextboxht}{\number\nextboxdp}% + {\number\scratchdimen}}% + \expanded % freeze the dimensions since \dostartobject may use \nextbox + {\dostartobject{#2}{#3}{\the\nextboxwd}{\the\nextboxht}{\the\nextboxdp}}% + \ifcase#1\relax\else \ifdim\objectoffset>\zeropoint + \setbox\nextbox\vbox spread 2\scratchdimen + {\forgetall \offinterlineskip + \vss\hbox spread 2\scratchdimen{\hss\flushnextbox\hss}\vss}% + \fi \fi + \flushnextbox + \dostopobject + \endgroup} \def\getobject#1#2% {\begingroup @@ -324,6 +296,7 @@ {% \initializepaper \forgetall \dontshowcomposition + % todo: if no attr then faster \setbox\scratchbox\vbox attr \viewerlayerattribute \attribute\viewerlayerattribute {\doinsertobject{#1}{#2}}% \setbox\scratchbox#3% diff --git a/tex/context/base/pack-pos.mkiv b/tex/context/base/pack-pos.mkiv index 42a80b5ae..3f71dfa8d 100644 --- a/tex/context/base/pack-pos.mkiv +++ b/tex/context/base/pack-pos.mkiv @@ -5,7 +5,7 @@ %D subtitle=Positioning, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/pack-rul.mkii b/tex/context/base/pack-rul.mkii index 055094547..2e625a90f 100644 --- a/tex/context/base/pack-rul.mkii +++ b/tex/context/base/pack-rul.mkii @@ -5,7 +5,7 @@ %D subtitle=Ruled Content, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/pack-rul.mkiv b/tex/context/base/pack-rul.mkiv index c137aea01..c8e2f529a 100644 --- a/tex/context/base/pack-rul.mkiv +++ b/tex/context/base/pack-rul.mkiv @@ -5,7 +5,7 @@ %D subtitle=Ruled Content, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -787,18 +787,6 @@ \let\@@framed\s!unknown -% \def\framedparameter #1{\csname\doframedparameter\@@framed#1\endcsname} -% \def\framedparameterhash#1{\doframedparameterhash \@@framed#1} -% -% \def\doframedparameter #1#2{\ifcsname#1#2\endcsname#1#2\else\expandafter\doframedparentparameter \csname#1\s!parent\endcsname#2\fi} -% \def\doframedparameterhash#1#2{\ifcsname#1#2\endcsname #1\else\expandafter\doframedparentparameterhash\csname#1\s!parent\endcsname#2\fi} -% -% \def\doframedparentparameter #1#2{\ifx#1\relax\s!empty\else\doframedparameter #1#2\fi} -% \def\doframedparentparameterhash#1#2{\ifx#1\relax \else\doframedparameterhash#1#2\fi} -% -% \def\doframedparentparameter#1#2{\ifx#1\relax\doframedrootparameter#2\else\doframedparameter#1#2\fi} -% \def\doframedrootparameter #1{\ifcsname\??oi#1\endcsname\??oi#1\else\s!empty\fi} - \def\framedparameter #1{\csname\doframedparameter\@@framed{#1}\endcsname} \def\framedparameterhash#1{\doframedparameterhash \@@framed#1} @@ -2891,7 +2879,7 @@ \dosingleempty\dodoframedtext} \def\dodoframedtext[#1]% beware! - {\normalexpanded{\noexpand\switchtobodyfont[\\framedtextparameter\c!bodyfont]}% + {\normalexpanded{\noexpand\switchtobodyfont[\framedtextparameter\c!bodyfont]}% \localframed[\??kd\currentframedtext][\c!strut=\v!no,#1]% \bgroup \blank[\v!disable]% diff --git a/tex/context/base/page-app.mkii b/tex/context/base/page-app.mkii index e5c149aa0..75e0cf874 100644 --- a/tex/context/base/page-app.mkii +++ b/tex/context/base/page-app.mkii @@ -5,7 +5,7 @@ %D subtitle=Independent page building, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-app.mkiv b/tex/context/base/page-app.mkiv index b42eef054..79787b99b 100644 --- a/tex/context/base/page-app.mkiv +++ b/tex/context/base/page-app.mkiv @@ -5,7 +5,7 @@ %D subtitle=Independent page building, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-bck.mkii b/tex/context/base/page-bck.mkii index 0b4ad779a..4c636d29e 100644 --- a/tex/context/base/page-bck.mkii +++ b/tex/context/base/page-bck.mkii @@ -5,7 +5,7 @@ %D subtitle=Backgrounds, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-bck.mkiv b/tex/context/base/page-bck.mkiv index 81392f5af..fd1dff885 100644 --- a/tex/context/base/page-bck.mkiv +++ b/tex/context/base/page-bck.mkiv @@ -5,7 +5,7 @@ %D subtitle=Backgrounds, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -206,12 +206,14 @@ \newbox\rightbackground \def\addmainbackground#1% todo: dimension spec - {\ifsomebackground - \ifnewbackground \setbackgroundboxes \fi - \setbox#1\vbox - {\offinterlineskip - \doifmarginswapelse{\copy\leftbackground}{\copy\rightbackground}% - \box#1}% + {\ifcase\pageornamentstate + \ifsomebackground + \ifnewbackground \setbackgroundboxes \fi + \setbox#1\vbox + {\offinterlineskip + \doifmarginswapelse{\copy\leftbackground}{\copy\rightbackground}% + \box#1}% + \fi \fi} %D Finaly there is an aditional {\em text} background, again diff --git a/tex/context/base/page-com.mkiv b/tex/context/base/page-com.mkiv index dbb160058..fb7f34a4b 100644 --- a/tex/context/base/page-com.mkiv +++ b/tex/context/base/page-com.mkiv @@ -5,7 +5,7 @@ %D subtitle=Page Comments, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-flt.mkiv b/tex/context/base/page-flt.mkiv index 6d2389176..910e8261a 100644 --- a/tex/context/base/page-flt.mkiv +++ b/tex/context/base/page-flt.mkiv @@ -5,7 +5,7 @@ %D subtitle=Float Management, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -166,7 +166,7 @@ % retain special alignments \ifinsidecolumns \ifdim\wd\floatbox>\makeupwidth - \global\wd\floatbox\makeupwidth + \wd\floatbox\makeupwidth \fi \fi \fi diff --git a/tex/context/base/page-flw.mkii b/tex/context/base/page-flw.mkii index 3eb867a78..ba8fd3eab 100644 --- a/tex/context/base/page-flw.mkii +++ b/tex/context/base/page-flw.mkii @@ -5,7 +5,7 @@ %D subtitle=Text Flows, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-flw.mkiv b/tex/context/base/page-flw.mkiv index 81b4fedcb..b896a9598 100644 --- a/tex/context/base/page-flw.mkiv +++ b/tex/context/base/page-flw.mkiv @@ -5,7 +5,7 @@ %D subtitle=Text Flows, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-imp.mkii b/tex/context/base/page-imp.mkii index 4c22d4d2d..bf10504b4 100644 --- a/tex/context/base/page-imp.mkii +++ b/tex/context/base/page-imp.mkii @@ -5,7 +5,7 @@ %D subtitle=Pagebody Building (Imposition), %D author=Hans Hagen & Willi Egger, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -138,24 +138,14 @@ \newbox\postponedcontent -% \def\flushatshipout -% {\dowithnextbox -% {\global\setbox\postponedcontent\hbox to \zeropoint -% {%\hskip-\maxdimen % niet hier, gaat mis in acrobat (clipt) -% \box\postponedcontent\flushnextbox}% -% \global\ht\postponedcontent\zeropoint -% \global\dp\postponedcontent\zeropoint -% \global\wd\postponedcontent\zeropoint}% -% \hbox} - \def\flushatshipout {\dowithnextbox {\global\setbox\postponedcontent\hbox to \zeropoint {%\hskip-\maxdimen % niet hier, gaat mis in acrobat (clipt) \unhbox\postponedcontent\unhbox\nextbox}% - \global\ht\postponedcontent\zeropoint - \global\dp\postponedcontent\zeropoint - \global\wd\postponedcontent\zeropoint}% + \ht\postponedcontent\zeropoint + \dp\postponedcontent\zeropoint + \wd\postponedcontent\zeropoint}% \hbox} % \starttypen @@ -548,15 +538,15 @@ \fi} \def\handlearrangedpageSIDE - {\global\wd\arrangedpageA\paperwidth - \global\wd\arrangedpageB\paperwidth + {\wd\arrangedpageA\paperwidth + \wd\arrangedpageB\paperwidth \global\setbox\arrangedpageA\hbox {\box\arrangedpageA\box\arrangedpageB}% - \global\ht\arrangedpageA\paperheight} + \ht\arrangedpageA\paperheight} \def\handlearrangedpageTOP - {\global\ht\arrangedpageA\paperheight - \global\ht\arrangedpageB\paperheight + {\ht\arrangedpageA\paperheight + \ht\arrangedpageB\paperheight \global\setbox\arrangedpageA\vbox {\forgetall\offinterlineskip\vskip\paperheight \box\arrangedpageA\box\arrangedpageB}% @@ -585,13 +575,13 @@ \clippedprintbox1\arrangedpageA}% \swaparrangedtrue \fi - \global\ht\arrangedpageA\paperheight + \ht\arrangedpageA\paperheight \global\setbox\arrangedpageB\box\scratchbox} \def\handlearrangedpageTWODOWN {\splitoffarrangedpagesTWO - \global\ht\arrangedpageA\paperheight - \global\ht\arrangedpageB\paperheight + \ht\arrangedpageA\paperheight + \ht\arrangedpageB\paperheight \ifswaparranged \global\setbox\arrangedpageA\vbox {\forgetall\offinterlineskip\vskip\paperheight diff --git a/tex/context/base/page-imp.mkiv b/tex/context/base/page-imp.mkiv index b6fa75c8b..027db2142 100644 --- a/tex/context/base/page-imp.mkiv +++ b/tex/context/base/page-imp.mkiv @@ -5,7 +5,7 @@ %D subtitle=Pagebody Building (Imposition), %D author=Hans Hagen & Willi Egger, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -69,7 +69,7 @@ % \starttext \dorecurse{10}{\input tufte \par} \stoptext \def\clippagebox % skip fast over false - {\ifdim\@@lyclipoffset>\zeropoint + {\ifdim\layoutparameter\c!clipoffset>\zeropoint \expandafter\doclippagebox \else \expandafter\gobbleoneargument @@ -80,7 +80,7 @@ \!!heighta\ht#1% \!!deptha \dp#1% \setbox#1\hbox - {\!!widthb \@@lyclipoffset + {\!!widthb\layoutparameter\c!clipoffset \advance\!!heighta\dimexpr\!!deptha+2\!!widthb\relax \advance\!!widtha \!!widthb \doifbothsides @@ -137,9 +137,9 @@ {\global\setbox\postponedcontent\hbox to \zeropoint {%\hskip-\maxdimen % niet hier, gaat mis in acrobat (clipt) \unhbox\postponedcontent\unhbox\nextbox}% was \box - \global\ht\postponedcontent\zeropoint - \global\dp\postponedcontent\zeropoint - \global\wd\postponedcontent\zeropoint}% + \global\postponedcontent\zeropoint + \global\postponedcontent\zeropoint + \global\postponedcontent\zeropoint}% \hbox} % \starttypen @@ -552,15 +552,15 @@ \fi} \def\handlearrangedpageSIDE - {\global\wd\arrangedpageA\paperwidth - \global\wd\arrangedpageB\paperwidth + {\wd\arrangedpageA\paperwidth + \wd\arrangedpageB\paperwidth \global\setbox\arrangedpageA\hbox {\box\arrangedpageA\box\arrangedpageB}% - \global\ht\arrangedpageA\paperheight} + \ht\arrangedpageA\paperheight} \def\handlearrangedpageTOP - {\global\ht\arrangedpageA\paperheight - \global\ht\arrangedpageB\paperheight + {\ht\arrangedpageA\paperheight + \ht\arrangedpageB\paperheight \global\setbox\arrangedpageA\vbox {\offinterlineskip\vskip\paperheight \box\arrangedpageA\box\arrangedpageB}% @@ -589,13 +589,13 @@ \clippedprintbox\plusone \arrangedpageA}% \settrue\arrangedswapstate \fi - \global\ht\arrangedpageA\paperheight + \ht\arrangedpageA\paperheight \global\setbox\arrangedpageB\box\scratchbox} \def\handlearrangedpageTWODOWN {\splitoffarrangedpagesTWO - \global\ht\arrangedpageA\paperheight - \global\ht\arrangedpageB\paperheight + \ht\arrangedpageA\paperheight + \ht\arrangedpageB\paperheight \ifconditional\arrangedswapstate \global\setbox\arrangedpageA\vbox {\offinterlineskip\vskip\paperheight diff --git a/tex/context/base/page-ini.mkii b/tex/context/base/page-ini.mkii index 816b7d944..bc4aab60f 100644 --- a/tex/context/base/page-ini.mkii +++ b/tex/context/base/page-ini.mkii @@ -5,7 +5,7 @@ %D subtitle=Initializations, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-ini.mkiv b/tex/context/base/page-ini.mkiv index 7969e4f3e..56d647205 100644 --- a/tex/context/base/page-ini.mkiv +++ b/tex/context/base/page-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=Initializations, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -126,11 +126,9 @@ % % tricky in balancing mode, a la huidige multi columns -\ifx\dosetuplayout\undefined % overloaded in page-lay ! - - \unexpanded\def\setuplayout{\dodoubleempty\getparameters[\??ly]} - -\fi +% \ifx\dosetuplayout\undefined % overloaded in page-lay ! +% \unexpanded\def\setuplayout{\dodoubleempty\getparameters[\??ly]} +% \fi \ifx\mkprocesscolumncontents\undefined\let\mkprocesscolumncontents\gobbleoneargument\fi \ifx\mkprocesspagecontents \undefined\let\mkprocesspagecontents \gobbleoneargument\fi @@ -155,17 +153,6 @@ \def\installotr#1% andere naam, beter \connectotr of zo {\def\OTRidentifier{#1}} -% \def\OTRcommand#1% -% {\csname\@@OTR -% \ifcsname\@@OTR\OTRidentifier\strippedcsname#1\endcsname -% \OTRidentifier -% \else\ifcsname\@@OTR\OTRdefault\strippedcsname#1\endcsname % fallback -% \OTRdefault -% \fi\fi -% \strippedcsname#1\endcsname} -% -% maybe faster but at least less tracing: - \def\OTRcommand#1% {\csname\@@OTR \ifcsname\@@OTR\OTRidentifier\expandafter\gobbleoneargument\string#1\endcsname @@ -806,10 +793,6 @@ \newif\ifsavepagebody \newbox\savedpagebody -% beware, \??ly is used before defined, i.e. bad module design - -\setuplayout[\c!method=\v!normal] - \def\docolumnpagebodymarks#1#2#3#4% first last column box {\ifnum#3=#1\relax \dosynchronizemarking[\number#3,\v!column:\number#3,\v!first,\v!column:\v!first][#4]% @@ -822,15 +805,15 @@ \def\buildpagebody#1#2% {\ifsavepagebody\global\setbox\savedpagebody\fi \vbox - {%\pushcatcodetable - %\forgetall % igv problemen, check: \boxmaxdepth\maxdimen + {%\forgetall % igv problemen, check: \boxmaxdepth\maxdimen \boxmaxdepth\maxdimen % new \dontcomplain % marks get done here - \dosynchronizemarking[\v!page][#2]% + \dosynchronizemarking[\v!page][#2]% #2 box % the following plugin uses and sets pagebox; beware: this - % will change and is for my (hh) personal experiments - \executeifdefined{\??ly\c!method\@@lymethod}{\getvalue{\??ly\c!method\v!normal}}#1#2% + % will change and is for my (hh) personal experiments .. takes two + % arguments + \constructpagecontent#1#2% % the finishing touch \ifcase\pageornamentstate \addpagebackground \pagebox @@ -839,55 +822,69 @@ \ifarrangingpages \shiftpaperpagebox \pagebox % \v!paper \else - \clippagebox \pagebox - \doifelse\@@lymarking\v!page - {\replicatepagebox \pagebox - \addpagecutmarks \pagebox} - {\addpagecutmarks \pagebox - \replicatepagebox \pagebox}% - \scalepagebox \pagebox - \mirrorpaperbox \pagebox - \orientpaperbox \pagebox - \addpagecolormarks \pagebox - \centerpagebox \pagebox - \addprintbackground\pagebox - \mirrorprintbox \pagebox - \orientprintbox \pagebox - \shiftprintpagebox \pagebox % \v!page - \offsetprintbox \pagebox - \negateprintbox \pagebox + \clippagebox \pagebox + \page_marks_add_page \pagebox + \replicatepagebox \pagebox + \scalepagebox \pagebox + \mirrorpaperbox \pagebox + \orientpaperbox \pagebox + \page_marks_add_more \pagebox + \centerpagebox \pagebox + \addprintbackground \pagebox + \mirrorprintbox \pagebox + \orientprintbox \pagebox + \shiftprintpagebox \pagebox % \v!page + \offsetprintbox \pagebox + \negateprintbox \pagebox \fi - \box\pagebox - }% \popcatcodetable + \box\pagebox}% \ifsavepagebody\copy\savedpagebody\fi} -\setvalue{\??ly\c!method\v!normal}#1#2% - {\setbox\pagebox\vbox - {\offinterlineskip - \ifcase\pageornamentstate - \bgroup % else footnotes get inconsistent font/baseline - \dostartattributes\??ly\c!style\c!color\empty - \offinterlineskip - \gettextboxes - \dostopattributes - \egroup - \fi - \getmainbox#1#2}% including footnotes - \ifcase\pageornamentstate - \addmainbackground \pagebox - \fi - \buildpagebox \pagebox - \addstatusinfo \pagebox} +\ifx\page_marks_add_page\undefined \let\page_marks_add_page\gobbleoneargument \fi +\ifx\page_marks_add_more\undefined \let\page_marks_add_more\gobbleoneargument \fi + +% \setvalue{\??ly\c!method\v!normal}#1#2% +% {\setbox\pagebox\vbox +% {\offinterlineskip +% \ifcase\pageornamentstate +% \bgroup % else footnotes get inconsistent font/baseline +% % color/style attributes +% \offinterlineskip +% \gettextboxes +% \egroup +% \fi +% \getmainbox#1#2}% including footnotes +% \ifcase\pageornamentstate +% \addmainbackground \pagebox +% \fi +% \buildpagebox \pagebox +% \addstatusinfo \pagebox} + +\ifx\constructnormalpagecontent\undefined + + \def\constructnormalpagecontent#1#2% + {\setbox\pagebox\vbox + {\offinterlineskip + \gettextboxes + \getmainbox#1#2}% including footnotes + \addmainbackground\pagebox + \buildpagebox\pagebox + \addstatusinfo\pagebox} + +\fi + +\ifx\constructpagecontent\undefined + \let\constructpagecontent\constructnormalpagecontent % will be overloaded +\fi \def\finishpagebox#1% {\ifarrangingpages - \addpagecutmarks #1% - \addpagecolormarks#1% - \centerpagebox #1% - \mirrorprintbox #1% - \orientprintbox #1% - \offsetprintbox #1% - \negateprintbox #1% + \page_marks_add_more#1% + \centerpagebox #1% + \mirrorprintbox #1% + \orientprintbox #1% + \offsetprintbox #1% + \negateprintbox #1% \fi} \appendtoks \restoreouterspacing \to \everybeforepagebody diff --git a/tex/context/base/page-ins.mkii b/tex/context/base/page-ins.mkii index 069153434..ce0f51d72 100644 --- a/tex/context/base/page-ins.mkii +++ b/tex/context/base/page-ins.mkii @@ -5,7 +5,7 @@ %D subtitle=Insertions, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-ins.mkiv b/tex/context/base/page-ins.mkiv index 3e12bfcf0..934ce19ab 100644 --- a/tex/context/base/page-ins.mkiv +++ b/tex/context/base/page-ins.mkiv @@ -5,7 +5,7 @@ %D subtitle=Insertions, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-lay.mkii b/tex/context/base/page-lay.mkii index d40e1ccb7..61ff8764f 100644 --- a/tex/context/base/page-lay.mkii +++ b/tex/context/base/page-lay.mkii @@ -5,7 +5,7 @@ %D subtitle=Layout Specification, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-lay.mkiv b/tex/context/base/page-lay.mkiv index 812f3a3ac..81070a8e9 100644 --- a/tex/context/base/page-lay.mkiv +++ b/tex/context/base/page-lay.mkiv @@ -5,7 +5,7 @@ %D subtitle=Layout Specification, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -25,17 +25,18 @@ \unprotect %D First we get rid of the funny \TEX\ offset defaults of one -%D inch by setting them to zero. +%D inch by setting them to zero (actually this is already done +%D elsewhere but it's good to notice). -\voffset = 0pt % setting this to -1in let's go metapost crazy -\hoffset = 0pt % setting this to -1in let's go metapost crazy +\voffset \zeropoint +\hoffset \zeropoint %D The dimensions related to layout areas are represented by %D real dimensions. \newdimen\paperheight \paperheight = 297mm \newdimen\paperwidth \paperwidth = 210mm -\newdimen\paperoffset \paperoffset = 0mm +\newdimen\paperoffset \paperoffset = \zeropoint \newdimen\printpaperheight \printpaperheight = \paperheight \newdimen\printpaperwidth \printpaperwidth = \paperwidth @@ -48,13 +49,13 @@ \newdimen\topspace \topspace = 2cm \newdimen\backspace \backspace = \topspace -\newdimen\cutspace \cutspace = 0pt -\newdimen\bottomspace \bottomspace = 0pt +\newdimen\cutspace \cutspace = \zeropoint +\newdimen\bottomspace \bottomspace = \zeropoint \newdimen\headerheight \headerheight = 2cm \newdimen\footerheight \footerheight = \headerheight -\newdimen\topoffset \topoffset = 0pt +\newdimen\topoffset \topoffset = \zeropoint \newdimen\backoffset \backoffset = \topoffset \newdimen\leftmarginwidth \leftmarginwidth = 3cm @@ -63,38 +64,13 @@ \newdimen\leftedgewidth \leftedgewidth = 3cm \newdimen\rightedgewidth \rightedgewidth = \leftedgewidth -\newdimen\topheight \topheight = 0cm +\newdimen\topheight \topheight = \zeropoint \newdimen\bottomheight \bottomheight = \topheight -\newcount\layoutlines \layoutlines = 0 -\newcount\layoutcolumns \layoutcolumns = 0 -\newdimen\layoutcolumndistance \layoutcolumndistance = 0pt -\newdimen\layoutcolumnwidth \layoutcolumnwidth = 0pt - -%D We can save some tokens and fuzzy parameters by using a -%D symbolic name for the current set of layout parameters. - -\let\currentlayout\empty - -\def\layoutparameter#1% - {\csname\??ly\ifcsname - \??ly\currentlayout#1\endcsname\currentlayout - \fi#1\endcsname} - -\def\namedlayoutparameter#1#2% - {\csname\??ly\ifcsname\??ly #1#2\endcsname#1\else - \ifcsname\??ly\currentlayout#2\endcsname\currentlayout - \fi\fi#2\endcsname} - -%D Beause normal \TEX\ has at most 256 dimensions (of which a -%D substantial part is already in use), we provide a way to -%D generate a format with macro based alternatives. For a long -%D time, this used to be the default case. Beware: only fixed -%D dimensions can be used in calculations! By the way, the -%D gain in speed can hardly be called impressive and is roughly -%D 1 second on a 35 second run of 850 empty pages with a -%D couple of backgrounds only (which is far less than one -%D percent on a normal document). +\newcount\layoutlines \layoutlines = \zerocount +\newcount\layoutcolumns \layoutcolumns = \zerocount +\newdimen\layoutcolumndistance \layoutcolumndistance = \zeropoint +\newdimen\layoutcolumnwidth \layoutcolumnwidth = \zeropoint %D The next series of dimensions are complemented by left %D and rights ones. @@ -137,6 +113,28 @@ \newdimen\naturalfooterdistance \newdimen\naturalbottomdistance +%D Now we've come to the setup and definition commands. + +\installswitchcommandhandler \??ly {layout} \??ly + +\appendtoks + \letlayoutparameter\c!state\v!start +\to \everydefinelayout + +\appendtoks + \ifx\currentlayout\v!reset + \let\currentlayout\empty + \letlayoutparameter\v!normal % global ? + \fi + \globallet\currentlayout\currentlayout +\to \everysetuplayout + +\appendtoks + \recalculatelayout + \dochecknextlayout + \presetcenterpagebox +\to \everysetuplayout + \def\layoutdistance#1#2{\ifdim\zeropoint<#1#2\else\zeropoint\fi} \def\setlayoutdimensions @@ -153,19 +151,19 @@ \global\naturalfooterdistance \layoutparameter\c!footerdistance \global\naturalbottomdistance \layoutparameter\c!bottomdistance % - \global\marginwidth \naturalmarginwidth - \global\edgewidth \naturaledgewidth - \global\margindistance \naturalmargindistance - \global\edgedistance \naturaledgedistance + \global\marginwidth \naturalmarginwidth + \global\edgewidth \naturaledgewidth + \global\margindistance \naturalmargindistance + \global\edgedistance \naturaledgedistance % - \global\leftedgedistance \layoutdistance\leftedgewidth \naturalleftedgedistance - \global\rightedgedistance \layoutdistance\rightedgewidth \naturalrightedgedistance - \global\leftmargindistance \layoutdistance\leftmarginwidth \naturalleftmargindistance - \global\rightmargindistance \layoutdistance\rightmarginwidth\naturalrightmargindistance - \global\topdistance \layoutdistance\topheight \naturaltopdistance - \global\headerdistance \layoutdistance\headerheight \naturalheaderdistance - \global\footerdistance \layoutdistance\footerheight \naturalfooterdistance - \global\bottomdistance \layoutdistance\bottomheight \naturalbottomdistance + \global\leftedgedistance \layoutdistance\leftedgewidth \naturalleftedgedistance + \global\rightedgedistance \layoutdistance\rightedgewidth \naturalrightedgedistance + \global\leftmargindistance \layoutdistance\leftmarginwidth \naturalleftmargindistance + \global\rightmargindistance \layoutdistance\rightmarginwidth\naturalrightmargindistance + \global\topdistance \layoutdistance\topheight \naturaltopdistance + \global\headerdistance \layoutdistance\headerheight \naturalheaderdistance + \global\footerdistance \layoutdistance\footerheight \naturalfooterdistance + \global\bottomdistance \layoutdistance\bottomheight \naturalbottomdistance } \def\setlayoutdistances % local in \setreducedvsize @@ -189,28 +187,22 @@ \newtoks\extralayoutcalculations \def\calculatelayoutextras{\the\extralayoutcalculations} -% \appendtoks -% non etex calculations used to go here -% \to \extralayoutcalculations - \newtoks\everyswapmargins % watch the order ! \appendtoks - \swapdimens\leftmargindistance\rightmargindistance - \swapdimens\leftedgedistance \rightedgedistance - \swapdimens\leftmarginwidth \rightmarginwidth - \swapdimens\leftedgewidth \rightedgewidth -\to \everyswapmargins - -\appendtoks - \swapmacros\leftmargintotal \rightmargintotal - \swapmacros\leftedgetotal \rightedgetotal - \swapmacros\leftsidetotal \rightsidetotal - \swapmacros\leftcombitotal \rightcombitotal - \swapmacros\innermargintotal\outermargintotal - \swapmacros\inneredgetotal \outeredgetotal - \swapmacros\innercombitotal \outercombitotal - \swapmacros\innersidetotal \outersidetotal + \swapdimens\leftmargindistance\rightmargindistance + \swapdimens\leftedgedistance \rightedgedistance + \swapdimens\leftmarginwidth \rightmarginwidth + \swapdimens\leftedgewidth \rightedgewidth + % + \swapmacros\leftmargintotal \rightmargintotal + \swapmacros\leftedgetotal \rightedgetotal + \swapmacros\leftsidetotal \rightsidetotal + \swapmacros\leftcombitotal \rightcombitotal + \swapmacros\innermargintotal \outermargintotal + \swapmacros\inneredgetotal \outeredgetotal + \swapmacros\innercombitotal \outercombitotal + \swapmacros\innersidetotal \outersidetotal \to \everyswapmargins %D \macros @@ -234,7 +226,7 @@ \doifsomething{#1} % to be sure {\doifassignmentelse{#2} {\getparameters - [\??pp#1] % geen \c!scale, scheelt hash ruimte + [\??pp#1]% geen \c!scale, scheelt hash ruimte [\c!width=\@@ppwidth,\c!height=\@@ppheight,\c!offset=\@@ppoffset,#2]} {\setvalue{\??pp:1:#1}{#2}% \setvalue{\??pp:2:#1}{#3}}}% @@ -246,14 +238,16 @@ %D For the moment we need to fake this macro. \ifx\setuppapersize\undefined - \let\setuppapersize\relax + \let\setuppapersize\relax \fi %D We set the defaults to the dimensions of an A4 sheet of %D paper. \definepapersize - [\c!width=210mm,\c!height=297mm,\c!offset=\zeropoint] + [\c!width=210mm, + \c!height=297mm, + \c!offset=\zeropoint] %D Yet undocumented, let's see if it gets noticed. %D @@ -291,10 +285,12 @@ \newconstant \paperorientation \newconstant \printorientation \newconstant \paperreverse \newconstant \printreverse \newconditional\paperlandscape \newconditional\printlandscape + \newconditional\printnegatecolors + \newconditional\printdoublesided \let\papersize\empty \let\printpapersize\empty -\def\paperscale{1} \newif\ifnegateprintbox +\def\paperscale{1} \unexpanded\def\setuppaper[#1]% {\getparameters[\??pp][\c!paper=,\c!page=,#1]% @@ -316,7 +312,6 @@ {\doifelsenothing{#2} {\expanded{\dodosetuppapersize [\executeifdefined{\??pp:1:#1}{#1}]% -% [\executeifdefined{\??pp:2:#1}{\v!default}]}} [\executeifdefined{\??pp:2:#1}{#1}]}} {\doifassignmentelse{#2} {\getparameters[\??pp\executeifdefined{\??pp:1:#1}{#1}][#2]} @@ -419,14 +414,14 @@ \global\setfalse#5% \global#3\uprotationangle \global#4\uprotationangle - \global\negateprintboxfalse + \global\setfalse\printnegatecolors \processallactionsinset [#1] [ \v!landscape=>\global\settrue#2, \v!mirrored=>\global\settrue#5, \v!rotated=>\global#3\rightrotatioangle \global#4\leftrotatioangle, - \v!negative=>\global\negateprintboxtrue, + \v!negative=>\global\settrue\printnegatecolors, 90=>\global#3\rightrotatioangle \global#4\leftrotatioangle, 180=>\global#3\downrotatioangle @@ -445,15 +440,6 @@ \let\restorepapersize\relax -% \def\docheckforems#1% -% {\beforesplitstring#1\at em\to\asciia -% \doifnot\asciia{#1} -% {\aftersplitstring\asciia\at=\to\asciia -% \doifsomething\asciia{\showmessage\m!system{10}{#1}}}} -% -% \def\checkforems[#1]% -% {\processcommalist[#1]\docheckforems} - \ifx\setups\undefined \unexpanded\def\setups[#1]{\setdefaultpenalties} \fi % \newtoks \everybeforelayout \relax @@ -584,7 +570,9 @@ \def\checklayout {\ifdim\makeupheight=\layoutlines\lineheight \else \recalculatelayout \fi} -\appendtoks \checklayout \to \everystarttext +\appendtoks + \checklayout +\to \everystarttext % document: % @@ -594,7 +582,8 @@ \def\changetolayout#1% {%\writestatus\m!layouts{changing to layout #1}% - \xdef\currentlayout{#1}\recalculatelayout} + \xdef\currentlayout{#1}% + \recalculatelayout} \def\checkcurrentoddlayout {\ifcsname\??ly\v!odd\c!state\endcsname @@ -606,7 +595,9 @@ \doifvalue{\??ly\v!even\c!state}\v!start{\changetolayout\v!even}% \fi} -\ifx\lastpage\undefined \def\lastpage{1} \fi +\ifx\lastpage\undefined + \def\lastpage{1} +\fi \def\reverserealfolio {\ifnum\lastpage>\plusone @@ -632,6 +623,18 @@ \doifoddpageelse\checkcurrentoddlayout\checkcurrentevenlayout \fi\fi\fi} +% inheritance +% +% \definelayout +% [test] +% [width=12cm, +% height=10cm] +% +% \definelayout +% [more] +% [test] +% [height=12cm] +% % testcase % % \setuppagenumbering[alternative=doublesided] @@ -654,7 +657,7 @@ \appendtoks \checkcurrentlayout \to \everystarttext \appendtoks - \dochecknextlayout + \dochecknextlayout \to \everyaftershipout % \def\dochecknextlayout @@ -670,87 +673,83 @@ \def\dochecknextlayout{\checkcurrentlayout} -\newif\ifdoublesidedprint - -\newconditional\page_location_is_set - -\def\page_location_reset - {\setfalse\page_location_is_set - \let\page_location_left_fill \relax - \let\page_location_right_fill \relax - \let\page_location_top_fill \relax - \let\page_location_bottom_fill\relax} - -\page_location_reset - -\setvalue{\??ly:\c!location:\v!right }{\settrue\page_location_is_set - \let\page_location_left_fill \hss} -\setvalue{\??ly:\c!location:\v!left }{\settrue\page_location_is_set - \let\page_location_right_fill \hss} -\setvalue{\??ly:\c!location:\v!bottom }{\settrue\page_location_is_set - \let\page_location_top_fill \vss} -\setvalue{\??ly:\c!location:\v!top }{\settrue\page_location_is_set - \let\page_location_bottom_fill\vss} -\setvalue{\??ly:\c!location:\v!middle }{\settrue\page_location_is_set - \let\page_location_left_fill \hss - \let\page_location_right_fill \hss - \let\page_location_top_fill \vss - \let\page_location_bottom_fill\vss} -\setvalue{\??ly:\c!location:\empty }{\setfalse\page_location_is_set % default also signal to scrn_ - \let\page_location_right_fill \hss - \let\page_location_bottom_fill\hss} -\setvalue{\??ly:\c!location:\v!doublesided}{\doublesidedprinttrue} -\setvalue{\??ly:\c!location:\v!singlesided}{\doublesidedprintfalse} +\newconditional\c_page_layouts_location_is_set + +\def\page_layouts_location_reset + {\setfalse\c_page_layouts_location_is_set + \let\v_page_layouts_location_left_fill \relax + \let\v_page_layouts_location_right_fill \relax + \let\v_page_layouts_location_top_fill \relax + \let\v_page_layouts_location_bottom_fill\relax} + +\page_layouts_location_reset + +\setvalue{\??ly:\c!location:\v!right }{\settrue\c_page_layouts_location_is_set + \let\v_page_layouts_location_left_fill \hss} +\setvalue{\??ly:\c!location:\v!left }{\settrue\c_page_layouts_location_is_set + \let\v_page_layouts_location_right_fill \hss} +\setvalue{\??ly:\c!location:\v!bottom }{\settrue\c_page_layouts_location_is_set + \let\v_page_layouts_location_top_fill \vss} +\setvalue{\??ly:\c!location:\v!top }{\settrue\c_page_layouts_location_is_set + \let\v_page_layouts_location_bottom_fill\vss} +\setvalue{\??ly:\c!location:\v!middle }{\settrue\c_page_layouts_location_is_set + \let\v_page_layouts_location_left_fill \hss + \let\v_page_layouts_location_right_fill \hss + \let\v_page_layouts_location_top_fill \vss + \let\v_page_layouts_location_bottom_fill\vss} +\setvalue{\??ly:\c!location:\empty }{\setfalse\c_page_layouts_location_is_set % default also signal to scrn_ + \let\v_page_layouts_location_right_fill \hss + \let\v_page_layouts_location_bottom_fill\hss} +\setvalue{\??ly:\c!location:\v!doublesided}{\settrue\printdoublesided} +\setvalue{\??ly:\c!location:\v!singlesided}{\setfalse\printdoublesided} \def\dopresetcenterpagebox#1% {\ifcsname\??ly:\c!location:#1\endcsname\csname\??ly:\c!location:#1\endcsname\fi} \def\presetcenterpagebox - {\doublesidedprintfalse - \page_location_reset - \processcommacommand[\@@lylocation]\dopresetcenterpagebox} - -\unexpanded\def\definelayout - {\dodoubleargument\dodefinelayout} - -\def\dodefinelayout[#1][#2]% - {\getparameters[\??ly#1][\c!state=\v!start,#2]} - -\def\dodosetuplayout[#1][#2]% - {\doifnot{#2}\v!reset{\getparameters[\??ly#1][#2]}} - -% global needed for non-doublesided standardmakeup - -\unexpanded\def\setuplayout - {\dodoubleempty\dosetuplayout} + {\setfalse\printdoublesided + \page_layouts_location_reset + \processcommacommand[\layoutparameter\c!location]\dopresetcenterpagebox} -\def\dosetuplayout[#1][#2]% - {\globallet\currentlayout\empty - \ifsecondargument - \dodosetuplayout[#1][#2]% - \else\iffirstargument - \doifassignmentelse{#1} - {\dodosetuplayout[][#1]} - {\doifelse{#1}\v!reset - {\let\@@lymethod\v!normal}% hardcodes, assumes a definition - {\xdef\currentlayout{#1}}}% - \fi\fi - \recalculatelayout - %\checkcurrentlayout % here? - \dochecknextlayout % here? - \presetcenterpagebox} +% installers -\def\installlayouthandler#1#2% +\def\installlayoutmethod#1#2% {\setgvalue{\??ly:\c!method:#1}{#2}} -\installlayouthandler\v!default +\installlayoutmethod\v!default {\checkcurrentlayout} -\installlayouthandler\v!normal +\installlayoutmethod\v!normal {\checkcurrentlayout} \def\dochecknextlayout - {\executeifdefined{\??ly:\c!method:\@@lymethod}\checkcurrentlayout} + {\executeifdefined + {\??ly:\c!method:\layoutparameter\c!method} + {\getvalue{\??ly:\c!method:\v!normal}}} + +\def\installlayoutalternative#1#2% + {\setgvalue{\??ly:\c!alternative:#1}{#2}} + +\def\constructnormalpagecontent#1#2% redefined + {\setbox\pagebox\vbox + {\offinterlineskip + \begingroup + \dosetlayoutattributes\c!style\c!color + \offinterlineskip + \gettextboxes + \endgroup + \getmainbox#1#2}% including footnotes + \addmainbackground\pagebox + \buildpagebox\pagebox + \addstatusinfo\pagebox} + +\installlayoutalternative\v!normal + {\constructnormalpagecontent} + +\def\constructpagecontent % overload + {\executeifdefined + {\??ly:\c!alternative:\layoutparameter\c!alternative}% + {\getvalue{\??ly:\c!alternative:\v!normal}}} \let\@@zaheight\!!zeropoint @@ -851,18 +850,18 @@ \ifdone \setbox#1\vbox to \printpaperheight {\@@pptop - \page_location_top_fill + \v_page_layouts_location_top_fill \hbox to \printpaperwidth - {\ifdoublesidedprint + {\ifconditional\printdoublesided \doifbothsides - {\@@ppleft \page_location_left_fill \box#1\page_location_right_fill\@@ppright}% - {\@@ppleft \page_location_left_fill \box#1\page_location_right_fill\@@ppright}% - {\@@ppright\page_location_right_fill\box#1\page_location_left_fill \@@ppleft }% + {\@@ppleft \v_page_layouts_location_left_fill \box#1\v_page_layouts_location_right_fill\@@ppright}% + {\@@ppleft \v_page_layouts_location_left_fill \box#1\v_page_layouts_location_right_fill\@@ppright}% + {\@@ppright\v_page_layouts_location_right_fill\box#1\v_page_layouts_location_left_fill \@@ppleft }% \else - \@@ppleft \page_location_left_fill \box#1\page_location_right_fill\@@ppright + \@@ppleft \v_page_layouts_location_left_fill \box#1\v_page_layouts_location_right_fill\@@ppright \fi}% \par - \page_location_bottom_fill + \v_page_layouts_location_bottom_fill \@@ppbottom}% \fi} @@ -887,9 +886,9 @@ \fi} \def\replicatepagebox#1% - {\ifnum\@@lynx>\plusone + {\ifnum\layoutparameter\c!nx>\plusone \donetrue - \else\ifnum\@@lyny>\plusone + \else\ifnum\layoutparameter\c!ny>\plusone \donetrue \else \donefalse @@ -897,9 +896,9 @@ \ifdone \setbox#1\vbox {\offinterlineskip - \dorecurse\@@lyny - {\hbox{\dorecurse\@@lynx{\copy#1\hskip\@@lydx}\unskip}% - \vskip\@@lydy} + \dorecurse{\layoutparameter\c!ny} + {\hbox{\dorecurse{\layoutparameter\c!nx}{\copy#1\hskip\layoutparameter\c!dx}\unskip}% + \vskip\layoutparameter\c!dy} \unskip}% \fi} @@ -922,17 +921,21 @@ \def\mirrorprintbox{\mirrorpagebodybox\printmirror} \def\scalepagebox#1% - {\ifdim\@@lyscale\points=\onepoint - \ifdim\@@lysx\points=\onepoint - \ifdim\@@lysy\points=\onepoint + {\edef\tmp_currentlayout_scale{\layoutparameter\c!scale}% + \ifdim\tmp_currentlayout_scale\points=\onepoint + \edef\tmp_currentlayout_sx{\layoutparameter\c!sx}% + \edef\tmp_currentlayout_sy{\layoutparameter\c!sy}% + \ifdim\tmp_currentlayout_sx\points=\onepoint + \ifdim\layoutparameter\c!sy\points=\onepoint + % no scaling done (and no copying either) \else - \doscalepagebox{#1}\@@lysx\@@lysy + \doscalepagebox{#1}\tmp_currentlayout_sx\tmp_currentlayout_sy \fi \else - \doscalepagebox{#1}\@@lysx\@@lysy + \doscalepagebox{#1}\tmp_currentlayout_sx\tmp_currentlayout_sy \fi \else - \doscalepagebox{#1}\@@lyscale\@@lyscale + \doscalepagebox{#1}\tmp_currentlayout_scale\tmp_currentlayout_scale \fi} \def\doscalepagebox#1#2#3% @@ -941,63 +944,10 @@ \paperheight#3\paperheight} \def\negateprintbox#1% - {\ifnegateprintbox + {\ifconditional\printnegatecolors \negatecolorbox{#1}% \fi} -\def\pagecutmarksymbol {\the\realpageno} -\def\pagecutmarklength {.5cm} -\let\pagecutmarktoptext \empty -\let\pagecutmarkbottomtext \empty - -\def\extrapagecutmarkbottomtext - {\rlap{\jobname}\hfill\currentdate\space-\space\currenttime\hfill\llap{\realfolio}} - -\def\makepagecutbox % #1 - {\let\cutmarksymbol \pagecutmarksymbol - \let\cutmarklength \pagecutmarklength - \let\cutmarktoptext \pagecutmarktoptext - \let\cutmarkbottomtext\pagecutmarkbottomtext - \makecutbox} - -\setvalue{\??ly:n:\c!marking:\v!on}% - {\makepagecutbox} - -\setvalue{\??ly:n:\c!marking:\v!page}% only at outer when nx/ny > 0 - {\makepagecutbox} - -\setvalue{\??ly:n:\c!marking:\v!empty}% - {\let\pagecutmarksymbol\empty - \let\pagecutmarktoptext\empty - \let\pagecutmarkbottomtext\empty - \makepagecutbox} - -\setvalue{\??ly:n:\c!marking:\v!text}% - {\let\pagecutmarksymbol\empty - \let\pagecutmarkbottomtext\extrapagecutmarkbottomtext - \makepagecutbox} - -\setvalue{\??ly:c:\c!marking:\v!color}% - {\doaddpagecolormarks\colormarkbox} - -\setvalue{\??ly:c:\c!marking:\v!screen}% - {\doaddpagecolormarks\rastermarkbox} - -\letvalue{\??ly:c:\c!marking:\v!unknown}\gobbleoneargument -\letvalue{\??ly:n:\c!marking:\v!unknown}\gobbleoneargument - -% \def\addpagecutmarks {\executeifdefined{\??ly:n:\c!marking:\@@lymarking}\gobbleoneargument} -% \def\addpagecolormarks{\executeifdefined{\??ly:c:\c!marking:\@@lymarking}\gobbleoneargument} - -\def\addpagecutmarks {\expandcheckedcsname{\??ly:n:\c!marking:}\@@lymarking\s!unknown} -\def\addpagecolormarks{\expandcheckedcsname{\??ly:c:\c!marking:}\@@lymarking\s!unknown} - -\def\doaddpagecolormarks#1#2% - {\makepagecutbox{#2}% - \ifnum\horizontalcutmarks>\plustwo \def\colormarkoffset{\plusfour}\fi - \ifnum\verticalcutmarks >\plustwo \def\colormarkoffset{\plusfour}\fi - #1{#2}} - % NOG EENS NAGAAN WANNEER NU GLOBAL EN WANNEER NIET \ifx\doifelselayoutsomeline\undefined % defined in page-txt @@ -1137,7 +1087,7 @@ % \prependtoks % \freezepagestatechecks % \to \everybeforeshipout - + \def\goleftonpage {\hskip-\dimexpr\leftmargindistance+\leftmarginwidth+\leftedgedistance+\leftedgewidth\relax} @@ -1151,7 +1101,7 @@ {\let\swapmargins \relax % to prevent local swapping \let\doswapmargins\relax % to prevent local swapping \the\everyswapmargins} - + \def\rightorleftpageaction {\ifdoublesided \expandafter\rightorleftpageactionindeed @@ -1259,6 +1209,7 @@ \c!dy=\zeropoint, \c!nx=1, \c!ny=1, + \c!alternative=\v!normal, \c!method=\v!normal] \setuppapersize @@ -1305,6 +1256,7 @@ \c!color=, \c!marking=\v!off, \c!location=,% \v!singlesided, but unset is signal (no other default, spoils arrange) + \c!state=\v!start, \c!scale=1, \c!sx=1, \c!sy=1, @@ -1468,6 +1420,11 @@ \c!height=\dimexpr\paperheight+1.5cm\relax] \definepapersize + [undersized] + [ \c!width=\dimexpr\paperwidth -1.5cm\relax, + \c!height=\dimexpr\paperheight-1.5cm\relax] + +\definepapersize [doublesized] [ \c!width=\dimexpr \paperwidth \relax, \c!height=\dimexpr2\paperheight\relax] @@ -1481,17 +1438,10 @@ % [A4][A4] \setuppapersize - [A4][samesized] + [A4] % [samesized] %D A few goodies: -%D For orthogonality: - -\definepapersize - [undersized] - [ \c!width=\dimexpr\paperwidth -1.5cm\relax, - \c!height=\dimexpr\paperheight-1.5cm\relax] - \definelayout [\v!page] [\c!backspace=\zeropoint, diff --git a/tex/context/base/page-lin.mkii b/tex/context/base/page-lin.mkii index a04804ce6..c6b352ae7 100644 --- a/tex/context/base/page-lin.mkii +++ b/tex/context/base/page-lin.mkii @@ -5,7 +5,7 @@ %D subtitle=Line Numbering, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-lin.mkiv b/tex/context/base/page-lin.mkiv index 4f2226f6e..b5d5e9ca0 100644 --- a/tex/context/base/page-lin.mkiv +++ b/tex/context/base/page-lin.mkiv @@ -5,7 +5,7 @@ %D subtitle=Line Numbering, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-log.mkii b/tex/context/base/page-log.mkii index 18c7991b1..c64c27bce 100644 --- a/tex/context/base/page-log.mkii +++ b/tex/context/base/page-log.mkii @@ -5,7 +5,7 @@ %D subtitle=Logos, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-mak.mkii b/tex/context/base/page-mak.mkii index 2087a6840..3a513137f 100644 --- a/tex/context/base/page-mak.mkii +++ b/tex/context/base/page-mak.mkii @@ -5,7 +5,7 @@ %D subtitle=Simple MakeUp, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-mak.mkiv b/tex/context/base/page-mak.mkiv index ea285bcb8..631934c2f 100644 --- a/tex/context/base/page-mak.mkiv +++ b/tex/context/base/page-mak.mkiv @@ -5,7 +5,7 @@ %D subtitle=Simple MakeUp, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-mar.mkii b/tex/context/base/page-mar.mkii index 96223bafe..d386d8ab9 100644 --- a/tex/context/base/page-mar.mkii +++ b/tex/context/base/page-mar.mkii @@ -5,7 +5,7 @@ %D subtitle=Marginal Things, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-mar.mkiv b/tex/context/base/page-mar.mkiv index 433364a06..97a5e496f 100644 --- a/tex/context/base/page-mar.mkiv +++ b/tex/context/base/page-mar.mkiv @@ -5,7 +5,7 @@ %D subtitle=Marginal Things, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-mis.mkii b/tex/context/base/page-mis.mkii index bd029f896..a61b2435b 100644 --- a/tex/context/base/page-mis.mkii +++ b/tex/context/base/page-mis.mkii @@ -5,7 +5,7 @@ %D subtitle=Misc Float Things, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-mis.mkiv b/tex/context/base/page-mis.mkiv index 02083d181..387b5164c 100644 --- a/tex/context/base/page-mis.mkiv +++ b/tex/context/base/page-mis.mkiv @@ -5,7 +5,7 @@ %D subtitle=Misc Float Things, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-mrk.mkiv b/tex/context/base/page-mrk.mkiv new file mode 100644 index 000000000..9923632ac --- /dev/null +++ b/tex/context/base/page-mrk.mkiv @@ -0,0 +1,259 @@ +%D \module +%D [ file=page-mrk, +%D version=2011.05.23, % moved from page-lay +%D title=\CONTEXT\ Page Macros, +%D subtitle=Cutmarks and Colorbars, +%D author=Hans Hagen, +%D date=\currentdate, +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + +\writestatus{loading}{ConTeXt Page Macros / Cutmarks and Colorbars} + +%D This module depends on \METAPOST. + +\unprotect + +% \def\pagecutmarksymbol {\the\realpageno} +% \let\pagecutmarktoptext \empty +% \let\pagecutmarkbottomtext \empty + +\def\pagecutmarklength {5mm} +\def\pagecutmarkoffset {3mm} % slightly larger than before, and now a fixed size +\def\pagecutmarkmargin{10cm} + +\newconditional\c_page_marks_add_more_color +\newconditional\c_page_marks_add_more_marking +\newconditional\c_page_marks_add_more_lines +\newconditional\c_page_marks_add_page_lines +\newconditional\c_page_marks_add_more_number + +\startuniqueMPgraphic{print:color}{w,h,l,o} + page_marks_add_color(\MPvar w,\MPvar h,\MPvar l,\MPvar o) ; +\stopuniqueMPgraphic + +\startuniqueMPgraphic{print:marking}{w,h,l,o} + page_marks_add_marking(\MPvar w,\MPvar h,\MPvar l,\MPvar o) ; +\stopuniqueMPgraphic + +\startuniqueMPgraphic{print:lines}{w,h,l,o} + page_marks_add_lines(\MPvar w,\MPvar h,\MPvar l,\MPvar o) ; +\stopuniqueMPgraphic + +\startuseMPgraphic{print:number}{w,h,l,o,n} + page_marks_add_number(\MPvar w,\MPvar h,\MPvar l,\MPvar o,\MPvar n) ; +\stopuseMPgraphic + +\def\page_marks_add_color + {\setlayoutcomponentattribute\v!print\v!color + \setbox\scratchbox\hbox \layoutcomponentboxattribute\bgroup + \uniqueMPgraphic + {print:color}% + {w=\the\scratchwidth ,h=\the\scratchheight,% + l=\pagecutmarklength,o=\pagecutmarkoffset}% + \egroup + \wd\scratchbox\scratchwidth\ht\scratchbox\scratchheight\dp\scratchbox\scratchdepth + \hskip-\scratchwidth\box\scratchbox} + +\def\page_marks_add_marking + {\setlayoutcomponentattribute\v!print\v!marking + \setbox\scratchbox\hbox \layoutcomponentboxattribute\bgroup + \uniqueMPgraphic + {print:marking}% + {w=\the\scratchwidth ,h=\the\scratchheight,% + l=\pagecutmarklength,o=\pagecutmarkoffset}% + \egroup + \wd\scratchbox\scratchwidth\ht\scratchbox\scratchheight\dp\scratchbox\scratchdepth + \hskip-\scratchwidth\box\scratchbox} + +\def\page_marks_add_lines + {\setlayoutcomponentattribute\v!print\v!lines + \setbox\scratchbox\hbox \layoutcomponentboxattribute\bgroup + \uniqueMPgraphic + {print:lines}% + {w=\the\scratchwidth ,h=\the\scratchheight,% + l=\pagecutmarklength,o=\pagecutmarkoffset}% + \egroup + \wd\scratchbox\scratchwidth\ht\scratchbox\scratchheight\dp\scratchbox\scratchdepth + \hskip-\scratchwidth\box\scratchbox} + +\def\page_marks_add_number + {\setlayoutcomponentattribute\v!print\v!number + \setbox\scratchbox\hbox \layoutcomponentboxattribute\bgroup + \useMPgraphic + {print:number}% + {w=\the\scratchwidth ,h=\the\scratchheight,% + l=\pagecutmarklength,o=\pagecutmarkoffset,% + n=\realfolio}% + \egroup + \wd\scratchbox\scratchwidth\ht\scratchbox\scratchheight\dp\scratchbox\scratchdepth + \hskip-\scratchwidth\box\scratchbox} + +\def\page_marks_add_page_indeed#1% + {\setbox#1\hbox\bgroup + \let\objectoffset\pagecutmarkmargin + %\infofont + \scratchwidth \wd#1% + \scratchheight\ht#1% + \scratchdepth \dp#1% + \box#1\relax + \ifconditional\c_page_marks_add_page_lines + \page_marks_add_lines + \fi + \egroup} + +\def\page_marks_add_more_indeed#1% + {\setbox#1\hbox\bgroup + \let\objectoffset\pagecutmarkmargin + \infofont + \scratchwidth \wd#1% these can move out + \scratchheight\ht#1% + \scratchdepth \dp#1% + \box#1\relax + \ifconditional\c_page_marks_add_more_color + \page_marks_add_color + \fi + \ifconditional\c_page_marks_add_more_marking + \page_marks_add_marking + \fi + \ifconditional\c_page_marks_add_more_lines + \page_marks_add_lines + \fi + \ifconditional\c_page_marks_add_more_number + \page_marks_add_number + \fi + \egroup} + +\let\page_marks_add_page\gobbleoneargument +\let\page_marks_add_more\gobbleoneargument + +\def\installpagecutmark#1#2% + {\setvalue{\??ly:n:\c!marking:#1}{#2}} + +% \installpagecutmark\v!off +% {} + +% \installpagecutmark\v!text +% {\settrue\c_page_marks_add_more_lines +% \settrue\c_page_marks_add_more_number +% \let\pagecutmarksymbol\empty +% \let\pagecutmarkbottomtext\extrapagecutmarkbottomtext} + +\installpagecutmark\v!on + {\settrue\c_page_marks_add_page_lines + \settrue\c_page_marks_add_more_lines + \settrue\c_page_marks_add_more_number} + +\installpagecutmark\v!page % todo + {\settrue\c_page_marks_add_more_lines + \settrue\c_page_marks_add_more_number} + +\installpagecutmark\v!empty + {\settrue\c_page_marks_add_page_lines + \settrue\c_page_marks_add_more_lines} + +\installpagecutmark\v!color + {\settrue\c_page_marks_add_page_lines + \settrue\c_page_marks_add_more_lines + \settrue\c_page_marks_add_more_color + \settrue\c_page_marks_add_more_marking + \settrue\c_page_marks_add_more_number} + +\appendtoks + \setfalse\c_page_marks_add_more_color + \setfalse\c_page_marks_add_more_marking + \setfalse\c_page_marks_add_more_lines + \setfalse\c_page_marks_add_more_number + \csname\??ly:n:\c!marking:\layoutparameter\c!marking\endcsname + \ifconditional\c_page_marks_add_page_lines + \let\page_marks_add_page\page_marks_add_page_indeed + \else + \let\page_marks_add_page\gobbleoneargument + \fi + \ifconditional\c_page_marks_add_more_lines + \let\page_marks_add_more\page_marks_add_more_indeed + \else\ifconditional\c_page_marks_add_more_color + \let\page_marks_add_more\page_marks_add_more_indeed + \else\ifconditional\c_page_marks_add_more_marking + \let\page_marks_add_more\page_marks_add_more_indeed + \else\ifconditional\c_page_marks_add_more_number + \let\page_marks_add_more\page_marks_add_more_indeed + \else + \let\page_marks_add_more\gobbleoneargument + \fi\fi\fi\fi +\to \everysetuplayout + +\setuplayout + [\c!marking=\v!off] + +\protect \endinput + +% We keep the old code for while. + +% \def\pagecutmarksymbol {\the\realpageno} +% \def\pagecutmarklength {.5cm} +% \let\pagecutmarktoptext \empty +% \let\pagecutmarkbottomtext \empty +% \def\pagecutmarkoffset {.5\dimexpr\pagecutmarklength\relax} +% +% \def\extrapagecutmarkbottomtext +% {\rlap{\jobname}\hfill\currentdate\space-\space\currenttime\hfill\llap{\realfolio}} +% +% \def\makepagecutbox % #1 +% {\let\cutmarksymbol \pagecutmarksymbol +% \let\cutmarklength \pagecutmarklength +% \let\cutmarktoptext \pagecutmarktoptext +% \let\cutmarkbottomtext\pagecutmarkbottomtext +% \let\cutmarkhoffset \pagecutmarkoffset +% \let\cutmarkvoffset \pagecutmarkoffset +% \makecutbox} +% +% \newcount\currentpagebox % will be used in more places +% +% \def\installpagecutmark #1#2{\setvalue{\??ly:n:\c!marking:#1}{#2}} +% \def\installpagecolormark#1#2{\setvalue{\??ly:c:\c!marking:#1}{#2}} +% +% % \def\addpagecolormarks{\expandcheckedcsname{\??ly:c:\c!marking:}{\layoutparameter\c!marking}\s!unknown} +% % \def\addpagecutmarks {\expandcheckedcsname{\??ly:n:\c!marking:}{\layoutparameter\c!marking}\s!unknown} +% +% \def\addpagecutmarks#1% only at outer when nx/ny > 0 +% {\ifcsname\??ly:n:\c!marking:\layoutparameter\c!marking\endcsname +% \currentpagebox#1\relax +% \csname\??ly:n:\c!marking:\layoutparameter\c!marking\endcsname +% \fi} +% +% \def\addpagecolormarks#1% +% {\ifcsname\??ly:c:\c!marking:\layoutparameter\c!marking\endcsname +% \currentpagebox#1\relax +% \ifnum\horizontalcutmarks>\plustwo \def\colormarkoffset{\plusfour}\fi +% \ifnum\verticalcutmarks >\plustwo \def\colormarkoffset{\plusfour}\fi +% \csname\??ly:c:\c!marking:\layoutparameter\c!marking\endcsname +% \fi} +% +% \installpagecutmark\v!on +% {\makepagecutbox\currentpagebox} +% +% \installpagecutmark\v!page +% {\makepagecutbox\currentpagebox} +% +% \installpagecutmark\v!empty +% {\let\pagecutmarksymbol\empty +% \let\pagecutmarktoptext\empty +% \let\pagecutmarkbottomtext\empty +% \makepagecutbox\currentpagebox} +% +% \installpagecutmark\v!text +% {\let\pagecutmarksymbol\empty +% \let\pagecutmarkbottomtext\extrapagecutmarkbottomtext +% \makepagecutbox\currentpagebox} +% +% \installpagecolormark\v!color +% {\makepagecutbox\currentpagebox % maybe move this elsewhere +% \colormarkbox\currentpagebox} +% +% \installpagecolormark\v!screen % obsolete (all \v!screen will be removed) +% {\makepagecutbox\currentpagebox % maybe move this elsewhere +% \rastermarkbox\currentpagebox} diff --git a/tex/context/base/page-mul.mkii b/tex/context/base/page-mul.mkii index 801ae5d65..decf784f0 100644 --- a/tex/context/base/page-mul.mkii +++ b/tex/context/base/page-mul.mkii @@ -5,7 +5,7 @@ %D subtitle=Multi Column Output, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -615,11 +615,11 @@ \postprocesscolumns \dohandleallcolumns % \hbox i.v.m. \showcomposition {\global\setbox\currentcolumnbox\hbox to \localcolumnwidth - {\box\currentcolumnbox - \global\wd\currentcolumnbox\localcolumnwidth - \ifheightencolumns - \global\ht\currentcolumnbox\fixedcolumnheight - \fi}}% + {\box\currentcolumnbox}% + \wd\currentcolumnbox\localcolumnwidth + \ifheightencolumns + \ht\currentcolumnbox\fixedcolumnheight + \fi}% \setmaxcolumndimensions \overlaycolumnfootnotes \setbox\columnpagebox\vbox @@ -1007,7 +1007,7 @@ \vfill \fi}}% \dohandleallcolumns - {\global\ht\currentcolumnbox\dimen0}% + {\ht\currentcolumnbox\dimen0}% redundant \fi \setbox\precolumnbox\vbox{\flushcolumnedpage\zerocount}% \finaloutput\box\precolumnbox diff --git a/tex/context/base/page-mul.mkiv b/tex/context/base/page-mul.mkiv index 581ba5a59..eddd52168 100644 --- a/tex/context/base/page-mul.mkiv +++ b/tex/context/base/page-mul.mkiv @@ -5,7 +5,7 @@ %D subtitle=Multi Column Output, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -609,11 +609,11 @@ \postprocesscolumns \dohandleallcolumns % \hbox i.v.m. \showcomposition {\global\setbox\currentcolumnbox\hbox to \localcolumnwidth - {\box\currentcolumnbox - \global\wd\currentcolumnbox\localcolumnwidth - \ifheightencolumns - \global\ht\currentcolumnbox\fixedcolumnheight - \fi}}% + {\box\currentcolumnbox}% + \wd\currentcolumnbox\localcolumnwidth + \ifheightencolumns + \ht\currentcolumnbox\fixedcolumnheight + \fi}% \setmaxcolumndimensions \overlaycolumnfootnotes \setbox\columnpagebox\vbox @@ -1002,7 +1002,7 @@ \vfill \fi}}% \dohandleallcolumns - {\global\ht\currentcolumnbox\dimen0}% + {\ht\currentcolumnbox\dimen0}% redundant \fi \setbox\precolumnbox\vbox{\flushcolumnedpage\zerocount}% \finaloutput\box\precolumnbox diff --git a/tex/context/base/page-not.mkii b/tex/context/base/page-not.mkii index 9c67f18f1..7bb982430 100644 --- a/tex/context/base/page-not.mkii +++ b/tex/context/base/page-not.mkii @@ -5,7 +5,7 @@ %D subtitle=Footnotes, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-not.mkiv b/tex/context/base/page-not.mkiv index 95229f9d0..8a0298598 100644 --- a/tex/context/base/page-not.mkiv +++ b/tex/context/base/page-not.mkiv @@ -5,7 +5,7 @@ %D subtitle=Footnotes, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-one.mkii b/tex/context/base/page-one.mkii index 1affc24d0..fe4b285cb 100644 --- a/tex/context/base/page-one.mkii +++ b/tex/context/base/page-one.mkii @@ -5,7 +5,7 @@ %D subtitle=Default Routine, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-one.mkiv b/tex/context/base/page-one.mkiv index babaf4f5d..2d639664d 100644 --- a/tex/context/base/page-one.mkiv +++ b/tex/context/base/page-one.mkiv @@ -5,7 +5,7 @@ %D subtitle=Default Routine, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-par.mkii b/tex/context/base/page-par.mkii index a5dea2e63..9b5e0b6eb 100644 --- a/tex/context/base/page-par.mkii +++ b/tex/context/base/page-par.mkii @@ -5,7 +5,7 @@ %D subtitle=Line Numbering, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-par.mkiv b/tex/context/base/page-par.mkiv index c687c424d..e1096fdf8 100644 --- a/tex/context/base/page-par.mkiv +++ b/tex/context/base/page-par.mkiv @@ -5,7 +5,7 @@ %D subtitle=Line Numbering, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-plg.mkii b/tex/context/base/page-plg.mkii index 3203b923c..3c3255f4c 100644 --- a/tex/context/base/page-plg.mkii +++ b/tex/context/base/page-plg.mkii @@ -5,7 +5,7 @@ %D subtitle=Page Setup, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-plg.mkiv b/tex/context/base/page-plg.mkiv index 83c3e77f1..d008dfb1d 100644 --- a/tex/context/base/page-plg.mkiv +++ b/tex/context/base/page-plg.mkiv @@ -5,7 +5,7 @@ %D subtitle=Page Setup, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -110,7 +110,7 @@ \unprotect -\setvalue{\??ly\c!method\v!makeup}#1#2% +\def\constructmakeuppagecontent#1#2% {\setbox\pagebox\hbox {\vbox to \textheight {\offinterlineskip @@ -137,6 +137,9 @@ \ht\pagebox\paperheight \dp\pagebox\zeropoint} +\installlayoutalternative\v!makeup + {\constructmakeuppagecontent} + \newbox\pageareabox \def\pagearea @@ -183,12 +186,11 @@ \box\pageareabox \fi} +% to be done nicely (proper namespacing) + \setvalue{\??ly\c!method:\v!leftpage }{\getvalue{\??ly\c!method:\v!page}} \setvalue{\??ly\c!method:\v!rightpage}{\getvalue{\??ly\c!method:\v!page}} -% \long\unexpanded\def\startpagelayout[#1]#2\stoppagelayout -% {\long\setvalue{\??ly\c!method:#1}{#2}} - \long\unexpanded\def\startpagelayout {\bgroup\catcode\endoflineasciicode\ignorecatcode\dostartpagelayout} diff --git a/tex/context/base/page-run.mkii b/tex/context/base/page-run.mkii index ae5af81e9..b128c192d 100644 --- a/tex/context/base/page-run.mkii +++ b/tex/context/base/page-run.mkii @@ -5,7 +5,7 @@ %D subtitle=Runtime Macros, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-run.mkiv b/tex/context/base/page-run.mkiv index cce746c74..1f8d75a1c 100644 --- a/tex/context/base/page-run.mkiv +++ b/tex/context/base/page-run.mkiv @@ -5,7 +5,7 @@ %D subtitle=Runtime Macros, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-sel.mkiv b/tex/context/base/page-sel.mkiv index 9192d1430..1e706aa22 100644 --- a/tex/context/base/page-sel.mkiv +++ b/tex/context/base/page-sel.mkiv @@ -5,7 +5,7 @@ %D subtitle=Page Selection, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-set.mkii b/tex/context/base/page-set.mkii index e4817066d..3c8c87e5c 100644 --- a/tex/context/base/page-set.mkii +++ b/tex/context/base/page-set.mkii @@ -5,7 +5,7 @@ %D subtitle=Column Sets, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -259,7 +259,7 @@ \dostepwiserecurse{#3}\!!counte\plusone {\OTRSETsetgridcell\!!countf\recurselevel#1}}% \dostepwiserecurse{#3}\!!counte\plusone - {\global\wd\OTRSETgridcell{#2}\recurselevel\hsize}% + {\wd\OTRSETgridcell{#2}\recurselevel\hsize}% \OTRSETsetgridcell{#2}\!!counte#6} \def\OTRSETsetgridcells @@ -1719,7 +1719,7 @@ \chardef\OTRSETbalancemethod\plusone \OTRSETreducegridbox \global\setbox\OTRfinalpagebox\OTRSETmakegridbox - \global\ht\OTRfinalpagebox\textheight % signals output that there is content + \ht\OTRfinalpagebox\textheight % signals output that there is content \OTRSETdofinaloutput \globallet\OTRSETbalht\zeropoint \egroup} @@ -1927,7 +1927,7 @@ % % \installoutput\OTRSETflushpreposttext % {\global\setbox\precolumnbox\vbox{\unvbox\normalpagebox}% -% \global\dp\precolumnbox\strutdepth +% \dp\precolumnbox\strutdepth % \ifcarryoverfootnotes \else % \global\setbox\postcolumnbox\vbox{\placebottomnotes}% % \fi} @@ -1951,7 +1951,7 @@ \global\setbox\precolumnbox\hbox {\lower\strutdepth\box\precolumnbox}% \fi - \global\dp\precolumnbox\strutdepth + \dp\precolumnbox\strutdepth \ifcarryoverfootnotes \else \global\setbox\postcolumnbox\vbox{\placebottomnotes}% \fi} diff --git a/tex/context/base/page-set.mkiv b/tex/context/base/page-set.mkiv index 8c3566bc0..3c0993db4 100644 --- a/tex/context/base/page-set.mkiv +++ b/tex/context/base/page-set.mkiv @@ -5,7 +5,7 @@ %D subtitle=Column Sets, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -237,7 +237,7 @@ \dostepwiserecurse{#3}\!!counte\plusone {\OTRSETsetgridcell\!!countf\recurselevel#1}}% \dostepwiserecurse{#3}\!!counte\plusone - {\global\wd\OTRSETgridcell{#2}\recurselevel\hsize}% + {\wd\OTRSETgridcell{#2}\recurselevel\hsize}% \OTRSETsetgridcell{#2}\!!counte#6} \def\OTRSETsetgridcells @@ -1644,7 +1644,7 @@ \OTRSETbalancemethod\plusone \OTRSETreducegridbox \global\setbox\OTRfinalpagebox\OTRSETmakegridbox - \global\ht\OTRfinalpagebox\textheight % signals output that there is content + \ht\OTRfinalpagebox\textheight % signals output that there is content \OTRSETdofinaloutput \globallet\OTRSETbalht\zeropoint \egroup} @@ -1831,7 +1831,7 @@ \global\setbox\precolumnbox\hbox {\lower\strutdepth\box\precolumnbox}% \fi - \global\dp\precolumnbox\strutdepth + \dp\precolumnbox\strutdepth \ifcarryoverfootnotes \else \global\setbox\postcolumnbox\vbox{\placebottomnotes}% \fi} diff --git a/tex/context/base/page-sid.mkii b/tex/context/base/page-sid.mkii index 806acc6f1..6c3447e1c 100644 --- a/tex/context/base/page-sid.mkii +++ b/tex/context/base/page-sid.mkii @@ -5,7 +5,7 @@ %D subtitle=Side Floats, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -621,8 +621,8 @@ % todo: maybe rounding problem here % \global\setbox\floatbox\hbox{\lower\lineheight\box\floatbox}% \global\setbox\floatbox\hbox{\lower\strutdepth\box\floatbox}% - \global\ht\floatbox\scratchdimen - \global\dp\floatbox\zeropoint + \ht\floatbox\scratchdimen + \dp\floatbox\zeropoint \fi \ifcase\sidefloatalign \else \global\sidefloattopskip\zeropoint diff --git a/tex/context/base/page-sid.mkiv b/tex/context/base/page-sid.mkiv index 9365f7508..7ee7e2fed 100644 --- a/tex/context/base/page-sid.mkiv +++ b/tex/context/base/page-sid.mkiv @@ -5,7 +5,7 @@ %D subtitle=Side Floats, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -491,8 +491,8 @@ % todo: maybe rounding problem here % \global\setbox\floatbox\hbox{\lower\lineheight\box\floatbox}% \global\setbox\floatbox\hbox{\lower\strutdepth\box\floatbox}% - \global\ht\floatbox\scratchdimen - \global\dp\floatbox\zeropoint + \ht\floatbox\scratchdimen + \dp\floatbox\zeropoint \fi \ifcase\sidefloatalign \else \global\sidefloattopskip\zeropoint diff --git a/tex/context/base/page-spr.mkii b/tex/context/base/page-spr.mkii index 06947a36a..65e435d7c 100644 --- a/tex/context/base/page-spr.mkii +++ b/tex/context/base/page-spr.mkii @@ -5,7 +5,7 @@ %D subtitle=Spreading, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-spr.mkiv b/tex/context/base/page-spr.mkiv index fd01e584c..6035f992a 100644 --- a/tex/context/base/page-spr.mkiv +++ b/tex/context/base/page-spr.mkiv @@ -5,7 +5,7 @@ %D subtitle=Spreading, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-str.mkii b/tex/context/base/page-str.mkii index 71d76484e..df0cc5aa2 100644 --- a/tex/context/base/page-str.mkii +++ b/tex/context/base/page-str.mkii @@ -5,7 +5,7 @@ %D subtitle=Page Streams, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-str.mkiv b/tex/context/base/page-str.mkiv index 8cce9945f..1808eed01 100644 --- a/tex/context/base/page-str.mkiv +++ b/tex/context/base/page-str.mkiv @@ -5,7 +5,7 @@ %D subtitle=Page Streams, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-txt.mkii b/tex/context/base/page-txt.mkii index 9fe73bec1..dd643b1b4 100644 --- a/tex/context/base/page-txt.mkii +++ b/tex/context/base/page-txt.mkii @@ -5,7 +5,7 @@ %D subtitle=Texts, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/page-txt.mkiv b/tex/context/base/page-txt.mkiv index dc516a94e..012f1acf0 100644 --- a/tex/context/base/page-txt.mkiv +++ b/tex/context/base/page-txt.mkiv @@ -5,7 +5,7 @@ %D subtitle=Texts, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -409,6 +409,11 @@ % \ignorespaces#1\removeunwantedspaces}} \def\gettextboxes + {\ifcase\pageornamentstate + \dogettextboxes + \fi} + +\def\dogettextboxes {\setbox\scratchpagebox\vbox {\dontcomplain \calculatereducedvsizes diff --git a/tex/context/base/pdfr-ec.mkii b/tex/context/base/pdfr-ec.mkii index b6604984c..e2208aa36 100644 --- a/tex/context/base/pdfr-ec.mkii +++ b/tex/context/base/pdfr-ec.mkii @@ -5,7 +5,7 @@ %D subtitle=EC encoding, %D author={Vladimir Volovich / Taco Hoekwater}, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/pdfr-il2.mkii b/tex/context/base/pdfr-il2.mkii index 70bcb25da..81f9c42ac 100644 --- a/tex/context/base/pdfr-il2.mkii +++ b/tex/context/base/pdfr-il2.mkii @@ -5,7 +5,7 @@ %D subtitle=ISO Latin 2, %D author={Ondrej Koala Vacha, Hans Hagen}, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/ppchtex.mkii b/tex/context/base/ppchtex.mkii index 045e9808b..d1209cd97 100644 --- a/tex/context/base/ppchtex.mkii +++ b/tex/context/base/ppchtex.mkii @@ -5,8 +5,8 @@ %D subtitle=\PPCHTEX\ (Plain Pictex Context cHemie \TEX), %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}, -%D suggestions={Tobias Burnus, Dirk Kuypers \& Ton Otten}] +%D suggestions={Tobias Burnus, Dirk Kuypers \& Ton Otten}. +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/ppchtex.mkiv b/tex/context/base/ppchtex.mkiv index 1162c1fcf..6fbba7666 100644 --- a/tex/context/base/ppchtex.mkiv +++ b/tex/context/base/ppchtex.mkiv @@ -5,8 +5,8 @@ %D subtitle=\PPCHTEX\ (Plain Pictex Context cHemie \TEX), %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}, -%D suggestions={Tobias Burnus, Dirk Kuypers \& Ton Otten}] +%D suggestions={Tobias Burnus, Dirk Kuypers \& Ton Otten}, +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/prop-ini.mkii b/tex/context/base/prop-ini.mkii index 035a40c93..11efd0362 100644 --- a/tex/context/base/prop-ini.mkii +++ b/tex/context/base/prop-ini.mkii @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/prop-ini.mkiv b/tex/context/base/prop-ini.mkiv index 3cb5d2a6f..de259bc59 100644 --- a/tex/context/base/prop-ini.mkiv +++ b/tex/context/base/prop-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/prop-lay.mkii b/tex/context/base/prop-lay.mkii index aeec94bb2..77c48ca6e 100644 --- a/tex/context/base/prop-lay.mkii +++ b/tex/context/base/prop-lay.mkii @@ -5,7 +5,7 @@ %D subtitle=Layers, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/prop-mis.mkii b/tex/context/base/prop-mis.mkii index d8e9ab173..47fb9ea06 100644 --- a/tex/context/base/prop-mis.mkii +++ b/tex/context/base/prop-mis.mkii @@ -5,7 +5,7 @@ %D subtitle=Miscelaneous, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/regi-8859-1.mkii b/tex/context/base/regi-8859-1.mkii index c291b029a..00439ae9e 100644 --- a/tex/context/base/regi-8859-1.mkii +++ b/tex/context/base/regi-8859-1.mkii @@ -5,7 +5,7 @@ %D subtitle=iso-8859-1 (West European), %D author=script-generated, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/regi-8859-10.mkii b/tex/context/base/regi-8859-10.mkii index 79d74d952..664686034 100644 --- a/tex/context/base/regi-8859-10.mkii +++ b/tex/context/base/regi-8859-10.mkii @@ -5,7 +5,7 @@ %D subtitle=iso-8859-10 (Nordic), %D author=script-generated, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/regi-8859-13.mkii b/tex/context/base/regi-8859-13.mkii index a6dbe376f..f1b1dbe78 100644 --- a/tex/context/base/regi-8859-13.mkii +++ b/tex/context/base/regi-8859-13.mkii @@ -5,7 +5,7 @@ %D subtitle=iso-8859-13 (Baltic), %D author=script-generated, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/regi-8859-15.mkii b/tex/context/base/regi-8859-15.mkii index cf788d3f3..1455161c3 100644 --- a/tex/context/base/regi-8859-15.mkii +++ b/tex/context/base/regi-8859-15.mkii @@ -5,7 +5,7 @@ %D subtitle=iso-8859-15 (West European), %D author=script-generated, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/regi-8859-16.mkii b/tex/context/base/regi-8859-16.mkii index 96f0a15d4..f284c4116 100644 --- a/tex/context/base/regi-8859-16.mkii +++ b/tex/context/base/regi-8859-16.mkii @@ -5,7 +5,7 @@ %D subtitle=iso-8859-16 (Romanian), %D author=script-generated, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/regi-8859-2.mkii b/tex/context/base/regi-8859-2.mkii index 81fe8419e..9efc27a79 100644 --- a/tex/context/base/regi-8859-2.mkii +++ b/tex/context/base/regi-8859-2.mkii @@ -5,7 +5,7 @@ %D subtitle=iso-8859-2 (East European), %D author=script-generated, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/regi-8859-3.mkii b/tex/context/base/regi-8859-3.mkii index dcb8be67f..99fa66ac3 100644 --- a/tex/context/base/regi-8859-3.mkii +++ b/tex/context/base/regi-8859-3.mkii @@ -5,7 +5,7 @@ %D subtitle=iso-8859-3 (South European), %D author=script-generated, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/regi-8859-4.mkii b/tex/context/base/regi-8859-4.mkii index 3ebe66a13..c7adf3471 100644 --- a/tex/context/base/regi-8859-4.mkii +++ b/tex/context/base/regi-8859-4.mkii @@ -5,7 +5,7 @@ %D subtitle=iso-8859-4 (North European), %D author=script-generated, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/regi-8859-5.mkii b/tex/context/base/regi-8859-5.mkii index 531226433..807d74640 100644 --- a/tex/context/base/regi-8859-5.mkii +++ b/tex/context/base/regi-8859-5.mkii @@ -5,7 +5,7 @@ %D subtitle=iso-8859-5 (Cyrillic), %D author=script-generated, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/regi-8859-7.mkii b/tex/context/base/regi-8859-7.mkii index 80259be65..1c8197a42 100644 --- a/tex/context/base/regi-8859-7.mkii +++ b/tex/context/base/regi-8859-7.mkii @@ -5,7 +5,7 @@ %D subtitle=iso-8859-7 (Greek), %D author=script-generated, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/regi-8859-9.mkii b/tex/context/base/regi-8859-9.mkii index 8460d739b..60757b2e6 100644 --- a/tex/context/base/regi-8859-9.mkii +++ b/tex/context/base/regi-8859-9.mkii @@ -5,7 +5,7 @@ %D subtitle=iso-8859-9 (Turkish), %D author=script-generated, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/regi-cp1250.mkii b/tex/context/base/regi-cp1250.mkii index b92eb5e31..c13ee53e2 100644 --- a/tex/context/base/regi-cp1250.mkii +++ b/tex/context/base/regi-cp1250.mkii @@ -5,7 +5,7 @@ %D subtitle=cp1250 (East European), %D author=script-generated, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/regi-cp1251.mkii b/tex/context/base/regi-cp1251.mkii index 60f04170b..66576bd16 100644 --- a/tex/context/base/regi-cp1251.mkii +++ b/tex/context/base/regi-cp1251.mkii @@ -5,7 +5,7 @@ %D subtitle=cp1251 (Cyrillic), %D author=script-generated, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/regi-cp1252.mkii b/tex/context/base/regi-cp1252.mkii index 9a54f178f..316d694a6 100644 --- a/tex/context/base/regi-cp1252.mkii +++ b/tex/context/base/regi-cp1252.mkii @@ -5,7 +5,7 @@ %D subtitle=cp1252 (West European), %D author=script-generated, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/regi-cp1253.mkii b/tex/context/base/regi-cp1253.mkii index 24ec45eac..05d53c129 100644 --- a/tex/context/base/regi-cp1253.mkii +++ b/tex/context/base/regi-cp1253.mkii @@ -5,7 +5,7 @@ %D subtitle=cp1253 (Greek), %D author=script-generated, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/regi-cp1254.mkii b/tex/context/base/regi-cp1254.mkii index 4dd509b9d..73f8f2708 100644 --- a/tex/context/base/regi-cp1254.mkii +++ b/tex/context/base/regi-cp1254.mkii @@ -5,7 +5,7 @@ %D subtitle=cp1254 (Turkish), %D author=script-generated, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/regi-cp1257.mkii b/tex/context/base/regi-cp1257.mkii index 0790ef734..4c9cb56f0 100644 --- a/tex/context/base/regi-cp1257.mkii +++ b/tex/context/base/regi-cp1257.mkii @@ -5,7 +5,7 @@ %D subtitle=cp1257 (Windows Baltic), %D author=script-generated, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/regi-cyp.mkii b/tex/context/base/regi-cyp.mkii index 7d134df50..3f45ace23 100644 --- a/tex/context/base/regi-cyp.mkii +++ b/tex/context/base/regi-cyp.mkii @@ -5,7 +5,7 @@ %D subtitle=Cyrillic Plus, %D author=..., %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/regi-cyr.mkii b/tex/context/base/regi-cyr.mkii index 1e84b9cba..1910c0e7c 100644 --- a/tex/context/base/regi-cyr.mkii +++ b/tex/context/base/regi-cyr.mkii @@ -5,7 +5,7 @@ %D subtitle=Cyrillic, %D author=..., %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/regi-def.mkii b/tex/context/base/regi-def.mkii index e26709c77..3af0c9d3c 100644 --- a/tex/context/base/regi-def.mkii +++ b/tex/context/base/regi-def.mkii @@ -5,7 +5,7 @@ %D subtitle=Default Character Definitions, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=Hans Hagen \& Ton Otten] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/regi-ibm.mkii b/tex/context/base/regi-ibm.mkii index 1fad9545a..5756e7705 100644 --- a/tex/context/base/regi-ibm.mkii +++ b/tex/context/base/regi-ibm.mkii @@ -5,7 +5,7 @@ %D subtitle=The Good Old MSDOS IBM codepage, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/regi-ini.mkii b/tex/context/base/regi-ini.mkii index 3cdfe2763..1122ce18a 100644 --- a/tex/context/base/regi-ini.mkii +++ b/tex/context/base/regi-ini.mkii @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/regi-ini.mkiv b/tex/context/base/regi-ini.mkiv index 41f001426..c7fbd3f50 100644 --- a/tex/context/base/regi-ini.mkiv +++ b/tex/context/base/regi-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=Regime Support, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/regi-mac.mkii b/tex/context/base/regi-mac.mkii index b3c281ec0..30f57ab18 100644 --- a/tex/context/base/regi-mac.mkii +++ b/tex/context/base/regi-mac.mkii @@ -5,7 +5,7 @@ %D subtitle=Mac Encoding, %D author={Michel Bovani \& Adam Lindsay \& Hans Hagen}, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/regi-syn.mkii b/tex/context/base/regi-syn.mkii index 7a8a9c146..09fd59dee 100644 --- a/tex/context/base/regi-syn.mkii +++ b/tex/context/base/regi-syn.mkii @@ -5,7 +5,7 @@ %D subtitle=Synonyms, %D author=Mojca Miklavec \& Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/regi-uni.mkii b/tex/context/base/regi-uni.mkii index c4d9521e9..fe2f99a4f 100644 --- a/tex/context/base/regi-uni.mkii +++ b/tex/context/base/regi-uni.mkii @@ -5,7 +5,7 @@ %D subtitle=Unicode, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/regi-utf.mkii b/tex/context/base/regi-utf.mkii index b3423b15a..c6639d806 100644 --- a/tex/context/base/regi-utf.mkii +++ b/tex/context/base/regi-utf.mkii @@ -5,7 +5,7 @@ %D subtitle=UTF-8, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/regi-vis.mkii b/tex/context/base/regi-vis.mkii index d1071354f..1807bdc93 100644 --- a/tex/context/base/regi-vis.mkii +++ b/tex/context/base/regi-vis.mkii @@ -5,7 +5,7 @@ %D subtitle=viscii, %D author=script-generated, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-abr-01.tex b/tex/context/base/s-abr-01.tex index e4927814c..9b857f8ab 100644 --- a/tex/context/base/s-abr-01.tex +++ b/tex/context/base/s-abr-01.tex @@ -5,7 +5,7 @@ %D subtitle=General Abbreviations 1, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-abr-02.tex b/tex/context/base/s-abr-02.tex index 005559ef3..8bb6a2898 100644 --- a/tex/context/base/s-abr-02.tex +++ b/tex/context/base/s-abr-02.tex @@ -5,7 +5,7 @@ %D subtitle=General Abbreviations 2, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-abr-03.tex b/tex/context/base/s-abr-03.tex index 43068b9a5..8247b68a9 100644 --- a/tex/context/base/s-abr-03.tex +++ b/tex/context/base/s-abr-03.tex @@ -5,7 +5,7 @@ %D subtitle=General Abbreviations 3, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-abr-04.tex b/tex/context/base/s-abr-04.tex index 98e76c86f..ab3dc94cd 100644 --- a/tex/context/base/s-abr-04.tex +++ b/tex/context/base/s-abr-04.tex @@ -5,7 +5,7 @@ %D subtitle=General Abbreviations 1, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-cdr-01.tex b/tex/context/base/s-cdr-01.tex index 164d81285..b0bced9da 100644 --- a/tex/context/base/s-cdr-01.tex +++ b/tex/context/base/s-cdr-01.tex @@ -5,7 +5,7 @@ %D subtitle=CDROM Cover, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-chi-00.mkii b/tex/context/base/s-chi-00.mkii index bec86f6d2..fb8d47603 100644 --- a/tex/context/base/s-chi-00.mkii +++ b/tex/context/base/s-chi-00.mkii @@ -6,7 +6,7 @@ %D author=Hans Hagen, %D date=\currentdate, %D suggestions=Wang Lei, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-faq-00.tex b/tex/context/base/s-faq-00.tex index 11859936c..84055491f 100644 --- a/tex/context/base/s-faq-00.tex +++ b/tex/context/base/s-faq-00.tex @@ -5,7 +5,7 @@ %D subtitle=FAQ Common Macros, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-faq-01.tex b/tex/context/base/s-faq-01.tex index 8c116e0f7..f6ee3ce06 100644 --- a/tex/context/base/s-faq-01.tex +++ b/tex/context/base/s-faq-01.tex @@ -5,7 +5,7 @@ %D subtitle=FAQ Interactive Version, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-faq-02.tex b/tex/context/base/s-faq-02.tex index 02287bde4..92aa1eca2 100644 --- a/tex/context/base/s-faq-02.tex +++ b/tex/context/base/s-faq-02.tex @@ -5,7 +5,7 @@ %D subtitle=FAQ Paper Version, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-faq-03.tex b/tex/context/base/s-faq-03.tex index 4f556f713..b1e1ef2c2 100644 --- a/tex/context/base/s-faq-03.tex +++ b/tex/context/base/s-faq-03.tex @@ -5,7 +5,7 @@ %D subtitle=FAQ General Framework, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-fnt-01.mkii b/tex/context/base/s-fnt-01.mkii index 69c8efab9..aedcf913d 100644 --- a/tex/context/base/s-fnt-01.mkii +++ b/tex/context/base/s-fnt-01.mkii @@ -5,7 +5,7 @@ %D subtitle=Font Environment 1, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-fnt-10.mkiv b/tex/context/base/s-fnt-10.mkiv index 07f5d4729..e3c13b621 100644 --- a/tex/context/base/s-fnt-10.mkiv +++ b/tex/context/base/s-fnt-10.mkiv @@ -5,7 +5,7 @@ %D subtitle=Listing Glyphs in Large Fonts, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-fnt-11.mkiv b/tex/context/base/s-fnt-11.mkiv index f2171ecd0..a91e069ea 100644 --- a/tex/context/base/s-fnt-11.mkiv +++ b/tex/context/base/s-fnt-11.mkiv @@ -5,7 +5,7 @@ %D subtitle=Listing Installed Fonts, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-fnt-20.mkiv b/tex/context/base/s-fnt-20.mkiv index a57c0ba47..e4ba08869 100644 --- a/tex/context/base/s-fnt-20.mkiv +++ b/tex/context/base/s-fnt-20.mkiv @@ -5,7 +5,7 @@ %D subtitle=Tracing Feature Application (1), %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-fnt-21.mkiv b/tex/context/base/s-fnt-21.mkiv index dd8de398d..a48854679 100644 --- a/tex/context/base/s-fnt-21.mkiv +++ b/tex/context/base/s-fnt-21.mkiv @@ -5,7 +5,7 @@ %D subtitle=Tracing Feature Application (2), %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-fnt-23.mkiv b/tex/context/base/s-fnt-23.mkiv index 1dc7367a4..e068e97a5 100644 --- a/tex/context/base/s-fnt-23.mkiv +++ b/tex/context/base/s-fnt-23.mkiv @@ -5,7 +5,7 @@ %D subtitle=Tracing Feature Application (3), %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-fnt-24.mkiv b/tex/context/base/s-fnt-24.mkiv index de485557b..2c0022e5c 100644 --- a/tex/context/base/s-fnt-24.mkiv +++ b/tex/context/base/s-fnt-24.mkiv @@ -5,7 +5,7 @@ %D subtitle=CJK Glyph Combination Testing, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-fnt-25.mkiv b/tex/context/base/s-fnt-25.mkiv index 159d8325d..a7a88ff14 100644 --- a/tex/context/base/s-fnt-25.mkiv +++ b/tex/context/base/s-fnt-25.mkiv @@ -5,7 +5,7 @@ %D subtitle=Math Glyph Checking, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-fnt-26.mkiv b/tex/context/base/s-fnt-26.mkiv index 18d1d6573..5edf80a57 100644 --- a/tex/context/base/s-fnt-26.mkiv +++ b/tex/context/base/s-fnt-26.mkiv @@ -5,7 +5,7 @@ %D subtitle=Goodies Tables, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-fnt-28.mkiv b/tex/context/base/s-fnt-28.mkiv index 839c7d4ae..00a7b1437 100644 --- a/tex/context/base/s-fnt-28.mkiv +++ b/tex/context/base/s-fnt-28.mkiv @@ -5,7 +5,7 @@ %D subtitle=Tracing Names, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-fnt-29.mkiv b/tex/context/base/s-fnt-29.mkiv index 0b63635b2..0378550e8 100644 --- a/tex/context/base/s-fnt-29.mkiv +++ b/tex/context/base/s-fnt-29.mkiv @@ -5,7 +5,7 @@ %D subtitle=Tracing Shapes, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-fnt-30.mkiv b/tex/context/base/s-fnt-30.mkiv index c824b2b6c..1de27aed3 100644 --- a/tex/context/base/s-fnt-30.mkiv +++ b/tex/context/base/s-fnt-30.mkiv @@ -5,7 +5,7 @@ %D subtitle=Showing Character Data, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-fnt-31.mkiv b/tex/context/base/s-fnt-31.mkiv index 3cd689d97..88b5358c2 100644 --- a/tex/context/base/s-fnt-31.mkiv +++ b/tex/context/base/s-fnt-31.mkiv @@ -5,7 +5,7 @@ %D subtitle=Comparing Fonts, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-fnt-32.mkiv b/tex/context/base/s-fnt-32.mkiv index ea55e9e74..5ffbb2ac5 100644 --- a/tex/context/base/s-fnt-32.mkiv +++ b/tex/context/base/s-fnt-32.mkiv @@ -5,7 +5,7 @@ %D subtitle=Unicode Math Scripts, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-grk-00.mkii b/tex/context/base/s-grk-00.mkii index ec5ddf1f7..f76d0c220 100644 --- a/tex/context/base/s-grk-00.mkii +++ b/tex/context/base/s-grk-00.mkii @@ -6,7 +6,7 @@ %D author=Hans Hagen, %D date=\currentdate, %D suggestions=Giuseppe Bilotta, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-inf-01.mkvi b/tex/context/base/s-inf-01.mkvi index 4792e739a..40aea4eb7 100644 --- a/tex/context/base/s-inf-01.mkvi +++ b/tex/context/base/s-inf-01.mkvi @@ -5,7 +5,7 @@ %D subtitle=Information 1 (\MKII/\MKIV\ usage), %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-inf-02.mkiv b/tex/context/base/s-inf-02.mkiv index 77a3f650c..cf8d572bc 100644 --- a/tex/context/base/s-inf-02.mkiv +++ b/tex/context/base/s-inf-02.mkiv @@ -5,7 +5,7 @@ %D subtitle=Information 2 (filenames), %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-jap-00.mkii b/tex/context/base/s-jap-00.mkii index 28cb6c241..5eec2f725 100644 --- a/tex/context/base/s-jap-00.mkii +++ b/tex/context/base/s-jap-00.mkii @@ -6,7 +6,7 @@ %D author=Hans Hagen, %D date=\currentdate, %D suggestions=Richard Gabriel, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-lan-03.mkiv b/tex/context/base/s-lan-03.mkiv index b8d24539b..a490261f4 100644 --- a/tex/context/base/s-lan-03.mkiv +++ b/tex/context/base/s-lan-03.mkiv @@ -5,7 +5,7 @@ %D subtitle=Language Environment 3, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-lan-04.mkiv b/tex/context/base/s-lan-04.mkiv index 3fb575299..80283bfd4 100644 --- a/tex/context/base/s-lan-04.mkiv +++ b/tex/context/base/s-lan-04.mkiv @@ -5,7 +5,7 @@ %D subtitle=Language Environment 4, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-mag-01.tex b/tex/context/base/s-mag-01.tex index da4e027f4..8da6d8c02 100644 --- a/tex/context/base/s-mag-01.tex +++ b/tex/context/base/s-mag-01.tex @@ -5,7 +5,7 @@ %D subtitle=\CONTEXT\ Magazine Base Style, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-mod-00.mkii b/tex/context/base/s-mod-00.mkii index e2d07200c..b3457658b 100644 --- a/tex/context/base/s-mod-00.mkii +++ b/tex/context/base/s-mod-00.mkii @@ -5,7 +5,7 @@ %D subtitle=Documentation Base Environment, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-mod-00.mkiv b/tex/context/base/s-mod-00.mkiv index f6b6f7ba2..eadefbe12 100644 --- a/tex/context/base/s-mod-00.mkiv +++ b/tex/context/base/s-mod-00.mkiv @@ -5,7 +5,7 @@ %D subtitle=Documentation Base Environment, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -311,15 +311,15 @@ \definecomplexorsimpleempty\extras \definecomplexorsimpleempty\elements -\def\showelements{\dodoubleempty\doshowelements} +% \def\showelements{\dodoubleempty\doshowelements} -\def\doshowelements[#1][#2] - {\bgroup - \processXMLbuffer - \typebuffer - \setupcolors[\c!state=\v!stop] - \showXSDcomponent[#1][#2] - \egroup} +% \def\doshowelements[#1][#2] +% {\bgroup +% \processXMLbuffer +% \typebuffer +% \setupcolors[\c!state=\v!stop] +% \showXSDcomponent[#1][#2] +% \egroup} % \macros{a,b} % \macros{a,b}{b} diff --git a/tex/context/base/s-mod-01.mkii b/tex/context/base/s-mod-01.mkii index 64b533d03..7e32a5b87 100644 --- a/tex/context/base/s-mod-01.mkii +++ b/tex/context/base/s-mod-01.mkii @@ -5,7 +5,7 @@ %D subtitle=Documentation Paper Environment, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-mod-01.mkiv b/tex/context/base/s-mod-01.mkiv index ed87346d6..fc34d1a11 100644 --- a/tex/context/base/s-mod-01.mkiv +++ b/tex/context/base/s-mod-01.mkiv @@ -5,7 +5,7 @@ %D subtitle=Documentation Paper Environment, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-mod-02.mkii b/tex/context/base/s-mod-02.mkii index bc53f6890..2d095ff9a 100644 --- a/tex/context/base/s-mod-02.mkii +++ b/tex/context/base/s-mod-02.mkii @@ -5,7 +5,7 @@ %D subtitle=Documentation Screen Environment, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-mod-02.mkiv b/tex/context/base/s-mod-02.mkiv index 1ca88b796..fa43c302e 100644 --- a/tex/context/base/s-mod-02.mkiv +++ b/tex/context/base/s-mod-02.mkiv @@ -5,7 +5,7 @@ %D subtitle=Documentation Screen Environment, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-00.tex b/tex/context/base/s-pre-00.tex index 7b22e2fd9..7f217d5bb 100644 --- a/tex/context/base/s-pre-00.tex +++ b/tex/context/base/s-pre-00.tex @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 0, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-01.tex b/tex/context/base/s-pre-01.tex index b86133fa6..89c5642f9 100644 --- a/tex/context/base/s-pre-01.tex +++ b/tex/context/base/s-pre-01.tex @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 1, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-02.tex b/tex/context/base/s-pre-02.tex index 9df1fe383..d7a6fe458 100644 --- a/tex/context/base/s-pre-02.tex +++ b/tex/context/base/s-pre-02.tex @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 2, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-03.tex b/tex/context/base/s-pre-03.tex index bdd7960c5..19a11d24e 100644 --- a/tex/context/base/s-pre-03.tex +++ b/tex/context/base/s-pre-03.tex @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 3, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-04.tex b/tex/context/base/s-pre-04.tex index 09cc79b72..088f4e510 100644 --- a/tex/context/base/s-pre-04.tex +++ b/tex/context/base/s-pre-04.tex @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 4, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-05.tex b/tex/context/base/s-pre-05.tex index 9b3ae89ff..808112787 100644 --- a/tex/context/base/s-pre-05.tex +++ b/tex/context/base/s-pre-05.tex @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 5, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-06.tex b/tex/context/base/s-pre-06.tex index 7a84323e9..21e7236e7 100644 --- a/tex/context/base/s-pre-06.tex +++ b/tex/context/base/s-pre-06.tex @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 6, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-07.tex b/tex/context/base/s-pre-07.tex index bf84971bb..ba62b3236 100644 --- a/tex/context/base/s-pre-07.tex +++ b/tex/context/base/s-pre-07.tex @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 7, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-08.tex b/tex/context/base/s-pre-08.tex index 425310299..b545bef23 100644 --- a/tex/context/base/s-pre-08.tex +++ b/tex/context/base/s-pre-08.tex @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 8, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-09.tex b/tex/context/base/s-pre-09.tex index a829dd6e2..a20b9f31a 100644 --- a/tex/context/base/s-pre-09.tex +++ b/tex/context/base/s-pre-09.tex @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 9, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-10.tex b/tex/context/base/s-pre-10.tex index 67a867ec7..a92e5af01 100644 --- a/tex/context/base/s-pre-10.tex +++ b/tex/context/base/s-pre-10.tex @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 10, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-11.tex b/tex/context/base/s-pre-11.tex index 23bf9e223..551c5ebbc 100644 --- a/tex/context/base/s-pre-11.tex +++ b/tex/context/base/s-pre-11.tex @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 11, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-12.tex b/tex/context/base/s-pre-12.tex index 722d59ced..23418fbba 100644 --- a/tex/context/base/s-pre-12.tex +++ b/tex/context/base/s-pre-12.tex @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 12, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-13.tex b/tex/context/base/s-pre-13.tex index 6032f36d2..7b4daa4b3 100644 --- a/tex/context/base/s-pre-13.tex +++ b/tex/context/base/s-pre-13.tex @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 13, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-14.tex b/tex/context/base/s-pre-14.tex index 93f8cdbc3..4dae6c009 100644 --- a/tex/context/base/s-pre-14.tex +++ b/tex/context/base/s-pre-14.tex @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 14, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-15.tex b/tex/context/base/s-pre-15.tex index c9a157abb..25fb35783 100644 --- a/tex/context/base/s-pre-15.tex +++ b/tex/context/base/s-pre-15.tex @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 15, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-16.tex b/tex/context/base/s-pre-16.tex index 81f21ec60..715936890 100644 --- a/tex/context/base/s-pre-16.tex +++ b/tex/context/base/s-pre-16.tex @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 16, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-17.tex b/tex/context/base/s-pre-17.tex index 798f30cf8..7e8310a53 100644 --- a/tex/context/base/s-pre-17.tex +++ b/tex/context/base/s-pre-17.tex @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 17, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-18.tex b/tex/context/base/s-pre-18.tex index d92117aaf..876eec5f1 100644 --- a/tex/context/base/s-pre-18.tex +++ b/tex/context/base/s-pre-18.tex @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 18, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-19.tex b/tex/context/base/s-pre-19.tex index 3715d6ac1..991d311ce 100644 --- a/tex/context/base/s-pre-19.tex +++ b/tex/context/base/s-pre-19.tex @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 19, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-22.tex b/tex/context/base/s-pre-22.tex index 8930c34be..be50ae195 100644 --- a/tex/context/base/s-pre-22.tex +++ b/tex/context/base/s-pre-22.tex @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 22, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-23.tex b/tex/context/base/s-pre-23.tex index 90ed18353..f9983a89e 100644 --- a/tex/context/base/s-pre-23.tex +++ b/tex/context/base/s-pre-23.tex @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 20, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-26.tex b/tex/context/base/s-pre-26.tex index a99516960..7c1dec5f8 100644 --- a/tex/context/base/s-pre-26.tex +++ b/tex/context/base/s-pre-26.tex @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 26, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-27.tex b/tex/context/base/s-pre-27.tex index eda75e8f4..2e201e8df 100644 --- a/tex/context/base/s-pre-27.tex +++ b/tex/context/base/s-pre-27.tex @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 27, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-30.mkii b/tex/context/base/s-pre-30.mkii index 2a3899c92..a7152deb6 100644 --- a/tex/context/base/s-pre-30.mkii +++ b/tex/context/base/s-pre-30.mkii @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 30, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-30.mkiv b/tex/context/base/s-pre-30.mkiv index c3b524047..c1dbd9b93 100644 --- a/tex/context/base/s-pre-30.mkiv +++ b/tex/context/base/s-pre-30.mkiv @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 30, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-50.tex b/tex/context/base/s-pre-50.tex index 41ae04821..03c612779 100644 --- a/tex/context/base/s-pre-50.tex +++ b/tex/context/base/s-pre-50.tex @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 50, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-60.mkii b/tex/context/base/s-pre-60.mkii index 4df3e8a61..8823c66ce 100644 --- a/tex/context/base/s-pre-60.mkii +++ b/tex/context/base/s-pre-60.mkii @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 60, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-60.mkiv b/tex/context/base/s-pre-60.mkiv index aa5ec36d0..b39a06311 100644 --- a/tex/context/base/s-pre-60.mkiv +++ b/tex/context/base/s-pre-60.mkiv @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 60, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-61.tex b/tex/context/base/s-pre-61.tex index 216bb9a00..477b622c3 100644 --- a/tex/context/base/s-pre-61.tex +++ b/tex/context/base/s-pre-61.tex @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 61, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-62.tex b/tex/context/base/s-pre-62.tex index 8e50af529..d4f2a54f8 100644 --- a/tex/context/base/s-pre-62.tex +++ b/tex/context/base/s-pre-62.tex @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 62, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-63.tex b/tex/context/base/s-pre-63.tex index 1a0fdf607..0535fc1d0 100644 --- a/tex/context/base/s-pre-63.tex +++ b/tex/context/base/s-pre-63.tex @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 63, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-64.tex b/tex/context/base/s-pre-64.tex index 9e82b255c..ef4889bbb 100644 --- a/tex/context/base/s-pre-64.tex +++ b/tex/context/base/s-pre-64.tex @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 64, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-66.tex b/tex/context/base/s-pre-66.tex index e085caeda..3e89e4a7e 100644 --- a/tex/context/base/s-pre-66.tex +++ b/tex/context/base/s-pre-66.tex @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 66, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-68.tex b/tex/context/base/s-pre-68.tex index 616d410eb..3c04a87e1 100644 --- a/tex/context/base/s-pre-68.tex +++ b/tex/context/base/s-pre-68.tex @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 68, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-69.mkiv b/tex/context/base/s-pre-69.mkiv index 9cf6fdfd5..0df68c9e7 100644 --- a/tex/context/base/s-pre-69.mkiv +++ b/tex/context/base/s-pre-69.mkiv @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 69, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-70.mkiv b/tex/context/base/s-pre-70.mkiv index 60462cf7a..9f76fc84a 100644 --- a/tex/context/base/s-pre-70.mkiv +++ b/tex/context/base/s-pre-70.mkiv @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 70, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA / Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-71.mkii b/tex/context/base/s-pre-71.mkii index db65c8e28..343136768 100644 --- a/tex/context/base/s-pre-71.mkii +++ b/tex/context/base/s-pre-71.mkii @@ -7,7 +7,7 @@ %D subtitle=Presentation Environment 71, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-71.mkiv b/tex/context/base/s-pre-71.mkiv index 69280243b..a52718576 100644 --- a/tex/context/base/s-pre-71.mkiv +++ b/tex/context/base/s-pre-71.mkiv @@ -7,7 +7,7 @@ %D subtitle=Presentation Environment 71, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-93.tex b/tex/context/base/s-pre-93.tex index 7eabd5ed1..c36762f38 100644 --- a/tex/context/base/s-pre-93.tex +++ b/tex/context/base/s-pre-93.tex @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 20, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-pre-96.tex b/tex/context/base/s-pre-96.tex index 705e74eec..2ad752007 100644 --- a/tex/context/base/s-pre-96.tex +++ b/tex/context/base/s-pre-96.tex @@ -5,7 +5,7 @@ %D subtitle=Presentation Environment 26, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-ptj-01.tex b/tex/context/base/s-ptj-01.tex index 9990bf006..a14a03ef1 100644 --- a/tex/context/base/s-ptj-01.tex +++ b/tex/context/base/s-ptj-01.tex @@ -6,7 +6,7 @@ %D author=Aditya Mahajan, %D email=adityam at umich dot edu, %D date=\currentdate, -%D copyright=2009 Aditya Mahajan] +%D copyright={Aditya Mahajan}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -72,7 +72,7 @@ %D uses latin modern for sans serif and monotype. For the main face, 12pt is %D used with a 15.5pt baseline skip. Font protrusion is enabled, but font %D expansion is not. We follow these conventions. \CONTEXT\ uses Pagella fonts -%D from \TEX{gyre} project, so we use them instead. +%D from \TEX{gyre} project, so we use them instead. \usetypescript [serif,sans,mono] [hanging] [pure] \setupalign [hanging] @@ -148,7 +148,7 @@ after={\blank[big]}] %D Next we define internal frames to take care of the layout of the extra -%D material in the title. +%D material in the title. \defineframed [pracjourninfotitle] @@ -223,7 +223,7 @@ author={\getvariable{pracjourn}{author}}, subtitle={The PracTeX Journal Article}] \stopsetups - + % If revision number is present, write it to \filename{_rev.tex} % FIXME: Do we need to ensure that the dates and month are two digits? \startrawsetups [pracjourndate] @@ -266,8 +266,8 @@ \definetext [pracjourntitleheader] [header] [\setups{pracjourntitleheader}][] \definetext [pracjourntitlefooter] [footer] [\setups{pracjourntitlefooter}] -\setuphead - [title] +\setuphead + [title] [header=pracjourntitleheader, footer=pracjourntitlefooter] diff --git a/tex/context/base/s-reg-01.mkiv b/tex/context/base/s-reg-01.mkiv index d3e456881..36434c30c 100644 --- a/tex/context/base/s-reg-01.mkiv +++ b/tex/context/base/s-reg-01.mkiv @@ -5,7 +5,7 @@ %D subtitle=Extra Regime Support, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/s-syn-01.tex b/tex/context/base/s-syn-01.tex index d797be61e..01c8f6653 100644 --- a/tex/context/base/s-syn-01.tex +++ b/tex/context/base/s-syn-01.tex @@ -5,7 +5,7 @@ %D subtitle=Preliminary Syntax Stuff, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/scrn-bar.mkvi b/tex/context/base/scrn-bar.mkvi index 4605f1d2e..1bfc6a13c 100644 --- a/tex/context/base/scrn-bar.mkvi +++ b/tex/context/base/scrn-bar.mkvi @@ -5,7 +5,7 @@ %D subtitle=Progress Bars, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/scrn-but.mkvi b/tex/context/base/scrn-but.mkvi index e1dedd605..c8f1ba243 100644 --- a/tex/context/base/scrn-but.mkvi +++ b/tex/context/base/scrn-but.mkvi @@ -5,7 +5,7 @@ %D subtitle=Interaction, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/scrn-fld.mkii b/tex/context/base/scrn-fld.mkii index 4e1b34fa9..993b510ea 100644 --- a/tex/context/base/scrn-fld.mkii +++ b/tex/context/base/scrn-fld.mkii @@ -5,7 +5,7 @@ %D subtitle=Fields, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/scrn-fld.mkvi b/tex/context/base/scrn-fld.mkvi index bf84f15b7..9c51d22b1 100644 --- a/tex/context/base/scrn-fld.mkvi +++ b/tex/context/base/scrn-fld.mkvi @@ -5,7 +5,7 @@ %D subtitle=Fields, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/scrn-hlp.mkii b/tex/context/base/scrn-hlp.mkii index c9fcbd29a..c526f51eb 100644 --- a/tex/context/base/scrn-hlp.mkii +++ b/tex/context/base/scrn-hlp.mkii @@ -5,7 +5,7 @@ %D subtitle=Help (Experimental), %D author={Hans Hagen \& Ton Otten}, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/scrn-hlp.mkvi b/tex/context/base/scrn-hlp.mkvi index d97824300..6e90fc66d 100644 --- a/tex/context/base/scrn-hlp.mkvi +++ b/tex/context/base/scrn-hlp.mkvi @@ -5,7 +5,7 @@ %D subtitle=Help (Experimental), %D author={Hans Hagen \& Ton Otten}, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/scrn-ini.mkvi b/tex/context/base/scrn-ini.mkvi index 860c696c0..5715f69c3 100644 --- a/tex/context/base/scrn-ini.mkvi +++ b/tex/context/base/scrn-ini.mkvi @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/scrn-int.mkii b/tex/context/base/scrn-int.mkii index cf55f864a..1f104c03d 100644 --- a/tex/context/base/scrn-int.mkii +++ b/tex/context/base/scrn-int.mkii @@ -5,7 +5,7 @@ %D subtitle=Interaction, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -1128,7 +1128,7 @@ \dostepwiserecurse\plusone\lastpage\!!counta {\gotorealpage\empty\empty\recurselevel{\copy\scratchbox}}% \hss}% - \global\wd\interactionbarbox\zeropoint + \wd\interactionbarbox\zeropoint \egroup \fi \egroup diff --git a/tex/context/base/scrn-nav.mkii b/tex/context/base/scrn-nav.mkii index 591d4134c..3bb56bace 100644 --- a/tex/context/base/scrn-nav.mkii +++ b/tex/context/base/scrn-nav.mkii @@ -5,7 +5,7 @@ %D subtitle=Navigation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/scrn-pag.mkvi b/tex/context/base/scrn-pag.mkvi index 8e1dbde8e..aae99f304 100644 --- a/tex/context/base/scrn-pag.mkvi +++ b/tex/context/base/scrn-pag.mkvi @@ -5,7 +5,7 @@ %D subtitle=Pages, % moved code %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -138,7 +138,7 @@ \else \global\canvasheight\currentinteractionscreenheight \fi\fi - \ifconditional\page_location_is_set + \ifconditional\c_page_layouts_location_is_set \global\setfalse\scrn_canvas_tight_page \fi \ifconditional\scrn_canvas_tight_page diff --git a/tex/context/base/scrn-ref.mkvi b/tex/context/base/scrn-ref.mkvi index 8c3f4fb4a..a06ba1ad8 100644 --- a/tex/context/base/scrn-ref.mkvi +++ b/tex/context/base/scrn-ref.mkvi @@ -5,7 +5,7 @@ %D subtitle=References, % moved code %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/scrn-wid.lua b/tex/context/base/scrn-wid.lua index 7b1dd940a..90e353306 100644 --- a/tex/context/base/scrn-wid.lua +++ b/tex/context/base/scrn-wid.lua @@ -28,6 +28,10 @@ local nodeinjections = backends.nodeinjections local variables = interfaces.variables local v_auto = variables.auto +local trace_attachments = false trackers.register("widgets.attachments", function(v) trace_attachments = v end) + +local report_attachments = logs.reporter("widgets","attachments") + -- Symbols function commands.presetsymbollist(list) @@ -66,10 +70,13 @@ local function checkbuffer(specification) end end -function attachments.register(specification) - checkregistered(specification) +function attachments.register(specification) -- beware of tag/registered mixup(tag is namespace) + local registered = checkregistered(specification) checkbuffer(specification) - attachments[lastregistered] = specification + attachments[registered] = specification + if trace_attachments then + report_attachments("registering '%s'",registered) + end return specification end @@ -77,12 +84,17 @@ function attachments.insert(specification) local registered = checkregistered(specification) local r = attachments[registered] if r then + if trace_attachments then + report_attachments("including registered '%s'",registered) + end for k, v in next, r do local s = specification[k] if s == "" then specification[k] = v end end + elseif trace_attachments then + report_attachments("including unregistered '%s'",registered) end checkbuffer(specification) return nodeinjections.attachfile(specification) diff --git a/tex/context/base/scrn-wid.mkvi b/tex/context/base/scrn-wid.mkvi index 72f5255bb..8bf60e61a 100644 --- a/tex/context/base/scrn-wid.mkvi +++ b/tex/context/base/scrn-wid.mkvi @@ -5,7 +5,7 @@ %D subtitle=Widgets, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -96,15 +96,18 @@ \def\currentattachment{_}% \setupattachment[_][#settings,\s!parent=\??at]% \ctxcommand{registerattachment{ - tag = "#tag", - title = "\attachmentparameter\c!title", - subtitle = "\attachmentparameter\c!subtitle", - author = "\attachmentparameter\c!author", - file = "\attachmentparameter\c!file", - name = "\attachmentparameter\c!name", - buffer = "\attachmentparameter\c!buffer", + tag = "#tag", + registered = "#tag", + title = "\attachmentparameter\c!title", + subtitle = "\attachmentparameter\c!subtitle", + author = "\attachmentparameter\c!author", + file = "\attachmentparameter\c!file", + name = "\attachmentparameter\c!name", + buffer = "\attachmentparameter\c!buffer", }}% \endgroup + \else + % todo \fi} \appendtoks diff --git a/tex/context/base/scrp-ini.mkiv b/tex/context/base/scrp-ini.mkiv index 0e50452ff..d0ee8770d 100644 --- a/tex/context/base/scrp-ini.mkiv +++ b/tex/context/base/scrp-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA / Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/sort-def.mkii b/tex/context/base/sort-def.mkii index 10dc31b14..168f94e9e 100644 --- a/tex/context/base/sort-def.mkii +++ b/tex/context/base/sort-def.mkii @@ -5,7 +5,7 @@ %D subtitle=Defaults, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/sort-ini.mkii b/tex/context/base/sort-ini.mkii index f1ed1c316..8114f82c8 100644 --- a/tex/context/base/sort-ini.mkii +++ b/tex/context/base/sort-ini.mkii @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/sort-ini.mkiv b/tex/context/base/sort-ini.mkiv index a4dc2f6ba..b7b490255 100644 --- a/tex/context/base/sort-ini.mkiv +++ b/tex/context/base/sort-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/sort-lan.mkii b/tex/context/base/sort-lan.mkii index db52c63fb..c23962371 100644 --- a/tex/context/base/sort-lan.mkii +++ b/tex/context/base/sort-lan.mkii @@ -5,7 +5,7 @@ %D subtitle=Language Definitions, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/spac-ali.mkiv b/tex/context/base/spac-ali.mkiv index 0cf22f470..dacb3a314 100644 --- a/tex/context/base/spac-ali.mkiv +++ b/tex/context/base/spac-ali.mkiv @@ -5,7 +5,7 @@ %D subtitle=Alignments, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -172,10 +172,10 @@ \setvalue{\@@ragged@@command\v!nothanging }{\appendtoks\disableprotruding \to\everyraggedcommand} \setvalue{\@@ragged@@command\v!hz }{\appendtoks\enableadjusting \to\everyraggedcommand} \setvalue{\@@ragged@@command\v!nohz }{\appendtoks\disableadjusting \to\everyraggedcommand} -\setvalue{\@@ragged@@command\v!spacing }{\appendtoks\enablespacehandling - \enablekernhandling \to\everyraggedcommand} -\setvalue{\@@ragged@@command\v!nospacing }{\appendtoks\disablespacehandling - \disablekernhandling \to\everyraggedcommand} +% \setvalue{\@@ragged@@command\v!spacing }{\appendtoks\enablespacehandling +% \enablekernhandling \to\everyraggedcommand} +% \setvalue{\@@ragged@@command\v!nospacing }{\appendtoks\disablespacehandling +% \disablekernhandling \to\everyraggedcommand} \setvalue{\@@ragged@@command\v!hyphenated }{\appendtoks\dohyphens \to\everyraggedcommand} \setvalue{\@@ragged@@command\v!nothyphenated}{\appendtoks\nohyphens \to\everyraggedcommand} diff --git a/tex/context/base/spac-chr.lua b/tex/context/base/spac-chr.lua new file mode 100644 index 000000000..601b90645 --- /dev/null +++ b/tex/context/base/spac-chr.lua @@ -0,0 +1,157 @@ +if not modules then modules = { } end modules ['spac-chr'] = { + version = 1.001, + comment = "companion to spac-chr.mkiv", + author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", + copyright = "PRAGMA ADE / ConTeXt Development Team", + license = "see context related readme files" +} + +local byte = string.byte + +----- trace_characters = false trackers.register("typesetters.characters", function(v) trace_characters = v end) +----- +----- report_characters = logs.reporter("typesetting","characters") + +local nodes, node = nodes, node + +local set_attribute = node.set_attribute +local insert_node_after = node.insert_after +local remove_node = nodes.remove -- ! nodes + +local nodepool = nodes.pool +local tasks = nodes.tasks + +local new_penalty = nodepool.penalty +local new_glue = nodepool.glue + +local nodecodes = nodes.nodecodes +local glyph_code = nodecodes.glyph + +local typesetters = typesetters + +local characters = { } +typesetters.characters = characters + +local fontparameters = fonts.hashes.parameters +local fontcharacters = fonts.hashes.characters + +local a_character = attributes.private("characters") + +local c_zero = byte('0') +local c_period = byte('.') + +local function inject_quad_space(unicode,head,current,fraction) + local attr = current.attr + if fraction ~= 0 then + fraction = fraction * fontparameters[current.font].quad + end + head, current = insert_node_after(head,current,new_glue(fraction)) + current.attr = attr + set_attribute(current,a_character,unicode) + return head, current +end + +local function inject_char_space(unicode,head,current,parent) + local attr = current.attr + local char = fontcharacters[current.font][parent] + head, current = insert_node_after(head,current,new_glue(char and char.width or fontparameters[current.font].space)) + current.attr = attr + set_attribute(current,a_character,unicode) + return head, current +end + +local function inject_nobreak_space(unicode,head,current,space,spacestretch,spaceshrink) + local attr = current.attr + head, current = insert_node_after(head,current,new_glue(space,spacestretch,spaceshrink)) + current.attr = attr + set_attribute(current,a_character,unicode) + head, current = insert_node_after(head,current,new_penalty(10000)) + return head, current +end + +local methods = { + + [0x00A0] = function(head,current) -- nobreakspace + local para = fontparameters[current.font] + return inject_nobreak_space(0x00A0,head,current,para.space,para.spacestretch,para.spaceshrink) + end, + + [0x2000] = function(head,current) -- enquad + return inject_quad_space(0x2000,head,current,1/2) + end, + + [0x2001] = function(head,current) -- emquad + return inject_quad_space(0x2001,head,current,1) + end, + + [0x2002] = function(head,current) -- enspace + return inject_quad_space(0x2002,head,current,1/2) + end, + + [0x2003] = function(head,current) -- emspace + return inject_quad_space(0x2003,head,current,1) + end, + + [0x2004] = function(head,current) -- threeperemspace + return inject_quad_space(0x2004,head,current,1/3) + end, + + [0x2005] = function(head,current) -- fourperemspace + return inject_quad_space(0x2005,head,current,1/4) + end, + + [0x2006] = function(head,current) -- sixperemspace + return inject_quad_space(0x2006,head,current,1/6) + end, + + [0x2007] = function(head,current) -- figurespace + return inject_char_space(0x2007,head,current,c_zero) + end, + + [0x2008] = function(head,current) -- punctuationspace + return inject_char_space(0x2008,head,current,c_period) + end, + + [0x2009] = function(head,current) -- breakablethinspace + return inject_quad_space(0x2009,head,current,1/8) -- same as next + end, + + [0x200A] = function(head,current) -- hairspace + return inject_quad_space(0x200A,head,current,1/8) -- same as previous (todo) + end, + + [0x200B] = function(head,current) -- zerowidthspace + return inject_quad_space(0x200B,head,current,0) + end, + + [0x202F] = function(head,current) -- narrownobreakspace + return inject_nobreak_space(0x202F,head,current,fontparameters[current.font].space/8) + end, + + [0x205F] = function(head,current) -- math thinspace + return inject_nobreak_space(0x205F,head,current,fontparameters[current.font].space/8) + end, + + -- [0xFEFF] = function(head,current) -- zerowidthnobreakspace + -- return head, current + -- end, + +} + +function characters.handler(head) + local current = head + local done = false + while current do + local next = current.next + if current.id == glyph_code then + local method = methods[current.char] + if method then + head = method(head,current) + head = remove_node(head,current,true) + done = true + end + end + current = next + end + return head, done +end diff --git a/tex/context/base/spac-chr.mkiv b/tex/context/base/spac-chr.mkiv new file mode 100644 index 000000000..fb1203b3e --- /dev/null +++ b/tex/context/base/spac-chr.mkiv @@ -0,0 +1,51 @@ +%D \module +%D [ file=spac-chr, +%D version=2011.05.24, % code moved from core-spa.mkiv +%D title=\CONTEXT\ Spacing Macros, +%D subtitle=Characters, +%D author=Hans Hagen, +%D date=\currentdate, +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + +\writestatus{loading}{ConTeXt Spacing Macros / Characters} + +\unprotect + +\registerctxluafile{spac-chr}{1.001} + +\definesystemattribute[characters][public] + +\edef\nobreakspace {\utfchar{"00A0}} + +\edef\ideographicspace {\utfchar{"2000}} +\edef\ideographichalffillspace{\utfchar{"2001}} +\edef\twoperemspace {\utfchar{"2002}} +\edef\threeperemspace {\utfchar{"2004}} +\edef\fourperemspace {\utfchar{"2005}} +\edef\sixperemspace {\utfchar{"2006}} +\edef\figurespace {\utfchar{"2007}} +\edef\punctuationspace {\utfchar{"2008}} +\edef\breakablethinspace {\utfchar{"2009}} +\edef\hairspace {\utfchar{"200A}} +\edef\zerowidthspace {\utfchar{"200B}} + +\edef\narrownobreakspace {\utfchar{"202F}} + +%edef\zerowidthnobreakspace {\utfchar{"FEFF}} + +\unexpanded\def\zerowidthnobreakspace{\penalty\plustenthousand\kern\zeropoint} + +% Shortcuts: + +\let~\nobreakspace + +% Goodies: + +\unexpanded\def\fiveperemspace{\hskip\dimexpr\emwidth/5\relax} + +\protect \endinput + diff --git a/tex/context/base/spac-def.mkiv b/tex/context/base/spac-def.mkiv index 3aa85dda5..9c9bdf687 100644 --- a/tex/context/base/spac-def.mkiv +++ b/tex/context/base/spac-def.mkiv @@ -5,7 +5,7 @@ %D subtitle=Definitions, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/spac-fnt.mkiv b/tex/context/base/spac-fnt.mkiv index c268d7893..35e9b6dd5 100644 --- a/tex/context/base/spac-fnt.mkiv +++ b/tex/context/base/spac-fnt.mkiv @@ -5,7 +5,7 @@ %D subtitle=Fonts, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/spac-gen.mkii b/tex/context/base/spac-gen.mkii index 4e7b3810c..91e379250 100644 --- a/tex/context/base/spac-gen.mkii +++ b/tex/context/base/spac-gen.mkii @@ -5,7 +5,7 @@ %D subtitle=Spacing, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/spac-grd.mkii b/tex/context/base/spac-grd.mkii index 249e2e430..97699de51 100644 --- a/tex/context/base/spac-grd.mkii +++ b/tex/context/base/spac-grd.mkii @@ -5,7 +5,7 @@ %D subtitle=Grid Snapping (Experimental), %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/spac-grd.mkiv b/tex/context/base/spac-grd.mkiv index 8701f4d7e..6cd1c37b1 100644 --- a/tex/context/base/spac-grd.mkiv +++ b/tex/context/base/spac-grd.mkiv @@ -5,7 +5,7 @@ %D subtitle=Grid Snapping, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/spac-hor.mkiv b/tex/context/base/spac-hor.mkiv index 39edaa2ff..9afb0039b 100644 --- a/tex/context/base/spac-hor.mkiv +++ b/tex/context/base/spac-hor.mkiv @@ -5,7 +5,7 @@ %D subtitle=Horizontal, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -816,23 +816,20 @@ % needed for unicode: -\unexpanded\def\breakablethinspace {\breakabletextormathspace+\thinmuskip 1} - -\unexpanded\def\twoperemspace {\hskip\dimexpr\emwidth/2\relax} % == \enspace -\unexpanded\def\threeperemspace {\hskip\dimexpr\emwidth/3\relax} -\unexpanded\def\fourperemspace {\hskip\dimexpr\emwidth/4\relax} -\unexpanded\def\fiveperemspace {\hskip\dimexpr\emwidth/5\relax} % goodie -\unexpanded\def\sixperemspace {\hskip\dimexpr\emwidth/6\relax} -\unexpanded\def\figurespace {\begingroup\setbox\scratchbox\hbox{0}\hskip\wd\scratchbox\endgroup} % there is a command for this -\unexpanded\def\punctuationspace {\begingroup\setbox\scratchbox\hbox{.}\hskip\wd\scratchbox\endgroup} -\unexpanded\def\ideographicspace {\hskip\dimexpr\emwidth/1\relax} -\unexpanded\def\ideographichalffillspace{\hskip\dimexpr\emwidth/2\relax} -%unexpanded\def\nobreakspace {\penalty\plustenthousand\space} -\unexpanded\def\nobreakspace {\penalty\plustenthousand\kern\interwordspace} -\unexpanded\def\narrownobreakspace {\penalty\plustenthousand\thinspace} -%unexpanded\def\zerowidthnobreakspace {\penalty\plustenthousand\hskip\zeropoint} -\unexpanded\def\zerowidthnobreakspace {\penalty\plustenthousand\kern\zeropoint} -\unexpanded\def\zerowidthspace {\hskip\zeropoint} +%unexpanded\def\breakablethinspace {\breakabletextormathspace+\thinmuskip1} +%unexpanded\def\twoperemspace {\hskip\dimexpr\emwidth/2\relax} % == \enspace +%unexpanded\def\threeperemspace {\hskip\dimexpr\emwidth/3\relax} +%unexpanded\def\fourperemspace {\hskip\dimexpr\emwidth/4\relax} +%unexpanded\def\fiveperemspace {\hskip\dimexpr\emwidth/5\relax} % goodie +%unexpanded\def\sixperemspace {\hskip\dimexpr\emwidth/6\relax} +%unexpanded\def\figurespace {\begingroup\setbox\scratchbox\hbox{0}\hskip\wd\scratchbox\endgroup} % there is a command for this +%unexpanded\def\punctuationspace {\begingroup\setbox\scratchbox\hbox{.}\hskip\wd\scratchbox\endgroup} +%unexpanded\def\ideographicspace {\hskip\dimexpr\emwidth/1\relax} +%unexpanded\def\ideographichalffillspace{\hskip\dimexpr\emwidth/2\relax} +%unexpanded\def\nobreakspace {\penalty\plustenthousand\kern\interwordspace} +%unexpanded\def\narrownobreakspace {\penalty\plustenthousand\thinspace} +%unexpanded\def\zerowidthnobreakspace {\penalty\plustenthousand\kern\zeropoint} +%unexpanded\def\zerowidthspace {\hskip\zeropoint} \definehspace[.5][.1250\emspaceamount] % could also be [.1250\spaceamount] \definehspace[1] [.1667\emspaceamount] diff --git a/tex/context/base/spac-pag.mkiv b/tex/context/base/spac-pag.mkiv index 9babab29a..c3ed49fe8 100644 --- a/tex/context/base/spac-pag.mkiv +++ b/tex/context/base/spac-pag.mkiv @@ -5,7 +5,7 @@ %D subtitle=Pages, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/spac-par.mkiv b/tex/context/base/spac-par.mkiv index 222f4fd2c..433ea85c8 100644 --- a/tex/context/base/spac-par.mkiv +++ b/tex/context/base/spac-par.mkiv @@ -5,7 +5,7 @@ %D subtitle=Paragraphs, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/spac-ver.mkiv b/tex/context/base/spac-ver.mkiv index 897e9c9d7..9f3af04ac 100644 --- a/tex/context/base/spac-ver.mkiv +++ b/tex/context/base/spac-ver.mkiv @@ -5,7 +5,7 @@ %D subtitle=Vertical, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/spec-def.mkii b/tex/context/base/spec-def.mkii index ad1a9bb1d..60051579d 100644 --- a/tex/context/base/spec-def.mkii +++ b/tex/context/base/spec-def.mkii @@ -5,7 +5,7 @@ %D subtitle=Definitions, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/spec-dpm.mkii b/tex/context/base/spec-dpm.mkii index ddbb6caf8..fe721405a 100644 --- a/tex/context/base/spec-dpm.mkii +++ b/tex/context/base/spec-dpm.mkii @@ -5,7 +5,7 @@ %D subtitle=DVIPDFM support, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/spec-dvi.mkii b/tex/context/base/spec-dvi.mkii index 522890851..89a1330a2 100644 --- a/tex/context/base/spec-dvi.mkii +++ b/tex/context/base/spec-dvi.mkii @@ -5,7 +5,7 @@ %D subtitle=Generic \TEX\ Solutions, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/spec-fdf.mkii b/tex/context/base/spec-fdf.mkii index 30e15ff34..ebda30fd4 100644 --- a/tex/context/base/spec-fdf.mkii +++ b/tex/context/base/spec-fdf.mkii @@ -5,7 +5,7 @@ %D subtitle=Support Macros, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/spec-ini.mkii b/tex/context/base/spec-ini.mkii index 0229a0e3d..9361ed222 100644 --- a/tex/context/base/spec-ini.mkii +++ b/tex/context/base/spec-ini.mkii @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/spec-mis.mkii b/tex/context/base/spec-mis.mkii index d56eca27e..de0debd3c 100644 --- a/tex/context/base/spec-mis.mkii +++ b/tex/context/base/spec-mis.mkii @@ -5,7 +5,7 @@ %D subtitle=Miscellaneous Macros, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/spec-pdf.mkii b/tex/context/base/spec-pdf.mkii index 222c4e3a6..33722f603 100644 --- a/tex/context/base/spec-pdf.mkii +++ b/tex/context/base/spec-pdf.mkii @@ -5,7 +5,7 @@ %D subtitle=Adobe \ACROBAT\ version 2.1, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/spec-ps.mkii b/tex/context/base/spec-ps.mkii index 803defe02..02ec16453 100644 --- a/tex/context/base/spec-ps.mkii +++ b/tex/context/base/spec-ps.mkii @@ -5,7 +5,7 @@ %D subtitle=Adobe PostScript, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/spec-tpd.mkii b/tex/context/base/spec-tpd.mkii index 6af3b1272..042d5cdfe 100644 --- a/tex/context/base/spec-tpd.mkii +++ b/tex/context/base/spec-tpd.mkii @@ -5,7 +5,7 @@ %D subtitle=\PDFTEX, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/spec-tr.mkii b/tex/context/base/spec-tr.mkii index c1f997bca..19ddb7495 100644 --- a/tex/context/base/spec-tr.mkii +++ b/tex/context/base/spec-tr.mkii @@ -5,7 +5,7 @@ %D subtitle=Thomas Rokicki's \DVIPS, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/spec-tst.mkii b/tex/context/base/spec-tst.mkii index 628a0dbbf..4f580e7b4 100644 --- a/tex/context/base/spec-tst.mkii +++ b/tex/context/base/spec-tst.mkii @@ -5,7 +5,7 @@ %D subtitle=Special Test Macro, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/spec-var.mkii b/tex/context/base/spec-var.mkii index 8d561dc6f..3641ba959 100644 --- a/tex/context/base/spec-var.mkii +++ b/tex/context/base/spec-var.mkii @@ -5,7 +5,7 @@ %D subtitle=Variables, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/spec-win.mkii b/tex/context/base/spec-win.mkii index 55ceec691..e16984a56 100644 --- a/tex/context/base/spec-win.mkii +++ b/tex/context/base/spec-win.mkii @@ -5,7 +5,7 @@ %D subtitle=\YandY's \DVIWINDO, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/spec-yy.mkii b/tex/context/base/spec-yy.mkii index beec95493..b5a1d590b 100644 --- a/tex/context/base/spec-yy.mkii +++ b/tex/context/base/spec-yy.mkii @@ -5,7 +5,7 @@ %D subtitle=\YandY's \DVIPSONE\ and \DVIWINDO, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf Binary files differindex dbec9b2f0..40ef6bdfe 100644 --- a/tex/context/base/status-files.pdf +++ b/tex/context/base/status-files.pdf diff --git a/tex/context/base/status-lua.pdf b/tex/context/base/status-lua.pdf Binary files differindex f867291bf..fcfec5d36 100644 --- a/tex/context/base/status-lua.pdf +++ b/tex/context/base/status-lua.pdf diff --git a/tex/context/base/strc-bkm.mkiv b/tex/context/base/strc-bkm.mkiv index b7a5bc805..f5f0bcf59 100644 --- a/tex/context/base/strc-bkm.mkiv +++ b/tex/context/base/strc-bkm.mkiv @@ -5,7 +5,7 @@ %D subtitle=Bookmarks, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/strc-blk.mkii b/tex/context/base/strc-blk.mkii index c4e38a607..b6056769c 100644 --- a/tex/context/base/strc-blk.mkii +++ b/tex/context/base/strc-blk.mkii @@ -5,7 +5,7 @@ %D subtitle=Blockmoves, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/strc-blk.mkiv b/tex/context/base/strc-blk.mkiv index f625fa448..c3fe0eb0b 100644 --- a/tex/context/base/strc-blk.mkiv +++ b/tex/context/base/strc-blk.mkiv @@ -5,7 +5,7 @@ %D subtitle=Blockmoves, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE / Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/strc-def.mkiv b/tex/context/base/strc-def.mkiv index e386902e0..e60e4f60a 100644 --- a/tex/context/base/strc-def.mkiv +++ b/tex/context/base/strc-def.mkiv @@ -4,7 +4,7 @@ %D subtitle=Definitions, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE / Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -16,39 +16,7 @@ \unprotect -% \def\installparameterhandler#1#2#3#4#5#6#7#8#9{% -% \def#3##1{\csname#5{#1#2}##1\endcsname}% -% \def#4##1{#6{#1#2}##1}% -% % -% \def#5##1##2{\ifcsname##1##2\endcsname##1##2\else\expandafter#7\csname##1\s!parent\endcsname##2\fi}% -% \def#6##1##2{\ifcsname##1##2\endcsname ##1\else\expandafter#8\csname##1\s!parent\endcsname##2\fi}% -% % -% \def#7##1##2{\ifx##1\relax\s!empty\else#5##1##2\fi}% -% \def#8##1##2{\ifx##1\relax \else#6##1##2\fi}% -% % -% \def#9##1##2% style color -% {\edef\fontattributehash {#4##1}% -% \edef\colorattributehash{#4##2}% -% \ifx\fontattributehash \empty\else\dosetfontattribute \fontattributehash ##1\fi -% \ifx\colorattributehash\empty\else\dosetcolorattribute\colorattributehash##2\fi}% -% % -% } - -% \installparameterhandler -% \empty -% \@@framed -% \framedparameter -% \framedparameterhash -% \doframedparameter -% \doframedparameterhash -% \doframedparentparameter -% \doframedparentparameterhash -% \dosetframedattributes - - -% \setupheads - -\setupstructureheads[% +\setupheads[% %\c!after=, %\c!align=, %\c!aligntitle=, @@ -71,14 +39,14 @@ \c!incrementnumber=\v!yes, \c!indentnext=\v!no, %\c!label=, - \c!limittext=\v!yes, + %\c!limittext=\languageparameter\c!limittext, \c!margin=\zeropoint, %\c!margintext=, \c!number=\v!yes, - \c!numbercolor=\structureheadparameter\c!color, - \c!textcolor=\structureheadparameter\c!color, - \c!numberstyle=\structureheadparameter\c!style, - \c!textstyle=\structureheadparameter\c!style, + \c!numbercolor=\headparameter\c!color, + \c!textcolor=\headparameter\c!color, + \c!numberstyle=\headparameter\c!style, + \c!textstyle=\headparameter\c!style, %\c!numbercommand=, %\c!textcommand=, \c!ownnumber=\v!no, @@ -98,8 +66,8 @@ %\c!tolerance= ] -% \setupstructureblock[appendix][sectionconversionset=appendix] -% \setupstructurehead[chapter][sectionconversionset=\structureblockparameter\c!sectionconversionset] % \structureblockparameter] +% \setupsectionblock[appendix][sectionconversionset=appendix] +% \setuphead[chapter][sectionconversionset=\sectionblockparameter\c!sectionconversionset] % \sectionblockparameter] % \definestructureresetset[default][0,1,1,0][1] % this will not reset parts and subsections % \setuphead[part][sectionresetset=default] @@ -135,124 +103,124 @@ % \definesectionblock -\definestructureblock [\v!frontpart] [\v!frontmatter] [\c!number=\v!no] -\definestructureblock [\v!bodypart] [\v!bodymatter] [\c!number=\v!yes] -\definestructureblock [\v!appendix] [\v!appendices] [\c!number=\v!yes] -\definestructureblock [\v!backpart] [\v!backmatter] [\c!number=\v!no] +\definesectionblock [\v!frontpart] [\v!frontmatter] [\c!number=\v!no] +\definesectionblock [\v!bodypart] [\v!bodymatter] [\c!number=\v!yes] +\definesectionblock [\v!appendix] [\v!appendices] [\c!number=\v!yes] +\definesectionblock [\v!backpart] [\v!backmatter] [\c!number=\v!no] -\setstructureblock [\v!bodypart] % default +\setsectionblock [\v!bodypart] % default \appendtoks - \setstructureblock [\v!bodypart]% default + \setsectionblock [\v!bodypart]% default \to \everyjob % \definesection -\definestructuresection[\s!section-1] % part -\definestructuresection[\s!section-2] % chapter -\definestructuresection[\s!section-3] % section -\definestructuresection[\s!section-4] % subsection -\definestructuresection[\s!section-5] % subsubsection -\definestructuresection[\s!section-6] % subsubsubsection -\definestructuresection[\s!section-7] % subsubsubsubsection +\definesection[\s!section-1] % part +\definesection[\s!section-2] % chapter +\definesection[\s!section-3] % section +\definesection[\s!section-4] % subsection +\definesection[\s!section-5] % subsubsection +\definesection[\s!section-6] % subsubsubsection +\definesection[\s!section-7] % subsubsubsubsection % \definehead -\definestructurehead +\definehead [\v!part] [\c!section=\s!section-1] -\definestructurehead +\definehead [\v!chapter] [\c!section=\s!section-2] -\definestructurehead +\definehead [\v!section] [\c!section=\s!section-3] -\definestructurehead +\definehead [\v!subsection] [\c!section=\s!section-4, \c!default=\v!section] -\definestructurehead +\definehead [\v!subsubsection] [\c!section=\s!section-5, \c!default=\v!subsection] -\definestructurehead +\definehead [\v!subsubsubsection] [\c!section=\s!section-6, \c!default=\v!subsubsection] -\definestructurehead +\definehead [\v!subsubsubsubsection] [\c!section=\s!section-7, \c!default=\v!subsubsubsection] -\definestructurehead +\definehead [\v!title] [\c!coupling=\v!chapter, \c!default=\v!chapter, \c!incrementnumber=\v!no] -\definestructurehead +\definehead [\v!subject] [\c!coupling=\v!section, \c!default=\v!section, \c!incrementnumber=\v!no] -\definestructurehead +\definehead [\v!subsubject] [\c!coupling=\v!subsection, \c!default=\v!subsection, \c!incrementnumber=\v!no] -\definestructurehead +\definehead [\v!subsubsubject] [\c!coupling=\v!subsubsection, \c!default=\v!subsubsection, \c!incrementnumber=\v!no] -\definestructurehead +\definehead [\v!subsubsubsubject] [\c!coupling=\v!subsubsubsection, \c!default=\v!subsubsubsection, \c!incrementnumber=\v!no] -\definestructurehead +\definehead [\v!subsubsubsubsubject] [\c!coupling=\v!subsubsubsubsection, \c!default=\v!subsubsubsubsection, \c!incrementnumber=\v!no] -\setupstructurehead +\setuphead [\v!part] [\c!placehead=\v!no] -\setupstructurehead +\setuphead [\v!chapter] [\v!appendix\c!label=\v!appendix, \v!bodypart\c!label=\v!chapter] % bijlageconversie=\Character -\setupstructurehead +\setuphead [\v!section] [\v!appendix\c!label=\v!section, \v!bodypart\c!label=\v!section] % bijlageconversie=\Character -\setupstructurehead +\setuphead [\v!subsection] [\v!appendix\c!label=\v!subsection, \v!bodypart\c!label=\v!subsection] % bijlageconversie=\Character -\setupstructurehead +\setuphead [\v!subsubsection] [\v!appendix\c!label=\v!subsubsection, \v!bodypart\c!label=\v!subsubsection] % bijlageconversie=\Character % \setuphead -\setupstructurehead +\setuphead [\v!part,\v!chapter] [%\c!align=, %\c!indentnext=\v!no, @@ -265,7 +233,7 @@ \c!before={\blank[2*\v!big]}, \c!after={\blank[2*\v!big]}] -\setupstructurehead +\setuphead [\v!section] [%\c!align=, %\c!indentnext=\v!no, @@ -274,7 +242,7 @@ \c!before={\blank[2*\v!big]}, \c!after=\blank] -\setupstructurehead % nieuw +\setuphead % nieuw [\v!subsection] [\c!page=] diff --git a/tex/context/base/strc-des.mkii b/tex/context/base/strc-des.mkii index 0c34e9ef9..587ef13e7 100644 --- a/tex/context/base/strc-des.mkii +++ b/tex/context/base/strc-des.mkii @@ -5,7 +5,7 @@ %D subtitle=Descriptions, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/strc-des.mkiv b/tex/context/base/strc-des.mkiv index 54eba1eaa..f081e884a 100644 --- a/tex/context/base/strc-des.mkiv +++ b/tex/context/base/strc-des.mkiv @@ -5,7 +5,7 @@ %D subtitle=Descriptions, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE / Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -866,7 +866,7 @@ order = \nextinternalorderreference, reference = "\currentdescriptionreference", referenceprefix = "\referenceprefix", - block = "\currentstructureblock", + block = "\currentsectionblock", section = structures.sections.currentid(), }, titledata = { diff --git a/tex/context/base/strc-doc.mkiv b/tex/context/base/strc-doc.mkiv index 683d65d2f..eaba066e2 100644 --- a/tex/context/base/strc-doc.mkiv +++ b/tex/context/base/strc-doc.mkiv @@ -5,7 +5,7 @@ %D subtitle=Document Structure, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE / Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -119,7 +119,7 @@ structures.sections.somelevel { references = { internal = \nextinternalreference, - block = "\currentstructureblock", + block = "\currentsectionblock", reference = "\currentstructurereference", referenceprefix = "\currentstructurereferenceprefix", backreference = "\currentstructurebackreference", @@ -162,7 +162,7 @@ }, numberdata = { % needed ? - block = "\currentstructureblock", + block = "\currentsectionblock", hidenumber = \ifx\currentstructureshownumber\v!no true\else nil\fi, % titles % so far separatorset = "\structureparameter\c!sectionseparatorset", diff --git a/tex/context/base/strc-flt.mkii b/tex/context/base/strc-flt.mkii index 3d07cdc20..f028089e3 100644 --- a/tex/context/base/strc-flt.mkii +++ b/tex/context/base/strc-flt.mkii @@ -5,7 +5,7 @@ %D subtitle=Floating Bodies, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/strc-flt.mkiv b/tex/context/base/strc-flt.mkiv index 32024a276..9d0b5b0d7 100644 --- a/tex/context/base/strc-flt.mkiv +++ b/tex/context/base/strc-flt.mkiv @@ -5,7 +5,7 @@ %D subtitle=Float Numbering, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE / Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -302,15 +302,6 @@ \installstructurelistprocessor{float}{\usestructurelistprocessor{number+title}} -% \def\thecurrentfloatnumber -% {\ifnofloatcaption \else \ifnofloatnumber \else -% \ifx\currentfloatnumber\relax\else -% \dostarttagged\t!floattag\empty -% \labeltexts\currentfloat{\ctxlua{structures.lists.savedprefixednumber("\currentfloat",\currentfloatnumber)}}% -% \dostoptagged -% \fi -% \fi \fi} - \unexpanded\def\thecurrentfloatnumbersuffix {\doifsomething{\floatcaptionparameter\c!suffix} {\floatcaptionparameter\c!suffixseparator @@ -319,11 +310,23 @@ \def\thecurrentfloatnumber {\ifnofloatcaption \else \ifnofloatnumber \else \ifx\currentfloatnumber\relax\else - \dostarttagged\t!floattag\empty - \labeltexts\currentfloat - {\ctxlua{structures.lists.savedprefixednumber("\currentfloat",\currentfloatnumber)}% - \thecurrentfloatnumbersuffix}% - \dostoptagged +% \dostarttagged\t!floatlabel\empty +% \labeltexts\currentfloat +% {\dostoptagged +% \dostarttagged\t!floatnumber\empty +% \ctxlua{structures.lists.savedprefixednumber("\currentfloat",\currentfloatnumber)}% +% \thecurrentfloatnumbersuffix +% \dostoptagged +% \dostarttagged\t!floatlabel\empty}% +% \dostoptagged +% \taggedlabeltexts\currentfloat\currentfloat +% {\ctxlua{structures.lists.savedprefixednumber("\currentfloat",\currentfloatnumber)}% +% \thecurrentfloatnumbersuffix}% + \namedtaggedlabeltexts + \t!floatlabel \currentfloat + \t!floatnumber\currentfloat + {\ctxlua{structures.lists.savedprefixednumber("\currentfloat",\currentfloatnumber)}% + \thecurrentfloatnumbersuffix}% \fi \fi \fi} diff --git a/tex/context/base/strc-ini.mkiv b/tex/context/base/strc-ini.mkiv index b1b11d871..5a78d301d 100644 --- a/tex/context/base/strc-ini.mkiv +++ b/tex/context/base/strc-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=Initialization \& Helpers, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE / Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -22,7 +22,7 @@ % section : [sectionnumber(s)] % sectionseparatorset (default) sectionconversionset (default) sectionstopper () sectionset sectionsegments -% lists : [sectionnumber(s)] [text] [prefix(es)[separator]][pagenumber(s)] +% lists : [sectionnumber(s)] [text] [prefix(es)[separator][pagenumber(s)] % sectionseparatorset (default) sectionconversionset (default) sectionstopper sectionset sectionsegments % prefixseparatorset (default) prefixconversionset (default) prefixstopper (.) prefixset prefixsegments % pageseparatorset (default) pageconversionset (default) pagestopper () pagesegments diff --git a/tex/context/base/strc-itm.mkii b/tex/context/base/strc-itm.mkii index 1de63c7c3..697618323 100644 --- a/tex/context/base/strc-itm.mkii +++ b/tex/context/base/strc-itm.mkii @@ -5,7 +5,7 @@ %D subtitle=itemgroups, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/strc-itm.mkiv b/tex/context/base/strc-itm.mkiv index 67f42f866..d582dafae 100644 --- a/tex/context/base/strc-itm.mkiv +++ b/tex/context/base/strc-itm.mkiv @@ -5,7 +5,7 @@ %D subtitle=Itemgroups, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE / Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/strc-lev.mkiv b/tex/context/base/strc-lev.mkiv index 4c4605bcd..7d0543ecc 100644 --- a/tex/context/base/strc-lev.mkiv +++ b/tex/context/base/strc-lev.mkiv @@ -5,7 +5,7 @@ %D subtitle=Automatic Levels, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE / Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -30,20 +30,20 @@ \unexpanded\def\dostartstructurelevel [#1]{\ctxlua{structures.sections.startautolevel("#1")}} \unexpanded\def\stopstructurelevel {\ctxlua{structures.sections.stopautolevel()}} -\unexpanded\def\nostartstructurehead{\dotripleargument\nonostartstructurehead} -\unexpanded\def\nostopstructurehead {\dosingleargument\nonostopstructurehead } +\unexpanded\def\nostarthead{\dotripleargument\nonostarthead} +\unexpanded\def\nostophead {\dosingleargument\nonostophead } \unexpanded\def\dostartstructurelevel[#1]% {\doifassignmentelse{#1} {\ctxlua{structures.sections.startautolevel("\v!default")}[#1]} {\ctxlua{structures.sections.startautolevel("#1")}}} -\unexpanded\def\nonostartstructurehead[#1][#2][#3]% +\unexpanded\def\nonostarthead[#1][#2][#3]% {\blank \noindentation{\tttf[start missing structure level #1]} \blank} -\unexpanded\def\nonostopstructurehead[#1]% +\unexpanded\def\nonostophead[#1]% {\blank \noindentation{\tttf[stop missing structure level #1]} \blank} diff --git a/tex/context/base/strc-lnt.mkii b/tex/context/base/strc-lnt.mkii index ef09842cd..3c878a8d2 100644 --- a/tex/context/base/strc-lnt.mkii +++ b/tex/context/base/strc-lnt.mkii @@ -5,7 +5,7 @@ %D subtitle=Line Notes, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/strc-lnt.mkiv b/tex/context/base/strc-lnt.mkiv index 442a9378f..c6224106c 100644 --- a/tex/context/base/strc-lnt.mkiv +++ b/tex/context/base/strc-lnt.mkiv @@ -5,7 +5,7 @@ %D subtitle=Line Notes, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/strc-lst.mkii b/tex/context/base/strc-lst.mkii index 527966354..ffb1a4dbd 100644 --- a/tex/context/base/strc-lst.mkii +++ b/tex/context/base/strc-lst.mkii @@ -5,7 +5,7 @@ %D subtitle=Lists, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/strc-lst.mkiv b/tex/context/base/strc-lst.mkiv index c2be8338a..149b1a734 100644 --- a/tex/context/base/strc-lst.mkiv +++ b/tex/context/base/strc-lst.mkiv @@ -5,7 +5,7 @@ %D subtitle=Lists, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE / Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -15,56 +15,163 @@ \registerctxluafile{strc-lst}{1.001} -\unprotect - -\def\currentstructurelistnumber{0} - % nmstate -> no pagenumber if not start % autocrossdocument -> todo % expansion -> todo % auto refs to lists (chain) -> todo (\dododowritetolist) % todo: \normalexpanded{\noexpand\everylistentry\emptytoks\the\everylistentry}% \emptytoks, else loop -% interface to lua +\unprotect -% we have to deal with compatible processing, i.e. list elements that have two -% elements plus a pagenumber +% \def\currentlist {\s!unknown} +% +% \def\listparameter #1{\csname\dolistparameter{\??li\currentlist}#1\endcsname} +% \def\namedlistparameter#1#2{\csname\dolistparameter{\??li #1}#2\endcsname} +% \def\listparameterhash #1{\dolistparameterhash {\??li\currentlist}#1} +% +% \def\dolistparameter #1#2{\ifcsname#1#2\endcsname#1#2\else\expandafter\dolistparentparameter \csname#1\s!parent\endcsname#2\fi} +% \def\dolistparameterhash#1#2{\ifcsname#1#2\endcsname #1\else\expandafter\dolistparentparameterhash\csname#1\s!parent\endcsname#2\fi} +% +% \def\dolistparentparameter #1#2{\ifx#1\relax\s!empty\else\dolistparameter #1#2\fi} +% \def\dolistparentparameterhash#1#2{\ifx#1\relax \else\dolistparameterhash#1#2\fi} +% +% \def\setlistparameter#1#2#3{\@EA\def\csname\??li#1#2\endcsname{#3}} % often +% +% \def\dosetlistattributes#1#2% style color +% {\edef\fontattributehash {\listparameterhash#1}% +% \edef\colorattributehash{\listparameterhash#2}% +% \ifx\fontattributehash \empty\else\dosetfontattribute \fontattributehash #1\fi +% \ifx\colorattributehash\empty\else\dosetcolorattribute\colorattributehash#2\fi} +% +% \def\donestedlistattributes#1#2% +% {\dosetlistattributes#1#2% +% \ifx\colorattributehash\empty \else +% \resetinteractionparameter\c!color +% \resetinteractionparameter\c!contrastcolor +% \fi} +% +% \def\checklistexistence#1% +% {\ifcsname\??li#1\s!parent\endcsname \else +% \letvalue{\??li#1\s!parent}\??li +% \fi} +% +% \def\dosetuplist[#1][#2]% slow -) +% {\checklistexistence{#1}% +% \def\docommand##1{\getparameters[\??li##1][#2]}% +% \processcommalist[#1]\docommand} +% +% \unexpanded\def\setuplist +% {\dodoubleargument\dosetuplist} +% +% \unexpanded\def\definelist +% {\dotripleempty\dodefinelist} +% +% \def\dodefinelist[#1][#2][#3]% +% {\presetlocalframed[\??li#1]% still inefficient (will change when we redu core-rul) +% \doifassignmentelse{#2} +% {\getparameters[\??li#1][\s!parent=\??li,#2]} +% {\doifelsenothing{#2} +% {\getparameters[\??li#1][\s!parent=\??li]} +% {\getparameters[\??li#1][\s!parent=\??li#2,#3]}}} +% +% \unexpanded\def\setuplists % new, but not for users (hardly handy) +% {\dodoubleargument\getparameters[\??li]} -\let\listentry\gobblesixarguments +\installcommandhandler \??li {list} \??li -\def\currentlist {\s!unknown} -\def\currentlistmethod{entry} -\def\currentlistindex {0} +\def\donestedlistattributes#1#2% will change + {\dosetlistattributes#1#2% + \ifx\colorattributehash\empty \else + \resetinteractionparameter\c!color + \resetinteractionparameter\c!contrastcolor + \fi} -\def\setlistparameter#1#2#3{\@EA\def\csname\??li#1#2\endcsname{#3}} % often -%def\listparameter #1{\ifcsname\??li\currentlist#1\endcsname\csname\??li\currentlist#1\endcsname\fi} +% \appendtoks +% \ifx\currentlist\empty\else +% \ifcsname\??li\currentlist\s!parent\endcsname \else +% \letvalue{\??li\currentlist\s!parent}\??li % Is this still needed? Could be built in. +% \fi +% \fi +% \to \everysetuplist -% interface +\let\setuplists\setuplist % yes or no -\def\listparameter #1{\csname\dolistparameter{\??li\currentlist}#1\endcsname} -\def\namedlistparameter#1#2{\csname\dolistparameter{\??li #1}#2\endcsname} -\def\listparameterhash #1{\dolistparameterhash {\??li\currentlist}#1} +\def\doifelselist#1% can also move to \installcommandhandler + {\ifcsname\??li#1\s!parent\endcsname + \expandafter\firstoftwoarguments + \else + \expandafter\secondoftwoarguments + \fi} + +\setuplist + [\c!height=\v!broad, + \c!depth=\v!broad, + \c!offset=0.25em, + \c!maxwidth=, + \c!state=\v!start, + \c!coupling=\v!off, + \c!criterium=\v!local, + \c!number=0, + \c!width=3em, + \c!alternative=\c!b, + \c!style=\v!normal, + \c!textstyle=\listparameter\c!style, + \c!numberstyle=\listparameter\c!style, + \c!pagestyle=\listparameter\c!style, + %\c!color=, + \c!textcolor=\listparameter\c!color, + \c!numbercolor=\listparameter\c!color, + \c!pagecolor=\listparameter\c!color, + \c!numbercommand=\listnumbercommand, + \c!textcommand=\listtextcommand, + \c!pagecommand=\listpagecommand, + \c!pagenumber=\v!yes, + \c!headnumber=\v!yes, + \c!extras=, + \c!margin=\!!zeropoint, + \c!aligntitle=, + \c!before=, + \c!after=, + \c!inbetween=, + \c!symbol=, + \c!interaction=\v!sectionnumber, + \c!label=\v!no, + \c!distance=\!!zeropoint, + %\c!sectionseparatorset=, + %\c!sectionconversionset=, + %\c!sectionstarter=, + %\c!sectionstopper=, + %\c!sectionset=, + %\c!sectionsegments=, + %\c!prefix=\v!no, + %\c!prefixseparatorset=, + %\c!prefixconversionset=, + %\c!prefixstarter=., + %\c!prefixstopper=., + %\c!prefixset=, + %\c!prefixsegments=, + %\c!pageseparatorset=, + %\c!pageconversionset=, + %\c!pagestarter=, + %\c!pagestopper=, + %\c!expansion=, + %\c!prefixconnector=., % maybe inherit from setupheads + %\c!pageprefix=\v!no, % is unset, inherits + %\c!pageprefixconnector=\listparameter\c!prefixconnector, + %\c!pagesegments=2:2, + \c!limittext=\languageparameter\c!limittext] % not used currently -\def\dolistparameter #1#2{\ifcsname#1#2\endcsname#1#2\else\expandafter\dolistparentparameter \csname#1\s!parent\endcsname#2\fi} -\def\dolistparameterhash#1#2{\ifcsname#1#2\endcsname #1\else\expandafter\dolistparentparameterhash\csname#1\s!parent\endcsname#2\fi} +% Whatever: -\def\dolistparentparameter #1#2{\ifx#1\relax\s!empty\else\dolistparameter #1#2\fi} -\def\dolistparentparameterhash#1#2{\ifx#1\relax \else\dolistparameterhash#1#2\fi} +\def\currentstructurelistnumber{0} -\def\dosetlistattributes#1#2% style color - {\edef\fontattributehash {\listparameterhash#1}% - \edef\colorattributehash{\listparameterhash#2}% - \ifx\fontattributehash \empty\else\dosetfontattribute \fontattributehash #1\fi - \ifx\colorattributehash\empty\else\dosetcolorattribute\colorattributehash#2\fi} +% we have to deal with compatible processing, i.e. list elements that have two +% elements plus a pagenumber -\def\donestedlistattributes#1#2% - {\dosetlistattributes#1#2% - \ifx\colorattributehash\empty \else - \resetinteractionparameter\c!color - \resetinteractionparameter\c!contrastcolor - \fi} +\let\listentry\gobblesixarguments -% handling +\def\currentlistmethod{entry} +\def\currentlistindex {0} % The next code injects data into the list at the current level. @@ -86,7 +193,7 @@ \edef\currentlistnumber{\ctxlua{structures.lists.push{ references = { internal = \nextinternalreference, - block = "\currentstructureblock", % handy for lists, like bibl + block = "\currentsectionblock", % handy for lists, like bibl section = structures.sections.currentid(), % location = "\currentlistlocation", }, @@ -280,91 +387,6 @@ % \setvalue{\??li\c!alternative}{\getvalue{\??li\c!alternative b}} % ? % \getvalue{\??li\c!alternative} % ? -\def\checklistexistence#1% - {\ifcsname\??li#1\s!parent\endcsname \else - \letvalue{\??li#1\s!parent}\??li - \fi} - -\def\dosetuplist[#1][#2]% slow -) - {\checklistexistence{#1}% - \def\docommand##1{\getparameters[\??li##1][#2]}% - \processcommalist[#1]\docommand} - -\unexpanded\def\setuplist - {\dodoubleargument\dosetuplist} - -\def\dodefinelist[#1][#2][#3]% - {\presetlocalframed[\??li#1]% still inefficient (will change when we redu core-rul) - \doifassignmentelse{#2} - {\getparameters[\??li#1][\s!parent=\??li,#2]} - {\doifelsenothing{#2} - {\getparameters[\??li#1][\s!parent=\??li]} - {\getparameters[\??li#1][\s!parent=\??li#2,#3]}}} - -\unexpanded\def\setuplists % new, but not for users (hardly handy) - {\dodoubleargument\getparameters[\??li]} - -\setuplists - [\c!height=\v!broad, - \c!depth=\v!broad, - \c!offset=0.25em, - \c!maxwidth=, - \c!state=\v!start, - \c!coupling=\v!off, - \c!criterium=\v!local, - \c!number=0, - \c!width=3em, - \c!alternative=\c!b, - \c!style=\v!normal, - \c!textstyle=\listparameter\c!style, - \c!numberstyle=\listparameter\c!style, - \c!pagestyle=\listparameter\c!style, - %\c!color=, - \c!textcolor=\listparameter\c!color, - \c!numbercolor=\listparameter\c!color, - \c!pagecolor=\listparameter\c!color, - \c!numbercommand=\listnumbercommand, - \c!textcommand=\listtextcommand, - \c!pagecommand=\listpagecommand, - \c!pagenumber=\v!yes, - \c!headnumber=\v!yes, - \c!extras=, - \c!margin=\!!zeropoint, - \c!aligntitle=, - \c!before=, - \c!after=, - \c!inbetween=, - \c!symbol=, - \c!interaction=\v!sectionnumber, - \c!label=\v!no, - \c!distance=\!!zeropoint, - \c!limittext=\@@kolimittext, - %\c!sectionseparatorset=, - %\c!sectionconversionset=, - %\c!sectionstarter=, - %\c!sectionstopper=, - %\c!sectionset=, - %\c!sectionsegments=, - %\c!prefix=\v!no, - %\c!prefixseparatorset=, - %\c!prefixconversionset=, - %\c!prefixstarter=., - %\c!prefixstopper=., - %\c!prefixset=, - %\c!prefixsegments=, - %\c!pageseparatorset=, - %\c!pageconversionset=, - %\c!pagestarter=, - %\c!pagestopper=, - %\c!expansion=, - % \c!prefixconnector=., % maybe inherit from setupheads - % \c!pageprefix=\v!no, % is unset, inherits - % \c!pageprefixconnector=\listparameter\c!prefixconnector, - ]%\c!pagesegments=2:2] - -\unexpanded\def\definelist - {\dotripleempty\dodefinelist} - \unexpanded\def\placelist {\dodoubleempty\doplacelist} @@ -391,7 +413,6 @@ \let\dowritetolist \gobblefourarguments \let\dodowritetolist\gobblefourarguments - %D Regular list entries are bound to a specific location in order to %D get the right pagenumber etc.\ associated. When pushing something %D inbetween (in mkiv) it ends up directtly in the list. This is the @@ -454,7 +475,7 @@ \def\doplacerawlist[#1][#2]% listreferences will be redone {\begingroup - \dosetuplist[#1][#2]% + \setuplist[#1][#2]% \edef\currentlist{\firststructureelementinlist{#1}}% \the\everystructurelist \doif{\listparameter\c!coupling}\v!on{\startlistreferences{#1}}% @@ -493,7 +514,7 @@ \def\listtextcommand #1{\begstrut#1\endstrut} \def\listpagecommand #1{\strut#1} -\def\doassigndimen#1#2#3% +\def\doassignlistdimen#1#2#3% {\doifinsetelse{#2}{\v!fit,\v!broad}{#1=#3}{#1=#2}\relax} \unexpanded\def\listsymbol[#1]#2% @@ -532,7 +553,7 @@ {\directsymbol\v!list\s!default}} \def\listsymbol@none - {\doassigndimen\scratchdimen{\listparameter\c!width}{1.5em}% + {\doassignlistdimen\scratchdimen{\listparameter\c!width}{1.5em}% \hbox to \scratchdimen{}} \def\listsymbol@one @@ -543,9 +564,9 @@ \def\listsymbol@three {\begingroup - \doassigndimen{\dimen0}{\listparameter\c!width }{1.5em}% - \doassigndimen{\dimen2}{\listparameter\c!height}{1ex}% - \doassigndimen{\dimen4}{\listparameter\c!depth }\zeropoint + \doassignlistdimen{\dimen0}{\listparameter\c!width }{1.5em}% + \doassignlistdimen{\dimen2}{\listparameter\c!height}{1ex}% + \doassignlistdimen{\dimen4}{\listparameter\c!depth }\zeropoint \vrule\!!width\dimen0\!!height\dimen2\!!depth\dimen4% \endgroup} @@ -655,7 +676,7 @@ \iflocation % we cannot tweak \iflocation as we nest \doifelse{\listparameter\c!interaction}{#1} {\begingroup - \doif{\namedstructureheadparameter\currentlist\c!interaction}\v!list + \doif{\namedheadparameter\currentlist\c!interaction}\v!list {\dosetsimplepagereference{bck:#2}% \attribute\destinationattribute\currentdestinationattribute}% \directgoto{\setlocationcolor\??ia#4}[internal(#2)]% we can get the attribute instead so then we don't need a goto @@ -929,7 +950,7 @@ \def\dodeterminelistcharacteristics[#1][#2]% {\begingroup - \dosetuplist[#1][#2]% + \setuplist[#1][#2]% \edef\currentlist{\firststructureelementinlist{#1}}% \the\everystructurelist \doanalyzestructurelist{#1}{\listparameter\c!criterium}{\number\listparameter\c!number}% @@ -973,7 +994,7 @@ \the\everystructurelist \doif{\combinedlistparameter\c!coupling}\v!on{\startlistreferences{#1}}% \dobeginoflist - \normalexpanded{\noexpand\dosetuplist[\combinedlist][#2]}% + \normalexpanded{\setuplist[\combinedlist][#2]}% \doplacestructurelist {\combinedlist}% {\combinedlistparameter\c!criterium}% diff --git a/tex/context/base/strc-mar.mkii b/tex/context/base/strc-mar.mkii index 62e6f4ded..2ae81e47b 100644 --- a/tex/context/base/strc-mar.mkii +++ b/tex/context/base/strc-mar.mkii @@ -5,7 +5,7 @@ %D subtitle=Markings, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/strc-mar.mkiv b/tex/context/base/strc-mar.mkiv index 2fe8631b2..612492019 100644 --- a/tex/context/base/strc-mar.mkiv +++ b/tex/context/base/strc-mar.mkiv @@ -5,7 +5,7 @@ %D subtitle=Markings, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE / Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/strc-mat.mkii b/tex/context/base/strc-mat.mkii index 0d32cb298..d85df79e2 100644 --- a/tex/context/base/strc-mat.mkii +++ b/tex/context/base/strc-mat.mkii @@ -5,7 +5,7 @@ %D subtitle=Math Fundamentals, %D author={Hans Hagen, Taco Hoekwater \& Aditya Mahajan}, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/strc-mat.mkiv b/tex/context/base/strc-mat.mkiv index 8d4089360..60fb0be31 100644 --- a/tex/context/base/strc-mat.mkiv +++ b/tex/context/base/strc-mat.mkiv @@ -5,7 +5,7 @@ %D subtitle=Math Numbering, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE / Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -131,7 +131,24 @@ {\dosetformulaattributes\c!numberstyle\c!numbercolor \strut \formulaparameter\c!left - \labeltexts\v!formula{\ignorespaces\doplacecurrentformulanumber\unskip}% +% \bgroup % somehow needed for tags +% \dostarttagged\t!formulalabel\empty +% \labeltexts\v!formula +% {\ignorespaces +% \dostoptagged +% \dostarttagged\t!formulanumber\empty +% \doplacecurrentformulanumber +% \dostoptagged +% \dostarttagged\t!formulalabel\empty +% \unskip}% +% \dostoptagged +% \egroup +% \taggedlabeltexts\v!formula\v!formula +% {\ignorespaces\doplacecurrentformulanumber\removeunwantedspaces}% + \namedtaggedlabeltexts + \t!formulalabel \v!formula + \t!formulanumber\v!formula + {\ignorespaces\doplacecurrentformulanumber\removeunwantedspaces}% \formulaparameter\c!right}% \doif{\formulaparameter\c!location}\v!left{\hskip\formulaparameter\c!distance}} @@ -480,6 +497,25 @@ \forgetdisplayskips \getvalue{\e!start\formulaparameter\c!alternative\v!formula}} +% tagging of formulanumbers is not ok (we get two display maths blobs) + +\def\dostopformula + {\dostarttagged\t!formulacaption\empty + \doplaceformulanumber + \dostoptagged + \dostarttagged\t!formulacontent\empty + \getvalue{\e!stop\formulaparameter\c!alternative\v!formula}% + \dostoptagged + \dostoptagged + \nonoindentation + \checknextindentation[\formulaparameter\c!indentnext]% + \egroup + \hangafter\minusone % added for side floats + \hangindent\zeropoint % added for side floats + \setfalse\handleformulanumber + \the\everyresetformulas + \dorechecknextindentation} % here ? + % experiment: \appendtoks @@ -493,30 +529,13 @@ \setvalue{\v!formula}{\dosingleempty\doformula} -\def\doformula[#1]#2% +\def\doformula[#1]#2% todo: tagged {\begingroup \doifsomething{#1}{\switchtoformulabodyfont[#1]}% % not : \def\doformula[##1]##2{\mathematics{##2}}% \mathematics{#2}% \endgroup} -\def\dostopformula - {\dostarttagged\t!formulatag\empty - \doplaceformulanumber - \dostoptagged - \dostarttagged\t!formulacontent\empty - \getvalue{\e!stop\formulaparameter\c!alternative\v!formula}% - \dostoptagged - \dostoptagged - \nonoindentation - \checknextindentation[\formulaparameter\c!indentnext]% - \egroup - \hangafter\minusone % added for side floats - \hangindent\zeropoint % added for side floats - \setfalse\handleformulanumber - \the\everyresetformulas - \dorechecknextindentation} % here ? - %D \starttyping %D % test \par % no preceding hlist %D % $$x$$ % preceding hlist diff --git a/tex/context/base/strc-not.mkii b/tex/context/base/strc-not.mkii index ec38410d4..bee21342e 100644 --- a/tex/context/base/strc-not.mkii +++ b/tex/context/base/strc-not.mkii @@ -5,7 +5,7 @@ %D subtitle=Note Handling, % Footnote Handling %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/strc-not.mkiv b/tex/context/base/strc-not.mkiv index bf815c728..d178c840c 100644 --- a/tex/context/base/strc-not.mkiv +++ b/tex/context/base/strc-not.mkiv @@ -5,7 +5,7 @@ %D subtitle=Note Handling, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE / Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/strc-num.mkii b/tex/context/base/strc-num.mkii index 28f69b441..99fb687c8 100644 --- a/tex/context/base/strc-num.mkii +++ b/tex/context/base/strc-num.mkii @@ -5,7 +5,7 @@ %D subtitle=Numbering, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/strc-num.mkiv b/tex/context/base/strc-num.mkiv index b386b5d95..909851656 100644 --- a/tex/context/base/strc-num.mkiv +++ b/tex/context/base/strc-num.mkiv @@ -5,7 +5,7 @@ %D subtitle=Basic Numbering, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE / Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -56,7 +56,7 @@ [\c!prefixsegments=\autostructureprefixsegments\sharedstructurecounterparameter] \def\autostructureprefixsegments#1% todo: \c!prefixsegments=\v!auto - {2:\thenamedstructureheadlevel{\ctxlua{structures.sections.way("#1\c!way","\v!by")}}} + {2:\thenamedheadlevel{\ctxlua{structures.sections.way("#1\c!way","\v!by")}}} \def\structurecounterparameter#1#2% {\csname @@ -126,7 +126,7 @@ {\ctxlua{structures.sections.way("\structurecounterparameter{#1}\c!way","\v!by")}} \def\thenamedstructurecounterlevel#1% - {\thenamedstructureheadlevel{\structurecounterway{#1}}} + {\thenamedheadlevel{\structurecounterway{#1}}} \def\docheckstructurecountersetup#1% {% this can be done at the lua end / a bit messy here ... todo ... @@ -414,7 +414,7 @@ internal = \nextinternalreference, reference = "\currentreference", referenceprefix = "\referenceprefix", - block = "\currentstructureblock", + block = "\currentsectionblock", section = structures.sections.currentid(), }, titledata = { diff --git a/tex/context/base/strc-pag.mkii b/tex/context/base/strc-pag.mkii index 5a86a99e8..40e69b849 100644 --- a/tex/context/base/strc-pag.mkii +++ b/tex/context/base/strc-pag.mkii @@ -5,7 +5,7 @@ %D subtitle=Numbering, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/strc-pag.mkiv b/tex/context/base/strc-pag.mkiv index f4b658365..bd8308096 100644 --- a/tex/context/base/strc-pag.mkiv +++ b/tex/context/base/strc-pag.mkiv @@ -5,7 +5,7 @@ %D subtitle=Pagenumbering, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE / Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/strc-prc.mkiv b/tex/context/base/strc-prc.mkiv index 68339ed92..c3f1de4dd 100644 --- a/tex/context/base/strc-prc.mkiv +++ b/tex/context/base/strc-prc.mkiv @@ -5,7 +5,7 @@ %D subtitle=Processors, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE / Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/strc-ref.lua b/tex/context/base/strc-ref.lua index ee32353f0..849cedbe7 100644 --- a/tex/context/base/strc-ref.lua +++ b/tex/context/base/strc-ref.lua @@ -1136,7 +1136,6 @@ function references.doifelse(prefix,reference,highlight,newwindow,layer) currentreference = set[1] end -- we can do the expansion here which saves a call ---~ print("!!!!!!",not unknown) commands.doifelse(not unknown) end diff --git a/tex/context/base/strc-ref.mkii b/tex/context/base/strc-ref.mkii index 4550f7144..8a135eb04 100644 --- a/tex/context/base/strc-ref.mkii +++ b/tex/context/base/strc-ref.mkii @@ -5,7 +5,7 @@ %D subtitle=Cross Referencing, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/strc-ref.mkiv b/tex/context/base/strc-ref.mkiv index bec96e05c..9de6b923a 100644 --- a/tex/context/base/strc-ref.mkiv +++ b/tex/context/base/strc-ref.mkiv @@ -5,7 +5,7 @@ %D subtitle=Cross Referencing, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE / Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -15,7 +15,7 @@ % % \definestructureconversionset[default][Character,number,Romannumerals,Character][number] % \definestructureseparatorset [default][.,.,--][.] -% \setupstructurehead[subsection][sectionstopper=),sectionsegments=4:4] +% \setuphead[subsection][sectionstopper=),sectionsegments=4:4] % \setupreferencestructureprefix[default][prefixsegments=2:4] % \setupreferencestructureprefix[figure][default][prefixsegments=3:4] % \chapter {One} @@ -155,7 +155,7 @@ { references = { % internal = \nextinternalreference, % no need for an internal as we have an explicit - block = "\currentstructureblock", + block = "\currentsectionblock", section = structures.sections.currentid(), }, metadata = { % we could assume page to have no metadata @@ -191,7 +191,7 @@ \ctxlua{structures.references.setandgetattribute("\s!page", "\referenceprefix","#1", { references = { - % block = "\currentstructureblock", + % block = "\currentsectionblock", % section = structures.sections.currentid(), }, metadata = { % we could assume page to have no metadata @@ -926,14 +926,23 @@ \let\leftofreference \empty \let\rightofreference \empty +% \setvalue{\??rf\c!interaction\v!all}% +% {\leftofreference +% \the\leftreferencetoks +% \doifsometokselse\leftreferencetoks \leftofreferencecontent \donothing +% \currentreferencecontent +% \doifsometokselse\rightreferencetoks\rightofreferencecontent\donothing +% \the\rightreferencetoks +% \rightofreference} + \setvalue{\??rf\c!interaction\v!all}% - {\leftofreference - \the\leftreferencetoks + {\the\leftreferencetoks \doifsometokselse\leftreferencetoks \leftofreferencecontent \donothing + \leftofreference \currentreferencecontent + \rightofreference \doifsometokselse\rightreferencetoks\rightofreferencecontent\donothing - \the\rightreferencetoks - \rightofreference} + \the\rightreferencetoks} \setvalue{\??rf\c!interaction\v!label}% {\leftofreference diff --git a/tex/context/base/strc-reg.mkii b/tex/context/base/strc-reg.mkii index b088246d3..45be82525 100644 --- a/tex/context/base/strc-reg.mkii +++ b/tex/context/base/strc-reg.mkii @@ -5,7 +5,7 @@ %D subtitle=Register Management, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/strc-reg.mkiv b/tex/context/base/strc-reg.mkiv index 19634390d..f99f49c40 100644 --- a/tex/context/base/strc-reg.mkiv +++ b/tex/context/base/strc-reg.mkiv @@ -5,7 +5,7 @@ %D subtitle=Registers, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE / Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/strc-ren.mkiv b/tex/context/base/strc-ren.mkiv index 73eb0ccd2..462e47b08 100644 --- a/tex/context/base/strc-ren.mkiv +++ b/tex/context/base/strc-ren.mkiv @@ -5,7 +5,7 @@ %D subtitle=Section Rendering, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE / Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -27,45 +27,45 @@ \unexpanded\def\placeheadmargintexts {\the\everyheadstart - \doif{\structureheadparameter\c!margintext}\v!yes\placemargincontent} + \doif{\headparameter\c!margintext}\v!yes\placemargincontent} \unexpanded\def\setupheadcomponentfont#1#2% {\dontconvertfont - \ifconditional\structureheadisdisplay - \edef\askedstructureheadinterlinespace{\structureheadparameter\c!interlinespace}% - \ifx\askedstructureheadinterlinespace\empty + \ifconditional\headisdisplay + \edef\askedheadinterlinespace{\headparameter\c!interlinespace}% + \ifx\askedheadinterlinespace\empty % here the interline space is only set when style sets no space \setfalse\fontattributeisset \setfalse\interlinespaceisset - \dosetstructureheadattributes\c!style\c!color + \dosetheadattributes\c!style\c!color \ifconditional\fontattributeisset \ifconditional\interlinespaceisset \else \setupinterlinespace \fi \fi - \setfalse\fontattributeisset \dosetstructureheadattributes#1#2% + \setfalse\fontattributeisset \dosetheadattributes#1#2% \ifconditional\fontattributeisset \ifconditional\interlinespaceisset \else \setupinterlinespace \fi \fi \else % here the set interline space overloads any other set space in the style \setfalse\fontattributeisset - \dosetstructureheadattributes\c!style\c!color + \dosetheadattributes\c!style\c!color \ifconditional\fontattributeisset - \dosetupcheckedinterlinespace\askedstructureheadinterlinespace + \dosetupcheckedinterlinespace\askedheadinterlinespace \fi \setfalse\fontattributeisset - \dosetstructureheadattributes#1#2% + \dosetheadattributes#1#2% \ifconditional\fontattributeisset - \dosetupcheckedinterlinespace\askedstructureheadinterlinespace + \dosetupcheckedinterlinespace\askedheadinterlinespace \fi \fi \else \setfalse\fontattributeisset - \dosetstructureheadattributes\c!style\c!color + \dosetheadattributes\c!style\c!color \ifconditional\fontattributeisset \setupspacing \fi \setfalse\fontattributeisset - \dosetstructureheadattributes#1#2% + \dosetheadattributes#1#2% \ifconditional\fontattributeisset \setupspacing \fi @@ -74,23 +74,23 @@ \def\doplaceheadtextcomponent#1% {\begingroup \setupheadcomponentfont\c!textstyle\c!textcolor - \structureheadparameter\c!commandbefore + \headparameter\c!commandbefore \placeheadmargintexts - \ifcsname\??nh\currentstructurehead\c!deeptextcommand\endcsname - \expandafter\let\expandafter\deepstructuretitlecommand\csname\??nh\currentstructurehead\c!deeptextcommand\endcsname + \ifcsname\??nh\currenthead\c!deeptextcommand\endcsname + \expandafter\let\expandafter\deepstructuretitlecommand\csname\??nh\currenthead\c!deeptextcommand\endcsname \fi - \ifconditional\structureheadisdisplay % \ifdisplaysectionhead + \ifconditional\headisdisplay % \ifdisplaysectionhead % struts can be nilled with \setnostrut - \structureheadparameter\c!textcommand{\setstrut\begstrut#1\endstrut}% + \headparameter\c!textcommand{\setstrut\begstrut#1\endstrut}% \xdef\localheadheight {\the\strutht}% \xdef\localheaddepth {\the\strutdp}% \xdef\localheadlineheight{\the\lineheight}% % == \globallet\localheaddepth\strutdepth \else - \structureheadparameter\c!textcommand{#1}% + \headparameter\c!textcommand{#1}% \fi - \structureheadparameter\c!commandafter - \ifconditional\structureheadisdisplay % \ifdisplaysectionhead + \headparameter\c!commandafter + \ifconditional\headisdisplay % \ifdisplaysectionhead \endgraf \fi \endgroup} @@ -99,14 +99,14 @@ {\begingroup \setupheadcomponentfont\c!numberstyle\c!numbercolor \placeheadmargintexts - \ifcsname\??nh\currentstructurehead\c!deepnumbercommand\endcsname - \expandafter\let\expandafter\deepstructurenumbercommand\csname\??nh\currentstructurehead\c!deeptextcommand\endcsname + \ifcsname\??nh\currenthead\c!deepnumbercommand\endcsname + \expandafter\let\expandafter\deepstructurenumbercommand\csname\??nh\currenthead\c!deeptextcommand\endcsname \fi - \ifconditional\structureheadisdisplay % \ifdisplaysectionhead + \ifconditional\headisdisplay % \ifdisplaysectionhead % can be nilled with \setnostrut - \structureheadparameter\c!numbercommand{\setstrut\begstrut#1\endstrut}% + \headparameter\c!numbercommand{\setstrut\begstrut#1\endstrut}% \else - \structureheadparameter\c!numbercommand{#1}% + \headparameter\c!numbercommand{#1}% \fi \endgroup} @@ -116,74 +116,74 @@ \let\currentstructurereferenceattribute\attributeunsetvalue -\def\structureheadreferenceattributes +\def\headreferenceattributes {\iflocation attr \destinationattribute \currentstructureattribute attr \referenceattribute \currentstructurereferenceattribute % attr \internalattribute \nextinternalreference \fi} -\def\setinlinestructureheadreferenceattributes - {\ifconditional\structureheadisdisplay \else \iflocation +\def\setinlineheadreferenceattributes + {\ifconditional\headisdisplay \else \iflocation \attribute\destinationattribute\currentstructureattribute \attribute\referenceattribute \currentstructurereferenceattribute % \attribute\internalattribute \nextinternalreference \fi \fi} -\def\docheckstructureheadreference - {\edef\currentstructureheadinteraction{\structureheadparameter\c!interaction}% - \ifx\currentstructureheadinteraction\v!list +\def\docheckheadreference + {\edef\currentheadinteraction{\headparameter\c!interaction}% + \ifx\currentheadinteraction\v!list % setuphead[<section>][interaction=list,...] \dogetsimplepagereference{bck:\nextinternalreference}% \let\currentstructurereferenceattribute\currentreferenceattribute - \else\ifx\currentstructureheadinteraction\v!reference + \else\ifx\currentheadinteraction\v!reference % setuphead[<section>][interaction=reference,...] start<section>[backreference=abc,...] - \edef\currentstructureheadbackreference{\structurevariable{references.backreference}}% - \ifx\currentstructureheadbackreference\empty \else - \dogetsimplepagereference\currentstructureheadbackreference + \edef\currentheadbackreference{\structurevariable{references.backreference}}% + \ifx\currentheadbackreference\empty \else + \dogetsimplepagereference\currentheadbackreference \let\currentstructurereferenceattribute\currentreferenceattribute \fi \else % maybe auto: backreference when given, else list \fi\fi} -\unexpanded\def\placestructureheadtext +\unexpanded\def\placeheadtext {\beginheadplacement - \setstructureheadmarking + \setheadmarking \doresettructureheadnumbercontent - \ifconditional\structureheadleaveempty - \setbox\sectionheadbox\ifvertical\vbox\else\hbox\fi \structureheadreferenceattributes to \zeropoint{}% + \ifconditional\headleaveempty + \setbox\sectionheadbox\ifvertical\vbox\else\hbox\fi \headreferenceattributes to \zeropoint{}% \makestrutofbox\sectionheadbox \else - \docheckstructureheadreference - \setbox\sectionheadbox\ifvertical\vbox\else\hbox\fi \structureheadreferenceattributes - {\dosetlocalgridsnapping{\structureheadparameter\c!internalgrid}% + \docheckheadreference + \setbox\sectionheadbox\ifvertical\vbox\else\hbox\fi \headreferenceattributes + {\dosetlocalgridsnapping{\headparameter\c!internalgrid}% \doresettructureheadnumbercontent - \dosetfontattribute{\??nh\currentstructurehead}\c!style % but we don't want color to influence user command, todo: get the if-else out of it - \setinlinestructureheadreferenceattributes - \structureheadparameter\c!command{}{\doplaceheadtextcomponent\getstructureheadtitle}}% + \dosetfontattribute{\??nh\currenthead}\c!style % but we don't want color to influence user command, todo: get the if-else out of it + \setinlineheadreferenceattributes + \headparameter\c!command{}{\doplaceheadtextcomponent\getheadtitle}}% \fi - \endheadplacement{\getstructureheadsyncs}} + \endheadplacement{\getheadsyncs}} -\unexpanded\def\placestructureheadnumbertext +\unexpanded\def\placeheadnumbertext {\beginheadplacement - \setstructureheadmarking - \doiftextelse{\getstructureheadnumber}\dosettructureheadnumbercontent\doresettructureheadnumbercontent - \ifconditional\structureheadleaveempty - \setbox\sectionheadbox\ifvertical\vbox\else\hbox\fi \structureheadreferenceattributes to \zeropoint{}% + \setheadmarking + \doiftextelse{\getheadnumber}\dosettructureheadnumbercontent\doresettructureheadnumbercontent + \ifconditional\headleaveempty + \setbox\sectionheadbox\ifvertical\vbox\else\hbox\fi \headreferenceattributes to \zeropoint{}% \makestrutofbox\sectionheadbox \else % = needed - \docheckstructureheadreference - \setbox\sectionheadbox\ifvertical\vbox\else\hbox\fi \structureheadreferenceattributes - {\dosetlocalgridsnapping{\structureheadparameter\c!internalgrid}% - \dosetfontattribute{\??nh\currentstructurehead}\c!style - \setinlinestructureheadreferenceattributes - \structureheadparameter\c!command{\doplaceheadnumbercomponent\getstructureheadnumber}{\doplaceheadtextcomponent\getstructureheadtitle}}% + \docheckheadreference + \setbox\sectionheadbox\ifvertical\vbox\else\hbox\fi \headreferenceattributes + {\dosetlocalgridsnapping{\headparameter\c!internalgrid}% + \dosetfontattribute{\??nh\currenthead}\c!style + \setinlineheadreferenceattributes + \headparameter\c!command{\doplaceheadnumbercomponent\getheadnumber}{\doplaceheadtextcomponent\getheadtitle}}% \fi - \endheadplacement{\getstructureheadsyncs}} + \endheadplacement{\getheadsyncs}} -\unexpanded\def\placestructureheadempty - {\hbox \structureheadreferenceattributes {\getstructureheadsyncs}} +\unexpanded\def\placeheadempty + {\hbox \headreferenceattributes {\getheadsyncs}} %D \starttyping %D \def\StretchedBox#1% @@ -205,14 +205,14 @@ \def\dolocalheadsetup % koppeling met standaard kopcommando / engels {\forgetall % traag dus ... - \doifsomething{\structureheadparameter\c!align } {\normalexpanded{\noexpand\setupalign [\structureheadparameter\c!align ]}}% - \doifsomething{\structureheadparameter\c!tolerance} {\normalexpanded{\noexpand\setuptolerance[\structureheadparameter\c!tolerance]}}% - \doif {\structureheadparameter\c!strut }\v!no{\setnostrut}% new + \doifsomething{\headparameter\c!align } {\normalexpanded{\noexpand\setupalign [\headparameter\c!align ]}}% + \doifsomething{\headparameter\c!tolerance} {\normalexpanded{\noexpand\setuptolerance[\headparameter\c!tolerance]}}% + \doif {\headparameter\c!strut }\v!no{\setnostrut}% new \def\\{\crlf\strut\ignorespaces}} \def\beginheadplacement {\bgroup - \setsystemmode\currentstructurehead + \setsystemmode\currenthead \xdef\localheadheight {\the\strutht}% \xdef\localheaddepth {\the\strutdp}% \xdef\localheadlineheight{\the\lineheight}% @@ -220,7 +220,7 @@ \everypar\emptytoks % needed indeed \noindent % ipv \whitespace elders, na \forgetall ! \bgroup - \doifinsetelse{\structureheadparameter\c!aligntitle}{\v!yes,\v!float}% new + \doifinsetelse{\headparameter\c!aligntitle}{\v!yes,\v!float}% new {\skip0 1\leftskip \skip2 1\rightskip \xdef\localheadskip{\the\skip0}% @@ -234,7 +234,7 @@ \dontcomplain \postponenotes \iflocation - \ifconditional\structureheadisdisplay % \ifdisplaysectionhead + \ifconditional\headisdisplay % \ifdisplaysectionhead \else % obsolete: \noninterferingmarks \fi @@ -282,10 +282,10 @@ \def\endheadplacement#1% {\noflines\zerocount - \ifconditional\structureheadisdisplay % \ifdisplaysectionhead + \ifconditional\headisdisplay % \ifdisplaysectionhead % new (todo tight == one following line up) \processaction - [\structureheadparameter\c!hang] + [\headparameter\c!hang] [ \v!line=>\hangheadplacement\noflines\zerocount, \v!broad=>\hangheadplacement\getnoflines\scratchdimen, \v!fit=>\hangheadplacement\getrawnoflines\scratchdimen, @@ -297,21 +297,21 @@ % kind of special, we want to snap heads also according to local specs local \ifgridsnapping \begingroup - \edef\currentstructureheadgridsnapping{\structureheadparameter\c!grid}% - \ifconditional\structureheadisdisplay - \ifx\currentstructureheadgridsnapping\empty\else - \dosetstructureheadattributes\c!style\c!color + \edef\currentheadgridsnapping{\headparameter\c!grid}% + \ifconditional\headisdisplay + \ifx\currentheadgridsnapping\empty\else + \dosetheadattributes\c!style\c!color \setupinterlinespace - \dosetstructureheadattributes\c!textstyle\c!textcolor + \dosetheadattributes\c!textstyle\c!textcolor \setupinterlinespace \fi \fi - \snaptogrid[\currentstructureheadgridsnapping]\hbox - {\hskip\localheadskip\hskip\structureheadparameter\c!margin\box\sectionheadbox}% + \snaptogrid[\currentheadgridsnapping]\hbox + {\hskip\localheadskip\hskip\headparameter\c!margin\box\sectionheadbox}% \endgroup \else \hbox - {\hskip\localheadskip\hskip\structureheadparameter\c!margin\box\sectionheadbox}% + {\hskip\localheadskip\hskip\headparameter\c!margin\box\sectionheadbox}% \fi \flushnotes % new, not really needed \endgraf @@ -330,9 +330,9 @@ \globallet\headlastlinewidth\!!zeropoint #1% \hskip\numberheaddistance\!!plus\numberheaddistance\!!minus.25\dimexpr\numberheaddistance\relax - \hskip\continuousstructureheadsignal\ignorespaces + \hskip\continuousheadsignal\ignorespaces \fi - \ifconditional\structureheadisdisplay % \ifdisplaysectionhead + \ifconditional\headisdisplay % \ifdisplaysectionhead \ifvmode \ifgridsnapping % important, font related depth, see comment \prevdepth\strutdp @@ -343,8 +343,8 @@ \fi \egroup \egroup - \ifconditional\structureheadisdisplay % \ifdisplaysectionhead - \checknextindentation[\structureheadparameter\c!indentnext]% + \ifconditional\headisdisplay % \ifdisplaysectionhead + \checknextindentation[\headparameter\c!indentnext]% \else \nonoindentation % recently added, was a bug \fi} @@ -373,7 +373,7 @@ \setvalue{\??ns::#1}} \def\presetnumberheadalternative - {\doifelsevalue{\??ns:\numberheadalternative}\v!horizontal\setfalse\settrue\structureheadisdisplay} + {\doifelsevalue{\??ns:\numberheadalternative}\v!horizontal\setfalse\settrue\headisdisplay} \def\normalplacehead {\csname\??ns::\ifcsname\??ns::\numberheadalternative\endcsname\numberheadalternative\else\v!normal\fi\endcsname} @@ -382,7 +382,7 @@ {\vbox {\localheadsetup \begstrut - \ifconditional\structureheadshownumber % \ifheadnumbercontent + \ifconditional\headshownumber % \ifheadnumbercontent #1\hskip\numberheaddistance \fi #2}} @@ -397,10 +397,10 @@ \defineheadplacement[\v!normal][\v!vertical]#1#2% {\vbox {\localheadsetup - \edef\headwidth {\structureheadparameter\c!width }% - \edef\headnumberwidth{\structureheadparameter\c!numberwidth}% - \edef\headtextwidth {\structureheadparameter\c!textwidth }% - \ifconditional\structureheadshownumber + \edef\headwidth {\headparameter\c!width }% + \edef\headnumberwidth{\headparameter\c!numberwidth}% + \edef\headtextwidth {\headparameter\c!textwidth }% + \ifconditional\headshownumber \ifx\headwidth\empty \else \ifx\headnumberwidth\empty @@ -444,7 +444,7 @@ {\localheadsetup \begstrut % use one \strut here! \dontleavehmode % in case there is no strut, else side effects with llap - \ifconditional\structureheadshownumber + \ifconditional\headshownumber \llap{\hbox{\hfill{#1}\hskip\localheadskip\hskip\leftmargindistance}}% introduces whitespace % maybe better: % \inleftmargin{\hbox{\hss{#1}\hskip\localheadskip}}% @@ -460,7 +460,7 @@ \veryraggedcenter \let\\\endgraf \let\crlf\endgraf - \ifconditional\structureheadshownumber + \ifconditional\headshownumber \strut#1\par \fi \begstrut#2}} @@ -468,14 +468,14 @@ \defineheadplacement[\v!text][\v!horizontal]#1#2% {\bgroup \localheadsetup % no stretch in distance - \ifconditional\structureheadshownumber + \ifconditional\headshownumber {#1}\kern\numberheaddistance \fi {\begstrut#2}% \egroup} \unexpanded\def\placeheadlohi#1#2#3% - {\ifconditional\structureheadshownumber + {\ifconditional\headshownumber \setbox0\hbox{#2} \setbox2=#1{\localheadsetup\advance\hsize-\wd0\relax#3}% \hbox{\box0\hskip\numberheaddistance\box2}% @@ -495,7 +495,7 @@ % % \defineheadplacement[MyTest][horizontal]#1#2% % {\startlocalheadsetup -% %\ChapterInMargin{\structureheadhbox{\strut#2}}% proper destination, ref okay +% %\ChapterInMargin{\headhbox{\strut#2}}% proper destination, ref okay % \ChapterInMargin{\strut#2}% zero destination, ref okay % \stoplocalheadsetup} % @@ -503,8 +503,8 @@ % [chapter] % [alternative=MyTest] -\unexpanded\def\structureheadhbox{\hbox\structureheadreferenceattributes} -\unexpanded\def\structureheadvbox{\vbox\structureheadreferenceattributes} +\unexpanded\def\headhbox{\hbox\headreferenceattributes} +\unexpanded\def\headvbox{\vbox\headreferenceattributes} \unexpanded\def\startlocalheadsetup{\bgroup\localheadsetup} \unexpanded\def\stoplocalheadsetup {\egroup} diff --git a/tex/context/base/strc-sbe.mkiv b/tex/context/base/strc-sbe.mkiv index e9d8d9c1a..8ab4b9dbd 100644 --- a/tex/context/base/strc-sbe.mkiv +++ b/tex/context/base/strc-sbe.mkiv @@ -5,7 +5,7 @@ %D subtitle=Section Block Environments, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE / Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -27,84 +27,78 @@ % \chapter{second} \section{alpha} test \section{beta} test \page % \stopbodymatter % optional -\definesystemvariable {nb} +\unexpanded\def\definesectionblock{\dotripleargument\dodefinesectionblock} +\unexpanded\def\setupsectionblock {\dodoubleargument\dosetupsectionblock} +\def\setsectionblock {\dosingleargument\dosetsectionblock} -\def\v!structureblockenvironment{structureblockenvironment} - -\unexpanded\def\definestructureblock{\dotripleargument\dodefinestructureblock} -\unexpanded\def\setupstructureblock {\dodoubleargument\dosetupstructureblock} -\def\setstructureblock {\dosingleargument\dosetstructureblock} - -% \def\structureblockparameter#1{\executeifdefined{\??nb\currentstructureblock#1}\empty} - -\def\structureblockparameter#1% +\def\sectionblockparameter#1% {\csname - \ifcsname\??nb\currentstructureblock#1\endcsname\??nb\currentstructureblock#1\else\s!empty\fi + \ifcsname\??sb\currentsectionblock#1\endcsname\??sb\currentsectionblock#1\else\s!empty\fi \endcsname} -\newtoks \everybeforestructureblock -\newtoks \everyafterstructureblock +\newtoks \everybeforesectionblock +\newtoks \everyaftersectionblock -\def\dodefinestructureblock[#1][#2][#3]% singular plural settings +\def\dodefinesectionblock[#1][#2][#3]% singular plural settings {\getparameters - [\??nb#1] + [\??sb#1] [\c!number=\v!yes, \c!page=\v!right, % anders worden marks te vroeg gereset ! #3]% \expandafter\newif\csname if#2\endcsname % better a mode - \setstructureblockenvironment{#1}\empty - \setvalue {\e!start#2}{\startstructureblock[#1]}% - \setvalue {\e!stop #2}{\stopstructureblock}} + \setsectionblockenvironment{#1}\empty + \setvalue {\e!start#2}{\startsectionblock[#1]}% + \setvalue {\e!stop #2}{\stopsectionblock}} \ifdefined \resetallstructuremarks \else \let\resetallstructuremarks\relax \fi \appendtoks - \doifsomething{\structureblockparameter\c!page}{\page[\structureblockparameter\c!page]}% + \doifsomething{\sectionblockparameter\c!page}{\page[\sectionblockparameter\c!page]}% \resetallstructuremarks - \getstructureblockenvironment\currentstructureblock - \structureblockparameter\c!before % don't move - \dostarttagged\t!division\currentstructureblock -\to \everybeforestructureblock + \getsectionblockenvironment\currentsectionblock + \sectionblockparameter\c!before % don't move + \dostarttagged\t!division\currentsectionblock +\to \everybeforesectionblock \appendtoks - \structureblockparameter\c!after % don't move - \doifsomething{\structureblockparameter\c!page}{\page[\structureblockparameter\c!page]}% + \sectionblockparameter\c!after % don't move + \doifsomething{\sectionblockparameter\c!page}{\page[\sectionblockparameter\c!page]}% \dostoptagged \resetallstructuremarks -\to \everyafterstructureblock +\to \everyaftersectionblock -\def\dosetupstructureblock[#1]% - {\getparameters[\??nb#1]}% [#2] +\def\dosetupsectionblock[#1]% + {\getparameters[\??sb#1]}% [#2] -\def\dosetstructureblock[#1]% used to set the default - {\edef\currentstructureblock{\ctxlua{structures.sections.setblock("#1")}}} +\def\dosetsectionblock[#1]% used to set the default + {\edef\currentsectionblock{\ctxlua{structures.sections.setblock("#1")}}} -\let\currentstructureblock\s!unknown +\let\currentsectionblock\s!unknown -\unexpanded\def\startstructureblock[#1]% +\unexpanded\def\startsectionblock[#1]% {%\ctxlua{structures.counters.check(0)}% we assume sane usage of \page, as this is the only workable place (in push) \begingroup - \edef\currentstructureblock{\ctxlua{structures.sections.pushblock("#1")}}% + \edef\currentsectionblock{\ctxlua{structures.sections.pushblock("#1")}}% \csname #1true\endcsname % for old times sake - \setsystemmode\currentstructureblock - \the\everybeforestructureblock\relax - \showmessage\m!structures1\currentstructureblock} - -\unexpanded\def\stopstructureblock - {\showmessage\m!structures2\currentstructureblock - \the\everyafterstructureblock\relax - \edef\currentstructureblock{\ctxlua{structures.sections.popblock()}}% + \setsystemmode\currentsectionblock + \the\everybeforesectionblock\relax + \showmessage\m!structures1\currentsectionblock} + +\unexpanded\def\stopsectionblock + {\showmessage\m!structures2\currentsectionblock + \the\everyaftersectionblock\relax + \edef\currentsectionblock{\ctxlua{structures.sections.popblock()}}% \endgroup} -\long\def\setstructureblockenvironment#1#2% - {\long\setvalue{\??nb\s!do#1}{\do{#2}}} +\long\def\setsectionblockenvironment#1#2% + {\long\setvalue{\??sb\s!do#1}{\do{#2}}} -\def\getstructureblockenvironment#1% +\def\getsectionblockenvironment#1% {\let\do\firstofoneargument - %\structureblockparameter{\s!do#1}} - \csname\??nb\s!do#1\endcsname} + %\sectionblockparameter{\s!do#1}} + \csname\??sb\s!do#1\endcsname} %D \starttyping %D \startsectionblockenvironment[frontpart] @@ -126,13 +120,13 @@ %D \stoptext %D \stoptyping -\setvalue{\e!start\v!structureblockenvironment}% - {\dosingleargument\dostartstructureblockenvironment} +\setvalue{\e!start\v!sectionblockenvironment}% + {\dosingleargument\dostartsectionblockenvironment} -\def\dostartstructureblockenvironment[#1]% evt \pushendofline \popendofline - {\long\def\do##1##2{\setstructureblockenvironment{#1}{##1##2}}% - %\grabuntil{\e!stop\v!structureblockenvironment}{\structureblockparameter{\s!do#1}}} - \grabuntil{\e!stop\v!structureblockenvironment}{\csname\??nb\s!do#1\endcsname}} +\def\dostartsectionblockenvironment[#1]% evt \pushendofline \popendofline + {\long\def\do##1##2{\setsectionblockenvironment{#1}{##1##2}}% + %\grabuntil{\e!stop\v!sectionblockenvironment}{\sectionblockparameter{\s!do#1}}} + \grabuntil{\e!stop\v!sectionblockenvironment}{\csname\??sb\s!do#1\endcsname}} % this will become: (we ran in parallel for a while during transition) @@ -140,8 +134,8 @@ {\dosingleargument\dostartsectionblockenvironment} \def\dostartsectionblockenvironment[#1]% evt \pushendofline \popendofline - {\long\def\do##1##2{\setstructureblockenvironment{#1}{##1##2}}% - %\grabuntil{\e!stop\v!sectionblockenvironment}{\structureblockparameter{\s!do#1}}} - \grabuntil{\e!stop\v!sectionblockenvironment}{\csname\??nb\s!do#1\endcsname}} + {\long\def\do##1##2{\setsectionblockenvironment{#1}{##1##2}}% + %\grabuntil{\e!stop\v!sectionblockenvironment}{\sectionblockparameter{\s!do#1}}} + \grabuntil{\e!stop\v!sectionblockenvironment}{\csname\??sb\s!do#1\endcsname}} \protect \endinput diff --git a/tex/context/base/strc-sec.mkii b/tex/context/base/strc-sec.mkii index 0698ef93c..01ca71ead 100644 --- a/tex/context/base/strc-sec.mkii +++ b/tex/context/base/strc-sec.mkii @@ -5,7 +5,7 @@ %D subtitle=Sectioning, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/strc-sec.mkiv b/tex/context/base/strc-sec.mkiv index 6cb6f84c1..c64d379ea 100644 --- a/tex/context/base/strc-sec.mkiv +++ b/tex/context/base/strc-sec.mkiv @@ -5,7 +5,7 @@ %D subtitle=Sectioning, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE / Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -50,102 +50,134 @@ \def\getsomestructurenumber #1#2{\ctxlua{structures.sections.getnumber(#1,"#2")}} % level, what \def\getfullstructurenumber #1{\ctxlua{structures.sections.fullnumber(#1)}} % level \def\getsomefullstructurenumber#1#2{\ctxlua{structures.sections.fullnumber(#1,"#2")}} -\def\getspecificstructuretitle #1{\ctxlua{structures.sections.structuredata(#1,"titledata.title",nil,"\structureheadparameter\s!catcodes")}}% +\def\getspecificstructuretitle #1{\ctxlua{structures.sections.structuredata(#1,"titledata.title",nil,"\headparameter\s!catcodes")}}% -% interface +% structure heads (like \startchapter) -\def\structureheadparameter #1{\csname\dostructureheadparameter{\??nh\currentstructurehead}{#1}\endcsname} -\def\structureheadparameterhash #1{\dostructureheadparameterhash {\??nh\currentstructurehead}{#1}} -\def\namedstructureheadparameter#1#2{\csname\dostructureheadparameter{\??nh#1}{#2}\endcsname} +% \c!deeptextcommand, \c!deepnumbercommand: undefined ! +% \c!before \c!after \c!distance +% \c!page \c!header \c!text \c!footer=, +% \c!numbercommand \c!textcommand \c!ownnumber \c!number +% \c!file \c!grid \c!margintext +% \c!expansion \c!xmlsetup \s!catcode -\def\dostructureheadparameter #1#2{\ifcsname#1#2\endcsname#1#2\else\expandafter\dostructureheadparentparameter \csname#1\s!parent\endcsname{#2}\fi} -\def\dostructureheadparameterhash#1#2{\ifcsname#1#2\endcsname #1\else\expandafter\dostructureheadparentparameterhash\csname#1\s!parent\endcsname{#2}\fi} +\installcommandhandler \??nh {head} \??nh -\def\dostructureheadparentparameter #1#2{\ifx#1\relax\s!empty\else\dostructureheadparameter #1{#2}\fi} -\def\dostructureheadparentparameterhash#1#2{\ifx#1\relax \else\dostructureheadparameterhash#1{#2}\fi} +\def\headparameterstrict#1{\csname\ifcsname\??nh\currenthead#1\endcsname\??nh\currenthead#1\else\s!empty\fi\endcsname} -\def\structureheadparameterstrict#1{\csname\ifcsname\??nh\currentstructurehead#1\endcsname\??nh\currentstructurehead#1\else\s!empty\fi\endcsname} +\let\setupheads\setuphead % will go -\def\dosetstructureheadattributes#1#2% style color - {\edef\fontattributehash {\structureheadparameterhash#1}% - \edef\colorattributehash{\structureheadparameterhash#2}% - \ifx\fontattributehash \empty\else\dosetfontattribute \fontattributehash #1\fi - \ifx\colorattributehash\empty\else\dosetcolorattribute\colorattributehash#2\fi} +\newif\ifsectionnumber % maybe conditional + +\appendtoks + \doifelse{\headparameter\c!sectionnumber}\v!yes\sectionnumbertrue\sectionnumberfalse +\to \everysetuphead + +\appendtoks + \ifx\currentheadparent\empty + \edef\currentheaddefault{\headparameter\c!default}% + \edef\currentheadsection{\headparameter\c!section}% + \ifx\currenthead\currentheaddefault + \let\currentheadparent\currentheadsection + \else\ifx\currentheaddefault\empty + \let\currentheadparent\currentheadsection + \else + \let\currentheadparent\currentheaddefault + \fi\fi + \normalexpanded {% + \getparameters[\??nh\currenthead][\c!label=\currenthead]% + \getparameters[\??nh\currenthead][\s!parent=\??nh\currentheadparent]% + \definemarking[\currenthead] [\currentheadsection]% + \definemarking[\currenthead\v!number][\currentheadsection]% + \setupmarking [\currenthead] [\c!filtercommand=\noexpand\sectionheadmarkingtitle {\currenthead}]% + \setupmarking [\currenthead\c!number][\c!filtercommand=\noexpand\sectionheadmarkingnumber{\currenthead}]% + }% + \doifelselist\currenthead\donothing + {\definelist[\currenthead][\c!prefix=\v!no]}% + \else + \normalexpanded {% + \getparameters[\??nh\currenthead][\c!label=\currenthead,\c!coupling=\currentheadparent]% + \definemarking[\currenthead] [\currentheadparent]% + \definemarking[\currenthead\v!number][\currentheadparent\c!number]% + }% + \doifelselist\currenthead\donothing + {\definelist[\currenthead][\currentheadparent][\c!prefix=\v!no]}% + \fi + \presetlabeltext[\currenthead=]% + \the\everysetuphead +\to \everydefinehead + +\appendtoks + \setstructurelevel\currenthead{\thenamedheadlevel\currenthead}% +\to \everydefinehead + +\appendtoks + % \setevalue{\e!next \currenthead}{\donexthead [\currenthead]}% + \setevalue{\e!start\currenthead}{\dostarthead[\currenthead]}% + \setevalue{\e!stop \currenthead}{\dostophead[\currenthead]}% +\to \everydefinehead -% so far +\appendtoks + \doifelse{\headparameter\c!ownnumber}\v!yes + {\setevalue\currenthead{\dohandleheadown[\currenthead]}} + {\setevalue\currenthead{\dohandleheadnop[\currenthead]}}% +\to \everysetuphead + +% structure sections (the parents of chapter etc) \newcount\maxstructuredepth -\let\laststructuresectionname\empty +\let\lastsectionname\empty \let\resetallstructuremarks \relax \let\resetcurrentstructuremarks \relax \let\resetcurrentstructuremarkswithpage\relax \def\resetallstructuremarks {\resetmarking[\v!section-1]} % will become option -\def\resetcurrentstructuremarks {\resetmarking[\laststructuresectionname]} % will become option -%def\resetcurrentstructuremarkswithpage{\resetmarking[\laststructuresectionname]} % will become option - -% \c!before=, -% \c!after=, -% \c!distance=\zeropoint, -% \c!page=, -% \c!header=, -% \c!text=, -% \c!footer=, -% \c!numbercommand=, -% \c!textcommand=, -% \c!ownnumber=\v!no, -% \c!number=\v!yes, -% \c!file=, -% \c!expansion=, -% \c!grid=, -% \c!margintext=, -% -% \c!xmlsetup=, -% \s!catcodes=, +\def\resetcurrentstructuremarks {\resetmarking[\lastsectionname]} % will become option +%def\resetcurrentstructuremarkswithpage{\resetmarking[\lastsectionname]} % will become option -\newtoks\everydefinestructuresection +\newtoks\everydefinesection \appendtoks % This is a rather practical default that we don't want to % be part of the parent chain lookup mechanism; it's also % mkii compatible. Somewhat weird that it's part of the % top level structure but it will be flattened anyway. - \getparameters[\??nh\currentstructuresection] - [ \c!textstyle=\structureheadparameterstrict\c!style, - \c!textcolor=\structureheadparameterstrict\c!color, - \c!numberstyle=\structureheadparameterstrict\c!style, - \c!numbercolor=\structureheadparameterstrict\c!color]% -\to \everydefinestructuresection - -\unexpanded\def\definestructuresection[#1]% + \getparameters[\??nh\currentsection] + [ \c!textstyle=\headparameterstrict\c!style, + \c!textcolor=\headparameterstrict\c!color, + \c!numberstyle=\headparameterstrict\c!style, + \c!numbercolor=\headparameterstrict\c!color]% +\to \everydefinesection + +\unexpanded\def\definesection[#1]% {\ifcsname\??nh#1\endcsname % redefinition is a rather fatal error \else - \edef\currentstructuresection{#1}% + \edef\currentsection{#1}% \global\advance\maxstructuredepth\plusone \setevalue{\??nh#1\c!level}{\the\maxstructuredepth}% \setstructurelevel{#1}{\the\maxstructuredepth}% - \normalexpanded{\noexpand\getparameters[\??nh#1][\s!parent=\??nh\laststructuresectionname]}% - \the\everydefinestructuresection + \normalexpanded{\noexpand\getparameters[\??nh#1][\s!parent=\??nh\lastsectionname]}% + \the\everydefinesection % so far for these default inheritances \definemarking[#1]% \ifnum\maxstructuredepth>\plusone - \normalexpanded{\noexpand\relatemarking[#1][\laststructuresectionname]}% so, the parent will reset the child + \normalexpanded{\noexpand\relatemarking[#1][\lastsectionname]}% so, the parent will reset the child \fi - \xdef\laststructuresectionname{#1}% + \xdef\lastsectionname{#1}% \fi} -\unexpanded\def\setupstructuresection - {\dotripleempty\dosetupstructuresection} +\unexpanded\def\setupsection + {\dotripleempty\dosetupsection} -\def\dosetupstructuresection[#1]% +\def\dosetupsection[#1]% {\doifdefinedelse{\??nh#1} - {\dodosetupstructuresection[#1]} - {\dodosetupstructuresection[\structuresectionheadsection{#1}]}} + {\dodosetupsection[#1]} + {\dodosetupsection[\sectionheadsection{#1}]}} -\def\dodosetupstructuresection[#1][#2][#3]% +\def\dodosetupsection[#1][#2][#3]% {\ifthirdargument \getparameters[\??nh#1#2][#3]% ? probably sectionblock \else @@ -154,307 +186,182 @@ % -2=text -1=manual 0=block 1+=structurelevel -\def\structuresectionlevel#1% +\def\sectionlevel#1% {\executeifdefined{\??nh#1\c!level}{-1}} \setvalue{\??nh\v!block\c!level}{0} \setvalue{\??nh\v!none \c!level}{-1} \setvalue{\??nh\v!text \c!level}{-2} -% head -> structurehead - -\let\currentstructurehead\empty -\newtoks\everystructureheadsetup - -\unexpanded\def\setupstructureheads{\dosingleargument\dosetupstructureheads} -\unexpanded\def\setupstructurehead {\dodoubleempty\dosetupstructurehead} -\unexpanded\def\definestructurehead{\dodoubleempty\dodefinestructurehead} - -\newif\ifsectionnumber % maybe conditional - -\def\dosetupstructureheads[#1]% - {\getparameters[\??nh][#1]% - \doifelse{\structureheadparameter\c!sectionnumber}\v!yes\sectionnumbertrue\sectionnumberfalse} - -\def\dosetupstructurehead[#1][#2]% we move the test for command being nothing elsewhere (needed, else hard to trace) - {\processcommalist[#1]{\dodosetupstructurehead{#2}}} - -\def\dodosetupstructurehead#1#2% - {\edef\currentstructurehead{#2}% - \getparameters[\??nh#2][#1]% - \the\everystructureheadsetup} - -\def\dodefinestructurehead[#1][#2]% - {\processcommalist[#1]{\dododefinestructurehead{#2}}} - -\def\dododefinestructurehead#1#2% #1: parameters|parent, #2: self - {\doifsomethingelse{#2} - {\doifassignmentelse{#1} - \dodefineuniquestructurehead - {\doifdefinedelse{\??nh#1\s!parent} % just a check - \dodefineclonedstructurehead - \dodefineerrorstructurehead}} - \dodefineerrorstructurehead - {#2}{#1}} - -\def\dodefineerrorstructurehead#1#2% - {\setvalue{#1}{\par error: #1 is undefined\par}} - -% deeptextcommand and deepnumbercommand are left undefined ! - -\def\dodefineuniquestructurehead#1#2% class, parent - {\def\currentstructurehead{#1}% - \presetlabeltext[#1=]% - \getparameters[\??nh#1][\c!label=#1,#2]% - \edef\currentstructureheaddefault{\structureheadparameter\c!default}% - \edef\currentstructureheadsection{\structureheadparameter\c!section}% - \edef\currentstructureheadparent - {\ifx\currentstructurehead\currentstructureheaddefault - \currentstructureheadsection - \else\ifx\currentstructureheaddefault\empty - \currentstructureheadsection - \else - \currentstructureheaddefault - \fi\fi}% - \normalexpanded{\noexpand\getparameters[\??nh#1][\s!parent=\??nh\currentstructureheadparent]}% - % or just \setevalue{\??nh#1\s!parent}{\??nh\currentstructureheadparent}% - \definemarking[#1] [\currentstructureheadsection]% - \definemarking[#1\v!number][\currentstructureheadsection]% - \setupmarking [#1] [\c!filtercommand=\sectionheadmarkingtitle {#1}]% - \setupmarking [#1\c!number][\c!filtercommand=\sectionheadmarkingnumber{#1}]% - \doifundefined{\??li#1}{\definelist[#1][\c!prefix=\v!no]}% definestructurelist ? - \the\everystructureheadsetup} +% head -> head \def\sectionheadmarkingtitle #1#2{\ctxlua{structures.marks.title("#1","#2")}} \def\sectionheadmarkingnumber#1#2{\ctxlua{structures.marks.number("#1","#2")}} -\def\dodefineclonedstructurehead#1#2% class parent - {\def\currentstructurehead{#1}% - \presetlabeltext[#1=]% - \doifelse{#1}{#2} - {\getparameters[\??nh#1][\c!label=#1]% - \doifundefined{\??li#1}{\definelist[#1][\c!prefix=\v!no]}}% definestructurelist ? - {\getparameters[\??nh#1][\s!parent=\??nh#2,\c!label=#1,\c!coupling=#2]% - \definemarking[#1] [#2]% - \definemarking[#1\v!number][#2\c!number]% - \doifundefined{\??li#1}{\definelist[#1][#2][\c!prefix=\v!no]}}% definestructurelist ? - \the\everystructureheadsetup} - -\appendtoks - \setstructurelevel\currentstructurehead{\thenamedstructureheadlevel\currentstructurehead}% - \doifelse{\structureheadparameter\c!ownnumber}\v!yes - {\setevalue\currentstructurehead{\dohandlestructureheadown[\currentstructurehead]}} - {\setevalue\currentstructurehead{\dohandlestructureheadnop[\currentstructurehead]}}% - \setevalue{\e!next \currentstructurehead}{\donextstructurehead [\currentstructurehead]}% - \setevalue{\e!start\currentstructurehead}{\dostartstructurehead[\currentstructurehead]}% - \setevalue{\e!stop \currentstructurehead}{\dostopstructurehead [\currentstructurehead]}% -\to \everystructureheadsetup - % todo, check if section is defined -\def\structuresectionheadcoupling#1% +\def\sectionheadcoupling#1% {\ifcsname\??nh#1\c!coupling\endcsname - \expandafter\structuresectionheadcoupling\csname\??nh#1\c!coupling\endcsname\else#1% + \expandafter\sectionheadcoupling\csname\??nh#1\c!coupling\endcsname\else#1% \fi} -\def\structuresectionheadsection#1% +\def\sectionheadsection#1% {\ifcsname\??nh#1\c!section\endcsname - \expandafter\structuresectionheadcoupling\csname\??nh#1\c!section\endcsname\else#1% + \expandafter\sectionheadcoupling\csname\??nh#1\c!section\endcsname\else#1% \fi} % head construction -\unexpanded\def\dohandlestructureheadown{\dodoubleempty\dodohandlestructureheadown} % [ref] {nr} {title} -\unexpanded\def\dohandlestructureheadnop{\dodoubleempty\dodohandlestructureheadnop} % [ref] {title} -\unexpanded\def\dostartstructurehead {\dotripleempty\dodostartstructurehead} % [settings] [userdata] +\unexpanded\def\dohandleheadown{\dodoubleempty\dodohandleheadown} % [ref] {nr} {title} +\unexpanded\def\dohandleheadnop{\dodoubleempty\dodohandleheadnop} % [ref] {title} +\unexpanded\def\dostarthead {\dotripleempty\dodostarthead} % [settings] [userdata] \newconditional\currentstructureown -\newtoks\everybeforestructurehead % hook, todo: before/after keys -\newtoks\everyafterstructurehead % hook, todo: before/after keys +\newtoks\everybeforehead % hook, todo: before/after keys +\newtoks\everyafterhead % hook, todo: before/after keys -\unexpanded\def\dodohandlestructureheadown[#1][#2]#3#4% +\unexpanded\def\dodohandleheadown[#1][#2]#3#4% {\settrue\currentstructureown - \dohandlestructurehead{#1}{\c!reference={#2},\c!ownnumber={#3},\c!title={#4}}{}} % name ref nr title -- - -% \unexpanded\def\dodohandlestructureheadnop[#1][#2]#3% -% {\setfalse\currentstructureown -% \dohandlestructurehead{#1}{\c!reference={#2},\c!title={#3}}{}} % name ref nr title -- + \dohandlehead{#1}{\c!reference={#2},\c!ownnumber={#3},\c!title={#4}}{}} % name ref nr title -- -\unexpanded\def\dodohandlestructureheadnop[#1][#2]% for taco: [key=value] variant +\unexpanded\def\dodohandleheadnop[#1][#2]% for taco: [key=value] variant {\setfalse\currentstructureown - \doifassignmentelse{#2}\dodohandlestructureheadnopA\dodohandlestructureheadnopB{#1}{#2}} + \doifassignmentelse{#2}\dodohandleheadnopA\dodohandleheadnopB{#1}{#2}} -\unexpanded\def\dodohandlestructureheadnopA#1#2% - {\dohandlestructurehead{#1}{#2}{}} +\unexpanded\def\dodohandleheadnopA#1#2% + {\dohandlehead{#1}{#2}{}} -\unexpanded\def\dodohandlestructureheadnopB#1#2#3% - {\dohandlestructurehead{#1}{\c!reference={#2},\c!title={#3}}{}} % name ref nr title -- +\unexpanded\def\dodohandleheadnopB#1#2#3% + {\dohandlehead{#1}{\c!reference={#2},\c!title={#3}}{}} % name ref nr title -- -\unexpanded\def\dodostartstructurehead[#1][#2][#3]% for the moment no grouping, too annoying with page breaks +\unexpanded\def\dodostarthead[#1][#2][#3]% for the moment no grouping, too annoying with page breaks {\setfalse\currentstructureown - %\globalpushmacro\currentstructurehead - \xdef\currentstructurehead{#1}% - \structureheadparameter\c!beforesection - \the\everybeforestructurehead - \dohandlestructurehead{#1}{#2}{#3}} % name -- -- -- userdata (we might move the tagged to here) + %\globalpushmacro\currenthead % this does not work out well + \xdef\currenthead{#1}% + \headparameter\c!beforesection + \the\everybeforehead + \dohandlehead{#1}{#2}{#3}} % name -- -- -- userdata (we might move the tagged to here) -\unexpanded\def\dostopstructurehead[#1]% +\unexpanded\def\dostophead[#1]% {\dostoptagged\dostoptagged - %\globalpopmacro\currentstructurehead - \xdef\currentstructurehead{#1}% recover - \structureheadparameter\c!aftersection - \the\everyafterstructurehead} + %\globalpopmacro\currenthead % so we do a hard recover + \xdef\currenthead{#1}% recover + \headparameter\c!aftersection + \the\everyafterhead} -\unexpanded\def\donextstructurehead[#1][#2][#3]% +\unexpanded\def\donexthead[#1][#2][#3]% obsolete {\setfalse\currentstructureown - \xdef\currentstructurehead{#1}% - \dohandlestructurehead{#1}{#2}{#3}} % name -- -- -- userdata + \xdef\currenthead{#1}% + \dohandlehead{#1}{#2}{#3}} % name -- -- -- userdata % \newconditional\structurereversesectionnumbers % todo: key/val -\newconditional\structureheadtolist -\newconditional\structureheaddoincrement -\newconditional\structureheaddoplace -\newconditional\structureheadleaveempty -\newconditional\structureheadhidden -\newconditional\structureheadshownumber -\newconditional\structureheadisdisplay - -\let\structureheadprefix\empty \def\structureheadprefixplus{+} - -% When do we reset the referenceprefix? This needs to be checked. Does it work -% at all? Todo: pushpop. - -% \def\setstructureheadreference -% {\edef\structureheadreference {\structureheadparameter\c!reference}% -% \edef\structureheadreferenceprefix{\structureheadparameter\c!prefix}% -% \ifx\structureheadreferenceprefix\empty -% \ifx\currentrefenceprefix\structureheadreferenceprefixplus -% \setupreferenceprefix[]% yes or no? only when set by structure -% \fi -% \else\ifx\structureheadreferenceprefix\structureheadreferenceprefixplus -% \ifx\structureheadreference\empty -% \expanded{\setupreferenceprefix[\structureheadreferenceprefixplus]}% -% \else -% \expanded{\setupreferenceprefix[\structureheadreference]}% we assume just one reference -% \fi -% \else -% \expanded{\setupreferenceprefix[\structureheadreferenceprefix]}% -% \fi\fi} - -% pop in stopsection commands unless empty - -\def\setstructureheadreference - {\edef\structureheadreference {\structureheadparameter\c!reference}% - \edef\structureheadreferenceprefix{\structureheadparameter\c!prefix}% - \ifx\structureheadreferenceprefix\empty - \let\structureheadreferenceprefix\referenceprefix +\newconditional\headtolist +\newconditional\headdoincrement +\newconditional\headdoplace +\newconditional\headleaveempty +\newconditional\headhidden +\newconditional\headshownumber +\newconditional\headisdisplay + +\let\headprefix\empty \def\headprefixplus{+} + +\def\setheadreference + {\edef\headreference {\headparameter\c!reference}% + \edef\headreferenceprefix{\headparameter\c!prefix}% + \ifx\headreferenceprefix\empty + \let\headreferenceprefix\referenceprefix \else - \setupreferenceprefix[\structureheadreferenceprefix]% currenty no pop + \setupreferenceprefix[\headreferenceprefix]% currenty no pop \fi} -\setvalue{\??nh:\c!incrementnumber:\v!yes }{\settrue \structureheaddoincrement\settrue \structureheadtolist} -\setvalue{\??nh:\c!incrementnumber:\v!no }{\setfalse\structureheaddoincrement\setfalse\structureheadtolist} -\setvalue{\??nh:\c!incrementnumber:\v!list }{\setfalse\structureheaddoincrement\settrue \structureheadtolist} -\setvalue{\??nh:\c!incrementnumber:\s!empty}{\settrue \structureheaddoincrement\settrue \structureheadtolist} +\setvalue{\??nh:\c!incrementnumber:\v!yes }{\settrue \headdoincrement\settrue \headtolist} +\setvalue{\??nh:\c!incrementnumber:\v!no }{\setfalse\headdoincrement\setfalse\headtolist} +\setvalue{\??nh:\c!incrementnumber:\v!list }{\setfalse\headdoincrement\settrue \headtolist} +\setvalue{\??nh:\c!incrementnumber:\s!empty}{\settrue \headdoincrement\settrue \headtolist} -\def\setstructureheadincrement - {\edef\currentstructureheadincrement{\structureheadparameter\c!incrementnumber}% - \ifcsname\??nh:\c!incrementnumber:\currentstructureheadincrement\endcsname - \csname\??nh:\c!incrementnumber:\currentstructureheadincrement\endcsname +\def\setheadincrement + {\edef\currentheadincrement{\headparameter\c!incrementnumber}% + \ifcsname\??nh:\c!incrementnumber:\currentheadincrement\endcsname + \csname\??nh:\c!incrementnumber:\currentheadincrement\endcsname \else - \settrue \structureheaddoincrement\settrue \structureheadtolist - % \filterstructureheadnumber + \settrue \headdoincrement\settrue \headtolist + % \filterheadnumber \fi} -\def\filterstructureheadnumber - {\settrue\structureheaddoincrement - \settrue\structureheadtolist +\def\filterheadnumber + {\settrue\headdoincrement + \settrue\headtolist \ifx\currentproduct\empty % todo : filter from other toc (number, file, title) - % use : \currentstructureheadincrement as spec + % use : \currentheadincrement as spec \fi} -% \def\setstructureheadplacement -% {\setfalse\structureheadleaveempty -% \settrue \structureheaddoplace -% \setfalse\structureheadhidden -% \processaction -% [\structureheadparameter\c!placehead] -% [ \v!yes=>, -% \v!empty=>\settrue\structureheadleaveempty, -% \v!no=>\settrue\structureheadleaveempty\setfalse\structureheaddoplace, -% \v!hidden=>\settrue\structureheadleaveempty\setfalse\structureheaddoplace\settrue\structureheadhidden]} - \setvalue{\??nh:\c!placehead:\v!yes}% - {\setfalse\structureheadleaveempty - \settrue \structureheaddoplace - \setfalse\structureheadhidden} + {\setfalse\headleaveempty + \settrue \headdoplace + \setfalse\headhidden} \setvalue{\??nh:\c!placehead:\v!empty}% - {\settrue \structureheadleaveempty - \settrue \structureheaddoplace - \setfalse\structureheadhidden} + {\settrue \headleaveempty + \settrue \headdoplace + \setfalse\headhidden} \setvalue{\??nh:\c!placehead:\v!no}% - {\settrue \structureheadleaveempty - \setfalse\structureheaddoplace - \setfalse\structureheadhidden} + {\settrue \headleaveempty + \setfalse\headdoplace + \setfalse\headhidden} \setvalue{\??nh:\c!placehead:\v!hidden}% - {\settrue \structureheadleaveempty - \setfalse\structureheaddoplace - \settrue \structureheadhidden} + {\settrue \headleaveempty + \setfalse\headdoplace + \settrue \headhidden} -\def\setstructureheadplacement +\def\setheadplacement {\executeifdefined - {\??nh:\c!placehead:\structureheadparameter\c!placehead} + {\??nh:\c!placehead:\headparameter\c!placehead} {\getvalue{\??nh:\c!placehead:\v!yes}}} -\def\setstructureheaddisplay - {\doifelsevalue{\??nh:\structureheadparameter\c!alternative}\v!horizontal - {\setfalse\structureheadisdisplay} - {\settrue \structureheadisdisplay}} +\def\setheaddisplay + {\doifelsevalue{\??nh:\headparameter\c!alternative}\v!horizontal + {\setfalse\headisdisplay} + {\settrue \headisdisplay}} \def\dosettructureheadnumbercontent {\setsystemmode \v!sectionnumber - \settrue\structureheadshownumber} + \settrue\headshownumber} \def\doresettructureheadnumbercontent {\resetsystemmode\v!sectionnumber - \setfalse\structureheadshownumber} + \setfalse\headshownumber} -\def\setstructureheadnumber +\def\setheadnumber {\ifsectionnumber - \doifelse{\structureblockparameter\c!number}\v!yes % todo - {\doifelse{\structureheadparameter\c!number}\v!yes - {\settrue\structureheadshownumber} - {\setfalse\structureheadshownumber}} - {\setfalse\structureheadshownumber}% + \doifelse{\sectionblockparameter\c!number}\v!yes % todo + {\doifelse{\headparameter\c!number}\v!yes + {\settrue\headshownumber} + {\setfalse\headshownumber}} + {\setfalse\headshownumber}% \else - \setfalse\structureheadshownumber + \setfalse\headshownumber \fi} -\unexpanded\def\thestructureheadsynchonization - {\pagetype[\currentstructureheadcoupling]% hm also number +\unexpanded\def\theheadsynchonization + {\pagetype[\currentheadcoupling]% hm also number \currentstructuresynchronize} -\unexpanded\def\setstructureheadmarking - {\normalexpanded{\noexpand\setmarking[\currentstructurehead]{\currentstructurelistnumber}}} - -% \unexpanded\def\fullstructureheadnumber{\labeltexts{\structureheadparameter\c!label}{\structurenumber}} % todo -% \def\fullstructureheadtitle {\structurevariable{titledata.title}} % no catcode! -% \unexpanded\def\fullstructureheadtitle{\structureautocatcodedget{titledata.title}{\structureheadparameter\s!catcodes}} +\unexpanded\def\setheadmarking + {\normalexpanded{\noexpand\setmarking[\currenthead]{\currentstructurelistnumber}}} \let\deepstructurenumbercommand\relax \let\deepstructuretitlecommand \relax -\unexpanded\def\fullstructureheadnumber - {\edef\currentstructureheadlabeltag{\currentstructureblock\c!label}% +\unexpanded\def\fullheadnumber + {\edef\currentheadlabeltag{\currentsectionblock\c!label}% \dostarttagged\t!sectionnumber\empty \labeltexts - {\structureheadparameter\currentstructureheadlabeltag} + {\headparameter\currentheadlabeltag} {\ifx\deepstructurenumbercommand\relax \structurenumber \else @@ -462,7 +369,7 @@ \fi}% \dostoptagged} -\unexpanded\def\fullstructureheadtitle +\unexpanded\def\fullheadtitle {\dostarttagged\t!sectiontitle\empty \ifx\deepstructuretitlecommand\relax \structuretitle @@ -471,39 +378,39 @@ \fi \dostoptagged} -\let\currentstructurehead \empty -\let\currentstructureheadcoupling\empty -\let\currentstructureheadsection \empty -\let\currentstructureheadlevel \!!zerocount -\let\currentstructureheadcounter \!!zerocount +\let\currenthead \empty +\let\currentheadcoupling\empty +\let\currentheadsection \empty +\let\currentheadlevel \!!zerocount +\let\currentheadcounter \!!zerocount % here we could inherit as well but it's a bit complex -\def\doregisterstructurehead#1#2#3% name data userdata +\def\doregisterhead#1#2#3% name data userdata {\structurecomponent - %[\c!label={\structureheadparameter\c!label}, % why { } - [\c!label={\structureheadparameter{\currentstructureblock\c!label}}, - \c!incrementnumber=\ifconditional\structureheaddoincrement\v!yes\else\v!no\fi, % not that needed - \c!saveinlist=\ifconditional\structureheadtolist\v!yes\else\v!no\fi, - \c!level=\currentstructureheadlevel, + %[\c!label={\headparameter\c!label}, % why { } + [\c!label={\headparameter{\currentsectionblock\c!label}}, + \c!incrementnumber=\ifconditional\headdoincrement\v!yes\else\v!no\fi, % not that needed + \c!saveinlist=\ifconditional\headtolist\v!yes\else\v!no\fi, + \c!level=\currentheadlevel, \c!name=#1, - \c!number=\ifconditional\structureheaddoincrement\ifconditional\structureheadshownumber\v!yes\else\v!no\fi\else\v!no\fi, + \c!number=\ifconditional\headdoincrement\ifconditional\headshownumber\v!yes\else\v!no\fi\else\v!no\fi, \c!bookmark=, \c!marking=, \c!list=, - \c!expansion=\structureheadparameter\c!expansion, - \c!xmlsetup=\structureheadparameter\c!xmlsetup, - \s!catcodes=\structureheadparameter\s!catcodes, - \c!sectionresetset=\structureheadparameter\c!sectionresetset, - \c!sectionseparatorset=\structureheadparameter\c!sectionseparatorset, - \c!sectionconversionset=\structureheadparameter\c!sectionconversionset, - \c!sectionconversion=\structureheadparameter\c!conversion, % just for compatibility - \c!sectionstarter=\structureheadparameter\c!sectionstarter, - \c!sectionstopper=\structureheadparameter\c!sectionstopper, - \c!sectionset=\structureheadparameter\c!sectionset, - \c!sectionsegments=\structureheadparameter\c!sectionsegments, - \c!reference=\structureheadreference, - \c!referenceprefix=\structureheadreferenceprefix, + \c!expansion=\headparameter\c!expansion, + \c!xmlsetup=\headparameter\c!xmlsetup, + \s!catcodes=\headparameter\s!catcodes, + \c!sectionresetset=\headparameter\c!sectionresetset, + \c!sectionseparatorset=\headparameter\c!sectionseparatorset, + \c!sectionconversionset=\headparameter\c!sectionconversionset, + \c!sectionconversion=\headparameter\c!conversion, % just for compatibility + \c!sectionstarter=\headparameter\c!sectionstarter, + \c!sectionstopper=\headparameter\c!sectionstopper, + \c!sectionset=\headparameter\c!sectionset, + \c!sectionsegments=\headparameter\c!sectionsegments, + \c!reference=\headreference, + \c!referenceprefix=\headreferenceprefix, \c!backreference=, \c!command=, #2]% @@ -517,8 +424,8 @@ \unexpanded\def\setupheadcomponentfont#1#2% {\dontconvertfont - \dosetstructureheadattributes\c!style\c!color - \dosetstructureheadattributes#1#2% + \dosetheadattributes\c!style\c!color + \dosetheadattributes#1#2% \setupinterlinespace} \fi @@ -526,37 +433,37 @@ \def\doplaceheadtext[#1]% {\dontleavehmode \begingroup - \edef\currentstructurehead{#1}% + \edef\currenthead{#1}% \setupheadcomponentfont\c!textstyle\c!textcolor \relax - \getspecificstructuretitle{\thenamedstructureheadlevel{#1}}% + \getspecificstructuretitle{\thenamedheadlevel{#1}}% \endgraf \endgroup} \def\doplaceheadnumber[#1]% {\dontleavehmode \begingroup - \edef\currentstructurehead{#1}% + \edef\currenthead{#1}% \setupheadcomponentfont\c!numberstyle\c!numbercolor \relax - \getfullstructurenumber{\thenamedstructureheadlevel{#1}}% + \getfullstructurenumber{\thenamedheadlevel{#1}}% \endgraf \endgroup} \ifdefined \else \let\presetnumberheadalternative\relax \fi -\def\dohandlestructurehead#1#2#3% name data userdata (we can move #1 to the caller) - {\xdef\currentstructurehead {#1}% - \xdef\currentstructureheadcoupling{\structuresectionheadcoupling\currentstructurehead}% - \xdef\currentstructureheadsection {\structuresectionheadsection \currentstructureheadcoupling}% - \xdef\currentstructureheadlevel {\structuresectionlevel \currentstructureheadsection}% - %writestatus\m!system{setup: \currentstructurehead,\currentstructureheadcoupling,\currentstructureheadsection,\currentstructureheadlevel}% +\def\dohandlehead#1#2#3% name data userdata (we can move #1 to the caller) + {\xdef\currenthead {#1}% + \xdef\currentheadcoupling{\sectionheadcoupling\currenthead}% + \xdef\currentheadsection {\sectionheadsection \currentheadcoupling}% + \xdef\currentheadlevel {\sectionlevel \currentheadsection}% + %writestatus\m!system{setup: \currenthead,\currentheadcoupling,\currentheadsection,\currentheadlevel}% % - \setstructureheadreference % does not do much currently - \setstructureheadincrement - \setstructureheadplacement - \setstructureheaddisplay - \setstructureheadnumber + \setheadreference % does not do much currently + \setheadincrement + \setheadplacement + \setheaddisplay + \setheadnumber % \unexpanded\def\\{\space}% \flushingcolumnfloatsfalse @@ -565,69 +472,69 @@ % % we might remove the lower level % - % not here, after optional \page: \doregisterstructurehead\currentstructurehead{#2}{#3}% + % not here, after optional \page: \doregisterhead\currenthead{#2}{#3}% % -% \xdef\currentstructureheadcounter{\currentstructurecounter}% lua call +% \xdef\currentheadcounter{\currentstructurecounter}% lua call % % \currentstructuresynchronize % will move % - \edef\numberheaddistance {\structureheadparameter\c!distance }% compatibility - \edef\numberheadalternative{\structureheadparameter\c!alternative}% compatibility + \edef\numberheaddistance {\headparameter\c!distance }% compatibility + \edef\numberheadalternative{\headparameter\c!alternative}% compatibility \presetnumberheadalternative % - \let\getstructureheadnumber\empty - \let\getstructureheadtitle \empty - \let\getstructureheadsyncs \empty - \ifconditional\structureheaddoincrement - \ifconditional\structureheaddoplace - \dostructureheadspacingbeforeyes - \doregisterstructurehead\currentstructurehead{#2}{#3}% after optional \page - \let\getstructureheadsyncs\thestructureheadsynchonization - \let\getstructureheadtitle\fullstructureheadtitle - \ifconditional\structureheadshownumber - \let\getstructureheadnumber\fullstructureheadnumber - \placestructureheadnumbertext + \let\getheadnumber\empty + \let\getheadtitle \empty + \let\getheadsyncs \empty + \ifconditional\headdoincrement + \ifconditional\headdoplace + \doheadspacingbeforeyes + \doregisterhead\currenthead{#2}{#3}% after optional \page + \let\getheadsyncs\theheadsynchonization + \let\getheadtitle\fullheadtitle + \ifconditional\headshownumber + \let\getheadnumber\fullheadnumber + \placeheadnumbertext \else - \placestructureheadtext + \placeheadtext \fi - \dostructureheadspacingafteryes - \else\ifconditional\structureheadhidden - \doregisterstructurehead\currentstructurehead{#2}{#3}% after optional \page - \let\getstructureheadsyncs\thestructureheadsynchonization - \placestructureheadhidden % only something when tracing + \doheadspacingafteryes + \else\ifconditional\headhidden + \doregisterhead\currenthead{#2}{#3}% after optional \page + \let\getheadsyncs\theheadsynchonization + \placeheadhidden % only something when tracing \else - \dostructureheadspacingbeforenop % toegevoegd ivm subpaginanr / tug sheets - \doregisterstructurehead\currentstructurehead{#2}{#3}% after optional \page - \let\getstructureheadsyncs\thestructureheadsynchonization - \placestructureheadempty % just flush 'm - \dostructureheadspacingafternop + \doheadspacingbeforenop % toegevoegd ivm subpaginanr / tug sheets + \doregisterhead\currenthead{#2}{#3}% after optional \page + \let\getheadsyncs\theheadsynchonization + \placeheadempty % just flush 'm + \doheadspacingafternop \fi\fi \else - \ifconditional\structureheaddoplace - \dostructureheadspacingbeforeyes - \doregisterstructurehead\currentstructurehead{#2}{#3}% after optional \page - \let\getstructureheadsyncs\thestructureheadsynchonization - \let\getstructureheadtitle\fullstructureheadtitle - \placestructureheadtext - \dostructureheadspacingafteryes - \else\ifconditional\structureheadhidden - \doregisterstructurehead\currentstructurehead{#2}{#3}% after optional \page - \let\getstructureheadsyncs\thestructureheadsynchonization - \placestructureheadhidden % only something when tracing + \ifconditional\headdoplace + \doheadspacingbeforeyes + \doregisterhead\currenthead{#2}{#3}% after optional \page + \let\getheadsyncs\theheadsynchonization + \let\getheadtitle\fullheadtitle + \placeheadtext + \doheadspacingafteryes + \else\ifconditional\headhidden + \doregisterhead\currenthead{#2}{#3}% after optional \page + \let\getheadsyncs\theheadsynchonization + \placeheadhidden % only something when tracing \else % do nothing / should be vbox to 0pt - \dostructureheadspacingbeforenop - \doregisterstructurehead\currentstructurehead{#2}{#3}% after optional \page - \let\getstructureheadsyncs\thestructureheadsynchonization - \placestructureheadempty % just flush 'm - \dostructureheadspacingafternop + \doheadspacingbeforenop + \doregisterhead\currenthead{#2}{#3}% after optional \page + \let\getheadsyncs\theheadsynchonization + \placeheadempty % just flush 'm + \doheadspacingafternop \fi\fi \fi \flushingcolumnfloatstrue \setfalse\ignorehandlepagebreak % ignorespaces prevents spaces creeping in when after=\dontleavehmode \dostarttagged\t!sectioncontent\empty - \ifconditional\structureheadisdisplay % \ifdisplaysectionhead + \ifconditional\headisdisplay % \ifdisplaysectionhead \ignorespaces \else \expandafter\GotoPar @@ -635,40 +542,40 @@ % typesetting -\unexpanded\def\placestructureheadnumbertext % dummy, will be overloaded - {\setstructureheadmarking - \getstructureheadnumber/\getstructureheadtitle - \getstructureheadsyncs} - -\unexpanded\def\placestructureheadtext % dummy, will be overloaded - {\setstructureheadmarking - \getstructureheadtitle - \getstructureheadsyncs} - -\unexpanded\def\placestructureheadempty % dummy, will be overloaded - {\setstructureheadmarking - \getstructureheadsyncs} - -\unexpanded\def\placestructureheadhidden - {\setxvalue{\currentstructurehead:sync}% - {\noexpand\setgvalue{\currentstructurehead:sync}{}% - \noexpand\pagetype[\currentstructureheadcoupling]% hm also number - \noexpand\setmarking[\currentstructureheadcoupling]{\currentstructurelistnumber}% +\unexpanded\def\placeheadnumbertext % dummy, will be overloaded + {\setheadmarking + \getheadnumber/\getheadtitle + \getheadsyncs} + +\unexpanded\def\placeheadtext % dummy, will be overloaded + {\setheadmarking + \getheadtitle + \getheadsyncs} + +\unexpanded\def\placeheadempty % dummy, will be overloaded + {\setheadmarking + \getheadsyncs} + +\unexpanded\def\placeheadhidden + {\setxvalue{\currenthead:sync}% + {\noexpand\setgvalue{\currenthead:sync}{}% + \noexpand\pagetype[\currentheadcoupling]% hm also number + \noexpand\setmarking[\currentheadcoupling]{\currentstructurelistnumber}% \currentstructuresynchronize}} -\def\synchronizestructurehead#1% +\def\synchronizehead#1% {\getvalue{#1:sync}} -\unexpanded\def\placerawheaddata [#1]{\synchronizestructurehead {#1}} -\unexpanded\def\placerawheadtext [#1]{\getspecificstructuretitle{\thenamedstructureheadlevel{#1}}} -\unexpanded\def\placerawheadnumber[#1]{\getfullstructurenumber {\thenamedstructureheadlevel{#1}}} +\unexpanded\def\placerawheaddata [#1]{\synchronizehead {#1}} +\unexpanded\def\placerawheadtext [#1]{\getspecificstructuretitle{\thenamedheadlevel{#1}}} +\unexpanded\def\placerawheadnumber[#1]{\getfullstructurenumber {\thenamedheadlevel{#1}}} % \setuphead[chapter][placehead=hidden] % \chapter {test} % -% %(\synchronizestructurehead{chapter}) % \getstructureheadsyncs -% %(\getfullstructurenumber{\thenamedstructureheadlevel{chapter}}) -% %(\getspecificstructuretitle{\thenamedstructureheadlevel{chapter}}) +% %(\synchronizehead{chapter}) % \getheadsyncs +% %(\getfullstructurenumber{\thenamedheadlevel{chapter}}) +% %(\getspecificstructuretitle{\thenamedheadlevel{chapter}}) % % (\placerawheaddata [chapter]) % (\placerawheadnumber[chapter]) @@ -679,55 +586,47 @@ \newcount\precedingstructurelevel \precedingstructurelevel\plusone \newconditional\ignorehandlepagebreak -\def\dostructureheadspacingbeforeyes - {\docheckstructureheadbefore - \dohandlestructureheadpagebreakyes - \structureheadparameter\c!inbetween - \dostarttagged\t!section\currentstructurehead} - -\def\dostructureheadspacingbeforenop - {\docheckstructureheadbefore - \dohandlestructureheadpagebreaknop - \structureheadparameter\c!inbetween - \dostarttagged\currentstructurehead\empty} - -% \def\emptystructureheadcorrection -% {\ifconditional\structureheadleaveempty % inlined \emptyheadcorrection (with after=\blank) -% \vskip-\lineheight -% \dosomebreak\nobreak % \penalty10000 in vspacing -% \kern\zeropoint -% \prevdepth\strutdepth -% \fi} - -\def\emptystructureheadcorrection - {\ifconditional\structureheadleaveempty % inlined \emptyheadcorrection (with after=\blank) +\def\doheadspacingbeforeyes + {\docheckheadbefore + \dohandleheadpagebreakyes + \headparameter\c!inbetween + \dostarttagged\t!section\currenthead} + +\def\doheadspacingbeforenop + {\docheckheadbefore + \dohandleheadpagebreaknop + \headparameter\c!inbetween + \dostarttagged\currenthead\empty} + +\def\emptyheadcorrection + {\ifconditional\headleaveempty % inlined \emptyheadcorrection (with after=\blank) \penalty10000 % first ... we need to adapt this all to vspacing \vskip-\lineheight \kern\zeropoint \prevdepth\strutdepth \fi} -\def\dostructureheadspacingafteryes - {\ifconditional\structureheadisdisplay +\def\doheadspacingafteryes + {\ifconditional\headisdisplay \dosomebreak\nobreak % needs to be adapted to vspacing - \emptystructureheadcorrection - \structureheadparameter\c!after + \emptyheadcorrection + \headparameter\c!after \fi} -\def\dostructureheadspacingafternop +\def\doheadspacingafternop {} -\newsignal\continuousstructureheadsignal +\newsignal\continuousheadsignal -\def\docheckstructureheadbefore#1% +\def\docheckheadbefore#1% {\ifhmode \scratchcounter\lastpenalty\unpenalty % no beauty in this - \ifdim\lastskip=\continuousstructureheadsignal + \ifdim\lastskip=\continuousheadsignal % no page break \ifconditional\ignorehandlepagebreak \setfalse\ignorehandlepagebreak \else - \global\precedingstructurelevel\currentstructureheadlevel + \global\precedingstructurelevel\currentheadlevel \nobreak \fi \global\settrue\continuoussectionhead @@ -741,9 +640,9 @@ #1% \fi} -\def\dodocheckstructureheadlayout#1#2% +\def\dodocheckheadlayout#1#2% {\doifelselayouttextline{#1} - {\doifsomething{\structureheadparameter#2}{\expanded{\setuplayouttext[#1][\c!state=\structureheadparameter#2]}}} + {\doifsomething{\headparameter#2}{\expanded{\setuplayouttext[#1][\c!state=\headparameter#2]}}} \donothing} \setvalue{\??nh:\??mk:n:\v!page }{} @@ -751,115 +650,68 @@ \setvalue{\??nh:\??mk:y:\v!page }{} % to be checked: {\resetcurrentstructuremarks} \setvalue{\??nh:\??mk:y:\v!reset}{\resetcurrentstructuremarks} -\def\docheckstructureheadlayout - {\doifelsenothing{\structureheadparameter\c!page} - {\getvalue{\??nh:\??mk:n:\structureheadparameter\c!marking}} - {\page[\structureheadparameter\c!page]% - \getvalue{\??nh:\??mk:y:\structureheadparameter\c!marking}% - \dodocheckstructureheadlayout\v!header\c!header - \dodocheckstructureheadlayout\v!text \c!text - \dodocheckstructureheadlayout\v!footer\c!footer}} +\def\docheckheadlayout + {\doifelsenothing{\headparameter\c!page} + {\getvalue{\??nh:\??mk:n:\headparameter\c!marking}} + {\page[\headparameter\c!page]% + \getvalue{\??nh:\??mk:y:\headparameter\c!marking}% + \dodocheckheadlayout\v!header\c!header + \dodocheckheadlayout\v!text \c!text + \dodocheckheadlayout\v!footer\c!footer}} -\def\currentstructurecounter {\ctxlua{structures.sections.depthnumber(\thenamedstructureheadlevel\currentstructurehead)}} -\def\previousstructurecounter{\ctxlua{structures.sections.depthnumber(\thenamedstructureheadlevel\currentstructurehead-1)}} +\def\currentstructurecounter {\ctxlua{structures.sections.depthnumber(\thenamedheadlevel\currenthead)}} +\def\previousstructurecounter{\ctxlua{structures.sections.depthnumber(\thenamedheadlevel\currenthead-1)}} -\def\dohandlestructureheadpagebreaknop - {\doifelse{\structureheadparameter\c!continue}\v!yes +\def\dohandleheadpagebreaknop + {\doifelse{\headparameter\c!continue}\v!yes {\ifnum\previousstructurecounter=\zerocount - \docheckstructureheadlayout + \docheckheadlayout \else\ifnum\currentstructurecounter>\zerocount - \docheckstructureheadlayout + \docheckheadlayout \fi\fi}% - {\docheckstructureheadlayout}} + {\docheckheadlayout}} -\def\dohandlestructureheadpagebreakyes - {%[[\currentstructurehead @\thenamedstructureheadlevel\currentstructurehead/prev:\previousstructurecounter/curr:\currentstructurecounter]] +\def\dohandleheadpagebreakyes + {%[[\currenthead @\thenamedheadlevel\currenthead/prev:\previousstructurecounter/curr:\currentstructurecounter]] \ifconditional\ignorehandlepagebreak \setfalse\ignorehandlepagebreak \else - \ifnum\lastpenalty>\zerocount +% \ifnum\lastpenalty>\zerocount % \global\pagebreakdisabledtrue - \fi +% \fi % beware, these numbers are not yet know here - \doifelse{\structureheadparameter\c!continue}\v!yes + \doifelse{\headparameter\c!continue}\v!yes {\ifnum\previousstructurecounter=\zerocount - \docheckstructureheadlayout + \docheckheadlayout \else\ifnum\currentstructurecounter>\zerocount - \docheckstructureheadlayout + \docheckheadlayout \fi\fi}% - {\docheckstructureheadlayout}% - \doifnot{\structureheadparameter\c!aligntitle}\v!float\flushsidefloats - \structureheadparameter\c!before + {\docheckheadlayout}% + \doifnot{\headparameter\c!aligntitle}\v!float\flushsidefloats + \headparameter\c!before \relax % \ifpagebreakdisabled % \global\pagebreakdisabledfalse % \else -% \dopreventbreakafterstructureheadauto % not ok as it binds the prev par +% \dopreventbreakafterheadauto % not ok as it binds the prev par % \fi - \doif{\structureheadparameter\c!aligntitle}\v!float\indent - \global\precedingstructurelevel\currentstructureheadlevel + \doif{\headparameter\c!aligntitle}\v!float\indent + \global\precedingstructurelevel\currentheadlevel \fi} -% the next one was: \somebreakmethod - - -% 0 = nothing, 1 = weighted, 2 = strict, 3 = vspacing +\settrue\autoheadbreak % todo: \vspacing[category:8] == keep_together -\setnewconstant\somestructureheadbreakmethod\plusthree - -% \def\dopreventbreakafterstructureheadauto % used after \c!before -% {\ifcase\somestructureheadbreakmethod -% % 0 = nothing -% \or -% % 1 = old weighted version -% \ifnum\currentstructureheadlevel>\precedingstructurelevel -% \dosomebreak{\penalty\numexpr20000+500*\currentstructureheadlevel\relax}% -% \else -% \dosomebreak\allowbreak % brr -% \fi -% \or -% % 2 = strict version -% \dosomebreak{\penalty\maxdimen}% -% \or -% % 3 = vspacing -% \vspacing[\v!samepage]% if preceded by ! then a loop -% \else -% % nothing -% \fi} -% -% \def\dopreventbreakafterstructureheadspec#1% see enumerations etc -% {\ifcase\somestructureheadbreakmethod -% % 0 = nothing -% \or -% % 1 = old weighted version -% \dosomebreak{\penalty\numexpr20000+500*(\currentstructureheadlevel+#1)\relax}% -% \or -% % 2 = strict version -% \dosomebreak{\penalty\maxdimen}% -% \or -% % 3 = vspacing -% \vspacing[\v!samepage]% -% \else -% % nothing -% \fi} -% -% todo: \vspacing[category:8] == keep_together - -\def\dopreventbreakafterstructureheadauto % used after \c!before - {\ifcase\somestructureheadbreakmethod - % 0 = nothing - \else - \vspacing[\v!samepage-\currentstructureheadlevel]% +\def\dopreventbreakafterheadauto % used after \c!before + {\ifconditonal\autoheadbreak + \vspacing[\v!samepage-\currentheadlevel]% \fi} -\def\dopreventbreakafterstructureheadspec#1% see enumerations etc - {\ifcase\somestructureheadbreakmethod - % 0 = nothing - \else - \vspacing[\v!samepage-\the\numexpr\currentstructureheadlevel+1\relax]% todo #1 +\def\dopreventbreakafterheadspec#1% see enumerations etc + {\ifconditonal\autoheadbreak + \vspacing[\v!samepage-\the\numexpr\currentheadlevel+1\relax]% todo #1 \fi} -\def\dohandlepagebreakX{\dopreventbreakafterstructureheadspec} % no \let so we can redefind +\def\dohandlepagebreakX{\dopreventbreakafterheadspec} % no \let so we can redefine % we do support negative numbers but it can have side effects that we won't % catch @@ -867,60 +719,44 @@ % \chapter{some} \setupheadnumber[chapter][3] \chapter{more} % \setupheadnumber[section][8] \section{b} \section{c} \setupheadnumber[section][-1] \section{d} -% \def\thecurrentstructureheadlevel#1% -% {\getcurrentstructurelevel{#1}} - -\def\thenamedstructureheadlevel#1% - {\structuresectionlevel{\structuresectionheadsection{\structuresectionheadcoupling{#1}}}} +\def\thenamedheadlevel#1% + {\sectionlevel{\sectionheadsection{\sectionheadcoupling{#1}}}} \unexpanded\def\setupheadnumber {\dodoubleargument\dosetupheadnumber} \def\dosetupheadnumber[#1][#2]% todo: reset if at other level - {\setstructurenumber{\thenamedstructureheadlevel{#1}}{#2}} + {\setstructurenumber{\thenamedheadlevel{#1}}{#2}} -\def\currentstructureheadnumber{0} % ==> \currentheadnumber +\def\currentheadnumber{0} % ==> \currentheadnumber \unexpanded\def\determineheadnumber[#1]% - {\xdef\currentstructureheadnumber{\getstructurenumber{\thenamedstructureheadlevel{#1}}}} + {\xdef\currentheadnumber{\getstructurenumber{\thenamedheadlevel{#1}}}} % The previous macro is been replaced by the expandable: -\def\namedheadnumber #1{\getstructurenumber {\thenamedstructureheadlevel{#1}}} -\def\somenamedheadnumber#1#2{\getsomestructurenumber{\thenamedstructureheadlevel{#1}}{#2}} +\def\namedheadnumber #1{\getstructurenumber {\thenamedheadlevel{#1}}} +\def\somenamedheadnumber#1#2{\getsomestructurenumber{\thenamedheadlevel{#1}}{#2}} -\unexpanded\def\structureheadnumber - {\dodoubleempty\dostructureheadnumber} +\unexpanded\def\headnumber + {\dodoubleempty\doheadnumber} -\def\dostructureheadnumber[#1][#2]% simple case is just a number - {\getsomefullstructurenumber{\iffirstargument\thenamedstructureheadlevel{#1}\fi}{#2}} +\def\doheadnumber[#1][#2]% simple case is just a number + {\getsomefullstructurenumber{\iffirstargument\thenamedheadlevel{#1}\fi}{#2}} -\def\somestructureheadnumber - {\dodoubleempty\dosomestructureheadnumber} +\def\someheadnumber + {\dodoubleempty\dosomeheadnumber} -\def\dosomestructureheadnumber[#1][#2]% +\def\dosomeheadnumber[#1][#2]% {\dontleavehmode \begingroup - \edef\currentstructurehead{#1}% - \getsomefullstructurenumber{\thenamedstructureheadlevel{#1}}{#2}% + \edef\currenthead{#1}% + \getsomefullstructurenumber{\thenamedheadlevel{#1}}{#2}% \endgroup} -% compatibility code (after all, we might offer different structure handlers as well -% but we might as well remove the 'structure' substring at some point (we needed it -% in order to test the old and new methods alongside) - -\let\definesectionblock \definestructureblock -\let\definesection \definestructuresection -\let\setupsection \setupstructuresection -\let\setupheads \setupstructureheads -\let\definehead \definestructurehead -\let\setuphead \setupstructurehead -\let\headnumber \structureheadnumber -\let\setupsectionblock \setupstructureblock - \let\sectioncountervalue\structurevalue -\def\currentheadnumber {\currentstructureheadnumber} +\def\currentheadnumber {\currentheadnumber} \def\currentheadtext {obsolete, use marks} % list references, will be redone in lua when we need it diff --git a/tex/context/base/strc-swd.mkii b/tex/context/base/strc-swd.mkii index 4a71b8781..1525ab597 100644 --- a/tex/context/base/strc-swd.mkii +++ b/tex/context/base/strc-swd.mkii @@ -5,7 +5,7 @@ %D subtitle=Section Worlds, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/strc-syn.mkii b/tex/context/base/strc-syn.mkii index 39acb7d91..2ba5c9467 100644 --- a/tex/context/base/strc-syn.mkii +++ b/tex/context/base/strc-syn.mkii @@ -5,7 +5,7 @@ %D subtitle=Synonyms and Sorts, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/strc-syn.mkiv b/tex/context/base/strc-syn.mkiv index f063ef087..7d9ef17b4 100644 --- a/tex/context/base/strc-syn.mkiv +++ b/tex/context/base/strc-syn.mkiv @@ -5,7 +5,7 @@ %D subtitle=Synonyms and Sorting, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE / Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/strc-tag.lua b/tex/context/base/strc-tag.lua index f1381dad5..3815deef0 100644 --- a/tex/context/base/strc-tag.lua +++ b/tex/context/base/strc-tag.lua @@ -26,21 +26,23 @@ local a_tagged = attributes.private('tagged') local unsetvalue = attributes.unsetvalue local codeinjections = backends.codeinjections -local taglist = allocate() -local properties = allocate() -local labels = allocate() -local stack = { } -local chain = { } -local ids = { } -local enabled = false -local tagdata = { } -- used in export - -local tags = structures.tags -tags.taglist = taglist -- can best be hidden -tags.labels = labels -tags.data = tagdata - -local properties = allocate { +local taglist = allocate() +local properties = allocate() +local labels = allocate() +local stack = { } +local chain = { } +local ids = { } +local enabled = false +local tagdata = { } -- used in export +local tagmetadata = { } -- used in export + +local tags = structures.tags +tags.taglist = taglist -- can best be hidden +tags.labels = labels +tags.data = tagdata +tags.metadata = tagmetadata + +local properties = allocate { document = { pdf = "Div", nature = "display" }, @@ -84,6 +86,7 @@ local properties = allocate { table = { pdf = "Table", nature = "display" }, tablerow = { pdf = "TR", nature = "display" }, tablecell = { pdf = "TD", nature = "mixed" }, + tabulate = { pdf = "Table", nature = "display" }, tabulaterow = { pdf = "TR", nature = "display" }, tabulatecell = { pdf = "TD", nature = "mixed" }, @@ -99,9 +102,13 @@ local properties = allocate { delimited = { pdf = "Quote", nature = "inline" }, subsentence = { pdf = "Span", nature = "inline" }, + label = { pdf = "Span", nature = "mixed" }, + number = { pdf = "Span", nature = "mixed" }, + float = { pdf = "Div", nature = "display" }, -- Figure - floatcaption = { pdf = "Caption", nature = "display" }, - floattag = { pdf = "Span", nature = "mixed" }, + floatcaption = { pdf = "Caption", nature = "mixed" }, + floatlabel = { pdf = "Span", nature = "inline" }, + floatnumber = { pdf = "Span", nature = "inline" }, floattext = { pdf = "Span", nature = "mixed" }, floatcontent = { pdf = "P", nature = "mixed" }, @@ -110,7 +117,9 @@ local properties = allocate { formulaset = { pdf = "Div", nature = "display" }, formula = { pdf = "Div", nature = "display" }, -- Formula - formulatag = { pdf = "Span", nature = "mixed" }, + formulacaption = { pdf = "Span", nature = "mixed" }, + formulalabel = { pdf = "Span", nature = "mixed" }, + formulanumber = { pdf = "Span", nature = "mixed" }, formulacontent = { pdf = "P", nature = "display" }, subformula = { pdf = "Div", nature = "display" }, @@ -136,12 +145,25 @@ local properties = allocate { mfrac = { pdf = "Span", nature = "display" }, mroot = { pdf = "Span", nature = "display" }, msqrt = { pdf = "Span", nature = "display" }, + mfenced = { pdf = "Span", nature = "display" }, + + mtable = { pdf = "Table", nature = "display" }, -- might change + mtr = { pdf = "TR", nature = "display" }, -- might change + mtd = { pdf = "TD", nature = "display" }, -- might change + + ignore = { pdf = "Span", nature = "mixed" }, + metadata = { pdf = "Div", nature = "display" }, } tags.properties = properties -function tags.settagproperty(tag,key,value) +local lasttags = { } +local userdata = { } + +tags.userdata = userdata + +function tags.setproperty(tag,key,value) local p = properties[tag] if p then p[key] = value @@ -150,10 +172,25 @@ function tags.settagproperty(tag,key,value) end end -local lasttags = { } -local userdata = { } +function tags.registerdata(data) + local fulltag = chain[nstack] + if fulltag then + tagdata[fulltag] = data + end +end -tags.userdata = userdata +local metadata + +function tags.registermetadata(data) + local d = settings_to_hash(data) + if metadata then + table.merge(metadata,d) + else + metadata = d + end +end + +local nstack = 0 function tags.start(tag,specification) local label, detail, user @@ -175,29 +212,36 @@ function tags.start(tag,specification) local n = (ids[fulltag] or 0) + 1 ids[fulltag] = n lasttags[tag] = n ---~ print("SETTING",tag,n) local completetag = fulltag .. "-" .. n - chain[#chain+1] = completetag -- insert(chain,tag .. ":" .. n) - stack[#stack+1] = t -- insert(stack,t) - taglist[t] = { unpack(chain) } -- we can add key values for alt and actualtext if needed + nstack = nstack + 1 + chain[nstack] = completetag + stack[nstack] = t + -- a copy as we can add key values for alt and actualtext if needed: + taglist[t] = { unpack(chain,1,nstack) } + -- if user and user ~= "" then -- maybe we should merge this into taglist or whatever ... anyway there is room to optimize -- taglist.userdata = settings_to_hash(user) userdata[completetag] = settings_to_hash(user) end + if metadata then + tagmetadata[completetag] = metadata + metadata = nil + end texattribute[a_tagged] = t return t end function tags.stop() - local t = stack[#stack] stack[#stack] = nil -- local t = remove(stack) + if nstack > 0 then + nstack = nstack -1 + end + local t = stack[nstack] if not t then if trace_tags then - report_tags("ignoring end tag, previous chain: %s",#chain > 0 and concat(chain[#chain]) or "none") + report_tags("ignoring end tag, previous chain: %s",nstack > 0 and concat(chain[nstack],"",1,nstack) or "none") end t = unsetvalue - else - chain[#chain] = nil -- remove(chain) end texattribute[a_tagged] = t return t @@ -216,14 +260,7 @@ function tags.last(tag) end function tags.lastinchain() - return chain[#chain] -end - -function tags.registerdata(data) - local fulltag = chain[#chain] - if fulltag then - tagdata[fulltag] = data - end + return chain[nstack] end function structures.atlocation(str) @@ -237,9 +274,11 @@ end statistics.register("structure elements", function() if enabled then - return format("%s element chains identified",#taglist) - else - return nil + if nstack > 0 then + return format("%s element chains identified, open chain: %s ",#taglist,concat(chain," => ",1,nstack)) + else + return format("%s element chains identified",#taglist) + end end end) @@ -249,3 +288,7 @@ directives.register("backend.addtags", function(v) enabled = true end end) + +commands.starttag = tags.start +commands.stoptag = tags.stop +commands.settagproperty = tags.setproperty diff --git a/tex/context/base/strc-tag.mkiv b/tex/context/base/strc-tag.mkiv index 8bc8d9f69..40ded256e 100644 --- a/tex/context/base/strc-tag.mkiv +++ b/tex/context/base/strc-tag.mkiv @@ -5,7 +5,7 @@ %D subtitle=Tags, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -67,6 +67,11 @@ \def\t!tabulaterow {tabulaterow} % TR \def\t!tabulatecell {tabulatecell} % TD +\def\t!math {math} % math +\def\t!mathtable {mtable} % Table +\def\t!mathtablerow {mtr} % TR +\def\t!mathtablecell {mtd} % TD + \def\t!list {list} % TOC \def\t!listitem {listitem} % TOCI \def\t!listtag {listtag} % Lbl @@ -80,8 +85,9 @@ \def\t!float {float} % Div \def\t!floatcaption {floatcaption} % Caption -\def\t!floattag {floattag} % Span +\def\t!floatlabel {floatlabel} % Span \def\t!floattext {floattext} % Span +\def\t!floatnumber {floatnumber} % Span \def\t!floatcontent {floatcontent} % P \def\t!image {image} % P @@ -90,7 +96,9 @@ \def\t!formulaset {formulaset} % Div \def\t!formula {formula} % Div -\def\t!formulatag {formulatag} % Span +\def\t!formulacaption {formulacaption} % Span +\def\t!formulalabel {formulalabel} % Span +\def\t!formulanumber {formulanumber} % P \def\t!formulacontent {formulacontent} % P \def\t!subformula {subformula} % Div @@ -99,6 +107,13 @@ \def\t!margintext {margintext} % Span \def\t!margintextblock {margintextblock} % Div +% we might opt for verbose variants so this is experimental: + +\def\t!label {label} % Span +\def\t!number {number} % Span + +\def\t!ignore {ignore} % Span + % \setuptaglabeltext % [en] % [\t!document=document] @@ -111,8 +126,8 @@ \def\setelementbackendtag{\dodoubleargument\dosetelementbackendtag} \def\setelementnature {\dodoubleargument\dosetelementnature} -\def\dosetelementbackendtag[#1][#2]{\ctxlua{structures.tags.settagproperty("#1","backend","#2")}} -\def\dosetelementnature [#1][#2]{\ctxlua{structures.tags.settagproperty("#1","nature", "#2")}} +\def\dosetelementbackendtag[#1][#2]{\ctxcommand{settagproperty("#1","backend","#2")}} +\def\dosetelementnature [#1][#2]{\ctxcommand{settagproperty("#1","nature", "#2")}} % todo: indirect macro for trialtypesetting @@ -123,13 +138,13 @@ \unexpanded\def\renostartelement{\dodoubleempty\nonostartelement} \unexpanded\def\dodostartelement[#1][#2]% - {\ctxlua{structures.tags.start("#1",{ + {\ctxcommand{starttag("#1",{ label = "\dogetupsometaglabeltext{#1}", userdata = \!!bs#2\!!es, })}} \unexpanded\def\dodostopelement - {\ctxlua{structures.tags.stop()}} + {\ctxcommand{stoptag()}} \unexpanded\def\nonostartelement[#1][#2]{} \unexpanded\def\nonostopelement {} @@ -140,13 +155,13 @@ \def\dodostoptagged {\iftrialtypesetting\expandafter\nododostoptagged \else\expandafter\dododostoptagged \fi} \def\dododostarttagged#1#2% - {\ctxlua{structures.tags.start("#1",{ + {\ctxcommand{starttag("#1",{ label = "\dogetupsometaglabeltext{#1}", detail = "#2", })}} \def\dododostoptagged - {\ctxlua{structures.tags.stop()}} + {\ctxcommand{stoptag()}} \def\nododostarttagged#1#2{} \def\nododostoptagged {} @@ -217,4 +232,50 @@ \def\doifinelementelse#1% {\ctxcommand{testcase(structures.atlocation("#1"))}} +\def\taggedlabeltexts#1#2#3% experimental: label, numberdetail, numbercontent + {\begingroup + \dostarttagged\t!label{#1}% + \labeltexts{#1}% + {\dostoptagged + \dostarttagged\t!number{#2}% + #3% + \dostoptagged + \dostarttagged\t!label{#1}}% + \dostoptagged + \endgroup} + +\def\namedtaggedlabeltexts#1#2#3#4#5% experimental: labeltag label numbertag numberdetail numbercontent + {\begingroup + \dostarttagged{#1}{#2}% + \labeltexts{#2}% + {\dostoptagged + \dostarttagged{#3}{#4}% + #5% + \dostoptagged + \dostarttagged{#1}{#2}}% + \dostoptagged + \endgroup} + +%D Metadata is added after the following structure element so +%D here we get some as child of the document root and some as child +%D of the chapter element. +%D +%D \settaggedmetadata[title=Hello World!,author=Hans Hagen] +%D +%D \starttyping +%D \starttext +%D \startelement[ignore] +%D \input tufte +%D \stopelement +%D \par \input ward \par +%D \settaggedmetadata[whatever=Again and Again] +%D \startchapter[title=test] +%D \input ward +%D \stopchapter +%D \stoptext +%D \stoptyping + +\def\settaggedmetadata[#1]% + {\ctxlua{structures.tags.registermetadata(\!!bs#1\!!es)}} + \protect diff --git a/tex/context/base/strc-xml.mkiv b/tex/context/base/strc-xml.mkiv index 9696c2e06..3f9b4ef81 100644 --- a/tex/context/base/strc-xml.mkiv +++ b/tex/context/base/strc-xml.mkiv @@ -5,7 +5,7 @@ %D subtitle=XML Processing, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE / Hans Hagen] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -62,7 +62,7 @@ % test.tex -\setupstructurehead[chapter][expansion=xml] +\setuphead[chapter][expansion=xml] \startxmlsetups xml:demo:define:base \xmlsetsetup{demo}{document|section|p|b|i}{xml:demo:*} diff --git a/tex/context/base/supp-ali.mkii b/tex/context/base/supp-ali.mkii index 8727efbb2..c4a1aadc5 100644 --- a/tex/context/base/supp-ali.mkii +++ b/tex/context/base/supp-ali.mkii @@ -5,7 +5,7 @@ %D subtitle=Alignment, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/supp-ali.mkiv b/tex/context/base/supp-ali.mkiv index 1bd31eb78..54a7b77e4 100644 --- a/tex/context/base/supp-ali.mkiv +++ b/tex/context/base/supp-ali.mkiv @@ -5,7 +5,7 @@ %D subtitle=Alignment, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/supp-box.mkii b/tex/context/base/supp-box.mkii index 8cdea8620..55641fd63 100644 --- a/tex/context/base/supp-box.mkii +++ b/tex/context/base/supp-box.mkii @@ -5,7 +5,7 @@ %D subtitle=Boxes, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/supp-box.mkiv b/tex/context/base/supp-box.mkiv index f449e1d76..a1d3eb15d 100644 --- a/tex/context/base/supp-box.mkiv +++ b/tex/context/base/supp-box.mkiv @@ -5,7 +5,7 @@ %D subtitle=Boxes, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/supp-dir.mkii b/tex/context/base/supp-dir.mkii index 41cd1b56f..f4f294903 100644 --- a/tex/context/base/supp-dir.mkii +++ b/tex/context/base/supp-dir.mkii @@ -5,7 +5,7 @@ %D subtitle=Directional Things, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/supp-dir.mkiv b/tex/context/base/supp-dir.mkiv index dce47a178..6251012b6 100644 --- a/tex/context/base/supp-dir.mkiv +++ b/tex/context/base/supp-dir.mkiv @@ -5,7 +5,7 @@ %D subtitle=Directional Things, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/supp-emp.mkii b/tex/context/base/supp-emp.mkii index 15489bca7..ba9e09e3a 100644 --- a/tex/context/base/supp-emp.mkii +++ b/tex/context/base/supp-emp.mkii @@ -5,7 +5,7 @@ %D subtitle=\EMTEX\ specials to \PDF\ conversion, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/supp-eps.mkii b/tex/context/base/supp-eps.mkii index 5684b25dd..fb99469c5 100644 --- a/tex/context/base/supp-eps.mkii +++ b/tex/context/base/supp-eps.mkii @@ -5,7 +5,7 @@ %D subtitle=\EPS\ tools, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/supp-fil.mkii b/tex/context/base/supp-fil.mkii index fc0492442..b76dfb901 100644 --- a/tex/context/base/supp-fil.mkii +++ b/tex/context/base/supp-fil.mkii @@ -5,7 +5,7 @@ %D subtitle=Files, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/supp-fil.mkiv b/tex/context/base/supp-fil.mkiv index 6b9af21ce..93d8d4e4a 100644 --- a/tex/context/base/supp-fil.mkiv +++ b/tex/context/base/supp-fil.mkiv @@ -5,7 +5,7 @@ %D subtitle=Files, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -39,8 +39,8 @@ \def\f!parentpath {..} \fi -\def\openinputfile #1#2{\immediate\openin #1={#2}} \def\closeinputfile #1{\immediate\closein #1} -\def\openoutputfile#1#2{\immediate\openout#1={#2}} \def\closeoutputfile#1{\immediate\closeout#1} +\def\openinputfile #1#2{\immediate\openin #1={#2}\relax} \def\closeinputfile #1{\immediate\closein #1\relax} +\def\openoutputfile#1#2{\immediate\openout#1={#2}\relax} \def\closeoutputfile#1{\immediate\closeout#1\relax} %D \macros %D {pushendofline,popendofline} diff --git a/tex/context/base/supp-fun.mkii b/tex/context/base/supp-fun.mkii index 6b2643703..9bba4f5a8 100644 --- a/tex/context/base/supp-fun.mkii +++ b/tex/context/base/supp-fun.mkii @@ -5,7 +5,7 @@ %D subtitle=Fun Stuff, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/supp-fun.mkiv b/tex/context/base/supp-fun.mkiv index a8db3b634..3a1c7f2ea 100644 --- a/tex/context/base/supp-fun.mkiv +++ b/tex/context/base/supp-fun.mkiv @@ -5,7 +5,7 @@ %D subtitle=Fun Stuff, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/supp-lat.mkii b/tex/context/base/supp-lat.mkii index 576121327..343a7674c 100644 --- a/tex/context/base/supp-lat.mkii +++ b/tex/context/base/supp-lat.mkii @@ -5,7 +5,7 @@ %D subtitle=General, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/supp-mat.mkii b/tex/context/base/supp-mat.mkii index 1a51164e6..e8a34fc90 100644 --- a/tex/context/base/supp-mat.mkii +++ b/tex/context/base/supp-mat.mkii @@ -5,7 +5,7 @@ %D subtitle=Math, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/supp-mat.mkiv b/tex/context/base/supp-mat.mkiv index e441cbc28..944d1a9e0 100644 --- a/tex/context/base/supp-mat.mkiv +++ b/tex/context/base/supp-mat.mkiv @@ -5,7 +5,7 @@ %D subtitle=Math, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/supp-mis.mkii b/tex/context/base/supp-mis.mkii index f3bde453b..bc511e518 100644 --- a/tex/context/base/supp-mis.mkii +++ b/tex/context/base/supp-mis.mkii @@ -5,7 +5,7 @@ %D subtitle=Missing (For Generic Use), %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/supp-mpe.mkii b/tex/context/base/supp-mpe.mkii index f28176292..a4ebef997 100644 --- a/tex/context/base/supp-mpe.mkii +++ b/tex/context/base/supp-mpe.mkii @@ -5,7 +5,7 @@ %D subtitle=METAPOST Special Extensions, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/supp-mps.mkii b/tex/context/base/supp-mps.mkii index b071ffe72..3991280e6 100644 --- a/tex/context/base/supp-mps.mkii +++ b/tex/context/base/supp-mps.mkii @@ -5,7 +5,7 @@ %D subtitle=\METAPOST\ Inclusion, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/supp-mrk.mkii b/tex/context/base/supp-mrk.mkii index eb1865471..b9d476c2a 100644 --- a/tex/context/base/supp-mrk.mkii +++ b/tex/context/base/supp-mrk.mkii @@ -5,7 +5,7 @@ %D subtitle=Marks, %D author=Jim Fox / Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/supp-num.mkii b/tex/context/base/supp-num.mkii index 742349753..5e35a20b0 100644 --- a/tex/context/base/supp-num.mkii +++ b/tex/context/base/supp-num.mkii @@ -5,7 +5,7 @@ %D subtitle=Numbers, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/supp-num.mkiv b/tex/context/base/supp-num.mkiv index 68b775403..271e2588a 100644 --- a/tex/context/base/supp-num.mkiv +++ b/tex/context/base/supp-num.mkiv @@ -5,7 +5,7 @@ %D subtitle=Numbers, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/supp-pat.mkii b/tex/context/base/supp-pat.mkii index 8cd4dd072..425eae215 100644 --- a/tex/context/base/supp-pat.mkii +++ b/tex/context/base/supp-pat.mkii @@ -5,7 +5,7 @@ %D subtitle=Patterns, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/supp-pdf.mkii b/tex/context/base/supp-pdf.mkii index 4d3619d4b..4dd2db776 100644 --- a/tex/context/base/supp-pdf.mkii +++ b/tex/context/base/supp-pdf.mkii @@ -5,7 +5,7 @@ %D subtitle=\METAPOST\ to \PDF\ conversion, %D author=Hans Hagen \& others (see text), %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/supp-ran.mkii b/tex/context/base/supp-ran.mkii index 0c07099ed..0a39026bf 100644 --- a/tex/context/base/supp-ran.mkii +++ b/tex/context/base/supp-ran.mkii @@ -5,7 +5,7 @@ %D subtitle=Random Number Generation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/supp-ran.mkiv b/tex/context/base/supp-ran.mkiv index 500170ab0..a04d28247 100644 --- a/tex/context/base/supp-ran.mkiv +++ b/tex/context/base/supp-ran.mkiv @@ -5,7 +5,7 @@ %D subtitle=Random Number Generation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/supp-spe.mkii b/tex/context/base/supp-spe.mkii index 8cb8e2ac1..4625695c7 100644 --- a/tex/context/base/supp-spe.mkii +++ b/tex/context/base/supp-spe.mkii @@ -5,7 +5,7 @@ %D subtitle=Specials, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/supp-tpi.mkii b/tex/context/base/supp-tpi.mkii index 9b2ac9328..16e423596 100644 --- a/tex/context/base/supp-tpi.mkii +++ b/tex/context/base/supp-tpi.mkii @@ -5,7 +5,7 @@ %D subtitle=\TPIC\ Conversion, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/supp-vis.mkii b/tex/context/base/supp-vis.mkii index f38c8e1e3..22a745b13 100644 --- a/tex/context/base/supp-vis.mkii +++ b/tex/context/base/supp-vis.mkii @@ -5,7 +5,7 @@ %D subtitle=Visualization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/supp-vis.mkiv b/tex/context/base/supp-vis.mkiv index f38c8e1e3..22a745b13 100644 --- a/tex/context/base/supp-vis.mkiv +++ b/tex/context/base/supp-vis.mkiv @@ -5,7 +5,7 @@ %D subtitle=Visualization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/symb-cow.mkii b/tex/context/base/symb-cow.mkii index fac6ca485..933a00c45 100644 --- a/tex/context/base/symb-cow.mkii +++ b/tex/context/base/symb-cow.mkii @@ -5,7 +5,7 @@ %D subtitle=Cow Symbols, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/symb-cow.mkiv b/tex/context/base/symb-cow.mkiv index adfd484d8..59eabae28 100644 --- a/tex/context/base/symb-cow.mkiv +++ b/tex/context/base/symb-cow.mkiv @@ -5,7 +5,7 @@ %D subtitle=Cow Symbols, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/symb-eur.mkii b/tex/context/base/symb-eur.mkii index 400e88ac5..67023ec91 100644 --- a/tex/context/base/symb-eur.mkii +++ b/tex/context/base/symb-eur.mkii @@ -5,7 +5,7 @@ %D subtitle=Adobe Euro Symbols, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/symb-eur.mkiv b/tex/context/base/symb-eur.mkiv index 4ec5a8931..19a88c8fa 100644 --- a/tex/context/base/symb-eur.mkiv +++ b/tex/context/base/symb-eur.mkiv @@ -5,7 +5,7 @@ %D subtitle=Adobe Euro Symbols, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/symb-glm.mkii b/tex/context/base/symb-glm.mkii index 0b01ca7df..ff94bfe7f 100644 --- a/tex/context/base/symb-glm.mkii +++ b/tex/context/base/symb-glm.mkii @@ -5,7 +5,7 @@ %D subtitle=Guillemots, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/symb-ini.mkii b/tex/context/base/symb-ini.mkii index 1df1fe688..3154c8a04 100644 --- a/tex/context/base/symb-ini.mkii +++ b/tex/context/base/symb-ini.mkii @@ -5,7 +5,7 @@ %D subtitle=Basic Symbols Commands, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/symb-ini.mkiv b/tex/context/base/symb-ini.mkiv index 8282649b0..182840ed5 100644 --- a/tex/context/base/symb-ini.mkiv +++ b/tex/context/base/symb-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=Basic Symbols Commands, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/symb-jmn.mkii b/tex/context/base/symb-jmn.mkii index 392cac552..aea2dce7b 100644 --- a/tex/context/base/symb-jmn.mkii +++ b/tex/context/base/symb-jmn.mkii @@ -5,7 +5,7 @@ %D subtitle=Special Navigational Symbols, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/symb-jmn.mkiv b/tex/context/base/symb-jmn.mkiv index 593e3e375..d66e0a332 100644 --- a/tex/context/base/symb-jmn.mkiv +++ b/tex/context/base/symb-jmn.mkiv @@ -5,7 +5,7 @@ %D subtitle=Special Navigational Symbols, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/symb-mis.mkii b/tex/context/base/symb-mis.mkii index 9921fa94f..dacb816b4 100644 --- a/tex/context/base/symb-mis.mkii +++ b/tex/context/base/symb-mis.mkii @@ -5,7 +5,7 @@ %D subtitle=Miscelaneous, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/symb-mis.mkiv b/tex/context/base/symb-mis.mkiv index 612886daa..1037ba542 100644 --- a/tex/context/base/symb-mis.mkiv +++ b/tex/context/base/symb-mis.mkiv @@ -5,7 +5,7 @@ %D subtitle=Miscelaneous, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/symb-mvs.mkii b/tex/context/base/symb-mvs.mkii index 1dd3da0a0..5f4b724aa 100644 --- a/tex/context/base/symb-mvs.mkii +++ b/tex/context/base/symb-mvs.mkii @@ -5,7 +5,7 @@ %D subtitle=Martin Vogels Symbole, %D author=Tobias Burnus \& Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/symb-mvs.mkiv b/tex/context/base/symb-mvs.mkiv index 312a50a88..9902fc9e8 100644 --- a/tex/context/base/symb-mvs.mkiv +++ b/tex/context/base/symb-mvs.mkiv @@ -5,7 +5,7 @@ %D subtitle=Martin Vogels Symbole, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/symb-nav.mkii b/tex/context/base/symb-nav.mkii index 93badbc4d..c9d1aae1d 100644 --- a/tex/context/base/symb-nav.mkii +++ b/tex/context/base/symb-nav.mkii @@ -5,7 +5,7 @@ %D subtitle=Navigational Symbols, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/symb-nav.mkiv b/tex/context/base/symb-nav.mkiv index 0f5fd289f..6e2f2c1f0 100644 --- a/tex/context/base/symb-nav.mkiv +++ b/tex/context/base/symb-nav.mkiv @@ -5,7 +5,7 @@ %D subtitle=Navigational Symbols, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/symb-run.mkii b/tex/context/base/symb-run.mkii index 4e714832c..8b8c62d8b 100644 --- a/tex/context/base/symb-run.mkii +++ b/tex/context/base/symb-run.mkii @@ -5,7 +5,7 @@ %D subtitle=Runtime Macros, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/symb-run.mkiv b/tex/context/base/symb-run.mkiv index 33bbb7927..4bd2cecca 100644 --- a/tex/context/base/symb-run.mkiv +++ b/tex/context/base/symb-run.mkiv @@ -5,7 +5,7 @@ %D subtitle=Runtime Macros, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/symb-uni.mkii b/tex/context/base/symb-uni.mkii index fcd613e7f..f5435810f 100644 --- a/tex/context/base/symb-uni.mkii +++ b/tex/context/base/symb-uni.mkii @@ -5,7 +5,7 @@ %D subtitle=Unicode Symbols, %D author=Adam T. Lindsay, %D date=\currentdate, -%D copyright={Adam T. Lindsay / PRAGMA}] +%D copyright={Adam Lindsay \& Hans Hagen}] %C %C This module is part of the \CONTEXT\ macro||package and is %C prepared by Adam T. Lindsay. diff --git a/tex/context/base/symb-was.mkii b/tex/context/base/symb-was.mkii index 53132cd23..e131cf04d 100644 --- a/tex/context/base/symb-was.mkii +++ b/tex/context/base/symb-was.mkii @@ -5,7 +5,7 @@ %D subtitle=Roland Waldi's Symbols (wasy-2), %D author=Henning Hraban Ramm, %D date=\currentdate, -%D copyright={public domain}] +%D copyright={Public Domain}] %C %C This module is in the public domain. diff --git a/tex/context/base/syst-aux.mkiv b/tex/context/base/syst-aux.mkiv index d2bc84ae8..20674663c 100644 --- a/tex/context/base/syst-aux.mkiv +++ b/tex/context/base/syst-aux.mkiv @@ -5,7 +5,7 @@ %D subtitle=General, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -1656,11 +1656,11 @@ \let\currentvalue\empty -\def\getparameters {\dogetparameters\dosetvalue} -\def\geteparameters {\dogetparameters\dosetevalue} -\def\getgparameters {\dogetparameters\dosetgvalue} -\def\getxparameters {\dogetparameters\dosetxvalue} -\def\forgetparameters{\dogetparameters\doignorevalue} +\unexpanded\def\getparameters {\dogetparameters\dosetvalue} +\unexpanded\def\geteparameters {\dogetparameters\dosetevalue} +\unexpanded\def\getgparameters {\dogetparameters\dosetgvalue} +\unexpanded\def\getxparameters {\dogetparameters\dosetxvalue} +\unexpanded\def\forgetparameters{\dogetparameters\doignorevalue} \let\getexpandedparameters=\geteparameters diff --git a/tex/context/base/syst-con.lua b/tex/context/base/syst-con.lua index bcc020528..f78d83011 100644 --- a/tex/context/base/syst-con.lua +++ b/tex/context/base/syst-con.lua @@ -14,7 +14,8 @@ the top of <l n='luatex'/>'s char range but outside the unicode range.</p> --ldx]]-- local tonumber = tonumber -local char, texsprint, format = unicode.utf8.char, tex.sprint, string.format +local char, texsprint = unicode.utf8.char, tex.sprint +local gsub, format = string.gsub, string.format function converters.hexstringtonumber(n) tonumber(n,16) end function converters.octstringtonumber(n) tonumber(n, 8) end @@ -33,3 +34,8 @@ function commands.uchexnumber (n) context(format("%X" ,n)) end function commands.lchexnumbers (n) context(format("%02x",n)) end function commands.uchexnumbers (n) context(format("%02X",n)) end function commands.octnumber (n) context(format("%03o",n)) end + +function commands.format(fmt,...) + fmt = gsub(fmt,"@","%%") + context(fmt,...) +end diff --git a/tex/context/base/syst-con.mkii b/tex/context/base/syst-con.mkii index 877aad32a..c1ad788cf 100644 --- a/tex/context/base/syst-con.mkii +++ b/tex/context/base/syst-con.mkii @@ -5,7 +5,7 @@ %D subtitle=Conversions, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/syst-con.mkiv b/tex/context/base/syst-con.mkiv index 1091be859..077e69007 100644 --- a/tex/context/base/syst-con.mkiv +++ b/tex/context/base/syst-con.mkiv @@ -5,7 +5,7 @@ %D subtitle=Conversions, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -148,4 +148,7 @@ \def\setcalculatedcos#1#2{\edef#1{\cldcontext{math.cosd(#2)}}} \def\setcalculatedtan#1#2{\edef#1{\cldcontext{math.tand(#2)}}} + \def\formatted#1{\ctxcommand{format(#1)}} +\unexpanded\def\format #1{\ctxcommand{format(#1)}} + \protect \endinput diff --git a/tex/context/base/syst-ext.mkii b/tex/context/base/syst-ext.mkii index 2357e81f1..39f4145f2 100644 --- a/tex/context/base/syst-ext.mkii +++ b/tex/context/base/syst-ext.mkii @@ -5,7 +5,7 @@ %D subtitle=Extras, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/syst-fnt.mkii b/tex/context/base/syst-fnt.mkii index 66439c194..5669475a6 100644 --- a/tex/context/base/syst-fnt.mkii +++ b/tex/context/base/syst-fnt.mkii @@ -5,7 +5,7 @@ %D subtitle=Font Things, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/syst-fnt.mkiv b/tex/context/base/syst-fnt.mkiv index 8ba0dd2a3..f5c9ea349 100644 --- a/tex/context/base/syst-fnt.mkiv +++ b/tex/context/base/syst-fnt.mkiv @@ -5,7 +5,7 @@ %D subtitle=Font Things, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/syst-gen.mkii b/tex/context/base/syst-gen.mkii index 0367ba4fd..bb0f54d11 100644 --- a/tex/context/base/syst-gen.mkii +++ b/tex/context/base/syst-gen.mkii @@ -5,7 +5,7 @@ %D subtitle=General, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/syst-ini.mkii b/tex/context/base/syst-ini.mkii index c2c3e1947..9988efc10 100644 --- a/tex/context/base/syst-ini.mkii +++ b/tex/context/base/syst-ini.mkii @@ -5,7 +5,7 @@ %D subtitle=Bootstrapping \TEX, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/syst-ini.mkiv b/tex/context/base/syst-ini.mkiv index 18388fa21..3e8c8a749 100644 --- a/tex/context/base/syst-ini.mkiv +++ b/tex/context/base/syst-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=Bootstrapping \TEX, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -331,6 +331,15 @@ \newtoks \scratchtoksone \newtoks \scratchtokstwo \newtoks \scratchtoksthree \newbox \scratchboxone \newbox \scratchboxtwo \newbox \scratchboxthree +%D \macros +%D {scratchwidth, scratchheight, scratchdepth} +%D +%D A few more scratch dimensions: + +\newdimen\scratchwidth +\newdimen\scratchheight +\newdimen\scratchdepth + %D More allocations: \newskip \zeroskip \zeroskip = 0pt plus 0pt minus 0pt @@ -908,10 +917,20 @@ \edef\texengineversion{0} \fi +%D We have no reason not to enable this: + +\savingvdiscards\plusone + %D We only can set this one via directives (system.synctex). \let\synctex\undefined \newcount\synctex +%D We get rid of the funny \TEX\ offset defaults of one +%D inch by setting them to zero. + +\voffset \zeropoint \newdimen\voffset % prevent messing up +\hoffset \zeropoint \newdimen\hoffset % prevent messing up + %D While cleaning this code up a bit I was listening to Heather %D Nova's \CD\ Redbird. The first song on that \CD\ ends with %D a few lines suitable for ending this initialization module: diff --git a/tex/context/base/syst-lua.mkiv b/tex/context/base/syst-lua.mkiv index 3ed70cc0b..34e3631c3 100644 --- a/tex/context/base/syst-lua.mkiv +++ b/tex/context/base/syst-lua.mkiv @@ -5,7 +5,7 @@ %D subtitle=Helper macros based on \LUA, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/syst-mes.mkiv b/tex/context/base/syst-mes.mkiv index 070c7af72..4cd36e24b 100644 --- a/tex/context/base/syst-mes.mkiv +++ b/tex/context/base/syst-mes.mkiv @@ -5,7 +5,7 @@ %D subtitle=Messages, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/syst-new.mkii b/tex/context/base/syst-new.mkii index 53ba18ffd..34b535b90 100644 --- a/tex/context/base/syst-new.mkii +++ b/tex/context/base/syst-new.mkii @@ -5,7 +5,7 @@ %D subtitle=New Ones, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/syst-pln.mkii b/tex/context/base/syst-pln.mkii index f2b6129ff..1032b40b5 100644 --- a/tex/context/base/syst-pln.mkii +++ b/tex/context/base/syst-pln.mkii @@ -5,7 +5,7 @@ %D subtitle=Efficient \PLAIN\ \TEX\ loading, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/syst-pln.mkiv b/tex/context/base/syst-pln.mkiv index 7fa91b73d..fc3bdd332 100644 --- a/tex/context/base/syst-pln.mkiv +++ b/tex/context/base/syst-pln.mkiv @@ -5,7 +5,7 @@ %D subtitle=Efficient \PLAIN\ \TEX\ loading, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/syst-rtp.mkii b/tex/context/base/syst-rtp.mkii index a1c6abe2e..fc0f503b0 100644 --- a/tex/context/base/syst-rtp.mkii +++ b/tex/context/base/syst-rtp.mkii @@ -5,7 +5,7 @@ %D subtitle=Run Time Processes, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/syst-rtp.mkiv b/tex/context/base/syst-rtp.mkiv index 36ce8edb1..f65e599ec 100644 --- a/tex/context/base/syst-rtp.mkiv +++ b/tex/context/base/syst-rtp.mkiv @@ -5,7 +5,7 @@ %D subtitle=Run Time Processes, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/syst-str.mkii b/tex/context/base/syst-str.mkii index 3e6d043e3..aacb70ec7 100644 --- a/tex/context/base/syst-str.mkii +++ b/tex/context/base/syst-str.mkii @@ -5,7 +5,7 @@ %D subtitle=String Processing, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/syst-tex.mkii b/tex/context/base/syst-tex.mkii index a8aea2683..fee2b51b2 100644 --- a/tex/context/base/syst-tex.mkii +++ b/tex/context/base/syst-tex.mkii @@ -5,7 +5,7 @@ %D subtitle=Efficient \PLAIN\ \TEX\ loading, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/tabl-com.mkii b/tex/context/base/tabl-com.mkii index 892905f6c..8a0bb9e0c 100644 --- a/tex/context/base/tabl-com.mkii +++ b/tex/context/base/tabl-com.mkii @@ -5,7 +5,7 @@ %D subtitle=Common Code, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/tabl-com.mkiv b/tex/context/base/tabl-com.mkiv index 892905f6c..8a0bb9e0c 100644 --- a/tex/context/base/tabl-com.mkiv +++ b/tex/context/base/tabl-com.mkiv @@ -5,7 +5,7 @@ %D subtitle=Common Code, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/tabl-ltb.mkii b/tex/context/base/tabl-ltb.mkii index 095e30e2b..bac2b5893 100644 --- a/tex/context/base/tabl-ltb.mkii +++ b/tex/context/base/tabl-ltb.mkii @@ -5,7 +5,7 @@ %D subtitle=Line Tables, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/tabl-ltb.mkiv b/tex/context/base/tabl-ltb.mkiv index 06e3eca29..44f1d2c14 100644 --- a/tex/context/base/tabl-ltb.mkiv +++ b/tex/context/base/tabl-ltb.mkiv @@ -5,7 +5,7 @@ %D subtitle=Line Tables, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/tabl-ntb.mkii b/tex/context/base/tabl-ntb.mkii index e243a55c2..465ed44b2 100644 --- a/tex/context/base/tabl-ntb.mkii +++ b/tex/context/base/tabl-ntb.mkii @@ -5,7 +5,7 @@ %D subtitle=Natural Tables, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/tabl-ntb.mkiv b/tex/context/base/tabl-ntb.mkiv index 96b1aabed..35ed45b63 100644 --- a/tex/context/base/tabl-ntb.mkiv +++ b/tex/context/base/tabl-ntb.mkiv @@ -5,7 +5,7 @@ %D subtitle=Natural Tables, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -923,19 +923,6 @@ \fi \egroup}} -% \def\begintbl -% {\global\tblspn\zerocount -% \global\tblcol\zerocount -% \global\tblrow\zerocount -% \global\advance\tblrow\minusone -% \tabskip\zeropoint -% \halign\bgroup -% \registerparoptions % new -% \ignorespaces##\unskip&&\ignorespaces##\unskip\cr} - -% \def\endtbl -% {\egroup} - \let\dotagTABLEcell\relax \def\begintbl @@ -950,7 +937,8 @@ \halign\bgroup \registerparoptions % watch out: tagging the cell happens at the outer level (faster) - \ignorespaces##\unskip&&\dostarttagged\t!tablecell\empty\ignorespaces##\unskip\dostoptagged\cr} % one too many +% \ignorespaces##\unskip&&\dostarttagged\t!tablecell\empty\ignorespaces##\unskip\dostoptagged\cr} % one too many + \ignorespaces##\unskip&&\ignorespaces##\unskip\cr} % one too many \def\endtbl {\dostoptagged\egroup @@ -1009,16 +997,17 @@ \settblhei{#1}{\the\ht\scratchbox}% \fi}% -\let\dotagnoftablecolumns\relax -\let\dotagnoftablerows \relax +\let\dotagnofTABLEcolumns\relax +\let\dotagnofTABLErows \relax \def\domakeTBLthree#1 #2 % {% height +\dostarttagged\t!tablecell\empty \!!counta \gettblcol{#1}{#2}\relax \!!countb \gettblrow{#1}{#2}\relax \!!heighta\gettblht {#1}{#2}\relax -\dotagnoftablecolumns -\dotagnoftablerows +\dotagnofTABLEcolumns +\dotagnofTABLErows \scratchdimen\zeropoint \ifnum\!!counta=\maximumcol\relax % case: nc=maxcolumns @@ -1041,7 +1030,10 @@ \advance\scratchcounter\plusone}% \edef\widthTBL{\the\dimexpr\scratchdimen-\tbltblcolumndistance\relax}% % cell - \setbox\scratchbox\hbox{\gettbltxt{#1}{#2}}% + \setbox\scratchbox\hbox attr \taggedattribute \attribute\taggedattribute \bgroup +% \dotagTABLEcell + \gettbltxt{#1}{#2}% + \egroup \ifnum\!!counta=\maximumcol\relax % case: nc=maxcolumns \else @@ -1057,7 +1049,7 @@ \else \normalexpanded{\noexpand\directgotobox{\box\scratchbox}[\!!stringa]}% to be checked \fi - \dotagTABLEcell} % right spot + \dostoptagged} % right spot \def\inTBLcell#1#2% hm, do we need #1 #2 ? we use tblcol anyway {\doifnotinset\localwidth{\v!fit,\v!broad}% user set diff --git a/tex/context/base/tabl-nte.mkii b/tex/context/base/tabl-nte.mkii index cde64a033..6a5391f24 100644 --- a/tex/context/base/tabl-nte.mkii +++ b/tex/context/base/tabl-nte.mkii @@ -5,7 +5,7 @@ %D subtitle=Natural Tables Extensions, %D author=Hans Hagen \& Wolfgang Schuster, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/tabl-nte.mkiv b/tex/context/base/tabl-nte.mkiv index 2a9e14703..08ab34f0f 100644 --- a/tex/context/base/tabl-nte.mkiv +++ b/tex/context/base/tabl-nte.mkiv @@ -5,7 +5,7 @@ %D subtitle=Natural Tables Extensions, %D author=Hans Hagen \& Wolfgang Schuster, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/tabl-tab.mkii b/tex/context/base/tabl-tab.mkii index e3bfca9c3..7909e5092 100644 --- a/tex/context/base/tabl-tab.mkii +++ b/tex/context/base/tabl-tab.mkii @@ -5,7 +5,7 @@ %D subtitle=\TABLE\ Embedding, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/tabl-tab.mkiv b/tex/context/base/tabl-tab.mkiv index 24bbb4dd6..0e95af3b7 100644 --- a/tex/context/base/tabl-tab.mkiv +++ b/tex/context/base/tabl-tab.mkiv @@ -4,8 +4,7 @@ %D title=\CONTEXT\ Table Macros, %D subtitle=\TABLE\ Embedding, %D author=Hans Hagen with copied and patched code from MJ Wichura, -%D date=\currentdate, -%D copyright=PRAGMA-ADE (patched and extensions)] +%D date=\currentdate] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/tabl-tbl.mkii b/tex/context/base/tabl-tbl.mkii index 09fa4105c..9f2d7df47 100644 --- a/tex/context/base/tabl-tbl.mkii +++ b/tex/context/base/tabl-tbl.mkii @@ -5,7 +5,7 @@ %D subtitle=Text Flow Tabulation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/tabl-tbl.mkiv b/tex/context/base/tabl-tbl.mkiv index b8ebb5ee7..5949460aa 100644 --- a/tex/context/base/tabl-tbl.mkiv +++ b/tex/context/base/tabl-tbl.mkiv @@ -5,7 +5,7 @@ %D subtitle=Text Flow Tabulation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -378,6 +378,8 @@ \fi \fi\fi} +\let\dotagtabulatesignal\relax + \def\dodosettabulatepreamble#1#2% only makes sense for many tabulates {\normalexpanded{\tabulatepreamble{\the\tabulatepreamble \dochecklocaltabulatevrulecolor{\currenttabulatevrulecolor}{\the\tabulatevrulethickness}% @@ -415,8 +417,9 @@ \ifcase\tabulatereshape\else \beginreshapedtabulatepar \fi + \dotagtabulatesignal % empty cells .. todo (can be removed as soon as build) \noexpand\ifnum\noexpand\tabulatetype=\plusone\noexpand\else - \the\tabulatebmath % maybe later? + \the\tabulatebmath % maybe later? can interfere with char 0 \the\tabulatefont \the\tabulatesettings \the\tabulatebefore @@ -436,10 +439,11 @@ \endreshapedtabulatepar \fi \noexpand#2% - \noexpand\dostoptagged +% \noexpand\dostoptagged \egroup \egroup \aligntab +\noexpand\dostoptagged \dotabulatepostskip{\the\tabulateposskip}% \alignmark\alignmark }}% @@ -680,12 +684,31 @@ \def\flushtabulatesplitbox {\box\tabulatebox} -\def\splitofftabulatebox % overloads in anch-pgr +\newconditional\splitofftabulatewhitespace +\newdimen\splitofftabulatebetweenskip + +\def\flushtabulatewhitespace + {\ifdim\splitofftabulatebetweenskip>\zeropoint + \vskip\splitofftabulatebetweenskip + \global\splitofftabulatebetweenskip\zeropoint + \fi} + +\def\checktabulatewhitespace + {\setbox\scratchbox\vbox + {\splitdiscards + \unskip + \ifdim\lastskip>\splitofftabulatebetweenskip + \global\splitofftabulatebetweenskip\lastskip + \fi}} + +\def\splitofftabulatebox {\dontcomplain - \global\setbox\tabulatebox % % % global ? % % % - \vsplit\tablebox\tabulatecolumn to \lineheight - \setbox\tabulatebox\normalvbox + \global\setbox\tabulatebox\vsplit\tablebox\tabulatecolumn to \lineheight % % % global ? % % % + \setbox\tabulatebox\vbox {\unvbox\tabulatebox}% + \ifconditional\splitofftabulatewhitespace + \checktabulatewhitespace + \fi \setbox\tabulatebox\hbox to \wd\tabulatebox {\iftrialtypesetting\else\ifconditional\tabulatehascolors\repeatsettabulatecolor\fi\fi \hss\dotabulatehook{\box\tabulatebox}\hss}% @@ -726,8 +749,13 @@ \fi \fi \fi} -\def\handletabulatepbreak - {\tabulatenoalign{\dohandletabulatepbreak}} +\def\handletabulatepbreak % overloads previous + {\starttabulatenoalign + \dohandletabulatepbreak + \ifconditional\splitofftabulatewhitespace + \flushtabulatewhitespace + \fi + \stoptabulatenoalign} %D \startbuffer %D \starttabulate[|c|p|p|] @@ -1803,6 +1831,53 @@ \appendtoks\let\TB\TabulateTB\to\everytabulate +%D Some new trickery: +%D +%D \startbuffer +%D \settrue\splitofftabulatewhitespace +%D +%D \starttabulate[|p(2cm)|p(2cm)|p(2cm)|] +%D \NC test 1a \NC test 2a \NC test 3a +%D \par +%D test 3b \NC \NR +%D \NC test 1a \NC test 2a \NC test 3a +%D \blank[line] +%D test 3b \NC \NR +%D \NC test 1a \NC test 2a \NC test 3a +%D \blank[halfline] +%D test 3b +%D \blank[halfline] +%D test 3c \NC \NR +%D \NC \blank \NC \blank \NC \blank \NC \NR +%D \NC test 1a \NC test 2a \NC test 3a +%D \blank[halfline] +%D test 3b +%D \blank[halfline] +%D test 3c \NC \NR +%D \NC \blank \NC \blank \NC \NC \NR +%D \NC test 1a +%D \par +%D test 1b +%D \par +%D test 1b \NC test 2a +%D \par +%D test 2b +%D \par +%D test 2b \NC test 3a \NC \NR +%D \NC test 1a +%D \blank +%D test 1b +%D \par +%D test 1b \NC test 2a +%D \par +%D test 2b +%D \blank +%D test 2b \NC test 3a \NC \NR +%D \stoptabulate +%D \stopbuffer +%D +%D \typebuffer \start \getbuffer \stop + % \starttabulatie[|mc|] % \NC \digits{100.000,00} \NC\NR % \NC \digits{@10.000,00} \NC\NR diff --git a/tex/context/base/tabl-tsp.mkii b/tex/context/base/tabl-tsp.mkii index 49bb7ad90..59e9185e8 100644 --- a/tex/context/base/tabl-tsp.mkii +++ b/tex/context/base/tabl-tsp.mkii @@ -5,7 +5,7 @@ %D subtitle=Splitting, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/tabl-tsp.mkiv b/tex/context/base/tabl-tsp.mkiv index d274df6cb..47984a8be 100644 --- a/tex/context/base/tabl-tsp.mkiv +++ b/tex/context/base/tabl-tsp.mkiv @@ -5,7 +5,7 @@ %D subtitle=Splitting, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/task-ini.lua b/tex/context/base/task-ini.lua index c1c22e8cc..730b5c4dc 100644 --- a/tex/context/base/task-ini.lua +++ b/tex/context/base/task-ini.lua @@ -17,6 +17,7 @@ local disableaction = tasks.disableaction local freezegroup = tasks.freezegroup local freezecallbacks = callbacks.freeze +appendaction("processors", "normalizers", "typesetters.characters.handler") -- always on appendaction("processors", "normalizers", "fonts.collections.process") -- todo appendaction("processors", "normalizers", "fonts.checkers.missing") -- disabled @@ -51,6 +52,8 @@ appendaction("shipouts", "normalizers", "structures.tags.handler") appendaction("shipouts", "normalizers", "nodes.handlers.accessibility") -- disabled appendaction("shipouts", "normalizers", "nodes.handlers.backgrounds") -- disabled +--~ appendaction("shipouts", "normalizers", "nodes.handlers.export") -- disabled + appendaction("shipouts", "finishers", "attributes.colors.handler") -- disabled appendaction("shipouts", "finishers", "attributes.transparencies.handler") -- disabled appendaction("shipouts", "finishers", "attributes.colorintents.handler") -- disabled @@ -60,6 +63,7 @@ appendaction("shipouts", "finishers", "attributes.viewerlayers.handler") appendaction("math", "normalizers", "noads.handlers.unscript", nil, "nohead") -- always on (maybe disabled) appendaction("math", "normalizers", "noads.handlers.relocate", nil, "nohead") -- always on +appendaction("math", "normalizers", "noads.handlers.render", nil, "nohead") -- always on appendaction("math", "normalizers", "noads.handlers.collapse", nil, "nohead") -- always on appendaction("math", "normalizers", "noads.handlers.resize", nil, "nohead") -- always on appendaction("math", "normalizers", "noads.handlers.respace", nil, "nohead") -- always on @@ -72,6 +76,7 @@ appendaction("math", "builders", "builders.kernel.mlist_to_hlist") appendaction("finalizers", "lists", "nodes.handlers.graphicvadjust") -- todo appendaction("finalizers", "fonts", "builders.paragraphs.solutions.splitters.optimize") -- experimental +appendaction("finalizers", "lists", "builders.paragraphs.tag") -- still experimental @@ -111,6 +116,8 @@ disableaction("shipouts", "nodes.handlers.cleanuppage") disableaction("shipouts", "nodes.references.handler") disableaction("shipouts", "nodes.destinations.handler") +--~ disableaction("shipouts", "nodes.handlers.export") + disableaction("mvlbuilders", "nodes.handlers.migrate") disableaction("processors", "builders.paragraphs.solutions.splitters.split") @@ -118,6 +125,7 @@ disableaction("processors", "builders.paragraphs.solutions.splitters.split") disableaction("finalizers", "builders.paragraphs.solutions.splitters.optimize") disableaction("finalizers", "nodes.handlers.graphicvadjust") -- sort of obsolete +disableaction("finalizers", "builders.paragraphs.tag") disableaction("math", "noads.handlers.tags") freezecallbacks("find_.*_file", "find file using resolver") diff --git a/tex/context/base/task-ini.mkiv b/tex/context/base/task-ini.mkiv index ef32ee87d..6cdbe739f 100644 --- a/tex/context/base/task-ini.mkiv +++ b/tex/context/base/task-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/toks-ini.mkiv b/tex/context/base/toks-ini.mkiv index 2aa2ed4a6..70c4940e3 100644 --- a/tex/context/base/toks-ini.mkiv +++ b/tex/context/base/toks-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/trac-deb.mkiv b/tex/context/base/trac-deb.mkiv index 2eb44247a..89ec43694 100644 --- a/tex/context/base/trac-deb.mkiv +++ b/tex/context/base/trac-deb.mkiv @@ -5,7 +5,7 @@ %D subtitle=Debugger, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/trac-tex.mkiv b/tex/context/base/trac-tex.mkiv index 37eca9123..585419701 100644 --- a/tex/context/base/trac-tex.mkiv +++ b/tex/context/base/trac-tex.mkiv @@ -5,7 +5,7 @@ %D subtitle=\TEX, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/trac-vis.mkii b/tex/context/base/trac-vis.mkii index 23ded2af9..be7a204ec 100644 --- a/tex/context/base/trac-vis.mkii +++ b/tex/context/base/trac-vis.mkii @@ -5,7 +5,7 @@ %D subtitle=Visualization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/trac-vis.mkiv b/tex/context/base/trac-vis.mkiv index 2056dc635..f4b9583a2 100644 --- a/tex/context/base/trac-vis.mkiv +++ b/tex/context/base/trac-vis.mkiv @@ -5,7 +5,7 @@ %D subtitle=Visualization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -261,15 +261,17 @@ \newdimen\tractempheight \newdimen\tractempdepth -\def \cutmarklength {2\bodyfontsize} +\def \cutmarklength {2\bodyfontsize} \newcount\horizontalcutmarks \horizontalcutmarks = 2 \newcount\verticalcutmarks \verticalcutmarks = 2 \newcount\cutmarkoffset \cutmarkoffset = 1 -\let\cutmarksymbol = \relax -\let\cutmarktoptext = \empty -\let\cutmarkbottomtext = \empty +\let \cutmarksymbol \relax +\let \cutmarktoptext \empty +\let \cutmarkbottomtext \empty +\let \cutmarkhoffset \empty +\let \cutmarkvoffset \empty \def\horizontalcuts {\normalhbox to \tractempwidth @@ -298,11 +300,12 @@ \normalhss \normalvbox to \cutmarklength {\scratchdimen\dimexpr\cutmarklength/2\relax + \scratchskip \ifx\cutmarkhoffset\empty\cutmarkoffset\scratchdimen\else\cutmarkhoffset\fi \normalvss \hbox to \tractempwidth - {\llap{\copy\scratchbox\normalhskip\cutmarkoffset\scratchdimen}% + {\llap{\copy\scratchbox\normalhskip\scratchskip}% \normalhskip\scratchdimen\hss\infofont#1\hss\normalhskip\scratchdimen - \rlap{\normalhskip\cutmarkoffset\scratchdimen\copy\scratchbox}}% + \rlap{\normalhskip\scratchskip\copy\scratchbox}}% \normalvss}% \normalhss}} @@ -319,21 +322,29 @@ \hsize\tractempwidth \setbox\scratchbox\normalvbox {\setbox\scratchbox\normalhbox{\horizontalcuts}% - \normalvskip\dimexpr-\cutmarkoffset\scratchdimen-2\scratchdimen\relax - \copy\scratchbox - \normalvskip\cutmarkoffset\scratchdimen + \scratchskip\ifx\cutmarkvoffset\empty\cutmarkoffset\scratchdimen\else\cutmarkvoffset\fi +% \normalvskip\dimexpr-\scratchskip-2\scratchdimen\relax +% \copy\scratchbox +% \normalvskip\scratchskip + \tlap{\copy\scratchbox\normalvskip\scratchskip}% \hbox to \tractempwidth - {\setbox\scratchbox\normalhbox{\verticalcuts}% - \llap{\copy\scratchbox\normalhskip\cutmarkoffset\scratchdimen}% - \bgroup - \setbox\scratchbox\normalhbox{\baselinecuts}% - \llap{\copy\scratchbox\normalhskip\cutmarkoffset\scratchdimen}% - \normalhfill - \rlap{\normalhskip\cutmarkoffset\scratchdimen\copy\scratchbox}% - \egroup - \rlap{\normalhskip\cutmarkoffset\scratchdimen\copy\scratchbox}}% - \normalvskip\cutmarkoffset\scratchdimen - \copy\scratchbox}% + {\scratchskip\ifx\cutmarkhoffset\empty\cutmarkoffset\scratchdimen\else\cutmarkhoffset\fi + \setbox\scratchbox\normalhbox{\verticalcuts}% + \llap{\copy\scratchbox\normalhskip\scratchskip}% + \ifdim\tractempdepth=\zeropoint + \normalhfill + \else + \bgroup + \setbox\scratchbox\normalhbox{\baselinecuts}% + \llap{\copy\scratchbox\normalhskip\scratchskip}% + \normalhfill + \rlap{\normalhskip\scratchskip\copy\scratchbox}% + \egroup + \fi + \rlap{\normalhskip\scratchskip\copy\scratchbox}}% +% \normalvskip\scratchskip +% \copy\scratchbox}% + \blap{\normalvskip\scratchskip\copy\scratchbox}}% \ht\scratchbox\tractempheight \dp\scratchbox\tractempdepth \wd\scratchbox\zeropoint @@ -341,13 +352,14 @@ \box\scratchbox \ifx\cutmarksymbol\relax \else \setbox\scratchbox\normalvbox - {\vskip-\cutmarkoffset\scratchdimen + {\scratchskip\ifx\cutmarkvoffset\empty\cutmarkoffset\scratchdimen\else\cutmarkvoffset\fi + \vskip-\scratchskip \vskip-\cutmarklength \normalhbox{\cutmarksymbols\cutmarktoptext}% - \vskip\cutmarkoffset\scratchdimen + \vskip\scratchskip \vskip\tractempheight \vskip\tractempdepth - \vskip\cutmarkoffset\scratchdimen + \vskip\scratchskip \normalhbox{\cutmarksymbols\cutmarkbottomtext}}% \ht\scratchbox\tractempheight \dp\scratchbox\tractempdepth diff --git a/tex/context/base/type-buy.mkii b/tex/context/base/type-buy.mkii index 56fc92e62..b8518acb0 100644 --- a/tex/context/base/type-buy.mkii +++ b/tex/context/base/type-buy.mkii @@ -5,7 +5,7 @@ %D subtitle=A Few Commercial Fonts, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/type-buy.mkiv b/tex/context/base/type-buy.mkiv index becc4361c..c1902205c 100644 --- a/tex/context/base/type-buy.mkiv +++ b/tex/context/base/type-buy.mkiv @@ -5,7 +5,7 @@ %D subtitle=A Few Commercial Fonts, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/type-cbg.mkii b/tex/context/base/type-cbg.mkii index 93cfa077e..a45a71d4e 100644 --- a/tex/context/base/type-cbg.mkii +++ b/tex/context/base/type-cbg.mkii @@ -5,7 +5,7 @@ %D subtitle=CB Greek, %D author={Giuseppe Bilotta, Hans Hagen}, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/type-cow.mkii b/tex/context/base/type-cow.mkii index 507386443..f46ac968b 100644 --- a/tex/context/base/type-cow.mkii +++ b/tex/context/base/type-cow.mkii @@ -5,7 +5,7 @@ %D subtitle=Cow Fonts, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/type-cow.mkiv b/tex/context/base/type-cow.mkiv index 5215e7122..1cb825a11 100644 --- a/tex/context/base/type-cow.mkiv +++ b/tex/context/base/type-cow.mkiv @@ -5,7 +5,7 @@ %D subtitle=Cow Fonts, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/type-def.mkii b/tex/context/base/type-def.mkii index f31c93e50..0ff1e0b7d 100644 --- a/tex/context/base/type-def.mkii +++ b/tex/context/base/type-def.mkii @@ -5,7 +5,7 @@ %D subtitle=Default Definitions, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/type-def.mkiv b/tex/context/base/type-def.mkiv index c980a4ee5..52922dad1 100644 --- a/tex/context/base/type-def.mkiv +++ b/tex/context/base/type-def.mkiv @@ -5,7 +5,7 @@ %D subtitle=Default Definitions, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/type-exp.mkii b/tex/context/base/type-exp.mkii index dae770e98..c7c6e4b45 100644 --- a/tex/context/base/type-exp.mkii +++ b/tex/context/base/type-exp.mkii @@ -5,7 +5,7 @@ %D subtitle=Experimental Definitions, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/type-fsf.mkii b/tex/context/base/type-fsf.mkii index 7813b7b5d..6782d3dcf 100644 --- a/tex/context/base/type-fsf.mkii +++ b/tex/context/base/type-fsf.mkii @@ -5,7 +5,7 @@ %D subtitle=Fontsite 500, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/type-ghz.mkii b/tex/context/base/type-ghz.mkii index 7e31096ee..3778cd964 100644 --- a/tex/context/base/type-ghz.mkii +++ b/tex/context/base/type-ghz.mkii @@ -5,7 +5,7 @@ %D subtitle=Hermann Zapf's Fonts, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/type-ghz.mkiv b/tex/context/base/type-ghz.mkiv index 34a3aa53c..0722c1dfe 100644 --- a/tex/context/base/type-ghz.mkiv +++ b/tex/context/base/type-ghz.mkiv @@ -5,7 +5,7 @@ %D subtitle=Hermann Zapf's Fonts, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/type-ini.mkii b/tex/context/base/type-ini.mkii index d15bb565b..c6b0a8931 100644 --- a/tex/context/base/type-ini.mkii +++ b/tex/context/base/type-ini.mkii @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/type-ini.mkiv b/tex/context/base/type-ini.mkiv index 46b46976d..389ca3980 100644 --- a/tex/context/base/type-ini.mkiv +++ b/tex/context/base/type-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/type-lua.mkiv b/tex/context/base/type-lua.mkiv index a6799671e..1ce3f80fb 100644 --- a/tex/context/base/type-lua.mkiv +++ b/tex/context/base/type-lua.mkiv @@ -5,7 +5,7 @@ %D subtitle=\MKIV\ goodies, %D author=Hans Hagen \& Wolfgang Schuster, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/type-lucidanova.mkiv b/tex/context/base/type-lucidanova.mkiv new file mode 100644 index 000000000..c59f560d9 --- /dev/null +++ b/tex/context/base/type-lucidanova.mkiv @@ -0,0 +1,89 @@ +%D \module +%D [ file=type-lucidanova, +%D version=2011.05.18, +%D title=\CONTEXT\ Typescript Macros, +%D subtitle=Lucida Nova Opentype, +%D author=Hans Hagen, +%D date=\currentdate, +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + +% NOTA BENE: class feattures and goodies get expanded! + +\starttypescriptcollection[lucidanova] + + \starttypescript [\s!math] [lucidanova] + \definefontsynonym [MathRoman] [\s!file:LucidaMath.otf] [\s!features=\s!math\mathsizesuffix,\s!goodies=lucidanova-math] + \stoptypescript + + \starttypescript [\s!serif] [lucidanova] + \definefontsynonym [\s!Serif] [\s!file:LucidaBright.otf] + \definefontsynonym [\s!SerifBold] [\s!file:LucidaBright-Demi.otf] + \definefontsynonym [\s!SerifItalic] [\s!file:LucidaBright-Italic.otf] + \definefontsynonym [\s!SerifBoldItalic] [\s!file:LucidaBright-DemiItalic.otf] + \definefontsynonym [\s!SerifSlanted] [\s!SerifItalic] + \definefontsynonym [\s!SerifBoldSlanted] [\s!SerifBoldItalic] + \stoptypescript + + \starttypescript [\s!sans] [lucidanova] + \definefontsynonym [\s!Sans] [\s!file:LucidaSans.otf] + \definefontsynonym [\s!SansBold] [\s!file:LucidaSans-Bold.otf] + \definefontsynonym [\s!SansItalic] [\s!file:LucidaSans-Oblique.otf] + \definefontsynonym [\s!SansBoldItalic] [\s!file:LucidaSans-BoldOblique.otf] + \definefontsynonym [\s!SansSlanted] [\s!MonoItalic] + \definefontsynonym [\s!SansBoldSlanted] [\s!MonoBoldItalic] + \stoptypescript + + \starttypescript [\s!mono] [lucidanova] + \definefontsynonym [\s!Mono] [\s!file:LucidaSans-Typewriter.otf] + \definefontsynonym [\s!MonoBold] [\s!file:LucidaSans-TypewriterBold.otf] + \definefontsynonym [\s!MonoItalic] [\s!file:LucidaSans-TypewriterOblique.otf] + \definefontsynonym [\s!MonoBoldItalic] [\s!file:LucidaSans-TypewriterBoldOblique.otf] + \definefontsynonym [\s!MonoSlanted] [\s!MonoItalic] + \definefontsynonym [\s!MonoBoldSlanted] [\s!MonoBoldItalic] + \stoptypescript + + \starttypescript [handwriting] [lucidanova] + \definefontsynonym [LucidaHandwriting] [\s!name:LucidaHandwriting-Italic] + \definefontsynonym [Handwriting] [LucidaHandwriting] + \stoptypescript + + \starttypescript [lucidanova] + %\loadfontgoodies[lucidanova-math] + \definetypeface [lucidanova] [rm] [\s!serif] [lucidanova] [\s!default] [\s!features=\s!default] + \definetypeface [lucidanova] [ss] [\s!sans] [lucidanova] [\s!default] [\s!features=\s!default] + \definetypeface [lucidanova] [tt] [\s!mono] [lucidanova] [\s!default] [\s!features=\s!none] + \definetypeface [lucidanova] [mm] [\s!math] [lucidanova] [\s!default] + \stoptypescript + + % for the moment here: + + \setupmathrendering + [lucidanova] + [it=italic] + +\stoptypescriptcollection + +\endinput + +\starttext + + \setupbodyfont[lucidanova] + +% \showfont[Serif][all] +% \showfont[MathRoman][all] + + \usemodule[fnt-31] + + \startluacode + fonts.tracers.coverage { + "LucidaMath.otf", + "LucidaBright.otf", + "LucidaSans-Typewriter.otf", + } + \stopluacode + +\stoptext diff --git a/tex/context/base/type-mac.mkii b/tex/context/base/type-mac.mkii index ac57726cb..e8abf09b9 100644 --- a/tex/context/base/type-mac.mkii +++ b/tex/context/base/type-mac.mkii @@ -5,7 +5,7 @@ %D subtitle=Mac OS X Definitions, %D author=Wolfgang Schuster, %D date=\currentdate, -%D copyright=Wolfgang Schuster] +%D copyright={Wolfgang Schuster}] %C %C This module is part of the \CONTEXT\ macro||package. See %C mreadme.pdf for details. diff --git a/tex/context/base/type-mac.mkiv b/tex/context/base/type-mac.mkiv index 9856439da..e95c48649 100644 --- a/tex/context/base/type-mac.mkiv +++ b/tex/context/base/type-mac.mkiv @@ -5,7 +5,7 @@ %D subtitle=Mac OS X Definitions, %D author=Wolfgang Schuster, %D date=\currentdate, -%D copyright=Wolfgang Schuster] +%D copyright={Wolfgang Schuster}] %C %C This module is part of the \CONTEXT\ macro||package. See %C mreadme.pdf for details. diff --git a/tex/context/base/type-one.mkii b/tex/context/base/type-one.mkii index f1e94fd79..c6cb5fd61 100644 --- a/tex/context/base/type-one.mkii +++ b/tex/context/base/type-one.mkii @@ -5,7 +5,7 @@ %D subtitle=Type One Definitions, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/type-one.mkiv b/tex/context/base/type-one.mkiv index fa5d9b08a..8e8e82c5b 100644 --- a/tex/context/base/type-one.mkiv +++ b/tex/context/base/type-one.mkiv @@ -5,7 +5,7 @@ %D subtitle=Type One Definitions, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/type-otf.mkii b/tex/context/base/type-otf.mkii index 0a43061f7..3bc082695 100644 --- a/tex/context/base/type-otf.mkii +++ b/tex/context/base/type-otf.mkii @@ -5,7 +5,7 @@ %D subtitle=Opentype Definitions, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/type-otf.mkiv b/tex/context/base/type-otf.mkiv index 71f8cd1e3..0ef85ad88 100644 --- a/tex/context/base/type-otf.mkiv +++ b/tex/context/base/type-otf.mkiv @@ -5,7 +5,7 @@ %D subtitle=Opentype Definitions, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/type-pre.mkii b/tex/context/base/type-pre.mkii index ad2109a65..99db52c2f 100644 --- a/tex/context/base/type-pre.mkii +++ b/tex/context/base/type-pre.mkii @@ -5,7 +5,7 @@ %D subtitle=Compatibility scripts, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/type-run.mkii b/tex/context/base/type-run.mkii index 1b64c102e..51a9f2a88 100644 --- a/tex/context/base/type-run.mkii +++ b/tex/context/base/type-run.mkii @@ -5,7 +5,7 @@ %D subtitle=Runtime Macros, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/type-run.mkiv b/tex/context/base/type-run.mkiv index 60061bcbe..4da633371 100644 --- a/tex/context/base/type-run.mkiv +++ b/tex/context/base/type-run.mkiv @@ -5,7 +5,7 @@ %D subtitle=Runtime Macros, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/type-set.mkii b/tex/context/base/type-set.mkii index 2845b1dbb..7f34deada 100644 --- a/tex/context/base/type-set.mkii +++ b/tex/context/base/type-set.mkii @@ -5,7 +5,7 @@ %D subtitle=Default Settings, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/type-set.mkiv b/tex/context/base/type-set.mkiv index a67be14af..562c29a4f 100644 --- a/tex/context/base/type-set.mkiv +++ b/tex/context/base/type-set.mkiv @@ -5,7 +5,7 @@ %D subtitle=Default Settings, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/type-siz.mkii b/tex/context/base/type-siz.mkii index 831019e95..4c3cfb28b 100644 --- a/tex/context/base/type-siz.mkii +++ b/tex/context/base/type-siz.mkii @@ -5,7 +5,7 @@ %D subtitle=Sizing scripts, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/type-siz.mkiv b/tex/context/base/type-siz.mkiv index 35bc8fb44..040579675 100644 --- a/tex/context/base/type-siz.mkiv +++ b/tex/context/base/type-siz.mkiv @@ -5,7 +5,7 @@ %D subtitle=Sizing scripts, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/type-tmf.mkii b/tex/context/base/type-tmf.mkii index af9280c73..829b6baec 100644 --- a/tex/context/base/type-tmf.mkii +++ b/tex/context/base/type-tmf.mkii @@ -5,7 +5,7 @@ %D subtitle=Core \TEX\ Fonts, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/type-tmf.mkiv b/tex/context/base/type-tmf.mkiv index af9280c73..829b6baec 100644 --- a/tex/context/base/type-tmf.mkiv +++ b/tex/context/base/type-tmf.mkiv @@ -5,7 +5,7 @@ %D subtitle=Core \TEX\ Fonts, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/type-win.mkii b/tex/context/base/type-win.mkii index cb0ad19f5..ae6909820 100644 --- a/tex/context/base/type-win.mkii +++ b/tex/context/base/type-win.mkii @@ -5,7 +5,7 @@ %D subtitle=Microsoft Windows Fonts, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/type-win.mkiv b/tex/context/base/type-win.mkiv index 3f06fa4db..636f6f0a5 100644 --- a/tex/context/base/type-win.mkiv +++ b/tex/context/base/type-win.mkiv @@ -5,7 +5,7 @@ %D subtitle=MS Windows Definitions, %D author=Vyatcheslav Yatskovsky, %D date=\currentdate, -%D copyright=Vyatcheslav Yatskovsky] +%D copyright={Vyatcheslav Yatskovsky}] %C %C This module is part of the \CONTEXT\ macro||package. See %C mreadme.pdf for details. diff --git a/tex/context/base/type-xtx.mkii b/tex/context/base/type-xtx.mkii index 0ee0130f7..d8b5f9c2a 100644 --- a/tex/context/base/type-xtx.mkii +++ b/tex/context/base/type-xtx.mkii @@ -5,7 +5,7 @@ %D subtitle=\XETEX's font treasures, %D author=Adam T. Lindsay, %D date=\currentdate, -%D copyright={Adam T. Lindsay / PRAGMA}] +%D copyright={Adam Lindsay \& Hans Hagen}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/typo-brk.mkiv b/tex/context/base/typo-brk.mkiv index 4c21093ec..cd2db6212 100644 --- a/tex/context/base/typo-brk.mkiv +++ b/tex/context/base/typo-brk.mkiv @@ -5,7 +5,7 @@ %D subtitle=Breakpoints, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/typo-cap.mkiv b/tex/context/base/typo-cap.mkiv index 1b3e0df26..8a50bedef 100644 --- a/tex/context/base/typo-cap.mkiv +++ b/tex/context/base/typo-cap.mkiv @@ -5,7 +5,7 @@ %D subtitle=Capping, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/typo-cln.mkiv b/tex/context/base/typo-cln.mkiv index d247b20d2..038ebf2c5 100644 --- a/tex/context/base/typo-cln.mkiv +++ b/tex/context/base/typo-cln.mkiv @@ -5,7 +5,7 @@ %D subtitle=Cleaning, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/typo-dig.mkiv b/tex/context/base/typo-dig.mkiv index 6e0299291..03be1bffc 100644 --- a/tex/context/base/typo-dig.mkiv +++ b/tex/context/base/typo-dig.mkiv @@ -5,7 +5,7 @@ %D subtitle=Digits, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/typo-dir.mkiv b/tex/context/base/typo-dir.mkiv index b4e7cb67f..9d6935962 100644 --- a/tex/context/base/typo-dir.mkiv +++ b/tex/context/base/typo-dir.mkiv @@ -5,7 +5,7 @@ %D subtitle=Directions, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/typo-ini.mkii b/tex/context/base/typo-ini.mkii index 1317021ef..6e19fb9b6 100644 --- a/tex/context/base/typo-ini.mkii +++ b/tex/context/base/typo-ini.mkii @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/typo-ini.mkiv b/tex/context/base/typo-ini.mkiv index 10be16053..8c288bb63 100644 --- a/tex/context/base/typo-ini.mkiv +++ b/tex/context/base/typo-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/typo-krn.mkiv b/tex/context/base/typo-krn.mkiv index bb4a48a5d..5d1ed1f79 100644 --- a/tex/context/base/typo-krn.mkiv +++ b/tex/context/base/typo-krn.mkiv @@ -5,7 +5,7 @@ %D subtitle=Spacing, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/typo-mar.mkiv b/tex/context/base/typo-mar.mkiv index aba3ef95a..5abe6f032 100644 --- a/tex/context/base/typo-mar.mkiv +++ b/tex/context/base/typo-mar.mkiv @@ -7,7 +7,7 @@ %D subtitle=Margindata, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/typo-rep.mkiv b/tex/context/base/typo-rep.mkiv index 75902d7be..c13d7eeb7 100644 --- a/tex/context/base/typo-rep.mkiv +++ b/tex/context/base/typo-rep.mkiv @@ -5,7 +5,7 @@ %D subtitle=Stripping, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/typo-spa.mkiv b/tex/context/base/typo-spa.mkiv index 7a72e95ad..b660d54a9 100644 --- a/tex/context/base/typo-spa.mkiv +++ b/tex/context/base/typo-spa.mkiv @@ -5,7 +5,7 @@ %D subtitle=Spacing, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/unic-000.mkii b/tex/context/base/unic-000.mkii index cb4c1fe8a..4ef570445 100644 --- a/tex/context/base/unic-000.mkii +++ b/tex/context/base/unic-000.mkii @@ -5,7 +5,7 @@ %D subtitle=Vector 0, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/unic-001.mkii b/tex/context/base/unic-001.mkii index e37de9136..198a8d98d 100644 --- a/tex/context/base/unic-001.mkii +++ b/tex/context/base/unic-001.mkii @@ -5,7 +5,7 @@ %D subtitle=Vector 1, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/unic-002.mkii b/tex/context/base/unic-002.mkii index ae7deb12a..906975f86 100644 --- a/tex/context/base/unic-002.mkii +++ b/tex/context/base/unic-002.mkii @@ -5,7 +5,7 @@ %D subtitle=Vector 2, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/unic-003.mkii b/tex/context/base/unic-003.mkii index 3f994a662..ad7d6df6a 100644 --- a/tex/context/base/unic-003.mkii +++ b/tex/context/base/unic-003.mkii @@ -5,7 +5,7 @@ %D subtitle=Vector 3, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/unic-004.mkii b/tex/context/base/unic-004.mkii index 67ce87728..7b413cdb9 100644 --- a/tex/context/base/unic-004.mkii +++ b/tex/context/base/unic-004.mkii @@ -5,7 +5,7 @@ %D subtitle=Vector 4, %D author=Mikael Persson \& Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/unic-005.mkii b/tex/context/base/unic-005.mkii index d15b74dbe..e21edb205 100644 --- a/tex/context/base/unic-005.mkii +++ b/tex/context/base/unic-005.mkii @@ -5,7 +5,7 @@ %D subtitle=Vector 5, %D author=Adam Lindsay, %D date=\currentdate, -%D copyright=\PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/unic-030.mkii b/tex/context/base/unic-030.mkii index ef42c807a..0065a738a 100644 --- a/tex/context/base/unic-030.mkii +++ b/tex/context/base/unic-030.mkii @@ -5,7 +5,7 @@ %D subtitle=Vector 30, %D author=Adam Lindsay, %D date=\currentdate, -%D copyright={PRAGMA / Adam Lindsay}] +%D copyright={Adam Lindsay \& Hans Hagen}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/unic-031.mkii b/tex/context/base/unic-031.mkii index 13fd47a54..68d163324 100644 --- a/tex/context/base/unic-031.mkii +++ b/tex/context/base/unic-031.mkii @@ -4,7 +4,8 @@ %D title=\CONTEXT\ \UNICODE\ Macros, %D subtitle=Vector 31, %D author=Thomas A. Schmitz, -%D date=\currentdate] +%D date=\currentdate, +%D copyright={Thomas A. Schmitz}] \unprotect diff --git a/tex/context/base/unic-032.mkii b/tex/context/base/unic-032.mkii index 32c25e4e2..6bd176c80 100644 --- a/tex/context/base/unic-032.mkii +++ b/tex/context/base/unic-032.mkii @@ -5,7 +5,7 @@ %D subtitle=Vector 32, %D author={Hans Hagen \& Taco Hoekwater}, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/unic-033.mkii b/tex/context/base/unic-033.mkii index 91311a029..ad7a3b11f 100644 --- a/tex/context/base/unic-033.mkii +++ b/tex/context/base/unic-033.mkii @@ -5,7 +5,7 @@ %D subtitle=Vector 33, %D author={Nikolai Weibull \& Hans Hagen \& Taco Hoekwater}, %D date=\currentdate, -%D copyright={PRAGMA / Nikolai Weibull}] +%D copyright={Nikolai Weibull \& Hans Hagen}] \unprotect @@ -92,7 +92,7 @@ \unknownchar \or % 214D \unknownchar \or % 214E \unknownchar \or % 214F - \unknownchar \or % 2150 + \unknownchar \or % 2150 \unknownchar \or % 2151 \unknownchar \or % 2152 \unic@fractiononethird \or % 2153 VULGAR FRACTION ONE THIRD @@ -143,7 +143,7 @@ \unic@romannumeralonethousandCD \or % 2180 ROMAN NUMERAL ONE THOUSAND C D \unic@romannumeralfivethousand \or % 2181 ROMAN NUMERAL FIVE THOUSAND \unic@romannumeraltenthousand \or % 2182 ROMAN NUMERAL TEN THOUSAND - \unic@romannumeralreversedonehundred\or % 2183 ROMAN NUMERAL REVERSED ONE HUNDRED + \unic@romannumeralreversedonehundred\or % 2183 ROMAN NUMERAL REVERSED ONE HUNDRED \unknownchar \or % 2184 \unknownchar \or % 2185 \unknownchar \or % 2186 diff --git a/tex/context/base/unic-034.mkii b/tex/context/base/unic-034.mkii index fece26bff..f998c5170 100644 --- a/tex/context/base/unic-034.mkii +++ b/tex/context/base/unic-034.mkii @@ -5,7 +5,7 @@ %D subtitle=Vector 34, %D author=Nikolai Weibull, %D date=\currentdate, -%D copyright={PRAGMA / Nikolai Weibull}] +%D copyright={Nikolai Weibull \& Hans Hagen}] \unprotect diff --git a/tex/context/base/unic-035.mkii b/tex/context/base/unic-035.mkii index 272799512..0c9490174 100644 --- a/tex/context/base/unic-035.mkii +++ b/tex/context/base/unic-035.mkii @@ -5,7 +5,7 @@ %D subtitle=Vector 35, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] \unprotect diff --git a/tex/context/base/unic-037.mkii b/tex/context/base/unic-037.mkii index 87f655a68..646a4afb2 100644 --- a/tex/context/base/unic-037.mkii +++ b/tex/context/base/unic-037.mkii @@ -5,7 +5,7 @@ %D subtitle=Vector 37, %D author=Luigi Scarso, %D date=\currentdate, -%D copyright={PRAGMA}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/unic-039.mkii b/tex/context/base/unic-039.mkii index bcf649090..02d5d3af2 100644 --- a/tex/context/base/unic-039.mkii +++ b/tex/context/base/unic-039.mkii @@ -5,7 +5,7 @@ %D subtitle=Vector 39, %D author=Nikolai Weibull, %D date=\currentdate, -%D copyright={PRAGMA / Nikolai Weibull}] +%D copyright={Nikolai Weibull \& Hans Hagen}] \unprotect diff --git a/tex/context/base/unic-251.mkii b/tex/context/base/unic-251.mkii index 150ade456..909cf5e94 100644 --- a/tex/context/base/unic-251.mkii +++ b/tex/context/base/unic-251.mkii @@ -5,7 +5,7 @@ %D subtitle=Vector 251, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA-ADE] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] \unprotect diff --git a/tex/context/base/unic-cjk.mkii b/tex/context/base/unic-cjk.mkii index 786546318..dc06e912c 100644 --- a/tex/context/base/unic-cjk.mkii +++ b/tex/context/base/unic-cjk.mkii @@ -5,7 +5,7 @@ %D subtitle=CJK Vectors, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/unic-exp.mkii b/tex/context/base/unic-exp.mkii index 027aedab8..4bdda3f6f 100644 --- a/tex/context/base/unic-exp.mkii +++ b/tex/context/base/unic-exp.mkii @@ -5,7 +5,7 @@ %D subtitle=Expansion, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/unic-ini.mkii b/tex/context/base/unic-ini.mkii index 7e358341d..96aed77bc 100644 --- a/tex/context/base/unic-ini.mkii +++ b/tex/context/base/unic-ini.mkii @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/unic-ini.mkiv b/tex/context/base/unic-ini.mkiv index 62fd82242..a46d264ae 100644 --- a/tex/context/base/unic-ini.mkiv +++ b/tex/context/base/unic-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=\UNICODE\ \& UTF-8 support, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/unic-run.mkii b/tex/context/base/unic-run.mkii index 09c701511..96348d8a7 100644 --- a/tex/context/base/unic-run.mkii +++ b/tex/context/base/unic-run.mkii @@ -5,7 +5,7 @@ %D subtitle=Goodies, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/util-tab.lua b/tex/context/base/util-tab.lua index 818266d3c..2aa0b34f0 100644 --- a/tex/context/base/util-tab.lua +++ b/tex/context/base/util-tab.lua @@ -10,7 +10,7 @@ utilities = utilities or {} utilities.tables = utilities.tables or { } local tables = utilities.tables -local format, gmatch = string.format, string.gmatch +local format, gmatch, rep = string.format, string.gmatch, string.rep local concat, insert, remove = table.concat, table.insert, table.remove local setmetatable, getmetatable, tonumber, tostring = setmetatable, getmetatable, tonumber, tostring @@ -79,11 +79,11 @@ end -- experimental -local function toxml(t,d,result) +local function toxml(t,d,result,step) for k, v in table.sortedpairs(t) do if type(v) == "table" then result[#result+1] = format("%s<%s>",d,k) - toxml(v,d.." ",result) + toxml(v,d..step,result) result[#result+1] = format("%s</%s>",d,k) elseif tonumber(k) then result[#result+1] = format("%s<entry n='%s'>%s</entry>",d,k,v,k) @@ -93,13 +93,15 @@ local function toxml(t,d,result) end end -function table.toxml(t,name,nobanner) +function table.toxml(t,name,nobanner,indent,spaces) local noroot = name == false local result = (nobanner or noroot) and { } or { "<?xml version='1.0' standalone='yes' ?>" } + local indent = rep(" ",indent or 0) + local spaces = rep(" ",spaces or 1) if noroot then - toxml( t, "", result) + toxml( t, inndent, result, spaces) else - toxml( { [name or "root"] = t }, "", result) + toxml( { [name or "root"] = t }, indent, result, spaces) end return concat(result,"\n") end diff --git a/tex/context/base/verb-c.mkii b/tex/context/base/verb-c.mkii index 1ecb0afc2..930977ca4 100644 --- a/tex/context/base/verb-c.mkii +++ b/tex/context/base/verb-c.mkii @@ -5,7 +5,7 @@ %D subtitle=Pretty C Verbatim, %D author=Nikolai Weibull, %D date=\currentdate, -%D copyright={PRAGMA ADE}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/verb-ini.mkii b/tex/context/base/verb-ini.mkii index 829e10fd8..5a817b4bb 100644 --- a/tex/context/base/verb-ini.mkii +++ b/tex/context/base/verb-ini.mkii @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/verb-js.mkii b/tex/context/base/verb-js.mkii index e497e475b..c249bd9bb 100644 --- a/tex/context/base/verb-js.mkii +++ b/tex/context/base/verb-js.mkii @@ -5,7 +5,7 @@ %D subtitle=Pretty \JAVASCRIPT\ Verbatim, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/verb-jv.mkii b/tex/context/base/verb-jv.mkii index ee79e5c03..2149c3a4a 100644 --- a/tex/context/base/verb-jv.mkii +++ b/tex/context/base/verb-jv.mkii @@ -5,7 +5,7 @@ %D subtitle=Pretty \JAVA\ Verbatim, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/verb-mp.mkii b/tex/context/base/verb-mp.mkii index 7affaf0c4..aef52217d 100644 --- a/tex/context/base/verb-mp.mkii +++ b/tex/context/base/verb-mp.mkii @@ -5,7 +5,7 @@ %D subtitle=Pretty \METAPOST\ Verbatim, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/verb-pl.mkii b/tex/context/base/verb-pl.mkii index 47ce9a54f..634a0a314 100644 --- a/tex/context/base/verb-pl.mkii +++ b/tex/context/base/verb-pl.mkii @@ -5,7 +5,7 @@ %D subtitle=Pretty \PERL\ Verbatim, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/verb-tex.mkii b/tex/context/base/verb-tex.mkii index 75e99fcef..98655cc2d 100644 --- a/tex/context/base/verb-tex.mkii +++ b/tex/context/base/verb-tex.mkii @@ -5,7 +5,7 @@ %D subtitle=Pretty \TEX\ verbatim, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-asciimath.mkiv b/tex/context/base/x-asciimath.mkiv index fac3980a0..23caf13aa 100644 --- a/tex/context/base/x-asciimath.mkiv +++ b/tex/context/base/x-asciimath.mkiv @@ -5,7 +5,7 @@ %D subtitle=AsciiMath, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-calcmath.mkii b/tex/context/base/x-calcmath.mkii index 68119b2fd..a649aa648 100644 --- a/tex/context/base/x-calcmath.mkii +++ b/tex/context/base/x-calcmath.mkii @@ -5,7 +5,7 @@ %D subtitle=Calculator Math, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-calcmath.mkiv b/tex/context/base/x-calcmath.mkiv index 7dfa60e0e..ce4f95ad2 100644 --- a/tex/context/base/x-calcmath.mkiv +++ b/tex/context/base/x-calcmath.mkiv @@ -5,7 +5,7 @@ %D subtitle=Calculator Math, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-cals.lua b/tex/context/base/x-cals.lua index 904dc39c9..ba6d705bf 100644 --- a/tex/context/base/x-cals.lua +++ b/tex/context/base/x-cals.lua @@ -126,6 +126,8 @@ end function cals.table(root,namespace) local prefix = (namespace or "cals") .. ":" + + local prefix = namespace and namespace ~= "" and (namespace .. ":") or "" local p = "/" .. prefix local tgroupspec = p .. "tgroup" @@ -134,7 +136,7 @@ function cals.table(root,namespace) local hcolspec = p .. "thead" .. p .. "colspec" local bcolspec = p .. "tbody" .. p .. "colspec" local fcolspec = p .. "tfoot" .. p .. "colspec" - local entryspec = p .. "entry" .. "|" ..prefix .. "entrytbl" + local entryspec = p .. "entry" .. "|" .. prefix .. "entrytbl" -- shouldn't that be p ? local hrowspec = p .. "thead" .. p .. "row" local browspec = p .. "tbody" .. p .. "row" local frowspec = p .. "tfoot" .. p .. "row" diff --git a/tex/context/base/x-cals.mkiv b/tex/context/base/x-cals.mkiv index e0d2ac11f..4b9195fad 100644 --- a/tex/context/base/x-cals.mkiv +++ b/tex/context/base/x-cals.mkiv @@ -5,7 +5,7 @@ %D subtitle=Cals table renderer, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA ADE}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -29,8 +29,15 @@ \xmlsetfunction {\xmldocument} {cals:table} {moduledata.cals.table} \stopxmlsetups +\startxmlsetups xml:cals:nonamespace + \xmlsetfunction {\xmldocument} {table} {moduledata.cals.table} +\stopxmlsetups + \xmlregistersetup{xml:cals:process} \xmlregisterns{cals}{cals} +%D One can register the nonamespace variant for cases where the cals +%D model is embedded in the parent DTD. + \stopmodule diff --git a/tex/context/base/x-chemml.mkii b/tex/context/base/x-chemml.mkii index 68b52cdd1..08d64e54b 100644 --- a/tex/context/base/x-chemml.mkii +++ b/tex/context/base/x-chemml.mkii @@ -5,7 +5,7 @@ %D subtitle=Loading CHEMML Filters, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-chemml.mkiv b/tex/context/base/x-chemml.mkiv index 9ad8ed6c1..34aba3011 100644 --- a/tex/context/base/x-chemml.mkiv +++ b/tex/context/base/x-chemml.mkiv @@ -5,7 +5,7 @@ %D subtitle=MkIV ChemML renderer, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA ADE}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-contml.mkii b/tex/context/base/x-contml.mkii index a582d8eb9..22fffa50a 100644 --- a/tex/context/base/x-contml.mkii +++ b/tex/context/base/x-contml.mkii @@ -8,7 +8,7 @@ %D subtitle=Basic \CONTEXT\ commands, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-corres.mkii b/tex/context/base/x-corres.mkii index 09c7263dc..effd79a5b 100644 --- a/tex/context/base/x-corres.mkii +++ b/tex/context/base/x-corres.mkii @@ -5,7 +5,7 @@ %D subtitle=Handling Correspondence Base, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-css.mkiv b/tex/context/base/x-css.mkiv index cc7f8682a..4ea252f9d 100644 --- a/tex/context/base/x-css.mkiv +++ b/tex/context/base/x-css.mkiv @@ -5,7 +5,7 @@ %D subtitle=Css Helpers, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-ct.mkiv b/tex/context/base/x-ct.mkiv index ad20eea05..ef6eb4ea4 100644 --- a/tex/context/base/x-ct.mkiv +++ b/tex/context/base/x-ct.mkiv @@ -5,7 +5,7 @@ %D subtitle=\CONTEXT\ Structures, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA ADE}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-dir-01.tex b/tex/context/base/x-dir-01.tex index b1056fdd5..6e4192a13 100644 --- a/tex/context/base/x-dir-01.tex +++ b/tex/context/base/x-dir-01.tex @@ -5,7 +5,7 @@ %D subtitle=Overview (1), %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-dir-05.mkii b/tex/context/base/x-dir-05.mkii index 0d0edd832..53e73c5eb 100644 --- a/tex/context/base/x-dir-05.mkii +++ b/tex/context/base/x-dir-05.mkii @@ -5,7 +5,7 @@ %D subtitle=Access, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-dir-05.mkiv b/tex/context/base/x-dir-05.mkiv index 120f725ca..5a1cfd96b 100644 --- a/tex/context/base/x-dir-05.mkiv +++ b/tex/context/base/x-dir-05.mkiv @@ -5,7 +5,7 @@ %D subtitle=Access, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-fe.mkii b/tex/context/base/x-fe.mkii index 8562b1d52..dcf415850 100644 --- a/tex/context/base/x-fe.mkii +++ b/tex/context/base/x-fe.mkii @@ -5,7 +5,7 @@ %D subtitle=Simple Extensions, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-fig-00.mkii b/tex/context/base/x-fig-00.mkii index d293dc39f..2e000c64c 100644 --- a/tex/context/base/x-fig-00.mkii +++ b/tex/context/base/x-fig-00.mkii @@ -5,7 +5,7 @@ %D subtitle=Figure Base Loading, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-fig-01.mkii b/tex/context/base/x-fig-01.mkii index c2f97fea9..5a2ea20c8 100644 --- a/tex/context/base/x-fig-01.mkii +++ b/tex/context/base/x-fig-01.mkii @@ -5,7 +5,7 @@ %D subtitle=Figure Base Generation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-fig-02.mkii b/tex/context/base/x-fig-02.mkii index 22d49d27a..a8232fba9 100644 --- a/tex/context/base/x-fig-02.mkii +++ b/tex/context/base/x-fig-02.mkii @@ -5,7 +5,7 @@ %D subtitle=Figure Base Inclusion (I), %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-fig-03.mkii b/tex/context/base/x-fig-03.mkii index 131752823..c7f03453e 100644 --- a/tex/context/base/x-fig-03.mkii +++ b/tex/context/base/x-fig-03.mkii @@ -5,7 +5,7 @@ %D subtitle=Figure Base Inclusion (II), %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-fo.mkii b/tex/context/base/x-fo.mkii index 83cfe2433..3631f6d7e 100644 --- a/tex/context/base/x-fo.mkii +++ b/tex/context/base/x-fo.mkii @@ -5,7 +5,7 @@ %D subtitle=Formatting Objects, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-foxet.mkii b/tex/context/base/x-foxet.mkii index 0f8e43af9..d44cf2b7e 100644 --- a/tex/context/base/x-foxet.mkii +++ b/tex/context/base/x-foxet.mkii @@ -5,7 +5,7 @@ %D subtitle=Formatting Objects, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-foxet.mkiv b/tex/context/base/x-foxet.mkiv index b27969721..80fe7e500 100644 --- a/tex/context/base/x-foxet.mkiv +++ b/tex/context/base/x-foxet.mkiv @@ -5,7 +5,7 @@ %D subtitle=Formatting Objects, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-ldx.mkiv b/tex/context/base/x-ldx.mkiv index bf9bdf71a..4f4da5acb 100644 --- a/tex/context/base/x-ldx.mkiv +++ b/tex/context/base/x-ldx.mkiv @@ -1,3 +1,16 @@ +%D \module +%D [ file=x-ldx, +%D version=2008.06.03, +%D title=\CONTEXT\ Modules, +%D subtitle=Lua Source Pretty Printing, +%D author=Hans Hagen, +%D date=\currentdate, +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + \setupxml[default=hidden] \usemodule[x][mathml] diff --git a/tex/context/base/x-mathml.lua b/tex/context/base/x-mathml.lua index 434aefc55..fa99d51e6 100644 --- a/tex/context/base/x-mathml.lua +++ b/tex/context/base/x-mathml.lua @@ -6,9 +6,11 @@ if not modules then modules = { } end modules ['x-mathml'] = { license = "see context related readme files" } +-- This needs an upgrade to the latest greatest mechanisms. + local type, next = type, next local utf = unicode.utf8 -local texsprint, ctxcatcodes = tex.sprint, tex.ctxcatcodes +local texsprint, ctxcatcodes, txtcatcodes = tex.sprint, tex.ctxcatcodes, tex.txtcatcodes local format, lower, find, gsub = string.format, string.lower, string.find, string.gsub local utfchar, utffind, utfgmatch, utfgsub = utf.char, utf.find, utf.gmatch, utf.gsub local xmlsprint, xmlcprint, xmltext, xmlcontent = xml.sprint, xml.cprint, xml.text, xml.content @@ -22,10 +24,12 @@ lxml.mathml = mathml -- for the moment -- an alternative is to remap to private codes, where we can have -- different properties .. to be done; this will move and become --- generic +-- generic; we can then make the private ones active in math mode -- todo: handle opening/closing mo's here ... presentation mml is such a mess ... +characters.registerentities() + local doublebar = utfchar(0x2016) local n_replacements = { @@ -81,6 +85,8 @@ local o_replacements = { -- in main table } +--~ languages.data.labels.functions + local i_replacements = { ["sin"] = "\\mathopnolimits{sin}", ["cos"] = "\\mathopnolimits{cos}", @@ -234,6 +240,7 @@ local csymbols = { divergence = "divergence", grad = "grad", curl = "curl", + laplacian = "laplacian", Laplacian = "laplacian", }, calculus1 = { @@ -463,23 +470,35 @@ function mathml.mn(id,pattern) -- maybe at some point we need to interpret the number, but -- currently we assume an upright font local str = xmlcontent(getid(id)) or "" - str = gsub(str,"(%s+)",utfchar(0x205F)) -- medspace e.g.: twenty one (nbsp is not seen) - texsprint(ctxcatcodes,(gsub(str,".",n_replacements))) + local rep = gsub(str,"&.-;","") + local rep = gsub(rep,"(%s+)",utfchar(0x205F)) -- medspace e.g.: twenty one (nbsp is not seen) + local rep = gsub(rep,".",n_replacements) + -- texsprint(ctxcatcodes,rep) + context.mn(rep) end function mathml.mo(id) local str = xmlcontent(getid(id)) or "" - texsprint(ctxcatcodes,(utfgsub(str,".",o_replacements))) + local rep = gsub(str,"&.-;","") + local rep = utfgsub(rep,".",o_replacements) + texsprint(ctxcatcodes,rep) + -- context.mo(rep) -- fails with \left etc end function mathml.mi(id) - local str = xmlcontent(getid(id)) or "" - -- str = gsub(str,"^%s*(.-)%s*$","%1") - local rep = i_replacements[str] - if rep then + local e = getid(id) + local str = e.dt + if type(str) == "string" then -- we need a helper for this in the xml namespace ... xml.type(e) + -- local str = xmlcontent(e) or "" + local str = gsub(str,"&.-;","") -- needed? + local rep = i_replacements[str] + if not rep then + rep = gsub(str,".",i_replacements) + end texsprint(ctxcatcodes,rep) + -- context.mi(rep) else - texsprint(ctxcatcodes,(gsub(str,".",i_replacements))) + context.xmlflush(id) end end @@ -610,6 +629,7 @@ function mathml.mcolumn(root) local tag = e.tg if tag == "mi" or tag == "mn" or tag == "mo" or tag == "mtext" then local str = xmltext(e) +str = gsub(str,"&.-;","") for s in utfcharacters(str) do -- utf.gmatch(str,".") btw, the gmatch was bugged m[#m+1] = { tag, s } end @@ -624,8 +644,8 @@ function mathml.mcolumn(root) for s in utfcharacters(str) do -- utf.gmatch(str,".") btw, the gmatch was bugged m[#m+1] = { tag, s } end - elseif tag == "mline" then - m[#m+1] = { tag, e } + -- elseif tag == "mline" then + -- m[#m+1] = { tag, e } end end for e in lxml.collected(root,"/*") do @@ -640,7 +660,7 @@ function mathml.mcolumn(root) collect(m,e) end end - tex.sprint(ctxcatcodes,"\\halign\\bgroup\\hss$#$&$#$\\cr") + tex.sprint(ctxcatcodes,[[\halign\bgroup\hss\startimath\alignmark\stopimath\aligntab\startimath\alignmark\stopimath\cr]]) for i=1,#matrix do local m = matrix[i] local mline = true @@ -651,12 +671,14 @@ function mathml.mcolumn(root) end end if mline then - tex.sprint(ctxcatcodes,"\\noalign{\\obeydepth\\nointerlineskip}") + tex.sprint(ctxcatcodes,[[\noalign{\obeydepth\nointerlineskip}]]) end for j=1,#m do local mm = m[j] local tag, chr = mm[1], mm[2] if tag == "mline" then + -- This code is under construction ... I need some real motivation + -- to deal with this kind of crap. --~ local n, p = true, true --~ for c=1,#matrix do --~ local mc = matrix[c][j] @@ -764,15 +786,34 @@ function mathml.csymbol(root) local hash = url.hashed(lower(at.definitionUrl or "")) local full = hash.original or "" local base = hash.path or "" - local text = string.strip(lxmltext(root)) ---~ texsprint(ctxcatcodes,format("\\mmlapplycsymbol{%s}{%s}{%s}{%s}",full,base,encoding,text)) - texsprint(ctxcatcodes,"\\mmlapplycsymbol{",full,"}{",base,"}{",encoding,"}{",text,"}") + local text = string.strip(xmltext(root) or "") + context.mmlapplycsymbol(full,base,encoding,text) end function mathml.menclosepattern(root) root = getid(root) local a = root.at.notation if a and a ~= "" then - texsprint("mml:enclose:",gsub(a," +",",mml:enclose:")) + texsprint("mml:enclose:",(gsub(a," +",",mml:enclose:"))) + end +end + +function xml.is_element(e,name) + return type(e) == "table" and (not name or e.tg == name) +end + +function mathml.cpolar_a(root) + root = getid(root) + local dt = root.dt + context.mathopnolimits("Polar") + context.left(false,"(") + for k=1,#dt do + local dk = dt[k] + if xml.is_element(dk,"sep") then + context(",") + else + xmlsprint(dk) + end end + context.right(false,")") end diff --git a/tex/context/base/x-mathml.mkii b/tex/context/base/x-mathml.mkii index 101f65c5b..ccb9fa054 100644 --- a/tex/context/base/x-mathml.mkii +++ b/tex/context/base/x-mathml.mkii @@ -5,7 +5,7 @@ %D subtitle=Loading \MATHML\ Filters, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-mathml.mkiv b/tex/context/base/x-mathml.mkiv index 44e2b7432..5b431399f 100644 --- a/tex/context/base/x-mathml.mkiv +++ b/tex/context/base/x-mathml.mkiv @@ -5,7 +5,7 @@ %D subtitle=Loading \MATHML\ Filters, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for @@ -13,12 +13,18 @@ % \xmlfilter{#1}{/*/name()} -> \xmltag -% This module is under construction and will be cleaned up. +% This module is under construction and will be cleaned up. We use a funny mix of +% xml, tex and lua. I could rewrite the lot but it also shows how context evolves. +% +% no m:text strip (needs checking, maybe nbsp is mandate \writestatus{loading}{ConTeXt XML Macros / MathML Renderer} \unprotect +\usemodule[x][calcmath] +%usemodule[x][asciimath] + \startmodule [mathml] \registerctxluafile{x-mathml}{} @@ -31,8 +37,8 @@ \xmlfilter {\xmldocument} {mml:bind/function(remapmmlbind)} \xmlfilter {\xmldocument} {mml:csymbol/function(remapmmlcsymbol)} \xmlsetsetup{\xmldocument} {mml:*} {mml:*} - \xmlsetsetup{\xmldocument} {mml:apply/mml:apply/mml:inverse/../../..} {mml:apply:inverse} - \xmlstrip {\xmldocument} {(mml:mi|mml:mo|mml:mn|mml:mtext|mml:csymbol)} + \xmlsetsetup{\xmldocument} {mml:apply/mml:apply/mml:inverse/../..} {mml:apply:inverse} + \xmlstrip {\xmldocument} {(mml:mi|mml:mo|mml:mn|mml:csymbol)} \stopxmlsetups \xmlregisterns{omt}{openmath} @@ -40,15 +46,23 @@ \xmlregistersetup{xml:mml:define} -\unexpanded\def\setupMMLappearance[#1]{\dodoubleargument\getparameters[@@MML#1]} - \def\MMLhack{\let\MMLpar\par \let\par\relax \everyvbox{\let\par\MMLpar}} -\xmlmapvalue {mml:math:mode} {display} {\displaymathematics} -\xmlmapvalue {mml:math:mode} {inline} {\inlinemathematics} +\xmlmapvalue {mml:math:mode} {display} {\displaymathematics} % we had this already +\xmlmapvalue {mml:math:mode} {inline} {\inlinemathematics } + +\xmlmapvalue {mml:math:display} {block} {\displaymathematics} % before this showed up +\xmlmapvalue {mml:math:display} {inline} {\inlinemathematics } \startxmlsetups mml:math - \xmlval{mml:math:mode}{\xmlatt{#1}{mode}}{\automathematics}{\MMLhack\xmlflush{#1}} + \xmlval {mml:math:display} {\xmlatt{#1}{display}} { + \xmlval {mml:math:mode} {\xmlatt{#1}{mode}} { + \automathematics + } + } + { + \MMLhack\xmlflush{#1} + } \stopxmlsetups \startxmlsetups mml:imath @@ -106,7 +120,7 @@ \def\widevec#1% {\vbox{\mathsurround\zeropoint\ialign{##\crcr \rightarrowfill\crcr\noalign{\nointerlineskip}% - $\hfil\displaystyle{#1}\hfil$\crcr}}} + \startimath\hfil\displaystyle{#1}\hfil\stopimath\crcr}}} %D The rendering macros: @@ -160,7 +174,11 @@ %D \type {apply}. \def\MMLmathinner - {\ifinner \expandafter \firstofoneargument \else \expandafter \mathinner \fi} + {\ifinner + \expandafter\firstofoneargument + \else + \expandafter\mathinner + \fi} %D Auxiliary MathML macros: (to be generalized) @@ -257,6 +275,8 @@ %D version 3 the following definitions may be sub optimal or %D more complex than actually needed. +%D We will more more to lua ... + % simple version \newcount\@MMLlevel \def\MMLcreset{\@MMLlevel\zerocount} @@ -309,11 +329,11 @@ % \MMLdoR % } { \edef\mmlapplyaction{\xmlfilter{#1}{/*/name()}} - \doifsetupselse {mml:apply:\mmlapplyaction} { - \xmlsetup{#1}{mml:apply:\mmlapplyaction} + \doifsetupselse {mml:apply:mml:\mmlapplyaction} { + \xmlsetup{#1}{mml:apply:mml:\mmlapplyaction} } { % \MMLdoL - \xmlsetup{#1}{\xmlfilter{#1}{/*/name()}} + \xmlsetup{#1}{mml:\xmlfilter{#1}{/*/name()}} % \MMLdoR } % } @@ -328,15 +348,15 @@ \stopxmlsetups \startxmlsetups mml:apply:mml:fn - \xmldoifelse {#1} {/mml:ci} { - \edef\mmlfnci{\xmlcontent{#1}{/mml:ci}}% - \doifsetupselse{mml:fn:\mmlfnci} { % was mmc:fn:... - \xmlsetup{#1}{mml:fn:\mmlfnci} % \MMLdoL/MMLdoR to be handled in plugin + \xmldoifelse {#1} {/mml:fn/mml:ci} { + \edef\mmlfnci{\xmlstripped{#1}{/mml:fn/mml:ci}}% was xmlcontent + \doifsetupselse{mmc:fn:\mmlfnci} { % was mmc:fn:... + \xmlsetup{#1}{mmc:fn:\mmlfnci} % \MMLdoL/MMLdoR to be handled in plugin } { \MMLcreset \MMLdoL \mmlfirst{#1} - \ifnum\xmlcount{#1}>\plusone + \ifnum\xmlcount{#1}{/*}>\plusone \negthinspace % not enough \left(\MMLcreset\xmlconcatrange{#1}{/*}{2}{}{\MMLseparator,}\right) \fi @@ -351,12 +371,12 @@ \stopxmlsetups \startxmlsetups mml:apply:mml:csymbol - \xmlsetup{#1}{mml:csymbol} % \MMLdoL/MMLdoR to be handled in plugin + \xmlsetup{#1}{mml:csymbol}% \MMLdoL/MMLdoR to be handled in plugin \stopxmlsetups \startxmlsetups mml:apply:mml:ci \xmlfirst{#1}{/mml:ci} - \ifnum\xmlcount{#1}>\plusone + \ifnum\xmlcount{#1}{/*}>\plusone \left(\MMLcreset\xmlconcatrange{#1}{/*}{2}{}{\MMLseparator,}\right) \fi \stopxmlsetups @@ -369,22 +389,25 @@ % fn -\startxmlsetups mmc:fn:\utfchar{"00B1} % plusminus ± - \ifnum\xmlcount{#1}>\plustwo - \MMLcreset - \left(\xmlconcat{#1}{/*}{2}{}{\mmlfirst{#1}}\right) - \else - \mmlfirst{#1} - \fi +% plusminus ± + +\startxmlsetups mmc:fn:\utfchar{"00B1} + \MMLdoL + \xmlconcat{#1}{/[position()>1]}{\utfchar{"00B1}} + \MMLdoR \stopxmlsetups -\startxmlsetups mmc:fn:\utfchar{"2213} % minusplus - \xmlsetup{#1}{mmc:fn:plusminus} +% minusplus + +\startxmlsetups mmc:fn:\utfchar{"2213} + \MMLdoL + \xmlconcat{#1}{/[position()>1]}{\utfchar{"2213}} + \MMLdoR \stopxmlsetups \startxmlsetups mmc:fn \begingroup - \edef\mmlnoffn{\xmlcount{#1}} + \edef\mmlnoffn{\xmlcount{#1}{/*}} \ifnum\mmlnoffn>\plustwo \def\MMCfnleft {\left(} \def\MMCfnright{\right)} @@ -393,9 +416,9 @@ \let\MMCfnright\relax \fi \xmldoifelse {#1} {/mml:ci} { % first - \edef\mmlfnci{\xmlcontent{#1}{/mml:ci}}% - \doifsetupselse{mml:fn:\mmlfnci} { % was mmc:fn:... - \xmlsetup{#1}{mml:fn:\mmlfnci} % \MMLdoL/MMLdoR to be handled in plugin + \edef\mmlfnci{\xmltext{#1}{/mml:ci}}% was xmlcontent + \doifsetupselse{mmc:fn:\mmlfnci} { % was mmc:fn:... + \xmlsetup{#1}{mmc:fn:\mmlfnci} % \MMLdoL/MMLdoR to be handled in plugin } { \MMLcreset \mmlfirst{#1} @@ -424,13 +447,13 @@ \startxmlsetups mmc:fn:apply % where used? \xmldoifelse {#1} {/mml:ci} { % first - \edef\mmlfnci{\xmlcontent{#1}{/mml:ci}}% - \doifsetupselse{mml:fn:\mmlfnci} { % was mmc:fn:... - \xmlsetup{#1}{mml:fn:\mmlfnci} % \MMLdoL/MMLdoR to be handled in plugin + \edef\mmlfnci{\xmltext{#1}{/mml:ci}}% was xmlcontent + \doifsetupselse{mmc:fn:\mmlfnci} { % was mmc:fn:... + \xmlsetup{#1}{mmc:fn:\mmlfnci} % \MMLdoL/MMLdoR to be handled in plugin } { \MMLcreset \mmlfirst{#1} - \ifnum\xmlcount{#1}>\plusone + \ifnum\xmlcount{#1}{/*}>\plusone \negthinspace \left(\MMLcreset\xmlconcat{#1}{2}{}{\MMLseparator,}\right) \fi @@ -446,11 +469,14 @@ %D the open math extension module). % http://www.publishers.com/somename +% +% called at the lua end \starttexdefinition mmlapplycsymbol #1#2#3#4 % #1=full url, #2=name, #3=encoding, #4=text \doifelse {#3} {text} { - {\mr #4} +% {\mr #4} + \text{#4} } { \doifsetupselse {mml:csymbol:#1} { % full url @@ -488,7 +514,7 @@ \startxmlsetups mml:ci \xmlcommand{#1}{/}{mml:ci:\xmlattdef{#1}{type}{default}} \stopxmlsetups \startxmlsetups mml:cn \xmlcommand{#1}{/}{mml:cn:\xmlattdef{#1}{type}{default}} \stopxmlsetups -% helpers cn +% helpers cn / todo: \mn{...} \startxmlsetups mml:cn:default \mathopnolimits{\xmlflush{#1}} @@ -551,7 +577,7 @@ \MMLcCNbasedata{\xmlflush{#1}} } { \MMLcCNbasedata{\xmlflush{#1}}\normalsubscript{ - \hbox {$ + \hbox {\startimath \mr \scriptscriptstyle \processaction @@ -559,7 +585,7 @@ [\v!characters=>\MMLcCNbasestring BODH, \v!text=>\MMLcCNbasestring{BIN}{OCT}{DEC}{HEX}, \s!unknown=>\mmlintegerbase] - $} + \stopimath} } } \fi @@ -580,8 +606,7 @@ \stopxmlsetups \startxmlsetups mml:cn:polar:a - \mathopnolimits{Polar}% ? ? ? - \left(\xmlsnippet{#1}{1},\xmlsnippet{#1}{3}\right) + \ctxmodulemathml{cpolar_a("#1")} \stopxmlsetups \startxmlsetups mml:cn:polar:b @@ -661,16 +686,16 @@ % when empty element, then it's an apply \startxmlsetups mml:interval - \xmldoifelseempty {#1} {} { - % #1 == interval - \let\mmlintervalfirst \mmlfirst - \let\mmlintervalsecond\mmlsecond - \xmlsetup{#1}{mml:interval:\xmlattdef{#1}{closure}{closed}} - } { + \doifelse {\xmltag{#1}} {apply} { % #1 == apply \let\mmlintervalfirst \mmlsecond \let\mmlintervalsecond\mmlthird \xmlsetup{#1}{mml:interval:\xmlattributedef{#1}{/mml:interval}{closure}{closed}} + } { + % #1 == interval + \let\mmlintervalfirst \mmlfirst + \let\mmlintervalsecond\mmlsecond + \xmlsetup{#1}{mml:interval:\xmlattdef{#1}{closure}{closed}} } \stopxmlsetups @@ -708,7 +733,7 @@ \startxmlsetups mml:apply:inverse \settrue\xmlinversefunction - \xmlsetup{#1}{\xmlfilter{#1}{/mml:apply/*/name(1)}} + \xmlsetup{#1}{mml:\xmlfilter{#1}{/mml:apply/*[2]/name()}} \stopxmlsetups % condition @@ -739,7 +764,7 @@ \doif \MMLdeclarestate \v!start { \mathopnolimits{declare} \mmlfirst{#1} - \ifnum\xmlcount{#1}>\plusone + \ifnum\xmlcount{#1}{/*}>\plusone \thickspace \mathopnolimits{as} \thickspace @@ -1109,15 +1134,15 @@ \setupMMLappearance[relation][\c!align=\v!no] -\xmlmapvalue {mml:relation} {mml:eq} {=} -\xmlmapvalue {mml:relation} {mml:neq} {\neq} -\xmlmapvalue {mml:relation} {mml:gt} {>} -\xmlmapvalue {mml:relation} {mml:lt} {<} -\xmlmapvalue {mml:relation} {mml:geq} {\geq} -\xmlmapvalue {mml:relation} {mml:leq} {\leq} -\xmlmapvalue {mml:relation} {mml:equivalent} {\equiv} -\xmlmapvalue {mml:relation} {mml:approx} {\approx} -\xmlmapvalue {mml:relation} {mml:factorof} {\mid} +\xmlmapvalue {mml:relation} {eq} {=} +\xmlmapvalue {mml:relation} {neq} {\neq} +\xmlmapvalue {mml:relation} {gt} {>} +\xmlmapvalue {mml:relation} {lt} {<} +\xmlmapvalue {mml:relation} {geq} {\geq} +\xmlmapvalue {mml:relation} {leq} {\leq} +\xmlmapvalue {mml:relation} {equivalent} {\equiv} +\xmlmapvalue {mml:relation} {approx} {\approx} +\xmlmapvalue {mml:relation} {factorof} {\mid} \startxmlsetups mml:eq \xmlsetup{#1}{mml:relation} \stopxmlsetups \startxmlsetups mml:neq \xmlsetup{#1}{mml:relation} \stopxmlsetups @@ -1135,28 +1160,28 @@ \stopxmlsetups \startxmlsetups mml:relation:default - \xmlconcatrange{#1}{/*}{2}{}{\xmlval{mml:relation}{\mmlapplyaction}{?}} + \xmlconcatrange{#1}{/*}{2}{}{\xmlval{mml:relation}{\mmlapplyaction}{[\mmlapplyaction]}} \stopxmlsetups \startxmlsetups mml:relation:last \eqalign { - \xmlconcatrange{#1}{/*}{2}{-2}{&\xmlval{mml:relation}{\mmlapplyaction}{?}\crcr} - \mmlprelast{#1}&\xmlval{mml:relation}{\mmlapplyaction}{?}{}\mmllast{#1} + \xmlconcatrange{#1}{/*}{2}{-2}{&\xmlval{mml:relation}{\mmlapplyaction}{[\mmlapplyaction]}\crcr} + \mmlprelast{#1}&\xmlval{mml:relation}{\mmlapplyaction}{[\mmlapplyaction]}{}\mmllast{#1} } \stopxmlsetups \startxmlsetups mml:relation:first \eqalign { - \mmlsecond{#1}\xmlval{mml:relation}{\mmlapplyaction}{?}{} - &\xmlconcatrange{#1}{/*}{3}{}{\crcr\xmlval{mml:relation}{\mmlapplyaction}{?}{}&} + \mmlsecond{#1}\xmlval{mml:relation}{\mmlapplyaction}{[\mmlapplyaction]}{} + &\xmlconcatrange{#1}{/*}{3}{}{\crcr\xmlval{mml:relation}{\mmlapplyaction}{[\mmlapplyaction]}{}&} } \stopxmlsetups \startxmlsetups mml:relation:left \eqalign { - \xmlconcatrange{#1}{/*}{2}{}{&\xmlval{mml:relation}{\mmlapplyaction}{?}\crcr} + \xmlconcatrange{#1}{/*}{2}{}{&\xmlval{mml:relation}{\mmlapplyaction}{[\mmlapplyaction]}\crcr} } \stopxmlsetups \startxmlsetups mml:relation:right \eqalign { - &\xmlconcatrange{#1}{/*}{2}{}{\crcr\xmlval{mml:relation}{\mmlapplyaction}{?}{}&} + &\xmlconcatrange{#1}{/*}{2}{}{\crcr\xmlval{mml:relation}{\mmlapplyaction}{[\mmlapplyaction]}{}&} } \stopxmlsetups \startxmlsetups mml:relation:no @@ -1230,9 +1255,15 @@ \xmldoifelse {#1} {/mml:lambda} { % a special case (mathadore/openmath) \frac { - d\normalsuperscript{\xmlfirst{#1}{/mml:bvar}\xmlfirst{#1}{/mml:cn}}{\xmlfirst{#1}{/mml:lambda}\xmlfirst{#1}{/mml:ci}} + d + \normalsuperscript + {\xmlfirst{#1}{/mml:bvar}\xmlfirst{#1}{/mml:cn}} + {\xmlfirst{#1}{/mml:lambda}\xmlfirst{#1}{/mml:ci}} } { - d{\xmlfirst{#1}{/mml:bvar}\xmlfirst{#1}{/mml:ci}}\normalsuperscript{\xmlfirst{#1}{/mml:bvar}\xmlfirst{#1}{/mml:cn}} + d + {\xmlfirst{#1}{/mml:bvar}\xmlfirst{#1}{/mml:ci}} + \normalsuperscript + {\xmlfirst{#1}{/mml:bvar}\xmlfirst{#1}{/mml:cn}} } } { \xmldoifelse {#1} {/mml:bvar} { @@ -1251,7 +1282,13 @@ \xmlfirst{#1}{/mml:ci} } { \MMLcreset +\ifnum\xmlcount{#1}{/mml:apply/*}>\plustwo % hack + \left( \xmlfirst{#1}{/mml:apply} + \right) +\else + \xmlfirst{#1}{/mml:apply} +\fi } } } { @@ -1265,7 +1302,8 @@ \left(\MMLcreset\xmlfirst{#1}{/(mml:apply\string|mml:ci)}\right) } } { - \xmlconcatrange{#1}{/*}{2}{}\normalsuperscript\prime + % beware, the second {} is needed for the superscript + \xmlconcatrange{#1}{/*}{2}{}{}\normalsuperscript\prime } } } { @@ -1408,7 +1446,7 @@ \def\mmlstackedsubscripts#1% {\vbox {\baselineskip\zeropoint % hack, taco vragen - \halign{$\scriptstyle\hss##\hss$\cr#1\crcr}}} + \halign{\startimath\scriptstyle\hss\alignmark\alignmark\hss\stopimath\cr#1\crcr}}} % unfinished @@ -1553,7 +1591,7 @@ \startxmlsetups mml:vector \begingroup - \ifnum\xmlcount{#1}>\plusone + \ifnum\xmlcount{#1}{/*}>\plusone \doifelse\MMLvectordirection\v!horizontal { \left(\xmlconcat{#1}{/*}{\MMLseparator\MMLvectorseparator}\right) } { @@ -1621,9 +1659,6 @@ } \stopxmlsetups -\usemodule[x][calcmath] -%usemodule[x][asciimath] - \startxmlsetups mml:annotation \xmldoifelse {#1} {.[oneof(@encoding,'TeX','tex','TEX','ConTeXt','context','CONTEXT','ctx')]} { \xmlflushcontext{#1} @@ -1674,31 +1709,31 @@ % todo: \def\mmlcfunction#1#2{\mathopnolimits{#2}\xmlsetup{#1}{mml:function}} -\startxmlsetups mml:sin \mathopnolimits {sin}\xmlsetup{#1}{mml:function} \stopxmlsetups -\startxmlsetups mml:sinh \mathopnolimits {sinh}\xmlsetup{#1}{mml:function} \stopxmlsetups -\startxmlsetups mml:cos \mathopnolimits {cos}\xmlsetup{#1}{mml:function} \stopxmlsetups -\startxmlsetups mml:cosh \mathopnolimits {cosh}\xmlsetup{#1}{mml:function} \stopxmlsetups -\startxmlsetups mml:tan \mathopnolimits {tan}\xmlsetup{#1}{mml:function} \stopxmlsetups -\startxmlsetups mml:tanh \mathopnolimits {tanh}\xmlsetup{#1}{mml:function} \stopxmlsetups -\startxmlsetups mml:cot \mathopnolimits {cot}\xmlsetup{#1}{mml:function} \stopxmlsetups -\startxmlsetups mml:coth \mathopnolimits {coth}\xmlsetup{#1}{mml:function} \stopxmlsetups -\startxmlsetups mml:csc \mathopnolimits {csc}\xmlsetup{#1}{mml:function} \stopxmlsetups -\startxmlsetups mml:csch \mathopnolimits {csch}\xmlsetup{#1}{mml:function} \stopxmlsetups -\startxmlsetups mml:sec \mathopnolimits {sec}\xmlsetup{#1}{mml:function} \stopxmlsetups -\startxmlsetups mml:sech \mathopnolimits {sech}\xmlsetup{#1}{mml:function} \stopxmlsetups - -\startxmlsetups mml:arcsin \mathopnolimits {arcsin}\xmlsetup{#1}{mml:function} \stopxmlsetups -\startxmlsetups mml:arcsinh \mathopnolimits{arcsinh}\xmlsetup{#1}{mml:function} \stopxmlsetups -\startxmlsetups mml:arccos \mathopnolimits {arccos}\xmlsetup{#1}{mml:function} \stopxmlsetups -\startxmlsetups mml:arccosh \mathopnolimits{arccosh}\xmlsetup{#1}{mml:function} \stopxmlsetups -\startxmlsetups mml:arctan \mathopnolimits {arctan}\xmlsetup{#1}{mml:function} \stopxmlsetups -\startxmlsetups mml:arctanh \mathopnolimits{arctanh}\xmlsetup{#1}{mml:function} \stopxmlsetups -\startxmlsetups mml:arccot \mathopnolimits {arccot}\xmlsetup{#1}{mml:function} \stopxmlsetups -\startxmlsetups mml:arccoth \mathopnolimits{arccoth}\xmlsetup{#1}{mml:function} \stopxmlsetups -\startxmlsetups mml:arccsc \mathopnolimits {arccsc}\xmlsetup{#1}{mml:function} \stopxmlsetups -\startxmlsetups mml:arccsch \mathopnolimits{arccsch}\xmlsetup{#1}{mml:function} \stopxmlsetups -\startxmlsetups mml:arcsec \mathopnolimits {arcsec}\xmlsetup{#1}{mml:function} \stopxmlsetups -\startxmlsetups mml:arcsech \mathopnolimits{arcsech}\xmlsetup{#1}{mml:function} \stopxmlsetups +\startxmlsetups mml:sin \mathcommand {sin}\xmlsetup{#1}{mml:function} \stopxmlsetups +\startxmlsetups mml:sinh \mathcommand {sinh}\xmlsetup{#1}{mml:function} \stopxmlsetups +\startxmlsetups mml:cos \mathcommand {cos}\xmlsetup{#1}{mml:function} \stopxmlsetups +\startxmlsetups mml:cosh \mathcommand {cosh}\xmlsetup{#1}{mml:function} \stopxmlsetups +\startxmlsetups mml:tan \mathcommand {tan}\xmlsetup{#1}{mml:function} \stopxmlsetups +\startxmlsetups mml:tanh \mathcommand {tanh}\xmlsetup{#1}{mml:function} \stopxmlsetups +\startxmlsetups mml:cot \mathcommand {cot}\xmlsetup{#1}{mml:function} \stopxmlsetups +\startxmlsetups mml:coth \mathcommand {coth}\xmlsetup{#1}{mml:function} \stopxmlsetups +\startxmlsetups mml:csc \mathcommand {csc}\xmlsetup{#1}{mml:function} \stopxmlsetups +\startxmlsetups mml:csch \mathcommand {csch}\xmlsetup{#1}{mml:function} \stopxmlsetups +\startxmlsetups mml:sec \mathcommand {sec}\xmlsetup{#1}{mml:function} \stopxmlsetups +\startxmlsetups mml:sech \mathcommand {sech}\xmlsetup{#1}{mml:function} \stopxmlsetups + +\startxmlsetups mml:arcsin \mathcommand {arcsin}\xmlsetup{#1}{mml:function} \stopxmlsetups +\startxmlsetups mml:arcsinh \mathcommand{arcsinh}\xmlsetup{#1}{mml:function} \stopxmlsetups +\startxmlsetups mml:arccos \mathcommand {arccos}\xmlsetup{#1}{mml:function} \stopxmlsetups +\startxmlsetups mml:arccosh \mathcommand{arccosh}\xmlsetup{#1}{mml:function} \stopxmlsetups +\startxmlsetups mml:arctan \mathcommand {arctan}\xmlsetup{#1}{mml:function} \stopxmlsetups +\startxmlsetups mml:arctanh \mathcommand{arctanh}\xmlsetup{#1}{mml:function} \stopxmlsetups +\startxmlsetups mml:arccot \mathcommand {arccot}\xmlsetup{#1}{mml:function} \stopxmlsetups +\startxmlsetups mml:arccoth \mathcommand{arccoth}\xmlsetup{#1}{mml:function} \stopxmlsetups +\startxmlsetups mml:arccsc \mathcommand {arccsc}\xmlsetup{#1}{mml:function} \stopxmlsetups +\startxmlsetups mml:arccsch \mathcommand{arccsch}\xmlsetup{#1}{mml:function} \stopxmlsetups +\startxmlsetups mml:arcsec \mathcommand {arcsec}\xmlsetup{#1}{mml:function} \stopxmlsetups +\startxmlsetups mml:arcsech \mathcommand{arcsech}\xmlsetup{#1}{mml:function} \stopxmlsetups \startxmlsetups mml:function \ifx\MMLpowerelement\empty @@ -1820,9 +1855,10 @@ \stopxmlsetups \startxmlsetups mml:mn % todo: mathvariant mathsize mathcolor mathbackground - \begingroup - \mr \ctxmodulemathml{mn("#1")}% no \hbox, would be ok for . , but spoils rest - \endgroup +% \begingroup +% \mr + \ctxmodulemathml{mn("#1")}% no \hbox, would be ok for . , but spoils rest +% \endgroup \stopxmlsetups % <m:mo>-</m:mo><m:mn>2</m:mn> and <m:mn>1</m:mn><m:mo>-</m:mo><m:mn>2</m:mn> @@ -1919,7 +1955,7 @@ \vcenter { \framed [frame=off,strut=no,background={\mmlmenclosenotation}] % offset is kind of undefined - {$ + {\startimath \expanded{\doifinsetelse {mml:enclose:longdiv} {\mmlmenclosenotation}} { \overline{\left)\strut\xmlflush{#1}\right.} } { @@ -1933,7 +1969,7 @@ } } } - $} + \stopimath} } } } @@ -1944,6 +1980,7 @@ \xmlmapvalue {mml:mfrac:linethickness} {thin} {.2pt} \xmlmapvalue {mml:mfrac:linethickness} {medium} {.4pt} \xmlmapvalue {mml:mfrac:linethickness} {thick} {.8pt} +\xmlmapvalue {mml:mfrac:linethickness} {0} {0pt} \startxmlsetups mml:mfrac % dodo: handle linethickness in lua + unit \begingroup @@ -1958,6 +1995,7 @@ \doifelse {\xmlval{mml:mfrac:linethickness}{\mmlfraclinethickness}{}} {} { \scratchdimen\xmlval{mml:mfrac:linethickness}\mmlfraclinethickness{.4pt} } { + % probably not yet ok \setdimensionwithunit\scratchdimen\mmlfraclinethickness{pt} } { @@ -1987,16 +2025,16 @@ \endgroup \stopxmlsetups -\setupMMLappearance[text][\c!alternative=\v!a] % a=normal, b=keep spaces +\setupMMLappearance[text][\c!alternative=\v!b] % a=normal, b=keep spaces \startxmlsetups mml:mtext \domathtext { \applymmlsometext{#1}{ - \doifelse\MMLscriptsalternative\v!a { + \doifelse \MMLtextalternative \v!a { %\ctxmodulemathml{stripped(\!!bs\xmlflush{#1}\!!es)} \ignorespaces \xmlflush{#1} - \unskip + \removeunwantedspaces } { \xmlflush{#1} } @@ -2005,12 +2043,13 @@ \stopxmlsetups \startxmlsetups mml:merror - \hbox{$\displaystyle\xmlflush{#1}$} + \hbox{\startimath\displaystyle\xmlflush{#1}\stopimath} \stopxmlsetups \startxmlsetups mml:mphantom % \phantom{\ignorespaces{}\xmlflush{#1}\unskip} % watch spacing {} hack - \phantom{\mathstyle{\ignorespaces{}\xmlflush{#1}\unskip}}% +% \phantom{\mathstyle{\ignorespaces{}\xmlflush{#1}\unskip}}% + \phantom{\triggermathstyle\normalmathstyle\ignorespaces\xmlflush{#1}\removeunwantedspaces} % \mktriggereffect\v!hidden % \ignorespaces{}\xmlflush{#1}\unskip % no attributes in math yet % \mktriggereffect\v!normal @@ -2020,27 +2059,7 @@ \xmlflush{#1} \stopxmlsetups -% mrow - -% \startxmlsetups mml:mrow -% \begingroup -% \ifcase\xmlcount{#1}{/mml:mo}\relax -% \xmlflush{#1} -% \else % no \let -% \def\MMLleft {\left } -% \def\MMLright {\right} -% \def\MMLmiddle{\middle} -% \enabledelimiter -% \checkdelimiters{\xmlall{#1}{/mml:mo}} -% \fakeleftdelimiter -% \xmlflush{#1} -% \fakerightdelimiter -% \disabledelimiter -% \fi -% \endgroup -% \stopxmlsetups - -% option: no fenced +% mrow / option: no fenced \startxmlsetups mml:mrow \begingroup @@ -2198,38 +2217,38 @@ \hskip\!!widtha \fi \else - \phantom{\mathstyle{\mmlspacetext}}% + \phantom{\triggermathstyle\normalmathstyle\mmlspacetext} \fi \endgroup \stopxmlsetups % later we can do a better job by manipulating node lists -\startxmlsetups mml:mline - % new, rather undefined, we need to capture a few keywords - \edef\mmllinewidth {\xmlatt{#1}{linethickness}} - \edef\mmllinetext {\xmlatt{#1}{spacing}} - \edef\mmllinelength{\xmlattdef{#1}{length}\!!zeropoint} - \ifx\mmllinewidth\empty - \!!deptha.5\linewidth - \else - \!!deptha.5\dimexpr\mmllinewidth\relax - \fi - \!!heighta\!!deptha - \ifx\mmllinetext\empty - \ifx\mmllinelength\empty - \!!widtha\zeropoint - \else - \!!widtha\mmllinelength - \fi - \else - \setbox\scratchbox\hbox{\mathematics{\mathstyle{\mmllinetext}}}% not ok - \!!widtha\wd\scratchbox - \fi - \hbox{\vrule\!!width\!!widtha\!!depth\!!deptha\!!height\!!heighta} -\stopxmlsetups +% \startxmlsetups mml:mline +% % new, rather undefined, we need to capture a few keywords +% \edef\mmllinewidth {\xmlatt{#1}{linethickness}} +% \edef\mmllinetext {\xmlatt{#1}{spacing}} +% \edef\mmllinelength{\xmlattdef{#1}{length}\!!zeropoint} +% \ifx\mmllinewidth\empty +% \!!deptha.5\linewidth +% \else +% \!!deptha.5\dimexpr\mmllinewidth\relax +% \fi +% \!!heighta\!!deptha +% \ifx\mmllinetext\empty +% \ifx\mmllinelength\empty +% \!!widtha\zeropoint +% \else +% \!!widtha\mmllinelength +% \fi +% \else +% \setbox\scratchbox\hbox{\mathematics{\mathstyle{\mmllinetext}}}% not ok +% \!!widtha\wd\scratchbox +% \fi +% \hbox{\vrule\!!width\!!widtha\!!depth\!!deptha\!!height\!!heighta} +% \stopxmlsetups -\startxmlsetups mml:mglyph % probably never ok +\startxmlsetups mml:mglyph % probably never ok (hbox is needed in order to switch to normal font) \begingroup \edef\mmlglyphfontfamily{\xmlatt {#1}{fontfamily}} \edef\mmlglyphalt {\xmlattdef{#1}{alt}{unknown}} @@ -2239,7 +2258,7 @@ \else\ifx\mmlglyphindex\empty \hbox{\tttf[no index specified for \mmlglyphalt]} \else - \getglyph\mmlglyphfontfamily\mmlglyphindex + \hbox{\getglyph\mmlglyphfontfamily\mmlglyphindex} \fi\fi \endgroup \stopxmlsetups diff --git a/tex/context/base/x-newcml.mkii b/tex/context/base/x-newcml.mkii index 76d69ed51..23c2bf1e2 100644 --- a/tex/context/base/x-newcml.mkii +++ b/tex/context/base/x-newcml.mkii @@ -5,7 +5,7 @@ %D subtitle=ChemML, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA ADE}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-newmme.mkii b/tex/context/base/x-newmme.mkii index 5e17ea7a4..2e0d4c189 100644 --- a/tex/context/base/x-newmme.mkii +++ b/tex/context/base/x-newmme.mkii @@ -5,7 +5,7 @@ %D subtitle=MathML Entities, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA ADE}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-newmml.mkii b/tex/context/base/x-newmml.mkii index 17eda5276..e777edca1 100644 --- a/tex/context/base/x-newmml.mkii +++ b/tex/context/base/x-newmml.mkii @@ -5,7 +5,7 @@ %D subtitle=MathML, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA ADE}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-newmml.mkiv b/tex/context/base/x-newmml.mkiv index 757dcf389..4c12daeee 100644 --- a/tex/context/base/x-newmml.mkiv +++ b/tex/context/base/x-newmml.mkiv @@ -5,7 +5,7 @@ %D subtitle=MathML Renderer, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA ADE}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-newmmo.mkii b/tex/context/base/x-newmmo.mkii index c3b56cc16..97fdeb06c 100644 --- a/tex/context/base/x-newmmo.mkii +++ b/tex/context/base/x-newmmo.mkii @@ -5,7 +5,7 @@ %D subtitle=MathML Renderer/Open Math Extensions, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA ADE}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-newpml.mkii b/tex/context/base/x-newpml.mkii index d69231e3f..ea3bae182 100644 --- a/tex/context/base/x-newpml.mkii +++ b/tex/context/base/x-newpml.mkii @@ -5,7 +5,7 @@ %D subtitle=Units, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-physml.mkii b/tex/context/base/x-physml.mkii index 7f6a94642..4d9cffe33 100644 --- a/tex/context/base/x-physml.mkii +++ b/tex/context/base/x-physml.mkii @@ -5,7 +5,7 @@ %D subtitle=Loading PHYSML Filters, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-physml.mkiv b/tex/context/base/x-physml.mkiv index 508c70c52..dd9a164dd 100644 --- a/tex/context/base/x-physml.mkiv +++ b/tex/context/base/x-physml.mkiv @@ -5,7 +5,7 @@ %D subtitle=Loading PHYSML Filters, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-res-00.mkii b/tex/context/base/x-res-00.mkii index 9878d0a58..d031e1453 100644 --- a/tex/context/base/x-res-00.mkii +++ b/tex/context/base/x-res-00.mkii @@ -5,7 +5,7 @@ %D subtitle=Resource Libraries, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-res-01.mkii b/tex/context/base/x-res-01.mkii index dc14e7054..41580a0b8 100644 --- a/tex/context/base/x-res-01.mkii +++ b/tex/context/base/x-res-01.mkii @@ -5,7 +5,7 @@ %D subtitle=Figure Base Generation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-res-01.mkiv b/tex/context/base/x-res-01.mkiv index b82d60484..0ebb8933d 100644 --- a/tex/context/base/x-res-01.mkiv +++ b/tex/context/base/x-res-01.mkiv @@ -5,7 +5,7 @@ %D subtitle=Figure Base Generation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-res-02.mkii b/tex/context/base/x-res-02.mkii index a29f446f3..f8502dbac 100644 --- a/tex/context/base/x-res-02.mkii +++ b/tex/context/base/x-res-02.mkii @@ -5,7 +5,7 @@ %D subtitle=Figure Base Inclusion (I), %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-res-03.mkii b/tex/context/base/x-res-03.mkii index bf5ea226c..15f2620c1 100644 --- a/tex/context/base/x-res-03.mkii +++ b/tex/context/base/x-res-03.mkii @@ -5,7 +5,7 @@ %D subtitle=Figure Base Inclusion (II), %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-res-04.mkii b/tex/context/base/x-res-04.mkii index b5032f550..b22e9ffa4 100644 --- a/tex/context/base/x-res-04.mkii +++ b/tex/context/base/x-res-04.mkii @@ -5,7 +5,7 @@ %D subtitle=Figure Base Loading, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-res-08.mkii b/tex/context/base/x-res-08.mkii index 3d79b00e4..0805f071f 100644 --- a/tex/context/base/x-res-08.mkii +++ b/tex/context/base/x-res-08.mkii @@ -5,7 +5,7 @@ %D subtitle=Resource Reporting, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-res-09.mkii b/tex/context/base/x-res-09.mkii index 608236156..e3354e9a4 100644 --- a/tex/context/base/x-res-09.mkii +++ b/tex/context/base/x-res-09.mkii @@ -5,7 +5,7 @@ %D subtitle=Resource Reporting (2), %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-res-10.mkii b/tex/context/base/x-res-10.mkii index f23c50358..833bce776 100644 --- a/tex/context/base/x-res-10.mkii +++ b/tex/context/base/x-res-10.mkii @@ -5,7 +5,7 @@ %D subtitle=Resource Dummy Generation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-res-11.mkii b/tex/context/base/x-res-11.mkii index b8569d22e..84157be88 100644 --- a/tex/context/base/x-res-11.mkii +++ b/tex/context/base/x-res-11.mkii @@ -5,7 +5,7 @@ %D subtitle=Resource Reporting (3), %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-res-12.mkii b/tex/context/base/x-res-12.mkii index 1cff48717..81761ae9a 100644 --- a/tex/context/base/x-res-12.mkii +++ b/tex/context/base/x-res-12.mkii @@ -5,7 +5,7 @@ %D subtitle=Resource Checking, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-res-20.mkii b/tex/context/base/x-res-20.mkii index 3ff069ffd..0bc1358ec 100644 --- a/tex/context/base/x-res-20.mkii +++ b/tex/context/base/x-res-20.mkii @@ -5,7 +5,7 @@ %D subtitle=Figure Lists, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-res-50.mkii b/tex/context/base/x-res-50.mkii index 6fa1a3e4f..3c3e758a7 100644 --- a/tex/context/base/x-res-50.mkii +++ b/tex/context/base/x-res-50.mkii @@ -5,7 +5,7 @@ %D subtitle=Multimedia Presentation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={\PRAGMA\ / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-res-50.mkiv b/tex/context/base/x-res-50.mkiv index 87b63dd97..62a86b7a7 100644 --- a/tex/context/base/x-res-50.mkiv +++ b/tex/context/base/x-res-50.mkiv @@ -5,7 +5,7 @@ %D subtitle=Multimedia Presentation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={\PRAGMA\ / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-sch-00.mkii b/tex/context/base/x-sch-00.mkii index 379d19cf2..5b4da0825 100644 --- a/tex/context/base/x-sch-00.mkii +++ b/tex/context/base/x-sch-00.mkii @@ -5,7 +5,7 @@ %D subtitle=XML Schema Basics, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-sch-01.mkii b/tex/context/base/x-sch-01.mkii index d72cbf89c..5bdf088fe 100644 --- a/tex/context/base/x-sch-01.mkii +++ b/tex/context/base/x-sch-01.mkii @@ -5,7 +5,7 @@ %D subtitle=XML Schema Presentation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-set-01.mkii b/tex/context/base/x-set-01.mkii index 75e1d43e2..814ea5fc6 100644 --- a/tex/context/base/x-set-01.mkii +++ b/tex/context/base/x-set-01.mkii @@ -6,7 +6,7 @@ %D subtitle=Macro Definitions, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-set-02.mkii b/tex/context/base/x-set-02.mkii index bb0b7583c..8af98c412 100644 --- a/tex/context/base/x-set-02.mkii +++ b/tex/context/base/x-set-02.mkii @@ -6,7 +6,7 @@ %D subtitle=Macro Definitions, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-set-11.mkii b/tex/context/base/x-set-11.mkii index 3207ef5f9..8c8f614a5 100644 --- a/tex/context/base/x-set-11.mkii +++ b/tex/context/base/x-set-11.mkii @@ -6,7 +6,7 @@ %D subtitle=Macro Definitions, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-set-11.mkiv b/tex/context/base/x-set-11.mkiv index ceba34f3d..c4b5b3db2 100644 --- a/tex/context/base/x-set-11.mkiv +++ b/tex/context/base/x-set-11.mkiv @@ -6,7 +6,7 @@ %D subtitle=Macro Definitions, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-set-12.mkii b/tex/context/base/x-set-12.mkii index d79901433..c2aa265c3 100644 --- a/tex/context/base/x-set-12.mkii +++ b/tex/context/base/x-set-12.mkii @@ -6,7 +6,7 @@ %D subtitle=Macro Definitions, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-set-12.mkiv b/tex/context/base/x-set-12.mkiv index d95aff4a3..43a3ede29 100644 --- a/tex/context/base/x-set-12.mkiv +++ b/tex/context/base/x-set-12.mkiv @@ -6,7 +6,7 @@ %D subtitle=Macro Definitions, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-steps.mkii b/tex/context/base/x-steps.mkii index 408a7e191..47141699a 100644 --- a/tex/context/base/x-steps.mkii +++ b/tex/context/base/x-steps.mkii @@ -5,7 +5,7 @@ %D subtitle=Step Charts \& Tables, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-steps.mkiv b/tex/context/base/x-steps.mkiv index 616818809..d60524338 100644 --- a/tex/context/base/x-steps.mkiv +++ b/tex/context/base/x-steps.mkiv @@ -5,7 +5,7 @@ %D subtitle=Step Charts \& Tables, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-xml-01.mkii b/tex/context/base/x-xml-01.mkii index 9502ab71a..95ce51fc8 100644 --- a/tex/context/base/x-xml-01.mkii +++ b/tex/context/base/x-xml-01.mkii @@ -5,7 +5,7 @@ %D subtitle=Formatting X?? files, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-xml-02.mkii b/tex/context/base/x-xml-02.mkii index 24f811c4d..e33ab9ee4 100644 --- a/tex/context/base/x-xml-02.mkii +++ b/tex/context/base/x-xml-02.mkii @@ -5,7 +5,7 @@ %D subtitle=Pretty Printing, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-xml-11.mkii b/tex/context/base/x-xml-11.mkii index c1b185b55..047561370 100644 --- a/tex/context/base/x-xml-11.mkii +++ b/tex/context/base/x-xml-11.mkii @@ -5,7 +5,7 @@ %D subtitle=Formatting X?? files, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/x-xtag.mkiv b/tex/context/base/x-xtag.mkiv index be593300c..c26b352b0 100644 --- a/tex/context/base/x-xtag.mkiv +++ b/tex/context/base/x-xtag.mkiv @@ -5,7 +5,7 @@ %D subtitle=\XML\ stream handler, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=PRAGMA] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/xetx-ini.mkii b/tex/context/base/xetx-ini.mkii index db3cccabd..55155fa1a 100644 --- a/tex/context/base/xetx-ini.mkii +++ b/tex/context/base/xetx-ini.mkii @@ -5,7 +5,7 @@ %D subtitle=\XETEX\ Initializations, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/xtag-ent.mkii b/tex/context/base/xtag-ent.mkii index f4c3e4b06..09051d0b4 100644 --- a/tex/context/base/xtag-ent.mkii +++ b/tex/context/base/xtag-ent.mkii @@ -5,7 +5,7 @@ %D subtitle=A bunch of Entities, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/xtag-exp.mkii b/tex/context/base/xtag-exp.mkii index 337b49348..60345677d 100644 --- a/tex/context/base/xtag-exp.mkii +++ b/tex/context/base/xtag-exp.mkii @@ -5,7 +5,7 @@ %D subtitle=Expansion, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/xtag-ext.mkii b/tex/context/base/xtag-ext.mkii index 9a132c677..e60ecd401 100644 --- a/tex/context/base/xtag-ext.mkii +++ b/tex/context/base/xtag-ext.mkii @@ -5,7 +5,7 @@ %D subtitle=Extra Macros, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/xtag-hyp.mkii b/tex/context/base/xtag-hyp.mkii index e4e048e2b..105f1a1e3 100644 --- a/tex/context/base/xtag-hyp.mkii +++ b/tex/context/base/xtag-hyp.mkii @@ -5,7 +5,7 @@ %D subtitle=Hyphenation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/xtag-ini.mkii b/tex/context/base/xtag-ini.mkii index 85b481419..a1d5d7be5 100644 --- a/tex/context/base/xtag-ini.mkii +++ b/tex/context/base/xtag-ini.mkii @@ -5,7 +5,7 @@ %D subtitle=Initialization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/xtag-map.mkii b/tex/context/base/xtag-map.mkii index cbde4f1b1..377b76ad3 100644 --- a/tex/context/base/xtag-map.mkii +++ b/tex/context/base/xtag-map.mkii @@ -5,7 +5,7 @@ %D subtitle=Remapping, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/xtag-mmc.mkii b/tex/context/base/xtag-mmc.mkii index 27e2c42ea..9da7fef84 100644 --- a/tex/context/base/xtag-mmc.mkii +++ b/tex/context/base/xtag-mmc.mkii @@ -5,7 +5,7 @@ %D subtitle=Content MathML, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/xtag-mml.mkii b/tex/context/base/xtag-mml.mkii index 051d15b00..f948128fa 100644 --- a/tex/context/base/xtag-mml.mkii +++ b/tex/context/base/xtag-mml.mkii @@ -5,7 +5,7 @@ %D subtitle=MathML, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/xtag-mmp.mkii b/tex/context/base/xtag-mmp.mkii index 75167c9e9..93f0a1504 100644 --- a/tex/context/base/xtag-mmp.mkii +++ b/tex/context/base/xtag-mmp.mkii @@ -5,7 +5,7 @@ %D subtitle=Presentation MathML, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/xtag-pml.mkii b/tex/context/base/xtag-pml.mkii index 53d22c52a..a0930b634 100644 --- a/tex/context/base/xtag-pml.mkii +++ b/tex/context/base/xtag-pml.mkii @@ -5,7 +5,7 @@ %D subtitle=Physics ML, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/xtag-pmu.mkii b/tex/context/base/xtag-pmu.mkii index b913475f5..5c7c9a8f6 100644 --- a/tex/context/base/xtag-pmu.mkii +++ b/tex/context/base/xtag-pmu.mkii @@ -5,7 +5,7 @@ %D subtitle=Units, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/xtag-pre.mkii b/tex/context/base/xtag-pre.mkii index 94a213d94..63706d64c 100644 --- a/tex/context/base/xtag-pre.mkii +++ b/tex/context/base/xtag-pre.mkii @@ -5,7 +5,7 @@ %D subtitle=Predefined Things, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/xtag-prs.mkii b/tex/context/base/xtag-prs.mkii index 02bdcf21c..8728d992a 100644 --- a/tex/context/base/xtag-prs.mkii +++ b/tex/context/base/xtag-prs.mkii @@ -5,7 +5,7 @@ %D subtitle=Parsing, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/xtag-raw.mkii b/tex/context/base/xtag-raw.mkii index e6dfdea41..aab294c5a 100644 --- a/tex/context/base/xtag-raw.mkii +++ b/tex/context/base/xtag-raw.mkii @@ -5,7 +5,7 @@ %D subtitle=Raw Specials, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/xtag-rng.mkii b/tex/context/base/xtag-rng.mkii index 254282424..4b9dcfaf1 100644 --- a/tex/context/base/xtag-rng.mkii +++ b/tex/context/base/xtag-rng.mkii @@ -5,7 +5,7 @@ %D subtitle=Relax NG, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/xtag-run.mkii b/tex/context/base/xtag-run.mkii index 035268104..219c7c081 100644 --- a/tex/context/base/xtag-run.mkii +++ b/tex/context/base/xtag-run.mkii @@ -5,7 +5,7 @@ %D subtitle=Visualization, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/xtag-stk.mkii b/tex/context/base/xtag-stk.mkii index e126ae5c7..d454a63ca 100644 --- a/tex/context/base/xtag-stk.mkii +++ b/tex/context/base/xtag-stk.mkii @@ -5,7 +5,7 @@ %D subtitle=Stacking Data, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/xtag-utf.mkii b/tex/context/base/xtag-utf.mkii index fec84d279..b58fbbe88 100644 --- a/tex/context/base/xtag-utf.mkii +++ b/tex/context/base/xtag-utf.mkii @@ -5,7 +5,7 @@ %D subtitle=UTF, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/xtag-xsd.mkii b/tex/context/base/xtag-xsd.mkii index 96169afa2..c1f4b91b6 100644 --- a/tex/context/base/xtag-xsd.mkii +++ b/tex/context/base/xtag-xsd.mkii @@ -5,7 +5,7 @@ %D subtitle=Schemas, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/base/xtag-xsl.mkii b/tex/context/base/xtag-xsl.mkii index 3ad096c28..af5245638 100644 --- a/tex/context/base/xtag-xsl.mkii +++ b/tex/context/base/xtag-xsl.mkii @@ -5,7 +5,7 @@ %D subtitle=XSLT processing, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/context/bib/backup/sample.bib b/tex/context/bib/backup/sample.bib new file mode 100644 index 000000000..3f8df623e --- /dev/null +++ b/tex/context/bib/backup/sample.bib @@ -0,0 +1,38 @@ +@STRING{hh = {Hans Hagen}} + +@ELECTRONIC{hh2010, + author = hh, + year = {2010}, + title = {Metafun. \CONTEXT\ mkiv}, + url = {http://www.pragma-ade.nl/general/manuals/metafun-s.pdf}, +} + +@ARTICLE{hh2010a, + author = hh, + title = {The Font Name Mess}, + journal = {MAPS}, + year = {2010}, + volume = {40}, + pages = {2-8}, + keywords = {context}, +} + +@ARTICLE{hh2010b, + author = hh, + title = {Grouping in Hybrid Environments}, + journal = {MAPS}, + year = {2010}, + volume = {40}, + pages = {67-71}, + keywords = {context}, +} + +@BOOK{Eijkhout1991, + title = {\TeX\ by Topic. A \TeX nician's Reference}, + publisher = {Addison-Wesley}, + year = {1991}, + author = {Victor Eijkhout}, + address = {London}, + keywords = {general}, +} + diff --git a/tex/context/interface/keys-cs.xml b/tex/context/interface/keys-cs.xml index f91cc06f5..6fb9bae2f 100644 --- a/tex/context/interface/keys-cs.xml +++ b/tex/context/interface/keys-cs.xml @@ -359,6 +359,7 @@ <cd:variable name='previousoddpage' value='predchozilichastranka'/> <cd:variable name='previouspage' value='predchozistranka'/> <cd:variable name='previoussubpage' value='predchozipodstranka'/> + <cd:variable name='print' value='print'/> <cd:variable name='printable' value='tisknutelne'/> <cd:variable name='process' value='process'/> <cd:variable name='product' value='produkt'/> diff --git a/tex/context/interface/keys-de.xml b/tex/context/interface/keys-de.xml index 9f01c61b4..d8f42786a 100644 --- a/tex/context/interface/keys-de.xml +++ b/tex/context/interface/keys-de.xml @@ -359,6 +359,7 @@ <cd:variable name='previousoddpage' value='vorigeungeradeseite'/> <cd:variable name='previouspage' value='vorigeseite'/> <cd:variable name='previoussubpage' value='vorigeunterseite'/> + <cd:variable name='print' value='print'/> <cd:variable name='printable' value='druckbar'/> <cd:variable name='process' value='process'/> <cd:variable name='product' value='produkt'/> diff --git a/tex/context/interface/keys-en.xml b/tex/context/interface/keys-en.xml index b2954aa3a..09f44dbf3 100644 --- a/tex/context/interface/keys-en.xml +++ b/tex/context/interface/keys-en.xml @@ -359,6 +359,7 @@ <cd:variable name='previousoddpage' value='previousoddpage'/> <cd:variable name='previouspage' value='previouspage'/> <cd:variable name='previoussubpage' value='previoussubpage'/> + <cd:variable name='print' value='print'/> <cd:variable name='printable' value='printable'/> <cd:variable name='process' value='process'/> <cd:variable name='product' value='product'/> diff --git a/tex/context/interface/keys-fr.xml b/tex/context/interface/keys-fr.xml index bcb18fca1..41ce0450f 100644 --- a/tex/context/interface/keys-fr.xml +++ b/tex/context/interface/keys-fr.xml @@ -359,6 +359,7 @@ <cd:variable name='previousoddpage' value='pageimpaireprecedente'/> <cd:variable name='previouspage' value='pageprecedente'/> <cd:variable name='previoussubpage' value='souspageprecedente'/> + <cd:variable name='print' value='print'/> <cd:variable name='printable' value='editable'/> <cd:variable name='process' value='process'/> <cd:variable name='product' value='produit'/> diff --git a/tex/context/interface/keys-it.xml b/tex/context/interface/keys-it.xml index 0a156e842..e1ecdbed8 100644 --- a/tex/context/interface/keys-it.xml +++ b/tex/context/interface/keys-it.xml @@ -359,6 +359,7 @@ <cd:variable name='previousoddpage' value='paginadispariprecedente'/> <cd:variable name='previouspage' value='paginaprecedente'/> <cd:variable name='previoussubpage' value='sottopaginaprecedente'/> + <cd:variable name='print' value='print'/> <cd:variable name='printable' value='stampabile'/> <cd:variable name='process' value='process'/> <cd:variable name='product' value='prodotto'/> diff --git a/tex/context/interface/keys-nl.xml b/tex/context/interface/keys-nl.xml index eb156cf5a..a28da1f85 100644 --- a/tex/context/interface/keys-nl.xml +++ b/tex/context/interface/keys-nl.xml @@ -359,6 +359,7 @@ <cd:variable name='previousoddpage' value='vorigeonevenpagina'/> <cd:variable name='previouspage' value='vorigepagina'/> <cd:variable name='previoussubpage' value='vorigesubpagina'/> + <cd:variable name='print' value='print'/> <cd:variable name='printable' value='printbaar'/> <cd:variable name='process' value='proces'/> <cd:variable name='product' value='produkt'/> diff --git a/tex/context/interface/keys-pe.xml b/tex/context/interface/keys-pe.xml index 2dd57b3d1..89307f7fa 100644 --- a/tex/context/interface/keys-pe.xml +++ b/tex/context/interface/keys-pe.xml @@ -359,6 +359,7 @@ <cd:variable name='previousoddpage' value='صفحهفردقبلی'/> <cd:variable name='previouspage' value='صفحهقبلی'/> <cd:variable name='previoussubpage' value='زیرصفحهقبلی'/> + <cd:variable name='print' value='print'/> <cd:variable name='printable' value='قابلچاپ'/> <cd:variable name='process' value='پردازش'/> <cd:variable name='product' value='محصول'/> diff --git a/tex/context/interface/keys-ro.xml b/tex/context/interface/keys-ro.xml index c0ebc9c96..ef715b83e 100644 --- a/tex/context/interface/keys-ro.xml +++ b/tex/context/interface/keys-ro.xml @@ -359,6 +359,7 @@ <cd:variable name='previousoddpage' value='paginaimparaprecedenta'/> <cd:variable name='previouspage' value='paginaanterioara'/> <cd:variable name='previoussubpage' value='subpaginaanterioara'/> + <cd:variable name='print' value='print'/> <cd:variable name='printable' value='tiparibil'/> <cd:variable name='process' value='process'/> <cd:variable name='product' value='produs'/> diff --git a/tex/generic/context/luatex-basics.tex b/tex/generic/context/luatex-basics.tex index 8308204d5..bb34587ff 100644 --- a/tex/generic/context/luatex-basics.tex +++ b/tex/generic/context/luatex-basics.tex @@ -5,7 +5,7 @@ %D subtitle=Attribute Allocation, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=public domain] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %D As soon as we feel the need this file will file will contain an extension %D to the standard plain register allocation. For the moment we stick to a diff --git a/tex/generic/context/luatex-fonts-merged.lua b/tex/generic/context/luatex-fonts-merged.lua index 3036e2f81..a826b33f0 100644 --- a/tex/generic/context/luatex-fonts-merged.lua +++ b/tex/generic/context/luatex-fonts-merged.lua @@ -1,6 +1,6 @@ -- merged file : luatex-fonts-merged.lua -- parent file : luatex-fonts.lua --- merge date : 05/18/11 22:26:32 +-- merge date : 06/08/11 19:06:42 do -- begin closure to overcome local limits and interference @@ -1855,9 +1855,39 @@ end --~ print(file.join("http:///a","/y")) --~ print(file.join("//nas-1","/y")) +-- We should be able to use: +-- +-- function file.is_writable(name) +-- local a = attributes(name) or attributes(dirname(name,".")) +-- return a and sub(a.permissions,2,2) == "w" +-- end +-- +-- But after some testing Taco and I came up with: + function file.is_writable(name) - local a = attributes(name) or attributes(dirname(name,".")) - return a and sub(a.permissions,2,2) == "w" + if lfs.isdir(name) then + name = name .. "/m_t_x_t_e_s_t.tmp" + local f = io.open(name,"wb") + if f then + f:close() + os.remove(name) + return true + end + elseif lfs.isfile(name) then + local f = io.open(name,"ab") + if f then + f:close() + return true + end + else + local f = io.open(name,"ab") + if f then + f:close() + os.remove(name) + return true + end + end + return false end function file.is_readable(name) diff --git a/tex/generic/context/luatex-fonts.tex b/tex/generic/context/luatex-fonts.tex index 8ccc9f3d5..a7c8bc2b8 100644 --- a/tex/generic/context/luatex-fonts.tex +++ b/tex/generic/context/luatex-fonts.tex @@ -4,7 +4,7 @@ %D title=\LUATEX\ Support Macros, %D subtitle=Generic \OPENTYPE\ Font Handler, %D author=Hans Hagen, -%D copyright=see context related readme files] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %D \subject{Welcome} %D diff --git a/tex/generic/context/luatex-mplib.tex b/tex/generic/context/luatex-mplib.tex index 691958646..ef6dfff95 100644 --- a/tex/generic/context/luatex-mplib.tex +++ b/tex/generic/context/luatex-mplib.tex @@ -4,7 +4,7 @@ %D title=\LUATEX\ Support Macros, %D subtitle=\METAPOST\ to \PDF\ conversion, %D author=Taco Hoekwater \& Hans Hagen, -%D copyright=see context related readme files] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %D This is the companion to the \LUA\ module \type {supp-mpl.lua}. Further %D embedding is up to others. A simple example of usage in plain \TEX\ is: diff --git a/tex/generic/context/luatex-preprocessor.tex b/tex/generic/context/luatex-preprocessor.tex index fe4872d61..03b483f41 100644 --- a/tex/generic/context/luatex-preprocessor.tex +++ b/tex/generic/context/luatex-preprocessor.tex @@ -4,7 +4,7 @@ %D title=\LUATEX\ Support Macros, %D subtitle=Generic Preprocessor, %D author=Hans Hagen, -%D copyright=public domain] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] \directlua{dofile(kpse.find_file('luatex-preprocessor.lua'))} diff --git a/tex/generic/context/luatex-test.tex b/tex/generic/context/luatex-test.tex index 1c3aeb1b6..830d30a91 100644 --- a/tex/generic/context/luatex-test.tex +++ b/tex/generic/context/luatex-test.tex @@ -5,7 +5,7 @@ %D subtitle=Simple Test File, %D author=Hans Hagen, %D date=\currentdate, -%D copyright=public domain] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %D See \type {luatex-plain.tex} (or on my machine \type {luatex.tex} %D for how to make a format. diff --git a/tex/generic/context/m-metapo.tex b/tex/generic/context/m-metapo.tex index 8680f69c6..f02830a13 100644 --- a/tex/generic/context/m-metapo.tex +++ b/tex/generic/context/m-metapo.tex @@ -5,7 +5,7 @@ %D subtitle=\METAPOST\ Inclusion, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ distribution and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for diff --git a/tex/generic/context/mptopdf.tex b/tex/generic/context/mptopdf.tex index a0ac34a42..3efe57392 100644 --- a/tex/generic/context/mptopdf.tex +++ b/tex/generic/context/mptopdf.tex @@ -5,7 +5,7 @@ %D subtitle=conversion to \PDF, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for |