summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarius <mariausol@gmail.com>2011-01-31 00:20:51 +0200
committerMarius <mariausol@gmail.com>2011-01-31 00:20:51 +0200
commit91675d8e11906bc15351278f8865d41de6bcc06d (patch)
treeda027e5dd2b69bb8f0b19c774c222c098bbfc4b7
parent3019c4ccfb0d984b45670a86d2400a6aacfbaa68 (diff)
downloadcontext-91675d8e11906bc15351278f8865d41de6bcc06d.tar.gz
beta 2011.01.23 20:36
-rw-r--r--scripts/context/lua/mtx-interface.lua159
-rw-r--r--tex/context/base/bibl-tra.mkiv2
-rw-r--r--tex/context/base/buff-ini.lua2
-rw-r--r--tex/context/base/buff-ver.lua11
-rw-r--r--tex/context/base/buff-ver.mkii1
-rw-r--r--tex/context/base/buff-ver.mkiv10
-rw-r--r--tex/context/base/catc-act.mkii (renamed from tex/context/base/catc-act.tex)0
-rw-r--r--tex/context/base/catc-act.mkiv65
-rw-r--r--tex/context/base/catc-ctx.mkii76
-rw-r--r--tex/context/base/catc-ctx.mkiv131
-rw-r--r--tex/context/base/catc-ctx.tex182
-rw-r--r--tex/context/base/catc-def.mkii (renamed from tex/context/base/catc-def.tex)82
-rw-r--r--tex/context/base/catc-def.mkiv142
-rw-r--r--tex/context/base/catc-ini.mkii62
-rw-r--r--tex/context/base/catc-ini.mkiv72
-rw-r--r--tex/context/base/catc-sym.mkii (renamed from tex/context/base/catc-sym.tex)4
-rw-r--r--tex/context/base/catc-sym.mkiv187
-rw-r--r--tex/context/base/catc-xml.mkii114
-rw-r--r--tex/context/base/catc-xml.mkiv133
-rw-r--r--tex/context/base/catc-xml.tex137
-rw-r--r--tex/context/base/char-act.mkiv43
-rw-r--r--tex/context/base/char-def.lua2
-rw-r--r--tex/context/base/char-ini.mkiv8
-rw-r--r--tex/context/base/cldf-ver.lua2
-rw-r--r--tex/context/base/cont-new.mkii2
-rw-r--r--tex/context/base/cont-new.mkiv4
-rw-r--r--tex/context/base/context.mkii38
-rw-r--r--tex/context/base/context.mkiv36
-rw-r--r--tex/context/base/context.tex2
-rw-r--r--tex/context/base/core-env.mkiv2
-rw-r--r--tex/context/base/core-fnt.mkiv2
-rw-r--r--tex/context/base/core-job.mkii2
-rw-r--r--tex/context/base/core-sys.mkiv10
-rw-r--r--tex/context/base/lang-alt.mkii (renamed from tex/context/base/lang-alt.tex)0
-rw-r--r--tex/context/base/lang-alt.mkiv63
-rw-r--r--tex/context/base/lang-ana.mkii (renamed from tex/context/base/lang-ana.tex)0
-rw-r--r--tex/context/base/lang-ana.mkiv24
-rw-r--r--tex/context/base/lang-ara.mkiv115
-rw-r--r--tex/context/base/lang-art.mkii (renamed from tex/context/base/lang-art.tex)0
-rw-r--r--tex/context/base/lang-art.mkiv26
-rw-r--r--tex/context/base/lang-bal.mkii (renamed from tex/context/base/lang-bal.tex)0
-rw-r--r--tex/context/base/lang-bal.mkiv44
-rw-r--r--tex/context/base/lang-cel.mkii (renamed from tex/context/base/lang-cel.tex)0
-rw-r--r--tex/context/base/lang-cel.mkiv26
-rw-r--r--tex/context/base/lang-cjk.mkiv280
-rw-r--r--tex/context/base/lang-cyr.mkii (renamed from tex/context/base/lang-cyr.tex)0
-rw-r--r--tex/context/base/lang-cyr.mkiv60
-rw-r--r--tex/context/base/lang-def.lua418
-rw-r--r--tex/context/base/lang-frd.mkii (renamed from tex/context/base/lang-frd.tex)0
-rw-r--r--tex/context/base/lang-frq.mkii (renamed from tex/context/base/lang-frq.tex)0
-rw-r--r--tex/context/base/lang-ger.mkii (renamed from tex/context/base/lang-ger.tex)0
-rw-r--r--tex/context/base/lang-ger.mkiv259
-rw-r--r--tex/context/base/lang-grk.mkii (renamed from tex/context/base/lang-grk.tex)0
-rw-r--r--tex/context/base/lang-grk.mkiv48
-rw-r--r--tex/context/base/lang-ind.mkii (renamed from tex/context/base/lang-ind.tex)0
-rw-r--r--tex/context/base/lang-ind.mkiv26
-rw-r--r--tex/context/base/lang-ini.mkiv1
-rw-r--r--tex/context/base/lang-ita.mkii (renamed from tex/context/base/lang-ita.tex)0
-rw-r--r--tex/context/base/lang-ita.mkiv157
-rw-r--r--tex/context/base/lang-lab.lua131
-rw-r--r--tex/context/base/lang-lab.mkiv21
-rw-r--r--tex/context/base/lang-sla.mkii457
-rw-r--r--tex/context/base/lang-sla.mkiv166
-rw-r--r--tex/context/base/lang-sla.tex507
-rw-r--r--tex/context/base/lang-txt.lua2421
-rw-r--r--tex/context/base/lang-ura.mkii (renamed from tex/context/base/lang-ura.tex)0
-rw-r--r--tex/context/base/lang-ura.mkiv63
-rw-r--r--tex/context/base/lang-vn.mkii (renamed from tex/context/base/lang-vn.tex)0
-rw-r--r--tex/context/base/lang-vn.mkiv43
-rw-r--r--tex/context/base/luat-ini.mkiv4
-rw-r--r--tex/context/base/m-database.mkiv2
-rw-r--r--tex/context/base/m-zint.mkiv78
-rw-r--r--tex/context/base/math-ini.mkiv22
-rw-r--r--tex/context/base/math-pln.mkiv32
-rw-r--r--tex/context/base/meta-fun.mkiv5
-rw-r--r--tex/context/base/meta-pdh.mkiv2
-rw-r--r--tex/context/base/mult-com.mkii (renamed from tex/context/base/mult-com.tex)0
-rw-r--r--tex/context/base/mult-con.mkii (renamed from tex/context/base/mult-con.tex)0
-rw-r--r--tex/context/base/mult-de.mkii (renamed from tex/context/base/mult-de.tex)0
-rw-r--r--tex/context/base/mult-def.mkii4
-rw-r--r--tex/context/base/mult-en.mkii (renamed from tex/context/base/mult-en.tex)0
-rw-r--r--tex/context/base/mult-fr.mkii (renamed from tex/context/base/mult-fr.tex)0
-rw-r--r--tex/context/base/mult-it.mkii (renamed from tex/context/base/mult-it.tex)0
-rw-r--r--tex/context/base/mult-mcs.mkii (renamed from tex/context/base/mult-mcs.tex)0
-rw-r--r--tex/context/base/mult-mde.mkii (renamed from tex/context/base/mult-mde.tex)0
-rw-r--r--tex/context/base/mult-men.mkii (renamed from tex/context/base/mult-men.tex)0
-rw-r--r--tex/context/base/mult-mfr.mkii (renamed from tex/context/base/mult-mfr.tex)0
-rw-r--r--tex/context/base/mult-mit.mkii (renamed from tex/context/base/mult-mit.tex)0
-rw-r--r--tex/context/base/mult-mnl.mkii (renamed from tex/context/base/mult-mnl.tex)0
-rw-r--r--tex/context/base/mult-mno.mkii (renamed from tex/context/base/mult-mno.tex)0
-rw-r--r--tex/context/base/mult-mpe.mkii (renamed from tex/context/base/mult-mpe.tex)0
-rw-r--r--tex/context/base/mult-mro.mkii (renamed from tex/context/base/mult-mro.tex)0
-rw-r--r--tex/context/base/mult-nl.mkii (renamed from tex/context/base/mult-nl.tex)0
-rw-r--r--tex/context/base/mult-pe.mkii (renamed from tex/context/base/mult-pe.tex)0
-rw-r--r--tex/context/base/mult-ro.mkii (renamed from tex/context/base/mult-ro.tex)0
-rw-r--r--tex/context/base/page-lay.mkii13
-rw-r--r--tex/context/base/s-abr-01.tex1
-rw-r--r--tex/context/base/s-inf-01.tex36
-rw-r--r--tex/context/base/spac-gen.mkii15
-rw-r--r--tex/context/base/spac-hor.mkiv21
-rw-r--r--tex/context/base/supp-fil.mkiv3
-rw-r--r--tex/context/base/supp-mat.mkiv8
-rw-r--r--tex/context/base/supp-num.mkiv7
-rw-r--r--tex/context/base/syst-aux.mkiv95
-rw-r--r--tex/context/base/syst-ltx.mkii (renamed from tex/context/base/syst-ltx.tex)3
-rw-r--r--tex/context/base/syst-pln.mkii (renamed from tex/context/base/syst-pln.tex)0
-rw-r--r--tex/context/base/syst-pln.mkiv120
-rw-r--r--tex/context/base/tabl-tab.mkiv14
-rw-r--r--tex/context/base/unic-ini.mkii2
-rw-r--r--tex/context/base/x-xtag.mkiv3
-rw-r--r--tex/generic/context/luatex-fonts-merged.lua2
111 files changed, 6019 insertions, 1554 deletions
diff --git a/scripts/context/lua/mtx-interface.lua b/scripts/context/lua/mtx-interface.lua
index 9659dce90..bee6a7da1 100644
--- a/scripts/context/lua/mtx-interface.lua
+++ b/scripts/context/lua/mtx-interface.lua
@@ -7,7 +7,8 @@ if not modules then modules = { } end modules ['mtx-cache'] = {
}
local concat, sort, insert = table.concat, table.sort, table.insert
-local gsub, format, gmatch = string.gsub, string.format, string.gmatch
+local gsub, format, gmatch, find = string.gsub, string.format, string.gmatch, string.find
+local utfchar, utfgsub = utf.char, utf.gsub
scripts = scripts or { }
scripts.interface = scripts.interface or { }
@@ -223,7 +224,7 @@ function scripts.interface.check()
end
end
-function scripts.interface.context()
+function scripts.interface.interfaces()
local filename = resolvers.findfile(environment.files[1] or "mult-def.lua") or ""
if filename ~= "" then
local interface = dofile(filename)
@@ -277,7 +278,7 @@ function scripts.interface.context()
flush(texresult,xmlresult,language,"commands", "command")
texresult[#texresult+1] = format("%%\n\\endinput")
xmlresult[#xmlresult+1] = format("</cd:interface>")
- local texfilename = format("mult-%s.tex",language)
+ local texfilename = format("mult-%s.mkii",language)
local xmlfilename = format("keys-%s.xml",language)
io.savedata(texfilename,concat(texresult,"\n"))
logs.simple("saving interface definitions '%s'",texfilename)
@@ -338,16 +339,137 @@ function scripts.interface.messages()
end
end
texresult[#texresult+1] = format("%%\n\\endinput")
- local interfacefile = format("mult-m%s.tex",interface)
+ local interfacefile = format("mult-m%s.mkii",interface)
io.savedata(interfacefile,concat(texresult,"\n"))
logs.simple("messages for '%s' saved in '%s'",interface,interfacefile)
end
end
end
-logs.extendbanner("ConTeXt Interface Related Goodies 0.12")
+function scripts.interface.toutf()
+ local filename = environment.files[1]
+ if filename then
+ require("char-def.lua")
+ local contextnames = { }
+ for unicode, data in next, characters.data do
+ local contextname = data.contextname
+ if contextname then
+ contextnames[contextname] = utf.char(unicode)
+ end
+ contextnames.uumlaut = contextnames.udiaeresis
+ contextnames.Uumlaut = contextnames.Udiaeresis
+ contextnames.oumlaut = contextnames.odiaeresis
+ contextnames.Oumlaut = contextnames.Odiaeresis
+ contextnames.aumlaut = contextnames.adiaeresis
+ contextnames.Aumlaut = contextnames.Adiaeresis
+ end
+ logs.simple("loading '%s'",filename)
+ local str = io.loaddata(filename) or ""
+ local done = { }
+ str = gsub(str,"(\\)([a-zA-Z][a-zA-Z][a-zA-Z]+)(%s*)", function(b,s,a)
+ local cn = contextnames[s]
+ if cn then
+ done[s] = (done[s] or 0) + 1
+ return cn
+ else
+ done[s] = (done[s] or 0) - 1
+ return b .. s .. a
+ end
+ end)
+ for k, v in table.sortedpairs(done) do
+ if v > 0 then
+ logs.simple("+ %5i : %s => %s",v,k,contextnames[k])
+ else
+ logs.simple("- %5i : %s",-v,k,contextnames[k])
+ end
+ end
+ filename = filename .. ".toutf"
+ logs.simple("saving '%s'",filename)
+ io.savedata(filename,str)
+ end
+end
+
+function scripts.interface.labels()
+ require("char-def.lua")
+ require("lang-txt.lua")
+ local interfaces = require("mult-def.lua")
+ local variables = interfaces.variables
+ local contextnames = { }
+ for unicode, data in next, characters.data do
+ local contextname = data.contextname
+ if contextname then
+ contextnames[utfchar(unicode)] = "\\" .. contextname .. " "
+ end
+ end
+ contextnames["i"] = nil
+ contextnames["'"] = nil
+ contextnames["\\"] = nil
+ local function flush(f,kind,what,expand,namespace,prefix)
+ local whatdata = languages.data.labels[what]
+ f:write("\n")
+ f:write(format("%% %s => %s\n",what,kind))
+ for tag, data in table.sortedpairs(whatdata) do
+ if not data.hidden then
+ f:write("\n")
+ for language, text in table.sortedpairs(data.labels) do
+ if text ~= "" then
+ if expand then
+ text = utfgsub(text,".",contextnames)
+ text = gsub(text," ", "\ ")
+ end
+ if namespace and namespace[tag] then
+ tag = prefix .. tag
+ end
+ if find(text,",") then
+ text = "{" .. text .. "}"
+ end
+
+ if text == "" then
+ -- skip
+ else
+ if type(text) == "table" then
+ f:write(format("\\setup%stext[\\s!%s][%s={{%s},}]\n",kind,language,tag,text))
+ else
+ f:write(format("\\setup%stext[\\s!%s][%s={{%s},{%s}}]\n",kind,language,tag,text[1],text[2]))
+ end
+ end
+
+ end
+ end
+ end
+ end
+ end
+ function flushall(txtname,expand)
+ local f = io.open(txtname,"w")
+ if f then
+ logs.simple("saving '%s'",txtname)
+ f:write("% this file is auto-generated, don't edit this file\n")
+ flush(f,"head","titles",expand,variables,"\\v!")
+ flush(f,"label","texts",expand,variables,"\\v!")
+ flush(f,"mathlabel","functions",expand)
+ flush(f,"taglabel","tags",expand)
+ f:write("\n")
+ f:write("\\endinput\n")
+ f:close()
+ end
+ end
+ flushall("lang-txt.mkii",true)
+ flushall("lang-txt.mkiv",false)
+end
+
+function scripts.interface.labels()
+ -- maybe supported one day
+end
+
+logs.extendbanner("ConTeXt Interface Related Goodies 0.13")
messages.help = [[
+--interfaces generate context interface files
+--messages generate context message files
+--labels generate context label files
+
+--context equals --interfaces --messages --languages
+
--scite generate scite interface
--bbedit generate bbedit interface files
--jedit generate jedit interface files
@@ -355,21 +477,36 @@ messages.help = [[
--text create text files for commands and environments
--raw report commands to the console
--check generate check file
---context generate context definition files
+
+--toutf replace named characters by utf
--preprocess preprocess mkvi files to tex files [force,suffix]
+
--suffix use given suffix for output files
--force force action even when in doubt
---messages generate context message files
]]
local ea = environment.argument
if ea("context") then
- scripts.interface.context()
+ scripts.interface.interfaces()
+ scripts.interface.messages()
+ scripts.interface.labels()
+elseif ea("interfaces") or ea("messages") or ea("labels") then
+ if ea("interfaces") then
+ scripts.interface.interfaces()
+ end
+ if ea("messages") then
+ scripts.interface.messages()
+ end
+ if ea("labels") then
+ scripts.interface.labels()
+ end
elseif ea("preprocess") then
scripts.interface.preprocess()
-elseif ea("messages") then
- scripts.interface.messages()
+elseif ea("toutf") then
+ scripts.interface.toutf()
+elseif ea("check") then
+ scripts.interface.check()
elseif ea("scite") or ea("bbedit") or ea("jedit") or ea("textpad") or ea("text") or ea("raw") then
if ea("scite") then
scripts.interface.editor("scite")
@@ -389,8 +526,6 @@ elseif ea("scite") or ea("bbedit") or ea("jedit") or ea("textpad") or ea("text")
if ea("raw") then
scripts.interface.editor("raw")
end
-elseif ea("check") then
- scripts.interface.check()
else
logs.help(messages.help)
end
diff --git a/tex/context/base/bibl-tra.mkiv b/tex/context/base/bibl-tra.mkiv
index a6a594d7f..9a42cb539 100644
--- a/tex/context/base/bibl-tra.mkiv
+++ b/tex/context/base/bibl-tra.mkiv
@@ -735,7 +735,7 @@
\unexpanded\def\startpublication
{\begingroup
- \catcode`\%=\othercatcode
+ \catcode\commentasciicode\othercatcode
\dosingleempty\dostartpublication}
\let\stoppublication\relax
diff --git a/tex/context/base/buff-ini.lua b/tex/context/base/buff-ini.lua
index a1e1f5d6b..de5a880e3 100644
--- a/tex/context/base/buff-ini.lua
+++ b/tex/context/base/buff-ini.lua
@@ -126,7 +126,7 @@ function commands.grabbuffer(name,begintag,endtag,bufferdata) -- maybe move \\ t
dn = dn .. "\n" .. sub(bufferdata,1,-2) -- no \r, \n is more generic
end
local last = sub(dn,-1)
- if last == "\n" or last == "\r" then
+ if last == "\n" or last == "\r" then -- \n is unlikely as \r is the endlinechar
dn = sub(dn,1,-2)
end
end
diff --git a/tex/context/base/buff-ver.lua b/tex/context/base/buff-ver.lua
index 7427e1f86..91bf1c6a0 100644
--- a/tex/context/base/buff-ver.lua
+++ b/tex/context/base/buff-ver.lua
@@ -334,8 +334,11 @@ end
local space_pattern = patterns.space^0
local name_pattern = R("az","AZ")^1
+-- the hack is needed in order to retain newlines when an escape happens at the
+-- at the begin of a line; it also ensures proper line numbering; a bit messy
+
local function hack(pattern)
- return Cs(pattern * Cc(signal)) -- hack to retain newlines
+ return Cs(pattern * Cc(signal))
end
function visualizers.registerescapepattern(name,before,after,normalmethod,escapemethod)
@@ -349,8 +352,7 @@ function visualizers.registerescapepattern(name,before,after,normalmethod,escape
(before / "")
* ((1 - after)^0 / (escapemethod or texmethod))
* (after / "")
- -- + hack((1 - before)^1) / (normalmethod or defaultmethod)
- + ((1 - before)^1) / (normalmethod or defaultmethod)
+ + hack((1 - before)^1) / (normalmethod or defaultmethod)
)^0
escapepatterns[name] = escapepattern
end
@@ -601,7 +603,8 @@ local function filter(lines,settings) -- todo: inline or display in settings
first, last = getrange(lines,first,last,range)
first, last = getstrip(lines,first,last)
end
- local content = concat(lines,(settings.nature == "inline" and " ") or "\r",first,last) -- was \n
+ -- \r is \endlinechar but \n would is more generic so this choice is debatable
+ local content = concat(lines,(settings.nature == "inline" and " ") or "\n",first,last)
return content, m
end
diff --git a/tex/context/base/buff-ver.mkii b/tex/context/base/buff-ver.mkii
index e7ad5474f..355296101 100644
--- a/tex/context/base/buff-ver.mkii
+++ b/tex/context/base/buff-ver.mkii
@@ -626,7 +626,6 @@
{\let\currenttypingclass\??ty
\initializetype
\verbatimcolor
- %\setcatcodetable \typcatcodesa
\catcode`\{=\@@begingroup
\catcode`\}=\@@endgroup}
diff --git a/tex/context/base/buff-ver.mkiv b/tex/context/base/buff-ver.mkiv
index 45b3a614f..ea259c06a 100644
--- a/tex/context/base/buff-ver.mkiv
+++ b/tex/context/base/buff-ver.mkiv
@@ -329,17 +329,17 @@
\def\dodotypeA
{\firststageinitializetype
- \setcatcodetable\typcatcodesa
+ \setcatcodetable\tpacatcodes
\dodotypenormal}
\def\dodotypeB#1%
{\firststageinitializetype
- \setcatcodetable\typcatcodesb
+ \setcatcodetable\tpbcatcodes
\dodotypenested}
\def\dodotypeC#1%
{\firststageinitializetype
- \setcatcodetable\typcatcodesc
+ \setcatcodetable\vrbcatcodes
\def\next##1#1{\dodotypenormal{##1}}%
\next}
@@ -413,8 +413,8 @@
\def\setgroupedtype
{\firststageinitializetype
- \catcode`\{=\begingroupcatcode
- \catcode`\}=\endgroupcatcode}
+ \catcode\leftbraceasciicode \begingroupcatcode
+ \catcode\rightbraceasciicode\endgroupcatcode}
\unexpanded\def\tex{\groupedcommand{\setgroupedtype\texescape}{\relax}}
\unexpanded\def\arg{\groupedcommand{\setgroupedtype\leftargument}{\rightargument}}
diff --git a/tex/context/base/catc-act.tex b/tex/context/base/catc-act.mkii
index 2cde28e44..2cde28e44 100644
--- a/tex/context/base/catc-act.tex
+++ b/tex/context/base/catc-act.mkii
diff --git a/tex/context/base/catc-act.mkiv b/tex/context/base/catc-act.mkiv
new file mode 100644
index 000000000..2cde28e44
--- /dev/null
+++ b/tex/context/base/catc-act.mkiv
@@ -0,0 +1,65 @@
+%D \module
+%D [ file=catc-act,
+%D version=2006.09.18,
+%D title=\CONTEXT\ Catcode Macros,
+%D subtitle=Default Catcode Tables,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module deals with some active character handling. Use
+%D with care.
+
+%D \macros
+%D {installactivecharacter}
+
+\def\installactivecharacter#1 %
+ {\edef\temp{\detokenize{#1}}%
+ \cctcounterc\expandafter`\temp\relax % relax needed
+ \expandafter\startextendcatcodetable
+ \expandafter\ctxcatcodes\expandafter\catcode\the\cctcounterc\activecatcode
+ \stopextendcatcodetable
+ \letcatcodecommand \ctxcatcodes \cctcounterc \temp \relax
+ \ifnum\currentcatcodetable=\ctxcatcodes \setcatcodetable\ctxcatcodes \fi}
+
+%D \macros
+%D {defineactivecharacter}
+%D
+%D Use this one with care, esp in combination with catcode
+%D vectors. There are better ways now.
+
+\chardef\activehackcode=`~
+
+\def\defineactivecharacter #1#2 #3%
+ {\cctcounterc\uccode\activehackcode
+ \if#1"\uccode\activehackcode\expandafter\doifnumberelse\expandafter{\string#1#2}\empty #1#2\else
+ \uccode\activehackcode\expandafter\doifnumberelse\expandafter{\string#1#2}\empty`#1#2\fi
+ \catcode\uccode\activehackcode\activecatcode
+ \uppercase{\def\next{~}}%
+ \uccode\activehackcode\cctcounterc
+ \expandafter\expandafter\expandafter\def\expandafter\next\expandafter
+ {\expandafter\dohandleactivecharacter\next{#3}}}
+
+\chardef\activecharactermode\plusone % overloading still backward compatible
+
+\def\dodohandleactivecharacter#1#2{#2}
+\def\donthandleactivecharacter#1#2{\noexpand#1}
+
+\def\dohandleactivecharacter
+ {\ifcase\activecharactermode
+ \expandafter\donthandleactivecharacter
+ \else
+ \expandafter\dodohandleactivecharacter
+ \fi}
+
+\def\makecharacteractive #1 {\catcode`#1\active}
+
+\def\installanddefineactivecharacter #1 % #2%
+ {\normalexpanded{\noexpand\installactivecharacter \utfchar{#1} }%
+ \defineactivecharacter #1 }% {#2}}
+
+\endinput
diff --git a/tex/context/base/catc-ctx.mkii b/tex/context/base/catc-ctx.mkii
new file mode 100644
index 000000000..6bf4e9cfb
--- /dev/null
+++ b/tex/context/base/catc-ctx.mkii
@@ -0,0 +1,76 @@
+%D \module
+%D [ file=catc-cys,
+%D version=2006.09.18,
+%D title=\CONTEXT\ Catcode Macros,
+%D subtitle=Extra Tables,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D We prefer to define relevant catcode tables in this file instead
+%D of everywhere around.
+
+\ifdefined \ctxcatcodes \else \newcatcodetable \ctxcatcodes \fi
+\ifdefined \prtcatcodes \else \newcatcodetable \prtcatcodes \fi
+
+\startcatcodetable \ctxcatcodes
+ \catcode\tabasciicode \spacecatcode
+ \catcode\endoflineasciicode \endoflinecatcode
+ \catcode\formfeedasciicode \endoflinecatcode
+ \catcode\spaceasciicode \spacecatcode
+ \catcode\endoffileasciicode \ignorecatcode
+ \catcode\circumflexasciicode\superscriptcatcode
+ \catcode\underscoreasciicode\subscriptcatcode
+ \catcode\ampersandasciicode \alignmentcatcode
+ \catcode\backslashasciicode \escapecatcode
+ \catcode\leftbraceasciicode \begingroupcatcode
+ \catcode\rightbraceasciicode\endgroupcatcode
+ \catcode\dollarasciicode \mathshiftcatcode
+ \catcode\hashasciicode \parametercatcode
+ \catcode\commentasciicode \commentcatcode
+ \catcode\tildeasciicode \activecatcode
+ \catcode\barasciicode \activecatcode
+\stopcatcodetable
+
+\startcatcodetable \prtcatcodes
+ \catcode\tabasciicode \spacecatcode
+ \catcode\endoflineasciicode \endoflinecatcode
+ \catcode\formfeedasciicode \endoflinecatcode
+ \catcode\spaceasciicode \spacecatcode
+ \catcode\endoffileasciicode \ignorecatcode
+ \catcode\circumflexasciicode\superscriptcatcode
+ \catcode\underscoreasciicode\subscriptcatcode
+ \catcode\ampersandasciicode \alignmentcatcode
+ \catcode\backslashasciicode \escapecatcode
+ \catcode\leftbraceasciicode \begingroupcatcode
+ \catcode\rightbraceasciicode\endgroupcatcode
+ \catcode\dollarasciicode \mathshiftcatcode
+ \catcode\hashasciicode \parametercatcode
+ \catcode\commentasciicode \commentcatcode
+ \catcode`\@ \lettercatcode
+ \catcode`\! \lettercatcode
+ \catcode`\? \lettercatcode
+ \catcode\tildeasciicode \activecatcode
+ \catcode\barasciicode \activecatcode
+\stopcatcodetable
+
+\letcatcodecommand \ctxcatcodes \barasciicode \relax
+\letcatcodecommand \ctxcatcodes \tildeasciicode \relax
+
+ \catcodetable \ctxcatcodes
+\let \defaultcatcodetable \ctxcatcodes
+
+% for the moment here:
+
+\def\starttexcode
+ {\pushcatcodetable
+ \catcodetable\prtcatcodes}
+
+\def\stoptexcode
+ {\popcatcodetable}
+
+\endinput
diff --git a/tex/context/base/catc-ctx.mkiv b/tex/context/base/catc-ctx.mkiv
new file mode 100644
index 000000000..bdba6aeee
--- /dev/null
+++ b/tex/context/base/catc-ctx.mkiv
@@ -0,0 +1,131 @@
+%D \module
+%D [ file=catc-cys,
+%D version=2006.09.18,
+%D title=\CONTEXT\ Catcode Macros,
+%D subtitle=Extra Tables,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D We prefer to define relevant catcode tables in this file instead
+%D of everywhere around.
+
+\ifdefined \ctxcatcodes \else \newcatcodetable \ctxcatcodes \fi
+\ifdefined \prtcatcodes \else \newcatcodetable \prtcatcodes \fi
+\ifdefined \txtcatcodes \else \newcatcodetable \txtcatcodes \fi
+%ifdefined \mthcatcodes \else \newcatcodetable \mthcatcodes \fi % math, not used, too tricky
+\ifdefined \tpacatcodes \else \newcatcodetable \tpacatcodes \fi % { }
+\ifdefined \tpbcatcodes \else \newcatcodetable \tpbcatcodes \fi % < >
+
+\startcatcodetable \ctxcatcodes
+ \catcode\tabasciicode \spacecatcode
+ \catcode\endoflineasciicode \endoflinecatcode
+ \catcode\formfeedasciicode \endoflinecatcode
+ \catcode\spaceasciicode \spacecatcode
+ \catcode\endoffileasciicode \ignorecatcode
+ \catcode\circumflexasciicode\superscriptcatcode
+ \catcode\underscoreasciicode\subscriptcatcode
+ \catcode\ampersandasciicode \alignmentcatcode
+ \catcode\backslashasciicode \escapecatcode
+ \catcode\leftbraceasciicode \begingroupcatcode
+ \catcode\rightbraceasciicode\endgroupcatcode
+ \catcode\dollarasciicode \mathshiftcatcode
+ \catcode\hashasciicode \parametercatcode
+ \catcode\commentasciicode \commentcatcode
+ \catcode\tildeasciicode \activecatcode
+ \catcode\barasciicode \activecatcode
+\stopcatcodetable
+
+\startcatcodetable \prtcatcodes
+ \catcode\tabasciicode \spacecatcode
+ \catcode\endoflineasciicode \endoflinecatcode
+ \catcode\formfeedasciicode \endoflinecatcode
+ \catcode\spaceasciicode \spacecatcode
+ \catcode\endoffileasciicode \ignorecatcode
+ \catcode\circumflexasciicode\superscriptcatcode
+ \catcode\underscoreasciicode\lettercatcode
+ \catcode\ampersandasciicode \alignmentcatcode
+ \catcode\backslashasciicode \escapecatcode
+ \catcode\leftbraceasciicode \begingroupcatcode
+ \catcode\rightbraceasciicode\endgroupcatcode
+ \catcode\dollarasciicode \mathshiftcatcode
+ \catcode\hashasciicode \parametercatcode
+ \catcode\commentasciicode \commentcatcode
+ \catcode`\@ \lettercatcode
+ \catcode`\! \lettercatcode
+ \catcode`\? \lettercatcode
+ \catcode\tildeasciicode \activecatcode
+ \catcode\barasciicode \activecatcode
+\stopcatcodetable
+
+%startcatcodetable \mthcatcodes
+% \catcode\tabasciicode \spacecatcode
+% \catcode\endoflineasciicode \endoflinecatcode
+% %\catcode\newlineasciicode \spacecatcode
+% \catcode\formfeedasciicode \endoflinecatcode
+% \catcode\spaceasciicode \spacecatcode
+% \catcode\endoffileasciicode \ignorecatcode
+% \catcode\circumflexasciicode\superscriptcatcode
+% \catcode\underscoreasciicode\subscriptcatcode
+% \catcode\ampersandasciicode \alignmentcatcode
+% \catcode\backslashasciicode \escapecatcode
+% \catcode\leftbraceasciicode \begingroupcatcode
+% \catcode\rightbraceasciicode\endgroupcatcode
+% \catcode\dollarasciicode \mathshiftcatcode
+% \catcode\hashasciicode \parametercatcode
+% \catcode\commentasciicode \commentcatcode
+% %\catcode\tildeasciicode \activecatcode
+% %\catcode\barasciicode \activecatcode
+%stopcatcodetable
+
+\startcatcodetable \tpacatcodes
+ \catcode\tabasciicode \othercatcode
+ \catcode\endoflineasciicode \othercatcode
+ \catcode\formfeedasciicode \othercatcode
+ \catcode\spaceasciicode \othercatcode
+ \catcode\endoffileasciicode \othercatcode
+ \catcode\leftbraceasciicode \begingroupcatcode
+ \catcode\rightbraceasciicode\endgroupcatcode
+\stopcatcodetable
+
+\startcatcodetable \tpbcatcodes
+ \catcode\tabasciicode \othercatcode
+ \catcode\endoflineasciicode \othercatcode
+ \catcode\formfeedasciicode \othercatcode
+ \catcode\spaceasciicode \othercatcode
+ \catcode\endoffileasciicode \othercatcode
+ \catcode`\< \begingroupcatcode
+ \catcode`\> \endgroupcatcode
+\stopcatcodetable
+
+\startcatcodetable \txtcatcodes
+ \catcode\tabasciicode \spacecatcode
+ \catcode\endoflineasciicode \endoflinecatcode
+ \catcode\formfeedasciicode \endoflinecatcode
+ \catcode\spaceasciicode \spacecatcode
+ \catcode\endoffileasciicode \ignorecatcode
+ \catcode\backslashasciicode \escapecatcode
+ \catcode\leftbraceasciicode \begingroupcatcode
+ \catcode\rightbraceasciicode\endgroupcatcode
+\stopcatcodetable
+
+\letcatcodecommand \ctxcatcodes \barasciicode \relax
+\letcatcodecommand \ctxcatcodes \tildeasciicode \relax
+
+ \catcodetable \ctxcatcodes
+\let \defaultcatcodetable \ctxcatcodes
+
+% for the moment here:
+
+\def\starttexcode
+ {\pushcatcodetable
+ \catcodetable\prtcatcodes}
+
+\def\stoptexcode
+ {\popcatcodetable}
+
+\endinput
diff --git a/tex/context/base/catc-ctx.tex b/tex/context/base/catc-ctx.tex
deleted file mode 100644
index 1216dba9d..000000000
--- a/tex/context/base/catc-ctx.tex
+++ /dev/null
@@ -1,182 +0,0 @@
-%D \module
-%D [ file=catc-cys,
-%D version=2006.09.18,
-%D title=\CONTEXT\ Catcode Macros,
-%D subtitle=Extra Tables,
-%D author=Hans Hagen,
-%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
-%C
-%C This module is part of the \CONTEXT\ macro||package and is
-%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
-%C details.
-
-%D We prefer to define relevant catcode tables in this file instead
-%D of everywhere around.
-
-\ifdefined \ctxcatcodes \else \newcatcodetable \ctxcatcodes \fi
-\ifdefined \txtcatcodes \else \newcatcodetable \txtcatcodes \fi
-\ifdefined \mthcatcodes \else \newcatcodetable \mthcatcodes \fi % math, not used, too tricky
-\ifdefined \typcatcodesa \else \newcatcodetable \typcatcodesa \fi % { }
-\ifdefined \typcatcodesb \else \newcatcodetable \typcatcodesb \fi % < >
-\ifdefined \typcatcodesc \else \newcatcodetable \typcatcodesc \fi % delimited
-
-\startcatcodetable \ctxcatcodes
- \catcode\tabasciicode \spacecatcode
- \catcode\endoflineasciicode \endoflinecatcode
- \catcode\formfeedasciicode \endoflinecatcode
- \catcode\spaceasciicode \spacecatcode
- \catcode\endoffileasciicode \ignorecatcode
- \catcode\caretasciicode \superscriptcatcode
- \catcode\underscoreasciicode\subscriptcatcode
- \catcode\ampersandasciicode \alignmentcatcode
- \catcode`\\ \escapecatcode
- \catcode`\{ \begingroupcatcode
- \catcode`\} \endgroupcatcode
- \catcode`\$ \mathshiftcatcode
- \catcode`\# \parametercatcode
- \catcode`\% \commentcatcode
- \catcode`\~ \activecatcode
- \catcode`\| \activecatcode
-\stopcatcodetable
-
-\startcatcodetable \prtcatcodes
- \catcode\tabasciicode \spacecatcode
- \catcode\endoflineasciicode \endoflinecatcode
- \catcode\formfeedasciicode \endoflinecatcode
- \catcode\spaceasciicode \spacecatcode
- \catcode\endoffileasciicode \ignorecatcode
- \catcode\caretasciicode \superscriptcatcode % soon we will also get rid of the usage of ^^ so then ^ can also be other
- \catcode\underscoreasciicode\ifnum\texengine=\luatexengine\lettercatcode \else \subscriptcatcode \fi
- \catcode\ampersandasciicode \alignmentcatcode
- \catcode`\\ \escapecatcode
- \catcode`\{ \begingroupcatcode
- \catcode`\} \endgroupcatcode
- \catcode`\$ \mathshiftcatcode
- \catcode`\# \parametercatcode
- \catcode`\% \commentcatcode
- \catcode`\@ \lettercatcode
- \catcode`\! \lettercatcode
- \catcode`\? \lettercatcode
- \catcode`\~ \activecatcode
- \catcode`\| \activecatcode
-\stopcatcodetable
-
-\startcatcodetable \mthcatcodes
- \catcode\tabasciicode \spacecatcode
- \catcode\endoflineasciicode \endoflinecatcode
- %\catcode\newlineasciicode \spacecatcode
- \catcode\formfeedasciicode \endoflinecatcode
- \catcode\spaceasciicode \spacecatcode
- \catcode\endoffileasciicode \ignorecatcode
- \catcode\caretasciicode \superscriptcatcode
- \catcode\underscoreasciicode\subscriptcatcode
- \catcode\ampersandasciicode \alignmentcatcode
- \catcode`\\ \escapecatcode
- \catcode`\{ \begingroupcatcode
- \catcode`\} \endgroupcatcode
- \catcode`\$ \mathshiftcatcode
- \catcode`\# \parametercatcode
- \catcode`\% \commentcatcode
- %\catcode`\~ \activecatcode
- %\catcode`\| \activecatcode
-\stopcatcodetable
-
-\startcatcodetable \typcatcodesa
- \catcode\tabasciicode \othercatcode
- \catcode\endoflineasciicode\othercatcode
- \catcode\formfeedasciicode \othercatcode
- \catcode\spaceasciicode \othercatcode
- \catcode\endoffileasciicode\othercatcode
- \catcode`\{ \begingroupcatcode
- \catcode`\} \endgroupcatcode
-\stopcatcodetable
-
-\startcatcodetable \typcatcodesb
- \catcode\tabasciicode \othercatcode
- \catcode\endoflineasciicode\othercatcode
- \catcode\formfeedasciicode \othercatcode
- \catcode\spaceasciicode \othercatcode
- \catcode\endoffileasciicode\othercatcode
- \catcode`\< \begingroupcatcode
- \catcode`\> \endgroupcatcode
-\stopcatcodetable
-
-\startcatcodetable \typcatcodesc
- \catcode\tabasciicode \othercatcode
- \catcode\endoflineasciicode\othercatcode
- \catcode\formfeedasciicode \othercatcode
- \catcode\spaceasciicode \othercatcode
- \catcode\endoffileasciicode\othercatcode
-\stopcatcodetable
-
-\startcatcodetable \txtcatcodes
- \catcode\tabasciicode \spacecatcode
- \catcode\endoflineasciicode\endoflinecatcode
- \catcode\formfeedasciicode \endoflinecatcode
- \catcode\spaceasciicode \spacecatcode
- \catcode\endoffileasciicode\ignorecatcode
- \catcode`\\ \escapecatcode
- \catcode`\{ \begingroupcatcode
- \catcode`\} \endgroupcatcode
-\stopcatcodetable
-
-\letcatcodecommand \ctxcatcodes `\| \relax
-\letcatcodecommand \ctxcatcodes `\~ \relax
-
- \catcodetable \ctxcatcodes
-\let \defaultcatcodetable \ctxcatcodes
-
-% for the moment here:
-
-\def\starttexcode
- {\pushcatcodetable
- \catcodetable\prtcatcodes}
-
-\def\stoptexcode
- {\popcatcodetable}
-
-\endinput
-
-% under consideration:
-%
-% \newcatcodetable\txtcatcodes
-%
-% \startcatcodetable \txtcatcodes
-% \catcode\tabasciicode \spacecatcode
-% \catcode\endoflineasciicode\endoflinecatcode
-% \catcode\formfeedasciicode \endoflinecatcode
-% \catcode\spaceasciicode \spacecatcode
-% \catcode`\\ \escapecatcode
-% \catcode`\{ \begingroupcatcode
-% \catcode`\} \endgroupcatcode
-% \stopcatcodetable
-%
-% \newcount\relaxedcatcodedepth
-%
-% \def\startrelaxedcatcodes
-% {\global\chardef\relaxedcatcodeparent\catcodetable
-% \global\advance\relaxedcatcodedepth\plusone
-% \nonknuthmode\setcatcodetable\txtcatcodes}
-%
-% \def\stoprelaxedcatcodes
-% {\ifcase\relaxedcatcodedepth
-% % error
-% \or
-% \setcatcodetable\relaxedcatcodeparent
-% \global\relaxedcatcodedepth\zerocount
-% \else
-% \global\advance\relaxedcatcodedepth\minusone
-% \setcatcodetable\txtcatcodes
-% \fi}
-%
-% \starttext
-%
-% \startrelaxedcatcodes
-% \startcomment test \stopcomment
-% test $ test 10% whatever|test \mathematics{x^2=1}
-% \stoprelaxedcatcodes
-%
-% $x^2=1$
-%
-% \stoptext
diff --git a/tex/context/base/catc-def.tex b/tex/context/base/catc-def.mkii
index 7db086489..275a9a6cd 100644
--- a/tex/context/base/catc-def.tex
+++ b/tex/context/base/catc-def.mkii
@@ -34,15 +34,15 @@
\catcode\formfeedasciicode \endoflinecatcode
\catcode\spaceasciicode \spacecatcode
\catcode\endoffileasciicode \ignorecatcode
- \catcode\caretasciicode \superscriptcatcode
+ \catcode\circumflexasciicode\superscriptcatcode
\catcode\underscoreasciicode\subscriptcatcode
\catcode\ampersandasciicode \alignmentcatcode
- \catcode`\\ \escapecatcode
- \catcode`\{ \begingroupcatcode
- \catcode`\} \endgroupcatcode
- \catcode`\$ \mathshiftcatcode
- \catcode`\# \parametercatcode
- \catcode`\% \commentcatcode
+ \catcode\backslashasciicode \escapecatcode
+ \catcode\leftbraceasciicode \begingroupcatcode
+ \catcode\rightbraceasciicode\endgroupcatcode
+ \catcode\dollarasciicode \mathshiftcatcode
+ \catcode\hashasciicode \parametercatcode
+ \catcode\commentasciicode \commentcatcode
\stopcatcodetable
\startcatcodetable \luacatcodes
@@ -51,17 +51,17 @@
\catcode\formfeedasciicode \othercatcode
\catcode\spaceasciicode \othercatcode
\catcode\endoffileasciicode \ignorecatcode
- \catcode\caretasciicode \othercatcode
+ \catcode\circumflexasciicode\othercatcode
\catcode\underscoreasciicode\othercatcode
\catcode\ampersandasciicode \othercatcode
- \catcode`\\ \escapecatcode
- \catcode`\% \othercatcode
- \catcode`\# \othercatcode
- \catcode`\| \othercatcode
- \catcode`\{ \othercatcode
- \catcode`\} \othercatcode
- \catcode`\~ \othercatcode
- \catcode`\$ \othercatcode
+ \catcode\backslashasciicode \escapecatcode
+ \catcode\commentasciicode \othercatcode
+ \catcode\hashasciicode \othercatcode
+ \catcode\barasciicode \othercatcode
+ \catcode\leftbraceasciicode \othercatcode
+ \catcode\rightbraceasciicode\othercatcode
+ \catcode\tildeasciicode \othercatcode
+ \catcode\dollarasciicode \othercatcode
\stopcatcodetable
\startcatcodetable \notcatcodes % probably less needed
@@ -70,22 +70,22 @@
\catcode\formfeedasciicode \endoflinecatcode
\catcode\spaceasciicode \spacecatcode
\catcode\endoffileasciicode \ignorecatcode
- \catcode\caretasciicode \othercatcode
+ \catcode\circumflexasciicode\othercatcode
\catcode\underscoreasciicode\othercatcode
\catcode\ampersandasciicode \othercatcode
- \catcode`\~ \othercatcode
- \catcode`\# \othercatcode
- \catcode`\$ \othercatcode
- \catcode`\% \othercatcode
+ \catcode\tildeasciicode \othercatcode
+ \catcode\hashasciicode \othercatcode
+ \catcode\dollarasciicode \othercatcode
+ \catcode\commentasciicode \othercatcode
\catcode`\< \othercatcode
\catcode`\> \othercatcode
- \catcode`\{ \othercatcode
- \catcode`\} \othercatcode
+ \catcode\leftbraceasciicode \othercatcode
+ \catcode\rightbraceasciicode\othercatcode
\catcode`\" \othercatcode
\catcode`\' \othercatcode
\catcode`\/ \othercatcode
- \catcode`\\ \othercatcode
- \catcode`\| \othercatcode
+ \catcode\backslashasciicode \othercatcode
+ \catcode\barasciicode \othercatcode
\stopcatcodetable
\startcatcodetable \vrbcatcodes % probably less needed
@@ -102,34 +102,34 @@
\catcode\formfeedasciicode \endoflinecatcode
\catcode\spaceasciicode \spacecatcode
\catcode\endoffileasciicode \ignorecatcode
- \catcode\caretasciicode \superscriptcatcode
+ \catcode\circumflexasciicode\superscriptcatcode
\catcode\underscoreasciicode\subscriptcatcode
\catcode\ampersandasciicode \alignmentcatcode
- \catcode`\\ \escapecatcode
- \catcode`\{ \begingroupcatcode
- \catcode`\} \endgroupcatcode
- \catcode`\$ \mathshiftcatcode
- \catcode`\# \parametercatcode
- \catcode`\% \commentcatcode
+ \catcode\backslashasciicode \escapecatcode
+ \catcode\leftbraceasciicode \begingroupcatcode
+ \catcode\rightbraceasciicode\endgroupcatcode
+ \catcode\dollarasciicode \mathshiftcatcode
+ \catcode\hashasciicode \parametercatcode
+ \catcode\commentasciicode \commentcatcode
\catcode`\@ \lettercatcode
\catcode`\! \lettercatcode
\catcode`\? \lettercatcode
- \catcode`\~ \activecatcode
- \catcode`\| \activecatcode
+ \catcode\tildeasciicode \activecatcode
+ \catcode\barasciicode \activecatcode
\stopcatcodetable
%D Because some characters have a special meaning, we provide
%D shortcuts to their character representation.
-\chardef\^=\caretasciicode
+\chardef\^=\circumflexasciicode
\chardef\_=\underscoreasciicode % but way too wide in lm, so ... until that's fixed:
\chardef\&=\ampersandasciicode
-\chardef\%=`\%
-\chardef\#=`\#
-\chardef\$=`\$
-\chardef\{=`\{
-\chardef\}=`\}
-\chardef\\=`\\
+\chardef\%=\commentasciicode
+\chardef\#=\hashasciicode
+\chardef\$=\dollarasciicode
+\chardef\{=\leftbraceasciicode
+\chardef\}=\rightbraceasciicode
+\chardef\\=\backslashasciicode
%def\_{\leavevmode \kern.06em \vbox{\hrule width.3em}}
\def\_{\dontleavehmode \kern.06em \vbox{\hrule width.3em}}
diff --git a/tex/context/base/catc-def.mkiv b/tex/context/base/catc-def.mkiv
new file mode 100644
index 000000000..275a9a6cd
--- /dev/null
+++ b/tex/context/base/catc-def.mkiv
@@ -0,0 +1,142 @@
+%D \module
+%D [ file=catc-def,
+%D version=2006.09.18,
+%D title=\CONTEXT\ Catcode Macros,
+%D subtitle=Default Tables,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D The following catcode tables are rather \CONTEXT\ independent.
+
+\ifdefined\nilcatcodes \else \newcatcodetable \nilcatcodes \fi
+\ifdefined\texcatcodes \else \newcatcodetable \texcatcodes \fi
+\ifdefined\luacatcodes \else \newcatcodetable \luacatcodes \fi
+\ifdefined\notcatcodes \else \newcatcodetable \notcatcodes \fi
+\ifdefined\vrbcatcodes \else \newcatcodetable \vrbcatcodes \fi
+\ifdefined\prtcatcodes \else \newcatcodetable \prtcatcodes \fi
+
+\startcatcodetable \nilcatcodes
+ \catcode\tabasciicode \spacecatcode
+ \catcode\endoflineasciicode\endoflinecatcode
+ \catcode\formfeedasciicode \endoflinecatcode
+ \catcode\spaceasciicode \spacecatcode
+ \catcode\endoffileasciicode\ignorecatcode
+\stopcatcodetable
+
+\startcatcodetable \texcatcodes
+ \catcode\tabasciicode \spacecatcode
+ \catcode\endoflineasciicode \endoflinecatcode
+ \catcode\formfeedasciicode \endoflinecatcode
+ \catcode\spaceasciicode \spacecatcode
+ \catcode\endoffileasciicode \ignorecatcode
+ \catcode\circumflexasciicode\superscriptcatcode
+ \catcode\underscoreasciicode\subscriptcatcode
+ \catcode\ampersandasciicode \alignmentcatcode
+ \catcode\backslashasciicode \escapecatcode
+ \catcode\leftbraceasciicode \begingroupcatcode
+ \catcode\rightbraceasciicode\endgroupcatcode
+ \catcode\dollarasciicode \mathshiftcatcode
+ \catcode\hashasciicode \parametercatcode
+ \catcode\commentasciicode \commentcatcode
+\stopcatcodetable
+
+\startcatcodetable \luacatcodes
+ \catcode\tabasciicode \othercatcode
+ \catcode\endoflineasciicode \othercatcode
+ \catcode\formfeedasciicode \othercatcode
+ \catcode\spaceasciicode \othercatcode
+ \catcode\endoffileasciicode \ignorecatcode
+ \catcode\circumflexasciicode\othercatcode
+ \catcode\underscoreasciicode\othercatcode
+ \catcode\ampersandasciicode \othercatcode
+ \catcode\backslashasciicode \escapecatcode
+ \catcode\commentasciicode \othercatcode
+ \catcode\hashasciicode \othercatcode
+ \catcode\barasciicode \othercatcode
+ \catcode\leftbraceasciicode \othercatcode
+ \catcode\rightbraceasciicode\othercatcode
+ \catcode\tildeasciicode \othercatcode
+ \catcode\dollarasciicode \othercatcode
+\stopcatcodetable
+
+\startcatcodetable \notcatcodes % probably less needed
+ \catcode\tabasciicode \spacecatcode
+ \catcode\endoflineasciicode \endoflinecatcode
+ \catcode\formfeedasciicode \endoflinecatcode
+ \catcode\spaceasciicode \spacecatcode
+ \catcode\endoffileasciicode \ignorecatcode
+ \catcode\circumflexasciicode\othercatcode
+ \catcode\underscoreasciicode\othercatcode
+ \catcode\ampersandasciicode \othercatcode
+ \catcode\tildeasciicode \othercatcode
+ \catcode\hashasciicode \othercatcode
+ \catcode\dollarasciicode \othercatcode
+ \catcode\commentasciicode \othercatcode
+ \catcode`\< \othercatcode
+ \catcode`\> \othercatcode
+ \catcode\leftbraceasciicode \othercatcode
+ \catcode\rightbraceasciicode\othercatcode
+ \catcode`\" \othercatcode
+ \catcode`\' \othercatcode
+ \catcode`\/ \othercatcode
+ \catcode\backslashasciicode \othercatcode
+ \catcode\barasciicode \othercatcode
+\stopcatcodetable
+
+\startcatcodetable \vrbcatcodes % probably less needed
+ \catcode\tabasciicode \othercatcode
+ \catcode\endoflineasciicode\othercatcode
+ \catcode\formfeedasciicode \othercatcode
+ \catcode\spaceasciicode \othercatcode
+ \catcode\endoffileasciicode\othercatcode
+\stopcatcodetable
+
+\startcatcodetable \prtcatcodes
+ \catcode\tabasciicode \spacecatcode
+ \catcode\endoflineasciicode \endoflinecatcode
+ \catcode\formfeedasciicode \endoflinecatcode
+ \catcode\spaceasciicode \spacecatcode
+ \catcode\endoffileasciicode \ignorecatcode
+ \catcode\circumflexasciicode\superscriptcatcode
+ \catcode\underscoreasciicode\subscriptcatcode
+ \catcode\ampersandasciicode \alignmentcatcode
+ \catcode\backslashasciicode \escapecatcode
+ \catcode\leftbraceasciicode \begingroupcatcode
+ \catcode\rightbraceasciicode\endgroupcatcode
+ \catcode\dollarasciicode \mathshiftcatcode
+ \catcode\hashasciicode \parametercatcode
+ \catcode\commentasciicode \commentcatcode
+ \catcode`\@ \lettercatcode
+ \catcode`\! \lettercatcode
+ \catcode`\? \lettercatcode
+ \catcode\tildeasciicode \activecatcode
+ \catcode\barasciicode \activecatcode
+\stopcatcodetable
+
+%D Because some characters have a special meaning, we provide
+%D shortcuts to their character representation.
+
+\chardef\^=\circumflexasciicode
+\chardef\_=\underscoreasciicode % but way too wide in lm, so ... until that's fixed:
+\chardef\&=\ampersandasciicode
+\chardef\%=\commentasciicode
+\chardef\#=\hashasciicode
+\chardef\$=\dollarasciicode
+\chardef\{=\leftbraceasciicode
+\chardef\}=\rightbraceasciicode
+\chardef\\=\backslashasciicode
+
+%def\_{\leavevmode \kern.06em \vbox{\hrule width.3em}}
+\def\_{\dontleavehmode \kern.06em \vbox{\hrule width.3em}}
+
+%D From now on we can use the protection mechanisms.
+
+\def\unprotect {\pushcatcodetable\setcatcodetable\prtcatcodes}
+\def\protect {\popcatcodetable}
+
+\endinput
diff --git a/tex/context/base/catc-ini.mkii b/tex/context/base/catc-ini.mkii
index 4f80e6595..900f61756 100644
--- a/tex/context/base/catc-ini.mkii
+++ b/tex/context/base/catc-ini.mkii
@@ -22,33 +22,41 @@
\ifx\plusone \undefined \chardef \plusone = 1 \fi
\ifx\minusone \undefined \newcount\minusone \minusone =-1 \fi
-\chardef\escapecatcode = 0
-\chardef\begingroupcatcode = 1
-\chardef\endgroupcatcode = 2
-\chardef\mathshiftcatcode = 3
-\chardef\alignmentcatcode = 4
-\chardef\endoflinecatcode = 5
-\chardef\parametercatcode = 6
-\chardef\superscriptcatcode = 7
-\chardef\subscriptcatcode = 8
-\chardef\ignorecatcode = 9
-\chardef\spacecatcode = 10
-\chardef\lettercatcode = 11
-\chardef\othercatcode = 12 \chardef\other = 12
-\chardef\activecatcode = 13 \chardef\active = 13
-\chardef\commentcatcode = 14
-
-\chardef\tabasciicode = 9 % ^^I
-\chardef\newlineasciicode = 10 % ^^J don't confuse this one with \endoflineasciicode
-\chardef\formfeedasciicode = 12 % ^^L
-\chardef\endoflineasciicode = 13 % ^^M somewhat messy but this can be the active \par
-\chardef\endoffileasciicode = 26 % ^^Z
-\chardef\ampersandasciicode = 38
-\chardef\caretasciicode = 94
-\chardef\underscoreasciicode= 95
-\chardef\spaceasciicode = 32
-%chardef\barasciicode = 124
-\chardef\delasciicode = 127
+\chardef\escapecatcode = 0
+\chardef\begingroupcatcode = 1
+\chardef\endgroupcatcode = 2
+\chardef\mathshiftcatcode = 3
+\chardef\alignmentcatcode = 4
+\chardef\endoflinecatcode = 5
+\chardef\parametercatcode = 6
+\chardef\superscriptcatcode = 7
+\chardef\subscriptcatcode = 8
+\chardef\ignorecatcode = 9
+\chardef\spacecatcode = 10
+\chardef\lettercatcode = 11
+\chardef\othercatcode = 12 \chardef\other = 12
+\chardef\activecatcode = 13 \chardef\active = 13
+\chardef\commentcatcode = 14
+\chardef\invalidcatcode = 15
+
+\chardef\tabasciicode = 9 % ^^I
+\chardef\newlineasciicode = 10 % ^^J don't confuse this one with \endoflineasciicode
+\chardef\formfeedasciicode = 12 % ^^L
+\chardef\endoflineasciicode = 13 % ^^M somewhat messy but this can be the active \par
+\chardef\endoffileasciicode = 26 % ^^Z
+\chardef\spaceasciicode = 32
+\chardef\hashasciicode = 35
+\chardef\dollarasciicode = 36
+\chardef\commentasciicode = 37
+\chardef\ampersandasciicode = 38
+\chardef\backslashasciicode = 92 % `\\
+\chardef\circumflexasciicode = 94
+\chardef\underscoreasciicode = 95
+\chardef\leftbraceasciicode = 123 % `\{
+\chardef\barasciicode = 124 % `\|
+\chardef\rightbraceasciicode = 125 % `\}
+\chardef\tildeasciicode = 126 % `\~
+\chardef\delasciicode = 127
\newif \ifrecatcodeuppercharacters % only used in good old tex
diff --git a/tex/context/base/catc-ini.mkiv b/tex/context/base/catc-ini.mkiv
index 9e974545e..fbc8630de 100644
--- a/tex/context/base/catc-ini.mkiv
+++ b/tex/context/base/catc-ini.mkiv
@@ -21,21 +21,22 @@
%D implement a fake method in the \MKII\ file. There is some
%D overlap in code with \MKII\ but we take that for granted.
-\setnewconstant\escapecatcode 0
-\setnewconstant\begingroupcatcode 1
-\setnewconstant\endgroupcatcode 2
-\setnewconstant\mathshiftcatcode 3
-\setnewconstant\alignmentcatcode 4
-\setnewconstant\endoflinecatcode 5
-\setnewconstant\parametercatcode 6
-\setnewconstant\superscriptcatcode 7
-\setnewconstant\subscriptcatcode 8
-\setnewconstant\ignorecatcode 9
-\setnewconstant\spacecatcode 10
-\setnewconstant\lettercatcode 11
-\setnewconstant\othercatcode 12 \let\other \othercatcode
-\setnewconstant\activecatcode 13 \let\active\activecatcode
-\setnewconstant\commentcatcode 14
+\setnewconstant\escapecatcode 0
+\setnewconstant\begingroupcatcode 1
+\setnewconstant\endgroupcatcode 2
+\setnewconstant\mathshiftcatcode 3
+\setnewconstant\alignmentcatcode 4
+\setnewconstant\endoflinecatcode 5
+\setnewconstant\parametercatcode 6
+\setnewconstant\superscriptcatcode 7
+\setnewconstant\subscriptcatcode 8
+\setnewconstant\ignorecatcode 9
+\setnewconstant\spacecatcode 10
+\setnewconstant\lettercatcode 11
+\setnewconstant\othercatcode 12 \let\other \othercatcode
+\setnewconstant\activecatcode 13 \let\active\activecatcode
+\setnewconstant\commentcatcode 14
+\setnewconstant\invalidcatcode 15
\setnewconstant\tabasciicode 9
\setnewconstant\newlineasciicode 10 % don't confuse this one with \endoflineasciicode
@@ -43,12 +44,37 @@
\setnewconstant\endoflineasciicode 13 % somewhat messy but this can be the active \par
\setnewconstant\endoffileasciicode 26
\setnewconstant\spaceasciicode 32
+\setnewconstant\hashasciicode 35
+\setnewconstant\dollarasciicode 36
+\setnewconstant\commentasciicode 37
\setnewconstant\ampersandasciicode 38
-\setnewconstant\caretasciicode 94
+\setnewconstant\backslashasciicode 92 % `\\
+\setnewconstant\circumflexasciicode 94
\setnewconstant\underscoreasciicode 95
-%setnewconstant\barasciicode 124
+\setnewconstant\leftbraceasciicode 123 % `\{
+\setnewconstant\barasciicode 124 % `\|
+\setnewconstant\rightbraceasciicode 125 % `\}
+\setnewconstant\tildeasciicode 126 % `\~
\setnewconstant\delasciicode 127
+\bgroup
+ \catcode \tabasciicode \activecatcode \gdef\activetabtoken {^^I}
+ \gdef\outputnewlinechar {^^J}
+ \catcode \formfeedasciicode \activecatcode \gdef\activeformfeedtoken {^^L}
+ \catcode \endoflineasciicode \activecatcode \gdef\activeendoflinetoken{^^M}
+\egroup
+
+% \endlinechar = \endoflineasciicode % appended to input lines
+% \newlinechar = \newlineasciicode % can be used in write
+
+% rather special and used in writing to file: \let\par\outputnewlinechar
+
+\def\initializenewlinechar % operating system dependent
+ {\bgroup
+ \newlinechar\newlineasciicode
+ \xdef\outputnewlinechar{^^J}%
+ \egroup}
+
\ifx\gobbleoneargument\undefined \long\def\gobbleoneargument#1{} \fi
\newif \ifrecatcodeuppercharacters % only used in good old tex
@@ -71,10 +97,10 @@
\newtoks \setdefaultcatcodes
\setdefaultcatcodes
- {\catcode`\\ \othercatcode
+ {\catcode\backslashasciicode\othercatcode
\catcode\endoflineasciicode\othercatcode
\catcode\spaceasciicode \othercatcode
- \catcode`\% \othercatcode
+ \catcode\commentasciicode \othercatcode
\catcode\delasciicode \othercatcode}
\long\normalprotected\def\startcatcodetable#1#2\stopcatcodetable
@@ -85,8 +111,10 @@
\savecatcodetable#1\relax
\egroup}
-\def\permitcaretescape % to be used grouped
- {\catcode`\^ = \superscriptcatcode}
+\def\permitcircumflexescape % to be used grouped
+ {\catcode\circumflexasciicode\superscriptcatcode}
+
+\let\permitcaretescape\permitcircumflexescape
\newcatcodetable\dummycatcodes
@@ -121,7 +149,7 @@
%D mechanism? Future versions of \MKIV\ might only use
%D active characters for very special cases.
-\setnewconstant\activehackcode `\~
+\setnewconstant\activehackcode \tildeasciicode
%D Once a catcode is assigned, the next assignments will happen faster.
diff --git a/tex/context/base/catc-sym.tex b/tex/context/base/catc-sym.mkii
index dafe92290..91cac5f90 100644
--- a/tex/context/base/catc-sym.tex
+++ b/tex/context/base/catc-sym.mkii
@@ -94,8 +94,8 @@
% if used often we can move the code inline
- \catcode`\|=\activecatcode
- \catcode`\~=\activecatcode
+ \catcode\barasciicode \activecatcode
+ \catcode\tildeasciicode\activecatcode
\global \everyverbosechacters =
{\setverbosecscharacter |\setverbosecscharacter ~% context specific
diff --git a/tex/context/base/catc-sym.mkiv b/tex/context/base/catc-sym.mkiv
new file mode 100644
index 000000000..91cac5f90
--- /dev/null
+++ b/tex/context/base/catc-sym.mkiv
@@ -0,0 +1,187 @@
+%D \module
+%D [ file=catc-sym,
+%D version=1997.01.03, % moved code
+%D title=\CONTEXT\ Catcode Macros,
+%D subtitle=Some Handy Constants,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=\PRAGMA]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% we now have loaded syst-* so we have all @@catcode constants
+
+%D We want to have access to the raw alternatives of the
+%D special characters. We use a \type {\xdef} instead of
+%D \type {\let} because we need an expandable token in a
+%D \type {\write}.
+
+\bgroup
+
+\catcode`B=\begingroupcatcode
+\catcode`E=\endgroupcatcode
+\catcode`.=\escapecatcode
+
+.catcode `.{ 12 .xdef .letteropenbrace B.string{E
+.catcode `.} 12 .xdef .letterclosebrace B.string}E
+.catcode `.& 12 .xdef .letterampersand B.string&E
+.catcode `.< 12 .xdef .letterless B.string<E
+.catcode `.> 12 .xdef .lettermore B.string>E
+.catcode `.# 12 .xdef .letterhash B.string#E
+.catcode `." 12 .xdef .letterdoublequote B.string"E
+.catcode `.' 12 .xdef .lettersinglequote B.string'E
+.catcode `.$ 12 .xdef .letterdollar B.string$E
+.catcode `.% 12 .xdef .letterpercent B.string%E
+.catcode `.^ 12 .xdef .letterhat B.string^E
+.catcode `._ 12 .xdef .letterunderscore B.string_E
+.catcode `.| 12 .xdef .letterbar B.string|E
+.catcode `.~ 12 .xdef .lettertilde B.string~E
+.catcode `.\ 12 .xdef .letterbackslash B.string\E
+.catcode `./ 12 .xdef .letterslash B.string/E
+.catcode `.? 12 .xdef .letterquestionmark B.string?E
+.catcode `.! 12 .xdef .letterexclamationmark B.string!E
+.catcode `.@ 12 .xdef .letterat B.string@E
+.catcode `.: 12 .xdef .lettercolon B.string:E
+
+ .global .let .letterescape .letterbackslash
+ .global .let .letterbgroup .letteropenbrace
+ .global .let .letteregroup .letterclosebrace
+ .global .let .letterleftbrace .letteropenbrace
+ .global .let .letterrightbrace .letterclosebrace
+
+.egroup
+
+%D \macros
+%D {uncatcodespecials,setnaturalcatcodes,setnormalcatcodes,
+%D uncatcodecharacters,uncatcodeallcharacters,
+%D uncatcodespacetokens}
+%D
+%D The following macros are more or less replaced by switching
+%D to a catcode table (which we simulate in \MKII) but we keep
+%D them for convenience and compatibility. Some old engine code
+%D has been removed.
+
+\def\uncatcodespecials {\setcatcodetable\nilcatcodes \uncatcodespacetokens}
+\def\setnaturalcatcodes {\setcatcodetable\nilcatcodes}
+\def\setnormalcatcodes {\setcatcodetable\ctxcatcodes} % maybe \texcatcodes
+\def\uncatcodecharacters {\setcatcodetable\nilcatcodes} % was fast version, gone now
+\def\uncatcodeallcharacters{\setcatcodetable\nilcatcodes} % was slow one, with restore
+
+\def\uncatcodespacetokens
+ {\catcode\spaceasciicode \spacecatcode
+ \catcode\formfeedasciicode \ignorecatcode
+ \catcode\endoflineasciicode\endoflinecatcode
+ \catcode\delasciicode \ignorecatcode}
+
+%D \macros
+%D {setverbosecharacter,setverbosecscharacters}
+%D
+%D Next follows a definition that lets some shortcuts expand to
+%D themselves. This macro is meant for \POSTSCRIPT\ and \PDF\
+%D code passed on to the backend.
+
+\newtoks\everyverbosechacters
+
+\def\setverbosecscharacter#1%
+ {\edef#1{\string#1}}
+
+\def\setverbosecscharacters
+ {\the\everyverbosechacters}
+
+\bgroup
+
+ % if used often we can move the code inline
+
+ \catcode\barasciicode \activecatcode
+ \catcode\tildeasciicode\activecatcode
+
+ \global \everyverbosechacters =
+ {\setverbosecscharacter |\setverbosecscharacter ~% context specific
+ \setverbosecscharacter\|\setverbosecscharacter\~%
+ \setverbosecscharacter\:\setverbosecscharacter\;%
+ \setverbosecscharacter\+\setverbosecscharacter\-%
+ \setverbosecscharacter\[\setverbosecscharacter\]%
+ \setverbosecscharacter\.\setverbosecscharacter\\%
+ \setverbosecscharacter\)\setverbosecscharacter\(%
+ \setverbosecscharacter\0\setverbosecscharacter\1%
+ \setverbosecscharacter\2\setverbosecscharacter\3%
+ \setverbosecscharacter\4\setverbosecscharacter\5%
+ \setverbosecscharacter\6\setverbosecscharacter\7%
+ \setverbosecscharacter\8\setverbosecscharacter\9%
+ \setverbosecscharacter\n\setverbosecscharacter\s%
+ \setverbosecscharacter\/}
+
+\egroup
+
+%D (Inspired by a discussion on the \CONTEXT\ mailing list)
+%D
+%D In \TEX\ each character can have one of 16 catcodes. This way the
+%D backslash, dollar, ampersand, hash and some more characters get
+%D their special meaning. If you want to process tokens under a
+%D certain catcode regime, passing arguments can interfere badly.
+%D
+%D \startbuffer[a]
+%D \def\whatever#1{[#1]}
+%D \whatever{whatever \type {\whatever{you want}} $or$ not!}
+%D \stopbuffer
+%D
+%D \typebuffer[a]
+%D
+%D Here we pass an argument to \type {\whatever} but part of that
+%D argument is to be processed under a different catcode regime, i.e.\
+%D all characters that need to be typeset verbatim need to get
+%D the catcode that makes it a letter. This is what we get when we typeset
+%D the text verbatim:
+%D
+%D \starttyping
+%D whatever \type {\whatever{you want}} $or$ not!
+%D \stoptyping
+%D
+%D However, when passed to \type {\whatever} we get:
+%D
+%D \getbuffer[a]
+%D
+%D In \ETEX\ one can use \type {\scantokens} to circumvent this problem.
+%D
+%D \startbuffer[b]
+%D \def\rescan#1{\scantokens{#1}}
+%D \def\whatever#1{[\rescan{#1}]}
+%D \whatever{whatever \type {\whatever{you want}} $or$ not!}
+%D \stopbuffer
+%D
+%D \getbuffer[b] \typebuffer[b]
+%D
+%D This time the \type {\whatever} call gives:
+%D
+%D \getbuffer[b]
+%D
+%D In this example, two spaces have crept in. The first one, after the
+%D macro name, is inserted by \TEX\ and cannot be avoided. The last space
+%D is inserted by \type {\scantokens}, and is the consequence of the fact
+%D that this macro mimics reading from a file. You can avoid the last
+%D space by a slightly different definition:
+%D
+%D \startbuffer[c]
+%D \def\rescan#1{\scantokens{#1\ignorespaces}}
+%D \def\whatever#1{[\rescan{#1}]}
+%D \whatever{whatever \type {\whatever{you want}} $or$ not!}
+%D \stopbuffer
+%D
+%D \typebuffer[c]
+%D
+%D Unfortunately we still keep the first space, but at least it's better than
+%D a failure:
+%D
+%D \getbuffer[c]
+
+\long\def\rescan#1{\scantokens{#1\ignorespaces}}
+\long\def\rescanwithsetup#1#2{\begingroup\directsetup{#1}\scantokens{#2\ignorespaces}\endgroup}
+
+\ifx\scantextokens\undefined \else
+ \long\def\rescan#1{\scantextokens{#1}}
+ \long\def\rescanwithsetup#1#2{\begingroup\directsetup{#1}\scantextokens{#2}\endgroup}
+\fi
+
+\endinput
diff --git a/tex/context/base/catc-xml.mkii b/tex/context/base/catc-xml.mkii
new file mode 100644
index 000000000..2349e01a2
--- /dev/null
+++ b/tex/context/base/catc-xml.mkii
@@ -0,0 +1,114 @@
+%D \module
+%D [ file=catc-xml,
+%D version=2006.09.18,
+%D title=\CONTEXT\ Catcode Macros,
+%D subtitle=\XML\ Catcode Tables,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{ConTeXt Catcode Regimes / XML}
+
+\ifdefined \xmlcatcodesn \else \newcatcodetable \xmlcatcodesn \fi % normal
+\ifdefined \xmlcatcodese \else \newcatcodetable \xmlcatcodese \fi % entitle
+\ifdefined \xmlcatcodesr \else \newcatcodetable \xmlcatcodesr \fi % reduce
+
+\startcatcodetable \xmlcatcodesn
+ \catcode\tabasciicode \spacecatcode
+ \catcode\endoflineasciicode \endoflinecatcode
+ \catcode\formfeedasciicode \endoflinecatcode
+ \catcode\spaceasciicode \spacecatcode
+ \catcode\endoffileasciicode \ignorecatcode
+ \catcode\ampersandasciicode \activecatcode
+ \catcode`\< \activecatcode
+ \catcode`\> \othercatcode
+ \catcode`\" \othercatcode % probably not needed any more
+ \catcode`\/ \othercatcode % probably not needed any more
+ \catcode`\' \othercatcode % probably not needed any more
+ \catcode\tildeasciicode \othercatcode % probably not needed any more
+ \catcode\hashasciicode \othercatcode % probably not needed any more
+ \catcode\backslashasciicode \othercatcode % probably not needed any more
+\stopcatcodetable
+
+\startcatcodetable \xmlcatcodese
+ \catcode\tabasciicode \spacecatcode
+ \catcode\endoflineasciicode \endoflinecatcode
+ \catcode\formfeedasciicode \endoflinecatcode
+ \catcode\spaceasciicode \spacecatcode
+ \catcode\endoffileasciicode \ignorecatcode
+ \catcode\ampersandasciicode \activecatcode
+ \catcode`\< \activecatcode
+ \catcode`\> \activecatcode
+ \catcode\hashasciicode \activecatcode
+ \catcode\dollarasciicode \activecatcode
+ \catcode\commentasciicode \activecatcode
+ \catcode\backslashasciicode \activecatcode
+ \catcode\circumflexasciicode\activecatcode
+ \catcode\underscoreasciicode\activecatcode
+ \catcode\leftbraceasciicode \activecatcode
+ \catcode\rightbraceasciicode\activecatcode
+ \catcode\barasciicode \activecatcode
+ \catcode\tildeasciicode \activecatcode
+\stopcatcodetable
+
+\startcatcodetable \xmlcatcodesr
+ \catcode\tabasciicode \spacecatcode
+ \catcode\endoflineasciicode \endoflinecatcode
+ \catcode\formfeedasciicode \endoflinecatcode
+ \catcode\spaceasciicode \spacecatcode
+ \catcode\endoffileasciicode \ignorecatcode
+ \catcode\ampersandasciicode \activecatcode
+ \catcode`\< \activecatcode
+ \catcode`\> \activecatcode
+ \catcode\hashasciicode \activecatcode
+ \catcode\dollarasciicode \activecatcode
+ \catcode\commentasciicode \activecatcode
+ \catcode\backslashasciicode \activecatcode
+ \catcode\circumflexasciicode\activecatcode
+ \catcode\underscoreasciicode\activecatcode
+ \catcode\leftbraceasciicode \activecatcode
+ \catcode\rightbraceasciicode\activecatcode
+ \catcode\barasciicode \activecatcode
+ \catcode\tildeasciicode \activecatcode
+\stopcatcodetable
+
+%D Next we hook in some active character definitions.
+
+\letcatcodecommand \xmlcatcodesn \ampersandasciicode \relax
+\letcatcodecommand \xmlcatcodesn `\< \relax
+
+\letcatcodecommand \xmlcatcodese \ampersandasciicode \relax
+\letcatcodecommand \xmlcatcodese `\< \relax
+
+\letcatcodecommand \xmlcatcodesr \ampersandasciicode \relax
+\letcatcodecommand \xmlcatcodesr `\< \relax
+
+\letcatcodecommand \xmlcatcodese \hashasciicode \relax
+\letcatcodecommand \xmlcatcodese \dollarasciicode \relax
+\letcatcodecommand \xmlcatcodese \commentasciicode \relax
+\letcatcodecommand \xmlcatcodese \backslashasciicode \relax
+\letcatcodecommand \xmlcatcodese \circumflexasciicode \relax
+\letcatcodecommand \xmlcatcodese \underscoreasciicode \relax
+\letcatcodecommand \xmlcatcodese \leftbraceasciicode \relax
+\letcatcodecommand \xmlcatcodese \rightbraceasciicode \relax
+\letcatcodecommand \xmlcatcodese \barasciicode \relax
+\letcatcodecommand \xmlcatcodese \tildeasciicode \relax
+
+\letcatcodecommand \xmlcatcodesr \hashasciicode \relax
+\letcatcodecommand \xmlcatcodesr \dollarasciicode \relax
+\letcatcodecommand \xmlcatcodesr \commentasciicode \relax
+\letcatcodecommand \xmlcatcodesr \backslashasciicode \relax
+\letcatcodecommand \xmlcatcodesr \circumflexasciicode \relax
+\letcatcodecommand \xmlcatcodesr \underscoreasciicode \relax
+\letcatcodecommand \xmlcatcodesr \leftbraceasciicode \relax
+\letcatcodecommand \xmlcatcodesr \rightbraceasciicode \relax
+\letcatcodecommand \xmlcatcodesr \barasciicode \relax
+\letcatcodecommand \xmlcatcodesr \tildeasciicode \relax
+
+\let\xmlcatcodes \xmlcatcodesn % beware, in mkiv we use \notcatcodes
+
+\endinput
diff --git a/tex/context/base/catc-xml.mkiv b/tex/context/base/catc-xml.mkiv
new file mode 100644
index 000000000..1f11d353a
--- /dev/null
+++ b/tex/context/base/catc-xml.mkiv
@@ -0,0 +1,133 @@
+%D \module
+%D [ file=catc-xml,
+%D version=2006.09.18,
+%D title=\CONTEXT\ Catcode Macros,
+%D subtitle=\XML\ Catcode Tables,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{ConTeXt Catcode Regimes / XML}
+
+\ifdefined \xmlcatcodesn \else \newcatcodetable \xmlcatcodesn \fi % normal
+\ifdefined \xmlcatcodese \else \newcatcodetable \xmlcatcodese \fi % entitle
+\ifdefined \xmlcatcodesr \else \newcatcodetable \xmlcatcodesr \fi % reduce
+
+\startcatcodetable \xmlcatcodesn
+ \catcode\tabasciicode \spacecatcode
+ \catcode\endoflineasciicode \endoflinecatcode
+ \catcode\formfeedasciicode \endoflinecatcode
+ \catcode\spaceasciicode \spacecatcode
+ \catcode\endoffileasciicode \ignorecatcode
+ \catcode\ampersandasciicode \activecatcode
+ \catcode`\< \activecatcode
+ \catcode`\> \othercatcode
+ \catcode`\" \othercatcode % probably not needed any more
+ \catcode`\/ \othercatcode % probably not needed any more
+ \catcode`\' \othercatcode % probably not needed any more
+ \catcode\tildeasciicode \othercatcode % probably not needed any more
+ \catcode\hashasciicode \othercatcode % probably not needed any more
+ \catcode\backslashasciicode \othercatcode % probably not needed any more
+\stopcatcodetable
+
+\startcatcodetable \xmlcatcodese
+ \catcode\tabasciicode \spacecatcode
+ \catcode\endoflineasciicode \endoflinecatcode
+ \catcode\formfeedasciicode \endoflinecatcode
+ \catcode\spaceasciicode \spacecatcode
+ \catcode\endoffileasciicode \ignorecatcode
+ \catcode\ampersandasciicode \activecatcode
+ \catcode`\< \activecatcode
+ \catcode`\> \activecatcode
+ \catcode\hashasciicode \activecatcode
+ \catcode\dollarasciicode \activecatcode
+ \catcode\commentasciicode \activecatcode
+ \catcode\backslashasciicode \activecatcode
+ \catcode\circumflexasciicode\activecatcode
+ \catcode\underscoreasciicode\activecatcode
+ \catcode\leftbraceasciicode \activecatcode
+ \catcode\rightbraceasciicode\activecatcode
+ \catcode\barasciicode \activecatcode
+ \catcode\tildeasciicode \activecatcode
+\stopcatcodetable
+
+\startcatcodetable \xmlcatcodesr
+ \catcode\tabasciicode \spacecatcode
+ \catcode\endoflineasciicode \endoflinecatcode
+ \catcode\formfeedasciicode \endoflinecatcode
+ \catcode\spaceasciicode \spacecatcode
+ \catcode\endoffileasciicode \ignorecatcode
+ \catcode\ampersandasciicode \activecatcode
+ \catcode`\< \activecatcode
+ \catcode`\> \activecatcode
+ \catcode\hashasciicode \activecatcode
+ \catcode\dollarasciicode \activecatcode
+ \catcode\commentasciicode \activecatcode
+ \catcode\backslashasciicode \activecatcode
+ \catcode\circumflexasciicode\activecatcode
+ \catcode\underscoreasciicode\activecatcode
+ \catcode\leftbraceasciicode \activecatcode
+ \catcode\rightbraceasciicode\activecatcode
+ \catcode\barasciicode \activecatcode
+ \catcode\tildeasciicode \activecatcode
+\stopcatcodetable
+
+%D Next we hook in some active character definitions.
+
+\letcatcodecommand \xmlcatcodesn \ampersandasciicode \relax
+\letcatcodecommand \xmlcatcodesn `\< \relax
+
+\letcatcodecommand \xmlcatcodese \ampersandasciicode \relax
+\letcatcodecommand \xmlcatcodese `\< \relax
+
+\letcatcodecommand \xmlcatcodesr \ampersandasciicode \relax
+\letcatcodecommand \xmlcatcodesr `\< \relax
+
+\letcatcodecommand \xmlcatcodese \hashasciicode \relax
+\letcatcodecommand \xmlcatcodese \dollarasciicode \relax
+\letcatcodecommand \xmlcatcodese \commentasciicode \relax
+\letcatcodecommand \xmlcatcodese \backslashasciicode \relax
+\letcatcodecommand \xmlcatcodese \circumflexasciicode \relax
+\letcatcodecommand \xmlcatcodese \underscoreasciicode \relax
+\letcatcodecommand \xmlcatcodese \leftbraceasciicode \relax
+\letcatcodecommand \xmlcatcodese \rightbraceasciicode \relax
+\letcatcodecommand \xmlcatcodese \barasciicode \relax
+\letcatcodecommand \xmlcatcodese \tildeasciicode \relax
+
+\letcatcodecommand \xmlcatcodesr \hashasciicode \relax
+\letcatcodecommand \xmlcatcodesr \dollarasciicode \relax
+\letcatcodecommand \xmlcatcodesr \commentasciicode \relax
+\letcatcodecommand \xmlcatcodesr \backslashasciicode \relax
+\letcatcodecommand \xmlcatcodesr \circumflexasciicode \relax
+\letcatcodecommand \xmlcatcodesr \underscoreasciicode \relax
+\letcatcodecommand \xmlcatcodesr \leftbraceasciicode \relax
+\letcatcodecommand \xmlcatcodesr \rightbraceasciicode \relax
+\letcatcodecommand \xmlcatcodesr \barasciicode \relax
+\letcatcodecommand \xmlcatcodesr \tildeasciicode \relax
+
+\let\xmlcatcodes \xmlcatcodesn % beware, in mkiv we use \notcatcodes
+
+%D We register the catcodetables at the \LUA\ end where some further
+%D initializations take place.
+
+\ctxlua {
+ characters.define(
+ { % letter catcodes
+ \number\xmlcatcodesn,
+ \number\xmlcatcodese,
+ \number\xmlcatcodesr,
+ },
+ { % activate catcodes
+ \number\xmlcatcodesn,
+ \number\xmlcatcodese,
+ \number\xmlcatcodesr,
+ }
+ )
+ catcodes.register("xmlcatcodes",\number\xmlcatcodes)
+}
+
+\endinput
diff --git a/tex/context/base/catc-xml.tex b/tex/context/base/catc-xml.tex
deleted file mode 100644
index 69fa7ee43..000000000
--- a/tex/context/base/catc-xml.tex
+++ /dev/null
@@ -1,137 +0,0 @@
-%D \module
-%D [ file=catc-xml,
-%D version=2006.09.18,
-%D title=\CONTEXT\ Catcode Macros,
-%D subtitle=\XML\ Catcode Tables,
-%D author=Hans Hagen,
-%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
-%C
-%C This module is part of the \CONTEXT\ macro||package and is
-%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
-%C details.
-
-\writestatus{loading}{ConTeXt Catcode Regimes / XML}
-
-\ifdefined \xmlcatcodesn \else \newcatcodetable \xmlcatcodesn \fi % normal
-\ifdefined \xmlcatcodese \else \newcatcodetable \xmlcatcodese \fi % entitle
-\ifdefined \xmlcatcodesr \else \newcatcodetable \xmlcatcodesr \fi % reduce
-
-\startcatcodetable \xmlcatcodesn
- \catcode\tabasciicode \spacecatcode
- \catcode\endoflineasciicode\endoflinecatcode
- \catcode\formfeedasciicode \endoflinecatcode
- \catcode\spaceasciicode \spacecatcode
- \catcode\endoffileasciicode\ignorecatcode
- \catcode`\& \activecatcode
- \catcode`\< \activecatcode
- \catcode`\> \othercatcode
- \catcode`\" \othercatcode % probably not needed any more
- \catcode`\/ \othercatcode % probably not needed any more
- \catcode`\' \othercatcode % probably not needed any more
- \catcode`\~ \othercatcode % probably not needed any more
- \catcode`\# \othercatcode % probably not needed any more
- \catcode`\\ \othercatcode % probably not needed any more
-\stopcatcodetable
-
-\startcatcodetable \xmlcatcodese
- \catcode\tabasciicode \spacecatcode
- \catcode\endoflineasciicode\endoflinecatcode
- \catcode\formfeedasciicode \endoflinecatcode
- \catcode\spaceasciicode \spacecatcode
- \catcode\endoffileasciicode\ignorecatcode
- \catcode`\& \activecatcode
- \catcode`\< \activecatcode
- \catcode`\> \activecatcode
- \catcode`\# \activecatcode
- \catcode`\$ \activecatcode
- \catcode`\% \activecatcode
- \catcode`\\ \activecatcode
- \catcode`\^ \activecatcode
- \catcode`\_ \activecatcode
- \catcode`\{ \activecatcode
- \catcode`\} \activecatcode
- \catcode`\| \activecatcode
- \catcode`\~ \activecatcode
-\stopcatcodetable
-
-\startcatcodetable \xmlcatcodesr
- \catcode\tabasciicode \spacecatcode
- \catcode\endoflineasciicode\endoflinecatcode
- \catcode\formfeedasciicode \endoflinecatcode
- \catcode\spaceasciicode \spacecatcode
- \catcode\endoffileasciicode\ignorecatcode
- \catcode`\& \activecatcode
- \catcode`\< \activecatcode
- \catcode`\> \activecatcode
- \catcode`\# \activecatcode
- \catcode`\$ \activecatcode
- \catcode`\% \activecatcode
- \catcode`\\ \activecatcode
- \catcode`\^ \activecatcode
- \catcode`\_ \activecatcode
- \catcode`\{ \activecatcode
- \catcode`\} \activecatcode
- \catcode`\| \activecatcode
- \catcode`\~ \activecatcode
-\stopcatcodetable
-
-%D Next we hook in some active character definitions.
-
-\letcatcodecommand \xmlcatcodesn `\& \relax
-\letcatcodecommand \xmlcatcodesn `\< \relax
-
-\letcatcodecommand \xmlcatcodese `\& \relax
-\letcatcodecommand \xmlcatcodese `\< \relax
-
-\letcatcodecommand \xmlcatcodesr `\& \relax
-\letcatcodecommand \xmlcatcodesr `\< \relax
-
-\letcatcodecommand \xmlcatcodese `\# \relax
-\letcatcodecommand \xmlcatcodese `\$ \relax
-\letcatcodecommand \xmlcatcodese `\% \relax
-\letcatcodecommand \xmlcatcodese `\\ \relax
-\letcatcodecommand \xmlcatcodese `\^ \relax
-\letcatcodecommand \xmlcatcodese `\_ \relax
-\letcatcodecommand \xmlcatcodese `\{ \relax
-\letcatcodecommand \xmlcatcodese `\} \relax
-\letcatcodecommand \xmlcatcodese `\| \relax
-\letcatcodecommand \xmlcatcodese `\~ \relax
-
-\letcatcodecommand \xmlcatcodesr `\# \relax
-\letcatcodecommand \xmlcatcodesr `\$ \relax
-\letcatcodecommand \xmlcatcodesr `\% \relax
-\letcatcodecommand \xmlcatcodesr `\\ \relax
-\letcatcodecommand \xmlcatcodesr `\^ \relax
-\letcatcodecommand \xmlcatcodesr `\_ \relax
-\letcatcodecommand \xmlcatcodesr `\{ \relax
-\letcatcodecommand \xmlcatcodesr `\} \relax
-\letcatcodecommand \xmlcatcodesr `\| \relax
-\letcatcodecommand \xmlcatcodesr `\~ \relax
-
-\let\xmlcatcodes \xmlcatcodesn % beware, in mkiv we use \notcatcodes
-
-%D We register the catcodetables at the \LUA\ end where some further
-%D initializations take place.
-
-\ifnum\texengine=\luatexengine
-
- \ctxlua {
- characters.define(
- { % letter catcodes
- \number\xmlcatcodesn,
- \number\xmlcatcodese,
- \number\xmlcatcodesr,
- },
- { % activate catcodes
- \number\xmlcatcodesn,
- \number\xmlcatcodese,
- \number\xmlcatcodesr,
- }
- )
- catcodes.register("xmlcatcodes",\number\xmlcatcodes)
- }
-
-\fi
-
-\endinput
diff --git a/tex/context/base/char-act.mkiv b/tex/context/base/char-act.mkiv
index 6cac0010e..1045d5975 100644
--- a/tex/context/base/char-act.mkiv
+++ b/tex/context/base/char-act.mkiv
@@ -66,33 +66,44 @@
%D \NEWPAGE\ character locally, we redefine the meaning of
%D this (often already) active character.
-\bgroup \permitcaretescape
+% \bgroup \permitcircumflexescape
- \catcode\formfeedasciicode\activecatcode
+% \catcode\formfeedasciicode\activecatcode
- \gdef^^L{\par}
+% \gdef^^L{\par}
-\egroup
+% \egroup
+
+\expandafter\def\activeformfeedtoken{\par}
%D The following indirect definitions enable us to implement
%D all kind of \type{\obeyed} handlers.
-\bgroup \permitcaretescape
+% \bgroup \permitcircumflexescape
- \catcode\tabasciicode \activecatcode
- \catcode\endoflineasciicode\activecatcode
- \catcode\formfeedasciicode \activecatcode
+% \catcode\tabasciicode \activecatcode
+% \catcode\endoflineasciicode\activecatcode
+% \catcode\formfeedasciicode \activecatcode
- \gdef\obeytabs {\catcode\tabasciicode \activecatcode\def^^I{\obeyedtab }}
- \gdef\obeylines {\catcode\endoflineasciicode\activecatcode\def^^M{\obeyedline}}
- \gdef\obeypages {\catcode\formfeedasciicode \activecatcode\def^^L{\obeyedpage}}
+% \gdef\obeytabs {\catcode\tabasciicode \activecatcode\def^^I{\obeyedtab }}
+% \gdef\obeylines {\catcode\endoflineasciicode\activecatcode\def^^M{\obeyedline}}
+% \gdef\obeypages {\catcode\formfeedasciicode \activecatcode\def^^L{\obeyedpage}}
- \gdef\ignoretabs {\catcode\tabasciicode \activecatcode\def^^I{\obeyedspace}}
- \gdef\ignorelines{\catcode\endoflineasciicode\activecatcode\def^^M{\obeyedspace}}
- \gdef\ignorepages{\catcode\formfeedasciicode \ignorecatcode } % \def^^L{\obeyedline}}
- \gdef\ignoreeofs {\catcode\endoffileasciicode\ignorecatcode }
+% \gdef\ignoretabs {\catcode\tabasciicode \activecatcode\def^^I{\obeyedspace}}
+% \gdef\ignorelines{\catcode\endoflineasciicode\activecatcode\def^^M{\obeyedspace}}
+% \gdef\ignorepages{\catcode\formfeedasciicode \ignorecatcode}
+% \gdef\ignoreeofs {\catcode\endoffileasciicode\ignorecatcode}
-\egroup
+% \egroup
+
+\def\obeytabs {\catcode\tabasciicode \activecatcode\expandafter\def\activetabtoken {\obeyedtab }}
+\def\obeylines {\catcode\endoflineasciicode\activecatcode\expandafter\def\activeendoflinetoken{\obeyedline}}
+\def\obeypages {\catcode\formfeedasciicode \activecatcode\expandafter\def\activeformfeedtoken {\obeyedpage}}
+
+\def\ignoretabs {\catcode\tabasciicode \activecatcode\expandafter\def\activetabtoken {\obeyedspace}}
+\def\ignorelines{\catcode\endoflineasciicode\activecatcode\expandafter\def\activeendoflinetoken{\obeyedspace}}
+\def\ignorepages{\catcode\formfeedasciicode \ignorecatcode}
+\def\ignoreeofs {\catcode\endoffileasciicode\ignorecatcode}
%D \macros
%D {naturaltextext}
diff --git a/tex/context/base/char-def.lua b/tex/context/base/char-def.lua
index 3e74aa50a..e63024e6d 100644
--- a/tex/context/base/char-def.lua
+++ b/tex/context/base/char-def.lua
@@ -51938,7 +51938,7 @@ characters.data={
direction="on",
linebreak="al",
mathclass="relation",
- mathname="barleftarrowrightarrowba", -- This is a strange name
+ mathname="barleftarrowrightarrowbar",
unicodeslot=0x21B9,
},
[0x21BA]={
diff --git a/tex/context/base/char-ini.mkiv b/tex/context/base/char-ini.mkiv
index ba31e6b95..1f8a46808 100644
--- a/tex/context/base/char-ini.mkiv
+++ b/tex/context/base/char-ini.mkiv
@@ -47,20 +47,22 @@
% \setcclcuc "201C "201C "201C
% \setcclcuc "201D "201D "201D
+% Is setting up vrb tpa and tpb needed?
+
\ctxlua {
characters.define(
{ % letter catcodes
\number\texcatcodes,
\number\ctxcatcodes,
\number\notcatcodes,
- \number\mthcatcodes,
+ %number\mthcatcodes,
\number\vrbcatcodes,
\number\prtcatcodes,
% \number\xmlcatcodesn,
% \number\xmlcatcodese,
% \number\xmlcatcodesr,
- \number\typcatcodesa,
- \number\typcatcodesb,
+ \number\tpacatcodes,
+ \number\tpbcatcodes,
\number\txtcatcodes,
},
{ % activate catcodes
diff --git a/tex/context/base/cldf-ver.lua b/tex/context/base/cldf-ver.lua
index 54cc6a58b..6490b7f89 100644
--- a/tex/context/base/cldf-ver.lua
+++ b/tex/context/base/cldf-ver.lua
@@ -6,7 +6,7 @@ if not modules then modules = { } end modules ['cldf-ver'] = {
license = "see context related readme files"
}
--- tex.print == newline
+-- tex.print == line with endlinechar appended
local concat, tohandle = table.concat, table.tohandle
local find, splitlines = string.find, string.splitlines
diff --git a/tex/context/base/cont-new.mkii b/tex/context/base/cont-new.mkii
index 1dafcb61f..b6fd0caef 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{2011.01.18 19:34}
+\newcontextversion{2011.01.23 20:36}
%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 9b76b6ca2..cf0be096a 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{2011.01.18 19:34}
+\newcontextversion{2011.01.23 20:36}
%D This file is loaded at runtime, thereby providing an
%D excellent place for hacks, patches, extensions and new
@@ -243,7 +243,7 @@
% \scratchdimen=100pt \setpercentdimen\scratchdimen{10\letterpercent} \the\scratchdimen
% \scratchdimen=100pt \setpercentdimen\scratchdimen{5pt} \the\scratchdimen
-\bgroup \permitcaretescape
+\bgroup \permitcircumflexescape
\obeylines % don't remove %'s !
diff --git a/tex/context/base/context.mkii b/tex/context/base/context.mkii
index 2124dc771..93a5873e8 100644
--- a/tex/context/base/context.mkii
+++ b/tex/context/base/context.mkii
@@ -16,7 +16,7 @@
%D minimal as possible.
\loadcorefile{syst-ini}
-\loadcorefile{syst-pln}
+\loadmarkfile{syst-pln}
\loadcorefile{norm-tex}
\loadcorefile{norm-etx}
@@ -25,11 +25,11 @@
\loadcorefile{norm-ctx}
\loadmarkfile{catc-ini}
-\loadcorefile{catc-act}
-\loadcorefile{catc-def}
-\loadcorefile{catc-ctx}
-\loadcorefile{catc-sym}
-\loadcorefile{catc-xml}
+\loadmarkfile{catc-act}
+\loadmarkfile{catc-def}
+\loadmarkfile{catc-ctx}
+\loadmarkfile{catc-sym}
+\loadmarkfile{catc-xml}
\loadmarkfile{syst-gen}
\loadmarkfile{syst-ext}
@@ -154,19 +154,19 @@
\loadmarkfile{lang-mis}
\loadmarkfile{lang-url}
-\loadcorefile{lang-ger}
-\loadcorefile{lang-ita}
-\loadcorefile{lang-sla}
-\loadcorefile{lang-alt}
-\loadcorefile{lang-ana}
-\loadcorefile{lang-art}
-\loadcorefile{lang-bal}
-\loadcorefile{lang-cel}
-\loadcorefile{lang-grk}
-\loadcorefile{lang-ind}
-\loadcorefile{lang-ura}
-\loadcorefile{lang-vn}
-\loadcorefile{lang-cyr}
+\loadmarkfile{lang-ger}
+\loadmarkfile{lang-ita}
+\loadmarkfile{lang-sla}
+\loadmarkfile{lang-alt}
+\loadmarkfile{lang-ana}
+\loadmarkfile{lang-art}
+\loadmarkfile{lang-bal}
+\loadmarkfile{lang-cel}
+\loadmarkfile{lang-grk}
+\loadmarkfile{lang-ind}
+\loadmarkfile{lang-ura}
+\loadmarkfile{lang-vn}
+\loadmarkfile{lang-cyr}
\loadmarkfile{typo-ini}
diff --git a/tex/context/base/context.mkiv b/tex/context/base/context.mkiv
index 75306e53c..e76b34bc6 100644
--- a/tex/context/base/context.mkiv
+++ b/tex/context/base/context.mkiv
@@ -32,7 +32,7 @@
%D Now the more fundamnetal code gets defined.
\loadcorefile{norm-ctx}
-\loadcorefile{syst-pln}
+\loadmarkfile{syst-pln}
\loadmarkfile{syst-mes}
\loadmarkfile{luat-cod}
@@ -40,10 +40,10 @@
\loadmarkfile{luat-lib}
\loadmarkfile{catc-ini}
-\loadcorefile{catc-act}
-\loadcorefile{catc-def}
-\loadcorefile{catc-ctx}
-\loadcorefile{catc-sym}
+\loadmarkfile{catc-act}
+\loadmarkfile{catc-def}
+\loadmarkfile{catc-ctx}
+\loadmarkfile{catc-sym}
% From here on we have \unexpanded being \normalprotected, as we
% already had \unexpanded long before etex came around.
@@ -140,19 +140,19 @@
\loadmarkfile{lang-mis}
\loadmarkfile{lang-url}
-\loadcorefile{lang-ger}
-\loadcorefile{lang-ita}
-\loadcorefile{lang-sla}
-\loadcorefile{lang-alt}
-\loadcorefile{lang-ana}
-\loadcorefile{lang-art}
-\loadcorefile{lang-bal}
-\loadcorefile{lang-cel}
-\loadcorefile{lang-grk}
-\loadcorefile{lang-ind}
-\loadcorefile{lang-ura}
-\loadcorefile{lang-vn}
-\loadcorefile{lang-cyr}
+\loadmarkfile{lang-ger}
+\loadmarkfile{lang-ita}
+\loadmarkfile{lang-sla}
+\loadmarkfile{lang-alt}
+\loadmarkfile{lang-ana}
+\loadmarkfile{lang-art}
+\loadmarkfile{lang-bal}
+\loadmarkfile{lang-cel}
+\loadmarkfile{lang-grk}
+\loadmarkfile{lang-ind}
+\loadmarkfile{lang-ura}
+\loadmarkfile{lang-vn}
+\loadmarkfile{lang-cyr}
\loadmarkfile{lang-ara}
\loadmarkfile{lang-cjk}
diff --git a/tex/context/base/context.tex b/tex/context/base/context.tex
index 8c2c70ab7..4eb9a1209 100644
--- a/tex/context/base/context.tex
+++ b/tex/context/base/context.tex
@@ -20,7 +20,7 @@
%D your styles an modules.
\edef\contextformat {\jobname}
-\edef\contextversion{2011.01.18 19:34}
+\edef\contextversion{2011.01.23 20:36}
%D For those who want to use this:
diff --git a/tex/context/base/core-env.mkiv b/tex/context/base/core-env.mkiv
index 3bede1cad..250356a35 100644
--- a/tex/context/base/core-env.mkiv
+++ b/tex/context/base/core-env.mkiv
@@ -306,7 +306,7 @@
\newtoks\everydefinexmlsetups \appendtoks
\catcode\endoflineasciicode\ignorecatcode
- \catcode`\|\othercatcode
+ \catcode\barasciicode \othercatcode
\to \everydefinexmlsetups
\newtoks\everydefineluasetups \appendtoks
diff --git a/tex/context/base/core-fnt.mkiv b/tex/context/base/core-fnt.mkiv
index 4d19ff39e..bd91b5578 100644
--- a/tex/context/base/core-fnt.mkiv
+++ b/tex/context/base/core-fnt.mkiv
@@ -26,7 +26,7 @@
%D so test\compound{}test can be used instead of test||test
%D \stoptyping
-\bgroup \catcode`\|=\activecatcode \gdef\compound#1{|#1|} \egroup
+\bgroup \catcode\barasciicode\activecatcode \gdef\compound#1{|#1|} \egroup
%D Here we hook some code into the clean up mechanism needed
%D for verbatim data.
diff --git a/tex/context/base/core-job.mkii b/tex/context/base/core-job.mkii
index 869ae6a31..1b7f9138e 100644
--- a/tex/context/base/core-job.mkii
+++ b/tex/context/base/core-job.mkii
@@ -147,7 +147,7 @@
\doglobal\appendtoks % brrr better \setcatcodetable\ctxcatcodes
\bgroup
\disableXML
- \readsysfile{\f!errfilename.\mksuffix}\donothing
+ \readsysfile{\f!errfilename.\mksuffix}\donothing\donothing
\egroup
\to\everygoodbye}}}}
diff --git a/tex/context/base/core-sys.mkiv b/tex/context/base/core-sys.mkiv
index a620bf82f..c6fa25070 100644
--- a/tex/context/base/core-sys.mkiv
+++ b/tex/context/base/core-sys.mkiv
@@ -44,16 +44,6 @@
\def \inputfilename {\ctxsprint{environment.inputfilename or ""}}
\def \outputfilename {\ctxsprint{environment.outputfilename or ""}}
-\bgroup \permitcaretescape
-
- \gdef\initializenewlinechar
- {\bgroup
- \newlinechar\newlineasciicode
- \xdef\outputnewlinechar{^^J}%
- \egroup}
-
-\egroup
-
\newtoks \everysetupsystem
\unexpanded\def\setupsystem
diff --git a/tex/context/base/lang-alt.tex b/tex/context/base/lang-alt.mkii
index f65acbda3..f65acbda3 100644
--- a/tex/context/base/lang-alt.tex
+++ b/tex/context/base/lang-alt.mkii
diff --git a/tex/context/base/lang-alt.mkiv b/tex/context/base/lang-alt.mkiv
new file mode 100644
index 000000000..078076c50
--- /dev/null
+++ b/tex/context/base/lang-alt.mkiv
@@ -0,0 +1,63 @@
+%D \module
+%D [ file=lang-alt,
+%D version=1997.09.03,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Altaic Languages,
+%D author=Hans Hagen / Tobias Burnus,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{ConTeXt Language Macros / Altaic Languages}
+
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+
+% Uigur, Uzbek
+% Azeri/Azerbaijani, Chuvash, Turkish, Turkmen
+% Kazakh, Kazar, Kireghiz, Noghay, Talar
+% Buryat, Kalmuck, Khalkha
+%
+% Turkmen translation by Nazar Annagurban <nazartm at gmail.com> 18. March 2010
+
+\unprotect
+
+\installlanguage
+ [\s!tr]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\upperleftsinglesixquote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\upperleftdoublesixquote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!date={\v!year,\ ,\v!month,\ ,\v!day}]
+
+\installlanguage
+ [\s!tk]
+ [\c!spacing=\v!broad,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\upperleftsinglesixquote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\upperleftdoublesixquote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!date={\v!year,\ ,\v!month,\ ,\v!day}
+ \s!patterns=\s!tk,
+ \s!lefthyphenmin=1,
+ \s!righthyphenmin=2]
+
+\installlanguage [turkish] [\s!tr]
+\installlanguage [turkmen] [\s!tk]
+
+\protect \endinput
diff --git a/tex/context/base/lang-ana.tex b/tex/context/base/lang-ana.mkii
index c108655c4..c108655c4 100644
--- a/tex/context/base/lang-ana.tex
+++ b/tex/context/base/lang-ana.mkii
diff --git a/tex/context/base/lang-ana.mkiv b/tex/context/base/lang-ana.mkiv
new file mode 100644
index 000000000..c108655c4
--- /dev/null
+++ b/tex/context/base/lang-ana.mkiv
@@ -0,0 +1,24 @@
+%D \module
+%D [ file=lang-ana,
+%D version=1997.09.03,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Anatolian Languages,
+%D author=Hans Hagen / Tobias Burnus,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{ConTeXt Language Macros / Anatolian Languages}
+
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+
+\unprotect
+
+\protect \endinput
diff --git a/tex/context/base/lang-ara.mkiv b/tex/context/base/lang-ara.mkiv
index 3c4d3c522..d576df488 100644
--- a/tex/context/base/lang-ara.mkiv
+++ b/tex/context/base/lang-ara.mkiv
@@ -35,18 +35,18 @@
% Just aliases to "ar" for now
-\installlanguage[\s!ar-ae][\c!default=\s!ar] % U.A.E.
-\installlanguage[\s!ar-bh][\c!default=\s!ar] % Bahrain
-\installlanguage[\s!ar-eg][\c!default=\s!ar] % Egypt
-\installlanguage[\s!ar-in][\c!default=\s!ar] % India?
-\installlanguage[\s!ar-kw][\c!default=\s!ar] % Kuwait
-\installlanguage[\s!ar-ly][\c!default=\s!ar] % Libya
-\installlanguage[\s!ar-om][\c!default=\s!ar] % Oman
-\installlanguage[\s!ar-qa][\c!default=\s!ar] % Qatar
-\installlanguage[\s!ar-sa][\c!default=\s!ar] % Saudi Arabia
-\installlanguage[\s!ar-sd][\c!default=\s!ar] % Sudan
-\installlanguage[\s!ar-tn][\c!default=\s!ar] % Tunisia
-\installlanguage[\s!ar-ye][\c!default=\s!ar] % Yemen
+\installlanguage[\s!ar-ae][\c!default=\s!ar] % U.A.E.
+\installlanguage[\s!ar-bh][\c!default=\s!ar] % Bahrain
+\installlanguage[\s!ar-eg][\c!default=\s!ar] % Egypt
+\installlanguage[\s!ar-in][\c!default=\s!ar] % India?
+\installlanguage[\s!ar-kw][\c!default=\s!ar] % Kuwait
+\installlanguage[\s!ar-ly][\c!default=\s!ar] % Libya
+\installlanguage[\s!ar-om][\c!default=\s!ar] % Oman
+\installlanguage[\s!ar-qa][\c!default=\s!ar] % Qatar
+\installlanguage[\s!ar-sa][\c!default=\s!ar] % Saudi Arabia
+\installlanguage[\s!ar-sd][\c!default=\s!ar] % Sudan
+\installlanguage[\s!ar-tn][\c!default=\s!ar] % Tunisia
+\installlanguage[\s!ar-ye][\c!default=\s!ar] % Yemen
% Syriac months
@@ -57,94 +57,7 @@
% Maghribi months
-\installlanguage[\s!ar-dz][\c!default=\s!ar] % Algeria
-\installlanguage[\s!ar-ma][\c!default=\s!ar] % Morocco
-
-\setupheadtext [\s!ar] [\v!content=المحتويات]
-\setupheadtext [\s!ar] [\v!tables=الجداول]
-\setupheadtext [\s!ar] [\v!figures=الأشكال]
-\setupheadtext [\s!ar] [\v!graphics=الرسوم]
-\setupheadtext [\s!ar] [\v!intermezzi=فسح]
-\setupheadtext [\s!ar] [\v!index=الفهرس]
-\setupheadtext [\s!ar] [\v!abbreviations=الاختصارات]
-\setupheadtext [\s!ar] [\v!logos=الشعارات]
-\setupheadtext [\s!ar] [\v!units=الوحدات]
-\setuplabeltext [\s!ar] [\v!table=جدول ]
-\setuplabeltext [\s!ar] [\v!figure=شكل ]
-\setuplabeltext [\s!ar] [\v!intermezzo=فسحة ]
-\setuplabeltext [\s!ar] [\v!graphic=رسم ]
-
-%D We don't set these here. One can do that in a style.
-
-\setuplabeltext [\s!ar] [\v!chapter=] % باب
-\setuplabeltext [\s!ar] [\v!section=] % فصل or قسم
-\setuplabeltext [\s!ar] [\v!subsection=] % فصل أدنى
-\setuplabeltext [\s!ar] [\v!subsubsection=] % فصل أ دنى أدنى
-\setuplabeltext [\s!ar] [\v!subsubsubsection=] % فصل أدنى أدنى أدنى
-\setuplabeltext [\s!ar] [\v!appendix=] % ملحق
-\setuplabeltext [\s!ar] [\v!part=جزء ]
-\setuplabeltext [\s!ar] [\v!line=سطر ]
-\setuplabeltext [\s!ar] [\v!lines=السطور ]
-
-\setuplabeltext [\s!ar] [\v!january=يناير]
-\setuplabeltext [\s!ar] [\v!february=فبراير]
-\setuplabeltext [\s!ar] [\v!march=مارس]
-\setuplabeltext [\s!ar] [\v!april=أبريل]
-\setuplabeltext [\s!ar] [\v!may=مايو]
-\setuplabeltext [\s!ar] [\v!june=يونيو]
-\setuplabeltext [\s!ar] [\v!july=يوليو]
-\setuplabeltext [\s!ar] [\v!august=أغسطس]
-\setuplabeltext [\s!ar] [\v!september=سبتمبر]
-\setuplabeltext [\s!ar] [\v!october=أكتوبر]
-\setuplabeltext [\s!ar] [\v!november=نوفمبر]
-\setuplabeltext [\s!ar] [\v!december=ديسمبر]
-
-\setuplabeltext [\s!ar-sy] [\v!january=كانون الثاني]
-\setuplabeltext [\s!ar-sy] [\v!february=شباط]
-\setuplabeltext [\s!ar-sy] [\v!march=آذار]
-\setuplabeltext [\s!ar-sy] [\v!april=نيسان]
-\setuplabeltext [\s!ar-sy] [\v!may=أيار]
-\setuplabeltext [\s!ar-sy] [\v!june=حزيران]
-\setuplabeltext [\s!ar-sy] [\v!july=تموز]
-\setuplabeltext [\s!ar-sy] [\v!august=آب]
-\setuplabeltext [\s!ar-sy] [\v!september=أيلول]
-\setuplabeltext [\s!ar-sy] [\v!october=تشرين الأول]
-\setuplabeltext [\s!ar-sy] [\v!november=تشرين الثاني]
-\setuplabeltext [\s!ar-sy] [\v!december=كانون الأول]
-
-\setuplabeltext [\s!ar-ma] [\v!may=ماي]
-\setuplabeltext [\s!ar-ma] [\v!july=يوليوز]
-\setuplabeltext [\s!ar-ma] [\v!august=غشت]
-\setuplabeltext [\s!ar-ma] [\v!september=شتنبر]
-\setuplabeltext [\s!ar-ma] [\v!november=نونبر]
-\setuplabeltext [\s!ar-ma] [\v!december=دجنبر]
-
-\setuplabeltext [\s!ar-dz] [\v!january=جانفي]
-\setuplabeltext [\s!ar-dz] [\v!february=فيفري]
-\setuplabeltext [\s!ar-dz] [\v!april=أفريل]
-\setuplabeltext [\s!ar-dz] [\v!may=ماي]
-\setuplabeltext [\s!ar-dz] [\v!june=جوان]
-\setuplabeltext [\s!ar-dz] [\v!july=جويلة]
-\setuplabeltext [\s!ar-dz] [\v!august=أوت]
-
-\setuplabeltext [\s!ar] [\v!sunday=الأحد]
-\setuplabeltext [\s!ar] [\v!monday=الاثنين]
-\setuplabeltext [\s!ar] [\v!tuesday=الثلاثاء]
-\setuplabeltext [\s!ar] [\v!wednesday=الأربعاء]
-\setuplabeltext [\s!ar] [\v!thursday=الخميس]
-\setuplabeltext [\s!ar] [\v!friday=الجمعة]
-\setuplabeltext [\s!ar] [\v!saturday=السبت]
-
-%D Rather new ...
-
-\setuplabeltext [\s!ar] [\v!page=صفحة ]
-\setuplabeltext [\s!ar] [\v!atpage=في صفحة ]
-\setuplabeltext [\s!ar] [\v!hencefore=كما وضحنا سابقا]
-\setuplabeltext [\s!ar] [\v!hereafter=كما نوضح لاحقا]
-\setuplabeltext [\s!ar] [\v!see=انظر ]
-
-%D ... and to be completed!
-
-%D \ShowAllLanguageValues [\s!ar] [arabic] {Arabic} {horn} % engelse humor
+\installlanguage[\s!ar-dz][\c!default=\s!ar] % Algeria
+\installlanguage[\s!ar-ma][\c!default=\s!ar] % Morocco
\protect \endinput
diff --git a/tex/context/base/lang-art.tex b/tex/context/base/lang-art.mkii
index e8be91630..e8be91630 100644
--- a/tex/context/base/lang-art.tex
+++ b/tex/context/base/lang-art.mkii
diff --git a/tex/context/base/lang-art.mkiv b/tex/context/base/lang-art.mkiv
new file mode 100644
index 000000000..e8be91630
--- /dev/null
+++ b/tex/context/base/lang-art.mkiv
@@ -0,0 +1,26 @@
+%D \module
+%D [ file=lang--art,
+%D version=1997.09.03,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Artificial Languages,
+%D author=Hans Hagen / Tobias Burnus,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{ConTeXt Language Macros / Artificial Languages}
+
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+
+% Esperanto
+
+\unprotect
+
+\protect \endinput
diff --git a/tex/context/base/lang-bal.tex b/tex/context/base/lang-bal.mkii
index 394e9d93c..394e9d93c 100644
--- a/tex/context/base/lang-bal.tex
+++ b/tex/context/base/lang-bal.mkii
diff --git a/tex/context/base/lang-bal.mkiv b/tex/context/base/lang-bal.mkiv
new file mode 100644
index 000000000..a6d03a2ab
--- /dev/null
+++ b/tex/context/base/lang-bal.mkiv
@@ -0,0 +1,44 @@
+%D \module
+%D [ file=lang-bal,
+%D version=2010.01.21,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Baltic Languages,
+%D author=Marius Aleknevičius,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{ConTeXt Language Macros / Baltic Languages}
+
+%D The framework of this module is set up by Hans Hagen while
+%D all the translations were done by Marius Aleknevičius. If
+%D you have suggestions, don't hesitate to send us an email.
+
+%D This file is in \UTF\ encoding and is meant for \MKIV.
+
+% Lettish/Latvian, Lietuvių/Lithuanian
+
+\unprotect
+
+\installlanguage
+ [\s!lt]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\lowerleftdoubleninequote,
+ \c!rightquote=\upperrightdoublesixquote,
+ \c!leftquotation=\lowerleftdoubleninequote,
+ \c!rightquotation=\upperrightdoublesixquote,
+ \c!date={\v!year,~m.,\ ,\v!month,\ ,\v!day,~d.},
+ \s!patterns=\s!lt,
+ \s!lefthyphenmin=2,
+ \s!righthyphenmin=2]
+
+\installlanguage [lithuanian] [\s!lt]
+
+\protect \endinput
diff --git a/tex/context/base/lang-cel.tex b/tex/context/base/lang-cel.mkii
index 4d93957f1..4d93957f1 100644
--- a/tex/context/base/lang-cel.tex
+++ b/tex/context/base/lang-cel.mkii
diff --git a/tex/context/base/lang-cel.mkiv b/tex/context/base/lang-cel.mkiv
new file mode 100644
index 000000000..4d93957f1
--- /dev/null
+++ b/tex/context/base/lang-cel.mkiv
@@ -0,0 +1,26 @@
+%D \module
+%D [ file=lang-cel,
+%D version=1997.09.03,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Celtic Languages,
+%D author=Hans Hagen / Tobias Burnus,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{ConTeXt Language Macros / Celtic Languages}
+
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+
+% Breton, Welsh, Irish, Manx, Scottish Gaelic
+
+\unprotect
+
+\protect \endinput
diff --git a/tex/context/base/lang-cjk.mkiv b/tex/context/base/lang-cjk.mkiv
index 5f736d4a1..4594c52b4 100644
--- a/tex/context/base/lang-cjk.mkiv
+++ b/tex/context/base/lang-cjk.mkiv
@@ -21,8 +21,6 @@
\unprotect
-% Chinese
-
\installlanguage
[\s!cn]
[\c!leftsentence=——,
@@ -35,54 +33,6 @@
\c!rightquotation=”,
\c!date={\v!year,年,\ ,\v!month,\v!day,日}]
-\setupheadtext [\s!cn] [\v!content=目录]
-\setupheadtext [\s!cn] [\v!tables=表格]
-\setupheadtext [\s!cn] [\v!figures=图形]
-\setupheadtext [\s!cn] [\v!graphics=图]
-\setupheadtext [\s!cn] [\v!intermezzi=퉣]
-\setupheadtext [\s!cn] [\v!index=索引]
-\setupheadtext [\s!cn] [\v!abbreviations=缩略语]
-\setupheadtext [\s!cn] [\v!logos=徽贬]
-\setupheadtext [\s!cn] [\v!units=计量单位]
-
-\setuplabeltext [\s!cn] [\v!table=表]
-\setuplabeltext [\s!cn] [\v!figure=图]
-\setuplabeltext [\s!cn] [\v!intermezzo=퉣]
-\setuplabeltext [\s!cn] [\v!graphic=插图]
-\setuplabeltext [\s!cn] [\v!appendix=附录]
-\setuplabeltext [\s!cn] [\v!part={第,部分}]
-\setuplabeltext [\s!cn] [\v!chapter={第,章}]
-\setuplabeltext [\s!cn] [\v!section={第,节}]
-\setuplabeltext [\s!cn] [\v!line=行]
-\setuplabeltext [\s!cn] [\v!lines=行]
-
-\setuplabeltext [\s!cn] [\v!subsection=]
-\setuplabeltext [\s!cn] [\v!subsubsection=]
-\setuplabeltext [\s!cn] [\v!subsubsubsection=]
-
-\setuplabeltext [\s!cn] [\v!january=一月]
-\setuplabeltext [\s!cn] [\v!february=二月]
-\setuplabeltext [\s!cn] [\v!march=三月]
-\setuplabeltext [\s!cn] [\v!april=四月]
-\setuplabeltext [\s!cn] [\v!may=五月]
-\setuplabeltext [\s!cn] [\v!june=六月]
-\setuplabeltext [\s!cn] [\v!july=七月]
-\setuplabeltext [\s!cn] [\v!august=八月]
-\setuplabeltext [\s!cn] [\v!september=九月]
-\setuplabeltext [\s!cn] [\v!october=十月]
-\setuplabeltext [\s!cn] [\v!november=十一月]
-\setuplabeltext [\s!cn] [\v!december=十二月]
-
-\setuplabeltext [\s!cn] [\v!sunday=星期日]
-\setuplabeltext [\s!cn] [\v!monday=星期一]
-\setuplabeltext [\s!cn] [\v!tuesday=星期二]
-\setuplabeltext [\s!cn] [\v!wednesday=星期三]
-\setuplabeltext [\s!cn] [\v!thursday=星期四]
-\setuplabeltext [\s!cn] [\v!friday=星期五]
-\setuplabeltext [\s!cn] [\v!saturday=星期六]
-
-%D Japanese
-
\installlanguage
[\s!ja]
[\c!leftsentence=——,
@@ -95,234 +45,4 @@
\c!rightquotation=」,
\c!date={西暦,\v!year,年,\v!month,月,\v!day,日}]
-\setupheadtext [\s!ja] [\v!content=目次]
-\setupheadtext [\s!ja] [\v!tables=机]
-\setupheadtext [\s!ja] [\v!figures=図]
-\setupheadtext [\s!ja] [\v!graphics=グラフ]
-\setupheadtext [\s!ja] [\v!intermezzi=間奏曲]
-\setupheadtext [\s!ja] [\v!index=目次]
-\setupheadtext [\s!ja] [\v!abbreviations=略語]
-\setupheadtext [\s!ja] [\v!logos=理性]
-\setupheadtext [\s!ja] [\v!units=ユニッツ]
-
-\setuplabeltext [\s!ja] [\v!table=表]
-\setuplabeltext [\s!ja] [\v!figure=図]
-\setuplabeltext [\s!ja] [\v!intermezzo=間奏曲]
-\setuplabeltext [\s!ja] [\v!graphic=イラスト]
-\setuplabeltext [\s!ja] [\v!appendix=付録]
-\setuplabeltext [\s!ja] [\v!part={第,パート}]
-\setuplabeltext [\s!ja] [\v!chapter={第,章}]
-\setuplabeltext [\s!ja] [\v!section={第,項}]
-\setuplabeltext [\s!ja] [\v!line=線]
-\setuplabeltext [\s!ja] [\v!lines=線]
-
-\setuplabeltext [\s!ja] [\v!subsection=]
-\setuplabeltext [\s!ja] [\v!subsubsection=]
-\setuplabeltext [\s!ja] [\v!subsubsubsection=]
-
-\setuplabeltext [\s!ja] [\v!january=1]
-\setuplabeltext [\s!ja] [\v!february=2]
-\setuplabeltext [\s!ja] [\v!march=3]
-\setuplabeltext [\s!ja] [\v!april=4]
-\setuplabeltext [\s!ja] [\v!may=5]
-\setuplabeltext [\s!ja] [\v!june=6]
-\setuplabeltext [\s!ja] [\v!july=7]
-\setuplabeltext [\s!ja] [\v!august=8]
-\setuplabeltext [\s!ja] [\v!september=9]
-\setuplabeltext [\s!ja] [\v!october=10]
-\setuplabeltext [\s!ja] [\v!november=11]
-\setuplabeltext [\s!ja] [\v!december=12]
-
-\setuplabeltext [\s!ja] [\v!monday=月曜日]
-\setuplabeltext [\s!ja] [\v!tuesday=火曜日]
-\setuplabeltext [\s!ja] [\v!wednesday=水曜日]
-\setuplabeltext [\s!ja] [\v!thursday=木曜日]
-\setuplabeltext [\s!ja] [\v!friday=金曜日]
-\setuplabeltext [\s!ja] [\v!saturday=土曜日]
-\setuplabeltext [\s!ja] [\v!sunday=日曜日]
-
-%D Korean
-
-% todo
-
\protect \endinput
-
-cn={
- ["abbreviations"]="缩略语",
- ["appendix"]="附录",
- ["april"]="四月",
- ["august"]="八月",
- ["chapter"]="章",
- ["contents"]="目录",
- ["day"]="日",
- ["december"]="十二月",
- ["febrary"]="二月",
- ["figure"]="图",
- ["figures"]="图形",
- ["friday"]="星期五",
- ["graphics"]="图",
- ["illustration"]="插图",
- ["index"]="索引",
- ["intermezzo"]="퉣",
- ["intro"]="第",
- ["january"]="一月",
- ["july"]="七月",
- ["june"]="六月",
- ["leftsentence"]="——",
- ["leftsubsentence"]="——",
- ["line"]="行",
- ["logos"]="徽贬",
- ["march"]="三月",
- ["may"]="五月",
- ["monday"]="星期一",
- ["month"]="月",
- ["november"]="十一月",
- ["october"]="十月",
- ["part"]="部分",
- ["rightsentence"]="——",
- ["rightsubsentence"]="——",
- ["saturday"]="星期六",
- ["section"]="节",
- ["september"]="九月",
- ["sunday"]="星期日",
- ["table"]="表",
- ["tables"]="表格",
- ["thursday"]="星期四",
- ["tuesday"]="星期二",
- ["units"]="计量单位",
- ["upperleftdoublequote"]="“",
- ["upperleftdoublequote-v"]="『",
- ["upperleftsinglequote"]="‘",
- ["upperleftsinglequote-v"]="「",
- ["upperrightdoublequote"]="”",
- ["upperrightdoublequote-v"]="』",
- ["upperrightsinglequote"]="’",
- ["upperrightsinglequote-v"]="」",
- ["wednesday"]="星期三",
- ["year"]="年",
-}
-
-ja={
- ["abbreviations"]="略語",
- ["abstract"]="概要",
- ["and"]="、",
- ["answer"]="答:",
- ["appendix"]="付録",
- ["april"]="四月",
- ["article"]="項目",
- ["august"]="八月",
- ["bibliography"]="参考文献",
- ["book"]="ブック",
- ["bridgehead"]="項",
- ["bullet"]="●",
- ["by"]=":",
- ["caution"]="注意",
- ["chapter"]="章",
- ["christiandate"]="西暦",
- ["colophon"]="奥付",
- ["copyright"]="製作著作",
- ["day"]="日",
- ["december"]="十二月",
- ["dedication"]="謝辞",
- ["edited"]="編者",
- ["editedby"]="編者:",
- ["edition"]="編集",
- ["endquote"]="」",
- ["equation"]="式",
- ["example"]="例",
- ["february"]="二月",
- ["figure"]="図",
- ["figures"]="図",
- ["friday"]="土曜日",
- ["glossary"]="用語集",
- ["glosssee"]="参照",
- ["glossseealso"]="参照",
- ["graphics"]="グラフ",
- ["illustration"]="イラスト",
- ["important"]="重要項目",
- ["index"]="目次",
- ["indexsymbols"]="シンボル",
- ["intermezzo"]="間奏曲",
- ["intermezzos"]="間奏曲",
- ["intro"]="第",
- ["january"]="一月",
- ["july"]="七月",
- ["june"]="六月",
- ["leftsentence"]="——",
- ["leftsubsentence"]="——",
- ["line"]="線",
- ["lines"]="線",
- ["listofequations"]="式目次",
- ["listofexamples"]="例目次",
- ["listoffigures"]="図目次",
- ["listoftables"]="表目次",
- ["listofunknown"]="不明目次",
- ["logos"]="理性",
- ["march"]="三月",
- ["may"]="五月",
- ["monday"]="火曜日",
- ["month"]="月",
- ["msgaud"]="対象者",
- ["msglevel"]="レベル",
- ["msgorig"]="発信元",
- ["navhome"]="ホーム",
- ["navnext"]="次のページ",
- ["navnextsibling"]="早送り",
- ["navprev"]="前のページ",
- ["navprevsibling"]="巻戻し",
- ["navup"]="上に戻る",
- ["nestedendquote"]="』",
- ["nestedstartquote"]="『",
- ["nonexistantelement"]="要素が存在しません",
- ["note"]="注意",
- ["notes"]="注意",
- ["november"]="十一月",
- ["october"]="十月",
- ["pages"]="偧献",
- ["part"]="パート",
- ["preface"]="序文",
- ["procedure"]="手順",
- ["procedureformal"]="手順",
- ["productionset"]="プロダクション",
- ["productionsetformal"]="プロダクション",
- ["published"]="発行",
- ["qandadiv"]="問:、答:",
- ["qandaentry"]="問:",
- ["question"]="問:",
- ["reference"]="参照",
- ["refname"]="名前",
- ["refsection"]="項",
- ["refsynopsisdiv"]="概要",
- ["revhistory"]="改訂履歴",
- ["revision"]="改訂",
- ["rightsentence"]="——",
- ["rightsubsentence"]="——",
- ["saturday"]="日曜日",
- ["section"]="項",
- ["see"]="参照",
- ["seealso"]="参照",
- ["separator"]="、",
- ["september"]="九月",
- ["set"]="設定",
- ["setindex"]="目次設定",
- ["sidebar"]="サイドバー",
- ["simplesect"]="項",
- ["singleendquote"]="’",
- ["singlestartquote"]="‘",
- ["startquote"]="「",
- ["step"]="ステップ",
- ["sunday"]="月曜日",
- ["table"]="表",
- ["tablenotes"]="注意",
- ["tableofcontents"]="目次",
- ["tables"]="机",
- ["thursday"]="金曜日",
- ["tip"]="ティップ",
- ["tuesday"]="水曜日",
- ["unexpectedelementname"]="不明な要素名",
- ["units"]="ユニッツ",
- ["unsupported"]="サポートしません",
- ["warning"]="警告",
- ["wednesday"]="木曜日",
- ["year"]="年",
-}
diff --git a/tex/context/base/lang-cyr.tex b/tex/context/base/lang-cyr.mkii
index 470402bb1..470402bb1 100644
--- a/tex/context/base/lang-cyr.tex
+++ b/tex/context/base/lang-cyr.mkii
diff --git a/tex/context/base/lang-cyr.mkiv b/tex/context/base/lang-cyr.mkiv
new file mode 100644
index 000000000..a07fe8d4a
--- /dev/null
+++ b/tex/context/base/lang-cyr.mkiv
@@ -0,0 +1,60 @@
+%D \module
+%D [ file=lang-cyr,
+%D version=2003.01.24,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Cyrillic Languages,
+%D author=see below,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{ConTeXt Language Macros / Cyrillic Languages}
+
+%D The cyrillic languages always use a dedicated input regime.
+%D Therefore we define the labels using symbolic names.
+%D Support for cyrillic is initiated by Olga Briginets who
+%D also layed the base for the language, encoding and font
+%D definition. Later Alexander Bokovoy and Victor Figurnov
+%D improved things. I (Hans Hagen) mainly cleaned things up
+%D a bit.
+
+\unprotect
+
+\installlanguage
+ [\s!ru]
+ [\s!lefthyphenmin=2,
+ \s!righthyphenmin=2,
+ \c!spacing=\v!packed,
+ \c!leftsentence=\leftguillemot,
+ \c!rightsentence=\rightguillemot,
+ \c!leftsubsentence=\lowerleftdoubleninequote,
+ \c!rightsubsentence=\upperrightdoubleninequote,
+ \c!leftquote=\lowerleftdoubleninequote,
+ \c!rightquote=\upperrightdoubleninequote,
+ \c!leftquotation=\leftguillemot,
+ \c!rightquotation=\rightguillemot,
+ \c!date={\v!day,\ ,\v!month,\ ,\v!year}]
+
+\installlanguage
+ [\s!ua]
+ [\s!lefthyphenmin=2,
+ \s!righthyphenmin=2,
+ \c!spacing=\v!packed,
+ \c!leftsentence=\leftguillemot,
+ \c!rightsentence=\rightguillemot,
+ \c!leftsubsentence=\lowerleftdoubleninequote,
+ \c!rightsubsentence=\upperrightdoubleninequote,
+ \c!leftquote=\lowerleftdoubleninequote,
+ \c!rightquote=\upperrightdoubleninequote,
+ \c!leftquotation=\leftguillemot,
+ \c!rightquotation=\rightguillemot,
+ \c!date={\v!day,\ ,\v!month,\ ,\v!year},
+ \s!patterns=\s!uk]
+
+\installlanguage [russian] [\s!ru]
+\installlanguage [ukrainian] [\s!ua]
+
+\protect \endinput
diff --git a/tex/context/base/lang-def.lua b/tex/context/base/lang-def.lua
new file mode 100644
index 000000000..4fdcdf8a7
--- /dev/null
+++ b/tex/context/base/lang-def.lua
@@ -0,0 +1,418 @@
+if not modules then modules = { } end modules ['lang-ini'] = {
+ version = 1.001,
+ comment = "companion to lang-ini.mkiv",
+ author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
+ copyright = "PRAGMA ADE / ConTeXt Development Team",
+ license = "see context related readme files"
+}
+
+local lower = string.lower
+
+languages = languages or { }
+local languages = languages
+
+languages.data = languages.data or utilities.storage.allocate { }
+local data = languages.data
+
+-- The specifications are based on an analysis done by Arthur. The
+-- names of tags were changed by Hans. The data is not yet used but
+-- will be some day.
+--
+-- description
+--
+-- The description is only meant as an indication; for example 'no' is
+-- "Norwegian, undetermined" because that's really what it is.
+--
+-- script
+--
+-- This is the 4-letter script tag according to ISO 15924, the
+-- official standard.
+--
+-- bibliographical and terminological
+--
+-- Then we have *two* ISO-639 3-letter tags: one is supposed to be used
+-- for "bibliographical" purposes, the other for "terminological". The
+-- first one is quite special (and mostly used in American libraries),
+-- and the more interesting one is the other (apparently it's that one
+-- we find everywhere).
+--
+-- context
+--
+-- These are the ones used in ConteXt. Kind of numberplate ones.
+--
+-- opentype
+--
+-- This is the 3-letter OpenType language tag, obviously.
+--
+-- variant
+--
+-- This is actually the rfc4646: an extension of ISO-639 that also defines
+-- codes for variants like de-1901 for "German, 1901 orthography" or zh-Hans for
+-- "Chinese, simplified characters" ('Hans' is the ISO-15924 tag for
+-- "HAN ideographs, Simplified" :-) As I said yesterday, I think this
+-- should be the reference since it's exactly what we want: it's really
+-- standard (it's a RFC) and it's more than simply languages. To my
+-- knowledge this is the only system that addresses this issue.
+--
+-- Warning: it's not unique! Because we have two "German" languages
+-- (and could, potentially, have two Chinese, etc.)
+--
+-- Beware: the abbreviations are lowercased, which makes it more
+-- convenient to use them.
+--
+-- todo: add default features
+
+local specifications = {
+ {
+ ["description"] = "Basque",
+ ["script"] = "latn",
+ ["bibliographical"] = "baq",
+ ["terminological"] = "eus",
+ ["context"] = "ba",
+ ["opentype"] = "euq",
+ ["variant"] = "eu",
+ },
+ {
+ ["description"] = "Welsh",
+ ["script"] = "latn",
+ ["bibliographical"] = "wel",
+ ["terminological"] = "cym",
+ ["context"] = "cy",
+ ["opentype"] = "wel",
+ ["variant"] = "cy",
+ },
+ {
+ ["description"] = "Icelandic",
+ ["script"] = "latn",
+ ["bibliographical"] = "ice",
+ ["terminological"] = "isl",
+ ["context"] = "is",
+ ["opentype"] = "isl",
+ ["variant"] = "is",
+ },
+ {
+ ["description"] = "Norwegian, undetermined",
+ ["script"] = "latn",
+ ["bibliographical"] = "nor",
+ ["terminological"] = "nor",
+ ["context"] = "no",
+ ["variant"] = "no",
+ },
+ {
+ ["description"] = "Norwegian bokmal",
+ ["script"] = "latn",
+ ["bibliographical"] = "nob",
+ ["terminological"] = "nob",
+ ["opentype"] = "nor", -- not sure!
+ ["variant"] = "nb",
+ },
+ {
+ ["description"] = "Norwegian nynorsk",
+ ["script"] = "latn",
+ ["bibliographical"] = "nno",
+ ["terminological"] = "nno",
+ ["opentype"] = "nny",
+ ["variant"] = "nn",
+ },
+ {
+ ["description"] = "Ancient Greek",
+ ["script"] = "grek",
+ ["bibliographical"] = "grc",
+ ["terminological"] = "grc",
+ ["context"] = "agr",
+ ["variant"] = "grc",
+ },
+ {
+ ["description"] = "German, 1901 orthography",
+ ["script"] = "latn",
+ ["terminological"] = "deu",
+ ["context"] = "deo",
+ ["opentype"] = "deu",
+ ["variant"] = "de-1901",
+ },
+ {
+ ["description"] = "German, 1996 orthography",
+ ["script"] = "latn",
+ ["bibliographical"] = "ger",
+ ["terminological"] = "deu",
+ ["context"] = "de",
+ ["opentype"] = "deu",
+ ["variant"] = "de-1996",
+ },
+ {
+ ["description"] = "Afrikaans",
+ ["script"] = "latn",
+ ["bibliographical"] = "afr",
+ ["terminological"] = "afr",
+ ["context"] = "af",
+ ["opentype"] = "afk",
+ ["variant"] = "af",
+ },
+ {
+ ["description"] = "Catalan",
+ ["script"] = "latn",
+ ["bibliographical"] = "cat",
+ ["terminological"] = "cat",
+ ["context"] = "ca",
+ ["opentype"] = "cat",
+ ["variant"] = "ca",
+ },
+ {
+ ["description"] = "Czech",
+ ["script"] = "latn",
+ ["bibliographical"] = "cze",
+ ["terminological"] = "ces",
+ ["context"] = "cz",
+ ["opentype"] = "csy",
+ ["variant"] = "cs",
+ },
+ {
+ ["description"] = "Greek",
+ ["script"] = "grek",
+ ["bibliographical"] = "gre",
+ ["terminological"] = "ell",
+ ["context"] = "gr",
+ ["opentype"] = "ell",
+ ["variant"] = "el",
+ },
+ {
+ ["description"] = "American English",
+ ["script"] = "latn",
+ ["bibliographical"] = "eng",
+ ["terminological"] = "eng",
+ ["context"] = "us",
+ ["opentype"] = "eng",
+ ["variant"] = "en-US",
+ },
+ {
+ ["description"] = "British English",
+ ["script"] = "latn",
+ ["bibliographical"] = "eng",
+ ["terminological"] = "eng",
+ ["context"] = "uk",
+ ["opentype"] = "eng",
+ ["variant"] = "en-UK", -- Could be en-GB as well ...
+ },
+ {
+ ["description"] = "Spanish",
+ ["script"] = "latn",
+ ["bibliographical"] = "spa",
+ ["terminological"] = "spa",
+ ["context"] = "es",
+ ["opentype"] = "esp",
+ ["variant"] = "es",
+ },
+ {
+ ["description"] = "Finnish",
+ ["script"] = "latn",
+ ["bibliographical"] = "fin",
+ ["terminological"] = "fin",
+ ["context"] = "fi",
+ ["opentype"] = "fin",
+ ["variant"] = "fi",
+ },
+ {
+ ["description"] = "French",
+ ["script"] = "latn",
+ ["bibliographical"] = "fre",
+ ["terminological"] = "fra",
+ ["context"] = "fr",
+ ["opentype"] = "fra",
+ ["variant"] = "fr",
+ },
+ {
+ ["description"] = "Croatian",
+ ["script"] = "latn",
+ ["bibliographical"] = "scr",
+ ["terminological"] = "hrv",
+ ["context"] = "hr",
+ ["opentype"] = "hrv",
+ ["variant"] = "hr",
+ },
+ {
+ ["description"] = "Hungarian",
+ ["script"] = "latn",
+ ["bibliographical"] = "hun",
+ ["terminological"] = "hun",
+ ["context"] = "hu",
+ ["opentype"] = "hun",
+ ["variant"] = "hu",
+ },
+ {
+ ["description"] = "Italian",
+ ["script"] = "latn",
+ ["bibliographical"] = "ita",
+ ["terminological"] = "ita",
+ ["context"] = "it",
+ ["opentype"] = "ita",
+ ["variant"] = "it",
+ },
+ {
+ ["description"] = "Japanese",
+ ["script"] = "jpan",
+ ["bibliographical"] = "jpn",
+ ["terminological"] = "jpn",
+ ["context"] = "ja",
+ ["opentype"] = "jan",
+ ["variant"] = "ja",
+ },
+ {
+ ["description"] = "Latin",
+ ["script"] = "latn",
+ ["bibliographical"] = "lat",
+ ["terminological"] = "lat",
+ ["context"] = "la",
+ ["opentype"] = "lat",
+ ["variant"] = "la",
+ },
+ {
+ ["description"] = "Portuguese",
+ ["script"] = "latn",
+ ["bibliographical"] = "por",
+ ["terminological"] = "por",
+ ["context"] = "pt",
+ ["opentype"] = "ptg",
+ ["variant"] = "pt",
+ },
+ {
+ ["description"] = "Polish",
+ ["script"] = "latn",
+ ["bibliographical"] = "pol",
+ ["terminological"] = "pol",
+ ["context"] = "pl",
+ ["opentype"] = "plk",
+ ["variant"] = "pl",
+ },
+ {
+ ["description"] = "Romanian",
+ ["script"] = "latn",
+ ["bibliographical"] = "rum",
+ ["terminological"] = "ron",
+ ["context"] = "ro",
+ ["opentype"] = "rom",
+ ["variant"] = "ro",
+ },
+ {
+ ["description"] = "Russian",
+ ["script"] = "cyrl",
+ ["bibliographical"] = "rus",
+ ["terminological"] = "rus",
+ ["context"] = "ru",
+ ["opentype"] = "rus",
+ ["variant"] = "ru",
+ },
+ {
+ ["description"] = "Slovak",
+ ["script"] = "latn",
+ ["bibliographical"] = "slo",
+ ["terminological"] = "slk",
+ ["context"] = "sk",
+ ["opentype"] = "sky",
+ ["variant"] = "sk",
+ },
+ {
+ ["description"] = "Slovenian",
+ ["script"] = "latn",
+ ["bibliographical"] = "slv",
+ ["terminological"] = "slv",
+ ["context"] = "sl",
+ ["opentype"] = "slv",
+ ["variant"] = "sl",
+ },
+ {
+ ["description"] = "Swedish",
+ ["script"] = "latn",
+ ["bibliographical"] = "swe",
+ ["terminological"] = "swe",
+ ["context"] = "sv",
+ ["opentype"] = "sve",
+ ["variant"] = "sv",
+ },
+ {
+ ["description"] = "Turkish",
+ ["script"] = "latn",
+ ["bibliographical"] = "tur",
+ ["terminological"] = "tur",
+ ["context"] = "tr",
+ ["opentype"] = "trk",
+ ["variant"] = "tr",
+ },
+ {
+ ["description"] = "Vietnamese",
+ ["script"] = "latn",
+ ["bibliographical"] = "vie",
+ ["terminological"] = "vie",
+ ["context"] = "vn",
+ ["opentype"] = "vit",
+ ["variant"] = "vi",
+ },
+ {
+ ["description"] = "Chinese, simplified",
+ ["script"] = "hans",
+ ["opentype-script"] = "hani",
+ ["bibliographical"] = "chi",
+ ["terminological"] = "zho",
+ ["context"] = "cn",
+ ["opentype"] = "zhs",
+ ["variant"] = "zh-hans",
+ },
+}
+
+data.specifications = specifications
+
+storage.mark(specifications)
+
+local variants = { } data.variants = variants
+local opentypes = { } data.opentypes = opentypes
+local contexts = { } data.contexts = contexts
+local records = { } data.records = records
+
+
+for k=1,#specifications do
+ local v = languagedata[k]
+ if v.variant then
+ variants[v.variant] = v
+ end
+ if v.opentype then
+ opentypes[v.opentype] = v
+ end
+ local vc = v.context
+ if vc then
+ if type(vc) == "table" then
+ for k=1,#vc do
+ contexts[v] = vc[k]
+ end
+ else
+ contexts[vc] = v
+ end
+ end
+end
+
+setmetatable(variants, { __index = function(t,k)
+ str = lower(str)
+ local v = (l_variant[str] or l_opentype[str] or l_context[str] or l_variant.en).language
+ t[k] = v
+ return v
+end } )
+
+setmetatable(opentypes, { __index = function(t,k)
+ str = lower(str)
+ local v = (l_variant[str] or l_opentype[str] or l_context[str] or l_variant.en).opentype
+ t[k] = v
+ return v
+end
+
+setmetatable(contexts, { __index = function(t,k)
+ str = lower(str)
+ local v = (l_variant[str] or l_opentype[str] or l_context[str] or l_variant[languages.default]).context
+ v = (type(v) == "table" and v[1]) or v
+ t[k] = v
+ return v
+end
+
+setmetatable(records, { __index = function(t,k) -- how useful is this one?
+ str = lower(str)
+ local v = variants[str] or opentypes[str] or contexts[str] or variants.en
+ t[k] = v
+ return v
+end
diff --git a/tex/context/base/lang-frd.tex b/tex/context/base/lang-frd.mkii
index 6cc27080b..6cc27080b 100644
--- a/tex/context/base/lang-frd.tex
+++ b/tex/context/base/lang-frd.mkii
diff --git a/tex/context/base/lang-frq.tex b/tex/context/base/lang-frq.mkii
index 773230e6c..773230e6c 100644
--- a/tex/context/base/lang-frq.tex
+++ b/tex/context/base/lang-frq.mkii
diff --git a/tex/context/base/lang-ger.tex b/tex/context/base/lang-ger.mkii
index 04551a891..04551a891 100644
--- a/tex/context/base/lang-ger.tex
+++ b/tex/context/base/lang-ger.mkii
diff --git a/tex/context/base/lang-ger.mkiv b/tex/context/base/lang-ger.mkiv
new file mode 100644
index 000000000..abba341a4
--- /dev/null
+++ b/tex/context/base/lang-ger.mkiv
@@ -0,0 +1,259 @@
+%D \module
+%D [ file=lang-ger,
+%D version=1997.09.03,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Germanic Languages,
+%D author=Hans Hagen / Tobias Burnus,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{ConTeXt Language Macros / Germanic Languages}
+
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+%D
+%D \starttabulate[|lB|l|]
+%D \NC Norwegian \NC Hans Fredrik Nordhaug \NC \NR
+%D \NC Danish \NC Arne Jorgensen \NC \NR % check the o
+%D \NC Afrikaans \NC \NC \NR
+%D \stoptabulate
+
+% Danish, Faeroese, Icelandic, Norwegian, Swedish, German, Yiddish
+% Afrikaans, Dutch, English, Flemush, Frisian, Plattdeutsch
+
+\unprotect
+
+\installlanguage
+ [\s!nl]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\lowerleftsingleninequote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\lowerleftdoubleninequote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!date={\v!day,\ ,\v!month,\ ,\v!year}]
+
+\installlanguage
+ [\s!en]
+ [\c!spacing=\v!broad,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\upperleftsinglesixquote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\upperleftdoublesixquote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!date={\v!month,\ ,\v!day,{,\ },\v!year},
+ \s!patterns=\s!us,
+ \s!lefthyphenmin=2,
+ \s!righthyphenmin=3]
+
+\installlanguage
+ [\s!de]
+ [\c!spacing=\v!packed,
+ \s!lefthyphenmin=3,
+ \s!righthyphenmin=3,
+ \c!leftsentence={\hbox{--~}},
+ \c!rightsentence={\hbox{~--}},
+ \c!leftsubsentence={--},
+ \c!rightsubsentence={--},
+ \c!leftquote=\lowerleftsingleninequote,
+ \c!rightquote=\upperrightsinglesixquote,
+ \c!leftquotation=\lowerleftdoubleninequote,
+ \c!rightquotation=\upperrightdoublesixquote,
+ \c!date={\v!day,{.},\ ,\v!month,\ ,\v!year}]
+
+\installlanguage
+ [\s!da]
+ [\c!spacing=\v!packed,
+ \c!leftsentence={\hbox{--\hskip.5em}},
+ \c!rightsentence={\hbox{\hskip.5em--}},
+ \c!leftsubsentence={--},
+ \c!rightsubsentence={--},
+ \c!leftquote=\lowerleftsingleninequote,
+ \c!rightquote=\upperrightsinglesixquote,
+ \c!leftquotation=\lowerleftdoubleninequote,
+ \c!rightquotation=\upperrightdoublesixquote,
+ \c!date={\v!day,{.},\ ,\v!month,\ ,\v!year}]
+
+\installlanguage
+ [\s!sv]
+ [\c!spacing=\v!packed,
+ \c!leftsentence={\hbox{--~}},
+ \c!rightsentence={\hbox{~--}},
+ \c!leftsubsentence={--},
+ \c!rightsubsentence={--},
+ \c!leftquote=\upperrightsingleninequote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\upperrightdoubleninequote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!date={\v!day,\ ,\v!month,\ ,\v!year}]
+
+\installlanguage
+ [\s!af]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\upperleftsinglesixquote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\upperleftdoublesixquote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!date={\v!year,\ ,\v!month,\ ,\v!day}]
+
+\installlanguage
+ [\s!nb]
+ [spacing=packed,
+ lefthyphenmin=2,
+ righthyphenmin=2,
+ leftsentence=---,
+ rightsentence=---,
+ leftsubsentence=---,
+ rightsubsentence=---,
+ leftquote=\upperleftsinglesixquote,
+ rightquote=\upperrightsingleninequote,
+ leftquotation=\leftguillemot,
+ rightquotation=\rightguillemot,
+ date={day,{.},\ ,month,\ ,year}]
+
+\installlanguage
+ [\s!nn]
+ [spacing=packed,
+ lefthyphenmin=2,
+ righthyphenmin=2,
+ leftsentence=---,
+ rightsentence=---,
+ leftsubsentence=---,
+ rightsubsentence=---,
+ leftquote=\upperleftsinglesixquote,
+ rightquote=\upperrightsingleninequote,
+ leftquotation=\leftguillemot,
+ rightquotation=\rightguillemot,
+ date={day,{.},\ ,month,\ ,year}]
+
+\installlanguage [\s!no] [\s!nb]
+\installlanguage [\s!norwegian] [\s!nb]
+\installlanguage [\s!bokmal] [\s!nb]
+\installlanguage [\s!nynorsk] [\s!nn]
+
+%D Extra:
+
+% \mainlanguage[en]
+% \mainlanguage[de]
+% \mainlanguage[deo]
+% \mainlanguage[de-de]
+% \mainlanguage[de-at]
+% \mainlanguage[de-ch]
+%
+% \starttext
+% Die Herren Meier\index{Meier}, Müller\index{Müller}, Huber\index{Huber}
+% und Schmidt\index{Schmidt} arbeiten in der gleichen Firma.
+%
+% \index{Mass}\index{Mas}\index{Maß}\index{Maße}\index{Masse}
+% \index{Muller}\index{Mûller}
+% \index{Hutte}\index{Hütte}\index{Huttf}
+% \index{paar}\index{Paar}
+% \index{a}\index{aa}\index{ä}\index{az}\index{aza}
+% \index{o}\index{oo}\index{ö}\index{oz}\index{oza}
+% \index{u}\index{uu}\index{ü}\index{uz}\index{uza}\index{üa}
+% \index{call}\index{chip}
+%
+% \subject{Index} \placeindex
+% \stoptext
+
+\installlanguage % old german
+ [deo]
+ [\c!spacing=\v!packed,
+ \c!default=\s!de]
+
+\installlanguage
+ [de-de]
+ [\c!spacing=\v!packed,
+ \c!default=\s!de]
+
+\installlanguage
+ [de-at]
+ [\c!spacing=\v!packed,
+ \c!default=\s!de,
+ \c!leftquote=\leftguillemot,
+ \c!rightquote=\rightguillemot,
+ \c!leftquotation=\leftguillemot,
+ \c!rightquotation=\rightguillemot]
+
+\installlanguage
+ [de-ch]
+ [\c!spacing=\v!packed,
+ \c!default=\s!de]
+
+%D And some alternative (but very real) english patterns:
+
+\installlanguage
+ [en-gb]
+ [\c!default=\s!en,
+ \s!patterns=\s!gb,
+ \s!lefthyphenmin=3,
+ \s!righthyphenmin=3]
+
+\installlanguage
+ [en-us]
+ [\c!default=\s!en,
+ \s!patterns=\s!us]
+
+\installlanguage [\s!uk] [\s!en-\s!gb]
+\installlanguage [\s!us] [\s!en-\s!us]
+
+%D For compatibility reasons we also define:
+
+%installlanguage [du] [\s!de] % old times context
+%installlanguage [sp] [\s!es] % old times context /lang-ita
+
+\installlanguage [usenglish] [\s!en-\s!us]
+\installlanguage [ukenglish] [\s!en-\s!gb]
+\installlanguage [english] [\s!en]
+\installlanguage [dutch] [\s!nl]
+\installlanguage [german] [\s!de]
+\installlanguage [danish] [\s!da]
+\installlanguage [swedish] [\s!sv]
+\installlanguage [afrikaans] [\s!af]
+
+%D Next we implement couple of ordinal mumber converters:
+
+\def\enordinaldaynumber#1%
+ {#1\ifnum\lasttwodigits{#1}=11
+ \highordinalstr{th}%
+ \else\ifnum\lasttwodigits{#1}=12
+ \highordinalstr{th}%
+ \else\ifnum\lasttwodigits{#1}=13
+ \highordinalstr{th}%
+ \else\ifcase\lastdigit{#1}%
+ \highordinalstr{th}%
+ \or % 1
+ \highordinalstr{st}%
+ \or % 2
+ \highordinalstr{nd}%
+ \or % 3
+ \highordinalstr{rd}%
+ \else
+ \highordinalstr{th}%
+ \fi\fi\fi\fi}
+
+% \def\enordinaldaynumber#1%
+% {#1\ordinalstr{\ifnum\lasttwodigits{#1}=11 th\else\ifcase\lastdigit{#1}
+% th\or st\or nd\or rd\else th\fi\fi}}
+
+\def\nlordinaldaynumber#1%
+ {#1\highordinalstr{e}}
+
+\protect \endinput
diff --git a/tex/context/base/lang-grk.tex b/tex/context/base/lang-grk.mkii
index 862f3c5f4..862f3c5f4 100644
--- a/tex/context/base/lang-grk.tex
+++ b/tex/context/base/lang-grk.mkii
diff --git a/tex/context/base/lang-grk.mkiv b/tex/context/base/lang-grk.mkiv
new file mode 100644
index 000000000..92bd9aca6
--- /dev/null
+++ b/tex/context/base/lang-grk.mkiv
@@ -0,0 +1,48 @@
+%D \module
+%D [ file=lang-grk,
+%D version=2003.04.01,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Uralic Languages,
+%D author=Apostolos Syropoulos
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{ConTeXt Language Macros / Greek}
+
+%D The framework of this module is set up by Hans Hagen while
+%D all the translations have been done by Apostolos Syropoulos
+
+\unprotect
+
+\installlanguage
+ [\s!gr]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\greekleftquot,
+ \c!rightquote=\greekrightquot,
+ \c!leftquotation=\greekleftquot,
+ \c!rightquotation=\greekrightquot,
+ \c!date={\v!day\ \v!month\ \v!year},
+ \s!patterns=\s!agr] % ok?
+
+\installlanguage [greek] [\s!gr]
+
+\installlanguage
+ [\s!agr]
+ [\s!default=\s!gr,
+ \c!leftquote=\upperleftsinglesixquote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\upperleftdoublesixquote,
+ \c!rightquotation=\upperrightdoubleninequote]
+
+\installlanguage [ancientgreek] [\s!agr]
+\installlanguage [grk] [\s!agr]
+
+\protect \endinput
diff --git a/tex/context/base/lang-ind.tex b/tex/context/base/lang-ind.mkii
index 9b6e5ff1d..9b6e5ff1d 100644
--- a/tex/context/base/lang-ind.tex
+++ b/tex/context/base/lang-ind.mkii
diff --git a/tex/context/base/lang-ind.mkiv b/tex/context/base/lang-ind.mkiv
new file mode 100644
index 000000000..9b6e5ff1d
--- /dev/null
+++ b/tex/context/base/lang-ind.mkiv
@@ -0,0 +1,26 @@
+%D \module
+%D [ file=lang--ind,
+%D version=1997.09.03,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Indo Iranian Languages,
+%D author=Hans Hagen / Tobias Burnus,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{ConTeXt Language Macros / Indo-Iranian Languages}
+
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+
+% 34 languages
+
+\unprotect
+
+\protect \endinput
diff --git a/tex/context/base/lang-ini.mkiv b/tex/context/base/lang-ini.mkiv
index 7d2f91a92..88b26ddb0 100644
--- a/tex/context/base/lang-ini.mkiv
+++ b/tex/context/base/lang-ini.mkiv
@@ -23,6 +23,7 @@
\writestatus{loading}{ConTeXt Language Macros / Initialization}
\registerctxluafile{lang-ini}{1.001}
+\registerctxluafile{lang-def}{1.001}
\unprotect
diff --git a/tex/context/base/lang-ita.tex b/tex/context/base/lang-ita.mkii
index 03efb0614..03efb0614 100644
--- a/tex/context/base/lang-ita.tex
+++ b/tex/context/base/lang-ita.mkii
diff --git a/tex/context/base/lang-ita.mkiv b/tex/context/base/lang-ita.mkiv
new file mode 100644
index 000000000..2443825de
--- /dev/null
+++ b/tex/context/base/lang-ita.mkiv
@@ -0,0 +1,157 @@
+%D \module
+%D [ file=lang-ita,
+%D version=1997.09.03,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Italic Languages,
+%D author=Hans Hagen / Tobias Burnus,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% Todo: replace \'.. by \namedglyph
+
+\writestatus{loading}{ConTeXt Language Macros / Italic Languages}
+
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+%D
+%D \starttabulate[|lB|l|]
+%D \NC Italian \NC Giuseppe Bilotta \NC \NR
+%D \NC Romanian \NC Dan Seracu \NC \NR
+%D \NC Portuguese \NC Pedro F. M. Mendon\c a \NC \NR
+%D \stoptabulate
+
+% Latin, Italian, Rhaeto-Romanic, Rumanian, Sardian
+% Catalan, French, Ladino, Portuguese, Proven\c{c}al, Spanish
+
+\unprotect
+
+\ifx\guillemotspace\undefined \let\guillemotspace\empty \fi
+\ifx\sentencespace \undefined \let\sentencespace \empty \fi
+
+\installlanguage
+ [\s!fr]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=\emdash,
+ \c!rightsentence=\emdash,
+ \c!leftsubsentence=\emdash,
+ \c!rightsubsentence=\emdash,
+ \c!leftquote=\leftguillemot,
+ \c!rightquote=\rightguillemot,
+ \c!leftquotation=\leftguillemot,
+ \c!rightquotation=\rightguillemot,
+ \c!date={\v!day+,\v!space,\v!month,\v!space,\v!year}]
+
+\installlanguage
+ [\s!es]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\upperleftsinglesixquote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\upperleftdoublesixquote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!date={\v!day,\ ,\v!month,\ ,\v!year}]
+
+\installlanguage [sp] [\s!es] % old times context
+
+\installlanguage
+ [\s!ca]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\upperleftsinglesixquote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\upperleftdoublesixquote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!date={\v!day,\ ,\v!month,\ ,\v!year}]
+
+% Note GB left|/|right (sub)sentences are for \quote {incisi}.
+
+\installlanguage
+ [\s!it]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=--,
+ \c!rightsubsentence=--,
+ \c!leftquote=\upperleftsinglesixquote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\upperleftdoublesixquote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!leftspeech=\leftguillemot,
+ \c!middlespeech=\leftguillemot,
+ \c!rightspeech=\rightguillemot,
+ \c!date={\v!day,\ ,\v!month,\ ,\v!year}]
+
+\installlanguage % the same as italian
+ [\s!la]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\upperleftsinglesixquote,
+ \c!rightquote=\lowerrightsingleninequote,
+ \c!leftquotation=\upperleftdoublesixquote,
+ \c!rightquotation=\lowerrightdoubleninequote,
+ \c!date={\v!day,\ ,\v!month,\ ,\v!year}]
+
+\installlanguage
+ [\s!pt]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\upperleftsinglesixquote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\upperleftdoublesixquote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!date={\v!year,\ ,\v!month,\ ,\v!day}]
+
+\installlanguage
+ [\s!ro]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\leftguillemot,
+ \c!rightquote=\rightguillemot,
+ \c!leftquotation=\lowerrightdoubleninequote,
+ \c!rightquotation=\upperleftdoublesixquote,
+ \c!date={\v!day,\ ,\v!month,\ ,\v!year}]
+
+%D For compatibility reasons we also define:
+
+\installlanguage [fa] [\s!fr] % for dutchies only
+
+\installlanguage [french] [\s!fr]
+\installlanguage [spanish] [\s!es]
+\installlanguage [catalan] [\s!ca]
+\installlanguage [italian] [\s!it]
+\installlanguage [latin] [\s!la]
+\installlanguage [portuguese] [\s!pt]
+\installlanguage [romanian] [\s!ro]
+
+%D Ordinal converters:
+
+\def\frordinaldaynumber#1% date is masculine
+ {\number#1\ifcase#1\or
+ \highordinalstr{er}%
+ \fi}
+
+\defineconversion [\s!fr] [\v!day+] [\frordinaldaynumber]
+
+\protect \endinput
diff --git a/tex/context/base/lang-lab.lua b/tex/context/base/lang-lab.lua
new file mode 100644
index 000000000..0f4fa0a30
--- /dev/null
+++ b/tex/context/base/lang-lab.lua
@@ -0,0 +1,131 @@
+if not modules then modules = { } end modules ['lang-lab'] = {
+ version = 1.001,
+ comment = "companion to lang-lab.mkiv",
+ author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
+ copyright = "PRAGMA ADE / ConTeXt Development Team",
+ license = "see context related readme files"
+}
+
+--~ local function complete()
+--~ local function process(what)
+--~ for tag, data in next, what do
+--~ for k, v in next, data.labels do
+--~ languages[k] = true
+--~ end
+--~ end
+--~ end
+--~ process(languages.labels.data.titles)
+--~ process(languages.labels.data.texts)
+--~ process(languages.labels.data.functions)
+--~ process(languages.labels.data.tags)
+--~ local function process(what)
+--~ for tag, data in next, what do
+--~ local labels = data.labels
+--~ for k, v in next, languages do
+--~ if not labels[k] then
+--~ labels[k] = ""
+--~ end
+--~ end
+--~ end
+--~ end
+--~ process(languages.data.labels.titles)
+--~ process(languages.data.labels.texts)
+--~ process(languages.data.labels.functions)
+--~ process(languages.data.labels.tags)
+--~ end
+--~
+--~ local function strip(default)
+--~ local function process(what)
+--~ for tag, data in next, what do
+--~ local labels = data.labels
+--~ for k, v in next, labels do
+--~ if v == "" then
+--~ labels[k] = default
+--~ end
+--~ end
+--~ end
+--~ end
+--~ process(languages.data.labels.titles)
+--~ process(languages.data.labels.texts)
+--~ process(languages.data.labels.functions)
+--~ process(languages.data.labels.tags)
+--~ end
+--~
+--~ complete()
+--~ strip(false)
+--~ strip()
+
+--~ table.print(languages.data.labels,"languages.data.labels",false,true,true)
+
+-- this will move
+
+local format, find = string.format, string.find
+local next, rawget, type = next, rawget, type
+local texsprint = tex.sprint
+local prtcatcodes = tex.prtcatcodes
+
+languages.labels = languages.labels or { }
+languages.data = languages.data or { }
+
+local trace_labels = false trackers.register("languages.labels", function(v) trace_labels = v end)
+
+local report_labels = logs.new("language labels")
+
+function languages.labels.define()
+ local variables = interfaces.variables
+ local data = languages.data.labels
+ local function define(command,list,prefixed)
+ if list then
+ for tag, data in next, list do
+ if data.hidden then
+ -- skip
+ else
+ for language, text in next, data.labels do
+ if text == "" then
+ -- skip
+ elseif prefixed and rawget(variables,tag) then
+ if type(text) == "table" then
+ texsprint(prtcatcodes,format("\\%s[%s][\\v!%s={{%s},{%s}}]",command,language,tag,text[1],text[2]))
+ else
+ texsprint(prtcatcodes,format("\\%s[%s][\\v!%s={{%s},}]",command,language,tag,text))
+ end
+ else
+ if type(text) == "table" then
+ texsprint(prtcatcodes,format("\\%s[%s][%s={{%s},{%s}}]",command,language,tag,text[1],text[2]))
+ else
+ texsprint(prtcatcodes,format("\\%s[%s][%s={{%s},}]",command,language,tag,text))
+ end
+ end
+ if trace_labels then
+ if type(text) == "table" then
+ report_labels("language '%s', defining label '%s' as '%s' and '%s'",language,tag,text[1],text[2])
+ else
+ report_labels("language '%s', defining label '%s' as '%s'",language,tag,text)
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ define("setupheadtext", data.titles, true)
+ define("setuplabeltext", data.texts, true)
+ define("setupmathlabeltext", data.functions)
+ define("setuptaglabeltext", data.tags)
+end
+
+--~ function languages.labels.check()
+--~ for category, list in next, languages.data.labels do
+--~ for tag, specification in next, list do
+--~ for language, text in next, specification.labels do
+--~ if type(text) == "string" and find(text,",") then
+--~ logs.simple("label with comma: category '%s', language '%s', tag '%s', text '%s'",
+--~ category, language, tag, text)
+--~ end
+--~ end
+--~ end
+--~ end
+--~ end
+--~
+--~ languages.labels.check()
+
diff --git a/tex/context/base/lang-lab.mkiv b/tex/context/base/lang-lab.mkiv
index 86311e77f..d7a705627 100644
--- a/tex/context/base/lang-lab.mkiv
+++ b/tex/context/base/lang-lab.mkiv
@@ -11,6 +11,11 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
+\writestatus{loading}{ConTeXt Language Macros / Labels}
+
+\registerctxluafile{lang-lab}{1.001}
+\registerctxluafile{lang-txt}{1.001}
+
\unprotect
%C The UPPERCASE variants are obsolete as we can now use \WORD
@@ -144,10 +149,10 @@
%D These macros enable us to automatically define head and label
%D texts without replacing predefined ones. They are internal macros.
-\definelabelclass [head] [0]
-\definelabelclass [label] [0]
-\definelabelclass [mathlabel] [0]
-\definelabelclass [taglabel] [2]
+\definelabelclass [head] [0] % titles
+\definelabelclass [label] [0] % texts
+\definelabelclass [mathlabel] [0] % functions
+\definelabelclass [taglabel] [2] % tags
\appendtoks \let\labellanguage\currentlanguage \to \everycurrentdate
@@ -258,4 +263,12 @@
{\getparameters[\??lg][#1]%
\edef#2{\csname\??lg\currentlanguage\endcsname}}
+%D Now we load the labels:
+
+\ifdefined\sixperemspace \else \def\sixperemspace{ } \fi % we could embed 0x2006 but it does not show up in a editor
+
+%D Now we can load the labels:
+
+\ctxlua{languages.labels.define()}
+
\protect \endinput
diff --git a/tex/context/base/lang-sla.mkii b/tex/context/base/lang-sla.mkii
index 62483aeb6..2834b652f 100644
--- a/tex/context/base/lang-sla.mkii
+++ b/tex/context/base/lang-sla.mkii
@@ -11,6 +11,461 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
+% Todo: replace \'.. by \namedglyph
+
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+%D
+%D \starttabulate[|lB|l|]
+%D \NC Czech \NC Tom Hudec, Petr Sojka \NC \NR
+%D \NC Polish \NC Grzegorz Sapijaszko \NC \NR
+%D \NC Croatian \NC \Zcaron eljko Vrba \NC \NR
+%D \NC Slovenian \NC Mojca Miklavec \NC \NR
+%D \NC Cz and Sk \NC Richard Gabriel \NC \NR
+%D \stoptabulate
+
+% Belarussian, Russian, Ukrainian, Bulgarian, Macedonian,
+% Serbian, Croatian, Slovenian, Czech, Kushubian,
+% Lusatian/Sorbian/Wendish, Polish, Slovak, Albanian,
+% Illyrian, Armenian
+
+\writestatus{loading}{ConTeXt Language Macros / Slavic Languages}
+
+\unprotect
+
+\installlanguage
+ [\s!pl]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\lowerleftsingleninequote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\lowerleftdoubleninequote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!date={\v!day,{.},\ ,\v!month,\ ,\v!year},
+ \s!mapping={pl0,ec,qx},
+ \s!encoding={pl0,ec,qx}]
+
+\installlanguage
+ [\s!cs]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=\thickglue--\thickglue\penalty-20\relax, % hh, \relax added
+ \c!rightsentence=\thickglue--\thickglue\penalty-20\relax,
+ \c!leftsubsentence=~---~\penalty-20\relax,
+ \c!rightsubsentence=~---~\penalty-20\relax,
+ \c!leftquote=\lowerleftsingleninequote,
+ \c!rightquote=\upperrightsinglesixquote,
+ \c!leftquotation=\lowerleftdoubleninequote,
+ \c!rightquotation=\upperrightdoublesixquote,
+ \c!date={\v!day,{.\,},\v!month,\ ,\v!year},
+ \s!mapping={il2,ec},
+ \s!encoding={il2,ec}]
+
+\installlanguage
+ [\s!sk]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\upperleftsinglesixquote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\upperleftdoublesixquote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!date={\v!day,{.\,},\v!month,\ ,\v!year},
+ \s!mapping={il2,ec},
+ \s!encoding={il2,ec}]
+
+\installlanguage
+ [\s!hr]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\lowerleftsingleninequote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\lowerleftdoubleninequote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!date={\v!day,{.},\ ,\v!month,\ ,\v!year},
+ \s!mapping=ec,
+ \s!encoding=ec]
+
+%D The default quotation marks for Slovenian were chosen as
+%D \lowerleftdoubleninequote these ones\upperrightdoublesixquote\
+%D which was probably due to the strong influence computers
+%D had on typesetting, but \rightguillemot these ones\leftguillemot\
+%D are \quotation{more correct}.
+%D
+%D If you still want the other quotation marks, use this:
+%D
+%D \starttyping
+%D \installlanguage
+%D [sl]
+%D [leftquote=\lowerleftsingleninequote,
+%D rightquote=\upperrightsinglesixquote,
+%D leftquotation=\lowerleftdoubleninequote,
+%D rightquotation=\upperrightdoublesixquote]
+%D \stoptyping
+%D
+%D If you disagree with the change, please send an email to Mojca, but
+%D best use some pretty strong arguments because she loves S{\sl love}nia
+%D too much to compromise on this.
+%D
+%D German faces approximately the same problem. I (MM) would prefer to
+%D have something like:
+%D
+%D \starttyping
+%D \mainlanguage[sl][quotationstyle=guillemot|doublequote] % better name needed
+%D \stoptyping
+%D
+%D but users are expected to respect the rules of nice and correct
+%D typography anyway.
+
+\installlanguage
+ [\s!sl]
+ [\c!spacing=\v!packed,
+ \c!leftsentence={\hbox{--~}},
+ \c!rightsentence={\hbox{~--}},
+ \c!leftsubsentence={--},
+ \c!rightsubsentence={--},
+ %\c!leftquote=\lowerleftsingleninequote,
+ %\c!rightquote=\upperrightsinglesixquote,
+ %\c!leftquotation=\lowerleftdoubleninequote,
+ %\c!rightquotation=\upperrightdoublesixquote,
+ \c!leftquote=\guilsingleright,
+ \c!rightquote=\guilsingleleft,
+ \c!leftquotation=\rightguillemot,
+ \c!rightquotation=\leftguillemot,
+ \c!date={\v!day,{.},\ ,\v!month,\ ,\v!year},
+ \s!mapping=ec,
+ \s!encoding=ec]
+
+\installlanguage [polish] [\s!pl]
+\installlanguage [czech] [\s!cs]
+\installlanguage [slovak] [\s!sk]
+\installlanguage [croatian] [\s!hr]
+\installlanguage [slovenian] [\s!sl]
+\installlanguage [slovene] [\s!sl] % both possible (mojca: still needed?)
+
+\installlanguage [cz] [\s!cs]
+
+% labels
+
+\setupheadtext [\s!pl] [\v!content=Spis tre\sacute ci]
+\setupheadtext [\s!cs] [\v!content=Obsah]
+\setupheadtext [\s!sk] [\v!content=Obsah]
+\setupheadtext [\s!hr] [\v!content=Sadr\zcaron aj]
+\setupheadtext [\s!sl] [\v!content=Kazalo]
+
+\setupheadtext [\s!pl] [\v!tables=Tabele]
+\setupheadtext [\s!cs] [\v!tables=Tabulky]
+\setupheadtext [\s!sk] [\v!tables=Tabuliek]
+\setupheadtext [\s!hr] [\v!tables=Tablice]
+\setupheadtext [\s!sl] [\v!tables=Tabele]
+
+\setupheadtext [\s!pl] [\v!figures=Ilustracje]
+\setupheadtext [\s!cs] [\v!figures=Obr\aacute zky]
+\setupheadtext [\s!sk] [\v!figures=Obr\aacute zkov]
+\setupheadtext [\s!hr] [\v!figures=Slike]
+\setupheadtext [\s!sl] [\v!figures=Slike]
+
+\setupheadtext [\s!pl] [\v!graphics=Grafika]
+\setupheadtext [\s!cs] [\v!graphics=Grafy]
+\setupheadtext [\s!sk] [\v!graphics=Graf]
+\setupheadtext [\s!hr] [\v!graphics=Slike]
+\setupheadtext [\s!sl] [\v!graphics=Slike]
+
+\setupheadtext [\s!pl] [\v!intermezzi=Intermezza]
+\setupheadtext [\s!cs] [\v!intermezzi=Intermezza]
+\setupheadtext [\s!sk] [\v!intermezzi=Intermezz\aacute]
+\setupheadtext [\s!hr] [\v!intermezzi=Intermeci]
+\setupheadtext [\s!sl] [\v!intermezzi=Intermezzi]
+
+\setupheadtext [\s!pl] [\v!index=Indeks]
+\setupheadtext [\s!cs] [\v!index=Rejst\rcaron\iacute k]
+\setupheadtext [\s!sk] [\v!index=Zoznam]
+\setupheadtext [\s!hr] [\v!index=Indeks]
+\setupheadtext [\s!sl] [\v!index=Stvarno kazalo]
+
+\setupheadtext [\s!pl] [\v!abbreviations=Skr\oacute cenie]
+\setupheadtext [\s!cs] [\v!abbreviations=Zkratky]
+\setupheadtext [\s!sk] [\v!abbreviations=Skratky]
+\setupheadtext [\s!hr] [\v!abbreviations=Kratice]
+\setupheadtext [\s!sl] [\v!abbreviations=Kratice]
+
+\setupheadtext [\s!pl] [\v!logos=Znaki]
+\setupheadtext [\s!cs] [\v!logos=Loga]
+\setupheadtext [\s!sk] [\v!logos=Log\aacute]
+\setupheadtext [\s!hr] [\v!logos=Znakovi]
+\setupheadtext [\s!sl] [\v!logos=Logotipi]
+
+\setupheadtext [\s!pl] [\v!units=Jednostki]
+\setupheadtext [\s!cs] [\v!units=Jednotky]
+\setupheadtext [\s!sk] [\v!units=Jednotky]
+\setupheadtext [\s!hr] [\v!units=Jedinice]
+\setupheadtext [\s!sl] [\v!units=Enote]
+
+%setupheadtext [\s!pl] [pubs=?]
+\setupheadtext [\s!cs] [pubs=Literatura]
+%setupheadtext [\s!sk] [pubs=?]
+\setupheadtext [\s!hr] [pubs=Literatura]
+\setupheadtext [\s!sl] [pubs=Literatura]
+
+\setuplabeltext [\s!pl] [\v!table=Tabela ]
+\setuplabeltext [\s!cs] [\v!table=Tabulka ]
+\setuplabeltext [\s!sk] [\v!table=Tabu\lcaron ka ]
+\setuplabeltext [\s!hr] [\v!table=Tablica ]
+\setuplabeltext [\s!sl] [\v!table=Tabela ]
+
+\setuplabeltext [\s!pl] [\v!figure=Ilustracja ]
+\setuplabeltext [\s!cs] [\v!figure=Obr\aacute zek ]
+\setuplabeltext [\s!sk] [\v!figure=Obr\aacute zok ]
+\setuplabeltext [\s!hr] [\v!figure=Slika ]
+\setuplabeltext [\s!sl] [\v!figure=Slika ]
+
+\setuplabeltext [\s!pl] [\v!intermezzo=Intermezzo ]
+\setuplabeltext [\s!cs] [\v!intermezzo=Intermezzo ]
+\setuplabeltext [\s!sk] [\v!intermezzo=Intermezzo ]
+\setuplabeltext [\s!hr] [\v!intermezzo=Intermeco ]
+\setuplabeltext [\s!sl] [\v!intermezzo=Intermezzo ]
+
+\setuplabeltext [\s!pl] [\v!graphic=Grafika ]
+\setuplabeltext [\s!cs] [\v!graphic=Graf ]
+\setuplabeltext [\s!sk] [\v!graphic=Graf ]
+\setuplabeltext [\s!hr] [\v!graphic=Slika ]
+\setuplabeltext [\s!sl] [\v!graphic=Slika ]
+
+\setuplabeltext [\s!pl] [\v!chapter=] % Rozdzia\l
+\setuplabeltext [\s!cs] [\v!chapter=] % Kapitola
+\setuplabeltext [\s!sk] [\v!chapter=] % Kapitola
+\setuplabeltext [\s!hr] [\v!chapter=] % Poglavlje
+\setuplabeltext [\s!sl] [\v!chapter=] % Poglavje
+
+\setuplabeltext [\s!pl] [\v!section=] % Podrozdzia\l
+\setuplabeltext [\s!cs] [\v!section=] % Sekce
+\setuplabeltext [\s!sk] [\v!section=] % Sekcia
+\setuplabeltext [\s!hr] [\v!section=] % Odjeljak
+\setuplabeltext [\s!sl] [\v!section=]
+
+\setuplabeltext [\s!pl] [\v!subsection=]
+\setuplabeltext [\s!cs] [\v!subsection=] % Podsekce
+\setuplabeltext [\s!sk] [\v!subsection=] % Podsekcia
+\setuplabeltext [\s!hr] [\v!subsection=] % Pododjeljak
+\setuplabeltext [\s!sl] [\v!subsection=]
+
+\setuplabeltext [\s!pl] [\v!subsubsection=]
+\setuplabeltext [\s!cs] [\v!subsubsection=] % Podpodsekce
+\setuplabeltext [\s!sk] [\v!subsubsection=] % Podpodsekcia
+\setuplabeltext [\s!hr] [\v!subsubsection=] % Podpododjeljak
+\setuplabeltext [\s!sl] [\v!subsubsection=]
+
+\setuplabeltext [\s!pl] [\v!subsubsubsection=]
+\setuplabeltext [\s!cs] [\v!subsubsubsection=] % Podpodpodsekce
+\setuplabeltext [\s!sk] [\v!subsubsubsection=] % Podpodpodsekcia
+\setuplabeltext [\s!hr] [\v!subsubsubsection=] % Podpodpododjeljak
+\setuplabeltext [\s!sl] [\v!subsubsubsection=]
+
+\setuplabeltext [\s!pl] [\v!appendix=] % Dodatek
+\setuplabeltext [\s!cs] [\v!appendix=] % P\rcaron\iacute loha
+\setuplabeltext [\s!sk] [\v!appendix=] % Pr\iacute loha
+\setuplabeltext [\s!hr] [\v!appendix=] % Dodatak
+\setuplabeltext [\s!sl] [\v!appendix=] % Dodatek
+
+\setuplabeltext [\s!pl] [\v!part=Ust\eogonek p ]
+\setuplabeltext [\s!cs] [\v!part=\Ccaron \aacute st ]
+\setuplabeltext [\s!sk] [\v!part=\Ccaron as\tcaron{} ]
+\setuplabeltext [\s!hr] [\v!part=Dio ]
+\setuplabeltext [\s!sl] [\v!part=Del ]
+
+\setuplabeltext [\s!pl] [\v!line=wiersz ]
+\setuplabeltext [\s!cs] [\v!line=\rcaron\aacute dek ]
+\setuplabeltext [\s!sk] [\v!line=riadok ]
+\setuplabeltext [\s!hr] [\v!line=redak ]
+\setuplabeltext [\s!sl] [\v!line=vrstica ]
+
+\setuplabeltext [\s!pl] [\v!lines=wiersze ]
+\setuplabeltext [\s!cs] [\v!lines=\rcaron\aacute dky ]
+\setuplabeltext [\s!sk] [\v!lines=riadky ]
+\setuplabeltext [\s!hr] [\v!lines=retci ]
+\setuplabeltext [\s!sl] [\v!lines=vrstice ]
+
+\setuplabeltext [\s!pl] [\v!january=stycznia]
+\setuplabeltext [\s!pl] [\v!february=lutego]
+\setuplabeltext [\s!pl] [\v!march=marca]
+\setuplabeltext [\s!pl] [\v!april=kwietnia]
+\setuplabeltext [\s!pl] [\v!may=maja]
+\setuplabeltext [\s!pl] [\v!june=czerwca]
+\setuplabeltext [\s!pl] [\v!july=lipca]
+\setuplabeltext [\s!pl] [\v!august=sierpnia]
+\setuplabeltext [\s!pl] [\v!september=wrze\sacute nia]
+\setuplabeltext [\s!pl] [\v!october=pa\zacute dziernika]
+\setuplabeltext [\s!pl] [\v!november=listopada]
+\setuplabeltext [\s!pl] [\v!december=grudnia]
+
+\setuplabeltext [\s!cs] [\v!january=ledna]
+\setuplabeltext [\s!cs] [\v!february=\uacute nora]
+\setuplabeltext [\s!cs] [\v!march=b\rcaron ezna]
+\setuplabeltext [\s!cs] [\v!april=dubna]
+\setuplabeltext [\s!cs] [\v!may=kv\ecaron tna]
+\setuplabeltext [\s!cs] [\v!june=\ccaron ervna]
+\setuplabeltext [\s!cs] [\v!july=\ccaron ervence]
+\setuplabeltext [\s!cs] [\v!august=srpna]
+\setuplabeltext [\s!cs] [\v!september=z\aacute\rcaron\iacute{}]
+\setuplabeltext [\s!cs] [\v!october=\rcaron\iacute jna]
+\setuplabeltext [\s!cs] [\v!november=listopadu]
+\setuplabeltext [\s!cs] [\v!december=prosince]
+
+\setuplabeltext [\s!sk] [\v!january=janu\aacute ra]
+\setuplabeltext [\s!sk] [\v!february=febru\aacute ra]
+\setuplabeltext [\s!sk] [\v!march=marca]
+\setuplabeltext [\s!sk] [\v!april=apr\iacute la]
+\setuplabeltext [\s!sk] [\v!may=m\aacute ja]
+\setuplabeltext [\s!sk] [\v!june=j\uacute na]
+\setuplabeltext [\s!sk] [\v!july=j\uacute la]
+\setuplabeltext [\s!sk] [\v!august=augusta]
+\setuplabeltext [\s!sk] [\v!september=septembra]
+\setuplabeltext [\s!sk] [\v!october=okt\oacute bra]
+\setuplabeltext [\s!sk] [\v!november=novembra]
+\setuplabeltext [\s!sk] [\v!december=decembra]
+
+\setuplabeltext [\s!hr] [\v!january=sije\ccaron anj]
+\setuplabeltext [\s!hr] [\v!february=velja\ccaron a]
+\setuplabeltext [\s!hr] [\v!march=o\zcaron ujak]
+\setuplabeltext [\s!hr] [\v!april=travanj]
+\setuplabeltext [\s!hr] [\v!may=svibanj]
+\setuplabeltext [\s!hr] [\v!june=lipanj]
+\setuplabeltext [\s!hr] [\v!july=srpanj]
+\setuplabeltext [\s!hr] [\v!august=kolovoz]
+\setuplabeltext [\s!hr] [\v!september=rujan]
+\setuplabeltext [\s!hr] [\v!october=listopad]
+\setuplabeltext [\s!hr] [\v!november=studeni]
+\setuplabeltext [\s!hr] [\v!december=prosinac]
+
+\setuplabeltext [\s!sl] [\v!january=januar]
+\setuplabeltext [\s!sl] [\v!february=februar]
+\setuplabeltext [\s!sl] [\v!march=marec]
+\setuplabeltext [\s!sl] [\v!april=april]
+\setuplabeltext [\s!sl] [\v!may=maj]
+\setuplabeltext [\s!sl] [\v!june=junij]
+\setuplabeltext [\s!sl] [\v!july=julij]
+\setuplabeltext [\s!sl] [\v!august=avgust]
+\setuplabeltext [\s!sl] [\v!september=september]
+\setuplabeltext [\s!sl] [\v!october=oktober]
+\setuplabeltext [\s!sl] [\v!november=november]
+\setuplabeltext [\s!sl] [\v!december=december]
+
+\setuplabeltext [\s!pl] [\v!sunday=niedziela]
+\setuplabeltext [\s!pl] [\v!monday=poniedzia\lstroke ek]
+\setuplabeltext [\s!pl] [\v!tuesday=wtorek]
+\setuplabeltext [\s!pl] [\v!wednesday=\sacute roda]
+\setuplabeltext [\s!pl] [\v!thursday=czwartek]
+\setuplabeltext [\s!pl] [\v!friday=pi\aogonek tek]
+\setuplabeltext [\s!pl] [\v!saturday=sobota]
+
+\setuplabeltext [\s!cs] [\v!sunday=ned\ecaron le]
+\setuplabeltext [\s!cs] [\v!monday=pond\ecaron l\iacute]
+\setuplabeltext [\s!cs] [\v!tuesday=\uacute ter\yacute]
+\setuplabeltext [\s!cs] [\v!wednesday=st\rcaron eda]
+\setuplabeltext [\s!cs] [\v!thursday=\ccaron tvrtek]
+\setuplabeltext [\s!cs] [\v!friday=p\aacute tek]
+\setuplabeltext [\s!cs] [\v!saturday=sobota]
+
+% Slovakian missing
+
+\setuplabeltext [\s!hr] [\v!sunday=nedjelja]
+\setuplabeltext [\s!hr] [\v!monday=ponedjeljak]
+\setuplabeltext [\s!hr] [\v!tuesday=utorak]
+\setuplabeltext [\s!hr] [\v!wednesday=srijeda]
+\setuplabeltext [\s!hr] [\v!thursday=\ccaron etvrtak]
+\setuplabeltext [\s!hr] [\v!friday=petak]
+\setuplabeltext [\s!hr] [\v!saturday=subota]
+
+\setuplabeltext [\s!sl] [\v!sunday=nedelja]
+\setuplabeltext [\s!sl] [\v!monday=ponedeljek]
+\setuplabeltext [\s!sl] [\v!tuesday=torek]
+\setuplabeltext [\s!sl] [\v!wednesday=sreda]
+\setuplabeltext [\s!sl] [\v!thursday=\ccaron etrtek]
+\setuplabeltext [\s!sl] [\v!friday=petek]
+\setuplabeltext [\s!sl] [\v!saturday=sobota]
+
+%D Rather new ...
+%\installlanguage
+% [\s!cs]
+% [\c!spacing=\v!packed,
+% \c!leftsentence=---,
+% \c!rightsentence=---,
+% \c!leftsubsentence=---,
+% \c!rightsubsentence=---,
+% \c!leftquote=\lowerleftsingleninequote,
+% \c!rightquote=\upperrightsinglesixquote,
+% \c!leftquotation=\lowerleftdoubleninequote,
+% \c!rightquotation=\upperrightdoublesixquote,
+% \c!date={\v!day,\ ,\v!month,\ ,\v!year}]
+
+% Polish missing
+
+\setuplabeltext [\s!cs] [\v!page=strana ]
+\setuplabeltext [\s!cs] [\v!atpage=na stran\ecaron\ ]
+\setuplabeltext [\s!cs] [\v!hencefore=viz v\yacute\scaron e ]
+\setuplabeltext [\s!cs] [\v!hereafter=viz n\iacute\zcaron e ]
+\setuplabeltext [\s!cs] [\v!see=viz ]
+
+% Slovakian missing
+
+\setuplabeltext [\s!hr] [\v!page=stranica ]
+\setuplabeltext [\s!hr] [\v!atpage=na stranici ]
+\setuplabeltext [\s!hr] [\v!hencefore=vidi gore ]
+\setuplabeltext [\s!hr] [\v!hereafter=vidi ispod ]
+\setuplabeltext [\s!hr] [\v!see=vidi ]
+
+\setuplabeltext [\s!sl] [\v!page=stran ]
+\setuplabeltext [\s!sl] [\v!atpage=na strani ]
+\setuplabeltext [\s!sl] [\v!hencefore=glej zgoraj ]
+\setuplabeltext [\s!sl] [\v!hereafter=glej spodaj ]
+\setuplabeltext [\s!sl] [\v!see=glej ]
+
+%D \ShowAllLanguageValues [\s!pl] [polish] {Polish} {furniture}
+%D \ShowAllLanguageValues [\s!cs] [czech] {Czech} {mate}
+%D \ShowAllLanguageValues [\s!sk] [slovak] {Slovakian} {face}
+%D \ShowAllLanguageValues [\s!hr] [croatian] {Croatian} {heartthrob}
+%D \ShowAllLanguageValues [\s!sl] [slovenian] {Slovenian} {mountains}
+
+%D A present from Brooks Moses and Hans Hagen for Mojca Miklavec:
+
+\def\doconvertsloveniancharacters{\dodoconvertcharacters{25}}
+
+\def\sloveniancharacters{\doconvertsloveniancharacters\sloveniancharacter}
+\def\slovenianCharacters{\doconvertsloveniancharacters\slovenianCharacter}
+
+%D Define general-purpose macros for Slovenian character enumerations:
+
+\defineconversion [sloveniancharacter] [\sloveniancharacter]
+\defineconversion [slovenianCharacter] [\slovenianCharacter]
+
+\defineconversion [sloveniancharacters] [\sloveniancharacters]
+\defineconversion [slovenianCharacters] [\slovenianCharacters]
+
+%D Define these as the general character enumeration when
+%D language is Slovenian. If you feel uncomfortable with this,
+%D mail Mojca, since she promised to to take the heat.
+
+\defineconversion [sl] [character] [\sloveniancharacter]
+\defineconversion [sl] [Character] [\slovenianCharacter]
+
+\defineconversion [sl] [characters] [\sloveniancharacters]
+\defineconversion [sl] [Characters] [\slovenianCharacters]
+
+\defineconversion [sl] [a] [\sloveniancharacters]
+\defineconversion [sl] [A] [\slovenianCharacters]
+\defineconversion [sl] [AK] [\smallcapped\sloveniancharacters]
+\defineconversion [sl] [KA] [\smallcapped\sloveniancharacters]
+
\def\sloveniancharacter#1%
{\ifcase#1\unknowncharacter
\or a\or b\or c\or \ccaron\or d\or e\or f\or g\or h\or i\or j\or k\or l\or m%
@@ -27,4 +482,4 @@
\unknowncharacter
\fi}
-\endinput
+\protect \endinput
diff --git a/tex/context/base/lang-sla.mkiv b/tex/context/base/lang-sla.mkiv
index 479012615..3bcf04c57 100644
--- a/tex/context/base/lang-sla.mkiv
+++ b/tex/context/base/lang-sla.mkiv
@@ -1,6 +1,6 @@
%D \module
%D [ file=lang-sla,
-%D version=2006.09.16,
+%D version=1999.09.13, % 1997.09.03
%D title=\CONTEXT\ Language Macros,
%D subtitle=Slavic Languages,
%D author=Hans Hagen / Tobias Burnus,
@@ -11,7 +11,169 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
+% Todo: replace \'.. by \namedglyph
+
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+%D
+%D \starttabulate[|lB|l|]
+%D \NC Czech \NC Tom Hudec, Petr Sojka \NC \NR
+%D \NC Polish \NC Grzegorz Sapijaszko \NC \NR
+%D \NC Croatian \NC \Zcaron eljko Vrba \NC \NR
+%D \NC Slovenian \NC Mojca Miklavec \NC \NR
+%D \NC Cz and Sk \NC Richard Gabriel \NC \NR
+%D \stoptabulate
+
+% Belarussian, Russian, Ukrainian, Bulgarian, Macedonian,
+% Serbian, Croatian, Slovenian, Czech, Kushubian,
+% Lusatian/Sorbian/Wendish, Polish, Slovak, Albanian,
+% Illyrian, Armenian
+
+\writestatus{loading}{ConTeXt Language Macros / Slavic Languages}
+
+\unprotect
+
+\installlanguage
+ [\s!pl]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\lowerleftsingleninequote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\lowerleftdoubleninequote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!date={\v!day,{.},\ ,\v!month,\ ,\v!year}]
+
+\installlanguage
+ [\s!cs]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=\thickglue--\thickglue\penalty-20\relax, % hh, \relax added
+ \c!rightsentence=\thickglue--\thickglue\penalty-20\relax,
+ \c!leftsubsentence=~---~\penalty-20\relax,
+ \c!rightsubsentence=~---~\penalty-20\relax,
+ \c!leftquote=\lowerleftsingleninequote,
+ \c!rightquote=\upperrightsinglesixquote,
+ \c!leftquotation=\lowerleftdoubleninequote,
+ \c!rightquotation=\upperrightdoublesixquote,
+ \c!date={\v!day,{.\,},\v!month,\ ,\v!year}]
+
+\installlanguage
+ [\s!sk]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\upperleftsinglesixquote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\upperleftdoublesixquote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!date={\v!day,{.\,},\v!month,\ ,\v!year}]
+
+\installlanguage
+ [\s!hr]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\lowerleftsingleninequote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\lowerleftdoubleninequote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!date={\v!day,{.},\ ,\v!month,\ ,\v!year}]
+
+%D The default quotation marks for Slovenian were chosen as
+%D \lowerleftdoubleninequote these ones\upperrightdoublesixquote\
+%D which was probably due to the strong influence computers
+%D had on typesetting, but \rightguillemot these ones\leftguillemot\
+%D are \quotation{more correct}.
+%D
+%D If you still want the other quotation marks, use this:
+%D
+%D \starttyping
+%D \installlanguage
+%D [sl]
+%D [leftquote=\lowerleftsingleninequote,
+%D rightquote=\upperrightsinglesixquote,
+%D leftquotation=\lowerleftdoubleninequote,
+%D rightquotation=\upperrightdoublesixquote]
+%D \stoptyping
+%D
+%D If you disagree with the change, please send an email to Mojca, but
+%D best use some pretty strong arguments because she loves S{\sl love}nia
+%D too much to compromise on this.
+%D
+%D German faces approximately the same problem. I (MM) would prefer to
+%D have something like:
+%D
+%D \starttyping
+%D \mainlanguage[sl][quotationstyle=guillemot|doublequote] % better name needed
+%D \stoptyping
+%D
+%D but users are expected to respect the rules of nice and correct
+%D typography anyway.
+
+\installlanguage
+ [\s!sl]
+ [\c!spacing=\v!packed,
+ \c!leftsentence={\hbox{--~}},
+ \c!rightsentence={\hbox{~--}},
+ \c!leftsubsentence={--},
+ \c!rightsubsentence={--},
+ %\c!leftquote=\lowerleftsingleninequote,
+ %\c!rightquote=\upperrightsinglesixquote,
+ %\c!leftquotation=\lowerleftdoubleninequote,
+ %\c!rightquotation=\upperrightdoublesixquote,
+ \c!leftquote=\guilsingleright,
+ \c!rightquote=\guilsingleleft,
+ \c!leftquotation=\rightguillemot,
+ \c!rightquotation=\leftguillemot,
+ \c!date={\v!day,{.},\ ,\v!month,\ ,\v!year}]
+
+\installlanguage [polish] [\s!pl]
+\installlanguage [czech] [\s!cs]
+\installlanguage [slovak] [\s!sk]
+\installlanguage [croatian] [\s!hr]
+\installlanguage [slovenian] [\s!sl]
+\installlanguage [slovene] [\s!sl] % both possible (mojca: still needed?)
+
+\installlanguage [cz] [\s!cs]
+
+\def\doconvertsloveniancharacters{\dodoconvertcharacters{25}}
+
+\def\sloveniancharacters{\doconvertsloveniancharacters\sloveniancharacter}
+\def\slovenianCharacters{\doconvertsloveniancharacters\slovenianCharacter}
+
+%D Define general-purpose macros for Slovenian character enumerations:
+
+\defineconversion [sloveniancharacter] [\sloveniancharacter]
+\defineconversion [slovenianCharacter] [\slovenianCharacter]
+
+\defineconversion [sloveniancharacters] [\sloveniancharacters]
+\defineconversion [slovenianCharacters] [\slovenianCharacters]
+
+%D Define these as the general character enumeration when
+%D language is Slovenian. If you feel uncomfortable with this,
+%D mail Mojca, since she promised to to take the heat.
+
+\defineconversion [sl] [character] [\sloveniancharacter]
+\defineconversion [sl] [Character] [\slovenianCharacter]
+
+\defineconversion [sl] [characters] [\sloveniancharacters]
+\defineconversion [sl] [Characters] [\slovenianCharacters]
+
+\defineconversion [sl] [a] [\sloveniancharacters]
+\defineconversion [sl] [A] [\slovenianCharacters]
+\defineconversion [sl] [AK] [\smallcapped\sloveniancharacters]
+\defineconversion [sl] [KA] [\smallcapped\sloveniancharacters]
+
\def\sloveniancharacters#1{\ctxlua{converters.alphabetic(\number#1,"sl")}}
\def\slovenianCharacters#1{\ctxlua{converters.Alphabetic(\number#1,"sl")}}
-\endinput
+\protect \endinput
diff --git a/tex/context/base/lang-sla.tex b/tex/context/base/lang-sla.tex
deleted file mode 100644
index 7892123bb..000000000
--- a/tex/context/base/lang-sla.tex
+++ /dev/null
@@ -1,507 +0,0 @@
-%D \module
-%D [ file=lang-sla,
-%D version=1999.09.13, % 1997.09.03
-%D title=\CONTEXT\ Language Macros,
-%D subtitle=Slavic Languages,
-%D author=Hans Hagen / Tobias Burnus,
-%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
-%C
-%C This module is part of the \CONTEXT\ macro||package and is
-%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
-%C details.
-
-% Todo: replace \'.. by \namedglyph
-
-%D The framework of this module is set up by Hans Hagen while
-%D many of the first translations were done by Tobias. Later
-%D on, corrections were made by users. If you have suggestions,
-%D or feel that your name missing here, don't hesitate to send
-%D us an email.
-%D
-%D \starttabulate[|lB|l|]
-%D \NC Czech \NC Tom Hudec, Petr Sojka \NC \NR
-%D \NC Polish \NC Grzegorz Sapijaszko \NC \NR
-%D \NC Croatian \NC \Zcaron eljko Vrba \NC \NR
-%D \NC Slovenian \NC Mojca Miklavec \NC \NR
-%D \NC Cz and Sk \NC Richard Gabriel \NC \NR
-%D \stoptabulate
-
-% Belarussian, Russian, Ukrainian, Bulgarian, Macedonian,
-% Serbian, Croatian, Slovenian, Czech, Kushubian,
-% Lusatian/Sorbian/Wendish, Polish, Slovak, Albanian,
-% Illyrian, Armenian
-
-\writestatus{loading}{ConTeXt Language Macros / Slavic Languages}
-
-\unprotect
-
-% \unexpanded\def\textormathglue#1#2#3% submitted original
-% {\begingroup
-% \scratchdimen=#1\hspaceamount\empty{#3}%
-% \scratchskip=\zeropoint\!!plus.5\scratchdimen\!!minus.3\scratchdimen\relax
-% \ifmmode
-% \mskip#1#2%
-% \else
-% \kern#1\hspaceamount\empty{#3}%
-% \hskip\scratchskip
-% \fi
-% \endgroup}
-
-% actually we could use the new pdftex features
-
-\unexpanded\def\textormathglue#1#2#3% cleaned up one
- {\begingroup
- \ifmmode
- \mskip#1#2%
- \else
- \scratchdimen#1\hspaceamount\empty{#3}%
- \scratchskip\scratchdimen\!!plus.5\scratchdimen\!!minus.3\scratchdimen
- \hskip\scratchskip
- \fi
- \endgroup}
-
-\def\thinglue {\textormathglue+\thinmuskip 1}
-\def\medglue {\textormathglue+\medmuskip 2}
-\def\thickglue{\textormathglue+\thickmuskip3}
-
-\installlanguage
- [\s!pl]
- [\c!spacing=\v!packed,
- \c!leftsentence=---,
- \c!rightsentence=---,
- \c!leftsubsentence=---,
- \c!rightsubsentence=---,
- \c!leftquote=\lowerleftsingleninequote,
- \c!rightquote=\upperrightsingleninequote,
- \c!leftquotation=\lowerleftdoubleninequote,
- \c!rightquotation=\upperrightdoubleninequote,
- \c!date={\v!day,{.},\ ,\v!month,\ ,\v!year},
- \s!mapping={pl0,ec,qx},
- \s!encoding={pl0,ec,qx}]
-
-\installlanguage
- [\s!cs]
- [\c!spacing=\v!packed,
- \c!leftsentence=\thickglue--\thickglue\penalty-20\relax, % hh, \relax added
- \c!rightsentence=\thickglue--\thickglue\penalty-20\relax,
- \c!leftsubsentence=~---~\penalty-20\relax,
- \c!rightsubsentence=~---~\penalty-20\relax,
- \c!leftquote=\lowerleftsingleninequote,
- \c!rightquote=\upperrightsinglesixquote,
- \c!leftquotation=\lowerleftdoubleninequote,
- \c!rightquotation=\upperrightdoublesixquote,
- \c!date={\v!day,{.\,},\v!month,\ ,\v!year},
- \s!mapping={il2,ec},
- \s!encoding={il2,ec}]
-
-\installlanguage
- [\s!sk]
- [\c!spacing=\v!packed,
- \c!leftsentence=---,
- \c!rightsentence=---,
- \c!leftsubsentence=---,
- \c!rightsubsentence=---,
- \c!leftquote=\upperleftsinglesixquote,
- \c!rightquote=\upperrightsingleninequote,
- \c!leftquotation=\upperleftdoublesixquote,
- \c!rightquotation=\upperrightdoubleninequote,
- \c!date={\v!day,{.\,},\v!month,\ ,\v!year},
- \s!mapping={il2,ec},
- \s!encoding={il2,ec}]
-
-\installlanguage
- [\s!hr]
- [\c!spacing=\v!packed,
- \c!leftsentence=---,
- \c!rightsentence=---,
- \c!leftsubsentence=---,
- \c!rightsubsentence=---,
- \c!leftquote=\lowerleftsingleninequote,
- \c!rightquote=\upperrightsingleninequote,
- \c!leftquotation=\lowerleftdoubleninequote,
- \c!rightquotation=\upperrightdoubleninequote,
- \c!date={\v!day,{.},\ ,\v!month,\ ,\v!year},
- \s!mapping=ec,
- \s!encoding=ec]
-
-%D The default quotation marks for Slovenian were chosen as
-%D \lowerleftdoubleninequote these ones\upperrightdoublesixquote\
-%D which was probably due to the strong influence computers
-%D had on typesetting, but \rightguillemot these ones\leftguillemot\
-%D are \quotation{more correct}.
-%D
-%D If you still want the other quotation marks, use this:
-%D
-%D \starttyping
-%D \installlanguage
-%D [sl]
-%D [leftquote=\lowerleftsingleninequote,
-%D rightquote=\upperrightsinglesixquote,
-%D leftquotation=\lowerleftdoubleninequote,
-%D rightquotation=\upperrightdoublesixquote]
-%D \stoptyping
-%D
-%D If you disagree with the change, please send an email to Mojca, but
-%D best use some pretty strong arguments because she loves S{\sl love}nia
-%D too much to compromise on this.
-%D
-%D German faces approximately the same problem. I (MM) would prefer to
-%D have something like:
-%D
-%D \starttyping
-%D \mainlanguage[sl][quotationstyle=guillemot|doublequote] % better name needed
-%D \stoptyping
-%D
-%D but users are expected to respect the rules of nice and correct
-%D typography anyway.
-
-\installlanguage
- [\s!sl]
- [\c!spacing=\v!packed,
- \c!leftsentence={\hbox{--~}},
- \c!rightsentence={\hbox{~--}},
- \c!leftsubsentence={--},
- \c!rightsubsentence={--},
- %\c!leftquote=\lowerleftsingleninequote,
- %\c!rightquote=\upperrightsinglesixquote,
- %\c!leftquotation=\lowerleftdoubleninequote,
- %\c!rightquotation=\upperrightdoublesixquote,
- \c!leftquote=\guilsingleright,
- \c!rightquote=\guilsingleleft,
- \c!leftquotation=\rightguillemot,
- \c!rightquotation=\leftguillemot,
- \c!date={\v!day,{.},\ ,\v!month,\ ,\v!year},
- \s!mapping=ec,
- \s!encoding=ec]
-
-\installlanguage [polish] [\s!pl]
-\installlanguage [czech] [\s!cs]
-\installlanguage [slovak] [\s!sk]
-\installlanguage [croatian] [\s!hr]
-\installlanguage [slovenian] [\s!sl]
-\installlanguage [slovene] [\s!sl] % both possible (mojca: still needed?)
-
-\installlanguage [cz] [\s!cs]
-
-% labels
-
-\setupheadtext [\s!pl] [\v!content=Spis tre\sacute ci]
-\setupheadtext [\s!cs] [\v!content=Obsah]
-\setupheadtext [\s!sk] [\v!content=Obsah]
-\setupheadtext [\s!hr] [\v!content=Sadr\zcaron aj]
-\setupheadtext [\s!sl] [\v!content=Kazalo]
-
-\setupheadtext [\s!pl] [\v!tables=Tabele]
-\setupheadtext [\s!cs] [\v!tables=Tabulky]
-\setupheadtext [\s!sk] [\v!tables=Tabuliek]
-\setupheadtext [\s!hr] [\v!tables=Tablice]
-\setupheadtext [\s!sl] [\v!tables=Tabele]
-
-\setupheadtext [\s!pl] [\v!figures=Ilustracje]
-\setupheadtext [\s!cs] [\v!figures=Obr\aacute zky]
-\setupheadtext [\s!sk] [\v!figures=Obr\aacute zkov]
-\setupheadtext [\s!hr] [\v!figures=Slike]
-\setupheadtext [\s!sl] [\v!figures=Slike]
-
-\setupheadtext [\s!pl] [\v!graphics=Grafika]
-\setupheadtext [\s!cs] [\v!graphics=Grafy]
-\setupheadtext [\s!sk] [\v!graphics=Graf]
-\setupheadtext [\s!hr] [\v!graphics=Slike]
-\setupheadtext [\s!sl] [\v!graphics=Slike]
-
-\setupheadtext [\s!pl] [\v!intermezzi=Intermezza]
-\setupheadtext [\s!cs] [\v!intermezzi=Intermezza]
-\setupheadtext [\s!sk] [\v!intermezzi=Intermezz\aacute]
-\setupheadtext [\s!hr] [\v!intermezzi=Intermeci]
-\setupheadtext [\s!sl] [\v!intermezzi=Intermezzi]
-
-\setupheadtext [\s!pl] [\v!index=Indeks]
-\setupheadtext [\s!cs] [\v!index=Rejst\rcaron\iacute k]
-\setupheadtext [\s!sk] [\v!index=Zoznam]
-\setupheadtext [\s!hr] [\v!index=Indeks]
-\setupheadtext [\s!sl] [\v!index=Stvarno kazalo]
-
-\setupheadtext [\s!pl] [\v!abbreviations=Skr\oacute cenie]
-\setupheadtext [\s!cs] [\v!abbreviations=Zkratky]
-\setupheadtext [\s!sk] [\v!abbreviations=Skratky]
-\setupheadtext [\s!hr] [\v!abbreviations=Kratice]
-\setupheadtext [\s!sl] [\v!abbreviations=Kratice]
-
-\setupheadtext [\s!pl] [\v!logos=Znaki]
-\setupheadtext [\s!cs] [\v!logos=Loga]
-\setupheadtext [\s!sk] [\v!logos=Log\aacute]
-\setupheadtext [\s!hr] [\v!logos=Znakovi]
-\setupheadtext [\s!sl] [\v!logos=Logotipi]
-
-\setupheadtext [\s!pl] [\v!units=Jednostki]
-\setupheadtext [\s!cs] [\v!units=Jednotky]
-\setupheadtext [\s!sk] [\v!units=Jednotky]
-\setupheadtext [\s!hr] [\v!units=Jedinice]
-\setupheadtext [\s!sl] [\v!units=Enote]
-
-%setupheadtext [\s!pl] [pubs=?]
-\setupheadtext [\s!cs] [pubs=Literatura]
-%setupheadtext [\s!sk] [pubs=?]
-\setupheadtext [\s!hr] [pubs=Literatura]
-\setupheadtext [\s!sl] [pubs=Literatura]
-
-\setuplabeltext [\s!pl] [\v!table=Tabela ]
-\setuplabeltext [\s!cs] [\v!table=Tabulka ]
-\setuplabeltext [\s!sk] [\v!table=Tabu\lcaron ka ]
-\setuplabeltext [\s!hr] [\v!table=Tablica ]
-\setuplabeltext [\s!sl] [\v!table=Tabela ]
-
-\setuplabeltext [\s!pl] [\v!figure=Ilustracja ]
-\setuplabeltext [\s!cs] [\v!figure=Obr\aacute zek ]
-\setuplabeltext [\s!sk] [\v!figure=Obr\aacute zok ]
-\setuplabeltext [\s!hr] [\v!figure=Slika ]
-\setuplabeltext [\s!sl] [\v!figure=Slika ]
-
-\setuplabeltext [\s!pl] [\v!intermezzo=Intermezzo ]
-\setuplabeltext [\s!cs] [\v!intermezzo=Intermezzo ]
-\setuplabeltext [\s!sk] [\v!intermezzo=Intermezzo ]
-\setuplabeltext [\s!hr] [\v!intermezzo=Intermeco ]
-\setuplabeltext [\s!sl] [\v!intermezzo=Intermezzo ]
-
-\setuplabeltext [\s!pl] [\v!graphic=Grafika ]
-\setuplabeltext [\s!cs] [\v!graphic=Graf ]
-\setuplabeltext [\s!sk] [\v!graphic=Graf ]
-\setuplabeltext [\s!hr] [\v!graphic=Slika ]
-\setuplabeltext [\s!sl] [\v!graphic=Slika ]
-
-\setuplabeltext [\s!pl] [\v!chapter=] % Rozdzia\l
-\setuplabeltext [\s!cs] [\v!chapter=] % Kapitola
-\setuplabeltext [\s!sk] [\v!chapter=] % Kapitola
-\setuplabeltext [\s!hr] [\v!chapter=] % Poglavlje
-\setuplabeltext [\s!sl] [\v!chapter=] % Poglavje
-
-\setuplabeltext [\s!pl] [\v!section=] % Podrozdzia\l
-\setuplabeltext [\s!cs] [\v!section=] % Sekce
-\setuplabeltext [\s!sk] [\v!section=] % Sekcia
-\setuplabeltext [\s!hr] [\v!section=] % Odjeljak
-\setuplabeltext [\s!sl] [\v!section=]
-
-\setuplabeltext [\s!pl] [\v!subsection=]
-\setuplabeltext [\s!cs] [\v!subsection=] % Podsekce
-\setuplabeltext [\s!sk] [\v!subsection=] % Podsekcia
-\setuplabeltext [\s!hr] [\v!subsection=] % Pododjeljak
-\setuplabeltext [\s!sl] [\v!subsection=]
-
-\setuplabeltext [\s!pl] [\v!subsubsection=]
-\setuplabeltext [\s!cs] [\v!subsubsection=] % Podpodsekce
-\setuplabeltext [\s!sk] [\v!subsubsection=] % Podpodsekcia
-\setuplabeltext [\s!hr] [\v!subsubsection=] % Podpododjeljak
-\setuplabeltext [\s!sl] [\v!subsubsection=]
-
-\setuplabeltext [\s!pl] [\v!subsubsubsection=]
-\setuplabeltext [\s!cs] [\v!subsubsubsection=] % Podpodpodsekce
-\setuplabeltext [\s!sk] [\v!subsubsubsection=] % Podpodpodsekcia
-\setuplabeltext [\s!hr] [\v!subsubsubsection=] % Podpodpododjeljak
-\setuplabeltext [\s!sl] [\v!subsubsubsection=]
-
-\setuplabeltext [\s!pl] [\v!appendix=] % Dodatek
-\setuplabeltext [\s!cs] [\v!appendix=] % P\rcaron\iacute loha
-\setuplabeltext [\s!sk] [\v!appendix=] % Pr\iacute loha
-\setuplabeltext [\s!hr] [\v!appendix=] % Dodatak
-\setuplabeltext [\s!sl] [\v!appendix=] % Dodatek
-
-\setuplabeltext [\s!pl] [\v!part=Ust\eogonek p ]
-\setuplabeltext [\s!cs] [\v!part=\Ccaron \aacute st ]
-\setuplabeltext [\s!sk] [\v!part=\Ccaron as\tcaron{} ]
-\setuplabeltext [\s!hr] [\v!part=Dio ]
-\setuplabeltext [\s!sl] [\v!part=Del ]
-
-\setuplabeltext [\s!pl] [\v!line=wiersz ]
-\setuplabeltext [\s!cs] [\v!line=\rcaron\aacute dek ]
-\setuplabeltext [\s!sk] [\v!line=riadok ]
-\setuplabeltext [\s!hr] [\v!line=redak ]
-\setuplabeltext [\s!sl] [\v!line=vrstica ]
-
-\setuplabeltext [\s!pl] [\v!lines=wiersze ]
-\setuplabeltext [\s!cs] [\v!lines=\rcaron\aacute dky ]
-\setuplabeltext [\s!sk] [\v!lines=riadky ]
-\setuplabeltext [\s!hr] [\v!lines=retci ]
-\setuplabeltext [\s!sl] [\v!lines=vrstice ]
-
-\setuplabeltext [\s!pl] [\v!january=stycznia]
-\setuplabeltext [\s!pl] [\v!february=lutego]
-\setuplabeltext [\s!pl] [\v!march=marca]
-\setuplabeltext [\s!pl] [\v!april=kwietnia]
-\setuplabeltext [\s!pl] [\v!may=maja]
-\setuplabeltext [\s!pl] [\v!june=czerwca]
-\setuplabeltext [\s!pl] [\v!july=lipca]
-\setuplabeltext [\s!pl] [\v!august=sierpnia]
-\setuplabeltext [\s!pl] [\v!september=wrze\sacute nia]
-\setuplabeltext [\s!pl] [\v!october=pa\zacute dziernika]
-\setuplabeltext [\s!pl] [\v!november=listopada]
-\setuplabeltext [\s!pl] [\v!december=grudnia]
-
-\setuplabeltext [\s!cs] [\v!january=ledna]
-\setuplabeltext [\s!cs] [\v!february=\uacute nora]
-\setuplabeltext [\s!cs] [\v!march=b\rcaron ezna]
-\setuplabeltext [\s!cs] [\v!april=dubna]
-\setuplabeltext [\s!cs] [\v!may=kv\ecaron tna]
-\setuplabeltext [\s!cs] [\v!june=\ccaron ervna]
-\setuplabeltext [\s!cs] [\v!july=\ccaron ervence]
-\setuplabeltext [\s!cs] [\v!august=srpna]
-\setuplabeltext [\s!cs] [\v!september=z\aacute\rcaron\iacute{}]
-\setuplabeltext [\s!cs] [\v!october=\rcaron\iacute jna]
-\setuplabeltext [\s!cs] [\v!november=listopadu]
-\setuplabeltext [\s!cs] [\v!december=prosince]
-
-\setuplabeltext [\s!sk] [\v!january=janu\aacute ra]
-\setuplabeltext [\s!sk] [\v!february=febru\aacute ra]
-\setuplabeltext [\s!sk] [\v!march=marca]
-\setuplabeltext [\s!sk] [\v!april=apr\iacute la]
-\setuplabeltext [\s!sk] [\v!may=m\aacute ja]
-\setuplabeltext [\s!sk] [\v!june=j\uacute na]
-\setuplabeltext [\s!sk] [\v!july=j\uacute la]
-\setuplabeltext [\s!sk] [\v!august=augusta]
-\setuplabeltext [\s!sk] [\v!september=septembra]
-\setuplabeltext [\s!sk] [\v!october=okt\oacute bra]
-\setuplabeltext [\s!sk] [\v!november=novembra]
-\setuplabeltext [\s!sk] [\v!december=decembra]
-
-\setuplabeltext [\s!hr] [\v!january=sije\ccaron anj]
-\setuplabeltext [\s!hr] [\v!february=velja\ccaron a]
-\setuplabeltext [\s!hr] [\v!march=o\zcaron ujak]
-\setuplabeltext [\s!hr] [\v!april=travanj]
-\setuplabeltext [\s!hr] [\v!may=svibanj]
-\setuplabeltext [\s!hr] [\v!june=lipanj]
-\setuplabeltext [\s!hr] [\v!july=srpanj]
-\setuplabeltext [\s!hr] [\v!august=kolovoz]
-\setuplabeltext [\s!hr] [\v!september=rujan]
-\setuplabeltext [\s!hr] [\v!october=listopad]
-\setuplabeltext [\s!hr] [\v!november=studeni]
-\setuplabeltext [\s!hr] [\v!december=prosinac]
-
-\setuplabeltext [\s!sl] [\v!january=januar]
-\setuplabeltext [\s!sl] [\v!february=februar]
-\setuplabeltext [\s!sl] [\v!march=marec]
-\setuplabeltext [\s!sl] [\v!april=april]
-\setuplabeltext [\s!sl] [\v!may=maj]
-\setuplabeltext [\s!sl] [\v!june=junij]
-\setuplabeltext [\s!sl] [\v!july=julij]
-\setuplabeltext [\s!sl] [\v!august=avgust]
-\setuplabeltext [\s!sl] [\v!september=september]
-\setuplabeltext [\s!sl] [\v!october=oktober]
-\setuplabeltext [\s!sl] [\v!november=november]
-\setuplabeltext [\s!sl] [\v!december=december]
-
-\setuplabeltext [\s!pl] [\v!sunday=niedziela]
-\setuplabeltext [\s!pl] [\v!monday=poniedzia\lstroke ek]
-\setuplabeltext [\s!pl] [\v!tuesday=wtorek]
-\setuplabeltext [\s!pl] [\v!wednesday=\sacute roda]
-\setuplabeltext [\s!pl] [\v!thursday=czwartek]
-\setuplabeltext [\s!pl] [\v!friday=pi\aogonek tek]
-\setuplabeltext [\s!pl] [\v!saturday=sobota]
-
-\setuplabeltext [\s!cs] [\v!sunday=ned\ecaron le]
-\setuplabeltext [\s!cs] [\v!monday=pond\ecaron l\iacute]
-\setuplabeltext [\s!cs] [\v!tuesday=\uacute ter\yacute]
-\setuplabeltext [\s!cs] [\v!wednesday=st\rcaron eda]
-\setuplabeltext [\s!cs] [\v!thursday=\ccaron tvrtek]
-\setuplabeltext [\s!cs] [\v!friday=p\aacute tek]
-\setuplabeltext [\s!cs] [\v!saturday=sobota]
-
-% Slovakian missing
-
-\setuplabeltext [\s!hr] [\v!sunday=nedjelja]
-\setuplabeltext [\s!hr] [\v!monday=ponedjeljak]
-\setuplabeltext [\s!hr] [\v!tuesday=utorak]
-\setuplabeltext [\s!hr] [\v!wednesday=srijeda]
-\setuplabeltext [\s!hr] [\v!thursday=\ccaron etvrtak]
-\setuplabeltext [\s!hr] [\v!friday=petak]
-\setuplabeltext [\s!hr] [\v!saturday=subota]
-
-\setuplabeltext [\s!sl] [\v!sunday=nedelja]
-\setuplabeltext [\s!sl] [\v!monday=ponedeljek]
-\setuplabeltext [\s!sl] [\v!tuesday=torek]
-\setuplabeltext [\s!sl] [\v!wednesday=sreda]
-\setuplabeltext [\s!sl] [\v!thursday=\ccaron etrtek]
-\setuplabeltext [\s!sl] [\v!friday=petek]
-\setuplabeltext [\s!sl] [\v!saturday=sobota]
-
-%D Rather new ...
-%\installlanguage
-% [\s!cs]
-% [\c!spacing=\v!packed,
-% \c!leftsentence=---,
-% \c!rightsentence=---,
-% \c!leftsubsentence=---,
-% \c!rightsubsentence=---,
-% \c!leftquote=\lowerleftsingleninequote,
-% \c!rightquote=\upperrightsinglesixquote,
-% \c!leftquotation=\lowerleftdoubleninequote,
-% \c!rightquotation=\upperrightdoublesixquote,
-% \c!date={\v!day,\ ,\v!month,\ ,\v!year}]
-
-% Polish missing
-
-\setuplabeltext [\s!cs] [\v!page=strana ]
-\setuplabeltext [\s!cs] [\v!atpage=na stran\ecaron\ ]
-\setuplabeltext [\s!cs] [\v!hencefore=viz v\yacute\scaron e ]
-\setuplabeltext [\s!cs] [\v!hereafter=viz n\iacute\zcaron e ]
-\setuplabeltext [\s!cs] [\v!see=viz ]
-
-% Slovakian missing
-
-\setuplabeltext [\s!hr] [\v!page=stranica ]
-\setuplabeltext [\s!hr] [\v!atpage=na stranici ]
-\setuplabeltext [\s!hr] [\v!hencefore=vidi gore ]
-\setuplabeltext [\s!hr] [\v!hereafter=vidi ispod ]
-\setuplabeltext [\s!hr] [\v!see=vidi ]
-
-\setuplabeltext [\s!sl] [\v!page=stran ]
-\setuplabeltext [\s!sl] [\v!atpage=na strani ]
-\setuplabeltext [\s!sl] [\v!hencefore=glej zgoraj ]
-\setuplabeltext [\s!sl] [\v!hereafter=glej spodaj ]
-\setuplabeltext [\s!sl] [\v!see=glej ]
-
-%D \ShowAllLanguageValues [\s!pl] [polish] {Polish} {furniture}
-%D \ShowAllLanguageValues [\s!cs] [czech] {Czech} {mate}
-%D \ShowAllLanguageValues [\s!sk] [slovak] {Slovakian} {face}
-%D \ShowAllLanguageValues [\s!hr] [croatian] {Croatian} {heartthrob}
-%D \ShowAllLanguageValues [\s!sl] [slovenian] {Slovenian} {mountains}
-
-%D A present from Brooks Moses and Hans Hagen for Mojca Miklavec:
-
-\def\doconvertsloveniancharacters{\dodoconvertcharacters{25}}
-
-\def\sloveniancharacters{\doconvertsloveniancharacters\sloveniancharacter}
-\def\slovenianCharacters{\doconvertsloveniancharacters\slovenianCharacter}
-
-%D Define general-purpose macros for Slovenian character enumerations:
-
-\defineconversion [sloveniancharacter] [\sloveniancharacter]
-\defineconversion [slovenianCharacter] [\slovenianCharacter]
-
-\defineconversion [sloveniancharacters] [\sloveniancharacters]
-\defineconversion [slovenianCharacters] [\slovenianCharacters]
-
-%D Define these as the general character enumeration when
-%D language is Slovenian. If you feel uncomfortable with this,
-%D mail Mojca, since she promised to to take the heat.
-
-\defineconversion [sl] [character] [\sloveniancharacter]
-\defineconversion [sl] [Character] [\slovenianCharacter]
-
-\defineconversion [sl] [characters] [\sloveniancharacters]
-\defineconversion [sl] [Characters] [\slovenianCharacters]
-
-\defineconversion [sl] [a] [\sloveniancharacters]
-\defineconversion [sl] [A] [\slovenianCharacters]
-\defineconversion [sl] [AK] [\smallcapped\sloveniancharacters]
-\defineconversion [sl] [KA] [\smallcapped\sloveniancharacters]
-
-% this will become more generic : \languagecharacters{sl}{..}
-
-\let\sloveniancharacter\gobbleoneargument
-\let\slovenianCharacter\gobbleoneargument
-
-%D Plugins:
-
-\loadmarkfile{lang-sla}
-
-\protect \endinput
diff --git a/tex/context/base/lang-txt.lua b/tex/context/base/lang-txt.lua
new file mode 100644
index 000000000..05e6f03bf
--- /dev/null
+++ b/tex/context/base/lang-txt.lua
@@ -0,0 +1,2421 @@
+if not modules then modules = { } end modules ['lang-txt'] = {
+ version = 1.001,
+ comment = "companion to lang-lab.mkiv",
+ author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
+ copyright = "PRAGMA ADE / ConTeXt Development Team",
+ license = "see context related readme files"
+}
+
+-- The content of this file is derived from the mkii lang-* files and
+-- early 2011 the mkii labels are generated from this file. The
+-- translations have been collected over years by users, using named
+-- glyphs. This file uses utf exclusively.
+
+-- For the moment we keep this table in memory. In the future we can then
+-- enable labels.
+
+-- thinspace == sixperemspace = 0x2006
+-- print("!"..utf.char(0x2006).."!")
+
+languages = languages or { }
+local languages = languages
+
+languages.data = languages.data or utilities.storage.allocate { }
+local data = languages.data
+
+data.labels={
+ functions={
+ Pr={
+ labels={
+ en="Pr",
+ },
+ },
+ arccos={
+ labels={
+ en="arccos",
+ pl="arc\\sixperemspace cos",
+ },
+ },
+ arcctg={
+ labels={
+ en="arccot",
+ pl="arc\\sixperemspace ctg",
+ },
+ },
+ arcsin={
+ labels={
+ en="arcsin",
+ pl="arc\\sixperemspace sin",
+ },
+ },
+ arctan={
+ labels={
+ en="arctan",
+ pl="arc\\sixperemspace tg",
+ },
+ },
+ arctg={
+ labels={
+ en="arctan",
+ pl="arc\\sixperemspace tg",
+ },
+ },
+ arg={
+ labels={
+ en="arg",
+ },
+ },
+ cos={
+ labels={
+ en="cos",
+ },
+ },
+ cosh={
+ labels={
+ en="cosh",
+ },
+ },
+ cot={
+ labels={
+ en="cot",
+ pl="ctg",
+ },
+ },
+ coth={
+ labels={
+ en="coth",
+ },
+ },
+ csc={
+ labels={
+ en="csc",
+ },
+ },
+ ctg={
+ labels={
+ en="cot",
+ pl="ctg",
+ },
+ },
+ deg={
+ labels={
+ en="deg",
+ },
+ },
+ det={
+ labels={
+ en="det",
+ },
+ },
+ dim={
+ labels={
+ en="dim",
+ },
+ },
+ exp={
+ labels={
+ en="exp",
+ },
+ },
+ gcd={
+ labels={
+ en="gcd",
+ nl="ggd",
+ },
+ },
+ hom={
+ labels={
+ en="hom",
+ },
+ },
+ inf={
+ labels={
+ en="inf",
+ },
+ },
+ injlim={
+ labels={
+ en="inj\\sixperemspace lim",
+ },
+ },
+ ker={
+ labels={
+ en="ker",
+ },
+ },
+ lcm={
+ labels={
+ en="lcm",
+ nl="kgv",
+ },
+ },
+ lg={
+ labels={
+ en="lg",
+ },
+ },
+ lim={
+ labels={
+ en="lim",
+ },
+ },
+ liminf={
+ labels={
+ en="lim\\sixperemspace inf",
+ },
+ },
+ limsup={
+ labels={
+ en="lim\\sixperemspace sup",
+ },
+ },
+ ln={
+ labels={
+ en="ln",
+ },
+ },
+ log={
+ labels={
+ en="log",
+ },
+ },
+ max={
+ labels={
+ en="max",
+ },
+ },
+ median={
+ labels={
+ en="median",
+ },
+ },
+ min={
+ labels={
+ en="min",
+ },
+ },
+ mod={
+ labels={
+ en="mod",
+ },
+ },
+ projlim={
+ labels={
+ en="proj\\sixperemspace lim",
+ },
+ },
+ sec={
+ labels={
+ en="sec",
+ },
+ },
+ sin={
+ labels={
+ en="sin",
+ },
+ },
+ sinh={
+ labels={
+ en="sinh",
+ },
+ },
+ sup={
+ labels={
+ en="sup",
+ },
+ },
+ tan={
+ labels={
+ en="tan",
+ pl="tg",
+ },
+ },
+ tanh={
+ labels={
+ en="tanh",
+ },
+ },
+ tg={
+ labels={
+ en="tan",
+ pl="tg",
+ },
+ },
+ },
+ texts={
+ ["and"]={
+ labels={
+ af="",
+ ca="",
+ cs="",
+ da="",
+ de="und",
+ en="and",
+ es="",
+ fi="",
+ fr="",
+ gr="",
+ hr="",
+ hu="",
+ it="",
+ la="",
+ lt="",
+ nb="",
+ nl="en",
+ nn="",
+ pl="",
+ pt="",
+ ro="",
+ ru="",
+ sk="",
+ sl="",
+ sv="",
+ tk="",
+ tr="",
+ ua="",
+ vi="",
+ },
+ },
+ appendix={
+ hidden=true,
+ labels={
+ af="Bylae ",
+ ar="ملحق ",
+ ca="Apèndix ",
+ cn="附录",
+ cs="Příloha ",
+ da="Bilag ",
+ de="Anhang ",
+ en="Appendix ",
+ es="Apéndice ",
+ fi="",
+ fr="Annexe ",
+ gr="Παράρτημα",
+ hr="Dodatak ",
+ hu="",
+ it="",
+ ja="付録",
+ la="",
+ lt="",
+ nb="Tillegg ",
+ nl="",
+ nn="Tillegg ",
+ pl="Dodatek ",
+ pt="",
+ ro="",
+ ru="",
+ sk="Príloha ",
+ sl="Dodatek ",
+ sv="",
+ tk="Goşmaça",
+ tr="",
+ ua="",
+ vi="",
+ },
+ },
+ april={
+ labels={
+ af="april",
+ ar="أبريل",
+ ["ar-dz"]="أفريل",
+ ["ar-sy"]="نيسان",
+ ca="abril",
+ cn="四月",
+ cs="dubna",
+ da="april",
+ de="April",
+ en="April",
+ es="abril",
+ fi="huhtikuu",
+ fr="avril",
+ gr="Απρίλιος",
+ hr="travanj",
+ hu="április",
+ it="aprile",
+ ja="4",
+ la="Aprilis",
+ lt="balandžio",
+ nb="april",
+ nl="april",
+ nn="april",
+ pl="kwietnia",
+ pt="abril",
+ ro="aprilie",
+ ru="апреля",
+ sk="apríla",
+ sl="april",
+ sv="april",
+ tk="aprel",
+ tr="nisan",
+ ua="квітня",
+ vi="tháng tư",
+ },
+ },
+ ["april:mnem"]={
+ labels={
+ af="",
+ ca="",
+ cs="",
+ da="",
+ de="",
+ en="apr",
+ es="",
+ fi="",
+ fr="",
+ gr="",
+ hr="",
+ hu="",
+ it="",
+ la="",
+ lt="apr",
+ nb="april",
+ nl="",
+ nn="april",
+ pl="",
+ pt="",
+ ro="",
+ ru="",
+ sk="",
+ sl="",
+ sv="",
+ tk="",
+ tr="",
+ ua="",
+ vi="",
+ },
+ },
+ atpage={
+ labels={
+ af="",
+ ar="في صفحة ",
+ ca="",
+ cs="na straně ",
+ da="på side ",
+ de="auf Seite ",
+ en="at page ",
+ es="",
+ fi="",
+ fr="à la page ",
+ gr="",
+ hr="na stranici ",
+ hu="",
+ it="a pagina ",
+ la="",
+ lt="puslapyje ",
+ nb="på side ",
+ nl="op pagina ",
+ nn="på side ",
+ pl="",
+ pt="",
+ ro="",
+ ru="наspaceстраницеspace",
+ sk="",
+ sl="na strani ",
+ sv="på sida ",
+ tk="",
+ tr="",
+ ua="наspaceсторінціspace",
+ vi="",
+ },
+ },
+ august={
+ labels={
+ af="augustus",
+ ar="أغسطس",
+ ["ar-dz"]="أوت",
+ ["ar-ma"]="غشت",
+ ["ar-sy"]="آب",
+ ca="agost",
+ cn="八月",
+ cs="srpna",
+ da="august",
+ de="August",
+ en="August",
+ es="agosto",
+ fi="elokuu",
+ fr="aoât",
+ gr="Αύγουστος",
+ hr="kolovoz",
+ hu="augusztus",
+ it="agosto",
+ ja="8",
+ la="Augustus",
+ lt="rugpjūčio",
+ nb="august",
+ nl="augustus",
+ nn="august",
+ pl="sierpnia",
+ pt="agosto",
+ ro="august",
+ ru="августа",
+ sk="augusta",
+ sl="avgust",
+ sv="augusti",
+ tk="awgust",
+ tr="ağustos",
+ ua="серпня",
+ vi="tháng tám",
+ },
+ },
+ ["august:mnem"]={
+ labels={
+ af="",
+ ca="",
+ cs="",
+ da="",
+ de="",
+ en="aug",
+ es="",
+ fi="",
+ fr="",
+ gr="",
+ hr="",
+ hu="",
+ it="",
+ la="",
+ lt="aug",
+ nb="aug.",
+ nl="",
+ nn="aug.",
+ pl="",
+ pt="",
+ ro="",
+ ru="",
+ sk="",
+ sl="",
+ sv="",
+ tk="",
+ tr="",
+ ua="",
+ vi="",
+ },
+ },
+ chapter={
+ hidden=true,
+ labels={
+ af="Hoofstuk ",
+ ar="باب ",
+ ca="Capítol ",
+ cn={"第","章"},
+ cs="Kapitola ",
+ da="",
+ de="Kapitel ",
+ en="Chapter ",
+ es="Capítulo ",
+ fi="",
+ fr="Chapitre ",
+ gr="Κεφάλαιο",
+ hr="Poglavlje ",
+ hu=",. fejezet:",
+ it="",
+ ja={"第","章"},
+ la="",
+ lt="",
+ nb="",
+ nl="",
+ nn="",
+ pl="Rozdział ",
+ pt="",
+ ro="",
+ ru="",
+ sk="Kapitola ",
+ sl="Poglavje ",
+ sv="",
+ tk="Bap",
+ tr="",
+ ua="",
+ vi="Chương ",
+ },
+ },
+ continued={
+ labels={
+ af="",
+ ca="",
+ cs="",
+ da="",
+ de="",
+ en=" (continued)",
+ es="",
+ fi="",
+ fr="",
+ gr="",
+ hr="",
+ hu="",
+ it="",
+ la="",
+ lt="",
+ nb="",
+ nl=" (vervolgd)",
+ nn="",
+ pl="",
+ pt="",
+ ro="",
+ ru="",
+ sk="",
+ sl="",
+ sv="",
+ tk="",
+ tr="",
+ ua="",
+ vi="",
+ },
+ },
+ december={
+ labels={
+ af="desember",
+ ar="ديسمبر",
+ ["ar-ma"]="دجنبر",
+ ["ar-sy"]="كانون الأول",
+ ca="desembre",
+ cn="十二月",
+ cs="prosince",
+ da="december",
+ de="Dezember",
+ en="December",
+ es="diciembre",
+ fi="joulukuu",
+ fr="décembre",
+ gr="Δεκέμβριος",
+ hr="prosinac",
+ hu="december",
+ it="dicembre",
+ ja="12",
+ la="December",
+ lt="gruodžio",
+ nb="desember",
+ nl="december",
+ nn="desember",
+ pl="grudnia",
+ pt="dezembro",
+ ro="decembrie",
+ ru="декабря",
+ sk="decembra",
+ sl="december",
+ sv="december",
+ tk="dekabr",
+ tr="aralık",
+ ua="грудня",
+ vi="tháng mười hai",
+ },
+ },
+ ["december:mnem"]={
+ labels={
+ af="",
+ ca="",
+ cs="",
+ da="",
+ de="",
+ en="dec",
+ es="",
+ fi="",
+ fr="",
+ gr="",
+ hr="",
+ hu="",
+ it="",
+ la="",
+ lt="dec",
+ nb="des.",
+ nl="",
+ nn="des.",
+ pl="",
+ pt="",
+ ro="",
+ ru="",
+ sk="",
+ sl="",
+ sv="",
+ tk="",
+ tr="",
+ ua="",
+ vi="",
+ },
+ },
+ february={
+ labels={
+ af="februarie",
+ ar="فبراير",
+ ["ar-dz"]="فيفري",
+ ["ar-sy"]="شباط",
+ ca="febrer",
+ cn="二月",
+ cs="února",
+ da="februar",
+ de="Februar",
+ en="February",
+ es="febrero",
+ fi="helmikuu",
+ fr="février",
+ gr="Φεβρουάριος",
+ hr="veljača",
+ hu="február",
+ it="febbraio",
+ ja="2",
+ la="Februarius",
+ lt="vasario",
+ nb="februar",
+ nl="februari",
+ nn="februar",
+ pl="lutego",
+ pt="fevereiro",
+ ro="februarie",
+ ru="февраля",
+ sk="februára",
+ sl="februar",
+ sv="februari",
+ tk="fewral",
+ tr="Şubat",
+ ua="лютого",
+ vi="tháng hai",
+ },
+ },
+ ["february:mnem"]={
+ labels={
+ af="",
+ ca="",
+ cs="",
+ da="",
+ de="",
+ en="feb",
+ es="",
+ fi="",
+ fr="",
+ gr="",
+ hr="",
+ hu="",
+ it="",
+ la="",
+ lt="feb",
+ nb="feb.",
+ nl="",
+ nn="feb.",
+ pl="",
+ pt="",
+ ro="",
+ ru="",
+ sk="",
+ sl="",
+ sv="",
+ tk="",
+ tr="",
+ ua="",
+ vi="",
+ },
+ },
+ figure={
+ labels={
+ af="Figuur ",
+ ar="شكل ",
+ ca="Figura ",
+ cn="图",
+ cs="Obrázek ",
+ da="Figur ",
+ de="Abbildung ",
+ en="Figure ",
+ es="Ilustración ",
+ fi="Kuva ",
+ fr="Figure ",
+ gr="Σχήμα",
+ hr="Slika ",
+ hu=",. ábra:",
+ it="Fig. ",
+ ja="図",
+ la="Imago ",
+ lt=", pav.",
+ nb="Figur ",
+ nl="Figuur ",
+ nn="Figur ",
+ pl="Ilustracja ",
+ pt="Figura ",
+ ro="Figura ",
+ ru="Рисунокspace",
+ sk="Obrázok ",
+ sl="Slika ",
+ sv="Figur ",
+ tk="Surat",
+ tr="Şekil ",
+ ua="Малюнокspace",
+ vi="Hình ",
+ },
+ },
+ friday={
+ labels={
+ af="vrydag",
+ ar="الجمعة",
+ ca="divendres",
+ cn="星期五",
+ cs="pátek",
+ da="fredag",
+ de="Freitag",
+ en="Friday",
+ es="viernes",
+ fi="perjantai",
+ fr="vendredi",
+ gr="Παρασκευή",
+ hr="petak",
+ hu="péntek",
+ it="venerdì",
+ ja="金曜日",
+ la="Dies Veneris",
+ lt="penktadienis",
+ nb="fredag",
+ nl="vrijdag",
+ nn="fredag",
+ pl="piątek",
+ pt="sexta-feira",
+ ro="vineri",
+ ru="пятница",
+ sk="",
+ sl="petek",
+ sv="fredag",
+ tk="bäşinji gün",
+ tr="cuma",
+ ua="п'ятниця",
+ vi="thứ sáu",
+ },
+ },
+ graphic={
+ labels={
+ af="Grafiek ",
+ ar="رسم ",
+ ca="Gràfica ",
+ cn="插图",
+ cs="Graf ",
+ da="Grafik ",
+ de="Graphik ",
+ en="Graphic ",
+ es="Gráfico ",
+ fi="Grafiikka ",
+ fr="Illustration ",
+ gr="Γραφικό",
+ hr="Slika ",
+ hu=",. kép:",
+ it="Grafico ",
+ ja="イラスト",
+ la="Typus ",
+ lt="Graphic ",
+ nb="Bilde ",
+ nl="Grafiek ",
+ nn="Bilete ",
+ pl="Grafika ",
+ pt="Gráfico ",
+ ro="Graficul ",
+ ru="Графикspace",
+ sk="Graf ",
+ sl="Slika ",
+ sv="Grafik ",
+ tk="Grafik",
+ tr="Grafik",
+ ua="Графикspace",
+ vi="Đồ thị",
+ },
+ },
+ hencefore={
+ labels={
+ af="",
+ ar="كما وضحنا سابقا",
+ ca="",
+ cs="viz výše",
+ da="se foroven",
+ de="siehe oben",
+ en="as we show above",
+ es="",
+ fi="",
+ fr="ci-dessus",
+ gr="",
+ hr="vidi gore",
+ hu="",
+ it="come mostrato sopra",
+ la="",
+ lt="kaip parodyta aukščiau",
+ nb="som vist over",
+ nl="hierboven",
+ nn="som vist over",
+ pl="",
+ pt="",
+ ro="",
+ ru="см.spaceвыше",
+ sk="",
+ sl="glej zgoraj",
+ sv="se ovan",
+ tk="",
+ tr="",
+ ua="якspaceпоказаноspaceвище",
+ vi="",
+ },
+ },
+ hereafter={
+ labels={
+ af="",
+ ar="كما نوضح لاحقا",
+ ca="",
+ cs="viz níže",
+ da="se forneden",
+ de="siehe unten",
+ en="as we show below",
+ es="",
+ fi="",
+ fr="ci-dessous",
+ gr="",
+ hr="vidi ispod",
+ hu="",
+ it="come mostrato sotto",
+ la="",
+ lt="kaip parodyta žemiau",
+ nb="som vist under",
+ nl="hieronder",
+ nn="som vist under",
+ pl="",
+ pt="",
+ ro="",
+ ru="см.spaceниже",
+ sk="",
+ sl="glej spodaj",
+ sv="se nedan",
+ tk="",
+ tr="",
+ ua="якspaceпоказаноspaceнижче",
+ vi="",
+ },
+ },
+ intermezzo={
+ labels={
+ af="Intermezzo ",
+ ar="فسحة ",
+ ca="Intermedi ",
+ cn="퉣",
+ cs="Intermezzo ",
+ da="Intermezzo ",
+ de="Intermezzo ",
+ en="Intermezzo ",
+ es="Intermedio ",
+ fi="Intermezzo ",
+ fr="Intermède ",
+ gr="Παύση",
+ hr="Intermeco ",
+ hu=",. intermezzo:",
+ it="Intermezzo ",
+ ja="間奏曲",
+ la="Intermissum ",
+ lt="Intermezzo ",
+ nb="Intermesso ",
+ nl="Intermezzo ",
+ nn="Intermesso ",
+ pl="Intermezzo ",
+ pt="Intermédio ",
+ ro="Intermezzo ",
+ ru="Вставкаspace",
+ sk="Intermezzo ",
+ sl="Intermezzo ",
+ sv="Intermezzo ",
+ tk="Arakesme",
+ tr="",
+ ua="Вставкаspace",
+ vi="intermezzo",
+ },
+ },
+ january={
+ labels={
+ af="januarie",
+ ar="يناير",
+ ["ar-dz"]="جانفي",
+ ["ar-sy"]="كانون الثاني",
+ ca="gener",
+ cn="一月",
+ cs="ledna",
+ da="januar",
+ de="Januar",
+ en="January",
+ es="enero",
+ fi="tammikuu",
+ fr="janvier",
+ gr="Ιανουάριος",
+ hr="siječanj",
+ hu="január",
+ it="gennaio",
+ ja="1",
+ la="Ianuarius",
+ lt="sausio",
+ nb="januar",
+ nl="januari",
+ nn="januar",
+ pl="stycznia",
+ pt="janeiro",
+ ro="ianuarie",
+ ru="января",
+ sk="januára",
+ sl="januar",
+ sv="januari",
+ tk="ýanwar",
+ tr="ocak",
+ ua="січня",
+ vi="tháng giêng",
+ },
+ },
+ ["january:mnem"]={
+ labels={
+ af="",
+ ca="",
+ cs="",
+ da="",
+ de="",
+ en="jan",
+ es="",
+ fi="",
+ fr="",
+ gr="",
+ hr="",
+ hu="",
+ it="",
+ la="",
+ lt="jan",
+ nb="jan.",
+ nl="",
+ nn="jan.",
+ pl="",
+ pt="",
+ ro="",
+ ru="",
+ sk="",
+ sl="",
+ sv="",
+ tk="",
+ tr="",
+ ua="",
+ vi="",
+ },
+ },
+ july={
+ labels={
+ af="julie",
+ ar="يوليو",
+ ["ar-dz"]="جويلة",
+ ["ar-ma"]="يوليوز",
+ ["ar-sy"]="تموز",
+ ca="juliol",
+ cn="七月",
+ cs="července",
+ da="juli",
+ de="Juli",
+ en="July",
+ es="julio",
+ fi="heinäkuu",
+ fr="juillet",
+ gr="Ιούλιος",
+ hr="srpanj",
+ hu="július",
+ it="luglio",
+ ja="7",
+ la="Iulius",
+ lt="liepos",
+ nb="juli",
+ nl="juli",
+ nn="juli",
+ pl="lipca",
+ pt="julho",
+ ro="iulie",
+ ru="июля",
+ sk="júla",
+ sl="julij",
+ sv="juli",
+ tk="iýul",
+ tr="temmuz",
+ ua="липня",
+ vi="tháng bảy",
+ },
+ },
+ ["july:mnem"]={
+ labels={
+ af="",
+ ca="",
+ cs="",
+ da="",
+ de="",
+ en="jul",
+ es="",
+ fi="",
+ fr="",
+ gr="",
+ hr="",
+ hu="",
+ it="",
+ la="",
+ lt="jul",
+ nb="juli",
+ nl="",
+ nn="juli",
+ pl="",
+ pt="",
+ ro="",
+ ru="",
+ sk="",
+ sl="",
+ sv="",
+ tk="",
+ tr="",
+ ua="",
+ vi="",
+ },
+ },
+ june={
+ labels={
+ af="junie",
+ ar="يونيو",
+ ["ar-dz"]="جوان",
+ ["ar-sy"]="حزيران",
+ ca="juny",
+ cn="六月",
+ cs="června",
+ da="juni",
+ de="Juni",
+ en="June",
+ es="junio",
+ fi="kesäkuu",
+ fr="juin",
+ gr="Ιούνιος",
+ hr="lipanj",
+ hu="június",
+ it="giugno",
+ ja="6",
+ la="Iunius",
+ lt="birželio",
+ nb="juni",
+ nl="juni",
+ nn="juni",
+ pl="czerwca",
+ pt="junho",
+ ro="iunie",
+ ru="июня",
+ sk="júna",
+ sl="junij",
+ sv="juni",
+ tk="iýun",
+ tr="haziran",
+ ua="червня",
+ vi="tháng sáu",
+ },
+ },
+ ["june:mnem"]={
+ labels={
+ af="",
+ ca="",
+ cs="",
+ da="",
+ de="",
+ en="jun",
+ es="",
+ fi="",
+ fr="",
+ gr="",
+ hr="",
+ hu="",
+ it="",
+ la="",
+ lt="jun",
+ nb="juni",
+ nl="",
+ nn="juni",
+ pl="",
+ pt="",
+ ro="",
+ ru="",
+ sk="",
+ sl="",
+ sv="",
+ tk="",
+ tr="",
+ ua="",
+ vi="",
+ },
+ },
+ line={
+ labels={
+ af="reël ",
+ ar="سطر ",
+ ca="línia ",
+ cn="行",
+ cs="řádek ",
+ da="linie ",
+ de="Zeile ",
+ en="line ",
+ es="línea ",
+ fi="rivi ",
+ fr="ligne ",
+ gr="Γραμμή",
+ hr="redak ",
+ hu=",. sor:",
+ it="riga ",
+ ja="線",
+ la="versus ",
+ lt="line ",
+ nb="linje ",
+ nl="regel ",
+ nn="linje ",
+ pl="wiersz ",
+ pt="linha ",
+ ro="linia ",
+ ru="строкаspace",
+ sk="riadok ",
+ sl="vrstica ",
+ sv="rad ",
+ tk="setir",
+ tr="satır ",
+ ua="рядокspace",
+ vi="dòng ",
+ },
+ },
+ lines={
+ labels={
+ af="reëls ",
+ ar="السطور ",
+ ca="línies ",
+ cn="行",
+ cs="řádky ",
+ da="linier ",
+ de="Zeilen ",
+ en="lines ",
+ es="líneas ",
+ fi="rivie ",
+ fr="lignes ",
+ gr="Γραμμές",
+ hr="retci ",
+ hu="sorok",
+ it="righe ",
+ ja="線",
+ la="versus ",
+ lt="lines ",
+ nb="linjer ",
+ nl="regels ",
+ nn="linjer ",
+ pl="wiersze ",
+ pt="linhas ",
+ ro="liniile ",
+ ru="строкиspace",
+ sk="riadky ",
+ sl="vrstice ",
+ sv="rader ",
+ tk="setirler",
+ tr="satırlar ",
+ ua="рядкиspace",
+ vi="dòng ",
+ },
+ },
+ march={
+ labels={
+ af="maart",
+ ar="مارس",
+ ["ar-sy"]="آذار",
+ ca="març",
+ cn="三月",
+ cs="března",
+ da="marts",
+ de="März",
+ en="March",
+ es="marzo",
+ fi="maaliskuu",
+ fr="mars",
+ gr="Μάρτιος",
+ hr="ožujak",
+ hu="március",
+ it="marzo",
+ ja="3",
+ la="Martius",
+ lt="kovo",
+ nb="mars",
+ nl="maart",
+ nn="mars",
+ pl="marca",
+ pt="março",
+ ro="martie",
+ ru="марта",
+ sk="marca",
+ sl="marec",
+ sv="mars",
+ tk="mart",
+ tr="mart",
+ ua="березня",
+ vi="tháng ba",
+ },
+ },
+ ["march:mnem"]={
+ labels={
+ af="",
+ ca="",
+ cs="",
+ da="",
+ de="",
+ en="mar",
+ es="",
+ fi="",
+ fr="",
+ gr="",
+ hr="",
+ hu="",
+ it="",
+ la="",
+ lt="mar",
+ nb="mars",
+ nl="",
+ nn="mars",
+ pl="",
+ pt="",
+ ro="",
+ ru="",
+ sk="",
+ sl="",
+ sv="",
+ tk="",
+ tr="",
+ ua="",
+ vi="",
+ },
+ },
+ may={
+ labels={
+ af="mei",
+ ar="مايو",
+ ["ar-dz"]="ماي",
+ ["ar-ma"]="ماي",
+ ["ar-sy"]="أيار",
+ ca="maig",
+ cn="五月",
+ cs="května",
+ da="maj",
+ de="Mai",
+ en="May",
+ es="mayo",
+ fi="toukokuu",
+ fr="mai",
+ gr="Μάιος",
+ hr="svibanj",
+ hu="május",
+ it="maggio",
+ ja="5",
+ la="Maius",
+ lt="gegužės",
+ nb="mai",
+ nl="mei",
+ nn="mai",
+ pl="maja",
+ pt="maio",
+ ro="mai",
+ ru="мая",
+ sk="mája",
+ sl="maj",
+ sv="maj",
+ tk="maý",
+ tr="mayıs",
+ ua="травня",
+ vi="tháng năm",
+ },
+ },
+ ["may:mnem"]={
+ labels={
+ af="",
+ ca="",
+ cs="",
+ da="",
+ de="",
+ en="may",
+ es="",
+ fi="",
+ fr="",
+ gr="",
+ hr="",
+ hu="",
+ it="",
+ la="",
+ lt="may",
+ nb="mai",
+ nl="",
+ nn="mai",
+ pl="",
+ pt="",
+ ro="",
+ ru="",
+ sk="",
+ sl="",
+ sv="",
+ tk="",
+ tr="",
+ ua="",
+ vi="",
+ },
+ },
+ monday={
+ labels={
+ af="maandag",
+ ar="الاثنين",
+ ca="dilluns",
+ cn="星期一",
+ cs="pondělí",
+ da="mandag",
+ de="Montag",
+ en="Monday",
+ es="lunes",
+ fi="maanantai",
+ fr="lundi",
+ gr="Δευτέρα",
+ hr="ponedjeljak",
+ hu="hétfõ",
+ it="lunedì",
+ ja="月曜日",
+ la="Dies Lunae",
+ lt="pirmadienis",
+ nb="mandag",
+ nl="maandag",
+ nn="måndag",
+ pl="poniedziałek",
+ pt="segunda-feira",
+ ro="luni",
+ ru="понедельник",
+ sk="",
+ sl="ponedeljek",
+ sv="måndag",
+ tk="birinji gün",
+ tr="pazartesi",
+ ua="понеділок",
+ vi="thứ hai",
+ },
+ },
+ november={
+ labels={
+ af="november",
+ ar="نوفمبر",
+ ["ar-ma"]="نونبر",
+ ["ar-sy"]="تشرين الثاني",
+ ca="novembre",
+ cn="十一月",
+ cs="listopadu",
+ da="november",
+ de="November",
+ en="November",
+ es="noviembre",
+ fi="marraskuu",
+ fr="novembre",
+ gr="Νοέμβριος",
+ hr="studeni",
+ hu="november",
+ it="novembre",
+ ja="11",
+ la="November",
+ lt="lapkričio",
+ nb="november",
+ nl="november",
+ nn="november",
+ pl="listopada",
+ pt="novembro",
+ ro="noiembrie",
+ ru="ноября",
+ sk="novembra",
+ sl="november",
+ sv="november",
+ tk="noýabr",
+ tr="kasım",
+ ua="листопада",
+ vi="tháng mười một",
+ },
+ },
+ ["november:mnem"]={
+ labels={
+ af="",
+ ca="",
+ cs="",
+ da="",
+ de="",
+ en="nov",
+ es="",
+ fi="",
+ fr="",
+ gr="",
+ hr="",
+ hu="",
+ it="",
+ la="",
+ lt="nov",
+ nb="nov.",
+ nl="",
+ nn="nov.",
+ pl="",
+ pt="",
+ ro="",
+ ru="",
+ sk="",
+ sl="",
+ sv="",
+ tk="",
+ tr="",
+ ua="",
+ vi="",
+ },
+ },
+ october={
+ labels={
+ af="oktober",
+ ar="أكتوبر",
+ ["ar-sy"]="تشرين الأول",
+ ca="octubre",
+ cn="十月",
+ cs="října",
+ da="oktober",
+ de="Oktober",
+ en="October",
+ es="octubre",
+ fi="lokakuu",
+ fr="octobre",
+ gr="Οκτώβριος",
+ hr="listopad",
+ hu="október",
+ it="ottobre",
+ ja="10",
+ la="October",
+ lt="spalio",
+ nb="oktober",
+ nl="oktober",
+ nn="oktober",
+ pl="października",
+ pt="outubro",
+ ro="octombrie",
+ ru="октября",
+ sk="októbra",
+ sl="oktober",
+ sv="oktober",
+ tk="oktýabr",
+ tr="ekim",
+ ua="жовтня",
+ vi="tháng mười",
+ },
+ },
+ ["october:mnem"]={
+ labels={
+ af="",
+ ca="",
+ cs="",
+ da="",
+ de="",
+ en="oct",
+ es="",
+ fi="",
+ fr="",
+ gr="",
+ hr="",
+ hu="",
+ it="",
+ la="",
+ lt="oct",
+ nb="okt.",
+ nl="",
+ nn="okt.",
+ pl="",
+ pt="",
+ ro="",
+ ru="",
+ sk="",
+ sl="",
+ sv="",
+ tk="",
+ tr="",
+ ua="",
+ vi="",
+ },
+ },
+ page={
+ labels={
+ af="",
+ ar="صفحة ",
+ ca="",
+ cs="strana ",
+ da="Side ",
+ de="Seite ",
+ en="page ",
+ es="",
+ fi="",
+ fr="page ",
+ gr="",
+ hr="stranica ",
+ hu="",
+ it="pagina ",
+ la="",
+ lt="puslapis ",
+ nb="side ",
+ nl="pagina ",
+ nn="side ",
+ pl="",
+ pt="",
+ ro="",
+ ru="страницаspace",
+ sk="",
+ sl="stran ",
+ sv="Sida ",
+ tk="",
+ tr="",
+ ua="сторінкаspace",
+ vi="",
+ },
+ },
+ part={
+ labels={
+ af="Deel ",
+ ar="جزء ",
+ ca="Part ",
+ cn={"第","部分"},
+ cs="Část ",
+ da="Del ",
+ de="Teil ",
+ en="Part ",
+ es="Parte ",
+ fi="Osa ",
+ fr="Partie ",
+ gr="Μέρος",
+ hr="Dio ",
+ hu=",. rész:",
+ it="Parte ",
+ ja={"第","パート"},
+ la="Pars ",
+ lt=", dalis",
+ nb="Del",
+ nl="Deel ",
+ nn="Del",
+ pl="Ustęp ",
+ pt="Parte ",
+ ro="Partea ",
+ ru="Частьspace",
+ sk="Časť ",
+ sl="Del ",
+ sv="Del ",
+ tk="Bölüm",
+ tr="Cilt ",
+ ua="Частинаspace",
+ vi="Phần ",
+ },
+ },
+ saturday={
+ labels={
+ af="saterdag",
+ ar="السبت",
+ ca="dissabte",
+ cn="星期六",
+ cs="sobota",
+ da="lørdag",
+ de="Samstag",
+ en="Saturday",
+ es="sábado",
+ fi="lauantai",
+ fr="samedi",
+ gr="Σάββατο",
+ hr="subota",
+ hu="szombat",
+ it="sabato",
+ ja="土曜日",
+ la="Dies Saturni",
+ lt="šeštadienis",
+ nb="lørdag",
+ nl="zaterdag",
+ nn="laurdag",
+ pl="sobota",
+ pt="sábado",
+ ro="sâmbătă",
+ ru="суббота",
+ sk="",
+ sl="sobota",
+ sv="lördag",
+ tk="altynjy gün",
+ tr="cumartesi",
+ ua="субота",
+ vi="thứ bảy",
+ },
+ },
+ section={
+ hidden=true,
+ labels={
+ af="Paragraaf ",
+ ar="فصل ",
+ ca="Secció ",
+ cn={"第","节"},
+ cs="Sekce ",
+ da="",
+ de="",
+ en="",
+ es="Sección ",
+ fi="",
+ fr="Section ",
+ gr="Ενότητα",
+ hr="Odjeljak ",
+ hu="",
+ it="",
+ ja={"第","項"},
+ la="",
+ lt="",
+ nb="",
+ nl="",
+ nn="",
+ pl="Podrozdział ",
+ pt="",
+ ro="",
+ ru="",
+ sk="Sekcia ",
+ sl="",
+ sv="",
+ tk="",
+ tr="",
+ ua="",
+ vi="",
+ },
+ },
+ see={
+ labels={
+ af="",
+ ar="انظر ",
+ ca="",
+ cs="viz ",
+ da="se ",
+ de="siehe ",
+ en="see ",
+ es="",
+ fi="",
+ fr="cf. ",
+ gr="",
+ hr="vidi ",
+ hu="",
+ it="cf. ",
+ la="",
+ lt="žiūrėti ",
+ nb="se ",
+ nl="zie ",
+ nn="sjå ",
+ pl="",
+ pt="",
+ ro="",
+ ru="см.space",
+ sk="",
+ sl="glej ",
+ sv="se ",
+ tk="",
+ tr="",
+ ua="див.space",
+ vi="",
+ },
+ },
+ september={
+ labels={
+ af="september",
+ ar="سبتمبر",
+ ["ar-ma"]="شتنبر",
+ ["ar-sy"]="أيلول",
+ ca="setembre",
+ cn="九月",
+ cs="září",
+ da="september",
+ de="September",
+ en="September",
+ es="septiembre",
+ fi="syyskuu",
+ fr="septembre",
+ gr="Σεπτέμβριος",
+ hr="rujan",
+ hu="szeptember",
+ it="settembre",
+ ja="9",
+ la="September",
+ lt="rugsėjo",
+ nb="september",
+ nl="september",
+ nn="september",
+ pl="września",
+ pt="setembro",
+ ro="septembrie",
+ ru="сентября",
+ sk="septembra",
+ sl="september",
+ sv="september",
+ tk="sentýabr",
+ tr="eylül",
+ ua="вересня",
+ vi="tháng chín",
+ },
+ },
+ ["september:mnem"]={
+ labels={
+ af="",
+ ca="",
+ cs="",
+ da="",
+ de="",
+ en="sep",
+ es="",
+ fi="",
+ fr="",
+ gr="",
+ hr="",
+ hu="",
+ it="",
+ la="",
+ lt="sep",
+ nb="sep.",
+ nl="",
+ nn="sep.",
+ pl="",
+ pt="",
+ ro="",
+ ru="",
+ sk="",
+ sl="",
+ sv="",
+ tk="",
+ tr="",
+ ua="",
+ vi="",
+ },
+ },
+ subsection={
+ hidden=true,
+ labels={
+ af="",
+ ar="فصل أدنى ",
+ ca="Subsecció ",
+ cn="",
+ cs="Podsekce ",
+ da="",
+ de="",
+ en="",
+ es="Subsección ",
+ fi="",
+ fr="Soussection ",
+ gr="Υπόενότητα",
+ hr="Pododjeljak ",
+ hu="",
+ it="",
+ ja="",
+ la="",
+ lt="",
+ nb="",
+ nl="",
+ nn="",
+ pl="",
+ pt="",
+ ro="",
+ ru="",
+ sk="Podsekcia ",
+ sl="",
+ sv="",
+ tk="",
+ tr="",
+ ua="",
+ vi="",
+ },
+ },
+ subsubsection={
+ hidden=true,
+ labels={
+ af="",
+ ar="فصل أ دنى أدنى ",
+ ca="Subsubsecció ",
+ cn="",
+ cs="Podpodsekce ",
+ da="",
+ de="",
+ en="",
+ es="Subsubsección ",
+ fi="",
+ fr="Soussoussection ",
+ gr="",
+ hr="Podpododjeljak ",
+ hu="",
+ it="",
+ ja="",
+ la="",
+ lt="",
+ nb="",
+ nl="",
+ nn="",
+ pl="",
+ pt="",
+ ro="",
+ ru="",
+ sk="Podpodsekcia ",
+ sl="",
+ sv="",
+ tk="",
+ tr="",
+ ua="",
+ vi="",
+ },
+ },
+ subsubsubsection={
+ hidden=true,
+ labels={
+ af="",
+ ar="فصل أدنى أدنى أدنى ",
+ ca="Subsubsubsecció ",
+ cn="",
+ cs="Podpodpodsekce ",
+ da="",
+ de="",
+ en="",
+ es="Subsubsubsección ",
+ fi="",
+ fr="Soussoussoussection ",
+ gr="",
+ hr="Podpodpododjeljak ",
+ hu="",
+ it="",
+ ja="",
+ la="",
+ lt="",
+ nb="",
+ nl="",
+ nn="",
+ pl="",
+ pt="",
+ ro="",
+ ru="",
+ sk="Podpodpodsekcia ",
+ sl="",
+ sv="",
+ tk="",
+ tr="",
+ ua="",
+ vi="",
+ },
+ },
+ sunday={
+ labels={
+ af="sondag",
+ ar="الأحد",
+ ca="diumenge",
+ cn="星期日",
+ cs="neděle",
+ da="søndag",
+ de="Sonntag",
+ en="Sunday",
+ es="domingo",
+ fi="sunnuntai",
+ fr="dimanche",
+ gr="Κυριακή",
+ hr="nedjelja",
+ hu="vasárnap",
+ it="domenica",
+ ja="日曜日",
+ la="Dies Solis",
+ lt="sekmadienis",
+ nb="søndag",
+ nl="zondag",
+ nn="sundag",
+ pl="niedziela",
+ pt="domingo",
+ ro="duminică",
+ ru="воскресенье",
+ sk="",
+ sl="nedelja",
+ sv="söndag",
+ tk="dynç gün",
+ tr="pazar",
+ ua="неділя",
+ vi="chủ nhật",
+ },
+ },
+ table={
+ labels={
+ af="Tabel",
+ ar="جدول ",
+ ca="Taula ",
+ cn="表",
+ cs="Tabulka ",
+ da="Tabel ",
+ de="Tabelle ",
+ en="Table ",
+ es="Tabla ",
+ fi="Taulukko ",
+ fr="Tableau ",
+ gr="Πίνακας",
+ hr="Tablica ",
+ hu=",. táblázat:",
+ it="Tabella ",
+ ja="表",
+ la="Tabula ",
+ lt=", lentelė.",
+ nb="Tabell ",
+ nl="Tabel ",
+ nn="Tabell ",
+ pl="Tabela ",
+ pt="Tabela ",
+ ro="Tabelul ",
+ ru="Таблицаspace",
+ sk="Tabuľka ",
+ sl="Tabela ",
+ sv="Tabell ",
+ tk="Tablisa",
+ tr="Tablo ",
+ ua="Таблицяspace",
+ vi="Bảng ",
+ },
+ },
+ thursday={
+ labels={
+ af="donderdag",
+ ar="الخميس",
+ ca="dijous",
+ cn="星期四",
+ cs="čtvrtek",
+ da="torsdag",
+ de="Donnerstag",
+ en="Thursday",
+ es="jueves",
+ fi="torstai",
+ fr="jeudi",
+ gr="Πέμπτη",
+ hr="četvrtak",
+ hu="csütörtök",
+ it="giovedì",
+ ja="木曜日",
+ la="Dies Iovis",
+ lt="ketvirtadienis",
+ nb="torsdag",
+ nl="donderdag",
+ nn="torsdag",
+ pl="czwartek",
+ pt="quinta-feira",
+ ro="joi",
+ ru="четверг",
+ sk="",
+ sl="četrtek",
+ sv="torsdag",
+ tk="dördünji gün",
+ tr="perşembe",
+ ua="четвер",
+ vi="thứ năm",
+ },
+ },
+ tuesday={
+ labels={
+ af="dinsdag",
+ ar="الثلاثاء",
+ ca="dimarts",
+ cn="星期二",
+ cs="úterý",
+ da="tirsdag",
+ de="Dienstag",
+ en="Tuesday",
+ es="martes",
+ fi="tiistai",
+ fr="mardi",
+ gr="Τρίτη",
+ hr="utorak",
+ hu="kedd",
+ it="martedì",
+ ja="火曜日",
+ la="Dies Martis",
+ lt="antradienis",
+ nb="tirsdag",
+ nl="dinsdag",
+ nn="tysdag",
+ pl="wtorek",
+ pt="terça-feira",
+ ro="marți",
+ ru="вторник",
+ sk="",
+ sl="torek",
+ sv="tisdag",
+ tk="ikinji gün",
+ tr="salı",
+ ua="вівторок",
+ vi="thứ ba",
+ },
+ },
+ wednesday={
+ labels={
+ af="woensdag",
+ ar="الأربعاء",
+ ca="dimecres",
+ cn="星期三",
+ cs="středa",
+ da="onsdag",
+ de="Mittwoch",
+ en="Wednesday",
+ es="miércoles",
+ fi="keskiviikko",
+ fr="mercredi",
+ gr="Τετάρτη",
+ hr="srijeda",
+ hu="szerda",
+ it="mercoledì",
+ ja="水曜日",
+ la="Dies Mercuri",
+ lt="trečiadienis",
+ nb="onsdag",
+ nl="woensdag",
+ nn="onsdag",
+ pl="środa",
+ pt="quarta-feira",
+ ro="miercuri",
+ ru="среда",
+ sk="",
+ sl="sreda",
+ sv="onsdag",
+ tk="üçünji",
+ tr="çarşamba",
+ ua="середа",
+ vi="thứ tư",
+ },
+ },
+ },
+ titles={
+ abbreviations={
+ labels={
+ af="Afkortings",
+ ar="الاختصارات",
+ ca="Abreviacions",
+ cn="缩略语",
+ cs="Zkratky",
+ da="Forkortelser",
+ de="Abkürzungen",
+ en="Abbreviations",
+ es="Abreviaturas",
+ fi="Lyhennyksi",
+ fr="Abréviations",
+ gr="Συντομογραφίες",
+ hr="Kratice",
+ hu="RövidÍtések",
+ it="Abbreviazioni",
+ ja="略語",
+ la="Notae",
+ lt="Santrumpos",
+ nb="Forkortelser",
+ nl="Afkortingen",
+ nn="Forkortingar",
+ pl="Skrócenie",
+ pt="Abreviaturas",
+ ro="Abrevieri",
+ ru="Списокspaceсокращений",
+ sk="Skratky",
+ sl="Kratice",
+ sv="Förkortningar",
+ tk="Gysgaltmalar",
+ tr="Kısaltmalar",
+ ua="Перелікspaceскорочень",
+ vi="Chữ viết tắt",
+ },
+ },
+ content={
+ labels={
+ af="Inhoud",
+ ar="المحتويات",
+ ca="Índex de continguts",
+ cn="目录",
+ cs="Obsah",
+ da="Indhold",
+ de="Inhalt",
+ en="Contents",
+ es="Índice",
+ fi="Sisällys",
+ fr="Table des matières",
+ gr="Περιεχόμενα",
+ hr="Sadržaj",
+ hu="Tartalom",
+ it="Indice",
+ ja="目次",
+ la="Quod in libro continetur",
+ lt="Turinys",
+ nb="Innhold",
+ nl="Inhoud",
+ nn="Innhald",
+ pl="Spis treści",
+ pt="Conteúdo",
+ ro="Cuprins",
+ ru="Содержание",
+ sk="Obsah",
+ sl="Kazalo",
+ sv="Innehåll",
+ tk="Mazmuny",
+ tr="Fihrist",
+ ua="Зміст",
+ vi="Mục lục",
+ },
+ },
+ figures={
+ labels={
+ af="Figure",
+ ar="الأشكال",
+ ca="Figures",
+ cn="图形",
+ cs="Obrázky",
+ da="Figurer",
+ de="Abbildungen",
+ en="Figures",
+ es="Ilustraciones",
+ fi="Kuvi",
+ fr="Figures",
+ gr="Σχήματα",
+ hr="Slike",
+ hu="ábrák",
+ it="Figure",
+ ja="図",
+ la="Imagines",
+ lt="Iliustracijos",
+ nb="Figurer",
+ nl="Figuren",
+ nn="Figurar",
+ pl="Ilustracje",
+ pt="Figuras",
+ ro="Figuri",
+ ru="Списокspaceиллюстраций",
+ sk="Obrázkov",
+ sl="Slike",
+ sv="Figurer",
+ tk="Suratlar",
+ tr="Şekiller",
+ ua="Перелікspaceілюстрацій",
+ vi="Danh sách hình vẽ",
+ },
+ },
+ graphics={
+ labels={
+ af="Grafieke",
+ ar="الرسوم",
+ ca="Gràfiques",
+ cn="图",
+ cs="Grafy",
+ da="Grafik",
+ de="Graphiken",
+ en="Graphics",
+ es="Gráficos",
+ fi="Grafiikkaoi",
+ fr="Graphiques",
+ gr="Γραφικά",
+ hr="Slike",
+ hu="Grafikák",
+ it="Grafici",
+ ja="グラフ",
+ la="Typi",
+ lt="Graphics",
+ nb="Bilde",
+ nl="Grafieken",
+ nn="Bilete",
+ pl="Grafika",
+ pt="Gráficos",
+ ro="Grafice",
+ ru="Списокspaceграфиков",
+ sk="Graf",
+ sl="Slike",
+ sv="Grafik",
+ tk="Grafikler",
+ tr="Grafikler",
+ ua="Перелікspaceграфіков",
+ vi="Đồ thị",
+ },
+ },
+ index={
+ labels={
+ af="Indeks",
+ ar="الفهرس",
+ ca="Índex alfabètic",
+ cn="索引",
+ cs="Rejstřík",
+ da="Indeks",
+ de="Index",
+ en="Index",
+ es="Índice alfabético",
+ fi="Indeksiluku",
+ fr="Index",
+ gr="Ευρετήριο",
+ hr="Indeks",
+ hu="Index",
+ it="Indice",
+ ja="目次",
+ la="Indices",
+ lt="Rodyklė",
+ nb="Register",
+ nl="Index",
+ nn="Register",
+ pl="Indeks",
+ pt="Índice",
+ ro="Index",
+ ru="Алфавитныйspaceуказатель",
+ sk="Zoznam",
+ sl="Stvarno kazalo",
+ sv="Sakregister",
+ tk="Indeks",
+ tr="İndex",
+ ua="Покажчик",
+ vi="Chỉ số",
+ },
+ },
+ intermezzi={
+ labels={
+ af="Intermezzos",
+ ar="فسح",
+ ca="Intermedis",
+ cn="퉣",
+ cs="Intermezza",
+ da="Intermezzoer",
+ de="Intermezzi",
+ en="Intermezzos",
+ es="Intermedios",
+ fi="Intermezzos",
+ fr="Intermèdes",
+ gr="Παύσεις",
+ hr="Intermeci",
+ hu="Intermezzok",
+ it="Intermezzi",
+ ja="間奏曲",
+ la="Intermissa",
+ lt="Intermezzos",
+ nb="Intermesso",
+ nl="Intermezzo's",
+ nn="Intermesso",
+ pl="Intermezza",
+ pt="Intermédios",
+ ro="Intermzzo",
+ ru="Списокspaceвставок",
+ sk="Intermezzá",
+ sl="Intermezzi",
+ sv="Intermezzon",
+ tk="Arakesmeler",
+ tr="",
+ ua="Перелікspaceвставок",
+ vi="Intermezzos",
+ },
+ },
+ logos={
+ labels={
+ af="Logos",
+ ar="الشعارات",
+ ca="Logotips",
+ cn="徽贬",
+ cs="Loga",
+ da="Logoer",
+ de="Logos",
+ en="Logos",
+ es="Logotipos",
+ fi="Vertauskuva",
+ fr="Logos",
+ gr="Λογότυπα",
+ hr="Znakovi",
+ hu="Fejlécek",
+ it="Logotipi",
+ ja="理性",
+ la="Typi negotiales",
+ lt="Logos",
+ nb="Logoer",
+ nl="Logo's",
+ nn="Logoar",
+ pl="Znaki",
+ pt="Logotipos",
+ ro="Logo-uri",
+ ru="Логотипы",
+ sk="Logá",
+ sl="Logotipi",
+ sv="Loggor",
+ tk="Logolar",
+ tr="Logolar",
+ ua="Логотипи",
+ vi="Biểu tượng",
+ },
+ },
+ pubs={
+ labels={
+ af="",
+ ca="Referències",
+ cs="Literatura",
+ da="",
+ de="Literatur",
+ en="References",
+ es="Bibliografía",
+ fi="",
+ fr="Bibliographie",
+ gr="",
+ hr="Literatura",
+ hu="",
+ it="Bibliografia",
+ la="",
+ lt="Literatūra",
+ nb="",
+ nl="Literatuur",
+ nn="",
+ pl="",
+ pt="",
+ ro="",
+ ru="",
+ sk="",
+ sl="Literatura",
+ sv="",
+ tk="",
+ tr="",
+ ua="",
+ vi="",
+ },
+ },
+ tables={
+ labels={
+ af="Tabelle",
+ ar="الجداول",
+ ca="Taules",
+ cn="表格",
+ cs="Tabulky",
+ da="Tabeller",
+ de="Tabellen",
+ en="Tables",
+ es="Tablas",
+ fi="Taulukkoj",
+ fr="Tableaux",
+ gr="Πίνακες",
+ hr="Tablice",
+ hu="Táblázatok",
+ it="Tabelle",
+ ja="机",
+ la="Tabulae",
+ lt="Lentelės",
+ nb="Tabeller",
+ nl="Tabellen",
+ nn="Tabellar",
+ pl="Tabele",
+ pt="Tabelas",
+ ro="Tabele",
+ ru="Списокspaceтаблиц",
+ sk="Tabuliek",
+ sl="Tabele",
+ sv="Tabeller",
+ tk="Tablisalar",
+ tr="Tablolar",
+ ua="Перелікspaceтаблиць",
+ vi="Danh sách bảng",
+ },
+ },
+ units={
+ labels={
+ af="Eenhede",
+ ar="الوحدات",
+ ca="Unitats",
+ cn="计量单位",
+ cs="Jednotky",
+ da="Enheder",
+ de="Einheiten",
+ en="Units",
+ es="Unidades",
+ fi="Yksiköt",
+ fr="Unités",
+ gr="Μονάδες",
+ hr="Jedinice",
+ hu="Mértékegységek",
+ it="Unità",
+ ja="ユニッツ",
+ la="Modi",
+ lt="Units",
+ nb="Enheter",
+ nl="Eenheden",
+ nn="Einingar",
+ pl="Jednostki",
+ pt="Unidades",
+ ro="Unități",
+ ru="Единицыspaceизмерения",
+ sk="Jednotky",
+ sl="Enote",
+ sv="Enheter",
+ tk="Birlikler",
+ tr="Birimler",
+ ua="Одиниціspaceвиміру",
+ vi="Đơn vị",
+ },
+ },
+ },
+}
diff --git a/tex/context/base/lang-ura.tex b/tex/context/base/lang-ura.mkii
index a2bcd3d2b..a2bcd3d2b 100644
--- a/tex/context/base/lang-ura.tex
+++ b/tex/context/base/lang-ura.mkii
diff --git a/tex/context/base/lang-ura.mkiv b/tex/context/base/lang-ura.mkiv
new file mode 100644
index 000000000..3b69d4696
--- /dev/null
+++ b/tex/context/base/lang-ura.mkiv
@@ -0,0 +1,63 @@
+%D \module
+%D [ file=lang-sla,
+%D version=1997.09.03,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Uralic Languages,
+%D author=Hans Hagen / Tobias Burnus,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% Todo: replace \'.. by \namedglyph
+
+\writestatus{loading}{ConTeXt Language Macros / Uralic Languages}
+
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+%D
+%D \starttabulate[|lB|l|]
+%D \NC Finnish \NC \NC \NR
+%D \NC Hungarian \NC Balazs Nagy \NC \NR
+%D \stoptabulate
+
+% Cheremiss, Estonian, Finnish, Karelian, Laap, Mordvinian,
+% Permian tongues, Hungarian, Ostyak, Vogul, Samoyed
+
+\unprotect
+
+\installlanguage
+ [\s!fi]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\upperleftsinglesixquote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\upperleftdoublesixquote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!date={\v!year,\ ,\v!month,\ ,\v!day}]
+
+\installlanguage
+ [\s!hu]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\lowerleftsingleninequote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\lowerleftdoubleninequote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!date={\v!year,.,\ ,\v!month,\ ,\v!day,.}]
+
+\installlanguage [finish] [\s!fi]
+\installlanguage [hungarian] [\s!hu]
+
+\protect \endinput
diff --git a/tex/context/base/lang-vn.tex b/tex/context/base/lang-vn.mkii
index 27d2a48a1..27d2a48a1 100644
--- a/tex/context/base/lang-vn.tex
+++ b/tex/context/base/lang-vn.mkii
diff --git a/tex/context/base/lang-vn.mkiv b/tex/context/base/lang-vn.mkiv
new file mode 100644
index 000000000..1e852d762
--- /dev/null
+++ b/tex/context/base/lang-vn.mkiv
@@ -0,0 +1,43 @@
+%D \module
+%D [ file=lang-vn,
+%D version=2004.11.22, % 1999.12.12,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Vietnamese,
+%D author={Han The Thanh \& Adam Lindsay \& Hans Hagen},
+%D date=\currentdate,
+%D copyright=\PRAGMA]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{ConTeXt Language Macros / Vietnamese Language}
+
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+%D
+%D \starttabulate[|lB|l|]
+%D \NC Vietnamese \NC \THANH\ \NC \NR
+%D \stoptabulate
+
+\unprotect
+
+\installlanguage
+ [\s!vi]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\quoteleft,
+ \c!rightquote=\quoteright,
+ \c!leftquotation=\quotedblleft,
+ \c!rightquotation=\quotedblright,
+ \c!date={{ },dd,{/},mm,{/},yy}]
+
+\installlanguage [vietnamese] [\s!vi]
+
+\protect \endinput
diff --git a/tex/context/base/luat-ini.mkiv b/tex/context/base/luat-ini.mkiv
index 6e3432d9a..d58d9977a 100644
--- a/tex/context/base/luat-ini.mkiv
+++ b/tex/context/base/luat-ini.mkiv
@@ -229,8 +229,8 @@
{\begingroup
\obeylualines
\obeyluatokens
- \catcode`\{\plusone
- \catcode`\}\plustwo
+ \catcode\leftbraceasciicode \plusone
+ \catcode\rightbraceasciicode\plustwo
\afterassignment\doctxluacode
\scratchtoks=}
diff --git a/tex/context/base/m-database.mkiv b/tex/context/base/m-database.mkiv
index 56aed04de..0653bfa0e 100644
--- a/tex/context/base/m-database.mkiv
+++ b/tex/context/base/m-database.mkiv
@@ -209,7 +209,7 @@ d e f
\stopCSV
\startsetups csv:unix
- \catcode`\#=\commentcatcode
+ \catcode\hashasciicode\commentcatcode
\stopsetups
\defineseparatedlist
diff --git a/tex/context/base/m-zint.mkiv b/tex/context/base/m-zint.mkiv
new file mode 100644
index 000000000..815d83fab
--- /dev/null
+++ b/tex/context/base/m-zint.mkiv
@@ -0,0 +1,78 @@
+%D \module
+%D [ file=m-zint,
+%D version=2010.12.07,
+%D title=\CONTEXT\ Extra Modules,
+%D subtitle=Zint Barcode Generator,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=PRAGMA]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Using \type {zint} seems to be the easiest way to generate
+%D (PDF417) barcodes so therefore we now have this module. There
+%D are proper (also windows) binaries at:
+%D
+%D \starttyping
+%D http://www.zint.org.uk
+%D \stoptyping
+%D
+%D There is a bit more code than needed as we want to be able to
+%D feed names.
+
+\startluacode
+
+moduledata.zint = { }
+
+local format, lower, gsub = string.format, string.lower, string.gsub
+local patterns = lpeg.patterns
+
+local zint = "zint" -- '"c:/program files/zint/zint.exe"'
+
+local whitespace = patterns.whitespace
+local spaces = whitespace^0
+local key = (spaces / "") * patterns.digit^0 * (patterns.colon * spaces / "")
+local value = (whitespace / "" + (1 - key))^1
+local pattern = lpeg.Cf(lpeg.Ct("") * (lpeg.Cg((lpeg.Cs(key) / tonumber) * (lpeg.Cs(value) / lower)) + patterns.anything)^0,rawset)
+
+local reverse
+
+local function cleancode(code)
+ return lower(gsub(code," ",""))
+end
+
+local function numberofcode(code)
+ if not reverse then
+ local types = os.resultof(format("%s --types",zint)) or ""
+ local formats = lpeg.match(pattern,types)
+ reverse = table.swapped(formats) or { }
+ end
+ code = cleancode(code)
+ return reverse[code] or code
+end
+
+function moduledata.zint.generate(code,data,suffix,options)
+ local code = cleancode(code)
+ local name = format("zint-%s-%s.%s",code,md5.hex(data),suffix or "eps")
+ if not lfs.isfile(name) then
+ local code = numberofcode(code)
+ os.spawn(format('%s --barcode=%s --output="%s" %s --data="%s"',zint,code,name,options or "",data))
+ end
+ return name
+end
+
+\stopluacode
+
+\doifnotmode{demo}{\endinput}
+
+\starttext
+
+ \externalfigure[\cldcontext{moduledata.zint.generate("PDF417","Ton Otten")}]
+ \blank
+ \externalfigure[\cldcontext{moduledata.zint.generate("ISBN","9789490688011")}]
+
+\stoptext
+
+
diff --git a/tex/context/base/math-ini.mkiv b/tex/context/base/math-ini.mkiv
index d530f5937..07a93d548 100644
--- a/tex/context/base/math-ini.mkiv
+++ b/tex/context/base/math-ini.mkiv
@@ -363,21 +363,21 @@
\setnewconstant\primeasciicode 39 % '
-\activatemathcharacter\caretasciicode
+\activatemathcharacter\circumflexasciicode
\activatemathcharacter\underscoreasciicode
\activatemathcharacter\ampersandasciicode
\activatemathcharacter\primeasciicode
% not used:
%
-% \mathcode`\ =\activemathcharcode
+% \mathcode\spaceasciicode\activemathcharcode
%
% not used:
%
% \bgroup
-% \catcode`\_ = 13
+% \catcode\underscoreasciicode\activecatcode
% \doglobal\appendtoks
-% \mathcode`\_=\activemathcharcode
+% \mathcode\underscoreasciicode\activemathcharcode
% \let_\activemathunderscore
% \to \everymathematics
% \egroup
@@ -387,7 +387,7 @@
\bgroup
\catcode\primeasciicode\activecatcode
\doglobal\appendtoks
- \let'\activemathquote
+ \let'\domathprime
\to \everymathematics
\egroup
@@ -402,7 +402,7 @@
\bgroup
\catcode\underscoreasciicode\activecatcode
- \catcode\caretasciicode \activecatcode
+ \catcode\circumflexasciicode\activecatcode
\catcode\ampersandasciicode \activecatcode
\global \everynonknuthmode {\appendtoks
@@ -415,20 +415,20 @@
\appendtoks
\catcode\underscoreasciicode\othercatcode
- \catcode\caretasciicode \othercatcode
+ \catcode\circumflexasciicode\othercatcode
\catcode\ampersandasciicode \othercatcode
\to \everynonknuthmode
\appendtoks
\catcode\underscoreasciicode\subscriptcatcode
- \catcode\caretasciicode \superscriptcatcode
+ \catcode\circumflexasciicode\superscriptcatcode
\catcode\ampersandasciicode \alignmentcatcode
\to \everydonknuthmode
\appendtoks
\startextendcatcodetable\ctxcatcodes
\catcode\underscoreasciicode\othercatcode
- \catcode\caretasciicode \othercatcode
+ \catcode\circumflexasciicode\othercatcode
\catcode\ampersandasciicode \othercatcode
\stopextendcatcodetable
\to \everynonknuthmode
@@ -436,14 +436,14 @@
\appendtoks
\startextendcatcodetable\ctxcatcodes
\catcode\underscoreasciicode\subscriptcatcode
- \catcode\caretasciicode \superscriptcatcode
+ \catcode\circumflexasciicode\superscriptcatcode
\catcode\ampersandasciicode \alignmentcatcode
\stopextendcatcodetable
\to \everydonknuthmode
% \def\prefermathcatcodes
% {\catcode\underscoreasciicode\subscriptcatcode
-% \catcode\caretasciicode \superscriptcatcode
+% \catcode\circumflexasciicode\superscriptcatcode
% \catcode\ampersandasciicode \alignmentcatcode}
%D Even more drastic:
diff --git a/tex/context/base/math-pln.mkiv b/tex/context/base/math-pln.mkiv
index 59f582f06..6deac5efb 100644
--- a/tex/context/base/math-pln.mkiv
+++ b/tex/context/base/math-pln.mkiv
@@ -68,27 +68,27 @@
\ifx\!\undefined \def\!{\mskip-\thinmuskip } \fi
\ifx\*\undefined \def\*{\discretionary{\thinspace\the\textfont2\char2}{}{}} \fi
-% {\catcode`\'=\active \gdef'{^\bgroup\prim@s}}
+{ \catcode\circumflexasciicode\othercatcode \global\let\othercircumflextoken ^ }
+{ \catcode\circumflexasciicode\superscriptcatcode \global\let\superscriptcircumflextoken^ }
-\def\activemathquote{^\bgroup\prim@s}
+\def\domathprime{^\bgroup\dodomathprime}
-\def\prim@s
- {\prime\futurelet\next\pr@m@s}
+\def\dodomathprime
+ {\prime\futurelet\nexttoken\dododomathprime}
-\def\pr@m@s
- {\ifx'\next
- \@EA\pr@@@s
- \else\ifx^\next
- \@EAEAEA\pr@@@t
- \else
- \@EAEAEA\egroup
- \fi\fi}
+\def\dododomathprime
+ {\csname domathprime@%
+ \ifx '\nexttoken a\else
+ \ifx\superscriptcircumflextoken\nexttoken b\else
+ \ifx\othercircumflextoken \nexttoken b\else
+ c\fi\fi\fi
+ \endcsname}
-\def\pr@@@s#1%
- {\prim@s}
+\def\domathprime@a #1{\dodomathprime}
+\def\domathprime@b#1#2{#2\egroup}
+\def\domathprime@c {\egroup}
-\def\pr@@@t#1#2%
- {#2\egroup}
+\let\activemathprime\domathprime
% {\catcode`\_=\active \global\let_=\_} % _ in math is either subscript or \_
diff --git a/tex/context/base/meta-fun.mkiv b/tex/context/base/meta-fun.mkiv
index a43ffefff..fbe91fd6a 100644
--- a/tex/context/base/meta-fun.mkiv
+++ b/tex/context/base/meta-fun.mkiv
@@ -17,4 +17,9 @@
\unprotect
+%D Just a few handy helpers:
+
+\ifdefined\MPtoks\else \newtoks\MPtoks \fi
+\ifdefined\MPbox \else \newbox \MPbox \fi
+
\protect \endinput
diff --git a/tex/context/base/meta-pdh.mkiv b/tex/context/base/meta-pdh.mkiv
index 0857182e2..978128f3a 100644
--- a/tex/context/base/meta-pdh.mkiv
+++ b/tex/context/base/meta-pdh.mkiv
@@ -36,7 +36,7 @@
%D First we define a handy constant:
-\bgroup \catcode`\%=\othercatcode \xdef\letterpercent{\string%} \egroup
+\bgroup \catcode\commentasciicode\othercatcode \xdef\letterpercent{\string%} \egroup
%D \macros
%D {convertMPtoPDF}
diff --git a/tex/context/base/mult-com.tex b/tex/context/base/mult-com.mkii
index 118616837..118616837 100644
--- a/tex/context/base/mult-com.tex
+++ b/tex/context/base/mult-com.mkii
diff --git a/tex/context/base/mult-con.tex b/tex/context/base/mult-con.mkii
index 62e97d567..62e97d567 100644
--- a/tex/context/base/mult-con.tex
+++ b/tex/context/base/mult-con.mkii
diff --git a/tex/context/base/mult-de.tex b/tex/context/base/mult-de.mkii
index 0f18b009a..0f18b009a 100644
--- a/tex/context/base/mult-de.tex
+++ b/tex/context/base/mult-de.mkii
diff --git a/tex/context/base/mult-def.mkii b/tex/context/base/mult-def.mkii
index a6840b0e0..0e1a7dee7 100644
--- a/tex/context/base/mult-def.mkii
+++ b/tex/context/base/mult-def.mkii
@@ -25,7 +25,7 @@
\def\userinterfacetag{\ifcsname @interface@\currentinterface @\endcsname\csname @interface@\currentinterface @\endcsname\else en\fi}
\def\userresponsestag{\ifcsname @interface@\currentresponses @\endcsname\csname @interface@\currentresponses @\endcsname\else en\fi}
-\input mult-\userinterfacetag \relax
-\input mult-m\userresponsestag \relax
+\input mult-\userinterfacetag .\mksuffix \relax
+\input mult-m\userresponsestag.\mksuffix \relax
\protect \endinput
diff --git a/tex/context/base/mult-en.tex b/tex/context/base/mult-en.mkii
index 9263f465c..9263f465c 100644
--- a/tex/context/base/mult-en.tex
+++ b/tex/context/base/mult-en.mkii
diff --git a/tex/context/base/mult-fr.tex b/tex/context/base/mult-fr.mkii
index 29adf8314..29adf8314 100644
--- a/tex/context/base/mult-fr.tex
+++ b/tex/context/base/mult-fr.mkii
diff --git a/tex/context/base/mult-it.tex b/tex/context/base/mult-it.mkii
index b1fa81a66..b1fa81a66 100644
--- a/tex/context/base/mult-it.tex
+++ b/tex/context/base/mult-it.mkii
diff --git a/tex/context/base/mult-mcs.tex b/tex/context/base/mult-mcs.mkii
index 27fbd37dd..27fbd37dd 100644
--- a/tex/context/base/mult-mcs.tex
+++ b/tex/context/base/mult-mcs.mkii
diff --git a/tex/context/base/mult-mde.tex b/tex/context/base/mult-mde.mkii
index 2819c1ed5..2819c1ed5 100644
--- a/tex/context/base/mult-mde.tex
+++ b/tex/context/base/mult-mde.mkii
diff --git a/tex/context/base/mult-men.tex b/tex/context/base/mult-men.mkii
index c9c56bcc5..c9c56bcc5 100644
--- a/tex/context/base/mult-men.tex
+++ b/tex/context/base/mult-men.mkii
diff --git a/tex/context/base/mult-mfr.tex b/tex/context/base/mult-mfr.mkii
index 7fee954c0..7fee954c0 100644
--- a/tex/context/base/mult-mfr.tex
+++ b/tex/context/base/mult-mfr.mkii
diff --git a/tex/context/base/mult-mit.tex b/tex/context/base/mult-mit.mkii
index 9d09e2676..9d09e2676 100644
--- a/tex/context/base/mult-mit.tex
+++ b/tex/context/base/mult-mit.mkii
diff --git a/tex/context/base/mult-mnl.tex b/tex/context/base/mult-mnl.mkii
index fb527d4ad..fb527d4ad 100644
--- a/tex/context/base/mult-mnl.tex
+++ b/tex/context/base/mult-mnl.mkii
diff --git a/tex/context/base/mult-mno.tex b/tex/context/base/mult-mno.mkii
index bbbc3a658..bbbc3a658 100644
--- a/tex/context/base/mult-mno.tex
+++ b/tex/context/base/mult-mno.mkii
diff --git a/tex/context/base/mult-mpe.tex b/tex/context/base/mult-mpe.mkii
index c9c56bcc5..c9c56bcc5 100644
--- a/tex/context/base/mult-mpe.tex
+++ b/tex/context/base/mult-mpe.mkii
diff --git a/tex/context/base/mult-mro.tex b/tex/context/base/mult-mro.mkii
index 70673c317..70673c317 100644
--- a/tex/context/base/mult-mro.tex
+++ b/tex/context/base/mult-mro.mkii
diff --git a/tex/context/base/mult-nl.tex b/tex/context/base/mult-nl.mkii
index 772e7bb6d..772e7bb6d 100644
--- a/tex/context/base/mult-nl.tex
+++ b/tex/context/base/mult-nl.mkii
diff --git a/tex/context/base/mult-pe.tex b/tex/context/base/mult-pe.mkii
index 61de69d6c..61de69d6c 100644
--- a/tex/context/base/mult-pe.tex
+++ b/tex/context/base/mult-pe.mkii
diff --git a/tex/context/base/mult-ro.tex b/tex/context/base/mult-ro.mkii
index 33649b07c..33649b07c 100644
--- a/tex/context/base/mult-ro.tex
+++ b/tex/context/base/mult-ro.mkii
diff --git a/tex/context/base/page-lay.mkii b/tex/context/base/page-lay.mkii
index de1194c2a..8da9ba852 100644
--- a/tex/context/base/page-lay.mkii
+++ b/tex/context/base/page-lay.mkii
@@ -1372,10 +1372,7 @@
%D paper size with the typeset paper size. This setting should
%D come after the first layout specification (already done).
-\setuppapersize
- [A4][A4]
-
-%D A few goodies:
+% not interfaced !
\definepapersize
[oversized]
@@ -1392,6 +1389,14 @@
[ \c!width=\dimexpr \paperheight+1.5cm\relax,
\c!height=\dimexpr2\paperwidth +1.5cm\relax]
+\definepapersize
+ [samesized]
+ [ \c!width=\paperwidth,
+ \c!height=\paperheight]
+
+\setuppapersize
+ [A4][samesized]
+
%D For orthogonality:
\definepapersize
diff --git a/tex/context/base/s-abr-01.tex b/tex/context/base/s-abr-01.tex
index 85b263468..dc5b0475b 100644
--- a/tex/context/base/s-abr-01.tex
+++ b/tex/context/base/s-abr-01.tex
@@ -75,6 +75,7 @@
\logo [DVIPSONE] {dvipsone}
\logo [DVISCR] {dviscr}
\logo [DVIWINDO] {dviwindo}
+\logo [EBCDIC] {ebcdic}
\logo [EC] {ec}
\logo [EIFFEL] {Eiffel}
\logo [EMACS] {emacs}
diff --git a/tex/context/base/s-inf-01.tex b/tex/context/base/s-inf-01.tex
index cf8cca80e..1dfb66d6a 100644
--- a/tex/context/base/s-inf-01.tex
+++ b/tex/context/base/s-inf-01.tex
@@ -16,18 +16,19 @@
\startluacode
local format, gsub, find, match = string.format, string.gsub, string.find, string.match
- local list, size, comp, used, nope = { }, { }, { }, { mkii = { }, mkiv = { } }, { 0, 0, 0, 0 }
+ local list, size, comp, used, nope = { }, { }, { }, { mkii = { }, mkiv = { }, mkvi = { } }, { 0, 0, 0, 0, 0 }
local omit = {
"char%-def%.lua",
- "mult%-def%.lua", "mult%-..%.tex", "mult%-m..%.tex",
+ "mult%-def%.lua", "mult%-..%.mkii", "mult%-m..%.mkii",
}
local skip = {
"prag%-.*%.tex", "docs%-.*.tex", "list%-.*%.tex", "test%-.*%.tex", "demo%-.*%.tex",
- "opti%-.*%.tex", "chrt%-.*%.tex",
+ "opti%-.*%.tex", "chrt%-.*%.tex", ".*%-old", ".*%-obs", ".*%-tst", "supp%-.*%.tex",
+ "colo%-pan.tex",
}
local types = {
- "tex", "mkii", "mkiv", "lua"
+ "tex", "mkii", "mkiv", "mkvi", "lua"
}
local function collect(list,suffix,n)
@@ -48,7 +49,7 @@
if okay then
local lm, sm, cm = list[category], size[category], comp[category]
if not lm then
- lm, sm, cm = { 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0 }
+ lm, sm, cm = { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 }
list[category], size[category], comp[category] = lm, sm, cm
end
lm[n] = lm[n] + 1
@@ -67,7 +68,7 @@
data = gsub(data,"%%.-[\n\r]","")
end
data = gsub(data,"%s","")
- sm[n+4] = sm[n+4] + #data
+ sm[n+5] = sm[n+5] + #data
if done then
sm[n] = sm[n] + #data
else
@@ -89,7 +90,7 @@
pattern ="{"..category.."%-"
for suffix, t in pairs(used) do
local data = io.loaddata(resolvers.find_file("context."..suffix))
- if find(data,pattern) then
+ if data and find(data,pattern) then
t[category] = true
end
end
@@ -97,21 +98,21 @@
end
local max, what = 0, (what == "size" and size) or list
for k, v in table.sortedpairs(what) do
- for i=1,4 do if v[i] > max then max = v[i] end end
+ for i=1,5 do if v[i] > max then max = v[i] end end
end
return max, what, function(n) return n/max end
end
function document.context_state_1(what)
local max, what, norm = prepare(what)
- context.starttabulate { "|Tc|T|T|T|T|]" }
+ context.starttabulate { "|Tc|T|T|T|T|T|" }
context.NC()
context(category)
context.NC()
for i, t in ipairs(types) do
local n, m = 0, 0
for k, v in pairs(list) do
- local nn, mm = what[k][i], what[k][i+4]
+ local nn, mm = what[k][i], what[k][i+5]
n = n + nn
m = m + (mm or nn)
end
@@ -124,7 +125,12 @@
for k, v in table.sortedpairs(what) do
local c = (what == size and comp[k]) or nope
context.NC()
- context("%s~%s~~%s",(used.mkii[k] and "ii") or "~~",(used.mkiv[k] and "iv") or "~~",k)
+ context("%s~%s~~%s~~%s",
+ (used.mkii[k] and "ii") or "~~",
+ (used.mkiv[k] and "iv") or "~~",
+ (used.mkvi[k] and "vi") or "~~",
+ k
+ )
context.NC()
for i, t in ipairs(types) do
context.Bar(t,v[i],c[i],norm(v[i]))
@@ -152,12 +158,14 @@
\definecolor[bar:tex] [middlegreen]
\definecolor[bar:mkii][middleblue]
\definecolor[bar:mkiv][middlered]
+\definecolor[bar:mkvi][middleyellow]
\definecolor[bar:lua] [middlegray]
\def\Top#1#2#3#4%
{\hbox to 5em{\hss#3}%
\enspace
- \hbox to #2\dimexpr 20em\relax{#1\ifnum#3=#4\else~#4\rlap{~+}\fi\hss}}
+% \hbox to #2\dimexpr 20em\relax{#1\ifnum#3=#4\else~#4\rlap{~+}\fi\hss}}
+ \hbox {#1\ifnum#3=#4\else~#4\rlap{~+}\fi\hss}}
\def\Bar#1#2#3#4%
{\ifcase#2\else
@@ -201,9 +209,9 @@
{The size of (core) files used in ConTeXt (- indicates exclusion of large data files; + indicates inclusion of large data files; comment and spaces removed.)}
{1}{size}
\Show
- {The relative number of files used in ConTeXt (tex, mkii, mkiv, lua).}
+ {The relative number of files used in ConTeXt (tex, mkii, mkiv, mkvi, lua).}
{2}{number}
\Show
- {The relative size of files used in ConTeXt (tex, mkii, mkiv, lua).}
+ {The relative size of files used in ConTeXt (tex, mkii, mkiv, mkvi, lua).}
{2}{size}
\stoptext
diff --git a/tex/context/base/spac-gen.mkii b/tex/context/base/spac-gen.mkii
index 8274db1b9..4e7b3810c 100644
--- a/tex/context/base/spac-gen.mkii
+++ b/tex/context/base/spac-gen.mkii
@@ -1483,6 +1483,21 @@
\fi
+\unexpanded\def\textormathglue#1#2#3% cleaned up one
+ {\begingroup
+ \ifmmode
+ \mskip#1#2%
+ \else
+ \scratchdimen#1\hspaceamount\empty{#3}%
+ \scratchskip\scratchdimen\!!plus.5\scratchdimen\!!minus.3\scratchdimen
+ \hskip\scratchskip
+ \fi
+ \endgroup}
+
+\def\thinglue {\textormathglue+\thinmuskip 1}
+\def\medglue {\textormathglue+\medmuskip 2}
+\def\thickglue{\textormathglue+\thickmuskip3}
+
\ifx\eject\undefined
\def\eject{\par\break}
diff --git a/tex/context/base/spac-hor.mkiv b/tex/context/base/spac-hor.mkiv
index 269354d0f..70d949e76 100644
--- a/tex/context/base/spac-hor.mkiv
+++ b/tex/context/base/spac-hor.mkiv
@@ -328,7 +328,7 @@
\unexpanded\def\nonbreakablespace{\penalty\plustenthousand\normalspaceprimitive} % no space in math
-\letcatcodecommand \ctxcatcodes `\~ \nonbreakablespace % overloaded later
+\letcatcodecommand \ctxcatcodes \tildeasciicode \nonbreakablespace % overloaded later
\def\space { }
\def\removelastspace{\ifhmode\unskip\fi}
@@ -350,7 +350,7 @@
\hskip\wd\scratchbox\relax}
\def\fixedspaces
- {\letcatcodecommand \ctxcatcodes `\~ \fixedspace}
+ {\letcatcodecommand \ctxcatcodes \tildeasciicode \fixedspace}
\appendtoks
\let~\space
@@ -932,4 +932,21 @@
\chardef\zwnj="200C
\chardef\zwj ="200D
+% TODO (but used in languages):
+
+\unexpanded\def\textormathglue#1#2#3% cleaned up one
+ {\begingroup
+ \ifmmode
+ \mskip#1#2%
+ \else
+ \scratchdimen#1\hspaceamount\empty{#3}%
+ \scratchskip\scratchdimen\!!plus.5\scratchdimen\!!minus.3\scratchdimen
+ \hskip\scratchskip
+ \fi
+ \endgroup}
+
+\def\thinglue {\textormathglue+\thinmuskip 1}
+\def\medglue {\textormathglue+\medmuskip 2}
+\def\thickglue{\textormathglue+\thickmuskip3}
+
\protect \endinput
diff --git a/tex/context/base/supp-fil.mkiv b/tex/context/base/supp-fil.mkiv
index 41e3a3ad9..5db8098e3 100644
--- a/tex/context/base/supp-fil.mkiv
+++ b/tex/context/base/supp-fil.mkiv
@@ -57,9 +57,6 @@
%D ... reading ...
%D \popendofline
%D \stoptyping
-%D
-%D Just to be sure, we save the current meaning of \type{^^M}
-%D in \type{\poppedendofline}.
\newcount \endoflinelevel
diff --git a/tex/context/base/supp-mat.mkiv b/tex/context/base/supp-mat.mkiv
index 3da664f36..e441cbc28 100644
--- a/tex/context/base/supp-mat.mkiv
+++ b/tex/context/base/supp-mat.mkiv
@@ -171,12 +171,12 @@
% %D and \type {\suber} by saying \type {\enablesupsub}.
%
% \bgroup
-% \catcode`\^=\activecatcode
-% \catcode`\_=\activecatcode
+% \catcode\circumflexasciicode\activecatcode
+% \catcode\underscoreasciicode\activecatcode
% \gdef\enablesupsub
-% {\catcode`\^=\activecatcode
+% {\catcode\circumflexasciicode\activecatcode
+% \catcode\underscoreasciicode\activecatcode
% \def^{\ifmmode\expandafter\super\else\expandafter\normalsuper\fi}%
-% \catcode`\_=\activecatcode
% \def_{\ifmmode\expandafter\suber\else\expandafter\normalsuber\fi}}
% \egroup
%
diff --git a/tex/context/base/supp-num.mkiv b/tex/context/base/supp-num.mkiv
index 8dd763b78..68b775403 100644
--- a/tex/context/base/supp-num.mkiv
+++ b/tex/context/base/supp-num.mkiv
@@ -117,12 +117,7 @@
%D Watch the test for \type {\nextobeyedline}, because the
%D endofline token can be \type {\def'd}, not \type {\let}'d,
%D we need to do an indirect test (see \type {verb-ini.tex})
-%D for details.
-%D
-%D \starttyping
-%D \def ^^M{\obeyedline}
-%D \def\nextbeyedline{\obeyedline}
-%D \stoptyping
+%D for details. (This probably needs an update.)
\ifx\normalmathshift\undefined \let\normalmathshift=$ \fi
diff --git a/tex/context/base/syst-aux.mkiv b/tex/context/base/syst-aux.mkiv
index 685e8c923..e12951fa4 100644
--- a/tex/context/base/syst-aux.mkiv
+++ b/tex/context/base/syst-aux.mkiv
@@ -283,6 +283,7 @@
\else
\@EA\inspectnextcharacterindeed
\fi}
+
\def\inspectnextcharacterindeed
{\ifx\nexttoken\charactertoken
\@EA\!!stringa
@@ -321,12 +322,14 @@
{\def\nextbgroupcommandyes{#1}%
\def\nextbgroupcommandnop{#2}%
\futurelet\nexttoken\inspectnextbgroupcharacter}
+
\def\inspectnextbgroupcharacter
{\ifx\nexttoken\blankspace
\@EA\reinspectnextbgroupcharacter
\else
\@EA\inspectnextbgroupcharacterindeed
\fi}
+
\def\inspectnextbgroupcharacterindeed
{\ifx\nexttoken\nextbgroupcharactertoken
\@EA\nextbgroupcommandyes
@@ -340,12 +343,14 @@
{\def\nextparenthesiscommandyes{#1}%
\def\nextparenthesiscommandnop{#2}%
\futurelet\nexttoken\inspectnextparenthesischaracter}
+
\def\inspectnextparenthesischaracter
{\ifx\nexttoken\blankspace
\@EA\reinspectnextparenthesischaracter
\else
\@EA\inspectnextparenthesischaracterindeed
\fi}
+
\def\inspectnextparenthesischaracterindeed
{\ifx\nexttoken\nextparenthesischaractertoken
\@EA\nextparenthesiscommandyes
@@ -496,45 +501,9 @@
%D \ifundefined\NameB ... \else ... \fi
%D \stoptyping
-\def\ifundefined#1% ongelukkige naam .. obsolete
+\def\ifundefined#1% obsolete
{\unless\ifcsname#1\endcsname}
-% \def\p!doifundefined#1%
-% {\edef\p!defined{#1}%
-% \unless\ifcsname\detokenize\@EA{\p!defined}\endcsname}
-
-% \def\doifundefinedelse#1%
-% {\edef\p!defined{#1}%
-% \ifcsname\detokenize\@EA{\p!defined}\endcsname
-% \expandafter\secondoftwoarguments
-% \else
-% \expandafter\firstoftwoarguments
-% \fi}
-
-% \def\doifdefinedelse#1%
-% {\edef\p!defined{#1}%
-% \ifcsname\detokenize\@EA{\p!defined}\endcsname
-% \expandafter\firstoftwoarguments
-% \else
-% \expandafter\secondoftwoarguments
-% \fi}
-
-% \def\doifundefined#1%
-% {\edef\p!defined{#1}%
-% \ifcsname\detokenize\@EA{\p!defined}\endcsname
-% \expandafter\gobbleoneargument
-% \else
-% \expandafter\firstofoneargument
-% \fi}
-
-% \def\doifdefined#1%
-% {\edef\p!defined{#1}%
-% \ifcsname\detokenize\@EA{\p!defined}\endcsname
-% \expandafter\firstofoneargument
-% \else
-% \expandafter\gobbleoneargument
-% \fi}
-
\ifdefined\suppressifcsnameerror
\suppressifcsnameerror\plusone
@@ -762,6 +731,7 @@
\else
\expandafter\dodoifinsetelse
\fi}
+
\long\def\dodoifinsetelse#1%
{\edef\!!stringb{#1}%
\ifx\!!stringb\empty
@@ -777,6 +747,7 @@
\else
\expandafter\dodoifinset
\fi}
+
\long\def\dodoifinset#1%
{\edef\!!stringb{#1}%
\ifx\!!stringb\empty
@@ -792,6 +763,7 @@
\else
\expandafter\dodoifnotinset
\fi}
+
\long\def\dodoifnotinset#1%
{\edef\!!stringb{#1}%
\ifx\!!stringb\empty
@@ -807,12 +779,14 @@
\else
\expandafter\dodocheckifiteminsetelse
\fi#2}
+
\def\dodocheckifiteminsetelse
{\ifx\!!stringb\rightoptionalbracket
\expandafter\thirdofthreearguments
\else
\expandafter\dododocheckifiteminsetelse
\fi}
+
\def\dododocheckifiteminsetelse
{\ifx\!!stringa\!!stringb
\expandafter\doquitifiteminsetelse
@@ -827,12 +801,14 @@
\else
\expandafter\dodocheckifiteminset
\fi#2}
+
\def\dodocheckifiteminset
{\ifx\!!stringb\rightoptionalbracket
\expandafter\gobbletwoarguments
\else
\expandafter\dododocheckifiteminset
\fi}
+
\def\dododocheckifiteminset
{\ifx\!!stringa\!!stringb
\expandafter\doquitifiteminset
@@ -847,12 +823,14 @@
\else
\expandafter\dodocheckifitemnotinset
\fi#2}
+
\def\dodocheckifitemnotinset
{\ifx\!!stringb\rightoptionalbracket
\expandafter\secondoftwoarguments
\else
\expandafter\dododocheckifitemnotinset
\fi}
+
\def\dododocheckifitemnotinset
{\ifx\!!stringa\!!stringb
\expandafter\doquitifitemnotinset
@@ -2952,7 +2930,7 @@
\dostarttexdefinition}
\gdef\dostarttexdefinition #1
- {\catcode13=\ignorecatcode%
+ {\catcode\endoflineasciicode\ignorecatcode%
\doifinstringelse\letterhash{\detokenize{#1}}\dodostarttexdefinition\nonostarttexdefinition#1
}
@@ -3102,10 +3080,6 @@
%D \csname if\strippedcsname\something\endcsname
%D \stoptyping
-\ifdefined\letterbackslash \else
- {\catcode`.=0 .catcode`.\ 12 .xdef.letterbackslash{.string\}} % hack
-\fi
-
\def\checkedstrippedcsname#1% this permits \strippedcsname{\xxx} and \strippedcsname{xxx}
{\expandafter\docheckedstrippedcsname\string#1}
@@ -5645,8 +5619,8 @@
\def\untexsomething
{\begingroup
- \catcode`\{=\ignorecatcode
- \catcode`\}=\ignorecatcode
+ \catcode\leftbraceasciicode \ignorecatcode
+ \catcode\rightbraceasciicode\ignorecatcode
\escapechar\minusone
\dountexsomething}
@@ -6498,9 +6472,10 @@
\dounspaced}
\def\unspaceargument#1\to#2%
- {\scratchcounter\catcode32\relax
- \catcode32\ignorecatcode\scantextokens{\edef#2{#1}}%
- \catcode32\scratchcounter}
+ {\scratchcounter\catcode\spaceasciicode
+ \catcode\spaceasciicode\ignorecatcode
+ \scantextokens{\edef#2{#1}}%
+ \catcode\spaceasciicode\scratchcounter}
\def\unspaceafter#1#2%
{\unspaceargument#2\to\ascii
@@ -6696,32 +6671,6 @@
\def\negated#1{\if-#1\else-#1\fi} % does only work in macros or text
-% This permits things like ^\index{hans}^, where hans is
-% duplicated in the text.
-
-\newif\ifduplicate
-
-\bgroup
-
-\gdef\checkduplication % in line with Knuth
- {\ifmmode\expandafter^\else\expandafter\startduplication\fi}
-
-\gdef\insideduplication
- {\ifmmode\expandafter^\else\expandafter\egroup\fi}
-
-\catcode`\^=\activecatcode
-
-\gdef\enableduplication
- {\catcode`\^=\activecatcode \let^\checkduplication}
-
-\gdef\disableduplication
- {\catcode`\^=\superscriptcatcode}
-
-\gdef\startduplication
- {\bgroup \duplicatetrue \let^\insideduplication}
-
-\egroup
-
\def\gobbleassigndimen#1\\{}
\def\assigndimen#1#2%
diff --git a/tex/context/base/syst-ltx.tex b/tex/context/base/syst-ltx.mkii
index ae89ff25b..576121327 100644
--- a/tex/context/base/syst-ltx.tex
+++ b/tex/context/base/syst-ltx.mkii
@@ -11,6 +11,9 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
+%D The bib module assumes that sometimes this command is used but
+%D in \MKIV\ we no longer assume that.
+%D
%D \macros
%D {newcommand}
%D
diff --git a/tex/context/base/syst-pln.tex b/tex/context/base/syst-pln.mkii
index f2b6129ff..f2b6129ff 100644
--- a/tex/context/base/syst-pln.tex
+++ b/tex/context/base/syst-pln.mkii
diff --git a/tex/context/base/syst-pln.mkiv b/tex/context/base/syst-pln.mkiv
new file mode 100644
index 000000000..7fa91b73d
--- /dev/null
+++ b/tex/context/base/syst-pln.mkiv
@@ -0,0 +1,120 @@
+%D \module
+%D [ file=syst-pln,
+%D version=2001.11.16, % 1999.03.17, % an oldie: 1995.10.10
+%D title=\CONTEXT\ System Macros,
+%D subtitle=Efficient \PLAIN\ \TEX\ loading,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+%D This module set a couple of variables to the plain \TEX\
+%D values. Later they might be overloaded. There is not much
+%D difference between \MKII\ and \MKIV\ but at some point they
+%D might diverge.
+
+%D Build||in numeric variables.
+
+\adjdemerits = 10000
+\binoppenalty = 700
+\brokenpenalty = 100
+\clubpenalty = 150
+%day = 0
+\defaulthyphenchar = `\-
+\defaultskewchar = -1
+\delimiterfactor = 901
+\displaywidowpenalty = 50
+\doublehyphendemerits = 10000
+%endlinechar = `\^^M
+\errorcontextlines = 5
+%escapechar = `\\
+\exhyphenpenalty = 50
+%fam = 0
+\finalhyphendemerits = 5000
+%floatingpenalty = 0
+%globaldefs = 0
+%hangafter = 1
+\hbadness = 1000
+%holdinginserts = 0
+\hyphenpenalty = 50
+%interlinepenalty = 0
+%language = 0
+\lefthyphenmin = 2
+\linepenalty = 10
+%looseness = 0
+%mag = 1000
+%maxdeadcycles = 25
+%month = 0
+%newlinechar = -1 % commented i.e. no plain value
+%outputpenalty = 0
+%pausing = 0
+%postdisplaypenalty = 0
+\predisplaypenalty = 10000
+\pretolerance = 100
+\relpenalty = 500
+\righthyphenmin = 3
+\showboxbreadth = 5
+\showboxdepth = 3
+%time = 0
+\tolerance = 200
+%tracingcommands = 0
+\tracinglostchars = 1
+%tracingmacros = 0
+%tracingonline = 0
+%tracingoutput = 0
+%tracingpages = 0
+%tracingparagraphs = 0
+%tracingrestores = 0
+%tracingstats = 0
+\uchyph = 1
+\vbadness = 1000
+\widowpenalty = 150
+%year = 0
+
+%D Build in dimension variables.
+
+\abovedisplayshortskip = 0pt plus 3pt
+\abovedisplayskip = 12pt plus 3pt minus 9pt
+%baselineskip = 0pt
+\belowdisplayshortskip = 7pt plus 3pt minus 4pt
+\belowdisplayskip = 12pt plus 3pt minus 9pt
+\boxmaxdepth = \maxdimen
+\delimitershortfall = 5pt
+%displayindent = 0pt
+%displaywidth = 0pt
+%hangindent = 0pt
+\hfuzz = 0.1pt
+%hoffset = 0pt
+\hsize = 6.5in
+%leftskip = 0pt
+%lineskip = 0pt
+%lineskiplimit = 0pt
+%mathsurround = 0pt
+\maxdepth = 4pt
+\medmuskip = 4mu plus 2mu minus 4mu
+\nulldelimiterspace = 1.2pt
+\overfullrule = 5pt
+\parfillskip = 0pt plus 1fil
+\parindent = 20pt
+\parskip = 0pt plus 1pt
+%predisplaysize = 0pt
+%rightskip = 0pt
+\scriptspace = 0.5pt
+%spaceskip = 0pt
+\splitmaxdepth = \maxdimen
+\splittopskip = 10pt
+%tabskip = 0pt
+\thickmuskip = 5mu plus 5mu
+\thinmuskip = 3mu
+\topskip = 10pt
+\vfuzz = 0.1pt
+%voffset = 0pt
+\vsize = 8.9in
+%xspaceskip = 0pt
+
+\protect \endinput
diff --git a/tex/context/base/tabl-tab.mkiv b/tex/context/base/tabl-tab.mkiv
index a5597d62a..24bbb4dd6 100644
--- a/tex/context/base/tabl-tab.mkiv
+++ b/tex/context/base/tabl-tab.mkiv
@@ -830,10 +830,10 @@
\the\everytable
\fi}
-\bgroup \catcode`\~=13
+\bgroup \catcode\tildeasciicode\activecatcode
\appendtoks
- \catcode`\~=\active
+ \catcode\barasciicode\activecatcode
\def~{\kern.5em}%
\def\\{\ifhmode\space\else\par\fi}%
\to \everytable
@@ -1430,7 +1430,7 @@
\unexpanded\def\definetabletemplate % to be redone
{\bgroup
- \catcode`\|=\othercatcode
+ \catcode\barasciicode\othercatcode
\doquadrupleempty\dodefinetabletemplate}
\def\dodefinetabletemplate[#1][#2][#3][#4]%
@@ -1511,7 +1511,7 @@
% \stoptablenoalign
}
-\bgroup \catcode`\|=\othercatcode
+\bgroup \catcode\barasciicode\othercatcode
\gdef\secondstagestarttable[#1]% brr nested mess
{\bgroup
@@ -1880,11 +1880,11 @@
%D \TABLE\ changes the catcode when needed.}
\bgroup
- \catcode`\|=\othercatcode \gdef\@@otherbar {|}
- \catcode`\|=\activecatcode \gdef\@@useotherbar {\let|\@@otherbar}
+ \catcode\barasciicode\othercatcode \gdef\@@otherbar {|}
+ \catcode\barasciicode\activecatcode \gdef\@@useotherbar {\let|\@@otherbar}
\egroup
-\bgroup \catcode`\|=\othercatcode
+\bgroup \catcode\barasciicode\othercatcode
\gdef\dogettablenofcolumns#1% todo: also divert this to lua as with tabulate
{\bgroup
diff --git a/tex/context/base/unic-ini.mkii b/tex/context/base/unic-ini.mkii
index 3e4c574f3..5f28ba555 100644
--- a/tex/context/base/unic-ini.mkii
+++ b/tex/context/base/unic-ini.mkii
@@ -25,7 +25,7 @@
% Ññ
% ÒÓÔÕÖòóôõö
% Øø
-% ÙÚÛÜùúû
+% ÙÚÛÜùúûü
% Ýýÿ
% ß
diff --git a/tex/context/base/x-xtag.mkiv b/tex/context/base/x-xtag.mkiv
index eaeb89f85..560e1b702 100644
--- a/tex/context/base/x-xtag.mkiv
+++ b/tex/context/base/x-xtag.mkiv
@@ -16,7 +16,8 @@
\ifdefined\XMLbanner \endinput \fi
-\loadcorefile{catc-xml}
+\loadmarkfile{catc-xml}
+
\loadcorefile{xtag-ini}
\loadcorefile{xtag-ext}
\loadcorefile{xtag-exp}
diff --git a/tex/generic/context/luatex-fonts-merged.lua b/tex/generic/context/luatex-fonts-merged.lua
index 67a48dd9c..eaed05a24 100644
--- a/tex/generic/context/luatex-fonts-merged.lua
+++ b/tex/generic/context/luatex-fonts-merged.lua
@@ -1,6 +1,6 @@
-- merged file : luatex-fonts-merged.lua
-- parent file : luatex-fonts.lua
--- merge date : 01/18/11 19:34:25
+-- merge date : 01/23/11 20:36:24
do -- begin closure to overcome local limits and interference