summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tex/context/base/cont-new.mkiv2
-rw-r--r--tex/context/base/context-version.pdfbin4383 -> 4383 bytes
-rw-r--r--tex/context/base/context.mkiv2
-rw-r--r--tex/context/base/core-uti.lua2
-rw-r--r--tex/context/base/font-def.lua4
-rw-r--r--tex/context/base/font-pre.mkiv19
-rw-r--r--tex/context/base/font-syn.lua52
-rw-r--r--tex/context/base/font-tfm.lua1
-rw-r--r--tex/context/base/mult-de.mkii1
-rw-r--r--tex/context/base/mult-def.lua10
-rw-r--r--tex/context/base/mult-en.mkii1
-rw-r--r--tex/context/base/mult-fr.mkii1
-rw-r--r--tex/context/base/mult-it.mkii1
-rw-r--r--tex/context/base/mult-nl.mkii1
-rw-r--r--tex/context/base/mult-pe.mkii1
-rw-r--r--tex/context/base/mult-ro.mkii1
-rw-r--r--tex/context/base/publ-dat.lua9
-rw-r--r--tex/context/base/publ-imp-apa.lua10
-rw-r--r--tex/context/base/publ-ini.mkiv98
-rw-r--r--tex/context/base/publ-reg.lua57
-rw-r--r--tex/context/base/publ-tra.lua118
-rw-r--r--tex/context/base/status-files.pdfbin24687 -> 24688 bytes
-rw-r--r--tex/context/base/status-lua.pdfbin333711 -> 333716 bytes
-rw-r--r--tex/context/base/strc-reg.lua6
-rw-r--r--tex/context/base/strc-reg.mkiv3
-rw-r--r--tex/context/interface/keys-cs.xml1
-rw-r--r--tex/context/interface/keys-de.xml1
-rw-r--r--tex/context/interface/keys-en.xml1
-rw-r--r--tex/context/interface/keys-fr.xml1
-rw-r--r--tex/context/interface/keys-it.xml1
-rw-r--r--tex/context/interface/keys-nl.xml1
-rw-r--r--tex/context/interface/keys-pe.xml1
-rw-r--r--tex/context/interface/keys-ro.xml1
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua7
34 files changed, 260 insertions, 155 deletions
diff --git a/tex/context/base/cont-new.mkiv b/tex/context/base/cont-new.mkiv
index 4b417bda2..90c5f8b0f 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{2014.10.29 00:18}
+\newcontextversion{2014.10.29 15:20}
%D This file is loaded at runtime, thereby providing an excellent place for
%D hacks, patches, extensions and new features.
diff --git a/tex/context/base/context-version.pdf b/tex/context/base/context-version.pdf
index dec3b2f57..22337038f 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.mkiv b/tex/context/base/context.mkiv
index 26a00b8a5..8bd607974 100644
--- a/tex/context/base/context.mkiv
+++ b/tex/context/base/context.mkiv
@@ -28,7 +28,7 @@
%D up and the dependencies are more consistent.
\edef\contextformat {\jobname}
-\edef\contextversion{2014.10.29 00:18}
+\edef\contextversion{2014.10.29 15:20}
\edef\contextkind {beta}
%D For those who want to use this:
diff --git a/tex/context/base/core-uti.lua b/tex/context/base/core-uti.lua
index d172eb05f..4075043af 100644
--- a/tex/context/base/core-uti.lua
+++ b/tex/context/base/core-uti.lua
@@ -36,7 +36,7 @@ local report_passes = logs.reporter("job","passes")
job = job or { }
local job = job
-job.version = 1.25
+job.version = 1.26
job.packversion = 1.02
-- some day we will implement loading of other jobs and then we need
diff --git a/tex/context/base/font-def.lua b/tex/context/base/font-def.lua
index e5c5d990c..fdded3c36 100644
--- a/tex/context/base/font-def.lua
+++ b/tex/context/base/font-def.lua
@@ -433,8 +433,8 @@ function definers.read(specification,size,id) -- id can be optional, name can al
elseif trace_defining and type(tfmdata) == "table" then
local properties = tfmdata.properties or { }
local parameters = tfmdata.parameters or { }
- report_defining("using %s font with id %a, name %a, size %a, bytes %a, encoding %a, fullname %a, filename %a",
- properties.format, id, properties.name, parameters.size, properties.encodingbytes,
+ report_defining("using %a font with id %a, name %a, size %a, bytes %a, encoding %a, fullname %a, filename %a",
+ properties.format or "unknown", id, properties.name, parameters.size, properties.encodingbytes,
properties.encodingname, properties.fullname, file.basename(properties.filename))
end
statistics.stoptiming(fonts)
diff --git a/tex/context/base/font-pre.mkiv b/tex/context/base/font-pre.mkiv
index cb5b193f6..071d42d09 100644
--- a/tex/context/base/font-pre.mkiv
+++ b/tex/context/base/font-pre.mkiv
@@ -496,15 +496,16 @@
\definefontsize[\s!a] \definefontsize[\s!b]
\definefontsize[\s!c] \definefontsize[\s!d]
-\definealternativestyle [\v!mediaeval] [\os] []
-\definealternativestyle [\v!normal] [\tf] []
-\definealternativestyle [\v!bold] [\bf] []
-\definealternativestyle [\v!type] [\tt] []
-\definealternativestyle [\v!mono] [\tt] []
-\definealternativestyle [\v!slanted] [\sl] []
-\definealternativestyle [\v!italic] [\it] []
-\definealternativestyle [\v!boldslanted,\v!slantedbold] [\bs] []
-\definealternativestyle [\v!bolditalic,\v!italicbold] [\bi] []
+\definealternativestyle [\v!mediaeval] [\os] []
+\definealternativestyle [\v!normal] [\tf] []
+\definealternativestyle [\v!bold] [\bf] []
+\definealternativestyle [\v!type] [\tt] []
+\definealternativestyle [\v!mono] [\tt] []
+\definealternativestyle [\v!monobold] [\tt\bf] []
+\definealternativestyle [\v!slanted] [\sl] []
+\definealternativestyle [\v!italic] [\it] []
+\definealternativestyle [\v!boldslanted,\v!slantedbold] [\bs] []
+\definealternativestyle [\v!bolditalic,\v!italicbold] [\bi] []
\definealternativestyle [\v!small,\v!smallnormal] [\setsmallbodyfont\tf] []
\definealternativestyle [\v!smallbold] [\setsmallbodyfont\bf] []
diff --git a/tex/context/base/font-syn.lua b/tex/context/base/font-syn.lua
index a1bee5d54..450bdad75 100644
--- a/tex/context/base/font-syn.lua
+++ b/tex/context/base/font-syn.lua
@@ -330,7 +330,7 @@ filters.dfont = fontloader.info
-- function fontloader.fullinfo(name)
-- local ff = fontloader.open(name)
-- if ff then
--- local fields = table.tohash(fontloader.fields(ff),true)
+-- local fields = table.tohash(fontloader.fields(ff),true) -- isn't that one stable
-- local d = {
-- names = fields.names and ff.names,
-- familyname = fields.familyname and ff.familyname,
@@ -356,20 +356,58 @@ filters.dfont = fontloader.info
-- end
-- end
--- As we have lazy loading anyway, this one still is full and with less code than
--- the previous one. But this depends on the garbage collector to kick in.
+-- more efficient:
+
+local fields = nil
-function fontloader.fullinfo(...)
- local ff = fontloader.open(...)
+function fontloader.fullinfo(name)
+ local ff = fontloader.open(name)
if ff then
- local d = { } -- ff is userdata so [1] or # fails on it
- setmetatableindex(d,ff)
+ if not fields then
+ fields = table.tohash(fontloader.fields(ff),true)
+ end
+ -- unfortunately luatex aborts when a field is not available
+ local d = {
+ names = fields.names and ff.names,
+ familyname = fields.familyname and ff.familyname,
+ fullname = fields.fullname and ff.fullname,
+ fontname = fields.fontname and ff.fontname,
+ weight = fields.weight and ff.weight,
+ italicangle = fields.italicangle and ff.italicangle,
+ units_per_em = fields.units_per_em and ff.units_per_em,
+ design_range_bottom = fields.design_range_bottom and ff.design_range_bottom,
+ design_range_top = fields.design_range_top and ff.design_range_top,
+ design_size = fields.design_size and ff.design_size,
+ italicangle = fields.italicangle and ff.italicangle,
+ pfminfo = fields.pfminfo and ff.pfminfo,
+ top_side_bearing = fields.top_side_bearing and ff.top_side_bearing, -- not there
+ }
+ setmetatableindex(d,function(t,k)
+ report_names("warning, trying to access field %a in font table of %a",k,name)
+ end)
+ fontloader.close(ff)
return d
else
return nil, "error in loading font"
end
end
+-- As we have lazy loading anyway, this one still is full and with less code than
+-- the previous one. But this depends on the garbage collector to kick in and in the
+-- current version that somehow happens not that often (on my machine I end up with
+-- soem 3 GB extra before that happens).
+
+-- function fontloader.fullinfo(...)
+-- local ff = fontloader.open(...)
+-- if ff then
+-- local d = { } -- ff is userdata so [1] or # fails on it
+-- setmetatableindex(d,ff)
+-- return d -- garbage collection will do the fontloader.close(ff)
+-- else
+-- return nil, "error in loading font"
+-- end
+-- end
+
-- We don't get the design_* values here as for that the fontloader has to load feature
-- info and therefore we're not much better off than using 'open'.
--
diff --git a/tex/context/base/font-tfm.lua b/tex/context/base/font-tfm.lua
index 14c130d10..49df94e68 100644
--- a/tex/context/base/font-tfm.lua
+++ b/tex/context/base/font-tfm.lua
@@ -70,6 +70,7 @@ local function read_from_tfm(specification)
properties.fontname = tfmdata.fontname
properties.psname = tfmdata.psname
properties.filename = specification.filename
+ properties.format = fonts.formats.tfm -- better than nothing
parameters.size = size
shared.rawdata = { }
shared.features = features
diff --git a/tex/context/base/mult-de.mkii b/tex/context/base/mult-de.mkii
index 53f0dfd6a..083ea5f08 100644
--- a/tex/context/base/mult-de.mkii
+++ b/tex/context/base/mult-de.mkii
@@ -302,6 +302,7 @@
\setinterfacevariable{mirrored}{gespiegelt}
\setinterfacevariable{monday}{montag}
\setinterfacevariable{mono}{mono}
+\setinterfacevariable{monobold}{monofett}
\setinterfacevariable{month}{monat}
\setinterfacevariable{more}{more}
\setinterfacevariable{morehyphenation}{morehyphenation}
diff --git a/tex/context/base/mult-def.lua b/tex/context/base/mult-def.lua
index b41053dd5..8f18fbf4b 100644
--- a/tex/context/base/mult-def.lua
+++ b/tex/context/base/mult-def.lua
@@ -14398,6 +14398,16 @@ return {
["pe"]="مونو",
["ro"]="mono",
},
+ ["monobold"]={
+ ["cs"]="monotucne",
+ ["de"]="monofett",
+ ["en"]="monobold",
+ ["fr"]="monogras",
+ ["it"]="monograssetto",
+ ["nl"]="monovet",
+ ["pe"]="monobold",
+ ["ro"]="monoaldin",
+ },
["month"]={
["cs"]="mesic",
["de"]="monat",
diff --git a/tex/context/base/mult-en.mkii b/tex/context/base/mult-en.mkii
index 346f94cad..1af7efef3 100644
--- a/tex/context/base/mult-en.mkii
+++ b/tex/context/base/mult-en.mkii
@@ -302,6 +302,7 @@
\setinterfacevariable{mirrored}{mirrored}
\setinterfacevariable{monday}{monday}
\setinterfacevariable{mono}{mono}
+\setinterfacevariable{monobold}{monobold}
\setinterfacevariable{month}{month}
\setinterfacevariable{more}{more}
\setinterfacevariable{morehyphenation}{morehyphenation}
diff --git a/tex/context/base/mult-fr.mkii b/tex/context/base/mult-fr.mkii
index 681c67bbc..5e35fe65a 100644
--- a/tex/context/base/mult-fr.mkii
+++ b/tex/context/base/mult-fr.mkii
@@ -302,6 +302,7 @@
\setinterfacevariable{mirrored}{reflete}
\setinterfacevariable{monday}{lundi}
\setinterfacevariable{mono}{mono}
+\setinterfacevariable{monobold}{monogras}
\setinterfacevariable{month}{mois}
\setinterfacevariable{more}{more}
\setinterfacevariable{morehyphenation}{morehyphenation}
diff --git a/tex/context/base/mult-it.mkii b/tex/context/base/mult-it.mkii
index 4f9941a04..b154fb167 100644
--- a/tex/context/base/mult-it.mkii
+++ b/tex/context/base/mult-it.mkii
@@ -302,6 +302,7 @@
\setinterfacevariable{mirrored}{riflesso}
\setinterfacevariable{monday}{lunedi}
\setinterfacevariable{mono}{mono}
+\setinterfacevariable{monobold}{monograssetto}
\setinterfacevariable{month}{mese}
\setinterfacevariable{more}{more}
\setinterfacevariable{morehyphenation}{morehyphenation}
diff --git a/tex/context/base/mult-nl.mkii b/tex/context/base/mult-nl.mkii
index 771d48c3c..bf441b849 100644
--- a/tex/context/base/mult-nl.mkii
+++ b/tex/context/base/mult-nl.mkii
@@ -302,6 +302,7 @@
\setinterfacevariable{mirrored}{gespiegeld}
\setinterfacevariable{monday}{maandag}
\setinterfacevariable{mono}{mono}
+\setinterfacevariable{monobold}{monovet}
\setinterfacevariable{month}{maand}
\setinterfacevariable{more}{meer}
\setinterfacevariable{morehyphenation}{morehyphenation}
diff --git a/tex/context/base/mult-pe.mkii b/tex/context/base/mult-pe.mkii
index 7fa8bb772..b10e03cb0 100644
--- a/tex/context/base/mult-pe.mkii
+++ b/tex/context/base/mult-pe.mkii
@@ -302,6 +302,7 @@
\setinterfacevariable{mirrored}{منعکس}
\setinterfacevariable{monday}{دوشنبه}
\setinterfacevariable{mono}{مونو}
+\setinterfacevariable{monobold}{monobold}
\setinterfacevariable{month}{ماه}
\setinterfacevariable{more}{more}
\setinterfacevariable{morehyphenation}{شکست‌کلمات‌بیشتر}
diff --git a/tex/context/base/mult-ro.mkii b/tex/context/base/mult-ro.mkii
index 0ed0df4f1..42cd8d32c 100644
--- a/tex/context/base/mult-ro.mkii
+++ b/tex/context/base/mult-ro.mkii
@@ -302,6 +302,7 @@
\setinterfacevariable{mirrored}{oglindit}
\setinterfacevariable{monday}{luni}
\setinterfacevariable{mono}{mono}
+\setinterfacevariable{monobold}{monoaldin}
\setinterfacevariable{month}{luna}
\setinterfacevariable{more}{more}
\setinterfacevariable{morehyphenation}{morehyphenation}
diff --git a/tex/context/base/publ-dat.lua b/tex/context/base/publ-dat.lua
index 67ab81e9f..0d1e10e66 100644
--- a/tex/context/base/publ-dat.lua
+++ b/tex/context/base/publ-dat.lua
@@ -160,7 +160,14 @@ local specifications = setmetatableindex(function(t,name)
local d = data[t]
if d then
for i=1,#d do
- list[d[i]] = t
+ local di = d[i]
+ if type(di) == "table" then
+ for i=1,#di do
+ list[di] = di[i]
+ end
+ else
+ list[di] = t
+ end
end
else
data[t] = { }
diff --git a/tex/context/base/publ-imp-apa.lua b/tex/context/base/publ-imp-apa.lua
index 5eabfbe22..8ec46b76c 100644
--- a/tex/context/base/publ-imp-apa.lua
+++ b/tex/context/base/publ-imp-apa.lua
@@ -11,26 +11,26 @@ return {
copyright = "ConTeXt development team",
categories = {
article = {
- required = { "author", "editor", "title"},
+ required = { { "author", "editor" }, "title"},
optional = { "year", "type", "journal", "volume", "number", "pages", "url", "note", "doi" },
virtual = virtual,
author = authors,
},
magazine = {
- required = { "author", "editor", "title", "journal", "year" },
+ required = { { "author", "editor" }, "title", "journal", "year" },
optional = { "volume", "number", "pages", "month", "day", "note", "url", "doi" },
virtual = virtual,
author = authors,
},
newspaper = {
- required = { "author", "editor", "title", "journal", "year" },
+ required = { { "author", "editor" }, "title", "journal", "year" },
optional = { "volume", "number", "pages", "month", "day", "note", "url", "doi" },
virtual = virtual,
author = authors,
},
book = {
virtual = { "authoryear" },
- required = { "author", "editor", "publisher", "title"},
+ required = { { "author", "editor", "publisher" }, "title"},
optional = { "year", "month", "day", "title", "type", "edition", "series", "volume", "number", "pages", "address", "publisher", "url", "note", "ISBN" },
virtual = virtual,
author = authors,
@@ -42,7 +42,7 @@ return {
author = authors,
},
inbook = {
- required = { "author", "editor", "title", "chapter", "pages", "publisher","year" },
+ required = { { "author", "editor", "publisher" }, "title", "chapter", "pages","year" },
optional = { "volume", "number", "series", "type", "address", "edition", "month", "note", "ISBN" },
virtual = virtual,
author = authors,
diff --git a/tex/context/base/publ-ini.mkiv b/tex/context/base/publ-ini.mkiv
index 254c99994..391c9c7d8 100644
--- a/tex/context/base/publ-ini.mkiv
+++ b/tex/context/base/publ-ini.mkiv
@@ -1265,7 +1265,7 @@
field = "\btxregisterparameter\c!field",
register = "\btxregisterparameter\c!register",
method = "\btxregisterparameter\c!method",
- alternative = "\btxregisterparameter\c!alternative",
+ % alternative = "\btxregisterparameter\c!alternative",
}}%
\fi}
@@ -1278,55 +1278,69 @@
\to \everysetupbtxregister
\appendtoks
+ \normalexpanded{%
+ \defineprocessor
+ [\s!btx:r:\currentbtxregister]%
+ [\c!style=\noexpand\namedbtxregisterparameter{\currentbtxregister}\noexpand\c!style,
+ \c!color=\noexpand\namedbtxregisterparameter{\currentbtxregister}\noexpand\c!color]}%
+\to \everydefinebtxregister
+
+\appendtoks
\ctxcommand{btxtoregister("\currentbtxdataset","\currentbtxtag")}%
\to \t_btx_reference_inject
-\unexpanded\def\dosetfastregisterentry#1#2#3% register entry key
- {\begingroup
- \edef\currentregister{#1}%
- \setnextinternalreference
- \xdef\currentregisternumber{\ctxcommand{storeregister{
- metadata = { name = "\currentregister" },
- entries = { { \!!bs#2\!!es }, { \!!bs#3\!!es } },
- }
- }}%
- \xdef\currentregistersynchronize{\ctxlatecommand{enhanceregister("\currentregister",\currentregisternumber)}}%
- \currentregistersynchronize % here?
- \dostarttagged\t!registerlocation\currentregister
- \attribute\destinationattribute\lastdestinationattribute \signalcharacter % no \strut as it will be removed during cleanup
- \dotagregisterlocation
- \dostoptagged
- \endgroup}
+% \unexpanded\def\dosetfastregisterentry#1#2#3% register entry key
+% {\begingroup
+% \edef\currentregister{#1}%
+% \setnextinternalreference
+% \xdef\currentregisternumber{\ctxcommand{storeregister{
+% metadata = { name = "\currentregister" },
+% entries = { { \!!bs#2\!!es }, { \!!bs#3\!!es } },
+% }
+% }}%
+% \xdef\currentregistersynchronize{\ctxlatecommand{enhanceregister("\currentregister",\currentregisternumber)}}%
+% \currentregistersynchronize % here?
+% \dostarttagged\t!registerlocation\currentregister
+% \attribute\destinationattribute\lastdestinationattribute \signalcharacter % no \strut as it will be removed during cleanup
+% \dotagregisterlocation
+% \dostoptagged
+% \endgroup}
-\unexpanded\def\btx_flush_specific_field#1#2#3#4#5% dataset tag field variant value
- {\begingroup
- \edef\currentbtxdataset{#1}%
- \edef\currentbtxtag {#2}%
- \edef\currentbtxfield {#3}%
- \let\currentbtxlistvariant\currentbtxfield
- \edef\currentbtxcitevariant{#4}%
- \usebtxregisterstyleandcolor\c!style\c!color
- \edef\tempstring{\currentbtxalternative:register:\currentbtxcitevariant}%
- \doifsetupselse\tempstring{\fastsetup\tempstring}{#5}%
- \endgroup}
+% \unexpanded\def\btx_flush_specific_field#1#2#3#4#5% dataset tag field variant value
+% {\begingroup
+% \edef\currentbtxdataset{#1}%
+% \edef\currentbtxtag {#2}%
+% \edef\currentbtxfield {#3}%
+% \let\currentbtxlistvariant\currentbtxfield
+% \edef\currentbtxcitevariant{#4}%
+% \usebtxregisterstyleandcolor\c!style\c!color
+% \edef\tempstring{\currentbtxalternative:register:\currentbtxcitevariant}%
+% \doifsetupselse\tempstring{\fastsetup\tempstring}{#5}%
+% \endgroup}
+
+% \unexpanded\def\btx_flush_specific_author#1#2#3#4#5% dataset tag field variantindex
+% {\begingroup
+% \edef\currentbtxdataset{#1}%
+% \edef\currentbtxtag {#2}%
+% \edef\currentbtxfield {#3}%
+% \let\currentbtxlistvariant\currentbtxfield
+% \edef\currentbtxcitevariant{#4}%
+% \ctxcommand{btxauthor("\currentbtxdataset","\currentbtxtag","\currentbtxfield",{
+% kind = "list",
+% index = \number#5,
+% combiner = "\currentbtxcitevariant",
+% })}%
+% \endgroup}
+
+% \let\dobtxindexedfield \btx_flush_specific_field % used at lua end
+% \let\dobtxindexedauthor\btx_flush_specific_author % used at lua end
-\unexpanded\def\btx_flush_specific_author#1#2#3#4#5% dataset tag field variantindex
+\unexpanded\def\dobtxindexedfield#1% value
{\begingroup
- \edef\currentbtxdataset{#1}%
- \edef\currentbtxtag {#2}%
- \edef\currentbtxfield {#3}%
- \let\currentbtxlistvariant\currentbtxfield
- \edef\currentbtxcitevariant{#4}%
- \ctxcommand{btxauthor("\currentbtxdataset","\currentbtxtag","\currentbtxfield",{
- kind = "list",
- index = \number#5,
- combiner = "\currentbtxcitevariant",
- })}%
+ \usebtxregisterstyleandcolor\c!style\c!color
+ #1%
\endgroup}
-\let\dobtxindexedfield \btx_flush_specific_field % used at lua end
-\let\dobtxindexedauthor\btx_flush_specific_author % used at lua end
-
%D Defaults:
\setbtxdataset
diff --git a/tex/context/base/publ-reg.lua b/tex/context/base/publ-reg.lua
index ee2bd6f47..80a3b789c 100644
--- a/tex/context/base/publ-reg.lua
+++ b/tex/context/base/publ-reg.lua
@@ -26,7 +26,7 @@ local sequence = { }
local flushers = { }
function commands.setbtxregister(specification)
- local name = specification.name or "unset"
+ local name = specification.name
local register = specification.register
local dataset = specification.dataset
local field = specification.field
@@ -50,18 +50,13 @@ function commands.setbtxregister(specification)
--
-- check all
--
- local alternative = specification.alternative or d.alternative
- if not alternative or alternative == "" then
- alternative = field
- end
- --
- d.active = specification.state ~= v_stop
- d.once = specification.method == v_once or false
- d.field = field
- d.alternative = alternative
- d.register = register
- d.dataset = dataset
- d.done = d.done or { }
+ d.active = specification.state ~= v_stop
+ d.once = specification.method == v_once or false
+ d.field = field
+ d.processor = name ~= register and name or ""
+ d.register = register
+ d.dataset = dataset
+ d.done = d.done or { }
--
sequence = { }
for register, s in sortedhash(specifications) do
@@ -83,11 +78,14 @@ function commands.btxtoregister(dataset,tag)
local current = datasets[dataset]
local entry = current.luadata[tag]
if entry then
- local register = step.register
- local field = step.field
- local alternative = step.alternative
- local flusher = flushers[field] or flushers.default
- flusher(register,dataset,tag,field,alternative,current,entry,current.details[tag])
+ local register = step.register
+ local field = step.field
+ local processor = step.processor
+ local flusher = flushers[field] or flushers.default
+ if processor and processor ~= "" then
+ processor = "btx:r:" .. processor
+ end
+ flusher(register,dataset,tag,field,processor,current,entry,current.details[tag])
end
done[tag] = true
end
@@ -104,45 +102,38 @@ end
local ctx_dosetfastregisterentry = context.dosetfastregisterentry -- register entry key
-local f_field = formatters[ [[\dobtxindexedfield{%s}{%s}{%s}{%s}{%s}]] ]
-local f_author = formatters[ [[\dobtxindexedauthor{%s}{%s}{%s}{%s}{%s}]] ]
-
local p_keywords = lpeg.tsplitat(lpeg.patterns.whitespace^0 * lpeg.P(";") * lpeg.patterns.whitespace^0)
local writer = publications.serializeauthor
-function flushers.default(register,dataset,tag,field,alternative,current,entry,detail)
+function flushers.default(register,dataset,tag,field,processor,current,entry,detail)
local k = detail[field] or entry[field]
if k then
- local e = f_field(dataset,tag,field,alternative,k)
- ctx_dosetfastregisterentry(register,e,k)
+ ctx_dosetfastregisterentry(register,k,"",processor,"")
end
end
-function flushers.author(register,dataset,tag,field,alternative,current,entry,detail)
+function flushers.author(register,dataset,tag,field,processor,current,entry,detail)
if detail then
local author = detail[field]
if author then
for i=1,#author do
- local a = author[i]
- local k = writer{a}
- local e = f_author(dataset,tag,field,alternative,i)
- ctx_dosetfastregisterentry(register,e,k)
+ local k = writer { author[i] }
+ ctx_dosetfastregisterentry(register,k,"",processor,"") -- todo .. sort key
end
end
end
end
-function flushers.keywords(register,dataset,tag,field,alternative,current,entry,detail)
+function flushers.keywords(register,dataset,tag,field,processor,current,entry,detail)
if entry then
- -- we don't split keywords in details (yet) ... could be an alternative some day
local keywords = entry[field]
if keywords then
keywords = lpegmatch(p_keywords,keywords)
for i=1,#keywords do
local k = keywords[i]
- local e = f_field(dataset,tag,field,alternative,k)
- ctx_dosetfastregisterentry(register,e,k)
+ ctx_dosetfastregisterentry(register,k,"",processor,"")
end
end
end
end
+
diff --git a/tex/context/base/publ-tra.lua b/tex/context/base/publ-tra.lua
index cd4ebca1a..531a9409a 100644
--- a/tex/context/base/publ-tra.lua
+++ b/tex/context/base/publ-tra.lua
@@ -19,7 +19,7 @@ local specifications = publications.specifications
local context = context
local ctx_NC, ctx_NR, ctx_HL, ctx_FL, ctx_ML, ctx_LL = context.NC, context.NR, context.HL, context.FL, context.ML, context.LL
-local ctx_bold, ctx_rotate, ctx_llap = context.bold, context.rotate, context.llap
+local ctx_bold, ctx_monobold, ctx_rotate, ctx_llap = context.bold, context.formatted.monobold, context.rotate, context.llap
local ctx_darkgreen, ctx_darkred, ctx_darkblue = context.darkgreen, context.darkred, context.darkblue
local ctx_starttabulate, ctx_stoptabulate = context.starttabulate, context.stoptabulate
@@ -92,63 +92,67 @@ function tracers.showdatasetcompleteness(settings)
local lpegmatch = lpeg.match
local texescape = lpeg.patterns.texescape
- local preamble = { "|lBTw(10em)|p|" }
+ local preamble = { "|lTBw(5em)|lBTp(10em)|p|" }
- local function required(foundfields,key,value,indirect)
- ctx_NC() ctx_darkgreen(key)
- ctx_NC() if indirect then
- ctx_darkblue(lpegmatch(texescape,value))
- elseif value then
- context(lpegmatch(texescape,value))
+ local function identified(tag,category,crossref)
+ ctx_NC()
+ ctx_NC() ctx_monobold(category)
+ ctx_NC() if crossref then
+ ctx_monobold("%s\\hfill\\darkblue => %s",tag,crossref)
else
- ctx_darkred("\\tttf [missing]")
+ ctx_monobold(tag)
end
ctx_NC() ctx_NR()
- foundfields[key] = nil
end
- local function optional(foundfields,key,value,indirect)
+ local function required(done,foundfields,key,value,indirect)
+ ctx_NC() if not done then context("required") end
ctx_NC() context(key)
- ctx_NC() if indirect then
- ctx_darkblue(lpegmatch(texescape,value))
- elseif value then
+ ctx_NC()
+ if indirect then
+ if value then
+ ctx_darkblue(lpegmatch(texescape,value))
+ else
+ ctx_darkred("\\tttf [missing crossref]")
+ end
+ elseif value then
context(lpegmatch(texescape,value))
- end
+ else
+ ctx_darkred("\\tttf [missing value]")
+ end
ctx_NC() ctx_NR()
foundfields[key] = nil
+ return done or true
end
- local function optional(foundfields,key,value,indirect)
+ local function optional(done,foundfields,key,value,indirect)
+ ctx_NC() if not done then context("optional") end
ctx_NC() context(key)
- ctx_NC() if indirect then
+ ctx_NC()
+ if indirect then
ctx_darkblue(lpegmatch(texescape,value))
- elseif value then
+ elseif value then
context(lpegmatch(texescape,value))
- end
+ end
ctx_NC() ctx_NR()
foundfields[key] = nil
+ return done or true
end
- local function identified(tag,category,crossref)
- ctx_NC() context(category)
- ctx_NC() if crossref then
- context("\\tttf %s\\hfill\\darkblue => %s",tag,crossref)
- else
- context("\\tttf %s",tag)
- end
- ctx_NC() ctx_NR()
- end
-
- local function special(key,value)
- ctx_NC() ctx_darkblue(key)
+ local function special(done,key,value)
+ ctx_NC() if not done then context("special") end
+ ctx_NC() context(key)
ctx_NC() context(lpegmatch(texescape,value))
ctx_NC() ctx_NR()
+ return done or true
end
- local function extra(key,value)
- ctx_NC() ctx_llap("+") context(key)
+ local function extra(done,key,value)
+ ctx_NC() if not done then context("extra") end
+ ctx_NC() context(key)
ctx_NC() context(lpegmatch(texescape,value))
ctx_NC() ctx_NR()
+ return done or true
end
if next(luadata) then
@@ -164,35 +168,37 @@ function tracers.showdatasetcompleteness(settings)
ctx_FL()
if fields then
local requiredfields = fields.required
- local optionalfields = fields.optional
+ local done = false
if requiredfields then
for i=1,#requiredfields do
local r = requiredfields[i]
if type(r) == "table" then
-- this has to be done differently now
- local okay = true
+ local okay = false
for i=1,#r do
local ri = r[i]
if rawget(entry,ri) then
- required(foundfields,ri,entry[ri])
+ done = required(done,foundfields,ri,entry[ri])
okay = true
elseif entry[ri] then
- required(foundfields,ri,entry[ri],true)
+ done = required(done,foundfields,ri,entry[ri],true)
okay = true
end
end
if not okay then
- required(foundfields,table.concat(r,"\\letterbar "))
+ done = required(done,foundfields,table.concat(r,"\\space\\letterbar\\space"))
end
elseif rawget(entry,r) then
- required(foundfields,r,entry[r])
+ done = required(done,foundfields,r,entry[r])
elseif entry[r] then
- required(foundfields,r,entry[r],true)
+ done = required(done,foundfields,r,entry[r],true)
else
- required(foundfields,r)
+ done = required(done,foundfields,r)
end
end
end
+ local optionalfields = fields.optional
+ local done = false
if optionalfields then
for i=1,#optionalfields do
local o = optionalfields[i]
@@ -201,26 +207,33 @@ function tracers.showdatasetcompleteness(settings)
for i=1,#o do
local oi = o[i]
if rawget(entry,oi) then
- optional(foundfields,oi,entry[oi])
+ done = optional(done,foundfields,oi,entry[oi])
elseif entry[oi] then
- optional(foundfields,oi,entry[oi],true)
+ done = optional(done,foundfields,oi,entry[oi],true)
end
end
elseif rawget(entry,o) then
- optional(foundfields,o,entry[o])
+ done = optional(done,foundfields,o,entry[o])
elseif entry[o] then
- optional(foundfields,o,entry[o],true)
+ done = optional(done,foundfields,o,entry[o],true)
end
end
end
end
+ local done = false
for k, v in sortedhash(foundfields) do
if privates[k] then
-- skip
elseif specials[k] then
- special(k,entry[k])
- else
- extra(k,entry[k])
+ done = special(done,k,entry[k])
+ end
+ end
+ local done = false
+ for k, v in sortedhash(foundfields) do
+ if privates[k] then
+ -- skip
+ elseif not specials[k] then
+ done = extra(done,k,entry[k])
end
end
ctx_stoptabulate()
@@ -239,7 +252,14 @@ function tracers.showfields(settings)
for category, fields in next, categories do
for name, list in next, fields do
for i=1,#list do
- validfields[list[i]] = true
+ local li = list[i]
+ if type(li) == "table" then
+ for i=1,#li do
+ validfields[li[i]] = true
+ end
+ else
+ validfields[li] = true
+ end
end
end
end
diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf
index 634787db2..bc04db1f0 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 3ad31abd0..8c24e51d1 100644
--- a/tex/context/base/status-lua.pdf
+++ b/tex/context/base/status-lua.pdf
Binary files differ
diff --git a/tex/context/base/strc-reg.lua b/tex/context/base/strc-reg.lua
index 7d001953f..c14198239 100644
--- a/tex/context/base/strc-reg.lua
+++ b/tex/context/base/strc-reg.lua
@@ -466,6 +466,7 @@ end
local function storeregister(rawdata) -- metadata, references, entries
local references = rawdata.references
local metadata = rawdata.metadata
+ local processors = rawdata.processors
-- checking
if not metadata.kind then
metadata.kind = "entry"
@@ -475,6 +476,10 @@ local function storeregister(rawdata) -- metadata, references, entries
metadata.catcodes = tex.catcodetable -- get
end
--
+ if processors and processors[1] == "" and processors[2] == "" then
+ rawdata.processors = nil
+ end
+ --
local name = metadata.name
local notsaved = tobesaved[name].metadata.notsaved
--
@@ -482,6 +487,7 @@ local function storeregister(rawdata) -- metadata, references, entries
references = { }
rawdata.references = references
end
+ --
local internal = references.internal
if not internal then
internal = texgetcount("locationcount") -- we assume that it has been set
diff --git a/tex/context/base/strc-reg.mkiv b/tex/context/base/strc-reg.mkiv
index 9190abfcd..7a6f4a30d 100644
--- a/tex/context/base/strc-reg.mkiv
+++ b/tex/context/base/strc-reg.mkiv
@@ -308,13 +308,14 @@
\dostoptagged
\endgroup}
-\unexpanded\def\dosetfastregisterentry#1#2#3% register entry key
+\unexpanded\def\dosetfastregisterentry#1#2#3#4#5% register entry key processor processor
{\begingroup
\edef\currentregister{#1}%
\setnextinternalreference
\xdef\currentregisternumber{\ctxcommand{storeregister{
metadata = { name = "\currentregister" },
entries = { { \!!bs#2\!!es }, { \!!bs#3\!!es } },
+ processors = { \!!bs#4\!!es, \!!bs#5\!!es },
}
}}%
% overlap with the above
diff --git a/tex/context/interface/keys-cs.xml b/tex/context/interface/keys-cs.xml
index b261a74e4..c3039f79a 100644
--- a/tex/context/interface/keys-cs.xml
+++ b/tex/context/interface/keys-cs.xml
@@ -305,6 +305,7 @@
<cd:variable name='mirrored' value='zrcadleno'/>
<cd:variable name='monday' value='pondeli'/>
<cd:variable name='mono' value='mono'/>
+ <cd:variable name='monobold' value='monotucne'/>
<cd:variable name='month' value='mesic'/>
<cd:variable name='more' value='more'/>
<cd:variable name='morehyphenation' value='morehyphenation'/>
diff --git a/tex/context/interface/keys-de.xml b/tex/context/interface/keys-de.xml
index b9f6c400b..f70ced334 100644
--- a/tex/context/interface/keys-de.xml
+++ b/tex/context/interface/keys-de.xml
@@ -305,6 +305,7 @@
<cd:variable name='mirrored' value='gespiegelt'/>
<cd:variable name='monday' value='montag'/>
<cd:variable name='mono' value='mono'/>
+ <cd:variable name='monobold' value='monofett'/>
<cd:variable name='month' value='monat'/>
<cd:variable name='more' value='more'/>
<cd:variable name='morehyphenation' value='morehyphenation'/>
diff --git a/tex/context/interface/keys-en.xml b/tex/context/interface/keys-en.xml
index 50e15c05b..970aa803b 100644
--- a/tex/context/interface/keys-en.xml
+++ b/tex/context/interface/keys-en.xml
@@ -305,6 +305,7 @@
<cd:variable name='mirrored' value='mirrored'/>
<cd:variable name='monday' value='monday'/>
<cd:variable name='mono' value='mono'/>
+ <cd:variable name='monobold' value='monobold'/>
<cd:variable name='month' value='month'/>
<cd:variable name='more' value='more'/>
<cd:variable name='morehyphenation' value='morehyphenation'/>
diff --git a/tex/context/interface/keys-fr.xml b/tex/context/interface/keys-fr.xml
index 15ebc93c6..1b75b2bc1 100644
--- a/tex/context/interface/keys-fr.xml
+++ b/tex/context/interface/keys-fr.xml
@@ -305,6 +305,7 @@
<cd:variable name='mirrored' value='reflete'/>
<cd:variable name='monday' value='lundi'/>
<cd:variable name='mono' value='mono'/>
+ <cd:variable name='monobold' value='monogras'/>
<cd:variable name='month' value='mois'/>
<cd:variable name='more' value='more'/>
<cd:variable name='morehyphenation' value='morehyphenation'/>
diff --git a/tex/context/interface/keys-it.xml b/tex/context/interface/keys-it.xml
index e256c965b..3f40bf3b9 100644
--- a/tex/context/interface/keys-it.xml
+++ b/tex/context/interface/keys-it.xml
@@ -305,6 +305,7 @@
<cd:variable name='mirrored' value='riflesso'/>
<cd:variable name='monday' value='lunedi'/>
<cd:variable name='mono' value='mono'/>
+ <cd:variable name='monobold' value='monograssetto'/>
<cd:variable name='month' value='mese'/>
<cd:variable name='more' value='more'/>
<cd:variable name='morehyphenation' value='morehyphenation'/>
diff --git a/tex/context/interface/keys-nl.xml b/tex/context/interface/keys-nl.xml
index eebc048c0..a074db2de 100644
--- a/tex/context/interface/keys-nl.xml
+++ b/tex/context/interface/keys-nl.xml
@@ -305,6 +305,7 @@
<cd:variable name='mirrored' value='gespiegeld'/>
<cd:variable name='monday' value='maandag'/>
<cd:variable name='mono' value='mono'/>
+ <cd:variable name='monobold' value='monovet'/>
<cd:variable name='month' value='maand'/>
<cd:variable name='more' value='meer'/>
<cd:variable name='morehyphenation' value='morehyphenation'/>
diff --git a/tex/context/interface/keys-pe.xml b/tex/context/interface/keys-pe.xml
index 926cb4f1e..4e64fa490 100644
--- a/tex/context/interface/keys-pe.xml
+++ b/tex/context/interface/keys-pe.xml
@@ -305,6 +305,7 @@
<cd:variable name='mirrored' value='منعکس'/>
<cd:variable name='monday' value='دوشنبه'/>
<cd:variable name='mono' value='مونو'/>
+ <cd:variable name='monobold' value='monobold'/>
<cd:variable name='month' value='ماه'/>
<cd:variable name='more' value='more'/>
<cd:variable name='morehyphenation' value='شکست‌کلمات‌بیشتر'/>
diff --git a/tex/context/interface/keys-ro.xml b/tex/context/interface/keys-ro.xml
index f07634521..8a0a1439c 100644
--- a/tex/context/interface/keys-ro.xml
+++ b/tex/context/interface/keys-ro.xml
@@ -305,6 +305,7 @@
<cd:variable name='mirrored' value='oglindit'/>
<cd:variable name='monday' value='luni'/>
<cd:variable name='mono' value='mono'/>
+ <cd:variable name='monobold' value='monoaldin'/>
<cd:variable name='month' value='luna'/>
<cd:variable name='more' value='more'/>
<cd:variable name='morehyphenation' value='morehyphenation'/>
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index 891650e5c..5b9fc4f45 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 : 10/29/14 00:18:00
+-- merge date : 10/29/14 15:20:43
do -- begin closure to overcome local limits and interference
@@ -5744,6 +5744,7 @@ local function read_from_tfm(specification)
properties.fontname=tfmdata.fontname
properties.psname=tfmdata.psname
properties.filename=specification.filename
+ properties.format=fonts.formats.tfm
parameters.size=size
shared.rawdata={}
shared.features=features
@@ -14090,8 +14091,8 @@ function definers.read(specification,size,id)
elseif trace_defining and type(tfmdata)=="table" then
local properties=tfmdata.properties or {}
local parameters=tfmdata.parameters or {}
- report_defining("using %s font with id %a, name %a, size %a, bytes %a, encoding %a, fullname %a, filename %a",
- properties.format,id,properties.name,parameters.size,properties.encodingbytes,
+ report_defining("using %a font with id %a, name %a, size %a, bytes %a, encoding %a, fullname %a, filename %a",
+ properties.format or "unknown",id,properties.name,parameters.size,properties.encodingbytes,
properties.encodingname,properties.fullname,file.basename(properties.filename))
end
statistics.stoptiming(fonts)