diff options
38 files changed, 683 insertions, 251 deletions
diff --git a/context/data/scite/context/lexers/scite-context-lexer.lua b/context/data/scite/context/lexers/scite-context-lexer.lua index fd74ba55a..121bfd249 100644 --- a/context/data/scite/context/lexers/scite-context-lexer.lua +++ b/context/data/scite/context/lexers/scite-context-lexer.lua @@ -1248,7 +1248,7 @@ if usage == "scite" then -- foldpattern = Cp() * (foldpattern/foldmapping) / function(s,match) if match then - local l = match[thestyleat[s + foldoffset]] + local l = match[thestyleat[s + foldoffset - 1]] if l then current = current + l end diff --git a/context/data/scite/context/scite-ctx.lua b/context/data/scite/context/scite-ctx.lua index 4bde33d2b..326ee1180 100644 --- a/context/data/scite/context/scite-ctx.lua +++ b/context/data/scite/context/scite-ctx.lua @@ -1739,7 +1739,7 @@ do local lexers = nil local properties = props --- local partial = false + local partial = false local partial = true local trace = false -- local trace = true @@ -1784,14 +1784,18 @@ do end function OnOpen(filename) - -- report("opening '%s' of %i bytes",filename,editor.TextLength) + if trace then + report("opening '%s' of %i bytes, language '%s'",filename,editor.TextLength,props.Language) + end update(props.Language,editor.TextLength,0,editor.TextLength) check_output_pane() end function OnSwitchFile(filename) if dirty[props.FileNameExt] then - -- report("switching '%s' of %i bytes",filename,editor.TextLength) + if trace then + report("switching '%s' of %i bytes, language '%s'",filename,editor.TextLength,props.Language) + end update(props.Language,editor.TextLength,0,editor.TextLength) dirty[props.FileNameExt] = false end diff --git a/doc/context/scripts/mkiv/mtx-spell.html b/doc/context/scripts/mkiv/mtx-spell.html new file mode 100644 index 000000000..5590ffd1a --- /dev/null +++ b/doc/context/scripts/mkiv/mtx-spell.html @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> + +<!-- compare with lmx framework variant --> + +<!-- + filename : context-base.xml + comment : companion to mtx-server-ctx-startup.tex + author : Hans Hagen, PRAGMA-ADE, Hasselt NL + copyright: PRAGMA ADE / ConTeXt Development Team + license : see context related readme files +--> + +<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> + <head> + <title>ConTeXt Word Filtering 0.10</title> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <style type="text/css"> + body { color: #FFFFFF; background-color: #808080; font-family: optima, verdana, futura, "lucida sans", arial, geneva, helvetica, sans; font-size: 12px; line-height: 18px; } a:link, a:active, a:visited { color: #FFFFFF; } a.dir-view:link, a.dir-view:active, a.dir-view:visited { color: #FFFFFF; text-decoration: underline; } .valid { color: #00FF00; } .invalid { color: #FF0000; } .invisible { visibility: hidden; } button, .commonlink, .smallbutton { font-weight: bold; font-size: 12px; text-decoration: none; color: #000000; border-color: #7F7F7F; border-style: solid; border-width: .125ex; background-color: #FFFFFF; padding: .5ex; } .smallbutton { width: 1em; } a.commonlink:link, a.commonlink:active, a.commonlink:visited, a.smalllink:link, a.smalllink:active, a.smalllink:visited { font-weight: bold; font-size: 12px; text-decoration: none; color: #000000; } h1, .title { font-style: normal; font-weight: normal; font-size: 18px; line-height: 18px; margin-bottom: 20px; } h2, .subtitle { font-style: normal; font-weight: normal; font-size: 12px; margin-top: 18px; margin-bottom: 18px; } table { line-height: 18px; font-size: 12px; margin: 0; } th { font-weight: bold; text-align: left; padding-bottom: 6px; } .tc { font-weight: bold; text-align: left; } p, li { max-width: 60em; } .empty-line { margin-top: 4px; } .more-room { margin-right: 1.5em; } .much-more-room { margin-right: 3em; } #main { position: absolute; left: 10%; top: 10%; right: 10%; bottom: 10%; z-index: 2; width: 80%; height: 80%; padding: 0%; margin: 0%; overflow: auto; border-style: none; border-width: 0; background-color: #3F3F3F; } #main-settings { margin: 12px; x_max-width: 60em; line-height: 18px; font-size: 12px; } #left { position: absolute; top : 10%; left: 0%; bottom: 0%; right: 90%; z-index: 1; width: 10%; height: 90%; padding: 0%; margin: 0%; font-size: 16px; border-style: none; border-width: 0; background-color: #4F6F6F; } #right { position: absolute; top : 0%; left: 90%; bottom: 10%; right: 0%; z-index: 1; width: 10%; height: 90%; padding: 0%; margin: 0%; font-size: 16px; border-style: none; border-width: 0; background-color: #4F6F6F; _margin-left: -15px; } #bottom { position: absolute; left: 10%; right: 0%; top: 90%; bottom: 0%; z-index: 1; width: 90%; height: 10%; padding: 0%; margin: 0%; font-size: 16px; border-style: none; border-width: 0; background-color: #6F6F8F; } #top { position: absolute; left: 0%; right: 10%; top: 0%; bottom: 90%; z-index: 1; width: 90%; height: 10%; padding: 0%; margin: 0%; font-size: 16px; border-style: none; border-width: 0; background-color: #6F6F8F; } #top-one { position: absolute; bottom: 50%; width: 100%; buggedheight: 100%; } #top-two { position: relative; margin-bottom: -9px; margin-left: 12px; margin-right: 12px; line-height: 18px; text-align: right; vertical-align: middle; } #bottom-one { position: absolute; bottom: 50%; width: 100%; buggedheight: 100%; } #bottom-two { position: relative; margin-bottom: -9px; margin-left: 12px; margin-right: 12px; line-height: 18px; text-align: left; vertical-align: middle; } #left-one { position: absolute; width: 100%; buggedheight: 100%; } #left-two { position: relative; margin-top: 12px; line-height: 18px; text-align: center; vertical-align: top; } #right-one { display: table; height: 100%; width: 100%; } #right-two { display: table-row; height: 100%; width: 100%; } #right-three { display: table-cell; width: 100%; vertical-align: bottom; _position: absolute; _top: 100%; } #right-four { text-align: center; margin-bottom: 2ex; _position: relative; _top: -100%; } #more-top { position: absolute; top: 0%; left: 90%; bottom: 90%; right: 0%; z-index: 3; width: 10%; height: 10%; padding: 0%; margin: 0%; border-style: none; border-width: 0; } #more-top-settings { text-align: center; } #more-right-settings { margin-right: 12px; margin-left: 12px; line-height: 18px; font-size: 10px; text-align: center; } #right-safari { _display: table; width: 100%; height: 100%; } + </style> + <style type="text/css"> + </style> + </head> + <body> + <div id="top"> <div id="top-one"> + <div id="top-two">ConTeXt Word Filtering 0.10 </div> + </div> + </div> + <div id="bottom"> <div id="bottom-one"> + <div id="bottom-two">wiki: http://contextgarden.net | mail: ntg-context@ntg.nl | website: http://www.pragma-ade.nl</div> + </div> + </div> + <div id="left"></div> + <div id="right"></div> + <div id="main"> + <div id='main-settings'> + <h1>Command line options</h1> +<table> + <tr><th style="width: 10em">flag</th><th style="width: 8em">value</th><th>description</th></tr> + <tr><th/><td/><td/></tr> + <tr><th>--expand</th><td></td><td>expand hunspell dics and aff files</td></tr> + <tr><th>--dictionary</th><td></td><td>word file (.dics)</td></tr> + <tr><th>--specification</th><td></td><td>affix specification file (.aff)</td></tr> + <tr><th>--result</th><td></td><td>destination file</td></tr> + </table> +<br/> +<h1>Examples</h1> +<tt>mtxrun --script spell --expand --dictionary="en_US.dic" --specification="en_US.txt" --result="data-us.txt"</tt> +<br/><br/> </div> + </div> + </body> +</html> diff --git a/doc/context/scripts/mkiv/mtx-spell.man b/doc/context/scripts/mkiv/mtx-spell.man new file mode 100644 index 000000000..acc22d1aa --- /dev/null +++ b/doc/context/scripts/mkiv/mtx-spell.man @@ -0,0 +1,36 @@ +.TH "mtx-spell" "1" "01-01-2021" "version 0.10" "ConTeXt Word Filtering" +.SH NAME + mtx-spell - ConTeXt Word Filtering +.SH SYNOPSIS +.B mtxrun --script spell [ +.I OPTIONS ... +.B ] [ +.I FILENAMES +.B ] +.SH DESCRIPTION +.B ConTeXt Word Filtering +.SH OPTIONS +.TP +.B --expand +expand hunspell dics and aff files +.TP +.B --dictionary +word file (.dics) +.TP +.B --specification +affix specification file (.aff) +.TP +.B --result +destination file +.SH AUTHOR +More information about ConTeXt and the tools that come with it can be found at: + + +.B "maillist:" +ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context + +.B "webpage:" +http://www.pragma-ade.nl / http://tex.aanhet.net + +.B "wiki:" +http://contextgarden.net diff --git a/doc/context/scripts/mkiv/mtx-spell.xml b/doc/context/scripts/mkiv/mtx-spell.xml new file mode 100644 index 000000000..9fc3fe859 --- /dev/null +++ b/doc/context/scripts/mkiv/mtx-spell.xml @@ -0,0 +1,26 @@ +<?xml version="1.0"?> +<application> + <metadata> + <entry name="name">mtx-spell</entry> + <entry name="detail">ConTeXt Word Filtering</entry> + <entry name="version">0.10</entry> + </metadata> + <flags> + <category name="basic"> + <subcategory> + <flag name="expand"><short>expand hunspell dics and aff files</short></flag> + <flag name="dictionary"><short>word file (.dics)</short></flag> + <flag name="specification"><short>affix specification file (.aff)</short></flag> + <flag name="result"><short>destination file</short></flag> + </subcategory> + </category> + </flags> + <examples> + <category> + <title>Examples</title> + <subcategory> + <example><command>mtxrun --script spell --expand --dictionary="en_US.dic" --specification="en_US.txt" --result="data-us.txt"</command></example> + </subcategory> + </category> + </examples> +</application> diff --git a/doc/context/sources/general/manuals/lowlevel/lowlevel-paragraphs.tex b/doc/context/sources/general/manuals/lowlevel/lowlevel-paragraphs.tex index 7fd120e06..bd9fd7b76 100644 --- a/doc/context/sources/general/manuals/lowlevel/lowlevel-paragraphs.tex +++ b/doc/context/sources/general/manuals/lowlevel/lowlevel-paragraphs.tex @@ -1045,3 +1045,81 @@ examples are visualized in \in {figure} [fig:flow]. % \par[newgraf][16=1,17=1], .... pretolerance 6000, .... % \parfillleftskip + +% todo: + +% \starttext +% +% \showframe +% +% % this is the current default behaviour; we have a topskip with quite some stretch +% % and that stretch is taken into account when tex calculates the badness; watch +% % the next page +% +% \dorecurse{4}{ +% \bgroup +% \shapingpenaltiesmode\zerocount +% \showmakeup[penalty] +% \placefigure[left]{}{} +% \input tufte \par +% \egroup +% } +% +% \page EMPTY \page +% +% % the ntop is new and when >= 0 it is a multiplier for the number of lines +% % stretch, here we have one line; watch the next page +% +% \dorecurse{4}{ +% \bgroup +% \shapingpenaltiesmode\zerocount +% \setupinterlinespace[ntop=1] +% \showmakeup[penalty] +% \placefigure[left]{}{} +% \input tufte \par +% \egroup +% } +% +% \page EMPTY \page +% +% % these shaping parameters will discourage a linebreak within a shape; +% % the placement macro checked available space but that doesn't mean that +% % there can be no linebreak +% +% \dorecurse{4}{ +% \bgroup +% \showmakeup[penalty] +% \shapingpenalty\plushundred +% \shapingpenaltiesmode"FF\relax +% \placefigure[left]{}{} +% \input tufte \par +% \egroup +% } +% +% \page EMPTY \page +% +% % the next pages show the effect of changed topskip on page breaks with +% % footnotes +% +% \dorecurse{10}{ +% [#1] \input tufte \footnote{\input{tufte}} \par +% } +% +% \page EMPTY \page +% +% \setupinterlinespace[ntop=2] +% +% \dorecurse{10}{ +% [#1] \input tufte \footnote{\input{tufte}} \par +% } +% +% \page EMPTY \page +% +% \setupinterlinespace[ntop=0] +% +% \dorecurse{10}{ +% [#1] \input tufte \footnote{\input{tufte}} \par +% } +% +% \stoptext + diff --git a/scripts/context/lua/mtx-spell.lua b/scripts/context/lua/mtx-spell.lua index 2f0645f09..dcfc9feb1 100644 --- a/scripts/context/lua/mtx-spell.lua +++ b/scripts/context/lua/mtx-spell.lua @@ -326,15 +326,15 @@ end -- } -- spell.dicaff { --- dictionary = "e:/context/spell/lo/en_GB.dic.txt", +-- dictionary = "e:/context/spell/lo/en_GB.dic.txt", -- specification = "e:/context/spell/lo/en_GB.aff.txt", --- result = "e:/context/spell/lo/data-uk.txt", +-- result = "e:/context/spell/lo/data-uk.txt", -- } -- spell.dicaff { --- dictionary = "e:/context/spell/lo/nl_NL.dic.txt", +-- dictionary = "e:/context/spell/lo/nl_NL.dic.txt", -- specification = "e:/context/spell/lo/nl_NL.aff.txt", --- result = "e:/context/spell/lo/data-nl.txt", +-- result = "e:/context/spell/lo/data-nl.txt", -- } if environment.argument("expand") then diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii index 33a8cdb40..a550984d2 100644 --- a/tex/context/base/mkii/cont-new.mkii +++ b/tex/context/base/mkii/cont-new.mkii @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2021.10.13 16:56} +\newcontextversion{2021.10.15 13:57} %D This file is loaded at runtime, thereby providing an %D excellent place for hacks, patches, extensions and new diff --git a/tex/context/base/mkii/context.mkii b/tex/context/base/mkii/context.mkii index 2cf44c56b..6eaebb20d 100644 --- a/tex/context/base/mkii/context.mkii +++ b/tex/context/base/mkii/context.mkii @@ -20,7 +20,7 @@ %D your styles an modules. \edef\contextformat {\jobname} -\edef\contextversion{2021.10.13 16:56} +\edef\contextversion{2021.10.15 13:57} %D For those who want to use this: diff --git a/tex/context/base/mkii/mult-nl.mkii b/tex/context/base/mkii/mult-nl.mkii index 1aac09199..9095e93ed 100644 --- a/tex/context/base/mkii/mult-nl.mkii +++ b/tex/context/base/mkii/mult-nl.mkii @@ -188,6 +188,7 @@ \setinterfacevariable{enumeration}{doornummering} \setinterfacevariable{environment}{omgeving} \setinterfacevariable{even}{even} +\setinterfacevariable{explicit}{explicit} \setinterfacevariable{export}{export} \setinterfacevariable{external}{extern} \setinterfacevariable{extremestretch}{extremestretch} diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv index 022391a60..c97e9b74b 100644 --- a/tex/context/base/mkiv/cont-new.mkiv +++ b/tex/context/base/mkiv/cont-new.mkiv @@ -13,7 +13,7 @@ % \normalend % uncomment this to get the real base runtime -\newcontextversion{2021.10.13 16:56} +\newcontextversion{2021.10.15 13:57} %D This file is loaded at runtime, thereby providing an excellent place for hacks, %D patches, extensions and new features. There can be local overloads in cont-loc diff --git a/tex/context/base/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv index ed579d53a..24aa443d2 100644 --- a/tex/context/base/mkiv/context.mkiv +++ b/tex/context/base/mkiv/context.mkiv @@ -45,7 +45,7 @@ %D {YYYY.MM.DD HH:MM} format. \edef\contextformat {\jobname} -\edef\contextversion{2021.10.13 16:56} +\edef\contextversion{2021.10.15 13:57} %D Kind of special: diff --git a/tex/context/base/mkiv/mult-def.lua b/tex/context/base/mkiv/mult-def.lua index bb3f458bf..7c62df864 100644 --- a/tex/context/base/mkiv/mult-def.lua +++ b/tex/context/base/mkiv/mult-def.lua @@ -7,7 +7,11 @@ if not modules then modules = { } end modules ['mult-def'] = { dataonly = true, } --- we can remove some commands, like inleftmargin and so (see typo-mar.mkiv) +-- We can remove some commands, like inleftmargin and so (see typo-mar.mkiv). Also, +-- some keywords are unique for mkiv or lmtx so at some point we might split this +-- file. On the other hand, it's a way to standardize. + +-- StartMovie and StartSound etc can go. return { ["commands"]={ diff --git a/tex/context/base/mkiv/spac-ver.lua b/tex/context/base/mkiv/spac-ver.lua index efc157a2b..9e0bc2dd8 100644 --- a/tex/context/base/mkiv/spac-ver.lua +++ b/tex/context/base/mkiv/spac-ver.lua @@ -172,7 +172,7 @@ local nodepool = nuts.pool local new_penalty = nodepool.penalty local new_kern = nodepool.kern -local new_glue = nodepool.glue +----- new_glue = nodepool.glue local new_rule = nodepool.rule local nodecodes = nodes.nodecodes diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf Binary files differindex 50a3a1f99..6bcf6b371 100644 --- a/tex/context/base/mkiv/status-files.pdf +++ b/tex/context/base/mkiv/status-files.pdf diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf Binary files differindex 57b1a2f59..aaba8ae4f 100644 --- a/tex/context/base/mkiv/status-lua.pdf +++ b/tex/context/base/mkiv/status-lua.pdf diff --git a/tex/context/base/mkiv/strc-doc.lua b/tex/context/base/mkiv/strc-doc.lua index 9094446c1..d613d1aa7 100644 --- a/tex/context/base/mkiv/strc-doc.lua +++ b/tex/context/base/mkiv/strc-doc.lua @@ -40,6 +40,8 @@ local v_all = variables.all local v_positive = variables.positive local v_current = variables.current +local texgetcount = tex.getcount + local trace_sectioning = false trackers.register("structures.sectioning", function(v) trace_sectioning = v end) local trace_details = false trackers.register("structures.details", function(v) trace_details = v end) @@ -48,6 +50,7 @@ local report_used = logs.reporter("structure") local context = context local commands = commands +local ctx_doifelse = commands.doifelse local structures = structures local helpers = structures.helpers @@ -1211,3 +1214,80 @@ implement { name = "popsectionblock", actions = sections.popblock, } + +interfaces.implement { + name = "doifelsefirstsectionpage", + arguments = "1 argument", + public = true, + protected = true, + actions = function(name) + local found = false + -- local list = structures.lists.collected + local list = lists.collected + if list then + local realpage = texgetcount("realpageno") + for i=1,#list do + local listdata = list[i] + local metadata = listdata.metadata + if metadata and metadata.kind == "section" and metadata.name == name then + -- local current = structures.documents.data.status[metadata.level] + local current = data.status[metadata.level] + if current and current.references.internal == listdata.references.internal then + found = listdata.references.realpage == realpage + break + end + end + end + end + ctx_doifelse(found) + end, +} + +-- could be faster (in huge lists) + +-- local firstpages = table.setmetatableindex(function(t,name) +-- -- local list = structures.lists.collected +-- local list = lists.collected +-- local pages = { } +-- if list then +-- for i=1,#list do +-- local listdata = list[i] +-- local metadata = listdata.metadata +-- if metadata and metadata.kind == "section" and metadata.name == name then +-- local references = listdata.references +-- if references then +-- pages[references.internal] = listdata +-- end +-- end +-- end +-- end +-- t[name] = pages +-- return pages +-- end) +-- +-- interfaces.implement { +-- name = "doifelsefirstsectionpage", +-- arguments = "1 argument", +-- public = true, +-- protected = true, +-- actions = function(name) +-- local found = firstpages[name] +-- if found then +-- local level = structures.sections.levelmap[name] +-- if level then +-- -- local current = structures.documents.data.status[level] +-- local current = data.status[level] +-- if current then +-- local realpage = texgetcount("realpageno") +-- found = found[current.references.internal] +-- found = found and found.references.realpage == realpage +-- else +-- found = false +-- end +-- else +-- found = false +-- end +-- end +-- ctx_doifelse(found) +-- end, +-- } diff --git a/tex/context/base/mkiv/strc-ref.lua b/tex/context/base/mkiv/strc-ref.lua index ba4ee9c5d..2dee95b40 100644 --- a/tex/context/base/mkiv/strc-ref.lua +++ b/tex/context/base/mkiv/strc-ref.lua @@ -2662,7 +2662,6 @@ end implement { name = "referenceposx", actions = function() context("%p",referencepos("x")) end } implement { name = "referenceposy", actions = function() context("%p",referencepos("y")) end } - implement { name = "referencecolumn", actions = function() diff --git a/tex/context/base/mkxl/back-pdf.mkxl b/tex/context/base/mkxl/back-pdf.mkxl index 5770e6aad..d8b5bd6ee 100644 --- a/tex/context/base/mkxl/back-pdf.mkxl +++ b/tex/context/base/mkxl/back-pdf.mkxl @@ -35,7 +35,7 @@ \registerctxluafile{lpdf-grp}{autosuffix} \registerctxluafile{lpdf-wid}{autosuffix} \registerctxluafile{lpdf-fld}{autosuffix} -\registerctxluafile{lpdf-mov}{autosuffix} +%registerctxluafile{lpdf-mov}{autosuffix} \registerctxluafile{lpdf-u3d}{autosuffix} % this will become a module %registerctxluafile{lpdf-swf}{} % this will become a module \registerctxluafile{lpdf-tag}{autosuffix} diff --git a/tex/context/base/mkxl/cont-new.mkxl b/tex/context/base/mkxl/cont-new.mkxl index d206418cf..e1b48998e 100644 --- a/tex/context/base/mkxl/cont-new.mkxl +++ b/tex/context/base/mkxl/cont-new.mkxl @@ -13,7 +13,7 @@ % \normalend % uncomment this to get the real base runtime -\newcontextversion{2021.10.13 16:56} +\newcontextversion{2021.10.15 13:57} %D This file is loaded at runtime, thereby providing an excellent place for hacks, %D patches, extensions and new features. There can be local overloads in cont-loc diff --git a/tex/context/base/mkxl/context.mkxl b/tex/context/base/mkxl/context.mkxl index 670c6e383..698a259ef 100644 --- a/tex/context/base/mkxl/context.mkxl +++ b/tex/context/base/mkxl/context.mkxl @@ -29,7 +29,7 @@ %D {YYYY.MM.DD HH:MM} format. \immutable\edef\contextformat {\jobname} -\immutable\edef\contextversion{2021.10.13 16:56} +\immutable\edef\contextversion{2021.10.15 13:57} %overloadmode 1 % check frozen / warning %overloadmode 2 % check frozen / error diff --git a/tex/context/base/mkxl/core-uti.lmt b/tex/context/base/mkxl/core-uti.lmt index de514df30..2266119de 100644 --- a/tex/context/base/mkxl/core-uti.lmt +++ b/tex/context/base/mkxl/core-uti.lmt @@ -289,7 +289,6 @@ function job.save(filename) -- we could return a table but it can get pretty lar f:write("local utilitydata = { }\n\n") f:write(serialize(comment,"utilitydata.comment",true),"\n\n") for l=1,#savelist do - -- f:write("do\n\n") -- no solution for the jit limitatione either local list = savelist[l] local target = format("utilitydata.%s",list[1]) local data = list[2] @@ -310,14 +309,11 @@ function job.save(filename) -- we could return a table but it can get pretty lar else f:write(definer,"\n\n",serialize(data,name,true),"\n\n") end - -- f:write("end\n\n") end if job.pack then packers.strip(jobpacker) -packnumberdata(jobpacker.index) - -- f:write("do\n\n") + packnumberdata(jobpacker.index) f:write(serialize(jobpacker,"utilitydata.job.packed",true),"\n\n") - -- f:write("end\n\n") end f:write("return utilitydata") f:close() @@ -346,9 +342,8 @@ local function load(filename) return data end else - os.remove(filename) -- probably a bad file (or luajit overflow as it cannot handle large tables well) - report_passes("removing stale job data file %a, restart job, message: %s%s",filename,tostring(data), - jit and " (try luatex instead of luajittex)" or "") + os.remove(filename) + report_passes("removing stale job data file %a, restart job, message: %s",filename,tostring(data)) os.exit(true) -- trigger second run end end diff --git a/tex/context/base/mkxl/grph-inc.lmt b/tex/context/base/mkxl/grph-inc.lmt index 0b83718f8..e19b48e49 100644 --- a/tex/context/base/mkxl/grph-inc.lmt +++ b/tex/context/base/mkxl/grph-inc.lmt @@ -322,7 +322,8 @@ local figure_paths = allocate(table.copy(figures.localpaths)) figures.paths = figure_paths local figures_order = allocate { - "pdf", "mps", "jpg", "png", "jp2", "jbig", "svg", "eps", "tif", "gif", "mov", "buffer", "tex", "cld", "auto", + -- "mov" is gone + "pdf", "mps", "jpg", "png", "jp2", "jbig", "svg", "eps", "tif", "gif", "buffer", "tex", "cld", "auto", } local figures_formats = allocate { -- magic and order will move here @@ -336,7 +337,7 @@ local figures_formats = allocate { -- magic and order will move here ["eps"] = { list = { "eps", "ai" } }, ["gif"] = { list = { "gif" } }, ["tif"] = { list = { "tif", "tiff" } }, - ["mov"] = { list = { "mov", "flv", "mp4" } }, -- "avi" is not supported + -- ["mov"] = { list = { "mov", "flv", "mp4" } }, -- "avi" is not supported ["buffer"] = { list = { "tmp", "buffer", "buf" } }, ["tex"] = { list = { "tex" } }, ["cld"] = { list = { "cld" } }, @@ -1690,35 +1691,35 @@ includers.nongeneric = includers_nongeneric -- -- -- mov -- -- -- -function checkers.mov(data) - local dr, du, ds = data.request, data.used, data.status - local width = todimen(dr.width or figures.defaultwidth) - local height = todimen(dr.height or figures.defaultheight) - local foundname = du.fullname - dr.width, dr.height = width, height - du.width, du.height, du.foundname = width, height, foundname - if trace_inclusion then - report_inclusion("including movie %a, width %p, height %p",foundname,width,height) - end - -- we need to push the node.write in between ... we could make a shared helper for this - ctx_startfoundexternalfigure(width .. "sp",height .. "sp") - context(function() - nodeinjections.insertmovie { - width = width, - height = height, - factor = bpfactor, - ["repeat"] = dr["repeat"], - controls = dr.controls, - preview = dr.preview, - label = dr.label, - foundname = foundname, - } - end) - ctx_stopfoundexternalfigure() - return data -end - -includers.mov = includers.nongeneric +-- function checkers.mov(data) +-- local dr, du, ds = data.request, data.used, data.status +-- local width = todimen(dr.width or figures.defaultwidth) +-- local height = todimen(dr.height or figures.defaultheight) +-- local foundname = du.fullname +-- dr.width, dr.height = width, height +-- du.width, du.height, du.foundname = width, height, foundname +-- if trace_inclusion then +-- report_inclusion("including movie %a, width %p, height %p",foundname,width,height) +-- end +-- -- we need to push the node.write in between ... we could make a shared helper for this +-- ctx_startfoundexternalfigure(width .. "sp",height .. "sp") +-- context(function() +-- nodeinjections.insertmovie { +-- width = width, +-- height = height, +-- factor = bpfactor, +-- ["repeat"] = dr["repeat"], +-- controls = dr.controls, +-- preview = dr.preview, +-- label = dr.label, +-- foundname = foundname, +-- } +-- end) +-- ctx_stopfoundexternalfigure() +-- return data +-- end +-- +-- includers.mov = includers.nongeneric -- -- -- mps -- -- -- diff --git a/tex/context/base/mkxl/lpdf-ano.lmt b/tex/context/base/mkxl/lpdf-ano.lmt index 485e143a7..763822707 100644 --- a/tex/context/base/mkxl/lpdf-ano.lmt +++ b/tex/context/base/mkxl/lpdf-ano.lmt @@ -1228,31 +1228,6 @@ function executers.show(arguments) } end -local pdf_movie = pdfconstant("Movie") -local pdf_start = pdfconstant("Start") -local pdf_stop = pdfconstant("Stop") -local pdf_resume = pdfconstant("Resume") -local pdf_pause = pdfconstant("Pause") - -local function movie_or_sound(operation,what,arguments) - arguments = (type(arguments) == "table" and arguments) or settings_to_array(arguments) - return pdfdictionary { - S = pdf_movie, - T = format("%s %s",what,arguments[1] or "noname"), - Operation = operation, - } -end - -function executers.startmovie (arguments) return movie_or_sound(pdf_start ,"movie",arguments) end -function executers.stopmovie (arguments) return movie_or_sound(pdf_stop ,"movie",arguments) end -function executers.resumemovie(arguments) return movie_or_sound(pdf_resume,"movie",arguments) end -function executers.pausemovie (arguments) return movie_or_sound(pdf_pause ,"movie",arguments) end - -function executers.startsound (arguments) return movie_or_sound(pdf_start ,"sound",arguments) end -function executers.stopsound (arguments) return movie_or_sound(pdf_stop ,"sound",arguments) end -function executers.resumesound(arguments) return movie_or_sound(pdf_resume,"sound",arguments) end -function executers.pausesound (arguments) return movie_or_sound(pdf_pause ,"sound",arguments) end - function specials.action(var) local operation = var.operation if var.operation and operation ~= "" then diff --git a/tex/context/base/mkxl/lpdf-aux.lmt b/tex/context/base/mkxl/lpdf-aux.lmt index 65bc2e6cc..441f4cf9c 100644 --- a/tex/context/base/mkxl/lpdf-aux.lmt +++ b/tex/context/base/mkxl/lpdf-aux.lmt @@ -11,7 +11,7 @@ local format, concat = string.format, table.concat local utfchar, utfbyte, char = utf.char, utf.byte, string.char local lpegmatch, lpegpatterns = lpeg.match, lpeg.patterns local P, C, R, S, Cc, Cs, V = lpeg.P, lpeg.C, lpeg.R, lpeg.S, lpeg.Cc, lpeg.Cs, lpeg.V -local rshift = bit32.rshift +----- rshift = bit32.rshift lpdf = lpdf or { } @@ -23,7 +23,8 @@ local cache = table.setmetatableindex(function(t,k) -- can be made weak v = format("%04x",v) else v = v - 0x10000 - v = format("%04x%04x",rshift(v,10)+0xD800,v%1024+0xDC00) -- will become >> when we drop luajittex + -- v = format("%04x%04x",rshift(v,10)+0xD800,v%1024+0xDC00) + v = format("%04x%04x",(v >> 10) + 0xD800,v%1024+0xDC00) end t[k] = v return v diff --git a/tex/context/base/mkxl/lpdf-mov.lmt b/tex/context/base/mkxl/lpdf-mov.lmt deleted file mode 100644 index 0f0eefd2f..000000000 --- a/tex/context/base/mkxl/lpdf-mov.lmt +++ /dev/null @@ -1,69 +0,0 @@ -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 context = context - -local nodeinjections = backends.pdf.nodeinjections -local pdfconstant = lpdf.constant -local pdfdictionary = lpdf.dictionary -local pdfarray = lpdf.array -local pdfborder = lpdf.border - --- We should actually make sure that inclusion only happens once. But this mechanism --- is dropped in pdf anyway so it will go away (read: mapped onto the newer mechanisms). - -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 or specification.file, - 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 bs, bc = pdfborder() - local action = pdfdictionary { - Subtype = pdfconstant("Movie"), - Border = bs, - C = bc, - T = format("movie %s",specification.tag or specification.label), - Movie = moviedict, - A = controldict, - } - context(nodeinjections.annotation(width,height,0,action())) -- test: context(...) -end - -function nodeinjections.insertsound(specification) - local controldict = nil - if specification["repeat"] then - controldict = pdfdictionary { - Mode = pdfconstant("Repeat") - } - end - local sounddict = pdfdictionary { - F = specification.foundname or specification.file - } - local bs, bc = pdfborder() - local action = pdfdictionary { - Subtype = pdfconstant("Movie"), - Border = bs, - C = bc, - T = format("sound %s",specification.tag or specification.label), - Movie = sounddict, - A = controldict, - } - context(nodeinjections.annotation(0,0,0,action())) -- test: context(...) -end diff --git a/tex/context/base/mkxl/lpdf-wid.lmt b/tex/context/base/mkxl/lpdf-wid.lmt index 5fde1b1a5..2999eb281 100644 --- a/tex/context/base/mkxl/lpdf-wid.lmt +++ b/tex/context/base/mkxl/lpdf-wid.lmt @@ -25,7 +25,8 @@ if not modules then modules = { } end modules ['lpdf-wid'] = { -- html5 media in pdf then. -- -- See mail by Michal Vlasák to the mailing list that discusses current support in --- viewers and also mentions (and submitted) a few fixes wrt embedding media. +-- viewers and also mentions (and submitted) a few fixes wrt embedding media. The +-- old sound and movie features are gone. local tonumber, next = tonumber, next local gmatch, gsub, find, lower = string.gmatch, string.gsub, string.find, string.lower diff --git a/tex/context/base/mkxl/luat-cod.lmt b/tex/context/base/mkxl/luat-cod.lmt index 2e5fa8062..6a7ebdd0b 100644 --- a/tex/context/base/mkxl/luat-cod.lmt +++ b/tex/context/base/mkxl/luat-cod.lmt @@ -138,9 +138,7 @@ if LUATEXFORMATID == nil then LUATEXFORMATID = status.format_id or 0 end -if JITSUPPORTED == nil then - JITSUPPORTED = false -end +JITSUPPORTED = false if INITEXMODE == nil then INITEXMODE = status.run_state == 0 -- initializing updating production diff --git a/tex/context/base/mkxl/luat-ini.lmt b/tex/context/base/mkxl/luat-ini.lmt index 3bfd191b9..3202ea42b 100644 --- a/tex/context/base/mkxl/luat-ini.lmt +++ b/tex/context/base/mkxl/luat-ini.lmt @@ -25,20 +25,12 @@ if not global then global = _G end -LUATEXVERSION = status.luatex_version/100 - + tonumber(status.luatex_revision)/10000 - -LUATEXENGINE = status.luatex_engine and string.lower(status.luatex_engine) - or (string.find(status.banner,"LuajitTeX",1,true) and "luajittex" or "luatex") - +LUATEXVERSION = status.luatex_version/100 + tonumber(status.luatex_revision)/10000 +LUATEXENGINE = string.lower(status.luatex_engine or "luametatex") LUATEXFUNCTIONALITY = status.development_id or 6346 - LUATEXFORMATID = status.format_id or 0 - -JITSUPPORTED = LUATEXENGINE == "luajittex" or jit - +JITSUPPORTED = false INITEXMODE = status.ini_version - CONTEXTLMTXMODE = 1 function os.setlocale() diff --git a/tex/context/base/mkxl/scrn-wid.lmt b/tex/context/base/mkxl/scrn-wid.lmt new file mode 100644 index 000000000..caa09adbd --- /dev/null +++ b/tex/context/base/mkxl/scrn-wid.lmt @@ -0,0 +1,317 @@ +if not modules then modules = { } end modules ['scrn-wid'] = { + version = 1.001, + comment = "companion to scrn-wid.mkiv", + author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", + copyright = "PRAGMA ADE / ConTeXt Development Team", + license = "see context related readme files" +} + +-- Support for interactive features is handled elsewhere. Now that is some mess! In +-- the early days one had media features like sound and movies that were easy to set +-- up. Then at some point renditions came around which were more work and somewhat +-- unreliable. Now, both mechanism are obsolete and replaced by rich media which is +-- a huge mess and has no real concept of what media are supported. There's flash +-- cq. shockwave (basically obsolete too), and for instance mp4 needs to be handled +-- by a swf player, and there's u3d which somehow has its own specification. One +-- would expect native support for video and audio to be en-par with browsers but +-- alas ... pdf has lost the battle with html here due to a few decades of +-- unstability and changing support. So far we could catch on and even were ahead +-- but I wonder if we should keep doing that. As we can't trust support for media we +-- can better not embed anything and just use a hyperlink to an external resource. No +-- sane person will create media rich pdf's as long as it's that unpredictable. Just +-- look at the specification and viewer preferences and decide. + +local next = next + +interactions = interactions or { } +local interactions = interactions + +local context = context +local implement = interfaces.implement + +local allocate = utilities.storage.allocate + +local attachments = allocate() +local comments = allocate() +local renderings = allocate() +local linkedlists = allocate() + +interactions.attachments = attachments +interactions.renderings = renderings +interactions.linkedlists = linkedlists + +local texsetbox = tex.setbox + +local jobpasses = job.passes + +local texgetcount = tex.getcount + +local codeinjections = backends.codeinjections +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 + +implement { + name = "presetsymbollist", + arguments = "string", + actions = function(list) + codeinjections.presetsymbollist(list) + end +} + +-- Attachments +-- +-- registered : unique id +-- tag : used at the tex end +-- file : name that the file has on the filesystem +-- name : name that the file will get in the output +-- title : up to the backend +-- subtitle : up to the backend +-- author : up to the backend +-- method : up to the backend (hidden == no rendering) + +local nofautoattachments, lastregistered = 0, nil + +local function checkregistered(specification) + local registered = specification.registered + if not registered or registered == "" or registered == v_auto then + nofautoattachments = nofautoattachments + 1 + lastregistered = "attachment-" .. nofautoattachments + specification.registered = lastregistered + return lastregistered + else + return registered + end +end + +local function checkbuffer(specification) + local buffer = specification.buffer + if buffer ~= "" then + specification.data = buffers.getcontent(buffer) or "<no data>" + end +end + +function attachments.register(specification) -- beware of tag/registered mixup(tag is namespace) + local registered = checkregistered(specification) + checkbuffer(specification) + attachments[registered] = specification + if trace_attachments then + report_attachments("registering %a",registered) + end + return specification +end + +function attachments.insert(specification) + local registered = checkregistered(specification) + local r = attachments[registered] + if r then + if trace_attachments then + report_attachments("including registered %a",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 %a",registered) + end + checkbuffer(specification) + return nodeinjections.attachfile(specification) +end + +implement { + name = "registerattachment", + actions = attachments.register, + arguments = { + { + { "tag" }, + { "registered" }, + { "title" }, + { "subtitle" }, + { "author" }, + { "file" }, + { "name" }, + { "buffer" }, + { "mimetype" }, + } + } +} + +implement { + name = "insertattachment", + actions = function(specification) + texsetbox("b_scrn_attachment_link",(attachments.insert(specification))) + end, + arguments = { + { + { "tag" }, + { "registered" }, + { "method" }, + { "width", "dimen" }, + { "height", "dimen" }, + { "depth", "dimen" }, + { "colormodel", "integer" }, + { "colorvalue", "integer" }, + { "color" }, + { "transparencyvalue", "integer" }, + { "symbol" }, + { "layer" }, + { "title" }, + { "subtitle" }, + { "author" }, + { "file" }, + { "name" }, + { "buffer" }, + { "mimetype" }, + } + } +} + +-- Comment + +function comments.insert(specification) + local buffer = specification.buffer + if buffer ~= "" then + specification.data = buffers.getcontent(buffer) or "" + end + return nodeinjections.comment(specification) +end + +implement { + name = "insertcomment", + actions = function(specification) + texsetbox("b_scrn_comment_link",(comments.insert(specification))) + end, + arguments = { + { + { "tag" }, + { "title" }, + { "subtitle" }, + { "author" }, + { "width", "dimen" }, + { "height", "dimen" }, + { "depth", "dimen" }, + { "nx" }, + { "ny" }, + { "colormodel", "integer" }, + { "colorvalue", "integer" }, + { "transparencyvalue", "integer" }, + { "option" }, + { "symbol" }, + { "buffer" }, + { "layer" }, + { "space" }, + } + } +} + +-- Renderings + +function renderings.register(specification) + if specification.label then + renderings[specification.label] = specification + return specification + end +end + +function renderings.rendering(label) + local rn = renderings[label] + if not rn then + -- todo: message + return renderings.register { label = label } + else + return rn + end +end + +function renderings.var(label,key) + local rn = renderings[label] + return rn and rn[key] or "" +end + +implement { + name = "renderingvar", + actions = { renderings.var, context }, + arguments = "2 strings", +} + +implement { + name = "registerrendering", + actions = renderings.register, + arguments = { + { + { "label" }, + { "mime" }, + { "filename" }, + { "option" }, + } + } +} + +-- Rendering: + +implement { + name = "insertrenderingwindow", + actions = function(specification) + codeinjections.insertrenderingwindow(specification) + end, + arguments = { + { + { "label" }, + { "width", "dimen" }, + { "height", "dimen" }, + { "option" }, + { "page", "integer" }, + { "openpage" }, + { "closepage" }, + } + } +} + +-- Linkedlists (only a context interface) + +implement { + name = "definelinkedlist", + arguments = "string", + actions = function(tag) + -- no need + end +} + +implement { + name = "enhancelinkedlist", + arguments = { "string", "integer" }, + actions = function(tag,n) + local ll = jobpasses.gettobesaved(tag) + if ll then + ll[n] = texgetcount("realpageno") + end + end +} + +implement { + name = "addlinklistelement", + arguments = "string", + actions = function(tag) + local tobesaved = jobpasses.gettobesaved(tag) + local collected = jobpasses.getcollected(tag) or { } + local currentlink = #tobesaved + 1 + local noflinks = #collected + tobesaved[currentlink] = 0 + local f = collected[1] or 0 + local l = collected[noflinks] or 0 + local p = collected[currentlink-1] or f + local n = collected[currentlink+1] or l + context.setlinkedlistproperties(currentlink,noflinks,f,p,n,l) + -- context.ctxlatelua(function() commands.enhancelinkedlist(tag,currentlink) end) + end +} diff --git a/tex/context/base/mkxl/scrn-wid.mklx b/tex/context/base/mkxl/scrn-wid.mklx index 6208ddab0..8bc3a3a1b 100644 --- a/tex/context/base/mkxl/scrn-wid.mklx +++ b/tex/context/base/mkxl/scrn-wid.mklx @@ -13,7 +13,7 @@ \writestatus{loading}{ConTeXt Interaction Macros / Widgets} -\registerctxluafile{scrn-wid}{} +\registerctxluafile{scrn-wid}{autosuffix} % todo: expansion in comments (default is expanded) % todo: check renderings ... acrobat crashes too easily on missing one @@ -559,52 +559,10 @@ % \definecomment[\v!comment] % \fi -%D Soundclips: +%D Conform Michals recommendations support for the old movie (and sound) annotations +%D has been removed. This also means that movies are no longer a valid external figure +%D format. So be it. %D -%D Defining sound tracks: -%D -%D \starttyping -%D \useexternalsoundtrack[label][file] -%D \stoptyping -%D -%D associated actions: StartSound StopSound PauseSound ResumeSound -%D -%D Todo: like external figures, also search on path, although, they need to be -%D present at viewing time, so ... -%D -%D A soundtrack needs to be embedded explicitly with \type {\checksoundtrack} -%D although we could hook it into the first goto. -%D -%D \starttyping -%D \useexternalsoundtrack[myaudio][hastobe.wav] % surprise ... no longer mp3 -%D -%D \starttext -%D \checksoundtrack{myaudio} -%D \goto{play sound}[StartSound{myaudio}] -%D \stoptext -%D \starttyping - -\installcorenamespace{externalsoundtracks} - -\installsetuponlycommandhandler \??externalsoundtracks {externalsoundtracks} - -\setupexternalsoundtracks - [\c!option=] - -\permanent\tolerant\protected\def\useexternalsoundtrack[#tag]#spacer[#filename]% - {\clf_registersoundclip - tag {#tag}% - file {#filename}% - \relax} - -\permanent\def\checksoundtrack#tag% yet untested in mkiv (also move management to lua) - {\iflocation - \clf_insertsoundclip - tag {#tag}% - repeat {\directexternalsoundtracksparameter\c!option}% - \relax - \fi} - %D Renderings (adapted to \MKIV\ by Michal Vlasák). We no longer have the \MKII\ internal %D and external rendering because over time all this widget stuff changed in \PDF\ and %D Acrobat. diff --git a/tex/context/base/mkxl/spac-ver.lmt b/tex/context/base/mkxl/spac-ver.lmt index c4da389f9..ca0544cf8 100644 --- a/tex/context/base/mkxl/spac-ver.lmt +++ b/tex/context/base/mkxl/spac-ver.lmt @@ -1014,7 +1014,7 @@ do end b_done = false b_packed = false - b_grid = grid + b_grid = grid == true or grid == 1 before() lpegmatch(pattern,str) after() diff --git a/tex/context/base/mkxl/strc-mar.mkxl b/tex/context/base/mkxl/strc-mar.mkxl index 229025f01..4c279f6dd 100644 --- a/tex/context/base/mkxl/strc-mar.mkxl +++ b/tex/context/base/mkxl/strc-mar.mkxl @@ -122,25 +122,18 @@ \expandafter\secondoftwoarguments \fi} -% \permanent\protected\tolerant\def\setmarking[#1]#:#2% -% {\ifarguments\orelse\ifconditional\inhibitsetmarking\else -% % probably best: \dontleavehmode -% \the\csname\??markingsyncs#1\endcsname -% \ifcstok{\namedmarkingparameter{#1}\c!expansion}\v!yes -% \marks\csname\??markingclass#1\endcsname{#2}% -% \else -% \marks\csname\??markingclass#1\endcsname{\detokenize{#2}}% -% \fi -% \fi} - \permanent\protected\tolerant\def\setmarking[#1]#:#2% {\ifarguments\orelse\ifconditional\inhibitsetmarking\else - % probably best: \dontleavehmode + % so no: \dontleavehmode \the\csname\??markingsyncs#1\endcsname \ifcstok{\namedmarkingparameter{#1}\c!expansion}\v!yes - \normalexpanded{\marks\csname\??markingclass#1\endcsname{#2}}% + \normalexpanded{% + \ifvmode\expandafter\flushatnextpar\else\expandafter\firstofoneargument\fi + {\marks\csname\??markingclass#1\endcsname{#2}}% + }% \else - \marks\csname\??markingclass#1\endcsname{#2}% + \ifvmode\expandafter\flushatnextpar\else\expandafter\firstofoneargument\fi + {\marks\csname\??markingclass#1\endcsname{#2}}% \fi \fi} diff --git a/tex/context/base/mkxl/strc-not.mklx b/tex/context/base/mkxl/strc-not.mklx index 6ada89961..34f74dd68 100644 --- a/tex/context/base/mkxl/strc-not.mklx +++ b/tex/context/base/mkxl/strc-not.mklx @@ -1046,6 +1046,8 @@ \newskip \s_strc_notes_inbetween \newconditional\c_strc_notes_first_flushed +% we can store them per insert so so real need to redo it + \appendtoks \edef\p_spacebefore{\rootnoteparameter\c!spacebefore}% \ifempty\p_spacebefore @@ -1053,7 +1055,7 @@ \else \setbox\scratchbox\vbox{\blank[\p_spacebefore]\global\s_strc_notes_before\lastskip}% \fi - \edef\p_spaceinbetween{\rootnoteparameter\c!spaceinbetween}% + \edef\p_spaceinbetween{\noteparameter\c!spaceinbetween}% \ifempty\p_spaceinbetween \global\s_strc_notes_inbetween\zeropoint \else @@ -1341,17 +1343,7 @@ \def\strc_notes_set_penalties {% stored in insert node \floatingpenalty \currentnotepenalty % now per note - % used when typesetting - \interlinepenalty\plushundred % plain value - % used when we need to split in columns - \ifnum\noteparameter\c!n>\plusone - \penalty\zerocount % otherwise no split in columns, maybe just always (tex just adds it to accumulated) - \fi} - -\def\strc_notes_set_penalties - {% stored in insert node - \floatingpenalty \currentnotepenalty % now per note - \page_inserts_set_penalty \currentnoteinsertionnumber\currentnotepenalty + \page_inserts_set_penalty\currentnoteinsertionnumber\currentnotepenalty % used when typesetting \interlinepenalty\plushundred % plain value % used when we need to split in columns @@ -1453,7 +1445,7 @@ \blank[\p_spaceinbetween]% \fi \else - \edef\p_spacebefore{\noteparameter\c!spacebefore}% + \edef\p_spacebefore{\rootnoteparameter\c!spacebefore}% \ifempty\p_spacebefore\else \blank[\p_spacebefore]% \fi diff --git a/tex/context/base/mkxl/strc-ref.mklx b/tex/context/base/mkxl/strc-ref.mklx index 3952a4faf..da1b6a42e 100644 --- a/tex/context/base/mkxl/strc-ref.mklx +++ b/tex/context/base/mkxl/strc-ref.mklx @@ -2023,8 +2023,6 @@ \definereference [\v!LastPage ] [action(last)] \definereference [\v!NextJump ] [action(forward)] \definereference [\v!NextPage ] [action(next)] -\definereference [\v!PauseMovie ] [action(pausemovie)] -\definereference [\v!PauseSound ] [action(pausesound)] \definereference [\v!PauseRendering ] [action(pauserendering)] \definereference [\v!PreviousJump ] [action(backward)] \definereference [\v!PreviousPage ] [action(previous)] @@ -2032,19 +2030,13 @@ \definereference [\v!SaveForm ] [action(exportform)] \definereference [\v!LoadForm ] [action(importform)] \definereference [\v!ResetForm ] [action(resetform)] -\definereference [\v!ResumeMovie ] [action(resumemovie)] -\definereference [\v!ResumeSound ] [action(resumesound)] \definereference [\v!ResumeRendering ] [action(resumerendering)] \definereference [\v!SaveDocument ] [action(save)] \definereference [\v!SaveNamedDocument] [action(savenamed)] \definereference [\v!OpenNamedDocument] [action(opennamed)] \definereference [\v!SearchDocument ] [action(search)] \definereference [\v!SearchAgain ] [action(searchagain)] -\definereference [\v!StartMovie ] [action(startmovie)] -\definereference [\v!StartSound ] [action(startsound)] \definereference [\v!StartRendering ] [action(startrendering)] -\definereference [\v!StopMovie ] [action(stopmovie)] -\definereference [\v!StopSound ] [action(stopsound)] \definereference [\v!StopRendering ] [action(stoprendering)] \definereference [\v!SubmitForm ] [action(submitform)] \definereference [\v!ToggleViewer ] [action(toggle)] diff --git a/tex/context/base/mkxl/strc-sec.mkxl b/tex/context/base/mkxl/strc-sec.mkxl index 6a4442e85..ba250311e 100644 --- a/tex/context/base/mkxl/strc-sec.mkxl +++ b/tex/context/base/mkxl/strc-sec.mkxl @@ -1340,6 +1340,10 @@ \finalizeautostructurelevels \to \everystoptext +%D Defined at the \LUA\ end: + +% \doifelsefirstsectionpage{chapter}{do this}{or that} % in pagebody building + \stopcontextdefinitioncode \protect \endinput diff --git a/tex/context/interface/mkii/keys-nl.xml b/tex/context/interface/mkii/keys-nl.xml index c52ef7ab2..86a5622e8 100644 --- a/tex/context/interface/mkii/keys-nl.xml +++ b/tex/context/interface/mkii/keys-nl.xml @@ -191,6 +191,7 @@ <cd:variable name='enumeration' value='doornummering'/> <cd:variable name='environment' value='omgeving'/> <cd:variable name='even' value='even'/> + <cd:variable name='explicit' value='explicit'/> <cd:variable name='export' value='export'/> <cd:variable name='external' value='extern'/> <cd:variable name='extremestretch' value='extremestretch'/> diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index e1a70fa4d..05dfc4b94 100644 --- a/tex/generic/context/luatex/luatex-fonts-merged.lua +++ b/tex/generic/context/luatex/luatex-fonts-merged.lua @@ -1,6 +1,6 @@ -- merged file : c:/data/develop/context/sources/luatex-fonts-merged.lua -- parent file : c:/data/develop/context/sources/luatex-fonts.lua --- merge date : 2021-10-13 16:56 +-- merge date : 2021-10-15 13:57 do -- begin closure to overcome local limits and interference |