summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2021-10-15 15:03:57 +0200
committerContext Git Mirror Bot <phg@phi-gamma.net>2021-10-15 15:03:57 +0200
commit6ca88e6f1f15cea89db047839c3126a501f39eea (patch)
treee87d8a0ad20389157a8ccb02278d3a94152877c9
parentcc7fcf11d31b2db23ba3adca896507f9faf128cc (diff)
downloadcontext-6ca88e6f1f15cea89db047839c3126a501f39eea.tar.gz
2021-10-15 13:59:00
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer.lua2
-rw-r--r--context/data/scite/context/scite-ctx.lua10
-rw-r--r--doc/context/scripts/mkiv/mtx-spell.html53
-rw-r--r--doc/context/scripts/mkiv/mtx-spell.man36
-rw-r--r--doc/context/scripts/mkiv/mtx-spell.xml26
-rw-r--r--doc/context/sources/general/manuals/lowlevel/lowlevel-paragraphs.tex78
-rw-r--r--scripts/context/lua/mtx-spell.lua8
-rw-r--r--tex/context/base/mkii/cont-new.mkii2
-rw-r--r--tex/context/base/mkii/context.mkii2
-rw-r--r--tex/context/base/mkii/mult-nl.mkii1
-rw-r--r--tex/context/base/mkiv/cont-new.mkiv2
-rw-r--r--tex/context/base/mkiv/context.mkiv2
-rw-r--r--tex/context/base/mkiv/mult-def.lua6
-rw-r--r--tex/context/base/mkiv/spac-ver.lua2
-rw-r--r--tex/context/base/mkiv/status-files.pdfbin24821 -> 24822 bytes
-rw-r--r--tex/context/base/mkiv/status-lua.pdfbin253942 -> 253826 bytes
-rw-r--r--tex/context/base/mkiv/strc-doc.lua80
-rw-r--r--tex/context/base/mkiv/strc-ref.lua1
-rw-r--r--tex/context/base/mkxl/back-pdf.mkxl2
-rw-r--r--tex/context/base/mkxl/cont-new.mkxl2
-rw-r--r--tex/context/base/mkxl/context.mkxl2
-rw-r--r--tex/context/base/mkxl/core-uti.lmt11
-rw-r--r--tex/context/base/mkxl/grph-inc.lmt63
-rw-r--r--tex/context/base/mkxl/lpdf-ano.lmt25
-rw-r--r--tex/context/base/mkxl/lpdf-aux.lmt5
-rw-r--r--tex/context/base/mkxl/lpdf-mov.lmt69
-rw-r--r--tex/context/base/mkxl/lpdf-wid.lmt3
-rw-r--r--tex/context/base/mkxl/luat-cod.lmt4
-rw-r--r--tex/context/base/mkxl/luat-ini.lmt14
-rw-r--r--tex/context/base/mkxl/scrn-wid.lmt317
-rw-r--r--tex/context/base/mkxl/scrn-wid.mklx50
-rw-r--r--tex/context/base/mkxl/spac-ver.lmt2
-rw-r--r--tex/context/base/mkxl/strc-mar.mkxl21
-rw-r--r--tex/context/base/mkxl/strc-not.mklx18
-rw-r--r--tex/context/base/mkxl/strc-ref.mklx8
-rw-r--r--tex/context/base/mkxl/strc-sec.mkxl4
-rw-r--r--tex/context/interface/mkii/keys-nl.xml1
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua2
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
index 50a3a1f99..6bcf6b371 100644
--- a/tex/context/base/mkiv/status-files.pdf
+++ b/tex/context/base/mkiv/status-files.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf
index 57b1a2f59..aaba8ae4f 100644
--- a/tex/context/base/mkiv/status-lua.pdf
+++ b/tex/context/base/mkiv/status-lua.pdf
Binary files differ
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