summaryrefslogtreecommitdiff
path: root/tex
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2012-07-06 19:11:00 +0200
committerHans Hagen <pragma@wxs.nl>2012-07-06 19:11:00 +0200
commitf977ff080f48ca7cbf248b5bb02748f766f0ed2b (patch)
treefcb52d340a1083579681074c8242d465162925aa /tex
parent083ba74a2e7a28ca940b62d37e9e976d26c824d3 (diff)
downloadcontext-f977ff080f48ca7cbf248b5bb02748f766f0ed2b.tar.gz
beta 2012.07.06 19:11
Diffstat (limited to 'tex')
-rw-r--r--tex/context/base/back-ini.mkiv6
-rw-r--r--tex/context/base/back-pdf.mkiv8
-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.pdfbin4142 -> 4143 bytes
-rw-r--r--tex/context/base/context-version.pngbin105888 -> 105423 bytes
-rw-r--r--tex/context/base/context.mkii2
-rw-r--r--tex/context/base/context.mkiv2
-rw-r--r--tex/context/base/core-sys.mkiv36
-rw-r--r--tex/context/base/math-arr.mkiv4
-rw-r--r--tex/context/base/meta-pag.mkiv4
-rw-r--r--tex/context/base/mult-low.lua2
-rw-r--r--tex/context/base/mult-sys.mkiv3
-rw-r--r--tex/context/base/node-res.lua3
-rw-r--r--tex/context/base/pack-rul.mkiv715
-rw-r--r--tex/context/base/page-bck.mkiv289
-rw-r--r--tex/context/base/page-mul.mkiv38
-rw-r--r--tex/context/base/page-sid.mkiv4
-rw-r--r--tex/context/base/scrn-fld.mkvi6
-rw-r--r--tex/context/base/spac-ver.mkiv2
-rw-r--r--tex/context/base/status-files.pdfbin24502 -> 24493 bytes
-rw-r--r--tex/context/base/status-lua.pdfbin182717 -> 182713 bytes
-rw-r--r--tex/context/base/status-mkiv.lua3
-rw-r--r--tex/context/base/strc-mat.mkiv1
-rw-r--r--tex/context/base/strc-ren.mkiv2
-rw-r--r--tex/context/base/supp-vis.mkiv3
-rw-r--r--tex/context/base/syst-aux.mkiv15
-rw-r--r--tex/context/base/syst-ini.mkiv16
-rw-r--r--tex/context/base/trac-vis.mkiv3
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua2
30 files changed, 539 insertions, 634 deletions
diff --git a/tex/context/base/back-ini.mkiv b/tex/context/base/back-ini.mkiv
index 8ece8f6e1..fc8759c14 100644
--- a/tex/context/base/back-ini.mkiv
+++ b/tex/context/base/back-ini.mkiv
@@ -61,13 +61,13 @@
\let \dotransformnextbox\gobblesixarguments % and pass last box
%D \macros
-%D {doovalbox}
+%D {back_ovalbox}
%D
%D When we look at the implementation, this is a complicated
%D one. There are seven arguments.
%D
%D \starttyping
-%D \doovalbox {w} {h} {d} {linewidth} {radius} {stroke} {fill} {variant}
+%D \back_ovalbox {w} {h} {d} {linewidth} {radius} {stroke} {fill} {variant}
%D \stoptyping
%D
%D This command has to return a \type{\vbox} which can be used
@@ -75,7 +75,7 @@
%D degrees, the stroke and fill are~\type{1} (true) of~\type{0}
%D (false).
-\let \doovalbox \gobbleeightarguments
+\let\back_ovalbox \gobbleeightarguments
%D \macros
%D {dostartclipping,dostopclipping}
diff --git a/tex/context/base/back-pdf.mkiv b/tex/context/base/back-pdf.mkiv
index 332d7ea89..5b5781531 100644
--- a/tex/context/base/back-pdf.mkiv
+++ b/tex/context/base/back-pdf.mkiv
@@ -260,7 +260,7 @@
% for the moment here
%D \macros
-%D {doovalbox}
+%D {back_ovalbox}
%D
%D Drawing frames with round corners is inherited from the
%D main module.
@@ -273,7 +273,7 @@
% \def\back_oval_calculate#1#2#3%
% {\PointsToBigPoints{\dimexpr#2+#3\relax}#1}
-\unexpanded\def\doovalbox#1#2#3#4#5#6#7#8%
+\unexpanded\def\back_ovalbox#1#2#3#4#5#6#7#8%
{\forcecolorhack
\bgroup
% \scratchdimen#4%
@@ -303,8 +303,8 @@
\PointsToBigPoints{\dimexpr #2-\scratchdimen}\yymax
\PointsToBigPoints{\dimexpr-#3+\scratchdimen}\yymin
%
- \edef\dostroke{#6}%
- \edef\dofill{#7}%
+ \edef\dostroke{\number#6}%
+ \edef\dofill{\number#7}%
\edef\mode{\number#8 \space}%
% no \ifcase, else \relax in pdfcode
\setbox\scratchbox\hbox
diff --git a/tex/context/base/cont-new.mkii b/tex/context/base/cont-new.mkii
index 1f6c6d8a3..e1a501530 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.07.04 23:48}
+\newcontextversion{2012.07.06 19:11}
%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 d262e6821..185ee6c6f 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.07.04 23:48}
+\newcontextversion{2012.07.06 19:11}
%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 7a28f0951..bd8355785 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 962970781..3e516fa8d 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 af378d0ba..0d017a7ce 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.07.04 23:48}
+\edef\contextversion{2012.07.06 19:11}
%D For those who want to use this:
diff --git a/tex/context/base/context.mkiv b/tex/context/base/context.mkiv
index 29a2432db..05ef64b22 100644
--- a/tex/context/base/context.mkiv
+++ b/tex/context/base/context.mkiv
@@ -25,7 +25,7 @@
%D up and the dependencies are more consistent.
\edef\contextformat {\jobname}
-\edef\contextversion{2012.07.04 23:48}
+\edef\contextversion{2012.07.06 19:11}
%D For those who want to use this:
diff --git a/tex/context/base/core-sys.mkiv b/tex/context/base/core-sys.mkiv
index 66f2a4380..5a92ebf4f 100644
--- a/tex/context/base/core-sys.mkiv
+++ b/tex/context/base/core-sys.mkiv
@@ -150,14 +150,34 @@
%D But anyway, in \MKIV\ we avoid most of the complications anyway as we
%D deal with much at the \LUA\ end.
-\def\complexstart[#1]{\bgroup\getvalue{\e!start#1}}
-\def\complexstop [#1]{\getvalue{\e!stop #1}\egroup}
-
-\let\simplestart\bgroup
-\let\simplestop \egroup
-
-\definecomplexorsimple\start
-\definecomplexorsimple\stop
+\unexpanded\def\start
+ {\dosingleempty\syst_start}
+
+\def\syst_start
+ {\bgroup
+ \iffirstargument
+ \expandafter\syst_start_yes
+ \else
+ \expandafter\syst_start_nop
+ \fi}
+
+\def\syst_start_yes[#1]%
+ {\edef\m_syst_start_stop{#1}%
+ \ifx\m_syst_start_stop\empty
+ \let\syst_stop_indeed\donothing
+ \else\ifcsname\e!start\m_syst_start_stop\endcsname
+ \let\expandafter\syst_stop_indeed\csname\e!stop\m_syst_start_stop\endcsname
+ \csname\e!start\currentstartstop\expandafter\expandafter\expandafter\endcsname
+ \else
+ \let\syst_stop_indeed\donothing
+ \fi\fi}
+
+\def\syst_start_nop[#1]%
+ {\let\syst_stop_indeed\donothing}
+
+\unexpanded\def\stop
+ {\syst_stop_indeed
+ \egroup}
% \c!before \c!after \c!inbetween \c!commands \c!style \c!color
diff --git a/tex/context/base/math-arr.mkiv b/tex/context/base/math-arr.mkiv
index 91bb7889b..ddce05ece 100644
--- a/tex/context/base/math-arr.mkiv
+++ b/tex/context/base/math-arr.mkiv
@@ -98,7 +98,7 @@
\setvalue{\??matharrowsettings\v!big }{\def\m_math_arrows_extra{20}}
\setvalue{\??matharrowsettings\v!normal }{}
\setvalue{\??matharrowsettings }{}
-\setvalue{\??matharrowsettings\s!unknown}{\doifnumberelse\p_mathspacing{\let\m_math_arrows_extra\p_mathspacing}\donothing}
+\setvalue{\??matharrowsettings\s!unknown}{\doifnumberelse\p_math_spacing{\let\m_math_arrows_extra\p_math_spacing}\donothing}
\def\math_arrows_construct#1#2#3#4#5% hm, looks like we do a double mathrel (a bit cleaned up .. needs checking)
{\begingroup
@@ -106,7 +106,7 @@
\def\m_math_arrows_extra {0}%
\edef\p_math_spacing{#1}%
\csname\??matharrowsettings
- \ifcsname\??matharrowsettings\p_mathspacing\endcsname\p_mathspacing\else\s!unknown\fi
+ \ifcsname\??matharrowsettings\p_math_spacing\endcsname\p_math_spacing\else\s!unknown\fi
\endcsname
\mathsurround\zeropoint
\muskip0=\muexpr\m_math_arrows_factor\muexpr\thirdoffourarguments #2\onemuskip\relax+\m_math_arrows_extra\onemuskip+\firstoffourarguments #2\onemuskip\relax
diff --git a/tex/context/base/meta-pag.mkiv b/tex/context/base/meta-pag.mkiv
index 6cea270e3..b9d9fc6ae 100644
--- a/tex/context/base/meta-pag.mkiv
+++ b/tex/context/base/meta-pag.mkiv
@@ -75,8 +75,8 @@
InnerEdgeWidth:=\the\inneredgewidth;
OuterEdgeDistance:=\the\outeredgedistance;
OuterEdgeWidth:=\the\outeredgewidth;
- PageOffset:=\the\pageoffset;
- PageDepth:=\the\pagedepth;
+ PageOffset:=\the\pagebackgroundoffset;
+ PageDepth:=\the\pagebackgrounddepth;
LayoutColumns:=\the\layoutcolumns;
LayoutColumnDistance:=\the\layoutcolumndistance;
LayoutColumnWidth:=\the\layoutcolumnwidth;
diff --git a/tex/context/base/mult-low.lua b/tex/context/base/mult-low.lua
index fbd5d585d..a3d2e8ecb 100644
--- a/tex/context/base/mult-low.lua
+++ b/tex/context/base/mult-low.lua
@@ -204,7 +204,7 @@ return {
--
"removetoks", "appendtoks", "prependtoks", "appendtotoks", "prependtotoks", "to",
--
- "endgraf", "endpar", "everyendpar", "empty", "null", "space", "quad", "enspace", "obeyspaces", "obeylines", "normalspace",
+ "endgraf", "endpar", "everyendpar", "reseteverypar", "finishpar", "empty", "null", "space", "quad", "enspace", "obeyspaces", "obeylines", "normalspace",
--
"executeifdefined",
--
diff --git a/tex/context/base/mult-sys.mkiv b/tex/context/base/mult-sys.mkiv
index fdeff699d..03e7f44e5 100644
--- a/tex/context/base/mult-sys.mkiv
+++ b/tex/context/base/mult-sys.mkiv
@@ -253,6 +253,9 @@
\definesystemconstant {multi}
\definesystemconstant {indeed}
+\def\s!parent{=>} % 1% faster
+\def\s!child {<=} % 1% faster
+
\definesystemconstant {hasnumber}
\definesystemconstant {hastitle}
\definesystemconstant {hascaption}
diff --git a/tex/context/base/node-res.lua b/tex/context/base/node-res.lua
index f68e89954..5b2b32a51 100644
--- a/tex/context/base/node-res.lua
+++ b/tex/context/base/node-res.lua
@@ -230,7 +230,8 @@ function pool.rule(width,height,depth,dir)
if width then n.width = width end
if height then n.height = height end
if depth then n.depth = depth end
- if dir then n.dir = dir end
+-- if dir then n.dir = dir end
+ n.dir = dir or "TLT" -- bug in luatex
return n
end
diff --git a/tex/context/base/pack-rul.mkiv b/tex/context/base/pack-rul.mkiv
index 2803cd518..b757dfdce 100644
--- a/tex/context/base/pack-rul.mkiv
+++ b/tex/context/base/pack-rul.mkiv
@@ -13,35 +13,27 @@
\writestatus{loading}{ConTeXt Packaging Macros / Ruled Content}
-%D The code here is expanded lots of time as framed is used in
-%D many places. This is why the code here is (and gets) optimized
-%D as much as possible. Also, by avoiding packaging and expansion
-%D we also keep tracing reasonable. For instance, multiple stacked
-%D backgrounds can slow down a run if not optimized this way.
-
-% eventually this will use the commandhandler code (same trick as
-% with itemize)
+%D The code here is expanded lots of time as framed is used in many places. This is
+%D why the code here is (and gets) optimized as much as possible. Also, by avoiding
+%D packaging and expansion we also keep tracing reasonable. For instance, multiple
+%D stacked backgrounds can slow down a run if not optimized this way.
\registerctxluafile{pack-rul}{1.001}
\unprotect
-\definesystemvariable {fc} % FramedContent
-\definesystemvariable {od} % Omlijnd Defaults (simple) -> check page-bck too
\definesystemvariable {ol} % OmLijnd -> check scrn-fld too
%D \macros
%D {linewidth, setuplinewidth}
%D
-%D This module deals with rules (lines) in several ways. First
-%D we introduce two macros that can be used to set some common
-%D characteristics.
+%D This module deals with rules (lines) in several ways. First we introduce two
+%D macros that can be used to set some common characteristics.
%D
%D \showsetup{setuplinewidth}
%D
-%D The linewidth is available in \type{\linewidth}. The
-%D preset value of .4pt equals the default hard coded \TEX\
-%D rule width.
+%D The linewidth is available in \type{\linewidth}. The preset value of .4pt equals
+%D the default hard coded \TEX\ rule width.
\newdimen\linewidth
@@ -67,7 +59,7 @@
\to \everysetupscreens
\setupscreens
- [\c!screen=0.90] % was 0.95 but that's hardly visible
+ [\c!screen=.90] % was .95 but that's hardly visible
%D The parameter handler:
@@ -77,41 +69,26 @@
\installcorenamespace{framedleft}
\installcorenamespace{framedright}
-\let\currentframed\s!unknown % brrr must have a value
-
-% \def\framedparameter #1{\csname\doframedparameter\currentframed{#1}\endcsname}
-% \def\framedparameterhash#1{\doframedparameterhash \currentframed#1}
+\installcorenamespace{regularframed}
+\installcorenamespace{simplifiedframed}
-\def\framedparameter #1{\csname\ifcsname\currentframed#1\endcsname\currentframed#1\else\expandafter\doframedparentparameter\csname\currentframed\s!parent\endcsname{#1}\fi\endcsname}
-\def\framedparameterhash#1{\ifcsname\currentframed#1\endcsname\currentframed\else\expandafter\doframedparentparameterhash\csname\currentframed\s!parent\endcsname#1\fi}
+\installcommandhandler \??framed {framed} \??framed
-\def\doframedparameter #1#2{\ifcsname#1#2\endcsname#1#2\else\expandafter\doframedparentparameter \csname#1\s!parent\endcsname{#2}\fi}
-\def\doframedparameterhash#1#2{\ifcsname#1#2\endcsname #1\else\expandafter\doframedparentparameterhash\csname#1\s!parent\endcsname#2\fi}
+\let\pack_framed_framedparameter \framedparameter
+\let\pack_framed_framedparameterhash\framedparameterhash
+\let\pack_framed_setupcurrentframed \setupcurrentframed
-\def\doframedparentparameter #1#2{\ifx#1\relax\s!empty\else\doframedparameter #1{#2}\fi}
-\def\doframedparentparameterhash#1#2{\ifx#1\relax \else\doframedparameterhash#1#2\fi}
+\def\pack_framed_initialize
+ {\let\framedparameter \pack_framed_framedparameter
+ \let\framedparameterhash\pack_framed_framedparameterhash
+ \let\setupcurrentframed \pack_framed_setupcurrentframed
+ \inframedtrue}
-\def\doframedparentparameter#1#2{\ifx#1\relax\doframedrootparameter#2\else\doframedparameter#1{#2}\fi}
-\def\doframedrootparameter #1{\ifcsname\??framed#1\endcsname\??framed#1\else\s!empty\fi}
-
-\def\useframedstyleandcolor#1#2% style color
- {\edef\currentstyleparameter{\framedparameter#1}%
- \edef\currentcolorparameter{\framedparameter#2}%
- \ifx\currentstyleparameter\empty\else\dousestyleparameter\currentstyleparameter\fi
- \ifx\currentcolorparameter\empty\else\dousecolorparameter\currentcolorparameter\fi}
+%D A helper:
\def\frameddimension#1{\the\dimexpr\framedparameter{#1}\relax}
-% \unexpanded\def\installsomebackground#1#2{\inheritlocalframed[\??ma#1#2][\??od]}
-
-\let\normalframedparameter \framedparameter
-\let\normalframedparameterhash\framedparameterhash
-
-\def\pack_framed_initialize#1% will be inlined
- {\inframedtrue
- \edef\currentframed{#1}%
- \let\framedparameter \normalframedparameter
- \let\framedparameterhash\normalframedparameterhash}
+%D Inheritance:
\def\installinheritedframed#1%
{\normalexpanded{\doinstallinheritedframed
@@ -120,20 +97,22 @@
\expandafter\noexpand\csname #1parameterhash\endcsname
\expandafter\noexpand\csname do#1parameter\endcsname
\expandafter\noexpand\csname do#1parentparameter\endcsname
- \expandafter\noexpand\csname do#1rootparameter\endcsname
+ \expandafter\noexpand\csname root#1parameter\endcsname
+ \expandafter\noexpand\csname setupcurrent#1\endcsname
\expandafter\noexpand\csname inherited#1framed\endcsname
\noexpand\??framed}} % if needed we can have a variant
-\unexpanded\def\doinstallinheritedframed#1#2#3#4#5#6#7#8%
- {\def#5##1##2{\ifx##1\relax#6{##2}\else#4##1{##2}\fi}%
- \def#6##1{\ifcsname#8##1\endcsname#8##1\else\s!empty\fi}%
- \unexpanded\def#7%
+\unexpanded\def\doinstallinheritedframed#1#2#3#4#5#6#7#8#9%
+ {\def#5##1##2{\ifx##1\relax#6{##2}\else#4{##1}{##2}\fi}%
+ \def#6##1{\ifcsname#9:##1\endcsname#9:##1\else\s!empty\fi}% root
+ \unexpanded\def#8%
{\bgroup
\bgroup
\inframedtrue
- \let\currentframed #1% not used (more for tracing)
+ \let\currentframed #1%
\let\framedparameter #2%
\let\framedparameterhash#3%
+ \let\setupcurrentframed #7%
\pack_framed_process_indeed}}
\unexpanded\def\installframedcommandhandler#1#2#3%
@@ -150,12 +129,11 @@
% for regular framed
-\getparameters
- [\??framed]
+\setupframed
[\c!width=\v!fit,
\c!height=\v!broad,
%\c!lines=,
- \c!offset=0.25ex, % \defaultframeoffset
+ \c!offset=.25ex, % \defaultframeoffset
\c!empty=\v!no,
\c!frame=\v!on,
%\c!topframe=,
@@ -170,11 +148,12 @@
%\c!foregroundstyle=,
%\c!background=,
%\c!backgroundscreen=,
+ \c!backgroundscreen=\defaultbackgroundscreen,
%\c!backgroundcolor=,
\c!backgroundoffset=\zeropoint,
%\c!framecolor=,
\c!frameoffset=\zeropoint,
- \c!backgroundcorner=\framedparameter\c!corner,
+ \c!backgroundcorner=\framedparameter\c!corner, % use \p_ here
\c!backgroundradius=\framedparameter\c!radius,
\c!backgrounddepth=\framedparameter\c!depth,
\c!framecorner=\framedparameter\c!corner,
@@ -196,21 +175,21 @@
\c!toffset=\zeropoint,
\c!boffset=\zeropoint]
-% for backgrounds
+%D For backgrounds and such:
-\getparameters
- [\??od] % for fast version
+\defineframed
+ [\??simplifiedframed]
[\c!frame=\v!off,
\c!depth=\zeropoint,
\c!offset=\v!overlay,
- %\c!component=,
- %\c!region=,
+ \c!component=,
+ \c!region=,
\c!radius=.5\bodyfontsize,
\c!rulethickness=\linewidth,
\c!corner=\v!rectangular,
\c!backgroundoffset=\zeropoint,
\c!frameoffset=\zeropoint,
- \c!backgroundcorner=\framedparameter\c!corner,
+ \c!backgroundcorner=\framedparameter\c!corner, % use \p_ here
\c!backgroundradius=\framedparameter\c!radius,
\c!backgrounddepth=\framedparameter\c!depth,
\c!framecorner=\framedparameter\c!corner,
@@ -222,8 +201,14 @@
\c!toffset=\zeropoint,
\c!boffset=\zeropoint]
-%D We will communicate through module specific variables, current
-%D framed parameters and some reserved dimension registers.
+\unexpanded\def\definesimplifiedframed[#1]% no settings
+ {\defineframed[#1][\??simplifiedframed]%
+ \expandafter\let\csname#1\endcsname\undefined}
+
+\expandafter\let\csname\??simplifiedframed\endcsname\undefined
+
+%D We will communicate through module specific variables, current framed
+%D parameters and some reserved dimension registers.
\newdimen\d_framed_target_wd
\newdimen\d_framed_target_ht
@@ -281,16 +266,10 @@
\fi}
\def\pack_framed_filled_box_round
- {\normalexpanded{\doovalbox
- {\the\d_framed_target_wd}%
- {\the\d_framed_target_ht}%
- {\the\d_framed_target_dp}%
- {\the\dimexpr\d_framed_linewidth\relax}%
- {\the\dimexpr\p_framed_backgroundradius\relax}%
- {0}%
- {1}%
- {\ifx\p_framed_backgroundcorner\v!round0\else\number\p_framed_backgroundcorner\fi}%
- }}
+ {\back_ovalbox
+ \d_framed_target_wd \d_framed_target_ht \d_framed_target_dp
+ \d_framed_linewidth \p_framed_backgroundradius
+ \zerocount \plusone {\ifx\p_framed_backgroundcorner\v!round0\else\number\p_framed_backgroundcorner\fi}}
\def\pack_framed_stroked_box
{\edef\p_framed_framecorner{\framedparameter\c!framecorner}%
@@ -313,16 +292,10 @@
% \pack_framed_stroked_box_normal % later
\def\pack_framed_stroked_box_round
- {\normalexpanded{\doovalbox
- {\the\d_framed_target_wd}%
- {\the\d_framed_target_ht}%
- {\the\d_framed_target_dp}%
- {\the\dimexpr\d_framed_linewidth\relax}%
- {\the\dimexpr\p_framed_frameradius\relax}%
- {1}%
- {0}%
- {\ifx\p_framed_framecorner\v!round0\else\number\p_framed_framecorner\fi}%
- }}
+ {\back_ovalbox
+ \d_framed_target_wd \d_framed_target_ht \d_framed_target_dp
+ \d_framed_linewidth \p_framed_frameradius
+ \plusone \zerocount {\ifx\p_framed_framecorner\v!round0\else\number\p_framed_framecorner\fi}}
% a lot of weird corners
%
@@ -382,8 +355,8 @@
\def\pack_framed_background_box_gray_indeed % can be more direct but who cares, just compatibility
{\colored[s=\p_framed_backgroundscreen]{\pack_framed_filled_box}}
-%D It won't be a surprise that we not only provide gray boxes,
-%D but also colored ones. Here it is:
+%D It won't be a surprise that we not only provide gray boxes, but also colored
+%D ones. Here it is:
\def\pack_framed_background_box_color
{\edef\p_framed_backgroundcolor{\framedparameter\c!backgroundcolor}%
@@ -399,10 +372,9 @@
%D overlaywidth, overlayheight, overlaydepth,
%D overlaycolor, overlaylinecolor, overlaylinewidth}
%D
-%D Before we define the macro that actually takes card of the
-%D backgrounds, we introduce overlays. An overlay is something
-%D that contrary to its name lays {\em under} the text. An
-%D example of an overlay definition is:
+%D Before we define the macro that actually takes card of the backgrounds, we
+%D introduce overlays. An overlay is something that contrary to its name lays {\em
+%D under} the text. An example of an overlay definition is:
%D
%D \startbuffer[tmp-1]
%D \defineoverlay
@@ -432,17 +404,16 @@
%D
%D \showsetup{defineoverlay}
%D
-%D This macro's definition is a bit obscure, due the many
-%D non||used arguments and the two step call that enable the
-%D setting of the width, height and depth variables.
-%D Multiple backgrounds are possible and are specified as:
+%D This macro's definition is a bit obscure, due the many non||used arguments and
+%D the two step call that enable the setting of the width, height and depth
+%D variables. Multiple backgrounds are possible and are specified as:
%D
%D \starttyping
%D \framed[background={one,two,three}]{Three backgrounds!}
%D \stoptyping
%D
-%D Most drawing packages only know width and height. Therefore
-%D the dimensions have a slightly different meaning here:
+%D Most drawing packages only know width and height. Therefore the dimensions have a
+%D slightly different meaning here:
%D
%D \startitemize[packed]
%D \item \type{\overlaywidth }: width of the overlay
@@ -464,9 +435,8 @@
\newtoks\everyoverlay
-%D An example of an initialization is the following (overlays
-%D can contain text and be executed under an regime where
-%D interlineskip is off).
+%D An example of an initialization is the following (overlays can contain text
+%D and be executed under an regime where interlineskip is off).
\installcorenamespace{overlay}
\installcorenamespace{overlaybuiltin}
@@ -527,8 +497,8 @@
\expandafter\secondoftwoarguments
\fi}
-%D The content of the box will be (temporary) saved in a box. We
-%D also have an extra box for backgrounds.
+%D The content of the box will be (temporary) saved in a box. We also have an
+%D extra box for backgrounds.
\newbox\b_framed_normal
\newbox\b_framed_extra
@@ -584,8 +554,8 @@
\expandafter\pack_framed_process_backgrounds
\fi#2}
-% beware, a backgroundbox can be empty which is another reason
-% why we set the width to zero instead of back-skipping
+%D Beware, a backgroundbox can be empty which is another reason why we set the
+%D width to zero instead of back-skipping.
\newdimen\framedbackgroundwidth
\newdimen\framedbackgroundheight
@@ -624,8 +594,7 @@
\egroup}}
\def\pack_framed_overlay_initialize_indeed
- {%\writestatus{!!!!}{<<<<<}%
- \edef\overlaywidth {\the\d_framed_target_wd\space}%
+ {\edef\overlaywidth {\the\d_framed_target_wd\space}%
\edef\overlayheight {\the\dimexpr\d_framed_target_ht+\d_framed_target_dp\relax\space}%
\edef\overlaydepth {\the\d_framed_target_dp\space}%
\edef\overlaycolor {\framedparameter\c!backgroundcolor}% let ?
@@ -636,8 +605,8 @@
\edef\overlayoffset {\the\framedbackgroundoffset\space}% \backgroundoffset % we steal this one
\let\pack_framed_overlay_initialize\relax}
-%D One can explictly insert the foreground box. For that
-%D purpose we introduce the overlay \type {foreground}.
+%D One can explictly insert the foreground box. For that purpose we introduce the
+%D overlay \type {foreground}.
%D
%D We predefine two already familiar backgrounds:
@@ -645,14 +614,13 @@
\letvalue{\??overlaybuiltin\v!color }\pack_framed_background_box_color
\letvalue{\??overlaybuiltin\v!foreground}\pack_framed_background_box_content % replaces: \defineoverlay[\v!foreground][\foregroundbox]
-%D We can specify overlays as a comma separated list of
-%D overlays, a sometimes handy feature.
-
-%D Besides backgrounds (overlays) we also need some macros to
-%D draw outlines (ruled borders). Again we have to deal with
-%D square and round corners. The first category can be handled
-%D by \TEX\ itself, the latter one depends on the driver. This
-%D macro also support a negative offset.
+%D We can specify overlays as a comma separated list of overlays, a sometimes
+%D handy feature.
+%D
+%D Besides backgrounds (overlays) we also need some macros to draw outlines (ruled
+%D borders). Again we have to deal with square and round corners. The first category
+%D can be handled by \TEX\ itself, the latter one depends on the driver. This macro
+%D also support a negative offset.
\def\pack_framed_add_outline
{\setbox\b_framed_normal\hbox % rules on top of box
@@ -756,11 +724,10 @@
% frame=off,rightframe=small,leftframe=small,topframe=small,bottomframe=on]
% {}
-%D The next few macros are probably the most misused ones in
-%D \CONTEXT. They deal with putting rules around boxes, provide
-%D backgrounds, offer alignment features, and some more. We
-%D start with defining some booleans. These give an impression
-%D of what we are going to take into account.
+%D The next few macros are probably the most misused ones in \CONTEXT. They deal
+%D with putting rules around boxes, provide backgrounds, offer alignment features,
+%D and some more. We start with defining some booleans. These give an impression of
+%D what we are going to take into account.
% todo : \c_framed_hasoffset
% faster : \let\c_framed_hasoffset\falseconditional
@@ -778,67 +745,72 @@
%D \macros
%D {framed, setupframed}
%D
-%D Ruled boxes are typeset using \type{\framed}. This command
-%D is quite versatile and, although some users will probably
-%D seldom use it, one cannot overlook its features.
+%D Ruled boxes are typeset using \type{\framed}. This command is quite versatile
+%D and, although some users will probably seldom use it, one cannot overlook its
+%D features.
%D
-%D \showsetup{setupframed}
-%D \showsetup{framed}
+%D \showsetup{setupframed}
+%D \showsetup{framed}
%D
-%D This general macro is a special version of an even more
-%D general case, that can easily be linked into other macros
-%D that need some kind of framing. The local version is called
-%D with an extra parameter: the variable identifier. The reason
-%D for passing this identifier between brackets lays in the
-%D mere fact that this way we can use the optional argument
-%D grabbers.
+%D This general macro is a special version of an even more general case, that can
+%D easily be linked into other macros that need some kind of framing. The local
+%D version is called with an extra parameter: the variable identifier. The reason
+%D for passing this identifier between brackets lays in the mere fact that this way
+%D we can use the optional argument grabbers.
\def\defaultframeoffset{.25ex}
-\def\presetlocalframed [#1]{\letvalue {#1\s!parent}\??framed}
-\def\inheritlocalframed[#1]#2[#3]{\setevalue{#1\s!parent}{#3}}
+\installcorenamespace{regularframedlevel}
+
+\unexpanded\def\installregularframed#1%
+ {\defineframed[#1]}
+
+\unexpanded\def\presetlocalframed[#1]%
+ {\defineframed[#1]}
-\presetlocalframed[\??ol]
+% \presetlocalframed[\??framed]
-\newcount\framednesting
+\newcount\c_pack_framed_nesting
+
+\unexpanded\def\pack_framed_process_framed[#1]%
+ {\bgroup
+ \iffirstargument % faster
+ \setupcurrentframed[#1]% here !
+ \fi
+ \pack_framed_process_indeed}
\unexpanded\def\framed
{\bgroup
- \advance\framednesting\plusone
- \expandafter\let\csname\??ol:\the\framednesting\s!parent\endcsname\??ol
- \dodoubleempty\pack_framed_process[\??ol:\the\framednesting]}
+ \advance\c_pack_framed_nesting\plusone
+ \expandafter\let\csname\??framed>\the\c_pack_framed_nesting:\s!parent\endcsname\??framed
+ \edef\currentframed{>\the\c_pack_framed_nesting}%
+ \pack_framed_initialize
+ \dosingleempty\pack_framed_process_framed}
\unexpanded\def\startframed
{\dosingleempty\pack_framed_start_framed}
\def\pack_framed_start_framed[#1]%
{\bgroup
- \advance\framednesting\plusone
- \expandafter\let\csname\??ol:\the\framednesting\s!parent\endcsname\??ol
+ \advance\c_pack_framed_nesting\plusone
+ \expandafter\let\csname\??framed>\the\c_pack_framed_nesting:\s!parent\endcsname\??framed
\iffirstargument\secondargumenttrue\fi % dirty trick
- \pack_framed_process[\??ol:\the\framednesting][#1]%
+ \edef\currentframed{>\the\c_pack_framed_nesting}%
+ \pack_framed_initialize
+ \pack_framed_process_framed[#1]% can be inlined
\bgroup}
\let\stopframed\egroup
-\unexpanded\def\setupframed
- {\dodoubleempty\dosetupframed}
-
-\unexpanded\def\normalframedwithsettings
+\unexpanded\def\normalframedwithsettings[#1]%
{\bgroup
- \advance\framednesting\plusone
- \expandafter\let\csname\??ol:\the\framednesting\s!parent\endcsname\??ol
- \pack_framed_process[\??ol:\the\framednesting]}
-
-% we can consider setting the parent of the regular framed to
-% something else in the otr so that we isolate it there
-
-\def\dosetupframed[#1][#2]%
- {\ifsecondargument
- \getparameters[\??ol#1][#2]%
- \else
- \getparameters[\??ol][#1]%
- \fi}
+ \advance\c_pack_framed_nesting\plusone
+ \expandafter\let\csname\??framed>\the\c_pack_framed_nesting:\s!parent\endcsname\??framed
+ \bgroup
+ \edef\currentframed{>\the\c_pack_framed_nesting}%
+ \pack_framed_initialize
+ \setupcurrentframed[#1]%
+ \pack_framed_process_indeed}
%D \startbuffer
%D \setupframed [framecolor=yellow] \framed{A}
@@ -858,13 +830,11 @@
%D \macros
%D {ifinframed}
%D
-%D The normal case first presets all parameters and next starts
-%D looking for the user supplied ones. The first step is
-%D omitted in the local case, because these are preset at
-%D declaration time and keep their values unless explictly
-%D changed. By presetting the variables everytime the normal
-%D command is called, we can use this command nested, without
-%D the unwanted side effect of inheritance. The boolean is
+%D The normal case first presets all parameters and next starts looking for the user
+%D supplied ones. The first step is omitted in the local case, because these are
+%D preset at declaration time and keep their values unless explictly changed. By
+%D presetting the variables everytime the normal command is called, we can use this
+%D command nested, without the unwanted side effect of inheritance. The boolean is
%D used to speed up the color stack.
\newif\ifinframed
@@ -874,7 +844,8 @@
\unexpanded\def\fastlocalframed[#1]#2[#3]#4% 3-4
{\bgroup
- \pack_framed_initialize{#1}%
+ \edef\currentframed{#1}%
+ \pack_framed_initialize
\setbox\b_framed_normal\hbox{#4}%
\edef\p_framed_region{\framedparameter\c!region}%
\ifx\p_framed_region\v!yes % maybe later named
@@ -909,12 +880,13 @@
\box\b_framed_normal
\egroup}
-%D The next macro uses a box and takes its natural width and
-%D height so these can better be correct.
+%D The next macro uses a box and takes its natural width and height so these
+%D can better be correct.
-\def\localbackgroundframed#1#2#3% namespace component box
+\unexpanded\def\localbackgroundframed#1#2#3% namespace component box
{\bgroup
- \pack_framed_initialize{#1}%
+ \edef\currentframed{#1}%
+ \pack_framed_initialize
\setbox\b_framed_normal\box#3%
\edef\p_framed_region{\framedparameter\c!region}%
\ifx\p_framed_region\v!yes % maybe later named
@@ -967,27 +939,30 @@
\unexpanded\def\localframed
{\bgroup
- \dodoubleempty\pack_framed_process}
+ \dodoubleempty\pack_framed_local}
-\unexpanded\def\pack_framed_process[#1][#2]% assumes a \dodoubleempty (slows down), also should have leading \bgroup
+\unexpanded\def\localframed[#1][#2]%
{\bgroup
- \pack_framed_initialize{#1}%
+ \edef\currentframed{#1}%
+ \pack_framed_initialize
\ifsecondargument % faster
- \getparameters[\currentframed][#2]% here !
+ \setupcurrentframed[#2]% here !
\fi
\pack_framed_process_indeed}
\unexpanded\def\directlocalframed[#1]% no optional
{\bgroup
\bgroup
- \pack_framed_initialize{#1}%
+ \edef\currentframed{#1}%
+ \pack_framed_initialize
\pack_framed_process_indeed}
\unexpanded\def\localframedwithsettings[#1][#2]% no checking (so no spaces between)
{\bgroup
\bgroup
- \pack_framed_initialize{#1}%
- \getparameters[\currentframed][#2]% here !
+ \edef\currentframed{#1}%
+ \pack_framed_initialize
+ \setupcurrentframed[#2]% here !
\pack_framed_process_indeed}
% done
@@ -1316,11 +1291,10 @@
\def\pack_framed_do_top {\raggedtopcommand\framedparameter\c!top}
\def\pack_framed_do_bottom{\framedparameter\c!bottom\raggedbottomcommand}
-%D Carefull analysis of this macro will learn us that not all
-%D branches in the last conditionals can be encountered, that
-%D is, some assignments to \type{\next} will never occur.
-%D Nevertheless we implement the whole scheme, if not for
-%D future extensions.
+%D Carefull analysis of this macro will learn us that not all branches in the last
+%D conditionals can be encountered, that is, some assignments to \type{\next} will
+%D never occur. Nevertheless we implement the whole scheme, if not for future
+%D extensions.
%D \macros
%D {doassigncheckedframeoffset}
@@ -1342,11 +1316,10 @@
%D \macros
%D {ifreshapeframebox}
%D
-%D The last few lines tell what to do after the content of the
-%D box is collected and passed to the next macro. In the case
-%D of a fixed width and centered alignment, the content is
-%D evaluated and used to determine the most natural width. The
-%D rest of the code deals with backgrounds and frames.
+%D The last few lines tell what to do after the content of the box is collected and
+%D passed to the next macro. In the case of a fixed width and centered alignment,
+%D the content is evaluated and used to determine the most natural width. The rest
+%D of the code deals with backgrounds and frames.
\newif\ifreshapeframebox \reshapeframeboxtrue
@@ -1659,9 +1632,9 @@
\def\pack_framed_stop_orientation_even
{\setbox\b_framed_normal\hbox{\dorotatebox\p_framed_orientation\hbox{\box\b_framed_normal}}}
-%D The last conditional takes care of the special situation of
-%D in||line \inframed[height=3cm]{framed} boxes. Such boxes have
-%D to be \inframed{aligned} with the running text.
+%D The last conditional takes care of the special situation of in||line \inframed
+%D [height=3cm] {framed} boxes. Such boxes have to be \inframed {aligned} with the
+%D running text.
\unexpanded\def\inframed
{\dosingleempty\pack_framed_inline}
@@ -1674,15 +1647,14 @@
\def\pack_framed_inline[%
{\framed[\c!location=\v!low,}
-%D When we set \type{empty} to \type{yes}, we get
-%D ourselves a frame and/or background, but no content, so
-%D actually we have a sort of phantom framed box.
+%D When we set \type{empty} to \type{yes}, we get ourselves a frame and/or background,
+%D but no content, so actually we have a sort of phantom framed box.
%D \macros
%D {mframed, minframed}
%D
-%D When Tobias asked how to frame mathematical elements in
-%D formulas, Taco's posted the next macro:
+%D When Tobias asked how to frame mathematical elements in formulas, Taco's posted the
+%D next macro:
%D
%D \starttyping
%D \def\mframed#1%
@@ -1694,9 +1666,8 @@
%D \fi}
%D \stoptyping
%D
-%D Because \type {\ifinner} does not (always) reports what
-%D one would expect, we move the test to the outer level. We
-%D also want to pass arguments,
+%D Because \type {\ifinner} does not (always) reports what one would expect, we move the
+%D test to the outer level. We also want to pass arguments,
%D
%D \starttyping
%D \def\mframed%
@@ -1715,8 +1686,8 @@
%D \fi}
%D \stoptyping
%D
-%D Still better is the next alternative, if only because it
-%D takes care of setting the super- and subscripts styles
+%D Still better is the next alternative, if only because it takes care of setting the super-
+%D and subscripts styles
\newcount\c_framed_mstyle
@@ -1726,22 +1697,6 @@
\vphantom{(}%
\Ustopmath}
-% \unexpanded\def\mframed {\dosingleempty\pack_framed_math_display}
-% \unexpanded\def\inmframed{\dosingleempty\pack_framed_math_inline }
-%
-% \def\pack_framed_math_inline[#1]#2%
-% {\begingroup
-% \c_framed_mstyle\mathstyle
-% \inframed[#1]{\Ustartmath\triggermathstyle\c_framed_mstyle#2\Ustopmath}%
-% \endgroup}
-%
-% \def\pack_framed_math_display[#1]#2%
-% {\begingroup
-% \c_framed_mstyle\mathstyle
-% \let\normalstrut\pack_framed_math_strut
-% \framed[#1]{\Ustartmath\triggermathstyle\c_framed_mstyle#2\Ustopmath}%
-% \endgroup}
-
\installcorenamespace{mathframed}
\installframedcommandhandler \??mathframed {mathframed} \??mathframed
@@ -1767,8 +1722,7 @@
\definemathframed[mframed]
\definemathframed[inmframed][\c!location=\v!low]
-%D So instead of the rather versatile \type {\framed}, we ue
-%D the \type {\mframed}.
+%D So instead of the rather versatile \type {\framed}, we use \type {\mframed}:
%D
%D \startbuffer
%D \startformula
@@ -1789,11 +1743,9 @@
%D
%D \typebuffer \getbuffer
%D
-%D As usual, one can specify in what way the text should be
-%D framed. One should be aware of the fact that, inorder to
-%D preserve the proper spacing, the \type {offset} is set to
-%D \type {overlay} and \type {frameoffset} is used used
-%D instead.
+%D As usual, one can specify in what way the text should be framed. One should be
+%D aware of the fact that, inorder to preserve the proper spacing, the \type
+%D {offset} is set to \type {overlay} and \type {frameoffset} is used used instead.
%D
%D \startbuffer
%D \startformula
@@ -1803,13 +1755,11 @@
%D
%D \typebuffer \getbuffer
%D
-%D For inline use, we also provide the \type {\inmframed}
-%D alternative: we want $x \times \inmframed{y}$ in inline
-%D math, right?
+%D For inline use, we also provide the \type {\inmframed} alternative: we want $x
+%D \times \inmframed{y}$ in inline math, right?
-%D This previous framing macros needs a lot of alternatives for
-%D putting rules around boxes, inserting offsets and aligning
-%D text. Each step is handled by separate macros.
+%D This previous framing macros needs a lot of alternatives for putting rules around
+%D boxes, inserting offsets and aligning text. Each step is handled by separate macros.
\newdimen\d_framed_applied_offset
\newdimen\d_framed_loffset
@@ -1849,8 +1799,8 @@
\hbox{\kern\d_framed_applied_offset\box\b_framed_normal\kern\d_framed_applied_offset}%
\kern\d_framed_applied_offset}}
-%D Let's hope that the next few examples show us enough of
-%D what needs to be done by the auxiliary macros.
+%D Let's hope that the next few examples show us enough of what needs to be
+%D done by the auxiliary macros.
%D
%D \startbuffer
%D \framed[height=1cm,offset=.5cm] {rule based learning}
@@ -1904,25 +1854,21 @@
%D \hbox{\dontcomplain\getbuffer}
%D \stoplinecorrection
%D
-%D So now we're ready for the complicated stuff. We distinguish
-%D between borders with straight lines and those with round
-%D corners. When using the first alternative it is possible to
-%D turn off one or more lines. More fancy shapes are also
-%D possible by specifying dedicated backgrounds. Turning lines
-%D on and off is implemented as efficient as possible and as a
-%D result is interface language dependant. This next
-%D implementation evolved from simpler ones. It puts for
-%D instance the rules on top of the content and provides
-%D additional offset capabilities. The lot of calls to other
-%D macros makes this mechanism not that easy to comprehend.
-
-%D We handle left, right or middle alignment as well as fixed
-%D or free widths and heights. Each combination gets its own
-%D macro.
-
-%D The following code handles one-liners: \type{align={line,flushright}}.
-%D Beware, since we entered a group and either or not grab the next
-%D bgroup token, we need to finish the group in the oneliner mode.
+%D So now we're ready for the complicated stuff. We distinguish between borders with
+%D straight lines and those with round corners. When using the first alternative it
+%D is possible to turn off one or more lines. More fancy shapes are also possible by
+%D specifying dedicated backgrounds. Turning lines on and off is implemented as
+%D efficient as possible and as a result is interface language dependant. This next
+%D implementation evolved from simpler ones. It puts for instance the rules on top
+%D of the content and provides additional offset capabilities. The lot of calls to
+%D other macros makes this mechanism not that easy to comprehend.
+%D
+%D We handle left, right or middle alignment as well as fixed or free widths and
+%D heights. Each combination gets its own macro.
+%D
+%D The following code handles one-liners: \type {align={line,flushright}}. Beware,
+%D since we entered a group and either or not grab the next bgroup token, we need to
+%D finish the group in the oneliner mode.
\ifdefined\raggedonelinerstate \else \newconditional\raggedonelinerstate \fi
@@ -2102,11 +2048,10 @@
\localstrut
\doformatonelinerbox}
-%D On the next page we show some examples of how these macros
-%D come into action. The examples show us how
-%D \type {fit}, \type {broad} dimensions influence the
-%D formatting. Watch the visualized struts. \footnote {Here we
-%D used \type {\showstruts}.}
+%D On the next page we show some examples of how these macros come into action. The
+%D examples show us how \type {fit}, \type {broad} dimensions influence the
+%D formatting. Watch the visualized struts. \footnote {Here we used \type
+%D {\showstruts}.}
%D
%D \startpostponing
%D \bgroup
@@ -2161,9 +2106,8 @@
%D \macros
%D {framednoflines, framedlastlength}
%D
-%D It is possible to let the frame macro calculate the width
-%D of a centered box automatically (\type {fit}). When
-%D doing so, we need to reshape the box:
+%D It is possible to let the frame macro calculate the width of a centered box
+%D automatically (\type {fit}). When doing so, we need to reshape the box:
\newcount\framednoflines
\newdimen\framedfirstheight
@@ -2195,13 +2139,12 @@
% \startformula \startalign \NC \int_01 \NC B \NR \intertext{test} \NC \int_01 \NC D \NR \stopalign \stopformula
% \stopTEXpage
-%D The examples on the next page show how one can give the
-%D frame as well as the background an additional offset and
-%D even a bit more depth. The blue outline is the frame, the
-%D red box is the background and the small black outline is the
-%D visualization of the resulting box, that is, we applied
-%D \type{\ruledhbox} to the result.
-
+%D The examples on the next page show how one can give the frame as well as the
+%D background an additional offset and even a bit more depth. The blue outline is
+%D the frame, the red box is the background and the small black outline is the
+%D visualization of the resulting box, that is, we applied \type {\ruledhbox} to
+%D the result.
+%D
%D \startpostponing
%D \bgroup
%D \unprotect
@@ -2251,9 +2194,8 @@
%D \egroup
%D \stoppostponing
-%D We can draw lines from left to right and top to bottom by
-%D using the normal \type{\hairline} command. Both directions
-%D need a different treatment.
+%D We can draw lines from left to right and top to bottom by using the normal \type
+%D {\hairline} command. Both directions need a different treatment.
%D
%D \startbuffer
%D \framed[width=4cm] {alfa\hairline beta\hairline gamma}
@@ -2267,26 +2209,8 @@
%D \hbox{\getbuffer}
%D \stoplinecorrection
%D
-%D These macros try to adapt their behaviour as good as
-%D possible to the circumstances and act as natural as
-%D possible.
-
-% \unexpanded\def\pack_framed_vboxed_hairline
-% {\bgroup
-% \dimen2=\ifconditional\c_framed_has_offset \localoffset \else \zeropoint \fi
-% \dimen4=\dimexpr\dimen2+\d_framed_linewidth\relax
-% \setbox0\vbox
-% {\advance\hsize 2\dimen4
-% \vskip\dimen2
-% \hrule
-% \!!height\d_framed_linewidth
-% \!!depth\zeropoint
-% \!!width\hsize
-% \vskip\dimen2}%
-% \endgraf\obeydepth\nointerlineskip
-% \moveleft\dimen4\box0
-% \endgraf\nointerlineskip\localbegstrut % beware, we might kill it in a style using \vskip\lineheight
-% \egroup} % so this must not be changed
+%D These macros try to adapt their behaviour as good as possible to the circumstances
+%D and act as natural as possible.
\unexpanded\def\pack_framed_vboxed_hairline % nasty overlay mess .. needed for autowidth
{\begingroup
@@ -2312,32 +2236,29 @@
\localbegstrut
\endgroup}
-% todo:
-
\unexpanded\def\pack_framed_hboxed_hairline % use framed dimen
{\bgroup
- \dimen2=\ifconditional\c_framed_has_offset \localoffset \else \zeropoint \fi
+ \scratchoffset\ifconditional\c_framed_has_offset \localoffset \else \zeropoint \fi
\ifconditional\c_framed_has_height
- \dimen4\dimexpr\localheight/2+\strutdp-2\d_framed_linewidth\relax
- \dimen6\dimexpr\localheight/2-\strutdp+2\d_framed_linewidth\relax
+ \dimen\scratchheight\dimexpr\localheight/\plustwo+\strutdp-\plustwo\d_framed_linewidth\relax
+ \dimen\scratchdepth \dimexpr\localheight/\plustwo-\strutdp+\plustwo\d_framed_linewidth\relax
\else
- \dimen4\dimexpr\strutht+\dimen2\relax
- \dimen6\dimexpr\strutdp+\dimen2\relax
+ \dimen\scratchheight\dimexpr\strutht+\scratchoffset\relax
+ \dimen\scratchdepth \dimexpr\strutdp+\scratchoffset\relax
\fi
\unskip
\setbox\scratchbox\hbox
- {\hskip\dimen2
- \vrule\!!height\dimen4\!!depth\dimen6\!!width\d_framed_linewidth
- \hskip\dimen2}%
+ {\hskip\scratchoffset
+ \vrule\!!height\dimen\scratchheight\!!depth\dimen\scratchdepth\!!width\d_framed_linewidth
+ \hskip\scratchoffset}%
\ht\scratchbox\strutht
\dp\scratchbox\strutdp
\box\scratchbox
\ignorespaces
\egroup}
-%D The argument of the frame command accepts \type{\\} as a
-%D sort of newline signal. In horizontal boxes it expands to a
-%D space.
+%D The argument of the frame command accepts \type{\\} as a sort of newline signal. In
+%D horizontal boxes it expands to a space.
\unexpanded\def\pack_framed_vboxed_newline
{\endgraf\ignorespaces}
@@ -2345,10 +2266,9 @@
\unexpanded\def\pack_framed_hboxed_newline
{\unskip\normalspace\ignorespaces}
-%D We can set each rule on or off. The default setting is
-%D inherited from \type{frame}. An earlier implementation
-%D use a bit different approach, but the new one seems more
-%D natural:
+%D We can set each rule on or off. The default setting is inherited from
+%D \type {frame}. An earlier implementation use a bit different approach, but the new
+%D one seems more natural:
%D
%D \bgroup
%D \setuptyping[margin=0pt]
@@ -2388,10 +2308,9 @@
%D \macros
%D {startframedtext, setupframedtexts, defineframedtext}
%D
-%D The general framing command we discussed previously, is not
-%D entirely suited for what we call framed texts, as for
-%D instance used in intermezzo's. The next examples show what
-%D we have in mind.
+%D The general framing command we discussed previously, is not entirely suited for
+%D what we call framed texts, as for instance used in intermezzo's. The next
+%D examples show what we have in mind.
%D
%D \startbuffer[framed-0]
%D \setupframedtexts
@@ -2453,8 +2372,8 @@
%D \bgroup \setuptyping[margin=0pt] \getbuffer[framed-3] \egroup
%D \bgroup \setuptyping[margin=0pt] \getbuffer[framed-4] \egroup
%D
-%D Here we can see that we have a predefined framed text class
-%D as well as the tools for defining our own. So we have:
+%D Here we can see that we have a predefined framed text class as well as the
+%D tools for defining our own. So we have:
%D
%D \showsetup{setupframedtexts}
%D
@@ -2477,7 +2396,7 @@
\let\setupframedtexts\setupframedtext
\setupframedtext
- [\c!width=0.75\hsize,
+ [\c!width=.75\hsize,
\c!height=\v!fit,
\c!align=\v!yes,
%\c!top=,
@@ -2550,7 +2469,6 @@
\hsize\localhsize
% \insidefloattrue % ? better
\normalexpanded{\switchtobodyfont[\framedtextparameter\c!bodyfont]}%
-% \startcolor[\framedtextparameter\c!color]%
\letframedtextparameter\c!strut\v!no
\inheritedframedtextframed\bgroup
\let\\=\endgraf
@@ -2560,9 +2478,8 @@
\setupindenting[\framedtextparameter\c!indenting]%
\useframedtextstyleandcolor\c!style\c!color}
-%D The \type {none} option is handy for nested usage, as
-%D in the presentation styles, where we don't want
-%D interference.
+%D The \type {none} option is handy for nested usage, as in the presentation
+%D styles, where we don't want interference.
\defineplacement[\??framedtext][\s!parent=\??framedtext\currentframedtext]
@@ -2571,7 +2488,6 @@
\removelastskip
\doif{\framedtextparameter\c!depthcorrection}\v!on\pack_framed_text_stop_depth_correction
\stopboxedcontent
-% \stopcolor
\ifconditional\c_framed_text_location_none
\egroup
\box\b_framed_normal
@@ -2640,8 +2556,8 @@
%D \egroup
%D \stoptyping
-%D The simple brace (or group) delimited case is typeset
-%D slightly different and is not aligned.
+%D The simple brace (or group) delimited case is typeset slightly different
+%D and is not aligned.
\unexpanded\def\pack_framed_text_direct#1%
{\bgroup
@@ -2668,7 +2584,8 @@
\egroup
\egroup}
-\defineframedtext[\v!framedtext]
+\defineframedtext
+ [\v!framedtext]
%D \macros
%D {defineframed}
@@ -2677,47 +2594,46 @@
%D
%D \showsetup{defineframed}
%D
-%D As suggested by Wolfgang we can now use the new \MKIV\ inheritance
-%D model instead of passing a combination of arguments. This also
-%D also simplified the \type {\setupframed} command. There are
-%D certainly more places where such improvements can be made.
+%D As suggested by Wolfgang we can now use the new \MKIV\ inheritance model instead
+%D of passing a combination of arguments. This also also simplified the \type
+%D {\setupframed} command. There are certainly more places where such improvements
+%D can be made.
% actually, this can be another command handler .. todo
-\unexpanded\def\defineframed
- {\dotripleempty\pack_framed_define}
+\appendtoks
+ \ifcsname\??regularframedlevel\currentframed\endcsname
+ % already defined, keeps settings
+ \else
+ \expandafter\newcount\csname\??regularframedlevel\currentframed\endcsname
+ \fi
+\to \everypresetframed
-\def\pack_framed_define[#1][#2][#3]%
- {\ifcsname\??ol:#1\endcsname
- % already defined, keeps settings
- \else
- \expandafter\newcount\csname\??ol:#1\endcsname % \the\everypresetframed
- \fi
- \ifsecondargument
- \doifassignmentelse{#2}
- {\getparameters[\??ol#1][\s!parent=\??ol,#2]}%
- {\ifcsname#2\endcsname
- \getparameters[\??ol#1][\s!parent=\??ol#2,#3]%
- \else
- \getparameters[\??ol#1][\s!parent=\??ol,#3]%
- \fi}%
- \else
- \getparameters[\??ol#1][\s!parent=\??ol,#2]%
- \fi
- \setuvalue{#1}{\pack_framed_defined_process[#1]}}% % \the\everydefineframed
+\appendtoks
+ \setuevalue\currentframed{\pack_framed_defined_process[\currentframed]}%
+\to \everydefineframed
\newcount\c_framed_crap
\unexpanded\def\pack_framed_defined_process[#1]% official (not much checking, todo: parent)
{\bgroup
- \ifcsname\??ol:#1\endcsname
- \expandafter\let\expandafter\c_framed_temp\csname\??ol:#1\endcsname
+ \ifcsname\??regularframedlevel#1\endcsname
+ \expandafter\let\expandafter\c_framed_temp\csname\??regularframedlevel#1\endcsname
\else
\let\c_framed_temp\c_framed_crap
\fi
\advance\c_framed_temp\plusone
- \expandafter\def\csname\??ol#1:\the\c_framed_temp\s!parent\endcsname{\??ol#1}% \inheritlocalframed
- \dodoubleempty\pack_framed_process[\??ol#1:\the\c_framed_temp]}
+ \expandafter\def\csname\??framed#1>\the\c_framed_temp:\s!parent\endcsname{\??framed#1}% \inheritlocalframed
+ \bgroup
+ \edef\currentframed{#1>\the\c_pack_framed_temp}%
+ \pack_framed_initialize
+ \dosingleempty\pack_framed_process}
+
+\def\pack_framed_defined_process_indeed[#1]%
+ {\ifsingleargument % faster
+ \setupcurrentframed[#1]% here !
+ \fi
+ \pack_framed_process_indeed}
\let\placeframed\pack_framed_defined_process % new per 2012/04/23
@@ -2729,8 +2645,8 @@
%D
%D but the existing one is ok as well (less csname messy too).
-%D New, for the moment private; let's see when GB finds out
-%D about this one and its obscure usage. It's used in:
+%D New, for the moment private; let's see when GB finds out about this one and its
+%D obscure usage. It's used in:
%D
%D \startbuffer
%D \defineframedtext
@@ -2764,21 +2680,17 @@
%D
%D \typebuffer
-% to be redone
+\installcorenamespace{framedcontent}
-\def\framedcontentparameter #1{\csname\doframedcontentparameter{\??fc\currentframedcontent}#1\endcsname}
-\def\doframedcontentparameter #1#2{\ifcsname#1#2\endcsname#1#2\else\expandafter\doframedcontentparentparameter\csname#1\s!parent\endcsname#2\fi}
-\def\doframedcontentparentparameter#1#2{\ifx#1\relax\s!empty\else\doframedcontentparameter#1#2\fi}
-\def\letframedcontentparameter #1{\expandafter\let\csname\??fc\currentframedcontent#1\endcsname}
+\installframedcommandhandler \??framedcontent {framedcontent} \??framedcontent
-\presetlocalframed[\??fc]
-
-\getparameters
- [\??fc]
+\setupframedcontent
[\c!leftoffset=\zeropoint,
- \c!rightoffset=\framedcontentparameter\c!leftoffset,
+ %\c!rightoffset=\framedcontentparameter\c!leftoffset,
+ \c!rightoffset=\scratchleftoffset,
\c!topoffset=\zeropoint,
- \c!bottomoffset=\framedcontentparameter\c!topoffset,
+ %\c!bottomoffset=\framedcontentparameter\c!topoffset,
+ \c!bottomoffset=\scratchtopoffset,
\c!strut=\v!no,
%\c!linecorrection=\v!no,
%\c!left=,
@@ -2786,19 +2698,6 @@
%\c!width=\v!fit,
\c!offset=\v!overlay]
-\unexpanded\def\defineframedcontent
- {\dodoubleempty\dodefineframedcontent}
-
-\def\dodefineframedcontent[#1][#2]%
- {\getparameters[\??fc#1][\s!parent=\??fc,#2]}
-
-\unexpanded\def\setupframedcontent
- {\dodoubleempty\dosetupframedcontent}
-
-\def\dosetupframedcontent[#1][#2]%
- {\def\docommand##1{\getparameters[\??fc##1][#2]}%
- \processcommacommand[#1]\docommand}
-
\unexpanded\def\startframedcontent
{\dosingleempty\pack_framed_start_content}
@@ -2816,11 +2715,15 @@
{\setbox\b_framed_normal\hbox\bgroup
\setlocalhsize
\hsize\localhsize
- \advance\hsize\dimexpr-\framedcontentparameter\c!leftoffset-\framedcontentparameter\c!rightoffset \relax
- \advance\vsize\dimexpr-\framedcontentparameter\c!topoffset -\framedcontentparameter\c!bottomoffset\relax
- \hskip\framedcontentparameter\c!leftoffset
+ \scratchleftoffset \framedcontentparameter\c!leftoffset \relax
+ \scratchrightoffset \framedcontentparameter\c!rightoffset \relax
+ \scratchtopoffset \framedcontentparameter\c!topoffset \relax
+ \scratchbottomoffset\framedcontentparameter\c!bottomoffset\relax
+ \advance\hsize\dimexpr-\scratchleftoffset-\scratchrightoffset \relax
+ \advance\vsize\dimexpr-\scratchtopoffset -\scratchbottomoffset\relax
+ \hskip\scratchleftoffset
\vbox\bgroup
- \vskip\framedcontentparameter\c!topoffset
+ \vskip\scratchtopoffset
\vbox\bgroup
\forgetall
\blank[\v!disable]}
@@ -2828,9 +2731,9 @@
\def\pack_framed_stop_content_indeed
{\removelastskip
\egroup
- \vskip\framedcontentparameter\c!bottomoffset
+ \vskip\scratchbottomoffset
\egroup
- \hskip\framedcontentparameter\c!rightoffset
+ \hskip\scratchrightoffset
\egroup
\doif{\framedcontentparameter\c!width}\v!fit
{\letframedcontentparameter\c!width\v!fixed}% no shapebox
@@ -2842,7 +2745,7 @@
% plaats ?
\ifdone\startlinecorrection\fi
\framedcontentparameter\c!left % new
- \localframed[\??fc\currentframedcontent]{\box\b_framed_normal}% hm
+ \inheritedframedcontentframed{\box\b_framed_normal}% hm
\framedcontentparameter\c!right % new
\ifdone\stoplinecorrection\fi
\egroup}
@@ -2852,54 +2755,4 @@
\setuplinewidth
[\v!medium]
-% We could omit the empty setings but that is some 10% slower due to
-% extra testing in the chain.
-
-\setupframed
- [\c!width=\v!fit,
- \c!height=\v!broad,
- %\c!lines=,
- \c!offset=0.25ex, % \defaultframeoffset
- \c!empty=\v!no,
- \c!frame=\v!on,
- %\c!topframe=,
- %\c!bottomframe=,
- %\c!leftframe=,
- %\c!rightframe=,
- \c!radius=.5\bodyfontsize,
- \c!rulethickness=\linewidth,
- \c!corner=\v!rectangular,
- \c!depth=\zeropoint,
- %\c!foregroundcolor=,
- %\c!foregroundstyle=,
- %\c!background=,
- \c!backgroundscreen=\defaultbackgroundscreen,
- %\c!backgroundcolor=,
- \c!backgroundoffset=\zeropoint,
- %\c!framecolor=,
- \c!frameoffset=\zeropoint,
- % somewhat messy
- \c!backgroundcorner=\framedparameter\c!corner,
- \c!backgroundradius=\framedparameter\c!radius,
- \c!backgrounddepth=\framedparameter\c!depth,
- \c!framecorner=\framedparameter\c!corner,
- \c!frameradius=\framedparameter\c!radius,
- \c!framedepth=\framedparameter\c!depth,
- %
- %\c!component=,
- %\c!region=,
- %\c!align=,
- \c!bottom=\vss,
- %\c!top=,
- \c!autostrut=\v!yes,
- \c!location=\v!normal,
- %\c!orientation=,
- \c!autowidth=\v!yes,
- %\c!setups=,
- \c!strut=\v!yes,
- %\c!loffset=\zeropoint,
- %\c!roffset=\zeropoint,
- %\c!toffset=\zeropoint,
- ]%\c!boffset=\zeropoint]
-
\protect \endinput
diff --git a/tex/context/base/page-bck.mkiv b/tex/context/base/page-bck.mkiv
index 4fbbba9f4..2320e4e0a 100644
--- a/tex/context/base/page-bck.mkiv
+++ b/tex/context/base/page-bck.mkiv
@@ -11,19 +11,16 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-% todo: ma:r:c
-%
-% Currently the text cells are fakes and no (foreground) frames which
-% makes sense as order might matter e.g. is text sticks in other
-% cells. The page, text etc ares do support foreground order change.
+% Currently the text cells are fakes and no (foreground) frames which makes sense
+% as order might matter e.g. is text sticks in other cells. The page, text etc
+% areas do support foreground order change.
\writestatus{loading}{ConTeXt Page Macros / Backgrounds}
\unprotect
-%D For special purposes, users can question the \type
-%D {*background} mode. This mode is only available when
-%D typesetting the pagebody.
+%D For special purposes, users can question the \type {*background} mode. This mode
+%D is only available when typesetting the pagebody.
%D
%D \starttyping
%D \startmode[*background] ...
@@ -48,17 +45,17 @@
\setfalse\c_page_backgrounds_new_left
\setfalse\c_page_backgrounds_some}
-%D We keep calculations and checks to a minimum and also
-%D try to minimize the amount of tracing due to expansion.
+%D We keep calculations and checks to a minimum and also try to minimize
+%D the amount of tracing due to expansion.
\let\currentotrbackground\empty
-\def\page_backgrounds_set_yes{\expandafter\let\csname\currentotrbackground\endcsname\relax }
-\def\page_backgrounds_set_nop{\expandafter\let\csname\currentotrbackground\endcsname\undefined}
+%D This is the only spot where we hav ea low level dependency on the way
+%D parent chains are defined but we want the speed.
\def\page_backgrounds_check_background
- {\ifcsname\currentotrbackground\c!background\endcsname
- \edef\page_background_temp{\csname\currentotrbackground\c!background\endcsname}%
+ {\ifcsname\??framed\currentotrbackground:\c!background\endcsname
+ \edef\page_background_temp{\csname\??framed\currentotrbackground:\c!background\endcsname}%
\ifx\page_background_temp\empty
\expandafter\expandafter\expandafter\page_backgrounds_check_frame
\else
@@ -69,8 +66,8 @@
\fi}
\def\page_backgrounds_check_frame
- {\ifcsname\currentotrbackground\c!frame\endcsname
- \edef\page_background_temp{\csname\currentotrbackground\c!frame\endcsname}%
+ {\ifcsname\??framed\currentotrbackground:\c!frame\endcsname
+ \edef\page_background_temp{\csname\??framed\currentotrbackground:\c!frame\endcsname}%
\ifx\page_background_temp\v!on
\page_backgrounds_set_yes
\else
@@ -81,8 +78,8 @@
\fi}
\def\page_backgrounds_check_leftframe
- {\ifcsname\currentotrbackground\c!leftframe\endcsname
- \edef\page_background_temp{\csname\currentotrbackground\c!leftframe\endcsname}%
+ {\ifcsname\??framed\currentotrbackground:\c!leftframe\endcsname
+ \edef\page_background_temp{\csname\??framed\currentotrbackground:\c!leftframe\endcsname}%
\ifx\page_background_temp\v!on
\page_backgrounds_set_yes
\else
@@ -93,8 +90,8 @@
\fi}
\def\page_backgrounds_check_rightframe
- {\ifcsname\currentotrbackground\c!rightframe\endcsname
- \edef\page_background_temp{\csname\currentotrbackground\c!rightframe\endcsname}%
+ {\ifcsname\??framed\currentotrbackground:\c!rightframe\endcsname
+ \edef\page_background_temp{\csname\??framed\currentotrbackground:\c!rightframe\endcsname}%
\ifx\page_background_temp\v!on
\page_backgrounds_set_yes
\else
@@ -105,8 +102,8 @@
\fi}
\def\page_backgrounds_check_topframe
- {\ifcsname\currentotrbackground\c!topframe\endcsname
- \edef\page_background_temp{\csname\currentotrbackground\c!topframe\endcsname}%
+ {\ifcsname\??framed\currentotrbackground:\c!topframe\endcsname
+ \edef\page_background_temp{\csname\??framed\currentotrbackground:\c!topframe\endcsname}%
\ifx\page_background_temp\v!on
\page_backgrounds_set_yes
\else
@@ -117,8 +114,8 @@
\fi}
\def\page_backgrounds_check_bottomframe
- {\ifcsname\currentotrbackground\c!bottomframe\endcsname
- \edef\page_background_temp{\csname\currentotrbackground\c!bottomframe\endcsname}%
+ {\ifcsname\??framed\currentotrbackground:\c!bottomframe\endcsname
+ \edef\page_background_temp{\csname\??framed\currentotrbackground:\c!bottomframe\endcsname}%
\ifx\page_background_temp\v!on
\page_backgrounds_set_yes
\else
@@ -132,6 +129,10 @@
%D as fast as possible.
\installcorenamespace{layoutbackgrounds}
+\installcorenamespace{layoutbackgroundcheck} % we need another hash as \??layoutbackgrounds<...> gets defined
+
+\def\page_backgrounds_set_yes{\expandafter\let\csname\currentotrbackground\endcsname\relax }
+\def\page_backgrounds_set_nop{\expandafter\let\csname\currentotrbackground\endcsname\undefined}
\unexpanded\def\page_backgrounds_check#1%
{\edef\currentotrbackground{\??layoutbackgrounds#1}%
@@ -154,9 +155,8 @@
\expandafter\gobbleoneargument
\fi}
-%D The background mechanism falls back on the \type {\framed}
-%D macro. This means that all normal frame and overlay
-%D features can be used.
+%D The background mechanism falls back on the \type {\framed} macro. This means
+%D that all normal frame and overlay features can be used.
\def\page_backgrounds_add_to_box#1% area
{\ifcsname\??layoutbackgrounds#1\endcsname
@@ -165,26 +165,29 @@
\expandafter\gobblefourarguments
\fi#1}
-% we don't need the dimensions here as this is a real framed but the question is: do we indeed
-% need a real framed or can we use a fake (i.e. no foreground, only for hidden)
+%D We don't need the dimensions here as this is a real framed but the question is:
+%D do we indeed need a real framed or can we use a fake (i.e. no foreground, only
+%D for hidden).
\def\page_backgrounds_add_to_box_indeed#1#2#3#4% area box width height / always non zero
- {\ifcsname\??layoutbackgrounds#1\c!setups\endcsname % to be done
- \doprocesslocalsetups{\csname\??layoutbackgrounds#1\c!setups\endcsname}% should not produce funny spaces !
+ {\edef\p_page_backgrounds_setups{\namedframedparameter{\??layoutbackgrounds#1}\c!setups}%
+ \ifx\p_page_backgrounds_setups\empty \else
+ \doprocesslocalsetups\p_page_backgrounds_setups % should not produce funny spaces !
\fi
% #2 has the right dimensions already
\setbox#2\hbox{\localbackgroundframed{\??layoutbackgrounds#1}#1#2}}% a real framed (including foreground)
-%D There are quite some backgrounds. At the bottom layer,
-%D there is the {\em paper} background. This one is only
-%D used for special purposes, like annotations to documents.
+
+%D There are quite some backgrounds. At the bottom layer, there is the {\em
+%D paper} background. This one is only used for special purposes, like
+%D annotations to documents.
\def\page_backgrounds_add_to_print#1%
{\page_backgrounds_add_to_box\v!paper#1\printpaperwidth\printpaperheight}
-%D The page backgrounds can be put behind the {\em left
-%D page}, the {\em right page} or {\em each page}. As with
-%D the paper background, these are calculated on each page.
+%D The page backgrounds can be put behind the {\em left page}, the {\em
+%D right page} or {\em each page}. As with the paper background, these are
+%D calculated on each page.
\def\page_backgrounds_add_to_paper#1%
{\doifbothsidesoverruled
@@ -193,18 +196,17 @@
{\page_backgrounds_add_to_box\v!leftpage #1\paperwidth\paperheight}%
\page_backgrounds_add_to_box\v!page#1\paperwidth\paperheight}
-%D Then there are the 25 areas that make up the layout: {\em
-%D top, header, text, footer, bottom} times {\em left edge,
-%D left margin, text, right margin, right edge}. These are
-%D only recalculated when they change or when the \type
-%D {status} is set to \type {repeat}.
+%D Then there are the 25 areas that make up the layout: {\em top, header, text,
+%D footer, bottom} times {\em left edge, left margin, text, right margin, right
+%D edge}. These are only recalculated when they change or when the \type {status}
+%D is set to \type {repeat}.
\newbox\leftbackground % todo: rename
\newbox\rightbackground % todo: rename
-%D Finaly there is an aditional {\em text} background, again
-%D useful for special purposes only. This one is calculated
-%D each time. The hidden backgrounds are not meant for users!
+%D Finaly there is an aditional {\em text} background, again useful for
+%D special purposes only. This one is calculated each time. The hidden
+%D backgrounds are not meant for users!
\newconditional\c_page_backgrounds_hidden_enabled
@@ -214,21 +216,19 @@
\fi
\page_backgrounds_add_to_box\v!text#1\makeupwidth\textheight}
-%D The next couple of macros implement the area backgrounds.
-%D As said, these are cached in dedicated boxes. The offsets
-%D and depth of the page are used for alignment purposes.
+%D The next couple of macros implement the area backgrounds. As said, these
+%D are cached in dedicated boxes. The offsets and depth of the page are used
+%D for alignment purposes.
-\newdimen\pageoffset % bleed
-\newdimen\pagedepth
+%newdimen\pageoffset % bleed
+%newdimen\pagedepth % built-in
-%D We need a bit more clever mechanism in order to handle
-%D layers well. This means that we cannot calculate both
-%D background at the same time since something may have
-%D changed halfway a page.
+%D We need a bit more clever mechanism in order to handle layers well.
+%D This means that we cannot calculate both background at the same time
+%D since something may have changed halfway a page.
-%D Margin swapping has been simplified: see mkii code in case of
-%D regression. Calculation is delayed till the page anyway so the
-%D state is known.
+%D Margin swapping has been simplified: see mkii code in case of regression.
+%D Calculation is delayed till the page anyway so the state is known.
\def\page_backgrounds_recalculate
{\global\settrue\c_page_backgrounds_new}
@@ -284,11 +284,10 @@
\newdimen\pagebackgroundhoffset % THESE WILL BECOME OBSOLETE
\newdimen\pagebackgroundvoffset
+\newdimen\pagebackgroundoffset % used elsewhere
\newdimen\pagebackgrounddepth
\newdimen\pagebackgroundcompensation
-\newdimen\pagebackgroundoffset % used elsewhere
-
\def\page_backgrounds_set_offsets % used in menus (we can use ifcsname's here)
{\ifconditional\c_page_backgrounds_some \ifconditional\c_page_backgrounds_new
\page_backgrounds_set_offsets_indeed % indirect, less tracing
@@ -310,7 +309,8 @@
\global\pagebackgroundcompensation\zeropoint}
\def\page_backgrounds_set_offsets_yes
- {\global\pagebackgroundcompensation\csname\??layoutbackgrounds\v!page\c!offset\endcsname\relax
+ {\global\pagebackgroundoffset \d_page_backgrounds_depth
+ \global\pagebackgroundcompensation\d_page_backgrounds_offset\relax
\ifzeropt\pagebackgroundcompensation
\page_backgrounds_set_offsets_nop
\else
@@ -329,7 +329,7 @@
\global\pagebackgrounddepth \zeropoint
\else
\global\pagebackgroundvoffset\pagebackgroundcompensation
- \global\pagebackgrounddepth \csname\??layoutbackgrounds\v!page\c!depth\endcsname\relax
+ \global\pagebackgrounddepth \d_page_backgrounds_depth
\fi\fi
\fi}
@@ -426,30 +426,31 @@
\def\page_backgrounds_set_box_cell#1#2#3#4% pos pos width height
{\begingroup
- \ifcsname\??layoutbackgrounds#1#2\c!setups\endcsname
- \expandafter\doprocesslocalsetups\csname\??layoutbackgrounds#1#2\c!setups\endcsname % should not produce funny spaces !
+ \edef\p_page_backgrounds_setups{\namedframedparameter{\??layoutbackgrounds#1#2}\c!setups}%
+ \ifx\p_page_backgrounds_setups\empty \else
+ \doprocesslocalsetups\p_page_backgrounds_setups % should not produce funny spaces !
\fi
- \ifcsname\??layoutbackgrounds#1#2\c!command\endcsname
+ \edef\p_page_backgrounds_command{\namedframedparameter{\??layoutbackgrounds#1#2}\c!command}%
+ \ifx\p_page_backgrounds_command\empty
\expandafter\page_backgrounds_set_box_cell_nop
\else
\expandafter\page_backgrounds_set_box_cell_yes
- \fi#1#2#3#4%
+ \fi#3#4%
\localbackgroundframed{\??layoutbackgrounds#1#2}{#1:#2}\scratchbox
\endgroup}
-\def\page_backgrounds_set_box_cell_nop#1#2#3#4%
+\def\page_backgrounds_set_box_cell_nop#1#2%
{\setbox\scratchbox\emptyvbox
- \wd\scratchbox#3%
- \ht\scratchbox#4}
+ \wd\scratchbox#1%
+ \ht\scratchbox#2}
-\def\page_backgrounds_set_box_cell_yes#1#2#3#4%
- {\setbox\scratchbox\vbox to #4{\vss\hbox to#3{\hss\csname\??layoutbackgrounds#1#2\c!command\endcsname\hss}\vss}%
+\def\page_backgrounds_set_box_cell_yes#1#2%
+ {\setbox\scratchbox\vbox to #2{\vss\hbox to#1{\hss\p_page_backgrounds_command\hss}\vss}%
\dp\scratchbox\zeropoint}
-%D The background mechanism is quite demanding in terms or
-%D resources. We used to delay these definitions till runtime
-%D usage, but since today's \TEX's are large, we now do the
-%D work on forehand.
+%D The background mechanism is quite demanding in terms or resources. We used to
+%D delay these definitions till runtime usage, but since today's \TEX's are large,
+%D we now do the work on forehand.
%D
%D \starttyping
%D \setupbackgrounds [settings]
@@ -459,8 +460,8 @@
%D
%D \showsetup{setupbackgrounds}
%D
-%D Because the number of arguments runs from one to three,
-%D we need to check for it.
+%D Because the number of arguments runs from one to three, we need to check
+%D for it.
\newtoks\everybackgroundssetup
@@ -476,14 +477,17 @@
\tripleexpandafter\page_backgrounds_setup_basics
\fi\fi\fi}
+\newdimen\d_page_backgrounds_offset
+\newdimen\d_page_backgrounds_depth
+
\appendtoks
- \doifelsevalue{\??layoutbackgrounds\v!page\c!offset}\v!overlay
- {\global\pageoffset\zeropoint}
- {\global\pageoffset\csname\??layoutbackgrounds\v!page\c!offset\endcsname}%
- \global\pagedepth\csname\??layoutbackgrounds\v!page\c!depth\endcsname
- \global\pagebackgroundoffset\pageoffset
- \global\pagebackgrounddepth\pagedepth
- \edef\p_page_backgrounds_state{\csname\??layoutbackgrounds\c!state\endcsname}%
+ \edef\p_page_backgrounds_offset{\namedframedparameter{\??layoutbackgrounds\v!page}\c!offset}%
+ \edef\p_page_backgrounds_depth {\namedframedparameter{\??layoutbackgrounds\v!page}\c!depth }%
+ \edef\p_page_backgrounds_state {\namedframedparameter{\??layoutbackgrounds }\c!state }%
+ \global\d_page_backgrounds_offset\ifx\p_offset\empty\zeropoint\else\p_page_backgrounds_offset\fi
+ \global\d_page_backgrounds_depth \ifx\p_depth \empty\zeropoint\else\p_page_backgrounds_depth \fi
+ \global\pagebackgroundoffset\d_page_backgrounds_offset\relax
+ \global\pagebackgrounddepth \d_page_backgrounds_depth \relax
\ifx\p_page_backgrounds_state\v!stop
\global\setfalse\c_page_backgrounds_new
\else
@@ -514,60 +518,57 @@
{\page_backgrounds_setup_double[#1][\v_page_backgrounds_common_set][#2]}}
\def\page_backgrounds_setup_basics[#1][#2][#3]%
- {\getparameters[\??layoutbackgrounds][#1]%
+ {\setupframed[\??layoutbackgrounds][#1]%
\the\everybackgroundssetup}
\def\page_backgrounds_setup_and_check#1#2% tag settings
{\edef\currentotrbackground{\??layoutbackgrounds#1}%
- \getparameters[\currentotrbackground][#2]%
+ \setupframed[\currentotrbackground][#2]%
\page_backgrounds_check_background}
-%D Each areas (currently there are $1+3+25+1=30$ of them)
-%D has its own low level framed object associated.
-
-% hm, we can delay them
-
-\unexpanded\def\installsomebackground#1#2{\inheritlocalframed[\??layoutbackgrounds#1#2][\??od]}
-
-\installsomebackground \v!paper \empty
-\installsomebackground \v!page \empty
-\installsomebackground \v!leftpage \empty
-\installsomebackground \v!rightpage \empty
-
-%D The stand alone text area inherits from the page too.
-
-\installsomebackground \v!text \empty
-\installsomebackground \v!hidden \empty
-
-%D We save some keying by defining the areas using a helper:
+%D Each areas (currently there are $1+3+25+1=30$ of them) has its own low level
+%D framed object associated.
+
+\definesimplifiedframed[\??layoutbackgrounds\v!paper]
+\definesimplifiedframed[\??layoutbackgrounds\v!page]
+\definesimplifiedframed[\??layoutbackgrounds\v!leftpage]
+\definesimplifiedframed[\??layoutbackgrounds\v!rightpage]
+
+\definesimplifiedframed[\??layoutbackgrounds\v!text]
+\definesimplifiedframed[\??layoutbackgrounds\v!hidden]
+
+\definesimplifiedframed[\??layoutbackgrounds\v!top\v!leftedge]
+\definesimplifiedframed[\??layoutbackgrounds\v!top\v!leftmargin]
+\definesimplifiedframed[\??layoutbackgrounds\v!top\v!text]
+\definesimplifiedframed[\??layoutbackgrounds\v!top\v!rightmargin]
+\definesimplifiedframed[\??layoutbackgrounds\v!top\v!rightedge]
+
+\definesimplifiedframed[\??layoutbackgrounds\v!header\v!leftedge]
+\definesimplifiedframed[\??layoutbackgrounds\v!header\v!leftmargin]
+\definesimplifiedframed[\??layoutbackgrounds\v!header\v!text]
+\definesimplifiedframed[\??layoutbackgrounds\v!header\v!rightmargin]
+\definesimplifiedframed[\??layoutbackgrounds\v!header\v!rightedge]
+
+\definesimplifiedframed[\??layoutbackgrounds\v!text\v!leftedge]
+\definesimplifiedframed[\??layoutbackgrounds\v!text\v!leftmargin]
+\definesimplifiedframed[\??layoutbackgrounds\v!text\v!text]
+\definesimplifiedframed[\??layoutbackgrounds\v!text\v!rightmargin]
+\definesimplifiedframed[\??layoutbackgrounds\v!text\v!rightedge]
+
+\definesimplifiedframed[\??layoutbackgrounds\v!footer\v!leftedge]
+\definesimplifiedframed[\??layoutbackgrounds\v!footer\v!leftmargin]
+\definesimplifiedframed[\??layoutbackgrounds\v!footer\v!text]
+\definesimplifiedframed[\??layoutbackgrounds\v!footer\v!rightmargin]
+\definesimplifiedframed[\??layoutbackgrounds\v!footer\v!rightedge]
+
+\definesimplifiedframed[\??layoutbackgrounds\v!bottom\v!leftedge]
+\definesimplifiedframed[\??layoutbackgrounds\v!bottom\v!leftmargin]
+\definesimplifiedframed[\??layoutbackgrounds\v!bottom\v!text]
+\definesimplifiedframed[\??layoutbackgrounds\v!bottom\v!rightmargin]
+\definesimplifiedframed[\??layoutbackgrounds\v!bottom\v!rightedge]
-\def\docommand#1%
- {\installsomebackground#1\v!leftedge
- \installsomebackground#1\v!leftmargin
- \installsomebackground#1\v!text
- \installsomebackground#1\v!rightmargin
- \installsomebackground#1\v!rightedge}
-
-\docommand \v!top
-\docommand \v!header
-\docommand \v!text
-\docommand \v!footer
-\docommand \v!bottom
-
-%D We need some cleanup now.
-
-\let\docommand\relax
-
-%D We now set up the individual areas to use reasonable
-%D defaults.
-
-\installsomebackground \v!paper \empty
-\installsomebackground \v!page \empty
-\installsomebackground \v!leftpage \empty
-\installsomebackground \v!rightpage \empty
-
-\getparameters
- [\??layoutbackgrounds\v!page]
+\setupbackgrounds
+ [\v!page]
[\c!offset=\zeropoint, % hm, so we need to force overlay elsewhere
\c!depth=\zeropoint]
@@ -576,9 +577,8 @@
\setupbackgrounds
[\c!state=\c!start]
-%D The hidden layer can be populated by extending the
-%D following comma separated list. This only happens in core
-%D modules.
+%D The hidden layer can be populated by extending the following comma separated
+%D list. This only happens in core modules.
% todo page-2 .. page+2 achter pagina -> bleed
% spread-2 .. spread+2 achter spread -> spread (repeat 2 times)
@@ -594,11 +594,6 @@
\def\hiddenbackgroundlist
{\v!text-2,\v!text-1,\v!foreground,\v!text+1,\v!text+2}
-% \defineoverlay[\v!text-2][\positionoverlay{\v!text-2}]
-% \defineoverlay[\v!text-1][\positionoverlay{\v!text-1}]
-% \defineoverlay[\v!text+1][\positionoverlay{\v!text+1}]
-% \defineoverlay[\v!text+2][\positionoverlay{\v!text+2}]
-
\defineoverlay[\v!text-2][\positionregionoverlay\textanchor{\v!text-2}] % no new anchor, we share text
\defineoverlay[\v!text-1][\positionregionoverlay\textanchor{\v!text-1}]
\defineoverlay[\v!text+1][\positionregionoverlay\textanchor{\v!text+1}]
@@ -608,10 +603,16 @@
[\v!hidden]
[\c!background=\hiddenbackgroundlist]
-% The next series is used in local (for instance floating)
-% backgrounds.
+%D Because we haven't really set up backgrounds yet, we set the main efficiency
+%D switch to false.
-% \installsomebackground \v!local \empty % not really a background, invisible for users
+\setfalse\c_page_backgrounds_some
+
+\protect \endinput
+
+% %D The next series is used in local (for instance floating) backgrounds.
+%
+% \installsimplifiedframed{\??layoutbackgrounds\v!local}
%
% \getparameters
% [\??layoutbackgrounds\v!local]
@@ -649,9 +650,3 @@
% \input tufte
% \stopcolumnset
-%D Because we haven't really set up backgrounds yet, we set
-%D the main efficiency switch to false.
-
-\setfalse\c_page_backgrounds_some
-
-\protect \endinput
diff --git a/tex/context/base/page-mul.mkiv b/tex/context/base/page-mul.mkiv
index 2d0593884..2e661f3b7 100644
--- a/tex/context/base/page-mul.mkiv
+++ b/tex/context/base/page-mul.mkiv
@@ -319,7 +319,7 @@
\initializecolumns\nofcolumns
\hangafter\zerocount
\hangindent\zeropoint
- \everypar\emptytoks
+ \reseteverypar
\ifdim\pagetotal=\zeropoint \else
\verticalstrut
\vskip-\struttotal
@@ -398,7 +398,7 @@
%D to interfere.
\def\setmulticolumnsout
- {\everypar\emptytoks
+ {\reseteverypar
\dontcomplain
\settopskip
\setmaxdepth
@@ -659,7 +659,7 @@
\dp\shapebox\dimen2
\box\shapebox}%
\flushshapebox
- \everypar\emptytoks
+ \reseteverypar
\parskip\zeropoint % = \forgetall
\verticalstrut
\vskip-\struttotal
@@ -1158,7 +1158,7 @@
\def\setglobalcolumnfloats
{\setfalse\onlylocalcolumnfloats
- \everypar\emptytoks
+ \reseteverypar
\let\flushcolumnfloat\relax
\let\flushcolumnfloats\noflushcolumnfloats}
@@ -1472,20 +1472,23 @@
\c!height=\v!fit,
\c!align=]}
-\definecomplexorsimpleempty\startcolumns
-
% to be reconsidered ... (in any case they need to be unexpandable sinze 2011.12.30)
\unexpanded\def\page_columns_align_option_yes {\stretchcolumnstrue \inheritcolumnsfalse}% todo: new key
\unexpanded\def\page_columns_align_option_no {\stretchcolumnsfalse\inheritcolumnsfalse}% todo: new key
\unexpanded\def\page_columns_align_option_text{\stretchcolumnsfalse\inheritcolumnstrue }%
-\def\complexstartcolumns[#1]% %% \startcolumns
+\unexpanded\def\startcolumns
+ {\dosingleempty\dostartcolumns}
+
+\def\dostartcolumns[#1]% %% \startcolumns
{\bgroup
\let\stopcolumns\egroup
\ifinsidecolumns
\else
- \setupcolumns[#1]%
+ \iffirstargument
+ \setupcolumns[#1]%
+ \fi
\ifnum\@@kln>1\relax
\whitespace
\begingroup
@@ -1531,12 +1534,23 @@
\installcolumnbreakmethod \s!multicolumn \v!preference
{\goodbreak}
+% \installcolumnbreakmethod \s!multicolumn \v!yes
+% {\par % todo: since
+% {\testrulewidth\zeropoint\ruledvskip\textheight} % we misuse a
+% \penalty-200 % side effect
+% \vskip-\textheight
+% }% bugged : \prevdepth-\thousandpoint} % signals top of column to \blank
+
\installcolumnbreakmethod \s!multicolumn \v!yes
- {\par % todo: since
- {\testrulewidth\zeropoint\ruledvskip\textheight} % we misuse a
- \penalty-200 % side effect
+ {\par
+ \begingroup
+ \normaloffinterlineskip
+ \normalpenalty\plustenthousand
+ \vbox to \textheight{}%
+ \endgroup
+ \penalty-200
\vskip-\textheight
- }% bugged : \prevdepth-\thousandpoint} % signals top of column to \blank
+ } % bugged : \prevdepth-\thousandpoint} % signals top of column to \blank
%D New: only at start of columns; may change ! Rather interwoven and therefore
%D to be integrated when the multi column modules are merged.
diff --git a/tex/context/base/page-sid.mkiv b/tex/context/base/page-sid.mkiv
index 69d23b59e..b84857601 100644
--- a/tex/context/base/page-sid.mkiv
+++ b/tex/context/base/page-sid.mkiv
@@ -513,7 +513,7 @@
\def\page_sides_push_float_inline#1%
{\begingroup
- \everypar\emptytoks % needed !
+ \reseteverypar % needed !
\parskip\zeropoint % needed !
\page_sides_set_skips
\page_sides_insert_info
@@ -597,8 +597,8 @@
{\par
\whitespace
\begingroup
- \everypar\emptytoks
\forgetall
+ \reseteverypar
\verticalstrut
\vskip-\struttotal
\endgroup}
diff --git a/tex/context/base/scrn-fld.mkvi b/tex/context/base/scrn-fld.mkvi
index 872099099..3528e86fa 100644
--- a/tex/context/base/scrn-fld.mkvi
+++ b/tex/context/base/scrn-fld.mkvi
@@ -403,7 +403,7 @@
\setupfieldcontentframed
[\c!align=\v!flushleft,
\c!strut=\v!no,
- \s!parent=\??ol] % needs checking
+ \s!parent=\??regularframed] % needs checking
\setupfieldcontentframed % independent
[\c!alternative=\v!normal,
@@ -419,13 +419,13 @@
[\c!style=,
\c!color=,
\c!align=\v!flushleft,
- \s!parent=\??ol] % needs checking
+ \s!parent=\??regularframed] % needs checking
\setupfieldtotalframed
[%\c!alternative={\v!label,\v!frame,\v!horizontal},
\c!strut=\v!no,
\c!align=,
- \s!parent=\??ol] % needs checking
+ \s!parent=\??regularframed] % needs checking
% \setupcurrent
diff --git a/tex/context/base/spac-ver.mkiv b/tex/context/base/spac-ver.mkiv
index f3dd5eafe..8bc8ed354 100644
--- a/tex/context/base/spac-ver.mkiv
+++ b/tex/context/base/spac-ver.mkiv
@@ -217,8 +217,6 @@
\let\switchtointerlinespace\setuplocalinterlinespace
-% \definecomplexorsimple\setupinterlinespace
-
%D Helpers
\newskip \s_spac_lastskip
diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf
index 9108cfcaf..c48fef255 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 f2ba08cc9..4e1eb18a6 100644
--- a/tex/context/base/status-lua.pdf
+++ b/tex/context/base/status-lua.pdf
Binary files differ
diff --git a/tex/context/base/status-mkiv.lua b/tex/context/base/status-mkiv.lua
index 9f50a7745..d75b1aed2 100644
--- a/tex/context/base/status-mkiv.lua
+++ b/tex/context/base/status-mkiv.lua
@@ -463,8 +463,7 @@ return {
{
filename = "pack-rul",
marktype = "mkiv",
- status = "todo",
- comment = "only namespace to be done",
+ status = "okay",
},
{
filename = "pack-mrl",
diff --git a/tex/context/base/strc-mat.mkiv b/tex/context/base/strc-mat.mkiv
index d9942bfc8..4f282e703 100644
--- a/tex/context/base/strc-mat.mkiv
+++ b/tex/context/base/strc-mat.mkiv
@@ -1,4 +1,5 @@
%D \module
+%D \module
%D [ file=strc-mat,
%D version=2008.10.20,
%D title=\CONTEXT\ Structure Macros,
diff --git a/tex/context/base/strc-ren.mkiv b/tex/context/base/strc-ren.mkiv
index b7b4224cd..f1fc71948 100644
--- a/tex/context/base/strc-ren.mkiv
+++ b/tex/context/base/strc-ren.mkiv
@@ -212,7 +212,7 @@
\xdef\localheaddepth {\the\strutdp}%
\xdef\localheadlineheight{\the\lineheight}%
% == \globallet\localheaddepth\strutdp
- \everypar\emptytoks % needed indeed
+ \reseteverypar % needed indeed
\noindent % ipv \whitespace elders, na \forgetall !
\bgroup
\doifinsetelse{\headparameter\c!aligntitle}{\v!yes,\v!float}% new
diff --git a/tex/context/base/supp-vis.mkiv b/tex/context/base/supp-vis.mkiv
index 1b0253162..96fef9729 100644
--- a/tex/context/base/supp-vis.mkiv
+++ b/tex/context/base/supp-vis.mkiv
@@ -96,8 +96,7 @@
%D off with \type{\dontinterfere}.
\unexpanded\def\dontinterfere % or maybe just forgetall
- {\everypar \emptytoks
- \let\par \endgraf
+ {\reseteverypar
\parindent\zeropoint
\parskip \zeropoint
\leftskip \zeropoint
diff --git a/tex/context/base/syst-aux.mkiv b/tex/context/base/syst-aux.mkiv
index fb8d68d17..a5c4cf0ff 100644
--- a/tex/context/base/syst-aux.mkiv
+++ b/tex/context/base/syst-aux.mkiv
@@ -3736,7 +3736,20 @@
%D and how about:
-\newevery \neverypar \NeveryPar
+% \newtoks \neverypar
+% \newtoks \neveryendpar
+%
+% \normalprotected\def\syst_helpers_forgotten_endpar
+% {\the\neveryendpar\normalpar}
+%
+% \unexpanded\def\forgeteverypar
+% {\everypar{\the\neverypar}%
+% \let\endpar\syst_helpers_forgotten_endpar}
+%
+% \unexpanded\def\finishpar
+% {\ifvmode\else\par\fi}
+
+\newtoks \neverypar
\unexpanded\def\forgeteverypar
{\everypar{\the\neverypar}}
diff --git a/tex/context/base/syst-ini.mkiv b/tex/context/base/syst-ini.mkiv
index 4dcc134ea..0bda688fa 100644
--- a/tex/context/base/syst-ini.mkiv
+++ b/tex/context/base/syst-ini.mkiv
@@ -827,10 +827,20 @@
%D Now come a few macros that might be needed in successive loading. We redefine the
%D \type {\par} primitive pretty soon so that we get the equivalents right.
-\newtoks\everyendpar
+% too tricky: \par is use more often than a par starts so we have too much change
+% that we get assymetrical behaviour
+%
+% \newtoks\everyendpar
+%
+% \normalprotected\def\endpar{\the\everyendpar\normalpar}
+% \normalprotected\def\par {\endpar}
+%
+% \normalprotected\def\reseteverypar
+% {\everypar \emptytoks
+% \everyendpar\emptytoks}
-\normalprotected\def\endpar{\the\everyendpar\normalpar}
-\normalprotected\def\par {\endpar}
+\normalprotected\def\reseteverypar
+ {\everypar\emptytoks}
\let\endgraf\par
\let\endline\cr
diff --git a/tex/context/base/trac-vis.mkiv b/tex/context/base/trac-vis.mkiv
index 292f60d62..defe35a5f 100644
--- a/tex/context/base/trac-vis.mkiv
+++ b/tex/context/base/trac-vis.mkiv
@@ -92,8 +92,7 @@
%D We keep this one:
\unexpanded\def\dontinterfere
- {\everypar \emptytoks
- \let\par \endgraf
+ {\reseteverypar
\parindent\zeropoint
\parskip \zeropoint
\leftskip \zeropoint
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index f90596a98..79b749226 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 : luatex-fonts-merged.lua
-- parent file : luatex-fonts.lua
--- merge date : 07/04/12 23:48:37
+-- merge date : 07/06/12 19:11:14
do -- begin closure to overcome local limits and interference