summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2006-04-06 23:00:00 +0200
committerHans Hagen <pragma@wxs.nl>2006-04-06 23:00:00 +0200
commit39a70fce9851e47de70b762fbf9d081afc30b908 (patch)
tree94f6cf5076f0cefcc2e3af7379563b29814d584e
parent9a0fefc34640abc1f6a5c34d89a3ce5ec96ae882 (diff)
downloadcontext-39a70fce9851e47de70b762fbf9d081afc30b908.tar.gz
stable 2006.04.06 23:00
-rw-r--r--bibtex/bst/context/cont-ab.bst126
-rw-r--r--bibtex/bst/context/cont-au.bst124
-rw-r--r--bibtex/bst/context/cont-no.bst126
-rw-r--r--bibtex/bst/context/cont-ti.bst126
-rw-r--r--doc/context/bib/bibmod-doc.pdfbin0 -> 258514 bytes
-rw-r--r--doc/context/bib/bibmod-doc.tex665
-rw-r--r--metapost/context/base/mp-tool.mp6
-rw-r--r--scripts/context/perl/pdftrimwhite.pl40
-rw-r--r--scripts/context/ruby/base/system.rb16
-rw-r--r--scripts/context/ruby/base/tex.rb229
-rw-r--r--scripts/context/ruby/base/texutil.rb58
-rw-r--r--scripts/context/ruby/ctxtools.rb258
-rw-r--r--scripts/context/ruby/graphics/gs.rb17
-rw-r--r--scripts/context/ruby/newtexexec.rb2
-rw-r--r--scripts/context/ruby/texmfstart.rb5
-rw-r--r--scripts/context/ruby/textools.rb68
-rw-r--r--tex/context/base/colo-ini.tex83
-rw-r--r--tex/context/base/cont-new.tex41
-rw-r--r--tex/context/base/context.tex16
-rw-r--r--tex/context/base/core-buf.tex26
-rw-r--r--tex/context/base/core-fil.tex91
-rw-r--r--tex/context/base/core-fnt.tex5
-rw-r--r--tex/context/base/core-int.tex4
-rw-r--r--tex/context/base/core-itm.tex10
-rw-r--r--tex/context/base/core-mat.tex220
-rw-r--r--tex/context/base/core-mis.tex541
-rw-r--r--tex/context/base/core-ref.tex64
-rw-r--r--tex/context/base/core-reg.tex57
-rw-r--r--tex/context/base/core-sys.tex4
-rw-r--r--tex/context/base/core-uti.tex6
-rw-r--r--tex/context/base/core-ver.tex112
-rw-r--r--tex/context/base/enco-032.tex82
-rw-r--r--tex/context/base/enco-agr.tex12
-rw-r--r--tex/context/base/enco-ffr.tex12
-rw-r--r--tex/context/base/enco-ini.tex81
-rw-r--r--tex/context/base/enco-mis.tex10
-rw-r--r--tex/context/base/enco-pfr.tex1
-rw-r--r--tex/context/base/enco-uni.tex5
-rw-r--r--tex/context/base/font-ini.tex10
-rw-r--r--tex/context/base/lang-all.xml12
-rw-r--r--tex/context/base/lang-ctx.tex4
-rw-r--r--tex/context/base/lang-grk.tex7
-rw-r--r--tex/context/base/lang-ini.tex6
-rw-r--r--tex/context/base/m-streams.tex33
-rw-r--r--tex/context/base/m-units.tex16
-rw-r--r--tex/context/base/math-ini.tex43
-rw-r--r--tex/context/base/math-mis.tex49
-rw-r--r--tex/context/base/math-uni.tex171
-rw-r--r--tex/context/base/meta-ini.tex10
-rw-r--r--tex/context/base/mult-con.tex4
-rw-r--r--tex/context/base/mult-sys.tex60
-rw-r--r--tex/context/base/page-flt.tex89
-rw-r--r--tex/context/base/page-lay.tex30
-rw-r--r--tex/context/base/page-lyr.tex9
-rw-r--r--tex/context/base/page-one.tex15
-rw-r--r--tex/context/base/page-sid.tex2
-rw-r--r--tex/context/base/page-str.tex9
-rw-r--r--tex/context/base/page-txt.tex57
-rw-r--r--tex/context/base/regi-cp1250.tex151
-rw-r--r--tex/context/base/regi-syn.tex22
-rw-r--r--tex/context/base/sort-ini.tex28
-rw-r--r--tex/context/base/sort-lan.tex52
-rw-r--r--tex/context/base/sort-new.tex10
-rw-r--r--tex/context/base/spec-tpd.tex196
-rw-r--r--tex/context/base/supp-lan.tex60
-rw-r--r--tex/context/base/supp-mat.tex15
-rw-r--r--tex/context/base/supp-mps.tex4
-rw-r--r--tex/context/base/syst-ext.tex13
-rw-r--r--tex/context/base/type-exa.tex2
-rw-r--r--tex/context/base/type-ini.tex33
-rw-r--r--tex/context/base/unic-032.tex380
-rw-r--r--tex/context/base/unic-033.tex374
-rw-r--r--tex/context/base/unic-ini.tex2
-rw-r--r--tex/context/base/verb-ini.tex2
-rw-r--r--tex/context/base/xtag-ext.tex27
-rw-r--r--tex/context/base/xtag-ini.tex1
-rw-r--r--tex/context/base/xtag-mmp.tex21
-rw-r--r--tex/context/base/xtag-pml.tex40
-rw-r--r--tex/context/base/xtag-pmu.tex68
-rw-r--r--tex/context/base/xtag-stk.tex18
-rw-r--r--tex/context/bib/bibl-ams.tex438
-rw-r--r--tex/context/bib/bibl-apa-de.tex388
-rw-r--r--tex/context/bib/bibl-apa-fr.tex389
-rw-r--r--tex/context/bib/bibl-apa.tex52
-rw-r--r--tex/context/bib/bibl-aps.tex36
-rw-r--r--tex/context/bib/bibl-num-fr.tex427
-rw-r--r--tex/context/bib/bibl-num.tex427
-rw-r--r--tex/context/bib/bibl-ssa.tex486
-rw-r--r--tex/context/bib/t-bib.tex701
-rw-r--r--tex/context/bib/t-bibltx.tex75
-rw-r--r--tex/context/interface/cont-cz.xml3
-rw-r--r--tex/context/interface/cont-de.xml3
-rw-r--r--tex/context/interface/cont-en.xml3
-rw-r--r--tex/context/interface/cont-fr.xml3
-rw-r--r--tex/context/interface/cont-it.xml3
-rw-r--r--tex/context/interface/cont-nl.xml3
-rw-r--r--tex/context/interface/cont-ro.xml3
-rw-r--r--tex/context/interface/keys-cz.xml3
-rw-r--r--tex/context/interface/keys-de.xml3
-rw-r--r--tex/context/interface/keys-en.xml3
-rw-r--r--tex/context/interface/keys-fr.xml3
-rw-r--r--tex/context/interface/keys-it.xml3
-rw-r--r--tex/context/interface/keys-nl.xml3
-rw-r--r--tex/context/interface/keys-ro.xml3
-rw-r--r--tex/context/interface/t-bib.xml386
-rw-r--r--tex/context/patterns/lang-agr.hyp10
-rw-r--r--tex/context/patterns/lang-agr.pat2026
107 files changed, 9941 insertions, 1446 deletions
diff --git a/bibtex/bst/context/cont-ab.bst b/bibtex/bst/context/cont-ab.bst
index cc3c9411a..3b1b3c9f9 100644
--- a/bibtex/bst/context/cont-ab.bst
+++ b/bibtex/bst/context/cont-ab.bst
@@ -11,7 +11,7 @@
% only two lines: the ITERATEs right before the two SORTs can
% have different values, sorting by either one of
%
-% -------------------------- cont-master.bst clabel
+% -------------------------- cont-master.bst author
% - the author (+year, title) : cont-au.bst author
% - the title (+author, year) : cont-ti.bst title
% - the short key a la abbrev : cont-ab.bst clabel
@@ -58,6 +58,7 @@
% \chapter
% \city
% \comment
+% \country
% \crossref
% \edition
% \isbn
@@ -70,6 +71,7 @@
% \month
% \names
% \note
+% \notes
% \organization
% \pages
% \pubname
@@ -78,11 +80,23 @@
% \size
% \thekey
% \title
-% \type
+% \bibtype
% \volume
% \eprint
% \doi
% \howpublished
+% \biburl
+% \lastchecked
+% for ieee:
+
+% \nationality
+% \assignee
+% \bibnumber
+% \day
+% \dayfiled
+% \monthfiled
+% \yearfiled
+% \revision
ENTRY
{ abstract
@@ -92,6 +106,7 @@ ENTRY
booktitle
chapter
comment
+ country
doi
edition
editor
@@ -105,9 +120,11 @@ ENTRY
keyword
keywords
language
+ lastchecked
month
names
note
+ notes
number
organization
pages
@@ -117,8 +134,17 @@ ENTRY
size
title
type
+ url
volume
year
+ nationality
+ assignee
+ bibnumber
+ day
+ dayfiled
+ monthfiled
+ yearfiled
+ revision
}
{}
{ label extra.label sort.label clabel sort.clabel ordinal.label}
@@ -197,11 +223,19 @@ FUNCTION {start.entry}
doi empty$
{}
{
- "o=" write$
+ "o={" write$
doi write$
- "," write$
+ "}," write$
} if$
newline$
+ url empty$
+ {}
+ {
+ "u={" write$
+ url write$
+ "}," write$
+ newline$
+ } if$
"n=" write$
ordinal.label write$
",s=" write$
@@ -212,7 +246,9 @@ FUNCTION {start.entry}
}
FUNCTION {stop.entry}
-{ "" "\note" note do.out
+{ "" "\country" country do.out
+ "" "\note" note do.out
+ "" "\notes" notes do.out
"" "\annotate" annotate do.out
"" "\eprint" eprint do.out
"" "\doi" doi do.out
@@ -222,6 +258,8 @@ FUNCTION {stop.entry}
"" "\abstract" abstract do.out
"" "\names" names do.out
"" "\size" size do.out
+ "" "\biburl" url do.out
+ "" "\lastchecked" lastchecked do.out
"\stoppublication" write$
newline$
}
@@ -380,7 +418,7 @@ FUNCTION {format.vol.num.page}
FUNCTION {format.type.chapter.pages}
{ chapter empty$
'format.pages
- { "" "\type" type do.out
+ { "" "\bibtype" type do.out
"" "\chapter" chapter do.out
}
if$
@@ -413,7 +451,7 @@ FUNCTION {format.in.booktitle.or.series}
FUNCTION {format.tr.number}
-{"" "\type" type do.out
+{"" "\bibtype" type do.out
"" "\volume" number do.out
}
@@ -566,7 +604,7 @@ FUNCTION {mastersthesis}
format.authors
format.year
format.t.title
- "" "\type" type do.out
+ "" "\bibtype" type do.out
"" "\pubname" school do.out
"" "\month" month do.out
"" "\city" address do.out
@@ -591,7 +629,7 @@ FUNCTION {phdthesis}
format.authors
format.title
format.year
- "" "\type" type do.out
+ "" "\bibtype" type do.out
"" "\month" month do.out
"" "\pubname" school do.out
"" "\city" address do.out
@@ -630,6 +668,64 @@ FUNCTION {unpublished}
stop.entry
}
+% 4 additions from IEEEtran
+
+FUNCTION {electronic}
+{ start.entry
+ format.authors
+ format.year
+ format.t.title
+ "" "\month" month do.out
+ "" "\city" address do.out
+ "" "\organization" organization do.out
+ "" "\howpublished" howpublished do.out
+ stop.entry
+}
+FUNCTION {patent}
+{ start.entry
+ format.authors
+ format.year
+ format.t.title
+ "" "\city" address do.out
+ "" "\nationality" nationality do.out
+ "" "\assignee" assignee do.out
+ "" "\bibtype" type do.out
+ "" "\month" month do.out
+ "" "\monthfiled" monthfiled do.out
+ "" "\yearfiled" yearfiled do.out
+ "" "\day" day do.out
+ "" "\dayfiled" dayfiled do.out
+ stop.entry
+}
+FUNCTION {periodical}
+{ start.entry
+ format.editors
+ format.year
+ format.title
+ format.number.series
+ "" "\bibnumber" number do.out
+ "" "\month" month do.out
+ "" "\organization" organization do.out
+ stop.entry
+}
+FUNCTION {standard}
+{ start.entry
+ format.authors
+ format.year
+ format.title
+ "" "\bibtype" type do.out
+ "" "\organization" organization do.out
+ "" "\city" address do.out
+ "" "\revision" revision do.out
+ "" "\pubname" institution do.out
+ "" "\howpublished" howpublished do.out
+ "" "\bibnumber" number do.out
+ "" "\month" month do.out
+ stop.entry
+}
+
+FUNCTION {IEEEtranBSTCTL} { }
+
FUNCTION {default.type} { misc }
@@ -677,14 +773,20 @@ FUNCTION {chop.word}
FUNCTION {format.lab.names}
{ 's :=
s #1 "{vv~}{ll}" format.name$
+ "{" swap$ * "}" *
+ s num.names$ duplicate$
+ #1 >
+ { pop$ "," * }
+ { pop$ }
+ if$
s num.names$ duplicate$
#2 >
- { pop$ " et~al." * }
+ { pop$ "{}" * }
{ #2 <
'skip$
{ s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
- { " et~al." * }
- { " and " * s #2 "{vv~}{ll}" format.name$ * }
+ { "{}" * }
+ { s #2 "{vv~}{ll}" format.name$ "{" swap$ * "}" * * }
if$
}
if$
diff --git a/bibtex/bst/context/cont-au.bst b/bibtex/bst/context/cont-au.bst
index 3af407181..946860901 100644
--- a/bibtex/bst/context/cont-au.bst
+++ b/bibtex/bst/context/cont-au.bst
@@ -58,6 +58,7 @@
% \chapter
% \city
% \comment
+% \country
% \crossref
% \edition
% \isbn
@@ -70,6 +71,7 @@
% \month
% \names
% \note
+% \notes
% \organization
% \pages
% \pubname
@@ -78,11 +80,23 @@
% \size
% \thekey
% \title
-% \type
+% \bibtype
% \volume
% \eprint
% \doi
% \howpublished
+% \biburl
+% \lastchecked
+% for ieee:
+
+% \nationality
+% \assignee
+% \bibnumber
+% \day
+% \dayfiled
+% \monthfiled
+% \yearfiled
+% \revision
ENTRY
{ abstract
@@ -92,6 +106,7 @@ ENTRY
booktitle
chapter
comment
+ country
doi
edition
editor
@@ -105,9 +120,11 @@ ENTRY
keyword
keywords
language
+ lastchecked
month
names
note
+ notes
number
organization
pages
@@ -117,8 +134,17 @@ ENTRY
size
title
type
+ url
volume
year
+ nationality
+ assignee
+ bibnumber
+ day
+ dayfiled
+ monthfiled
+ yearfiled
+ revision
}
{}
{ label extra.label sort.label clabel sort.clabel ordinal.label}
@@ -197,11 +223,19 @@ FUNCTION {start.entry}
doi empty$
{}
{
- "o=" write$
+ "o={" write$
doi write$
- "," write$
+ "}," write$
} if$
newline$
+ url empty$
+ {}
+ {
+ "u={" write$
+ url write$
+ "}," write$
+ newline$
+ } if$
"n=" write$
ordinal.label write$
",s=" write$
@@ -212,7 +246,9 @@ FUNCTION {start.entry}
}
FUNCTION {stop.entry}
-{ "" "\note" note do.out
+{ "" "\country" country do.out
+ "" "\note" note do.out
+ "" "\notes" notes do.out
"" "\annotate" annotate do.out
"" "\eprint" eprint do.out
"" "\doi" doi do.out
@@ -222,6 +258,8 @@ FUNCTION {stop.entry}
"" "\abstract" abstract do.out
"" "\names" names do.out
"" "\size" size do.out
+ "" "\biburl" url do.out
+ "" "\lastchecked" lastchecked do.out
"\stoppublication" write$
newline$
}
@@ -380,7 +418,7 @@ FUNCTION {format.vol.num.page}
FUNCTION {format.type.chapter.pages}
{ chapter empty$
'format.pages
- { "" "\type" type do.out
+ { "" "\bibtype" type do.out
"" "\chapter" chapter do.out
}
if$
@@ -413,7 +451,7 @@ FUNCTION {format.in.booktitle.or.series}
FUNCTION {format.tr.number}
-{"" "\type" type do.out
+{"" "\bibtype" type do.out
"" "\volume" number do.out
}
@@ -566,7 +604,7 @@ FUNCTION {mastersthesis}
format.authors
format.year
format.t.title
- "" "\type" type do.out
+ "" "\bibtype" type do.out
"" "\pubname" school do.out
"" "\month" month do.out
"" "\city" address do.out
@@ -591,7 +629,7 @@ FUNCTION {phdthesis}
format.authors
format.title
format.year
- "" "\type" type do.out
+ "" "\bibtype" type do.out
"" "\month" month do.out
"" "\pubname" school do.out
"" "\city" address do.out
@@ -630,6 +668,64 @@ FUNCTION {unpublished}
stop.entry
}
+% 4 additions from IEEEtran
+
+FUNCTION {electronic}
+{ start.entry
+ format.authors
+ format.year
+ format.t.title
+ "" "\month" month do.out
+ "" "\city" address do.out
+ "" "\organization" organization do.out
+ "" "\howpublished" howpublished do.out
+ stop.entry
+}
+FUNCTION {patent}
+{ start.entry
+ format.authors
+ format.year
+ format.t.title
+ "" "\city" address do.out
+ "" "\nationality" nationality do.out
+ "" "\assignee" assignee do.out
+ "" "\bibtype" type do.out
+ "" "\month" month do.out
+ "" "\monthfiled" monthfiled do.out
+ "" "\yearfiled" yearfiled do.out
+ "" "\day" day do.out
+ "" "\dayfiled" dayfiled do.out
+ stop.entry
+}
+FUNCTION {periodical}
+{ start.entry
+ format.editors
+ format.year
+ format.title
+ format.number.series
+ "" "\bibnumber" number do.out
+ "" "\month" month do.out
+ "" "\organization" organization do.out
+ stop.entry
+}
+FUNCTION {standard}
+{ start.entry
+ format.authors
+ format.year
+ format.title
+ "" "\bibtype" type do.out
+ "" "\organization" organization do.out
+ "" "\city" address do.out
+ "" "\revision" revision do.out
+ "" "\pubname" institution do.out
+ "" "\howpublished" howpublished do.out
+ "" "\bibnumber" number do.out
+ "" "\month" month do.out
+ stop.entry
+}
+
+FUNCTION {IEEEtranBSTCTL} { }
+
FUNCTION {default.type} { misc }
@@ -677,14 +773,20 @@ FUNCTION {chop.word}
FUNCTION {format.lab.names}
{ 's :=
s #1 "{vv~}{ll}" format.name$
+ "{" swap$ * "}" *
+ s num.names$ duplicate$
+ #1 >
+ { pop$ "," * }
+ { pop$ }
+ if$
s num.names$ duplicate$
#2 >
- { pop$ " et~al." * }
+ { pop$ "{}" * }
{ #2 <
'skip$
{ s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
- { " et~al." * }
- { " and " * s #2 "{vv~}{ll}" format.name$ * }
+ { "{}" * }
+ { s #2 "{vv~}{ll}" format.name$ "{" swap$ * "}" * * }
if$
}
if$
diff --git a/bibtex/bst/context/cont-no.bst b/bibtex/bst/context/cont-no.bst
index 7b582f359..a0cb52151 100644
--- a/bibtex/bst/context/cont-no.bst
+++ b/bibtex/bst/context/cont-no.bst
@@ -11,7 +11,7 @@
% only two lines: the ITERATEs right before the two SORTs can
% have different values, sorting by either one of
%
-% -------------------------- cont-master.bst none
+% -------------------------- cont-master.bst author
% - the author (+year, title) : cont-au.bst author
% - the title (+author, year) : cont-ti.bst title
% - the short key a la abbrev : cont-ab.bst clabel
@@ -58,6 +58,7 @@
% \chapter
% \city
% \comment
+% \country
% \crossref
% \edition
% \isbn
@@ -70,6 +71,7 @@
% \month
% \names
% \note
+% \notes
% \organization
% \pages
% \pubname
@@ -78,11 +80,23 @@
% \size
% \thekey
% \title
-% \type
+% \bibtype
% \volume
% \eprint
% \doi
% \howpublished
+% \biburl
+% \lastchecked
+% for ieee:
+
+% \nationality
+% \assignee
+% \bibnumber
+% \day
+% \dayfiled
+% \monthfiled
+% \yearfiled
+% \revision
ENTRY
{ abstract
@@ -92,6 +106,7 @@ ENTRY
booktitle
chapter
comment
+ country
doi
edition
editor
@@ -105,9 +120,11 @@ ENTRY
keyword
keywords
language
+ lastchecked
month
names
note
+ notes
number
organization
pages
@@ -117,8 +134,17 @@ ENTRY
size
title
type
+ url
volume
year
+ nationality
+ assignee
+ bibnumber
+ day
+ dayfiled
+ monthfiled
+ yearfiled
+ revision
}
{}
{ label extra.label sort.label clabel sort.clabel ordinal.label}
@@ -197,11 +223,19 @@ FUNCTION {start.entry}
doi empty$
{}
{
- "o=" write$
+ "o={" write$
doi write$
- "," write$
+ "}," write$
} if$
newline$
+ url empty$
+ {}
+ {
+ "u={" write$
+ url write$
+ "}," write$
+ newline$
+ } if$
"n=" write$
ordinal.label write$
",s=" write$
@@ -212,7 +246,9 @@ FUNCTION {start.entry}
}
FUNCTION {stop.entry}
-{ "" "\note" note do.out
+{ "" "\country" country do.out
+ "" "\note" note do.out
+ "" "\notes" notes do.out
"" "\annotate" annotate do.out
"" "\eprint" eprint do.out
"" "\doi" doi do.out
@@ -222,6 +258,8 @@ FUNCTION {stop.entry}
"" "\abstract" abstract do.out
"" "\names" names do.out
"" "\size" size do.out
+ "" "\biburl" url do.out
+ "" "\lastchecked" lastchecked do.out
"\stoppublication" write$
newline$
}
@@ -380,7 +418,7 @@ FUNCTION {format.vol.num.page}
FUNCTION {format.type.chapter.pages}
{ chapter empty$
'format.pages
- { "" "\type" type do.out
+ { "" "\bibtype" type do.out
"" "\chapter" chapter do.out
}
if$
@@ -413,7 +451,7 @@ FUNCTION {format.in.booktitle.or.series}
FUNCTION {format.tr.number}
-{"" "\type" type do.out
+{"" "\bibtype" type do.out
"" "\volume" number do.out
}
@@ -566,7 +604,7 @@ FUNCTION {mastersthesis}
format.authors
format.year
format.t.title
- "" "\type" type do.out
+ "" "\bibtype" type do.out
"" "\pubname" school do.out
"" "\month" month do.out
"" "\city" address do.out
@@ -591,7 +629,7 @@ FUNCTION {phdthesis}
format.authors
format.title
format.year
- "" "\type" type do.out
+ "" "\bibtype" type do.out
"" "\month" month do.out
"" "\pubname" school do.out
"" "\city" address do.out
@@ -630,6 +668,64 @@ FUNCTION {unpublished}
stop.entry
}
+% 4 additions from IEEEtran
+
+FUNCTION {electronic}
+{ start.entry
+ format.authors
+ format.year
+ format.t.title
+ "" "\month" month do.out
+ "" "\city" address do.out
+ "" "\organization" organization do.out
+ "" "\howpublished" howpublished do.out
+ stop.entry
+}
+FUNCTION {patent}
+{ start.entry
+ format.authors
+ format.year
+ format.t.title
+ "" "\city" address do.out
+ "" "\nationality" nationality do.out
+ "" "\assignee" assignee do.out
+ "" "\bibtype" type do.out
+ "" "\month" month do.out
+ "" "\monthfiled" monthfiled do.out
+ "" "\yearfiled" yearfiled do.out
+ "" "\day" day do.out
+ "" "\dayfiled" dayfiled do.out
+ stop.entry
+}
+FUNCTION {periodical}
+{ start.entry
+ format.editors
+ format.year
+ format.title
+ format.number.series
+ "" "\bibnumber" number do.out
+ "" "\month" month do.out
+ "" "\organization" organization do.out
+ stop.entry
+}
+FUNCTION {standard}
+{ start.entry
+ format.authors
+ format.year
+ format.title
+ "" "\bibtype" type do.out
+ "" "\organization" organization do.out
+ "" "\city" address do.out
+ "" "\revision" revision do.out
+ "" "\pubname" institution do.out
+ "" "\howpublished" howpublished do.out
+ "" "\bibnumber" number do.out
+ "" "\month" month do.out
+ stop.entry
+}
+
+FUNCTION {IEEEtranBSTCTL} { }
+
FUNCTION {default.type} { misc }
@@ -677,14 +773,20 @@ FUNCTION {chop.word}
FUNCTION {format.lab.names}
{ 's :=
s #1 "{vv~}{ll}" format.name$
+ "{" swap$ * "}" *
+ s num.names$ duplicate$
+ #1 >
+ { pop$ "," * }
+ { pop$ }
+ if$
s num.names$ duplicate$
#2 >
- { pop$ " et~al." * }
+ { pop$ "{}" * }
{ #2 <
'skip$
{ s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
- { " et~al." * }
- { " and " * s #2 "{vv~}{ll}" format.name$ * }
+ { "{}" * }
+ { s #2 "{vv~}{ll}" format.name$ "{" swap$ * "}" * * }
if$
}
if$
diff --git a/bibtex/bst/context/cont-ti.bst b/bibtex/bst/context/cont-ti.bst
index b4660d6ae..a0d53433a 100644
--- a/bibtex/bst/context/cont-ti.bst
+++ b/bibtex/bst/context/cont-ti.bst
@@ -11,7 +11,7 @@
% only two lines: the ITERATEs right before the two SORTs can
% have different values, sorting by either one of
%
-% -------------------------- cont-master.bst title
+% -------------------------- cont-master.bst author
% - the author (+year, title) : cont-au.bst author
% - the title (+author, year) : cont-ti.bst title
% - the short key a la abbrev : cont-ab.bst clabel
@@ -58,6 +58,7 @@
% \chapter
% \city
% \comment
+% \country
% \crossref
% \edition
% \isbn
@@ -70,6 +71,7 @@
% \month
% \names
% \note
+% \notes
% \organization
% \pages
% \pubname
@@ -78,11 +80,23 @@
% \size
% \thekey
% \title
-% \type
+% \bibtype
% \volume
% \eprint
% \doi
% \howpublished
+% \biburl
+% \lastchecked
+% for ieee:
+
+% \nationality
+% \assignee
+% \bibnumber
+% \day
+% \dayfiled
+% \monthfiled
+% \yearfiled
+% \revision
ENTRY
{ abstract
@@ -92,6 +106,7 @@ ENTRY
booktitle
chapter
comment
+ country
doi
edition
editor
@@ -105,9 +120,11 @@ ENTRY
keyword
keywords
language
+ lastchecked
month
names
note
+ notes
number
organization
pages
@@ -117,8 +134,17 @@ ENTRY
size
title
type
+ url
volume
year
+ nationality
+ assignee
+ bibnumber
+ day
+ dayfiled
+ monthfiled
+ yearfiled
+ revision
}
{}
{ label extra.label sort.label clabel sort.clabel ordinal.label}
@@ -197,11 +223,19 @@ FUNCTION {start.entry}
doi empty$
{}
{
- "o=" write$
+ "o={" write$
doi write$
- "," write$
+ "}," write$
} if$
newline$
+ url empty$
+ {}
+ {
+ "u={" write$
+ url write$
+ "}," write$
+ newline$
+ } if$
"n=" write$
ordinal.label write$
",s=" write$
@@ -212,7 +246,9 @@ FUNCTION {start.entry}
}
FUNCTION {stop.entry}
-{ "" "\note" note do.out
+{ "" "\country" country do.out
+ "" "\note" note do.out
+ "" "\notes" notes do.out
"" "\annotate" annotate do.out
"" "\eprint" eprint do.out
"" "\doi" doi do.out
@@ -222,6 +258,8 @@ FUNCTION {stop.entry}
"" "\abstract" abstract do.out
"" "\names" names do.out
"" "\size" size do.out
+ "" "\biburl" url do.out
+ "" "\lastchecked" lastchecked do.out
"\stoppublication" write$
newline$
}
@@ -380,7 +418,7 @@ FUNCTION {format.vol.num.page}
FUNCTION {format.type.chapter.pages}
{ chapter empty$
'format.pages
- { "" "\type" type do.out
+ { "" "\bibtype" type do.out
"" "\chapter" chapter do.out
}
if$
@@ -413,7 +451,7 @@ FUNCTION {format.in.booktitle.or.series}
FUNCTION {format.tr.number}
-{"" "\type" type do.out
+{"" "\bibtype" type do.out
"" "\volume" number do.out
}
@@ -566,7 +604,7 @@ FUNCTION {mastersthesis}
format.authors
format.year
format.t.title
- "" "\type" type do.out
+ "" "\bibtype" type do.out
"" "\pubname" school do.out
"" "\month" month do.out
"" "\city" address do.out
@@ -591,7 +629,7 @@ FUNCTION {phdthesis}
format.authors
format.title
format.year
- "" "\type" type do.out
+ "" "\bibtype" type do.out
"" "\month" month do.out
"" "\pubname" school do.out
"" "\city" address do.out
@@ -630,6 +668,64 @@ FUNCTION {unpublished}
stop.entry
}
+% 4 additions from IEEEtran
+
+FUNCTION {electronic}
+{ start.entry
+ format.authors
+ format.year
+ format.t.title
+ "" "\month" month do.out
+ "" "\city" address do.out
+ "" "\organization" organization do.out
+ "" "\howpublished" howpublished do.out
+ stop.entry
+}
+FUNCTION {patent}
+{ start.entry
+ format.authors
+ format.year
+ format.t.title
+ "" "\city" address do.out
+ "" "\nationality" nationality do.out
+ "" "\assignee" assignee do.out
+ "" "\bibtype" type do.out
+ "" "\month" month do.out
+ "" "\monthfiled" monthfiled do.out
+ "" "\yearfiled" yearfiled do.out
+ "" "\day" day do.out
+ "" "\dayfiled" dayfiled do.out
+ stop.entry
+}
+FUNCTION {periodical}
+{ start.entry
+ format.editors
+ format.year
+ format.title
+ format.number.series
+ "" "\bibnumber" number do.out
+ "" "\month" month do.out
+ "" "\organization" organization do.out
+ stop.entry
+}
+FUNCTION {standard}
+{ start.entry
+ format.authors
+ format.year
+ format.title
+ "" "\bibtype" type do.out
+ "" "\organization" organization do.out
+ "" "\city" address do.out
+ "" "\revision" revision do.out
+ "" "\pubname" institution do.out
+ "" "\howpublished" howpublished do.out
+ "" "\bibnumber" number do.out
+ "" "\month" month do.out
+ stop.entry
+}
+
+FUNCTION {IEEEtranBSTCTL} { }
+
FUNCTION {default.type} { misc }
@@ -677,14 +773,20 @@ FUNCTION {chop.word}
FUNCTION {format.lab.names}
{ 's :=
s #1 "{vv~}{ll}" format.name$
+ "{" swap$ * "}" *
+ s num.names$ duplicate$
+ #1 >
+ { pop$ "," * }
+ { pop$ }
+ if$
s num.names$ duplicate$
#2 >
- { pop$ " et~al." * }
+ { pop$ "{}" * }
{ #2 <
'skip$
{ s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
- { " et~al." * }
- { " and " * s #2 "{vv~}{ll}" format.name$ * }
+ { "{}" * }
+ { s #2 "{vv~}{ll}" format.name$ "{" swap$ * "}" * * }
if$
}
if$
diff --git a/doc/context/bib/bibmod-doc.pdf b/doc/context/bib/bibmod-doc.pdf
new file mode 100644
index 000000000..4a5aa523d
--- /dev/null
+++ b/doc/context/bib/bibmod-doc.pdf
Binary files differ
diff --git a/doc/context/bib/bibmod-doc.tex b/doc/context/bib/bibmod-doc.tex
new file mode 100644
index 000000000..b1ba4dcc3
--- /dev/null
+++ b/doc/context/bib/bibmod-doc.tex
@@ -0,0 +1,665 @@
+
+\usemodule[int-load]
+\def\loadsetups{}
+\setupinteraction[state=start]
+\setupcolors[state=start]
+
+\usemodule[bib,set-11,mod-01]
+\setuppublications[alternative=num]
+
+\startXMLmapping[zero]
+\processXMLfilegrouped{t-bib.xml}
+\stopXMLmapping
+
+\setupitemize[each][packed]
+
+\setuphead[section][page=]
+
+\setupoutput[pdftex]
+
+\def\BIBTEX{Bib\TeX}
+\def\MAPS{Maps}
+
+
+\startbuffer[bibexample]
+\startpublication[k=me,
+ t=manual,
+ a=Hoekwater,
+ y=2006,
+ s=TH2006,
+ n=1,
+ u=http://contextgarden.net/Bibliography]
+\author[]{Taco}[T.]{}{Hoekwater}
+\title{\CONTEXT\ Publication Module, The user documententation}
+\pubyear{2006}
+\note{In case you didn't know: it's the document you are reading now}
+\pages{12}
+\stoppublication
+\stopbuffer
+
+\getbuffer[bibexample]
+
+\startmodule[type=tex]
+
+\startdocumentation
+
+\module
+ [ file=bibmod-doc,
+ version=2006.03.13,
+ title=Module Documentation,
+ subtitle=Bibliographies,
+ author={Taco Hoekwater},
+ date=\currentdate,
+ copyright=Taco Hoekwater]
+
+\completecontent
+
+\section{Introduction}
+
+The bibliographic module (\type{t-bib.tex}) takes care of references
+to publications and the typesetting of publication lists, as well as
+providing an interface between \BIBTEX and \CONTEXT. This manual
+documents version 2006.03.13.
+
+The bibliographic subsystem consists of the main module
+\type{t-bib.tex}; four \BIBTEX\ styles (\type{cont-xx.bst}); and a set
+of example configuration files (\type{bibl-xxx.tex}) that set up
+specific formatting styles for both the citations and the list of
+references.
+
+
+\subsection{General overview}
+
+A typical input file obeys following structure:
+\startitemize[n]
+\item A call to \type{\usemodule[bib]}.
+\item Optionally, a few setup commands for the bibliographic module.
+\item A number of definitions of publications to be referenced in the
+main text of the article. The source of these definitions can be
+a combination of:
+ \startitemize
+ \item THe \type{\jobname.bbl} file (automatically read at \type{\starttext})
+ \item extra bbl files
+ \item a file or inline macros before \type{\starttext}
+ \stopitemize
+ These possibilities will be explained below. For now, it is
+ only important to realize that of all these definitions have to be known
+ {\it before} the first citation in the text.
+\item \type{\starttext}
+\item The body text, with a number of \type{\cite} commands.
+\item The list of publications, called using the command
+ \type{\placepublications} or the command\break \type{\completepublications}.
+\item \type{\stoptext}
+\stopitemize
+
+\section{Setup commands}
+
+Bibliographic references use a specific `style', a collection of rules
+for the use of \type{\cite} as well as for the formatting that is
+applied to the publication list. The \CONTEXT\ bibliographic module
+expects you to define all of these style options in one single
+file of which the names starts with the prefix \type{bibl-}.
+
+Unlike the normal situation in \LATEX, this style {\it also\/}
+includes the formatting of the items themselves. Because of this, the
+\type{.bbl} file is set up as a database of entries with fields.
+
+\subsection{Global settings: \type{\setuppublications}}
+
+The most important user-level command is
+\type{\setuppublications}. Most of the options to this command
+shoudl be set by the bibliography style file, but a few of them are of
+immediate interest to the casual user as well.
+
+Like all setup commands, thus command should be given before
+\type{\starttext}, as it sets up global information about the
+bibliographic references used in the document. \CONTEXT\ needs this
+information in order to function correctly.
+
+\setup{setuppublications}
+
+\starttabulate[|l|p|]
+\NC alternative\NC This gives the name of a bibliography style. \crlf
+ The chosen style defines the other default options, the options
+ given in this documentation are the defaults as they are set up
+ by the `apa' style. When this argument is given, the newly set
+style is read in first, before the other options are processed. Thus
+allowing you to override specific settings from the chosen style.\NC\NR
+\NC refcommand \NC the default option for \type{\cite}\NC \NR
+\NC sorttype\NC How the publications in the final publication
+ list should be sorted. `cite' means: by the order in which
+ they were first cited in your text. `bbl' tells the
+ module to keep the relative ordering in which the publication
+ definitions were found\crlf
+ The current default for apa is `cite'\NC\NR
+\NC criterium\NC Whether to list only the referenced
+ publications or all of them.\crlf
+ If this value is `all', then if `sorttype' equals `cite', this
+ means that all referred-to publications are listed
+ before all others, otherwise (if `sorttype' equals `bbl') you will
+ just get a typeset version of the used database(s).\crlf
+ The default for apa is `used'\NC\NR
+\NC numbering\NC Whether or not the publication list
+ should be labelled and if so, how. \type{yes} uses the item number in
+ the publication list as label. \type{short} uses the short
+ label. \type{bib}
+ uses the original number in the \BIBTEX\ database as a label.
+ Anything else turns labelling off.\crlf
+ The default for apa is `no'\NC\NR
+\NC autohang\NC Whether or not the
+ hanging indent should be re-calculated based on the real size of the
+ label. This option only applies if numbering is turned on.\crlf
+ The default is `no'.\NC\NR
+\stoptabulate
+
+\subsection{How the entries are formatted: \type{\setuppublicationlist}}
+
+\setup{setuppublicationlist}
+
+The list of publications at the end of the article is essentially a
+normal context `list' that behaves much like the list that defines the
+table of contents, with the following changes:
+
+The module defines a set of extra options. These option names are static, they
+do {\it not} change to follow the selected \CONTEXT\ interface language.
+
+The first two options provide default widths for `autohang':
+\starttabulate[|l|p|]
+\NC totalnumber\NC The total number of items in the following list (used for autohang).\NC\NR
+\NC samplesize\NC The longest short label in the list (used for autohang)\NC\NR
+\stoptabulate
+
+The other extra options are needed to control micro||typesetting
+of things that are buried deep within macros. There is a separate
+command to handle the larger layout options
+(\type{\setuppublicationlayout}, explained below), but the options
+here are the only way to make changes in the formatting used for
+editors', authors', and article authors' names.
+\starttabulate[|l|p|]
+\NC editor \NC command to typeset one editor in the publication list.\NC \NR
+\NC author \NC command to typeset one author in the publication list.\NC \NR
+\NC artauthor \NC command to typeset one article author in the publication list.\NC \NR
+\NC namesep \NC the separation between consecutive names (either
+ editors, authors or artauthors).\NC \NR
+\NC lastnamesep \NC the separation before the last name in a list of names.\NC \NR
+\NC firstnamesep \NC the separation following the fistname or inits within a name in the publication list.\NC \NR
+\NC juniorsep \NC likewise for `junior'.\NC \NR
+\NC vonsep \NC likewise for `von'.\NC \NR
+\NC surnamesep \NC likewise for surname.\NC \NR
+\stoptabulate
+The commands after `editor' e.g. are predefined
+macros that control how a single name is typeset. The four supplied
+macros provide formatting that looks like this:
+
+{\setvalue{@@currentalternative}{data}
+\starttabulate[|l|p|]
+\NC\tex{invertedauthor}\NC \invertedauthor{Taco}{von}{Hoekwater}{T}{jr}\NC\NR
+\NC\tex{invertedshortauthor}\NC \invertedshortauthor{Taco}{von}{Hoekwater}{T}{jr}\NC\NR
+\NC\tex{normalauthor}\NC \normalauthor{Taco}{von}{Hoekwater}{T}{jr}\NC\NR
+\NC\tex{normalshortauthor}\NC \normalshortauthor{Taco}{von}{Hoekwater}{T}{jr}\NC\NR
+\stoptabulate
+}
+As you can see in the examples, there is a connection between certain
+styles of displaying a name and the punctuation used. Punctuation in
+this document has been set up by the `ap' style, and that style makes
+sure that \type{\invertedshortauthor} looks good, since that is the default
+command for `apa' style. (Keep in mind that the comma at the end of the
+author will be inserted by either `namesep' or `lastnamesep'.)
+
+In case you are not happy with the predefined macros; it is quite simple to
+define one of these macros yourself, it is a simple macro with 5
+arguments: firstnames, von-part, surname, inits, junior.
+
+For example, here is the definition of \type{\normalauthor},
+\starttyping
+\def\normalauthor#1#2#3#4#5%
+ {\bibdoif{#1}{#1\bibalternative{firstnamesep}}%
+ \bibdoif{#2}{#2\bibalternative{vonsep}}%
+ #3\bibalternative{surnamesep}%
+ \bibdoif{#5}{#5\unskip}}
+\stoptyping
+but commands can be a lot simpler, like this:
+\starttyping
+\def\surnameonly#1#2#3#4#5{#3}
+\setuppublicationlist[editor=\surnameonly]
+\stoptyping
+
+
+Apart from these extra options,
+the module itself sets some of the options to the internal call to
+\type{\setuplist} itself.
+
+To get a reasonable layout for the reference list, the following are
+set as a precaution:
+\starttabulate[|l|p|]
+\NC alternative\NC Always re-initialized to `a'. This makes sure that no
+space is allocated for the page number.\NC\NR
+\NC pagenumber\NC Always re-initialized to `no'. The list is a bit of
+a special one, and page numbers don't make much sense. All entries
+will have the same page number: the number of the page on
+which \type{\placepublications} was called.\NC\NR
+\NC interaction\NC Alway made empty. There should never be any
+interactivity in the list of publications, because the entries all
+point to themselves (this limitation is similar to one for `pagenumber').
+\stoptabulate
+
+
+And also, the following options are initialized depending on the
+global settings for `numbering' and `autohang':
+\starttabulate[|l|p|]
+\NC width\NC Set to the calculated width of the largest label, but only if autohang is `yes'\NC\NR
+\NC distance\NC Set to 0pt, but only if autohang is `yes'\NC\NR
+\NC numbercommand\NC A command given in `setuppublications' if numbering is turned on, otherwise empty.\NC\NR
+\NC textcommand\NC Set to a macro that outdents the body text if numbering is turned off, otherwise empty\NC\NR
+\stoptabulate
+
+
+\subsection{Setting citation options: \type{\setupcite}}
+
+The \type{\cite} command has a lot of alternatives, as could be seen
+above in the setting of `refcommand'. And these alternatives have
+their own options:
+
+\setup{setupcite}
+
+\starttabulate[|l|p|]
+\NC andtext \NC separation between two authors (for \type{\cite[author]} styles)\NC \NR
+\NC otherstext \NC text used for `et.al.' (for \type{\cite[author]} styles)\NC \NR
+\NC pubsep \NC separator between publication references in a
+ \type{\cite} command.\NC \NR
+\NC lastpubsep \NC same, but for the
+ last publication in the list.\NC \NR
+\NC left \NC left side of a \type{\cite} (like \type{[})\NC \NR
+\NC inbetween \NC the separator between parts of a single citation.\NC\NR
+\NC right \NC right side of a \type{\cite} (like \type{]})\NC \NR
+\NC compress \NC Whether \type{\cite} should try to
+compress it's argument list. \NC\NR
+\stoptabulate
+Not all options apply to all types of \type{\cite} commands.
+E.g. `compress' does not apply to the citation
+list for all options of \type{\cite}, since sometimes compression does
+not make sense or is not possible. The `num' version compresses
+into a condensed sorted list, and the various `author' styles try
+to compress all publications by one author, but e.g. years are
+never compressed.
+
+Likewise, `inbetween' only applies to three types: `authoryear' (a
+space), `authoryears' (a comma followed by a space), and `num' (where
+it is `--' (an endash), the character used to separate number ranges).
+
+\subsection{Setting up \BIBTEX: \type{\setupbibtex}}
+
+\BIBTEX\ bibliographic databases are converted into \type{.bbl} files,
+and the generated file is just a more \TEX-minded representation of
+the full database(s).
+
+The four \type{.bst} files do not do any actual formatting on the
+entries, and they do not subset the database either. Instead, the
+{\it entire} database is converted into \TEX-parseable records. About the
+only thing the \type{.bst} files do is sorting the entries (and
+\BIBTEX\ itself resolves any `STRING' specifications, of course).
+
+The module will read the created \type{\jobname.bbl} file
+and select the parts that are needed for the current article.
+
+\setup{setupbibtex}
+
+\starttabulate[|l|p|]
+\NC database\NC List of bibtex database file names to be
+ used. The module will write a very short \type{.aux} file instructing
+ \BIBTEX\ to create a (possibly very large) \type{\jobname.bbl} file,
+ that will be \type{\input} by the module (at \type{\starttext}).\NC\NR
+\NC sort\NC How the publications in the
+ \BIBTEX\ database file should be sorted.\crlf
+ The default here is `no' (\type{cont-no.bst}), meaning no sorting at all.
+ `author' (\type{cont-au.bst}) sorts alphabetically on author and within that on year,
+ `title' (\type{cont-ti.bst}) sorts alphabetically on title and then on author and
+ year, and `short' (\type{cont-ab.bst}) sorts on the short key that is generated
+ by \BIBTEX.\NC\NR
+\stoptabulate
+
+For now, you need to run \BIBTEX\ by hand to create the
+\type{\jobname.bbl} file (\type{texutil} will hopefully do this for
+you in the future).
+
+You may want to create the \type{\jobname.bbl} yourself. The
+\type{.bbl} syntax is explained below. There is no default
+database of course, and you do not {\it have} to use one: it is
+perfectly OK to just \type{\input} a file with the bibliographic
+records, as long as it has the right input syntax. Or even to include
+the definitions themselves in the preamble of your document.
+
+The most efficient calling order when using \BIBTEX\ is:
+\starttyping
+texexec --once myfile
+bibtex myfile
+texexec myfile
+\stoptyping
+
+Texexec should be smart enough to recognize how many
+runs are needed in the final part, but it seems it
+sometimes does one iteration too few. So you might
+have to call texexec one last time to get the page references
+correct. Numbered references always need at least one run more
+than author, year references, because the final number in
+the reference list is usually not decided upon yet at the
+moment the \type{\cite} command is encountered.
+
+
+\subsection{Borrowing publications: \type{\usepublications}}
+
+It is also possible to instruct the module to use the bibliographic
+references belonging to another document. This is done by using the command
+\type{\usepublications[files]}, where \type{files} is a list of other
+\CONTEXT\ documents (without extension).
+
+\setup{usepublications}
+
+To be precise, this command will use the \type{.bbl} and \type{.tuo}
+files from the other document(s), and will therefore not work if these
+files cannot be found (the \type{.tuo} file is needed to get correct
+page references for \type{\cite[page]}).
+
+
+\section{Citations}
+
+Citations are handled through the \type{\cite} command.
+
+\type{\cite} has two basic appearances:
+
+\subsection{Default and explicit citations}
+
+\setup{cite}
+
+The single-argument form executes the style-defined default citation
+command. This is the preferred way of usage, since some styles might
+use numeric citations while others might use a variation of the
+(author,year) style.
+
+The two-argument form allows you to manually select the style you want.
+
+\subsubsection{Citation types}
+
+Following is the full list of recognized keywords for \type{\cite},
+with a short explanation where the data comes from. Most of the
+information that is usable within \type{\cite} comes from the argument
+to \type{\startpublication}. This command is covered in detail below.
+
+
+All of these options are {\it valid} in all publication styles, since
+\CONTEXT\ always has the needed information available. But not all of
+these are {\it sensible} in a particular style: using numbered references if
+the list of publications itself is not numbered is not a good idea, for
+instance. Also, some of the keys are somewhat strange and only
+provided for future extensions.
+
+First, here are the simple ones:
+\starttabulate[|l|l|p|]
+\NC author\NC \cite[author][me] \NC(from `a')\hfil\NC\NR
+\NC doi\NC \cite[doi][me]\NC (from `d')\hfil\NC\NR
+\NC key\NC \cite[key][me]\NC (from `k')\hfil\NC\NR
+\NC serial\NC \cite[serial][me]\NC (from `n')\hfil\NC\NR
+\NC short\NC \cite[short][me]\NC (from `s')\hfil\NC\NR
+\NC type\NC \cite[type][me]\NC (from `t')\hfil\NC\NR
+\NC year\NC \cite[year][me]\NC (from `y')\hfil\NC\NR
+\NC url\NC \cite[url][me]\NC (from `u')\hfil\NC\NR
+\stoptabulate
+Keep in mind that `n' is a database sequence number, and not
+necesarily the same number that is used in the list of
+publications. For instance, if `sorttype' is cite, the list will be
+re-ordered, but the `n' value will remain the same. To get to the
+number that is finally used, use
+\starttabulate[|l|l|p|]
+\NC num\NC \cite[num][me]\NC (this is a reference to
+ the sequence number used in the publication list)\hfil\NC\NR
+\stoptabulate
+If the list of publications is not numbered visually, there will still
+be a number available.
+
+Three of the options are combinations:
+\starttabulate[|l|l|p|]
+\NC authoryear\NC \cite[authoryear][me]\NC(from `a' and `y')\hfil\NC\NR
+\NC authoryears\NC \cite[authoryears][me]\NC(from `a' and `y')\hfil\NC\NR
+\NC data\NC \vtop{\hsize .45\hsize \cite[data][me]}\NC The data content of the entry\hfil\NC\NR
+\stoptabulate
+
+And the last one is a page reference to the page where the
+the entry is typeset within the publication list.
+
+\starttabulate[|l|l|p|]
+\NC page\NC \cite[page][me]\NC (a page reference)\hfil\NC\NR
+\stoptabulate
+
+\subsection{Citations with local setups}
+
+\setup{citealt}
+
+The arguments in this form are inherited from \type{\setupcite},
+except for \type{extras}. The argument of `\type{extras}' is typeset
+at the end of the reference, but before a potential `\type{right}', so
+it can be used for e.g. page or chapter specifiers.
+
+
+\section{Placing the publication list}
+
+This is really simple: use \type{\completepublications}
+or \type{\placepublications} at the location in your
+text where you want the publication list to appear. As is normal in
+\CONTEXT, \type{\placepublications} gives you a raw list, and
+\type{\completepublications} a list with a heading. The module uses
+the following defaults for the generated head:
+\starttyping
+\setupheadtext[en][\biblistname=References]
+\setupheadtext[nl][\biblistname=Literatuur]
+\setupheadtext[de][\biblistname=Literatur]
+\setupheadtext[it][\biblistname=Bibliografia]
+\setupheadtext[sl][\biblistname=Literatura]
+\setupheadtext[fr][\biblistname=Bibliographie]
+\stoptyping
+
+These (or new ones) can be redefined as needed.
+
+\section{The bbl file}
+
+A typical bbl file consists of one initial command
+(\type{\setuppublicationlist}) that sets some information
+about the number of entries in the bbl file and the widths
+of the labels for the list, and that command is followed by a number of
+appearances of \type{\startpublication ... \stoppublication}
+
+The full appearance version of \type{\cite}
+accepts a number of option keywords, and we saw earlier that
+the argument of the \type{\startpublication} command
+defines most of the things we can reference to. This section explains
+the precise syntax for \type{\startpublication}.
+
+Each single block defines one bibliographic entry. I apologise
+for the use of single||letter keys, but these have the advantage of
+being a)\quad short and b)\quad safe w.r.t. the multi-lingual interface.
+
+\setup{startpublication}
+
+Here is the full example that has been used throughout this document:
+
+\typebuffer[bibexample]
+
+\subsection{Defining a publication}
+
+The list of commands that is allowed to appear between \type{\startpublication}
+and \type{\stoppublication} is given below.
+
+Order within an entry is irrelevant, except for the relative ordering
+within each of the three commands that might appear more than once:
+\type{\artauthor}, \type{\author} and \type{\editor}.
+
+Most of these are `normal' \BIBTEX\ field names (in lowercase), but
+some are extra special, either because they come from non-standard
+databases that I know of, or because the bst file has pre-processed
+the contents of the field.
+
+\subsubsection{Complex fields}
+
+The three fields that contain names are extra special, because they
+have more than one argument. These are: \type{\artauthor},
+\type{\author} and \type{\editor}. At the moment, these
+commands require exactly 5 arguments (of which two look like
+optional arguments, but they are not)
+
+
+\starttabulate[|l|l|p|]
+\NC\tex{artauthor[\#1]\{\#2\}[\#3]\{\#4\}\{\#5\}}\NC\tfx AUTHOR\NC For an author of any publication
+ that appears within a larger publication, like an article that appears
+ within a journal or as part of a proceedings. \NC\NR
+\NC\tex{author[\#1]\{\#2\}[\#3]\{\#4\}\{\#5\}}\NC\tfx AUTHOR\NC The author of a standalone
+ publication, like a monograph.\NC\NR
+\NC\tex{editor[\#1]\{\#2\}[\#3]\{\#4\}\{\#5\}}\NC\tfx EDITOR\NC The editor of e.g.
+ an edited volume.\NC\NR
+\stoptabulate
+
+\subsubsection{Simple fields}
+
+Rather a large list, this is caused by the desire to support as many
+existing \BIBTEX\ databases as possible. Please note that a few of
+the fields have names that are not the same as in \BIBTEX, because a
+1~on~1 mapping causes conflicts with predefined macro names in
+\CONTEXT.
+
+\starttabulate[|l|p(2.5cm)|p|]
+\NC\type{\abstract}\NC\tfx ABSTRACT\NC just text.\NC\NR
+\NC\type{\annotate}\NC\tfx ANNOTATE \NC just text.\NC\NR
+\NC\type{\arttitle}\NC\tfx TITLE\NC The title of a partial publication (one that has \type{\artauthor}s).\NC\NR
+\NC\type{\assignee}\NC\tfx ASSIGNEE\NC Assigned person for a patent\NC\NR
+\NC\type{\bibnumber}\NC\tfx NUMBER \NC \NC\NR
+\NC\type{\bibtype}\NC\tfx TYPE \NC See the \BIBTEX\
+ documentation for it's use. This is {\it not} related
+ to the type of entry that is used for deciding on the
+ layout.\NC\NR
+\NC\type{\biburl}\NC\tfx URL \NC Location on the internet. \NC\NR
+\NC\type{\chapter}\NC\tfx CHAPTER \NC the chapter number, if this entry is
+referring to a smaller section of a publication. It might actually
+be a part number or a (sub)section number. The field \type{\bibtype} (above)
+differentiates between these.\NC\NR
+\NC\type{\city}\NC\tfx CITY\NC city of publication.\NC\NR
+\NC\type{\comment}\NC\tfx COMMENT\NC just text.\NC\NR
+\NC\type{\country}\NC\tfx COUNTRY\NC country of publication.\NC\NR
+\NC\type{\crossref}\NC\tfx CROSSREF\NC A cross-reference to another
+ bibliographic entry. It will insert a citation
+ to that entry, forcing it to be typeset as well.\NC\NR
+\NC\type{\day}\NC\tfx DAY \NC Date of publication (for a patent)\NC\NR
+\NC\type{\dayfiled}\NC\tfx DAYFILED\NC Filing date for a patent\NC\NR
+\NC\type{\doi}\NC\tfx DOI \NC Document Object Identifier\NC\NR
+\NC\type{\eprint}\NC\tfx EPRINT\NC E-print information\NC\NR
+\NC\type{\edition}\NC\tfx EDITION\NC The edition.\NC\NR
+\NC\type{\howpublished}\NC\tfx HOWPUBLISHED\NC \NC\NR
+\NC\type{\isbn}\NC\tfx ISNB\NC isbn number (for books)\NC\NR
+\NC\type{\issn}\NC\tfx ISSN\NC issn number (for journals)\NC\NR
+\NC\type{\issue}\NC\tfx ISSUE\NC issue number (for journals)\NC\NR
+\NC\type{\journal}\NC\tfx JOURNAL \NC The journal's name.\NC\NR
+\NC\type{\keyword}\NC\tfx KEYWORD \NC just text (for use in indices).\NC\NR
+\NC\type{\keywords}\NC\tfx KEYWORDS \NC just text (for use in indices).\NC\NR
+\NC\type{\lang}\NC\tfx LANGUAGE \NC The language of the
+ current bibliographic record (ignored at the moment)\NC\NR
+\NC\type{\month}\NC\tfx MONTH\NC Month of publication\NC\NR
+\NC\type{\monthfiled}\NC\tfx MONTHFILED\NC Filing month for a patent\NC\NR
+\NC\type{\names}\NC\tfx NAMES\NC just text (for use in indices).\NC\NR
+\NC\type{\nationality}\NC\tfx NATIONALITY\NC Nationality information for a patent\NC\NR
+\NC\type{\note}\NC\tfx NOTE \NC just text (this is the `standard' \BIBTEX\ commentary field).\NC\NR
+\NC\type{\notes}\NC\tfx NOTES \NC just text.\NC\NR
+\NC\type{\organization}\NC\tfx ORGANIZATION\NC Like institute, but for e.g. companies.\NC\NR
+\NC\type{\pages}\NC\tfx PAGES\NC Either the number of pages, or the page range
+ for a partial publication. The `t' key to startpublication
+ will decide automatically what is meant.\NC\NR
+\NC\type{\pubname}\NC\tfx INSTITUTION,\crlf PUBLISHER,\crlf SCHOOL\NC Publisher or institution name.\NC\NR
+\NC\type{\pubyear}\NC\tfx YEAR \NC Year of publication. Within this command,
+ the \BIBTEX\ bst files will sometimes insert the command
+ \type{\maybeyear}, which is needed to make sure that
+ the bbl file stay flexible enough to allow all styles of
+ formatting.\NC\NR
+\NC\type{\revision}\NC\tfx REVISION \NC Release version\NC\NR
+\NC\type{\series}\NC\tfx SERIES \NC Possible book series information.\NC\NR
+\NC\type{\size}\NC\tfx SIZE \NC Size in KB of a PDF file (this came from
+ the NTG \MAPS\ database)\NC\NR
+\NC\type{\thekey}\NC\tfx KEY \NC See the \BIBTEX\
+ documentation for it's use. This is {\it not} related to
+ the key used for citing this entry.\NC\NR
+\NC\type{\title}\NC\tfx TITLE,\crlf BOOKTITLE \NC The title of a book.\NC\NR
+\NC\type{\volume}\NC\tfx VOLUME \NC Volume number for multi-part books or
+ journals.\NC\NR
+\NC\type{\yearfiled}\NC\tfx YEARFILED\NC Filing year for a patent\NC\NR
+\stoptabulate
+
+Adding in one of your own fields is reasonably simple:
+
+\starttyping
+\newbibfield[mycommand]
+\stoptyping
+This will define \type{\mycommand} for use within
+a publication (plus \type{\bib@mycommand}, it's internal form) as
+well as the command \type{\insertmycommand} that can be used
+within \type{\setuppublicationlayout} to fetch the supplied
+value (see below).
+
+
+\section{Defining a publication type layout}
+
+Publication style files of course take care of setting defaults for the
+commands as explained earlier, but the largest part of a such a
+publication style is concerned with specifying layouts for various
+types of publications.
+
+The command that does the work is \type{\setuppublicationlayout}:
+
+\setup{setuppublicationlayout}
+
+The first argument that is a publication (\BIBTEX\ entry) type, and
+all publications that have this type given as argument to the `t' key
+of \type{\startpublication} will be typeset by executing the commands
+that appear in the group following the command.
+
+For example, here is a possible way to typeset an article: from \type{bibl-apa}:
+\starttyping
+\setuppublicationlayout[article]{%
+ \insertartauthors{}{ }{\insertthekey{}{ }{}}%
+ \insertpubyear{(}{). }{\unskip.}%
+ \insertarttitle{\bgroup }{\egroup. }{}%
+ \insertjournal{\bgroup \it}{\egroup}
+ {\insertcrossref{In }{}{}}%
+ \insertvolume
+ {, }
+ {\insertissue{(}{)}{}\insertpages{:}{.}{.}}
+ {\insertpages{, pages }{.}{.}}%
+ \insertnote{ }{.}{}%
+ \insertcomment{}{.}{}%
+}
+\stoptyping
+For every command in the long list given in the previous paragraph, there is
+a corresponding \type{\insertxxx} command. (As usual, \type{\author}
+etc. are special: they have a macro called \type{\insertxxxs}
+instead). All of these \type{\insertxxx} macros use the same logic:
+
+\starttyping
+\insertartauthors{<before>}{<after>}{<not found>}
+\stoptyping
+
+Sounds easy? It is! But it is also often tedious: database entries can
+be tricky things: some without issue numbers, others without page
+numbers, some even without authors. So, you often need to nest rather
+a lot of commands in the \type{<not found>} section of the `upper'
+command, and \type{\unskip} and \type{\ignorespaces} are good friends
+as well.
+
+Incidentally, the distributed \type{bibl-xxx} files define layouts for
+the `standard' publication types that are defined in the example
+bibliography that comes with \BIBTEX. The list of possbile types is in
+no way limited to that list, but it provides a reasonable starting
+point.
+
+\section{References}
+
+\placepublications
+
+\stopdocumentation
+
+\stopmodule
+
+\stoptext \ No newline at end of file
diff --git a/metapost/context/base/mp-tool.mp b/metapost/context/base/mp-tool.mp
index ab98fbd23..530793145 100644
--- a/metapost/context/base/mp-tool.mp
+++ b/metapost/context/base/mp-tool.mp
@@ -2361,6 +2361,12 @@ vardef c_phantom (expr b) (text t) =
fi ;
enddef ;
+% mark paths (for external progs to split)
+
+% def somepath(expr p)
+% p
+% enddef ;
+
% done
endinput ;
diff --git a/scripts/context/perl/pdftrimwhite.pl b/scripts/context/perl/pdftrimwhite.pl
index e42a8fd49..08c1de5d7 100644
--- a/scripts/context/perl/pdftrimwhite.pl
+++ b/scripts/context/perl/pdftrimwhite.pl
@@ -180,6 +180,7 @@ my $thisisunix = $Config{'osname'} !~ /dos|mswin/i ;
my $figurefile = "" ;
my $resultfile = "" ;
+my $tempfile = "" ;
my $programname = "cropcrap" ;
@@ -224,7 +225,7 @@ my $width = my $height = my $llx = my $lly = my $urx = my $ury = 0 ;
#D help information.
sub PrintHelp
- { print "This is CropCrap\n\n" .
+ { print "This is PdfTrimWhite\n\n" .
"usage:\n\n" .
"cropcrap [switches] filename result\n\n" .
"switches:\n\n" .
@@ -246,6 +247,7 @@ sub GetItRight
{ PrintHelp() ; exit }
$figurefile = $ARGV[0] ; $figurefile =~ s/\.pdf$//oi ;
$resultfile = $ARGV[1] ; $resultfile =~ s/\.pdf$//oi ;
+ $tempfile = "pdftrimwhite-$resultfile" ;
if ($figurefile eq '')
{ PrintHelp() ; exit }
unless ($thisisunix)
@@ -257,7 +259,7 @@ sub GetItRight
exit }
if (($resultfile eq '')||($resultfile=~/(^\-|\.)/io))
{ $resultfile = $programname }
-$pipe = "2>&1" ;
+ $pipe = "2>&1" ;
if ($thisisunix)
{ $pipe = "2>&1" } }
@@ -376,7 +378,7 @@ sub PreparePlainTeX
\\figureheight=\\ht0\n" }
sub PrepareFirstPass
- { open (TEX, ">$resultfile.tex") ;
+ { open (TEX, ">$tempfile.tex") ;
if ($UsePlain)
{ print TEX
PreparePlainTeX .
@@ -406,7 +408,7 @@ sub SetupPlainTeX
{\\immediate\\pdfximage page $Page {$figurefile.pdf}\\pdfrefximage\\pdflastximage}\n" }
sub PrepareSecondPass
- { open (TEX, ">$resultfile.tex") ;
+ { open (TEX, ">$tempfile.tex") ;
if ($UsePlain)
{ print TEX
SetupPlainTeX .
@@ -438,30 +440,18 @@ sub FetchPaperSize
sub RunTeX
{ if ($UsePlain)
- { $result =
- `pdftex -prog=pdftex -fmt=plain -int=batchmode $resultfile` }
+ { $result = `pdftex -prog=pdftex -fmt=plain -int=batchmode $tempfile` }
else
- { $result =
- `texexec --batch --once --purge $resultfile` }
-# print $result if $Verbose ; $results .= "$result\n" ;
-# $result = `texutil --purge` ;
- print $result if $Verbose ; $results .= "$result\n" }
-
-sub MakePSFile
- { $result =
- `$pdfps -paperw $pwidth -paperh $pheight $resultfile.pdf $resultfile.ps` ;
+ { $result = `texexec --batch --once --purge $tempfile` }
print $result if $Verbose ; $results .= "$result\n" }
sub FindBoundingBox
- { $result =
-# `$gs -sDEVICE=bbox -dNOPAUSE -dBATCH $resultfile.ps $pipe` ;
- `$gs -sDEVICE=bbox -dNOPAUSE -dBATCH $resultfile.pdf $pipe` ;
+ { $result = `$gs -sDEVICE=bbox -dNOPAUSE -dBATCH $tempfile.pdf $pipe` ;
print $result if $Verbose ; $results .= "$result\n" }
sub IdentifyCropBox
{ RunTeX() ;
FetchPaperSize () ;
-# MakePSFile() ;
FindBoundingBox() }
#D Just to be sure, we check if there is some image data, so
@@ -495,6 +485,10 @@ sub FixCropBox
#D For error tracing we save the log information in a file.
+sub RenameResult
+ { unlink "$resultfile.pdf" ;
+ rename "$tempfile.pdf", "$resultfile.pdf" }
+
sub SaveLogInfo
{ open (LOG, ">$resultfile.log") ;
print LOG $results ;
@@ -504,10 +498,9 @@ sub SaveLogInfo
sub CleanUp
{ unless ($Verbose)
- { unlink "$resultfile.tex" ;
- unlink "$resultfile.tuo" ;
- unlink "$resultfile.tui" ;
- unlink "$resultfile.ps" ;
+ { unlink "$tempfile.tex" ;
+ unlink "$tempfile.tuo" ;
+ unlink "$tempfile.tui" ;
unlink "$figurefile.tmp" } }
#D Here it all comes together.
@@ -526,6 +519,7 @@ if (ValidatedCropBox())
{ PrepareSecondPass() ;
FixCropBox() }
+RenameResult() ;
SaveLogInfo() ;
CleanUp () ;
diff --git a/scripts/context/ruby/base/system.rb b/scripts/context/ruby/base/system.rb
index 50173a72d..4a8cba652 100644
--- a/scripts/context/ruby/base/system.rb
+++ b/scripts/context/ruby/base/system.rb
@@ -41,6 +41,18 @@ module System
end
end
+ def System.prependengine(str)
+ if str =~ /^\S+\.(pl|rb|lua|py)/io then
+ case $1
+ when 'pl' then return "perl #{str}"
+ when 'rb' then return "ruby #{str}"
+ when 'lua' then return "lua #{str}"
+ when 'py' then return "python #{str}"
+ end
+ end
+ return str
+ end
+
def System.locatedprogram(program)
if @@located.key?(program) then
return @@located[program]
@@ -49,7 +61,7 @@ module System
if binname =~ /\..*$/io then
@@binpaths.each do |path|
if FileTest.file?(str = File.join(path,binname)) then
- return @@located[program] = str
+ return @@located[program] = System.prependengine(str)
end
end
end
@@ -57,7 +69,7 @@ module System
@@binpaths.each do |path|
@@binsuffixes.each do |suffix|
if FileTest.file?(str = File.join(path,"#{binname}#{suffix}")) then
- return @@located[program] = str
+ return @@located[program] = System.prependengine(str)
end
end
end
diff --git a/scripts/context/ruby/base/tex.rb b/scripts/context/ruby/base/tex.rb
index 1aee93fb1..700150055 100644
--- a/scripts/context/ruby/base/tex.rb
+++ b/scripts/context/ruby/base/tex.rb
@@ -129,7 +129,7 @@ class TEX
'forcetexutil', 'texutil',
'globalfile', 'autopath',
'purge', 'purgeall', 'keep', 'autopdf', 'xpdf', 'simplerun', 'verbose',
- 'nooptionfile', 'nobackend'
+ 'nooptionfile', 'nobackend', 'noctx'
]
@@stringvars = [
'modefile', 'result', 'suffix', 'response', 'path',
@@ -386,20 +386,20 @@ class TEX
# upward compatibility problems) but stuck to the bas/mem/fmt flags
if engine then
case validmpsengine(engine)
- when /mpost/ then "--mem"
- when /mfont/ then "--bas"
- else "--fmt"
+ when /mpost/ then "-mem"
+ when /mfont/ then "-bas"
+ else "-fmt"
end
else
- "--fmt"
+ "-fmt"
end
end
def prognameflag(progname=nil)
case getvariable('distribution')
- when 'standard' then prefix = "--progname"
- when /web2c/io then prefix = "--progname"
- when /miktex/io then prefix = "--alias"
+ when 'standard' then prefix = "-progname"
+ when /web2c/io then prefix = "-progname"
+ when /miktex/io then prefix = "-alias"
else return ""
end
if progname then
@@ -424,7 +424,7 @@ class TEX
if Kpse.miktex? then
"-tcx=#{file}"
else
- "--translate-file=#{file}"
+ "-translate-file=#{file}"
end
end
@@ -574,7 +574,7 @@ class TEX
interface = $1.sub(/cont\-/,'')
results.push('')
results.push("testing interface #{interface}")
- flags = ['--process','--batch','--once',"--interface=#{interface}",engineflag]
+ flags = ['--noctx','--process','--batch','--once',"--interface=#{interface}",engineflag]
# result = Kpse.pipescript('newtexexec',tempfilename,flags)
result = runtexexec([tempfilename], flags, 1)
if FileTest.file?("#{@@temprunfile}.log") then
@@ -842,7 +842,7 @@ class TEX
getarrayvariable('files').each do |filename|
setvariable('filename',filename)
report("processing text of graphic '#{filename}'")
- processmpx(filename,true)
+ processmpx(filename,false,true)
end
reportruntime
end
@@ -883,6 +883,7 @@ class TEX
elsif (str = getvariable('suffix')) && ! str.empty? then
opt << "\\setupsystem[file=#{jobname}.#{str}]\n"
end
+ opt << "\\setupsystem[\\c!method=2]\n" # 1=oldtexexec 2=newtexexec
opt << "\\setupsystem[\\c!type=#{Tool.ruby_platform()}]\n"
if (str = File.unixfied(getvariable('path'))) && ! str.empty? then
opt << "\\usepath[#{str}]\n" unless str.empty?
@@ -1043,9 +1044,10 @@ class TEX
report("tex format: #{texformat}")
report("progname: #{progname}")
if texengine && texformat && progname then
- command = [quoted(texengine),prognameflag(progname),formatflag(texengine,texformat),runoptions(texengine),filename,texprocextras(texformat)].join(' ')
+ command = [quoted(texengine),prognameflag(progname),formatflag(texengine,texformat),tcxflag,runoptions(texengine),filename,texprocextras(texformat)].join(' ')
report(command) if getvariable('verbose')
system(command)
+ true
else
false
end
@@ -1056,10 +1058,12 @@ class TEX
mpsformat = validmpsformat(getarrayvariable('mpsformats').first)
progname = validprogname(getvariable('progname'))
if mpsengine && mpsformat && progname then
- command = [quoted(mpsengine),prognameflag(progname),formatflag(mpsengine,mpsformat),runoptions(mpsengine),filename,mpsprocextras(mpsformat)].join(' ')
ENV["MPXCOMMAND"] = "0" unless mpx
+ # command = [quoted(mpsengine),prognameflag(progname),formatflag(mpsengine,mpsformat),tcxflag,runoptions(mpsengine),filename,mpsprocextras(mpsformat)].join(' ')
+ command = [quoted(mpsengine),"-progname=mpost",formatflag(mpsengine,mpsformat),tcxflag,runoptions(mpsengine),filename,mpsprocextras(mpsformat)].join(' ')
report(command) if getvariable('verbose')
system(command)
+ true
else
false
end
@@ -1070,12 +1074,14 @@ class TEX
if File.atleast?(mpfile,25) then
# first run needed
File.silentdelete(File.suffixed(mpfile,'mpt'))
- doruntexmp(mpfile,false)
+ doruntexmp(mpfile)
mpgraphics = checkmpgraphics(mpfile)
mplabels = checkmplabels(mpfile)
if mpgraphics || mplabels then
# second run needed
doruntexmp(mpfile,mplabels)
+ else
+ # no labels
end
end
end
@@ -1123,10 +1129,11 @@ class TEX
begin
if mode and job = TEX.new(@logger) then
options.each do |option|
- if option=~ /^\-*(.*?)\=(.*)$/o then
- job.setvariable($1,$2)
- else
- job.setvariable(option,true)
+ case option
+ when /^\-*(.*?)\=(.*)$/o then
+ job.setvariable($1,$2)
+ when /^\-*(.*?)$/o then
+ job.setvariable($1,true)
end
end
job.setvariable("files",filename)
@@ -1243,31 +1250,33 @@ class TEX
# preprocess files
- ctx = CtxRunner.new(rawname,@logger)
- if getvariable('ctxfile').empty? then
- ctx.manipulate(File.suffixed(rawname,'ctx'),'jobname.ctx')
- else
- ctx.manipulate(File.suffixed(getvariable('ctxfile'),'ctx'))
- end
- ctx.savelog(File.suffixed(rawname,'ctl'))
+ unless getvariable('noctx') then
+ ctx = CtxRunner.new(rawname,@logger)
+ if getvariable('ctxfile').empty? then
+ ctx.manipulate(File.suffixed(rawname,'ctx'),'jobname.ctx')
+ else
+ ctx.manipulate(File.suffixed(getvariable('ctxfile'),'ctx'))
+ end
+ ctx.savelog(File.suffixed(rawname,'ctl'))
- envs = ctx.environments
- mods = ctx.modules
+ envs = ctx.environments
+ mods = ctx.modules
- # merge environment and module specs
+ # merge environment and module specs
- envs << getvariable('environments') unless getvariable('environments').empty?
- mods << getvariable('modules') unless getvariable('modules') .empty?
+ envs << getvariable('environments') unless getvariable('environments').empty?
+ mods << getvariable('modules') unless getvariable('modules') .empty?
- envs = envs.uniq.join(',')
- mods = mods.uniq.join(',')
+ envs = envs.uniq.join(',')
+ mods = mods.uniq.join(',')
- report("using search method '#{Kpse.searchmethod}'") if getvariable('verbose')
- report("using environments #{envs}") if envs.length > 0
- report("using modules #{mods}") if mods.length > 0
+ report("using search method '#{Kpse.searchmethod}'") if getvariable('verbose')
+ report("using environments #{envs}") if envs.length > 0
+ report("using modules #{mods}") if mods.length > 0
- setvariable('environments', envs)
- setvariable('modules', mods)
+ setvariable('environments', envs)
+ setvariable('modules', mods)
+ end
# end of preprocessing and merging
@@ -1389,11 +1398,12 @@ class TEX
end
- # mp specific
+ # The labels are collected in the mergebe hash. Here we merge the relevant labels
+ # into beginfig/endfig. We could as well do this in metafun itself. Maybe some
+ # day ... (it may cost a bit of string space but that is cheap nowadays).
- def doruntexmp(mpname,mergebe=true,context=true)
+ def doruntexmp(mpname,mergebe=nil,context=true)
texfound = false
- mpbetex = Hash.new
mpfile = File.suffixed(mpname,'mp')
mpcopy = File.suffixed(mpname,'copy','mp')
setvariable('mp.file',mpfile)
@@ -1402,38 +1412,28 @@ class TEX
if mpdata = File.silentread(mpfile) then
mpdata.gsub!(/^\#.*\n/o,'')
File.silentrename(mpfile,mpcopy)
- texfound = mergebe || mpdata =~ /btex .*? etex/mo
+ texfound = mergebe || (mpdata =~ /btex .*? etex/mo)
if mp = openedfile(mpfile) then
- mpdata.gsub!(/(btex.*?)\;(.*?etex)/o) do "#{$1}@@@#{$2}" end
- # mpdata.gsub!(/(\".*?)\;(.*?\")/o) do "#{$1}@@@#{$2}" end
- mpdata.gsub!(/(\".*?\")/o) do "#{$1.gsub(/\;/o,'@@@')}" end
- mpdata.gsub!(/\;/o, "\;\n")
- # mpdata.gsub!(/\n+/o, "\n")
- # mpdata.gsub!(/(btex.*?)\@\@\@(.*?etex)/o) do "#{$1}\;#{$2}" end
- # mpdata.gsub!(/(\".*?)\@\@\@(.*?\")/mo) do "#{$1};#{$2}" end
- mpdata.gsub!(/\@\@\@/o) do ";" end
if mergebe then
- mpdata.gsub!(/beginfig\s*\((\d+)\)\s*\;(.*?)endfig\s*\;/o) do
+ mpdata.gsub!(/beginfig\s*\((\d+)\)\s*\;(.+?)endfig\s*\;/mo) do
n, str = $1, $2
- if str =~ /(.*?)(verbatimtex.*?etex)\s*\;(.*)/o then
- "beginfig(#{n})\;\n#{$1}#{$2}\;\n#{mpbetex(n)}\n#{$3}\;endfig\;\n"
+ if str =~ /^(.*?)(verbatimtex.*?etex)\s*\;(.*)$/mo then
+ "beginfig(#{n})\;\n#{$1}#{$2}\;\n#{mergebe[n]}\n#{$3}\;endfig\;\n"
else
- "beginfig(#{n})\;\n#{mpbetex(n)}\n#{str}\;endfig\;\n"
+ "beginfig(#{n})\;\n#{mergebe[n]}\n#{str}\;endfig\;\n"
end
end
+ unless mpdata =~ /beginfig\s*\(\s*0\s*\)/o then
+ mp << mergebe['0'] if mergebe.key?('0')
+ end
end
- mpdata.gsub!(/\n+/mo, "\n")
- mpdata.gsub!(/^\s*\;\s*\n/o, "")
- unless mpdata =~ /beginfig\s*\(\s*0\s*\)/o then
- mp << mpbetex['0'] if mpbetex.key?('0')
- end
- mp << mpdata # ??
+ mp << splitmplines(mpdata)
mp << "\n"
mp << "end"
mp << "\n"
mp.close
end
- processmpx(mpname) if texfound
+ processmpx(mpname,true) if texfound
if getvariable('batchmode') then
options = ' --interaction=batch'
elsif getvariable('nonstopmode') then
@@ -1458,39 +1458,50 @@ class TEX
end
end
- def processmpx(mpname,context=true)
- mpname = File.suffixed(mpname,'mp')
- if File.atleast?(mpname,10) && (data = File.silentread(mpname)) then
+ def processmpx(mpname,force=false,context=true)
+ unless force then
+ mpname = File.suffixed(mpname,'mp')
+ if File.atleast?(mpname,10) && (data = File.silentread(mpname)) then
+ if data =~ /(btex|etex|verbatimtex|textext)/o then
+ force = true
+ end
+ end
+ end
+ if force then
begin
- if data =~ /(btex|etex|verbatimtex)/o then
- mptex = File.suffixed(mpname,'temp','tex')
- mpdvi = File.suffixed(mpname,'temp','dvi')
- mplog = File.suffixed(mpname,'temp','log')
- mpmpx = File.suffixed(mpname,'mpx')
- ok = system("mpto #{mpname} > #{mptex}")
- if ok && File.appended(mptex, "\\end\n") then
- if localjob = TEX.new(@logger) then
- localjob.setvariable('files',mptex)
- localjob.setvariable('backend','dvips')
- localjob.setvariable('engine',getvariable('engine')) unless getvariable('engine').empty?
- localjob.setvariable('once',true)
- localjob.setvariable('nobackend',true)
- if context then
- localjob.setvariable('texformats',[getvariable('interface')]) unless getvariable('interface').empty?
- elsif getvariable('interface').empty? then
- localjob.setvariable('texformats',['plain'])
- else
- localjob.setvariable('texformats',[getvariable('interface')])
- end
- localjob.processtex
- ok = true # todo
+ mptex = File.suffixed(mpname,'temp','tex')
+ mpdvi = File.suffixed(mpname,'temp','dvi')
+ mplog = File.suffixed(mpname,'temp','log')
+ mpmpx = File.suffixed(mpname,'mpx')
+ command = "mpto #{mpname} > #{mptex}"
+ report(command) if getvariable('verbose')
+ ok = system(command)
+ if ok && File.appended(mptex, "\\end\n") then
+ # to be replaced by runtexexec([filenames],options,1)
+ if localjob = TEX.new(@logger) then
+ localjob.setvariable('files',mptex)
+ localjob.setvariable('backend','dvips')
+ localjob.setvariable('engine',getvariable('engine')) unless getvariable('engine').empty?
+ localjob.setvariable('once',true)
+ localjob.setvariable('nobackend',true)
+ if context then
+ localjob.setvariable('texformats',[getvariable('interface')]) unless getvariable('interface').empty?
+ elsif getvariable('interface').empty? then
+ localjob.setvariable('texformats',['plain'])
else
- ok = false
- end
- ok = ok && FileTest.file?(mpdvi) && system("dvitomp #{mpdvi} #{mpmpx}")
- [mptex,mpdvi,mplog].each do |mpfil|
- File.silentdelete(mpfil)
+ localjob.setvariable('texformats',[getvariable('interface')])
end
+ localjob.processtex
+ ok = true # todo
+ else
+ ok = false
+ end
+ # so far
+ command = "dvitomp #{mpdvi} #{mpmpx}"
+ report(command) if getvariable('verbose')
+ ok = ok && FileTest.file?(mpdvi) && system(command)
+ [mptex,mpdvi,mplog].each do |mpfil|
+ File.silentdelete(mpfil)
end
end
rescue
@@ -1551,4 +1562,42 @@ class TEX
return nil
end
+ # mp specific (todo: mp module)
+
+ def splitmplines(str)
+ btex, verbatimtex, strings, result = Array.new, Array.new, Array.new, str.dup
+ # protect texts
+ result.gsub!(/btex\s*(.*?)\s*etex/) do
+ btex << $1
+ "btex(#{btex.length-1})"
+ end
+ result.gsub!(/verbatimtex\s*(.*?)\s*etex/) do
+ verbatimtex << $1
+ "verbatimtex(#{verbatimtex.length-1})"
+ end
+ result.gsub!(/\"(.*?)\"/) do
+ strings << $1
+ "\"#{strings.length-1}\""
+ end
+ result.gsub!(/\;/) do
+ ";\n"
+ end
+ result.gsub!(/(.{80,})(\-\-\-|\-\-|\.\.\.|\.\.)/) do
+ "#{$1}#{$2}\n"
+ end
+ result.gsub!(/\n[\s\n]+/mois) do
+ "\n"
+ end
+ result.gsub!(/btex\((\d+)\)/) do
+ "btex #{btex[$1.to_i]} etex"
+ end
+ result.gsub!(/verbatimtex\((\d+)\)/) do
+ "verbatimtex #{verbatimtex[$1.to_i]} etex"
+ end
+ result.gsub!(/\"(\d+)\"/) do
+ "\"#{strings[$1.to_i]}\""
+ end
+ result
+ end
+
end
diff --git a/scripts/context/ruby/base/texutil.rb b/scripts/context/ruby/base/texutil.rb
index 12337c643..01ef11012 100644
--- a/scripts/context/ruby/base/texutil.rb
+++ b/scripts/context/ruby/base/texutil.rb
@@ -126,6 +126,8 @@ class TeXUtil
class Sorter
+ @@downcase = true
+
def initialize(max=12)
@rep, @map, @exp, @div = Hash.new, Hash.new, Hash.new, Hash.new
@max = max
@@ -149,7 +151,7 @@ class TeXUtil
# sorter.expander('ijligature', 'y')
def expander(from,to=nil)
- from, to = converted(from), converted(to)
+ to = converted(to) # not from !!!
@max = [@max,to.length+1].max if to
@exp[from] = to || from || ''
end
@@ -179,17 +181,39 @@ class TeXUtil
end
if @map.size > 0 then
# watch out, order of match matters
- @rexb = /(\\[a-zA-Z]+|#{@map.keys.join('|')}|.)\s*/ # o
+ if @@downcase then
+ @rexb = /(\\[a-zA-Z]+|#{@map.keys.join('|')}|.)\s*/i # o
+ else
+ @rexb = /(\\[a-zA-Z]+|#{@map.keys.join('|')}|.)\s*/ # o
+ end
else
- @rexb = /(\\[a-zA-Z]+|.)\s*/o
+ if @@downcase then
+ @rexb = /(\\[a-zA-Z]+|.)\s*/io
+ else
+ @rexb = /(\\[a-zA-Z]+|.)\s*/o
+ end
end
- if true then
+ if false then
@exp.keys.each do |e|
@exp[e].downcase!
end
end
end
+ def replace(str)
+ str.gsub(@rexa) do
+ @rep[$1.escaped]
+ end
+ end
+
+ def normalize(str)
+ replace(str).gsub(/ +/,' ')
+ end
+
+ def tokenize(str)
+ str.gsub(/\\strchr\{(.*?)\}/o) do "\\#{$1}" end
+ end
+
def remap(str)
s = str.dup
s.gsub!(/(\d+)/o) do
@@ -203,6 +227,9 @@ class TeXUtil
if @rexb then
s.gsub!(@rexb) do
token = $1.sub(/\\/o, '')
+if @@downcase then
+ token.downcase!
+end
if @exp.key?(token) then
@exp[token].ljust(@max,' ')
elsif @map.key?(token) then
@@ -220,7 +247,7 @@ class TeXUtil
'A'.upto('Z') do |c| expander(c) ; division(c) end
expander('1','b') ; expander('2','c') ; expander('3','e') ; expander('4','f')
expander('5','g') ; expander('6','h') ; expander('7','i') ; expander('8','i')
- expander('9','j') ; expander('0','a') ; expander('-','-') ;
+ expander('9','j') ; expander('0','a') ; expander('-',"-") ;
# end potential move
shortcuts.each do |s| shortcut(s[0],s[1]) end
expansions.each do |e| expander(e[0],e[1]) end
@@ -261,6 +288,7 @@ class TeXUtil
def converted(str)
if str then
+ # puts str
str.gsub(/([\+\-]*\d+)/o) do
n = $1.to_i
if n > 0 then
@@ -400,6 +428,7 @@ class TeXUtil
attr_writer :sortkey
def build(sorter)
+@sortkey = sorter.normalize(sorter.tokenize(@sortkey))
@sortkey = sorter.remap(sorter.simplify(@key.downcase))
if @sortkey.empty? then
@sortkey = sorter.remap(@command.downcase)
@@ -487,6 +516,8 @@ class TeXUtil
attr_writer :sortkey
def build(sorter)
+@entry, @key = sorter.normalize(@entry), sorter.normalize(sorter.tokenize{@key})
+if false then
@entry, @key = [@entry, @key].collect do |target|
# +a+b+c &a&b&c a+b+c a&b&c
case target[0,1]
@@ -501,13 +532,15 @@ class TeXUtil
target
# end
end
+else
+ @entry, @key = cleanupsplit(@entry), cleanupsplit(@key)
+end
@sortkey = sorter.simplify(@key)
@sortkey = @sortkey.split(@@split).collect do |c| sorter.remap(c) end.join(@@split)
- # if ($Key eq "") { $Key = SanitizedString($Entry) }
- # if ($ProcessHigh){ $Key = HighConverted($Key) }
@sortkey = [
@sortkey.downcase,
@sortkey,
+ @entry,
@texthowto.ljust(10,' '),
# @state, # no, messes up things
(@realpage ||'').rjust(6,' ').gsub(/0/,' '),
@@ -516,6 +549,15 @@ class TeXUtil
].join(@@split)
end
+ def cleanupsplit(target)
+ # +a+b+c &a&b&c a+b+c a&b&c
+ case target[0,1]
+ when '&' then target.sub(/^./o,'').gsub(/([^\\])\&/o) do "#{$1}#{@@split}" end
+ when '+' then target.sub(/^./o,'').gsub(/([^\\])\+/o) do "#{$1}#{@@split}" end
+ else target .gsub(/([^\\])[\&\+]/o) do "#{$1}#{@@split}" end
+ end
+ end
+
def <=> (other)
@sortkey <=> other.sortkey
end
@@ -561,7 +603,7 @@ class TeXUtil
else
testalpha = entry.sortkey[0,1].downcase
end
- if testalpha != alpha.downcase || alphaclass != entry.class then
+ if (testalpha != alpha.downcase) || (alphaclass != entry.class) then
alpha = testalpha
alphaclass = entry.class
if alpha != ' ' then
diff --git a/scripts/context/ruby/ctxtools.rb b/scripts/context/ruby/ctxtools.rb
index a768264d9..0ba1a7561 100644
--- a/scripts/context/ruby/ctxtools.rb
+++ b/scripts/context/ruby/ctxtools.rb
@@ -17,7 +17,34 @@
#
# todo: move kpse call to kpse class/module, faster and better
-banner = ['CtxTools', 'version 1.3.1', '2004/2006', 'PRAGMA ADE/POD']
+# Taco Hoekwater on patterns and lig building (see 'agr'):
+#
+# Any direct use of a ligature (as accessed by \char or through active
+# characters) is wrong and will create faulty hypenation. Normally,
+# when TeX sees "office", it has six tokens, and it knows from the
+# patterns that it can hyphenate between the "ff". It will build an
+# internal list of four nodes, like this:
+#
+# [char, o , ffi ]
+# [lig , ffi, c ,[f,f,i]]
+# [char, c , e ]
+# [char, e , NULL]
+#
+# as you can see from the ffi line, it has remembered the original
+# characters. While hyphenating, it temporarily changes back to
+# that, then re-instates the ligature afterwards.
+#
+# If you feed it the ligature directly, like so:
+#
+# [char, o , ffi ]
+# [char, ffi , c ]
+# [char, c , e ]
+# [char, e , NULL]
+#
+# it cannot do that (it tries to hyphenate as if the "ffi" was a
+# character), and the result is wrong hyphenation.
+
+banner = ['CtxTools', 'version 1.3.2', '2004/2006', 'PRAGMA ADE/POD']
unless defined? ownpath
ownpath = $0.sub(/[\\\/][a-z0-9\-]*?\.rb/i,'')
@@ -772,6 +799,7 @@ class Language
case @encoding.downcase
when 't1', 'ec', 'cork' then preload_vector('ec')
when 'y', 'texnansi' then preload_vector('texnansi')
+ when 'agr', 'agreek' then preload_vector('agr')
end
end
@@ -818,11 +846,32 @@ class Language
def convert
if @data then
n = 0
- @remapping.each do |k|
- @data.gsub!(k[0]) do
- # report("#{k[0]} => #{k[1]}")
- n += 1
- k[1]
+ if true then
+ @data.gsub!(/\\(patterns|hypenation)\{(.*?)\}/mois) do
+ command, content = $1, $2
+ @remapping.each_index do |i|
+ from, to, m = @remapping[i][0], @remapping[i][1], 0
+ content.gsub!(from) do
+ m += 1
+ "[#{i}]"
+ end
+ report("#{m.to_s.rjust(5)} entries remapped to #{to}") unless m == 0
+ n += m
+ end
+ content.gsub!(/\[(\d+)\]/) do
+ @remapping[$1.to_i][1]
+ end
+ "\\#{command}\{#{content}\}"
+ end
+ else
+ @remapping.each do |k|
+ from, to, m = k[0], k[1], 0
+ @data.gsub!(from) do
+ m += 1
+ to
+ end
+ report("#{m.to_s.rjust(5)} entries remapped to #{to}") unless m == 0
+ n += m
end
end
report("#{n} changes in patterns and exceptions")
@@ -1147,6 +1196,198 @@ class Language
remap(/\\c\{.*?\}/, "")
remap(/\\a\s*/, "[aeligature]")
remap(/\\o\s*/, "[oeligature]")
+ when 'agr' then
+ remap(/\<\'a\|/, "[greekalphaiotasubdasiatonos]")
+ # remap(/\<\'a\|/, "[greekdasiatonos][greekAlpha][greekiota]")
+ remap(/\>\'a\|/, "[greekalphaiotasubpsilitonos]")
+ remap(/\<\`a\|/, "[greekalphaiotasubdasiavaria]")
+ remap(/\>\`a\|/, "[greekalphaiotasubpsilivaria]")
+ remap(/\<\~a\|/, "[greekalphaiotasubdasiaperispomeni]")
+ remap(/\>\~a\|/, "[greekalphaiotasubpsiliperispomeni]")
+ remap(/\'a\|/, "[greekalphaiotasubtonos]")
+ remap(/\`a\|/, "[greekalphaiotasubvaria]")
+ remap(/\~a\|/, "[greekalphaiotasubperispomeni]")
+ remap(/\<a\|/, "[greekalphaiotasubdasia]")
+ remap(/\>a\|/, "[greekalphaiotasubpsili]")
+ remap(/a\|/, "[greekalphaiotasub]")
+ remap(/\<\'h\|/, "[greeketaiotasubdasiatonos]")
+ remap(/\>\'h\|/, "[greeketaiotasubpsilitonos]")
+ remap(/\<\`h\|/, "[greeketaiotasubdasiavaria]")
+ remap(/\>\`h\|/, "[greeketaiotasubpsilivaria]")
+ remap(/\<\~h\|/, "[greeketaiotasubdasiaperispomeni]")
+ remap(/\>\~h\|/, "[greeketaiotasubpsiliperispomeni]")
+ remap(/\'h\|/, "[greeketaiotasubtonos]")
+ remap(/\`h\|/, "[greeketaiotasubvaria]")
+ remap(/\~h\|/, "[greeketaiotasubperispomeni]")
+ remap(/\<h\|/, "[greeketaiotasubdasia]")
+ remap(/\>h\|/, "[greeketaiotasubpsili]")
+ remap(/h\|/, "[greeketaiotasub]")
+ remap(/\<'w\|/, "[greekomegaiotasubdasiatonos]")
+ remap(/\>'w\|/, "[greekomegaiotasubpsilitonos]")
+ remap(/\<`w\|/, "[greekomegaiotasubdasiavaria]")
+ remap(/\>`w\|/, "[greekomegaiotasubpsilivaria]")
+ remap(/\<~w\|/, "[greekomegaiotasubdasiaperispomeni]")
+ remap(/\>~w\|/, "[greekomegaiotasubpsiliperispomeni]")
+ remap(/\<w\|/, "[greekomegaiotasubdasia]")
+ remap(/\>w\|/, "[greekomegaiotasubpsili]")
+ remap(/\'w\|/, "[greekomegaiotasubtonos]")
+ remap(/\`w\|/, "[greekomegaiotasubvaria]")
+ remap(/\~w\|/, "[greekomegaiotasubperispomeni]")
+ remap(/w\|/, "[greekomegaiotasub]")
+ remap(/\<\'i/, "[greekiotadasiatonos]")
+ remap(/\>\'i/, "[greekiotapsilitonos]")
+ remap(/\<\`i/, "[greekiotadasiavaria]")
+ remap(/\>\`i/, "[greekiotapsilivaria]")
+ remap(/\<\~i/, "[greekiotadasiaperispomeni]")
+ remap(/\>\~i/, "[greekiotapsiliperispomeni]")
+ remap(/\"\'i/, "[greekiotadialytikatonos]")
+ remap(/\"\`i/, "[greekiotadialytikavaria]")
+ remap(/\"\~i/, "[greekiotadialytikaperispomeni]")
+ remap(/\<i/, "[greekiotadasia]")
+ remap(/\>i/, "[greekiotapsili]")
+ remap(/\'i/, "[greekiotaoxia]")
+ remap(/\`i/, "[greekiotavaria]")
+ remap(/\~i/, "[greekiotaperispomeni]")
+ remap(/\"i/, "[greekiotadialytika]")
+ remap(/\>\~e/, "[greekepsilonpsiliperispomeni]")
+ remap(/\<\~e/, "[greekepsilondasiaperispomeni]")
+ remap(/\<\'e/, "[greekepsilondasiatonos]")
+ remap(/\>\'e/, "[greekepsilonpsilitonos]")
+ remap(/\<\`e/, "[greekepsilondasiavaria]")
+ remap(/\>\`e/, "[greekepsilonpsilivaria]")
+ remap(/\<e/, "[greekepsilondasia]")
+ remap(/\>e/, "[greekepsilonpsili]")
+ remap(/\'e/, "[greekepsilonoxia]")
+ remap(/\`e/, "[greekepsilonvaria]")
+ remap(/\~e/, "[greekepsilonperispomeni]")
+ remap(/\<\'a/, "[greekalphadasiatonos]")
+ remap(/\>\'a/, "[greekalphapsilitonos]")
+ remap(/\<\`a/, "[greekalphadasiavaria]")
+ remap(/\>\`a/, "[greekalphapsilivaria]")
+ remap(/\<\~a/, "[greekalphadasiaperispomeni]")
+ remap(/\>\~a/, "[greekalphapsiliperispomeni]")
+ remap(/\<a/, "[greekalphadasia]")
+ remap(/\>a/, "[greekalphapsili]")
+ remap(/\'a/, "[greekalphaoxia]")
+ remap(/\`a/, "[greekalphavaria]")
+ remap(/\~a/, "[greekalphaperispomeni]")
+ remap(/\<\'h/, "[greeketadasiatonos]")
+ remap(/\>\'h/, "[greeketapsilitonos]")
+ remap(/\<\`h/, "[greeketadasiavaria]")
+ remap(/\>\`h/, "[greeketapsilivaria]")
+ remap(/\<\~h/, "[greeketadasiaperispomeni]")
+ remap(/\>\~h/, "[greeketapsiliperispomeni]")
+ remap(/\<h/, "[greeketadasia]")
+ remap(/\>h/, "[greeketapsili]")
+ remap(/\'h/, "[greeketaoxia]")
+ remap(/\`h/, "[greeketavaria]")
+ remap(/\~h/, "[greeketaperispomeni]")
+ remap(/\<\~o/, "[greekomicrondasiaperispomeni]")
+ remap(/\>\~o/, "[greekomicronpsiliperispomeni]")
+ remap(/\<\'o/, "[greekomicrondasiatonos]")
+ remap(/\>\'o/, "[greekomicronpsilitonos]")
+ remap(/\<\`o/, "[greekomicrondasiavaria]")
+ remap(/\>\`o/, "[greekomicronpsilivaria]")
+ remap(/\<o/, "[greekomicrondasia]")
+ remap(/\>o/, "[greekomicronpsili]")
+ remap(/\'o/, "[greekomicronoxia]")
+ remap(/\`o/, "[greekomicronvaria]")
+ remap(/\~o/, "[greekomicronperispomeni]")
+ remap(/\<\'u/, "[greekupsilondasiatonos]")
+ remap(/\>\'u/, "[greekupsilonpsilitonos]")
+ remap(/\<\`u/, "[greekupsilondasiavaria]")
+ remap(/\>\'u/, "[greekupsilonpsilivaria]")
+ remap(/\<\~u/, "[greekupsilondasiaperispomeni]")
+ remap(/\>\~u/, "[greekupsilonpsiliperispomeni]")
+ remap(/\"\'u/, "[greekupsilondialytikatonos]")
+ remap(/\"\`u/, "[greekupsilondialytikavaria]")
+ remap(/\"\~u/, "[greekupsilondialytikaperispomeni]")
+ remap(/\<u/, "[greekupsilondasia]")
+ remap(/\>u/, "[greekupsilonpsili]")
+ remap(/\'u/, "[greekupsilonoxia]")
+ remap(/\`u/, "[greekupsilonvaria]")
+ remap(/\~u/, "[greekupsilonperispomeni]")
+ remap(/\"u/, "[greekupsilondiaeresis]")
+ remap(/\<\'w/, "[greekomegadasiatonos]")
+ remap(/\>\'w/, "[greekomegapsilitonos]")
+ remap(/\<\`w/, "[greekomegadasiavaria]")
+ remap(/\>\`w/, "[greekomegapsilivaria]")
+ remap(/\<\~w/, "[greekomegadasiaperispomeni]")
+ remap(/\>\~w/, "[greekomegapsiliperispomeni]")
+ remap(/\<w/, "[greekomegadasia]")
+ remap(/\>w/, "[greekomegapsili]")
+ remap(/\'w/, "[greekomegaoxia]")
+ remap(/\`w/, "[greekomegavaria]")
+ remap(/\~w/, "[greekomegaperispomeni]")
+ remap(/\<r/, "[greekrhodasia]")
+ remap(/\>r/, "[greekrhopsili]")
+ remap(/\<\~/, "[greekdasiaperispomeni]")
+ remap(/\>\~/, "[greekpsiliperispomeni]")
+ remap(/\<\'/, "[greekdasiatonos]")
+ remap(/\>\'/, "[greekpsilitonos]")
+ remap(/\<\`/, "[greekdasiavaria]")
+ remap(/\>\`/, "[greekpsilivaria]")
+ remap(/\"\'/, "[greekdialytikatonos]")
+ remap(/\"\`/, "[greekdialytikavaria]")
+ remap(/\"\~/, "[greekdialytikaperispomeni]")
+ remap(/\</, "[dasia]")
+ remap(/\>/, "[psili]")
+ remap(/\'/, "[oxia]")
+ remap(/\`/, "[greekvaria]")
+ remap(/\~/, "[perispomeni]")
+ remap(/\"/, "[dialytika]")
+ # unknown
+ remap(/\|/, "[greekIotadialytika]")
+ # next
+ remap(/A/, "[greekAlpha]")
+ remap(/B/, "[greekBeta]")
+ remap(/D/, "[greekDelta]")
+ remap(/E/, "[greekEpsilon]")
+ remap(/F/, "[greekPhi]")
+ remap(/G/, "[greekGamma]")
+ remap(/H/, "[greekEta]")
+ remap(/I/, "[greekIota]")
+ remap(/J/, "[greekTheta]")
+ remap(/K/, "[greekKappa]")
+ remap(/L/, "[greekLambda]")
+ remap(/M/, "[greekMu]")
+ remap(/N/, "[greekNu]")
+ remap(/O/, "[greekOmicron]")
+ remap(/P/, "[greekPi]")
+ remap(/Q/, "[greekChi]")
+ remap(/R/, "[greekRho]")
+ remap(/S/, "[greekSigma]")
+ remap(/T/, "[greekTau]")
+ remap(/U/, "[greekUpsilon]")
+ remap(/W/, "[greekOmega]")
+ remap(/X/, "[greekXi]")
+ remap(/Y/, "[greekPsi]")
+ remap(/Z/, "[greekZeta]")
+ remap(/a/, "[greekalpha]")
+ remap(/b/, "[greekbeta]")
+ remap(/c/, "[greekfinalsigma]")
+ remap(/d/, "[greekdelta]")
+ remap(/e/, "[greekepsilon]")
+ remap(/f/, "[greekphi]")
+ remap(/g/, "[greekgamma]")
+ remap(/h/, "[greeketa]")
+ remap(/i/, "[greekiota]")
+ remap(/j/, "[greektheta]")
+ remap(/k/, "[greekkappa]")
+ remap(/l/, "[greeklambda]")
+ remap(/m/, "[greekmu]")
+ remap(/n/, "[greeknu]")
+ remap(/o/, "[greekomicron]")
+ remap(/p/, "[greekpi]")
+ remap(/q/, "[greekchi]")
+ remap(/r/, "[greekrho]")
+ remap(/s/, "[greeksigma]")
+ remap(/t/, "[greektau]")
+ remap(/u/, "[greekupsilon]")
+ remap(/w/, "[greekomega]")
+ remap(/x/, "[greekxi]")
+ remap(/y/, "[greekpsi]")
+ remap(/z/, "[greekzeta]")
else
end
@@ -1197,7 +1438,7 @@ class Commands
# todo: filter the fallback list from context
# The first entry in the array is the encoding which will be used
- # when interpreting th eraw patterns. The second entry is a list of
+ # when interpreting the raw patterns. The second entry is a list of
# filesets (string|aray), each first match of a set is taken.
@@languagedata['ba' ] = [ 'ec' , ['bahyph.tex'] ]
@@ -1224,7 +1465,7 @@ class Commands
# mnhyph
@@languagedata['nl' ] = [ 'ec' , ['nehyph96.tex'] ]
@@languagedata['no' ] = [ 'ec' , ['nohyph.tex'] ]
- # oldgrhyph.tex
+ @@languagedata['agr'] = [ 'agr' , [['grahyph4.tex','oldgrhyph.tex']] ] # new, todo
@@languagedata['pl' ] = [ 'ec' , ['plhyph.tex'] ]
@@languagedata['pt' ] = [ 'ec' , ['pthyph.tex'] ]
@@languagedata['ro' ] = [ 'ec' , ['rohyph.tex'] ]
@@ -1235,7 +1476,6 @@ class Commands
@@languagedata['sv' ] = [ 'ec' , ['svhyph.tex'] ]
@@languagedata['tr' ] = [ 'ec' , ['tkhyph.tex'] ]
@@languagedata['uk' ] = [ 'default' , [['ukhyphen.tex','ukhyph.tex']] ]
-
end
class Commands
diff --git a/scripts/context/ruby/graphics/gs.rb b/scripts/context/ruby/graphics/gs.rb
index 807cad10c..588ef2417 100644
--- a/scripts/context/ruby/graphics/gs.rb
+++ b/scripts/context/ruby/graphics/gs.rb
@@ -13,11 +13,14 @@
require 'base/variables'
require 'base/system'
+require 'ftools'
class GhostScript
include Variables
+ @@pdftrimwhite = 'pdftrimwhite.pl'
+
@@pstopdfoptions = [
'AntiAliasColorImages',
'AntiAliasGrayImages',
@@ -213,7 +216,7 @@ class GhostScript
else report("invalid conversion method #{gsmethod}")
end
rescue
- report("job aborted due to some error #{$!}")
+ report("job aborted due to some error: #{$!}")
begin
File.delete(resultfile) if test(?e,resultfile)
rescue
@@ -338,9 +341,12 @@ class GhostScript
end
- def convertbounded (inpfile, outfile)
-
+ def convertbounded(inpfile, outfile)
report("converting #{inpfile} bounded")
+ do_convertbounded(inpfile, outfile)
+ end
+
+ def do_convertbounded(inpfile, outfile)
begin
return false if FileTest.file?(outfile) && (! File.delete(outfile))
@@ -456,13 +462,14 @@ class GhostScript
report("converting #{inpfile} cropped")
- convertbounded(inpfile, @@pdftempfile)
+ do_convertbounded(inpfile, @@pdftempfile)
return unless test(?e,@@pdftempfile)
arguments = " --offset=#{@offset} #{@@pdftempfile} #{outfile}"
- unless ok = System.run('cropcrap',arguments) then
+ report("calling #{@@pdftrimwhite}")
+ unless ok = System.run(@@pdftrimwhite,arguments) then
report('cropping failed')
begin
File.delete(outfile)
diff --git a/scripts/context/ruby/newtexexec.rb b/scripts/context/ruby/newtexexec.rb
index 564205d2e..a44cf1116 100644
--- a/scripts/context/ruby/newtexexec.rb
+++ b/scripts/context/ruby/newtexexec.rb
@@ -356,7 +356,7 @@ class Commands
copyortrim(true,'trim')
end
- def copyortrim(trim=false)
+ def copyortrim(trim=false,what='unknown')
if job = TEX.new(logger) then
prepare(job)
job.cleanuptemprunfiles
diff --git a/scripts/context/ruby/texmfstart.rb b/scripts/context/ruby/texmfstart.rb
index dfc9b1a26..0320ce97a 100644
--- a/scripts/context/ruby/texmfstart.rb
+++ b/scripts/context/ruby/texmfstart.rb
@@ -85,8 +85,9 @@ $predefined['mpstools'] = 'mpstools.rb'
$predefined['exatools'] = 'exatools.rb'
$predefined['xmltools'] = 'xmltools.rb'
-$predefined['newpstopdf'] = 'newpstopdf.rb'
-$predefined['newtexexec'] = 'newtexexec.rb'
+$predefined['newpstopdf'] = 'newpstopdf.rb'
+$predefined['newtexexec'] = 'newtexexec.rb'
+$predefined['pdftrimwhite'] = 'pdftrimwhite.pl'
$makelist = [
# context
diff --git a/scripts/context/ruby/textools.rb b/scripts/context/ruby/textools.rb
index 78982f175..3c257b7db 100644
--- a/scripts/context/ruby/textools.rb
+++ b/scripts/context/ruby/textools.rb
@@ -13,7 +13,7 @@
# This script will harbor some handy manipulations on tex
# related files.
-banner = ['TeXTools', 'version 1.2.2', '2002/2005', 'PRAGMA ADE/POD']
+banner = ['TeXTools', 'version 1.3.1', '2002/2006', 'PRAGMA ADE/POD']
unless defined? ownpath
ownpath = $0.sub(/[\\\/][a-z0-9\-]*?\.rb/i,'')
@@ -41,6 +41,70 @@ class Commands
include CommandBase
+ def tpmmake
+ if filename = @commandline.argument('first') then
+ filename = File.join('tpm',filename) unless filename =~ /^tpm[\/\\]/
+ filename += '.tpm' unless filename =~ /\.tpm$/
+ if FileTest.file?(filename) then
+ data = IO.read(filename) rescue ''
+ data, fn, n = calculate_tpm(data,"TPM:RunFiles")
+ data, fm, m = calculate_tpm(data,"TPM:DocFiles")
+ data = replace_tpm(data,"TPM:Size",n+m)
+ report("total size #{n+m}")
+ begin
+ File.open(filename, 'w') do |f|
+ f << data
+ end
+ rescue
+ report("unable to save '#{filename}'")
+ else
+ report("file '#{filename}' is updated")
+ filename = File.basename(filename).sub(/\..*$/,'')
+ zipname = sprintf("%s-%04i.%02i.%02i%s",filename,Time.now.year,Time.now.month,Time.now.day,'.zip')
+ File.delete(zipname) rescue true
+ report("zipping file '#{zipname}'")
+ system("zip -r -9 -q #{zipname} #{[fn,fm].flatten.join(' ')}")
+ end
+ else
+ report("no file '#{filename}'")
+ end
+ end
+ end
+
+ def calculate_tpm(data, tag='')
+ size, ok = 0, Array.new
+ data.gsub!(/<#{tag}.*>(.*?)<\/#{tag}>/m) do
+ content = $1
+ files = content.split(/\s+/)
+ files.each do |file|
+ unless file =~ /^\s*$/ then
+ if FileTest.file?(file) then
+ report("found file #{file}")
+ size += FileTest.size(file) rescue 0
+ ok << file
+ else
+ report("missing file #{file}")
+ end
+ end
+ end
+ "<#{tag} size=\"#{size}\">#{content}</#{tag}>"
+ end
+ [data, ok, size]
+ end
+
+ def replace_tpm(data, tag='', txt='')
+ data.gsub(/(<#{tag}.*>)(.*?)(<\/#{tag}>)/m) do
+ $1 + txt.to_s + $3
+ end
+ end
+
+
+end
+
+class Commands
+
+ include CommandBase
+
def hidemapnames
report('hiding FontNames in map files')
xidemapnames(true)
@@ -871,6 +935,8 @@ commandline.registeraction('downcasefilenames', '[--recurse] [--force]') # not y
commandline.registeraction('stripformfeeds' , '[--recurse] [--force]') # not yet documented
commandline.registeraction('showfont' , 'filename')
+commandline.registeraction('tpmmake' , 'tpm file (run in texmf root)')
+
commandline.registeraction('help')
commandline.registeraction('version')
diff --git a/tex/context/base/colo-ini.tex b/tex/context/base/colo-ini.tex
index 1e2157ea9..779479681 100644
--- a/tex/context/base/colo-ini.tex
+++ b/tex/context/base/colo-ini.tex
@@ -351,6 +351,39 @@
% {\showmessage\m!colors3{#1}\empty}}%
% \unexpanded\setvalue{#1}{\color[#1]}} % \unexpanded toegevoegd
+% \def\dododefinecolor#1#2#3#4[#5][#6]% #2==set(g)value #3==set[e|x]value
+% {#1\addtocommalist{#5}\colorlist % optional
+% \doifassignmentelse{#6}
+% {\@@resetcolorparameters
+% \getparameters[\??cl @@][#6]%
+% \ifx\@@cl@@h\empty
+% \doifelse{\@@cl@@r\@@cl@@g\@@cl@@b}{\@@cl@@z\@@cl@@z\@@cl@@z}
+% {\doifelse{\@@cl@@c\@@cl@@m\@@cl@@y\@@cl@@k}{\@@cl@@z\@@cl@@z\@@cl@@z\@@cl@@z}
+% {\doifelse\@@cl@@s\@@cl@@z
+% {\showmessage\m!colors8{{[#6]},#5}%
+% #3{\??cr#5}{\colorZpattern}}
+% {#3{\??cr#5}{\colorSpattern}}}
+% {#3{\??cr#5}{\colorCpattern}}}
+% {#3{\??cr#5}{\colorRpattern}}%
+% \else
+% \setxvalue{\??cr#5}{\colorHpattern}%
+% \fi
+% % new: e=external spot color name
+% \ifx\@@cl@@e\empty \else
+% \doregisterspotcolorname{#5}\@@cl@@e
+% \fi}
+% {\doifdefinedelse{\??cr#6}
+% {\doifelse{#5}{#6}
+% {% this way we can freeze \definecolor[somecolor][somecolor]
+% % and still prevent cyclic definitions
+% \iffreezecolors#3{\??cr#5}{\getvalue{\??cr#6}}\fi}
+% {\iffreezecolors\@EA#3\else\@EA#2\fi
+% {\??cr#5}{\getvalue{\??cr#6}}}}
+% {\showmessage\m!colors3{#5 (def)}}}%
+% \ifcase#4\or
+% \unexpanded#2{#5}{\switchtocolor[#5]}% \unexpanded toegevoegd
+% \fi}
+
\def\dododefinecolor#1#2#3#4[#5][#6]% #2==set(g)value #3==set[e|x]value
{#1\addtocommalist{#5}\colorlist % optional
\doifassignmentelse{#6}
@@ -372,18 +405,30 @@
\ifx\@@cl@@e\empty \else
\doregisterspotcolorname{#5}\@@cl@@e
\fi}
- {\doifdefinedelse{\??cr#6}
- {\doifelse{#5}{#6}
- {% this way we can freeze \definecolor[somecolor][somecolor]
- % and still prevent cyclic definitions
- \iffreezecolors#3{\??cr#5}{\getvalue{\??cr#6}}\fi}
- {\iffreezecolors\@EA#3\else\@EA#2\fi
- {\??cr#5}{\getvalue{\??cr#6}}}}
- {\showmessage\m!colors3{#5 (def)}}}%
+ {\doifelsenothing\currentpalet
+ \donefalse
+ {\doifdefinedelse{\??cr\currentpalet#6}\donetrue\donefalse}
+ \ifdone
+ \doifnot{#5}{#6}
+ {#2{\??cr#5}{\paletcolorspec{#6}}}%
+ \else
+ \doifdefinedelse{\??cr#6}
+ {\doifelse{#5}{#6}
+ {% this way we can freeze \definecolor[somecolor][somecolor]
+ % and still prevent cyclic definitions
+ \iffreezecolors#3{\??cr#5}{\getvalue{\??cr#6}}\fi}
+ {\iffreezecolors\@EA#3\else\@EA#2\fi
+ {\??cr#5}{\getvalue{\??cr#6}}}}
+ {\showmessage\m!colors3{#5 (def)}}%
+ \fi}%
\ifcase#4\or
\unexpanded#2{#5}{\switchtocolor[#5]}% \unexpanded toegevoegd
\fi}
+\def\paletcolorspec#1%
+% {\executeifdefined{\??cr\currentpalet#1}{\executeifdefined{\??cr#1}\empty}}
+ {\getvalue{\??cr\currentpalet#1}}
+
%D Hex color support is not enabled by default. You need to say \setupcolor
%D [hex] to get this working.
@@ -2257,10 +2302,16 @@
{\doifvaluesomething{\??pa#1}
{\setevalue{\??pa#1}{\getvalue{\??pa#1},}}%
\setevalue{\??pa#1}{\getvalue{\??pa#1}##1}%
- \doifdefinedelse{\??cr##2}
- {\iffreezecolors\@EA\setevalue\else\@EA\setvalue\fi
- {\??cr#1:##1}{\getvalue{\??cr##2}}}
- {\letvalue{\??cr#1:##1}\colorXpattern}}%
+ \doifassignmentelse{##2}
+ {% == \definepalet[test][xx={y=.4}]
+ \definecolor[\??pa#1:##1][##2]%
+ \iffreezecolors\@EA\setevalue\else\@EA\setvalue\fi
+ {\??cr#1:##1}{\getvalue{\??cr\??pa#1:##1}}}
+ {% == \definepalet[test][xx=green]
+ \doifdefinedelse{\??cr##2}
+ {\iffreezecolors\@EA\setevalue\else\@EA\setvalue\fi
+ {\??cr#1:##1}{\getvalue{\??cr##2}}}
+ {\letvalue{\??cr#1:##1}\colorXpattern}}}%
\def\dododefinepalet##1%
{\dodododefinepalet[##1]}%
\processcommalist[#2]\dododefinepalet}
@@ -2273,6 +2324,14 @@
{\getcommacommandsize[\getvalue{\??pa\??pa#1}]%
\edef\paletsize{\number\commalistsize}}
+%D Instead of refering to colors, one can also directly specify
+%D a color:
+%D
+%D \starttyping
+%D \definepalet[test][xx=green]
+%D \definepalet[test][xx={y=.4}]
+%D \stoptyping
+
%D \macros
%D {setuppalet}
%D
diff --git a/tex/context/base/cont-new.tex b/tex/context/base/cont-new.tex
index 0021ff2e1..804583925 100644
--- a/tex/context/base/cont-new.tex
+++ b/tex/context/base/cont-new.tex
@@ -11,7 +11,7 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\newcontextversion{2006.03.25 13:21}
+\newcontextversion{2006.04.06 23:00}
%D This file is loaded at runtime, thereby providing an
%D excellent place for hacks, patches, extensions and new
@@ -26,6 +26,39 @@
\writestatus{\m!systems}{beware: some patches loaded from cont-new.tex}
+\def\convertencodedtokens{\stringifyencodedtokens}
+
+% test case:
+%
+% \enableregime[cp1250]
+% \mainlanguage[cz]
+%
+% \starttext
+%
+% \title{Žluouècí konì úpí}
+% \placelist[chapter][criterium=all]
+%
+% \startbuffer
+% <chapter>
+% <title>Žluouècí konì úpí</title>
+% </chapter>
+% \stopbuffer
+%
+% \defineXMLenvironment
+% [chapter]
+% {\defineXMLsave[title]}
+% {\expanded{\chapter{\XMLflush{title}}}}
+% \processXMLbuffer
+%
+% \setuphead[chapter][expansion=yes]
+% \defineXMLenvironment
+% [chapter]
+% {\defineXMLsave[title]}
+% {\chapter{\XMLflush{title}}}
+% \processXMLbuffer
+%
+% \stoptext
+
% just in case we load something from a file (pdfr-ec for instance)
\prependtoks \restoreendofline \to \everybeforeshipout
@@ -2399,10 +2432,6 @@
\def\stopgeheel
{\stoplinecorrection}
-%D No more news.
-
-\protect
-
%D Next we load a few local optimizations and new features. They
%D live on on my machine and are not distributed, but they may end
%D up in the distributed files.
@@ -2410,4 +2439,4 @@
\readsysfile {cont-loc} {} {} % local improvements, patches, new features
\readsysfile {cont-exp} {} {} % experimental features (e.g. local speed-ups)
-\endinput
+\protect \endinput
diff --git a/tex/context/base/context.tex b/tex/context/base/context.tex
index 7af379e14..0a9a38122 100644
--- a/tex/context/base/context.tex
+++ b/tex/context/base/context.tex
@@ -31,7 +31,7 @@
%D 2004.8.30 the low level interface is english. Watch out and adapt
%D your styles an modules.
-\def\contextversion{2006.03.25 13:21}
+\def\contextversion{2006.04.06 23:00}
%D For those who want to use this:
@@ -355,7 +355,7 @@
%D Sorting:
-% not yet: \input sort-ini.tex
+% \input sort-ini.tex
%D Only the basic XML parser and remapper are part of the core.
%D These macrosa re loaded last since they overload and|/|or
@@ -376,6 +376,18 @@
\input meta-xml.tex % to be documented
+%D Temporary hack, will go when we move to newtexexec:
+
+\unprotect
+
+\appendtoks % newtexexec/newtexutil, after option file is loaded:
+ \doif{\systemparameter\c!method} {2}
+ {\def\TEXEXECcommand{texmfstart newtexexec} %
+ \readsysfile {sort-ini} {} {}}%
+\to \everyjob
+
+\protect
+
% %D The next two modules implement some additional
% %D functionality concerning classes of documents and output.
% %D These modules probably will be replaced some day.
diff --git a/tex/context/base/core-buf.tex b/tex/context/base/core-buf.tex
index 7462ea6ff..6ee575daa 100644
--- a/tex/context/base/core-buf.tex
+++ b/tex/context/base/core-buf.tex
@@ -215,19 +215,28 @@
\fi
\next}
+\chardef\buffernestmode\plusone % 0: not nested, 1: startbuffer nested, 2: all buffers nested
+
\def\dododostartbuffer[#1][#2][#3][#4]%
{%\showmessage\m!systems{15}{#2}%
\doifelsevalue{\??bu#1\c!paragraph}\v!yes
{\segmentatebuffertrue}
{\doifnumberelse{\getvalue{\??bu#1\c!paragraph}}\segmentatebuffertrue\segmentatebufferfalse}%
+ \doifvalue{\??bu#1\c!local}\v!yes
+ {\chardef\buffernestmode\plustwo}% permit nesting
\doifelsenothing{#4}
{\letbeundefined{\e!stop\v!buffer}% % \let\stopbuffer=\relax % \undefined
\@EA\@EA\@EA\convertargument\@EA\e!start\v!buffer\to\beginofblock % else a space
\@EA\@EA\@EA\convertargument\@EA\e!stop \v!buffer\to\endofblock
- \let\processnextblockline\processnextbufferline}
+ \ifcase\buffernestmode \else
+ \let\processnextblockline\processnextbufferline
+ \fi}
{\letbeundefined{#4}% \letvalue{#4}=\relax % \undefined
\@EA\convertargument\csname#3\endcsname\to\beginofblock
- \@EA\convertargument\csname#4\endcsname\to\endofblock}%
+ \@EA\convertargument\csname#4\endcsname\to\endofblock
+ \ifcase\buffernestmode \or \else
+ \let\processnextblockline\processnextbufferline
+ \fi}%
\def\closeblock
{\ifsegmentatebuffer
\immediate\write\tmpblocks{\string\stopbufferparagraph}%
@@ -313,7 +322,7 @@
\getparameters[\??bu][#1]%
\fi}
-\def\dodefinebuffer[#1]%
+\def\dodefinebuffer[#1][#2]%
{\iffirstargument % else problems
\doglobal\increment\nofdefinedbuffers
\letvalue{\??bu#1\c!number}\nofdefinedbuffers
@@ -324,10 +333,11 @@
{\noexpand\dodoprocessTEXbuffer[#1][def-\nofdefinedbuffers]}%
\setevalue{\e!type#1}%
{\noexpand\dodotypebuffer[#1][def-\nofdefinedbuffers]}%
+ \getparameters[\??bu#1][#2]%
\fi}
\def\definebuffer
- {\dosingleargument\dodefinebuffer}
+ {\dodoubleempty\dodefinebuffer}
% yet another undocumented feature, but who cares:
@@ -1037,11 +1047,11 @@
\setupcopyblock
\skipblocklineAB}
-% the buffer mechanism handles nesting, add some switch
+% \setvalue{\e!start\v!hiding}%
+% {\dostartbuffer[buf-\nofpostponedblocks]
+% [\e!start\v!hiding][\e!stop\v!hiding]}
-\setvalue{\e!start\v!hiding}%
- {\dostartbuffer[buf-\nofpostponedblocks]
- [\e!start\v!hiding][\e!stop\v!hiding]}
+\definebuffer[\v!hiding] \setupbuffer[\v!hiding][\c!local=\v!yes]
\setupbuffer
[\c!paragraph=\v!no,
diff --git a/tex/context/base/core-fil.tex b/tex/context/base/core-fil.tex
index e8b92221c..a3311f562 100644
--- a/tex/context/base/core-fil.tex
+++ b/tex/context/base/core-fil.tex
@@ -165,7 +165,7 @@
\else
\makeshortfilename[#1\truefilename{#2}]% beware: *- is not part of syn
\doifelseflagged\shortfilename
- {\showmessage\m!systems7{#2}%
+ {\showmessage\m!systems7{#2 (line \number\inputlineno)}%
\settrue\moduleisloaded
\let\next\relax}
{\doglobal\setflag\shortfilename
@@ -192,22 +192,91 @@
\showmessage\m!systems6{#2}%
\fi}
-\def\dousemodules[#1][#2]%
- {\ifsecondargument
+% \def\usemodules
+% {\dodoubleempty\dousemodules}
+%
+% \def\dousemodules[#1][#2]%
+% {\ifsecondargument
+% \doifelsenothing{#2}
+% {\let\next\relax}
+% {\def\next{\processcommalist[#2]{\dodousemodules{#1}}}}%
+% \else
+% \def\next{\usemodules[][#1]}%
+% \fi
+% \next}
+%
+% \let\usemodule\usemodules
+
+\def\usemodules
+ {\dotripleempty\dousemodules}
+
+\def\dousemodules[#1][#2][#3]%
+ {\pushmacro\currentmodule
+ \pushmacro\currentmoduleparameters
+ \let\currentmoduleparameters\empty
+ \ifthirdargument
+ \doifelsenothing{#2}
+ {\let\next\relax}
+ {\def\currentmoduleparameters{#3}%
+ \def\next{\processcommalist[#2]{\dodousemodules{#1}}}}%
+ \else\ifsecondargument
\doifelsenothing{#2}
{\let\next\relax}
- {\def\next{\processcommalist[#2]{\dodousemodules{#1}}}}%
+ {\doifassignmentelse{#2}
+ {\def\currentmoduleparameters{#2}%
+ \def\next{\processcommalist[#1]{\dodousemodules{}}}}
+ {\def\next{\processcommalist[#2]{\dodousemodules{#1}}}}}%
+ \else
+ \def\next{\processcommalist[#1]{\dodousemodules{}}}%
+ \fi\fi
+ \next
+ \popmacro\currentmoduleparameters
+ \popmacro\currentmodule}
+
+\let\currentmoduleparameters\empty
+\let\currentmodule \s!unknown
+
+\def\startmodule
+ {\doifnextcharelse[\dostartmodule\nostartmodule}
+
+\def\nostartmodule #1 %
+ {\dostartmodule[#1]}
+
+\def\dostartmodule[#1]%
+ {\pushmacro\currentmodule
+ \pushmacro\currentmoduleparameters
+ \def\currentmodule{#1}}
+
+\def\stopmodule
+ {\popmacro\currentmoduleparameters
+ \popmacro\currentmodule}
+
+\def\setupmodule
+ {\dodoubleempty\dosetupmodule}
+
+\def\dosetupmodule[#1][#2]%
+ {\scratchtoks\expandafter{\currentmoduleparameters}%
+ \ifsecondargument
+ \getparameters[\??md:#1:][#2]%
+ \expanded{\getparameters[\??md:#1:][\the\scratchtoks]}%
\else
- \def\next{\usemodules[][#1]}%
+ \getparameters[\??md:\currentmodule:][#1]%
+ \expanded{\getparameters[\??md:\currentmodule:][\the\scratchtoks]}%
\fi
- \next}
+ \let\currentmoduleparameters\empty}
-\def\usemodules
- {\dodoubleempty\dousemodules}
-
-\let\usemodule\usemodules
+\def\moduleparameter #1#2{\csname\??md:#1:#2\endcsname}
+\def\currentmoduleparameter#1{\csname\??md:\currentmodule:#1\endcsname}
-% \usemodule[t][speech]
+% \usemodule[newmml]
+% \usemodule[newmml][a=b]
+% \usemodule[x][newmml]
+% \usemodule[x][newmml][a=b]
+%
+% \startmodule [mathml]
+% \setupmodule[a=c] [\currentmoduleparameter{a}] % user vars will be set afterwards
+% \setupmodule[a=c] [\currentmoduleparameter{a}] % user vars are now forgotten
+% \stopmodule
%D We also support a singular call, which saves us for
%D frustrations when we do a typo.
diff --git a/tex/context/base/core-fnt.tex b/tex/context/base/core-fnt.tex
index 6a55849f4..dc6b8153d 100644
--- a/tex/context/base/core-fnt.tex
+++ b/tex/context/base/core-fnt.tex
@@ -149,6 +149,11 @@
\def\cap{\mathortext\normalcap\smallcapped}
\def\Cap{\mathortext\normalCap\SmallCapped}
+\appendtoks
+ \let\cap\firstofoneargument
+ \let\Cap\firstofoneargument
+\to \simplifiedcommands
+
%D \macros
%D {setupcapitals}
%D
diff --git a/tex/context/base/core-int.tex b/tex/context/base/core-int.tex
index 90bcc23fa..83b65f010 100644
--- a/tex/context/base/core-int.tex
+++ b/tex/context/base/core-int.tex
@@ -508,7 +508,9 @@
\iffirstargument
\bgroup
\ifsecondargument
- \edef\openbookmarklist{#2}%
+ \doifelse{#2}\v!all
+ {\edef\openbookmarklist{#1}}
+ {\edef\openbookmarklist{#2}}%
\else
\let\openbookmarklist\empty
\fi
diff --git a/tex/context/base/core-itm.tex b/tex/context/base/core-itm.tex
index bc203dfa1..9c4288fcb 100644
--- a/tex/context/base/core-itm.tex
+++ b/tex/context/base/core-itm.tex
@@ -82,6 +82,16 @@
\def\setitemparameter #1#2{\@EA\def\csname\??op\currentitemgroup#1#2\endcsname}
\def\letitemparameter #1#2{\@EA\let\csname\??op\currentitemgroup#1#2\endcsname}
+% test this: saves hash entries and is also faster
+%
+% \let\doinitializeitemgrouplevel\gobbleoneargument % todo ! ! !
+
+\def\getitemparameter#1#2%
+ {\executeifdefined{\??op\currentitemgroup#1#2}%
+ {\executeifdefined{\??op\currentitemgroup #2}%
+ {\executeifdefined{\??oo #2}%
+ {}}}}
+
\def\doitemattributes #1{\doattributes{\??op\currentitemgroup#1}}
\def\@@globalitemsymbol #1{\??op\currentitemgroup\c!symbol\s!global#1}
diff --git a/tex/context/base/core-mat.tex b/tex/context/base/core-mat.tex
index d1b91e625..139a25d3a 100644
--- a/tex/context/base/core-mat.tex
+++ b/tex/context/base/core-mat.tex
@@ -1,11 +1,11 @@
%D \module
%D [ file=core-mat,
-%D version=1998.12.07,
+%D version=2006.03.27, % 1998.12.07
%D title=\CONTEXT\ Core Macros,
%D subtitle=Math Fundamentals,
-%D author=Hans Hagen,
+%D author={Hans Hagen \& Taco Hoekwater},
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%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
@@ -636,6 +636,8 @@
\let\normalreqno\eqno
\let\normalleqno\leqno
+\let\donestedformulanumber\gobbletwoarguments
+
\def\dodoplaceformula[#1]#2% messy, needs a clean up
{\doifelse{#1}{-}
{\setfalse\handleformulanumber}
@@ -646,6 +648,9 @@
\def\formulanumber
{%\global\let\subformulanumber\doformulanumber % no, bug
\doformulanumber[#1][#2]}%
+ \def\donestedformulanumber##1##2%
+ {\doifsomething{##1}
+ {\doifelse{##1}{+}{\doformulanumber[#1]}{\doformulanumber[##1]}[##2][]{}}}%
\def\subformulanumber
{\setfalse\incrementformulanumber
\formulanumber}%
@@ -656,7 +661,8 @@
{\normalreqno{\doformulanumber[#1][#2][]{}}}}%
\else
\def\formulanumber{\doformulanumber[#1][#2]}%
- \global\let\subformulanumber\doformulanumber
+ \let\donestedformulanumber\gobbletwoarguments
+ \let\subformulanumber\doformulanumber % was \global
\global\let\doplaceformulanumber\empty
\fi}
@@ -1621,12 +1627,22 @@
\def\dodoalignNC
{\gdef\doalignNC##1{&##1}}
+% \def\doalignNR[#1][#2]%
+% {\doifsomething{#1}
+% {\doifelse{#1}{+}
+% {\doformulanumber[][#2][]{}}
+% {\doformulanumber[#1][#2][]{}}}%
+% \crcr}
+
\def\doalignNR[#1][#2]%
- {\doifsomething{#1}
- {\doifelse{#1}{+}
- {\doformulanumber[][#2][]{}}
- {\doformulanumber[#1][#2][]{}}}%
- \crcr}
+ {\donestedformulanumber{#1}{#2}\crcr}
+
+%D \starttyping
+%D \placeformula[eqn0]\startformula \startalign[n=1] a\NR \stopalign \stopformula See \in[eqn0]
+%D \placeformula[eqn1]\startformula \startalign[n=1] a\NR \stopalign \stopformula See \in[eqn1]
+%D \placeformula \startformula \startalign[n=1] a\NR[eqn2] \stopalign \stopformula See \in[eqn2]
+%D \placeformula[eqn3]\startformula \startalign[n=1] a\NR[+] \stopalign \stopformula See \in[eqn3]
+%D \stoptyping
% todo: pop in cell
@@ -1991,7 +2007,35 @@
\setupmathmatrix
[\c!distance=1em,
\c!left=,
- \c!right=]
+ \c!right=,
+ \c!align=\v!middle]
+
+\def\dosetmatrixcolumn#1% hh: todo: \definematrixalign
+ {\letvalue{\??eq:\v!left :\number\eqaligncolumn}\hfil
+ \letvalue{\??eq:\v!right:\number\eqaligncolumn}\hfil
+ \doif{#1}\v!left {\letvalue{\??eq:\v!left :\number\eqaligncolumn}\relax
+ \letvalue{\??eq:\v!right:\number\eqaligncolumn}\hfil}%
+ \doif{#1}\v!right {\letvalue{\??eq:\v!left :\number\eqaligncolumn}\hfil
+ \letvalue{\??eq:\v!right:\number\eqaligncolumn}\relax }%
+ \doif{#1}\v!middle{\letvalue{\??eq:\v!left :\number\eqaligncolumn}\hfil
+ \letvalue{\??eq:\v!right:\number\eqaligncolumn}\hfil}}
+
+\def\buildmathmatrix % beware: etex only
+ {\scratchtoks\emptytoks
+ \expanded{\scratchtoks{\the\scratchtoks\the\!!toksa}}%
+ \dorecurse{\numexpr\scratchcounter-\plusone\relax}
+ {\expanded{\scratchtoks{\the\scratchtoks\the\!!toksb}}}%
+ \expanded{\scratchtoks{\the\scratchtoks\the\!!toksc }}}
+
+\def\preparemathmatrix
+ {\!!toksa{\strut
+ \firstineqalign\leftofeqalign \span \textineqalign{##}\rightofeqalign}%
+ \!!toksb{&\hskip\mathmatrixparameter\c!distance
+ \nextineqalign\leftofeqalign \span \textineqalign{##}\rightofeqalign}%
+ \!!toksc{&&\hskip\mathmatrixparameter\c!distance
+ \leftofeqalign \span \textineqalign{##}\rightofeqalign}%
+ \buildmathmatrix
+ \halign \@EA \bgroup\the\scratchtoks \crcr}
\def\definemathmatrix
{\dodoubleempty\dodefinemathmatrix}
@@ -2009,6 +2053,31 @@
% \let\domatrixNR\doalignNR
+% \def\dostartmathmatrix[#1][#2]%
+% {\begingroup
+% \edef\currentmathmatrix{#1}%
+% \doifassignmentelse{#2}{\setupmathmatrix[#1][#2]}\donothing
+% \null
+% \mathmatrixparameter\c!left
+% \vcenter\bgroup
+% \pushmacro\domatrixNC
+% \let\endmath\relax
+% \def\NC{\domatrixNC}%
+% \def\MC{\domatrixNC\ifmmode\else$\def\endmath{$}\fi}%
+% \global\let\domatrixNC\dodomatrixNC
+% %\def\NR{\endmath&\global\let\domatrixNC\dodomatrixNC\doxxdoubleempty\domatrixNR}%
+% \def\NR{\endmath\global\let\domatrixNC\dodomatrixNC\crcr}%
+% \normalbaselines
+% \mathsurround\zeropoint
+% \everycr\emptytoks
+% \tabskip\zeropoint
+% \global\eqaligncolumn\plusone
+% \halign\bgroup
+% \hfil$##$\hfil
+% &&\hskip\mathmatrixparameter\c!distance\relax\hfil$##$\hfil\crcr
+% \mathstrut\crcr
+% \noalign{\kern-\baselineskip}}
+
\def\dostartmathmatrix[#1][#2]%
{\begingroup
\edef\currentmathmatrix{#1}%
@@ -2021,18 +2090,16 @@
\def\NC{\domatrixNC}%
\def\MC{\domatrixNC\ifmmode\else$\def\endmath{$}\fi}%
\global\let\domatrixNC\dodomatrixNC
- %\def\NR{\endmath&\global\let\domatrixNC\dodomatrixNC\doxxdoubleempty\domatrixNR}%
\def\NR{\endmath\global\let\domatrixNC\dodomatrixNC\crcr}%
\normalbaselines
\mathsurround\zeropoint
\everycr\emptytoks
\tabskip\zeropoint
+ \eqaligncolumn\zerocount % could be \scratchcounter
+ \processcommacommand[\mathmatrixparameter\c!align]{\advance\eqaligncolumn\plusone\dosetmatrixcolumn}%
+ \scratchcounter=\ifnum\eqaligncolumn>\scratchcounter \eqaligncolumn \else \plusone \fi
\global\eqaligncolumn\plusone
- \halign\bgroup
- \hfil$##$\hfil
- &&\hskip\mathmatrixparameter\c!distance\relax\hfil$##$\hfil\crcr
- \mathstrut\crcr
- \noalign{\kern-\baselineskip}}
+ \preparemathmatrix } % uses scratchcounter
\def\dostopmathmatrix
{\crcr
@@ -2065,6 +2132,127 @@
%D \stopbuffer
%D
%D \typebuffer \getbuffer
+%D
+%D Taco added some code (dedicated to Aditya Mahajan) that gives more
+%D control over aligments:
+
+%D \startbuffer
+%D \startformula
+%D \startmatrix
+%D \NC a + x \NC = \NC a + d \NR
+%D \NC y \NC = \NC d \NR
+%D \stopmatrix
+%D \stopformula
+%D \stopbuffer
+%D
+%D \typebuffer \getbuffer
+
+%D \startbuffer
+%D \startformula
+%D \startmatrix [distance=3pt,align={right,left}]
+%D \NC a + x \NC = a + d \NR
+%D \NC y \NC = d \NR
+%D \stopmatrix
+%D \stopformula
+%D \stopbuffer
+%D
+%D \typebuffer \getbuffer
+
+%D \startbuffer
+%D \startformula
+%D \startmatrix [left=\left(,right=\right)]
+%D \NC a + x \NR
+%D \NC y \NR
+%D \stopmatrix
+%D \stopformula
+%D \stopbuffer
+%D
+%D \typebuffer \getbuffer
+%D
+%D A bit more complex code:
+%D
+%D \startbuffer
+%D \startformula
+%D \startformula
+%D \text{Let }{\cal R} = \bigcup_{P_{X_1},P_{X_2}}
+%D \left\{ (R_1, R_2) :
+%D \startmatrix[distance=1em,align={left,left,right}]
+%D \NC R_1 \NC < I(X_1 ; Y \mid X_2) \NC R_1 \NR
+%D \NC \hfill Q_2 \NC < I(X_2 ; Y \mid X_1) \NC R_2 \NR
+%D \NC R_1 + R_2 \NC < I(X_1 ; Y) \NC R_1 + R_2 \NR
+%D \stopmatrix
+%D \right\}
+%D \stopformula
+%D \stopbuffer
+%D
+%D \typebuffer \getbuffer
+
+%D \macros
+%D {startintertext}
+%D
+%D Preliminary feature:
+%D
+%D {\em example code}
+
+% \def\startintertext#1\stopintertext
+% {\noalign{\dointertext{#1}}\NR}
+
+% \unexpanded\def\dointertext#1%
+% {\penalty\postdisplaypenalty
+% \afterdisplayspace % the matching \before... is not needed
+% \vbox{\forgetall\noindent#1\par}%
+% \penalty\postdisplaypenalty}
+
+\def\startintertext#1\stopintertext
+ {\noalign{\dointertext{#1}}}
+
+\unexpanded\def\dointertext#1%
+ {\penalty\postdisplaypenalty
+ \afterdisplayspace
+ \vbox{\forgetall\noindent#1\par}%
+ \penalty\predisplaypenalty
+ \beforedisplayspace}
+
+%D \macros
+%D {substack}
+%D
+%D Preliminary code:
+%D
+%D \starttyping
+%D \startformula
+%D \sum_{%
+%D \startsubstack
+%D i = 1 \NR
+%D i \neq n \NR
+%D i \neq m
+%D \stopsubstack
+%D }a_i
+%D \stopformula
+%D \stoptyping
+
+\def\startsubstack
+ {\begingroup
+ \null
+ \vcenter\bgroup
+ \pushmacro\domatrixNC
+ \let\stopmathmode\relax
+ \def\NC{\domatrixNC}%
+ \def\MC{\domatrixNC\startmathmode}%
+ \global\let\domatrixNC\dodomatrixNC
+ \def\NR
+ {\stopmathmode
+ \global\let\domatrixNC\dodomatrixNC
+ \crcr\noalign{\nointerlineskip}}%
+ \mathsurround\zeropoint
+ \everycr\emptytoks
+ \halign\bgroup\hfil$\scriptstyle\mathstrut##$\hfil\crcr}
+
+\def\stopsubstack
+ {\crcr
+ \egroup
+ \popmacro\domatrixNC
+ \egroup
+ \endgroup}
%D \macros
%D {frac, xfrac, xxfrac}
diff --git a/tex/context/base/core-mis.tex b/tex/context/base/core-mis.tex
index 7de9e1fdb..0b12bfc0e 100644
--- a/tex/context/base/core-mis.tex
+++ b/tex/context/base/core-mis.tex
@@ -238,106 +238,328 @@
%
% Overigens kan een en ander mooier met \halign.
+% \def\dodefineparagraphs[#1][#2]%
+% {\setvalue{\s!do\s!next#1}%
+% {\def\\{\getvalue{#1}}}%
+% \setvalue{#1}%
+% {\getvalue{\s!do\s!next#1}%
+% \dostartparagraphs{#1}}%
+% \setvalue{\e!next#1}%
+% {\getvalue{#1}}%
+% \setvalue{\e!start#1}%
+% {\bgroup
+% \letvalue{\s!do\s!next#1}\empty
+% \setvalue{\e!stop#1}%
+% {\getvalue{#1}%
+% \egroup}%
+% \getvalue{#1}}%
+% \getparameters[\??al#1]%
+% [\c!n=3,
+% \c!before=\blank,
+% \c!after=\blank,
+% \c!distance=1em,
+% \c!height=\v!fit,
+% \c!rule=\v!off,
+% \c!command=,
+% \c!align=,
+% \c!tolerance=\v!tolerant,
+% \c!rulethickness=\linewidth,
+% \c!style=,
+% \c!color=,
+% \c!top=,
+% \c!top=\vss,
+% \c!bottom=\vfill,
+% #2]%
+% \setvalue{\e!setup#1\e!endsetup}%
+% {\setupparagraphs[#1]}%
+% \dorecurse
+% {\getvalue{\??al#1\c!n}}
+% {\setupparagraphs[#1][\recurselevel]
+% [\c!width=,
+% \c!bottom=\getvalue{\??al#1\c!bottom},
+% \c!top=\getvalue{\??al#1\c!top},
+% \c!height=\getvalue{\??al#1\c!height},
+% \c!style=\getvalue{\??al#1\c!style},
+% \c!color=\getvalue{\??al#1\c!color},
+% \c!rule=\getvalue{\??al#1\c!rule},
+% \c!rulethickness=\getvalue{\??al#1\c!rulethickness},
+% \c!align=\getvalue{\??al#1\c!align},
+% \c!tolerance=\getvalue{\??al#1\c!tolerance},
+% \c!distance=\getvalue{\??al#1\c!distance}]}%
+% \setupparagraphs[#1][1][\c!distance=0em]}
+%
+% \def\defineparagraphs
+% {\dodoubleargument\dodefineparagraphs}
+%
+% \def\dosetupparagraphs[#1][#2][#3]%
+% {\doifelse{#2}\v!each
+% {\dorecurse
+% {\getvalue{\??al#1\c!n}}
+% {\getparameters[\??al#1\recurselevel][#3]}}
+% {\ConvertToConstant\doifelse{#3}{}
+% {\getparameters[\??al#1][#2]}
+% {\def\docommando##1%
+% {\getparameters[\??al#1##1][#3]}%
+% \processcommalist[#2]\docommando}}}
+%
+% \def\setupparagraphs
+% {\dotripleempty\dosetupparagraphs}
+%
+% \newcount\alcounter
+% \newcount\alnsize
+% \newdimen\alhsize
+%
+% \def\doparagraphrule#1#2%
+% {\doifelsevalue{\??al#2\the\alcounter\c!rule}\v!on
+% {\linewidth\getvalue{\??al#2\the\alcounter\c!rulethickness}%
+% \scratchdimen#1%
+% \advance\scratchdimen-\linewidth
+% \divide\scratchdimen \plustwo
+% \hskip\scratchdimen
+% \vrule\!!width\linewidth
+% \hskip\scratchdimen}
+% {\hskip#1}}
+%
+% \def\dostartparagraph#1%
+% {\doifelsevaluenothing{\??al#1\the\alcounter\c!width}
+% {\!!widtha\alhsize
+% \divide\!!widtha \alnsize}
+% {\!!widtha\getvalue{\??al#1\the\alcounter\c!width}}%
+% \dostartattributes
+% {\??al#1\the\alcounter}\c!style\c!color
+% \empty
+% \doifelsevalue{\??al#1\the\alcounter\c!height}\v!fit
+% {\setbox0\vtop}
+% {\setbox0\vtop to \getvalue{\??al#1\the\alcounter\c!height}}%
+% \bgroup
+% \blank[\v!disable]%
+% \forgetall
+% \getvalue{\??al#1\the\alcounter\c!top}%
+% \getvalue{\??al#1\c!inner}%
+% \hsize\!!widtha % setting \wd afterwards removed
+% \getvalue{\??al#1\the\alcounter\c!inner}%
+% \edef\!!stringa{\getvalue{\??al#1\the\alcounter\c!align}}% nodig?
+% \expandafter\setupalign\expandafter[\!!stringa]%
+% \edef\!!stringa{\getvalue{\??al#1\the\alcounter\c!tolerance}}% nodig?
+% \expandafter\setuptolerance\expandafter[\!!stringa]%
+% \ignorespaces
+% \endgraf
+% \ignorespaces
+% %
+% % Nadeel van de onderstaande constructie is dat \everypar
+% % binnen een groep kan staan en zo steeds \begstruts
+% % worden geplaatst. Mooi is anders dus moet het anders!
+% %
+% % Hier is \Everypar niet nodig.
+% %
+% \everypar{\begstrut\everypar\emptytoks}%
+% %
+% \ignorespaces\geenspatie % dubbel: \ignorespaces
+% \getvalue{\??al#1\the\alcounter\c!command}}
+%
+% \def\dostopparagraph#1%
+% {\ifvmode
+% \removelastskip
+% \else
+% \unskip\endstrut\endgraf
+% \fi
+% \getvalue{\??al#1\the\alcounter\c!bottom}%
+% \egroup
+% \ifdim\wd0=\zeropoint % no data
+% \wd0\!!widtha
+% \fi
+% \box0
+% \dostopattributes
+% %\ifnum\alcounter<\getvalue{\??al#1\c!n}\relax
+% % \def\next{\doparagraphcell{#1}}%
+% %\else
+% % \def\next{\dostopparagraphs{#1}}%
+% %\fi
+% %\next}
+% \ifnum\alcounter<\getvalue{\??al#1\c!n}\relax
+% \@EA\doparagraphcell
+% \else
+% \@EA\dostopparagraphs
+% \fi{#1}}
+%
+% \def\doparagraphcell#1%
+% {\global\advance\alcounter \plusone
+% \doifelsevaluenothing{\??al#1\the\alcounter\c!distance}
+% {\doifnot{\the\alcounter}{1}
+% {\hskip\getvalue{\??al#1\c!distance}}}
+% {\doifelse{\the\alcounter}{1}%
+% {\hskip\getvalue{\??al#1\the\alcounter\c!distance}}
+% {\doparagraphrule{\getvalue{\??al#1\the\alcounter\c!distance}}{#1}}}%
+% \setvalue{#1}{\dostopparagraph{#1}}%
+% \dostartparagraph{#1}}
+%
+% \def\dostartparagraphs#1%
+% {\global\alcounter\zerocount
+% \parindent\zeropoint
+% \setlocalhsize
+% \alhsize\localhsize
+% \alnsize\getvalue{\??al#1\c!n}\relax
+% \dorecurse
+% {\getvalue{\??al#1\c!n}}
+% {\doifelsevaluenothing{\??al#1\recurselevel\c!distance}
+% {\ifnum\recurselevel=\plusone\else
+% \global\advance\alhsize -\getvalue{\??al#1\c!distance}\relax
+% \fi}
+% {\global\advance\alhsize -\getvalue{\??al#1\recurselevel\c!distance}\relax}%
+% \doifvaluesomething{\??al#1\recurselevel\c!width}
+% {\global\advance\alnsize \minusone
+% \global\advance\alhsize -\getvalue{\??al#1\recurselevel\c!width}\relax}}%
+% %\whitespace % gaat fout bij \framed
+% \getvalue{\??al#1\c!before}%
+% \leavevmode % gaat wel goed bij \framed, brrr
+% \setbox\scratchbox\vbox\bgroup\hbox\bgroup\doparagraphcell{#1}}
+%
+% \def\dostopparagraphs#1%
+% {\egroup
+% \egroup
+% \iftrue
+% \hbox{\raise\strutheight\box\scratchbox}% new
+% \else
+% \box\scratchbox % old
+% \fi
+% \par
+% \getvalue{\??al#1\c!after}}%
+
+% there is quite some historic balast in this mechanism, the next variant
+% is a first cleanup
+
+\let\currentparagraph\empty
+
+\newcount\alcounter \newcount\alnsize \newdimen\alhsize
+
+\def\paragraphparameter#1% \checkedparameter\??al\currentparagraph#1
+ {\executeifdefined{\??al\currentparagraph#1}{\executeifdefined{\??al#1}\empty}}
+
+\def\paragraphcellmeter#1#2% \checkedparameter\??al\currentparagraph#1
+ {\executeifdefined{\??al\currentparagraph\number#1#2}{\paragraphparameter{#2}}}
+
\def\dodefineparagraphs[#1][#2]%
- {\setvalue{\s!do\s!next#1}%
- {\def\\{\getvalue{#1}}}%
- \setvalue{#1}%
+ {\edef\currentparagraph{#1}%
+ \setvalue{\s!do\s!next\currentparagraph}%
+ {\def\\{\getvalue\currentparagraph}}%
+ \setvalue\currentparagraph
{\getvalue{\s!do\s!next#1}%
- \dostartalineas{#1}}%
- \setvalue{\e!next#1}%
+ \dostartparagraphs{#1}}%
+ \setvalue{\e!next\currentparagraph}%
{\getvalue{#1}}%
- \setvalue{\e!start#1}%
+ \setvalue{\e!start\currentparagraph}%
{\bgroup
- \letvalue{\s!do\s!next#1}\empty
- \setvalue{\e!stop#1}%
- {\getvalue{#1}%
- \egroup}%
- \getvalue{#1}}%
- \getparameters[\??al#1]%
- [\c!n=3,
- \c!before=\blank,
- \c!after=\blank,
- \c!distance=1em,
- \c!height=\v!fit,
- \c!rule=\v!off,
- \c!command=,
- \c!align=,
- \c!tolerance=\v!tolerant,
- \c!style=,
- \c!color=,
- \c!top=,
- \c!top=\vss,
- \c!bottom=\vfill,
+ \edef\currentparagraph{#1}%
+ \letvalue{\s!do\s!next\currentparagraph}\empty
+ \setvalue{\e!stop\currentparagraph}{\getvalue\currentparagraph\egroup}%
+ \getvalue\currentparagraph}%
+ \getparameters[\??al\currentparagraph]%
+ [%\c!n=3,
+ %\c!before=\blank,
+ %\c!after=\blank,
+ %\c!distance=1em,
+ %\c!height=\v!fit,
+ %\c!rule=\v!off,
+ %\c!command=,
+ %\c!align=,
+ %\c!tolerance=\v!tolerant,
+ %\c!rulethickness=\linewidth,
+ %\c!rulecolor=,
+ %\c!style=,
+ %\c!color=,
+ %\c!top=,
+ %\c!top=\vss,
+ %\c!bottom=\vfill,
#2]%
\setvalue{\e!setup#1\e!endsetup}%
{\setupparagraphs[#1]}%
\dorecurse
- {\getvalue{\??al#1\c!n}}
- {\setupparagraphs[#1][\recurselevel]
+ {\paragraphparameter\c!n}
+ {\setupparagraphs
+ [\currentparagraph]
+ [\recurselevel]
[\c!width=,
- \c!bottom=\getvalue{\??al#1\c!bottom},
- \c!top=\getvalue{\??al#1\c!top},
- \c!height=\getvalue{\??al#1\c!height},
- \c!style=\getvalue{\??al#1\c!style},
- \c!color=\getvalue{\??al#1\c!color},
- \c!rule=\getvalue{\??al#1\c!rule},
- \c!align=\getvalue{\??al#1\c!align},
- \c!tolerance=\getvalue{\??al#1\c!tolerance},
- \c!distance=\getvalue{\??al#1\c!distance}]}%
- \setupparagraphs[#1][1][\c!distance=0em]}
+ %\c!bottom=\paragraphparameter\c!bottom,
+ %\c!top=\paragraphparameter\c!top,
+ %\c!height=\paragraphparameter\c!height,
+ %\c!rule=\paragraphparameter\c!rule,
+ %\c!rulethickness=\paragraphparameter\c!rulethickness,
+ %\c!rulecolor=\paragraphparameter\c!rulecolor,
+ %\c!align=\paragraphparameter\c!align,
+ %\c!tolerance=\paragraphparameter\c!tolerance, % obsolete
+ %\c!distance=\paragraphparameter\c!distance,
+ \c!style=\paragraphparameter\c!style,
+ \c!color=\paragraphparameter\c!color]}%
+ \setupparagraphs[\currentparagraph][1][\c!distance=\zeropoint]}
\def\defineparagraphs
{\dodoubleargument\dodefineparagraphs}
\def\dosetupparagraphs[#1][#2][#3]%
- {\doifelse{#2}\v!each
- {\dorecurse
- {\getvalue{\??al#1\c!n}}
- {\getparameters[\??al#1\recurselevel][#3]}}
- {\ConvertToConstant\doifelse{#3}{}
- {\getparameters[\??al#1][#2]}
- {\def\docommando##1%
- {\getparameters[\??al#1##1][#3]}%
- \processcommalist[#2]\docommando}}}
+ {\edef\currentparagraph{#1}%
+ \ifsecondargument
+ \doifelse{#2}\v!each
+ {\dorecurse
+ {\paragraphparameter\c!n}
+ {\getparameters[\??al\currentparagraph\recurselevel][#3]}}
+ {\doifelsenothing{#3}
+ {\getparameters[\??al\currentparagraph][#2]}
+ {\def\docommand##1{\getparameters[\??al\currentparagraph##1][#3]}%
+ \processcommalist[#2]\docommand}}%
+ \else
+ \getparameters[\??al][#1]%
+ \fi}
\def\setupparagraphs
{\dotripleempty\dosetupparagraphs}
-\newcount\alteller
-\newcount\alnsize
-\newdimen\alhsize
-
-\def\doalinealijn#1#2%
- {\doifelsevalue{\??al#2\the\alteller\c!rule}\v!on
- {\dimen2=#1\relax
- \hskip.5\dimen2
- \hskip-\linewidth
- \vrule\!!width\linewidth
- \hskip.5\dimen2}
- {\hskip#1}}
-
-\def\dostartalinea#1%
- {\doifelsevaluenothing{\??al#1\the\alteller\c!width}
+\setupparagraphs
+ [\c!n=3,
+ \c!before=\blank,
+ \c!after=\blank,
+ \c!distance=1em,
+ \c!height=\v!fit,
+ \c!rule=\v!off,
+ \c!command=,
+ \c!align=,
+ \c!tolerance=\v!tolerant, % obsolete
+ \c!rulethickness=\linewidth,
+ \c!rulecolor=,
+ \c!style=,
+ \c!color=,
+ \c!top=,
+ \c!top=\vss,
+ \c!bottom=\vfill]
+
+\def\doparagraphrule
+ {\doifelse{\paragraphcellmeter\alcounter\c!rule}\v!on
+ {\linewidth\paragraphcellmeter\alcounter\c!rulethickness
+ \scratchdimen\paragraphcellmeter\alcounter\c!distance
+ \advance\scratchdimen-\linewidth
+ \divide\scratchdimen \plustwo
+ \hskip\scratchdimen
+ \color[\paragraphcellmeter\alcounter\c!rulecolor]{\vrule\!!width\linewidth}%
+ \hskip\scratchdimen}
+ {\hskip\paragraphcellmeter\alcounter\c!distance}}
+
+\def\dostartparagraph
+ {\doifelsenothing{\paragraphcellmeter\alcounter\c!width}
{\!!widtha\alhsize
\divide\!!widtha \alnsize}
- {\!!widtha\getvalue{\??al#1\the\alteller\c!width}}%
- \dostartattributes
- {\??al#1\the\alteller}\c!style\c!color
- \empty
- \doifelsevalue{\??al#1\the\alteller\c!height}\v!fit
- {\setbox0\vtop}
- {\setbox0\vtop to \getvalue{\??al#1\the\alteller\c!height}}%
+ {\!!widtha\paragraphcellmeter\alcounter\c!width}%
+ \dostartattributes{\??al\currentparagraph\number\alcounter}\c!style\c!color\empty
+ \doifelse{\paragraphcellmeter\alcounter\c!height}\v!fit
+ {\setbox\scratchbox\vtop}
+ {\setbox\scratchbox\vtop to \paragraphcellmeter\alcounter\c!height}%
\bgroup
\blank[\v!disable]%
\forgetall
- \getvalue{\??al#1\the\alteller\c!top}%
- \getvalue{\??al#1\c!inner}%
- \hsize\!!widtha % setting \wd afterwards removed
- \getvalue{\??al#1\the\alteller\c!inner}%
- \edef\!!stringa{\getvalue{\??al#1\the\alteller\c!align}}% nodig?
- \expandafter\setupalign\expandafter[\!!stringa]%
- \edef\!!stringa{\getvalue{\??al#1\the\alteller\c!tolerance}}% nodig?
- \expandafter\setuptolerance\expandafter[\!!stringa]%
+ \paragraphcellmeter\alcounter\c!top
+ \paragraphparameter\c!inner
+ \hsize\!!widtha % setting \wd afterwards removed
+ \paragraphcellmeter\alcounter\c!inner % twice
+ \expanded{\setupalign [\paragraphcellmeter\alcounter\c!align ]}% {normal,verytolerant,stretch}
+ \expanded{\setuptolerance[\paragraphcellmeter\alcounter\c!tolerance]}% obsolete
\ignorespaces
\endgraf
\ignorespaces
@@ -350,70 +572,75 @@
%
\everypar{\begstrut\everypar\emptytoks}%
%
- \ignorespaces\geenspatie % dubbel: \ignorespaces
- \getvalue{\??al#1\the\alteller\c!command}}
+ \nospace % remove + ignore
+ \paragraphcellmeter\alcounter\c!command}
-\def\dostopalinea#1%
+\def\dostopparagraph
{\ifvmode
\removelastskip
\else
\unskip\endstrut\endgraf
\fi
- \getvalue{\??al#1\the\alteller\c!bottom}%
+ \paragraphcellmeter\alcounter\c!bottom
\egroup
- \ifdim\wd0=\zeropoint % no data
- \wd0\!!widtha
+ \ifdim\wd\scratchbox=\zeropoint % no data
+ \wd\scratchbox\!!widtha
\fi
- \box0
+ \box\scratchbox
\dostopattributes
- %\ifnum\alteller<\getvalue{\??al#1\c!n}\relax
- % \def\next{\doalinea{#1}}%
- %\else
- % \def\next{\dostopalineas{#1}}%
- %\fi
- %\next}
- \ifnum\alteller<\getvalue{\??al#1\c!n}\relax
- \@EA\doalinea
+ \ifnum\alcounter<\paragraphparameter\c!n\relax
+ \@EA\doparagraphcell
\else
- \@EA\dostopalineas
- \fi{#1}}
+ \@EA\dostopparagraphs
+ \fi}
-\def\doalinea#1%
- {\global\advance\alteller \plusone
- \doifelsevaluenothing{\??al#1\the\alteller\c!distance}
- {\doifnot{\the\alteller}{1}
- {\hskip\getvalue{\??al#1\c!distance}}}
- {\doifelse{\the\alteller}{1}%
- {\hskip\getvalue{\??al#1\the\alteller\c!distance}}
- {\doalinealijn{\getvalue{\??al#1\the\alteller\c!distance}}{#1}}}%
- \setvalue{#1}{\dostopalinea{#1}}%
- \dostartalinea{#1}}
-
-\def\dostartalineas#1%
- {\global\alteller\zerocount
+\def\doparagraphcell
+ {\global\advance\alcounter \plusone
+ \doifelsenothing{\paragraphcellmeter\alcounter\c!distance}
+ {\ifnum\alcounter=\plusone\else
+ \hskip\paragraphparameter\c!distance
+ \fi}
+ {\ifnum\alcounter=\plusone
+ \hskip\paragraphcellmeter\alcounter\c!distance
+ \else
+ \doparagraphrule
+ \fi}%
+ \letvalue\currentparagraph\dostopparagraph
+ \dostartparagraph}
+
+\def\dostartparagraphs#1%
+ {\bgroup
+ \edef\currentparagraph{#1}%
+ \global\alcounter\zerocount
\parindent\zeropoint
\setlocalhsize
\alhsize\localhsize
- \alnsize\getvalue{\??al#1\c!n}\relax
- \dorecurse
- {\getvalue{\??al#1\c!n}}
- {\doifelsevaluenothing{\??al#1\recurselevel\c!distance}
- {\doifnot{\recurselevel}{1}
- {\global\advance\alhsize -\getvalue{\??al#1\c!distance}\relax}}
- {\global\advance\alhsize -\getvalue{\??al#1\recurselevel\c!distance}\relax}%
- \doifvaluesomething{\??al#1\recurselevel\c!width}
+ \alnsize\paragraphparameter\c!n\relax
+ \dorecurse \alnsize
+ {\doifelsenothing{\paragraphcellmeter\recurselevel\c!distance}
+ {\ifnum\recurselevel=\plusone\else
+ \global\advance\alhsize -\paragraphparameter\c!distance
+ \fi}
+ {\global\advance\alhsize -\paragraphcellmeter\recurselevel\c!distance}%
+ \doifsomething{\paragraphcellmeter\recurselevel\c!width}
{\global\advance\alnsize \minusone
- \global\advance\alhsize -\getvalue{\??al#1\recurselevel\c!width}\relax}}%
- %\whitespace % gaat fout bij \framed
- \getvalue{\??al#1\c!before}%
- \leavevmode % gaat wel goed bij \framed
- \vbox\bgroup\hbox\bgroup\doalinea{#1}}
+ \global\advance\alhsize -\paragraphcellmeter\recurselevel\c!width}}%
+ %whitespace % gaat fout bij \framed
+ \paragraphparameter\c!before
+ \leavevmode % gaat wel goed bij \framed, brrr
+ \setbox\scratchbox\vbox\bgroup\hbox\bgroup\doparagraphcell}
-\def\dostopalineas#1%
+\def\dostopparagraphs
{\egroup
\egroup
+ \iftrue
+ \hbox{\raise\strutheight\box\scratchbox}% new
+ \else
+ \box\scratchbox % old
+ \fi
\par
- \getvalue{\??al#1\c!after}}%
+ \paragraphparameter\c!after
+ \egroup}
\def\dosetuptab[#1]%
{\getparameters[\??ta]
@@ -654,44 +881,79 @@
\newsignal \subsentencesignal
\newcounter\subsentencelevel
+\let\beforesubsentence\donothing
+\let\aftersubsentence \donothing
+
+% todo: make this language option
+%
+% \def\beforesubsentence{\removeunwantedspaces}
+% \def\aftersubsentence {\ignorespaces}
+
\def\midsentence
{\symbol[\c!midsentence]}
\def\beginofsubsentence
- {\ifdim\lastkern=\subsentencesignal
+ {\beforesubsentence
+ \ifdim\lastkern=\subsentencesignal
\unskip
\kern\hspaceamount\currentlanguage{intersentence}%
\fi
\doglobal\increment\subsentencelevel
\ifnum\subsentencelevel=\plusone
- \leaveoutervmode
+ \dontleavehmode % was \leaveoutervmode
\fi
- \symbol[\ifodd\subsentencelevel\c!leftsentence \else
- \c!leftsubsentence\fi]%
- \ignorespaces}
+ \symbol[\ifodd\subsentencelevel\c!leftsentence\else\c!leftsubsentence\fi]%
+ }% \ignorespaces}
-\def\beginofsubsentencespacing
- {\kern\subsentencesignal\ignorespaces}
-
-\def\endofsubsentence
- {\symbol[\ifodd\subsentencelevel\c!rightsentence \else
- \c!rightsubsentence\fi]%
+\def\endofsubsentence % relax prevents space gobbling
+ {\symbol[\ifodd\subsentencelevel\c!rightsentence\else\c!rightsubsentence\fi]%
\doglobal\decrement\subsentencelevel
\unskip
- \kern\subsentencesignal}
+ \kern\subsentencesignal\relax
+ \aftersubsentence}
+
+\def\beginofsubsentencespacing % relax prevents space gobbling
+ {\kern\subsentencesignal\relax}% \ignorespaces}
\def\endofsubsentencespacing
{\ifdim\lastkern=\subsentencesignal
\unskip
\hskip\hspaceamount\currentlanguage{intersentence}%
- \ignorespaces
+ % no good, actually language dependent:
+% \ignorespaces
\else
\unskip
\fi}
-% test |<|test |<|test|>| test|>| test \par
-% test|<|test|<|test|>|test|>|test \par
-% test |<||<|test|>||>| test \par
+%D \startbuffer
+%D test |<|test |<|test|>| test|>| test \par
+%D test|<|test|<|test|>|test|>|test \par
+%D test |<||<|test|>||>| test \par
+%D test \directdiscretionary{<}test\directdiscretionary{>} test \par
+%D \stopbuffer
+%D
+%D \typebuffer
+%D \getbuffer
+
+\def\startsubsentence{\beginofsubsentence \prewordbreak\beginofsubsentencespacing}
+\def\stopsubsentence {\endofsubsentencespacing\prewordbreak\endofsubsentence}
+
+%D \defineXMLenvironment [subsentence]
+%D {|<|}
+%D {|>|}
+%D \defineXMLenvironment [subsentence]
+%D {\directdiscretionary{<}}
+%D {\directdiscretionary{>}}
+%D \defineXMLenvironment [subsentence]
+%D {\startsubsentence}
+%D {\stopsubsentence}
+%D
+%D \startbuffer
+%D test <subsentence>test</subsentence> test
+%D \stopbuffer
+%D
+%D \typebuffer
+%D \processXMLbuffer
\enableactivediscretionaries
@@ -954,7 +1216,8 @@
% \doadaptrightskip{\delimitedtextparameter\c!rightmargin}%
% backward compatible:
\doifelsenothing{#1}
- {\doadaptleftskip {\delimitedtextparameter\c!leftmargin}%
+ {\endgraf
+ \doadaptleftskip {\delimitedtextparameter\c!leftmargin}%
\doadaptrightskip{\delimitedtextparameter\c!rightmargin}%
\let\dodostopdelimitedtextpar\endgraf}
{\startnarrower[#1]\let\dodostopdelimitedtextpar\stopnarrower}%
diff --git a/tex/context/base/core-ref.tex b/tex/context/base/core-ref.tex
index eada84ce1..7306987bb 100644
--- a/tex/context/base/core-ref.tex
+++ b/tex/context/base/core-ref.tex
@@ -724,22 +724,41 @@
\def\rt!crossdone#1#2#3#4{\rt!done{#1}{#2}{#3}{#4}}
+% \def\dohandleduplicatereference#1%
+% {\bgroup
+% \let\rt!cross\rt!crossdone
+% \@EA\xdef\csname\r!cross\referenceprefix#1\endcsname
+% {\csname\r!cross\referenceprefix#1\endcsname}%
+% \egroup}
+
\def\dohandleduplicatereference#1%
{\bgroup
\let\rt!cross\rt!crossdone
- \@EA\xdef\csname\r!cross\referenceprefix#1\endcsname
+ \@EA\xdef\csname\r!cross\referenceprefix#1\endcsname % no let !
{\csname\r!cross\referenceprefix#1\endcsname}%
\egroup}
+% \def\checkfirstreferenceoccurance#1#2% etex
+% {\ifcsname\r!cross\referenceprefix#1\endcsname
+% \getreferenceelements{#1}%
+% \ifnum\currentreferencetype=\rt!cross
+% \dohandleduplicatereference{#1}%
+% #2%
+% \fi
+% \else
+% #2%
+% \fi}
+
\def\checkfirstreferenceoccurance#1#2% etex
- {\ifcsname\r!cross\referenceprefix#1\endcsname
+ {\@EA\ifx\csname\r!cross\referenceprefix#1\endcsname\relax % no ifcsname needed here
+ \predefinereference{#1}%
+ #2%
+ \else
\getreferenceelements{#1}%
\ifnum\currentreferencetype=\rt!cross
\dohandleduplicatereference{#1}%
#2%
\fi
- \else
- #2%
\fi}
\def\doiffirstreferenceoccurance
@@ -1677,6 +1696,24 @@
%D An unknown reference is reported on the screen, in the log
%D file and, when enabled, in the left margin of the text.
+% \def\reportreferenceerror#1#2%
+% {\bgroup
+% \the\everyreference % cleanup : etc in french
+% \ifinpagebody\else
+% \doifconcepttracing
+% {\doifsomething{#2}
+% {\inleft
+% {\infofont
+% \scratchdimen\leftmarginwidth
+% \advance\scratchdimen -2em
+% \doboundtext{#2}\scratchdimen{..}->}}}%
+% \fi
+% \doifpredefinedreferenceelse
+% \donothing
+% {\predefinereference
+% \showmessage\m!references{#1}{[\unharmedreferenceprefix][#2]}}%
+% \egroup}
+
\def\reportreferenceerror#1#2%
{\bgroup
\the\everyreference % cleanup : etc in french
@@ -1691,7 +1728,7 @@
\fi
\doifpredefinedreferenceelse
\donothing
- {\predefinereference
+ {\predefinereference\predefinedreference
\showmessage\m!references{#1}{[\unharmedreferenceprefix][#2]}}%
\egroup}
@@ -1719,11 +1756,20 @@
% {\setgvalue{\r!cross\predefinedreference}{\rt!cross{}{}{}{}}%
% \setgvalue{\r!cross\unharmedreferenceprefix\predefinedreference}{\rt!cross{}{}{}{}}}
-\def\dummypredefinedreference{\r!cross{}{}{}{}}
+% \def\dummypredefinedreference{\r!cross{}{}{}{}}
+%
+% \def\predefinereference
+% {\global\@EA\let\csname\r!cross\predefinedreference \endcsname\dummypredefinedreference
+% \global\@EA\let\csname\r!cross\unharmedreferenceprefix\endcsname\dummypredefinedreference} % bug!
+%
+% we need to predefine in order to make dup checking possible (when no ref
+% is defined yet)
+
+\def\predefinereference#1% takes now an argument
+ {\global\@EA\let\csname\r!cross #1\endcsname\dummypredefinedreference
+ \global\@EA\let\csname\r!cross\unharmedreferenceprefix#1\endcsname\dummypredefinedreference}
-\def\predefinereference
- {\global\@EA\let\csname\r!cross\predefinedreference \endcsname\dummypredefinedreference
- \global\@EA\let\csname\r!cross\unharmedreferenceprefix\endcsname\dummypredefinedreference} % bug!
+\def\dummypredefinedreference{\rt!done{}{}{}{}}
%D Testing on existance then becomes:
diff --git a/tex/context/base/core-reg.tex b/tex/context/base/core-reg.tex
index 8db6dbc7c..44c616107 100644
--- a/tex/context/base/core-reg.tex
+++ b/tex/context/base/core-reg.tex
@@ -123,10 +123,20 @@
% \ifvmode\nobreak\fi
% \GotoPar}
-\long\def\doflushatpar#1%
-% {\dogotopar{#1}}
-% {\dogotopar{\dontleavehmode#1}} % this one can introduce empty lines
- {\dogotopar{#1\ifvmode\nobreak\fi}} % while this one can mess up vertical space
+% \long\def\doflushatpar#1%
+% %{\dogotopar{#1}}
+% %{\dogotopar{\dontleavehmode#1}} % this one can introduce empty lines
+% {\dogotopar{#1\ifvmode\nobreak\fi}} % while this one can mess up vertical space
+%
+% fails when [text] \index{test} [empty line] [text] so we now have
+% Taco's test based solution:
+
+\def\doflushatpar
+ {\ifvmode
+ \expandafter\dogotopar
+ \else
+ \expandafter\firstofoneargument
+ \fi}
\def\dodoregister[#1]#2#3%
{\doflushatpar{\doprocesspageregister[#1]{#2}{#3}}}
@@ -134,15 +144,6 @@
\def\writetoregister[#1]% to be documented
{\doregister{#1}}
-% \def\startregister
-% {\dodoubleargument\dostartregister}
-
-% \def\dostartregister[#1][#2]#3%
-% {\chardef\registerpagestatus\plustwo
-% \def\currentregister{#1}%
-% \setgvalue{\??id#1\??id#2}{\dodostopregister[#1][#2]{#3}}%
-% \donoregister[#2]{#3}}
-
\def\startregister
{\dotripleempty\dostartregister}
@@ -158,41 +159,11 @@
\def\dostopregister[#1][#2]%
{\getvalue{\??id#1\??id#2}\letgvalue{\??id#1\??id#2}\relax}
-% \def\dodostopregister[#1][#2]%
-% {\chardef\registerpagestatus\plusthree
-% \def\currentregister{#1}%
-% \donoregister[#2]}
-
\def\dodostopregister[#1][#2]#3%
{\chardef\registerpagestatus\plusthree
\def\currentregister{#1}%
\dodoregister[#2]{}{#3}} % key altnum entry
-% \def\complexdoseeregister[#1]#2#3%
-% {\begingroup
-% \thisisnextinternal\s!ind
-% \ifduplicate\getlastregisterentry{#2}\fi
-% \convertexpanded{\registerparameter\c!keyexpansion}{#1}\asciiregisterentryA
-% \convertexpanded{\registerparameter\c!expansion }{#2}\asciiregisterentryB
-% \convertexpanded{\registerparameter\c!expansion }{#3}\asciiregisterentryC
-% \doifsomething{\registerparameter\c!keyexpansion}
-% {\ifx\asciiregisterentryA\empty
-% \convertexpanded{\registerparameter\c!keyexpansion}{#2}\asciiregisterentryA
-% \fi}%
-% \makesectionformat
-% \expanded
-% {\writeutility%
-% {r s %
-% {\currentregister} %
-% {\nextinternalreference} %
-% {\asciiregisterentryA} %
-% {\asciiregisterentryB} %
-% {\asciiregisterentryC} %
-% {\sectionformat}}}%
-% \endgroup
-% \registerinfo{> see}{#2}%
-% \GotoPar}
-
\def\doprocessseeregister[#1]#2#3%
{\begingroup
\thisisnextinternal\s!ind
diff --git a/tex/context/base/core-sys.tex b/tex/context/base/core-sys.tex
index cd2908b9c..fbf46bb98 100644
--- a/tex/context/base/core-sys.tex
+++ b/tex/context/base/core-sys.tex
@@ -92,6 +92,8 @@
\def\setupsystem
{\dosingleargument\dosetupsystem}
+\def\systemparameter#1{\executeifdefined{\??sv#1}\empty}
+
%D The system modes set by the setup command can be used in
%D situations like:
%D
@@ -309,7 +311,7 @@
\def\convertmeaning#1\to % watch the double expansion !
{\bgroup
\honorunexpanded
- \dontexpandencoding % new
+ \convertencodedtokens % can be overloaded
\xdef\@@globalexpanded{#1}%
\xdef\@@globalexpanded{\@@globalexpanded}%
\egroup
diff --git a/tex/context/base/core-uti.tex b/tex/context/base/core-uti.tex
index a8dd993f6..a6e2af819 100644
--- a/tex/context/base/core-uti.tex
+++ b/tex/context/base/core-uti.tex
@@ -98,12 +98,6 @@
\def\cwriteutilitycommand#1%
{\write\uti{\noexpand\checkedutility{\number\nofshipouts}{c \string#1}}}
-% \def\cimmediatewriteutility
-% {\immediate\write\uti}
-%
-% \def\cimmediatewriteutilitycommand#1%
-% {\immediate\write\uti{c \string#1}}
-
\let\checkedutility\secondoftwoarguments
\def\docheckedutility#1#2{\ifnum#1=\nofshipouts#2\else\letterpercent\fi}
diff --git a/tex/context/base/core-ver.tex b/tex/context/base/core-ver.tex
index 223c39644..595ba075e 100644
--- a/tex/context/base/core-ver.tex
+++ b/tex/context/base/core-ver.tex
@@ -753,6 +753,8 @@
\def\settypingparameter#1#2%
{\setvalue{\currenttypingclass\currenttyping#1}{#2}}
+\def\setxtypingparameter#1#2%
+ {\setxvalue{\currenttypingclass\currenttyping#1}{#2}}
\def\initializetyping
{%\donefalse
@@ -801,23 +803,78 @@
%D indirect way. As we will see, they are a specific case of a
%D more general mechanism.
-\def\dostarttyping#1%
- {\let\currenttypingclass\??tp
+% formal version
+%
+% \def\dostarttyping#1%
+% {\let\currenttypingclass\??tp
+% \edef\currenttyping{#1}%
+% \typingparameter\c!before
+% \startpacked % includes \bgroup
+% \dosetuptypelinenumbering{}%
+% \initializetyping
+% \startverbatimcolor
+% \expandafter\processdisplayverbatim\expandafter{\s!stop#1}}
+
+% we need this hack because otherwise verbatim skips
+% the first line (everything after the initial command)
+
+\def\dostarttyping#1% tricky non standard lookahead
+ {\bgroup
+ \let\currenttypingclass\??tp
\edef\currenttyping{#1}%
- \typingparameter\c!before
+ \obeylines
+ \futurelet\nexttoken\dodostarttyping}
+
+\def\dodostarttyping
+ {\ifx\nexttoken[%
+ \expandafter\dododostarttyping
+ \else
+ \expandafter\nododostarttyping
+ \fi}
+
+\def\nododostarttyping
+ {\dododostarttyping[]}
+
+\def\dododostarttyping[#1]%
+ {\typingparameter\c!before
\startpacked % includes \bgroup
- \dosetuptypelinenumbering{}%
+ \dosetuptypelinenumbering{#1}%
\initializetyping
\startverbatimcolor
- \expandafter\processdisplayverbatim\expandafter{\s!stop#1}}
+ \expanded{\processdisplayverbatim{\s!stop\currenttyping}}}
\def\dostoptyping#1%
{\stopverbatimcolor
\stoppacked % includes \egroup
\typingparameter\c!after
+ \egroup
\dochecknextindentation{\??tp#1}%
\dorechecknextindentation}
+%D Line numbering for files is combined with filtering, while
+%D display verbatim has the ability to continue.
+%D
+%D \starttyping
+%D \typefile[numbering=file,start=10,stop=12]{test.tex}
+%D
+%D \definetyping[code][numbering=line]
+%D
+%D \starttext
+%D \startcode
+%D ...
+%D ...
+%D \stopcode
+%D
+%D \startcode[continue]
+%D ...
+%D ...
+%D \stopcode
+%D
+%D \startcode[start=10]
+%D ...
+%D \stopcode
+%D \stoptyping
+
%D \macros
%D {setuptyping}
%D
@@ -1024,7 +1081,7 @@
\let\endofpretty \stopcolor
\def\startverbatimcolor{\startcolor[\typingparameter\c!color]}%
\let\stopverbatimcolor \stopcolor
- \def\verbatimcolor {\typingparameter\c!color}}%
+ \def\verbatimcolor {\getvalue{\typingparameter\c!color}}}% command !
\doifelsenothing{\typingparameter\c!palet}
{\let\prettypalet\empty
\let\endofpretty\relax
@@ -1172,21 +1229,50 @@
\dodotypefile[\v!file][]{#3}%
\fi\fi}
+% \def\dosetuptypelinenumbering#1% fuzzy
+% {\doifundefined{\currenttypingclass\currenttyping\c!start}
+% {\setuptyping[\currenttyping][\c!start=1,\c!stop=,\c!step=1,\c!nlines=,#1]}%
+% \doifelse{\typingparameter\c!numbering}\v!file
+% {\setuplinenumbering[\c!method=\v!file]%
+% \donetrue}
+% {\doifelse{\typingparameter\c!numbering}\v!line
+% {% \setuplinenumbering defaults start/step to 1/1, so we need
+% \doifnothing{\typingparameter\c!start }{\settypingparameter\c!start {1}}%
+% \doifnothing{\typingparameter\c!step }{\settypingparameter\c!step {1}}%
+% \doifnothing{\typingparameter\c!continue}{\settypingparameter\c!continue{}}%
+% \setuplinenumbering
+% [\c!method=\v!type,
+% \c!continue=\typingparameter\c!continue,
+% \c!start=\typingparameter\c!start,
+% \c!step=\typingparameter\c!step]%
+% \donetrue}
+% {\donefalse}}%
+% \ifdone
+% \ifx\startlinenumbering\undefined \let\startlinenumbering\relax \fi
+% \ifx\stoplinenumbering \undefined \let\stoplinenumbering \relax \fi
+% \def\beginofverbatimlines{\startlinenumbering}%
+% \def\endofverbatimlines {\stoplinenumbering }%
+% \fi}
+
\def\dosetuptypelinenumbering#1% fuzzy
{\doifundefined{\currenttypingclass\currenttyping\c!start}
- {\setuptyping[\currenttyping][\c!start=1,\c!stop=,\c!step=1,\c!nlines=,#1]}%
+ {\setuptyping[\currenttyping][\c!start=1,\c!stop=,\c!step=1,\c!nlines=]}%
+ \setuptyping[\currenttyping][#1]%
\doifelse{\typingparameter\c!numbering}\v!file
- {\setuplinenumbering[\c!method=\v!file]%
+ {% kind of special: filters lines !
+ \setuplinenumbering[\c!method=\v!file]%
\donetrue}
{\doifelse{\typingparameter\c!numbering}\v!line
{% \setuplinenumbering defaults start/step to 1/1, so we need
- \doifnothing{\typingparameter\c!start }{\settypingparameter\c!start {1}}%
- \doifnothing{\typingparameter\c!step }{\settypingparameter\c!step {1}}%
- \doifnothing{\typingparameter\c!continue}{\settypingparameter\c!continue{}}%
+ \doifinsetelse\v!continue{#1,\typingparameter\c!start}
+ {\scratchcounter0\typingparameter\c!n
+ \setxtypingparameter\c!start{\ifnum\scratchcounter=0 1\else\number\scratchcounter\fi}}%
+ {\doifnothing{\typingparameter\c!start}{\settypingparameter\c!start{1}}}%
+ \doifnothing{\typingparameter\c!step}{\settypingparameter\c!step{1}}%
\setuplinenumbering
[\c!method=\v!type,
- \c!continue=\typingparameter\c!continue,
\c!start=\typingparameter\c!start,
+ \c!stop=\typingparameter\c!stop,
\c!step=\typingparameter\c!step]%
\donetrue}
{\donefalse}}%
@@ -1194,7 +1280,7 @@
\ifx\startlinenumbering\undefined \let\startlinenumbering\relax \fi
\ifx\stoplinenumbering \undefined \let\stoplinenumbering \relax \fi
\def\beginofverbatimlines{\startlinenumbering}%
- \def\endofverbatimlines {\stoplinenumbering }%
+ \def\endofverbatimlines {\stoplinenumbering\setxtypingparameter\c!n{\number\linenumber}}%
\fi}
% \setuptyping % not needed
diff --git a/tex/context/base/enco-032.tex b/tex/context/base/enco-032.tex
new file mode 100644
index 000000000..5c8f5fe68
--- /dev/null
+++ b/tex/context/base/enco-032.tex
@@ -0,0 +1,82 @@
+%D \module
+%D [ file=enco-032,
+%D version=2006.03.30,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=Unicode Goodies,
+%D author={Taco Hoekwater},
+%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.
+
+\unprotect
+
+% unicode table 32 (= hex 20)
+
+\startencoding [default]
+
+ \definecommand unic@threeperemspace {\hskip .33333em }
+ \definecommand unic@fourperemspace {\hskip .25em }
+ \definecommand unic@sixperemspace {\hskip .16667em }
+ \definecommand unic@figurespace {\hphantom{0}}
+ \definecommand unic@punctuationspace {\hphantom{,}}
+ \definecommand unic@hairspace {\hskip .08333em }
+ \definecommand unic@zerowidthspace {\hskip 0em plus 1sp }
+ \definecommand unic@zerowidthjoiner {\kern 0em }
+ \definecommand unic@zerowidthnonjoiner {\hskip 0em }
+
+ \definecommand unic@quotedblleftreversed {\mirror{\quotedblright}}
+ \definecommand unic@quoteleftreversed {\mirror{\quoteright}}
+
+ \definecommand unic@onedotleader {{\periods[1]}}
+ \definecommand unic@twodotleader {{\periods[2]}}
+ \definecommand unic@hyphenationpoint {.\allowbreak }
+
+ \definecommand unic@doubleexclamationmark {!!}
+ \definecommand unic@exclamationquestionmark {!?}
+ \definecommand unic@questionexclamationmark {?!}
+ \definecommand unic@doublequestionmark {??}
+
+ \definecommand unic@reversedpilcrowsign {\mirror{\P}}
+ \definecommand unic@reversedsemicolon {\mirror{;}}
+
+ \definecommand unic@superscriptzero {\high{0}}
+ \definecommand unic@superscripti {\high{i}}
+ \definecommand unic@superscriptfour {\high{4}}
+ \definecommand unic@superscriptfive {\high{5}}
+ \definecommand unic@superscriptsix {\high{6}}
+ \definecommand unic@superscriptseven {\high{7}}
+ \definecommand unic@superscripteight {\high{8}}
+ \definecommand unic@superscriptnine {\high{9}}
+ \definecommand unic@superscriptplus {\high{+}}
+ \definecommand unic@superscriptminus {\high{\textminus}}
+ \definecommand unic@superscriptequals {\high{=}}
+ \definecommand unic@superscriptleft {\high{(}}
+ \definecommand unic@superscriptright {\high{)}}
+ \definecommand unic@superscriptn {\high{n}}
+ \definecommand unic@subscriptzero {\low{0}}
+ \definecommand unic@subscriptone {\low{1}}
+ \definecommand unic@subscripttwo {\low{2}}
+ \definecommand unic@subscriptthree {\low{3}}
+ \definecommand unic@subscriptfour {\low{4}}
+ \definecommand unic@subscriptfive {\low{5}}
+ \definecommand unic@subscriptsix {\low{6}}
+ \definecommand unic@subscriptseven {\low{7}}
+ \definecommand unic@subscripteight {\low{8}}
+ \definecommand unic@subscriptnine {\low{9}}
+ \definecommand unic@subscriptplus {\low{+}}
+ \definecommand unic@subscriptminus {\low{\textminus}}
+ \definecommand unic@subscriptequals {\low{=}}
+ \definecommand unic@subscriptleft {\low{(}}
+ \definecommand unic@subscriptright {\low{)}}
+ \definecommand unic@subscripta {\low{a}}
+ \definecommand unic@subscripte {\low{e}}
+ \definecommand unic@subscripto {\low{o}}
+ \definecommand unic@subscriptx {\low{x}}
+ \definecommand unic@subscriptschwa {\low{\schwa}}
+
+\stopencoding
+
+\endinput
diff --git a/tex/context/base/enco-agr.tex b/tex/context/base/enco-agr.tex
index 36251d96a..513a0465b 100644
--- a/tex/context/base/enco-agr.tex
+++ b/tex/context/base/enco-agr.tex
@@ -6,6 +6,18 @@
%D author=Thomas A. Schmitz,
%D date=\currentdate]
+\startmapping[agr]
+
+ \definecasemaps 13 to 64 lc 0 uc 0
+ \definecasemaps 65 to 66 lc +32 uc 0
+ \definecasemaps 67 to 67 lc 0 uc 0
+ \definecasemaps 68 to 85 lc +32 uc 0
+ \definecasemaps 86 to 86 lc 0 uc 0
+ \definecasemaps 87 to 90 lc +32 uc 0
+ \definecasemaps 91 to 255 lc 0 uc 0
+
+\stopmapping
+
\startencoding[agr]
\definecharacter greeksigmalunate 1
diff --git a/tex/context/base/enco-ffr.tex b/tex/context/base/enco-ffr.tex
index ae3cd6eb1..1ddd226ee 100644
--- a/tex/context/base/enco-ffr.tex
+++ b/tex/context/base/enco-ffr.tex
@@ -20,20 +20,18 @@
\unprotect
-\startlanguagespecifics[fr]
- \definetextmodediscretionary : {\removeunwantedspaces\prewordbreak\kern\hspaceamount\empty{:}:}
- \definetextmodediscretionary ; {\removeunwantedspaces\prewordbreak\kern\hspaceamount\empty{;};}
- \definetextmodediscretionary ? {\removeunwantedspaces\prewordbreak\kern\hspaceamount\empty{?}?}
- \definetextmodediscretionary ! {\removeunwantedspaces\prewordbreak\kern\hspaceamount\empty{!}!}
+\startlanguagespecifics[\s!fr]
+ \definetextmodediscretionary : {\removeunwantedspaces\prewordbreak\kern\hspaceamount\currentmainlanguage{:}:}
+ \definetextmodediscretionary ; {\removeunwantedspaces\prewordbreak\kern\hspaceamount\currentmainlanguage{;};}
+ \definetextmodediscretionary ? {\removeunwantedspaces\prewordbreak\kern\hspaceamount\currentmainlanguage{?}?}
+ \definetextmodediscretionary ! {\removeunwantedspaces\prewordbreak\kern\hspaceamount\currentmainlanguage{!}!}
\stoplanguagespecifics
\startlanguagespecifics[\s!fr]
-
\defineactivecharacter : {\mathortext{:}{\directdiscretionary{:}}}
\defineactivecharacter ; {\mathortext{;}{\directdiscretionary{;}}}
\defineactivecharacter ! {\mathortext{!}{\directdiscretionary{!}}}
\defineactivecharacter ? {\mathortext{?}{\directdiscretionary{?}}}
-
\stoplanguagespecifics
% maybe tricky due to possible name clashes:
diff --git a/tex/context/base/enco-ini.tex b/tex/context/base/enco-ini.tex
index befed9e05..7c4a88814 100644
--- a/tex/context/base/enco-ini.tex
+++ b/tex/context/base/enco-ini.tex
@@ -210,9 +210,17 @@
\def\trueregimename#1%
{\executeifdefined{\@reg@::#1}{#1}}
+% \def\enableregime[#1]%
+% {\edef\characterregime{@\trueregimename{#1}@}%
+% \ifx\enabledregime\characterregime \else
+% \the\executeifdefined{\@reg@\characterregime}\emptytoks
+% \fi}
+
\def\enableregime[#1]%
{\edef\characterregime{@\trueregimename{#1}@}%
\ifx\enabledregime\characterregime \else
+ \doifundefined{\@reg@\characterregime}
+ {\expanded{\useregime[\pureencodingname\characterregime]}}% auto load
\the\executeifdefined{\@reg@\characterregime}\emptytoks
\fi}
@@ -439,10 +447,12 @@
\def\stopsavingmappingtoks
{\global\mappingtoks\emptytoks
- \dostepwiserecurse{128}{255}\plusone
+ \dostepwiserecurse{0}{255}\plusone
{\edef\@@expanded
{\the\mappingtoks
- \noexpand\checkregimecode\recurselevel\space
+ \ifnum\recurselevel>127
+ \noexpand\checkregimecode\recurselevel\space
+ \fi
\lccode\recurselevel\ifnum\lccode\recurselevel=\zerocount\zerocount\else\space\the\lccode\recurselevel\space\fi
\uccode\recurselevel\ifnum\uccode\recurselevel=\zerocount\zerocount\else\space\the\uccode\recurselevel\space\fi
\ifnum\sfcode\recurselevel=\plusthousand\else\sfcode\recurselevel=\the\sfcode\recurselevel\space\fi
@@ -758,7 +768,8 @@
{\edef\charactermapping{@#1@}%
\ifx\enabledmapping\charactermapping \else
\doifdefined{\@map@\charactermapping}
- {\the\csname\@map@\charactermapping\endcsname}%
+ {%\expandafter\showthe\csname\@map@\charactermapping\endcsname\endcsname
+ \the\csname\@map@\charactermapping\endcsname}%
% == \the\executeifdefined{\@map@\charactermapping}\emptytoks
\edef\enabledmapping{\charactermapping}%
\enablelanguagespecifics[\currentlanguage]% new
@@ -1179,8 +1190,13 @@
% \doautosetregime{#1}{#2}}
% {\setvalue{\characterprefix\characterencoding\string#1}{#2}}}
-\def\numcharacter#1{\char#1 }
-\let\dochar\numcharacter
+% \def\numcharacter#1{\char#1 }
+% \let\dochar\numcharacter
+
+\unexpanded\def\numchr#1{\char#1\relax}
+\unexpanded\def\strchr#1{\csname#1\endcsname}
+
+\let\dochar\numchr
\def\definecharacter#1 #2 %
{\ifundefined{#1}\setvalue{#1}{\dohandlecharacter{#1}}\fi
@@ -1466,11 +1482,13 @@
%D When we show 'm, we don't want to see the protection
%D measures.
-\def\currentencoding{\@EA\docurrentencoding\characterencoding}
-\def\currentregime {\@EA\docurrentencoding\characterregime }
-\def\currentmapping {\@EA\docurrentencoding\charactermapping }
+\def\currentencoding{\@EA\dopureencodingname\characterencoding}
+\def\currentregime {\@EA\dopureencodingname\characterregime }
+\def\currentmapping {\@EA\dopureencodingname\charactermapping }
+
+\def\dopureencodingname @#1@{#1}
-\def\docurrentencoding @#1@{#1}
+\def\pureencodingname#1{\@EA\dopureencodingname#1}
%D \macros
%D {showaccents, showcharacters,
@@ -1945,15 +1963,27 @@
% new, to be documented (oeps, conflicts with existing code)
+\def\donthandleaccent #1{\expandafter\string\csname#1\endcsname\space}
+\def\donthandlecommand #1{\expandafter\string\csname#1\endcsname\space}
+\def\donthandlecharacter #1{\expandafter\string\csname#1\endcsname\space}
+
+\def\stringifyhandleaccent #1{\strchr{#1}}
+\def\stringifyhandlecommand #1{\strchr{#1}}
+\def\stringifyhandlecharacter#1{\strchr{#1}}
+
+\def\keephandleaccent #1{\expandafter\noexpand\csname#1\endcsname}
+\def\keephandlecommand #1{\expandafter\noexpand\csname#1\endcsname}
+\def\keephandlecharacter #1{\expandafter\noexpand\csname#1\endcsname}
+
+\def\handleaccent #1{\csname#1\endcsname}
+\def\handlecommand #1{\csname#1\endcsname}
+\def\handlecharacter #1{\csname#1\endcsname}
+
\def\dontexpandencoding
{\let\dohandleaccent \donthandleaccent
\let\dohandlecommand \donthandlecommand
\let\dohandlecharacter\donthandlecharacter}
-\def\donthandleaccent #1{\expandafter\string\csname#1\endcsname\space}
-\def\donthandlecommand #1{\expandafter\string\csname#1\endcsname\space}
-\def\donthandlecharacter#1{\expandafter\string\csname#1\endcsname\space}
-
\def\keepencodedtokens
{\let\dohandleaccent \keephandleaccent
\let\dohandlecommand \keephandlecommand
@@ -1964,13 +1994,10 @@
% \let\dohandlecommand \keephandlecommand
\let\dohandlecharacter\keephandlecharacter}
-\def\keephandleaccent #1{\expandafter\noexpand\csname#1\endcsname}
-\def\keephandlecommand #1{\expandafter\noexpand\csname#1\endcsname}
-\def\keephandlecharacter#1{\expandafter\noexpand\csname#1\endcsname}
-
-\def\handleaccent #1{\csname#1\endcsname}
-\def\handlecommand #1{\csname#1\endcsname}
-\def\handlecharacter#1{\csname#1\endcsname}
+\def\stringifyencodedtokens
+ {% \let\dohandleaccent \stringifyhandleaccent
+ % \let\dohandlecommand \stringifyhandlecommand
+ \let\dohandlecharacter\stringifyhandlecharacter}
\unexpanded\def\uhandleaccent #1{\csname#1\endcsname}
\unexpanded\def\uhandlecommand #1{\csname#1\endcsname}
@@ -1981,17 +2008,19 @@
\def\dohandlecommand {\uhandlecommand}%
\def\dohandlecharacter{\uhandlecharacter}}
+\def\convertencodedtokens{\dontexpandencoding}
+
%D Still valid? To be checked:
+\def\doignoreaccent #1#2{\string#1\string#2}%
+\def\doignorecommand #1{\string#1}
+\def\doignorecharacter#1{\string#1}
+
\def\ignoreencoding
{\let\dohandleaccent \doignoreaccent
\let\dohandlecommand \doignorecommand
\let\dohandlecharacter\doignorecharacter}
-\def\doignoreaccent #1#2{\string#1\string#2}%
-\def\doignorecommand #1{\string#1}
-\def\doignorecharacter#1{\string#1}
-
\appendtoks
\ignoreencoding
\to \everycleanupfeatures
@@ -2009,7 +2038,9 @@
\useencoding[def,acc,raw,com,cas,mis] % mis should come first
-\useencoding[ans,il2,ec,tbo,pdf,uc,pol,qx,t5,cyr]
+\useencoding[ans,il2,ec,tbo,pdf,uc,pol,qx,t5,cyr,agr] % pol and il2 will go away
+
+\useencoding[032,033,037]
\setupencoding[\s!default=ec] % was: [\s!default=\s!default]
diff --git a/tex/context/base/enco-mis.tex b/tex/context/base/enco-mis.tex
index 9a9db0c41..d3e5b7883 100644
--- a/tex/context/base/enco-mis.tex
+++ b/tex/context/base/enco-mis.tex
@@ -143,18 +143,18 @@
% perthings
-\def\fakeperthousand
- {\mathematics{^{\scriptscriptstyle0}\kern-.25em/\kern-.2em_{\scriptscriptstyle00}}}
-
\def\fakepercent
{\mathematics{^{\scriptscriptstyle0}\kern-.25em/\kern-.2em_{\scriptscriptstyle0}}}
+\def\fakeperthousand
+ {\mathematics{^{\scriptscriptstyle0}\kern-.25em/\kern-.2em_{\scriptscriptstyle00}}}
+
\def\fakepermine
{\dontleavehmode
\bgroup
- \setbox0\hbox
+ \setbox\scratchbox\hbox
{\mathematics{+}}%
- \hbox to \wd0
+ \hbox to \wd\scratchbox
{\hss
\mathematics{^{\scriptscriptstyle-}\kern-.4em/\kern-.3em_{\scriptscriptstyle-}}%
\hss}%
diff --git a/tex/context/base/enco-pfr.tex b/tex/context/base/enco-pfr.tex
index faa8a85b1..b64a9b67e 100644
--- a/tex/context/base/enco-pfr.tex
+++ b/tex/context/base/enco-pfr.tex
@@ -201,7 +201,6 @@
\letgvalue{\s!ucmap\fontfile}\empty
\fi}}
-
\endETEX
\beginTEX
diff --git a/tex/context/base/enco-uni.tex b/tex/context/base/enco-uni.tex
deleted file mode 100644
index c09c2e1bf..000000000
--- a/tex/context/base/enco-uni.tex
+++ /dev/null
@@ -1,5 +0,0 @@
-% temporary module, needed for downward compatibility
-
-% \input regi-uni.tex
-
-\endinput
diff --git a/tex/context/base/font-ini.tex b/tex/context/base/font-ini.tex
index a352564ed..782e9cd9c 100644
--- a/tex/context/base/font-ini.tex
+++ b/tex/context/base/font-ini.tex
@@ -1275,6 +1275,16 @@
\endETEX
+%D We also save:
+
+\def\savemathtextstyle#1% #1=rm|ss|..
+ {\doifsomething{#1}{\setxvalue{\fontclass\c!mm\s!text}{#1}}}
+
+\def\currentmathtextstyle % we default to empty !
+ {\executeifdefined{\fontclass\c!mm\s!text}\empty}
+
+%D Scaling macros:
+
\newdimen\scaledfont
\let\somefontspec\empty
diff --git a/tex/context/base/lang-all.xml b/tex/context/base/lang-all.xml
index c0dfc6765..0d5ea936b 100644
--- a/tex/context/base/lang-all.xml
+++ b/tex/context/base/lang-all.xml
@@ -337,4 +337,16 @@
<comment>Vietnamese needs no patterns.</comment>
</description>
+<description language='agr'>
+ <sourcefile>grahyph4.tex</sourcefile>
+ <title>TeX hyphenation patterns for the ancient Greek language</title>
+ <copyright>
+ <year>2004</year>
+ <owner>Dimitrios Filippou</owner>
+ <comment>These hyphenation patterns are explained in "ancient.pdf".
+ Hyphenation examples are given in the file "anc-test.pdf".
+ Some doubtful patterns are marked by three question marks "???".</comment>
+ </copyright>
+</description>
+
</descriptions>
diff --git a/tex/context/base/lang-ctx.tex b/tex/context/base/lang-ctx.tex
index c9fa10c7c..76812b085 100644
--- a/tex/context/base/lang-ctx.tex
+++ b/tex/context/base/lang-ctx.tex
@@ -50,4 +50,8 @@
\installlanguage[\s!uk][\s!lefthyphenmin=3,\s!righthyphenmin=3] % patterns can only handle this
\installlanguage[\s!us][\s!lefthyphenmin=2,\s!righthyphenmin=3] % patterns can only handle this
+% greek
+
+\installlanguage[\s!agr][\s!mapping=\s!agr,\s!encoding=\s!agr]
+
\protect \endinput
diff --git a/tex/context/base/lang-grk.tex b/tex/context/base/lang-grk.tex
index cd83daddb..13cebb207 100644
--- a/tex/context/base/lang-grk.tex
+++ b/tex/context/base/lang-grk.tex
@@ -83,4 +83,11 @@
%D % \ShowAllLanguageValues [\s!gr] [\greekEpsilon\greeklambda\greeklambda\greeketa\greeknu\greekiota\greekkappa\greekalphatonos] {Greek} {love}
+\installlanguage
+ [\s!agr]
+ [\s!default=\s!gr,
+ \c!state=\v!stop]
+
+\installlanguage [ancientgreek] [\s!agr]
+
\protect \endinput
diff --git a/tex/context/base/lang-ini.tex b/tex/context/base/lang-ini.tex
index 9bce8b7dc..7dc90e5f7 100644
--- a/tex/context/base/lang-ini.tex
+++ b/tex/context/base/lang-ini.tex
@@ -352,6 +352,12 @@
% old (original) patterns
\doifelsenothing{#3}{\enableencoding[\s!default]}{\enableencoding[#3]}%
\doifelsenothing{#4}{\enablemapping [\s!default]}{\enablemapping [#4]}%
+% \iftrue
+% \dostepwiserecurse{0}{255}{1}
+% {\ifnum\lccode\recurselevel>0
+% \writestatus{lccodes}{#4: \recurselevel: \the\lccode\recurselevel}%
+% \fi}
+% \fi
% new patterns
% \enableregime[utf]%
%
diff --git a/tex/context/base/m-streams.tex b/tex/context/base/m-streams.tex
index 5cd618bc4..5822a0c9f 100644
--- a/tex/context/base/m-streams.tex
+++ b/tex/context/base/m-streams.tex
@@ -126,7 +126,7 @@
\def\startstreamlayer[#1]%
{\bgroup
- \def\startstreamlayer[##1]{\bgroup\let\stopstreamlayer\egroup}%
+% \def\startstreamlayer[##1]{\bgroup\let\stopstreamlayer\egroup}%
\edef\currentstreamlayer{#1}%
\enableoutputstream[main]%
\synchronizeoutput
@@ -139,16 +139,32 @@
\egroup
\disableoutputstream % \enableoutputstream[\s!default]%
\outputstreambox[main]%
+% \dostreamsetups{place}%
+% \dostreamsetups{extras}%
+% \dostreamsetups{flush}%
+ \egroup}
+
+\def\preparestreamlayer{\dosingleempty\dopreparestreamlayer}
+\def\flushstreamlayer {\dosingleempty\doflushstreamlayer }
+\def\placestreamlayer {\dosingleempty\doplacestreamlayer }
+
+\def\dopreparestreamlayer[#1]%
+ {\bgroup
+ \edef\currentstreamlayer{\iffirstargument#1\else\currentstreamlayer\fi}%
\dostreamsetups{place}%
\dostreamsetups{extras}%
- \dostreamsetups{flush}%
+% \dostreamsetups{flush}%
\egroup}
-\def\flushstreamlayer
- {\dosingleempty\doflushstreamlayer}
-
\def\doflushstreamlayer[#1]%
- {\expanded{\tightlayer[\iffirstargument#1\else\currentstreamlayer\fi]}}
+ {\bgroup
+ \edef\currentstreamlayer{\iffirstargument#1\else\currentstreamlayer\fi}%
+ \dostreamsetups{flush}%
+ \egroup}
+
+\def\doplacestreamlayer[#1]%
+ {\preparestreamlayer[#1]%
+ \flushstreamlayer[#1]}
\protect
@@ -236,6 +252,7 @@
%D \item xxx
%D \stopitemize
%D \stopstreamlayer
+%D \placestreamlayer[block]
%D }
%D
%D \dorecurse {10} {
@@ -245,6 +262,7 @@
%D \input tufte
%D \stopcolumns
%D \stopstreamlayer
+%D \placestreamlayer[block]
%D }
%D
%D \stoptext
@@ -324,6 +342,7 @@
% \dorecurse{4}{\input tufte \par}
% \stopcolumns
% \stopstreamlayer
+% \placestreamlayer[block]
\dorecurse {10} {
\startstreamlayer[block]
@@ -340,6 +359,7 @@
\item xxx
\stopitemize
\stopstreamlayer
+ \placestreamlayer[block]
}
\dorecurse {10} {
@@ -349,6 +369,7 @@
\input tufte
\stopcolumns
\stopstreamlayer
+ \placestreamlayer[block]
}
\stoptext
diff --git a/tex/context/base/m-units.tex b/tex/context/base/m-units.tex
index 949297686..89dd71e77 100644
--- a/tex/context/base/m-units.tex
+++ b/tex/context/base/m-units.tex
@@ -190,9 +190,9 @@
\def\dodimensionpower#1%
{\iftextdimensions\expandafter\high\else\expandafter^\fi{#1}}
-\def\ustartmathmode {\iftextdimensions\else\startmathmode \fi}
-\def\ustopmathmode {\iftextdimensions\else\stopmathmode \fi}
-\def\umathematicstypeface{\iftextdimensions\else\mathematicstypeface\fi}
+\def\ustartmathmode {\iftextdimensions\else\expandafter\startmathmode \fi}
+\def\ustopmathmode {\iftextdimensions\else\expandafter\stopmathmode \fi}
+\def\umathematicstypeface{\iftextdimensions\else\expandafter\mathematicstypeface\fi}
%D In forced text mode, we ignore spacing in monospaced fonts.
@@ -202,8 +202,8 @@
\def\dodimensionspace
{\iftextdimensions
\begingroup
- \setbox0=\hbox{i}%
- \setbox2=\hbox{m}%
+ \setbox0\hbox{i}%
+ \setbox2\hbox{m}%
\ifdim\wd0=\wd2
\endgroup
\@EAEAEA\gobbleoneargument
@@ -222,7 +222,7 @@
\let\dimensionsuffix\dimension
\let\dimensionpower \dimension
\global\nesteddimensionfalse
- \setbox0=\hbox{\ustartmathmode#1\ustopmathmode}%
+ \setbox\scratchbox\hbox{\ustartmathmode#1\ustopmathmode}% pre-roll
\global\let\thedimensionprefix\savedthedimensionprefix
\global\let\thedimensionpower \savedthedimensionpower
\endgroup
@@ -276,8 +276,8 @@
%D
%D Here are some auxilliary macros.
-\def\dontbreakdimension%
- {\scratchdimen=\lastskip
+\def\dontbreakdimension
+ {\scratchdimen\lastskip
\unskip
\nobreak
\hskip\scratchdimen
diff --git a/tex/context/base/math-ini.tex b/tex/context/base/math-ini.tex
index d78a9e4fc..a9f93a4f4 100644
--- a/tex/context/base/math-ini.tex
+++ b/tex/context/base/math-ini.tex
@@ -500,13 +500,42 @@
%D Taco posted this solution as response to a mail by Olivier, so
%D let's integrate it here.
-\def\setmathfunctionstyle#1% \rm \ss \tt
- {\def\mfunction##1% no families, just scaling a la text
- {\mathchoice
- {\hbox{\csname#1\endcsname\tf ##1}}
- {\hbox{\csname#1\endcsname\tf ##1}}
- {\hbox{\csname#1\endcsname\tfx ##1}}
- {\hbox{\csname#1\endcsname\tfxx##1}}}}
+% \def\setmathfunctionstyle#1% rm ss tt
+% {\def\mfunction##1% no families, just scaling a la text
+% {\mathchoice
+% {\hbox{\csname#1\endcsname\tf ##1}}
+% {\hbox{\csname#1\endcsname\tf ##1}}
+% {\hbox{\csname#1\endcsname\tfx ##1}}
+% {\hbox{\csname#1\endcsname\tfxx##1}}}}
+
+\def\currentmscaledstyle{rm} % will be plugged into the typeface text=ss option
+
+\def\setmathfunctionstyle#1% rm ss tt
+ {\doifsomething{#1}
+ {\def\currentmscaledstyle{#1}%
+ \def\mathopnolimits##1{\mathop{\mscaledtext{##1}}\nolimits}%
+ \def\mfunction##1{\mscaledtext{##1}}}}
+
+\def\mscaledtext#1%
+ {\mathchoice
+ {\hbox{\csname\currentmscaledstyle\endcsname\tf #1}}
+ {\hbox{\csname\currentmscaledstyle\endcsname\tf #1}}
+ {\hbox{\csname\currentmscaledstyle\endcsname\tfx #1}}
+ {\hbox{\csname\currentmscaledstyle\endcsname\tfxx#1}}}
+
+%D We can force the way functions are typeset by manipulating the text
+%D option:
+%D
+%D \starttyping
+%D \definetypeface[iwona][ss][sans][iwona][default][encoding=texnansi]
+%D \definetypeface[iwona][mm][math][iwona][default][encoding=texnansi,text=ss]
+%D \stoptyping
+%D
+%D This hooks into the math handler with:
+
+\appendtoks
+ \setmathfunctionstyle\currentmathtextstyle
+\to \everybodyfont
%D Usage:
%D
diff --git a/tex/context/base/math-mis.tex b/tex/context/base/math-mis.tex
new file mode 100644
index 000000000..b5a605cea
--- /dev/null
+++ b/tex/context/base/math-mis.tex
@@ -0,0 +1,49 @@
+%D \module
+%D [ file=math-mis,
+%D version=2001.04.12,
+%D title=\CONTEXT\ Math Macros,
+%D subtitle=Miscelaneous Symbols,
+%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.
+
+\unprotect
+
+%D \starttyping
+%D \usemathcollection[mis]
+%D \stoptyping
+
+\def\styledmathcommand#1%
+ {\mathchoice
+ {\let\currentmathstyle\displaystyle#1}%
+ {\let\currentmathstyle\textstyle#1}%
+ {\let\currentmathstyle\scriptstyle#1}%
+ {\let\currentmathstyle\scriptscriptstyle#1}}
+
+%D For Hong Feng:
+
+\def\geneq
+ {\styledmathcommand\dogeneq}
+
+\def\dogeneq
+ {\begingroup
+ \setbox\scratchbox\hbox{$\currentmathstyle=$}%
+ \hbox to \wd\scratchbox
+ {\copy\scratchbox
+ \hskip-\wd\scratchbox
+ \hss\incolortrue\localcolortrue
+ \color[white]{\vrule\!!height.6\ht\scratchbox\!!depth\zeropoint\!!width.2\wd\scratchbox}%
+ \hss}%
+ \endgroup}
+
+%D \startbuffer
+%D $a\geneq b^{a\geneq b^{a\geneq b}}$
+%D \stopbuffer
+%D
+%D \typebuffer \getbuffer
+
+\protect \endinput
diff --git a/tex/context/base/math-uni.tex b/tex/context/base/math-uni.tex
index 88698243f..e8fd3f05d 100644
--- a/tex/context/base/math-uni.tex
+++ b/tex/context/base/math-uni.tex
@@ -3,21 +3,180 @@
%D version=2005.06.11,
%D title=\CONTEXT\ Math Macros,
%D subtitle=unicode support,
-%D author=Nikolai Weibull,
+%D author={Nikolai Weibull \& Taco Hoekwater},
%D date=\currentdate,
-%D copyright={PRAGMA / Nikolai Weibull}]
+%D copyright=PRAGMA]
\unprotect
-% needed for unic-033
+% needed for unic-032 % TH
\startmathcollection[default]
- \definemathcommand [unic@leftarrowtobar] {\mapstochar\leftarrow}
+ \definemathcommand [unic@doubleverticalline] {\mathord{\parallel}}
+ \definemathcommand [unic@doublelowline] {\underline{\textunderscore}}
+
+ \definemathcommand [unic@doubleprime] {''}
+ \definemathcommand [unic@tripleprime] {'''}
+
+ \definemathcommand [unic@reverseddoubleprime] {\mathord{\backprime\backprime}}
+ \definemathcommand [unic@reversedtripleprime] {\mathord{\backprime\backprime\backprime}}
+
+ \definemathcommand [unic@fractionslash] {\vulgarfraction{}{}}
+ \definemathcommand [unic@lowasterisk] {\mathord{\lower-.2em\hbox{$\ast$}}}
+
+ \definemathcommand [unic@functionapplication] {\mathop{}}
+ \definemathcommand [unic@invisibletimes] {\mathbin{}}
+ \definemathcommand [unic@invisibleseparator] {\mathpunct{}}
+
+\stopmathcollection
+
+% needed for unic-033 % TH
+
+\def\unic@vulgarfraction#1#2%
+ {\hbox
+ {\high{{\tfx\it #1}\kern -.2em}%
+ \symbol[vulgarfraction]%
+ \kern -.2em\low{{\tfx\it #2}}}}
+
+\startmathcollection[default]
+
+ \definemathcommand [unic@accountof] {\unic@vulgarfraction{a}{c}}
+ \definemathcommand [unic@addressedtothesubject] {\unic@vulgarfraction{a}{s}}
+ \definemathcommand [unic@doublestruckC] {{\Bbb C}}
+ \definemathcommand [unic@degreecelsius] {{\textdegree \tf C}}
+ \definemathcommand [unic@centrelinesymbol] {\unknownchar}
+ \definemathcommand [unic@careof] {\unic@vulgarfraction{c}{o}}
+ \definemathcommand [unic@cadauna] {\unic@vulgarfraction{c}{u}}
+ \definemathcommand [unic@eulerconstant] {{\rm e}}
+ \definemathcommand [unic@scruple] {\unknownchar}
+ \definemathcommand [unic@degreefahrenheit] {{\textdegree \tf F}}
+ \definemathcommand [unic@scriptg] {\unknownchar}
+ \definemathcommand [unic@scriptH] {{\cal H}}
+ \definemathcommand [unic@blackletterH] {{\fraktur H}}
+ \definemathcommand [unic@doublestruckH] {{\Bbb H}}
+ \definemathcommand [unic@planckconstant] {h}
+ \definemathcommand [unic@planckconstantovertwopi] {\hslash}
+ \definemathcommand [unic@scriptI] {{\cal I}}
+ \definemathcommand [unic@blackletterI] {{\fraktur I}}
+ \definemathcommand [unic@scriptL] {{\cal L}}
+ \definemathcommand [unic@scriptl] {\ell}
+ \definemathcommand [unic@lbbarsymbol] {\unknownchar}
+ \definemathcommand [unic@doublestruckN] {{\Bbb N}}
+ \definemathcommand [unic@numerosign] {\hbox{\symbol[numero]}}
+ \definemathcommand [unic@soundrecordingcopyright] {\encircled{{\tfx P}}}
+ \definemathcommand [unic@scriptP] {{\cal P}}
+ \definemathcommand [unic@doublestruckP] {{\Bbb P}}
+ \definemathcommand [unic@doublestruckQ] {{\Bbb Q}}
+ \definemathcommand [unic@scriptR] {{\cal R}}
+ \definemathcommand [unic@blackletterR] {{\fraktur R}}
+ \definemathcommand [unic@doublestruckR] {{\Bbb R}}
+ \definemathcommand [unic@prescriptiontake] {\unknownchar}
+ \definemathcommand [unic@response] {\unknownchar}
+ \definemathcommand [unic@servicemark] {\high{\txx SM}}
+ \definemathcommand [unic@telephonesign] {\high{\txx TEL}}
+ \definemathcommand [unic@trademarksign] {\trademark}
+ \definemathcommand [unic@versickle] {\unknownchar}
+ \definemathcommand [unic@doublestruckZ] {{\Bbb Z}}
+ \definemathcommand [unic@ouncesign] {\unknownchar}
+ \definemathcommand [unic@ohmsign] {\Omega}
+ \definemathcommand [unic@invertedohmsign] {\rotate[\c!rotation=180]{\Omega}}
+ \definemathcommand [unic@blackletterZ] {{\fraktur Z}}
+ \definemathcommand [unic@turnedgreekletteriota] {\rotate[\c!rotation=180]{\iota}}
+ \definemathcommand [unic@kelvinsign] {{\tf K}}
+ \definemathcommand [unic@angstromsign] {\Angstrom}
+ \definemathcommand [unic@scriptB] {{\cal B}}
+ \definemathcommand [unic@blackletterC] {{\fraktur C}}
+ \definemathcommand [unic@estimatedsymbol] {\unknownchar}
+ \definemathcommand [unic@scripte] {\unknownchar}
+ \definemathcommand [unic@scriptE] {{\cal E}}
+ \definemathcommand [unic@scriptF] {{\cal F}}
+ \definemathcommand [unic@turnedF] {\rotate[\c!rotation=180]{{\tf F}}}
+ \definemathcommand [unic@scriptM] {{\cal M}}
+ \definemathcommand [unic@scripto] {\unknownchar}
+
+ \definemathcommand [unic@informationsource] {{\bf i}}
+ \definemathcommand [unic@rotatedQ] {\rotate[\c!rotation=90]{{\tf Q}}}
+ \definemathcommand [unic@facsimilesign] {\unknownchar}
+ \definemathcommand [unic@doublestruckpi] {\pi}%{\unknownchar}
+ \definemathcommand [unic@doublestruckgamma] {\gamma}%{\unknownchar}
+ \definemathcommand [unic@doublestruckGamma] {\Gamma}%{\unknownchar}
+ \definemathcommand [unic@doublestruckPi] {\Pi}%{\unknownchar}
+ \definemathcommand [unic@doublestrucknarysummation] {\unknownchar}
+ \definemathcommand [unic@turnedsansserifG] {\rotate[\c!rotation=180]{{\ss G}}}
+ \definemathcommand [unic@turnedsansserifL] {\rotate[\c!rotation=180]{{\ss L}}}
+ \definemathcommand [unic@reversedsansserifL] {\mirror{{\ss L}}}
+ \definemathcommand [unic@turnedsansserifY] {\rotate[\c!rotation=180]{{\ss Y}}}
+ \definemathcommand [unic@doublestruckitalicD] {D}%{\unknownchar}
+ \definemathcommand [unic@doublestruckitalicd] {d}%{\unknownchar}
+ \definemathcommand [unic@doublestruckitalice] {e}%{\unknownchar}
+ \definemathcommand [unic@doublestruckitalici] {i}%{\unknownchar}
+ \definemathcommand [unic@doublestruckitalicj] {j}%{\unknownchar}
+ \definemathcommand [unic@propertyline] {\unknownchar}
+ \definemathcommand [unic@turnedampersand] {\rotate[\c!rotation=180]{\&}}
+ \definemathcommand [unic@persign] {\unknownchar}
+
+ \definemathcommand [unic@fractiononethird] {\vulgarfraction{1}{3}}
+ \definemathcommand [unic@fractiontwothirds] {\vulgarfraction{2}{3}}
+ \definemathcommand [unic@fractiononefifth] {\vulgarfraction{1}{5}}
+ \definemathcommand [unic@fractiontwofifths] {\vulgarfraction{2}{5}}
+ \definemathcommand [unic@fractionthreefifths] {\vulgarfraction{3}{5}}
+ \definemathcommand [unic@fractionfourfifths] {\vulgarfraction{4}{5}}
+ \definemathcommand [unic@fractiononesixth] {\vulgarfraction{1}{6}}
+ \definemathcommand [unic@fractionfivesixths] {\vulgarfraction{5}{6}}
+ \definemathcommand [unic@fractiononeeighth] {\vulgarfraction{1}{8}}
+ \definemathcommand [unic@fractionthreeeighths] {\vulgarfraction{3}{8}}
+ \definemathcommand [unic@fractionfiveeighths] {\vulgarfraction{5}{8}}
+ \definemathcommand [unic@fractionseveneighths] {\vulgarfraction{7}{8}}
+ \definemathcommand [unic@fractionnumeratorone] {\vulgarfraction{1}{}}
+ \definemathcommand [unic@romannumeralOne] {{\tf I}}
+ \definemathcommand [unic@romannumeralTwo] {{\tf II}}
+ \definemathcommand [unic@romannumeralThree] {{\tf III}}
+ \definemathcommand [unic@romannumeralFour] {{\tf IV}}
+ \definemathcommand [unic@romannumeralFive] {{\tf V}}
+ \definemathcommand [unic@romannumeralSix] {{\tf VI}}
+ \definemathcommand [unic@romannumeralSeven] {{\tf VII}}
+ \definemathcommand [unic@romannumeralEight] {{\tf VIII}}
+ \definemathcommand [unic@romannumeralNine] {{\tf IX}}
+ \definemathcommand [unic@romannumeralTen] {{\tf X}}
+ \definemathcommand [unic@romannumeralEleven] {{\tf XI}}
+ \definemathcommand [unic@romannumeralTwelve] {{\tf XII}}
+ \definemathcommand [unic@romannumeralFifty] {{\tf L}}
+ \definemathcommand [unic@romannumeralOnehundred] {{\tf C}}
+ \definemathcommand [unic@romannumeralFivehundred] {{\tf D}}
+ \definemathcommand [unic@romannumeralOnethousand] {{\tf M}}
+ \definemathcommand [unic@romannumeralone] {{\tf i}}
+ \definemathcommand [unic@romannumeraltwo] {{\tf ii}}
+ \definemathcommand [unic@romannumeralthree] {{\tf iii}}
+ \definemathcommand [unic@romannumeralfour] {{\tf iv}}
+ \definemathcommand [unic@romannumeralfive] {{\tf v}}
+ \definemathcommand [unic@romannumeralsix] {{\tf vi}}
+ \definemathcommand [unic@romannumeralseven] {{\tf vii}}
+ \definemathcommand [unic@romannumeraleight] {{\tf viii}}
+ \definemathcommand [unic@romannumeralnine] {{\tf ix}}
+ \definemathcommand [unic@romannumeralten] {{\tf x}}
+ \definemathcommand [unic@romannumeraleleven] {{\tf xi}}
+ \definemathcommand [unic@romannumeraltwelve] {{\tf xii}}
+ \definemathcommand [unic@romannumeralfifty] {{\tf l}}
+ \definemathcommand [unic@romannumeralonehundred] {{\tf c}}
+ \definemathcommand [unic@romannumeralfivehundred] {{\tf d}}
+ \definemathcommand [unic@romannumeralonethousand] {{\tf m}}
+ \definemathcommand [unic@romannumeralonethousandCD] {\unknownchar}
+ \definemathcommand [unic@romannumeralfivethousand] {\unknownchar}
+ \definemathcommand [unic@romannumeraltenthousand] {\unknownchar}
+ \definemathcommand [unic@romannumeralreversedonehundred] {\mirror{C}}
+
+\stopmathcollection
+
+% needed for unic-033 % NW
+
+\startmathcollection[default]
+
+ \definemathcommand [unic@leftarrowtobar] {\mapstochar\leftarrow}
\stopmathcollection
-% needed for unic-034
+% needed for unic-034 % NW
\startmathcollection[default]
@@ -64,7 +223,7 @@
\stopmathcollection
-% needed for unic-039
+% needed for unic-039 % NW
\startmathcollection[default]
diff --git a/tex/context/base/meta-ini.tex b/tex/context/base/meta-ini.tex
index 20451074c..2fcd74718 100644
--- a/tex/context/base/meta-ini.tex
+++ b/tex/context/base/meta-ini.tex
@@ -103,8 +103,12 @@
\to \MPextensions
%D Some safeguards:
-
-\appendtoks \cleanupfeatures \to \everyMPgraphic
+%D
+%D \starttyping
+%D \appendtoks \cleanupfeatures \to \everyMPgraphic
+%D \stoptyping
+%D
+%D No, we don't want that (else we loose UTF etc).
%D Another one:
@@ -996,6 +1000,8 @@
\newconditional\manyMPspecials % when set to true, > 1000 specials can be used
+\settrue \manyMPspecials % per 1/4/2006
+
\prependtoks
_special_div_ := 1000\ifconditional\manyMPspecials0\fi ;
\to \MPextensions
diff --git a/tex/context/base/mult-con.tex b/tex/context/base/mult-con.tex
index 3ed401edb..3e00c2e0a 100644
--- a/tex/context/base/mult-con.tex
+++ b/tex/context/base/mult-con.tex
@@ -972,6 +972,10 @@ subsubsubsubsubsubject: subsubsubsubsubonderwerp subsubsubsubsub
posten polozky
elementi elemente
elements
+ fallback: terugval fallback
+ fallback fallback
+ fallback fallback
+ fallback
frame: kader frame
rahmen ramecek
cornice frame
diff --git a/tex/context/base/mult-sys.tex b/tex/context/base/mult-sys.tex
index 838162e71..12b29de55 100644
--- a/tex/context/base/mult-sys.tex
+++ b/tex/context/base/mult-sys.tex
@@ -32,36 +32,37 @@
%D First we define some system constants used for both the
%D multi||lingual interface and multi||linguag typesetting.
-\definesystemconstant {afrikaans} \definesystemconstant {af}
-\definesystemconstant {catalan} \definesystemconstant {ca}
-\definesystemconstant {chinese} \definesystemconstant {cn}
-\definesystemconstant {croation} \definesystemconstant {hr}
-\definesystemconstant {czech} \definesystemconstant {cz}
-\definesystemconstant {danish} \definesystemconstant {da}
-\definesystemconstant {dutch} \definesystemconstant {nl}
-\definesystemconstant {english} \definesystemconstant {en}
-\definesystemconstant {finish} \definesystemconstant {fi}
-\definesystemconstant {french} \definesystemconstant {fr}
-\definesystemconstant {german} \definesystemconstant {de}
-\definesystemconstant {hungarian} \definesystemconstant {hu}
-\definesystemconstant {italian} \definesystemconstant {it}
-\definesystemconstant {latin} \definesystemconstant {la}
-\definesystemconstant {norwegian} \definesystemconstant {no}
-\definesystemconstant {polish} \definesystemconstant {pl}
-\definesystemconstant {portuguese} \definesystemconstant {pt}
-\definesystemconstant {romanian} \definesystemconstant {ro}
-\definesystemconstant {russian} \definesystemconstant {ru}
-\definesystemconstant {slovak} \definesystemconstant {sk}
-\definesystemconstant {slovenian} \definesystemconstant {sl}
+\definesystemconstant {afrikaans} \definesystemconstant {af}
+\definesystemconstant {catalan} \definesystemconstant {ca}
+\definesystemconstant {chinese} \definesystemconstant {cn}
+\definesystemconstant {croation} \definesystemconstant {hr}
+\definesystemconstant {czech} \definesystemconstant {cz}
+\definesystemconstant {danish} \definesystemconstant {da}
+\definesystemconstant {dutch} \definesystemconstant {nl}
+\definesystemconstant {english} \definesystemconstant {en}
+\definesystemconstant {finish} \definesystemconstant {fi}
+\definesystemconstant {french} \definesystemconstant {fr}
+\definesystemconstant {german} \definesystemconstant {de}
+\definesystemconstant {hungarian} \definesystemconstant {hu}
+\definesystemconstant {italian} \definesystemconstant {it}
+\definesystemconstant {latin} \definesystemconstant {la}
+\definesystemconstant {norwegian} \definesystemconstant {no}
+\definesystemconstant {polish} \definesystemconstant {pl}
+\definesystemconstant {portuguese} \definesystemconstant {pt}
+\definesystemconstant {romanian} \definesystemconstant {ro}
+\definesystemconstant {russian} \definesystemconstant {ru}
+\definesystemconstant {slovak} \definesystemconstant {sk}
+\definesystemconstant {slovenian} \definesystemconstant {sl}
\definesystemconstant {slovene}
-\definesystemconstant {spanish} \definesystemconstant {es}
-\definesystemconstant {swedish} \definesystemconstant {sv}
-\definesystemconstant {turkish} \definesystemconstant {tr}
-\definesystemconstant {ukenglish} \definesystemconstant {uk}
-\definesystemconstant {ukrainian} \definesystemconstant {ua}
-\definesystemconstant {usenglish} \definesystemconstant {us}
-\definesystemconstant {greek} \definesystemconstant {gr}
-\definesystemconstant {vietnamese} \definesystemconstant {vn}
+\definesystemconstant {spanish} \definesystemconstant {es}
+\definesystemconstant {swedish} \definesystemconstant {sv}
+\definesystemconstant {turkish} \definesystemconstant {tr}
+\definesystemconstant {ukenglish} \definesystemconstant {uk}
+\definesystemconstant {ukrainian} \definesystemconstant {ua}
+\definesystemconstant {usenglish} \definesystemconstant {us}
+\definesystemconstant {greek} \definesystemconstant {gr}
+\definesystemconstant {ancientgreek} \definesystemconstant {agr}
+\definesystemconstant {vietnamese} \definesystemconstant {vn}
%D For proper \UNICODE\ support we need a few font related
%D constants.
@@ -495,6 +496,7 @@
\definesystemvariable {ly} % LaYout
\definesystemvariable {ma} % MargeAchtergrond
\definesystemvariable {mb} % MargeBlokken
+\definesystemvariable {md} % MoDule
\definesystemvariable {mg} % Metapost paGe
\definesystemvariable {mk} % MarKering
\definesystemvariable {mt} % inline MaTh
diff --git a/tex/context/base/page-flt.tex b/tex/context/base/page-flt.tex
index 3767a9531..1e3a8ace9 100644
--- a/tex/context/base/page-flt.tex
+++ b/tex/context/base/page-flt.tex
@@ -474,6 +474,7 @@
\v!outeredge=>\xxdocompletefloat\v!rightedge \v!leftedge,
\v!backspace=>\xxdocompletefloat\v!backspace \v!cutspace,
\v!cutspace=>\xxdocompletefloat\v!cutspace \v!backspace,
+% \v!margin=>\xxdocompletefloat\v!cutspace \v!backspace,
\v!left=>\xxdocompletefloat\v!left \v!left,
\v!right=>\xxdocompletefloat\v!right \v!right,
\v!line=>, % only -n*line is handled (see ***)
@@ -552,6 +553,9 @@
\dododefinefloat[#1][#1]%
\fi\fi}
+% todo: \floatparameter + \currentfloat - saves many hash entries
+%
+
\def\dododefinefloat[#1][#2]%
{\presetlocalframed[\??fl#1]%
\setupfloat
@@ -790,6 +794,29 @@
\def\doinsertfloatinfo
{\dofloatinfomessage<4{\the\totalnoffloats}}
+% \def\dogetfloat
+% {\ifsomefloatwaiting
+% \global\setbox\floatlist\vbox
+% {\unvbox\floatlist
+% \global\setbox\globalscratchbox\lastbox}%
+% \ifcenterfloatbox
+% \ifdim\wd\globalscratchbox<\hsize
+% \setbox\floatbox\hbox to \hsize{\hss\box\globalscratchbox\hss}%
+% \else
+% \setbox\floatbox\box\globalscratchbox % local !
+% \fi
+% \else
+% \setbox\floatbox\box\globalscratchbox % local !
+% \fi
+% \global\advance\savednoffloats \minusone
+% \ifcase\savednoffloats
+% \global\somefloatwaitingfalse
+% \fi
+% \else
+% \global\savednoffloats\zerocount
+% \global\setbox\floatbox\box\voidb@x
+% \fi}
+
\def\dogetfloat
{\ifsomefloatwaiting
\global\setbox\floatlist\vbox
@@ -800,6 +827,12 @@
\setbox\floatbox\hbox to \hsize{\hss\box\globalscratchbox\hss}%
\else
\setbox\floatbox\box\globalscratchbox % local !
+ % retain special alignments
+ \ifinsidecolumns
+ \ifdim\wd\floatbox>\makeupwidth
+ \wd\floatbox\makeupwidth
+ \fi
+ \fi
\fi
\else
\setbox\floatbox\box\globalscratchbox % local !
@@ -981,7 +1014,7 @@
{\doifinset\v!offset{#1}{\whitespace\blank}%
\box\floattext
\vfill}}}%
- \doifinsetelse\v!right{#1}%
+ \doifinsetelse\v!right{#1}% \floatmethod
{\setbox\floatbox\hbox to \hsize
{\box\floattext
\hfill
@@ -1030,31 +1063,45 @@
{\doifinsetelse\v!always{#1}
{\docheckiffloatfits
\ifroomforfloat
- \doifinsetelse\v!top{#1}
- {\placesometopsfloat[#1]}
- {\doifinsetelse\v!bottom{#1}
- {\placesomebotsfloat[#1]}
- {\placesomeherefloat[#1]}}%
- % more compact and efficient, but quite ugly
- % \doifinsetelse\v!top{#1}
- % \placesometopsfloat
- % {\doifinsetelse\v!bottom{#1}
- % \placesomebotsfloat
- % \placesomeherefloat}[#1]%
+ \sometopbottomfloat[#1]
\else
\showmessage\m!floatblocks9\empty
\doreversesavefloat
\fi}
{\docheckiffloatfits
\ifroomforfloat
- \doifinsetelse\v!top{#1}
- {\placesometopsfloat[#1]}
- {\doifinsetelse\v!bottom{#1}
- {\placesomebotsfloat[#1]}
- {\placesomeherefloat[#1]}}%
+ \sometopbottomfloat[#1]
\else
\dosavefloat
\fi}}}
+
+\def\floatautofactor{.5}
+
+% \def\sometopbottomfloat[#1]%
+% {\doifinsetelse\v!auto{#1}
+% {\ifdim\pagetotal<\floatautofactor\pagegoal % when empty page, maxdimen
+% \placesometopsfloat[#1]%
+% \else
+% \placesomebotsfloat[#1]%
+% \fi}
+% {\doifinsetelse\v!top{#1}
+% {\placesometopsfloat[#1]}
+% {\doifinsetelse\v!bottom{#1}
+% {\placesomebotsfloat[#1]}
+% {\placesomeherefloat[#1]}}}}
+
+\def\sometopbottomfloat[#1]%
+ {\doifelse\floatmethod\v!auto
+ {\ifdim\pagetotal<\floatautofactor\pagegoal % when empty page, maxdimen
+ \placesometopsfloat[#1]%
+ \else
+ \placesomebotsfloat[#1]%
+ \fi}
+ {\doifelse\floatmethod\v!top
+ {\placesometopsfloat[#1]}
+ {\doifelse\floatmethod\v!bottom
+ {\placesomebotsfloat[#1]}
+ {\placesomeherefloat[#1]}}}}
% De onderstaande macro wordt gebruikt bij de macros
% voor het plaatsen van tabellen en figuren (klopt niet
@@ -1670,7 +1717,8 @@
{\dogetfloatbox{#1}\empty}
{\ifdim\wd\floatbox>\getvalue{\??fl#4\c!criterium}\relax
\postcenterfloatbox{\wd\floatbox}% else we get left aligned
- \dogetfloatbox{#1}\v!here % see details/pascal
+ %dogetfloatbox{#1}\v!here % see details/pascal
+ \dogetfloatbox{#1}{\executeifdefined{\??fl#4\c!fallback}\v!here}%
\else
\dogetfloatbox{#1}\empty
\fi}}
@@ -2125,7 +2173,8 @@
\edef\floatmethod{#2}}%
\doifundefined{\string\floatmethod\floatmethod}
{\let\floatmethod\v!here}%
- \getvalue{\string\floatmethod\floatmethod}[#1]%
+ %\getvalue{\string\floatmethod\floatmethod}[#1]%
+ \getvalue{\string\floatmethod\floatmethod}[\floatmethod,#1]%
\fi}
\def\installfloathandler#1#2% #1=keyword #2=handler
@@ -2138,6 +2187,7 @@
\installfloathandler \v!text \sometextfloat
\installfloathandler \v!top \sometopfloat
\installfloathandler \v!bottom \somebottomfloat
+\installfloathandler \v!auto \someautofloat
\installfloathandler \v!margin \somemarginfloat
\installfloathandler \v!opposite \somefacefloat
\installfloathandler \v!page \somepagefloat
@@ -2176,6 +2226,7 @@
\def\somerightsidefloat [#1]{\somesidefloat[#1]}
\def\sometopfloat [#1]{\someelsefloat[#1]\nonoindentation}
\def\somebottomfloat [#1]{\someelsefloat[#1]}
+\def\someautofloat [#1]{\someelsefloat[#1]}
\def\somemarginfloat [#1]{\somenextfloat[#1]\nonoindentation}
\def\someinleftmarginfloat [#1]{\somesidefloat[#1]}
\def\someinrightmarginfloat[#1]{\somesidefloat[#1]}
diff --git a/tex/context/base/page-lay.tex b/tex/context/base/page-lay.tex
index 61df03246..8a3a785e0 100644
--- a/tex/context/base/page-lay.tex
+++ b/tex/context/base/page-lay.tex
@@ -609,13 +609,21 @@
%
% \startstandardmakeup[page=blank] ... \stopstandardmakeup
+% \def\checkcurrentlayout % public and used in naw, so keep this name
+% {\ifundefined{\??ly\realfolio\c!state}%
+% \doifoddpageelse\checkcurrentoddlayout\checkcurrentevenlayout
+% \else
+% \doifvalue{\??ly\realfolio\c!state}\v!start
+% {\xdef\currentlayout{\realfolio}\recalculatelayout}% new, global
+% \fi}
+
\def\checkcurrentlayout % public and used in naw, so keep this name
- {\ifundefined{\??ly\realfolio\c!state}%
- \doifoddpageelse\checkcurrentoddlayout\checkcurrentevenlayout
- \else
- \doifvalue{\??ly\realfolio\c!state}\v!start
- {\xdef\currentlayout{\realfolio}\recalculatelayout}% new, global
- \fi}
+ {\doifundefinedelse{\??ly\realfolio\c!state}
+ {\doifundefinedelse{\??ly\v!current\c!state}
+ {\doifoddpageelse\checkcurrentoddlayout\checkcurrentevenlayout}
+ {\globallet\currentlayout\v!current\recalculatelayout}}
+ {\doifvalue{\??ly\realfolio\c!state}\v!start
+ {\xdef\currentlayout{\realfolio}\recalculatelayout}}} % new, global
\def\checkcurrentoddlayout
{\ifundefined{\??ly\v!odd\c!state}\else
@@ -629,7 +637,15 @@
{\globallet\currentlayout\v!even\recalculatelayout}% new, global
\fi}
-\appendtoks \checkcurrentlayout \to \everyaftershipout
+% \appendtoks \checkcurrentlayout \to \everyaftershipout
+
+\appendtoks
+ \ifx\currentlayout\v!current
+ \globallet\currentlayout\empty
+ \global\letbeundefined{\??ly\v!current\c!state}%
+ \checkcurrentlayout
+ \fi
+\to \everyaftershipout
\newif\ifdoublesidedprint
diff --git a/tex/context/base/page-lyr.tex b/tex/context/base/page-lyr.tex
index 8c93fe034..48ea1e3c2 100644
--- a/tex/context/base/page-lyr.tex
+++ b/tex/context/base/page-lyr.tex
@@ -211,8 +211,15 @@
\def\definelayerpreset
{\dodoubleargument\dodefinelayerpreset}
+% \def\dodefinelayerpreset[#1][#2]%
+% {\setvalue{\??ll\??ll#1}{\dopresetlayer{#2}}}
+%
+% more fun: \definelayerpreset[whatever][lefttop]
+
\def\dodefinelayerpreset[#1][#2]%
- {\setvalue{\??ll\??ll#1}{\dopresetlayer{#2}}}
+ {\doifassignmentelse{#2}
+ {\setvalue{\??ll\??ll#1}{\dopresetlayer{#2}}}
+ {\setvalue{\??ll\??ll#1}{\getvalue{\??ll\??ll#2}}}}
\def\dopresetlayer#1#2#3% #1=list #2=tag #3=list
{\getparameters[\??ll#2][#1,#3]}
diff --git a/tex/context/base/page-one.tex b/tex/context/base/page-one.tex
index a94002fca..df92c1f03 100644
--- a/tex/context/base/page-one.tex
+++ b/tex/context/base/page-one.tex
@@ -574,16 +574,15 @@
[#1]
[ \v!left=>\leftfloat {\box\floatbox},
\v!right=>\rightfloat {\box\floatbox},
- \v!inleft=>\leftmarginfloat {\box\floatbox},
- \v!inright=>\rightmarginfloat{\box\floatbox},
+ \v!inleft=>\leftmarginfloat {\box\floatbox},
+ \v!inright=>\rightmarginfloat{\box\floatbox},
\v!leftmargin=>\leftmarginfloat {\box\floatbox},
\v!rightmargin=>\rightmarginfloat{\box\floatbox},
- \v!leftedge=>\leftedgefloat {\box\floatbox},
- \v!rightedge=>\rightedgefloat {\box\floatbox},
- \v!backspace=>\backspacefloat {\box\floatbox},
- \v!cutspace=>\cutspacefloat {\box\floatbox},
- \v!inmargin=>{\doinmargenormal\leftmarginfloat
- \rightmarginfloat{\box\floatbox}}]%
+ \v!leftedge=>\leftedgefloat {\box\floatbox},
+ \v!rightedge=>\rightedgefloat {\box\floatbox},
+ \v!backspace=>\backspacefloat {\box\floatbox},
+ \v!cutspace=>\cutspacefloat {\box\floatbox},
+ \v!inmargin=>\cutspacefloat {\box\floatbox}]%
\doifinset\v!tall{#1}\flushsidefloatsafterpar
\fi}
diff --git a/tex/context/base/page-sid.tex b/tex/context/base/page-sid.tex
index e67f3e50f..499f34f93 100644
--- a/tex/context/base/page-sid.tex
+++ b/tex/context/base/page-sid.tex
@@ -77,6 +77,8 @@
\def\rightedgefloat {\global\chardef\sidefloattype7 \putsidefloat}
\def\cutspacefloat {\global\chardef\sidefloattype8 \putsidefloat}
+\let\marginfloat \cutspacefloat
+
\newif\ifroomforfloat
\newif\iffloatshort
\newif\iffloatflag
diff --git a/tex/context/base/page-str.tex b/tex/context/base/page-str.tex
index a6c1e8e2c..74b8a47a4 100644
--- a/tex/context/base/page-str.tex
+++ b/tex/context/base/page-str.tex
@@ -42,8 +42,15 @@
\newif\ifinoutputstream
+\newtoks \everyenableoutputstream
+
+\appendtoks
+ \flushsidefloats
+\to \everyenableoutputstream
+
\def\enableoutputstream[#1]%
- {\finishoutputstream
+ {\the\everyenableoutputstream
+ \finishoutputstream
\writestatus{otr}{switching to output stream #1}%
\inoutputstreamtrue
\xdef\currentoutputstream{#1}}
diff --git a/tex/context/base/page-txt.tex b/tex/context/base/page-txt.tex
index a6b6fe2b1..14707a5eb 100644
--- a/tex/context/base/page-txt.tex
+++ b/tex/context/base/page-txt.tex
@@ -67,6 +67,20 @@
\def\setuplayouttext
{\dotripleempty\dosetuplayouttext}
+% \def\dosetuplayouttext[#1][#2][#3]%
+% {\ifthirdargument
+% \getparameters[\??tk#1#2][#3]%
+% \else
+% %\getparameters[\??tk#1\v!text][#2]%
+% \edef\previoustextstate{\getvalue{\??tk#1\c!state}}%
+% \getparameters[\??tk#1][#2]%
+% \doifnotvalue{\??tk#1\c!state}\previoustextstate
+% {%\checkcurrentlayout % no
+% \calculatevsizes
+% \recalculatebackgrounds
+% \recalculatelogos}%
+% \fi}
+
\def\dosetuplayouttext[#1][#2][#3]%
{\ifthirdargument
\getparameters[\??tk#1#2][#3]%
@@ -76,9 +90,12 @@
\getparameters[\??tk#1][#2]%
\doifnotvalue{\??tk#1\c!state}\previoustextstate
{%\checkcurrentlayout % no
- \calculatevsizes
- \recalculatebackgrounds
- \recalculatelogos}%
+ \edef\currenttextstate{\getvalue{\??tk#1\c!state}}%
+ % speed optimization (calculating backgrounds takes time)
+ \doifcommon{\previoustextstate,\currenttextstate}{\v!high,\v!none}{%
+ \calculatevsizes
+ \recalculatebackgrounds
+ \recalculatelogos}}%
\fi}
\def\setuptop {\dotripleempty\dosetuplayouttext[\v!top]}
@@ -229,7 +246,10 @@
%D couple of macros.
\def\settextlinestatus #1{\edef\textlinestatus{\csname\??tk#1\c!state\endcsname}}
-\def\resettextlinestatus#1{\letgvalue{\??tk#1\c!state}\v!normal}
+%def\resettextlinestatus#1{\letgvalue{\??tk#1\c!state}\v!normal}
+
+\def\resettextlinestatus#1% postpone
+ {\setgvalue{\??tk#1\s!reset}{\letgvalue{\??tk#1\c!state}\v!normal}}
\def\placelayouttextline#1% #2
{\settextlinestatus{#1}%
@@ -264,8 +284,12 @@
\setvalue{\string\placelayouttextline\v!none}#1#2%
{}
+% \setvalue{\string\placelayouttextline\v!high}#1#2%
+% {\global\settrue\resyncaftertextline}
+
\setvalue{\string\placelayouttextline\v!high}#1#2%
- {\global\settrue\resyncaftertextline}
+ {\global\settrue\resyncaftertextline
+ \resettextlinestatus{#1}}
\setvalue{\string\placelayouttextline\v!empty}#1#2%
{\resettextlinestatus{#1}}
@@ -298,10 +322,27 @@
%D The following macro has to be called after a page
%D is flushed.
+% \def\resetlayouttextline#1%
+% {\doifvalue{\??tk#1\c!state}\v!high
+% {\global\settrue\resyncaftertextline
+% \resettextlinestatus{#1}}}
+
\def\resetlayouttextline#1%
- {\doifvalue{\??tk#1\c!state}\v!high
- {\global\settrue\resyncaftertextline
- \resettextlinestatus{#1}}}
+ {\getvalue {\??tk#1\s!reset}%
+ \letgvalue{\??tk#1\s!reset}\relax}
+
+% \def\resetlayouttextlines
+% {\resetlayouttextline\v!top
+% \resetlayouttextline\v!header
+% \resetlayouttextline\v!text
+% \resetlayouttextline\v!footer
+% \resetlayouttextline\v!bottom
+% \ifconditional\resyncaftertextline
+% \doglobal\calculatevsizes
+% \recalculatebackgrounds
+% \recalculatelogos
+% \global\setfalse\resyncaftertextline
+% \fi}
\def\resetlayouttextlines
{\resetlayouttextline\v!top
diff --git a/tex/context/base/regi-cp1250.tex b/tex/context/base/regi-cp1250.tex
new file mode 100644
index 000000000..b5bbdbf71
--- /dev/null
+++ b/tex/context/base/regi-cp1250.tex
@@ -0,0 +1,151 @@
+%D \module
+%D [ file=regi-cp1250,
+%D version=2005.12.26,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=cp1250 (East European),
+%D author=script-generated,
+%D date=\currentdate,
+%D copyright=PRAGMA-ADE]
+%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 Support for cp1250 input encoding (regime) for Central European languages,
+%D see also iso-8859-2. Usage:
+%D
+%D \type{\enableregime[cp1250]} or \type{\enablereregime[windows-1250]}
+
+\startregime[cp1250]
+
+\defineactivetoken 128 {\texteuro} % 20AC EURO SIGN
+\defineactivetoken 129 {\unknownchar} % <undefined>
+\defineactivetoken 130 {\quotesinglebase} % 201A SINGLE LOW-9 QUOTATION MARK
+\defineactivetoken 131 {\unknownchar} % <undefined>
+\defineactivetoken 132 {\quotedblbase} % 201E DOUBLE LOW-9 QUOTATION MARK
+\defineactivetoken 133 {\textellipsis} % 2026 HORIZONTAL ELLIPSIS
+\defineactivetoken 134 {\textdag} % 2020 DAGGER
+\defineactivetoken 135 {\textddag} % 2021 DOUBLE DAGGER
+\defineactivetoken 136 {\unknownchar} % <undefined>
+\defineactivetoken 137 {\perthousand} % 2030 PER MILLE SIGN
+\defineactivetoken 138 {\Scaron} % 0160 LATIN CAPITAL LETTER S WITH CARON
+\defineactivetoken 139 {\guilsingleleft} % 2039 SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+\defineactivetoken 140 {\Sacute} % 015A LATIN CAPITAL LETTER S WITH ACUTE
+\defineactivetoken 141 {\Tcaron} % 0164 LATIN CAPITAL LETTER T WITH CARON
+\defineactivetoken 142 {\Zcaron} % 017D LATIN CAPITAL LETTER Z WITH CARON
+\defineactivetoken 143 {\Zacute} % 0179 LATIN CAPITAL LETTER Z WITH ACUTE
+\defineactivetoken 144 {\unknownchar} % <undefined>
+\defineactivetoken 145 {\quoteleft} % 2018 LEFT SINGLE QUOTATION MARK
+\defineactivetoken 146 {\quoteright} % 2019 RIGHT SINGLE QUOTATION MARK
+\defineactivetoken 147 {\quotedblleft} % 201C LEFT DOUBLE QUOTATION MARK
+\defineactivetoken 148 {\quotedblright} % 201D RIGHT DOUBLE QUOTATION MARK
+\defineactivetoken 149 {\textbullet} % 2022 BULLET
+\defineactivetoken 150 {\endash} % 2013 EN DASH
+\defineactivetoken 151 {\emdash} % 2014 EM DASH
+\defineactivetoken 152 {\unknownchar} % <undefined>
+\defineactivetoken 153 {\trademark} % 2122 TRADE MARK SIGN
+\defineactivetoken 154 {\scaron} % 0161 LATIN SMALL LETTER S WITH CARON
+\defineactivetoken 155 {\guilsingleright} % 203A SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+\defineactivetoken 156 {\sacute} % 015B LATIN SMALL LETTER S WITH ACUTE
+\defineactivetoken 157 {\tcaron} % 0165 LATIN SMALL LETTER T WITH CARON
+\defineactivetoken 158 {\zcaron} % 017E LATIN SMALL LETTER Z WITH CARON
+\defineactivetoken 159 {\zacute} % 017A LATIN SMALL LETTER Z WITH ACUTE
+\defineactivetoken 160 {\nonbreakablespace} % 00A0 NO-BREAK SPACE
+\defineactivetoken 161 {\textcaron} % 02C7 CARON
+\defineactivetoken 162 {\textbreve} % 02D8 BREVE
+\defineactivetoken 163 {\Lstroke} % 0141 LATIN CAPITAL LETTER L WITH STROKE
+\defineactivetoken 164 {\textcurrency} % 00A4 CURRENCY SIGN
+\defineactivetoken 165 {\Aogonek} % 0104 LATIN CAPITAL LETTER A WITH OGONEK
+\defineactivetoken 166 {\textbrokenbar} % 00A6 BROKEN BAR
+\defineactivetoken 167 {\sectionmark} % 00A7 SECTION SIGN
+\defineactivetoken 168 {\textdiaeresis} % 00A8 DIAERESIS
+\defineactivetoken 169 {\copyright} % 00A9 COPYRIGHT SIGN
+\defineactivetoken 170 {\Scedilla} % 015E LATIN CAPITAL LETTER S WITH CEDILLA
+\defineactivetoken 171 {\leftguillemot} % 00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+\defineactivetoken 172 {\textlognot} % 00AC NOT SIGN
+\defineactivetoken 173 {\softhyphen} % 00AD SOFT HYPHEN
+\defineactivetoken 174 {\registered} % 00AE REGISTERED SIGN
+\defineactivetoken 175 {\Zdotaccent} % 017B LATIN CAPITAL LETTER Z WITH DOT ABOVE
+\defineactivetoken 176 {\textdegree} % 00B0 DEGREE SIGN
+\defineactivetoken 177 {\textpm} % 00B1 PLUS-MINUS SIGN
+\defineactivetoken 178 {\textogonek} % 02DB OGONEK
+\defineactivetoken 179 {\lstroke} % 0142 LATIN SMALL LETTER L WITH STROKE
+\defineactivetoken 180 {\textacute} % 00B4 ACUTE ACCENT
+\defineactivetoken 181 {\textmu} % 00B5 MICRO SIGN
+\defineactivetoken 182 {\paragraphmark} % 00B6 PILCROW SIGN
+\defineactivetoken 183 {\periodcentered} % 00B7 MIDDLE DOT
+\defineactivetoken 184 {\textcedilla} % 00B8 CEDILLA
+\defineactivetoken 185 {\aogonek} % 0105 LATIN SMALL LETTER A WITH OGONEK
+\defineactivetoken 186 {\scedilla} % 015F LATIN SMALL LETTER S WITH CEDILLA
+\defineactivetoken 187 {\rightguillemot} % 00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+\defineactivetoken 188 {\Lcaron} % 013D LATIN CAPITAL LETTER L WITH CARON
+\defineactivetoken 189 {\texthungarumlaut} % 02DD DOUBLE ACUTE ACCENT
+\defineactivetoken 190 {\lcaron} % 013E LATIN SMALL LETTER L WITH CARON
+\defineactivetoken 191 {\zdotaccent} % 017C LATIN SMALL LETTER Z WITH DOT ABOVE
+\defineactivetoken 192 {\Racute} % 0154 LATIN CAPITAL LETTER R WITH ACUTE
+\defineactivetoken 193 {\Aacute} % 00C1 LATIN CAPITAL LETTER A WITH ACUTE
+\defineactivetoken 194 {\Acircumflex} % 00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+\defineactivetoken 195 {\Abreve} % 0102 LATIN CAPITAL LETTER A WITH BREVE
+\defineactivetoken 196 {\Adiaeresis} % 00C4 LATIN CAPITAL LETTER A WITH DIAERESIS
+\defineactivetoken 197 {\Lacute} % 0139 LATIN CAPITAL LETTER L WITH ACUTE
+\defineactivetoken 198 {\Cacute} % 0106 LATIN CAPITAL LETTER C WITH ACUTE
+\defineactivetoken 199 {\Ccedilla} % 00C7 LATIN CAPITAL LETTER C WITH CEDILLA
+\defineactivetoken 200 {\Ccaron} % 010C LATIN CAPITAL LETTER C WITH CARON
+\defineactivetoken 201 {\Eacute} % 00C9 LATIN CAPITAL LETTER E WITH ACUTE
+\defineactivetoken 202 {\Eogonek} % 0118 LATIN CAPITAL LETTER E WITH OGONEK
+\defineactivetoken 203 {\Ediaeresis} % 00CB LATIN CAPITAL LETTER E WITH DIAERESIS
+\defineactivetoken 204 {\Ecaron} % 011A LATIN CAPITAL LETTER E WITH CARON
+\defineactivetoken 205 {\Iacute} % 00CD LATIN CAPITAL LETTER I WITH ACUTE
+\defineactivetoken 206 {\Icircumflex} % 00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+\defineactivetoken 207 {\Dcaron} % 010E LATIN CAPITAL LETTER D WITH CARON
+\defineactivetoken 208 {\Dstroke} % 0110 LATIN CAPITAL LETTER D WITH STROKE
+\defineactivetoken 209 {\Nacute} % 0143 LATIN CAPITAL LETTER N WITH ACUTE
+\defineactivetoken 210 {\Ncaron} % 0147 LATIN CAPITAL LETTER N WITH CARON
+\defineactivetoken 211 {\Oacute} % 00D3 LATIN CAPITAL LETTER O WITH ACUTE
+\defineactivetoken 212 {\Ocircumflex} % 00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+\defineactivetoken 213 {\Ohungarumlaut} % 0150 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+\defineactivetoken 214 {\Odiaeresis} % 00D6 LATIN CAPITAL LETTER O WITH DIAERESIS
+\defineactivetoken 215 {\textmultiply} % 00D7 MULTIPLICATION SIGN
+\defineactivetoken 216 {\Rcaron} % 0158 LATIN CAPITAL LETTER R WITH CARON
+\defineactivetoken 217 {\Uring} % 016E LATIN CAPITAL LETTER U WITH RING ABOVE
+\defineactivetoken 218 {\Uacute} % 00DA LATIN CAPITAL LETTER U WITH ACUTE
+\defineactivetoken 219 {\Uhungarumlaut} % 0170 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+\defineactivetoken 220 {\Udiaeresis} % 00DC LATIN CAPITAL LETTER U WITH DIAERESIS
+\defineactivetoken 221 {\Yacute} % 00DD LATIN CAPITAL LETTER Y WITH ACUTE
+\defineactivetoken 222 {\Tcedilla} % 0162 LATIN CAPITAL LETTER T WITH CEDILLA
+\defineactivetoken 223 {\ssharp} % 00DF LATIN SMALL LETTER SHARP S
+\defineactivetoken 224 {\racute} % 0155 LATIN SMALL LETTER R WITH ACUTE
+\defineactivetoken 225 {\aacute} % 00E1 LATIN SMALL LETTER A WITH ACUTE
+\defineactivetoken 226 {\acircumflex} % 00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX
+\defineactivetoken 227 {\abreve} % 0103 LATIN SMALL LETTER A WITH BREVE
+\defineactivetoken 228 {\adiaeresis} % 00E4 LATIN SMALL LETTER A WITH DIAERESIS
+\defineactivetoken 229 {\lacute} % 013A LATIN SMALL LETTER L WITH ACUTE
+\defineactivetoken 230 {\cacute} % 0107 LATIN SMALL LETTER C WITH ACUTE
+\defineactivetoken 231 {\ccedilla} % 00E7 LATIN SMALL LETTER C WITH CEDILLA
+\defineactivetoken 232 {\ccaron} % 010D LATIN SMALL LETTER C WITH CARON
+\defineactivetoken 233 {\eacute} % 00E9 LATIN SMALL LETTER E WITH ACUTE
+\defineactivetoken 234 {\eogonek} % 0119 LATIN SMALL LETTER E WITH OGONEK
+\defineactivetoken 235 {\ediaeresis} % 00EB LATIN SMALL LETTER E WITH DIAERESIS
+\defineactivetoken 236 {\ecaron} % 011B LATIN SMALL LETTER E WITH CARON
+\defineactivetoken 237 {\iacute} % 00ED LATIN SMALL LETTER I WITH ACUTE
+\defineactivetoken 238 {\icircumflex} % 00EE LATIN SMALL LETTER I WITH CIRCUMFLEX
+\defineactivetoken 239 {\dcaron} % 010F LATIN SMALL LETTER D WITH CARON
+\defineactivetoken 240 {\dstroke} % 0111 LATIN SMALL LETTER D WITH STROKE
+\defineactivetoken 241 {\nacute} % 0144 LATIN SMALL LETTER N WITH ACUTE
+\defineactivetoken 242 {\ncaron} % 0148 LATIN SMALL LETTER N WITH CARON
+\defineactivetoken 243 {\oacute} % 00F3 LATIN SMALL LETTER O WITH ACUTE
+\defineactivetoken 244 {\ocircumflex} % 00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX
+\defineactivetoken 245 {\ohungarumlaut} % 0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE
+\defineactivetoken 246 {\odiaeresis} % 00F6 LATIN SMALL LETTER O WITH DIAERESIS
+\defineactivetoken 247 {\textdiv} % 00F7 DIVISION SIGN
+\defineactivetoken 248 {\rcaron} % 0159 LATIN SMALL LETTER R WITH CARON
+\defineactivetoken 249 {\uring} % 016F LATIN SMALL LETTER U WITH RING ABOVE
+\defineactivetoken 250 {\uacute} % 00FA LATIN SMALL LETTER U WITH ACUTE
+\defineactivetoken 251 {\uhungarumlaut} % 0171 LATIN SMALL LETTER U WITH DOUBLE ACUTE
+\defineactivetoken 252 {\udiaeresis} % 00FC LATIN SMALL LETTER U WITH DIAERESIS
+\defineactivetoken 253 {\yacute} % 00FD LATIN SMALL LETTER Y WITH ACUTE
+\defineactivetoken 254 {\tcedilla} % 0163 LATIN SMALL LETTER T WITH CEDILLA
+\defineactivetoken 255 {\textdotaccent} % 02D9 DOT ABOVE
+
+\stopregime
+
diff --git a/tex/context/base/regi-syn.tex b/tex/context/base/regi-syn.tex
new file mode 100644
index 000000000..134114477
--- /dev/null
+++ b/tex/context/base/regi-syn.tex
@@ -0,0 +1,22 @@
+%D \module
+%D [ file=regi-syn,
+%D version=2006.04.04,
+%D title=\CONTEXT\ Regime Macros,
+%D subtitle=Synonyms,
+%D author=Mojca Miklavec \& 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 Regime Macros (synonyms)}
+
+\unprotect
+
+\defineregimesynonym[cp-1250] [cp1250]
+\defineregimesynonym[windows-1250][cp1250]
+\defineregimesynonym[1250] [cp1250]
+
+\protect \endinput
diff --git a/tex/context/base/sort-ini.tex b/tex/context/base/sort-ini.tex
index 84d32e2ff..e3c6daa28 100644
--- a/tex/context/base/sort-ini.tex
+++ b/tex/context/base/sort-ini.tex
@@ -11,10 +11,16 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
+% dodo: autokeyexpansion => igv utf: \setupregister[index][keyexpansion=yes]
+
%D This module replaces existing sort key handling and is meant to be
%D used with the new texutil functionality. This module defines a few
%D auxiliary macros.
+\ifx\exportsortaction\undefined \else \endinput \fi
+
+\writestatus{loading}{Context Sorting Macros (ini)}
+
%D The sorting method is largely bases on the one used in the old version
%D of texutil but i've changed the interface a bit. It all boils down to
%D a bunch of substitutions. The reimplementation makes it easier to extend
@@ -84,6 +90,17 @@
{\exportsortexpansion{#1}{#2}%
\exportsortdivision {#2}{#1}}
+\def\exportutfsortexpansion#1#2#3%
+ {\bgroup
+ \edef\utfsorta{\string\unknownchar}%
+ \dostepwiserecurse{#2}{#3}\plusone
+ {\edef\utfsortb{\@EA\string\csname\doutfunihash{#1}{\recurselevel}\endcsname}%
+ \ifx\utfsortb\utfsorta \else
+ \edef\utfsortc{\numbertoutf{\numexpr#1*256+\recurselevel\relax}}%
+ \expanded{\exportsortshortcut{\utfsortc}{\utfsortb}}%
+ \fi}%
+ \egroup}
+
% Next we overload some macros defined in enco-ini and core-uti. This
% will change.
@@ -92,6 +109,17 @@
\def\savesortkeys
{\globallet\savesortkeys\relax
\enablemode[sortorder-\currentmainlanguage]%
+ \bgroup
+ \doifelse \currentregime {utf}
+ {\exportutfsortexpansion{0}{128}{255}%
+ \exportutfsortexpansion{1}{0}{255}}
+ {\def\defineactivecharacter##1 ##2%
+ {\expanded{\exportsortshortcut{\rawcharacter{##1}}}{##2}}%
+ \doifelse{\characterregime}\nocharacterregime
+ {\doifnot{\characterencoding}\nocharacterencoding % to be sure, autoregime
+ {\the\executeifdefined{\@reg@\characterencoding}\emptytoks}}%
+ {\the\executeifdefined{\@reg@\characterregime}\emptytoks}}%
+ \egroup
\readfile{\f!sortprefix new}\donothing\donothing % temporary hacks
\readfile{\f!sortprefix def}\donothing\donothing % defaults
\readfile{\f!sortprefix lan}\donothing\donothing}% language specifics
diff --git a/tex/context/base/sort-lan.tex b/tex/context/base/sort-lan.tex
index 21ab85c13..379e33495 100644
--- a/tex/context/base/sort-lan.tex
+++ b/tex/context/base/sort-lan.tex
@@ -11,6 +11,16 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
+% for testing:
+
+\startmode[sortorder-en]
+ \exportsortexpansion{aacute}{a+1}
+ \exportsortexpansion{Aacute}{A+2}
+ \exportsortexpansion{agrave}{a+1}
+ \exportsortexpansion{Agrave}{A+2}
+\stopmode
+
+
%D This module replaces existing sort key handling and is meant to be
%D used with the new texutil functionality. Here we define the language
%D specific sort rules.
@@ -19,6 +29,18 @@
%
% a-c, ccaron, cacute, d, dstroke, e-s, scaron, t-z, zcaron
+% \enableregime[utf]
+% \mainlanguage[sl]
+% \starttext
+% \ccaron\index{\ccaron\space 1}
+% \Ccaron\index{\Ccaron\space 1}
+% Ä\index{Ä 2}
+% Č\index{Č 2}
+% \v c\index{\v c 3}
+% \v C\index{\v C 3}
+% \placeindex
+% \stoptext
+
% \startmode[sortorder-sl]
% \exportsortexpansion {ccaron} {cz}
% \exportsortexpansion {cacute} {czz}
@@ -70,6 +92,36 @@
%
% a-z, aring, adiaeresis, odiaeresis
+% \mainlanguage[sv]
+% \starttext
+% a\index{a}
+% a\index{a}
+% z\index{z}
+% z\index{z}
+% q\index{q}
+% q\index{q}
+% å\index{å}
+% å\index{å}
+% å\index{å}
+% ä\index{ä}
+% ä\index{ä}
+% ä\index{ä}
+% ä\index{ä}
+% ö\index{ö}
+% ö\index{ö}
+% \aring\index{\aring}
+% \adiaeresis\index{\adiaeresis}
+% \odiaeresis\index{\odiaeresis}
+% A\index{A}
+% Å\index{Å}
+% Ä\index{Ä}
+% Ö\index{Ö}
+% \Aring\index{\Aring}
+% \Adiaeresis\index{\Adiaeresis}
+% \Odiaeresis\index{\Odiaeresis}
+% \placeindex
+% \stoptext
+
\startmode[sortorder-sv]
\exportsortrule {aring} {z+1}
\exportsortrule {adiaeresis} {z+2}
diff --git a/tex/context/base/sort-new.tex b/tex/context/base/sort-new.tex
index cc6d6983d..c7bea35a8 100644
--- a/tex/context/base/sort-new.tex
+++ b/tex/context/base/sort-new.tex
@@ -40,16 +40,6 @@
\registerinfo{> \firstcharacter}{#3}%
\endgroup}
-\def\convertmeaning#1\to % watch the double expansion !
- {\bgroup
- \honorunexpanded
- %dontexpandencoding % new
- \literateencodedtokens % newer
- \xdef\@@globalexpanded{#1}%
- \xdef\@@globalexpanded{\@@globalexpanded}%
- \egroup
- \convertcommand\@@globalexpanded\to}
-
\def\reduceargument#1\to#2%
{\begingroup
\reducetocoding[raw]%
diff --git a/tex/context/base/spec-tpd.tex b/tex/context/base/spec-tpd.tex
index a69cfff09..dcf803f7b 100644
--- a/tex/context/base/spec-tpd.tex
+++ b/tex/context/base/spec-tpd.tex
@@ -342,44 +342,45 @@
\ifnum\pdftexversion>13
-\def\checkpdfimagepagenumber#1%
- {\let\pdfimagepagenumber\empty
- \getfromcommacommand[#1][1]%
- \doifnumberelse\commalistelement
- {\ifcase\commalistelement\else
- \edef\pdfimagepagenumber{page \commalistelement}%
- %\message{(pdf image \pdfimagepagenumber)}%
- \fi}
- {}}
-
-\def\handlepdfimage#1#2#3#4#5#6#7#8#9%
- {\bgroup
- \the\everyPDFximage
- \doifvalidpdfimagefileelse{#1}
- {\checkpdfimagepagenumber{#9}%
- \immediate\pdfximage
- \ifdim#7>\zeropoint \!!width #7\fi
- \ifdim#8>\zeropoint \!!height #8\fi
- \pdfimagepagenumber
-\@@DriverImageBox
- {#1}%
- \xdef\PDFimagereference{\the\pdflastximage}%
- \xdef\nofinsertpages{\the\pdflastximagepages}%
- \pdfrefximage\pdflastximage}
- {\framed[\c!width=#7,\c!height=#8]{#1}}%
- \egroup}
+ \def\checkpdfimagepagenumber#1%
+ {\let\pdfimagepagenumber\empty
+ \getfromcommacommand[#1][1]%
+ \doifnumberelse\commalistelement
+ {\ifcase\commalistelement\else
+ \edef\pdfimagepagenumber{page \commalistelement}%
+ %\message{(pdf image \pdfimagepagenumber)}%
+ \fi}
+ {}}
+
+ \def\handlepdfimage#1#2#3#4#5#6#7#8#9%
+ {\bgroup
+ \the\everyPDFximage
+ \doifvalidpdfimagefileelse{#1}
+ {\checkpdfimagepagenumber{#9}%
+ %\pdfimmediateximage
+ \ifx\pdfimagepagenumber\empty\@EA\pdfimmediateximage\else\@EA\pdfximage\fi
+ \ifdim#7>\zeropoint \!!width #7\fi
+ \ifdim#8>\zeropoint \!!height #8\fi
+ \pdfimagepagenumber
+ \@@DriverImageBox
+ {#1}%
+ \xdef\PDFimagereference{\the\pdflastximage}%
+ \xdef\nofinsertpages{\the\pdflastximagepages}%
+ \pdfrefximage\pdflastximage}
+ {\framed[\c!width=#7,\c!height=#8]{#1}}%
+ \egroup}
\else
-\def\handlepdfimage#1#2#3#4#5#6#7#8#9%
- {\bgroup
- \doifvalidpdfimagefileelse{#1}
- {\pdfimage
- \ifdim#7>\zeropoint \!!width #7\fi
- \ifdim#8>\zeropoint \!!height #8\fi
- {#1}}%
- {\framed[\c!width=#7,\c!height=#8]{#1}}%
- \egroup}
+ \def\handlepdfimage#1#2#3#4#5#6#7#8#9%
+ {\bgroup
+ \doifvalidpdfimagefileelse{#1}
+ {\pdfimage
+ \ifdim#7>\zeropoint \!!width #7\fi
+ \ifdim#8>\zeropoint \!!height #8\fi
+ {#1}}%
+ {\framed[\c!width=#7,\c!height=#8]{#1}}%
+ \egroup}
\fi
@@ -440,70 +441,73 @@
% \fi
% \@@DriverImageBox}
+\def\pdfimmediateximage{\immediate\pdfximage}
+
\ifnum\pdftexversion>13
-\def\checkpdfimageattributes
- {\ifx\PDFfigurereference\empty
- \global\let\pdfimageattributes\empty
- \else
- \immediate\pdfobj
- {[ << /Image \PDFobjref\PDFfigurereference
- /DefaultForPrinting true >> ]}%
- \xdef\pdfimageattributes
- {attr {/Alternates \PDFobjref\pdflastobj}}%
- \fi}
-
-\global\let\PDFimagecolorreference\empty
-
-\def\checkpdfimagecolorspecs
- {\ifx\pdflastximagecolordepth \undefined
- \global\let\pdfimagecolorspecs\empty
- \else\ifx\PDFimagecolorreference\empty
- \global\let\pdfimagecolorspecs\empty
- \else
- \xdef\pdfimagecolorspecs{colorspace \PDFimagecolorreference\space}%
- \fi\fi
- \global\let\PDFimagecolorreference\empty}
-
-\def\dogetTPDfiguresize#1#2#3#4#5#6#7%
- {\ifmeasureTPDfiguresize
- #4\zeropoint
- #5\zeropoint
- \doifvalidpdfimagefileelse{#2}
- {\ifvoid\foundexternalfigure
- \donetrue
- \else\ifx\PDFfigurereference\empty
- \donetrue
- \else
- \doifinstringelse\filesuffix{\c!png,\c!jpg}\donetrue\donefalse
- \fi\fi}
- {\donefalse}%
- \ifdone
- \the\everyPDFximage
- \checkpdfimagepagenumber{#3}%
- \checkpdfimageattributes
- \checkpdfimagecolorspecs
- \global\setbox\foundexternalfigure\hbox
- {\immediate\pdfximage
- \pdfimageattributes
- \pdfimagecolorspecs
- \pdfimagepagenumber
- \@@DriverImageBox
- {#2}%
- \xdef\PDFimagereference{\the\pdflastximage}%
- \xdef\nofinsertpages{\the\pdflastximagepages}%
- \pdfrefximage\pdflastximage}%
- #6\wd\foundexternalfigure
- #7\ht\foundexternalfigure
- \global\let\PDFfigurereference\empty
- \global\let\PDFimageattributes\empty
+ \def\checkpdfimageattributes
+ {\ifx\PDFfigurereference\empty
+ \global\let\pdfimageattributes\empty
\else
- #6\zeropoint
- #7\zeropoint
- \fi
- \else
- #1{#2}{#3}{#4}{#5}{#6}{#7}% \normaldogetfiguresize...
- \fi}
+ \immediate\pdfobj
+ {[ << /Image \PDFobjref\PDFfigurereference
+ /DefaultForPrinting true >> ]}%
+ \xdef\pdfimageattributes
+ {attr {/Alternates \PDFobjref\pdflastobj}}%
+ \fi}
+
+ \global\let\PDFimagecolorreference\empty
+
+ \def\checkpdfimagecolorspecs
+ {\ifx\pdflastximagecolordepth \undefined
+ \global\let\pdfimagecolorspecs\empty
+ \else\ifx\PDFimagecolorreference\empty
+ \global\let\pdfimagecolorspecs\empty
+ \else
+ \xdef\pdfimagecolorspecs{colorspace \PDFimagecolorreference\space}%
+ \fi\fi
+ \global\let\PDFimagecolorreference\empty}
+
+ \def\dogetTPDfiguresize#1#2#3#4#5#6#7%
+ {\ifmeasureTPDfiguresize
+ #4\zeropoint
+ #5\zeropoint
+ \doifvalidpdfimagefileelse{#2}
+ {\ifvoid\foundexternalfigure
+ \donetrue
+ \else\ifx\PDFfigurereference\empty
+ \donetrue
+ \else
+ \doifinstringelse\filesuffix{\c!png,\c!jpg}\donetrue\donefalse
+ \fi\fi}
+ {\donefalse}%
+ \ifdone
+ \the\everyPDFximage
+ \checkpdfimagepagenumber{#3}%
+ \checkpdfimageattributes
+ \checkpdfimagecolorspecs
+ \global\setbox\foundexternalfigure\hbox
+ {\ifx\pdfimagepagenumber\empty\@EA\pdfimmediateximage\else\@EA\pdfximage\fi
+ %\pdfimmediateximage
+ \pdfimageattributes
+ \pdfimagecolorspecs
+ \pdfimagepagenumber
+ \@@DriverImageBox
+ {#2}%
+ \xdef\PDFimagereference{\the\pdflastximage}%
+ \xdef\nofinsertpages{\the\pdflastximagepages}%
+ \pdfrefximage\pdflastximage}%
+ #6\wd\foundexternalfigure
+ #7\ht\foundexternalfigure
+ \global\let\PDFfigurereference\empty
+ \global\let\PDFimageattributes\empty
+ \else
+ #6\zeropoint
+ #7\zeropoint
+ \fi
+ \else
+ #1{#2}{#3}{#4}{#5}{#6}{#7}% \normaldogetfiguresize...
+ \fi}
\else
diff --git a/tex/context/base/supp-lan.tex b/tex/context/base/supp-lan.tex
index a643667c5..99ba487c6 100644
--- a/tex/context/base/supp-lan.tex
+++ b/tex/context/base/supp-lan.tex
@@ -184,8 +184,8 @@
%D compound characters like |-| or || to be separated from the
%D words. \TEX\ hackers will recognise the next two macro's:
-\def\prewordbreak {\penalty10000\hskip0pt\relax}
-\def\postwordbreak {\penalty0\prewordbreak}
+\def\prewordbreak {\penalty\plustenthousand\hskip\zeropoint\relax}
+\def\postwordbreak {\penalty\zerocount\prewordbreak}
%D We first show the original implementation, which only
%D supports \type{|} as command and delimiter. Before
@@ -507,11 +507,16 @@
\nextnextnext}
\def\checkbeforediscretionary
- {\setbox0\lastbox
- \ifdim\wd0=\zeropoint
- \let\postwordbreak\prewordbreak
- \fi
- \box0\relax}
+ {\ifvmode\dontleavehmode\fi
+ \ifhmode
+ \begingroup
+ \setbox\scratchbox\lastbox
+ \ifdim\wd\scratchbox=\zeropoint
+ \let\postwordbreak\prewordbreak
+ \fi
+ \box\scratchbox\relax
+ \endgroup
+ \fi}
\def\checkafterdiscretionary
{\ifx,\nextnext
@@ -604,8 +609,8 @@
{\uccode`'=`'\relax \uccode`~=`~\relax \uccode`_=`_\relax
\uccode`(=`(\relax \uccode`)=`)\relax \uccode`==`=\relax
\uccode`<=`<\relax \uccode`>=`>\relax
- \let\dotextmodediscretionary = \activedotextmodediscretionary
- \let\dododotextmodediscretionary = \activedododotextmodediscretionary}
+ \let\dotextmodediscretionary \activedotextmodediscretionary
+ \let\dododotextmodediscretionary\activedododotextmodediscretionary}
%D We only have to redefine two macros. While saving the
%D \type{\uccode} in a macro we have to take care of empty
@@ -673,7 +678,7 @@
\allowbreak\postwordbreak
\egroup
\fi\fi\fi\fi\fi\fi\fi\fi\fi
- \nextnextnext}
+ \nextnextnext} % no lookahead in commands
%D Now we can safely do things like: \enableactivediscretionaries
%D
@@ -769,11 +774,12 @@
\allowbreak\postwordbreak
\egroup
\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
- \nextnextnext}
+ \nextnextnext} % no lookahead in commands
%D Since most things in \CONTEXT\ are configurable, we
%D slightly change the previous definition so that we can
-%D install new functionality outside this module.
+%D install new functionality outside this module. We also
+%D support lookahead (over the egroup).
\def\@tmd@{@@tmd@@}
@@ -804,10 +810,14 @@
\discretionary{\hbox{#2}}{}{\hbox{#2}}%
\allowbreak\postwordbreak
\egroup
+ \else\ifx\nextnextnext\egroup % so we can properly do things afterward
+ \@EA\egroup
+ \@EA\let\@EA\nextnextnext\@EA\empty
+ \csname\@tmd@\discretionarytoken\endcsname
\else
\csname\@tmd@\discretionarytoken\endcsname
- \fi\fi
- \nextnextnext} % can be \egroup so \aftergroup\ignorespaces
+ \fi\fi\fi
+ \nextnextnext} % lookahead in commands
\def\definetextmodediscretionary #1
{\convertargument#1\to\ascii
@@ -863,19 +873,15 @@
\definetextmodediscretionary :
{\removeunwantedspaces\prewordbreak\kern\hspaceamount\empty{:}:}
- %\space\aftergroup\ignorespaces}
\definetextmodediscretionary ;
{\removeunwantedspaces\prewordbreak\kern\hspaceamount\empty{;};}
- %\space\aftergroup\ignorespaces}
\definetextmodediscretionary ?
{\removeunwantedspaces\prewordbreak\kern\hspaceamount\empty{?}?}
- %\space\aftergroup\ignorespaces}
\definetextmodediscretionary !
{\removeunwantedspaces\prewordbreak\kern\hspaceamount\empty{!}!}
- %\space\aftergroup\ignorespaces}
\definetextmodediscretionary *
{\prewordbreak\discretionary{-}{}{\kern.05em}\prewordbreak}
@@ -908,6 +914,10 @@
%D In those situations where the nature of characters is
%D less predictable, we can use the more direct approach:
+%D Beware: an \type {\ignorespaces} in a definition works
+%D okay here, but not in the main mechanism because there
+%D we have \type {\nextnextnext}.
+
\unexpanded\def\directdiscretionary#1%
{\convertargument#1\to\discretionarytoken
\let\textmodediscretionary\compoundhyphen
@@ -1197,7 +1207,7 @@
%D
%D The following macro is taken from plain \TEX.
-\def\nonbreakablespace{\penalty\!!tenthousand\ }
+\def\nonbreakablespace{\penalty\plustenthousand\ }
\let~\nonbreakablespace
@@ -1366,6 +1376,8 @@
\else
\prewordbreak\discretionary{}{##1{}{}}{##1{}{}}\prewordbreak
\fi}%
+ \def\splitanyway##1%
+ {\prewordbreak##1\prewordbreak}%
\def\flushurl%
{\savedurl\let\savedurl\empty}%
\def\\%
@@ -1439,7 +1451,13 @@
\def\scanurl#1%
{\advance\scratchcounter\plusone
- \ifx#1\~%
+ \ifx#1\blankspace
+ \flushurl\splitanyway\normalspace
+ \else\ifx#1\ %
+ \flushurl\splitanyway\normalspace
+ \else\ifx#1\space
+ \flushurl\splitanyway\normalspace
+ \else\ifx#1\~%
\flushurl\splitbefore\~%
\else\ifx#1\#%
\flushurl\splitbefore\#%
@@ -1493,7 +1511,7 @@
#1%
\fi
\fi
- \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
% \setupinteraction[state=start]
% \def\gotoURL#1{\useURL[foo][#1]\goto{\url[foo]}[url(foo)]}
diff --git a/tex/context/base/supp-mat.tex b/tex/context/base/supp-mat.tex
index d35dc52d3..5b2305f8b 100644
--- a/tex/context/base/supp-mat.tex
+++ b/tex/context/base/supp-mat.tex
@@ -49,15 +49,24 @@
\long\def\displaymath#1{\relax\ifmmode#1\else$$#1$$\fi}
\long\def\inlinemath #1{\relax\ifmmode#1\else $#1$\fi}
-\def\startmathmode
- {\ifmmode
+\let\stopmathmode\relax
+
+\def\startmathmode % cannot be used nested
+ {\relax\ifmmode
\let\stopmathmode\relax
\else
$\def\stopmathmode{$}% \let\stopmathmode=$
\fi}
+\def\startmathmode % nested variant
+ {\relax\ifmmode
+ \begingroup\let\stopmathmode\endgroup
+ \else
+ $\let\stopmathmode$%
+ \fi}
+
\def\nomathematics#1%
- {\ifmmode\hbox{#1}\else#1\fi}
+ {\relax\ifmmode\hbox{#1}\else#1\fi}
\let\math\mathematics
diff --git a/tex/context/base/supp-mps.tex b/tex/context/base/supp-mps.tex
index 20e181dbd..d36a90c87 100644
--- a/tex/context/base/supp-mps.tex
+++ b/tex/context/base/supp-mps.tex
@@ -1073,6 +1073,8 @@
\def\executesystemcommand#1{\immediate\write18{#1}}
\fi
+\ifx\TEXEXECcommand \undefined \def\TEXEXECcommand{texexec} \fi
+
\ifx\undefined\executeMetaPost
\ifx\undefined\interactionmode \chardef\interactionmode=255 \fi
@@ -1088,7 +1090,7 @@
\space\ifuseMETAFUNformat \MPOSTformatswitch metafun \fi #1}
\def\executeMPTEX#1%
- {texexec
+ {\TEXEXECcommand\space
--batch \ifcase\interactionmode --logfile='mptex.log' \fi
--output=\MPOSTdriver\space
\ifuseMETAFUNformat --mpformat=metafun \fi --mptex --nomp --once #1}
diff --git a/tex/context/base/syst-ext.tex b/tex/context/base/syst-ext.tex
index f235fed0a..44c46f02d 100644
--- a/tex/context/base/syst-ext.tex
+++ b/tex/context/base/syst-ext.tex
@@ -3467,6 +3467,19 @@
%D As we can see below, spaces following a control sequence are
%D to enclosed in \type{{}}.
+% keep this one:
+%
+% \def\stripcharacter#1\from#2\to#3%
+% {\def\dostripcharacter##1#1##2\end
+% {\edef\!!strippedstring{\!!strippedstring##1}%
+% \doifnotempty{##2}{\dostripcharacter##2\end}}%
+% \let\!!strippedstring\empty
+% \edef\!!stringa{#2}%
+% \@EA\dostripcharacter\!!stringa#1\end
+% \dodoglobal\let#3\!!strippedstring}
+%
+% the following is better (comes from syst-loc):
+
\def\stripcharacter#1\from#2\to#3%
{\def\dostripcharacter##1#1##2\end
{\edef\!!strippedstring{\!!strippedstring##1}%
diff --git a/tex/context/base/type-exa.tex b/tex/context/base/type-exa.tex
index ee26d254f..0730bd55f 100644
--- a/tex/context/base/type-exa.tex
+++ b/tex/context/base/type-exa.tex
@@ -245,7 +245,7 @@
\definetypeface[\typescriptone][ss][sans] [\typescriptone] [default][encoding=\typescripttwo]
\definetypeface[\typescriptone][rm][serif][modern] [default][encoding=\typescripttwo]
\definetypeface[\typescriptone][tt][mono] [modern] [default][encoding=\typescripttwo]
- \definetypeface[\typescriptone][mm][math] [\typescriptone] [default][encoding=\typescripttwo]
+ \definetypeface[\typescriptone][mm][math] [\typescriptone] [default][encoding=\typescripttwo,text=ss]
\stoptypescript
diff --git a/tex/context/base/type-ini.tex b/tex/context/base/type-ini.tex
index 8c988acd3..16de32741 100644
--- a/tex/context/base/type-ini.tex
+++ b/tex/context/base/type-ini.tex
@@ -538,48 +538,21 @@
\def\typefaceencoding{\defaultencoding}
-% \def\dodefinetypeface[#1][#2][#3][#4][#5][#6]%
-% {\dododefinetypeface[#1][#2]%
-% \iffifthargument % sixth is optional
-% % \getparameters[\??ts][rscale=1,\s!encoding=\defaultencoding,#6]
-% % we need to expand since in #6 there can be a \typescripttwo
-% \expanded{\getparameters[\??ts][\s!rscale=1,\s!encoding=\defaultencoding,#6]}%
-% % toch niet \expanded{\getparameters[\??ts][\s!rscale=1,\s!encoding=\s!default,#6]}%
-% \pushmacro\relativefontsize
-% \pushmacro\typefaceencoding
-% \pushmacro\fontclass
-% \let\relativefontsize\@@tsrscale
-% \let\typefaceencoding\@@tsencoding
-% \setcurrentfontclass{#1}
-% \saverelativefontsize{#2}{\relativefontsize}% fall back
-% %\writestatus{typeface}{[#1] [#2] [#3] [#4]}
-% \writestatus\m!fonts{[#1] [#2] [#3] [#4] / \typefaceencoding}%
-% %\usetypescript[map][\typefaceencoding]% latest versions of pdftex can load after first page
-% \usetypescript[#3,map][#4][name,default,\typefaceencoding,special]% is default needed
-% \usetypescript[#3][#5][size]%
-% \popmacro\fontclass
-% \popmacro\typefaceencoding
-% \popmacro\relativefontsize
-% \else\iffourthargument
-% \definetypeface[#1][#2][#3][#4][\s!default]%
-% \else\ifthirdargument
-% \getparameters[\??tf#1#2][#3]%
-% \fi\fi\fi}
-
% we can use \rawgetparameters or \rawgeteparameters
\def\dodefinetypeface[#1][#2][#3][#4][#5][#6]%
{\dododefinetypeface[#1][#2]%
\iffifthargument % sixth is optional
% we need to expand since in #6 there can be a \typescripttwo
- \expanded{\getparameters[\??ts][\s!rscale=\plusone,\s!encoding=\defaultencoding,#6]}% \geteparameters
+ \expanded{\getparameters[\??ts][\s!rscale=\plusone,\s!encoding=\defaultencoding,\s!text=,#6]}% \geteparameters
\pushmacro\relativefontsize
\pushmacro\typefaceencoding
\pushmacro\fontclass
\let\relativefontsize\@@tsrscale
\let\typefaceencoding\@@tsencoding
\setcurrentfontclass{#1}%
- \saverelativefontsize{#2}{\relativefontsize}% fall back
+ \saverelativefontsize{#2}\relativefontsize % fall back
+ \savemathtextstyle\@@tstext % math text style (new per 28/4/2006)
\iftracetypescripts\writestatus\m!fonts{define: [#1] [#2] [#3] [#4] / \typefaceencoding}\fi
%\usetypescript[map][\typefaceencoding]% latest versions of pdftex can load after first page
\usetypescript[#3,\t!map][#4][\t!name,\t!default,\typefaceencoding,\t!special]% is default needed
diff --git a/tex/context/base/unic-032.tex b/tex/context/base/unic-032.tex
index 42fea9de3..32c25e4e2 100644
--- a/tex/context/base/unic-032.tex
+++ b/tex/context/base/unic-032.tex
@@ -1,9 +1,9 @@
%D \module
%D [ file=unic-032,
-%D version=2002.12.03,
+%D version=2006.03.30,
%D title=\CONTEXT\ \UNICODE\ Macros,
%D subtitle=Vector 32,
-%D author=Hans Hagen,
+%D author={Hans Hagen \& Taco Hoekwater},
%D date=\currentdate,
%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
%C
@@ -13,126 +13,266 @@
\unprotect
-% U+2027 HYPHENATION POINT
-% U+2028 LINE SEPARATOR
-% U+2029 PARAGRAPH SEPARATOR
-% U+202A LEFT-TO-RIGHT EMBEDDING
-% U+202B RIGHT-TO-LEFT EMBEDDING
-% U+202C POP DIRECTIONAL FORMATTING
-% U+202D LEFT-TO-RIGHT OVERRIDE
-% U+202E RIGHT-TO-LEFT OVERRIDE
-% U+202F NARROW NO-BREAK SPACE
-% U+2030 PER MILLE SIGN
-% U+2031 PER TEN THOUSAND SIGN
-% U+2032 PRIME
-% U+2033 DOUBLE PRIME
-% U+2034 TRIPLE PRIME
-% U+2035 REVERSED PRIME
-% U+2036 REVERSED DOUBLE PRIME
-% U+2037 REVERSED TRIPLE PRIME
-% U+2038 CARET
-
-% U+203B REFERENCE MARK
-% U+203C DOUBLE EXCLAMATION MARK
-% U+203D INTERROBANG
-% U+203E OVERLINE
-% U+203F UNDERTIE
-% U+2040 CHARACTER TIE
-% U+2041 CARET INSERTION POINT
-% U+2042 ASTERISM
-% U+2043 HYPHEN BULLET
-% U+2044 FRACTION SLASH
-% U+2045 LEFT SQUARE BRACKET WITH QUILL
-% U+2046 RIGHT SQUARE BRACKET WITH QUILL
-% U+2047 DOUBLE QUESTION MARK
-% U+2048 QUESTION EXCLAMATION MARK
-% U+2049 EXCLAMATION QUESTION MARK
-% U+204A TIRONIAN SIGN ET
-% U+204B REVERSED PILCROW SIGN
-% U+204C BLACK LEFTWARDS BULLET
-% U+204D BLACK RIGHTWARDS BULLET
-% U+204E LOW ASTERISK
-% U+204F REVERSED SEMICOLON
-% U+2050 CLOSE UP
-% U+2051 TWO ASTERISKS ALIGNED VERTICALLY
-% U+2052 COMMERCIAL MINUS SIGN
-% U+2053 SWUNG DASH
-% U+2054 INVERTED UNDERTIE
-% U+2057 QUADRUPLE PRIME
-% U+205F MEDIUM MATHEMATICAL SPACE
-% U+2060 WORD JOINER
-% U+2061 FUNCTION APPLICATION
-% U+2062 INVISIBLE TIMES
-% U+2063 INVISIBLE SEPARATOR
-% U+206A INHIBIT SYMMETRIC SWAPPING
-% U+206B ACTIVATE SYMMETRIC SWAPPING
-% U+206C INHIBIT ARABIC FORM SHAPING
-% U+206D ACTIVATE ARABIC FORM SHAPING
-% U+206E NATIONAL DIGIT SHAPES
-% U+206F NOMINAL DIGIT SHAPES
-
-\ifx\undefined\zerowidthspace \unexpanded\def\zerowidthspace{\kern\zeropoint} \fi
-
\startunicodevector 32
+ \expandafter\strippedcsname
\ifcase\numexpr#1\relax
- \strippedcsname \enspace \or % U+2000 EN QUAD
- \strippedcsname \emspace \or % U+2001 EM QUAD
- \strippedcsname \enspace \or % U+2002 EN SPACE
- \strippedcsname \emspace \or % U+2003 EM SPACE
- \strippedcsname \unknownchar \or % U+2004 THREE-PER-EM SPACE
- \strippedcsname \unknownchar \or % U+2005 FOUR-PER-EM SPACE
- \strippedcsname \unknownchar \or % U+2006 SIX-PER-EM SPACE
- \strippedcsname \unknownchar \or % U+2007 FIGURE SPACE
- \strippedcsname \unknownchar \or % U+2008 PUNCTUATION SPACE
- \strippedcsname \unknownchar \or % U+2009 THIN SPACE
- \strippedcsname \unknownchar \or % U+200A HAIR SPACE
- \strippedcsname \zerowidthspace \or % U+200B ZERO WIDTH SPACE
- \strippedcsname \unknownchar \or % U+200C ZERO WIDTH NON-JOINER
- \strippedcsname \unknownchar \or % U+200D ZERO WIDTH JOINER
- \strippedcsname \unknownchar \or % U+200E LEFT-TO-RIGHT MARK
- \strippedcsname \unknownchar \or % U+200F RIGHT-TO-LEFT MARK
- \strippedcsname \breakinghyphen \or % U+2010 HYPHEN
- \strippedcsname \nonbreakinghyphen\or % U+2011 NON-BREAKING HYPHEN
- \strippedcsname \textminus \or % U+2012 FIGURE DASH
- \strippedcsname \endash \or % U+2013 EN DASH
- \strippedcsname \emdash \or % U+2014 EM DASH
- \strippedcsname \unknownchar \or % U+2015 HORIZONTAL BAR
- \strippedcsname \unknownchar \or % U+2016 DOUBLE VERTICAL LINE
- \strippedcsname \unknownchar \or % U+2017 DOUBLE LOW LINE
- \strippedcsname \quoteleft \or % U+2018 LEFT SINGLE QUOTATION MARK
- \strippedcsname \quoteright \or % U+2019 RIGHT SINGLE QUOTATION MARK
- \strippedcsname \quotesinglebase \or % U+201A SINGLE LOW-9 QUOTATION MARK
- \strippedcsname \unknownchar \or % U+201B SINGLE HIGH-REVERSED-9 QUOTATION MARK
- \strippedcsname \quotedblleft \or % U+201C LEFT DOUBLE QUOTATION MARK
- \strippedcsname \quotedblright \or % U+201D RIGHT DOUBLE QUOTATION MARK
- \strippedcsname \quotedblbase \or % U+201E DOUBLE LOW-9 QUOTATION MARK
- \strippedcsname \unknownchar \or % U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK
- \strippedcsname \textdag \or % U+2020 DAGGER
- \strippedcsname \textddag \or % U+2021 DOUBLE DAGGER
- \strippedcsname \textbullet \or % U+2022 BULLET
- \strippedcsname \unknownchar \or % U+2023 TRIANGULAR BULLET
- \strippedcsname \unknownchar \or % U+2024 ONE DOT LEADER
- \strippedcsname \unknownchar \or % U+2025 TWO DOT LEADER
- \strippedcsname \periods \else % U+2026 HORIZONTAL ELLIPSIS % was: \textellipsis
- \ifcase\numexpr#1-48\relax
- \strippedcsname \perthousand \or % U+2030 PER MILLE SIGN
- \strippedcsname \unknownchar \or % U+2031 PER TEN THOUSAND SIGN
- \strippedcsname \prime \or % U+2032 PRIME
- \strippedcsname \doubleprime \or % U+2033 DOUBLE PRIME
- \strippedcsname \tripleprime \else % U+2034 TRIPLE PRIME
- \ifcase\numexpr#1-57\relax
- \strippedcsname \guilsingleleft \or % U+2039 SINGLE LEFT-POINTING ANGLE QUOTATION MARK
- \strippedcsname \guilsingleright \else % U+203A SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
- \ifcase\numexpr#1-95\relax
- \strippedcsname \thickspace \or % U+205F MEDIUM MATHEMATICAL SPACE
- \strippedcsname \unknownchar \or %
- \strippedcsname \unknownchar \or % U+2061 FUNCTION APPLICATION
- \strippedcsname \times \or % U+2062 INVISIBLE TIMES
- \strippedcsname \unknownchar \else % U+2063 INVISIBLE COMMA
- \ifcase\numexpr#1-172\relax
- \strippedcsname \texteuro \else
- \strippedcsname \unknownchar
- \fi\fi\fi\fi\fi
+ \enspace \or % U+2000 EN QUAD
+ \emspace \or % U+2001 EM QUAD
+ \enspace \or % U+2002 EN SPACE
+ \emspace \or % U+2003 EM SPACE
+ \unic@threeperemspace \or % U+2004 THREE-PER-EM SPACE
+ \unic@fourperemspace \or % U+2005 FOUR-PER-EM SPACE
+ \unic@sixperemspace \or % U+2006 SIX-PER-EM SPACE
+ \unic@figurespace \or % U+2007 FIGURE SPACE
+ \unmic@punctiationspace \or % U+2008 PUNCTUATION SPACE
+ \thinspace \or % U+2009 THIN SPACE
+ \unic@hairspace \or % U+200A HAIR SPACE
+ \unic@zerowidthspace \or % U+200B ZERO WIDTH SPACE
+ \unic@zerowidthnonjoiner \or % U+200C ZERO WIDTH NON-JOINER
+ \unic@zerowidthjoiner \or % U+200D ZERO WIDTH JOINER
+ \unknownchar \or % U+200E LEFT-TO-RIGHT MARK
+ \unknownchar \or % U+200F RIGHT-TO-LEFT MARK
+ \breakinghyphen \or % U+2010 HYPHEN
+ \nonbreakinghyphen \or % U+2011 NON-BREAKING HYPHEN
+ \endash \or % U+2012 FIGURE DASH
+ \endash \or % U+2013 EN DASH
+ \emdash \or % U+2014 EM DASH
+ \emdash \or % U+2015 HORIZONTAL BAR
+ \unic@doubleverticalline \or % U+2016 DOUBLE VERTICAL LINE
+ \unic@doublelowline \or % U+2017 DOUBLE LOW LINE
+ \quoteleft \or % U+2018 LEFT SINGLE QUOTATION MARK
+ \quoteright \or % U+2019 RIGHT SINGLE QUOTATION MARK
+ \quotesinglebase \or % U+201A SINGLE LOW-9 QUOTATION MARK
+ \unic@quoteleftreversed \or % U+201B SINGLE HIGH-REVERSED-9 QUOTATION MARK
+ \quotedblleft \or % U+201C LEFT DOUBLE QUOTATION MARK
+ \quotedblright \or % U+201D RIGHT DOUBLE QUOTATION MARK
+ \quotedblbase \or % U+201E DOUBLE LOW-9 QUOTATION MARK
+ \unic@quotedblleftreversed \or % U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK
+ \textdag \or % U+2020 DAGGER
+ \textddag \or % U+2021 DOUBLE DAGGER
+ \textbullet \or % U+2022 BULLET
+ \blacktriangleright \or % U+2023 TRIANGULAR BULLET
+ \unic@onedotleader \or % U+2024 ONE DOT LEADER
+ \unic@twodotleader \or % U+2025 TWO DOT LEADER
+ \periods \or % U+2026 HORIZONTAL ELLIPSIS % was: \textellipsis
+ \unic@hyphenationpoint \or % U+2027 HYPHENATION POINT
+ \crlf \or % U+2028 LINE SEPARATOR
+ \endgraf \or % U+2029 PARAGRAPH SEPARATOR
+ \unknownchar \or % U+202A LEFT-TO-RIGHT EMBEDDING
+ \unknownchar \or % U+202B RIGHT-TO-LEFT EMBEDDING
+ \unknownchar \or % U+202C POP DIRECTIONAL FORMATTING
+ \unknownchar \or % U+202D LEFT-TO-RIGHT OVERRIDE
+ \unknownchar \or % U+202E RIGHT-TO-LEFT OVERRIDE
+ \ \or % U+202F NARROW NO-BREAK SPACE
+ \perthousand \or % U+2030 PER MILLE SIGN
+ \unknownchar \or % U+2031 PER TEN THOUSAND SIGN
+ \prime \or % U+2032 PRIME
+ \unic@doubleprime \or % U+2033 DOUBLE PRIME
+ \unic@tripleprime \or % U+2034 TRIPLE PRIME
+ \backprime \or % U+2035 REVERSED PRIME
+ \unic@reverseddoubleprime \or % U+2036 REVERSED DOUBLE PRIME
+ \unic@reversedtripleprime \or % U+2037 REVERSED TRIPLE PRIME
+ \unknownchar \or % U+2038 CARET
+ \guilsingleleft \or % U+2039 SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ \guilsingleright \or % U+203A SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ \unknownchar \or % U+203B REFERENCE MARK
+ \unic@doubleexclamationmark \or % U+203C DOUBLE EXCLAMATION MARK
+ \unknownchar \or % U+203D INTERROBANG
+ \unknownchar \or % U+203E OVERLINE
+ \unknownchar \or % U+203F UNDERTIE
+ \unknownchar \or % U+2040 CHARACTER TIE
+ \unknownchar \or % U+2041 CARET INSERTION POINT
+ \unknownchar \or % U+2042 ASTERISM
+ \unknownchar \or % U+2043 HYPHEN BULLET
+ \unic@fractionslash \or % U+2044 FRACTION SLASH
+ \unknownchar \or % U+2045 LEFT SQUARE BRACKET WITH QUILL
+ \unknownchar \or % U+2046 RIGHT SQUARE BRACKET WITH QUILL
+ \unic@doublequestionmark \or % U+2047 DOUBLE QUESTION MARK
+ \unic@exclamationquestionmark\or % U+2048 QUESTION EXCLAMATION MARK
+ \unic@questionexclamationmark\or % U+2049 EXCLAMATION QUESTION MARK
+ \unknownchar \or % U+204A TIRONIAN SIGN ET
+ \unic@reversedpilcrowsign \or % U+204B REVERSED PILCROW SIGN
+ \unknownchar \or % U+204C BLACK LEFTWARDS BULLET
+ \unknownchar \or % U+204D BLACK RIGHTWARDS BULLET
+ \unic@lowasterisk \or % U+204E LOW ASTERISK
+ \unic@reversedsemicolon \or % U+204F REVERSED SEMICOLON
+ \unknownchar \or % U+2050 CLOSE UP
+ \unknownchar \or % U+2051 TWO ASTERISKS ALIGNED VERTICALLY
+ \unknownchar \or % U+2052 COMMERCIAL MINUS SIGN
+ \unknownchar \or % U+2053 SWUNG DASH
+ \unknownchar \or % U+2054 INVERTED UNDERTIE
+ \unknownchar \or % U+2055 FLOWER PUNCTUATION MARK
+ \unknownchar \or % U+2056 THREE DOT PUNCTUATION
+ \unknownchar \or % U+2057 QUADRUPLE PRIME
+ \unknownchar \or % U+2058 FOUR DOT PUNCTUATION
+ \unknownchar \or % U+2059 FIVE DOT PUNCTUATION
+ \unknownchar \or % U+205A TWO DOT PUNCTUATION
+ \unknownchar \or % U+205B FOUR DOT MARK
+ \unknownchar \or % U+205C DOTTED CROSS
+ \unknownchar \or % U+205D TRICOLON
+ \unknownchar \or % U+205E VERTICAL FOUR DOTS
+ \thickspace \or % U+205F MEDIUM MATHEMATICAL SPACE
+ \relax \or % U+2060 WORD JOINER
+ \unic@functionapplication \or % U+2061 FUNCTION APPLICATION
+ \unic@invisibletimes \or % U+2062 INVISIBLE TIMES
+ \unic@invisibleseparator \or % U+2063 INVISIBLE SEPARATOR (COMMA)
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \relax \or % U+206A INHIBIT SYMMETRIC SWAPPING
+ \relax \or % U+206B ACTIVATE SYMMETRIC SWAPPING
+ \relax \or % U+206C INHIBIT ARABIC FORM SHAPING
+ \relax \or % U+206D ACTIVATE ARABIC FORM SHAPING
+ \relax \or % U+206E NATIONAL DIGIT SHAPES
+ \relax \or % U+206F NOMINAL DIGIT SHAPES
+ \unic@superscriptzero \or % U+2070 SUPERSCRIPT ZERO
+ \unic@superscripti \or % U+2071 SUPERSCRIPT LATIN SMALL LETTER I
+ \unknownchar \or % U+2072 <reserved>
+ \unknownchar \or % U+2073 <reserved>
+ \unic@superscriptfour \or % U+2074 SUPERSCRIPT FOUR
+ \unic@superscriptfive \or % U+2075 SUPERSCRIPT FIVE
+ \unic@superscriptsix \or % U+2076 SUPERSCRIPT SIX
+ \unic@superscriptseven \or % U+2077 SUPERSCRIPT SEVEN
+ \unic@superscripteight \or % U+2078 SUPERSCRIPT EIGHT
+ \unic@superscriptnine \or % U+2079 SUPERSCRIPT NINE
+ \unic@superscriptplus \or % U+207A SUPERSCRIPT PLUS SIGN
+ \unic@superscriptminus \or % U+207B SUPERSCRIPT MINUS
+ \unic@superscriptequals \or % U+207C SUPERSCRIPT EQUALS SIGN
+ \unic@superscriptleft \or % U+207D SUPERSCRIPT LEFT PARENTHESIS
+ \unic@superscriptright \or % U+207E SUPERSCRIPT RIGHT PARENTHESIS
+ \unic@superscriptn \or % U+207F SUBSCRIPT LATIN SMALL LETTER N
+ \unic@subscriptzero \or % U+2080 SUBSCRIPT ZERO
+ \unic@subscriptone \or % U+2081 SUBSCRIPT ONE
+ \unic@subscripttwo \or % U+2082 SUBSCRIPT TWO
+ \unic@subscriptthree \or % U+2083 SUBSCRIPT THREE
+ \unic@subscriptfour \or % U+2084 SUBSCRIPT FOUR
+ \unic@subscriptfive \or % U+2085 SUBSCRIPT FIVE
+ \unic@subscriptsix \or % U+2086 SUBSCRIPT SIX
+ \unic@subscriptseven \or % U+2087 SUBSCRIPT SEVEN
+ \unic@subscripteight \or % U+2088 SUBSCRIPT EIGHT
+ \unic@subscriptnine \or % U+2089 SUBSCRIPT NINE
+ \unic@subscriptplus \or % U+208A SUBSCRIPT PLUS SIGN
+ \unic@subscriptminus \or % U+208B SUBSCRIPT MINUS
+ \unic@subscriptequals \or % U+208C SUBSCRIPT EQUALS SIGN
+ \unic@subscriptleft \or % U+208D SUBSCRIPT LEFT PARENTHESIS
+ \unic@subscriptright \or % U+208E SUBSCRIPT RIGHT PARENTHESIS
+ \unknownchar \or %
+ \unic@subscripta \or % U+2090 LATIN SUBSCRIPT SMALL LETTER A
+ \unic@subscripte \or % U+2091 LATIN SUBSCRIPT SMALL LETTER E
+ \unic@subscripto \or % U+2092 LATIN SUBSCRIPT SMALL LETTER O
+ \unic@subscriptx \or % U+2093 LATIN SUBSCRIPT SMALL LETTER X
+ \unic@subscriptschwa \or % U+2094 LATIN SUBSCRIPT SMALL LETTER SCHWA
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or % U+20A0 EURO-CURRENCY SIGN
+ \unknownchar \or % U+20A1 COLON SIGN
+ \unknownchar \or % U+20A2 CRUZEIRO SIGN
+ \unknownchar \or % U+20A3 FRENCH FRANC SIGN
+ \unknownchar \or % U+20A4 LIRA SIGN
+ \unknownchar \or % U+20A5 MILL SIGN
+ \unknownchar \or % U+20A6 NAIRA SIGN
+ \unknownchar \or % U+20A7 PESETA SIGN
+ \unknownchar \or % U+20A8 RUPEE SIGN
+ \unknownchar \or % U+20A9 WON SIGN
+ \unknownchar \or % U+20AA NEW SHEQEL SIGN
+ \textdong \or % U+20AB DONG SIGN
+ \texteuro \or % U+20AC EURO SIGN
+ \unknownchar \or % U+20AD KIP SIGN
+ \unknownchar \or % U+20AE TUGRIK SIGN
+ \unknownchar \or % U+20AF DRACHMA SIGN
+ \unknownchar \or % U+20B0 GERMAN PENNY SIGN
+ \unknownchar \or % U+20B1 PESO SIGN
+ \unknownchar \or % U+20B2 GUARANI SIGN
+ \unknownchar \or % U+20B3 AUSTRAL SIGN
+ \unknownchar \or % U+20B4 HRYVNIA SIGN
+ \unknownchar \or % U+20B5 CEDI SIGN
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or % U+20D0 COMBINING LEFT HARPOON ABOVE
+ \unknownchar \or % U+20D1 COMBINING RIGHT HARPOON ABOVE
+ \unknownchar \or % U+20D2 COMBINING LONG VERTICAL LINE OVERLAY
+ \unknownchar \or % U+20D3 COMBINING SHORT VERTICAL LINE OVERLAY
+ \unknownchar \or % U+20D4 COMBINING ANTICLOCKWISE ARROW ABOVE
+ \unknownchar \or % U+20D5 COMBINING CLOCKWISE ARROW ABOVE
+ \unknownchar \or % U+20D6 COMBINING LEFT ARROW ABOVE
+ \unknownchar \or % U+20D7 COMBINING RIGHT ARROW ABOVE
+ \unknownchar \or % U+20D8 COMBINING RING OVERLAY
+ \unknownchar \or % U+20D9 COMBINING CLOCKWISE RING OVERLAY
+ \unknownchar \or % U+20DA COMBINING ANTICLOCKWISE RING OVERLAY
+ \unknownchar \or % U+20DB COMBINING THREE DOTS ABOVE
+ \unknownchar \or % U+20DC COMBINING FOUR DOTS ABOVE
+ \unknownchar \or % U+20DD COMBINING ENCLOSING CIRCLE
+ \unknownchar \or % U+20DE COMBINING ENCLOSING SQUARE
+ \unknownchar \or % U+20DF COMBINING ENCLOSING DIAMOND
+ \unknownchar \or % U+20E0 COMBINING ENCLOSING CIRCLE BACKSLASH
+ \unknownchar \or % U+20E1 COMBINING LEFT RIGHT ARROW ABOVE
+ \unknownchar \or % U+20E2 COMBINING ENCLOSING SCREEN
+ \unknownchar \or % U+20E3 COMBINING ENCLOSING KEYCAP
+ \unknownchar \or % U+20E4 COMBINING ENCLOSING UPWARD POINTING TRIANGLE
+ \unknownchar \or % U+20E5 COMBINING REVERSE SOLIDUS OVERLAY
+ \unknownchar \or % U+20E6 COMBINING DOUBLE VERTICAL STROKE OVERLAY
+ \unknownchar \or % U+20E7 COMBINING ANNUITY SYMBOL
+ \unknownchar \or % U+20E8 COMBINING TRIPLE UNDERDOT
+ \unknownchar \or % U+20E9 COMBINING WIDE BRIDGE ABOVE
+ \unknownchar \or % U+20EA COMBINING LEFTWARDS ARROW OVERLAY
+ \unknownchar \or % U+20EB COMBINING LONG DOUBLE SOLIDUS OVERLAY
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \or %
+ \unknownchar \else %
+ \unknownchar \fi
\stopunicodevector
\protect \endinput
diff --git a/tex/context/base/unic-033.tex b/tex/context/base/unic-033.tex
index 632285a0e..91311a029 100644
--- a/tex/context/base/unic-033.tex
+++ b/tex/context/base/unic-033.tex
@@ -1,9 +1,9 @@
%D \module
%D [ file=unic-033,
-%D version=2005.06.11,
+%D version=2006.03.29,
%D title=\CONTEXT\ \UNICODE\ Macros,
%D subtitle=Vector 33,
-%D author={Nikolai Weibull \& Hans Hagen},
+%D author={Nikolai Weibull \& Hans Hagen \& Taco Hoekwater},
%D date=\currentdate,
%D copyright={PRAGMA / Nikolai Weibull}]
@@ -11,119 +11,263 @@
\startunicodevector 33
\expandafter\strippedcsname
- \ifcase\numexpr#1-144\relax
- \leftarrow \or % LEFTWARDS ARROW
- \uparrow \or % UPWARDS ARROW
- \rightarrow \or % RIGHTWARDS ARROW
- \downarrow \or % DOWNWARDS ARROW
- \leftrightarrow \or % LEFT RIGHT ARROW
- \updownarrow \or % UP DOWN ARROW
- \nwarrow \or % NORTH WEST ARROW
- \nearrow \or % NORTH EAST ARROW
- \searrow \or % SOUTH EAST ARROW
- \swarrow \or % SOUTH WEST ARROW
- \nleftarrow \or % LEFTWARDS ARROW WITH STROKE
- \nrightarrow \or % RIGHTWARDS ARROW WITH STROKE
- \unknownchar \or % LEFTWARDS WAVE ARROW
- \unknownchar \or % RIGHTWARDS WAVE ARROW
- \twoheadedleftarrow \or % LEFTWARDS TWO HEADED ARROW
- \unknownchar \or % UPWARDS TWO HEADED ARROW
- \twoheadedrightarrow \or % RIGHTWARDS TWO HEADED ARROW
- \unknownchar \or % DOWNWARDS TWO HEADED ARROW
- \leftarrowtail \or % LEFTWARDS ARROW WITH TAIL
- \rightarrowtail \or % RIGHTWARDS ARROW WITH TAIL
- \mapsfrom \or % LEFTWARDS ARROW FROM BAR
- \unknownchar \or % UPWARDS ARROW FROM BAR
- \mapsto \or % RIGHTWARDS ARROW FROM BAR
- \unknownchar \or % DOWNWARDS ARROW FROM BAR
- \unknownchar \or % UP DOWN ARROW WITH BASE
- \hookleftarrow \or % LEFTWARDS ARROW WITH HOOK
- \hookrightarrow \or % RIGHTWARDS ARROW WITH HOOK
- \loopleftarrow \or % LEFTWARDS ARROW WITH LOOP
- \looprightarrow \or % RIGHTWARDS ARROW WITH LOOP
- \unknownchar \or % LEFT RIGHT WAVE ARROW
- \nleftrightarrow \or % LEFT RIGHT ARROW WITH STROKE
- \lightning \or % DOWNWARDS ZIGZAG ARROW
- \Lsh \or % UPWARDS ARROW WITH TIP LEFTWARDS
- \Rsh \or % UPWARDS ARROW WITH TIP RIGHTWARDS
- \unknownchar \or % DOWNWARDS ARROW WITH TIP LEFTWARDS
- \unknownchar \or % DOWNWARDS ARROW WITH TIP RIGHTWARDS
- \unknownchar \or % RIGHTWARDS ARROW WITH CORNER DOWNWARDS
- \unknownchar \or % DOWNWARDS ARROW WITH CORNER LEFTWARDS
- \curveleftarrow \or % ANTICLOCKWISE TOP SEMICIRCLE ARROW
- \curverightarrow \or % CLOCKWISE TOP SEMICIRCLE ARROW
- \unknownchar \or % NORTH WEST ARROW TO LONG BAR
- \unknownchar \or % LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR
- \circlearrowleft \or % ANTICLOCKWISE OPEN CIRCLE ARROW
- \circlearrowright \or % CLOCKWISE OPEN CIRCLE ARROW
- \leftharpoonup \or % LEFTWARDS HARPOON WITH BARB UPWARDS
- \leftharpoondown \or % LEFTWARDS HARPOON WITH BARB DOWNWARDS
- \upharpoonright \or % UPWARDS HARPOON WITH BARB RIGHTWARDS
- \upharpoonleft \or % UPWARDS HARPOON WITH BARB LEFTWARDS
- \rightharpoonup \or % RIGHTWARDS HARPOON WITH BARB UPWARDS
- \rightharpoondown \or % RIGHTWARDS HARPOON WITH BARB DOWNWARDS
- \downharpoonright \or % DOWNWARDS HARPOON WITH BARB RIGHTWARDS
- \downharpoonleft \or % DOWNWARDS HARPOON WITH BARB LEFTWARDS
- \rightleftarrows \or % RIGHTWARDS ARROW OVER LEFTWARDS ARROW
- \unknownchar \or % UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW
- \leftrightarrows \or % LEFTWARDS ARROW OVER RIGHTWARDS ARROW
- \leftleftarrows \or % LEFTWARDS PAIRED ARROWS
- \upuparrows \or % UPWARDS PAIRED ARROWS
- \rightrightarrows \or % RIGHTWARDS PAIRED ARROWS
- \downdownarrows \or % DOWNWARDS PAIRED ARROWS
- \leftrightharpoons \or % LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON
- \rightleftharpoons \or % RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
- \nLeftarrow \or % LEFTWARDS DOUBLE ARROW WITH STROKE
- \nLeftrightarrow \or % LEFT RIGHT DOUBLE ARROW WITH STROKE
- \nRightarrow \or % RIGHTWARDS DOUBLE ARROW WITH STROKE
- \Leftarrow \or % LEFTWARDS DOUBLE ARROW
- \Uparrow \or % UPWARDS DOUBLE ARROW
- \Rightarrow \or % RIGHTWARDS DOUBLE ARROW
- \Downarrow \or % DOWNWARDS DOUBLE ARROW
- \Leftrightarrow \or % LEFT RIGHT DOUBLE ARROW
- \Updownarrow \or % UP DOWN DOUBLE ARROW
- \unknownchar \or % NORTH WEST DOUBLE ARROW
- \unknownchar \or % NORTH EAST DOUBLE ARROW
- \unknownchar \or % SOUTH EAST DOUBLE ARROW
- \unknownchar \or % SOUTH WEST DOUBLE ARROW
- \Lleftarrow \or % LEFTWARDS TRIPLE ARROW
- \unknownchar \or % RIGHTWARDS TRIPLE ARROW
- \leftsquidarrow \or % LEFTWARDS SQUIGGLE ARROW
- \rightsquidarrow \or % RIGHTWARDS SQUIGGLE ARROW
- \unknownchar \or % UPWARDS ARROW WITH DOUBLE STROKE
- \unknownchar \or % DOWNWARDS ARROW WITH DOUBLE STROKE
- \dashleftarrow \or % LEFTWARDS DASHED ARROW
- \unknownchar \or % UPWARDS DASHED ARROW
- \dashrightarrow \or % RIGHTWARDS DASHED ARROW
- \unknownchar \or % DOWNWARDS DASHED ARROW
- \unic@leftarrowtobar \or % LEFTWARDS ARROW TO BAR
- \unknownchar \or % RIGHTWARDS ARROW TO BAR
- \unknownchar \or % LEFTWARDS WHITE ARROW
- \unknownchar \or % UPWARDS WHITE ARROW
- \unknownchar \or % RIGHTWARDS WHITE ARROW
- \unknownchar \or % DOWNWARDS WHITE ARROW
- \unknownchar \or % UPWARDS WHITE ARROW FROM BAR
- \unknownchar \or % UPWARDS WHITE ARROW ON PEDESTAL
- \unknownchar \or % UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR
- \unknownchar \or % UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR
- \unknownchar \or % UPWARDS WHITE DOUBLE ARROW
- \unknownchar \or % UPWARDS WHITE DOUBLE ARROW ON PEDESTAL
- \unknownchar \or % RIGHTWARDS WHITE ARROW FROM WALL
- \unknownchar \or % NORTH WEST ARROW TO CORNER
- \unknownchar \or % SOUTH EAST ARROW TO CORNER
- \unknownchar \or % UP DOWN WHITE ARROW
- \unknownchar \or % RIGHT ARROW WITH SMALL CIRCLE
- \unknownchar \or % DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW
- \unknownchar \or % THREE RIGHTWARDS ARROWS
- \unknownchar \or % LEFTWARDS ARROW WITH VERTICAL STROKE
- \unknownchar \or % RIGHTWARDS ARROW WITH VERTICAL STROKE
- \unknownchar \or % LEFT RIGHT ARROW WITH VERTICAL STROKE
- \unknownchar \or % LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE
- \unknownchar \or % RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE
- \unknownchar \or % LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE
- \leftarrowtriangle \or % LEFTWARDS OPEN-HEADED ARROW
- \rightarrowtriangle \or % RIGHTWARDS OPEN-HEADED ARROW
- \leftrightarrowtriangle\else % LEFT RIGHT OPEN-HEADED ARROW
+ \ifcase\numexpr#1\relax
+ \unic@accountof \or % 2100 ACCOUNT OF
+ \unic@addressedtothesubject \or % 2101 ADDRESSED TO THE SUBJECT
+ \unic@doublestruckC \or % 2102 DOUBLE-STRUCK CAPITAL C
+ \unic@degreecelsius \or % 2103 DEGREE CELSIUS
+ \unic@centrelinesymbol \or % 2104 CENTRE LINE SYMBOL
+ \unic@careof \or % 2105 CARE OF
+ \unic@cadauna \or % 2106 CADA UNA
+ \unic@eulerconstant \or % 2107 EULER CONSTANT
+ \unic@scruple \or % 2108 SCRUPLE
+ \unic@degreefahrenheit \or % 2109 DEGREE FAHRENHEIT
+ \unic@scriptg \or % 210A SCRIPT SMALL G
+ \unic@scriptH \or % 210B SCRIPT CAPITAL H
+ \unic@blackletterH \or % 210C BLACK-LETTER CAPITAL H
+ \unic@doublestruckH \or % 210D DOUBLE-STRUCK CAPITAL H
+ \unic@planckconstant \or % 210E PLANCK CONSTANT
+ \unic@planckconstantovertwopi \or % 210F PLANCK CONSTANT OVER TWO PI
+ \unic@scriptI \or % 2110 SCRIPT CAPITAL I
+ \unic@blackletterI \or % 2111 BLACK-LETTER CAPITAL I
+ \unic@scriptL \or % 2112 SCRIPT CAPITAL L
+ \unic@scriptl \or % 2113 SCRIPT SMALL L
+ \unic@lbbarsymbol \or % 2114 L B BAR SYMBOL
+ \unic@doublestruckN \or % 2115 DOUBLE-STRUCK CAPITAL N
+ \unic@numerosign \or % 2116 NUMERO SIGN
+ \unic@soundrecordingcopyright \or % 2117 SOUND RECORDING COPYRIGHT
+ \unic@scriptP \or % 2118 SCRIPT CAPITAL P
+ \unic@doublestruckP \or % 2119 DOUBLE-STRUCK CAPITAL P
+ \unic@doublestruckQ \or % 211A DOUBLE-STRUCK CAPITAL Q
+ \unic@scriptR \or % 211B SCRIPT CAPITAL R
+ \unic@blackletterR \or % 211C BLACK-LETTER CAPITAL R
+ \unic@doublestruckR \or % 211D DOUBLE-STRUCK CAPITAL R
+ \unic@prescriptiontake \or % 211E PRESCRIPTION TAKE
+ \unic@response \or % 211F RESPONSE
+ \unic@servicemark \or % 2120 SERVICE MARK
+ \unic@telephonesign \or % 2121 TELEPHONE SIGN
+ \unic@trademarksign \or % 2122 TRADE MARK SIGN
+ \unic@versickle \or % 2123 VERSICLE
+ \unic@doublestruckZ \or % 2124 DOUBLE-STRUCK CAPITAL Z
+ \unic@ouncesign \or % 2125 OUNCE SIGN
+ \unic@ohmsign \or % 2126 OHM SIGN
+ \unic@invertedohmsign \or % 2127 INVERTED OHM SIGN
+ \unic@blackletterZ \or % 2128 BLACK-LETTER CAPITAL Z
+ \unic@turnedgreekletteriota \or % 2129 TURNED GREEK SMALL LETTER IOTA
+ \unic@kelvinsign \or % 212A KELVIN SIGN
+ \unic@angstromsign \or % 212B ANGSTROM SIGN
+ \unic@scriptB \or % 212C SCRIPT CAPITAL B
+ \unic@blackletterC \or % 212D BLACK-LETTER CAPITAL C
+ \unic@estimatedsymbol \or % 212E ESTIMATED SYMBOL
+ \unic@scripte \or % 212F SCRIPT SMALL E
+ \unic@scriptE \or % 2130 SCRIPT CAPITAL E
+ \unic@scriptF \or % 2131 SCRIPT CAPITAL F
+ \unic@turnedF \or % 2132 TURNED CAPITAL F
+ \unic@scriptM \or % 2133 SCRIPT CAPITAL M
+ \unic@scripto \or % 2134 SCRIPT SMALL O
+ \aleph \or % 2135 ALEF SYMBOL
+ \beth \or % 2136 BET SYMBOL
+ \gimel \or % 2137 GIMEL SYMBOL
+ \daleth \or % 2138 DALET SYMBOL
+ \unic@informationsource \or % 2139 INFORMATION SOURCE
+ \unic@rotatedQ \or % 213A ROTATED CAPITAL Q
+ \unic@facsimilesign \or % 213B FACSIMILE SIGN
+ \unic@doublestruckpi \or % 213C DOUBLE-STRUCK SMALL PI
+ \unic@doublestruckgamma \or % 213D DOUBLE-STRUCK SMALL GAMMA
+ \unic@doublestruckGamma \or % 213E DOUBLE-STRUCK CAPITAL GAMMA
+ \unic@doublestruckPi \or % 213F DOUBLE-STRUCK CAPITAL PI
+ \unic@doublestrucknarysummation \or % 2140 DOUBLE-STRUCK N-ARY SUMMATION
+ \unic@turnedsansserifG \or % 2141 TURNED SANS-SERIF CAPITAL G
+ \unic@turnedsansserifL \or % 2142 TURNED SANS-SERIF CAPITAL L
+ \unic@reversedsansserifL \or % 2143 REVERSED SANS-SERIF CAPITAL L
+ \unic@turnedsansserifY \or % 2144 TURNED SANS-SERIF CAPITAL Y
+ \unic@doublestruckitalicD \or % 2145 DOUBLE-STRUCK ITALIC CAPITAL D
+ \unic@doublestruckitalicd \or % 2146 DOUBLE-STRUCK ITALIC SMALL D
+ \unic@doublestruckitalice \or % 2147 DOUBLE-STRUCK ITALIC SMALL E
+ \unic@doublestruckitalici \or % 2148 DOUBLE-STRUCK ITALIC SMALL I
+ \unic@doublestruckitalicj \or % 2149 DOUBLE-STRUCK ITALIC SMALL J
+ \unic@propertyline \or % 214A PROPERTY LINE
+ \unic@turnedampersand \or % 214B TURNED AMPERSAND
+ \unic@persign \or % 214C PER SIGN
+ \unknownchar \or % 214D
+ \unknownchar \or % 214E
+ \unknownchar \or % 214F
+ \unknownchar \or % 2150
+ \unknownchar \or % 2151
+ \unknownchar \or % 2152
+ \unic@fractiononethird \or % 2153 VULGAR FRACTION ONE THIRD
+ \unic@fractiontwothirds \or % 2154 VULGAR FRACTION TWO THIRDS
+ \unic@fractiononefifth \or % 2155 VULGAR FRACTION ONE FIFTH
+ \unic@fractiontwofifths \or % 2156 VULGAR FRACTION TWO FIFTHS
+ \unic@fractionthreefifths \or % 2157 VULGAR FRACTION THREE FIFTHS
+ \unic@fractionfourfifths \or % 2158 VULGAR FRACTION FOUR FIFTHS
+ \unic@fractiononesixth \or % 2159 VULGAR FRACTION ONE SIXTH
+ \unic@fractionfivesixths \or % 215A VULGAR FRACTION FIVE SIXTHS
+ \unic@fractiononeeighth \or % 215B VULGAR FRACTION ONE EIGHTH
+ \unic@fractionthreeeighths \or % 215C VULGAR FRACTION THREE EIGHTHS
+ \unic@fractionfiveeighths \or % 215D VULGAR FRACTION FIVE EIGHTHS
+ \unic@fractionseveneighths \or % 215E VULGAR FRACTION SEVEN EIGHTHS
+ \unic@fractionnumeratorone \or % 215F FRACTION NUMERATOR ONE
+ \unic@romannumeralOne \or % 2160 ROMAN NUMERAL ONE
+ \unic@romannumeralTwo \or % 2161 ROMAN NUMERAL TWO
+ \unic@romannumeralThree \or % 2162 ROMAN NUMERAL THREE
+ \unic@romannumeralFour \or % 2163 ROMAN NUMERAL FOUR
+ \unic@romannumeralFive \or % 2164 ROMAN NUMERAL FIVE
+ \unic@romannumeralSix \or % 2165 ROMAN NUMERAL SIX
+ \unic@romannumeralSeven \or % 2166 ROMAN NUMERAL SEVEN
+ \unic@romannumeralEight \or % 2167 ROMAN NUMERAL EIGHT
+ \unic@romannumeralNine \or % 2168 ROMAN NUMERAL NINE
+ \unic@romannumeralTen \or % 2169 ROMAN NUMERAL TEN
+ \unic@romannumeralEleven \or % 216A ROMAN NUMERAL ELEVEN
+ \unic@romannumeralTwelve \or % 216B ROMAN NUMERAL TWELVE
+ \unic@romannumeralFifty \or % 216C ROMAN NUMERAL FIFTY
+ \unic@romannumeralOnehundred \or % 216D ROMAN NUMERAL ONE HUNDRED
+ \unic@romannumeralFivehundred \or % 216E ROMAN NUMERAL FIVE HUNDRED
+ \unic@romannumeralOnethousand \or % 216F ROMAN NUMERAL ONE THOUSAND
+ \unic@romannumeralone \or % 2170 SMALL ROMAN NUMERAL ONE
+ \unic@romannumeraltwo \or % 2171 SMALL ROMAN NUMERAL TWO
+ \unic@romannumeralthree \or % 2172 SMALL ROMAN NUMERAL THREE
+ \unic@romannumeralfour \or % 2173 SMALL ROMAN NUMERAL FOUR
+ \unic@romannumeralfive \or % 2174 SMALL ROMAN NUMERAL FIVE
+ \unic@romannumeralsix \or % 2175 SMALL ROMAN NUMERAL SIX
+ \unic@romannumeralseven \or % 2176 SMALL ROMAN NUMERAL SEVEN
+ \unic@romannumeraleight \or % 2177 SMALL ROMAN NUMERAL EIGHT
+ \unic@romannumeralnine \or % 2178 SMALL ROMAN NUMERAL NINE
+ \unic@romannumeralten \or % 2179 SMALL ROMAN NUMERAL TEN
+ \unic@romannumeraleleven \or % 217A SMALL ROMAN NUMERAL ELEVEN
+ \unic@romannumeraltwelve \or % 217B SMALL ROMAN NUMERAL TWELVE
+ \unic@romannumeralfifty \or % 217C SMALL ROMAN NUMERAL FIFTY
+ \unic@romannumeralonehundred \or % 217D SMALL ROMAN NUMERAL ONE HUNDRED
+ \unic@romannumeralfivehundred \or % 217E SMALL ROMAN NUMERAL FIVE HUNDRED
+ \unic@romannumeralonethousand \or % 217F SMALL ROMAN NUMERAL ONE THOUSAND
+ \unic@romannumeralonethousandCD \or % 2180 ROMAN NUMERAL ONE THOUSAND C D
+ \unic@romannumeralfivethousand \or % 2181 ROMAN NUMERAL FIVE THOUSAND
+ \unic@romannumeraltenthousand \or % 2182 ROMAN NUMERAL TEN THOUSAND
+ \unic@romannumeralreversedonehundred\or % 2183 ROMAN NUMERAL REVERSED ONE HUNDRED
+ \unknownchar \or % 2184
+ \unknownchar \or % 2185
+ \unknownchar \or % 2186
+ \unknownchar \or % 2187
+ \unknownchar \or % 2188
+ \unknownchar \or % 2189
+ \unknownchar \or % 218A
+ \unknownchar \or % 218B
+ \unknownchar \or % 218C
+ \unknownchar \or % 218D
+ \unknownchar \or % 218E
+ \unknownchar \or % 218F
+ \leftarrow \or % LEFTWARDS ARROW
+ \uparrow \or % UPWARDS ARROW
+ \rightarrow \or % RIGHTWARDS ARROW
+ \downarrow \or % DOWNWARDS ARROW
+ \leftrightarrow \or % LEFT RIGHT ARROW
+ \updownarrow \or % UP DOWN ARROW
+ \nwarrow \or % NORTH WEST ARROW
+ \nearrow \or % NORTH EAST ARROW
+ \searrow \or % SOUTH EAST ARROW
+ \swarrow \or % SOUTH WEST ARROW
+ \nleftarrow \or % LEFTWARDS ARROW WITH STROKE
+ \nrightarrow \or % RIGHTWARDS ARROW WITH STROKE
+ \unknownchar \or % LEFTWARDS WAVE ARROW
+ \unknownchar \or % RIGHTWARDS WAVE ARROW
+ \twoheadedleftarrow \or % LEFTWARDS TWO HEADED ARROW
+ \unknownchar \or % UPWARDS TWO HEADED ARROW
+ \twoheadedrightarrow \or % RIGHTWARDS TWO HEADED ARROW
+ \unknownchar \or % DOWNWARDS TWO HEADED ARROW
+ \leftarrowtail \or % LEFTWARDS ARROW WITH TAIL
+ \rightarrowtail \or % RIGHTWARDS ARROW WITH TAIL
+ \mapsfrom \or % LEFTWARDS ARROW FROM BAR
+ \unknownchar \or % UPWARDS ARROW FROM BAR
+ \mapsto \or % RIGHTWARDS ARROW FROM BAR
+ \unknownchar \or % DOWNWARDS ARROW FROM BAR
+ \unknownchar \or % UP DOWN ARROW WITH BASE
+ \hookleftarrow \or % LEFTWARDS ARROW WITH HOOK
+ \hookrightarrow \or % RIGHTWARDS ARROW WITH HOOK
+ \loopleftarrow \or % LEFTWARDS ARROW WITH LOOP
+ \looprightarrow \or % RIGHTWARDS ARROW WITH LOOP
+ \unknownchar \or % LEFT RIGHT WAVE ARROW
+ \nleftrightarrow \or % LEFT RIGHT ARROW WITH STROKE
+ \lightning \or % DOWNWARDS ZIGZAG ARROW
+ \Lsh \or % UPWARDS ARROW WITH TIP LEFTWARDS
+ \Rsh \or % UPWARDS ARROW WITH TIP RIGHTWARDS
+ \unknownchar \or % DOWNWARDS ARROW WITH TIP LEFTWARDS
+ \unknownchar \or % DOWNWARDS ARROW WITH TIP RIGHTWARDS
+ \unknownchar \or % RIGHTWARDS ARROW WITH CORNER DOWNWARDS
+ \unknownchar \or % DOWNWARDS ARROW WITH CORNER LEFTWARDS
+ \curveleftarrow \or % ANTICLOCKWISE TOP SEMICIRCLE ARROW
+ \curverightarrow \or % CLOCKWISE TOP SEMICIRCLE ARROW
+ \unknownchar \or % NORTH WEST ARROW TO LONG BAR
+ \unknownchar \or % LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR
+ \circlearrowleft \or % ANTICLOCKWISE OPEN CIRCLE ARROW
+ \circlearrowright \or % CLOCKWISE OPEN CIRCLE ARROW
+ \leftharpoonup \or % LEFTWARDS HARPOON WITH BARB UPWARDS
+ \leftharpoondown \or % LEFTWARDS HARPOON WITH BARB DOWNWARDS
+ \upharpoonright \or % UPWARDS HARPOON WITH BARB RIGHTWARDS
+ \upharpoonleft \or % UPWARDS HARPOON WITH BARB LEFTWARDS
+ \rightharpoonup \or % RIGHTWARDS HARPOON WITH BARB UPWARDS
+ \rightharpoondown \or % RIGHTWARDS HARPOON WITH BARB DOWNWARDS
+ \downharpoonright \or % DOWNWARDS HARPOON WITH BARB RIGHTWARDS
+ \downharpoonleft \or % DOWNWARDS HARPOON WITH BARB LEFTWARDS
+ \rightleftarrows \or % RIGHTWARDS ARROW OVER LEFTWARDS ARROW
+ \unknownchar \or % UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW
+ \leftrightarrows \or % LEFTWARDS ARROW OVER RIGHTWARDS ARROW
+ \leftleftarrows \or % LEFTWARDS PAIRED ARROWS
+ \upuparrows \or % UPWARDS PAIRED ARROWS
+ \rightrightarrows \or % RIGHTWARDS PAIRED ARROWS
+ \downdownarrows \or % DOWNWARDS PAIRED ARROWS
+ \leftrightharpoons \or % LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON
+ \rightleftharpoons \or % RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
+ \nLeftarrow \or % LEFTWARDS DOUBLE ARROW WITH STROKE
+ \nLeftrightarrow \or % LEFT RIGHT DOUBLE ARROW WITH STROKE
+ \nRightarrow \or % RIGHTWARDS DOUBLE ARROW WITH STROKE
+ \Leftarrow \or % LEFTWARDS DOUBLE ARROW
+ \Uparrow \or % UPWARDS DOUBLE ARROW
+ \Rightarrow \or % RIGHTWARDS DOUBLE ARROW
+ \Downarrow \or % DOWNWARDS DOUBLE ARROW
+ \Leftrightarrow \or % LEFT RIGHT DOUBLE ARROW
+ \Updownarrow \or % UP DOWN DOUBLE ARROW
+ \unknownchar \or % NORTH WEST DOUBLE ARROW
+ \unknownchar \or % NORTH EAST DOUBLE ARROW
+ \unknownchar \or % SOUTH EAST DOUBLE ARROW
+ \unknownchar \or % SOUTH WEST DOUBLE ARROW
+ \Lleftarrow \or % LEFTWARDS TRIPLE ARROW
+ \unknownchar \or % RIGHTWARDS TRIPLE ARROW
+ \leftsquidarrow \or % LEFTWARDS SQUIGGLE ARROW
+ \rightsquidarrow \or % RIGHTWARDS SQUIGGLE ARROW
+ \unknownchar \or % UPWARDS ARROW WITH DOUBLE STROKE
+ \unknownchar \or % DOWNWARDS ARROW WITH DOUBLE STROKE
+ \dashleftarrow \or % LEFTWARDS DASHED ARROW
+ \unknownchar \or % UPWARDS DASHED ARROW
+ \dashrightarrow \or % RIGHTWARDS DASHED ARROW
+ \unknownchar \or % DOWNWARDS DASHED ARROW
+ \unic@leftarrowtobar \or % LEFTWARDS ARROW TO BAR
+ \unknownchar \or % RIGHTWARDS ARROW TO BAR
+ \unknownchar \or % LEFTWARDS WHITE ARROW
+ \unknownchar \or % UPWARDS WHITE ARROW
+ \unknownchar \or % RIGHTWARDS WHITE ARROW
+ \unknownchar \or % DOWNWARDS WHITE ARROW
+ \unknownchar \or % UPWARDS WHITE ARROW FROM BAR
+ \unknownchar \or % UPWARDS WHITE ARROW ON PEDESTAL
+ \unknownchar \or % UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR
+ \unknownchar \or % UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR
+ \unknownchar \or % UPWARDS WHITE DOUBLE ARROW
+ \unknownchar \or % UPWARDS WHITE DOUBLE ARROW ON PEDESTAL
+ \unknownchar \or % RIGHTWARDS WHITE ARROW FROM WALL
+ \unknownchar \or % NORTH WEST ARROW TO CORNER
+ \unknownchar \or % SOUTH EAST ARROW TO CORNER
+ \unknownchar \or % UP DOWN WHITE ARROW
+ \unknownchar \or % RIGHT ARROW WITH SMALL CIRCLE
+ \unknownchar \or % DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW
+ \unknownchar \or % THREE RIGHTWARDS ARROWS
+ \unknownchar \or % LEFTWARDS ARROW WITH VERTICAL STROKE
+ \unknownchar \or % RIGHTWARDS ARROW WITH VERTICAL STROKE
+ \unknownchar \or % LEFT RIGHT ARROW WITH VERTICAL STROKE
+ \unknownchar \or % LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE
+ \unknownchar \or % RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE
+ \unknownchar \or % LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE
+ \leftarrowtriangle \or % LEFTWARDS OPEN-HEADED ARROW
+ \rightarrowtriangle \or % RIGHTWARDS OPEN-HEADED ARROW
+ \leftrightarrowtriangle \else % LEFT RIGHT OPEN-HEADED ARROW
\unknowncharacter
\fi
\stopunicodevector
diff --git a/tex/context/base/unic-ini.tex b/tex/context/base/unic-ini.tex
index e4fea8739..cafd435c6 100644
--- a/tex/context/base/unic-ini.tex
+++ b/tex/context/base/unic-ini.tex
@@ -743,7 +743,7 @@
%D Well, let's at least preload a few familiar ones. Here we
%D also load the \UTF\ regime.
-\useunicodevector[0,1,2,3,4,5,30,32,33,34,39]
+\useunicodevector[0,1,2,3,4,5,30,32,33,34,37,39]
\useunicodevector[cjk]
\useregime[utf]
diff --git a/tex/context/base/verb-ini.tex b/tex/context/base/verb-ini.tex
index e7d239e2a..63f924887 100644
--- a/tex/context/base/verb-ini.tex
+++ b/tex/context/base/verb-ini.tex
@@ -993,7 +993,7 @@
%
-\def\processverbatimline#1{#1} % remove the fake grouping
+\long\def\processverbatimline#1{#1} % remove the fake grouping
%D \macros
%D {processfileverbatim}
diff --git a/tex/context/base/xtag-ext.tex b/tex/context/base/xtag-ext.tex
index 8a67c0886..f20cc05a0 100644
--- a/tex/context/base/xtag-ext.tex
+++ b/tex/context/base/xtag-ext.tex
@@ -285,6 +285,33 @@
\egroup
+% \defineXMLcommand
+% [whatever]
+% [test=unknown]
+% {\XMLop{test}}
+%
+% \startXMLdata
+% <whatever test="{\bf test}"/>
+% \stopXMLdata
+%
+% \defineXMLcommand
+% [whatever]
+% [test=unknown]
+% {\defXMLtex\SomethingTex{\XMLop{test}}%
+% \SomethingTex}
+%
+% \startXMLdata
+% <whatever test="{\bf test}"/>
+% \stopXMLdata
+
+\def\defXMLtex#1#2% the appended space will go away when
+ {\begingroup % \scantokens is fixed
+ \disableXML
+ \everyeof{\noexpand}% br's hack
+ \edef\ascii{#2}%
+ \edef\ascii{\scantokens\expandafter{\ascii}}% space appended
+ \expandafter\endgroup\expandafter\def\expandafter#1\expandafter{\ascii}}
+
\def\potentialXMLentity#1%
{\doifXMLentityelse{#1}{\getXMLentity{#1}}{#1}}
diff --git a/tex/context/base/xtag-ini.tex b/tex/context/base/xtag-ini.tex
index 48f0c8c6f..7579898fa 100644
--- a/tex/context/base/xtag-ini.tex
+++ b/tex/context/base/xtag-ini.tex
@@ -2880,6 +2880,7 @@
\gdef\flattenXMLcontent#1% we need taco's 'over one group'
{\begingroup
+ \keeputfcharacters
\def<##1>{}%
\def&##1;{##1}%
\edef\flattenedXMLcontent{#1}%
diff --git a/tex/context/base/xtag-mmp.tex b/tex/context/base/xtag-mmp.tex
index ebb136551..b733644e5 100644
--- a/tex/context/base/xtag-mmp.tex
+++ b/tex/context/base/xtag-mmp.tex
@@ -492,29 +492,16 @@
\def\pMULTISCRIPTmmlPRE#1#2#3#4%
{\ifdone
\ifodd\scratchcounter
- ^{\naturalxmlr{#1}{#2}{#3}{#4}}{}%
- \else
_{\naturalxmlr{#1}{#2}{#3}{#4}}%
+ \else
+ ^{\naturalxmlr{#1}{#2}{#3}{#4}}{}%
\fi
\else
\doif{mprescripts/}{#1}{\donetrue{}}% weak, the / here
\fi
- \ifdone \advance\scratchcounter 1 \fi}
-
-\def\pMULTISCRIPTmmlPOST#1#2#3#4%
- {\ifdone
- \ifnum\scratchcounter=0
- \naturalxmlr{#1}{#2}{#3}{#4}%
- \else\ifodd\scratchcounter
- _{\naturalxmlr{#1}{#2}{#3}{#4}}%
- \else
- ^{\naturalxmlr{#1}{#2}{#3}{#4}}{}%
- \fi\fi
- \fi
- \doif{mprescripts/}{#1}{\donefalse}% weak, the / here
- \ifdone \advance\scratchcounter 1 \fi}
+ \ifdone \advance\scratchcounter \plusone \fi}
-\let\pMULTISCRIPTmmlPRE\pMULTISCRIPTmmlPOST
+\let\pMULTISCRIPTmmlPOST\pMULTISCRIPTmmlPRE
\stopXMLmapping
diff --git a/tex/context/base/xtag-pml.tex b/tex/context/base/xtag-pml.tex
index 7371ec165..3300c97ac 100644
--- a/tex/context/base/xtag-pml.tex
+++ b/tex/context/base/xtag-pml.tex
@@ -13,70 +13,70 @@
\writestatus{loading}{Context XML Macros (phys ml)}
-%D This filter runs on top of the mathml and units modules.
+%D This filter runs on top of the mathml and units modules.
-\useXMLfilter[mml,mmp,mmc,unt]
+\useXMLfilter[mml,mmp,mmc]
\defineXMLargument [phys] \doXMLphys
\defineXMLargument [iphys] \doXMLiphys
\defineXMLargument [dphys] \doXMLdphys
-\unprotect
+\unprotect
\unexpanded\def\doXMLphys {\ifhmode\@EA\doXMLiphys\else\@EA\doXMLdphys\fi}
\unexpanded\def\doXMLiphys{\XMLremapdata[mml]{$\ignorespaces}{\unskip$}}
\unexpanded\def\doXMLdphys{\XMLremapdata[mml]{\dostartformula{}}{\dostopformula}}
-\protect
+\protect
\doifnotmode{demo}{\endinput}
\usemodule[units]
-\starttext
+\starttext
\startXMLdata
-<phys>
- <apply> <times/>
+<phys>
+ <apply> <times/>
<cn> 10 </cn>
<ci><unit><Milli/><Sec/><Per/><Square/><Kilo/><Meter/></unit> </ci>
- </apply>
+ </apply>
</phys>
\stopXMLdata
\startXMLdata
-<phys>
- <apply> <divide/>
+<phys>
+ <apply> <divide/>
<cn> 10 </cn>
<ci> <unit><Unit/><Milli/><Sec/><Per/><Square/><Kilo/><Meter/></unit> </ci>
- </apply>
+ </apply>
</phys>
\stopXMLdata
\startXMLdata
-<phys>
- <apply> <times/>
+<phys>
+ <apply> <times/>
<cn> 10 </cn>
<ci> <unit> <Milli/> <Sec/> <Per/> <Square/> <Kilo/> <Meter/> </unit> </ci>
- </apply>
+ </apply>
</phys>
\stopXMLdata
\startXMLdata
-<phys>
- <apply> <times/>
+<phys>
+ <apply> <times/>
<cn> 10 </cn>
<ci> <unit><Milli/><Sec/><Per/><Square/><Kilo/><Meter/></unit> </ci>
- </apply>
+ </apply>
</phys>
\stopXMLdata
\startXMLdata
-<phys>
- <apply> <times/>
+<phys>
+ <apply> <times/>
<cn> 10 </cn>
<ci> <unit> <Milli/> <Sec/> <Per/> <Square/> <Kilo/> <Meter/> </unit> </ci>
- </apply>
+ </apply>
</phys>
\stopXMLdata
diff --git a/tex/context/base/xtag-pmu.tex b/tex/context/base/xtag-pmu.tex
index 425257b49..0b9509f13 100644
--- a/tex/context/base/xtag-pmu.tex
+++ b/tex/context/base/xtag-pmu.tex
@@ -13,7 +13,7 @@
\writestatus{loading}{Context XML Macros (units)}
-%D Quick and dirty in||line units:
+%D Quick and dirty in||line units:
%D
%D \startbuffer
%D <phys>
@@ -21,72 +21,72 @@
%D <cu> <Newton/> <Square/> <Meter/> <Per/> <Sec/> </cu>
%D </phys>
%D \stopbuffer
-%D
+%D
%D \typebuffer \processXMLbuffer
-%D
-%D A more \MATHML||like unit application:
+%D
+%D A more \MATHML||like unit application:
%D
%D \startbuffer
-%D <phys> <apply> <unit/>
-%D <cn> 10 </cn>
+%D <phys> <apply> <unit/>
+%D <cn> 10 </cn>
%D <csymbol> <Square/> <Meter/> <Per/> <Sec/> </csymbol>
-%D </apply> </phys>
+%D </apply> </phys>
%D \stopbuffer
-%D
+%D
%D \typebuffer \processXMLbuffer
-%D
-%D A bit more compact:
+%D
+%D A bit more compact:
%D
%D \startbuffer
-%D <phys> <apply> <unit/>
-%D <cn> 10 </cn>
+%D <phys> <apply> <unit/>
+%D <cn> 10 </cn>
%D <cu> <Square/> <Meter/> <Per/> <Sec/> </cu>
-%D </apply> </phys>
+%D </apply> </phys>
%D \stopbuffer
-%D
+%D
%D \typebuffer \processXMLbuffer
%D
-%D A bit more complicated:
-%D
+%D A bit more complicated:
+%D
%D \startbuffer
-%D <phys> <apply> <unit/>
-%D <apply> <divide/> <ci> a </ci> <cn> 10 </cn> </apply>
+%D <phys> <apply> <unit/>
+%D <apply> <divide/> <ci> a </ci> <cn> 10 </cn> </apply>
%D <cu> <Square/> <Meter/> <Per/> <Sec/> </cu>
-%D </apply> </phys>
+%D </apply> </phys>
%D \stopbuffer
-%D
+%D
%D \typebuffer \processXMLbuffer
-%D
-%D An alternative (equivalent) for \type {</cu>}:
+%D
+%D An alternative (equivalent) for \type {</cu>}:
%D
%D \startbuffer
-%D <phys> <apply> <unit/>
+%D <phys> <apply> <unit/>
%D <cn> 10 </cn> <cunseq> <Square/> <Meter/> <Per/> <Sec/> </cunseq>
-%D </apply> </phys>
+%D </apply> </phys>
%D \stopbuffer
-%D
+%D
%D \typebuffer \processXMLbuffer
\defineXMLsingular [unitmeaning] [label=] \doPMLunitmeaning
-\def\doPMLunitmeaning%
+\def\doPMLunitmeaning
{\expanded{\unitmeaning{\XMLop{label}}}}
-
+
\startXMLmapping [mml]
-\remapXMLsequence [unit] [CPA] \doPMLuseq
-\remapXMLsingular [unit] [CPA] \doPMLunit % #2\empty
+\remapXMLsequence [unit] [CPA] \doPMLuseq
+\remapXMLsingular [unit] [CPA] \doPMLunit % #2\empty
\remapXMLsequence [cunseq] [CPA] \doPMLuseq % #2
-\remapXMLsequence [cu] [CPA] \doPMLuseq % #2
+\remapXMLsequence [cu] [CPA] \doPMLuseq % #2
\newif\ifPMLunit \PMLunittrue
\def\doPMLuseq#1#2{\PMLunittrue\ignorespaces#2\unskip\PMLunitfalse}
-\def\doPMLunit#1#2\empty{\ignorespaces#2\unskip}
+\def\doPMLunit#1#2\empty{\ignorespaces#2\unskip}
\def\handlePMLunit#1{\ifPMLunit\ignorespaces#1\fi\ignorespaces}
-%D All unit commands are remapped in a similar way.
+%D All unit commands are remapped in a similar way.
\remapXMLsingular [Atto] [C] {\handlePMLunit\Atto}
\remapXMLsingular [Femto] [C] {\handlePMLunit\Femto}
@@ -180,9 +180,9 @@
\remapXMLsingular [Promille] [C] {\handlePMLunit\Promille}
\remapXMLsingular [Permille] [C] {\handlePMLunit\Permille}
-\remapXMLsingular [Unit] [C] {\handlePMLunit\Unit}
+\remapXMLsingular [Unit] [C] {\handlePMLunit\Unit}
\remapXMLsingular [NoUnit] [C] {\handlePMLunit\NoUnit}
\stopXMLmapping
-\endinput
+\endinput
diff --git a/tex/context/base/xtag-stk.tex b/tex/context/base/xtag-stk.tex
index a514874cb..1d596766b 100644
--- a/tex/context/base/xtag-stk.tex
+++ b/tex/context/base/xtag-stk.tex
@@ -100,7 +100,7 @@
{\defXMLstackiddata#1\XMLstackid}
\def\showXMLstacknames
- {[\space\dorecurse\XMLstacklevel{\getXMLstackname\recurselevel\space}]}
+ {\hbox{[\space\dorecurse\XMLstacklevel{\getXMLstackname\recurselevel\space}]}}
\def\flushXMLstackfrom#1%
{\dostepwiserecurse{#1}\XMLstacklevel\plusone
@@ -163,4 +163,20 @@
\!!doneatrue
\fi}}}
+\def\XMLcopydata#1#2% to from
+ {\@EA\let\csname\@@XMLdata:#1\@EA\endcsname\csname\@@XMLdata:#2\endcsname}
+\def\XMLcopysave#1#2% to from
+ {\@EA\let\csname\@@XMLsave:#1\@EA\endcsname\csname\@@XMLsave:#2\endcsname}
+
+\def\removeXMLdatafromstack#1%
+ {\dorecurse\XMLstacklevel
+ {\doif{\getXMLstackname\recurselevel}{#1}
+ {\dostepwiserecurse\recurselevel{\numexpr\XMLstacklevel+\minusone}\plusone
+ {\scratchcounter\numexpr\recurselevel+\plusone\relax
+ \@EA\let\csname\@@xmlstack:n:\XMLstackid:\recurselevel\@EA\endcsname\csname\@@xmlstack:n:\XMLstackid:\number\scratchcounter\endcsname
+ \XMLcopysave{\@@xmlstack:t:\XMLstackid:\recurselevel}{\@@xmlstack:t:\XMLstackid:\number\scratchcounter}%
+ \XMLcopysave{\@@xmlstack:d:\XMLstackid:\recurselevel}{\@@xmlstack:d:\XMLstackid:\number\scratchcounter}}%
+ \advance\XMLstacklevel\minusone
+ \exitloop}}}
+
\protect \endinput
diff --git a/tex/context/bib/bibl-ams.tex b/tex/context/bib/bibl-ams.tex
new file mode 100644
index 000000000..1c5a9fd1c
--- /dev/null
+++ b/tex/context/bib/bibl-ams.tex
@@ -0,0 +1,438 @@
+%D \module
+%D [ file=bibl-ams,
+%D version=2005.11.18
+%D title=AMS bibliography style,
+%D subtitle=Publications,
+%D author={Taco Hoekwater, Giuseppe Bilotta},
+%D date=\currentdate,
+%D copyright={Public Domain}]
+%C
+%C Donated to the public domain. Use at your own risk
+
+\unprotect
+
+\setupcite
+ [author,year]
+ [\c!andtext={ and },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
+ \c!lastpubsep={ and },
+ \c!compress=\v!no,
+ \c!inbetween={ },
+ \c!left={(},
+ \c!right={)}]
+
+\setupcite
+ [authoryear]
+ [\c!andtext={ and },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
+ \c!lastpubsep={ and },
+ \c!compress=\v!yes,
+ \c!inbetween={ },
+ \c!left={(},
+ \c!right={)}]
+
+\setupcite
+ [authoryears]
+ [\c!andtext={ and },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
+ \c!lastpubsep={ and },
+ \c!compress=\v!yes,
+ \c!inbetween={, },
+ \c!left={(},
+ \c!right={)}]
+
+\setupcite
+ [key,serial,page,short,type,doi,url]
+ [\c!andtext={ and },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
+ \c!lastpubsep={ and },
+ \c!compress=\v!no,
+ \c!inbetween={ },
+ \c!left={[},
+ \c!right={]}]
+
+\setupcite
+ [num]
+ [\c!andtext={ and },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
+ \c!lastpubsep={ and },
+ \c!compress=\v!yes,
+ \c!inbetween={--},
+ \c!left={[},
+ \c!right={]}]
+
+\gdef\bibalignednumber#1{\hfill[#1]~~}
+
+\setuppublications[%
+ \c!sorttype=,
+ \c!criterium=,
+ \c!refcommand=num,
+ \c!numbercommand=\bibalignednumber,
+ \c!numbering=\v!yes,
+ \c!autohang=\v!yes]
+
+\setuppublicationlist
+ [\c!width=30pt,
+ \c!artauthor=\normalshortauthor,
+ \c!editor=\normalshortauthor,
+ \c!author=\normalshortauthor,
+ \c!namesep={, },
+ \c!lastnamesep={ and },
+ \c!finalnamesep={, and },
+ \c!firstnamesep={ },
+ \c!juniorsep={ },
+ \c!vonsep={ },
+ \c!surnamesep={},
+ \c!authoretallimit=4,
+ \c!editoretallimit=4,
+ \c!artauthoretallimit=4,
+ \c!authoretaldisplay=1,
+ \c!editoretaldisplay=1,
+ \c!artauthoretaldisplay=1,
+ \c!authoretaltext={ {\it et al.\/}},
+ \c!editoretaltext={ {\it et al.\/}},
+ \c!artauthoretaltext={ {\it et al.\/}}]
+
+\def\maybeyear#1{}
+
+\def\etalchar#1{#1}
+
+\def\insertNote#1#2#3{%
+ \begingroup
+ \sfcode`\.=1020
+ \insertnote{#1}{\ifnum\spacefactor=1020 \else .\fi}{#3}%
+ \endgroup
+}
+
+\def\insertEdition#1#2#3{%
+ \begingroup
+ \insertedition{#1}{\doifnumberelse{\csname @@pb@edition\endcsname}{%
+ \ifcase \csname @@pb@edition\endcsname \or st\or nd\or rd\else th\fi
+ }{}#2}{#3}%
+ \endgroup
+}
+
+%D \macros{insertchapter,insertpublisher}
+
+%D Some shortcuts.
+
+% ((#1(type\ |)chapter#2)|#3)
+
+\def\insertchap#1#2#3%
+ {\insertchapter
+ {#1\insertbibtype{}{\ }{chapter\ }}{#2}%
+ {#3}}
+
+\def\insertpublisher#1#2#3%
+ {\insertpubname
+ {#1}{\insertcity
+ {, }
+ {\insertcountry{, }{}{#2}}%
+ {\insertcountry{, }{}{#2}}}%
+ {\insertcity
+ {}{\insertcountry{, }{}{#2}}%
+ {\insertcountry{#1}{#2}{#3}}}%
+ }
+
+% some tricks with page ranges:
+
+\def\insertfirstpage#1#2#3{%
+ \@EA\bibdoifelse
+ \@EA{\csname @@pb@pages\endcsname}%
+ {#1\fixedfirstpage #2}%
+ {#3}%
+}
+
+\def\fixedfirstpage{\expanded{\doifinstringelse{-}{\csname @@pb@pages\endcsname}%
+ {\gobblelastdash\csname @@pb@pages\endcsname-\relax}{\csname @@pb@pages\endcsname}}}
+
+\protected\def\gobblelastdash#1-#2\relax{#1}
+
+\def\fixpp.{\expanded{\doifinstringelse{-}{\csname @@pb@pages\endcsname}{pp.}{p.}}}
+
+\setuppublicationlayout[article]{%
+ \insertartauthors{}{ }{\insertthekey{}{ }{}}%
+ \insertarttitle{\unskip, \bgroup\it }{\/\egroup}{}%
+ \insertjournal{\unskip, \bgroup }{\egroup}{}%
+ \insertvolume{ \bgroup\bf }{\egroup}{}%
+ \insertpubyear{ (}{)}{\unskip}%
+ \insertissue{\unskip, no.~}{}{}%
+ \insertpages{\unskip, }{}{}%
+ \insertNote{ }{.}{}%
+ \insertcomment{}{.}{}%
+}
+
+\newif\ifeditedbook
+\setuppublicationlayout[book]{%
+ \insertauthors{}{ }{\inserteditors{}{, editor%
+ \ifnum\getvalue{editor@num}> 1 s\fi
+ \ \global\editedbooktrue
+ }{\insertthekey{}{. }{}}}%
+ \inserttitle
+ {\unskip, \bgroup\it }%
+ {\/\egroup
+ \ifeditedbook
+ \global\editedbookfalse
+ \insertvolume
+ { Number~}%
+ {\insertseries
+ { in~\bgroup}%
+ {\egroup. }%
+ {\insertcrossref{ in~}{}{. }}}%
+ {\insertseries{ }{.}{} }%
+ \else
+ \insertcrossref
+ {\insertchap{, }{}{}%
+ \insertpages{, \fixpp. }{. }{. }%
+ \insertvolume{Volume~}{ of~}{}%
+ }%
+ {}%
+ {\insertvolume
+ {, volume~}%
+ {\insertseries
+ { of~\bgroup\it}%
+ {\egroup}
+ {}}
+ {}%
+ \insertchap{, }{}{}%
+ \insertpages{, p. }{. }{. }%
+ }%
+ \fi}%
+ { }%
+ \insertpubyear{(%
+ \insertpublisher
+ {}%
+ {, }%
+ {}%
+ }{)\insertEdition{, }{ ed. }{. }}{\unskip.}%
+% \insertpages{}{p. }{}%
+ \insertNote{ }{.}{}%
+}
+
+\setuppublicationlayout[inbook]{%
+ \insertauthors{}{}{\inserteditors{}{, editor%
+ \ifnum\getvalue{editor@num}> 1 s\fi
+ \ \global\editedbooktrue
+ }{\insertthekey{}{. }{}}}%
+ \inserttitle
+ {, \bgroup\it }%
+ {\/\egroup
+ \insertpubyear
+ { (%
+ \insertpubname{}{\insertcity{, }{, }{}}{}%
+ }
+ {)\insertEdition{, }{ ed.}{}}{}%
+ \ifeditedbook
+ \global\editedbookfalse
+ \insertvolume
+ { vol.~}%
+ {\insertseries
+ { in~\bgroup}%
+ {\egroup. }%
+ {\insertcrossref{ in~}{}{. }}}%
+ {\insertseries{ }{.}{} }%
+ \else
+ \insertcrossref
+ {\insertchap{, }{}{}%
+ \insertpages{, p. }{. }{. }%
+ \insertvolume{Volume~}{ of~}{}%
+ }%
+ {}%
+ {\insertvolume
+ {, vol.~}%
+ {\insertseries
+ { of~\bgroup\it}%
+ {\egroup}
+ {}}
+ {}%
+ \insertchap{, }{}{}%
+ \insertpages{, \fixpp. }{. }{. }%
+ }%
+ \fi }%
+ { }%
+ \insertNote{ }{.}{}%
+}
+
+\setuppublicationlayout[booklet]{%
+ \insertauthors{}{ }{\insertthekey{}{. }{}}%
+ \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}{}. }{}%
+ \insertpubyear{(%
+ \insertpublisher{}{, }{}%
+ }{)\insertEdition{, }{ ed. }{. }}{}%
+ \insertpages{}{p. }{}%
+ \insertNote{ }{.}{}%
+}
+
+\setuppublicationlayout[manual]{%
+ \insertauthors{}{ }{\insertthekey{}{. }{}}%
+ \inserttitle{\bgroup \it }{\/\egroup \insertseries{ (}{)}{}. }{}%
+ \insertpubyear{(%
+ \insertorganization
+ {}%
+ {\insertcity{, }{, }{}}%
+ {\insertcity{}{, }{}}%
+ }{)\insertEdition{, }{ ed. }{. }}{}%
+ \insertpages{}{p. }{}%
+ \insertNote{ }{.}{}%
+}
+
+\setuppublicationlayout[incollection]{%
+ \insertartauthors{}{}{\insertthekey{}{, }{}}%
+% \insertarttitle{\bgroup }{\egroup. }{}%
+ \inserttitle
+ {, in %
+ \bgroup\it}%
+ {\egroup
+ \inserteditors{, edited by }%
+ {}%
+ {}
+ \insertseries
+ {\insertvolume{, number }{~in }{ }}%
+ {}%
+ {}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpubyear{(%
+ \insertpublisher{}%{, }%{}%
+ }{)\insertEdition{, }{ ed. }{}}{}%
+ \insertpages{\unskip, p.~}{. }{\unskip. }%
+ }%
+ {In \insertcrossref{}{}{}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages{\unskip, p.~}{. }{\unskip. }%
+ }%
+ \insertNote{ }{.}{}%
+}
+
+\setuppublicationlayout[inproceedings]{%
+ \insertauthors{}{ }{}%
+ \insertarttitle{\bgroup\it }{\/\egroup }{}%%
+ \inserttitle
+ {\unskip, in \bgroup\it}%
+ {\egroup
+ \inserteditors{, edited by }%
+ {}%
+ {}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpubyear
+ { (%
+ \insertorganization
+ {}%
+ {\insertpubname{, }
+ {\insertcity{, }{}{}, }
+ {\insertcity{, }{}{}, }}%
+ {\insertpubname{}
+ {\insertcity{, }{}{}, }
+ {\insertcity{}{, }{}}}%
+ }
+ {)}{}%
+ \insertseries
+ {, \insertvolume{vol. }{~of }{}\bgroup\it}%
+ {\egroup}%
+ {}%
+ \insertpages
+ {\unskip, \fixpp.~}
+ {\unskip.}
+ {\unskip.}%
+ }%
+ { In \insertcrossref{}{}{}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages{\unskip, \fixpp.~}{. }{\unskip. }%
+ }%
+ \insertNote{ }{.}{}%
+}
+
+\setuppublicationlayout[proceedings]{%
+ \inserteditors{}{, ed%
+ \ifnum\getvalue{editor@num}> 1 s\fi.,
+ \ \global\editedbooktrue
+ }{\insertthekey{}{ }{}}%
+ \inserttitle
+ {\bgroup\it}%
+ {\egroup
+ \insertseries
+ {\insertvolume{, number }{~in }{ }}%
+ {}%
+ {}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpubyear{(%
+ \insertorganization
+ {}%
+ {\insertpubname{, }{, }{}}%
+ {\insertpubname{}{, }{}}%
+ }
+ {)}
+ {}%
+ \insertpages
+ {\unskip, p.~}
+ {\insertcity{, }{}{}}
+ {\unskip\insertcity{, }{}{}}%
+ }%
+ {}%
+ \insertNote{\unskip. }{.}{.}%
+}
+
+\setuppublicationlayout[mastersthesis]{%
+ \insertauthors{}{, }{}%
+ \insertbibtype{}{, }{Master's thesis, }%
+ \insertpublisher{}{, }{}%
+ \insertpubyear{(}{)}{}%
+ \insertpages{\unskip, }{}{}%
+ \insertNote{\unskip. }{.}{\unskip.}%
+}
+
+\setuppublicationlayout[phdthesis]{%
+ \insertauthors{}{, }{}%
+ \insertbibtype{}{, }{Ph.D. thesis, }%
+ \insertpublisher{}{, }{}%
+ \insertpubyear{(}{)}{}%
+ \insertpages{\unskip, }{}{}%
+ \insertNote{\unskip. }{.}{\unskip.}%
+}
+
+\setuppublicationlayout[misc]{%
+ \insertauthors{}{%
+ \inserttitle{, \bgroup \it }{\egroup \insertseries{ (}{)}{} }{}%
+ }{%
+ \insertthekey{}{%
+ \inserttitle{, \bgroup \it }{\egroup \insertseries{ (}{)}{} }{}%
+ }{%
+ \inserttitle{, \bgroup \it }{\egroup \insertseries{ (}{)}{} }{}%
+ }}%
+ \insertpubyear{(%
+ \insertpublisher{}{, }{}%
+ }%
+ {)}%
+ {%
+ \inserthowpublished{\unskip, }{}{}%
+ }%
+ \insertpages{\unskip, }{}{}%
+ \inserteprint{\unskip, }{}{}%
+ \insertNote{\unskip. }{.}{\unskip.}%
+}
+
+\setuppublicationlayout[techreport]{%
+ \insertauthors{}{, }{}%
+ \inserttitle{\bgroup \it }{\egroup \insertseries{ (}{)}{} }{}%
+ \insertbibtype{}{}{Tech. Rep.}%
+ \insertvolume{ }{, }{, }%
+ \insertpublisher{}{ }{}%
+ \insertpubyear{(}{)}{}%
+ \insertpages{\unskip, }{}{}%
+ \insertNote{\unskip. }{.}{\unskip.}%
+}
+
+\setuppublicationlayout[unpublished]{%
+ \insertauthors{}{}{}%
+ \inserttitle{\bgroup \it }{\egroup \insertseries{ (}{)}{}}{}%
+ \insertbibtype{ (}{)}{}%
+ \insertpubyear{ (unpublished,}{)}{ (unpublished)}%
+ \insertpages{\unskip, }{ }{}%
+ \insertNote{\unskip. }{.}{\unskip.}%
+}
+
+\protect
diff --git a/tex/context/bib/bibl-apa-de.tex b/tex/context/bib/bibl-apa-de.tex
new file mode 100644
index 000000000..71996926d
--- /dev/null
+++ b/tex/context/bib/bibl-apa-de.tex
@@ -0,0 +1,388 @@
+% Test! Noch nicht übersetzt:
+% masters thesis
+%D \module
+%D [ file=bibl-apa,
+%D version=2004.7.16,
+%D title=APA bibliography style,
+%D subtitle=Publications,
+%D author={Taco Hoekwater},
+%D date=\currentdate,
+%D copyright={Public Domain}]
+%C
+%C Donated to the public domain. Use at your own risk
+
+\unprotect
+
+\setupcite
+ [author,year]
+ [\c!andtext={ und },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
+ \c!lastpubsep={ und },
+ \c!compress=\v!no,
+ \c!inbetween={ },
+ \c!left={(},
+ \c!right={)}]
+
+\setupcite
+ [authoryear]
+ [\c!andtext={ und },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
+ \c!lastpubsep={ und },
+ \c!compress=\v!yes,
+ \c!inbetween={ },
+ \c!left={(},
+ \c!right={)}]
+
+\setupcite
+ [authoryears]
+ [\c!andtext={ und },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
+ \c!lastpubsep={ und },
+ \c!compress=\v!yes,
+ \c!inbetween={, },
+ \c!left={(},
+ \c!right={)}]
+
+\setupcite
+ [key,serial,page,short,type,doi,url]
+ [\c!andtext={ und },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
+ \c!lastpubsep={ und },
+ \c!compress=\v!no,
+ \c!inbetween={ },
+ \c!left={[},
+ \c!right={]}]
+
+\setupcite
+ [num]
+ [\c!andtext={ und },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
+ \c!lastpubsep={ und },
+ \c!compress=\v!yes,
+ \c!inbetween={--},
+ \c!left={[},
+ \c!right={]}]
+
+\setuppublications[%
+ \c!sorttype=,
+ \c!criterium=,
+ \c!refcommand=authoryears,
+ \c!numbering=\v!no,
+ \c!autohang=\v!no]
+
+\setuppublicationlist
+ [\c!width=24pt,
+ \c!artauthor=\invertedshortauthor,
+ \c!editor=\invertedshortauthor,
+ \c!author=\invertedshortauthor,
+ \c!namesep={, },
+ \c!lastnamesep={ und },
+ \c!finalnamesep={ und },
+ \c!firstnamesep={, },
+ \c!juniorsep={ },
+ \c!vonsep={ },
+ \c!surnamesep={, },
+ \c!authoretallimit=5,
+ \c!editoretallimit=5,
+ \c!artauthoretallimit=5,
+ \c!authoretaldisplay=5,
+ \c!editoretaldisplay=5,
+ \c!artauthoretaldisplay=5,
+ \c!authoretaltext={ et al.},
+ \c!editoretaltext={ et al.},
+ \c!artauthoretaltext={ et al.},
+]
+
+\def\maybeyear#1{#1}
+
+\def\etalchar#1{#1}
+
+%D \macros{insertchapter,insertpublisher}
+
+%D Some shortcuts.
+
+% ((#1(type\ |)chapter#2)|#3)
+
+\def\insertchap#1#2#3%
+ {\insertchapter
+ {#1\insertbibtype{}{\ }{chapter\ }}{#2}%
+ {#3}}
+
+\def\insertpublisher#1#2#3%
+ {\insertpubname
+ {#1}{\insertcity
+ {, }
+ {\insertcountry{, }{}{#2}}%
+ {\insertcountry{, }{}{#2}}}%
+ {\insertcity
+ {}{\insertcountry{, }{}{#2}}%
+ {\insertcountry{#1}{#2}{#3}}}%
+ }
+
+
+\setuppublicationlayout[article]{%
+ \insertartauthors{}{ }{\insertthekey{}{ }{}}%
+ \insertpubyear{(}{). }{\unskip.}%
+ \insertarttitle{\bgroup }{\egroup. }{}%
+ \insertjournal{\bgroup \it}{\egroup}
+ {\insertcrossref{In }{}{}}%
+ \insertvolume
+ {, }
+ {\insertissue{(}{)}{}\insertpages{:}{.}{.}}
+ {\insertpages{, Seiten }{.}{.}}%
+ \insertnote{ }{.}{}%
+ \insertcomment{}{.}{}%
+}
+
+\newif\ifeditedbook
+\setuppublicationlayout[book]{%
+ \insertauthors{}{ }{\inserteditors{}{, Herausgeber%
+ \ \global\editedbooktrue
+ }{\insertthekey{}{. }{}}}%
+ \insertpubyear{(}{). }{\unskip.}%
+ \inserttitle
+ {\bgroup\it }%
+ {\/\egroup
+ \ifeditedbook
+ \global\editedbookfalse
+ \insertvolume
+ { Nummer~}%
+ {\insertseries
+ { in~\bgroup}%
+ {\egroup. }%
+ {\insertcrossref{ in~}{}{. }}}%
+ {\insertseries{ }{.}{} }%
+ \else
+ \insertcrossref
+ {\insertchap{, }{}{}%
+ \insertpages{, Seiten }{. }{. }%
+ \insertvolume{Band~}{ von~}{}%
+ }%
+ {}%
+ {\insertvolume
+ {, Band~}%
+ {\insertseries
+ { von~\bgroup\it}%
+ {\egroup}
+ {}}
+ {}%
+ \insertchap{, }{}{}%
+ \insertpages{, Seiten }{.}{.}%
+ }%
+ \fi}%
+ {}%
+ \insertpublisher
+ { }%
+ {\insertedition{, }{ Auflage.}{.}}%
+ {\insertedition{, }{ Auflage.}{}}%
+ \insertpages{ }{S. }{}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[inbook]{%
+ \insertauthors{}{ }{\inserteditors{}{, Herausgeber%
+ \ \global\editedbooktrue
+ }{\insertthekey{}{. }{}}}%
+ \insertpubyear{(}{). }{\unskip.}%
+ \inserttitle
+ {\bgroup\it }%
+ {\/\egroup
+ \ifeditedbook
+ \global\editedbookfalse
+ \insertvolume
+ { Nummer~}%
+ {\insertseries
+ { in~\bgroup}%
+ {\egroup. }%
+ {\insertcrossref{ in~}{}{. }}}%
+ {\insertseries{ }{.}{} }%
+ \else
+ \insertcrossref
+ {\insertchap{, }{}{}%
+ \insertpages{, Seiten }{. }{. }%
+ \insertvolume{Band~}{ Von~}{}%
+ }%
+ {}%
+ {\insertvolume
+ {, Band~}%
+ {\insertseries
+ { von~\bgroup\it}%
+ {\egroup}
+ {}}
+ {}%
+ \insertchap{, }{}{}%
+ \insertpages{, Seiten }{. }{. }%
+ }%
+ \fi}%
+ { }%
+ \insertpublisher
+ {}%
+ {\insertedition{, }{ Auflage. }{. }}%
+ {\insertedition{, }{ Auflage. }{}}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[booklet]{%
+ \insertauthors{}{ }{\insertthekey{}{. }{}}%
+ \insertpubyear{(}{). }{}%
+ \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}{}. }{}%
+ \insertpublisher
+ {}%
+ {\insertedition{, }{ Auflage. }{. }}%
+ {\insertedition{, }{ Auflage. }{}}%
+ \insertpages{}{S. }{}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[manual]{%
+ \insertauthors{}{ }{\insertthekey{}{. }{}}%
+ \insertpubyear{(}{). }{}%
+ \inserttitle{\bgroup \it }{\/\egroup \insertseries{ (}{)}{}. }{}%
+ \insertorganization
+ {}%
+ {\insertcity{, }%
+ {\insertedition{, }{ Auflage. }{. }}%
+ {\insertedition{, }{ Auflage. }{. }}}%
+ {\insertedition{, }{ Auflage. }{}}%
+ \insertpages{}{S. }{}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[incollection]{%
+ \insertartauthors{}{ }{\insertthekey{}{. }{}}%
+ \insertpubyear{(}{). }{}%
+ \insertarttitle{\bgroup }{\egroup. }{}%
+ \inserttitle
+ {In \inserteditors{}%
+ {, Herausgeber, }%
+ {}%
+ \bgroup\it}%
+ {\egroup
+ \insertseries
+ {\insertvolume{, Nummer }{~in }{ }}%
+ {}%
+ {}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages{\unskip, Seiten~}{. }{\unskip. }%
+ \insertpublisher
+ {}%
+ {\insertedition{, }{ Auflage. }{. }}%
+ {\insertedition{, }{ Auflage. }{}}%
+ }%
+ {In \insertcrossref{}{}{}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages{\unskip, Seiten~}{. }{\unskip. }%
+ }%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[inproceedings]{%
+ \insertauthors{}{ }{}%
+ \insertpubyear{(}{). }{}%
+ \insertarttitle{\bgroup }{\egroup. }{}%%
+ \inserttitle
+ {In \inserteditors{}%
+ {, Herausgeber, }%
+ {}%
+ \bgroup\it}%
+ {\egroup
+ \insertseries
+ {\insertvolume{, Nummer }{~in }{ }}%
+ {}%
+ {}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages
+ {\unskip, Seiten~}
+ {\insertcity{, }{. }{. }}
+ {\unskip. }%
+ \insertorganization
+ {}%
+ {\insertpubname{, }{. }{. }}%
+ {\insertpubname{}{. }{}}% was {, }{. }{}
+ }%
+ {In \insertcrossref{}{}{}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages{\unskip, Seiten~}{. }{\unskip. }%
+ }%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[proceedings]{%
+ \inserteditors{}{, Herausgeber%
+ \ \global\editedbooktrue
+ }{\insertthekey{}{ }{}}%
+ \insertpubyear{(}{). }{}%
+ \inserttitle
+ {\bgroup\it}%
+ {\egroup
+ \insertseries
+ {\insertvolume{, Nummer }{~in }{ }}%
+ {}%
+ {}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages{\unskip, Seiten~}{\insertcity{, }{. }{. }}
+ {\unskip\insertcity{, }{. }{. }}%
+ \insertorganization
+ {}%
+ {\insertpubname{, }{. }{. }}%
+ {\insertpubname{, }{. }{}}%
+ }%
+ {}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[mastersthesis]{%
+ \insertauthors{}{ }{}%
+ \insertpubyear{(}{). }{}%
+ \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}{}. }{}%
+ \insertbibtype{}{, }{Master's thesis, }%
+ \insertpublisher{}{. }{}%
+ \insertpages{}{S. }{}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[phdthesis]{%
+ \insertauthors{}{ }{}%
+ \insertpubyear{(}{). }{}%
+ \inserttitle{\bgroup\it }{\egroup \insertseries{ (}{)}{}. }{}%
+ \insertbibtype{}{, }{Dissertation, }%
+ \insertpublisher{}{. }{}%
+ \insertpages{}{S. }{}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[misc]{%
+ \insertauthors{}{ }{\insertthekey{}{. }{}}%
+ \insertpubyear{(}{). }{}%
+ \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}. }{}%
+ \insertpublisher{}{. }{}%
+ \insertpages{}{S. }{}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[techreport]{%
+ \insertauthors{}{ }{}%
+ \insertpubyear{(}{). }{}%
+ \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}{}. }{}%
+ \insertbibtype{}{\insertvolume{ }{, }{, }}{Technischer Bericht, }%
+ \insertpublisher{}{. }{}%
+ \insertpages{}{S. }{}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[unpublished]{%
+ \insertauthors{}{ }{}%
+ \insertpubyear{(}{). }{}%
+ \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}{}. }{}%
+ \insertpublisher{}{. }{}%
+ \insertpages{}{S. }{}%
+ \insertbibtype{(}{)}{}%
+ \insertnote{ }{.}{}%
+}
+
+\protect \ No newline at end of file
diff --git a/tex/context/bib/bibl-apa-fr.tex b/tex/context/bib/bibl-apa-fr.tex
new file mode 100644
index 000000000..68eac13c2
--- /dev/null
+++ b/tex/context/bib/bibl-apa-fr.tex
@@ -0,0 +1,389 @@
+%D \module
+%D [ file=bibl-apa-fr,
+%D version=2005.12.15,
+%D title=APA fr bibliography style,
+%D subtitle=Publications,
+%D author={Renaud Aubin},
+%D date=\currentdate,
+%D copyright={Public Domain}]
+%C
+%C Donated to the public domain. Use at your own risk
+
+\unprotect
+
+\setupcite
+ [author,year]
+ [\c!andtext={ et },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
+ \c!lastpubsep={ et },
+ \c!compress=\v!no,
+ \c!inbetween={ },
+ \c!left={(},
+ \c!right={)}]
+
+\setupcite
+ [authoryear]
+ [\c!andtext={ et },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
+ \c!lastpubsep={ et },
+ \c!compress=\v!yes,
+ \c!inbetween={ },
+ \c!left={(},
+ \c!right={)}]
+
+\setupcite
+ [authoryears]
+ [\c!andtext={ et },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
+ \c!lastpubsep={ et },
+ \c!compress=\v!yes,
+ \c!inbetween={, },
+ \c!left={(},
+ \c!right={)}]
+
+\setupcite
+ [key,serial,page,short,type,doi,url]
+ [\c!andtext={ et },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
+ \c!lastpubsep={ et },
+ \c!compress=\v!no,
+ \c!inbetween={ },
+ \c!left={[},
+ \c!right={]}]
+
+\setupcite
+ [num]
+ [\c!andtext={ et },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
+ \c!lastpubsep={ et },
+ \c!compress=\v!yes,
+ \c!inbetween={--},
+ \c!left={[},
+ \c!right={]}]
+
+\setuppublications[%
+ \c!sorttype=,
+ \c!criterium=,
+ \c!refcommand=authoryears,
+ \c!numbering=\v!no,
+ \c!autohang=\v!no]
+
+\setuppublicationlist
+ [\c!width=24pt,
+ \c!artauthor=\invertedshortauthor,
+ \c!editor=\invertedshortauthor,
+ \c!author=\invertedshortauthor,
+ \c!namesep={, },
+ \c!lastnamesep={ et },
+ \c!finalnamesep={ et },
+ \c!firstnamesep={, },
+ \c!juniorsep={ },
+ \c!vonsep={ },
+ \c!surnamesep={, },
+ \c!authoretallimit=5,
+ \c!editoretallimit=5,
+ \c!artauthoretallimit=5,
+ \c!authoretaldisplay=5,
+ \c!editoretaldisplay=5,
+ \c!artauthoretaldisplay=5,
+ \c!authoretaltext={ et al.},
+ \c!editoretaltext={ et al.},
+ \c!artauthoretaltext={ et al.},
+]
+
+\def\maybeyear#1{#1}
+
+\def\etalchar#1{#1}
+
+%D \macros{insertchapter,insertpublisher}
+
+%D Some shortcuts.
+
+% ((#1(type\ |)chapter#2)|#3)
+
+\def\insertchap#1#2#3%
+ {\insertchapter
+ {#1\insertbibtype{}{\ }{chapter\ }}{#2}%
+ {#3}}
+
+\def\insertpublisher#1#2#3%
+ {\insertpubname
+ {#1}{\insertcity
+ {, }
+ {\insertcountry{, }{}{#2}}%
+ {\insertcountry{, }{}{#2}}}%
+ {\insertcity
+ {}{\insertcountry{, }{}{#2}}%
+ {\insertcountry{#1}{#2}{#3}}}%
+ }
+
+
+\setuppublicationlayout[article]{%
+ \insertartauthors{}{ }{\insertthekey{}{ }{}}%
+ \insertpubyear{(}{). }{\unskip.}%
+ \insertarttitle{\bgroup }{\egroup. }{}%
+ \insertjournal{\bgroup \it}{\egroup}
+ {\insertcrossref{Dans }{}{}}%
+ \insertvolume
+ {, }
+ {\insertissue{(}{)}{}\insertpages{:}{.}{.}}
+ {\insertpages{, pages }{.}{.}}%
+ \insertnote{ }{.}{}%
+ \insertcomment{}{.}{}%
+}
+
+\newif\ifeditedbook
+\setuppublicationlayout[book]{%
+ \insertauthors{}{ }{\inserteditors{}{, \'editeur%
+ \ifnum\getvalue{editor@num}> 1 s\fi
+ \ \global\editedbooktrue
+ }{\insertthekey{}{. }{}}}%
+ \insertpubyear{(}{). }{\unskip.}%
+ \inserttitle
+ {\bgroup\it }%
+ {\/\egroup
+ \ifeditedbook
+ \global\editedbookfalse
+ \insertvolume
+ { Num\'ero~}%
+ {\insertseries
+ { dans~\bgroup}%
+ {\egroup. }%
+ {\insertcrossref{ dans~}{}{. }}}%
+ {\insertseries{ }{.}{} }%
+ \else
+ \insertcrossref
+ {\insertchap{, }{}{}%
+ \insertpages{, pages }{. }{. }%
+ \insertvolume{Volume~}{ de~}{}%
+ }%
+ {}%
+ {\insertvolume
+ {, volume~}%
+ {\insertseries
+ { de~\bgroup\it}%
+ {\egroup}
+ {}}
+ {}%
+ \insertchap{, }{}{}%
+ \insertpages{, pages }{.}{.}%
+ }%
+ \fi}%
+ {}%
+ \insertpublisher
+ { }%
+ {\insertedition{, }{ \'edition.}{.}}%
+ {\insertedition{, }{ \'edition.}{}}%
+ \insertpages{ }{p. }{}%
+ \insertnote{}{.}{}%
+}
+
+\setuppublicationlayout[inbook]{%
+ \insertauthors{}{ }{\inserteditors{}{, \'editeur%
+ \ifnum\getvalue{editor@num}> 1 s\fi
+ \ \global\editedbooktrue
+ }{\insertthekey{}{. }{}}}%
+ \insertpubyear{(}{). }{\unskip.}%
+ \inserttitle
+ {\bgroup\it }%
+ {\/\egroup
+ \ifeditedbook
+ \global\editedbookfalse
+ \insertvolume
+ { number~}%
+ {\insertseries
+ { dans~\bgroup}%
+ {\egroup. }%
+ {\insertcrossref{ dans~}{}{. }}}%
+ {\insertseries{ }{.}{} }%
+ \else
+ \insertcrossref
+ {\insertchap{, }{}{}%
+ \insertpages{, pages }{. }{. }%
+ \insertvolume{Volume~}{ de~}{}%
+ }%
+ {}%
+ {\insertvolume
+ {, volume~}%
+ {\insertseries
+ { of~\bgroup\it}%
+ {\egroup}
+ {}}
+ {}%
+ \insertchap{, }{}{}%
+ \insertpages{, pages }{. }{. }%
+ }%
+ \fi}%
+ { }%
+ \insertpublisher
+ {}%
+ {\insertedition{, }{ \'edition. }{. }}%
+ {\insertedition{, }{ \'edition. }{}}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[booklet]{%
+ \insertauthors{}{ }{\insertthekey{}{. }{}}%
+ \insertpubyear{(}{). }{}%
+ \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}{}. }{}%
+ \insertpublisher
+ {}%
+ {\insertedition{, }{ \'edition. }{. }}%
+ {\insertedition{, }{ \'edition. }{}}%
+ \insertpages{}{p. }{}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[manual]{%
+ \insertauthors{}{ }{\insertthekey{}{. }{}}%
+ \insertpubyear{(}{). }{}%
+ \inserttitle{\bgroup \it }{\/\egroup \insertseries{ (}{)}{}. }{}%
+ \insertorganization
+ {}%
+ {\insertcity{, }%
+ {\insertedition{, }{ \'edition. }{. }}%
+ {\insertedition{, }{ \'edition. }{. }}}%
+ {\insertedition{, }{ \'edition. }{}}%
+ \insertpages{}{p. }{}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[incollection]{%
+ \insertartauthors{}{ }{\insertthekey{}{. }{}}%
+ \insertpubyear{(}{). }{}%
+ \insertarttitle{\bgroup }{\egroup. }{}%
+ \inserttitle
+ {Dans \inserteditors{}%
+ {, \'editeur\ifnum\getvalue{editor@num}> 1 s\fi, }%
+ {}%
+ \bgroup\it}%
+ {\egroup
+ \insertseries
+ {\insertvolume{, num\'ero }{~dans }{ }}%
+ {}%
+ {}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages{\unskip, pages~}{. }{\unskip. }%
+ \insertpublisher
+ {}%
+ {\insertedition{, }{ \'edition. }{. }}%
+ {\insertedition{, }{ \'edition. }{}}%
+ }%
+ {Dans \insertcrossref{}{}{}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages{\unskip, pages~}{. }{\unskip. }%
+ }%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[inproceedings]{%
+ \insertauthors{}{ }{}%
+ \insertpubyear{(}{). }{}%
+ \insertarttitle{\bgroup }{\egroup. }{}%%
+ \inserttitle
+ {Dans \inserteditors{}%
+ {, \'editeur\ifnum\getvalue{editor@num}> 1 s\fi, }%
+ {}%
+ \bgroup\it}%
+ {\egroup
+ \insertseries
+ {\insertvolume{, num\'ero }{~dans }{ }}%
+ {}%
+ {}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages
+ {\unskip, pages~}
+ {\insertcity{, }{. }{. }}
+ {\unskip. }%
+ \insertorganization
+ {}%
+ {\insertpubname{, }{. }{. }}%
+ {\insertpubname{}{. }{}}% was {, }{. }{}
+ }%
+ {Dans \insertcrossref{}{}{}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages{\unskip, pages~}{. }{\unskip. }%
+ }%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[proceedings]{%
+ \inserteditors{}{, \'editeur%
+ \ifnum\getvalue{editor@num}> 1 s\fi
+ \ \global\editedbooktrue
+ }{\insertthekey{}{ }{}}%
+ \insertpubyear{(}{). }{}%
+ \inserttitle
+ {\bgroup\it}%
+ {\egroup
+ \insertseries
+ {\insertvolume{, num\'ero }{~dans }{ }}%
+ {}%
+ {}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages{\unskip, pages~}{\insertcity{, }{. }{. }}
+ {\unskip\insertcity{, }{. }{. }}%
+ \insertorganization
+ {}%
+ {\insertpubname{, }{. }{. }}%
+ {\insertpubname{, }{. }{}}%
+ }%
+ {}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[mastersthesis]{%
+ \insertauthors{}{ }{}%
+ \insertpubyear{(}{). }{}%
+ \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}{}. }{}%
+ \insertbibtype{}{, }{Th\`ese de master (DEA, DESS, master), }%
+ \insertpublisher{}{. }{}%
+ \insertpages{}{p. }{}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[phdthesis]{%
+ \insertauthors{}{ }{}%
+ \insertpubyear{(}{). }{}%
+ \inserttitle{\bgroup\it }{\egroup \insertseries{ (}{)}{}. }{}%
+ \insertbibtype{}{, }{Th\`ese de doctorat, }%
+ \insertpublisher{}{. }{}%
+ \insertpages{}{p. }{}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[misc]{%
+ \insertauthors{}{ }{\insertthekey{}{. }{}}%
+ \insertpubyear{(}{). }{}%
+ \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}. }{}%
+ \insertpublisher{}{. }{}%
+ \insertpages{}{p. }{}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[techreport]{%
+ \insertauthors{}{ }{}%
+ \insertpubyear{(}{). }{}%
+ \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}{}. }{}%
+ \insertbibtype{}{\insertvolume{ }{, }{, }}{Rapport technique, }%
+ \insertpublisher{}{. }{}%
+ \insertpages{}{p. }{}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[unpublished]{%
+ \insertauthors{}{ }{}%
+ \insertpubyear{(}{). }{}%
+ \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}{}. }{}%
+ \insertpublisher{}{. }{}%
+ \insertpages{}{p. }{}%
+ \insertbibtype{(}{)}{}%
+ \insertnote{ }{.}{}%
+}
+
+\protect
diff --git a/tex/context/bib/bibl-apa.tex b/tex/context/bib/bibl-apa.tex
index b1ecf373f..c3d11911a 100644
--- a/tex/context/bib/bibl-apa.tex
+++ b/tex/context/bib/bibl-apa.tex
@@ -13,7 +13,9 @@
\setupcite
[author,year]
- [\c!pubsep={, },
+ [\c!andtext={ and },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
\c!lastpubsep={ and },
\c!compress=\v!no,
\c!inbetween={ },
@@ -22,7 +24,9 @@
\setupcite
[authoryear]
- [\c!pubsep={, },
+ [\c!andtext={ and },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
\c!lastpubsep={ and },
\c!compress=\v!yes,
\c!inbetween={ },
@@ -31,7 +35,9 @@
\setupcite
[authoryears]
- [\c!pubsep={, },
+ [\c!andtext={ and },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
\c!lastpubsep={ and },
\c!compress=\v!yes,
\c!inbetween={, },
@@ -39,8 +45,10 @@
\c!right={)}]
\setupcite
- [key,number,page,short,type,doi]
- [\c!pubsep={, },
+ [key,serial,page,short,type,doi,url]
+ [\c!andtext={ and },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
\c!lastpubsep={ and },
\c!compress=\v!no,
\c!inbetween={ },
@@ -49,7 +57,9 @@
\setupcite
[num]
- [\c!pubsep={, },
+ [\c!andtext={ and },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
\c!lastpubsep={ and },
\c!compress=\v!yes,
\c!inbetween={--},
@@ -98,7 +108,7 @@
\def\insertchap#1#2#3%
{\insertchapter
- {#1\inserttype{}{\ }{chapter\ }}{#2}%
+ {#1\insertbibtype{}{\ }{chapter\ }}{#2}%
{#3}}
\def\insertpublisher#1#2#3%
@@ -137,10 +147,10 @@
\inserttitle
{\bgroup\it }%
{\/\egroup
- \ifeditedbook
+ \ifeditedbook
\global\editedbookfalse
- \insertvolume
- { Number~}%
+ \insertvolume
+ { Number~}%
{\insertseries
{ in~\bgroup}%
{\egroup. }%
@@ -161,16 +171,16 @@
{}}
{}%
\insertchap{, }{}{}%
- \insertpages{, pages }{. }{. }%
+ \insertpages{, pages }{.}{.}%
}%
\fi}%
- { }%
+ {}%
\insertpublisher
- {}%
- {\insertedition{, }{ edition. }{. }}%
- {\insertedition{, }{ edition. }{}}%
- \insertpages{}{p. }{}%
- \insertnote{ }{.}{}%
+ { }%
+ {\insertedition{, }{ edition.}{.}}%
+ {\insertedition{, }{ edition.}{}}%
+ \insertpages{ }{p. }{}%
+ \insertnote{}{.}{}%
}
\setuppublicationlayout[inbook]{%
@@ -331,7 +341,7 @@
\insertauthors{}{ }{}%
\insertpubyear{(}{). }{}%
\inserttitle{\bgroup }{\egroup \insertseries{ (}{)}{}. }{}%
- \inserttype{}{, }{Master's thesis, }%
+ \insertbibtype{}{, }{Master's thesis, }%
\insertpublisher{}{. }{}%
\insertpages{}{p. }{}%
\insertnote{ }{.}{}%
@@ -341,7 +351,7 @@
\insertauthors{}{ }{}%
\insertpubyear{(}{). }{}%
\inserttitle{\bgroup\it }{\egroup \insertseries{ (}{)}{}. }{}%
- \inserttype{}{, }{PhD thesis, }%
+ \insertbibtype{}{, }{PhD thesis, }%
\insertpublisher{}{. }{}%
\insertpages{}{p. }{}%
\insertnote{ }{.}{}%
@@ -360,7 +370,7 @@
\insertauthors{}{ }{}%
\insertpubyear{(}{). }{}%
\inserttitle{\bgroup }{\egroup \insertseries{ (}{)}{}. }{}%
- \inserttype{}{\insertvolume{ }{, }{, }}{Technical Report, }%
+ \insertbibtype{}{\insertvolume{ }{, }{, }}{Technical Report, }%
\insertpublisher{}{. }{}%
\insertpages{}{p. }{}%
\insertnote{ }{.}{}%
@@ -372,7 +382,7 @@
\inserttitle{\bgroup }{\egroup \insertseries{ (}{)}{}. }{}%
\insertpublisher{}{. }{}%
\insertpages{}{p. }{}%
- \inserttype{(}{)}{}%
+ \insertbibtype{(}{)}{}%
\insertnote{ }{.}{}%
}
diff --git a/tex/context/bib/bibl-aps.tex b/tex/context/bib/bibl-aps.tex
index c3a2c4a56..6d9e8db12 100644
--- a/tex/context/bib/bibl-aps.tex
+++ b/tex/context/bib/bibl-aps.tex
@@ -13,7 +13,9 @@
\setupcite
[author,year]
- [\c!pubsep={, },
+ [\c!andtext={ and },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
\c!lastpubsep={ and },
\c!compress=\v!no,
\c!inbetween={ },
@@ -22,7 +24,9 @@
\setupcite
[authoryear]
- [\c!pubsep={, },
+ [\c!andtext={ and },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
\c!lastpubsep={ and },
\c!compress=\v!yes,
\c!inbetween={ },
@@ -31,7 +35,9 @@
\setupcite
[authoryears]
- [\c!pubsep={, },
+ [\c!andtext={ and },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
\c!lastpubsep={ and },
\c!compress=\v!yes,
\c!inbetween={, },
@@ -39,8 +45,10 @@
\c!right={)}]
\setupcite
- [key,number,page,short,type,doi]
- [\c!pubsep={, },
+ [key,serial,page,short,type,doi,url]
+ [\c!andtext={ and },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
\c!lastpubsep={ and },
\c!compress=\v!no,
\c!inbetween={ },
@@ -49,7 +57,9 @@
\setupcite
[num]
- [\c!pubsep={, },
+ [\c!andtext={ and },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
\c!lastpubsep={ and },
\c!compress=\v!yes,
\c!inbetween={--},
@@ -60,11 +70,11 @@
\c!sorttype=,
\c!criterium=,
\c!refcommand=num,
- \c!numbercommand=\tester,
+ \c!numbercommand=\bibalignednumber,
\c!numbering=\v!yes,
\c!autohang=\v!yes]
-\def\tester#1{\hfill[#1]~~}
+\def\bibalignednumber#1{\hfill[#1]~~}
\setuppublicationlist
[\c!width=24pt,
@@ -115,7 +125,7 @@
\def\insertchap#1#2#3%
{\insertchapter
- {#1\inserttype{}{\ }{chapter\ }}{#2}%
+ {#1\insertbibtype{}{\ }{chapter\ }}{#2}%
{#3}}
\def\insertpublisher#1#2#3%
@@ -371,7 +381,7 @@
\setuppublicationlayout[mastersthesis]{%
\insertauthors{}{, }{}%
- \inserttype{}{, }{Master's thesis, }%
+ \insertbibtype{}{, }{Master's thesis, }%
\insertpublisher{}{, }{}%
\insertpubyear{(}{)}{}%
\insertpages{\unskip, }{}{}%
@@ -380,7 +390,7 @@
\setuppublicationlayout[phdthesis]{%
\insertauthors{}{, }{}%
- \inserttype{}{, }{Ph.D. thesis, }%
+ \insertbibtype{}{, }{Ph.D. thesis, }%
\insertpublisher{}{, }{}%
\insertpubyear{(}{)}{}%
\insertpages{\unskip, }{}{}%
@@ -411,7 +421,7 @@
\setuppublicationlayout[techreport]{%
\insertauthors{}{, }{}%
\inserttitle{\bgroup \it }{\egroup \insertseries{ (}{)}{} }{}%
- \inserttype{}{}{Tech. Rep.}%
+ \insertbibtype{}{}{Tech. Rep.}%
\insertvolume{ }{, }{, }%
\insertpublisher{}{ }{}%
\insertpubyear{(}{)}{}%
@@ -422,7 +432,7 @@
\setuppublicationlayout[unpublished]{%
\insertauthors{}{}{}%
\inserttitle{\bgroup \it }{\egroup \insertseries{ (}{)}{}}{}%
- \inserttype{ (}{)}{}%
+ \insertbibtype{ (}{)}{}%
\insertpubyear{ (unpublished,}{)}{ (unpublished)}%
\insertpages{\unskip, }{ }{}%
\insertNote{\unskip. }{.}{\unskip.}%
diff --git a/tex/context/bib/bibl-num-fr.tex b/tex/context/bib/bibl-num-fr.tex
new file mode 100644
index 000000000..ca634a3da
--- /dev/null
+++ b/tex/context/bib/bibl-num-fr.tex
@@ -0,0 +1,427 @@
+%D \module
+%D [ file=bibl-num-fr,
+%D version=2005.12.16,
+%D title=NUM-FR bibliography style,
+%D subtitle=Publications,
+%D author={Renaud Aubin},
+%D date=\currentdate,
+%D copyright={Public Domain}]
+%C
+%C Donated to the public domain. Use at your own risk
+
+\unprotect
+
+\def\setuppublicationlayout[#1]#2%
+ {\setvalue{@@pvdata#1}{#2\unskip\vadjust{\kern 6pt}}}
+
+
+\setupcite
+ [author,year]
+ [\c!andtext={ et },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
+ \c!lastpubsep={ et },
+ \c!compress=\v!no,
+ \c!inbetween={ },
+ \c!left={(},
+ \c!right={)}]
+
+\setupcite
+ [authoryear]
+ [\c!andtext={ et },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
+ \c!lastpubsep={ et },
+ \c!compress=\v!no,
+ \c!inbetween={ },
+ \c!left={(},
+ \c!right={)}]
+
+\setupcite
+ [authoryears]
+ [\c!andtext={ et },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
+ \c!lastpubsep={ et },
+ \c!compress=\v!no,
+ \c!inbetween={, },
+ \c!left={(},
+ \c!right={)}]
+
+\setupcite
+ [key,serial,page,short,type,doi,url]
+ [\c!andtext={ et },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
+ \c!lastpubsep={ et },
+ \c!compress=\v!no,
+ \c!inbetween={ },
+ \c!left={[},
+ \c!right={]}]
+
+\setupcite
+ [num]
+ [\c!andtext={ et },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
+ \c!lastpubsep={ et },
+ \c!compress=\v!no,
+ \c!inbetween={--},
+ \c!left={[},
+ \c!right={]}]
+
+\def\withbrackets#1{[#1]~~}
+
+\setuppublications[%
+ \c!sorttype=,
+ \c!criterium=,
+ \c!refcommand=num,
+ \c!numbering=\v!yes,
+ \c!numbercommand=\withbrackets,
+ \c!autohang=\v!yes]
+
+\setuppublicationlist
+ [\c!artauthor=\normalauthor,
+ \c!editor=\normalauthor,
+ \c!author=\normalauthor,
+ \c!namesep={, },
+ \c!lastnamesep={ et },
+ \c!finalnamesep={ et },
+ \c!firstnamesep={ },
+ \c!juniorsep={ },
+ \c!vonsep={ },
+ \c!surnamesep={ },
+ \c!authoretallimit=5,
+ \c!editoretallimit=5,
+ \c!artauthoretallimit=5,
+ \c!authoretaldisplay=5,
+ \c!editoretaldisplay=5,
+ \c!artauthoretaldisplay=5,
+ \c!authoretaltext={ et al.},
+ \c!editoretaltext={ et al.},
+ \c!artauthoretaltext={ et al.},
+]
+
+\def\maybeyear#1{}
+
+\def\etalchar#1{#1}
+
+%D \macros{insertchapter,insertpublisher}
+
+%D Some shortcuts.
+
+% ((#1(type\ |)chapter#2)|#3)
+
+\def\insertchap#1#2#3%
+ {\insertchapter
+ {#1\insertbibtype{}{\ }{chapitre\ }}{#2}%
+ {#3}}
+
+\def\insertpublisher#1#2#3%
+ {\insertpubname
+ {#1}{\insertcity
+ {, }
+ {\insertcountry{, }{}{#2}}%
+ {\insertcountry{, }{}{#2}}}%
+ {\insertcity
+ {}{\insertcountry{, }{}{#2}}%
+ {\insertcountry{#1}{#2}{#3}}}%
+ }
+
+
+\setuppublicationlayout[article]{%
+ \insertartauthors{}{\unskip. }{\insertthekey{}{. }{}}%
+ \insertarttitle{\bgroup }{\egroup. }{}%
+ \insertjournal{\bgroup \it}{\egroup}
+ {\insertcrossref{Dans }{}{}}%
+ \insertvolume
+ {, }
+ {\insertissue{(}{)}{}%
+ \insertpages{:}{}{}%
+ \insertpubyear{, }{}{}.}
+ {\insertpages{, pages }{}{}%
+ \insertpubyear{, }{}{}.}%
+ \insertnote{ }{.}{}%
+ \insertcomment{}{.}{}%
+}
+
+\newif\ifeditedbook
+\setuppublicationlayout[book]{%
+ \insertauthors{}{\unskip. }{\inserteditors{}{\unskip, \'editeur%
+ \ifnum\getvalue{editor@num}> 1 s\fi
+ \ \global\editedbooktrue
+ }{\insertthekey{}{\unskip. }{}}}%
+ \inserttitle
+ {\bgroup\it }%
+ {\/\egroup
+ \ifeditedbook
+ \global\editedbookfalse
+ \insertvolume
+ { Num\'ero~}%
+ {\insertseries
+ { dans~\bgroup}%
+ {\egroup. }%
+ {\insertcrossref{ dans~}{}{. }}}%
+ {\insertseries{ }{.}{} }%
+ \else
+ \insertcrossref
+ {\insertchap{, }{}{}%
+ \insertpages{, pages }{. }{. }%
+ \insertvolume{Volume~}{ de~}{}%
+ }%
+ {}%
+ {\insertvolume
+ {, volume~}%
+ {\insertseries
+ { de~\bgroup\it}%
+ {\egroup}
+ {}}
+ {}%
+ \insertchap{, }{}{}%
+ \insertpages{, pages }{.}{.}%
+ }%
+ \fi}%
+ {}%
+ \insertpublisher
+ { }%
+ {\insertedition{, }{ \'edition}{}
+ \insertpubyear{, }{.}{.}}%
+ {\insertedition{, }{ \'edition}{}%
+ \insertpubyear{, }{.}{.}}%
+ \insertpages{ }{p.}{}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[inbook]{%
+ \insertauthors{}{\unskip. }{\inserteditors{}{\unskip, \'editeur%
+ \ifnum\getvalue{editor@num}> 1 s\fi
+ \ \global\editedbooktrue
+ }{\insertthekey{}{\unskip. }{}}}%
+ \inserttitle
+ {\bgroup\it }%
+ {\/\egroup
+ \ifeditedbook
+ \global\editedbookfalse
+ \insertvolume
+ { num\'ero~}%
+ {\insertseries
+ { dans~\bgroup}%
+ {\egroup. }%
+ {\insertcrossref{ dans~}{}{. }}}%
+ {\insertseries{ }{.}{} }%
+ \else
+ \insertcrossref
+ {\insertchap{, }{}{}%
+ \insertpages{, pages }{. }{. }%
+ \insertvolume{Volume~}{ de~}{}%
+ }%
+ {}%
+ {\insertvolume
+ {, volume~}%
+ {\insertseries
+ { de~\bgroup\it}%
+ {\egroup}
+ {}}
+ {}%
+ \insertchap{, }{}{}%
+ \insertpages{, pages }{. }{. }%
+ }%
+ \fi}%
+ { }%
+ \insertpublisher
+ {}%
+ {\insertedition{, }{ \'edition}{}%
+ \insertpubyear{, }{. }{\unskip.}}%
+ {\insertedition{, }{ \'edition}{}%
+ \insertpubyear{, }{. }{\unskip.}}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[booklet]{%
+ \insertauthors{}{\unskip. }{}%
+ \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}{}. }{}%
+ \insertpublisher
+ {}%
+ {\insertedition{, }{ \'edition}{}%
+ \insertpubyear{, }{. }{}}%
+ {\insertedition{, }{ \'edition. }{}%
+ \insertpubyear{, }{. }{}}%
+ \insertpages{}{p. }{}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[manual]{%
+ \insertauthors{}{ }{\insertthekey{}{. }{}}%
+ \inserttitle
+ {\bgroup \it }
+ {\/\egroup \insertseries{ (}{)}{}. }
+ {}%
+ \insertorganization
+ {}%
+ {\insertcity
+ {, }%
+ {\insertedition
+ {, }
+ { \'edition\insertpubyear{, }{. }{. }}
+ {\insertpubyear{, }{. }{. }}}%
+ {\insertedition
+ {, }
+ { \'edition\insertpubyear{, }{. }{. }}
+ {\insertpubyear{, }{. }{. }}}}%
+ {\insertedition{, }{ \'edition\insertpubyear{, }{. }{. }}{}}%
+ \insertpages{}{p. }{}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[incollection]{%
+ \insertartauthors{}{\unskip. }{\insertthekey{}{\unskip. }{}}%
+ \insertarttitle{\bgroup }{\egroup. }{}%
+ \inserttitle
+ {Dans \inserteditors{}%
+ {\unskip, editor\ifnum\getvalue{editor@num}> 1 s\fi, }%
+ {}%
+ \bgroup\it}%
+ {\egroup
+ \insertseries
+ {\insertvolume{, number }{~in }{ }}%
+ {}%
+ {}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages{\unskip, pages~}{. }{\unskip. }%
+ \insertpublisher
+ {}%
+ {\insertedition{, }{ \'edition}{}%
+ \insertpubyear{, }{. }{. }}%
+ {\insertedition{, }{ \'edition}{}%
+ \insertpubyear{, }{. }{}}%
+ }%
+ {Dans \insertcrossref{}{}{}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages{\unskip, pages~}{. }{\unskip. }%
+ }%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[inproceedings]{%
+ \insertauthors{}{\unskip. }{}%
+ \insertarttitle{\bgroup }{\egroup. }{}%%
+ \inserttitle
+ {Dans \inserteditors{}%
+ {\unskip, \'editeur\ifnum\getvalue{editor@num}> 1 s\fi, }%
+ {}%
+ \bgroup\it}%
+ {\egroup
+ \insertseries
+ {\insertvolume{, num\'ero }{~dans }{ }}%
+ {}%
+ {}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages
+ {\unskip, pages~}
+ {\insertcity{, }{}{}
+ \insertpubyear{\unskip, }{. }{. }}%
+ {\unskip
+ \insertpubyear{\unskip, }{. }{. }}%
+ \insertorganization
+ {}%
+ {\insertpubname{, }{. }{. }}%
+ {\insertpubname{}{. }{}}% was {, }{. }{}
+ }%
+ {Dans \insertcrossref{}{}{}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages{\unskip, pages~}{. }{\unskip. }%
+ }%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[proceedings]{%
+ \inserteditors{}{\unskip, \'editeur%
+ \ifnum\getvalue{editor@num}> 1 s\fi
+ \ \global\editedbooktrue
+ }{\insertthekey{}{ }{}}%
+ \inserttitle
+ {\bgroup\it}%
+ {\egroup
+ \insertseries
+ {\insertvolume{, num\'ero }{~dans }{ }}%
+ {}%
+ {}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages
+ {\unskip, pages~}
+ {\insertcity
+ {, }
+ {\insertpubyear{, }{. }{. }}
+ {\insertpubyear{, }{. }{. }}}
+ {\unskip
+ \insertcity
+ {, }
+ {\insertpubyear{, }{. }{. }}
+ {\insertpubyear{, }{. }{. }}}%
+ \insertorganization
+ {}%
+ {\insertpubname{, }{. }{. }}%
+ {\insertpubname{, }{. }{}}%
+ }%
+ {}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[mastersthesis]{%
+ \insertauthors{}{ }{}%
+ \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}{}. }{}%
+ \insertbibtype{}{, }{M\'emoire de master (DEA, DESS), }%
+ \insertpublisher
+ {}
+ {, \insertpubyear{}{}{}}
+ {\insertpubyear{}{}{}}%
+ \insertpages{, }{p.}{.}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[phdthesis]{%
+ \insertauthors{}{ }{}%
+ \inserttitle{\bgroup\it }{\egroup \insertseries{ (}{)}{}. }{}%
+ \insertbibtype{}{, }{Th\`ese de doctorat, }%
+ \insertpublisher
+ {}
+ {, \insertpubyear{}{}{}}
+ {\insertpubyear{}{}{}}%
+ \insertpages{, }{p.}{.}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[misc]{%
+ \insertauthors{}{ }{\insertthekey{}{. }{}}%
+ \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}. }{}%
+ \insertpublisher
+ {}
+ {, \insertpubyear{}{}{}}
+ {\insertpubyear{}{}{}}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[techreport]{%
+ \insertauthors{}{ }{}%
+ \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}{}. }{}%
+ \insertbibtype{}{\insertvolume{ }{, }{, }}{Rapport technique, }%
+ \insertpublisher
+ {}
+ {, \insertpubyear{}{}{}}
+ {\insertpubyear{}{}{}}%
+ \insertpages{, }{p.}{.}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[unpublished]{%
+ \insertauthors{}{ }{}%
+ \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}{}. }{}%
+ \insertpublisher
+ {}
+ {, \insertpubyear{}{.}{}}
+ {\insertpubyear{}{.}{}}%
+ \insertbibtype{ (}{)}{}%
+ \insertnote{ }{.}{}%
+}
+
+\protect
diff --git a/tex/context/bib/bibl-num.tex b/tex/context/bib/bibl-num.tex
new file mode 100644
index 000000000..ff7cfe7a5
--- /dev/null
+++ b/tex/context/bib/bibl-num.tex
@@ -0,0 +1,427 @@
+%D \module
+%D [ file=bibl-num,
+%D version=2005.12.31,
+%D title=Numeric bibliography style,
+%D subtitle=Publications,
+%D author={Taco Hoekwater},
+%D date=\currentdate,
+%D copyright={Public Domain}]
+%C
+%C Donated to the public domain. Use at your own risk
+
+\unprotect
+
+\def\setuppublicationlayout[#1]#2%
+ {\setvalue{@@pvdata#1}{#2\unskip\vadjust{\kern 6pt}}}
+
+
+\setupcite
+ [author,year]
+ [\c!andtext={ and },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
+ \c!lastpubsep={ and },
+ \c!compress=\v!no,
+ \c!inbetween={ },
+ \c!left={(},
+ \c!right={)}]
+
+\setupcite
+ [authoryear]
+ [\c!andtext={ and },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
+ \c!lastpubsep={ and },
+ \c!compress=\v!no,
+ \c!inbetween={ },
+ \c!left={(},
+ \c!right={)}]
+
+\setupcite
+ [authoryears]
+ [\c!andtext={ and },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
+ \c!lastpubsep={ and },
+ \c!compress=\v!no,
+ \c!inbetween={, },
+ \c!left={(},
+ \c!right={)}]
+
+\setupcite
+ [key,serial,page,short,type,doi,url]
+ [\c!andtext={ and },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
+ \c!lastpubsep={ and },
+ \c!compress=\v!no,
+ \c!inbetween={ },
+ \c!left={[},
+ \c!right={]}]
+
+\setupcite
+ [num]
+ [\c!andtext={ and },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
+ \c!lastpubsep={ and },
+ \c!compress=\v!no,
+ \c!inbetween={--},
+ \c!left={[},
+ \c!right={]}]
+
+\def\withbrackets#1{[#1]~~}
+
+\setuppublications[%
+ \c!sorttype=,
+ \c!criterium=,
+ \c!refcommand=num,
+ \c!numbering=\v!yes,
+ \c!numbercommand=\withbrackets,
+ \c!autohang=\v!yes]
+
+\setuppublicationlist
+ [\c!artauthor=\normalauthor,
+ \c!editor=\normalauthor,
+ \c!author=\normalauthor,
+ \c!namesep={, },
+ \c!lastnamesep={ and },
+ \c!finalnamesep={ and },
+ \c!firstnamesep={ },
+ \c!juniorsep={ },
+ \c!vonsep={ },
+ \c!surnamesep={ },
+ \c!authoretallimit=5,
+ \c!editoretallimit=5,
+ \c!artauthoretallimit=5,
+ \c!authoretaldisplay=5,
+ \c!editoretaldisplay=5,
+ \c!artauthoretaldisplay=5,
+ \c!authoretaltext={ et al.},
+ \c!editoretaltext={ et al.},
+ \c!artauthoretaltext={ et al.},
+]
+
+\def\maybeyear#1{}
+
+\def\etalchar#1{#1}
+
+%D \macros{insertchapter,insertpublisher}
+
+%D Some shortcuts.
+
+% ((#1(type\ |)chapter#2)|#3)
+
+\def\insertchap#1#2#3%
+ {\insertchapter
+ {#1\insertbibtype{}{\ }{chapter\ }}{#2}%
+ {#3}}
+
+\def\insertpublisher#1#2#3%
+ {\insertpubname
+ {#1}{\insertcity
+ {, }
+ {\insertcountry{, }{}{#2}}%
+ {\insertcountry{, }{}{#2}}}%
+ {\insertcity
+ {}{\insertcountry{, }{}{#2}}%
+ {\insertcountry{#1}{#2}{#3}}}%
+ }
+
+
+\setuppublicationlayout[article]{%
+ \insertartauthors{}{\unskip. }{\insertthekey{}{. }{}}%
+ \insertarttitle{\bgroup }{\egroup. }{}%
+ \insertjournal{\bgroup \it}{\egroup}
+ {\insertcrossref{In }{}{}}%
+ \insertvolume
+ {, }
+ {\insertissue{(}{)}{}%
+ \insertpages{:}{}{}%
+ \insertpubyear{, }{}{}.}
+ {\insertpages{, pages }{}{}%
+ \insertpubyear{, }{}{}.}%
+ \insertnote{ }{.}{}%
+ \insertcomment{}{.}{}%
+}
+
+\newif\ifeditedbook
+\setuppublicationlayout[book]{%
+ \insertauthors{}{\unskip. }{\inserteditors{}{\unskip, editor%
+ \ifnum\getvalue{editor@num}> 1 s\fi
+ \ \global\editedbooktrue
+ }{\insertthekey{}{\unskip. }{}}}%
+ \inserttitle
+ {\bgroup\it }%
+ {\/\egroup
+ \ifeditedbook
+ \global\editedbookfalse
+ \insertvolume
+ { Number~}%
+ {\insertseries
+ { in~\bgroup}%
+ {\egroup. }%
+ {\insertcrossref{ in~}{}{. }}}%
+ {\insertseries{ }{.}{} }%
+ \else
+ \insertcrossref
+ {\insertchap{, }{}{}%
+ \insertpages{, pages }{. }{. }%
+ \insertvolume{Volume~}{ of~}{}%
+ }%
+ {}%
+ {\insertvolume
+ {, volume~}%
+ {\insertseries
+ { of~\bgroup\it}%
+ {\egroup}
+ {}}
+ {}%
+ \insertchap{, }{}{}%
+ \insertpages{, pages }{.}{.}%
+ }%
+ \fi}%
+ {}%
+ \insertpublisher
+ { }%
+ {\insertedition{, }{ edition}{}
+ \insertpubyear{, }{.}{.}}%
+ {\insertedition{, }{ edition}{}%
+ \insertpubyear{, }{.}{.}}%
+ \insertpages{ }{p.}{}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[inbook]{%
+ \insertauthors{}{\unskip. }{\inserteditors{}{\unskip, editor%
+ \ifnum\getvalue{editor@num}> 1 s\fi
+ \ \global\editedbooktrue
+ }{\insertthekey{}{\unskip. }{}}}%
+ \inserttitle
+ {\bgroup\it }%
+ {\/\egroup
+ \ifeditedbook
+ \global\editedbookfalse
+ \insertvolume
+ { number~}%
+ {\insertseries
+ { in~\bgroup}%
+ {\egroup. }%
+ {\insertcrossref{ in~}{}{. }}}%
+ {\insertseries{ }{.}{} }%
+ \else
+ \insertcrossref
+ {\insertchap{, }{}{}%
+ \insertpages{, pages }{. }{. }%
+ \insertvolume{Volume~}{ of~}{}%
+ }%
+ {}%
+ {\insertvolume
+ {, volume~}%
+ {\insertseries
+ { of~\bgroup\it}%
+ {\egroup}
+ {}}
+ {}%
+ \insertchap{, }{}{}%
+ \insertpages{, pages }{. }{. }%
+ }%
+ \fi}%
+ { }%
+ \insertpublisher
+ {}%
+ {\insertedition{, }{ edition}{}%
+ \insertpubyear{, }{. }{\unskip.}}%
+ {\insertedition{, }{ edition}{}%
+ \insertpubyear{, }{. }{\unskip.}}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[booklet]{%
+ \insertauthors{}{\unskip. }{}%
+ \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}{}. }{}%
+ \insertpublisher
+ {}%
+ {\insertedition{, }{ edition}{}%
+ \insertpubyear{, }{. }{}}%
+ {\insertedition{, }{ edition. }{}%
+ \insertpubyear{, }{. }{}}%
+ \insertpages{}{p. }{}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[manual]{%
+ \insertauthors{}{ }{\insertthekey{}{. }{}}%
+ \inserttitle
+ {\bgroup \it }
+ {\/\egroup \insertseries{ (}{)}{}. }
+ {}%
+ \insertorganization
+ {}%
+ {\insertcity
+ {, }%
+ {\insertedition
+ {, }
+ { edition\insertpubyear{, }{. }{. }}
+ {\insertpubyear{, }{. }{. }}}%
+ {\insertedition
+ {, }
+ { edition\insertpubyear{, }{. }{. }}
+ {\insertpubyear{, }{. }{. }}}}%
+ {\insertedition{, }{ edition\insertpubyear{, }{. }{. }}{}}%
+ \insertpages{}{p. }{}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[incollection]{%
+ \insertartauthors{}{\unskip. }{\insertthekey{}{\unskip. }{}}%
+ \insertarttitle{\bgroup }{\egroup. }{}%
+ \inserttitle
+ {In \inserteditors{}%
+ {\unskip, editor\ifnum\getvalue{editor@num}> 1 s\fi, }%
+ {}%
+ \bgroup\it}%
+ {\egroup
+ \insertseries
+ {\insertvolume{, number }{~in }{ }}%
+ {}%
+ {}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages{\unskip, pages~}{. }{\unskip. }%
+ \insertpublisher
+ {}%
+ {\insertedition{, }{ edition}{}%
+ \insertpubyear{, }{. }{. }}%
+ {\insertedition{, }{ edition}{}%
+ \insertpubyear{, }{. }{}}%
+ }%
+ {In \insertcrossref{}{}{}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages{\unskip, pages~}{. }{\unskip. }%
+ }%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[inproceedings]{%
+ \insertauthors{}{\unskip. }{}%
+ \insertarttitle{\bgroup }{\egroup. }{}%%
+ \inserttitle
+ {In \inserteditors{}%
+ {\unskip, editor\ifnum\getvalue{editor@num}> 1 s\fi, }%
+ {}%
+ \bgroup\it}%
+ {\egroup
+ \insertseries
+ {\insertvolume{, number }{~in }{ }}%
+ {}%
+ {}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages
+ {\unskip, pages~}
+ {\insertcity{, }{}{}
+ \insertpubyear{\unskip, }{. }{. }}%
+ {\unskip
+ \insertpubyear{\unskip, }{. }{. }}%
+ \insertorganization
+ {}%
+ {\insertpubname{, }{. }{. }}%
+ {\insertpubname{}{. }{}}% was {, }{. }{}
+ }%
+ {In \insertcrossref{}{}{}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages{\unskip, pages~}{. }{\unskip. }%
+ }%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[proceedings]{%
+ \inserteditors{}{\unskip, editor%
+ \ifnum\getvalue{editor@num}> 1 s\fi
+ \ \global\editedbooktrue
+ }{\insertthekey{}{ }{}}%
+ \inserttitle
+ {\bgroup\it}%
+ {\egroup
+ \insertseries
+ {\insertvolume{, number }{~in }{ }}%
+ {}%
+ {}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages
+ {\unskip, pages~}
+ {\insertcity
+ {, }
+ {\insertpubyear{, }{. }{. }}
+ {\insertpubyear{, }{. }{. }}}
+ {\unskip
+ \insertcity
+ {, }
+ {\insertpubyear{, }{. }{. }}
+ {\insertpubyear{, }{. }{. }}}%
+ \insertorganization
+ {}%
+ {\insertpubname{, }{. }{. }}%
+ {\insertpubname{, }{. }{}}%
+ }%
+ {}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[mastersthesis]{%
+ \insertauthors{}{ }{}%
+ \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}{}. }{}%
+ \insertbibtype{}{, }{Master's thesis, }%
+ \insertpublisher
+ {}
+ {, \insertpubyear{}{}{}}
+ {\insertpubyear{}{}{}}%
+ \insertpages{, }{p.}{.}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[phdthesis]{%
+ \insertauthors{}{ }{}%
+ \inserttitle{\bgroup\it }{\egroup \insertseries{ (}{)}{}. }{}%
+ \insertbibtype{}{, }{PhD thesis, }%
+ \insertpublisher
+ {}
+ {, \insertpubyear{}{}{}}
+ {\insertpubyear{}{}{}}%
+ \insertpages{, }{p.}{.}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[misc]{%
+ \insertauthors{}{ }{\insertthekey{}{. }{}}%
+ \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}. }{}%
+ \insertpublisher
+ {}
+ {, \insertpubyear{}{}{}}
+ {\insertpubyear{}{}{}}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[techreport]{%
+ \insertauthors{}{ }{}%
+ \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}{}. }{}%
+ \insertbibtype{}{\insertvolume{ }{, }{, }}{Technical Report, }%
+ \insertpublisher
+ {}
+ {, \insertpubyear{}{}{}}
+ {\insertpubyear{}{}{}}%
+ \insertpages{, }{p.}{.}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[unpublished]{%
+ \insertauthors{}{ }{}%
+ \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}{}. }{}%
+ \insertpublisher
+ {}
+ {, \insertpubyear{}{.}{}}
+ {\insertpubyear{}{.}{}}%
+ \insertbibtype{ (}{)}{}%
+ \insertnote{ }{.}{}%
+}
+
+\protect \ No newline at end of file
diff --git a/tex/context/bib/bibl-ssa.tex b/tex/context/bib/bibl-ssa.tex
new file mode 100644
index 000000000..2e3341328
--- /dev/null
+++ b/tex/context/bib/bibl-ssa.tex
@@ -0,0 +1,486 @@
+%D \module
+%D [ file=bibl-apa,
+%D version=2004.7.16,
+%D title=APA bibliography style,
+%D subtitle=Publications,
+%D author={Taco Hoekwater},
+%D date=\currentdate,
+%D copyright={Public Domain}]
+%C
+%C (Slightly modified to SSA-like 2005.3.24, David Wooten)
+%C Donated to the public domain. Use at your own risk
+
+\unprotect
+
+\setupcite
+ [author,year]
+ [\c!andtext={ and },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
+ \c!lastpubsep={ and },
+ \c!compress=\v!no,
+ \c!inbetween={ },
+ \c!left={(},
+ \c!right={)}]
+
+\setupcite
+ [authoryear]
+ [\c!andtext={ and },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
+ \c!lastpubsep={ and },
+ \c!compress=\v!yes,
+ \c!inbetween={ },
+ \c!left={(},
+ \c!right={)}]
+
+\setupcite
+ [authoryears]
+ [\c!andtext={ and },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
+ \c!lastpubsep={ and },
+ \c!compress=\v!yes,
+ \c!inbetween={, },
+ \c!left={(},
+ \c!right={)}]
+
+\setupcite
+ [key,serial,page,short,type,doi,url]
+ [\c!andtext={ and },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
+ \c!lastpubsep={ and },
+ \c!compress=\v!no,
+ \c!inbetween={ },
+ \c!left={[},
+ \c!right={]}]
+
+\setupcite
+ [num]
+ [\c!andtext={ and },
+ \c!otherstext={ et al.},
+ \c!pubsep={, },
+ \c!lastpubsep={ and },
+ \c!compress=\v!yes,
+ \c!inbetween={--},
+ \c!left={[},
+ \c!right={]}]
+
+\setuppublications[%
+ \c!sorttype=,
+ \c!criterium=,
+ \c!refcommand=authoryears,
+ \c!numbering=\v!no,
+ \c!autohang=\v!no]
+
+\setuppublicationlist
+ [\c!width=24pt,
+ \c!artauthor=\toggledauthor, %TH
+ \c!editor=\toggledauthor,
+ \c!author=\toggledauthor,
+ \c!namesep={, },
+ \c!lastnamesep={ and },
+ \c!finalnamesep={ and },
+ \c!firstnamesep={, },
+ \c!juniorsep={ },
+ \c!vonsep={ },
+ \c!surnamesep={, },
+ \c!authoretallimit=5,
+ \c!editoretallimit=5,
+ \c!artauthoretallimit=5,
+ \c!authoretaldisplay=5,
+ \c!editoretaldisplay=5,
+ \c!artauthoretaldisplay=5,
+ \c!authoretaltext={ et al.},
+ \c!editoretaltext={ et al.},
+ \c!artauthoretaltext={ et al.},
+]
+
+\def\maybeyear#1{#1}
+
+\def\etalchar#1{#1}
+
+%D \macros {invertedauthor,normalauthor,toggledauthor}
+%D
+%D These are redefinitions of the core versions.
+
+\def\invertedauthor#1#2#3#4#5%
+ {\bibdoif{#2}{#2\bibalternative\c!vonsep}%
+ \uppercased{#3}\bibalternative\c!surnamesep
+ \bibdoif{#5}{#5\bibalternative\c!juniorsep}%
+ \bibdoif{#1}{#1\unskip}}
+
+\def\normalauthor#1#2#3#4#5%
+ {\bibdoif{#1}{#1}\bibdoif{#2}{#2 } \uppercased{#3}%
+ \bibdoif{#5}{#5\unskip}}
+
+%TH
+%D The \type{\scratchcounter} is incremented by \specialbibinsert
+%D before each author/editor is typeset, so the only thing that needs
+%D doing is testing its value to decide which of the two `standard'
+%D author formatting macros to call.
+%D
+%D The \type{\normalauthor} definition above is a bit altered/stripped
+%D down, because the 'glue items' like \type{firstnamesep} got in the
+%D way.
+
+\def\toggledauthor#1#2#3#4#5%
+ {\relax
+ \ifnum \scratchcounter > 1
+ \normalauthor{#1}{#2}{#3}{#4}{#5}%
+ \else
+ \invertedauthor{#1}{#2}{#3}{#4}{#5}%
+ \fi }
+
+%TH
+%D Below, each \type{\setuppublicationlayout} macro's body will
+%D start by setting a global toggle to true, that controls whether
+%D or not the next \type{\insertartauthors},\type{\insertauthors}
+%D or \type{\inserteditors} has to store it's contents for comparison.
+%D All three are instances of the generic macro \type{\specialbibinsert}.
+%D The net result of this trick is that the first typeset block of
+%D names will be saved, regardless of whether they are book authors,
+%D article authors, or editors.
+
+\newif\ifsetstoredauthor
+
+%D save the normal meaning, because it will be redefined
+\let\normalspecialbibinsert\specialbibinsert
+
+%D This is a typical call (use) of \type{\specialbibinsert}, for
+%D reference:
+%D \starttyping
+%D \specialbibinsert{author}{\author@num}{<before>}{<after>}{<not>}
+%D \stoptyping
+
+\def\specialbibinsert#1#2#3#4#5%
+ {\relax
+ \ifsetstoredauthor
+ \global\setstoredauthorfalse % RESET
+ \putcurrentinallstuff{#1}{#2}%
+ \ifx\allstuff\oldstuff
+ % do nothing
+ \else
+ \normalspecialbibinsert{#1}{#2}{#3}{#4}{#5}%
+ \fi
+ \global\let\oldstuff\allstuff
+ \else
+ \normalspecialbibinsert{#1}{#2}{#3}{#4}{#5}%
+ \fi}
+
+%D initialize \type{\oldstuff}
+
+\def\oldstuff{}
+
+%D \#1 = authors
+%D \#2 = \type{\author@num}
+\def\putcurrentinallstuff#1#2%
+ {{\gdef\allstuff{}%
+ \def\tempx##1##2##3##4##5%
+ {\xdef\allstuff{\allstuff !!##1!##2!##3!##4!##5}}%
+ \@EA\dorecurse\@EA{#2}%
+ {\@EA\@EA\@EA\tempx \csname @@pb@#1\recurselevel\endcsname}%
+ }}
+
+%D \macros{insertchapter,insertpublisher}
+
+%D Some shortcuts.
+
+% ((#1(type\ |)chapter#2)|#3)
+
+
+\def\insertchap#1#2#3%
+ {\insertchapter
+ {#1\insertbibtype{}{\ }{chapter\ }}{#2}%
+ {#3}}
+
+\def\insertpublisher#1#2#3%
+ {\insertpubname
+ {#1}{\insertcity
+ {, }
+ {\insertcountry{, }{}{#2}}%
+ {\insertcountry{, }{}{#2}}}%
+ {\insertcity
+ {}{\insertcountry{, }{}{#2}}%
+ {\insertcountry{#1}{#2}{#3}}}%
+ }
+
+\setuppublicationlayout[article]{%
+ %TH all items below do this as well ...
+ \global\setstoredauthortrue
+ \insertartauthors{}{.}{\insertthekey{}{ }{}}\hfill\break%
+ \insertpubyear{}{. }{\unskip.}%
+ \insertarttitle{\bgroup ``}{\egroup'', }{ }%
+ \insertjournal{\bgroup in \it}{\egroup}
+ {\insertcrossref{in }{}{}}%
+ \insertvolume
+ {, }
+ {\insertissue{(}{)}{}\insertpages{:}{.}{.}}
+ {\insertpages{, pages }{.}{.}}%
+ \insertnote{ }{.}{}%
+ \insertcomment{}{.}{}%
+}
+
+\newif\ifeditedbook
+\setuppublicationlayout[book]{%
+ \global\setstoredauthortrue
+ \insertauthors{}{.}{\inserteditors{}{, editor%
+ \ifnum\getvalue{editor@num}> 1 s\fi
+ \ \global\editedbooktrue
+ }{\insertthekey{}{. }{}}}\hfill\break%
+ \insertpubyear{}{. }{\unskip.}%
+ \inserttitle
+ {\bgroup\it }%
+ {\/\egroup
+ \ifeditedbook
+ \global\editedbookfalse
+ \insertvolume
+ { Number~}%
+ {\insertseries
+ { in~\bgroup}%
+ {\egroup. }%
+ {\insertcrossref{ in~}{}{. }}}%
+ {\insertseries{ }{.}{} }%
+ \else
+ \insertcrossref
+ {\insertchap{, }{}{}%
+ \insertpages{, pages }{. }{. }%
+ \insertvolume{Volume~}{ of~}{}%
+ }%
+ {}%
+ {\insertvolume
+ {, volume~}%
+ {\insertseries
+ { of~\bgroup\it}%
+ {\egroup}
+ {}}
+ {}%
+ \insertchap{, }{}{}%
+ \insertpages{, pages }{. }{. }%
+ }%
+ \fi}%
+ { }%
+ \insertpublisher
+ {}%
+ {\insertedition{, }{ edition. }{}}%
+ {\insertedition{, }{ edition. }{}}%
+ \insertpages{}{p. }{}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[inbook]{%
+ \global\setstoredauthortrue
+ \insertauthors{}{ }{\inserteditors{}{, editor%
+ \ifnum\getvalue{editor@num}> 1 s\fi
+ \ \global\editedbooktrue
+ }{\insertthekey{}{. }{}}}\hfill\break%
+ \insertpubyear{}{. }{\unskip.}%
+ \inserttitle
+ {\bgroup\it }%
+ {\/\egroup
+ \ifeditedbook
+ \global\editedbookfalse
+ \insertvolume
+ { number~}%
+ {\insertseries
+ { in~\bgroup}%
+ {\egroup. }%
+ {\insertcrossref{ in~}{}{. }}}%
+ {\insertseries{ }{.}{} }%
+ \else
+ \insertcrossref
+ {\insertchap{, }{}{}%
+ \insertpages{, pages }{. }{. }%
+ \insertvolume{Volume~}{ of~}{}%
+ }%
+ {}%
+ {\insertvolume
+ {, volume~}%
+ {\insertseries
+ { of~\bgroup\it}%
+ {\egroup}
+ {}}
+ {}%
+ \insertchap{, }{}{}%
+ \insertpages{, pages }{. }{. }%
+ }%
+ \fi}%
+ { }%
+ \insertpublisher
+ {}%
+ {\insertedition{, }{ edition. }{. }}%
+ {\insertedition{, }{ edition. }{}}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[booklet]{%
+ \global\setstoredauthortrue
+ \insertauthors{}{ }{\insertthekey{}{. }{}}\hfill\break%
+ \insertpubyear{}{. }{}%
+ \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}{}. }{}%
+ \insertpublisher
+ {}%
+ {\insertedition{, }{ edition. }{. }}%
+ {\insertedition{, }{ edition. }{}}%
+ \insertpages{}{p. }{}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[manual]{%
+ \global\setstoredauthortrue
+ \insertauthors{}{ }{\insertthekey{}{. }{}}\hfill\break%
+ \insertpubyear{}{. }{}%
+ \inserttitle{\bgroup \it }{\/\egroup \insertseries{ (}{)}{}. }{}%
+ \insertorganization
+ {}%
+ {\insertcity{, }%
+ {\insertedition{, }{ edition. }{. }}%
+ {\insertedition{, }{ edition. }{. }}}%
+ {\insertedition{, }{ edition. }{}}%
+ \insertpages{}{p. }{}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[incollection]{%
+ \global\setstoredauthortrue
+ \insertartauthors{}{ }{\insertthekey{}{. }{}}\hfill\break%
+ \insertpubyear{}{. }{}%
+ \insertarttitle{\bgroup }{\egroup. }{}%
+ \inserttitle
+ {In \inserteditors{}%
+ {, editor\ifnum\getvalue{editor@num}> 1 s\fi, }%
+ {}%
+ \bgroup\it}%
+ {\egroup
+ \insertseries
+ {\insertvolume{, number }{~in }{ }}%
+ {}%
+ {}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages{\unskip, pages~}{. }{\unskip. }%
+ \insertpublisher
+ {}%
+ {\insertedition{, }{ edition. }{. }}%
+ {\insertedition{, }{ edition. }{}}%
+ }%
+ {In \insertcrossref{}{}{}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages{\unskip, pages~}{. }{\unskip. }%
+ }%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[inproceedings]{%
+ \global\setstoredauthortrue
+ \insertauthors{}{ }{}\hfill\break%
+ \insertpubyear{}{. }{}%
+ \insertarttitle{\bgroup }{\egroup. }{}%%
+ \inserttitle
+ {In \inserteditors{}%
+ {, editor\ifnum\getvalue{editor@num}> 1 s\fi, }%
+ {}%
+ \bgroup\it}%
+ {\egroup
+ \insertseries
+ {\insertvolume{, number }{~in }{ }}%
+ {}%
+ {}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages
+ {\unskip, pages~}
+ {\insertcity{, }{. }{. }}
+ {\unskip. }%
+ \insertorganization
+ {}%
+ {\insertpubname{, }{. }{. }}%
+ {\insertpubname{}{. }{}}% was {, }{. }{}
+ }%
+ {In \insertcrossref{}{}{}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages{\unskip, pages~}{. }{\unskip. }%
+ }%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[proceedings]{%
+ \global\setstoredauthortrue
+ \inserteditors{}{, editor%
+ \ifnum\getvalue{editor@num}> 1 s\fi
+ \ \global\editedbooktrue
+ }{\insertthekey{}{ }{}}\hfill\break%
+ \insertpubyear{}{. }{}%
+ \inserttitle
+ {\bgroup\it}%
+ {\egroup
+ \insertseries
+ {\insertvolume{, number }{~in }{ }}%
+ {}%
+ {}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages{\unskip, pages~}{\insertcity{, }{. }{. }}
+ {\unskip\insertcity{, }{. }{. }}%
+ \insertorganization
+ {}%
+ {\insertpubname{, }{. }{. }}%
+ {\insertpubname{, }{. }{}}%
+ }%
+ {}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[mastersthesis]{%
+ \global\setstoredauthortrue
+ \insertauthors{}{ }{}\hfill\break%
+ \insertpubyear{}{. }{}%
+ \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}{}. }{}%
+ \insertbibtype{}{, }{Master's thesis, }%
+ \insertpublisher{}{. }{}%
+ \insertpages{}{p. }{}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[phdthesis]{%
+ \global\setstoredauthortrue
+ \insertauthors{}{ }{}\hfill\break%
+ \insertpubyear{}{. }{}%
+ \inserttitle{\bgroup\it }{\egroup \insertseries{ (}{)}{}. }{}%
+ \insertbibtype{}{, }{PhD thesis, }%
+ \insertpublisher{}{. }{}%
+ \insertpages{}{p. }{}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[misc]{%
+ \global\setstoredauthortrue
+ \insertauthors{}{ }{\insertthekey{}{. }{}}\hfill\break%
+ \insertpubyear{}{. }{}%
+ \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}. }{}%
+ \insertpublisher{}{. }{}%
+ \insertpages{}{p. }{}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[techreport]{%
+ \global\setstoredauthortrue
+ \insertauthors{}{ }{}\hfill\break%
+ \insertpubyear{}{. }{}%
+ \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}{}. }{}%
+ \insertbibtype{}{\insertvolume{ }{, }{, }}{Technical Report, }%
+ \insertpublisher{}{. }{}%
+ \insertpages{}{p. }{}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[unpublished]{%
+ \global\setstoredauthortrue
+ \insertauthors{}{ }{}\hfill\break%
+ \insertpubyear{}{. }{}%
+ \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}{}. }{}%
+ \insertpublisher{}{. }{}%
+ \insertpages{}{p. }{}%
+ \insertbibtype{(}{)}{}%
+ \insertnote{ }{.}{}%
+}
+
+\protect \ No newline at end of file
diff --git a/tex/context/bib/t-bib.tex b/tex/context/bib/t-bib.tex
index 82cdba993..5421ff6a2 100644
--- a/tex/context/bib/t-bib.tex
+++ b/tex/context/bib/t-bib.tex
@@ -1,6 +1,6 @@
%D \module
%D [ file=t-bib,
-%D version=2005.01.04,
+%D version=2006.02.08,
%D title=\CONTEXT\ Publication Module,
%D subtitle=Publications,
%D author=Taco Hoekwater,
@@ -9,35 +9,52 @@
%C
%C Donated to the public domain.
-\usemodule[bibltx] % bibtex files can contain latex left-overs
-%D Slightly adapted by HH (2005/01). For \BIBTEX\ relate questions,
-%D contact Taco, if you expect interference with core macros, bother
-%D Hans. This file will be cleaned up in due time.
+%D The original was developed independantly by Taco Hoekwater while still working for Kluwer
+%D Academic publishers (it still used the dutch interface then). Development continued after
+%D he left Kluwer, and in Januari 2005, the then already internationalized file was merged
+%D with the core distribution by Hans Hagen. The current version is once again by Taco.
%D
-%D Documentation and additional resources can be found at
-%D Taco's website: \url{tex.aanhet.net}.
+%D More documentation and additional resources can be found on the contextgarden:
+%D \hyphenatedurl{http://wiki.contextgarden.net//Bibliography}.
-%D \subject{DONE}
+%D \subject{DONE (dd/mm/yyyy)}
%D
%D \startitemize
-%D \item minor bugfixes today (25/6)
-%D \item add finalnamesep support for Oxford comma (17/9)
-%D \item add \insert... for: doi, eprint, howpublished (17-19/9)
-%D \item minor fix (26/5/2004):
-%D \item add author definition (and associated system variable)
+%D \item add author definition (and associated system variable) (26/05/2005)
+%D \item add finalnamesep support for Oxford comma (17/09/2005)
+%D \item add \type{\insert...} for: doi, eprint, howpublished (19/09/2005)
+%D \item allow a defaulted \type{\setupcite} (19/11/2005)
+%D \item renamed citation type 'number' to 'serial' (19/11/2005)
+%D \item better definition of \type{\inverted...author} (19/11/2005)
+%D \item don't reset [numbercommand] in \type {\setuppublication} by default (20/11/2005)
+%D \item don't disable other \type {\setuppublication} keys if alternative is present (20/11/2005)
+%D \item drop \type{\sanitizeaccents} (20/11/2005)
+%D \item added \type{\nocite} and \type{\cite[none]} (21/11/2005)
+%D \item added headtext for it (23/11/2005)
+%D \item make \type{\cite[url]} and \type{\cite[doi]} interactive (23/11/2005)
+%D \item make right-aligned labels in the list work even when autohang=no
+%D \item use 'et al.' instead of 'et.al.'. Pointed out by Peter Münster (30/12/2005)
+%D \item added headtext for cz (31/12/2005)
+%D \item Keep whitespace after \type{\cite} with single argument (31/12/2005)
+%D \item Fix broken \type{\cite{}} support (31/12/2005)
+%D \item Use \type{\readfile} inside \type{\usepublications} instead of \type{\readsysfile} (12/01/2006)
+%D \item Use \type{\currentbibyear} and \type{\currentbibauthor} instead of \type{\YR} and \type{\AU} (05/02/2006)
+%D \item Fix compressed version of authoryear style (05/02/2006)
+%D \item Rename the clashing data fields \type{\url} and \type{\type} to \type{\biburl} and \type{\bibtype} (05/02/2006)
+%D \item Added two french bibl files from Renaud Aubin (06/02/2006)
+%D \item Five new bib class and eight extra bib fields, for IEEEtran (07/02/2006)
+%D \item French keyword translation, provided by Renaud (08/02/2006)
+%D \item fix underscores in undefined keys (22/02/2006)
+%D \item Destroy interactivity in labels of the publication list (13/03/2006)
%D \stopitemize
-
-%D \subject{TODO}
+%D
+%D \subject{WISHLIST}
%D
%D \startitemize
+%D \item link back from publication list to citation
%D \item export \type {\citation{<cited item>}}
-%D \item export a \type {\bibalternative{lastpubsep}} from BST instead of 'and'
-%D \item don't reset [numbercommand] in \type {\setuppublication} by default
%D \item sort out different APS versions: PR A/B/L vs. RPM
-%D \item (implement sub-options? / \type {\setupcitationstyle} ?)
-%D \item worry about localization at same time
-%D \item add hyperlinking to the doi->URL and \type {\cite}->list, in general
%D \item don't load the whole lot, but filter entries instead
%D \stopitemize
@@ -70,7 +87,6 @@
sorttype: sorttype sorttype
compress: compress compress
autohang: autohang autohang
- % author: author author
artauthor: artauthor artauthor
editor: editor editor
authoretallimit: authoretallimit authoretallimit
@@ -82,6 +98,8 @@
authoretaltext: authoretaltext authoretaltext
artauthoretaltext: artauthoretaltext artauthoretaltext
editoretaltext: editoretaltext editoretaltext
+ otherstext: otherstext otherstext
+ andtext: andtext andtext
totalnumber: totalnumber totalnumber
firstnamesep: firstnamesep firstnamesep
vonsep: vonsep vonsep
@@ -98,69 +116,119 @@
\stopconstants
\startvariables dutch english
-
german czech
italian romanian
+ french
title: titel title
titel titul
titolo titlu
+ titre
short: kort short
kurz short
short short
+ short
cite: cite cite
cite cite
cite cite
+ cite
bbl: bbl bbl
bbl bbl
bbl bbl
+ bbl
bib: bib bib
bib bib
bib bib
+ bib
author: auteur author
autor autor
autore autor
+ auteur
\stopvariables
+%D how to load the references. There is some new stuff here
+%D to support Idris' (incorrect :-)) use of projects
+
+\def\biblistname{pubs}
+
+\let\preloadbiblist\relax
+
+
+\ifx\currentcomponent\v!text
+ % single file
+ \edef\temp{\the\everystarttext}%
+ \ifx\temp\empty
+ % post-starttext
+ \def\preloadbiblist{\dousepublications\jobname }%
+ \else
+ % pre-starttext
+ \appendtoks \dousepublications\jobname \to \everystarttext
+ \fi
+ %
+\else \ifx\currentcomponent\v!project
+ % a project file, have to set up the partial products!
+ \def\startproduct #1 %
+ {\doateverystarttext
+ \dousepublications{#1}%
+ \donextlevel\v!product\currentproduct
+ \doexecutefileonce\doexecutefileonce
+ \donotexecutefile\doexecutefile#1\\}%
+ %
+\else \ifx\currentcomponent\v!product
+ % a product file
+ \def\preloadbiblist{\dousepublications\jobname }%
+ %
+\else
+ % a component? not sure what to do
+ \def\preloadbiblist{\dousepublications\jobname }%
+ %
+\fi \fi \fi
+
+\expanded{\definelist[\biblistname][\biblistname]}
+
%D The text string for the publication list header
-\setupheadtext[en][pubs=References]
-\setupheadtext[nl][pubs=Literatuur]
-\setupheadtext[de][pubs=Literatur]
+\setupheadtext[en][\biblistname=References]
+\setupheadtext[nl][\biblistname=Literatuur]
+\setupheadtext[de][\biblistname=Literatur]
+\setupheadtext[it][\biblistname=Bibliografia]
+\setupheadtext[sl][\biblistname=Literatura]
+\setupheadtext[fr][\biblistname=Bibliographie]
-%D \macros{bibdoifelse}
+%D \macros{bibdoif,bibdoifnot,bibdoifelse}
%D
-%D Here is a really small helper that is used a lot (which is why it
-%D makes sense to use \type{\ifx} instead of \type{\doif..}).
-%D This test is used in all the typesetting commands
+%D Here are a few small helpers that are used a lot
+%D in all the typesetting commands
%D (\type{\insert...}) we will encounter later.
-
-\def\bibdoifelse#1%
- {\ifx#1\relax
- \@EA\secondoftwoarguments
- \else\ifx#1\empty
- \@EAEAEA\secondoftwoarguments
+%D
+%D TH: Hans, don't replace these! It is vital that
+%D there is a precisly one level of expansion of
+%D the argument.
+
+\long\def\bibdoifelse#1%
+ {\@EA\def\@EA\!!stringa\@EA{#1}%
+ \ifx\!!stringa\empty
+ \expandafter\secondoftwoarguments
\else
- \@EAEAEA\firstoftwoarguments
- \fi\fi}
+ \expandafter\firstoftwoarguments
+ \fi}
-\def\bibdoif#1%
- {\ifx#1\relax
- \@EA\gobbleoneargument
- \else\ifx#1\empty
- \@EAEAEA\gobbleoneargument
+\long\def\bibdoifnot#1%
+ {\@EA\def\@EA\!!stringa\@EA{#1}%
+ \ifx\!!stringa\empty
+ \expandafter\firstofoneargument
\else
- \@EAEAEA\firstofoneargument
- \fi\fi}
+ \expandafter\gobbleoneargument
+ \fi}
-\def\bibdoifnot#1%
- {\ifx#1\relax
- \@EA\firstofoneargument
- \else\ifx#1\empty
- \@EAEAEA\firstofoneargument
+\long\def\bibdoif#1%
+ {\@EA\def\@EA\!!stringa\@EA{#1}%
+ \ifx\!!stringa\empty
+ \expandafter\gobbleoneargument
\else
- \@EAEAEA\gobbleoneargument
- \fi\fi}
+ \expandafter\firstofoneargument
+ \fi}
+
%D Bibtex settings separated out
@@ -236,48 +304,48 @@
\def\bibleftnumber#1%
{#1\hfill~}
+
\def\dosetuppublications[#1]%
{\getparameters
[\??pb]
- [\c!numbercommand=\bibleftnumber,\c!alternative=,#1]%
+ [\c!alternative=,#1]%
\doifsomething\@@pbalternative
{\readsysfile{bibl-\@@pbalternative.tex}
{\showmessage\m!bib{6}{bibl-\@@pbalternative}\let\@@pbalternative\empty}
{\showmessage\m!bib{1}{bibl-\@@pbalternative}\let\@@pbalternative\empty}}%
- \doifnothing{\@@pbalternative}
- {\processaction
- [\@@pbcriterium]
- [ \v!all=>\typesetalltrue,
- \s!unknown=>\typesetallfalse]%
- \processaction
- [\@@pbautohang]
- [ \v!yes=>\autohangtrue,
- \s!unknown=>\autohangfalse]%
- \processaction
- [\@@pbsorttype]
- [ \v!cite=>\sortbycitetrue,
- \v!bbl=>\sortbycitefalse,
- \s!default=>\sortbycitetrue,
- \s!unknown=>\sortbycitefalse]%
- \processaction
- [\@@pbnumbering]
- [ \v!yes=>\let\@@pbinumbercommand\firstofoneargument,
- \v!no=>\let\@@pbinumbercommand\gobbleoneargument,
- \v!short=>\def\@@pbinumbercommand##1{\@@pbs},
- \v!bib=>\def\@@pbinumbercommand##1{\@@pbn},
- \s!unknown=>\let\@@pbinumbercommand\firstofoneargument]%
- \processaction
- [\@@pbrefcommand]
- [\s!default=>\edef\@@citedefault{\@@pbrefcommand},
- \s!unknown=>\edef\@@citedefault{\@@pbrefcommand}]}}
+ \getparameters
+ [\??pb]
+ [#1]%
+ \processaction
+ [\@@pbcriterium]
+ [ \v!all=>\typesetalltrue,
+ \s!unknown=>\typesetallfalse]%
+ \processaction
+ [\@@pbautohang]
+ [ \v!yes=>\autohangtrue,
+ \s!unknown=>\autohangfalse]%
+ \processaction
+ [\@@pbsorttype]
+ [ \v!cite=>\sortbycitetrue,
+ \v!bbl=>\sortbycitefalse,
+ \s!default=>\sortbycitetrue,
+ \s!unknown=>\sortbycitefalse]%
+ \processaction
+ [\@@pbnumbering]
+ [ \v!yes=>\let\@@pbinumbercommand\firstofoneargument,
+ \v!no=>\let\@@pbinumbercommand\gobbleoneargument,
+ \v!short=>\def\@@pbinumbercommand##1{\getvalue{pbds-\@@pbk}},
+ \v!bib=>\def\@@pbinumbercommand##1{\getvalue{pbdn-\@@pbk}},
+ \s!unknown=>\let\@@pbinumbercommand\firstofoneargument]%
+ \processaction
+ [\@@pbrefcommand]
+ [\s!default=>\edef\@@citedefault{\@@pbrefcommand},
+ \s!unknown=>\edef\@@citedefault{\@@pbrefcommand}]}
% initialize
\def\@@pbrefcommand{num}
-
-%D how to load the references:
-
-\appendtoks \dousepublications\jobname \to \everystarttext
+\def\@@pbnumbercommand{\bibleftnumber}
%D \macros{usepublications}
%D
@@ -289,7 +357,7 @@
{\usereferences[#1]\processcommalist[#1]\dousepublications}
\def\dousepublications#1%
- {\readsysfile{#1.\f!bibextension}
+ {\readfile{#1.\f!bibextension}
{\showmessage\m!bib{4}{#1.\f!bibextension}}
{\showmessage\m!bib{2}{#1.\f!bibextension}}}
@@ -309,18 +377,16 @@
\def\setuppublicationlist
{\dosingleempty\dosetuppublicationlist}
-\definelist[pubs][pubs]
-
\def\dosetuppublicationlist[#1]%
{\getparameters
[@@pvdata]
[\c!samplesize={AA99},\c!totalnumber={99},#1]% for sample & totalnumber & firstnamesep etc.
\setuplist
- [pubs]
- [\c!alternative=a,\c!pagenumber=\v!no,#1]}
+ [\biblistname]
+ [\c!alternative=a,\c!interaction=,\c!pagenumber=\v!no,#1]}
-\def\setuppublicationlayout[#1]%
- {\setvalue{@@pvdata#1}}
+\def\setuppublicationlayout[#1]#2%
+ {\setvalue{@@pvdata#1}{#2\unskip}}
%D \macros{bibalternative}
%D
@@ -350,26 +416,34 @@
\def\simplebibdef#1% hh: funny expansion ?
{\@EA\long\@EA\def\csname bib@#1\endcsname##1%
- {\setvalue{\??pb @#1}{##1}\ignorespaces}%
+ {\setvalue{\??pb @#1}{##1}%
+ \ignorespaces}%
\@EA\def\csname insert#1\endcsname##1##2##3%
{\@EA\bibdoifelse
\@EA{\csname @@pb@#1\endcsname}%
{##1\csname @@pb@#1\endcsname##2}%
- {##3}}}
+ {##3}%
+ }}
\def\bibcommandlist
- {arttitle,title,journal,notes,
- volume,issue,pubname,city,country,
- type,organization,institute,series,thekey,
- edition,month,pubyear,note,annotate,pages,
- keyword,keywords,comment,abstract,names,size,
- issn,isbn,chapter,eprint,doi,howpublished}
+ {arttitle, title, journal, notes, volume, issue, pubname, city,
+ country, bibtype, organization, series, thekey, edition, month,
+ pubyear, note, annotate, pages, keyword, keywords, comment,
+ abstract, names, size, issn, isbn, chapter, eprint, doi,
+ howpublished, biburl, lastchecked,
+ % ieee
+ nationality, assignee, bibnumber, day, dayfiled, monthfiled,
+ yearfiled, revision}
+
\processcommacommand[\bibcommandlist]\simplebibdef
+\let\inserturl \insertbiburl % for backward compat.
+\let\inserttype\insertbibtype % for backward compat.
+
\def\newbibfield[#1]%
{\simplebibdef{#1}%
- \edef\bibcommalist{\bibcommandlist,#1}}
+ \edef\bibcommandlist{\bibcommandlist,#1}}
%D \macros{bib@crossref}
%D
@@ -407,9 +481,9 @@
%D things: increment the counter \type{\author@num} (let's say to 2)
%D and next store it's arguments in the macro \type{\@@pb@author2}.
%D And it defines \type{\insertauthors} to expand into
-%D \starttypen
+%D \starttyping
%D \specialbibinsert{author}{\author@num}{<before>}{<after>}{<not>}
-%D \stoptypen
+%D \stoptyping
% hh: use a context counter instead, more options
@@ -420,7 +494,7 @@
\setvalue{\??pb @#1\csname #1@num\endcsname}%
{{##2}{##4}{##5}{##3}{##1}}\ignorespaces}%
\@EA\def\csname insert#1s\endcsname##1##2##3%
- {\specialbibinsert{#1}{\csname #1@num\endcsname}{##1}{##2}{##3}}}
+ {\specialbibinsert{#1}{\csname #1@num\endcsname}{##1}{\unskip ##2}{##3}}}
\processcommalist[author,artauthor,editor]\complexbibdef
@@ -515,30 +589,30 @@
%D }
%D
-\def\invertedauthor#1#2#3#4#5%
- {\bibdoif{#2}{#2\bibalternative\c!vonsep}%
- #3\bibalternative\c!surnamesep
- \bibdoif{#5}{#5\bibalternative\c!juniorsep}%
- \bibdoif{#1}{#1\unskip}}
-
\def\normalauthor#1#2#3#4#5%
{\bibdoif{#1}{#1\bibalternative\c!firstnamesep}%
\bibdoif{#2}{#2\bibalternative\c!vonsep}%
#3\bibalternative\c!surnamesep
\bibdoif{#5}{#5\unskip}}
-\def\invertedshortauthor#1#2#3#4#5%
- {\bibdoif{#2}{#2\bibalternative\c!vonsep}%
- #3\bibalternative\c!surnamesep
- \bibdoif{#5}{#5\bibalternative\c!juniorsep}%
- \bibdoif{#4}{#4\unskip}}
-
\def\normalshortauthor#1#2#3#4#5%
{\bibdoif{#4}{#4\bibalternative\c!firstnamesep}%
\bibdoif{#2}{#2\bibalternative\c!vonsep}%
#3\bibalternative\c!surnamesep
\bibdoif{#5}{#5\unskip}}
+\def\invertedauthor#1#2#3#4#5%
+ {\bibdoif{#2}{#2\bibalternative\c!vonsep}%
+ #3%
+ \bibdoif{#5}{\bibalternative\c!juniorsep #5}%
+ \bibdoif{#1}{\bibalternative\c!surnamesep #1\unskip}}
+
+\def\invertedshortauthor#1#2#3#4#5%
+ {\bibdoif{#2}{#2\bibalternative\c!vonsep}%
+ #3%
+ \bibdoif{#5}{\bibalternative\c!juniorsep #5}%
+ \bibdoif{#4}{\bibalternative\c!surnamesep #4\unskip}}
+
%D \macros{clearbibitem,clearbibitemtwo,bibitemdefs}
%D
%D These are used in \type{\typesetapublication} to do
@@ -555,18 +629,14 @@
\advance\scratchcounter\plusone}%
{\exitloop}}}
-\def\bibitemdefs#1{\setvalue{#1}{\csname bib@#1\endcsname}}
+\def\bibitemdefs#1%
+ {\@EA\let\@EA\tempa \csname bib@#1\endcsname
+ \@EA\let\csname #1\endcsname \tempa }
%D \macros{startpublication}
%D
%D We are coming to the end of this module, to the macros that
%D do typesetting and read the \type{bbl} file.
-%D
-%D The stuff between \type{\startpublication} ... \type{\stoppublication}
-%D is simply stored into a macro: either
-%D \type{\publist} (potentially huge) or separate macros
-%D for each of them, depending on whether
-%D or not we do \type{\sortbycite}, as explained above.
\newcounter\bibcounter
@@ -593,51 +663,40 @@
\long\def\dostartpublication[#1]#2\stoppublication%
{\increment\bibcounter
\bgroup
- \bgroup\honorunexpanded
\doifassignmentelse{#1}%
- {\egroup\getparameters[\??pb][k=,t=article,n=,s=,a=,y=,o=,#1]}%
- {\egroup\getparameters[\??pb][k=#1,t=article,n=,s=,a=,y=,o=]}%
- \toks0={\ignorespaces #2}%
- \@EA\toks\@EA2\@EA{\@@pba}%
- \@EA\toks\@EA4\@EA{\@@pbs}%
- \setxvalue{pbd-\@@pbk}%
- {{\the\toks2}% \@@pba (author)
- {\@@pby}%
- {\the\toks4}% \@@pbs (short)
- {\@@pbn}%
- {\@@pbt}%
- {\the\toks0}% (data)
- {\@@pbo}}% doi
- \xdef\allrefs{\allrefs,\@@pbk}%
- \egroup}
+ {\getparameters[\??pb][k=,t=article,n=,s=,a=,y=,o=,u=,#1]}%
+ {\getparameters[\??pb][k=#1,t=article,n=,s=,a=,y=,o=,u=]}%
+ \@EA\toks\@EA2\@EA{\@@pba}%
+ \@EA\toks\@EA4\@EA{\@@pbs}%
+ \toks0={\ignorespaces #2}%
+ \setxvalue{pbdk-\@@pbk}{\@@pbk}
+ \setxvalue{pbda-\@@pbk}{\the\toks2}
+ \setxvalue{pbdy-\@@pbk}{\@@pby}
+ \setxvalue{pbds-\@@pbk}{\the\toks4}
+ \setxvalue{pbdn-\@@pbk}{\@@pbn}
+ \setxvalue{pbdt-\@@pbk}{\@@pbt}
+ \setxvalue{pbdo-\@@pbk}{\@@pbo}
+ \setxvalue{pbdu-\@@pbk}{\@@pbu}
+ \setxvalue{pbdd-\@@pbk}{\the\toks0}
+ \xdef\allrefs{\allrefs,\@@pbk}%
+ \egroup }
% intialization of the order-list:
\let\allrefs\empty
-% how to get stuff from a pbd-*** macro:
+%D The next macro is needed because the number command of the
+%D publist sometimes needs to fetch something from the current
+%D item (like the 'short' key). For this, the ID of the current
+%D item is passed in the implict parameter \type{\@@pbk}
-\def\restorebibdata#1%
- {\def\@@pbk{#1}%
- \@EA\dorestorebibdata\csname pbd-#1\endcsname}
+\def\makepbkvalue#1{\def\@@pbk{#1}}
-\def\dorestorebibdata#1%
- {\@EA\dodorestorebibdata#1{}{}{}{}{}{}{}\relax}
+%D
-\def\dodorestorebibdata#1#2#3#4#5#6#7#8\relax%
- {\def\@@pba{#1}%
- \def\@@pby{#2}%
- \def\@@pbs{#3}%
- \def\@@pbn{#4}%
- \def\@@pbt{#5}%
- \def\@@pbd{#6}%
- \def\@@pbo{#7}}
+\newif\ifinpublist
-%D The \writeutility trick is dodgy at best, but it is needed
-%D to make sure that \placepublications\stoptext works as
-%D advertised. (without the \immediate, there *has* to be at
-%D least one page break between \placepublications and \stoptext)
-%D
+\let\@@pvdatawidth\empty
\def\preinitializepubslist
{\let\bibcounter\!!zerocount
@@ -666,22 +725,24 @@
\setbox\scratchbox\hbox{\@@pbnumbercommand{\numreferred}}%
\fi\fi
\edef\samplewidth{\the\wd\scratchbox}%
- \setuplist[pubs][\c!width=\samplewidth,\c!distance=0pt]%
+ \setuplist[\biblistname][\c!width=\samplewidth,\c!distance=0pt]%
\def\@@pblimitednumber##1{\hbox to \samplewidth{\@@pbnumbercommand{##1}}}%
\else
- \def\@@pblimitednumber##1{\hbox{\@@pbnumbercommand{##1}}}%
+ \doifemptyelse
+ {\@@pvdatawidth}
+ {\def\@@pblimitednumber##1{\hbox{\@@pbnumbercommand{##1}}}}%
+ {\def\@@pblimitednumber##1{\hbox to \@@pvdatawidth{\@@pbnumbercommand{##1}}}}%
\fi
\ifx\@@pbnumbering\v!no
- \setuplist[pubs][\c!numbercommand=,\c!textcommand=\outdented]
+ \setuplist[\biblistname][\c!numbercommand=,\c!textcommand=\outdented]
\else
- \setuplist[pubs][\c!numbercommand=\@@pblimitednumber,\c!textcommand=]
+ \setuplist[\biblistname][\c!numbercommand=\@@pblimitednumber]%
\fi
\forgetall % bugfix 2005/03/18
}
\def\outdented#1% move to supp-box ?
- {\hskip -\hangindent
- \strut#1\strut}
+ {\hskip -\hangindent #1}
%D The full list of publications
@@ -690,10 +751,12 @@
\def\docompletepublications[#1]%
{\preinitializepubslist
- \ifcase\bibcounter\else % HERE it said "\or" instead of "\else"
+ \ifcase\bibcounter\else
\initializepubslist
\let\bibcounter\!!zerocount
- \completelist[pubs][\c!criterium=all,#1]%
+ \inpublisttrue
+ \completelist[\biblistname][\c!criterium=\v!current,#1]%
+ \inpublistfalse
\fi}
%D And the portion with the entries only.
@@ -703,19 +766,21 @@
\def\doplacepublications[#1]%
{\preinitializepubslist
- \ifcase\bibcounter\else % HERE it said "\or" instead of "\else"
+ \ifcase\bibcounter\else
\initializepubslist
\let\bibcounter\!!zerocount
- \placelist[pubs][\c!criterium=\v!all,#1]%
+ \inpublisttrue
+ \placelist[\biblistname][\c!criterium=\v!current,#1]%
+ \inpublistfalse
\fi}
\def\dowritebiblist#1#2%
- {\restorebibdata{#2}%
+ {\makepbkvalue{#2}%
\edef\pbnumbercommand{\@@pbinumbercommand{#1}}%
\@EA\dodowritebiblist\@EA{\pbnumbercommand}{\typesetapublication{#2}}}
\def\dodowritebiblist
- {\writetolist[pubs]}
+ {\writetolist[\biblistname]}
\def\writepublist#1%
{\doifnotempty{#1}
@@ -734,31 +799,55 @@
\increment\bibcounter
\@EA\dowritebiblist\@EA{\bibcounter}{#1}}}
-%D \subonderwerp{What's in a publication}
+%D \subsubject{What's in a publication}
%D
-\def\typesetapublication
+\unexpanded\def\typesetapublication
{\doglobal\increment\bibcounter
\dotypesetapublication}
+%D quick hack to make sure stuff isn't typeset twice:
+
+
\def\dotypesetapublication#1%
{\bgroup
\def\@@currentalternative{data}%
- \restorebibdata{#1}%
+ \makepbkvalue{#1}%
\processcommacommand[\bibcommandlist,crossref]\clearbibitem
\processcommalist [artauthor,author,editor]\clearbibitemtwo
\processcommacommand[\bibcommandlist]\bibitemdefs
\processcommalist [artauthor,author,editor,crossref]\bibitemdefs
- \expanded{\reference[\@@pbk]{\bibcounter}}%
- \@@pbd % execute data
- \bibalternative{\@@pbt}% do typesetting
+ \ifinpublist
+ \@EA\ifx\csname #1-is-typeset\endcsname \relax
+ \setgvalue{#1-is-typeset}{1}%
+ \expanded{\reference[#1]{\bibcounter}}%
+ \getvalue{pbdd-#1}%
+ \strut \ifcsname pbdt-#1\endcsname \bibalternative{\getvalue{pbdt-#1}}\fi\strut
+ \else
+ \endgraf
+ \setbox0=\lastbox \unskip
+ \fi
+ \else
+ \getvalue{pbdd-#1}% execute data
+ %\bibalternative{\getvalue{pbdt-#1}}% do typesetting
+ \ifcsname pbdt-#1\endcsname \bibalternative{\getvalue{pbdt-#1}}\fi
+ \fi
\egroup}
+
%D An afterthought
\def\maybeyear#1{}
-%D \onderwerp{Citations}
+%D An another
+
+\def\noopsort#1{}
+
+%D This is the result of bibtex's `language' field.
+
+\def\lang#1{}
+
+%D \subject{Citations}
%D \macros{cite,bibref}
%D
@@ -768,21 +857,49 @@
\def\cite
{\doifnextcharelse{[}
- {\dodoubleempty\docite}
+ {\dodocite}
{\dobibref}}
\def\dobibref#1%
- {\docite[#1]}
+ {\docite[#1][]}
+
+\def\dodocite[#1]%
+ {\startstrictinspectnextcharacter
+ \dodoubleempty\dododocite[#1]}
+
+\def\dododocite[#1][#2]{%
+ \stopstrictinspectnextcharacter
+ \docite[#1][#2]}
\def\docite#1[#2]#3[#4]%
- {\ifsecondargument
- \def\@@currentalternative{#2}%
- \expanded{\processaction[\csname @@pv#2compress\endcsname]}
- [ \v!yes=>\bibcitecompresstrue,
- \v!no=>\bibcitecompressfalse,
- \s!default=>\bibcitecompresstrue,
- \s!unknown=>\bibcitecompresstrue]%
- \getvalue{bib#2ref}[#4]%
+ {\begingroup
+ \ifsecondargument
+ \doifassignmentelse
+ {#2}%
+ {\getparameters[LO][\c!alternative=,\c!extras=,#2]%
+ \edef\@@currentalternative{\LOalternative}%
+ \ifx\@@currentalternative\empty
+ \edef\@@currentalternative{\@@citedefault}%
+ \fi
+ \ifx\LOextras\empty
+ \setupcite[\@@currentalternative][#2]%
+ \else
+ \expandafter\ifx\csname LOright\endcsname \relax
+ \edef\LOextras{{\LOextras\bibalternative\c!right}}%
+ \else
+ \edef\LOextras{{\LOextras\LOright}}%
+ \fi
+ \expanded{\setupcite[\@@currentalternative][#2,\c!right=\LOextras]}%
+ \fi
+ }%
+ {\def\@@currentalternative{#2}}%
+ \expanded{%
+ \processaction[\csname @@pv\@@currentalternative compress\endcsname]}
+ [ \v!yes=>\bibcitecompresstrue,
+ \v!no=>\bibcitecompressfalse,
+ \s!default=>\bibcitecompresstrue,
+ \s!unknown=>\bibcitecompresstrue]%
+ \getvalue{bib\@@currentalternative ref}[#4]%
\else
\expanded{\processaction[\csname @@pv\@@citedefault compress\endcsname]}
[ \v!yes=>\bibcitecompresstrue,
@@ -791,14 +908,46 @@
\s!unknown=>\bibcitecompresstrue]%
\edef\@@currentalternative{\@@citedefault}%
\getvalue{bib\@@citedefault ref}[#2]%
- \fi}
+ \fi
+ \endgroup}
+
+%D \macros{nocite}
+
+\def\nocite[#1]%
+ {\processcommalist[#1]\addthisref}
+
+%D \macros{setupcite}
-\def\setupcite#1[#2]#3[#4]%
- {\def\getciteargs##1{\getparameters[\??pv##1][#4]}%
- \processcommalist[#2]\dosetupcite}
-\def\dosetupcite#1%
- {\getciteargs{#1}}
+\def\setupcite{\dodoubleempty\dosetupcite}
+
+\def\dosetupcite[#1][#2]%
+ {\ifsecondargument
+ \def\dodosetupcite##1{\getparameters[\??pv##1][#2]}%
+ \processcommalist[#1]\dodosetupcite
+ \else % default case
+ \getparameters[\??pv\@@citedefault][#1]%
+ \fi }
+
+
+%D Low-level stuff
+
+\def\getcitedata#1[#2]#3[#4]#5to#6%
+ {\bgroup
+ \addthisref{#4}%
+ \dofetchapublication{#4}%
+ \xdef#6{\csname insert#2\endcsname{}{}{}}%
+ \egroup }
+
+
+\def\dofetchapublication#1%
+ {\makepbkvalue{#1}%
+ \processcommacommand[\bibcommandlist,crossref]\clearbibitem
+ \processcommalist [artauthor,author,editor]\clearbibitemtwo
+ \processcommacommand[\bibcommandlist]\bibitemdefs
+ \processcommalist [artauthor,author,editor,crossref]\bibitemdefs
+ \getvalue{pbdd-#1}}
+
%D \macros{numreferred,doifreferredelse,addthisref,publist}
%D
@@ -827,8 +976,8 @@
%D \type{\startpublication}.
\def\doifbibreferencefoundelse#1#2#3%
- {\doifdefinedelse{pbd-#1}
- {\restorebibdata{#1}#2}
+ {\doifdefinedelse{pbdk-#1}
+ {#2}
{\showmessage\m!bib{5}{#1 is unknown}#3}}
%D \macros{ixbibauthoryear,thebibauthors,thebibyears}
@@ -856,19 +1005,15 @@
%D
%D In `normal' \TeX, of course there are expansion problems again.
-\def\gobble#1{\def#1##1{##1}}
-
-\def\sanitizeaccents{\processcommalist[\',\`,\",\.,\c,\d,\~,\=]\gobble}
+\def\gobbledef#1{\def#1##1{##1}}
\def\ixbibauthoryear#1#2#3#4%
{\bgroup
- \sanitizeaccents
\gdef\ixlastcommand {#4}%
\gdef\ixsecondcommand{#3}%
\gdef\ixfirstcommand {#2}%
\glet\thebibauthors \empty
\glet\thebibyears \empty
- \glet\theauthorssize \empty
\getcommalistsize[#1]%
\ifbibcitecompress
\dorecurse\commalistsize{\xdef\thebibyears{\thebibyears,}}%
@@ -876,8 +1021,6 @@
\else
\processcommalist[#1]\donormalbibauthoryear
\fi
- \getcommacommandsize[\thebibauthors]%
- \xdef\theauthorssize{\commalistsize}%
\egroup
\dobibauthoryear}
@@ -895,8 +1038,8 @@
{\advance\scratchcounter\plusone
\edef\wantednumber{\the\scratchcounter}%
\getfromcommacommand[\thebibyears][\wantednumber]%
- \def\AU{#1}% brr
- \@EA\def\@EA\YR\@EA{\commalistelement}%
+ \@EA\def\@EA\currentbibyear\@EA{\commalistelement}%
+ \def\@currentbibauthor{#1}% brr
\ifnum\scratchcounter=\plusone
\ixfirstcommand
\else\ifnum \scratchcounter=\commalistsize\relax
@@ -905,6 +1048,33 @@
\ixsecondcommand
\fi\fi}
+\def\currentbibauthor%
+ {\getcommacommandsize[\@currentbibauthor]%
+ \ifcase\commalistsize
+ % anonymous?
+ \or
+ \@currentbibauthor
+ \or
+ \expanded{\docurrentbibauthor\@currentbibauthor}%
+ \else
+ % this can't happen/
+ \fi }
+
+
+\def\docurrentbibauthor#1,#2%
+ {\doifemptyelse{#2}
+ {#1\bibalternative{otherstext}}
+ {#1\bibalternative{andtext}#2}}
+
+%D This is not the one Hans made for me, because I need a global
+%D edef, and the \type{\robustdoifinsetelse} doesn't listen to
+%D \type{\doglobal }
+
+\def\robustaddtocommalist#1#2% {item} \cs
+ {\robustdoifinsetelse{#1}#2\resetglobal
+ {\dodoglobal\xdef#2{\ifx#2\empty\else#2,\fi#1}}}
+
+
%D \macros{donormalbibauthoryear}
%D
%D Now we get to the macros that fill the two lists.
@@ -912,14 +1082,14 @@
\def\donormalbibauthoryear#1%
{\addthisref{#1}%
- \xdef\myauthor{Xxxxxxxxxx}%
- \xdef\myyear{0000}%
+ \def\myauthor{Xxxxxxxxxx}%
+ \def\myyear{0000}%
\doifbibreferencefoundelse{#1}
- {\@EA\gdef\@EA\myauthor\@EA{\@@pba}%
- \@EA\gdef\@EA\myyear \@EA{\@@pby}}
+ {\def\myauthor{{\getvalue{pbda-#1}}}%
+ \def\myyear {\getvalue{pbdy-#1}}}%
{}%
- \@EA\doglobal\@EA\addtocommalist\@EA{\myauthor}\thebibauthors
- \@EA\doglobal\@EA\addtocommalist\@EA{\myyear }\thebibyears}
+ \@EA\doglobal\@EA\appendtocommalist\@EA{\myauthor}\thebibauthors
+ \@EA\doglobal\@EA\appendtocommalist\@EA{\myyear }\thebibyears}
%D \macros{docompressbibauthoryear}
%D
@@ -929,11 +1099,11 @@
\def\docompressbibauthoryear#1%
{\addthisref{#1}%
- \xdef\myauthor{Xxxxxxxxxx}%
- \xdef\myyear {0000}%
+ \def\myauthor{Xxxxxxxxxx}%
+ \def\myyear {0000}%
\doifbibreferencefoundelse{#1}
- {\@EA\gdef\@EA\myauthor\@EA{\@@pba}%
- \@EA\gdef\@EA\myyear \@EA{\@@pby}}
+ {\xdef\myauthor{\csname pbda-#1\endcsname }%
+ \xdef\myyear {\csname pbdy-#1\endcsname }}
{}%
\ifx\myauthor\empty\else
\checkifmyauthoralreadyexists
@@ -953,12 +1123,15 @@
\def\checkifmyauthoralreadyexists
{\doifemptyelsevalue{thebibauthors}
- {\global\bibitemcounter\plusone
- \global\bibitemwanted \plusone
- \@EA\gdef\@EA\thebibauthors\@EA{\myauthor}} % hh: one level
- {\getcommacommandsize[\thebibauthors]%
- \global\bibitemwanted\zerocount
+ {\global\bibitemwanted \plusone
+ \global\bibitemcounter \plusone
+ \xdef\thebibauthors{{\myauthor}}}
+ {% the next weirdness is because according to \getcommalistsize,
+ % the length of \type{[{{},{}}]} is 2.
+ \@EA\getcommalistsize\@EA[\thebibauthors,]%
\global\bibitemcounter\commalistsize
+ \global\advance\bibitemcounter\minusone
+ \global\bibitemwanted \zerocount
\processcommacommand[\thebibauthors]\docomparemyauthor}}
%D The outer \type{\ifnum} accomplishes the addition of
@@ -971,16 +1144,15 @@
\def\docomparemyauthor#1%
{\global\advance\bibitemwanted \plusone
\def\mytempc{#1}%
- \ifnum\bibitemwanted = \commalistsize\relax
- \ifx\mytempc\myauthor \else
+% \message{authors: \myauthor <=>\mytempc \ifx\mytempc\myauthor :Y \else :N
+% \meaning \myauthor, \meaning\mytempc\fi (\the\bibitemwanted = \the\bibitemcounter)}%
+ \ifx\mytempc\myauthor
+ \quitcommalist
+ \else
+ \ifnum\bibitemwanted = \bibitemcounter\relax
\global\advance\bibitemwanted \plusone
\global\bibitemcounter\bibitemwanted\relax
- \@EA\doglobal\@EA\addtocommalist\@EA{\myauthor}\thebibauthors
- \quitcommalist
- \fi
- \else
- \ifx\mytempc\myauthor
- \quitcommalist
+ \@EA\doglobal\@EA\robustaddtocommalist\@EA{\myauthor}\thebibauthors
\fi
\fi}
@@ -988,6 +1160,7 @@
\def\findmatchingyear
{\edef\wantednumber{\the\bibitemwanted}%
+% \message{year needed: \wantednumber (\thebibyears)}%
\getfromcommacommand[\thebibyears][\wantednumber]%
\ifx\commalistelement\empty
\edef\myyear{{\myyear}}%
@@ -995,50 +1168,51 @@
\edef\myyear{{\commalistelement, \myyear}}%
\fi
\edef\newcommalistelement{\myyear}%
+% \message{bibyears \wantednumber = \newcommalistelement}%
\doglobal\replaceincommalist \thebibyears \wantednumber}
%D \macros{bibauthoryearref,bibauthoryearsref,bibauthorref,bibyearref}
%D
%D Now that all the hard work has been done, these are simple.
%D \type{\ixbibauthoryearref} stores the data in the macros
-%D \type{\AU} and \type{\YR}.
+%D \type{\currentbibauthor} and \type{\currentbibyear}.
\def\bibauthoryearref[#1]%
{\ixbibauthoryear{#1}%
- {{\AU}\bibalternative\c!inbetween
- \bibalternative\v!left{\YR}\bibalternative\v!right}
- {\bibalternative\c!pubsep{\AU}\bibalternative\c!inbetween
- \bibalternative\v!left {\YR}\bibalternative\v!right}
- {\bibalternative\c!lastpubsep{\AU}\bibalternative\c!inbetween
- \bibalternative\v!left {\YR}\bibalternative\v!right}}
+ {{\currentbibauthor}\bibalternative\c!inbetween
+ \bibalternative\v!left{\currentbibyear}\bibalternative\v!right}
+ {\bibalternative\c!pubsep{\currentbibauthor}\bibalternative\c!inbetween
+ \bibalternative\v!left {\currentbibyear}\bibalternative\v!right}
+ {\bibalternative\c!lastpubsep{\currentbibauthor}\bibalternative\c!inbetween
+ \bibalternative\v!left {\currentbibyear}\bibalternative\v!right}}
\def\bibauthoryearsref[#1]%
{\bibalternative\v!left
\ixbibauthoryear{#1}
- {{\AU}\bibalternative\c!inbetween{\YR}}
- {\bibalternative\c!pubsep {\AU}\bibalternative\c!inbetween{\YR}}
- {\bibalternative\c!lastpubsep{\AU}\bibalternative\c!inbetween{\YR}}%
+ {{\currentbibauthor}\bibalternative\c!inbetween{\currentbibyear}}
+ {\bibalternative\c!pubsep {\currentbibauthor}\bibalternative\c!inbetween{\currentbibyear}}%
+ {\bibalternative\c!lastpubsep{\currentbibauthor}\bibalternative\c!inbetween{\currentbibyear}}%
\bibalternative\v!right}
\def\bibauthorref[#1]%
{\bibalternative\v!left
\ixbibauthoryear{#1}%
- {{\AU}}
- {\bibalternative\c!pubsep {\AU}}
- {\bibalternative\c!lastpubsep{\AU}}%
+ {{\currentbibauthor}}
+ {\bibalternative\c!pubsep {\currentbibauthor}}
+ {\bibalternative\c!lastpubsep{\currentbibauthor}}%
\bibalternative\v!right}
\def\bibyearref[#1]%
{\bibalternative\v!left
\ixbibauthoryear{#1}%
- {{\YR}}
- {\bibalternative\c!pubsep {\YR}}
- {\bibalternative\c!lastpubsep{\YR}}%
+ {{\currentbibyear}}
+ {\bibalternative\c!pubsep {\currentbibyear}}
+ {\bibalternative\c!lastpubsep{\currentbibyear}}%
\bibalternative\v!right}
%D ML problems:
-%D \macros{bibshortref,bibkeyref,bibpageref,bibtyperef,bibnumberref}
+%D \macros{bibshortref,bibkeyref,bibpageref,bibtyperef,bibserialref}
%D
%D There is hardly any point in trying to compress these. The only
%D thing that needs to be done is making sure that
@@ -1051,22 +1225,22 @@
\def\bibshortref[#1]%
{\bibalternative\v!left
- \firstreftrue\processcommalist[#1]\dobibshort
+ \firstreftrue\processcommalist[#1]\dobibshortref
\bibalternative\v!right}
-\def\dobibshort#1%
+\def\dobibshortref#1%
{\addthisref{#1}\refsep
- \doifbibreferencefoundelse{#1}{\@@pbs}{??}}
+ \doifbibreferencefoundelse{#1}{\goto{\getvalue{pbds-#1}}[#1]}{??}}
-\def\bibnumberref[#1]%
+\def\bibserialref[#1]%
{\bibalternative\v!left
- \firstreftrue\processcommalist[#1]\dobibnumbered
+ \firstreftrue\processcommalist[#1]\dobibserialref
\bibalternative\v!right}
-\def\dobibnumbered#1%
+\def\dobibserialref#1%
{\addthisref{#1}\refsep
- \doifbibreferencefoundelse{#1}{\@@pbn}{??}}
+ \doifbibreferencefoundelse{#1}{\getvalue{pbdn-#1}}{??}}
\def\bibkeyref[#1]%
{\bibalternative\v!left
@@ -1076,13 +1250,28 @@
\def\dobibkeyref#1%
{\addthisref{#1}\refsep#1}
+\def\gotoDOI#1#2{\useURL[bibfoo#1][http://dx.doi.org/#2]\goto{\url[bibfoo#1]}[url(bibfoo#1)]}
+
\def\bibdoiref[#1]%
{\bibalternative\v!left
\firstreftrue\processcommalist[#1]\dobibdoiref
\bibalternative\v!right}
\def\dobibdoiref#1%
- {\addthisref{#1}\refsep#1}
+ {\addthisref{#1}\refsep
+ \doifbibreferencefoundelse{#1}{\expanded{\gotoDOI{#1}{\getvalue{pbdo-#1}}}}{??}}
+
+
+\def\biburlref[#1]%
+ {\bibalternative\v!left
+ \firstreftrue\processcommalist[#1]\dobiburlref
+ \bibalternative\v!right}
+
+\def\gotoURL#1#2{\useURL[bibfoo#1][#2]\goto{\url[bibfoo#1]}[url(bibfoo#1)]}
+
+\def\dobiburlref#1%
+ {\addthisref{#1}\refsep
+ \doifbibreferencefoundelse{#1}{\expanded{\gotoURL{#1}{\getvalue{pbdu-#1}}}}{??}}
\def\bibtyperef[#1]%
{\bibalternative\v!left
@@ -1091,7 +1280,7 @@
\def\dobibtyperef#1%
{\addthisref{#1}\refsep
- \doifbibreferencefoundelse{#1}{\@@pbt}{??}}
+ \doifbibreferencefoundelse{#1}{\getvalue{pbdt-#1}}{??}}
\def\bibpageref[#1]%
{\bibalternative\v!left
@@ -1110,6 +1299,8 @@
{\addthisref{#1}\refsep
\doifbibreferencefoundelse{#1}{\dotypesetapublication{#1}}{??}}
+\let\bibnoneref\nocite
+
%D \macros{bibnumref}
%D
%D It makes sense to try and compress the argument list of
@@ -1131,11 +1322,6 @@
%D a list with exactly one entry fails to return anything, which
%D is why the \type{\ifx} is needed).
-\ifx\compresscommacommandnrs\undefined
- \usemodule[list]
- \let\compresscommacommandnrs\compresscommacommand
-\fi
-
\def\bibnumref[#1]%
{\bibalternative\v!left
\penalty\!!tenthousand
@@ -1149,15 +1335,12 @@
\let\therefs\sortedcommalist
\fi
\compresscommacommandnrs[\therefs]%
- % \message{\meaning\therefs, \meaning\compressedlist}%
\processcommacommand[\compressedlist]\verysimplebibnumref
\else
\processcommalist[#1]\dosimplebibnumref
\fi
\bibalternative\v!right}
-%D Here is the simple case first:
-
\def\dosimplebibnumref #1{\refsep\in[#1]}
\def\verysimplebibnumref#1{\doverysimplebibnumref#1}
@@ -1174,6 +1357,6 @@
\setuppublications
[\c!alternative=apa]
-%D \completepublications
+\preloadbiblist
\protect \endinput
diff --git a/tex/context/bib/t-bibltx.tex b/tex/context/bib/t-bibltx.tex
deleted file mode 100644
index cb9e787ad..000000000
--- a/tex/context/bib/t-bibltx.tex
+++ /dev/null
@@ -1,75 +0,0 @@
-%D \module
-%D [ file=t-bibltx,
-%D version=2005.01.04,
-%D title=\CONTEXT\ Publication Module,
-%D subtitle=Publications,
-%D author={Taco Hoekwater},
-%D date=\currentdate,
-%D copyright={Public Domain}]
-%C
-%C Donated to the public domain.
-
-%D \macros{newcommand}
-%D
-%D Just about all databases define something that uses
-%D \type {\newcommand}. This fake version does not cover
-%D everything \type {\newcommand} does, but it should be
-%D enough for simple definitions like the ones found in
-%D \BIBTEX\ files.
-
-\unprotect
-
-\def\@star@or@long#1%
- {\doifnextcharelse*{\afterassignment#1\let\next=}{#1}}
-
-\def\newcommand
- {\@star@or@long\new@command}
-
-\def\new@command#1%
- {\@testopt{\@newcommand#1}0}
-
-\def\@newcommand#1[#2]%
- {\doifnextcharelse[{\@xargdef#1[#2]}{\@argdef#1[#2]}}
-
-\long\def\@argdef#1[#2]#3%
- {\@yargdef#1\@ne{#2}{#3}}
-
-\long\def\@xargdef#1[#2][#3]#4%
- {\@EA\def\@EA#1\@EA{\@EA\do@testopt\@EA#1\csname\string#1\endcsname{#3}}%
- \@EA\@yargdef\csname\string#1\endcsname\tw@{#2}{#4}}
-
-\def\@testopt#1#2%
- {\doifnextcharelse[{#1}{#1[#2]}}
-
-\def\do@testopt#1%
- {\expandafter\@testopt}
-
-\long\def\@yargdef#1#2#3%
- {\!!counta#3\relax
- \advance \!!counta \@ne
- \let\@hash@\relax
- \edef\!!tempa{\ifx#2\tw@ [\@hash@1]\fi}%
- \!!countb #2%
- \loop
- \ifnum\!!countb <\!!counta
- \edef\!!tempa{\!!tempa\@hash@\the\!!countb}%
- \advance\!!countb \@ne
- \repeat
- \let\@hash@##%
- \long\@EA\def\@EA#1\!!tempa}
-
-\long\def\@reargdef#1[#2]%
- {\@yargdef#1\@ne{#2}}
-
-%D Something like the following is needed to support the
-%D average \LATEX-based \BIBTEX\ databases.
-%D
-%D \starttyping
-%D \let\textsc\kap
-%D \def\emph#1{{\em#1}}
-%D \let\sf\ss
-%D \stoptyping
-%D
-%D But we happily leave that to the user.
-
-\protect \endinput
diff --git a/tex/context/interface/cont-cz.xml b/tex/context/interface/cont-cz.xml
index a35cf0d6e..d940b7a5c 100644
--- a/tex/context/interface/cont-cz.xml
+++ b/tex/context/interface/cont-cz.xml
@@ -7562,6 +7562,7 @@
<cd:constant type="stranka"/>
<cd:constant type="naproti"/>
<cd:constant type="vzdy"/>
+ <cd:constant type="auto"/>
<cd:constant type="sila"/>
<cd:constant type="vysoko"/>
<cd:constant type="reset"/>
@@ -9346,6 +9347,8 @@
<cd:constant type="cd:name"/>
</cd:keywords>
<cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="vse"/>
</cd:keywords>
</cd:arguments>
</cd:command>
diff --git a/tex/context/interface/cont-de.xml b/tex/context/interface/cont-de.xml
index 0e3be31e7..9c57cd1ea 100644
--- a/tex/context/interface/cont-de.xml
+++ b/tex/context/interface/cont-de.xml
@@ -7562,6 +7562,7 @@
<cd:constant type="seite"/>
<cd:constant type="gegenueber"/>
<cd:constant type="immer"/>
+ <cd:constant type="auto"/>
<cd:constant type="zwinge"/>
<cd:constant type="lang"/>
<cd:constant type="zuruecksetzten"/>
@@ -9346,6 +9347,8 @@
<cd:constant type="cd:name"/>
</cd:keywords>
<cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="alles"/>
</cd:keywords>
</cd:arguments>
</cd:command>
diff --git a/tex/context/interface/cont-en.xml b/tex/context/interface/cont-en.xml
index f32882eae..08639e437 100644
--- a/tex/context/interface/cont-en.xml
+++ b/tex/context/interface/cont-en.xml
@@ -7562,6 +7562,7 @@
<cd:constant type="page"/>
<cd:constant type="opposite"/>
<cd:constant type="always"/>
+ <cd:constant type="auto"/>
<cd:constant type="force"/>
<cd:constant type="tall"/>
<cd:constant type="reset"/>
@@ -9346,6 +9347,8 @@
<cd:constant type="cd:name"/>
</cd:keywords>
<cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="all"/>
</cd:keywords>
</cd:arguments>
</cd:command>
diff --git a/tex/context/interface/cont-fr.xml b/tex/context/interface/cont-fr.xml
index 0b420db07..5f552c701 100644
--- a/tex/context/interface/cont-fr.xml
+++ b/tex/context/interface/cont-fr.xml
@@ -7562,6 +7562,7 @@
<cd:constant type="page"/>
<cd:constant type="opposition"/>
<cd:constant type="toujours"/>
+ <cd:constant type="auto"/>
<cd:constant type="force"/>
<cd:constant type="long"/>
<cd:constant type="raz"/>
@@ -9346,6 +9347,8 @@
<cd:constant type="cd:name"/>
</cd:keywords>
<cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="tout"/>
</cd:keywords>
</cd:arguments>
</cd:command>
diff --git a/tex/context/interface/cont-it.xml b/tex/context/interface/cont-it.xml
index b746a404b..e62e5bb47 100644
--- a/tex/context/interface/cont-it.xml
+++ b/tex/context/interface/cont-it.xml
@@ -7562,6 +7562,7 @@
<cd:constant type="pagina"/>
<cd:constant type="opposto"/>
<cd:constant type="sempre"/>
+ <cd:constant type="auto"/>
<cd:constant type="forza"/>
<cd:constant type="alto"/>
<cd:constant type="reimposta"/>
@@ -9346,6 +9347,8 @@
<cd:constant type="cd:name"/>
</cd:keywords>
<cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="tutti"/>
</cd:keywords>
</cd:arguments>
</cd:command>
diff --git a/tex/context/interface/cont-nl.xml b/tex/context/interface/cont-nl.xml
index a93db0812..dc9d30d54 100644
--- a/tex/context/interface/cont-nl.xml
+++ b/tex/context/interface/cont-nl.xml
@@ -7562,6 +7562,7 @@
<cd:constant type="pagina"/>
<cd:constant type="naast"/>
<cd:constant type="altijd"/>
+ <cd:constant type="auto"/>
<cd:constant type="forceer"/>
<cd:constant type="lang"/>
<cd:constant type="reset"/>
@@ -9346,6 +9347,8 @@
<cd:constant type="cd:name"/>
</cd:keywords>
<cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="alles"/>
</cd:keywords>
</cd:arguments>
</cd:command>
diff --git a/tex/context/interface/cont-ro.xml b/tex/context/interface/cont-ro.xml
index 9499180e0..9a778a7b5 100644
--- a/tex/context/interface/cont-ro.xml
+++ b/tex/context/interface/cont-ro.xml
@@ -7562,6 +7562,7 @@
<cd:constant type="pagina"/>
<cd:constant type="opus"/>
<cd:constant type="totdeauna"/>
+ <cd:constant type="auto"/>
<cd:constant type="fortat"/>
<cd:constant type="inalt"/>
<cd:constant type="reset"/>
@@ -9346,6 +9347,8 @@
<cd:constant type="cd:name"/>
</cd:keywords>
<cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="tot"/>
</cd:keywords>
</cd:arguments>
</cd:command>
diff --git a/tex/context/interface/keys-cz.xml b/tex/context/interface/keys-cz.xml
index 4304e23a3..9b8bca360 100644
--- a/tex/context/interface/keys-cz.xml
+++ b/tex/context/interface/keys-cz.xml
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
-<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="cz" version="2006.03.25 13:21">
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="cz" version="2006.04.06 23:00">
<cd:variables>
<cd:variable name="one" value="jedna"/>
@@ -236,6 +236,7 @@
<cd:constant name="interaction" value="interakce"/>
<cd:constant name="interlinespace" value="meziradkovamezera"/>
<cd:constant name="items" value="polozky"/>
+ <cd:constant name="fallback" value="fallback"/>
<cd:constant name="frame" value="ramecek"/>
<cd:constant name="framedepth" value="hloubkaramecku"/>
<cd:constant name="framecorner" value="rohramecku"/>
diff --git a/tex/context/interface/keys-de.xml b/tex/context/interface/keys-de.xml
index 8cc3a1e68..3b085f885 100644
--- a/tex/context/interface/keys-de.xml
+++ b/tex/context/interface/keys-de.xml
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
-<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="de" version="2006.03.25 13:21">
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="de" version="2006.04.06 23:00">
<cd:variables>
<cd:variable name="one" value="eins"/>
@@ -236,6 +236,7 @@
<cd:constant name="interaction" value="interaktion"/>
<cd:constant name="interlinespace" value="zeilenabstande"/>
<cd:constant name="items" value="posten"/>
+ <cd:constant name="fallback" value="fallback"/>
<cd:constant name="frame" value="rahmen"/>
<cd:constant name="framedepth" value="rahmentiefe"/>
<cd:constant name="framecorner" value="rahmenwinkel"/>
diff --git a/tex/context/interface/keys-en.xml b/tex/context/interface/keys-en.xml
index 44f1ff998..fae771b3a 100644
--- a/tex/context/interface/keys-en.xml
+++ b/tex/context/interface/keys-en.xml
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
-<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="en" version="2006.03.25 13:21">
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="en" version="2006.04.06 23:00">
<cd:variables>
<cd:variable name="one" value="one"/>
@@ -236,6 +236,7 @@
<cd:constant name="interaction" value="interaction"/>
<cd:constant name="interlinespace" value="interlinespace"/>
<cd:constant name="items" value="items"/>
+ <cd:constant name="fallback" value="fallback"/>
<cd:constant name="frame" value="frame"/>
<cd:constant name="framedepth" value="framedepth"/>
<cd:constant name="framecorner" value="framecorner"/>
diff --git a/tex/context/interface/keys-fr.xml b/tex/context/interface/keys-fr.xml
index 3bd67647c..092430860 100644
--- a/tex/context/interface/keys-fr.xml
+++ b/tex/context/interface/keys-fr.xml
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
-<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="fr" version="2006.03.25 13:21">
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="fr" version="2006.04.06 23:00">
<cd:variables>
<cd:variable name="one" value="un"/>
@@ -236,6 +236,7 @@
<cd:constant name="interaction" value="interaction"/>
<cd:constant name="interlinespace" value="espaceinterligne"/>
<cd:constant name="items" value="elements"/>
+ <cd:constant name="fallback" value="fallback"/>
<cd:constant name="frame" value="cadre"/>
<cd:constant name="framedepth" value="profondeurcadre"/>
<cd:constant name="framecorner" value="coincadre"/>
diff --git a/tex/context/interface/keys-it.xml b/tex/context/interface/keys-it.xml
index 49f05cb8a..bedc84080 100644
--- a/tex/context/interface/keys-it.xml
+++ b/tex/context/interface/keys-it.xml
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
-<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="it" version="2006.03.25 13:21">
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="it" version="2006.04.06 23:00">
<cd:variables>
<cd:variable name="one" value="uno"/>
@@ -236,6 +236,7 @@
<cd:constant name="interaction" value="interazione"/>
<cd:constant name="interlinespace" value="interlinea"/>
<cd:constant name="items" value="elementi"/>
+ <cd:constant name="fallback" value="fallback"/>
<cd:constant name="frame" value="cornice"/>
<cd:constant name="framedepth" value="profonditacornice"/>
<cd:constant name="framecorner" value="angolocornice"/>
diff --git a/tex/context/interface/keys-nl.xml b/tex/context/interface/keys-nl.xml
index 17f53ade2..0cbd21069 100644
--- a/tex/context/interface/keys-nl.xml
+++ b/tex/context/interface/keys-nl.xml
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
-<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="nl" version="2006.03.25 13:21">
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="nl" version="2006.04.06 23:00">
<cd:variables>
<cd:variable name="one" value="een"/>
@@ -236,6 +236,7 @@
<cd:constant name="interaction" value="interactie"/>
<cd:constant name="interlinespace" value="interlinie"/>
<cd:constant name="items" value="items"/>
+ <cd:constant name="fallback" value="terugval"/>
<cd:constant name="frame" value="kader"/>
<cd:constant name="framedepth" value="kaderdiepte"/>
<cd:constant name="framecorner" value="kaderhoek"/>
diff --git a/tex/context/interface/keys-ro.xml b/tex/context/interface/keys-ro.xml
index e12d568b1..0632ec388 100644
--- a/tex/context/interface/keys-ro.xml
+++ b/tex/context/interface/keys-ro.xml
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
-<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="ro" version="2006.03.25 13:21">
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="ro" version="2006.04.06 23:00">
<cd:variables>
<cd:variable name="one" value="unu"/>
@@ -236,6 +236,7 @@
<cd:constant name="interaction" value="interactiune"/>
<cd:constant name="interlinespace" value="spatiereinterliniara"/>
<cd:constant name="items" value="elemente"/>
+ <cd:constant name="fallback" value="fallback"/>
<cd:constant name="frame" value="frame"/>
<cd:constant name="framedepth" value="adancimeframe"/>
<cd:constant name="framecorner" value="coltframe"/>
diff --git a/tex/context/interface/t-bib.xml b/tex/context/interface/t-bib.xml
new file mode 100644
index 000000000..526e2fdf6
--- /dev/null
+++ b/tex/context/interface/t-bib.xml
@@ -0,0 +1,386 @@
+<?xml version="1.0"?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands"
+ name="context/third/t-bib"
+ language="all" version="2006.02.08">
+
+<cd:command name="setuppublications" file="t-bib.tex">
+ <cd:sequence>
+ <cd:string value="setuppublications"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="alternative">
+ <cd:constant type="ams"/>
+ <cd:constant type="apa" default="yes"/>
+ <cd:constant type="apa-de"/>
+ <cd:constant type="apa-fr"/>
+ <cd:constant type="aps"/>
+ <cd:constant type="num"/>
+ <cd:constant type="num-fr"/>
+ <cd:constant type="ssa"/>
+ </cd:parameter>
+ <cd:parameter name="refcommand">
+ <cd:constant type="author"/>
+ <cd:constant type="authoryear"/>
+ <cd:constant type="authoryears" default="yes"/>
+ <cd:constant type="key"/>
+ <cd:constant type="num"/>
+ <cd:constant type="serial"/>
+ <cd:constant type="page"/>
+ <cd:constant type="short"/>
+ <cd:constant type="type"/>
+ <cd:constant type="year"/>
+ <cd:constant type="data"/>
+ <cd:constant type="doi"/>
+ <cd:constant type="url"/>
+ </cd:parameter>
+ <cd:parameter name="sorttype">
+ <cd:constant type="cite" default="yes"/>
+ <cd:constant type="bbl"/>
+ </cd:parameter>
+ <cd:parameter name="criterium">
+ <cd:constant type="all" />
+ <cd:constant type="cite" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="numbering">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ <cd:constant type="short"/>
+ <cd:constant type="bib"/>
+ </cd:parameter>
+ <cd:parameter name="autohang">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppublicationlist" file="t-bib.tex">
+ <cd:sequence>
+ <cd:string value="setuppublicationlist"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="totalnumber">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="samplesize">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="a" default="yes"/>
+ <cd:constant type="b"/>
+ <cd:constant type="c"/>
+ <cd:constant type="..."/>
+ <cd:constant type="none"/>
+ <cd:constant type="command"/>
+ </cd:parameter>
+ <cd:parameter name="criterium">
+ <cd:constant type="cd:section"/>
+ <cd:constant type="local"/>
+ <cd:constant type="previous"/>
+ <cd:constant type="current" default="yes"/>
+ <cd:constant type="all"/>
+ </cd:parameter>
+ <cd:parameter name="pagenumber">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="artauthor">
+ <cd:constant type="\normalauthor"/>
+ <cd:constant type="\normalshortauthor"/>
+ <cd:constant type="\invertedauthor"/>
+ <cd:constant type="\invertedshortauthor" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="author">
+ <cd:constant type="\normalauthor"/>
+ <cd:constant type="\normalshortauthor"/>
+ <cd:constant type="\invertedauthor"/>
+ <cd:constant type="\invertedshortauthor" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="editor">
+ <cd:constant type="\normalauthor"/>
+ <cd:constant type="\normalshortauthor"/>
+ <cd:constant type="\invertedauthor"/>
+ <cd:constant type="\invertedshortauthor" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="namesep">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="lastnamesep">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="finalnamesep">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="firstnamesep">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="juniorsep">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="vonsep">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="surnamesep">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="authoretallimit">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="authoretaltext">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="authoretaldisplay">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="artauthoretallimit">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="artauthoretaltext">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="artauthoretaldisplay">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="editoretallimit">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="editoretaltext">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="editoretaldisplay">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+
+<cd:command name="setupcite" file="t-bib.tex">
+ <cd:sequence>
+ <cd:string value="setupcite"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="author"/>
+ <cd:constant type="year"/>
+ <cd:constant type="authoryear"/>
+ <cd:constant type="authoryears"/>
+ <cd:constant type="key"/>
+ <cd:constant type="serial"/>
+ <cd:constant type="page"/>
+ <cd:constant type="short"/>
+ <cd:constant type="type"/>
+ <cd:constant type="data"/>
+ <cd:constant type="doi"/>
+ <cd:constant type="url"/>
+ <cd:constant type="num"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="andtext">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="otherstext">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="pubsep">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="lastpubsep">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="compress">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppublicationlayout" file="t-bib.tex">
+ <cd:sequence>
+ <cd:string value="setuppublicationlayout"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="article"/>
+ <cd:constant type="book"/>
+ <cd:constant type="booklet"/>
+ <cd:constant type="conference"/>
+ <cd:constant type="electronic"/>
+ <cd:constant type="inbook"/>
+ <cd:constant type="incollection"/>
+ <cd:constant type="inproceedings"/>
+ <cd:constant type="manual"/>
+ <cd:constant type="mastersthesis"/>
+ <cd:constant type="misc"/>
+ <cd:constant type="patent"/>
+ <cd:constant type="periodical"/>
+ <cd:constant type="phdthesis"/>
+ <cd:constant type="proceedings"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="techreport"/>
+ <cd:constant type="unpublished"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+
+<cd:command name="setupbibtex" file="t-bib.tex">
+ <cd:sequence>
+ <cd:string value="setupbibtex"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="database">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="sort">
+ <cd:constant type="title"/>
+ <cd:constant type="author"/>
+ <cd:constant type="short"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+
+<cd:command name="usepublications" file="t-bib.tex">
+ <cd:sequence>
+ <cd:string value="usepublications"/>
+ </cd:sequence>
+ <cd:arguments list="yes">
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+
+<cd:command name="publication" file="t-bib.tex" type="environment">
+ <cd:sequence>
+ <cd:string value="publication"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="k">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="a">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="s">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="t">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="u">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="o">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="cite" file="t-bib.tex">
+ <cd:sequence>
+ <cd:string value="cite"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="author"/>
+ <cd:constant type="year"/>
+ <cd:constant type="authoryear"/>
+ <cd:constant type="authoryears"/>
+ <cd:constant type="key"/>
+ <cd:constant type="serial"/>
+ <cd:constant type="page"/>
+ <cd:constant type="short"/>
+ <cd:constant type="type"/>
+ <cd:constant type="doi"/>
+ <cd:constant type="data"/>
+ <cd:constant type="url"/>
+ <cd:constant type="num"/>
+ </cd:keywords>
+ <cd:reference list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="citealt" file="t-bib.tex">
+ <cd:sequence>
+ <cd:string value="cite"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="alternative">
+ <cd:constant type="author"/>
+ <cd:constant type="year"/>
+ <cd:constant type="authoryear"/>
+ <cd:constant type="authoryears"/>
+ <cd:constant type="key"/>
+ <cd:constant type="serial"/>
+ <cd:constant type="page"/>
+ <cd:constant type="short"/>
+ <cd:constant type="type"/>
+ <cd:constant type="doi"/>
+ <cd:constant type="data"/>
+ <cd:constant type="url"/>
+ <cd:constant type="num"/>
+ </cd:parameter>
+ <cd:parameter name="extras">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:inherit name="setupcite"/>
+ </cd:assignments>
+ <cd:reference list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placepublications" file="t-bib.tex">
+ <cd:sequence>
+ <cd:string value="placepublications"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="completepublications" file="t-bib.tex">
+ <cd:sequence>
+ <cd:string value="completepublications"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+
+</cd:interface>
diff --git a/tex/context/patterns/lang-agr.hyp b/tex/context/patterns/lang-agr.hyp
new file mode 100644
index 000000000..f0564de0f
--- /dev/null
+++ b/tex/context/patterns/lang-agr.hyp
@@ -0,0 +1,10 @@
+% context hyphenation file, see lang-agr.rme for original comment
+
+% source of data: grahyph4.tex oldgrhyph.tex
+
+% begin hyphenation data
+
+\hyphenation {}
+
+% end hyphenation data
+
diff --git a/tex/context/patterns/lang-agr.pat b/tex/context/patterns/lang-agr.pat
new file mode 100644
index 000000000..b8c7b216b
--- /dev/null
+++ b/tex/context/patterns/lang-agr.pat
@@ -0,0 +1,2026 @@
+% context pattern file, see lang-agr.rme for original comment
+
+% source of data: grahyph4.tex oldgrhyph.tex
+
+% begin pattern data
+
+\patterns {
+[greekalpha]1
+[greekepsilon]1
+[greeketa]1
+[greekiota]1
+[greekomicron]1
+[greekupsilon]1
+[greekomega]1
+[greekalpha]2[greekIotadialytika]1
+[greeketa]2[greekIotadialytika]1
+[greekomega]2[greekIotadialytika]1
+[greekalpha]2[greekiota]
+[greekalpha]2[greekiotaoxia]
+[greekalpha]2[greekiotavaria]
+[greekalpha]2[greekiotaperispomeni]
+[greekalpha]2[greekiotapsili]
+[greekalpha]2[greekiotapsilitonos]
+[greekalpha]2[greekiotapsilivaria]
+[greekalpha]2[greekiotapsiliperispomeni]
+[greekalpha]2[greekiotadasia]
+[greekalpha]2[greekiotadasiatonos]
+[greekalpha]2[greekiotadasiavaria]
+[greekalpha]2[greekiotadasiaperispomeni]
+[greekalphaoxia]3[greekiota]
+[greekalphaperispomeni]3[greekiota]
+[greekalphapsili]3[greekiota]
+[greekalphadasia]3[greekiota]
+[greekalpha]2[greekupsilon]
+[greekalpha]2[greekupsilonoxia]
+[greekalpha]2[greekupsilonvaria]
+[greekalpha]2[greekupsilonperispomeni]
+[greekalpha]2[greekupsilonpsili]
+[greekalpha]2[greekupsilonpsilitonos]
+[greekalpha]2[psili][greekupsilonvaria]
+[greekalpha]2[greekupsilonpsiliperispomeni]
+[greekalpha]2[greekupsilondasia]
+[greekalpha]2[greekupsilondasiatonos]
+[greekalpha]2[greekupsilondasiavaria]
+[greekalpha]2[greekupsilondasiaperispomeni]
+[greekalphaoxia]3[greekupsilon]
+[greekalphaperispomeni]3[greekupsilon]
+[greekalphapsili]3[greekupsilon]
+[greekalphadasia]3[greekupsilon]
+[greekepsilon]2[greekiota]
+[greekepsilon]2[greekiotaoxia]
+[greekepsilon]2[greekiotavaria]
+[greekepsilon]2[greekiotaperispomeni]
+[greekepsilon]2[greekiotapsili]
+[greekepsilon]2[greekiotapsilitonos]
+[greekepsilon]2[greekiotapsilivaria]
+[greekepsilon]2[greekiotapsiliperispomeni]
+[greekepsilon]2[greekiotadasia]
+[greekepsilon]2[greekiotadasiatonos]
+[greekepsilon]2[greekiotadasiavaria]
+[greekepsilon]2[greekiotadasiaperispomeni]
+[greekepsilonoxia]3[greekiota]
+[greekepsilonpsili]3[greekiota]
+[greekepsilondasia]3[greekiota]
+[greekepsilon]2[greekupsilon]
+[greekepsilon]2[greekupsilonoxia]
+[greekepsilon]2[greekupsilonvaria]
+[greekepsilon]2[greekupsilonperispomeni]
+[greekepsilon]2[greekupsilonpsili]
+[greekepsilon]2[greekupsilonpsilitonos]
+[greekepsilon]2[psili][greekupsilonvaria]
+[greekepsilon]2[greekupsilonpsiliperispomeni]
+[greekepsilon]2[greekupsilondasia]
+[greekepsilon]2[greekupsilondasiatonos]
+[greekepsilon]2[greekupsilondasiavaria]
+[greekepsilon]2[greekupsilondasiaperispomeni]
+[greekepsilonoxia]3[greekupsilon]
+[greekepsilondasia]3[greekupsilon]
+[greekepsilonpsili]3[greekupsilon]
+[greeketa]2[greekupsilon]
+[greeketa]2[greekupsilonoxia]
+[greeketa]2[greekupsilonvaria]
+[greeketa]2[greekupsilonperispomeni]
+[greeketa]2[greekupsilonpsili]
+[greeketa]2[greekupsilonpsilitonos]
+[greeketa]2[psili][greekupsilonvaria]
+[greeketa]2[greekupsilonpsiliperispomeni]
+[greeketa]2[greekupsilondasia]
+[greeketa]2[greekupsilondasiatonos]
+[greeketa]2[greekupsilondasiavaria]
+[greeketa]2[greekupsilondasiaperispomeni]
+[greeketaoxia]3[greekupsilon]
+[greeketaperispomeni]3[greekupsilon]
+[greeketapsili]3[greekupsilon]
+[greeketadasia]3[greekupsilon]
+[greekomicron]2[greekiota]
+[greekomicron]2[greekiotaoxia]
+[greekomicron]2[greekiotavaria]
+[greekomicron]2[greekiotaperispomeni]
+[greekomicron]2[greekiotapsili]
+[greekomicron]2[greekiotapsilitonos]
+[greekomicron]2[greekiotapsilivaria]
+[greekomicron]2[greekiotapsiliperispomeni]
+[greekomicron]2[greekiotadasia]
+[greekomicron]2[greekiotadasiatonos]
+[greekomicron]2[greekiotadasiavaria]
+[greekomicron]2[greekiotadasiaperispomeni]
+[greekomicronoxia]3[greekiota]
+[greekomicronpsili]3[greekiota]
+[greekomicrondasia]3[greekiota]
+[greekomicron]2[greekupsilon]
+[greekomicron]2[greekupsilonoxia]
+[greekomicron]2[greekupsilonvaria]
+[greekomicron]2[greekupsilonperispomeni]
+[greekomicron]2[greekupsilonpsili]
+[greekomicron]2[greekupsilonpsilitonos]
+[greekomicron]2[psili][greekupsilonvaria]
+[greekomicron]2[greekupsilonpsiliperispomeni]
+[greekomicron]2[greekupsilondasia]
+[greekomicron]2[greekupsilondasiatonos]
+[greekomicron]2[greekupsilondasiavaria]
+[greekomicron]2[greekupsilondasiaperispomeni]
+[greekomicronoxia]3[greekupsilon]
+[greekomicronpsili]3[greekupsilon]
+[greekomicrondasia]3[greekupsilon]
+[greekupsilon]2[greekiota]
+[greekupsilon]2[greekiotaoxia]
+[greekupsilon]2[greekiotavaria]
+[greekupsilon]2[greekiotaperispomeni]
+[greekupsilon]2[greekiotapsili]
+[greekupsilon]2[greekiotapsilitonos]
+[greekupsilon]2[greekiotapsilivaria]
+[greekupsilon]2[greekiotapsiliperispomeni]
+[greekupsilon]2[greekiotadasia]
+[greekupsilon]2[greekiotadasiatonos]
+[greekupsilon]2[greekiotadasiavaria]
+[greekupsilon]2[greekiotadasiaperispomeni]
+[greekupsilonoxia]3[greekiota]
+[greekupsilonperispomeni]3[greekiota]
+[greekupsilonpsili]3[greekiota]
+[greekupsilondasia]3[greekiota]
+[greekomicron][greekupsilon]3[greekiota]
+[greekomicronoxia][greekupsilon]4[greekiota]
+[greekomicronpsili][greekupsilon]4[greekiota]
+[greekomicrondasia][greekupsilon]4[greekiota]
+[greekomicron]3[greekupsilon][greekiotaoxia]
+[greekomicron]3[greekupsilon][greekiotaperispomeni]
+4[greekbeta].
+4[greekgamma].
+4[greekdelta].
+4[greekzeta].
+4[greektheta].
+4[greekkappa].
+4[greeklambda].
+4[greekmu].
+4[greeknu].
+4[greekxi].
+4[greekpi].
+4[greekrho].
+4[greeksigma].
+4[greekfinalsigma].
+4[greektau].
+4[greekphi].
+4[greekchi].
+4[greekpsi].
+4[oxia][oxia]
+4[greekbeta][oxia][oxia]
+4[greekgamma][oxia][oxia]
+4[greekdelta][oxia][oxia]
+4[greekzeta][oxia][oxia]
+4[greektheta][oxia][oxia]
+4[greekkappa][oxia][oxia]
+4[greeklambda][oxia][oxia]
+4[greekmu][oxia][oxia]
+4[greeknu][oxia][oxia]
+4[greekxi][oxia][oxia]
+4[greekpi][oxia][oxia]
+4[greekrho][oxia][oxia]
+4[greeksigma][oxia][oxia]
+4[greektau][oxia][oxia]
+4[greekphi][oxia][oxia]
+4[greekchi][oxia][oxia]
+4[greekpsi][oxia][oxia]
+.[greekbeta]4
+.[greekgamma]4
+.[greekdelta]4
+.[greekzeta]4
+.[greektheta]4
+.[greekkappa]4
+.[greeklambda]4
+.[greekmu]4
+.[greeknu]4
+.[greekxi]4
+.[greekpi]4
+.[greekrho]4
+.[greeksigma]4
+.[greektau]4
+.[greekphi]4
+.[greekchi]4
+.[greekpsi]4
+2[greekbeta]1[greekbeta]
+2[greekgamma]1[greekgamma]
+2[greekdelta]1[greekdelta]
+2[greekzeta]1[greekzeta]
+2[greektheta]1[greektheta]
+2[greekkappa]1[greekkappa]
+2[greeklambda]1[greeklambda]
+2[greekmu]1[greekmu]
+2[greeknu]1[greeknu]
+2[greekpi]1[greekpi]
+2[greekrho]1[greekrho]
+[psili]2[greekrho]1[dasia]2[greekrho]
+2[greeksigma]1[greeksigma]
+2[greektau]1[greektau]
+2[greekphi]1[greekphi]
+2[greekchi]1[greekchi]
+2[greekpsi]1[greekpsi]
+2[greekbeta]1[greekgamma]
+2[greekbeta]1[greekzeta]
+2[greekbeta]1[greektheta]
+2[greekbeta]1[greekkappa]
+2[greekbeta]1[greekxi]
+2[greekbeta]1[greekpi]
+2[greekbeta]1[greeksigma]
+2[greekbeta]1[greektau]
+2[greekbeta]1[greekphi]
+2[greekbeta]1[greekchi]
+2[greekbeta]1[greekpsi]
+2[greekgamma]1[greekbeta]
+2[greekgamma]1[greekzeta]
+2[greekgamma]1[greektheta]
+2[greekgamma]1[greekkappa]
+2[greekgamma]1[greekxi]
+2[greekgamma]1[greekpi]
+2[greekgamma]1[greeksigma]
+2[greekgamma]1[greektau]
+2[greekgamma]1[greekphi]
+2[greekgamma]1[greekchi]
+2[greekgamma]1[greekpsi]
+2[greekdelta]1[greekbeta]
+2[greekdelta]1[greekgamma]
+2[greekdelta]1[greekzeta]
+2[greekdelta]1[greektheta]
+2[greekdelta]1[greekkappa]
+2[greekdelta]1[greeklambda]
+2[greekdelta]1[greekxi]
+2[greekdelta]1[greekpi]
+2[greekdelta]1[greeksigma]
+2[greekdelta]1[greektau]
+2[greekdelta]1[greekphi]
+2[greekdelta]1[greekchi]
+2[greekdelta]1[greekpsi]
+2[greekzeta]1[greekbeta]
+2[greekzeta]1[greekgamma]
+2[greekzeta]1[greekdelta]
+2[greekzeta]1[greektheta]
+2[greekzeta]1[greekkappa]
+2[greekzeta]1[greeklambda]
+2[greekzeta]1[greekmu]
+2[greekzeta]1[greeknu]
+2[greekzeta]1[greekxi]
+2[greekzeta]1[greekpi]
+2[greekzeta]1[greekrho]
+2[greekzeta]1[greeksigma]
+2[greekzeta]1[greektau]
+2[greekzeta]1[greekphi]
+2[greekzeta]1[greekchi]
+2[greekzeta]1[greekpsi]
+2[greektheta]1[greekbeta]
+2[greektheta]1[greekgamma]
+2[greektheta]1[greekdelta]
+2[greektheta]1[greekzeta]
+2[greektheta]1[greekkappa]
+2[greektheta]1[greekxi]
+2[greektheta]1[greekpi]
+2[greektheta]1[greeksigma]
+2[greektheta]1[greektau]
+2[greektheta]1[greekphi]
+2[greektheta]1[greekchi]
+2[greektheta]1[greekpsi]
+2[greekkappa]1[greekbeta]
+2[greekkappa]1[greekgamma]
+2[greekkappa]1[greekdelta]
+2[greekkappa]1[greekzeta]
+2[greekkappa]1[greektheta]
+2[greekkappa]1[greekxi]
+2[greekkappa]1[greekpi]
+2[greekkappa]1[greeksigma]
+2[greekkappa]1[greekphi]
+2[greekkappa]1[greekchi]
+2[greekkappa]1[greekpsi]
+2[greeklambda]1[greekbeta]
+2[greeklambda]1[greekgamma]
+2[greeklambda]1[greekdelta]
+2[greeklambda]1[greekzeta]
+2[greeklambda]1[greektheta]
+2[greeklambda]1[greekkappa]
+2[greeklambda]1[greekmu]
+2[greeklambda]1[greeknu]
+2[greeklambda]1[greekxi]
+2[greeklambda]1[greekpi]
+2[greeklambda]1[greekrho]
+2[greeklambda]1[greeksigma]
+2[greeklambda]1[greektau]
+2[greeklambda]1[greekphi]
+2[greeklambda]1[greekchi]
+2[greeklambda]1[greekpsi]
+2[greekmu]1[greekbeta]
+2[greekmu]1[greekgamma]
+2[greekmu]1[greekdelta]
+2[greekmu]1[greekzeta]
+2[greekmu]1[greektheta]
+2[greekmu]1[greekkappa]
+2[greekmu]1[greeklambda]
+2[greekmu]1[greekxi]
+2[greekmu]1[greekpi]
+2[greekmu]1[greekrho]
+2[greekmu]1[greeksigma]
+2[greekmu]1[greektau]
+2[greekmu]1[greekphi]
+2[greekmu]1[greekchi]
+2[greekmu]1[greekpsi]
+2[greeknu]1[greekbeta]
+2[greeknu]1[greekgamma]
+2[greeknu]1[greekdelta]
+2[greeknu]1[greekzeta]
+2[greeknu]1[greektheta]
+2[greeknu]1[greekkappa]
+2[greeknu]1[greeklambda]
+2[greeknu]1[greekmu]
+2[greeknu]1[greekxi]
+2[greeknu]1[greekpi]
+2[greeknu]1[greekrho]
+2[greeknu]1[greeksigma]
+2[greeknu][greekfinalsigma].
+2[greeknu]1[greektau]
+2[greeknu]1[greekphi]
+2[greeknu]1[greekchi]
+2[greeknu]1[greekpsi]
+2[greekxi]1[greekbeta]
+2[greekxi]1[greekgamma]
+2[greekxi]1[greekdelta]
+2[greekxi]1[greekzeta]
+2[greekxi]1[greektheta]
+2[greekxi]1[greekkappa]
+2[greekxi]1[greeklambda]
+2[greekxi]1[greekmu]
+2[greekxi]1[greeknu]
+2[greekxi]1[greekpi]
+2[greekxi]1[greekrho]
+2[greekxi]1[greeksigma]
+2[greekxi]1[greektau]
+2[greekxi]1[greekphi]
+2[greekxi]1[greekchi]
+2[greekxi]1[greekpsi]
+2[greekpi]1[greekbeta]
+2[greekpi]1[greekgamma]
+2[greekpi]1[greekdelta]
+2[greekpi]1[greekzeta]
+2[greekpi]1[greektheta]
+2[greekpi]1[greekkappa]
+2[greekpi]1[greekxi]
+2[greekpi]1[greeksigma]
+2[greekpi]1[greekphi]
+2[greekpi]1[greekchi]
+2[greekpi]1[greekpsi]
+2[greekrho]1[greekbeta]
+2[greekrho]1[greekgamma]
+2[greekrho]1[greekdelta]
+2[greekrho]1[greekzeta]
+2[greekrho]1[greektheta]
+2[greekrho]1[greekkappa]
+2[greekrho]1[greeklambda]
+2[greekrho]1[greekmu]
+2[greekrho]1[greeknu]
+2[greekrho]1[greekxi]
+2[greekrho]1[greekpi]
+2[greekrho]1[greeksigma]
+2[greekrho]1[greektau]
+2[greekrho]1[greekphi]
+2[greekrho]1[greekchi]
+2[greekrho]1[greekpsi]
+2[greeksigma]1[greekdelta]
+2[greeksigma]1[greekzeta]
+2[greeksigma]1[greeklambda]
+2[greeksigma]1[greeknu]
+2[greeksigma]1[greekxi]
+2[greeksigma]1[greekrho]
+2[greeksigma]1[greekpsi]
+2[greektau]1[greekbeta]
+2[greektau]1[greekgamma]
+2[greektau]1[greekdelta]
+2[greektau]1[greekzeta]
+2[greektau]1[greektheta]
+2[greektau]1[greekkappa]
+2[greektau]1[greekxi]
+2[greektau]1[greekpi]
+2[greektau]1[greeksigma]
+2[greektau]1[greekphi]
+2[greektau]1[greekchi]
+2[greektau]1[greekpsi]
+2[greekphi]1[greekbeta]
+2[greekphi]1[greekgamma]
+2[greekphi]1[greekdelta]
+2[greekphi]1[greekzeta]
+2[greekphi]1[greekkappa]
+2[greekphi]1[greekxi]
+2[greekphi]1[greekpi]
+2[greekphi]1[greeksigma]
+2[greekphi]1[greektau]
+2[greekphi]1[greekchi]
+2[greekphi]1[greekpsi]
+2[greekchi]1[greekbeta]
+2[greekchi]1[greekgamma]
+2[greekchi]1[greekdelta]
+2[greekchi]1[greekzeta]
+2[greekchi]1[greekkappa]
+2[greekchi]1[greekxi]
+2[greekchi]1[greekpi]
+2[greekchi]1[greeksigma]
+2[greekchi]1[greektau]
+2[greekchi]1[greekphi]
+2[greekchi]1[greekpsi]
+2[greekpsi]1[greekbeta]
+2[greekpsi]1[greekgamma]
+2[greekpsi]1[greekdelta]
+2[greekpsi]1[greekzeta]
+2[greekpsi]1[greektheta]
+2[greekpsi]1[greekkappa]
+2[greekpsi]1[greeklambda]
+2[greekpsi]1[greekmu]
+2[greekpsi]1[greeknu]
+2[greekpsi]1[greekxi]
+2[greekpsi]1[greekpi]
+2[greekpsi]1[greekrho]
+2[greekpsi]1[greeksigma]
+2[greekpsi]1[greektau]
+2[greekpsi]1[greekphi]
+2[greekpsi]1[greekchi]
+4[greekbeta][greekdelta][oxia][oxia]
+4[greekbeta][greeklambda][oxia][oxia]
+4[greekbeta][greekmu][oxia][oxia]
+4[greekbeta][greeknu][oxia][oxia]
+4[greekbeta][greekrho][oxia][oxia]
+4[greekgamma][greekdelta][oxia][oxia]
+4[greekgamma][greeklambda][oxia][oxia]
+4[greekgamma][greekmu][oxia][oxia]
+4[greekgamma][greeknu][oxia][oxia]
+4[greekgamma][greekrho][oxia][oxia]
+4[greekdelta][greekmu][oxia][oxia]
+4[greekdelta][greeknu][oxia][oxia]
+4[greekdelta][greekrho][oxia][oxia]
+4[greekzeta][greekbeta][oxia][oxia]
+4[greektheta][greeklambda][oxia][oxia]
+4[greeklambda][greekmu][oxia][oxia]
+4[greektheta][greeknu][oxia][oxia]
+4[greektheta][greekrho][oxia][oxia]
+4[greekkappa][greeklambda][oxia][oxia]
+4[greekkappa][greekmu][oxia][oxia]
+4[greekkappa][greeknu][oxia][oxia]
+4[greekkappa][greekrho][oxia][oxia]
+4[greekkappa][greektau][oxia][oxia]
+4[greekmu][greeknu][oxia][oxia]
+4[greekpi][greeklambda][oxia][oxia]
+4[greekpi][greekmu][oxia][oxia]
+4[greekpi][greeknu][oxia][oxia]
+4[greekpi][greekrho][oxia][oxia]
+4[greekpi][greektau][oxia][oxia]
+4[greeksigma][greekbeta][oxia][oxia]
+4[greeksigma][greekgamma][oxia][oxia]
+4[greeksigma][greekdelta][oxia][oxia]
+4[greeksigma][greektheta][oxia][oxia]
+4[greeksigma][greekkappa][oxia][oxia]
+4[greeksigma][greekmu][oxia][oxia]
+4[greeksigma][greekpi][oxia][oxia]
+4[greeksigma][greektau][oxia][oxia]
+4[greeksigma][greekphi][oxia][oxia]
+4[greeksigma][greekchi][oxia][oxia]
+4[greekphi][greektheta][oxia][oxia]
+4[greekphi][greeklambda][oxia][oxia]
+4[greekphi][greekmu][oxia][oxia]
+4[greekphi][greeknu][oxia][oxia]
+4[greekphi][greekrho][oxia][oxia]
+4[greekchi][greektheta][oxia][oxia]
+4[greekchi][greeklambda][oxia][oxia]
+4[greekchi][greekmu][oxia][oxia]
+4[greekchi][greeknu][oxia][oxia]
+4[greekchi][greekrho][oxia][oxia]
+[greekalphapsili][greekgamma][greekomega]2[greeknu]1[greekalphaoxia][greekrho]
+[greekalphapsili][greekgamma][greekomega]2[greeknu]1[greekalpha][greekrho]
+[greekalphapsili][greekdelta][greekiota][greekepsilonoxia]2[greekxi]1
+[greekalphapsili][greekdelta][greekiota][greekepsilon]2[greekxi]1
+[greekalphapsili][greekdelta][greekupsilon]2[greeksigma]1[greekomegaoxia]
+[greekalphapsili][greekdelta][greekupsilon]2[greeksigma]1[greekomega]
+[greekalphadasia][greeklambda][greekomicronoxia]2[greeksigma]1
+[greekalphadasia][greeklambda][greekomicron]2[greeksigma]1
+[greekalphapsili][greekmu][greekpi][greekalpha][greeklambda][greekiotaoxia]2[greeknu]1
+[greekalphapsili][greekmu][greekpi][greekalpha][greeklambda][greekiota]2[greeknu]1
+[greekalphapsili][greekmu][greekphi][greekiotaoxia]2[greeksigma]1[greekbeta]
+[greekalphapsili][greekmu][greekphi][greekiota]2[greeksigma]1[greekbeta]
+[greekalphapsili][greekmu][greekphi][greekiotaoxia]2[greeksigma]1[greekomega]
+[greekalphapsili][greekmu][greekphi][greekiota]2[greeksigma]1[greekomegaoxia]
+[greekalphapsili]2[greeknu]1[greekalpha][greekgamma][greeketaoxia][greekfinalsigma].
+[greekalphapsili]2[greeknu]1[greekalpha][greekgamma][greeketavaria][greekfinalsigma].
+[greekalphapsili]2[greeknu]1[greekalpha][greekgamma][greeketaoxia][greeksigma].
+[greekalphapsili]2[greeknu]1[greekalpha][greekgamma][greeketavaria][greeksigma].
+[greekalphapsili]2[greeknu]1[greekalpha][greekgamma][greekomicron]
+[greekalphapsili]2[greeknu]1[greekalpha][greekgamma][greekepsilon][greekiotaperispomeni].
+[greekalphapsili]2[greeknu]1[greekalpha][greekgamma][greeketaperispomeni].
+[greekalphapsili]2[greeknu]1[greekalpha][greekgamma][greekepsilonoxia][greekfinalsigma].
+[greekalphapsili]2[greeknu]1[greekalpha][greekgamma][greekepsilonvaria][greekfinalsigma].
+[greekalphapsili]2[greeknu]1[greekalpha][greekgamma][greekepsilonoxia][greeksigma].
+[greekalphapsili]2[greeknu]1[greekalpha][greekgamma][greekepsilonvaria][greeksigma].
+[greekalphapsili]2[greeknu]1[greekalpha][greekgamma][greekepsilon][greekiotaperispomeni][greekfinalsigma].
+[greekalphapsili]2[greeknu]1[greekalpha][greekgamma][greekepsilon][greekiotaperispomeni][greeksigma].
+[greekalphapsili]2[greeknu]1[greekalpha][greekgamma][greekomegaperispomeni][greeknu].
+[greekalphapsili]2[greeknu]1[greekalpha][greekgamma][greekepsilonoxia][greeksigma][greekiota]
+[greekalphapsili]2[greeknu]1[greekalpha][greekgamma][greeketaperispomeni]
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greekgamma][greekkappa][greekupsilon]
+[greekalphapsili]2[greeknu]1[greekalpha][greekgamma][greekkappa][greekupsilonoxia]
+[greekalphapsilitonos]2[greeknu]1[greekalpha][greekgamma][greeknu]
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greekgamma][greeknu]
+[greekalphapsili]2[greeknu]1[greekalpha][greekgamma][greeknu]
+[greekalphapsili]3[greeknu]2[greekalpha][greekgamma][greeknu][greekalphaoxia]
+[greekalphapsili]3[greeknu]2[greekalpha][greekgamma][greeknu][greekomega]
+[greekalphapsili]3[greeknu]2[greekalphaoxia][greekgamma][greeknu][greekomega]
+[greekalphapsili]3[greeknu]2[greekalpha][greekgamma][greeknu][greekomegaoxia]
+[greekalphapsili]2[greeknu]1[greekalpha][greekgamma][greekrho][greekiotaoxia]
+[greekalphapsili]2[greeknu]1[greekalpha][greekgamma][greekrho][greekiotaperispomeni]
+[greekalphapsili]2[greeknu]1[greekalpha][greekgamma][greekrho][greekiota]
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greekgamma][greekomega][greekgamma]
+[greekalphapsili]2[greeknu]1[greekalpha][greekgamma][greekomegaoxia][greekgamma]
+[greekalphapsili]3[greeknu]2[greekalpha][greekgamma][greekomegaoxia][greekgamma][greekiota]
+[greekalphapsili]3[greeknu]2[greekalpha][greekgamma][greekomega][greekgamma][greekiotaoxia]
+[greekalphapsili]4[greeknu]3[greekalpha][greekgamma][greekomega][greekgamma][greekiotaoxia][greekalpha]
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greekdelta][greekepsilon][greeklambda]
+[greekalphapsili]2[greeknu]1[greekalpha][greekdelta][greekepsilonoxia][greeklambda]
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greekepsilon][greeklambda][greekpi]
+[greekalphapsili]2[greeknu]1[greekalpha][greekepsilonoxia][greeklambda][greekpi]
+[greekalphapsilitonos]2[greeknu]1[greekalpha][greektheta][greeklambda]
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greektheta][greeklambda]
+[greekalphapsili]2[greeknu]1[greekalpha][greekiotaoxia][greekdelta]
+[greekalphapsili]2[greeknu]1[greekalpha][greekiota][greekdelta]
+[greekalphapsilitonos]2[greeknu]1[greekalpha][greekiota][greekmu]
+[greekalphapsili]2[greeknu]1[greekalpha][greekiotaoxia][greekmu]
+[greekalphapsili]2[greeknu]1[greekalpha][greekiota][greekmu]
+[greekalphapsili]2[greeknu]1[greekalpha][greekiotaoxia][greeksigma][greektheta]
+[greekalphapsili]2[greeknu]1[greekalpha][greekiota][greeksigma][greektheta]
+[greekalphapsili]2[greeknu]1[greekalpha][greekiota][greeksigma][greekiota]
+[greekalphapsili]2[greeknu]1[greekalpha][greekiota][greeksigma][greekiotaoxia]
+[greekalphapsili]2[greeknu]1[greekalpha][greekiotaoxia][greeksigma][greekchi]
+[greekalphapsili]2[greeknu]1[greekalpha][greekiota][greeksigma][greekchi]
+[greekalphapsili]2[greeknu]1[greekalpha][greekiotaoxia][greektau]
+[greekalphapsili]2[greeknu]1[greekalpha][greekiota][greektau]
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greekkappa][greekalpha][greeknu]
+[greekalphapsili]2[greeknu]1[greekalpha][greekkappa][greekalphaoxia][greeknu]
+[greekalphapsili]2[greeknu]1[greekalpha][greekkappa][greekomicronoxia][greeklambda][greekomicron]
+[greekalphapsili]2[greeknu]1[greekalpha][greekkappa][greekomicron][greeklambda][greekomicron]
+[greekalphapsili]2[greeknu]1[greekalpha][greeklambda][greekgamma]
+[greekalphapsili]2[greeknu]1[greekalpha][greeklambda][greekdelta]
+[greekalphapsili]3[greeknu]2[greekalpha][greeklambda][greekdelta][greekalpha]
+[greekalphapsili]3[greeknu]2[greekalpha][greeklambda][greekdelta][greeketaoxia][greeksigma][greekkappa]
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greeklambda][greekepsilon][greekiota][greekpi]
+[greekalphapsili]2[greeknu]1[greekalpha][greeklambda][greekepsilon][greekiotaoxia][greekpi]
+[greekalphapsili]2[greeknu]1[greekalpha][greeklambda][greekepsilon][greekiota][greekphi]
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greeklambda][greekepsilon][greekiota][greekphi]
+[greekalphapsili]2[greeknu]1[greekalpha][greeklambda][greekepsilon][greekiotaoxia][greekphi]
+[greekalphapsili]2[greeknu]1[greekalpha][greeklambda][greeketaoxia][greektheta]
+[greekalphapsili]2[greeknu]1[greekalpha][greeklambda][greeketa][greektheta]
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greeklambda][greektheta]
+[greekalphapsili]2[greeknu]1[greekalpha][greeklambda][greektheta]
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greeklambda][greekiota][greekpi]
+[greekalphapsili]2[greeknu]1[greekalpha][greeklambda][greekiotaoxia][greekpi]
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greeklambda][greekiota][greeksigma][greektau]
+[greekalphapsili]2[greeknu]1[greekalpha][greeklambda][greekiotaoxia][greeksigma][greektau]
+[greekalphapsili]2[greeknu]1[greekalpha][greeklambda][greekkappa]
+[greekalphapsilitonos]2[greeknu]1[greekalpha][greeklambda][greekkappa]
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greeklambda][greekkappa]
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greeklambda][greeklambda]
+[greekalphapsili]2[greeknu]1[greekalpha][greeklambda][greeklambda]
+[greekalphapsili]3[greeknu]2[greekalphaoxia][greeklambda][greeklambda][greekomicron]
+[greekalphapsili]3[greeknu]2[greekalphaoxia][greeklambda][greeklambda][greekepsilon]
+[greekalphapsilitonos]2[greeknu]1[greekalpha][greeklambda][greekmu]
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greeklambda][greekmu]
+[greekalphapsili]2[greeknu]1[greekalpha][greeklambda][greekmu]
+[greekalphapsilitonos]2[greeknu]1[greekalpha][greeklambda][greekomicron]
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greeklambda][greekomicron][greekupsilon]
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greeklambda][greekomegaiotasub].
+[greekalphapsilitonos]2[greeknu]1[greekalpha][greeklambda][greekepsilon].
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greeklambda][greekomicron][greekiota]
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greeklambda][greekomega][greeknu].
+[greekalphapsilitonos]2[greeknu]1[greekalpha][greeklambda][greektau]
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greeklambda][greektau]
+[greekalphapsili]2[greeknu]1[greekalpha][greekmu][greekalphaoxia][greekxi]
+[greekalphapsili]2[greeknu]1[greekalpha][greekmu][greekalpha][greekxi]
+[greekalphapsili]2[greeknu]1[greekalpha][greekmu][greekalphaoxia][greekrho][greektau]
+[greekalphapsili]2[greeknu]1[greekalpha][greekmu][greekalpha][greekrho][greektau]
+[greekalphapsili]2[greeknu]1[greekalpha][greekmu][greekepsilonoxia][greeklambda][greekgamma]
+[greekalphapsili]2[greeknu]1[greekalpha][greekmu][greekepsilon][greeklambda][greekgamma]
+[greekalphapsili]2[greeknu]1[greekalpha][greekmu][greekpi]
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greekmu][greekpi]
+[greekalphapsili]2[greeknu]1[greekalpha][greekmu][greekphi]
+[greekalphapsili][greeknu][greekalpha][greekmu][greekphi][greekiota]2[greeksigma]1
+[greekalphapsili]2[greeknu]1[greekalpha][greeknu][greekalphaoxia][greekgamma][greekkappa]
+[greekalphapsili]2[greeknu]1[greekalpha][greeknu][greekalpha][greekgamma][greekkappa]
+[greekalphapsilitonos]2[greeknu]1[greekalpha][greeknu][greekdelta]
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greeknu][greekdelta]
+[greekalphapsili]2[greeknu]1[greekalpha][greeknu][greektheta]
+[greekalphapsili]3[greeknu]2[greekalpha][greeknu][greektheta][greekepsilonoxia]
+[greekalphapsili]4[greeknu]3[greekalpha][greeknu][greektheta][greekepsilonoxia][greekfinalsigma].
+[greekalphapsili]4[greeknu]3[greekalpha][greeknu][greektheta][greekepsilonvaria][greekfinalsigma].
+[greekalphapsili]4[greeknu]3[greekalpha][greeknu][greektheta][greekepsilonoxia][greeksigma].
+[greekalphapsili]4[greeknu]3[greekalpha][greeknu][greektheta][greekepsilonvaria][greeksigma].
+[greekalphapsili]4[greeknu]3[greekalpha][greeknu][greektheta][greekepsilonoxia][greeksigma][greekiota]
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greeknu][greekiota][greekomicron]
+[greekalphapsili]2[greeknu]1[greekalpha][greeknu][greekiotaoxia][greekomicron]
+[greekalphapsili]2[greeknu]1[greekalpha][greeknu][greekiotaoxia][greekomega]
+[greekalphapsili]2[greeknu]1[greekalpha][greeknu][greektau][greekalpha][greekgamma]
+[greekalphapsili]2[greeknu]1[greekalpha][greeknu][greektau][greekalpha][greekpi]
+[greekalphapsili]2[greeknu]1[greekalpha][greeknu][greektau][greekiotaoxia]
+[greekalphapsili]2[greeknu]1[greekalpha][greeknu][greektau][greekiota]
+[greekalphapsili][greeknu][greekalpha]2[greekxi]1[greekalpha][greekgamma]
+[greekalphapsili][greeknu][greekalphaoxia]2[greekxi]1[greekalpha][greeknu]
+[greekalphapsili][greeknu][greekalpha]2[greekxi]1[greekalphaoxia][greeknu]
+[greekalphapsili][greeknu][greekalpha]2[greekxi]1[greekalpha][greeknu]
+[greekalphapsili][greeknu][greekalphaoxia]2[greekxi]1[greekalpha][greekrho]
+[greekalphapsili][greeknu][greekalpha]2[greekxi]1[greekalphaoxia][greekrho]
+[greekalphapsili][greeknu][greekalphaoxia]2[greekxi]1[greekiota][greekpi]
+[greekalphapsili][greeknu][greekalpha]2[greekxi]1[greekiotaoxia][greekpi]
+[greekalphapsili]2[greeknu]1[greekalpha][greekxi][greekiota][greekomicronoxia][greeklambda]
+[greekalphapsili]2[greeknu]1[greekalpha][greekxi][greekiota][greekomicron][greeklambda]
+[greekalphapsili]2[greeknu]1[greekalpha][greekxi][greekiota][greekomicronoxia][greekpi]
+[greekalphapsili]2[greeknu]1[greekalpha][greekxi][greekiota][greekomicron][greekpi]
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greekxi][greekiota][greekomicron]
+[greekalphapsili]2[greeknu]1[greekalpha][greekxi][greekiotaoxia][greekomicron]
+[greekalphapsili]2[greeknu]1[greekalpha][greekxi][greekiotaoxia][greekomega]
+[greekalphapsili]2[greeknu]1[greekalpha][greekxi][greekiotaoxia][greekalpha]
+[greekalphapsili]2[greeknu]1[greekalpha][greekxi][greekiotaperispomeni][greekalpha]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekalphaoxia][greeklambda][greeklambda][greekalpha]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekalpha][greeklambda][greeklambda][greekalphaoxia]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekalphaoxia][greekrho][greektau]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekalpha][greekrho][greektau]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekalpha][greekupsilonoxia][greekdelta]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekalpha][greekupsilon][greekdelta]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekomicronoxia][greekbeta]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekomicron][greekbeta]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekomicronoxia][greekgamma]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekomicron][greekgamma]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekomicron][greekdelta][greeketaoxia]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekomicron][greekdelta][greeketa]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekomicronoxia][greekdelta][greekomicron]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekomicron][greekdelta][greekomicronoxia]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekomicronoxia][greekdelta][greekrho]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekomicron][greekdelta][greekrho]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekomicronoxia][greeklambda][greekalpha][greekupsilon]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekomicron][greeklambda][greekalpha][greekupsilonoxia]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekomicron][greeklambda][greekomicronoxia]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekomicron][greeklambda][greekomicron]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekomicronoxia][greeklambda][greekupsilon]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekomicron][greeklambda][greekupsilonoxia]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekomicronoxia][greeknu]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekomicron][greeknu]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekomicronoxia][greekpi]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekomicron][greekpi]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekomicronoxia][greeksigma]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekomicron][greeksigma]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekomicronoxia][greektau][greekepsilon]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekomicron][greektau][greekepsilon]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekomicronoxia][greektau][greekmu]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekomicron][greektau][greekmu]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekomicronoxia][greektau][greekrho]
+[greekalphapsili]2[greeknu]1[greekalpha][greekpi][greekomicron][greektau][greekrho]
+[greekalphapsili]2[greeknu]1[greekalpha][greekrho][greekalphaoxia]
+[greekalphapsili]2[greeknu]1[greekalpha][greekrho][greekalpha]
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greekrho]
+[greekalphapsili]2[greeknu]1[greekalpha][greekrho]
+[greekalphapsilitonos]2[greeknu]1[greekalpha][greekrho]
+[greekalphapsili]3[greeknu]2[greekalpha][greekrho][greekiotaoxia][greektau]
+[greekalphapsili]3[greeknu]2[greekalpha][greekrho][greekiotaperispomeni][greektau]
+[greekalphapsili]3[greeknu]2[greekalpha][greekrho][greekiota][greektau]
+[greekalphapsili]3[greeknu]2[greekalpha][greekrho][greekpi]
+[greekalphapsili]3[greeknu]2[greekalphaoxia][greekrho][greekrho]
+[greekalphapsili]3[greeknu]2[greekalpha][greekrho][greekrho]
+[greekalphapsili]4[greeknu]3[greekalpha][greekrho][greekrho][greekalpha][greekgamma]
+[greekalphapsili]3[greeknu]2[greekalpha][greekrho][greektau]
+[greekalphapsili]3[greeknu]2[greekalpha][greekrho][greekupsilonoxia][greektau]
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greeksigma][greekkappa][greeketa]
+[greekalphapsili]2[greeknu]1[greekalpha][greeksigma][greekkappa][greeketaoxia]
+[greekalphapsilitonos]2[greeknu]1[greekalpha][greeksigma][greekpi][greekiota]
+[greekalphapsili]2[greeknu]1[greekalpha][greeksigma][greekpi][greekiotaoxia]
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greeksigma][greeksigma][greekalpha][greektau]
+[greekalphapsili]2[greeknu]1[greekalpha][greeksigma][greeksigma][greekalphaoxia][greektau]
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greeksigma][greektau][greekepsilon][greekiota]
+[greekalphapsili]2[greeknu]1[greekalpha][greeksigma][greektau][greekepsilon][greekiotaoxia]
+[greekalphapsili]3[greeknu]2[greekalpha][greeksigma][greektau][greekepsilon][greekiotaoxia][greekbeta]
+[greekalphapsili]3[greeknu]2[greekalphaoxia][greeksigma][greektau][greekepsilon][greekiota][greekrho]
+[greekalphapsili]3[greeknu]2[greekalpha][greeksigma][greektau][greekepsilon][greekiotaoxia][greekrho]
+[greekalphapsili]3[greeknu]2[greekalphaoxia][greeksigma][greektau][greekepsilon][greekiota][greekchi]
+[greekalphapsili]3[greeknu]2[greekalpha][greeksigma][greektau][greekepsilon][greekiotaoxia][greekchi]
+[greekalphapsili]2[greeknu]1[greekalpha][greektau][greekepsilon][greekiotavaria].
+[greekalphapsili]2[greeknu]1[greekalpha][greektau][greekepsilon][greekiotaoxia].
+[greekalphapsili]2[greeknu]1[greekalpha][greektau][greekiotavaria].
+[greekalphapsili]2[greeknu]1[greekalpha][greektau][greekiotaoxia].
+[greekalphapsilitonos]2[greeknu]1[greekalpha][greektau][greekomicron][greekfinalsigma].
+[greekalphapsilitonos]2[greeknu]1[greekalpha][greektau][greekomicron][greeksigma].
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greektau][greekomicron][greekupsilon].
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greektau][greekomega]
+[greekalphapsilitonos]2[greeknu]1[greekalpha][greektau][greekomicron][greeknu].
+[greekalphapsilitonos]2[greeknu]1[greekalpha][greektau][greekepsilon]
+[greekalphapsilitonos]2[greeknu]1[greekalpha][greektau][greekomicron][greekiota].
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greektau][greekomicron][greekiota][greekfinalsigma].
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greektau][greekomicron][greekiota][greeksigma].
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greektau][greektau]
+[greekalphapsili]2[greeknu]1[greekalpha][greektau][greektau]
+[greekalphapsili]2[greeknu]1[greekalpha][greekupsilonoxia][greekgamma]
+[greekalphapsili]2[greeknu]1[greekalpha][greekupsilon][greekgamma]
+[greekalphapsili]2[greeknu]1[greekalpha][greekupsilonoxia][greekdelta]
+[greekalphapsili]2[greeknu]1[greekalpha][greekupsilon][greekdelta]
+[greekalphapsili]3[greeknu]2[greekalpha][greekupsilon][greekdelta][greekiotaoxia]
+[greekalphapsili]3[greeknu]2[greekalpha][greekupsilon][greekdelta][greekiota]
+[greekalphapsilitonos]2[greeknu]1[greekalpha][greekupsilon][greekdelta]
+[greekalphapsilitonos]2[greeknu]1[greekalpha][greekupsilon][greeklambda]
+[greekalphapsili]2[greeknu]1[greekalpha][greekupsilonoxia][greeklambda]
+[greekalphapsili]2[greeknu]1[greekalpha][greekupsilonoxia][greekxi]
+[greekalphapsili]2[greeknu]1[greekalpha][greekupsilon][greekxi]
+[greekalphapsili]2[greeknu]1[greekalpha][greekupsilonoxia][greekchi]
+[greekalphapsili]2[greeknu]1[greekalpha][greekupsilon][greekchi]
+[greekalphapsili]2[greeknu]1[greekalpha][greekphi][greekalpha][greekiotaoxia][greekrho]
+[greekalphapsili]2[greeknu]1[greekalpha][greekphi][greekalpha][greekiota][greekrho]
+[greekalphapsili]2[greeknu]1[greekalpha][greekphi][greeketaoxia]
+[greekalphapsili]2[greeknu]1[greekalpha][greekphi][greeketavaria]
+[greekalphapsili]2[greeknu]1[greekalpha][greekphi][greekomicron][greekupsilonperispomeni]
+[greekalphapsili]2[greeknu]1[greekalpha][greekphi][greeketaperispomeni]
+[greekalphapsili]2[greeknu]1[greekalpha][greekphi][greekepsilon][greekiotaperispomeni]
+[greekalphapsili]2[greeknu]1[greekalpha][greekphi][greekomicron][greekiotaperispomeni]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekphi][greekomegaperispomeni][greeknu].
+[greekalphapsili]2[greeknu]1[greekalpha][greekphi][greekepsilonoxia]
+[greekalphapsili]2[greeknu]1[greekalpha][greekphi][greekepsilonvaria]
+[greekalphapsili]3[greeknu]2[greekalpha][greekphi][greeketaperispomeni][greeknu]
+[greekalphapsili]2[greeknu]1[greekalpha][greekphi][greekrho][greekomicronoxia][greekdelta]
+[greekalphapsili]2[greeknu]1[greekalpha][greekphi][greekrho][greekomicron][greekdelta]
+[greekalphapsilitonos]2[greeknu]1[greekalpha][greekphi][greekrho]
+[greekalphapsili]2[greeknu]1[greekalphaoxia][greekphi][greekrho]
+[greekalphapsili]2[greeknu]1[greekalpha][greekchi][greekupsilonoxia][greekrho]
+[greekalphapsili]2[greeknu]1[greekalpha][greekchi][greekupsilon][greekrho]
+[greekalphapsili][greeknu][greekdelta][greekrho][greekomicronoxia]2[greeksigma]1[greekalpha]
+[greekalphapsili][greeknu][greekdelta][greekrho][greekomicron]2[greeksigma]1[greekalpha]
+[greekalphapsili]2[greeknu]1[greekepsilonoxia][greekgamma][greekgamma]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekgamma][greekgamma]
+[greekalphapsili]2[greeknu]1[greekepsilonoxia][greekgamma][greekepsilon][greekrho][greektau]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekgamma][greekepsilonoxia][greekrho][greektau]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekgamma][greekkappa]
+[greekalphapsili]2[greeknu]1[greekepsilonoxia][greekgamma][greekkappa]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekgamma][greekchi]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekdelta][greekalphaoxia]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekdelta][greekalpha]
+[greekalphapsili]2[greeknu]1[greekepsilonoxia][greekdelta][greekepsilon][greeksigma]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekdelta][greekepsilonoxia][greeksigma]
+[greekalphapsili]2[greeknu]1[greekepsilonoxia][greekdelta][greekrho][greekalpha][greeksigma]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekdelta][greekrho][greekalphaoxia][greeksigma]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekepsilonoxia][greekrho]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekepsilon][greekrho]
+[greekalphapsili]2[greeknu]1[greekepsilon][greektheta][greekepsilonoxia][greeklambda]
+[greekalphapsili]2[greeknu]1[greekepsilon][greektheta][greekepsilon][greeklambda]
+[greekalphapsili]2[greeknu]1[greekepsilonoxia][greektheta][greekiota]
+[greekalphapsili]2[greeknu]1[greekepsilon][greektheta][greekiotaoxia]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekiotaoxia][greekdelta][greekepsilon]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekiota][greekdelta][greekepsilonoxia]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekiotaoxia][greekdelta][greekomega]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekiota][greekdelta][greekomegaoxia]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekiotaoxia][greekkappa][greekalpha]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekiota][greekkappa][greekalphaoxia]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekiota][greekkappa][greekomicronoxia]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekiota][greekkappa][greekomicron]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekiota][greeklambda][greekepsilon][greekiotaoxia]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekiota][greeklambda][greekepsilon][greekiota]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekiotaoxia][greekmu][greekalpha]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekiotaoxia]2[greeksigma]1[greekalpha][greekkappa]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekiota]2[greeksigma]1[greekalphaoxia][greekkappa]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekiotaoxia]2[greeksigma]1[greekomicron]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekiota]2[greeksigma]1[greekomicronoxia]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekiota]2[greeksigma]1[greekphi][greekomicron][greekrho]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekiotaoxia]2[greeksigma]1[greekphi][greekomicron][greekrho]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekiota]2[greeksigma]1[greekphi][greekomicronoxia][greekrho]
+[greekalphapsili]2[greeknu]1[greekepsilonoxia][greekkappa]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekkappa]
+[greekalphapsili]3[greeknu]2[greekepsilonoxia][greekkappa][greekalpha]
+[greekalphapsili]3[greeknu]2[greekepsilon][greekkappa][greekalphaoxia][greekfinalsigma].
+[greekalphapsili]3[greeknu]2[greekepsilon][greekkappa][greekalphavaria][greekfinalsigma].
+[greekalphapsili]3[greeknu]2[greekepsilon][greekkappa][greekalphaoxia][greeksigma].
+[greekalphapsili]3[greeknu]2[greekepsilon][greekkappa][greekalphavaria][greeksigma].
+[greekalphapsili]3[greeknu]2[greekepsilon][greekkappa][greektau]
+[greekalphapsili]4[greeknu]3[greekepsilonoxia]2[greekkappa]1[greektau][greekiota][greektau]
+[greekalphapsili]4[greeknu]3[greekepsilon]2[greekkappa]1[greektau][greekiotaoxia][greektau]
+[greekalphapsili][greeknu][greekepsilon]2[greekkappa]1[greeklambda][greekiota][greekpi]
+[greekalphapsili][greeknu][greekepsilon]2[greekkappa]1[greeklambda][greekomicronoxia]
+[greekalphapsili][greeknu][greekepsilon]2[greekkappa]1[greeklambda][greekomicron]
+[greekalphapsili]2[greeknu]1[greekepsilonoxia][greeklambda][greekalpha][greekiota]
+[greekalphapsili]2[greeknu]1[greekepsilon][greeklambda][greekalpha][greekiota]
+[greekalphapsili]2[greeknu]1[greekepsilon][greeklambda][greekalphaoxia][greektau]
+[greekalphapsili]2[greeknu]1[greekepsilon][greeklambda][greekalpha][greektau]
+[greekalphapsili]2[greeknu]1[greekepsilonoxia][greeklambda][greekepsilon][greekgamma][greekkappa]
+[greekalphapsili]2[greeknu]1[greekepsilon][greeklambda][greekepsilonoxia][greekgamma][greekkappa]
+[greekalphapsili]2[greeknu]1[greekepsilon][greeklambda][greekepsilon][greekgamma][greekxi]
+[greekalphapsili]2[greeknu]1[greekepsilon][greeklambda][greekepsilonoxia][greeketa]
+[greekalphapsili]2[greeknu]1[greekepsilon][greeklambda][greekepsilon][greeketaoxia]
+[greekalphapsili]2[greeknu]1[greekepsilonoxia][greeklambda][greekepsilon][greekomicron]
+[greekalphapsili]2[greeknu]1[greekepsilon][greeklambda][greekepsilonoxia][greekomicron]
+[greekalphapsili]2[greeknu]1[greekepsilon][greeklambda][greekepsilonoxia][greekomega]
+[greekalphapsili]2[greeknu]1[greekepsilonoxia][greeklambda][greekepsilon][greekepsilon]
+[greekalphapsili]2[greeknu]1[greekepsilon][greeklambda][greekkappa][greeketaoxia]
+[greekalphapsili]2[greeknu]1[greekepsilon][greeklambda][greekkappa][greeketavaria]
+[greekalphapsili]2[greeknu]1[greekepsilon][greeklambda][greekkappa][greekomicron]
+[greekalphapsili]2[greeknu]1[greekepsilon][greeklambda][greekkappa][greeketaperispomeni]
+[greekalphapsili]2[greeknu]1[greekepsilon][greeklambda][greekkappa][greekepsilonoxia][greekfinalsigma].
+[greekalphapsili]2[greeknu]1[greekepsilon][greeklambda][greekkappa][greekepsilonvaria][greekfinalsigma].
+[greekalphapsili]2[greeknu]1[greekepsilon][greeklambda][greekkappa][greekepsilonoxia][greeksigma].
+[greekalphapsili]2[greeknu]1[greekepsilon][greeklambda][greekkappa][greekepsilonvaria][greeksigma].
+[greekalphapsili]2[greeknu]1[greekepsilon][greeklambda][greekkappa][greekepsilon]
+[greekalphapsili]2[greeknu]1[greekepsilon][greeklambda][greekkappa][greekomegaperispomeni]
+[greekalphapsili]2[greeknu]1[greekepsilon][greeklambda][greekkappa][greekepsilonoxia][greeksigma]
+[greekalphapsilitonos]2[greeknu]1[greekepsilon][greeklambda][greekkappa][greektau]
+[greekalphapsili]2[greeknu]1[greekepsilonoxia][greeklambda][greekkappa][greektau]
+[greekalphapsili]2[greeknu]1[greekepsilonoxia][greeklambda][greekkappa][greekomega]
+[greekalphapsili]2[greeknu]1[greekepsilon][greeklambda][greekkappa][greekomegaoxia]
+[greekalphapsili]2[greeknu]1[greekepsilonoxia][greeklambda][greeklambda]
+[greekalphapsili]2[greeknu]1[greekepsilonoxia][greeklambda][greekpi][greekiota]
+[greekalphapsili]2[greeknu]1[greekepsilon][greeklambda][greekpi][greekiotaoxia]
+[greekalphapsili]2[greeknu]1[greekepsilonoxia][greeklambda][greekupsilon][greektau][greekrho]
+[greekalphapsili]2[greeknu]1[greekepsilon][greeklambda][greekupsilonoxia][greektau][greekrho]
+[greekalphapsili]2[greeknu]1[greekepsilonoxia][greekmu][greekbeta]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekmu][greekbeta]
+[greekalphapsili]2[greeknu]1[greekepsilonoxia][greekmu][greekepsilon][greektau]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekmu][greekepsilonoxia][greektau]
+[greekalphapsili]2[greeknu]1[greekepsilonoxia][greekmu][greekpi]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekmu][greekpi]
+[greekalphapsili]2[greeknu]1[greekepsilonoxia][greekmu][greekphi]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekmu][greekphi]
+[greekalphapsili]2[greeknu]1[greekepsilonoxia][greeknu]
+[greekalphapsili]2[greeknu]1[greekepsilon][greeknu]
+[greekalphapsili]3[greeknu]2[greekepsilonoxia][greeknu][greekepsilon][greekiota]
+[greekalphapsili]3[greeknu]2[greekepsilon][greeknu][greeketaoxia]
+[greekalphapsili]3[greeknu]2[greekepsilonoxia][greeknu][greektau][greekepsilon][greekfinalsigma].
+[greekalphapsili]3[greeknu]2[greekepsilonoxia][greeknu][greektau][greekepsilon][greeksigma].
+[greekalphapsili]2[greeknu]1[greekepsilon]2[greekxi]1
+[greekalphapsili]3[greeknu]2[greekepsilon]3[greekxi]2[greekiotaoxia][greekkappa][greekalpha]
+[greekalphapsili]3[greeknu]2[greekepsilon]3[greekxi]2[greekiota][greekkappa][greekalphaoxia]
+[greekalphapsili]2[greeknu]1[greekepsilonoxia][greekomicron][greekrho]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekomicronoxia][greekrho]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekpi]
+[greekalphapsili]3[greeknu]2[greekepsilon][greekpi][greeknu]
+[greekalphapsili]3[greeknu]2[greekepsilon][greekpi][greektau]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekrho][greekalpha][greeksigma][greektau]
+[greekalphapsili]2[greeknu]1[greekepsilonoxia][greekrho][greekalpha][greeksigma][greektau]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekrho][greekalphaoxia][greeksigma][greektau]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekrho][greekgamma]
+[greekalphapsilitonos]2[greeknu]1[greekepsilon][greekrho][greekgamma]
+[greekalphapsili]2[greeknu]1[greekepsilonoxia][greekrho][greekgamma]
+[greekalphapsili]2[greeknu]1[greekepsilonoxia][greekrho][greekepsilon][greekiota][greekkappa]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekrho][greekepsilon][greekiotaoxia][greekkappa]
+[greekalphapsili]2[greeknu]1[greekepsilonoxia][greekrho][greekepsilon][greekiota][greeksigma]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekrho][greekepsilon][greekiotaoxia][greeksigma]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekrho][greekepsilon][greekupsilonoxia][greeknu][greeketa][greektau]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekrho][greekepsilon][greekupsilon][greeknu][greeketaoxia][greektau]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekrho][greekiotaoxia]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekrho][greekiota]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekrho][greekupsilon][greektheta][greekrho][greekiotaoxia][greekalpha][greeksigma][greektau]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekrho][greekupsilon][greektheta][greekrho][greekiota][greekalphaoxia][greeksigma][greektau]
+[greekalphapsili]2[greeknu]1[greekepsilonoxia][greeksigma][greektau][greekiota]
+[greekalphapsili]2[greeknu]1[greekepsilon][greeksigma][greektau][greekiotaoxia]
+[greekalphapsili]2[greeknu]1[greekepsilonoxia][greektau][greekalpha][greekiota]
+[greekalphapsili]2[greeknu]1[greekepsilon][greektau][greekalpha][greekiotaoxia]
+[greekalphapsili]2[greeknu]1[greekepsilonoxia][greektau][greekomicron][greekiota]
+[greekalphapsili]2[greeknu]1[greekepsilon][greektau][greekomicron][greekiotaoxia]
+[greekalphapsili]2[greeknu]1[greekepsilon][greektau][greekupsilon]
+[greekalphapsili]2[greeknu]1[greekepsilonoxia][greektau][greekupsilon]
+[greekalphapsili]2[greeknu]1[greekepsilon][greektau][greekupsilonoxia]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekupsilonoxia][greektheta]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekupsilon][greektheta]
+[greekalphapsilitonos]2[greeknu]1[greekepsilon][greekupsilon][greekkappa]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekupsilonoxia][greekkappa]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekupsilon][greeklambda]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekupsilonoxia][greekrho][greekepsilon][greektau]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekupsilon][greekrho][greekepsilonoxia][greektau]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekupsilon][greekphi][greeketaoxia][greekmu][greeketa][greektau]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekupsilon][greekphi][greeketa][greekmu][greeketaoxia][greektau]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekupsilonoxia][greekchi]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekupsilon][greekchi]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekupsilonoxia][greekxi]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekupsilon][greekxi]
+[greekalphapsili]2[greeknu]1[greeketa][greekupsilon][greekxi]
+[greekalphapsili]2[greeknu]1[greeketa][greekupsilonperispomeni][greekgamma]
+[greekalphapsili]2[greeknu]1[greeketa][greekupsilon][greekgamma]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekupsilon][greekkappa][greektau]
+[greekalphapsili]2[greeknu]1[greekepsilonoxia][greekphi]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekphi]
+[greekalphapsili]3[greeknu]2[greekepsilon][greekphi][greekalphaoxia][greeklambda]
+[greekalphapsili]3[greeknu]2[greekepsilonoxia][greekphi][greekepsilon][greeklambda]
+[greekalphapsili]3[greeknu]2[greekepsilon][greekphi][greekepsilonoxia][greeklambda]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekchi][greekepsilonoxia]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekchi][greekepsilon]
+[greekalphapsili]2[greeknu]1[greekepsilonoxia][greekpsi][greekalpha]
+[greekalphapsili]2[greeknu]1[greekepsilon][greekpsi][greekalphaoxia]
+[greekalphapsili]2[greeknu]1[greeketa][greekgamma][greekepsilon][greekmu]
+[greekalphapsili]2[greeknu]1[greeketaoxia][greekdelta]
+[greekalphapsili]2[greeknu]1[greeketa][greekdelta]
+[greekalphapsili]2[greeknu]1[greeketaoxia][greekkappa][greekepsilon][greeksigma]
+[greekalphapsili]2[greeknu]1[greeketa][greekkappa][greekepsilonoxia][greeksigma]
+[greekalphapsili]2[greeknu]1[greeketaoxia][greekkappa][greekomicron]
+[greekalphapsili]2[greeknu]1[greeketa][greekkappa][greekomicronoxia]
+[greekalphapsili]2[greeknu]1[greeketa][greekkappa][greekomicron]
+[greekalphapsili]2[greeknu]1[greeketa][greeklambda][greekalphaoxia][greekkappa]
+[greekalphapsili]2[greeknu]1[greeketa][greeklambda][greekalpha][greekkappa]
+[greekalphapsili]2[greeknu]1[greeketaoxia][greeklambda][greekalpha][greektau][greekomicron][greekfinalsigma].
+[greekalphapsili]2[greeknu]1[greeketaoxia][greeklambda][greekalpha][greektau][greekomicron][greeksigma].
+[greekalphapsili]2[greeknu]1[greeketa][greeklambda][greekalphaoxia][greektau][greekomicron][greekupsilon]
+[greekalphapsili]2[greeknu]1[greeketa][greeklambda][greekalphaoxia][greektau][greekomega]
+[greekalphapsili]2[greeknu]1[greeketaoxia][greeklambda][greekalpha][greektau][greekomicron][greeknu].
+[greekalphapsili]2[greeknu]1[greeketaoxia][greeklambda][greekalpha][greektau][greekepsilon].
+[greekalphapsili]2[greeknu]1[greeketa][greeklambda][greekalphaoxia][greektau][greekomicron][greekiota]
+[greekalphapsili]2[greeknu]1[greeketaoxia][greeklambda][greekalpha][greektau][greekomicron][greekiota]
+[greekalphapsili]2[greeknu]1[greeketaoxia][greeklambda][greekalpha][greektau][greekalpha]
+[greekalphapsili]2[greeknu]1[greeketa][greeklambda][greekepsilon][greekgamma]
+[greekalphapsili]2[greeknu]1[greeketa][greeklambda][greekepsilon][greeketaoxia]
+[greekalphapsili]2[greeknu]1[greeketa][greeklambda][greekepsilon][greeketavaria]
+[greekalphapsili]2[greeknu]1[greeketa][greeklambda][greekepsilon][greekomicron]
+[greekalphapsili]2[greeknu]1[greeketa][greeklambda][greekepsilon][greekepsilon]
+[greekalphapsili]2[greeknu]1[greeketa][greeklambda][greekepsilon][greekomegaperispomeni]
+[greekalphapsili]2[greeknu]1[greeketa][greeklambda][greekepsilon][greekepsilonoxia]
+[greekalphapsili]2[greeknu]1[greeketa][greeklambda][greekepsilon][greekepsilonvaria]
+[greekalphapsili]2[greeknu]1[greeketa][greeklambda][greekepsilon][greeketaperispomeni]
+[greekalphapsili]2[greeknu]1[greeketa][greeklambda][greekepsilonoxia][greeketa]
+[greekalphapsili]2[greeknu]1[greeketaoxia][greeklambda][greekepsilon][greekiota][greekpi]
+[greekalphapsili]2[greeknu]1[greeketa][greeklambda][greekepsilon][greekiotaoxia][greekpi]
+[greekalphapsili]2[greeknu]1[greeketa][greeklambda][greeketaoxia]
+[greekalphapsili]2[greeknu]1[greeketa][greeklambda][greeketavaria]
+[greekalphapsili]2[greeknu]1[greeketa][greeklambda][greekomicron][greekupsilonperispomeni]
+[greekalphapsili]2[greeknu]1[greeketa][greeklambda][greekepsilon][greekiotaperispomeni]
+[greekalphapsili]2[greeknu]1[greeketa][greeklambda][greeketaperispomeni]
+[greekalphapsili]2[greeknu]1[greeketa][greeklambda][greekepsilonoxia]
+[greekalphapsili]2[greeknu]1[greeketa][greeklambda][greekepsilonvaria]
+[greekalphapsili]2[greeknu]1[greeketa][greeklambda][greekomicron][greekiotaperispomeni]
+[greekalphapsili]2[greeknu]1[greeketa][greeklambda][greekomegaperispomeni]
+[greekalphapsili]2[greeknu]1[greeketaoxia][greeklambda][greekiota][greekkappa]
+[greekalphapsili]2[greeknu]1[greeketa][greeklambda][greekiotaoxia][greekkappa]
+[greekalphapsili]2[greeknu]1[greeketaoxia][greeklambda][greekiota][greekomicron]
+[greekalphapsili]2[greeknu]1[greeketa][greeklambda][greekiotaoxia][greekomicron]
+[greekalphapsili]2[greeknu]1[greeketa][greeklambda][greekiotaoxia][greekomega]
+[greekalphapsili]2[greeknu]1[greeketaoxia][greeklambda][greekiota][greekalpha]
+[greekalphapsili]2[greeknu]1[greeketaoxia][greeklambda][greekiota][greekpi]
+[greekalphapsili]2[greeknu]1[greeketa][greeklambda][greekiotaoxia][greekpi]
+[greekalphapsili]2[greeknu]1[greeketa][greeklambda][greekiota][greekphi]
+[greekalphapsili]2[greeknu]1[greeketaoxia][greekmu]
+[greekalphapsili]2[greeknu]1[greeketa][greekmu]
+[greekalphapsili]2[greeknu]1[greeketaoxia][greeknu][greekupsilon]
+[greekalphapsili]2[greeknu]1[greeketa][greeknu][greekupsilonoxia]
+[greekalphapsili]2[greeknu]1[greeketaoxia][greekrho][greekepsilon][greekiota]
+[greekalphapsili]2[greeknu]1[greeketa][greekrho][greekepsilon][greekiotaoxia]
+[greekalphapsili]2[greeknu]1[greeketa][greekrho][greekepsilonoxia][greekmu]
+[greekalphapsili]2[greeknu]1[greeketa][greekrho][greekepsilon][greekmu]
+[greekalphapsili]2[greeknu]1[greeketa][greekrho][greekepsilon][greekphi]
+[greekalphapsili]2[greeknu]1[greeketaoxia][greekrho][greekiota]
+[greekalphapsili]2[greeknu]1[greeketa][greekrho][greekiotaoxia]
+[greekalphapsili]2[greeknu]1[greeketaoxia][greekrho][greekomicron][greektau]
+[greekalphapsili]2[greeknu]1[greeketa][greekrho][greekomicronoxia][greektau]
+[greekalphapsili]2[greeknu]1[greeketaoxia][greeksigma][greeksigma]
+[greekalphapsili]2[greeknu]1[greeketa][greeksigma][greeksigma]
+[greekalphapsili]2[greeknu]1[greeketaoxia][greektau][greektau]
+[greekalphapsili]2[greeknu]1[greeketa][greektau][greektau]
+[greekalphapsili]2[greeknu]1[greeketaoxia][greekphi][greekalpha]
+[greekalphapsili]2[greeknu]1[greeketa][greekphi][greekalpha]
+[greekalphapsili]2[greeknu]1[greekiotaoxia][greekalpha][greektau]
+[greekalphapsili]2[greeknu]1[greekiota][greekalphaoxia][greektau]
+[greekalphapsili]2[greeknu]1[greekiotaoxia][greekdelta][greekiota][greekomicron]
+[greekalphapsili]2[greeknu]1[greekiota][greekdelta][greekiotaoxia][greekomicron]
+[greekalphapsili]2[greeknu]1[greekiota][greekdelta][greekiotaoxia][greekomega]
+[greekalphapsili]2[greeknu]1[greekiotaoxia][greekdelta][greekiota][greekalpha]
+[greekalphapsili]2[greeknu]1[greekiota][greekdelta][greekiota][greektau]
+[greekalphapsilitonos]2[greeknu]1[greekiota][greekdelta][greekrho][greekomicron][greekfinalsigma]
+[greekalphapsilitonos]2[greeknu]1[greekiota][greekdelta][greekrho][greekomicron][greeksigma]
+[greekalphapsili]2[greeknu]1[greekiotaoxia][greekdelta][greekrho][greekomicron][greekupsilon]
+[greekalphapsili]2[greeknu]1[greekiotaoxia][greekdelta][greekrho][greekomega]
+[greekalphapsilitonos]2[greeknu]1[greekiota][greekdelta][greekrho][greekomicron][greeknu]
+[greekalphapsilitonos]2[greeknu]1[greekiota][greekdelta][greekrho][greekepsilon]
+[greekalphapsili]2[greeknu]1[greekiotaoxia][greekdelta][greekrho][greekomicron][greekiota]
+[greekalphapsilitonos]2[greeknu]1[greekiota][greekdelta][greekrho][greekomicron][greekiota]
+[greekalphapsili]2[greeknu]1[greekiotaoxia][greekdelta][greekrho][greekupsilon][greektau]
+[greekalphapsili]2[greeknu]1[greekiota][greekdelta][greekrho][greekupsilonoxia][greektau]
+[greekalphapsili]2[greeknu]1[greekiota][greekdelta][greekrho][greekomega][greektau]
+[greekalphapsili]2[greeknu]1[greekiota][greekdelta][greekrho][greekomegaoxia][greektau]
+[greekalphapsili]2[greeknu]1[greekiotaoxia][greekepsilon][greekrho]
+[greekalphapsili]2[greeknu]1[greekiota][greekepsilonoxia][greekrho]
+[greekalphapsili]2[greeknu]1[greekiota][greekepsilon][greekrho][greekalphaoxia][greektau]
+[greekalphapsili]3[greeknu]2[greekiota][greekepsilonoxia][greekrho][greekomega]
+[greekalphapsili]2[greeknu]1[greekiotaoxia][greekkappa]
+[greekalphapsili]2[greeknu]1[greekiota][greekkappa]
+[greekalphapsilitonos]2[greeknu]1[greekiota][greekkappa]
+[greekalphapsili]3[greeknu]2[greekiotaoxia][greekkappa][greeketa]
+[greekalphapsili]3[greeknu]2[greekiota][greekkappa][greeketaoxia]
+[greekalphapsili]2[greeknu]1[greekiotaoxia][greeklambda]
+[greekalphapsili]2[greeknu]1[greekiota][greeklambda]
+[greekalphapsili]2[greeknu]1[greekiotaoxia][greekmu][greekalpha][greeksigma][greektau]
+[greekalphapsili]2[greeknu]1[greekiota][greekmu][greekalphaoxia][greeksigma][greektau]
+[greekalphapsili]2[greeknu]1[greekiotaoxia][greekomicron][greekupsilon]
+[greekalphapsili]2[greeknu]1[greekiota][greekomicron][greekupsilonoxia]
+[greekalphapsilitonos]2[greeknu]1[greekiota][greekpi][greekpi]
+[greekalphapsili]2[greeknu]1[greekiotaoxia][greekpi][greekpi]
+[greekalphapsili]2[greeknu]1[greekiota][greeksigma]
+[greekalphapsilitonos]2[greeknu]1[greekiota][greeksigma]
+[greekalphapsili]2[greeknu]1[greekiotaoxia][greeksigma]
+[greekalphapsili]3[greeknu]2[greekiota][greeksigma][greekalphaperispomeni][greektau]
+[greekalphapsili]3[greeknu]2[greekiota][greeksigma][greekalphaoxia][greektau]
+[greekalphapsili]3[greeknu]2[greekiotaoxia][greeksigma][greektau]
+[greekalphapsili]3[greeknu]2[greekiota][greeksigma][greektau]
+[greekalphapsili]4[greeknu]3[greekiota][greeksigma][greektau][greekomicron][greekrho][greeketa]
+[greekalphapsili]4[greeknu]3[greekiota][greeksigma][greektau][greekomicronoxia][greekrho][greeketa]
+[greekalphapsili]4[greeknu]3[greekiota][greeksigma][greektau][greekomicron][greekrho][greeketaoxia]
+[greekalphapsili]3[greeknu]2[greekiotaoxia][greeksigma][greekchi]
+[greekalphapsili]4[greeknu]3[greekiotaoxia][greeksigma][greekchi][greekupsilon]
+[greekalphapsilitonos]2[greeknu]1[greekiota][greekchi]
+[greekalphapsili]2[greeknu]1[greekiotaoxia][greekchi]
+[greekalphapsili]2[greeknu]1[greekiota][greekchi][greeknu][greekepsilon][greekupsilonoxia][greektau]
+[greekalphapsili]2[greeknu]1[greekiotaoxia][greekpsi]
+[greekalphapsili]2[greeknu]1[greekiota][greekpsi]
+[greekalphapsili]2[greeknu]1[greekomicronoxia][greekdelta][greekepsilon]
+[greekalphapsili]2[greeknu]1[greekomicron][greekdelta][greekepsilonoxia]
+[greekalphapsilitonos]2[greeknu]1[greekomicron][greekzeta]
+[greekalphapsili]2[greeknu]1[greekomicronoxia][greekzeta]
+[greekalphapsili]2[greeknu]1[greekomicron][greekiota][greekkappa][greekepsilon]
+[greekalphapsili]2[greeknu]1[greekomicron][greekiota][greekkappa][greekomicron][greeknu]
+[greekalphapsilitonos]2[greeknu]1[greekomicron][greekiota][greekkappa]
+[greekalphapsili]2[greeknu]1[greekomicron][greekiotaoxia][greekkappa]
+[greekalphapsili]2[greeknu]1[greekomicron][greekiota][greekkappa][greektau][greekiotaoxia]
+[greekalphapsilitonos]2[greeknu]1[greekomicron][greekiota][greekkappa][greektau]
+[greekalphapsili]2[greeknu]1[greekomicron][greekiotaoxia][greekkappa][greektau]
+[greekalphapsili]2[greeknu]1[greekomicron][greekiotaoxia][greekmu][greekomega][greekkappa]
+[greekalphapsili]2[greeknu]1[greekomicron][greekiota][greekmu][greekomegaoxia][greekkappa]
+[greekalphapsili]2[greeknu]1[greekomicron][greekiota][greekmu][greekomega][greekkappa]
+[greekalphapsili]2[greeknu]1[greekomicron][greekiota][greeknu]
+[greekalphapsilitonos]2[greeknu]1[greekomicron][greekiota][greeknu]
+[greekalphapsili]2[greeknu]1[greekomicron][greekiotaoxia][greeknu]
+[greekalphapsilitonos]2[greeknu]1[greekomicron][greekiota][greeksigma][greektau][greekrho]
+[greekalphapsili]2[greeknu]1[greekomicron][greekiotaoxia][greeksigma][greektau][greekrho]
+[greekalphapsili]2[greeknu]1[greekomicronoxia][greeklambda]
+[greekalphapsili]2[greeknu]1[greekomicron][greeklambda]
+[greekalphapsilitonos]2[greeknu]1[greekomicron][greeklambda]
+[greekalphapsili]3[greeknu]2[greekomicron][greeklambda][greekkappa]
+[greekalphapsili]3[greeknu]2[greekomicron][greeklambda][greekomicron]
+[greekalphapsili]2[greeknu]1[greekomicron][greekmu][greekbeta][greekrho][greekiotaoxia]
+[greekalphapsili]2[greeknu]1[greekomicron][greekmu][greekbeta][greekrho][greekiotaperispomeni]
+[greekalphapsilitonos]2[greeknu]1[greekomicron][greekmu][greekbeta][greekrho][greekomicron]
+[greekalphapsili]2[greeknu]1[greekomicronoxia][greekmu][greekbeta][greekrho][greekomicron]
+[greekalphapsili]2[greeknu]1[greekomicronoxia][greekmu][greekbeta][greekrho][greekomega]
+[greekalphapsilitonos]2[greeknu]1[greekomicron][greekmu][greekbeta][greekrho][greekalpha]
+[greekalphapsili]2[greeknu]1[greekomicron][greekmu][greeketaoxia][greeklambda]
+[greekalphapsili]2[greeknu]1[greekomicron][greekmu][greeketa][greeklambda]
+[greekalphapsili]2[greeknu]1[greekomicron][greekmu][greekiotaoxia][greeklambda]
+[greekalphapsili]2[greeknu]1[greekomicron][greekmu][greekiota][greeklambda]
+[greekalphapsili]2[greeknu]1[greekomicronoxia][greekmu][greekiota][greekchi]
+[greekalphapsili]2[greeknu]1[greekomicron][greekmu][greekiota][greekchi]
+[greekalphapsili]2[greeknu]1[greekomicronoxia][greekmu][greekomicron]
+[greekalphapsili]2[greeknu]1[greekomicron][greekmu][greekomicronoxia]
+[greekalphapsili]2[greeknu]1[greekomicron][greekmu][greekomicron]
+[greekalphapsili]3[greeknu]2[greekomicron][greekmu][greekomicron][greektheta]
+[greekalphapsili]3[greeknu]2[greekomicronoxia][greekmu][greekomicron][greekupsilon].
+[greekalphapsili]3[greeknu]2[greekomicronoxia][greekmu][greekomegaiotasub].
+[greekalphapsili]3[greeknu]2[greekomicronoxia][greekmu][greekomega].
+[greekalphapsili]2[greeknu]2[greekomicronoxia][greekmu][greekomicron][greekiota][greeknu].
+[greekalphapsili]3[greeknu]2[greekomicronoxia][greekmu][greekomega][greeknu].
+[greekalphapsili]3[greeknu]2[greekomicronoxia][greekmu][greekomicron][greekiota][greekfinalsigma].
+[greekalphapsili]3[greeknu]2[greekomicronoxia][greekmu][greekomicron][greekiota][greeksigma].
+[greekalphapsili]3[greeknu]2[greekomicronoxia][greekmu][greekomicron][greekupsilon][greekfinalsigma].
+[greekalphapsili]3[greeknu]2[greekomicronoxia][greekmu][greekomicron][greekupsilon][greeksigma].
+[greekalphapsili]2[greeknu]1[greekomicronoxia][greeknu]
+[greekalphapsili]2[greeknu]1[greekomicron][greeknu]
+[greekalphapsilitonos]2[greeknu]1[greekomicron][greekpi]
+[greekalphapsili]2[greeknu]1[greekomicronoxia][greekpi]
+[greekalphapsili]2[greeknu]1[greekomicronoxia][greekrho]
+[greekalphapsili]2[greeknu]1[greekomicron][greekrho]
+[greekalphapsilitonos]2[greeknu]1[greekomicron][greekrho]
+[greekalphapsili]3[greeknu]2[greekomicron][greekrho][greekgamma][greekalphaoxia][greekzeta]
+[greekalphapsilitonos]3[greeknu]2[greekomicron][greekrho][greektheta]
+[greekalphapsili]3[greeknu]2[greekomicronoxia][greekrho][greektheta]
+[greekalphapsili]3[greeknu]2[greekomicron][greekrho][greekmu][greekalphaoxia]
+[greekalphapsili]3[greeknu]2[greekomicron][greekrho][greektau]
+[greekalphapsili]3[greeknu]2[greekomicron][greekrho][greekupsilonoxia]
+[greekalphapsili]2[greeknu]1[greekomicronoxia][greeksigma][greekiota]
+[greekalphapsili]2[greeknu]1[greekomicron][greeksigma][greekiotaoxia]
+[greekalphapsili]2[greeknu]1[greekomicron][greeksigma][greekiota]
+[greekalphapsilitonos]2[greeknu]1[greekomicron][greeksigma][greekmu]
+[greekalphapsili]2[greeknu]1[greekomicronoxia][greeksigma][greekmu]
+[greekalphapsili]2[greeknu]1[greekomicronoxia][greeksigma][greekphi][greekrho]
+[greekalphapsili]2[greeknu]1[greekomicron][greeksigma][greekphi][greekrho]
+[greekalphapsili]2[greeknu]1[greekomicron][greekupsilonoxia][greekalpha]
+[greekalphapsili]2[greeknu]1[greekomicron][greekupsilon][greekalphaoxia]
+[greekalphapsili]2[greeknu]1[greekomicron][greekupsilonoxia][greeksigma][greekiota]
+[greekalphapsili]2[greeknu]1[greekomicron][greekupsilon][greeksigma][greekiotaoxia]
+[greekalphapsili]2[greeknu]1[greekomicron][greekupsilonoxia][greektau]
+[greekalphapsili]2[greeknu]1[greekomicron][greekupsilon][greektau]
+[greekalphapsili]2[greeknu]1[greekomicron][greekphi][greektheta]
+[greekalphapsili]2[greeknu]1[greekomicronoxia][greekchi][greekepsilon][greekupsilon][greektau]
+[greekalphapsili]2[greeknu]1[greekomicron][greekchi][greekepsilon][greekupsilonoxia][greektau]
+[greekalphapsilitonos]2[greeknu]1[greekomicron][greekchi][greeklambda]
+[greekalphapsili]2[greeknu]1[greekomicronoxia][greekchi][greeklambda]
+[greekalphapsili]2[greeknu]1[greekomicron][greekpsi]
+[greekalphapsilitonos]2[greeknu]1[greekomicron][greekpsi]
+[greekalphapsili]2[greeknu]1[greekomicronoxia][greekpsi]
+[greekalphapsili][greeknu][greektau][greekalpha]2[greeknu]1[greekiota][greeksigma]
+[greekalphapsili][greeknu][greektau][greekalpha]2[greeknu]1[greekiotaoxia][greeksigma]
+[greekalphapsili][greeknu][greektau][greekepsilon][greekiota]2[greeksigma]1
+[greekalphapsili][greeknu][greektau][greekepsilon]2[greekkappa]1
+[greekalphapsili][greeknu][greektau][greekepsilon]2[greeknu]1
+[greekalphapsili][greeknu][greektau][greekepsilon]2[greekxi]1
+[greekalphapsili][greeknu][greektau][greekiota][greekdelta][greekupsilon]2[greeksigma]1
+[greekalphapsili][greeknu][greektau][greekiota][greekpi][greekalpha][greekrho][greekepsilon]2[greekkappa]1
+[greekalphapsili][greeknu][greektau][greekiota][greekpi][greekalpha][greekrho][greekepsilon]2[greekxi]1
+[greekalphapsili][greeknu][greektau][greekiota][greekpi][greekrho][greekomicron]2[greeksigma]1
+[greekalphapsili][greeknu][greektau][greekiota][greekpi][greekrho][greekomicron][greeksigma]3[greekkappa]2[greekupsilon]
+[greekalphapsili][greeknu][greektau][greekiota][greeksigma][greekupsilonoxia]2[greeknu]1
+[greekalphapsili][greeknu][greektau][greekiota][greeksigma][greekupsilon]2[greeknu]1
+[greekalphapsili]2[greeknu]1[greekupsilonoxia]
+[greekalphapsili]2[greeknu]1[greekupsilon]
+[greekalphapsili]3[greeknu]2[greekupsilon][greekmu]
+[greekalphapsili]3[greeknu]2[greekupsilonoxia][greeksigma]
+[greekalphapsili]3[greeknu]2[greekupsilon][greeksigma]
+[greekalphapsili]2[greeknu]1[greekupsilon][greekpi][greekepsilonoxia]2[greekrho]1
+[greekalphapsili]2[greeknu]1[greekupsilon][greekpi][greekepsilon]2[greekrho]1
+[greekalphapsilitonos]2[greeknu]1[greekomegaiotasub][greekdelta]
+[greekalphapsili]2[greeknu]1[greekomegaiotasubtonos][greekdelta]
+[greekalphapsili]2[greeknu]1[greekomegaoxia][greekdelta][greekupsilon]
+[greekalphapsili]2[greeknu]1[greekomega][greekdelta][greekupsilon][oxia]
+[greekalphapsili]2[greeknu]1[greekomegaoxia][greekiota]
+[greekalphapsili]2[greeknu]1[greekomega][greekiotaoxia]
+[greekalphapsili]2[greeknu]1[greekomegaoxia][greeklambda]
+[greekalphapsili]2[greeknu]1[greekomega][greeklambda]
+[greekalphapsili]2[greeknu]1[greekomegaoxia][greekmu]
+[greekalphapsili]2[greeknu]1[greekomega][greekmu]
+[greekalphapsili]2[greeknu]1[greekomegaoxia][greeknu]
+[greekalphapsili]2[greeknu]1[greekomega][greeknu]
+[greekalphapsili]2[greeknu]1[greekomega][greekrho]
+[greekalphapsilitonos]2[greeknu]1[greekomega][greekrho]
+[greekalphapsili]2[greeknu]1[greekomegaoxia][greekrho]
+[greekalphapsilitonos]2[greeknu]1[greekomega][greektau][greekomicron]
+[greekalphapsili]2[greeknu]1[greekomegaoxia][greektau][greekomicron]
+[greekalphapsili]2[greeknu]1[greekomega][greekphi][greekepsilonoxia][greeklambda]
+[greekalphapsili]2[greeknu]1[greekomega][greekphi][greekepsilon][greeklambda]
+[greekalphapsili]2[greeknu]1[greekomegaoxia][greekchi][greekupsilon]
+[greekalphapsili]2[greeknu]1[greekomega][greekchi][greekupsilonoxia]
+[greekalphapsili][greekpi][greekalpha]2[greeknu]1[greekalpha][greekiota]
+[greekalphapsili][greekpi][greekalphaoxia]2[greeknu]1[greekomicron][greekupsilon]
+[greekalphapsili][greekpi][greekalpha]2[greeknu]1[greekomicron][greekupsilonoxia][greekrho]
+[greekalphadasia][greekpi][greekalpha]2[greekxi]1
+[greekalphapsili][greekpi][greekepsilon]2[greekkappa]1[greeklambda]
+[greekalphadasia][greekpi][greekepsilon]2[greekrho]1
+[greekalphapsili][greekpi][greekomicron][greeksigma][greekupsilon]2[greeknu]1
+[greekalphapsili][greekpi][greekrho][greekomicronoxia]2[greeksigma]1
+[greekalphapsili][greekpi][greekrho][greekomicron]2[greeksigma]1
+[greekalphapsili][greekpi][greekrho][greekomicronoxia]3[greeksigma]2[greekkappa][greekepsilon]
+[greekalphapsili][greekpi][greekrho][greekomicron]3[greeksigma]2[greekkappa][greekepsilonoxia]
+[greekalphapsili][greekpi][greekrho][greekomicronoxia]3[greeksigma]2[greekkappa][greekomicron]
+[greekalphapsili][greekpi][greekrho][greekomicron]3[greeksigma]2[greekkappa][greekomicronoxia]
+[greekalphapsili][greekpi][greekrho][greekomicron]3[greeksigma]2[greektau]
+[greekalphadasia][greekrho][greekpi][greekalpha]2[greekxi]1
+[greekalphapsili][greekrho][greekrho][greekepsilon]2[greeknu]1[greekomega]
+[greekalphapsili][greekrho][greekchi][greekiota][greeksigma][greekupsilon]2[greeknu]1
+[greekalphapsili][greeksigma][greektau][greekepsilon]2[greekrho]1[greekomega]
+[greekalphapsili][greeksigma][greekupsilonoxia]2[greeknu]1
+[greekalphapsili][greeksigma][greekupsilon]2[greeknu]1
+[greekalphapsili][greekxi][greekupsilonoxia]2[greeknu]1
+[greekalphapsili][greekxi][greekupsilon]2[greeknu]1
+[greekalpha][greekupsilonpsili][greektau][greekepsilonoxia]2[greekkappa]1[greekmu]
+[greekalpha][greekupsilonpsili][greektau][greekepsilon]2[greekkappa]1[greekmu]
+[greekalpha][greekupsilonpsili][greektau][greekepsilon]2[greekxi]1
+[greekalphapsili][greekomega]2[greeksigma]1[greekphi]
+.[greekgamma][greekepsilon][greekrho][greekalpha]2[greeksigma]1[greekphi]
+.[greekdelta][greekalpha]2[greeksigma]1[greekpi]
+.[greekdelta][greekiota][greekalpha][greekmu][greekphi][greekiota]2[greeksigma]1[greekbeta]
+.[greekdelta][greekiota][greekepsilonoxia]2[greekkappa]1[greekrho][greekomicron]
+.[greekdelta][greekiota][greekepsilon]2[greekkappa]1[greekrho][greekomicronoxia]
+.[greekdelta][greekiota][greekepsilonoxia]2[greekxi]1
+.[greekdelta][greekiota][greekepsilon]2[greekxi]1
+.[greekdelta][greekiota][greekkappa][greekalpha]2[greeksigma]1[greekpi]
+.[greekdelta][greekiota][greekomicronoxia]2[greeksigma]1[greekkappa]
+.[greekdelta][greekiota][greekomicron]2[greeksigma]1[greekkappa]
+.[greekdelta][greekiota][greekomicronoxia]2[greeksigma]1[greekpi]
+.[greekdelta][greekiota][greekomicron]2[greeksigma]1[greekpi]
+.[greekdelta][greekiotaoxia]2[greeksigma]1[greekalpha]
+.[greekdelta][greekiota]2[greeksigma]1[greekalphaoxia]
+.[greekdelta][greekiotaoxia]2[greeksigma]1[greeketa]
+.[greekdelta][greekiota]2[greeksigma]1[greeketaoxia]
+.[greekdelta][greekiotaoxia]2[greeksigma]1[greekepsilon]
+.[greekdelta][greekiota]2[greeksigma]1[greekepsilon]
+.[greekdelta][greekiota]2[greeksigma]1[greektheta]
+.[greekdelta][greekupsilonoxia]2[greeksigma]1
+.[greekdelta][greekupsilon]2[greeksigma]1
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekomega].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekepsilon][greekiota][greekfinalsigma].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekepsilon][greekiota][greeksigma].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekepsilon][greekiota].
+.[greekdelta][greekupsilonoxia]3[greeksigma]2[greekepsilon][greektau]
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekomicron][greekmu][greekepsilon][greeknu].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekomicron][greekupsilon][greeksigma][greekiota][greeknu].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekomicron][greekiota][greekmu][greekiota].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekomicron][greekiota][greekfinalsigma].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekomicron][greekiota][greeksigma].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekomicron][greekiota].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekomicron][greekiota][greektau][greekomicron][greeknu].
+[greekdelta][greekupsilon]3[greeksigma]2[greekomicron][greekiotaoxia][greektau][greeketa][greeknu].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekomicron][greekiota][greekmu][greekepsilon][greeknu].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekomicron][greekiota][greektau][greekepsilon].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekomicron][greekiota][greekepsilon][greeknu].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekepsilon][greekiota][greeknu].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekomega][greeknu].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekomicron][greeknu]
+[greekdelta][greekupsilon]3[greeksigma]2[greekomicronoxia][greeknu]
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekomicron][greekupsilon][greeksigma]
+[greekdelta][greekupsilon]3[greeksigma]2[greekomicron][greekupsilonoxia][greeksigma]
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greeketaiotasub]
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greeketa][greektau][greekomicron][greeknu].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekomega][greekmu][greekepsilon][greeknu].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekomega][greeksigma][greekiota].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekalpha][greekiota][greekmu][greekiota].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekalpha][greekiota][greekfinalsigma].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekepsilon][greekiota][greekalpha][greekfinalsigma].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekalpha][greekiota][greeksigma].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekepsilon][greekiota][greekalpha][greeksigma].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekalpha][greekiota].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekepsilon][greekiota][greekepsilon].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekalpha][greekiota][greektau][greekomicron][greeknu].
+[greekdelta][greekupsilon]3[greeksigma]2[greekalpha][greekiotaoxia][greektau][greeketa][greeknu].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekalpha][greekiota][greekmu][greekepsilon][greeknu].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekalpha][greekiota][greektau][greekepsilon].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekalpha][greekiota][greekepsilon][greeknu]
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekepsilon][greekiota][greekalpha][greeknu].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekomicron][greeknu].
+[greekdelta][greekupsilon]3[greeksigma]2[greekalphaoxia][greektau][greekomega].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekalpha][greektau][greekomicron][greeknu].
+[greekdelta][greekupsilon]3[greeksigma]2[greekalphaoxia][greektau][greekomega][greeknu].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekalpha][greektau][greekepsilon].
+[greekdelta][greekupsilon]3[greeksigma]2[greekalphaoxia][greeknu][greektau][greekomega][greeknu].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekalpha][greekfinalsigma].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekalpha][greeknu].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekalpha][greeknu][greektau]
+[greekdelta][greekupsilon]3[greeksigma]2[greekalphaoxia][greeknu][greektau]
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekalpha][greeksigma]
+[greekdelta][greekupsilon]3[greeksigma]2[greekalphaoxia][greeksigma]
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekomicron][greekmu][greekalpha][greekiota].
+.[greekdelta][greekupsilonoxia]3[greeksigma]2[greekepsilon][greeksigma]
+[greekdelta][greekupsilon]3[greeksigma]2[greekomicronoxia][greekmu][greekepsilon][greektheta][greekalpha].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekomicron][greeknu][greektau][greekalpha][greekiota].
+[greekdelta][greekupsilon]3[greeksigma]2[greekomicron][greekiotaoxia][greekmu][greeketa][greeknu].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekomicron][greekiota][greekomicron].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekomicron][greekiota][greektau][greekomicron].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekomicron][greekiota][greeksigma][greektheta][greekomicron][greeknu].
+[greekdelta][greekupsilon]3[greeksigma]2[greekomicron][greekiotaoxia][greeksigma][greektheta][greeketa][greeknu].
+[greekdelta][greekupsilon]3[greeksigma]2[greekomicron][greekiotaoxia][greekmu][greekepsilon][greektheta][greekalpha].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekomicron][greekiota][greeksigma][greektheta][greekepsilon].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekomicron][greekiota][greeknu][greektau][greekomicron].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekepsilon][greeksigma][greektheta][greekalpha][greekiota].
+.[greekdelta][greekupsilon]3[greeksigma]2[greekomicronoxia][greekmu][greekepsilon][greeknu]
+.[greekdelta][greekupsilon]3[greeksigma]2[greekomicron][greekmu][greekepsilonoxia][greeknu]
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekomega][greekmu][greekalpha][greekiota].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greeketa][greektau][greekalpha][greekiota].
+[greekdelta][greekupsilon]3[greeksigma]2[greekomegaoxia][greekmu][greekepsilon][greektheta][greekalpha]
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greeketa][greeksigma][greektheta][greekepsilon].
+[greekdelta][greekupsilon]3[greeksigma]2[greekalpha][greekiotaoxia][greekmu][greeketa][greeknu].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekalpha][greekiota][greekomicron].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekalpha][greekiota][greektau][greekomicron].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekalpha][greekiota][greeksigma][greektheta][greekomicron][greeknu].
+[greekdelta][greekupsilon]3[greeksigma]2[greekalpha][greekiotaoxia][greeksigma][greektheta][greeketa][greeknu].
+[greekdelta][greekupsilon]3[greeksigma]2[greekalpha][greekiotaoxia][greekmu][greekepsilon][greektheta][greekalpha].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekalpha][greekiota][greeksigma][greektheta][greekalpha][greekiota].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekalpha][greekiota][greeknu][greektau][greekomicron].
+[greekdelta][greekupsilon]3[greeksigma]2[greekalphaoxia][greeksigma][greektheta][greekomega].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekalpha][greeksigma][greektheta][greekomicron][greeknu].
+[greekdelta][greekupsilon]3[greeksigma]2[greekalphaoxia][greeksigma][greektheta][greekomega][greeknu].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekalpha][greeksigma][greektheta][greekepsilon].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekalpha][greeksigma][greektheta][greekalpha][greekiota].
+[greekdelta][greekupsilon]3[greeksigma]2[greekalphaoxia][greekmu][greekepsilon][greeknu]
+[greekdelta][greekupsilon][greeksigma]3[greeksigma]2[greekalpha][greekmu][greekepsilonoxia][greeknu]
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekalpha][greektau][greekomicron].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekepsilon][greektau][greekomicron].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekalpha][greeknu][greektau][greekomicron].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekepsilon][greekomicron].
+.[greekdelta][greekupsilon][greeksigma][greekepsilon][greekiotaoxia]2[greeksigma]1[greekbeta]
+.[greekdelta][greekupsilon][greeksigma][greekepsilon][greekiota]2[greeksigma]1[greekbeta]
+.[greekdelta][greekupsilon][greeksigma][greekepsilonoxia]2[greekkappa]1
+.[greekdelta][greekupsilon][greeksigma][greekepsilon]2[greekkappa]1
+.[greekdelta][greekupsilon][greeksigma][greekepsilonoxia]2[greekxi]1
+.[greekdelta][greekupsilon][greeksigma][greekepsilon]2[greekxi]1
+.[greekdelta][greekupsilon]3[greeksigma]2[greekiota][greektheta]
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekiota][greekfinalsigma].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekiota][greeksigma].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekepsilon][greekomega]
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekiota][greeknu].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekiota].
+[greekdelta][greekupsilon]3[greeksigma]2[greekepsilonoxia][greekomicron][greekiota][greeknu].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekepsilon][greeksigma][greekiota].
+[greekdelta][greekupsilonoxia]3[greeksigma]2[greekepsilon][greeksigma][greekiota][greeknu].
+.[greekdelta][greekupsilonoxia]3[greeksigma]2[greekkappa][greekepsilon]
+.[greekdelta][greekupsilon]3[greeksigma]2[greekmu][greeketaoxia].
+.[greekdelta][greekupsilon]3[greeksigma]2[greekmu][greeketavaria].
+.[greekdelta][greekupsilon]3[greeksigma]2[greekmu][greeketaperispomeni][greekfinalsigma].
+.[greekdelta][greekupsilon]3[greeksigma]2[greekmu][greeketaperispomeni][greeksigma].
+.[greekdelta][greekupsilon]3[greeksigma]2[greekmu][greeketaiotasubperispomeni]
+.[greekdelta][greekupsilon]3[greeksigma]2[greekmu][greeketaperispomeni].
+.[greekdelta][greekupsilon]3[greeksigma]2[greekmu][greekalphaperispomeni]
+.[greekdelta][greekupsilon]3[greeksigma]2[greekmu][greekalpha]
+.[greekdelta][greekupsilon]3[greeksigma]2[greekmu][greekomegaperispomeni]
+.[greekdelta][greekupsilon][greeksigma][greekxi][greekupsilonoxia]2[greeknu]1
+.[greekdelta][greekupsilon][greeksigma][greekxi][greekupsilon]2[greeknu]1
+.[greekdelta][greekupsilonoxia]3[greeksigma]2[greektau][greekalpha][greeknu]
+.[greekdelta][greekupsilon]3[greeksigma]2[greektau][greekalphaoxia][greeknu]
+.[greekdelta][greekupsilon]3[greeksigma]2[greektau][greeketa][greeknu]
+.[greekdelta][greekupsilon]3[greeksigma]2[greektau][greeketaoxia][greeknu]
+[greekepsilonpsili][greekdelta][greekupsilon]2[greeksigma]1[greektau]
+[greekepsilon][greekiotapsili]2[greeknu]1[greekomicronoxia][greekdelta]
+[greekepsilon][greekiotapsili]2[greeknu]1[greekomicron][greekdelta]
+[greekepsilon][greekiotapsili]2[greeksigma]1
+[greekepsilon][greekiotapsilitonos]2[greeksigma]1
+[greekepsilon][greekiotapsili]3[greeksigma]2[greekiotaoxia].
+[greekepsilon][greekiotapsili]3[greeksigma]2[greekiotavaria].
+[greekepsilon][greekiotapsili]3[greeksigma]2[greekiota].
+[greekepsilon][greekiotapsili]3[greeksigma]2[greekiotaoxia][greeknu].
+[greekepsilon][greekiotapsili]3[greeksigma]2[greekiotavaria][greeknu].
+[greekepsilon][greekiotapsili]3[greeksigma]2[greekiota][greeknu].
+[greekepsilon][greekiotapsilitonos]3[greeksigma]2[greekomicron][greekmu]
+[greekepsilon][greekiotapsilitonos]3[greeksigma]2[greeketaiotasub].
+[greekepsilon][greekiotapsilitonos][greeksigma][greekepsilon][greekiota].
+[greekepsilon][greekiotapsilitonos]3[greeksigma]2[greekepsilon][greektau][greekalpha][greekiota].
+[greekepsilon][greekiotapsilitonos]3[greeksigma]2[greekepsilon][greeksigma][greektheta][greekomicron][greeknu].
+[greekepsilon][greekiotapsili]3[greeksigma]2[greekomicronoxia][greekmu]
+[greekepsilon][greekiotapsilitonos]3[greeksigma]2[greekepsilon][greeksigma][greektheta][greekepsilon].
+[greekepsilon][greekiotapsilitonos]3[greeksigma]2[greekomicron][greeknu][greektau][greekalpha][greekiota]
+[greekepsilon][greekiotapsili]3[greeksigma]2[greekomicron][greekiotaoxia][greekmu][greeketa][greeknu]
+[greekepsilon][greekiotapsilitonos]3[greeksigma]2[greekomicron][greekiota][greekomicron]
+[greekepsilon][greekiotapsilitonos]3[greeksigma]2[greekomicron][greekiota][greektau][greekomicron]
+[greekepsilon][greekiotapsilitonos]3[greeksigma]2[greekomicron][greekiota][greeksigma][greektheta][greekomicron][greeknu]
+[greekepsilon][greekiotapsili]3[greeksigma]2[greekomicron][greekiotaoxia][greeksigma][greektheta][greeketa][greeknu]
+[greekepsilon][greekiotapsili]3[greeksigma]2[greekomicron][greekiotaoxia][greekmu][greekepsilon][greektheta][greekalpha]
+[greekepsilon][greekiotapsilitonos]3[greeksigma]2[greekomicron][greekiota][greeksigma][greektheta][greekepsilon]
+[greekepsilon][greekiotapsilitonos]3[greeksigma]2[greekomicron][greekiota][greeknu][greektau][greekomicron]
+[greekepsilon][greekiotapsilitonos]3[greeksigma]2[greekepsilon][greeksigma][greektheta][greekalpha][greekiota]
+[greekepsilon][greekiotapsili]3[greeksigma]2[greekomicronoxia][greekmu][greekepsilon][greeknu]
+[greekepsilon][greekiotapsili]3[greeksigma]2[greekomicron][greekmu][greekepsilonoxia][greeknu]
+[greekepsilon][greekiotapsilitonos]3[greeksigma]2[greekalphaoxia][greekmu][greeketa][greeknu].
+[greekepsilon][greekiotapsilitonos]3[greeksigma]2[greekomega]
+[greekepsilon][greekiotapsilitonos]3[greeksigma]2[greekalpha][greektau][greekomicron]
+[greekepsilon][greekiotapsilitonos]3[greeksigma]2[greekalpha][greeksigma][greektheta][greekomicron][greeknu]
+[greekepsilon][greekiotapsili]3[greeksigma]2[greekalphaoxia][greeksigma][greektheta][greeketa][greeknu]
+[greekepsilon][greekiotapsili]3[greeksigma]2[greekalphaoxia][greekmu][greekepsilon][greektheta][greekalpha]
+[greekepsilon][greekiotapsilitonos]3[greeksigma]2[greekalpha][greeksigma][greektheta][greekepsilon]
+[greekepsilon][greekiotapsilitonos]3[greeksigma]2[greekalpha][greeknu][greektau][greekomicron]
+[greekepsilon][greekiotapsilitonos]3[greeksigma]2[greekomega][greekmu][greekalpha][greekiota]
+[greekepsilon][greekiotapsilitonos]3[greeksigma]2[greeketa][greeksigma][greektheta][greekomicron][greeknu]
+[greekepsilon][greekiotapsili]3[greeksigma]2[greekomegaoxia][greekmu][greekepsilon][greektheta][greekalpha]
+[greekepsilon][greekiotapsilitonos]3[greeksigma]2[greeketa][greeksigma][greektheta][greekepsilon]
+[greekepsilon][greekiotapsilitonos]3[greeksigma]2[greekomega][greeknu][greektau][greekalpha][greekiota]
+[greekepsilon][greekiotapsili]3[greeksigma]2[greekalpha][greekiotaoxia][greekmu][greeketa][greeknu]
+[greekepsilon][greekiotapsilitonos]3[greeksigma]2[greekalpha][greekiota][greekomicron]
+[greekepsilon][greekiotapsilitonos]3[greeksigma]2[greekalpha][greekiota][greektau][greekomicron]
+[greekepsilon][greekiotapsilitonos]3[greeksigma]2[greekalpha][greekiota][greeksigma][greektheta][greekomicron][greeknu]
+[greekepsilon][greekiotapsilitonos]3[greeksigma]2[greekalpha][greekiotaoxia][greeksigma][greektheta][greeketa][greeknu]
+[greekepsilon][greekiotapsili]3[greeksigma]2[greekalpha][greekiotaoxia][greekmu][greekepsilon][greektheta][greekalpha]
+[greekepsilon][greekiotapsilitonos]3[greeksigma]2[greekalpha][greekiota][greeksigma][greektheta][greekepsilon]
+[greekepsilon][greekiotapsilitonos]3[greeksigma]2[greekalpha][greekiota][greeknu][greektau][greekomicron]
+[greekepsilon][greekiotapsili]3[greeksigma]2[greekalphaoxia][greeksigma][greektheta][greekomega]
+[greekepsilon][greekiotapsili]3[greeksigma]2[greekalphaoxia][greeksigma][greektheta][greekomega][greeknu]
+[greekepsilon][greekiotapsilitonos]3[greeksigma]2[greekalpha][greeksigma][greektheta][greekalpha][greekiota]
+[greekepsilon][greekiotapsili]3[greeksigma]2[greekalphaoxia][greekmu][greekepsilon][greeknu]
+[greekepsilon][greekiotapsili]3[greeksigma]2[greekalpha][greekmu][greekepsilonoxia][greeknu]
+[greekepsilonpsili]2[greekkappa]1[greeklambda]
+[greekepsilonpsili]3[greekkappa]2[greeklambda][greeketaoxia][greektheta][greeketa]
+[greekepsilonpsili]3[greekkappa]2[greeklambda][greekalphaoxia][greekzeta]
+[greekepsilonpsili]3[greekkappa]2[greeklambda][greekalphaoxia][greekgamma]
+[greekepsilonpsili]3[greekkappa]2[greeklambda][greekalphaoxia][greekomicron]
+[greekepsilonpsili]3[greekkappa]2[greeklambda][greekalphaoxia][greeksigma]
+[greekepsilonpsili]3[greekkappa]2[greeklambda][greekalpha][greekiotaoxia]
+[greekepsilonpsili]3[greekkappa]2[greeklambda][greekalpha][greekupsilonoxia]
+[greekepsilonpsili]3[greekkappa]2[greeklambda][greekepsilon][greekiotaoxia]
+[greekepsilonpsili]4[greekkappa]3[greeklambda][greekepsilon][greekiotaoxia][greekpi]
+[greekepsilonpsili]4[greekkappa]3[greeklambda][greekepsilon][greekiotaoxia][greekpsi]
+[greekepsilonpsili]3[greekkappa]2[greeklambda][greeketaiotasubtonos]
+[greekepsilonpsili]3[greekkappa]2[greekkappa][greeklambda][greekepsilonoxia][greekpi]
+[greekepsilonpsili]3[greekkappa]2[greekkappa][greeklambda][greekepsilonoxia][greekpsi]
+[greekepsilonpsili]3[greekkappa]2[greeklambda][greekalphaoxia][greekpi]
+[greekepsilonpsili]3[greekkappa]2[greeklambda][greekalpha][greekpi]
+[greekepsilonpsili]4[greekkappa]3[greeklambda][greekalphaoxia][greekpi][greektau]
+[greekepsilonpsili]4[greekkappa]3[greeklambda][greekalpha][greekpi][greektau]
+[greekepsilonpsili]3[greekkappa]2[greeklambda][greekepsilonoxia][greekphi]
+[greekepsilonpsili]3[greekkappa]2[greeklambda][greekepsilon][greekphi]
+[greekepsilonpsili]3[greekkappa]2[greeklambda][greeketaoxia][greekrho]
+[greekepsilonpsili]3[greekkappa]2[greeklambda][greeketa][greekrho]
+[greekepsilonpsili]3[greekkappa]2[greeklambda][greekiotaoxia][greeknu]
+[greekepsilonpsili]3[greekkappa]2[greeklambda][greekiota][greeknu]
+[greekepsilonpsili]3[greekkappa]2[greeklambda][greekupsilonoxia]
+[greekepsilonpsili]4[greekkappa]3[greeklambda][greekupsilonoxia][greeksigma][greekepsilon][greekomega]
+[greekepsilonpsili]4[greekkappa]3[greeklambda][greekupsilonoxia][greeksigma][greekepsilon][greekiota]
+[greekepsilonpsili]4[greekkappa]3[greeklambda][greekupsilonoxia][greeksigma][greekepsilon][greekomicron][greekiota]
+[greekepsilonpsili]4[greekkappa]3[greeklambda][greekupsilonoxia][greeksigma][greekepsilon][greeksigma][greekiota]
+[greekepsilonpsili]3[greekkappa]2[greeklambda][greekomicronoxia][greekmu]
+[greekepsilonpsili]3[greekkappa]2[greekkappa][greeklambda][greekomegaoxia][greeksigma]
+[greekepsilonpsilitonos]2[greekkappa]1[greeklambda][greekepsilon][greekiota]
+[greekepsilonpsilitonos]3[greekkappa]2[greeklambda][greekepsilon][greekiota][greeksigma]
+[greekepsilonpsilitonos]2[greekkappa]1[greeklambda][greekupsilon][greeksigma]
+[greekepsilonpsili]2[greekkappa]1[greekmu]
+[greekepsilonpsilitonos]2[greekkappa]1[greekmu]
+[greekepsilonpsili]2[greekkappa]1[greeknu]
+[greekepsilonpsilitonos]2[greekkappa]1[greeknu]
+[greekepsilonpsilitonos]3[greekkappa]2[greeknu][greekalpha][greekiota]
+[greekepsilonpsili]3[greekkappa]2[greeknu][greekalpha][greekiotaoxia]
+[greekepsilonpsilitonos]3[greekkappa]2[greeknu][greeketa][greeksigma]
+[greekepsilonpsili]3[greekkappa]2[greeknu][greeketaoxia][greeksigma]
+[greekepsilonpsili]3[greekkappa]2[greeknu][greekupsilon]
+[greekepsilonpsili]2[greekkappa]1[greekrho]
+[greekepsilonpsilitonos]2[greekkappa]1[greekrho]
+[greekepsilonpsili]3[greekkappa]2[greekrho][greekalphaoxia][greekdelta]
+[greekepsilonpsili]3[greekkappa]2[greekrho][greekalpha][greekdelta]
+[greekepsilonpsilitonos]3[greekkappa]2[greekrho][greekalpha][greekzeta]
+[greekepsilonpsili]3[greekkappa]2[greekrho][greekalphaoxia][greekzeta]
+[greekepsilonpsilitonos]3[greekkappa]2[greekrho][greekalpha][greekgamma]
+[greekepsilonpsili]3[greekkappa]2[greekrho][greekalphaoxia][greekgamma]
+[greekepsilonpsili]3[greekkappa]2[greekrho][greekalphaoxia][greektau]
+[greekepsilonpsili]3[greekkappa]2[greekrho][greekalpha][greektau]
+[greekepsilonpsili]3[greekkappa]2[greekrho][greekalpha][greekupsilonoxia][greekgamma]
+[greekepsilonpsili]3[greekkappa]2[greekrho][greekalpha][greekupsilon][greekgamma]
+[greekepsilonpsilitonos]3[greekkappa]2[greekrho][greekalpha][greekiota]
+[greekepsilonpsili]3[greekkappa]2[greekrho][greekalpha][greekiotaoxia]
+[greekepsilonpsilitonos]3[greekkappa]2[greekrho][greekalpha][greeknu]
+[greekepsilonpsili]3[greekkappa]2[greekrho][greekalphaoxia][greeknu]
+[greekepsilonpsili]3[greekkappa]2[greekrho][greeketaoxia][greeketa]
+[greekepsilonpsili]3[greekkappa]2[greekrho][greekalphaoxia][greekalpha]
+[greekepsilonpsili]3[greekkappa]2[greekrho][greekalpha][greekalphaoxia]
+[greekepsilonpsili]3[greekkappa]2[greekrho][greekalphaoxia][greektheta]
+[greekepsilonpsili]3[greekkappa]2[greekrho][greekalpha][greektheta]
+[greekepsilonpsilitonos]3[greekkappa]2[greekrho][greekepsilon][greekkappa]
+[greekepsilonpsili]3[greekkappa]2[greekrho][greekepsilonoxia][greekkappa]
+[greekepsilonpsilitonos]3[greekkappa]2[greekrho][greekepsilon][greekxi]
+[greekepsilonpsili]3[greekkappa]2[greekrho][greekepsilonoxia][greekxi]
+[greekepsilonpsili]3[greekkappa]2[greekrho][greekepsilonoxia][greekmu]
+[greekepsilonpsili]3[greekkappa]2[greekrho][greekepsilon][greekmu]
+[greekepsilonpsili]3[greekkappa]2[greekrho][greeketaoxia][greekmu]
+[greekepsilonpsili]3[greekkappa]2[greekrho][greeketa][greekmu]
+[greekepsilonpsilitonos]3[greekkappa]2[greekrho][greekiota][greeknu]
+[greekepsilonpsili]3[greekkappa]2[greekrho][greekiotaoxia][greeknu]
+[greekepsilonpsili]3[greekkappa]2[greekrho][greekiotaoxia][greektheta]
+[greekepsilonpsili]3[greekkappa]2[greekrho][greekomicronoxia][greektau]
+[greekepsilonpsili]3[greekkappa]2[greekrho][greekomicron][greektau]
+[greekepsilonpsilitonos]3[greekkappa]2[greekrho][greekomicron][greekupsilon]
+[greekepsilonpsili]3[greekkappa]2[greekrho][greekomicron][greekupsilonoxia]
+[greekepsilonpsilitonos]3[greekkappa]2[greekrho][greekupsilon][greekpi]
+[greekepsilonpsili]3[greekkappa]2[greekrho][greekupsilonoxia][greekpi]
+[greekepsilonpsilitonos]3[greekkappa]2[greekrho][greekupsilon][greekpsi]
+[greekepsilonpsili]3[greekkappa]2[greekrho][greekupsilonoxia][greekpsi]
+[greekepsilonpsili]3[greekkappa]2[greekrho][greekupsilonoxia][greekbeta]
+[greekepsilonpsili]3[greekkappa]2[greekrho][greekupsilonoxia][greekphi]
+[greekepsilonpsili]3[greekkappa]2[greekrho][greekupsilon][greeksigma]
+[greekepsilonpsilitonos]3[greekkappa]2[greekrho][greekomega][greekzeta]
+[greekepsilonpsili]3[greekkappa]2[greekrho][greekomegaoxia][greekzeta]
+[greekepsilonpsilitonos]3[greekkappa]2[greekrho][greekomega][greekxi]
+[greekepsilonpsili]3[greekkappa]2[greekrho][greekomegaoxia][greekxi]
+[greekepsilonpsili]2[greekkappa]1[greektau][greekalpha][greektheta]
+[greekepsilonpsilitonos]2[greekkappa]1[greektau][greekalpha][greekmu][greekepsilon].
+[greekepsilonpsili]2[greekkappa]1[greektau][greekalphaoxia][greekmu][greeknu]
+[greekepsilonpsili]2[greekkappa]1[greektau][greekalpha][greeknu]
+[greekepsilonpsili]2[greekkappa]1[greektau][greekalpha][greekrho]
+[greekepsilonpsili]2[greekkappa]1[greektau][greekalphaoxia][greeksigma]
+[greekepsilonpsili]2[greekkappa]1[greektau][greekepsilon]
+[greekepsilonpsili]2[greekkappa]1[greektau][greekepsilonoxia]
+[greekepsilonpsili]3[greekkappa]2[greektau][greekepsilon][greekiotaoxia][greeknu]
+[greekepsilonpsili]2[greekkappa]1[greektau][greeketaoxia][greekkappa]
+[greekepsilonpsili]2[greekkappa]1[greektau][greekiota]
+[greekepsilonpsilitonos]2[greekkappa]1[greektau][greekiota]
+[greekepsilonpsili]2[greekkappa]1[greektau][greekiotaoxia]
+[greekepsilonpsilitonos]3[greekkappa]2[greektau][greekiota][greekzeta]
+[greekepsilonpsili]3[greekkappa]2[greektau][greekiotaoxia][greekzeta]
+[greekepsilonpsilitonos]3[greekkappa]2[greektau][greekiota][greeksigma][greekalpha]
+[greekepsilonpsili]3[greekkappa]2[greektau][greekiotaoxia][greeksigma][greekalpha]
+[greekepsilonpsili]2[greekkappa]1[greektau][greekomicronoxia]
+[greekepsilonpsili]2[greekkappa]1[greektau][greekomicron]
+[greekepsilonpsilitonos]2[greekkappa]1[greektau][greekomicron]
+[greekepsilonpsili]3[greekkappa]2[greektau][greekomicronoxia][greekfinalsigma].
+[greekepsilonpsili]3[greekkappa]2[greektau][greekomicronvaria][greekfinalsigma].
+[greekepsilonpsili]3[greekkappa]2[greektau][greekomicronoxia][greeksigma].
+[greekepsilonpsili]3[greekkappa]2[greektau][greekomicronvaria][greeksigma].
+[greekepsilonpsili]2[greekkappa]1[greektau][greekrho]
+[greekepsilonpsilitonos]2[greekkappa]1[greektau][greekupsilon][greekpi][greekomicron]
+[greekepsilonpsili]2[greekkappa]1[greektau][greekupsilonoxia][greekpi][greekomicron][greekupsilon].
+[greekepsilonpsili]2[greekkappa]1[greektau][greekupsilonoxia][greekpi][greekomegaiotasub].
+[greekepsilonpsilitonos]2[greekkappa]1[greektau][greekupsilon][greekpi][greekepsilon].
+[greekepsilonpsili]2[greekkappa]1[greektau][greekupsilonoxia][greekpi][greekomega].
+[greekepsilonpsili]2[greekkappa][greektau][greekupsilonoxia][greekpi][greekomicron][greekiota].
+[greekepsilonpsili]2[greekkappa]1[greektau][greekupsilonoxia][greekpi][greekomega][greeknu].
+[greekepsilonpsili]2[greekkappa]1[greektau][greekupsilonoxia][greekpi][greekomicron][greekiota][greekfinalsigma].
+[greekepsilonpsili]2[greekkappa]1[greektau][greekupsilonoxia][greekpi][greekomicron][greekiota][greeksigma].
+[greekepsilonpsili]2[greekkappa]1[greektau][greekupsilonoxia][greekpi][greekomicron][greekupsilon][greekfinalsigma].
+[greekepsilonpsili]2[greekkappa]1[greektau][greekupsilonoxia][greekpi][greekomicron][greekupsilon][greeksigma].
+[greekepsilonpsilitonos]2[greekkappa]1[greektau][greekupsilon][greekpi][greekalpha].
+[greekepsilonpsili]2[greekkappa]1[greektau][greekupsilon]
+[greekepsilondasia][greeklambda][greeklambda][greeketaoxia]2[greeksigma]1[greekpi]
+[greekepsilondasia][greeklambda][greeklambda][greeketa]2[greeksigma]1[greekpi]
+[greekepsilonpsili]2[greeknu]1
+[greekepsilonpsilitonos]2[greeknu]1
+[greekepsilonpsili]3[greeknu]2[greekalphaoxia][greekkappa][greekiota][greekfinalsigma]
+[greekepsilonpsili]3[greeknu]2[greekalpha][greekkappa][greekiota][greeksigma]
+[greekepsilonpsili]3[greeknu]2[greekalpha][greekkappa][greekomicronoxia][greeksigma]
+[greekepsilonpsili]3[greeknu]2[greekalpha][greekkappa][greekomicron][greeksigma]
+[greekepsilonpsilitonos]3[greeknu]2[greekalpha][greekrho][greekalpha].
+[greekepsilonpsili]3[greeknu]2[greekalphaoxia][greekrho][greekomega][greeknu].
+[greekepsilonpsili]3[greeknu]2[greekalphaoxia][greekrho][greekomicron][greekiota][greekfinalsigma].
+[greekepsilonpsili]3[greeknu]2[greekalphaoxia][greekrho][greekomicron][greekiota][greeksigma].
+[greekepsilonpsili]3[greeknu]2[greekalpha][greekrho][greeketa][greekphi]
+[greekepsilonpsili]4[greeknu]3[greekalpha][greekrho][greekalpha][greekrho]
+[greekepsilonpsili]3[greeknu]2[greekalphaoxia][greekrho][greekepsilon][greekepsilon]
+[greekepsilonpsili]3[greeknu]2[greekalpha][greekrho][greekepsilonoxia][greekomega]
+[greekepsilonpsili]3[greeknu]2[greekalpha][greekrho][greekepsilonoxia][greekalpha]
+[greekepsilonpsili]3[greeknu]2[greekalpha][greekrho][greekepsilon][greekalphaoxia]
+[greekepsilonpsili]3[greeknu]2[greekalphaoxia][greekrho][greekiota][greekepsilon]
+[greekepsilonpsili]3[greeknu]2[greekalpha][greekrho][greekiotaoxia][greekomega]
+[greekepsilonpsili]3[greeknu]2[greekalpha][greekrho][greekiotaoxia][greekalpha]
+[greekepsilonpsili]3[greeknu]2[greekalpha][greekrho][greekiota][greekalphaoxia]
+[greekepsilonpsilitonos]3[greeknu]2[greekalpha][greeksigma][greeksigma]
+[greekepsilonpsili]3[greeknu]2[greekalphaoxia][greeksigma][greeksigma]
+[greekepsilonpsili]3[greeknu]2[greekalphaoxia][greeksigma][greektheta]
+[greekepsilonpsili]3[greeknu]2[greekalpha][greeksigma][greektheta]
+[greekepsilonpsilitonos]3[greeknu]2[greekalpha][greektau]
+[greekepsilonpsili]3[greeknu]2[greekalphaoxia][greektau]
+[greekepsilonpsili][greeknu][greekdelta][greekupsilon]2[greeksigma]1[greektau]
+[greekepsilonpsili]3[greeknu]2[greekepsilonoxia][greekgamma][greekkappa]
+[greekepsilonpsili]3[greeknu]2[greekepsilon][greekgamma][greekkappa]
+[greekepsilonpsilitonos]3[greeknu]2[greekepsilon][greekiota][greekkappa]
+[greekepsilonpsili]3[greeknu]2[greekepsilon][greekiotaperispomeni][greekkappa]
+[greekepsilonpsili]3[greeknu]2[greekepsilon][greekiota][greekkappa]
+[greekepsilonpsili]3[greeknu]2[greekepsilon][greekiotaoxia][greekkappa]
+[greekepsilonpsilitonos]3[greeknu]2[greekepsilon][greekiota][greekmu]
+[greekepsilonpsili]3[greeknu]2[greekepsilon][greekiotaoxia][greekmu]
+[greekepsilonpsili]3[greeknu]2[greekepsilon][greekmu][greekepsilonoxia][greeksigma][greeksigma]
+[greekepsilonpsili]3[greeknu]2[greekepsilon][greekmu][greeketaoxia][greektheta]
+[greekepsilonpsili]3[greeknu]2[greekepsilon][greeknu][greeketaoxia]
+[greekepsilonpsili]3[greeknu]2[greekepsilon][greekomicronoxia]
+[greekepsilonpsili]3[greeknu]2[greekepsilon][greekomicronvaria]
+[greekepsilonpsili]3[greeknu]2[greekepsilon][greekomicron]
+[greekepsilonpsili]3[greeknu]2[greekepsilon][greekomegaperispomeni]
+[greekepsilonpsili]3[greeknu]2[greekepsilon][greekalphaoxia]
+[greekepsilonpsili]3[greeknu]2[greekepsilon][greekalphavaria]
+[greekepsilonpsili]3[greeknu]2[greekepsilon][greekalphaperispomeni]
+[greekepsilonpsili]3[greeknu]2[greekepsilonoxia][greekpi][greekepsilon][greekiota]
+[greekepsilonpsilitonos]3[greeknu]2[greekepsilon][greekrho][greektheta][greekepsilon]
+[greekepsilonpsilitonos]3[greeknu]2[greekepsilon][greekupsilon][greeksigma]
+[greekepsilonpsili]3[greeknu]2[greekepsilon][greekupsilonoxia][greeksigma]
+[greekepsilonpsili]3[greeknu]2[greekepsilonoxia][greekchi][greektheta]
+[greekepsilonpsili]3[greeknu]2[greekepsilon][greekchi][greektheta]
+[greekepsilonpsilitonos]3[greeknu]2[greeketa][greeksigma]
+[greekepsilonpsili]3[greeknu]2[greeketaoxia][greeksigma]
+[greekepsilonpsili]3[greeknu]2[greeketa][greeketaoxia]
+[greekepsilonpsili]3[greeknu]2[greeketa][greeketavaria]
+[greekepsilonpsilitonos]3[greeknu]2[greeketa][greeknu].
+[greekepsilonpsili]3[greeknu]2[greeketa][greekepsilon][greekiotaoxia]
+[greekepsilonpsili]3[greeknu]2[greeketa][greekomicron]
+[greekepsilonpsili]3[greeknu]2[greeketa][greekomegaperispomeni]
+[greekepsilonpsili]3[greeknu][greeketa][greekepsilonoxia]
+[greekepsilonpsili]3[greeknu]2[greeketaoxia][greeknu][greekomicron]
+[greekepsilonpsili]3[greeknu]2[greekiotaoxia]
+[greekepsilonpsili]3[greeknu]2[greekiota]
+[greekepsilonpsilitonos]3[greeknu]2[greekiota]
+[greekepsilonpsili]4[greeknu]3[greekiota][greekalpha][greekupsilonoxia]
+[greekepsilonpsili]5[greeknu]4[greekiota][greekalpha][greekupsilonoxia][greeksigma]
+[greekepsilonpsili]5[greeknu]4[greekiota][greekalpha][greekupsilon][greeksigma]
+[greekepsilonpsili]4[greeknu]3[greekiota][greekdelta][greekrho]
+[greekepsilonpsili]4[greeknu]3[greekiotaoxia][greekdelta][greekrho]
+[greekepsilonpsili]4[greeknu]3[greekiotaoxia][greekzeta]
+[greekepsilonpsili]4[greeknu]3[greekiotaoxia][greeketa]
+[greekepsilonpsili]4[greeknu]3[greekiota][greekepsilonoxia][greektau][greekomicron][greeknu].
+[greekepsilonpsili]4[greeknu]3[greekiotaoxia][greekepsilon][greekmu][greekepsilon][greeknu].
+[greekepsilonpsili]4[greeknu]3[greekiotaoxia][greekomega].
+[greekepsilonpsili]4[greeknu]3[greekiota][greekpi][greekpi]
+[greekepsilonpsili]4[greeknu]3[greekiotaoxia][greekpi][greekpi]
+[greekepsilonpsili]4[greeknu]3[greekiotaoxia][greekpi][greektau]
+[greekepsilonpsili]4[greeknu]3[greekiotaoxia][greekpsi]
+[greekepsilonpsili]4[greeknu]3[greekiotaoxia][greeksigma][greeksigma]
+[greekepsilonpsili]4[greeknu]3[greekiotaoxia][greeksigma][greektau]
+[greekepsilonpsili]4[greeknu]3[greekiota][greeksigma][greektau]
+[greekepsilonpsili]4[greeknu]3[greekiota][greeksigma][greekchi]
+[greekepsilonpsili]4[greeknu]3[greekiotaoxia][greeksigma][greekchi]
+[greekepsilonpsilitonos]3[greeknu]2[greekomicron][greekfinalsigma].
+[greekepsilonpsilitonos]3[greeknu]2[greekomicron][greeksigma].
+[greekepsilonpsilitonos]3[greeknu]2[greekomicron][greekupsilon].
+[greekepsilonpsilitonos]3[greeknu]2[greekomicron][greeknu].
+[greekepsilonpsilitonos]3[greeknu]2[greekomega]
+[greekepsilonpsilitonos]3[greeknu]2[greekomicron][greekiota].
+[greekepsilonpsilitonos]3[greeknu]2[greekomicron][greekiota][greekfinalsigma].
+[greekepsilonpsilitonos]3[greeknu]2[greekomicron][greekiota][greeksigma].
+[greekepsilonpsilitonos]3[greeknu]2[greeketa][greekfinalsigma].
+[greekepsilonpsilitonos]3[greeknu]2[greeketa][greeksigma].
+[greekepsilonpsilitonos]3[greeknu]2[greeketaiotasub].
+[greekepsilonpsilitonos]3[greeknu]2[greeketa].
+[greekepsilonpsilitonos]3[greeknu]2[greekomicron][greeksigma][greekiota]
+[greekepsilonpsili]3[greeknu]2[greekomicronoxia][greeksigma][greekepsilon]
+[greekepsilonpsili]3[greeknu]2[greekupsilon][greekalphaoxia][greeklambda]
+[greekepsilonpsili]3[greeknu]2[greekupsilon][greekalpha][greeklambda]
+[greekepsilonpsilitonos]3[greeknu]2[greekupsilon][greekxi]
+[greekepsilonpsili]3[greeknu]2[greekupsilon][greekxi]
+[greekepsilonpsili]3[greeknu]2[greekupsilonoxia][greekxi]
+[greekepsilonpsili]3[greeknu]2[greekupsilonoxia][greeksigma]
+[greekepsilonpsili]3[greeknu]2[greekupsilon][greeksigma]
+[greekepsilonpsili]3[greeknu]2[greekupsilon][greekomegaoxia]
+[greekepsilonpsili]3[greeknu]2[greekupsilon][greekomegavaria]
+[greekepsilonpsili]3[greeknu]2[greekupsilon][greekomicronoxia][greekomicron]
+[greekepsilonpsili]3[greeknu]2[greekupsilon][greekomicron][greekupsilonperispomeni][greekfinalsigma]
+[greekepsilonpsili]2[greekxi]1
+[greekepsilonpsilitonos]2[greekxi]1
+[greekepsilonpsili]3[greekxi]2[greeketaoxia][greekrho]
+[greekepsilonpsili]3[greekxi]2[greeketa][greekrho]
+[greekepsilonpsili]3[greekxi]2[greekupsilon]2[greeknu]1
+[greekepsilonpsili]3[greekxi]2[greekupsilon][greekrho]
+[greekepsilonpsili]3[greekxi]2[greekupsilonoxia][greekrho]
+[greekepsilonpsilitonos]3[greekxi]2[greekupsilon][greeksigma]
+[greekepsilonpsilitonos]3[greekxi]2[greekomega].
+[greekepsilondasia]2[greekxi]1[greeketaoxia][greekrho][greekepsilon][greektau][greekmu]
+[greekepsilondasia]2[greekxi]1[greeketa][greekrho][greekepsilonoxia][greektau][greekmu]
+[greekepsilonpsili][greekpi][greekepsilon][greekiotaoxia]2[greeksigma]1
+[greekepsilonpsili][greekpi][greekepsilon][greekiota]2[greeksigma]1
+[greekepsilonpsili][greekpi][greekepsilon][greekiotaoxia]3[greeksigma]2[greekalpha][greektau][greekomicron][greeknu].
+[greekepsilonpsili][greekpi][greekepsilon][greekiota]3[greeksigma]2[greekalphaoxia][greektau][greeketa][greeknu].
+[greekepsilonpsili][greekpi][greekepsilon][greekiotaoxia]3[greeksigma]2[greekalpha][greekmu][greekepsilon][greeknu].
+[greekepsilonpsili][greekpi][greekepsilon][greekiotaoxia]3[greeksigma]2[greekalpha][greektau][greekepsilon]
+[greekepsilonpsili][greekpi][greekepsilon][greekiota]3[greeksigma]2[greekalphaoxia][greekmu][greeketa][greeknu].
+[greekepsilonpsili][greekpi][greekepsilon][greekiotaoxia]3[greeksigma]2[greekomega].
+[greekepsilonpsili][greekpi][greekepsilon][greekiotaoxia]3[greeksigma]2[greekalpha][greektau][greekomicron]
+[greekepsilonpsili][greekpi][greekepsilon][greekiotaoxia]3[greeksigma]2[greekalpha][greeksigma][greektheta][greekomicron][greeknu].
+[greekepsilonpsili][greekpi][greekepsilon][greekiota]3[greeksigma]2[greekalphaoxia][greekmu][greekepsilon][greektheta][greekalpha].
+[greekepsilonpsili][greekpi][greekepsilon][greekiotaoxia]3[greeksigma]2[greekalpha][greeksigma][greektheta][greekepsilon].
+[greekepsilonpsili][greekpi][greekepsilon][greekiotaoxia]3[greeksigma]2[greekalpha][greeknu][greektau][greekomicron].
+[greekepsilonpsili][greekpi][greekepsilon][greekiotaoxia]3[greeksigma]2[greektheta]
+[greekepsilonpsili][greekpi][greekepsilon][greekiota]3[greeksigma]2[greektheta]
+[greekepsilonpsili][greekpi][greekepsilon]2[greekkappa]1[greektau][greekepsilon][greekiotaoxia]
+[greekepsilonpsili][greekpi][greekepsilonoxia]2[greekkappa]1[greektau][greekepsilon][greekiota]
+[greekepsilonpsili][greekpi][greekepsilon]2[greekkappa]1[greektau][greekrho]
+[greekepsilonpsili][greekpi][greekepsilonoxia]2[greekkappa]1[greektau][greekrho]
+[greekepsilonpsili][greekpi][greekepsilon]2[greekxi]1
+[greekepsilonpsili][greekpi][greekepsilon]2[greeksigma]1[greekbeta]
+[greekepsilonpsili][greekpi][greekiota][greekpi][greekrho][greekomicronoxia]2[greeksigma]1[greektheta]
+[greekepsilonpsili][greekpi][greekiota][greekpi][greekrho][greekomicron]2[greeksigma]1[greektheta]
+[greekepsilonpsili][greekpi][greekiota][greeksigma][greekupsilon]2[greeknu]1
+[greekepsilonpsili]2[greeksigma]1
+[greekepsilonpsili]3[greeksigma]2[greekalphaoxia][greekomega]
+[greekepsilonpsili]3[greeksigma]2[greeketa][greekmu]
+[greekepsilonpsili]3[greeksigma]2[greektheta]
+[greekepsilonpsili]4[greeksigma]3[greektheta][greekepsilonoxia][greeksigma]
+[greekepsilonpsili]3[greeksigma]2[greekiota][greekgamma]
+[greekepsilonpsili]3[greeksigma]2[greekkappa]
+[greekepsilonpsili]4[greeksigma]3[greekkappa][greekalphaoxia]
+[greekepsilonpsili]4[greeksigma]3[greekkappa][greekalpha]
+[greekepsilonpsili]3[greeksigma]2[greekmu][greekepsilonvaria][greeknu].
+[greekepsilonpsili]3[greeksigma]2[greekmu][greekepsilonoxia][greeknu].
+[greekepsilonpsili]3[greeksigma]2[greektau]
+[greekepsilonpsili]3[greeksigma]2[greekomicronoxia][greekmu][greekepsilon][greektheta][greekalpha]
+[greekepsilonpsili]3[greeksigma]2[greekomicron][greekiotaoxia][greekmu][greeketa][greeknu]
+[greekepsilonpsili]3[greeksigma]2[greekomicronoxia][greekmu]
+[greekepsilonpsili]3[greeksigma]2[greekomicron][greekmu]
+[greekepsilonpsili]3[greeksigma]2[greekomicron][greekupsilonperispomeni]
+[greekepsilonpsili]3[greeksigma]2[greekomicron][greekupsilon][oxia]
+[greekepsilonpsili]3[greeksigma]2[greekupsilon]
+[greekepsilonpsili]3[greeksigma]2[greekupsilonoxia]
+[greekepsilonpsili][greeksigma][greekupsilonoxia]2[greeknu]1
+[greekepsilonpsili][greeksigma][greekupsilon]2[greeknu]1
+[greekepsilonpsili]3[greeksigma]2[greekchi]
+[greekepsilonpsili]4[greeksigma]3[greekchi][greekepsilonoxia]
+[greekepsilonpsili]3[greeksigma]2[greekomegaoxia]
+[greekepsilonpsili]3[greeksigma]2[greekomega]
+[greekepsilonpsilitonos]2[greeksigma]1[greekomicron][greekpi]
+[greekepsilon][greekupsilonpsili][greekepsilon]2[greekxi]1
+[greekepsilon][greekupsilonpsili][greekepsilon]3[greekxi]2[greekiotaoxia]
+[greekepsilon][greekupsilonpsili][greekepsilon]3[greekxi]2[greekiota]
+[greekepsilon][greekupsilonpsili][greekpi][greekrho][greekomicronoxia]2[greeksigma]1
+[greekepsilon][greekupsilonpsili][greekpi][greekrho][greekomicron]2[greeksigma]1
+[greekepsilon][greekupsilonpsili][greeksigma][greekupsilonoxia]2[greeknu]1
+[greekepsilon][greekupsilonpsili][greeksigma][greekupsilon]2[greeknu]1
+[greekepsilon][greekupsilonpsili][greekxi][greekupsilonoxia]2[greeknu]1
+[greekepsilon][greekupsilonpsili][greekxi][greekupsilon]2[greeknu]1
+[greekepsilonpsili][greekomega]2[greeksigma]1[greekphi]
+[greeketapsilitonos]2[greeknu]1[greekomicron][greekpsi].
+[greeketapsilitonos]2[greeknu]1[greekomicron][greekpi]
+[greeketapsili]2[greeknu]1[greekomicronoxia][greekpi]
+.[greektheta][greekepsilon][greekmu][greekiota]2[greeksigma]1[greekkappa][greekrho]
+.[greektheta][greekepsilon][greekomicronoxia]2[greeksigma]1[greekdelta]
+.[greektheta][greekepsilon][greekomicron]2[greeksigma]1[greekdelta]
+.[greektheta][greekepsilon][greekomicron][greekiota]2[greeksigma]1[greekepsilon][greekchi][greektheta][greekrho]
+.[greektheta][greeketa]2[greekrho]1[greekalpha][greekgamma][greekrho]
+.[greektheta][greekupsilon][greekomicron]2[greeksigma]1[greekkappa]
+.[greekkappa][greekalpha][greektheta][greekupsilon][greekpi][greekepsilon]2[greekrho]1
+.[greekkappa][greekalpha][greeklambda][greekomega]2[greeksigma]1[greekomicron][greekrho]
+.[greekkappa][greekalpha][greeklambda][greekomega]2[greeksigma]1[greekomicronoxia][greekrho]
+.[greekkappa][greekalpha]2[greeknu]1[greekepsilon][greekiotaoxia][greekfinalsigma].
+.[greekkappa][greekalpha]2[greeknu]1[greekepsilon][greekiotavaria][greekfinalsigma].
+.[greekkappa][greekalpha]2[greeknu]1[greekepsilon][greekiotaoxia][greeksigma].
+.[greekkappa][greekalpha]2[greeknu]1[greekepsilon][greekiotavaria][greeksigma].
+.[greekkappa][greekalpha]2[greeknu]1[greekepsilon][greeknu]
+.[greekkappa][greekalpha]2[greeknu]1[greekepsilonoxia][greeknu]
+.[greekkappa][greekalpha][greektau][greekalpha][greekdelta][greekupsilon]2[greeksigma]1[greekomega][greekpi]
+.[greekkappa][greekalpha][greektau][greekepsilon][greekdelta][greekupsilon]2[greeksigma]1[greekomegaoxia][greekpi]
+.[greekkappa][greekalpha][greektau][greekepsilon][greekiota]2[greeksigma]1
+.[greekkappa][greekalpha][greektau][greekepsilon]2[greeknu]1[greekalpha][greekiotaoxia]
+.[greekkappa][greekalpha][greektau][greekepsilon]2[greeknu]1[greeketaoxia]
+.[greekkappa][greekalpha][greektau][greekepsilon]2[greekxi]1[greekalpha]2[greeknu]1[greekiotaoxia]
+.[greekkappa][greekalpha][greektau][greekepsilon]2[greekxi]1[greekalpha]2[greeknu]1[greekepsilonoxia][greeksigma]
+.[greekkappa][greekepsilon][greekrho][greekalpha]2[greeksigma]1[greekphi]
+.[greekkappa][greekrho][greekalphaoxia]2[greeksigma]1[greekpi]
+.[greekkappa][greekrho][greekalpha]2[greeksigma]1[greekpi]
+.[greekkappa][greekupsilon][greeknu][greekomicronoxia]2[greeksigma]1[greekalpha]
+.[greekkappa][greekupsilon][greeknu][greekomicronoxia]2[greeksigma]1[greekbeta]
+.[greekkappa][greekupsilon][greeknu][greekomicron]2[greeksigma]1[greekbeta]
+.[greekkappa][greekupsilon][greeknu][greekomicronoxia]2[greeksigma]1[greekomicron]
+.[greekkappa][greekupsilon][greeknu][greekomicron]2[greeksigma]1[greekomicron]
+.[greekkappa][greekupsilon][greeknu][greekomicron]2[greeksigma]1[greekphi]
+.[greekmu][greekepsilon][greeklambda][greekalpha]2[greeknu]1[greekalphaoxia][greekgamma]
+.[greekmu][greekepsilon][greeklambda][greekalpha]2[greeknu]1[greekalpha][greekgamma]
+.[greekmu][greekepsilon][greeklambda][greekalpha]2[greeknu]1[greekalphaoxia][greekepsilon]
+.[greekmu][greekepsilon][greeklambda][greekalpha]2[greeknu]1[greekalpha][greekepsilonoxia]
+.[greekmu][greekepsilon][greeklambda][greekalpha]2[greeknu]1[greekalpha][greektheta]
+.[greekmu][greekepsilon][greeklambda][greekalpha]2[greeknu]1[greekalpha][greekiota][greekgamma]
+.[greekmu][greekepsilon][greeklambda][greekalpha]2[greeknu]1[greekalpha][greekupsilon][greekgamma]
+.[greekmu][greekepsilon][greeklambda][greekalpha]2[greeknu]1[greekepsilon][greekiotaoxia][greekmu]
+.[greekmu][greekepsilon][greeklambda][greekalpha]2[greeknu]1[greekepsilon][greekiotaperispomeni][greekmu]
+.[greekmu][greekepsilon][greeklambda][greekalphaoxia]2[greeknu]1[greekiota][greekpi][greekpi]
+.[greekmu][greekepsilon][greeklambda][greekalpha]2[greeknu]1[greekiotaoxia][greekpi][greekpi]
+.[greekmu][greekepsilon][greeklambda][greekalpha]2[greeknu]1[greekomicronoxia][greekmu][greekmu]
+.[greekmu][greekepsilon][greeklambda][greekalpha]2[greeknu]1[greekomicron][greekmu][greekmu]
+.[greekmu][greekepsilon][greeklambda][greekalphaoxia]2[greeknu]1[greekomicron][greeksigma][greeksigma]
+.[greekmu][greekepsilon][greeklambda][greekalpha]2[greeknu]1[greekomicronoxia][greeksigma][greeksigma]
+.[greekmu][greekepsilon][greeklambda][greekalphaoxia]2[greeknu]1[greekomicron][greeksigma][greektau]
+.[greekmu][greekepsilon][greeklambda][greekalpha]2[greeknu]1[greekomicronoxia][greeksigma][greektau]
+.[greekmu][greekepsilon][greeklambda][greekalphaoxia]2[greeknu]1[greekomicron][greekupsilon][greekrho]
+.[greekmu][greekepsilon][greeklambda][greekalpha]2[greeknu]1[greekomicron][greekupsilonoxia][greekrho]
+.[greekmu][greekepsilon][greeklambda][greekalpha]2[greeknu]1[greekomicron][greekupsilon][greekrho]
+.[greekmu][greekepsilon][greeklambda][greekalphaoxia]2[greeknu]1[greekupsilon]
+.[greekmu][greekepsilon][greeklambda][greekalpha]2[greeknu]1[greekupsilonoxia]
+.[greekmu][greekepsilon][greektau][greekepsilon]2[greekxi]1[greekalpha]
+.[greekmu][greekepsilon][greektau][greekepsilon]2[greekxi]1[greekepsilonoxia]
+.[greekmu][greekepsilon][greektau][greekepsilon]2[greekxi]1[greekepsilon]
+.[greekmu][greekomicron][greekgamma][greekiota]2[greeksigma]1
+.[greekmu][greekomicron][greekgamma][greekomicron]2[greeksigma]1[greektau]
+.[greekmu][greekupsilon]2[greeksigma]1[greekpi]
+.[greekmu][greekupsilon]2[greeksigma]1[greekepsilon][greekpi]
+.[greeknu][greekepsilon][greekomegaoxia]2[greeksigma]1[greekomicron][greekiota][greekkappa]
+.[greeknu][greekepsilon][greekomega]2[greeksigma]1[greekomicron][greekiotaoxia][greekkappa]
+.[greeknu][greekomicron][greekupsilon]2[greeknu]1[greekepsilon]
+.[greekxi][greekupsilon]2[greeknu]1[greekalpha][greekgamma]
+.[greekxi][greekupsilon]2[greeknu]1[greekepsilon]
+.[greekxi][greekupsilon]2[greeknu]1[greekepsilonoxia]
+.[greekxi][greekupsilonoxia]2[greeknu]1[greekepsilon]
+.[greekxi][greekupsilon]3[greeknu]2[greekepsilon][greekomegaoxia]
+.[greekxi][greekupsilon]3[greeknu]2[greekepsilon][greekomegaperispomeni]
+.[greekxi][greekupsilon]2[greeknu]1[greeketaperispomeni][greekkappa]
+.[greekxi][greekupsilonoxia]2[greeknu]1[greekiota]
+.[greekxi][greekupsilon]2[greeknu]1[greekiotaoxia]
+[greekomicron][greekiotadasia][greekomicron]2[greeknu]1[greekepsilon][greekiotaoxia].
+[greekomicron][greekiotadasia][greekomicron]2[greeknu]1[greekepsilon][greekiotavaria].
+[greekomicron][greekiotadasia][greekomicronoxia]2[greeksigma]1
+[greekomicron][greekiotapsili]2[greeksigma]1[greekpi][greekomegaoxia][greektau]
+[greekomicron][greekiotapsili]2[greeksigma]1[greekpi][greekomega][greektau]
+[greekomicrondasia][greeklambda][greekomicron]2[greeknu]1[greekepsilonoxia][greeknu].
+[greekomicrondasia][greeklambda][greekomicron]2[greeknu]1[greekepsilonvaria][greeknu].
+[greekomicrondasia][greekpi][greekomega]2[greeksigma]1
+[greekomicrondasiatonos]2[greeksigma]1[greekgamma][greekepsilon].
+[greekomicrondasia][greeksigma][greekomicron]2[greeknu]1[greekomegaperispomeni][greeknu].
+[greekomicrondasiatonos]2[greeksigma]1[greekpi][greekepsilon][greekrho].
+[greekomicrondasiatonos]2[greeksigma]1[greektau][greekiota][greekfinalsigma]
+[greekomicron][greekiotadasiaperispomeni]2[greeksigma]1[greektau][greekiota][greeksigma][greekiota]
+[greekomicron][greekupsilondasiatonos]2[greeksigma]1[greektau][greekiota][greeknu][greekalpha][greekfinalsigma]
+[greeketadasiaperispomeni]2[greeksigma]1[greektau][greekiota][greeknu][greekomicron][greekfinalsigma]
+[greekalpha][greekiotadasiaperispomeni]2[greeksigma]1[greektau][greekiota][greeksigma][greekiota]
+[greekalphadasiatonos]2[greeksigma]1[greektau][greekiota][greeknu][greekalpha][greekfinalsigma]
+[greekomicrondasia]2[greeksigma]1[greektau][greekiota]2[greeksigma]1[greekomicron][greekupsilonperispomeni][greeknu].
+[greeketadasia][greektau][greekiota]2[greeksigma]1[greekomicron][greekupsilonperispomeni][greeknu].
+[greekomicrondasia][greekpi][greekomicron][greekiota][greekomicron][greekupsilon]2[greeksigma]1[greektau][greekiota][greeknu][greekalpha]2[greeksigma]1[greekomicron][greekupsilonperispomeni][greeknu].
+[greekomicron][greekupsilonpsili][greekdelta][greekepsilon][greeknu][greekomicronoxia]2[greeksigma]1[greekomega]
+[greekomicron][greekupsilonpsili][greekdelta][greekepsilon][greeknu][greekomicron]2[greeksigma]1[greekomegaoxia]
+.[greekpi][greekalpha][greeklambda][greekiota]2[greeknu]1
+.[greekpi][greekalpha][greeklambda][greekiotaoxia]2[greeknu]1
+.[greekpi][greekalpha]2[greeknu]1
+.[greekpi][greekalphaoxia]2[greeknu]1
+.[greekpi][greekalpha]3[greeknu]2[greekomicronoxia][greekfinalsigma].
+.[greekpi][greekalpha]3[greeknu]2[greekomicronvaria][greekfinalsigma].
+.[greekpi][greekalpha]3[greeknu]2[greekomicronoxia][greeksigma].
+.[greekpi][greekalpha]3[greeknu]2[greekomicronvaria][greeksigma].
+.[greekpi][greekalpha]3[greeknu]2[greekiotaoxia].
+.[greekpi][greekalpha]3[greeknu]2[greekiotavaria].
+.[greekpi][greekalphaoxia][greeknu][greekalpha].
+.[greekpi][greekalpha]3[greeknu]2[greekomegaperispomeni][greeknu].
+.[greekpi][greekalpha]3[greeknu]2[greekiota][greekkappa]
+.[greekpi][greekalpha]3[greeknu]2[greekiotaoxia][greeksigma][greekdelta]
+.[greekpi][greekalpha]3[greeknu]2[greekiota][greeksigma][greekdelta]
+.[greekpi][greekalpha]3[greeknu]2[greekomicron][greekupsilonperispomeni].
+.[greekpi][greekalpha]3[greeknu]2[greekomegaiotasubperispomeni].
+.[greekpi][greekalpha]3[greeknu]2[greekomicronoxia].
+.[greekpi][greekalpha]3[greeknu]2[greekomicronvaria].
+.[greekpi][greekalpha]3[greeknu]2[greekomicronoxia][greeknu].
+.[greekpi][greekalpha]3[greeknu]2[greekomicronvaria][greeknu].
+.[greekpi][greekalpha]3[greeknu]2[greekepsilonoxia].
+.[greekpi][greekalpha]3[greeknu]2[greekepsilonvaria].
+.[greekpi][greekalpha]3[greeknu]2[greekomicron][greekiotaoxia].
+.[greekpi][greekalpha]3[greeknu]2[greekomicron][greekiotavaria].
+.[greekpi][greekalpha]3[greeknu]2[greekomicron][greekiotaperispomeni][greekfinalsigma].
+.[greekpi][greekalpha]3[greeknu]2[greekomicron][greekiotaperispomeni][greeksigma].
+.[greekpi][greekalpha]3[greeknu]2[greekomicron][greekupsilonoxia][greekfinalsigma].
+.[greekpi][greekalpha]3[greeknu]2[greekomicron][greekupsilonvaria][greekfinalsigma].
+.[greekpi][greekalpha]3[greeknu]2[greekomicron][greekupsilonoxia][greeksigma].
+.[greekpi][greekalpha]3[greeknu]2[greekomicron][greekupsilonvaria][greeksigma].
+.[greekpi][greekalpha][greekrho][greekalpha]2[greeknu]1[greekiotaoxia][greeksigma][greekchi]
+.[greekpi][greekalpha][greekrho][greekepsilon][greekiotaoxia]2[greeksigma]1
+.[greekpi][greekalpha][greekrho][greekepsilon][greekiota]2[greeksigma]1
+.[greekpi][greekalpha][greekrho][greekepsilon]2[greekkappa]1[greeklambda]
+.[greekpi][greekalpha][greekrho][greekepsilon]2[greekkappa]1[greektau][greekrho]
+.[greekpi][greekalpha][greekrho][greekepsilon]2[greeknu]1[greekepsilon][greekiotaperispomeni]
+.[greekpi][greekalpha][greekrho][greekepsilon]2[greeknu]1[greekomicron]
+.[greekpi][greekalpha][greekrho][greekepsilon]2[greekxi]1
+.[greekpi][greekalpha][greekrho][greekepsilonoxia]2[greekxi]1
+[greekpi][greekalpha][greekrho][greekepsilonoxia]3[greekxi]2[greekomega].
+[greekpi][greekalpha][greekrho][greekepsilonoxia]3[greekxi]2[greekepsilon][greekiota][greekfinalsigma].
+[greekpi][greekalpha][greekrho][greekepsilonoxia]3[greekxi]2[greekepsilon][greekiota][greeksigma].
+[greekpi][greekalpha][greekrho][greekepsilonoxia]3[greekxi]2[greekepsilon][greekiota].
+[greekpi][greekalpha][greekrho][greekepsilonoxia]3[greekxi]2[greekepsilon][greektau][greekomicron][greeknu].
+[greekpi][greekalpha][greekrho][greekepsilon]3[greekxi]2[greekepsilonoxia][greektau][greeketa][greeknu].
+[greekpi][greekalpha][greekrho][greekepsilonoxia]3[greekxi]2[greekomicron][greekmu][greekepsilon][greeknu].
+[greekpi][greekalpha][greekrho][greekepsilonoxia]3[greekxi]2[greekepsilon][greektau][greekepsilon].
+[greekpi][greekalpha][greekrho][greekepsilonoxia]3[greekxi]2[greekomicron][greekupsilon][greeksigma][greekiota].
+[greekpi][greekalpha][greekrho][greekepsilonoxia]3[greekxi]2[greekomicron][greekmu][greekalpha][greekiota]
+[greekpi][greekalpha][greekrho][greekepsilonoxia]3[greekxi]2[greeketaiotasub]
+[greekpi][greekalpha][greekrho][greekepsilonoxia]3[greekxi]2[greekepsilon][greektau][greekalpha][greekiota].
+[greekpi][greekalpha][greekrho][greekepsilonoxia]3[greekxi]2[greekepsilon][greeksigma][greektheta][greekomicron][greeknu].
+[greekpi][greekalpha][greekrho][greekepsilon]3[greekxi]2[greekomicronoxia][greekmu][greekepsilon][greektheta][greekalpha].
+[greekpi][greekalpha][greekrho][greekepsilonoxia]3[greekxi]2[greekepsilon][greeksigma][greektheta][greekepsilon].
+[greekpi][greekalpha][greekrho][greekepsilonoxia]3[greekxi]2[greekomicron][greeknu][greektau][greekalpha][greekiota].
+.[greekpi][greeklambda][greekepsilon][greekomicron]2[greeknu]1[greekepsilonoxia]
+.[greekpi][greeklambda][greekepsilon][greekomicron]2[greeknu]1[greekepsilon]
+.[greekpi][greekrho][greekomicron][greekepsilon][greekiota]2[greeksigma]1
+.[greekpi][greekrho][greekomicron][greekepsilon]2[greekkappa]1
+.[greekpi][greekrho][greekomicron][greekepsilon]2[greeknu]1
+.[greekpi][greekrho][greekomicron][greekepsilon]2[greekxi]1
+.[greekpi][greekrho][greekomicron][greekepsilonoxia]2[greekxi]1
+.[greekpi][greekrho][greekomicron]2[greeksigma]1
+.[greekpi][greekrho][greekomicron]3[greeksigma]2[greekalphaoxia][greekbeta]
+.[greekpi][greekrho][greekomicron]3[greeksigma]2[greekalpha][greekbeta]
+.[greekpi][greekrho][greekomicron][greeksigma][greekepsilon][greekiota]2[greeksigma]1
+.[greekpi][greekrho][greekomicron]3[greeksigma]2[greekepsilon][greekiotaoxia]
+.[greekpi][greekrho][greekomicron]3[greeksigma]2[greekepsilonoxia][greeksigma][greekepsilon][greekiota]
+.[greekpi][greekrho][greekomicron]3[greeksigma]2[greekepsilon][greeksigma][greekepsilon][greekiotaoxia]
+.[greekpi][greekrho][greekomicron][greeksigma][greekepsilon]2[greeknu]1
+.[greekpi][greekrho][greekomicron][greeksigma][greekepsilon]2[greekxi]1
+.[greekpi][greekrho][greekomicronoxia]3[greeksigma]2[greektheta][greekiota]
+.[greekpi][greekrho][greekomicron]3[greeksigma]2[greektheta][greekiotaoxia]
+.[greekpi][greekrho][greekomicron]4[greeksigma]3[greektheta][greekiota][greekgamma]
+.[greekpi][greekrho][greekomicronoxia]3[greeksigma]2[greekkappa][greekomicron][greekpi]
+.[greekpi][greekrho][greekomicron]3[greeksigma]2[greekkappa][greekomicronoxia][greekpi]
+.[greekpi][greekrho][greekomicron]3[greeksigma]2[greektau][greekalpha][greeksigma]
+.[greekpi][greekrho][greekomicron]3[greeksigma]2[greektau][greekalphaoxia][greektau]
+.[greekpi][greekrho][greekomicron]3[greeksigma]2[greektau][greekalpha][greektau]
+.[greekpi][greekrho][greekomicron]3[greeksigma]2[greektau][greekalpha][greekupsilon]
+.[greekpi][greekrho][greekomicron]3[greeksigma]2[greektau][greekepsilon][greekiotaoxia]
+.[greekpi][greekrho][greekomicron]3[greeksigma]2[greektau][greekepsilon][greeknu]
+.[greekpi][greekrho][greekomicron]3[greeksigma]2[greektau][greekepsilonoxia][greeknu]
+.[greekpi][greekrho][greekomicron]3[greeksigma]2[greektau][greekepsilon][greekrho][greeknu]
+.[greekpi][greekrho][greekomicronoxia]3[greeksigma]2[greektau][greekepsilon][greekrho][greeknu]
+.[greekpi][greekrho][greekomicron]3[greeksigma]2[greektau][greekepsilonoxia][greekrho][greeknu]
+.[greekpi][greekrho][greekomicron]3[greeksigma]2[greektau][greeketaoxia][greeksigma]
+.[greekpi][greekrho][greekomicron]3[greeksigma]2[greektau][greekomicronoxia][greekmu]
+.[greekpi][greekrho][greekomicron]3[greeksigma]2[greektau][greekomicron][greekmu]
+.[greekpi][greekrho][greekomicronoxia]3[greeksigma]2[greektau][greekomegaiotasub]
+.[greekpi][greekrho][greekomicron]3[greeksigma]2[greektau][greekomegaiotasubtonos]
+.[greekpi][greekrho][greekomicron]3[greeksigma]2[greekupsilon][greekgamma]
+.[greekpi][greekrho][greekomicron]3[greeksigma]2[greekupsilon][greekmu]
+.[greekpi][greekrho][greekomicron]3[greeksigma]2[greekupsilon]2[greeknu]1
+.[greekpi][greekrho][greekomicronoxia]3[greeksigma]2[greekphi][greekalpha][greekgamma][greekmu]
+.[greekpi][greekrho][greekomicron]3[greeksigma]2[greekphi][greekalphaoxia][greekgamma][greekmu]
+.[greekpi][greekrho][greekomicron]3[greeksigma]2[greekphi][greekalphaoxia][greekzeta]
+.[greekpi][greekrho][greekomicron]3[greeksigma]2[greekphi][greekalphaoxia][greektau][greektau]
+.[greekpi][greekrho][greekomicronoxia]3[greeksigma]2[greekchi][greeketa][greekmu]
+.[greekpi][greekrho][greekomicron]3[greeksigma]2[greekchi][greeketaoxia][greekmu]
+.[greekpi][greekrho][greekomicronoxia]3[greeksigma]2[greekomega].
+.[greekpi][greekrho][greekomicronoxia]3[greeksigma]2[greekomega][greektheta][greekepsilon][greeknu].
+.[greekpi][greekrho][greekomicron]3[greeksigma]2[greekomegaoxia][greektau]
+.[greekpi][greekrho][greekomicron]3[greeksigma]2[greekomega][greektau]
+.[greekpi][greekrho][greekomicron][greekupsilondiaeresis][greekpi][greekepsilon]2[greekxi]1
+.[greekpi][greekupsilon]2[greekrho]1[greekalphaoxia][greekgamma]
+.[greekpi][greekupsilon]2[greekrho]1[greekalpha][greekgamma]
+.[greekpi][greekupsilon]2[greekrho]1[greekalpha][greekiotaoxia][greektheta]
+.[greekpi][greekupsilon]2[greekrho]1[greekalpha][greekiota][greektheta]
+.[greekpi][greekupsilon]2[greekrho]1[greeketaperispomeni][greektheta]
+.[greekpi][greekupsilon]2[greekrho]1[greeketa][greektheta]
+.[greekpi][greekupsilon]2[greekrho]1[greeketaoxia][greektheta]
+.[greekpi][greekupsilon]2[greekrho]1[greekalpha][greekkappa]
+.[greekpi][greekupsilonoxia]2[greekrho]1[greekalpha][greekupsilon]
+.[greekpi][greekupsilon]2[greekrho]1[greekalpha][greekupsilonoxia]
+.[greekpi][greekupsilon]2[greekrho]1[greekalpha][greekupsilon]
+.[greekpi][greekupsilon]2[greekrho]1[greeketaoxia][greeknu][greekepsilon][greekmu]
+.[greekpi][greekupsilon]2[greekrho]1[greeketa][greeknu][greekepsilonoxia][greekmu]
+.[greekpi][greekupsilon]2[greekrho]1[greekomega][greekpi]
+.[greeksigma][greekepsilon][greeklambda][greekalpha]2[greeksigma]1[greekphi][greekomicronoxia]
+.[greeksigma][greekepsilon][greeklambda][greekalpha]2[greeksigma]1[greekphi][greekomicron]
+.[greeksigma][greekupsilon][greekmu][greekpi][greekalpha][greekrho][greekepsilon][greekiota]2[greeksigma]1
+.[greeksigma][greekupsilon]2[greeknu]1
+.[greeksigma][greekupsilonoxia]2[greeknu]1
+.[greeksigma][greekupsilon][greeknu][greekdelta][greekiota][greekepsilonoxia]2[greekxi]1
+.[greeksigma][greekupsilon][greeknu][greekdelta][greekiota][greekepsilon]2[greekxi]1
+.[greeksigma][greekupsilon][greeknu][greekdelta][greekupsilon]2[greeksigma]1
+.[greeksigma][greekupsilon][greeknu][greekepsilon]2[greekxi]1
+.[greektau][greekepsilon][greeksigma][greeksigma][greekalpha][greekrho][greekepsilon]2[greeksigma]1[greekkappa]
+.[greektau][greekrho][greekepsilon][greekiota]2[greeksigma]1[greekkappa]
+.[greektau][greekrho][greekiota]2[greeksigma]1
+.[greektau][greekrho][greekiota]3[greeksigma]2[greekmu][greekomicronoxia]
+.[greektau][greekrho][greekiota]3[greeksigma]2[greekmu][greekomicron]
+.[greektau][greekrho][greekiota]3[greeksigma]2[greekmu][greekomegaperispomeni]
+.[greektau][greekrho][greekiota]3[greeksigma]2[greekpi]
+.[greektau][greekrho][greekiotaoxia]3[greeksigma]2[greektau]
+.[greektau][greekrho][greekiota]3[greeksigma]2[greektau]
+.[greektau][greekrho][greekiota]3[greeksigma]2[greekomegaoxia]
+.[greektau][greekrho][greekiota]3[greeksigma]2[greekomega]
+[greekupsilondasia][greekomicron]2[greeksigma]1[greekkappa]
+[greekupsilondasia][greekpi][greekepsilon][greekiotaoxia]2[greeksigma]1
+[greekupsilondasia][greekpi][greekepsilon][greekiota]2[greeksigma]1
+[greekupsilondasia][greekpi][greekepsilon][greekiotaoxia]3[greeksigma]2[greekalpha][greekfinalsigma]
+[greekupsilondasia][greekpi][greekepsilon][greekiotaoxia]3[greeksigma]2[greekalpha][greeksigma]
+[greekupsilondasia][greekpi][greekepsilon][greekiotaoxia]3[greeksigma]2[greekalpha][greeknu]
+[greekupsilondasia][greekpi][greekepsilon][greekiota]3[greeksigma]2[greekalphaoxia][greeknu]
+[greekupsilondasia][greekpi][greekepsilon][greekiota]3[greeksigma]2[greekalphaoxia][greeksigma]
+[greekupsilondasia][greekpi][greekepsilon]2[greekkappa]1[greeklambda][greekalpha][greekmu]
+[greekupsilondasia][greekpi][greekepsilon]2[greekkappa]1[greeklambda][greeketaoxia][greekpsi]
+[greekupsilondasia][greekpi][greekepsilon]2[greekkappa]1[greektau]
+[greekupsilondasia][greekpi][greekepsilon]2[greeknu]1
+[greekupsilondasia][greekpi][greekepsilon]2[greekxi]1
+[greekupsilondasia][greekpi][greekepsilon]2[greekrho]1
+[greekupsilondasia][greekpi][greekepsilonoxia]2[greekrho]1
+[greekupsilondasia][greekpi][greekepsilonoxia]3[greekrho]2[greekalpha].
+[greekupsilondasia][greekpi][greekepsilonoxia]3[greekrho]2[greeketa][greekfinalsigma].
+[greekupsilondasia][greekpi][greekepsilonoxia]3[greekrho]2[greeketa][greeksigma].
+[greekupsilondasia][greekpi][greekepsilonoxia]3[greekrho]2[greekalphaiotasub].
+[greekupsilondasia][greekpi][greekepsilonoxia]3[greekrho]2[greekalpha][greeknu].
+[greekupsilondasia][greekpi][greekepsilonoxia]3[greekrho]2[greekalpha][greekiota].
+[greekupsilondasia][greekpi][greekepsilon]3[greekrho]2[greekomegaperispomeni][greeknu].
+[greekupsilondasia][greekpi][greekepsilonoxia]3[greekrho]2[greekalpha][greekiota][greekfinalsigma].
+[greekupsilondasia][greekpi][greekepsilonoxia]3[greekrho]2[greekalpha][greekiota][greeksigma].
+[greekupsilondasia][greekpi][greekepsilonoxia]3[greekrho]2[greekalpha][greekfinalsigma].
+[greekupsilondasia][greekpi][greekepsilonoxia]3[greekrho]2[greekalpha][greeksigma].
+[greekupsilondasia][greekpi][greekepsilon]3[greekrho]2[greekepsilon][greektheta]
+[greekupsilondasia][greekpi][greekepsilon]3[greekrho]2[greekepsilonoxia][greektheta]
+[greekupsilondasia][greekpi][greekepsilon]3[greekrho]2[greekepsilon][greekiotaoxia]
+[greekupsilondasia][greekpi][greekepsilonoxia]3[greekrho]2[greekupsilon][greektheta]
+[greekupsilondasia][greekpi][greekepsilon]3[greekrho]2[greekupsilonoxia][greektheta]
+[greekupsilondasia][greekpi][greekepsilon]3[greekrho]2[greekupsilon][greektheta]
+[greekupsilondasia][greekpi][greekepsilon][greekrho][greekepsilon]2[greekkappa]1[greektau][greekepsilon]
+[greekupsilondasia][greekpi][greekepsilon][greekrho][greekepsilon]2[greekkappa]1[greektau][greekiotaoxia]
+[greekupsilondasia][greekpi][greekepsilon]3[greekrho]2[greekepsilonoxia][greekpi][greektau]
+[greekupsilondasia][greekpi][greekepsilon]3[greekrho]2[greekepsilon][greekpi][greektau]
+[greekupsilondasia][greekpi][greekepsilon]3[greekrho]2[greekepsilonoxia][greekpsi]
+[greekupsilondasia][greekpi][greekepsilon]3[greekrho]2[greekepsilon][greekpsi]
+[greekupsilondasia][greekpi][greekepsilon]3[greekrho]2[greekepsilonoxia][greekomega]
+[greekupsilondasia][greekpi][greekepsilon]3[greekrho]2[greekomegaperispomeni]
+[greekupsilondasia][greekpi][greekepsilon]3[greekrho]2[greekepsilonoxia][greekepsilon]
+[greekupsilondasia][greekpi][greekepsilon]3[greekrho]2[greekepsilon][greekiotaperispomeni][greekfinalsigma].
+[greekupsilondasia][greekpi][greekepsilon]3[greekrho]2[greekepsilon][greekiotaperispomeni][greeksigma].
+[greekupsilondasia][greekpi][greekepsilon]3[greekrho]2[greekepsilon][greekiotaperispomeni].
+[greekupsilondasia][greekpi][greekepsilon]3[greekrho]2[greekepsilonoxia][greekomicron]
+[greekupsilondasia][greekpi][greekepsilon]3[greekrho]2[greekomicron][greekupsilonperispomeni]
+[greekupsilondasia][greekpi][greekepsilon]3[greekrho]2[greekepsilon][greekiotaperispomeni][greektau]
+[greekupsilondasia][greekpi][greekepsilon]3[greekrho]2[greekomegaoxia]
+[greekupsilondasia][greekpi][greekepsilon]3[greekrho]2[greekomega]
+[greekupsilondasiatonos]2[greeksigma]1[greektau][greekrho]
+[greekupsilondasia]2[greeksigma]1[greektau][greekrho]
+.[greekphi][greekalpha][greekepsilon]2[greeksigma]1[greekphi]
+.[greekphi][greekomega]2[greeksigma]1[greekphi]
+.[greekchi][greekalpha][greekrho][greekiota]2[greeksigma]1[greekalpha][greeknu][greekdelta][greekrho]
+.[greekchi][greekalpha][greekrho][greekiota]2[greeksigma]1[greekalphaoxia][greeknu][greekdelta][greekrho]
+.[greekchi][greekepsilon][greekiota]2[greekrho]1[greekalphaoxia][greekgamma]
+.[greekchi][greekepsilon][greekiota]2[greekrho]1[greekalpha][greekgamma]
+.[greekchi][greekepsilon][greekiota]2[greekrho]1[greekalpha][greekpi]
+.[greekchi][greekepsilon][greekiota]2[greekrho]1[greekalpha][greekpsi]
+.[greekchi][greekepsilon][greekiota]2[greekrho]1[greekomicron][greekupsilon]
+.[greekchi][greekepsilon][greekiota]2[greekrho]1[greekomegaperispomeni][greeknu]
+.[greekchi][greekepsilon][greekiota]2[greekrho]1[greekalphaoxia][greeknu]
+.[greekchi][greekepsilon][greekiota]2[greekrho]1[greekalpha][greeknu]
+.[greekchi][greeketa]2[greeknu]1[greeknu][greekalpha][greeklambda]
+[greekomegadasia]2[greeksigma]1[greekalpha]2[greeknu]1[greekepsilon][greekiotaoxia].
+[greekomegadasia]2[greeksigma]1[greekalpha]2[greeknu]1[greekepsilon][greekiotavaria].
+[greekomegadasia]2[greeksigma]1[greekalpha][greekupsilonoxia][greektau][greekomega][greekfinalsigma].
+[greekomegadasia]2[greeksigma]1[greekalpha][greekupsilonoxia][greektau][greekomega][greeksigma].
+[greekomegadasia]2[greeksigma]1[greekepsilon][greekiotaoxia].
+[greekomegadasia]2[greeksigma]1[greekepsilon][greekiotavaria].
+[greekomegadasiatonos]2[greeksigma]1[greekpi][greekepsilon][greekrho].
+[greekomegadasia]2[greeksigma]1[greekpi][greekepsilon]2[greekrho]1[greekepsilon][greekiotaoxia].
+[greekomegadasia]2[greeksigma]1[greekpi][greekepsilon]2[greekrho]1[greekepsilon][greekiotavaria].
+[greekomegadasiatonos]2[greeksigma]1[greektau][greekepsilon]
+[greekiota]2[greeksigma]1[greekchi][greekiotaoxia][greeklambda][greekiota][greekomicron][greekiota].
+[greekiota]2[greeksigma]1[greekchi][greekiota][greeklambda][greekiotaoxia][greekomega][greeknu].
+[greekiota]2[greeksigma]1[greekchi][greekiota][greeklambda][greekiotaoxia][greekomicron][greekiota][greekfinalsigma].
+[greekiota]2[greeksigma]1[greekchi][greekiota][greeklambda][greekiotaoxia][greekomicron][greekiota][greeksigma].
+[greekiota]2[greeksigma]1[greekchi][greekiota][greeklambda][greekiotaoxia][greekomicron][greekupsilon][greekfinalsigma].
+[greekiota]2[greeksigma]1[greekchi][greekiota][greeklambda][greekiotaoxia][greekomicron][greekupsilon][greeksigma].
+[greekiota]2[greeksigma]1[greekchi][greekiotaoxia][greeklambda][greekiota][greekalpha][greekiota].
+[greekiota]2[greeksigma]1[greekchi][greekiota][greeklambda][greekiotaoxia][greekalpha][greekiota][greekfinalsigma].
+[greekiota]2[greeksigma]1[greekchi][greekiota][greeklambda][greekiotaoxia][greekalpha][greekiota][greeksigma].
+[greekiota]2[greeksigma]1[greekchi][greekiota][greeklambda][greekiotaoxia][greekalpha][greekfinalsigma].
+[greekiota]2[greeksigma]1[greekchi][greekiota][greeklambda][greekiotaoxia][greekalpha][greeksigma].
+[greekiota]2[greeksigma]1[greekchi][greekiotaoxia][greeklambda][greekiota][greekalpha].
+[greekiota]2[greeksigma]1[greekmu][greekupsilonoxia][greekrho][greekiota][greekomicron][greekiota].
+[greekiota]2[greeksigma]1[greekmu][greekupsilon][greekrho][greekiotaoxia][greekomega][greeknu].
+[greekiota]2[greeksigma]1[greekmu][greekupsilon][greekrho][greekiotaoxia][greekomicron][greekiota][greekfinalsigma].
+[greekiota]2[greeksigma]1[greekmu][greekupsilon][greekrho][greekiotaoxia][greekomicron][greekiota][greeksigma].
+[greekiota]2[greeksigma]1[greekmu][greekupsilon][greekrho][greekiotaoxia][greekomicron][greekupsilon][greekfinalsigma].
+[greekiota]2[greeksigma]1[greekmu][greekupsilon][greekrho][greekiotaoxia][greekomicron][greekupsilon][greeksigma].
+[greekiota]2[greeksigma]1[greekmu][greekupsilonoxia][greekrho][greekiota][greekalpha][greekiota].
+[greekiota]2[greeksigma]1[greekmu][greekupsilon][greekrho][greekiotaoxia][greekalpha][greekiota][greekfinalsigma].
+[greekiota]2[greeksigma]1[greekmu][greekupsilon][greekrho][greekiotaoxia][greekalpha][greekiota][greeksigma].
+[greekiota]2[greeksigma]1[greekmu][greekupsilon][greekrho][greekiotaoxia][greekalpha][greekfinalsigma].
+[greekiota]2[greeksigma]1[greekmu][greekupsilon][greekrho][greekiotaoxia][greekalpha][greeksigma].
+[greekiota]2[greeksigma]1[greekmu][greekupsilonoxia][greekrho][greekiota][greekalpha].
+[greekiota]2[greeksigma]1[greekchi][greekiota][greeklambda][greekiota][greekomicron][greeksigma][greektau]
+[greekiota]2[greeksigma]1[greekmu][greekupsilon][greekrho][greekiota][greekomicron][greeksigma][greektau]
+[greekiota]2[greeksigma]1[greekchi][greekiota][greeklambda][greekiota][greekalphaoxia][greekkappa][greekiota][greekfinalsigma].
+[greekiota]2[greeksigma]1[greekchi][greekiota][greeklambda][greekiota][greekalphaoxia][greekkappa][greekiota][greeksigma].
+[greekiota]2[greeksigma]1[greekmu][greekupsilon][greekrho][greekiota][greekalphaoxia][greekkappa][greekiota][greekfinalsigma].
+[greekiota]2[greeksigma]1[greekmu][greekupsilon][greekrho][greekiota][greekalphaoxia][greekkappa][greekiota][greeksigma].
+}
+
+% end pattern data
+