From b553f9b238272364a2475185f648f84a632f7f26 Mon Sep 17 00:00:00 2001
From: Marius <mariausol@gmail.com>
Date: Mon, 18 Jun 2012 18:20:23 +0300
Subject: beta 2012.06.18 17:11

---
 tex/context/base/colo-ini.mkiv                     |  16 +-
 tex/context/base/cont-new.mkii                     |   2 +-
 tex/context/base/cont-new.mkiv                     |   2 +-
 tex/context/base/context-version.pdf               | Bin 4145 -> 4143 bytes
 tex/context/base/context-version.png               | Bin 106504 -> 105858 bytes
 tex/context/base/context.mkii                      |   2 +-
 tex/context/base/context.mkiv                      |   2 +-
 tex/context/base/data-res.lua                      |   4 +-
 tex/context/base/pack-rul.mkiv                     | 233 ++++++++++++++-------
 tex/context/base/status-files.pdf                  | Bin 24488 -> 24462 bytes
 tex/context/base/status-lua.pdf                    | Bin 181589 -> 181592 bytes
 tex/context/base/strc-not.mkvi                     |  15 +-
 tex/context/base/syst-gen.mkii                     |   5 +
 tex/generic/context/luatex/luatex-fonts-merged.lua |   2 +-
 14 files changed, 193 insertions(+), 90 deletions(-)

(limited to 'tex')

diff --git a/tex/context/base/colo-ini.mkiv b/tex/context/base/colo-ini.mkiv
index a46555534..6b4f1be10 100644
--- a/tex/context/base/colo-ini.mkiv
+++ b/tex/context/base/colo-ini.mkiv
@@ -357,16 +357,26 @@
         \normalexpanded{\colo_palets_define[#1][\csname\??colorpaletspecification#2\endcsname]}%
       \fi}}
 
-\def\colo_palets_define_one#1#2% get rid of { } in #2
-  {\colo_palets_define_two{#1}[#2]}%
+% \def\colo_palets_define_one#1#2% get rid of { } in #2
+%   {\colo_palets_define_two{#1}[#2]}%
+
+\def\colo_palets_define_one#1#2% get rid of { }
+  {\doifassignmentelse{#2} % catch empty entries
+     {\colo_palets_define_two{#1}[#2]}
+     {\colo_palets_define_three{#1}{#2}}}
 
 \def\colo_palets_define_two#1[#2=#3]%
   {\edef\m_colo_palets_tmp{\ifx\m_colo_palets_tmp\empty\else\m_colo_palets_tmp,\fi#2}%
    \colo_palets_define_set{#1}{#2}{#3}}%
 
+\def\colo_palets_define_three#1#2%
+  {\ifcsname\??colorpaletspecification#2\endcsname
+     \processcommacommand[\csname\??colorpaletspecification#2\endcsname]{\colo_palets_define_one{#1}}%
+   \fi}
+
 \let\paletsize\!!zerocount
 
-\def\getpaletsize[#1]%
+\unexpanded\def\getpaletsize[#1]% only works for valid k=v definitions
   {\getcommacommandsize[\csname\??colorpaletspecification#1\endcsname]%
    \edef\paletsize{\number\commalistsize}}
 
diff --git a/tex/context/base/cont-new.mkii b/tex/context/base/cont-new.mkii
index 4b79a732f..75980ba4e 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.06.13 23:46}
+\newcontextversion{2012.06.18 17: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 8db00b160..67e72221b 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.06.13 23:46}
+\newcontextversion{2012.06.18 17: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 169d147e4..90f70bdcd 100644
Binary files a/tex/context/base/context-version.pdf and b/tex/context/base/context-version.pdf differ
diff --git a/tex/context/base/context-version.png b/tex/context/base/context-version.png
index bcf424f66..1c34d9d55 100644
Binary files a/tex/context/base/context-version.png and b/tex/context/base/context-version.png differ
diff --git a/tex/context/base/context.mkii b/tex/context/base/context.mkii
index 6230809f5..aaa7046ee 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.06.13 23:46}
+\edef\contextversion{2012.06.18 17:11}
 
 %D For those who want to use this:
 
diff --git a/tex/context/base/context.mkiv b/tex/context/base/context.mkiv
index fd1d6539a..472881e66 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.06.13 23:46}
+\edef\contextversion{2012.06.18 17:11}
 
 %D For those who want to use this:
 
diff --git a/tex/context/base/data-res.lua b/tex/context/base/data-res.lua
index 362cacf58..6515b4ddb 100644
--- a/tex/context/base/data-res.lua
+++ b/tex/context/base/data-res.lua
@@ -679,8 +679,8 @@ function resolvers.resetextrapath()
 end
 
 function resolvers.registerextrapath(paths,subpaths)
-    paths = paths and settings_to_array(paths)
-    subpaths = subpaths and settings_to_array(subpaths)
+    paths = settings_to_array(paths)
+    subpaths = settings_to_array(subpaths)
     local ep = instance.extra_paths or { }
     local oldn = #ep
     local newn = oldn
diff --git a/tex/context/base/pack-rul.mkiv b/tex/context/base/pack-rul.mkiv
index 957b3e32f..16b4460e9 100644
--- a/tex/context/base/pack-rul.mkiv
+++ b/tex/context/base/pack-rul.mkiv
@@ -982,8 +982,6 @@
 
 \def\c!fr!analyze{fr:analyze} % private option
 
-% we can make macros for the offset, width, and height branches or do an \csname
-
 \unexpanded\def\pack_framed_process_indeed
   {\d_framed_frameoffset\framedparameter\c!frameoffset
    \edef\p_framed_backgroundoffset{\framedparameter\c!backgroundoffset}%
@@ -1038,78 +1036,28 @@
      \settrue\c_framed_has_format
      \dosetraggedcommand\localformat % not that fast
    \fi
-   \ifx\localoffset\v!none
-     \setfalse\c_framed_has_offset
-     \setfalse\c_framed_has_strut
-     \setfalse\c_framed_is_overlaid
-     \d_framed_local_offset\d_framed_linewidth
-   \else\ifx\localoffset\v!overlay
-   % \ifx\p_framed_frame\v!no \setfalse\c_framed_has_frame \fi % test first
-     \setfalse\c_framed_has_offset
-     \setfalse\c_framed_has_strut
-     \settrue \c_framed_is_overlaid
-     \d_framed_local_offset\zeropoint
-%  \else\ifx\localoffset\v!strut
-%    \setfalse\c_framed_has_offset
-%    \settrue \c_framed_has_strut
-%    \settrue \c_framed_is_overlaid
-%    \d_framed_local_offset\zeropoint
-   \else
-     \settrue \c_framed_has_offset
-     \settrue \c_framed_has_strut
-     \setfalse\c_framed_is_overlaid
-     \ifx\localoffset\v!default % new per 2-6-2000
-       \let\localoffset\defaultframeoffset
-       \letframedparameter\c!offset\defaultframeoffset % brrr
+   \csname\??framedoffsetalternative
+     \ifcsname\??framedoffsetalternative\localoffset\endcsname
+       \localoffset
      \else
-       \let\defaultframeoffset\localoffset
+       \s!unknown
      \fi
-     \d_framed_local_offset\dimexpr\localoffset+\d_framed_linewidth\relax
-   \fi\fi % \fi
-   \d_framed_height\zeropoint
-   \d_framed_width \zeropoint
-   \ifx\localwidth\empty % fallback to fit
-     \ifconditional\c_framed_has_format
-       \settrue\c_framed_has_width
-       \d_framed_width\hsize
+   \endcsname
+   \csname\??framedwidthalternative
+     \ifcsname\??framedwidthalternative\localwidth\endcsname
+       \localwidth
      \else
-       \setfalse\c_framed_has_width
+       \s!unknown
      \fi
-   \else\ifx\localwidth\v!fit
-     \ifconditional\c_framed_has_format
-       \settrue\c_framed_has_width
-       \d_framed_width\hsize
+   \endcsname
+   \csname\??framedheightalternative
+     \ifcsname\??framedheightalternative\localheight\endcsname
+       \localheight
      \else
-       \setfalse\c_framed_has_width
+       \s!unknown
      \fi
-   \else\ifx\localwidth\v!fixed % equals \v!fit but no shapebox
-     \ifconditional\c_framed_has_format
-       \settrue\c_framed_has_width
-       \d_framed_width\hsize
-     \else
-       \setfalse\c_framed_has_width
-     \fi
-   \else\ifx\localwidth\v!broad
-     \settrue\c_framed_has_width
-     \d_framed_width\hsize
-   \else\ifx\localwidth\v!local
-     \settrue\c_framed_has_width
-     \setlocalhsize
-     \d_framed_width\localhsize
-   \else
-     \settrue\c_framed_has_width
-     \d_framed_width\localwidth
-   \fi\fi\fi\fi\fi
-   \ifx\localheight\empty  % fallback to fit
-     \setfalse\c_framed_has_height
-   \else\ifx\localheight\v!fit
-     \setfalse\c_framed_has_height
-   \else\ifx\localheight\v!broad
-     \setfalse\c_framed_has_height
-   \else
-     \settrue\c_framed_has_height
-     \d_framed_height\localheight
-   \fi\fi\fi
+   \endcsname
+   % the next check could move to heightalternative
    \ifconditional\c_framed_has_height
      % obey user set height, also downward compatible
    \else
@@ -1132,15 +1080,14 @@
    % i.e. disable (colsetbackgroundproblemintechniek)
    \advance\d_framed_width  -2\d_framed_local_offset
    \advance\d_framed_height -2\d_framed_local_offset
-   \ifx\localstrut\v!no
-     \setfalse\c_framed_has_strut
-   \else\ifx\localstrut\v!global
-     \setstrut
-   \else\ifx\localstrut\v!local
-     \setfontstrut
-   \else
-     \setstrut
-   \fi\fi\fi
+   \csname\??framedstrutalternative
+     \ifcsname\??framedstrutalternative\localstrut\endcsname
+       \localstrut
+     \else
+       \s!unknown
+     \fi
+   \endcsname
+   % the next check could move to strutalternative
    \ifconditional\c_framed_has_strut
      \let\localbegstrut\begstrut
      \let\localendstrut\endstrut
@@ -1219,6 +1166,136 @@
    \afterassignment\pack_framed_restart
    \setbox\b_framed_normal\next}
 
+% alternatives for width, height, strut and offset
+
+\installcorenamespace{framedwidthalternative}
+\installcorenamespace{framedheightalternative}
+\installcorenamespace{framedstrutalternative}
+\installcorenamespace{framedoffsetalternative}
+
+% widths
+
+\setvalue{\??framedwidthalternative\empty}%
+  {\ifconditional\c_framed_has_format
+     \settrue\c_framed_has_width
+     \d_framed_width\hsize
+   \else
+     \setfalse\c_framed_has_width
+     \d_framed_width\zeropoint
+   \fi}
+
+\setvalue{\??framedwidthalternative\v!fit}%
+  {\ifconditional\c_framed_has_format
+     \settrue\c_framed_has_width
+     \d_framed_width\hsize
+   \else
+     \setfalse\c_framed_has_width
+     \d_framed_width\zeropoint
+   \fi}
+
+\setvalue{\??framedwidthalternative\v!fixed}% equals \v!fit but no shapebox
+  {\ifconditional\c_framed_has_format
+     \settrue\c_framed_has_width
+     \d_framed_width\hsize
+   \else
+     \setfalse\c_framed_has_width
+     \d_framed_width\zeropoint
+   \fi}
+
+\setvalue{\??framedwidthalternative\v!broad}%
+  {\settrue\c_framed_has_width
+   \d_framed_width\hsize}
+
+\setvalue{\??framedwidthalternative\v!max}% idem broad
+  {\settrue\c_framed_has_width
+   \d_framed_width\hsize}
+
+\setvalue{\??framedwidthalternative\v!local}%
+  {\settrue\c_framed_has_width
+   \setlocalhsize
+   \d_framed_width\localhsize}
+
+\setvalue{\??framedwidthalternative\s!unknown}%
+  {\settrue\c_framed_has_width
+   \d_framed_width\localwidth}
+
+% heights
+
+\setvalue{\??framedheightalternative\empty}%
+  {\setfalse\c_framed_has_height
+   \d_framed_height\zeropoint}
+
+\setvalue{\??framedheightalternative\v!fit}%
+  {\setfalse\c_framed_has_height
+   \d_framed_height\zeropoint}
+
+\setvalue{\??framedheightalternative\v!broad}%
+  {\setfalse\c_framed_has_height
+   \d_framed_height\zeropoint}
+
+\setvalue{\??framedheightalternative\v!max}%
+  {\settrue\c_framed_has_height
+   \d_framed_height\vsize}
+
+\setvalue{\??framedheightalternative\s!unknown}%
+  {\settrue\c_framed_has_height
+   \d_framed_height\localheight}
+
+% struts
+
+\setvalue{\??framedstrutalternative\v!no}%
+  {\setfalse\c_framed_has_strut}
+
+\setvalue{\??framedstrutalternative\v!global}%
+  {\setstrut}
+
+\setvalue{\??framedstrutalternative\v!local}%
+  {\setfontstrut}
+
+\setvalue{\??framedstrutalternative\v!yes}%
+  {\setstrut}
+
+\setvalue{\??framedstrutalternative\s!unknown}%
+  {\setstrut}
+
+% offsets
+
+\setvalue{\??framedoffsetalternative\v!none}%
+  {\setfalse\c_framed_has_offset
+   \setfalse\c_framed_has_strut
+   \setfalse\c_framed_is_overlaid
+   \d_framed_local_offset\d_framed_linewidth}
+
+\setvalue{\??framedoffsetalternative\v!overlay}%
+  {% \ifx\p_framed_frame\v!no \setfalse\c_framed_has_frame \fi % test first
+   \setfalse\c_framed_has_offset
+   \setfalse\c_framed_has_strut
+   \settrue \c_framed_is_overlaid
+   \d_framed_local_offset\zeropoint}
+
+% \setvalue{\??framedoffsetalternative\v!strut}%
+%   {\setfalse\c_framed_has_offset
+%    \settrue \c_framed_has_strut
+%    \settrue \c_framed_is_overlaid
+%    \d_framed_local_offset\zeropoint}
+
+\setvalue{\??framedoffsetalternative\v!default}% new per 2-6-2000
+  {\settrue \c_framed_has_offset
+   \settrue \c_framed_has_strut
+   \setfalse\c_framed_is_overlaid
+   \let\localoffset\defaultframeoffset
+   \letframedparameter\c!offset\defaultframeoffset % brrr
+   \d_framed_local_offset\dimexpr\localoffset+\d_framed_linewidth\relax}
+
+\setvalue{\??framedoffsetalternative\s!unknown}%
+  {\settrue \c_framed_has_offset
+   \settrue \c_framed_has_strut
+   \setfalse\c_framed_is_overlaid
+   \let\defaultframeoffset\localoffset
+   \d_framed_local_offset\dimexpr\localoffset+\d_framed_linewidth\relax}
+
+% so far for alternatives
+
 \let\pack_framed_stop_orientation\relax
 
 \def\pack_framed_restart
@@ -1238,7 +1315,7 @@
 %D
 %D Offset helper (see menus):
 
-\def\doassigncheckedframeoffset#1#2%
+\def\doassigncheckedframeoffset#1#2% could be a fast \csname .. \endcsname
   {\edef\checkedframeoffset{#2}%
    #1%
      \ifx\checkedframeoffset\empty    \zeropoint\else
diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf
index 3b5e3291c..6ee3c4f18 100644
Binary files a/tex/context/base/status-files.pdf and b/tex/context/base/status-files.pdf differ
diff --git a/tex/context/base/status-lua.pdf b/tex/context/base/status-lua.pdf
index fc2a6c247..f1e84a241 100644
Binary files a/tex/context/base/status-lua.pdf and b/tex/context/base/status-lua.pdf differ
diff --git a/tex/context/base/strc-not.mkvi b/tex/context/base/strc-not.mkvi
index 8b3887a81..ce37a5717 100644
--- a/tex/context/base/strc-not.mkvi
+++ b/tex/context/base/strc-not.mkvi
@@ -1713,8 +1713,19 @@
 \unexpanded\def\startlocalfootnotes    {\startlocalnotes                               [\v!footnote]} %  alleen footnote
 \unexpanded\def\stoplocalfootnotes     {\stoplocalnotes }
 
-\def\strc_notes_place_footnotes      [#1][#2]{\ifsecondargument\placenotes     [#1][#2,\c!height=\textheight]\else\placenotes     [#1]\fi}
-\def\strc_notes_place_local_footnotes[#1][#2]{\ifsecondargument\placelocalnotes[#1][#2,\c!height=\textheight]\else\placelocalnotes[#1]\fi}
+\def\strc_notes_place_footnotes[#1][#2]%
+  {\ifsecondargument
+     \placenotes[#1][#2,\c!height=\textheight]%
+   \else
+     \placenotes[#1][\c!height=\textheight]%
+   \fi}
+
+\def\strc_notes_place_local_footnotes[#1][#2]%
+  {\ifsecondargument
+     \placelocalnotes[#1][#2,\c!height=\textheight]%
+   \else
+     \placelocalnotes[#1][\c!height=\textheight]%
+   \fi}
 
 %D Goodies:
 %D
diff --git a/tex/context/base/syst-gen.mkii b/tex/context/base/syst-gen.mkii
index bb0f54d11..8b71b77d5 100644
--- a/tex/context/base/syst-gen.mkii
+++ b/tex/context/base/syst-gen.mkii
@@ -657,6 +657,11 @@
 \def\resetvalue   #1{\expandafter\let\csname#1\endcsname\empty}
 \def\ignorevalue#1#2{\expandafter\let\csname#1\endcsname\empty}
 
+\def\setuvalue    #1{\normalprotected\expandafter \def\csname#1\endcsname}
+\def\setuevalue   #1{\normalprotected\expandafter\edef\csname#1\endcsname}
+\def\setugvalue   #1{\normalprotected\expandafter\gdef\csname#1\endcsname}
+\def\setuxvalue   #1{\normalprotected\expandafter\xdef\csname#1\endcsname}
+
 %D \macros
 %D   {globallet,glet}
 %D
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index c28cd2a74..864baf31d 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  : 06/13/12 23:46:07
+-- merge date  : 06/18/12 17:11:41
 
 do -- begin closure to overcome local limits and interference
 
-- 
cgit v1.2.3