summaryrefslogtreecommitdiff
path: root/tex/context/base
diff options
context:
space:
mode:
authorMarius <mariausol@gmail.com>2012-05-10 18:40:14 +0300
committerMarius <mariausol@gmail.com>2012-05-10 18:40:14 +0300
commit44753752af92006e66186c06efa35c466fba17b6 (patch)
tree49e9554b7e2d916856d454ace442a471aa5acea9 /tex/context/base
parent5fd1e86a92174ff8d845dcbdb94161b52080c2d9 (diff)
downloadcontext-44753752af92006e66186c06efa35c466fba17b6.tar.gz
beta 2012.05.10 17:00
Diffstat (limited to 'tex/context/base')
-rw-r--r--tex/context/base/cont-new.mkii2
-rw-r--r--tex/context/base/cont-new.mkiv2
-rw-r--r--tex/context/base/context-version.pdfbin4070 -> 4071 bytes
-rw-r--r--tex/context/base/context-version.pngbin105493 -> 105651 bytes
-rw-r--r--tex/context/base/context.mkii2
-rw-r--r--tex/context/base/context.mkiv2
-rw-r--r--tex/context/base/core-con.lua42
-rw-r--r--tex/context/base/core-con.mkiv8
-rw-r--r--tex/context/base/core-dat.lua10
-rw-r--r--tex/context/base/core-dat.mkiv3
-rw-r--r--tex/context/base/file-mod.lua14
-rw-r--r--tex/context/base/mult-sys.mkiv1
-rw-r--r--tex/context/base/pack-rul.mkiv3
-rw-r--r--tex/context/base/s-art-01.mkiv32
-rw-r--r--tex/context/base/spac-ali.mkiv14
-rw-r--r--tex/context/base/spac-grd.mkiv89
-rw-r--r--tex/context/base/spac-pag.mkiv127
-rw-r--r--tex/context/base/spac-ver.mkiv7
-rw-r--r--tex/context/base/status-files.pdfbin24337 -> 24304 bytes
-rw-r--r--tex/context/base/status-lua.pdfbin173419 -> 173832 bytes
-rw-r--r--tex/context/base/strc-itm.mkvi8
-rw-r--r--tex/context/base/typo-mar.mkiv20
22 files changed, 161 insertions, 225 deletions
diff --git a/tex/context/base/cont-new.mkii b/tex/context/base/cont-new.mkii
index 6241a2f3e..ec14cb9e4 100644
--- a/tex/context/base/cont-new.mkii
+++ b/tex/context/base/cont-new.mkii
@@ -11,7 +11,7 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\newcontextversion{2012.05.08 23:00}
+\newcontextversion{2012.05.10 17:00}
%D This file is loaded at runtime, thereby providing an
%D excellent place for hacks, patches, extensions and new
diff --git a/tex/context/base/cont-new.mkiv b/tex/context/base/cont-new.mkiv
index ac8cfd1af..a3be92aa7 100644
--- a/tex/context/base/cont-new.mkiv
+++ b/tex/context/base/cont-new.mkiv
@@ -11,7 +11,7 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\newcontextversion{2012.05.08 23:00}
+\newcontextversion{2012.05.10 17:00}
%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/context-version.pdf b/tex/context/base/context-version.pdf
index 8639cacf9..7d4b45c8e 100644
--- a/tex/context/base/context-version.pdf
+++ b/tex/context/base/context-version.pdf
Binary files differ
diff --git a/tex/context/base/context-version.png b/tex/context/base/context-version.png
index 1742b5b42..cf930e8f9 100644
--- a/tex/context/base/context-version.png
+++ b/tex/context/base/context-version.png
Binary files differ
diff --git a/tex/context/base/context.mkii b/tex/context/base/context.mkii
index 0a142a192..a6011b7e7 100644
--- a/tex/context/base/context.mkii
+++ b/tex/context/base/context.mkii
@@ -20,7 +20,7 @@
%D your styles an modules.
\edef\contextformat {\jobname}
-\edef\contextversion{2012.05.08 23:00}
+\edef\contextversion{2012.05.10 17:00}
%D For those who want to use this:
diff --git a/tex/context/base/context.mkiv b/tex/context/base/context.mkiv
index 70c12126f..9f595171e 100644
--- a/tex/context/base/context.mkiv
+++ b/tex/context/base/context.mkiv
@@ -23,7 +23,7 @@
%D up and the dependencies are more consistent.
\edef\contextformat {\jobname}
-\edef\contextversion{2012.05.08 23:00}
+\edef\contextversion{2012.05.10 17:00}
%D For those who want to use this:
diff --git a/tex/context/base/core-con.lua b/tex/context/base/core-con.lua
index 571a850f4..e4b516e3b 100644
--- a/tex/context/base/core-con.lua
+++ b/tex/context/base/core-con.lua
@@ -764,29 +764,29 @@ local v_space = variables.space
local convert = converters.convert
-local days = {
- variables.sunday,
- variables.monday,
- variables.tuesday,
- variables.wednesday,
- variables.thursday,
- variables.friday,
- variables.saturday,
+local days = { -- not variables.sunday
+ "sunday",
+ "monday",
+ "tuesday",
+ "wednesday",
+ "thursday",
+ "friday",
+ "saturday",
}
-local months = {
- variables.january,
- variables.february,
- variables.march,
- variables.april,
- variables.may,
- variables.june,
- variables.july,
- variables.august,
- variables.september,
- variables.october,
- variables.november,
- variables.december,
+local months = { -- not variables.januari
+ "january",
+ "february",
+ "march",
+ "april",
+ "may",
+ "june",
+ "july",
+ "august",
+ "september",
+ "october",
+ "november",
+ "december",
}
function commands.dayname(n)
diff --git a/tex/context/base/core-con.mkiv b/tex/context/base/core-con.mkiv
index 301b56612..241d43165 100644
--- a/tex/context/base/core-con.mkiv
+++ b/tex/context/base/core-con.mkiv
@@ -696,6 +696,14 @@
\defineconversion [cn-c] [\chinesecapnumerals]
\defineconversion [cn-a] [\chineseallnumerals]
+%D In case a font has no greek (WS):
+
+\defineconversion [mathgreek]
+ [\m{α},\m{β},\m{γ},\m{δ},\m{ε},\m{ζ},
+ \m{η},\m{θ},\m{ι},\m{κ},\m{λ},\m{μ},
+ \m{ν},\m{ξ},\m{ο},\m{π},\m{ρ},\m{σ},
+ \m{τ},\m{υ},\m{φ},\m{χ},\m{ψ},\m{ω}]
+
%D Symbol sets:
\ifdefined\symbol \else \def\symbol[#1]{#1} \fi % todo
diff --git a/tex/context/base/core-dat.lua b/tex/context/base/core-dat.lua
index 2317eb759..071a3fe0b 100644
--- a/tex/context/base/core-dat.lua
+++ b/tex/context/base/core-dat.lua
@@ -234,3 +234,13 @@ function commands.pagestaterealpage(name,tag)
context(t)
end
end
+
+function commands.setpagestaterealpageno(name,tag)
+ local t = collected[name]
+ t = t and (t[tag] or t[tonumber(tag)])
+ if t then
+ texcount.realpagestateno = t
+ else
+ texcount.realpagestateno = texcount.realpageno
+ end
+end
diff --git a/tex/context/base/core-dat.mkiv b/tex/context/base/core-dat.mkiv
index f1d2a52cb..5aef39d69 100644
--- a/tex/context/base/core-dat.mkiv
+++ b/tex/context/base/core-dat.mkiv
@@ -95,4 +95,7 @@
\def\pagestaterealpage#1#2%
{\ctxcommand{pagestaterealpage("#1","#2")}}
+\def\setpagestaterealpageno#1#2%
+ {\ctxcommand{setpagestaterealpageno("#1","#2")}}
+
\protect
diff --git a/tex/context/base/file-mod.lua b/tex/context/base/file-mod.lua
index 75e898f4b..e6592f0f0 100644
--- a/tex/context/base/file-mod.lua
+++ b/tex/context/base/file-mod.lua
@@ -154,7 +154,7 @@ end)
-- moved from syst-lua.lua:
-local splitter = lpeg.tsplitat(lpeg.S(". "))
+local splitter = lpeg.tsplitter(lpeg.S(". "),tonumber)
function commands.doifolderversionelse(one,two) -- one >= two
if not two then
@@ -162,11 +162,9 @@ function commands.doifolderversionelse(one,two) -- one >= two
elseif one == "" then
one = environment.version
end
- local y_1, m_1, d_1 = lpeg.match(splitter,one)
- local y_2, m_2, d_2 = lpeg.match(splitter,two)
- commands.testcase (
- (tonumber(y_1) or 0) >= (tonumber(y_2) or 0) and
- (tonumber(m_1) or 0) >= (tonumber(m_2) or 0) and
- (tonumber(d_1) or 0) >= (tonumber(d_1) or 0)
- )
+ one = lpeg.match(splitter,one)
+ two = lpeg.match(splitter,two)
+ one = (one[1] or 0) * 10000 + (one[2] or 0) * 100 + (one[3] or 0)
+ two = (two[1] or 0) * 10000 + (two[2] or 0) * 100 + (two[3] or 0)
+ commands.testcase(one>=two)
end
diff --git a/tex/context/base/mult-sys.mkiv b/tex/context/base/mult-sys.mkiv
index bf40fa8c1..4ec4c2221 100644
--- a/tex/context/base/mult-sys.mkiv
+++ b/tex/context/base/mult-sys.mkiv
@@ -342,6 +342,7 @@
\definesystemconstant {full}
\definesystemconstant {text}
\definesystemconstant {paragraph}
+\definesystemconstant {margintext}
\definesystemconstant {line}
\definesystemconstant {number}
diff --git a/tex/context/base/pack-rul.mkiv b/tex/context/base/pack-rul.mkiv
index 73c1be29f..f65641b96 100644
--- a/tex/context/base/pack-rul.mkiv
+++ b/tex/context/base/pack-rul.mkiv
@@ -2530,9 +2530,6 @@
\egroup
\forgetall % brrr too often
\vskip-\lineheight
- % will be an option, not default
- % \setbaselinecorrections
- % \donegbotbaselinecorrection
\verticalstrut
\else
\egroup
diff --git a/tex/context/base/s-art-01.mkiv b/tex/context/base/s-art-01.mkiv
index d62689798..10b4de9ab 100644
--- a/tex/context/base/s-art-01.mkiv
+++ b/tex/context/base/s-art-01.mkiv
@@ -3,34 +3,34 @@
% \showframe
\setuplayout
- [topspace=2cm,
- bottomspace=2.5cm,
- width=middle,
- height=middle,
- footer=0pt]
+ [\c!topspace=2cm,
+ \c!bottomspace=2.5cm,
+ \c!width=\v!middle,
+ \c!height=\v!middle,
+ \c!footer=0pt]
\setupbodyfont
[dejavu]
\setupwhitespace
- [big]
+ [\v!big]
\setuphead
- [chapter]
- [style=\bfc,
- headerstate=high]
+ [\v!chapter]
+ [\c!style=\bfc,
+ \c!headerstate=\v!high]
\setuphead
- [section]
- [style=\bfb]
+ [\v!section]
+ [\c!style=\bfb]
\setuphead
- [subsection]
- [style=\bfa]
+ [\v!subsection]
+ [\c!style=\bfa]
\setuphead
- [subsubsection]
- [style=\bf,
- after=]
+ [\v!subsubsection]
+ [\c!style=\bf,
+ \c!after=]
\stopmodule
diff --git a/tex/context/base/spac-ali.mkiv b/tex/context/base/spac-ali.mkiv
index ff384d13d..57806b6f2 100644
--- a/tex/context/base/spac-ali.mkiv
+++ b/tex/context/base/spac-ali.mkiv
@@ -37,9 +37,21 @@
\installcorenamespace{aligncommand}
\installcorenamespace{alignhorizontal}
\installcorenamespace{alignvertical}
+
\installcorenamespace{alignmentnormalcache}
\installcorenamespace{alignmentraggedcache}
+% nasty hack:
+
+\installcorenamespace{alignmentnormalcacheodd}
+\installcorenamespace{alignmentnormalcacheeven}
+
+\installcorenamespace{alignmentraggedcacheodd}
+\installcorenamespace{alignmentraggedcacheeven}
+
+\def\??alignmentnormalcache{\ifodd\realpageno\??alignmentnormalcacheodd\else\??alignmentnormalcacheeven\fi}
+\def\??alignmentraggedcache{\ifodd\realpageno\??alignmentraggedcacheodd\else\??alignmentraggedcacheeven\fi}
+
\newtoks\everyresetalign % todo
% We will not use bodydir and pagedir so we disable them. That way we get
@@ -503,7 +515,7 @@
\rawprocesscommacommand[\askedraggedalign]\spac_align_collect
\fi
\normalexpanded{\t_spac_align_collected
- {% \resetrealignsignal % can go as it is alway set
+ {% \resetrealignsignal % can go as it is always set
\setfalse\raggedonelinerstate % bad
\the\t_spac_align_collected
\spac_align_flush_horizontal
diff --git a/tex/context/base/spac-grd.mkiv b/tex/context/base/spac-grd.mkiv
index 0fd837bba..af9babe15 100644
--- a/tex/context/base/spac-grd.mkiv
+++ b/tex/context/base/spac-grd.mkiv
@@ -100,27 +100,41 @@
% \definecolor[GridLineColor][red]
% \definecolor[GridTextColor][blue]
-\let\thetopbaselinecorrection \!!zeropoint
-\let\thebotbaselinecorrection \!!zeropoint
-\let\thenegtopbaselinecorrection\!!zeropoint
-\let\thenegbotbaselinecorrection\!!zeropoint
-
-\def\setbaselinecorrections
- {\setbox0\hbox{\setstrut\strut}%
- \setbox2\hbox{(}%
- \dimen0\ht0\advance\dimen0 -\ht2
- \ifdim\dimen0<\zeropoint\dimen0\zeropoint\fi
- \dimen2\dp0\advance\dimen2 -\dp2
- \ifdim\dimen2<\zeropoint\dimen2\zeropoint\fi
- \edef\thetopbaselinecorrection {\the\dimen0}\dimen0-\dimen0
- \edef\thebotbaselinecorrection {\the\dimen2}\dimen2-\dimen2
- \edef\thenegtopbaselinecorrection{\the\dimen0}%
- \edef\thenegbotbaselinecorrection{\the\dimen2}}
-
-\def\dotopbaselinecorrection {\kern\thetopbaselinecorrection}
-\def\dobotbaselinecorrection {\kern\thebotbaselinecorrection}
-\def\donegtopbaselinecorrection{\kern\thenegtopbaselinecorrection}
-\def\donegbotbaselinecorrection{\kern\thenegbotbaselinecorrection}
+\newdimen\d_spac_lines_correction_before
+\newdimen\d_spac_lines_correction_after
+
+\newbox \b_spac_lines_correction_before
+\newbox \b_spac_lines_correction_after
+
+\def\spac_lines_initialize_corrections
+ {\setbox\b_spac_lines_correction_before\hbox{\setstrut\strut}%
+ \setbox\b_spac_lines_correction_after \hbox{(}%
+ \d_spac_lines_correction_before\dimexpr\ht\b_spac_lines_correction_before-\ht\b_spac_lines_correction_after\relax
+ \d_spac_lines_correction_after \dimexpr\dp\b_spac_lines_correction_before-\dp\b_spac_lines_correction_after\relax
+ \ifdim\d_spac_lines_correction_before<\zeropoint\d_spac_lines_correction_before\zeropoint\fi
+ \ifdim\d_spac_lines_correction_after <\zeropoint\d_spac_lines_correction_after \zeropoint\fi}
+
+\unexpanded\def\dotopbaselinecorrection{\kern\d_spac_lines_correction_before}
+\unexpanded\def\dobotbaselinecorrection{\kern\d_spac_lines_correction_after }
+
+% experiment, todo: proper mkiv mechanism
+%
+% \input ward \par
+% \startframedtext test \stopframedtext
+% \input ward \par
+% \startlinecorrection \framed{xxx} \stoplinecorrection
+% \input ward \par
+%
+% \setupwhitespace[big]
+%
+% \input ward \par
+% \startframedtext test \stopframedtext
+% \input ward \par
+% \startlinecorrection \framed{xxx} \stoplinecorrection
+% \input ward \par
+
+\unexpanded\def\dotopbaselinecorrection{\expandafter\blank\expandafter[\the\d_spac_lines_correction_before]}
+\unexpanded\def\dobotbaselinecorrection{\expandafter\blank\expandafter[\the\d_spac_lines_correction_after ]}
\def\showbaselinecorrection
{\def\dobaselinecorrection % visualization is not watertight!
@@ -135,9 +149,9 @@
\egroup
\prevdepth\strutdp}%
\def\dotopbaselinecorrection
- {\hrule\!!height\thetopbaselinecorrection}%
+ {\hrule\!!height\d_spac_lines_correction_before}%
\def\dobotbaselinecorrection
- {\hrule\!!height\thebotbaselinecorrection}}
+ {\hrule\!!height\d_spac_lines_correction_after}}
\def\dobaselinecorrection % beware, this one is redefined / used locally elsewhere
{\ifdim\prevdepth>\zeropoint\kern-\prevdepth\fi
@@ -227,7 +241,7 @@
\def\forcedtopbaselinecorrection
{\ifvmode
\bgroup
- \setbaselinecorrections
+ \spac_lines_initialize_corrections
\whitespace % no longer ok
\nointerlineskip
\dotopbaselinecorrection
@@ -237,7 +251,7 @@
\def\botbaselinecorrection
{\ifvmode
\bgroup
- \setbaselinecorrections
+ \spac_lines_initialize_corrections
\dobotbaselinecorrection
\allowbreak % new, otherwise problems when many in a row
\prevdepth\strutdp
@@ -245,27 +259,6 @@
\fi}
\let\forcedbotbaselinecorrection\botbaselinecorrection
-
-% experiment, todo: proper mkiv mechanism
-%
-% \input ward \par
-% \startframedtext test \stopframedtext
-% \input ward \par
-% \startlinecorrection \framed{xxx} \stoplinecorrection
-% \input ward \par
-%
-% \setupwhitespace[big]
-%
-% \input ward \par
-% \startframedtext test \stopframedtext
-% \input ward \par
-% \startlinecorrection \framed{xxx} \stoplinecorrection
-% \input ward \par
-
-\def\dotopbaselinecorrection {\blank[\thetopbaselinecorrection ]}
-\def\dobotbaselinecorrection {\blank[\thebotbaselinecorrection ]}
-\def\donegtopbaselinecorrection{\blank[\thenegtopbaselinecorrection]}
-\def\donegbotbaselinecorrection{\blank[\thenegbotbaselinecorrection]}
% nointerlineskip
%
@@ -277,8 +270,8 @@
\def\forcedtopbaselinecorrection
{\ifvmode
\bgroup
- \setbaselinecorrections
- \vspacing[white]
+ \spac_lines_initialize_corrections
+ \vspacing[\v!white]
% \nointerlineskip %
\dotopbaselinecorrection
\egroup
diff --git a/tex/context/base/spac-pag.mkiv b/tex/context/base/spac-pag.mkiv
index 10b5d1acd..da4c8e970 100644
--- a/tex/context/base/spac-pag.mkiv
+++ b/tex/context/base/spac-pag.mkiv
@@ -18,8 +18,6 @@
%D The code here has evolved over time and might not be the best
%D around. Maybe much will be gone a some point.
-%D The pagestate code will be redone.
-
\installcorenamespace {alignswitch}
\letvalue{\??alignswitch\v!left }\zerocount
@@ -38,107 +36,22 @@
\doforcedtrackpagestate{#1}{#2}%
\fi \fi}
-% \def\doforcedtrackpagestate#1#2%
-% {\ifcase\frozenpagestate
-% \global\advance#2\plusone
-% \lazysavetaggedtwopassdata{#1}{0}{\number#2}{\noexpand\realfolio}%
-% \fi}
-
\def\doforcedtrackpagestate#1#2%
{\ifcase\frozenpagestate
\global\advance#2\plusone
\setpagestate[#1][\number#2]%
\fi}
-% \def\doifrightpagestateelse#1#2% not expandable !
-% {\ifcase\frozenpagestate
-% \pagestatemismatchfalse
-% \realpagestateno\realfolio
-% \ifinpagebody
-% \ifdoublesided
-% \ifodd\realpageno\relax
-% \syst_twopass_set_found
-% \else
-% \syst_twopass_set_not_found
-% \fi
-% \else
-% \syst_twopass_set_found
-% \fi
-% \else\ifdoublesided
-% \findtwopassdata{#1}{\number#2}%
-% \ifconditional\twopassdatafound
-% \realpagestateno\twopassdata\relax
-% \ifnum\twopassdata=\realpageno \else
-% \pagestatemismatchtrue
-% \fi
-% \ifodd\twopassdata\relax
-% \syst_twopass_set_found
-% \else
-% \syst_twopass_set_not_found
-% \fi
-% \else
-% \ifodd\realpageno\relax
-% \syst_twopass_set_found
-% \else
-% \syst_twopass_set_not_found
-% \fi
-% \fi
-% \else
-% \syst_twopass_set_found
-% \fi\fi
-% \else
-% \ifodd\realpagestateno\relax
-% \syst_twopass_set_found
-% \else
-% \syst_twopass_set_not_found
-% \fi
-% \fi
-% \ifconditional\twopassdatafound
-% \expandafter\firstoftwoarguments
-% \else
-% \expandafter\secondoftwoarguments
-% \fi}
-
-% \def\doifforcedrightpagestateelse#1#2%
-% {\ifcase\frozenpagestate
-% \pagestatemismatchfalse
-% \realpagestateno\realfolio
-% \findtwopassdata{#1}{\number#2}%
-% \ifconditional\twopassdatafound
-% \realpagestateno\twopassdata\relax
-% \ifnum\twopassdata=\realpageno \else
-% \pagestatemismatchtrue
-% \fi
-% \ifodd\twopassdata\relax
-% \syst_twopass_set_found
-% \else
-% \syst_twopass_set_not_found
-% \fi
-% \else
-% \ifodd\realpageno\relax
-% \syst_twopass_set_found
-% \else
-% \syst_twopass_set_not_found
-% \fi
-% \fi
-% \else
-% \ifodd\realpagestateno\relax
-% \syst_twopass_set_found
-% \else
-% \syst_twopass_set_not_found
-% \fi
-% \fi
-% \ifconditional\twopassdatafound
-% \expandafter\firstoftwoarguments
-% \else
-% \expandafter\secondoftwoarguments
-% \fi}
-
\let\m_spac_pagestates_realpage\empty
\newconditional\c_spac_pagestates_found
-\def\doifrightpagestateelse#1#2% not expandable !
+\unexpanded\def\docheckpagestate#1#2%
+ {\ifcase\frozenpagestate
+ \setpagestaterealpageno{#1}{\number#2}%
+ \fi}
+
+\unexpanded\def\doifrightpagestateelse#1#2% not expandable !
{\ifcase\frozenpagestate
\pagestatemismatchfalse
\realpagestateno\realfolio
@@ -187,7 +100,7 @@
\expandafter\secondoftwoarguments
\fi}
-\def\doifforcedrightpagestateelse#1#2%
+\unexpanded\def\doifforcedrightpagestateelse#1#2%
{\ifcase\frozenpagestate
\pagestatemismatchfalse
\realpagestateno\realfolio
@@ -222,42 +135,24 @@
\expandafter\secondoftwoarguments
\fi}
-\def\freezepagestate {\frozenpagestate\plusone }
-\def\defrostpagestate{\frozenpagestate\zerocount}
+\unexpanded\def\freezepagestate {\frozenpagestate\plusone }
+\unexpanded\def\defrostpagestate{\frozenpagestate\zerocount}
% we can make more of these on top, but how to deal with mixed frozen states
% \dorecurse{500}{\dontleavehmode\signalrightpage\doifrightpageelse{right}{left}\par} % given doublesided
-% \definetwopasslist\s!paragraph
-
\newcount\nofraggedparagraphs
\definepagestate[\s!paragraph]
-\def\signalrightpage {\dotrackpagestate \s!paragraph\nofraggedparagraphs} % use \dontleavehmode if needed
-\def\doifrightpageelse{\doifrightpagestateelse\s!paragraph\nofraggedparagraphs}
+\unexpanded\def\signalrightpage {\dotrackpagestate \s!paragraph\nofraggedparagraphs} % use \dontleavehmode if needed
+\unexpanded\def\doifrightpageelse{\doifrightpagestateelse\s!paragraph\nofraggedparagraphs}
\installcorenamespace{pagechanges}
\newif\ifpagechanged \let\lastchangedpage\empty
-% \def\spac_pagechanges_check#1#2#3%
-% {\pagechangedfalse
-% \doforcedtrackpagestate{#2}{#3}%
-% \findtwopassdata{#2}{\number#3}%
-% \ifconditional\twopassdatafound
-% \ifnum\twopassdata>0\getvalue{\??pagechanges#2:#1}\relax
-% \pagechangedtrue
-% \fi
-% \fi
-% \ifpagechanged
-% \letgvalue{\??pagechanges#2:#1}\twopassdata
-% \globallet\lastchangedpage\twopassdata
-% \else
-% \globallet\lastchangedpage\realfolio
-% \fi}
-
\def\spac_pagechanges_check#1#2#3%
{\pagechangedfalse
\doforcedtrackpagestate{#2}{#3}%
diff --git a/tex/context/base/spac-ver.mkiv b/tex/context/base/spac-ver.mkiv
index f962e6694..c7d097ccb 100644
--- a/tex/context/base/spac-ver.mkiv
+++ b/tex/context/base/spac-ver.mkiv
@@ -468,15 +468,16 @@
\let\m_spac_lines_around \empty
\setvalue{\??linesaround\v!blank }{\blank}
+\setvalue{\??linesaround\v!local }{\setlocalhsize}
\letvalue{\??linesaround\empty }\relax
\setvalue{\??linesaround\s!unknown}{\blank[\m_spac_lines_around]}
\unexpanded\def\startlinecorrection
- {\dodoubleempty\spac_lines_start_correction}
+ {\bgroup
+ \dodoubleempty\spac_lines_start_correction}
\def\spac_lines_start_correction[#1][#2]% #2 gobbles spaces
- {\bgroup
- \edef\m_spac_lines_around{#1}%
+ {\edef\m_spac_lines_around{#1}%
\expandafter\let\expandafter\spac_lines_action_around\csname\??linesaround
\ifcsname\??linesaround\m_spac_lines_around\endcsname\m_spac_lines_around\else\s!unknown\fi
\endcsname
diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf
index 9b26595cf..4ee6cbf9d 100644
--- a/tex/context/base/status-files.pdf
+++ b/tex/context/base/status-files.pdf
Binary files differ
diff --git a/tex/context/base/status-lua.pdf b/tex/context/base/status-lua.pdf
index c3a27cc4d..05e586174 100644
--- a/tex/context/base/status-lua.pdf
+++ b/tex/context/base/status-lua.pdf
Binary files differ
diff --git a/tex/context/base/strc-itm.mkvi b/tex/context/base/strc-itm.mkvi
index d0191f78f..86acba33c 100644
--- a/tex/context/base/strc-itm.mkvi
+++ b/tex/context/base/strc-itm.mkvi
@@ -990,8 +990,8 @@
\strc_itemgroups_between_command
\fi}
-\unexpanded\def\strc_itemgroups_start_item[#reference]% we can reuse more
- {\def\currentitemreference{#reference}%
+\unexpanded\def\strc_itemgroups_start_item[#1]% we can reuse more
+ {\def\currentitemreference{#1}%
\ifconditional\c_strc_itemgroups_text
% begin of item
\else
@@ -1007,7 +1007,9 @@
\strc_itemgroups_start_item_next
\fi
\ifconditional\c_strc_itemgroups_concat
- \vskip-\dimexpr\lastskip+\lineheight\relax
+ % \vskip-\dimexpr\lastskip+\lineheight\relax
+ \vskip-\lastskip % we cannot use a \dimexpr here because
+ \vskip-\lineheight % then we loose the stretch and shrink
\nobreak
\setfalse\c_strc_itemgroups_concat
\fi
diff --git a/tex/context/base/typo-mar.mkiv b/tex/context/base/typo-mar.mkiv
index e1b25a9ae..a393fc250 100644
--- a/tex/context/base/typo-mar.mkiv
+++ b/tex/context/base/typo-mar.mkiv
@@ -154,6 +154,19 @@
% trialtypesetting: no need for margin stuff while trialing as
% is has no dimensions
+\definesystemconstant{margintext}
+
+\newcount\nofmargintexts
+
+\definepagestate[\s!margintext]
+
+\unexpanded\def\typo_margins_data_synchronize
+ {\doforcedtrackpagestate\s!margintext\nofmargintexts % includes increment
+ \docheckpagestate\s!margintext\nofmargintexts
+ %\doifrightpagestateelse\s!margintext\nofmargintexts\relax\relax
+ \realpageno\realpagestateno
+ \swapmargins}
+
\unexpanded\def\margindata
{\iftrialtypesetting
\expandafter\typo_margins_data_nop
@@ -192,6 +205,7 @@
\the\everymargindatacontent
\usemargindatastyleandcolor\c!style\c!color
\setupcurrentmarginframed[\c!location=\v!normal,#textparameters]%
+\typo_margins_data_synchronize
\inheritedmarginframedframed\bgroup
\ifx\currentmargindatastrut\empty \else
\synchronizestrut\currentmargindatastrut
@@ -207,6 +221,7 @@
\edef\currentmargindatawidth{\margindataparameter\c!width}%
\ifx\currentmargindatawidth\empty
\setbox\nextbox\hbox \currentmarginreference \bgroup
+\typo_margins_data_synchronize
\the\everymargindatacontent
\usemargindatastyleandcolor\c!style\c!color
\ifx\currentmargindatastrut\empty \else
@@ -219,8 +234,9 @@
\egroup
\let\currentmarginfirstheight\empty
\else
- \dosetraggedcommand{\margindataparameter\c!align}%
\setbox\nextbox\hbox \currentmarginreference \bgroup
+\typo_margins_data_synchronize
+ \dosetraggedcommand{\margindataparameter\c!align}%
\vtop \bgroup
\the\everymargindatacontent
\usemargindatastyleandcolor\c!style\c!color
@@ -241,7 +257,7 @@
\dostoptagged
\fi
\ifdone
- \anch_positions_initialize % we use positions at the lua end (will become pdf.h/v)
+ \anch_positions_initialize % we use positions at the lua end
\ctxlua{typesetters.margins.save{
location = "\margindataparameter\c!location",
method = "\margindataparameter\c!method",