summaryrefslogtreecommitdiff
path: root/tex
diff options
context:
space:
mode:
Diffstat (limited to 'tex')
-rw-r--r--tex/context/base/context-version.pdfbin4244 -> 4250 bytes
-rw-r--r--tex/context/base/mkiv/back-pdf.lua4
-rw-r--r--tex/context/base/mkiv/buff-ver.mkiv3
-rw-r--r--tex/context/base/mkiv/char-def.lua3
-rw-r--r--tex/context/base/mkiv/char-ini.mkiv9
-rw-r--r--tex/context/base/mkiv/char-tex.lua45
-rw-r--r--tex/context/base/mkiv/cont-fil.mkiv5
-rw-r--r--tex/context/base/mkiv/cont-new.mkiv2
-rw-r--r--tex/context/base/mkiv/context-todo.tex7
-rw-r--r--tex/context/base/mkiv/context.mkiv2
-rw-r--r--tex/context/base/mkiv/font-gbn.lua5
-rw-r--r--tex/context/base/mkiv/font-off.lua31
-rw-r--r--tex/context/base/mkiv/font-otr.lua220
-rw-r--r--tex/context/base/mkiv/font-ots.lua46
-rw-r--r--tex/context/base/mkiv/font-syn.lua208
-rw-r--r--tex/context/base/mkiv/lang-hyp.lua1
-rw-r--r--tex/context/base/mkiv/lang-rep.mkiv2
-rw-r--r--tex/context/base/mkiv/lxml-tex.lua6
-rw-r--r--tex/context/base/mkiv/mtx-context-setups.tex78
-rw-r--r--tex/context/base/mkiv/mult-ini.lua5
-rw-r--r--tex/context/base/mkiv/mult-prm.lua7
-rw-r--r--tex/context/base/mkiv/node-fin.lua8
-rw-r--r--tex/context/base/mkiv/node-fnt.lua49
-rw-r--r--tex/context/base/mkiv/node-ini.lua114
-rw-r--r--tex/context/base/mkiv/node-ltp.lua28
-rw-r--r--tex/context/base/mkiv/node-res.lua56
-rw-r--r--tex/context/base/mkiv/node-shp.lua2
-rw-r--r--tex/context/base/mkiv/spac-ali.mkiv3
-rw-r--r--tex/context/base/mkiv/spac-hor.mkiv12
-rw-r--r--tex/context/base/mkiv/spac-ver.mkiv4
-rw-r--r--tex/context/base/mkiv/status-files.pdfbin9202 -> 9133 bytes
-rw-r--r--tex/context/base/mkiv/status-lua.pdfbin267502 -> 267788 bytes
-rw-r--r--tex/context/base/mkiv/strc-itm.mkvi60
-rw-r--r--tex/context/base/mkiv/strc-sec.mkiv79
-rw-r--r--tex/context/base/mkiv/syst-ini.mkiv5
-rw-r--r--tex/context/base/mkiv/trac-log.lua2
-rw-r--r--tex/context/base/mkiv/typo-brk.lua136
-rw-r--r--tex/context/base/mkiv/typo-brk.mkiv20
-rw-r--r--tex/context/base/mkiv/typo-itc.lua2
-rw-r--r--tex/context/interface/common/i-en-xml.xml738
-rw-r--r--tex/context/interface/mkii/cont-cs.xml (renamed from tex/context/interface/common/cont-cs.xml)0
-rw-r--r--tex/context/interface/mkii/cont-de.xml (renamed from tex/context/interface/common/cont-de.xml)0
-rw-r--r--tex/context/interface/mkii/cont-en.xml (renamed from tex/context/interface/common/cont-en.xml)0
-rw-r--r--tex/context/interface/mkii/cont-fr.xml (renamed from tex/context/interface/common/cont-fr.xml)0
-rw-r--r--tex/context/interface/mkii/cont-it.xml (renamed from tex/context/interface/common/cont-it.xml)0
-rw-r--r--tex/context/interface/mkii/cont-nl.xml (renamed from tex/context/interface/common/cont-nl.xml)0
-rw-r--r--tex/context/interface/mkii/cont-pe.xml (renamed from tex/context/interface/common/cont-pe.xml)0
-rw-r--r--tex/context/interface/mkii/cont-ro.xml (renamed from tex/context/interface/common/cont-ro.xml)0
-rw-r--r--tex/context/interface/mkii/keys-cs.xml (renamed from tex/context/interface/common/keys-cs.xml)0
-rw-r--r--tex/context/interface/mkii/keys-cz.xml (renamed from tex/context/interface/common/keys-cz.xml)0
-rw-r--r--tex/context/interface/mkii/keys-de.xml (renamed from tex/context/interface/common/keys-de.xml)0
-rw-r--r--tex/context/interface/mkii/keys-en.xml (renamed from tex/context/interface/common/keys-en.xml)0
-rw-r--r--tex/context/interface/mkii/keys-fr.xml (renamed from tex/context/interface/common/keys-fr.xml)0
-rw-r--r--tex/context/interface/mkii/keys-it.xml (renamed from tex/context/interface/common/keys-it.xml)0
-rw-r--r--tex/context/interface/mkii/keys-nl.xml (renamed from tex/context/interface/common/keys-nl.xml)0
-rw-r--r--tex/context/interface/mkii/keys-pe.xml (renamed from tex/context/interface/common/keys-pe.xml)0
-rw-r--r--tex/context/interface/mkii/keys-ro.xml (renamed from tex/context/interface/common/keys-ro.xml)0
-rw-r--r--tex/context/interface/mkiv/i-accent.xml252
-rw-r--r--tex/context/interface/mkiv/i-align.xml273
-rw-r--r--tex/context/interface/mkiv/i-anchor.xml35
-rw-r--r--tex/context/interface/mkiv/i-attachment.xml154
-rw-r--r--tex/context/interface/mkiv/i-attribute.xml96
-rw-r--r--tex/context/interface/mkiv/i-backend.xml49
-rw-r--r--tex/context/interface/mkiv/i-background.xml161
-rw-r--r--tex/context/interface/mkiv/i-bar.xml205
-rw-r--r--tex/context/interface/mkiv/i-blackrule.xml93
-rw-r--r--tex/context/interface/mkiv/i-bleed.xml64
-rw-r--r--tex/context/interface/mkiv/i-block.xml120
-rw-r--r--tex/context/interface/mkiv/i-bookmark.xml79
-rw-r--r--tex/context/interface/mkiv/i-boxes.xml982
-rw-r--r--tex/context/interface/mkiv/i-buffer.xml196
-rw-r--r--tex/context/interface/mkiv/i-button.xml187
-rw-r--r--tex/context/interface/mkiv/i-capitals.xml208
-rw-r--r--tex/context/interface/mkiv/i-catcodes.xml123
-rw-r--r--tex/context/interface/mkiv/i-character.xml136
-rw-r--r--tex/context/interface/mkiv/i-characteralign.xml45
-rw-r--r--tex/context/interface/mkiv/i-characterspacing.xml43
-rw-r--r--tex/context/interface/mkiv/i-characterstripping.xml20
-rw-r--r--tex/context/interface/mkiv/i-charwidth.xml17
-rw-r--r--tex/context/interface/mkiv/i-chemical.xml255
-rw-r--r--tex/context/interface/mkiv/i-cleaning.xml47
-rw-r--r--tex/context/interface/mkiv/i-clipping.xml78
-rw-r--r--tex/context/interface/mkiv/i-collector.xml114
-rw-r--r--tex/context/interface/mkiv/i-color.xml597
-rw-r--r--tex/context/interface/mkiv/i-columns.xml111
-rw-r--r--tex/context/interface/mkiv/i-combination.xml131
-rw-r--r--tex/context/interface/mkiv/i-commandhandler.xml314
-rw-r--r--tex/context/interface/mkiv/i-comment.xml140
-rw-r--r--tex/context/interface/mkiv/i-common-argument.xml497
-rw-r--r--tex/context/interface/mkiv/i-common-assignment.xml338
-rw-r--r--tex/context/interface/mkiv/i-common-definitions.xml13
-rw-r--r--tex/context/interface/mkiv/i-common-keyword.xml704
-rw-r--r--tex/context/interface/mkiv/i-common-string.xml157
-rw-r--r--tex/context/interface/mkiv/i-common-value.xml546
-rw-r--r--tex/context/interface/mkiv/i-context.pdfbin0 -> 802151 bytes
-rw-r--r--tex/context/interface/mkiv/i-context.xml214
-rw-r--r--tex/context/interface/mkiv/i-conversion.xml632
-rw-r--r--tex/context/interface/mkiv/i-counter.xml517
-rw-r--r--tex/context/interface/mkiv/i-dataset.xml51
-rw-r--r--tex/context/interface/mkiv/i-define.xml23
-rw-r--r--tex/context/interface/mkiv/i-delimitedtext.xml217
-rw-r--r--tex/context/interface/mkiv/i-description.xml172
-rw-r--r--tex/context/interface/mkiv/i-digits.xml26
-rw-r--r--tex/context/interface/mkiv/i-dimension.xml67
-rw-r--r--tex/context/interface/mkiv/i-direction.xml69
-rw-r--r--tex/context/interface/mkiv/i-document.xml207
-rw-r--r--tex/context/interface/mkiv/i-dummy.xml58
-rw-r--r--tex/context/interface/mkiv/i-effect.xml62
-rw-r--r--tex/context/interface/mkiv/i-enumeration.xml219
-rw-r--r--tex/context/interface/mkiv/i-export.xml77
-rw-r--r--tex/context/interface/mkiv/i-field.xml383
-rw-r--r--tex/context/interface/mkiv/i-figure.xml50
-rw-r--r--tex/context/interface/mkiv/i-file.xml404
-rw-r--r--tex/context/interface/mkiv/i-filler.xml116
-rw-r--r--tex/context/interface/mkiv/i-fillinline.xml43
-rw-r--r--tex/context/interface/mkiv/i-fillinrule.xml66
-rw-r--r--tex/context/interface/mkiv/i-firstline.xml52
-rw-r--r--tex/context/interface/mkiv/i-fittingpage.xml96
-rw-r--r--tex/context/interface/mkiv/i-floats.xml736
-rw-r--r--tex/context/interface/mkiv/i-fontfamily.xml225
-rw-r--r--tex/context/interface/mkiv/i-fonts.xml1627
-rw-r--r--tex/context/interface/mkiv/i-form.xml23
-rw-r--r--tex/context/interface/mkiv/i-formula.xml298
-rw-r--r--tex/context/interface/mkiv/i-fraction.xml191
-rw-r--r--tex/context/interface/mkiv/i-framed.xml593
-rw-r--r--tex/context/interface/mkiv/i-graphics.xml516
-rw-r--r--tex/context/interface/mkiv/i-grid.xml188
-rw-r--r--tex/context/interface/mkiv/i-help.xml83
-rw-r--r--tex/context/interface/mkiv/i-highlight.xml64
-rw-r--r--tex/context/interface/mkiv/i-hspace.xml159
-rw-r--r--tex/context/interface/mkiv/i-hyphenation.xml260
-rw-r--r--tex/context/interface/mkiv/i-imposition.xml82
-rw-r--r--tex/context/interface/mkiv/i-indent.xml91
-rw-r--r--tex/context/interface/mkiv/i-indentedtext.xml72
-rw-r--r--tex/context/interface/mkiv/i-initial.xml81
-rw-r--r--tex/context/interface/mkiv/i-injector.xml73
-rw-r--r--tex/context/interface/mkiv/i-insertion.xml48
-rw-r--r--tex/context/interface/mkiv/i-interaction.xml160
-rw-r--r--tex/context/interface/mkiv/i-interactionbar.xml100
-rw-r--r--tex/context/interface/mkiv/i-interactionmenu.xml276
-rw-r--r--tex/context/interface/mkiv/i-interactionscreen.xml64
-rw-r--r--tex/context/interface/mkiv/i-interface.xml202
-rw-r--r--tex/context/interface/mkiv/i-interlinespace.xml176
-rw-r--r--tex/context/interface/mkiv/i-italiccorrection.xml32
-rw-r--r--tex/context/interface/mkiv/i-itemgroup.xml528
-rw-r--r--tex/context/interface/mkiv/i-items.xml85
-rw-r--r--tex/context/interface/mkiv/i-javascript.xml51
-rw-r--r--tex/context/interface/mkiv/i-kerning.xml93
-rw-r--r--tex/context/interface/mkiv/i-label.xml210
-rw-r--r--tex/context/interface/mkiv/i-labeltext.xml496
-rw-r--r--tex/context/interface/mkiv/i-language.xml200
-rw-r--r--tex/context/interface/mkiv/i-layer.xml327
-rw-r--r--tex/context/interface/mkiv/i-layout.xml367
-rw-r--r--tex/context/interface/mkiv/i-linenumber.xml158
-rw-r--r--tex/context/interface/mkiv/i-lines.xml110
-rw-r--r--tex/context/interface/mkiv/i-linetable.xml165
-rw-r--r--tex/context/interface/mkiv/i-linewidth.xml20
-rw-r--r--tex/context/interface/mkiv/i-list.xml620
-rw-r--r--tex/context/interface/mkiv/i-logo.xml103
-rw-r--r--tex/context/interface/mkiv/i-lohi.xml223
-rw-r--r--tex/context/interface/mkiv/i-lua.xml193
-rw-r--r--tex/context/interface/mkiv/i-makeup.xml169
-rw-r--r--tex/context/interface/mkiv/i-marginblock.xml87
-rw-r--r--tex/context/interface/mkiv/i-margindata.xml469
-rw-r--r--tex/context/interface/mkiv/i-marker.xml33
-rw-r--r--tex/context/interface/mkiv/i-marking.xml174
-rw-r--r--tex/context/interface/mkiv/i-math.xml456
-rw-r--r--tex/context/interface/mkiv/i-mathalignment.xml67
-rw-r--r--tex/context/interface/mkiv/i-mathcases.xml71
-rw-r--r--tex/context/interface/mkiv/i-mathfence.xml199
-rw-r--r--tex/context/interface/mkiv/i-mathmatrix.xml115
-rw-r--r--tex/context/interface/mkiv/i-mathornament.xml46
-rw-r--r--tex/context/interface/mkiv/i-mathradical.xml56
-rw-r--r--tex/context/interface/mkiv/i-mathstackers.xml1789
-rw-r--r--tex/context/interface/mkiv/i-metapost.xml406
-rw-r--r--tex/context/interface/mkiv/i-mixedcolumns.xml127
-rw-r--r--tex/context/interface/mkiv/i-modes.xml216
-rw-r--r--tex/context/interface/mkiv/i-modules.xml126
-rw-r--r--tex/context/interface/mkiv/i-narrow.xml121
-rw-r--r--tex/context/interface/mkiv/i-naturaltable.xml301
-rw-r--r--tex/context/interface/mkiv/i-note.xml663
-rw-r--r--tex/context/interface/mkiv/i-object.xml132
-rw-r--r--tex/context/interface/mkiv/i-offset.xml74
-rw-r--r--tex/context/interface/mkiv/i-opposite.xml29
-rw-r--r--tex/context/interface/mkiv/i-ornament.xml103
-rw-r--r--tex/context/interface/mkiv/i-output.xml49
-rw-r--r--tex/context/interface/mkiv/i-overlay.xml45
-rw-r--r--tex/context/interface/mkiv/i-pagebreak.xml135
-rw-r--r--tex/context/interface/mkiv/i-pagecomment.xml40
-rw-r--r--tex/context/interface/mkiv/i-pagefigure.xml25
-rw-r--r--tex/context/interface/mkiv/i-pagegrid.xml220
-rw-r--r--tex/context/interface/mkiv/i-pageinjection.xml89
-rw-r--r--tex/context/interface/mkiv/i-pagelayout.xml41
-rw-r--r--tex/context/interface/mkiv/i-pagenumber.xml184
-rw-r--r--tex/context/interface/mkiv/i-pageselection.xml175
-rw-r--r--tex/context/interface/mkiv/i-pageshift.xml29
-rw-r--r--tex/context/interface/mkiv/i-pagestate.xml59
-rw-r--r--tex/context/interface/mkiv/i-pairedbox.xml171
-rw-r--r--tex/context/interface/mkiv/i-papersize.xml303
-rw-r--r--tex/context/interface/mkiv/i-paragraph.xml71
-rw-r--r--tex/context/interface/mkiv/i-paragraphnumber.xml29
-rw-r--r--tex/context/interface/mkiv/i-paragraphs.xml168
-rw-r--r--tex/context/interface/mkiv/i-parallel.xml85
-rw-r--r--tex/context/interface/mkiv/i-parbuilder.xml35
-rw-r--r--tex/context/interface/mkiv/i-pdf.xml131
-rw-r--r--tex/context/interface/mkiv/i-penalty.xml29
-rw-r--r--tex/context/interface/mkiv/i-periods.xml43
-rw-r--r--tex/context/interface/mkiv/i-phantom.xml41
-rw-r--r--tex/context/interface/mkiv/i-placement.xml75
-rw-r--r--tex/context/interface/mkiv/i-position.xml528
-rw-r--r--tex/context/interface/mkiv/i-positionbar.xml73
-rw-r--r--tex/context/interface/mkiv/i-positioning.xml98
-rw-r--r--tex/context/interface/mkiv/i-postponing.xml15
-rw-r--r--tex/context/interface/mkiv/i-processor.xml51
-rw-r--r--tex/context/interface/mkiv/i-profile.xml100
-rw-r--r--tex/context/interface/mkiv/i-publication.xml1124
-rw-r--r--tex/context/interface/mkiv/i-random.xml64
-rw-r--r--tex/context/interface/mkiv/i-readme.pdfbin0 -> 60792 bytes
-rw-r--r--tex/context/interface/mkiv/i-readme.tex114
-rw-r--r--tex/context/interface/mkiv/i-references.xml566
-rw-r--r--tex/context/interface/mkiv/i-regime.xml88
-rw-r--r--tex/context/interface/mkiv/i-register.xml646
-rw-r--r--tex/context/interface/mkiv/i-renderingwindow.xml62
-rw-r--r--tex/context/interface/mkiv/i-replacement.xml26
-rw-r--r--tex/context/interface/mkiv/i-rotatation.xml54
-rw-r--r--tex/context/interface/mkiv/i-scale.xml121
-rw-r--r--tex/context/interface/mkiv/i-script.xml106
-rw-r--r--tex/context/interface/mkiv/i-section.xml671
-rw-r--r--tex/context/interface/mkiv/i-sectionblock.xml125
-rw-r--r--tex/context/interface/mkiv/i-selector.xml52
-rw-r--r--tex/context/interface/mkiv/i-setups.xml224
-rw-r--r--tex/context/interface/mkiv/i-shift.xml85
-rw-r--r--tex/context/interface/mkiv/i-sidebar.xml103
-rw-r--r--tex/context/interface/mkiv/i-smash.xml82
-rw-r--r--tex/context/interface/mkiv/i-sort.xml188
-rw-r--r--tex/context/interface/mkiv/i-soundtrack.xml30
-rw-r--r--tex/context/interface/mkiv/i-spellchecking.xml33
-rw-r--r--tex/context/interface/mkiv/i-startstop.xml78
-rw-r--r--tex/context/interface/mkiv/i-stream.xml74
-rw-r--r--tex/context/interface/mkiv/i-string.xml69
-rw-r--r--tex/context/interface/mkiv/i-strut.xml53
-rw-r--r--tex/context/interface/mkiv/i-symbol.xml145
-rw-r--r--tex/context/interface/mkiv/i-synonym.xml212
-rw-r--r--tex/context/interface/mkiv/i-system.xml3534
-rw-r--r--tex/context/interface/mkiv/i-systemlog.xml31
-rw-r--r--tex/context/interface/mkiv/i-table.xml407
-rw-r--r--tex/context/interface/mkiv/i-tabulation.xml270
-rw-r--r--tex/context/interface/mkiv/i-tagging.xml68
-rw-r--r--tex/context/interface/mkiv/i-textbackground.xml147
-rw-r--r--tex/context/interface/mkiv/i-textflow.xml84
-rw-r--r--tex/context/interface/mkiv/i-textrule.xml72
-rw-r--r--tex/context/interface/mkiv/i-texts.xml385
-rw-r--r--tex/context/interface/mkiv/i-thinrule.xml74
-rw-r--r--tex/context/interface/mkiv/i-token.xml31
-rw-r--r--tex/context/interface/mkiv/i-tolerance.xml22
-rw-r--r--tex/context/interface/mkiv/i-tooltip.xml81
-rw-r--r--tex/context/interface/mkiv/i-tracker.xml75
-rw-r--r--tex/context/interface/mkiv/i-translation.xml29
-rw-r--r--tex/context/interface/mkiv/i-twopassdata.xml124
-rw-r--r--tex/context/interface/mkiv/i-typography.xml173
-rw-r--r--tex/context/interface/mkiv/i-unit.xml121
-rw-r--r--tex/context/interface/mkiv/i-variables.xml356
-rw-r--r--tex/context/interface/mkiv/i-verbatim.xml449
-rw-r--r--tex/context/interface/mkiv/i-version.xml78
-rw-r--r--tex/context/interface/mkiv/i-viewerlayer.xml68
-rw-r--r--tex/context/interface/mkiv/i-visualizer.xml156
-rw-r--r--tex/context/interface/mkiv/i-vspace.xml144
-rw-r--r--tex/context/interface/mkiv/i-whitespace.xml62
-rw-r--r--tex/context/interface/mkiv/i-xml.xml827
-rw-r--r--tex/context/interface/mkiv/i-xtable.xml247
-rw-r--r--tex/context/modules/mkiv/s-fonts-system.lua7
-rw-r--r--tex/context/modules/mkiv/s-setups-missing.mkiv (renamed from tex/context/modules/mkiv/s-set-31.mkiv)0
-rw-r--r--tex/context/modules/mkiv/x-setups-basics.mkiv (renamed from tex/context/modules/mkiv/x-set-11.mkiv)96
-rw-r--r--tex/context/modules/mkiv/x-setups-generate.mkiv18
-rw-r--r--tex/context/modules/mkiv/x-setups-overview.mkiv (renamed from tex/context/modules/mkiv/x-set-12.mkiv)50
-rw-r--r--tex/context/modules/mkiv/x-setups-proofing.mkiv50
-rw-r--r--tex/context/modules/mkiv/x-setups.ctx15
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua183
278 files changed, 45449 insertions, 1223 deletions
diff --git a/tex/context/base/context-version.pdf b/tex/context/base/context-version.pdf
index 4f0a9fe9c..69e077427 100644
--- a/tex/context/base/context-version.pdf
+++ b/tex/context/base/context-version.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/back-pdf.lua b/tex/context/base/mkiv/back-pdf.lua
index 66ca89fb4..7cc3b9148 100644
--- a/tex/context/base/mkiv/back-pdf.lua
+++ b/tex/context/base/mkiv/back-pdf.lua
@@ -152,13 +152,13 @@ scanners.pdfstopmirroring = scanners.pdfstartmirroring
implement {
name = "setmapfile",
arguments = "string",
- actions = pdf.setmapfile
+ actions = pdf.mapfile
}
implement {
name = "setmapfile",
arguments = "string",
- actions = pdf.setmapline
+ actions = pdf.mapline
}
implement {
diff --git a/tex/context/base/mkiv/buff-ver.mkiv b/tex/context/base/mkiv/buff-ver.mkiv
index dbb675320..5b3ed6f2a 100644
--- a/tex/context/base/mkiv/buff-ver.mkiv
+++ b/tex/context/base/mkiv/buff-ver.mkiv
@@ -457,7 +457,8 @@
\let\normaltextdis\dis
\unexpanded\def\astype
- {\bgroup\usetypestyleandcolor\c!style\c!color\let\nexttoken}
+ {\dontleavehmode
+ \bgroup\usetypestyleandcolor\c!style\c!color\let\nexttoken}
\unexpanded\def\asciistr#1% used in some old styles
{\dontleavehmode\begingroup
diff --git a/tex/context/base/mkiv/char-def.lua b/tex/context/base/mkiv/char-def.lua
index 0ca2fb18c..bf21be70c 100644
--- a/tex/context/base/mkiv/char-def.lua
+++ b/tex/context/base/mkiv/char-def.lua
@@ -2404,6 +2404,7 @@ characters.data={
adobename="germandbls",
category="ll",
cjkwd="a",
+ comment="uppercase can be 0x1E9E",
contextname="ssharp",
description="LATIN SMALL LETTER SHARP S",
direction="l",
@@ -54756,6 +54757,8 @@ characters.data={
direction="l",
linebreak="al",
unicodeslot=0x1E9E,
+ lccode=0xDF,
+ shcode={ 0x53, 0x53 },
},
[0x1E9F]={
category="ll",
diff --git a/tex/context/base/mkiv/char-ini.mkiv b/tex/context/base/mkiv/char-ini.mkiv
index 907fcff13..8f5a8da8f 100644
--- a/tex/context/base/mkiv/char-ini.mkiv
+++ b/tex/context/base/mkiv/char-ini.mkiv
@@ -95,4 +95,13 @@
\def\chardescription#1{\clf_chardescription#1\relax}
+% experiment (watch out: this is global and very font dependent when used with
+% casing mechanisms)
+%
+% \overloaduppercase{0xDF}{0x1E9E}}
+% \overloaduppercase{0xDF}{0x53,0x53}
+
+\unexpanded\def\overloaduppercase{\clf_overloaduppercase}
+\unexpanded\def\overloadlowercase{\clf_overloadlowercase}
+
\protect \endinput
diff --git a/tex/context/base/mkiv/char-tex.lua b/tex/context/base/mkiv/char-tex.lua
index df7433409..562f9c8b8 100644
--- a/tex/context/base/mkiv/char-tex.lua
+++ b/tex/context/base/mkiv/char-tex.lua
@@ -280,7 +280,7 @@ local commandmapping = allocate {
["l"] = "ł", ["L"] = "Ł",
["o"] = "ø", ["O"] = "Ø",
["oe"] = "œ", ["OE"] = "Œ",
- ["sz"] = "ß", ["SZ"] = "SZ", ["ss"] = "ß", ["SS"] = "ß",
+ ["sz"] = "ß", ["SZ"] = "SZ", ["ss"] = "ß", ["SS"] = "ß", -- uppercase: ẞ
}
texcharacters.commandmapping = commandmapping
@@ -777,3 +777,46 @@ end
implement { name = "setlettercatcodes", scope = "private", actions = characters.setlettercatcodes, arguments = "integer" }
implement { name = "setactivecatcodes", scope = "private", actions = characters.setactivecatcodes, arguments = "integer" }
--------- { name = "setcharactercodes", scope = "private", actions = characters.setcodes }
+
+-- experiment (some can move to char-ini.lua)
+
+local function overload(c,u,code,codes)
+ local c = tonumber(c)
+ if not c then
+ return
+ end
+ local u = utilities.parsers.settings_to_array(u)
+ local n = #u
+ if n == 0 then
+ return
+ end
+ local t = nil
+ if n == 1 then
+ t = u[1]
+ else
+ t = { }
+ for i=1,n do
+ t[#t+1] = tonumber(u[i])
+ end
+ end
+ if t then
+ data[c][code] = t
+ characters[codes][c] = nil
+ end
+end
+
+interfaces.implement {
+ name = "overloaduppercase",
+ arguments = { "string", "string" },
+ actions = function(c,u)
+ overload(c,u,"uccode","uccodes")
+ end
+}
+
+interfaces.implement {
+ name = "overloadlowercase",
+ arguments = { "string", "string" },
+ actions = function(c,u)
+ overload(c,u,"lccode","lccodes")
+ end
+}
diff --git a/tex/context/base/mkiv/cont-fil.mkiv b/tex/context/base/mkiv/cont-fil.mkiv
index a1159b7f5..19c1c93ac 100644
--- a/tex/context/base/mkiv/cont-fil.mkiv
+++ b/tex/context/base/mkiv/cont-fil.mkiv
@@ -118,4 +118,9 @@
\definefilesynonym [fnt-23] [fonts-shapes]
\definefilesynonym [syn-01] [syntax]
+\definefilesynonym [set-11] [setups-basics]
+\definefilesynonym [set-12] [setups-overview]
+%definefilesynonym [set-13] [setups-proofing]
+%definefilesynonym [set-15] [setups-generate]
+
\endinput
diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv
index d553acc4c..e9e8beff1 100644
--- a/tex/context/base/mkiv/cont-new.mkiv
+++ b/tex/context/base/mkiv/cont-new.mkiv
@@ -11,7 +11,7 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\newcontextversion{2016.04.04 13:06}
+\newcontextversion{2016.04.10 23:52}
%D This file is loaded at runtime, thereby providing an excellent place for
%D hacks, patches, extensions and new features.
diff --git a/tex/context/base/mkiv/context-todo.tex b/tex/context/base/mkiv/context-todo.tex
index 86a5f82ce..b7ff4aeaa 100644
--- a/tex/context/base/mkiv/context-todo.tex
+++ b/tex/context/base/mkiv/context-todo.tex
@@ -15,6 +15,9 @@
\startitem
optimize some callback resolution (more direct)
\stopitem
+ \startitem
+ add \type {--output-filename} for \PDF\ filename
+ \stopitem
\stopitemize
\subsubject{\CONTEXT}
@@ -29,6 +32,10 @@
\startitem
redo some of the spacing (adapt to improvements in engine)
\stopitem
+ \startitem
+ use \type {\matheqnogapstep}, \type {\Ustack}, \type {\mathscriptsmode}
+ and other new math primitives
+ \stopitem
\stopitemize
\vfill {\em Feel free to suggest additions.}
diff --git a/tex/context/base/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv
index 886ca1c63..03f1f2d0b 100644
--- a/tex/context/base/mkiv/context.mkiv
+++ b/tex/context/base/mkiv/context.mkiv
@@ -39,7 +39,7 @@
%D up and the dependencies are more consistent.
\edef\contextformat {\jobname}
-\edef\contextversion{2016.04.04 13:06}
+\edef\contextversion{2016.04.10 23:52}
\edef\contextkind {beta}
%D For those who want to use this:
diff --git a/tex/context/base/mkiv/font-gbn.lua b/tex/context/base/mkiv/font-gbn.lua
index f81c877f2..a645a97e7 100644
--- a/tex/context/base/mkiv/font-gbn.lua
+++ b/tex/context/base/mkiv/font-gbn.lua
@@ -19,7 +19,6 @@ local nodes = nodes
local nuts = nodes.nuts -- context abstraction of direct nodes
local traverse_id = nuts.traverse_id
-local free_node = nuts.free
local remove_node = nuts.remove
local glyph_code = nodes.nodecodes.glyph
@@ -137,9 +136,7 @@ function nodes.handlers.nodepass(head)
end
if redundant then
for i=1,#redundant do
- local n = redundant[i]
- remove_node(nuthead,n)
- free_node(n)
+ remove_node(nuthead,redundant[i],true)
end
end
for d in traverse_id(disc_code,nuthead) do
diff --git a/tex/context/base/mkiv/font-off.lua b/tex/context/base/mkiv/font-off.lua
index 5fe68dc2a..82426552e 100644
--- a/tex/context/base/mkiv/font-off.lua
+++ b/tex/context/base/mkiv/font-off.lua
@@ -177,21 +177,22 @@ local function get_full_info(name)
local weight = names.weight or ff.weight
local width = names.width -- no: ff.width
local d = {
- familyname = names.preffamilyname or names.family or ff.familyname,
- fullname = names.fullname or ff.fullname,
- fontname = ff.fontname,
- subfamily = names.subfamily,
- modifiers = names.prefmodifiers,
- weight = weight and lower(weight),
- width = width and lower(width),
- italicangle = round(1000*(tonumber(ff.italicangle) or 0))/1000 or 0,
- units = ff.units_per_em,
- designsize = ff.design_size,
- minsize = ff.design_range_bottom,
- maxsize = ff.design_range_top,
- pfmweight = pfminfo.weight or 400,
- pfmwidth = pfminfo.width or 5,
- monospaced = pfminfo.panose and pfminfo.panose.proportion == "Monospaced",
+ fontname = ff.fontname,
+ fullname = names.fullname or ff.fullname,
+ family = names.family,
+ subfamily = names.subfamily,
+ familyname = names.preffamilyname or names.family or ff.familyname,
+ subfamilyname = names.prefmodifiers or names.subfamily,
+ weight = weight and lower(weight),
+ width = width and lower(width),
+ italicangle = round(1000*(tonumber(ff.italicangle) or 0))/1000 or 0,
+ units = ff.units_per_em,
+ designsize = ff.design_size,
+ minsize = ff.design_range_bottom,
+ maxsize = ff.design_range_top,
+ pfmweight = pfminfo.weight or 400,
+ pfmwidth = pfminfo.width or 5,
+ monospaced = pfminfo.panose and pfminfo.panose.proportion == "Monospaced",
}
close_font(ff)
return d
diff --git a/tex/context/base/mkiv/font-otr.lua b/tex/context/base/mkiv/font-otr.lua
index 1fc338b38..0ad1e194f 100644
--- a/tex/context/base/mkiv/font-otr.lua
+++ b/tex/context/base/mkiv/font-otr.lua
@@ -148,7 +148,7 @@ local function reportskippedtable(tag)
end
-- We have quite some data tables. We are somewhat ff compatible with names but as I used
--- the information form the microsoft site there can be differences. Eventually I might end
+-- the information from the microsoft site there can be differences. Eventually I might end
-- up with a different ordering and naming.
local reservednames = { [0] =
@@ -163,14 +163,14 @@ local reservednames = { [0] =
"manufacturer",
"designer",
"description", -- descriptor in ff
- "venderurl",
+ "vendorurl",
"designerurl",
"license",
"licenseurl",
"reserved",
"typographicfamily", -- preffamilyname
"typographicsubfamily", -- prefmodifiers
- "compatiblefullname", -- for mac
+ "compatiblefullname", -- for mac
"sampletext",
"cidfindfontname",
"wwsfamily",
@@ -244,7 +244,16 @@ local decoders = {
macintosh = { },
iso = { },
windows = {
- ["unicode bmp"] = utf16_to_utf8_be
+ -- maybe always utf16
+ ["unicode semantics"] = utf16_to_utf8_be,
+ ["unicode bmp"] = utf16_to_utf8_be,
+ ["unicode full"] = utf16_to_utf8_be,
+ ["unicode 1.0 semantics"] = utf16_to_utf8_be,
+ ["unicode 1.1 semantics"] = utf16_to_utf8_be,
+ ["unicode 2.0 bmp"] = utf16_to_utf8_be,
+ ["unicode 2.0 full"] = utf16_to_utf8_be,
+ ["unicode variation sequences"] = utf16_to_utf8_be,
+ ["unicode full repertoire"] = utf16_to_utf8_be,
},
custom = { },
}
@@ -702,7 +711,17 @@ local panosewidths = {
-- useful information about what we deal with. The complication is that we need
-- to filter the best one available.
-function readers.name(f,fontdata)
+local platformnames = {
+ postscriptname = true,
+ fullname = true,
+ family = true,
+ subfamily = true,
+ typographicfamily = true,
+ typographicsubfamily = true,
+ compatiblefullname = true,
+}
+
+function readers.name(f,fontdata,specification)
local datatable = fontdata.tables.name
if datatable then
setposition(f,datatable.offset)
@@ -710,6 +729,7 @@ function readers.name(f,fontdata)
local nofnames = readushort(f)
local offset = readushort(f)
-- we can also provide a raw list as extra, todo as option
+ local start = datatable.offset + offset
local namelists = {
unicode = { },
windows = { },
@@ -738,7 +758,7 @@ function readers.name(f,fontdata)
language = language,
name = name,
length = readushort(f),
- offset = readushort(f),
+ offset = start + readushort(f),
}
else
skipshort(f,2)
@@ -766,7 +786,6 @@ function readers.name(f,fontdata)
--
-- we need to choose one we like, for instance an unicode one
--
- local start = datatable.offset + offset
local names = { }
local done = { }
--
@@ -783,7 +802,7 @@ function readers.name(f,fontdata)
local encoding = name.encoding
local language = name.language
if (not e or encoding == e) and (not l or language == l) then
- setposition(f,start+name.offset)
+ setposition(f,name.offset)
local content = readstring(f,name.length)
local decoder = decoders[platform]
if decoder then
@@ -812,11 +831,57 @@ function readers.name(f,fontdata)
filter("unicode")
--
fontdata.names = names
+ --
+ if specification.platformnames then
+ local collected = { }
+ for platform, namelist in next, namelists do
+ local filtered = false
+ for i=1,#namelist do
+ local entry = namelist[i]
+ local name = entry.name
+ if platformnames[name] then
+ setposition(f,entry.offset)
+ local content = readstring(f,entry.length)
+ local encoding = entry.encoding
+ local decoder = decoders[platform]
+ if decoder then
+ decoder = decoder[encoding]
+ end
+ if decoder then
+ content = decoder(content)
+ end
+ if filtered then
+ filtered[name] = content
+ else
+ filtered = { [name] = content }
+ end
+ end
+ end
+ if filtered then
+ collected[platform] = filtered
+ end
+ end
+ fontdata.platformnames = collected
+ end
else
fontdata.names = { }
end
end
+----- validutf = lpeg.patterns.utf8character^0 * P(-1)
+local validutf = lpeg.patterns.validutf8
+
+local function getname(fontdata,key)
+ local names = fontdata.names
+ if names then
+ local value = names[key]
+ if value then
+ local content = value.content
+ return lpegmatch(validutf,content) and content or nil
+ end
+ end
+end
+
-- This table is an original windows (with its precursor os/2) table. In ff this one is
-- part of the pfminfo table but here we keep it separate (for now). We will create a
-- properties table afterwards.
@@ -1733,69 +1798,69 @@ otf.unpackoutlines = unpackoutlines
-- some properties in order to read following tables. When details is true we also
-- initialize the glyphs data.
------ validutf = lpeg.patterns.utf8character^0 * P(-1)
-local validutf = lpeg.patterns.validutf8
-
-local function getname(fontdata,key)
- local names = fontdata.names
- if names then
- local value = names[key]
- if value then
- local content = value.content
- return lpegmatch(validutf,content) and content or nil
- end
- end
-end
-
-local function getinfo(maindata,sub)
+local function getinfo(maindata,sub,platformnames)
local fontdata = sub and maindata.subfonts and maindata.subfonts[sub] or maindata
- local names = fontdata.names
+ local names = fontdata.names
+ local info = nil
if names then
- local metrics = fontdata.windowsmetrics or { }
- local postscript = fontdata.postscript or { }
- local fontheader = fontdata.fontheader or { }
- local cffinfo = fontdata.cffinfo or { }
- local filename = fontdata.filename
- local weight = getname(fontdata,"weight") or cffinfo.weight or metrics.weight
- local width = getname(fontdata,"width") or cffinfo.width or metrics.width
- return { -- we inherit some inconsistencies/choices from ff
- subfontindex = fontdata.subfontindex or sub or 0,
- -- filename = filename,
- -- version = name("version"),
- -- format = fontdata.format,
- fontname = getname(fontdata,"postscriptname"),
- fullname = getname(fontdata,"fullname"), -- or file.nameonly(filename)
- familyname = getname(fontdata,"typographicfamily") or getname(fontdata,"family"),
- subfamily = getname(fontdata,"subfamily"),
- modifiers = getname(fontdata,"typographicsubfamily"),
- weight = weight and lower(weight),
- width = width and lower(width),
- pfmweight = metrics.weightclass or 400, -- will become weightclass
- pfmwidth = metrics.widthclass or 5, -- will become widthclass
- panosewidth = metrics.panosewidth,
- panoseweight = metrics.panoseweight,
- italicangle = postscript.italicangle or 0,
- units = fontheader.units or 0,
- designsize = fontdata.designsize,
- minsize = fontdata.minsize,
- maxsize = fontdata.maxsize,
- monospaced = (tonumber(postscript.monospaced or 0) > 0) or metrics.panosewidth == "monospaced",
- averagewidth = metrics.averagewidth,
- xheight = metrics.xheight,
- ascender = metrics.typoascender,
- descender = metrics.typodescender,
+ local metrics = fontdata.windowsmetrics or { }
+ local postscript = fontdata.postscript or { }
+ local fontheader = fontdata.fontheader or { }
+ local cffinfo = fontdata.cffinfo or { }
+ local filename = fontdata.filename
+ local weight = getname(fontdata,"weight") or cffinfo.weight or metrics.weight
+ local width = getname(fontdata,"width") or cffinfo.width or metrics.width
+ local fontname = getname(fontdata,"postscriptname")
+ local fullname = getname(fontdata,"fullname")
+ local family = getname(fontdata,"family")
+ local subfamily = getname(fontdata,"subfamily")
+ local familyname = getname(fontdata,"typographicfamily") or family
+ local subfamilyname = getname(fontdata,"typographicsubfamily") or subfamily
+ local compatiblename = getname(fontdata,"compatiblefullname")
+ info = { -- we inherit some inconsistencies/choices from ff
+ subfontindex = fontdata.subfontindex or sub or 0,
+ -- filename = filename,
+ version = getname(fontdata,"version"),
+ -- format = fontdata.format,
+ fontname = fontname,
+ fullname = fullname,
+ family = family,
+ subfamily = subfamily,
+ familyname = familyname,
+ subfamilyname = subfamilyname,
+ compatiblename = compatiblename,
+ weight = weight and lower(weight),
+ width = width and lower(width),
+ pfmweight = metrics.weightclass or 400, -- will become weightclass
+ pfmwidth = metrics.widthclass or 5, -- will become widthclass
+ panosewidth = metrics.panosewidth,
+ panoseweight = metrics.panoseweight,
+ italicangle = postscript.italicangle or 0,
+ units = fontheader.units or 0,
+ designsize = fontdata.designsize,
+ minsize = fontdata.minsize,
+ maxsize = fontdata.maxsize,
+ monospaced = (tonumber(postscript.monospaced or 0) > 0) or metrics.panosewidth == "monospaced",
+ averagewidth = metrics.averagewidth,
+ xheight = metrics.xheight,
+ capheight = metrics.capheight, -- not always present and probably crap
+ ascender = metrics.typoascender,
+ descender = metrics.typodescender,
+ platformnames = platformnames and fontdata.platformnames or nil,
}
elseif n then
- return {
+ info = {
filename = fontdata.filename,
comment = "there is no info for subfont " .. n,
}
else
- return {
+ info = {
filename = fontdata.filename,
comment = "there is no info",
}
end
+ -- inspect(info)
+ return info
end
local function loadtables(f,specification,offset)
@@ -1870,6 +1935,7 @@ local function readdata(f,offset,specification)
end
end
--
+ --
readers["os/2"](f,fontdata,specification)
readers["head"](f,fontdata,specification)
readers["maxp"](f,fontdata,specification)
@@ -1989,7 +2055,10 @@ local function loadfont(specification,n)
specification.details = true
end
if specification.details then
- specification.info = true
+ specification.info = true -- not really used any more
+ end
+ if specification.platformnames then
+ specification.platformnames = true -- not really used any more
end
local function message(str)
report("fatal error in file %a: %s\n%s",specification.filename,str,debug.traceback())
@@ -2043,7 +2112,7 @@ function readers.loadfont(filename,n)
descriptions = fontdata.descriptions,
format = fontdata.format,
goodies = { },
- metadata = getinfo(fontdata,n),
+ metadata = getinfo(fontdata,n), -- no platformnames here !
properties = {
hasitalics = fontdata.hasitalics or false,
},
@@ -2067,27 +2136,38 @@ function readers.loadfont(filename,n)
end
end
-function readers.getinfo(filename,n,details)
+function readers.getinfo(filename,specification) -- string, nil|number|table
+ -- platformnames is optional and not used by context (a too unpredictable mess
+ -- that only add to the confusion) .. so it's only for checking things
+ local subfont = nil
+ local platformname = false
+ if type(specification) == "table" then
+ subfont = tonumber(specification.subfont)
+ platformnames = specification.platformnames
+ else
+ subfont = tonumber(specification)
+ end
local fontdata = loadfont {
- filename = filename,
- details = true,
+ filename = filename,
+ details = true,
+ platformnames = platformnames,
}
if fontdata then
local subfonts = fontdata.subfonts
if not subfonts then
- return getinfo(fontdata)
- elseif type(n) ~= "number" then
+ return getinfo(fontdata,nil,platformnames)
+ elseif not subfont then
local info = { }
for i=1,#subfonts do
- info[i] = getinfo(fontdata,i)
+ info[i] = getinfo(fontdata,i,platformnames)
end
return info
- elseif n > 1 and n <= subfonts then
- return getinfo(fontdata,n)
+ elseif subfont > 1 and subfont <= #subfonts then
+ return getinfo(fontdata,subfont,platformnames)
else
return {
filename = filename,
- comment = "there is no subfont " .. n .. " in this file"
+ comment = "there is no subfont " .. subfont .. " in this file"
}
end
else
diff --git a/tex/context/base/mkiv/font-ots.lua b/tex/context/base/mkiv/font-ots.lua
index 4d5e8ec0e..d67db6dd6 100644
--- a/tex/context/base/mkiv/font-ots.lua
+++ b/tex/context/base/mkiv/font-ots.lua
@@ -2716,8 +2716,8 @@ function otf.dataset(tfmdata,font) -- generic variant, overloaded in context
return rl
end
-local function report_disc(n)
- report_run("kern: %s > %s",disc,languages.serializediscretionary(disc))
+local function report_disc(what,n)
+ report_run("%s: %s > %s",what,n,languages.serializediscretionary(n))
end
local function kernrun(disc,k_run,font,attr,...)
@@ -2725,7 +2725,7 @@ local function kernrun(disc,k_run,font,attr,...)
-- we catch <font 1><disc font 2>
--
if trace_kernruns then
- report_disc("kern")
+ report_disc("kern",disc)
end
--
local prev, next = getboth(disc)
@@ -2819,7 +2819,7 @@ end
local function comprun(disc,c_run,...)
if trace_compruns then
- report_disc("comp")
+ report_disc("comp",disc)
end
--
local pre, post, replace = getdisc(disc)
@@ -2866,31 +2866,35 @@ end
local function testrun(disc,t_run,c_run,...)
if trace_testruns then
- report_disc("test")
+ report_disc("test",disc)
end
local prev, next = getboth(disc)
if not next then
-- weird discretionary
return
end
- local pre, post, replace, pretail, posttail, replacetail = getdisc(disc)
+ local pre, post, replace, pretail, posttail, replacetail = getdisc(disc,true)
local done = false
if replace and prev then
- -- only look ahead
- -- local nest = getprev(replace)
+ -- this is a bit strange as we only do replace here and not post
+ -- anyway, we only look ahead ... the idea is that we discard a
+ -- disc when there is a ligature crossing the replace boundary
setlink(replacetail,next)
- if t_run(replace,next,...) then
- setfield(disc,"replace",nil) -- beware, side effects of nest so first
+ local ok, overflow = t_run(replace,next,...)
+ if ok and overflow then
+ -- so, we can have crossed the boundary
+ setfield(disc,"replace",nil)
setlink(prev,replace)
- setlink(replacetail,next)
+ -- setlink(replacetail,next)
setboth(disc)
flush_node_list(disc)
return replace, true -- restart .. tricky !
else
+ -- we stay inside the disc
setnext(replacetail)
setprev(next,disc)
end
- -- pre, post, replace, pretail, posttail, replacetail = getdisc(disc)
+ -- pre, post, replace, pretail, posttail, replacetail = getdisc(disc,true)
end
--
-- like comprun
@@ -2945,7 +2949,7 @@ end
-- local function discrun(disc,drun,krun)
-- local prev, next = getboth(disc)
-- if trace_discruns then
--- report_disc("disc")
+-- report_disc("disc",disc)
-- end
-- if next and prev then
-- setnext(prev,next)
@@ -3043,7 +3047,13 @@ local function t_run_single(start,stop,font,attr,lookupcache)
-- if we need more than ligatures we can outline the code and use functions
local s = getnext(start)
local l = nil
+ local d = 0
while s do
+ if s == stop then
+ d = 1
+ elseif d > 0 then
+ d = d + 1
+ end
local lg = lookupmatch[getchar(s)]
if lg then
l = lg
@@ -3053,7 +3063,7 @@ local function t_run_single(start,stop,font,attr,lookupcache)
end
end
if l and l.ligature then
- return true
+ return true, d > 1
end
end
end
@@ -3168,7 +3178,13 @@ local function t_run_multiple(start,stop,font,attr,steps,nofsteps)
-- if we need more than ligatures we can outline the code and use functions
local s = getnext(start)
local l = nil
+ local d = 0
while s do
+ if s == stop then
+ d = 1
+ elseif d > 0 then
+ d = d + 1
+ end
local lg = lookupmatch[getchar(s)]
if lg then
l = lg
@@ -3178,7 +3194,7 @@ local function t_run_multiple(start,stop,font,attr,steps,nofsteps)
end
end
if l and l.ligature then
- return true
+ return true, d > 1
end
end
else
diff --git a/tex/context/base/mkiv/font-syn.lua b/tex/context/base/mkiv/font-syn.lua
index dc090a1d9..049fbd101 100644
--- a/tex/context/base/mkiv/font-syn.lua
+++ b/tex/context/base/mkiv/font-syn.lua
@@ -325,20 +325,21 @@ local function normalize(t)
boundingbox = { 0, 0, 0, 0 }
end
return {
- copyright = t.copyright,
- fontname = t.fontname,
- fullname = t.fullname,
- familyname = t.familyname,
- weight = t.weight,
- widtht = t.width,
- italicangle = tonumber(t.italicangle) or 0,
- monospaced = toboolean(t.isfixedpitch) or false,
- boundingbox = boundingbox,
- version = t.version,
- capheight = tonumber(t.capheight),
- xheight = tonumber(t.xheight),
- ascender = tonumber(t.ascender),
- descender = tonumber(t.descender),
+ copyright = t.copyright,
+ fontname = t.fontname,
+ fullname = t.fullname,
+ familyname = t.familyname,
+ -- subfamilyname = t.subfamilyname, -- nor used / needed
+ weight = t.weight,
+ widtht = t.width,
+ italicangle = tonumber(t.italicangle) or 0,
+ monospaced = toboolean(t.isfixedpitch) or false,
+ boundingbox = boundingbox,
+ version = t.version, -- not used
+ capheight = tonumber(t.capheight),
+ xheight = tonumber(t.xheight),
+ ascender = tonumber(t.ascender),
+ descender = tonumber(t.descender),
}
end
@@ -554,38 +555,39 @@ local function walk_tree(pathlist,suffix,identify)
end
end
--- "typographicfamily", -- preffamilyname
--- "typographicsubfamily", -- prefmodifiers
-
local function check_name(data,result,filename,modification,suffix,subfont)
-- shortcuts
local specifications = data.specifications
-- fetch
- local familyname = result.familyname
- local fullname = result.fullname
- local fontname = result.fontname
- local subfamily = result.subfamily
- local modifiers = result.modifiers
- local weight = result.weight
- local italicangle = tonumber(result.italicangle)
- local subfont = subfont
- local rawname = fullname or fontname or familyname
- local filebase = removesuffix(basename(filename))
- local cleanfilename = cleanname(filebase) -- for WS
+ local fullname = result.fullname
+ local fontname = result.fontname
+ local family = result.family
+ local subfamily = result.subfamily
+ local familyname = result.familyname
+ local subfamilyname = result.subfamilyname or result.modifiers
+ -- local compatiblename = result.compatiblename
+ local weight = result.weight
+ local italicangle = tonumber(result.italicangle)
+ local subfont = subfont
+ local rawname = fullname or fontname or familyname
+ local filebase = removesuffix(basename(filename))
+ local cleanfilename = cleanname(filebase) -- for WS
-- normalize
- familyname = familyname and cleanname(familyname)
- fullname = fullname and cleanname(fullname)
- fontname = fontname and cleanname(fontname)
- subfamily = subfamily and cleanname(subfamily)
- modifiers = modifiers and cleanname(modifiers)
- weight = weight and cleanname(weight)
- italicangle = italicangle == 0 and nil
+ fullname = fullname and cleanname(fullname)
+ fontname = fontname and cleanname(fontname)
+ family = family and cleanname(family)
+ subfamily = subfamily and cleanname(subfamily)
+ familyname = familyname and cleanname(familyname)
+ subfamilyname = subfamilyname and cleanname(subfamilyname)
+ -- compatiblename = compatiblename and cleanname(compatiblename)
+ weight = weight and cleanname(weight)
+ italicangle = italicangle == 0 and nil
-- analyze
local a_name, a_weight, a_style, a_width, a_variant = analyzespec(fullname or fontname or familyname)
-- check
local width = a_width
local variant = a_variant
- local style = modifiers and gsub(modifiers,"[^%a]","")
+ local style = subfamilyname and gsub(subfamilyname,"[^%a]","")
if not style and italicangle then
style = "italic"
end
@@ -614,29 +616,31 @@ local function check_name(data,result,filename,modification,suffix,subfont)
local pfmweight = result.pfmweight or 0
--
specifications[#specifications + 1] = {
- filename = filename, -- unresolved
- cleanfilename = cleanfilename,
- -- subfontindex = subfont,
- format = lower(suffix),
- subfont = subfont,
- rawname = rawname,
- familyname = familyname,
- fullname = fullname,
- fontname = fontname,
- subfamily = subfamily,
- modifiers = modifiers,
- weight = weight,
- style = style,
- width = width,
- variant = variant,
- units = units ~= 1000 and units or nil,
- pfmwidth = pfmwidth ~= 0 and pfmwidth or nil,
- pfmweight = pfmweight ~= 0 and pfmweight or nil,
- angle = angle ~= 0 and angle or nil,
- minsize = minsize ~= 0 and minsize or nil,
- maxsize = maxsize ~= 0 and maxsize or nil,
- designsize = designsize ~= 0 and designsize or nil,
- modification = modification ~= 0 and modification or nil,
+ filename = filename, -- unresolved
+ cleanfilename = cleanfilename,
+ -- subfontindex = subfont,
+ format = lower(suffix),
+ subfont = subfont,
+ rawname = rawname,
+ fullname = fullname,
+ fontname = fontname,
+ family = family, -- kind of redundant, could be nil if familyname
+ subfamily = subfamily, -- kind of redundant, could be nil if familyname
+ familyname = familyname,
+ subfamilyname = subfamilyname,
+ -- compatiblename = compatiblename, -- nor used / needed
+ weight = weight,
+ style = style,
+ width = width,
+ variant = variant,
+ units = units ~= 1000 and units or nil,
+ pfmwidth = pfmwidth ~= 0 and pfmwidth or nil,
+ pfmweight = pfmweight ~= 0 and pfmweight or nil,
+ angle = angle ~= 0 and angle or nil,
+ minsize = minsize ~= 0 and minsize or nil,
+ maxsize = maxsize ~= 0 and maxsize or nil,
+ designsize = designsize ~= 0 and designsize or nil,
+ modification = modification ~= 0 and modification or nil,
}
end
@@ -673,14 +677,18 @@ local function cleanupkeywords()
end
s.weight, s.style, s.width, s.variant = weight, style, width, variant
end
- local stats = data.statistics
- stats.used_weights, stats.used_styles, stats.used_widths, stats.used_variants = weights, styles, widths, variants
+ local statistics = data.statistics
+ statistics.used_weights = weights
+ statistics.used_styles = styles
+ statistics.used_widths = widths
+ statistics.used_variants = variants
end
end
-local function collectstatistics()
+local function collectstatistics(runtime)
local data = names.data
local specifications = data.specifications
+ local statistics = data.statistics
if specifications then
local f_w = formatters["%i"]
local f_a = formatters["%0.2f"]
@@ -718,20 +726,21 @@ local function collectstatistics()
twidths[pfmwidth] = (twidths [pfmwidth] or 0) + 1
end
--
- local stats = data.statistics
- stats.weights = weights
- stats.styles = styles
- stats.widths = widths
- stats.variants = variants
- stats.angles = angles
- stats.pfmweights = pfmweights
- stats.pfmwidths = pfmwidths
- stats.fonts = #specifications
+ statistics.weights = weights
+ statistics.styles = styles
+ statistics.widths = widths
+ statistics.variants = variants
+ statistics.angles = angles
+ statistics.pfmweights = pfmweights
+ statistics.pfmwidths = pfmwidths
+ statistics.fonts = #specifications
--
setmetatableindex(pfmweights,nil)
setmetatableindex(pfmwidths, nil)
--
report_names("")
+ report_names("statistics: ")
+ report_names("")
report_names("weights")
report_names("")
report_names(formatters[" %T"](weights))
@@ -764,6 +773,13 @@ local function collectstatistics()
report_names(formatters[" %-10s: %T"](k,v))
end
report_names("")
+ report_names("registered fonts : %i", statistics.fonts)
+ report_names("read files : %i", statistics.readfiles)
+ report_names("skipped files : %i", statistics.skippedfiles)
+ report_names("duplicate files : %i", statistics.duplicatefiles)
+ if runtime then
+ report_names("total scan time : %0.3f seconds",runtime)
+ end
end
end
@@ -1186,14 +1202,12 @@ function names.identify(force)
analyzefiles(not force and names.readdata(names.basename))
rejectclashes()
collectfamilies()
- -- collectstatistics()
cleanupkeywords()
collecthashes()
checkduplicates()
addfilenames()
-- sorthashes() -- will be resorted when saved
- collectstatistics()
- report_names("total scan time %0.3f seconds",os.gettimeofday()-starttime)
+ collectstatistics(os.gettimeofday()-starttime)
end
function names.is_permitted(name)
@@ -2045,52 +2059,6 @@ function fonts.names.ignoredfile(filename) -- only supported in mkiv
return false -- will be overloaded
end
--- We could generate typescripts with designsize info from the name database but
--- it's not worth the trouble as font names remain a mess: for instance how do we
--- idenfity a font? Names, families, subfamilies or whatever snippet can contain
--- a number related to the design size and so we end up with fuzzy logic again. So,
--- instead it's easier to make a few goody files.
---
--- local hash = { }
---
--- for i=1,#specifications do
--- local s = specifications[i]
--- local min = s.minsize or 0
--- local max = s.maxsize or 0
--- if min ~= 0 or max ~= 0 then
--- -- the usual name mess:
--- -- antykwa has modifiers so we need to take these into account, otherwise we get weird combinations
--- -- ebgaramond has modifiers with the size encoded, so we need to strip this in order to recognized similar styles
--- -- lm has 'slanted appended in some names so how to choose that one
--- --
--- local modifier = string.gsub(s.modifiers or "normal","%d","")
--- -- print funny modifier
--- local instance = string.formatters["%s-%s-%s-%s-%s-%s"](s.familyname,s.width,s.style,s.weight,s.variant,modifier)
--- local h = hash[instance]
--- if not h then
--- h = { }
--- hash[instance] = h
--- end
--- size = string.formatters["%0.1fpt"]((min)/10)
--- h[size] = s.filename
--- end
--- end
---
--- local newhash = { }
---
--- for k, v in next, hash do
--- if next(v,next(v)) then
--- -- local instance = string.match(k,"(.+)%-.+%-.+%-.+$")
--- local instance = string.match(k,"(.+)%-.+%-.+$")
--- local instance = string.gsub(instance,"%-normal$","")
--- if not newhash[instance] then
--- newhash[instance] = v
--- end
--- end
--- end
---
--- inspect(newhash)
-
-- example made for luatex list (unlikely to be used):
--
-- local command = [[reg QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts"]]
diff --git a/tex/context/base/mkiv/lang-hyp.lua b/tex/context/base/mkiv/lang-hyp.lua
index 65337143d..146aea4a8 100644
--- a/tex/context/base/mkiv/lang-hyp.lua
+++ b/tex/context/base/mkiv/lang-hyp.lua
@@ -7,6 +7,7 @@ if not modules then modules = { } end modules ['lang-hyp'] = {
}
-- todo: hyphenate over range if needed
+-- todo: check boundary nodes
-- setattr: helper for full attr
diff --git a/tex/context/base/mkiv/lang-rep.mkiv b/tex/context/base/mkiv/lang-rep.mkiv
index a98d51f6c..48e1fd44b 100644
--- a/tex/context/base/mkiv/lang-rep.mkiv
+++ b/tex/context/base/mkiv/lang-rep.mkiv
@@ -21,7 +21,7 @@
\registerctxluafile{lang-rep}{1.001}
-\definesystemattribute[replacements][public]
+\definesystemattribute[replacements][public,global]
%D \startluacode
%D
diff --git a/tex/context/base/mkiv/lxml-tex.lua b/tex/context/base/mkiv/lxml-tex.lua
index 7a0ef3e64..3a49ea3d2 100644
--- a/tex/context/base/mkiv/lxml-tex.lua
+++ b/tex/context/base/mkiv/lxml-tex.lua
@@ -1712,15 +1712,15 @@ end
function lxml.context(id,pattern) -- the content, untouched by commands
if pattern then
- local collected = xmlapplylpath(getid(id),pattern) or getid(id)
+ local collected = xmlapplylpath(getid(id),pattern)
if collected and #collected > 0 then
- contextsprint(ctxcatcodes,collected[1].dt)
+ ctx_text(collected[1].dt[1])
end
else
local collected = getid(id)
if collected then
local dt = collected.dt
- if #dt > 0 then
+ if dt and #dt > 0 then
ctx_text(dt[1])
end
end
diff --git a/tex/context/base/mkiv/mtx-context-setups.tex b/tex/context/base/mkiv/mtx-context-setups.tex
new file mode 100644
index 000000000..be99211ba
--- /dev/null
+++ b/tex/context/base/mkiv/mtx-context-setups.tex
@@ -0,0 +1,78 @@
+%D \module
+%D [ file=mtx-context-setups,
+%D version=2016.04.05,
+%D title=\CONTEXT\ Command Overvews,
+%D subtitle=Combine Files,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% begin help
+%
+% usage: context --extra=setups [options] [categories]
+%
+% --interface : user interface (en, nl, etc)
+% --overview [--save] : use collection of files
+% --list : show know collections
+%
+% end help
+
+\input mtx-context-common.tex
+
+\starttext
+
+\startluacode
+ local report_setups = logs.reporter("setups")
+
+ context.starttext()
+
+ if document.arguments.list then
+ local okay = resolvers.findfile("context.mkiv") or "" -- will become an i file
+ if okay ~= "" then
+ okay = file.collapsepath(okay,true)
+ okay = string.gsub(okay,"/base/","/interface/")
+ okay = string.gsub(okay,"/sources/","/interface/")
+ local path = file.pathpart(okay)
+ local pattern = file.join(path,"i-*.xml")
+ local files = dir.glob(pattern)
+ local valid = { }
+ table.sort(files)
+ for i=1,#files do
+ local name = file.nameonly(files[i])
+ local base = string.match(name,"^i%-([a-z]+)$")
+ if base then
+ valid[#valid+1] = base
+ end
+ end
+ if #valid > 0 then
+ report_setups("% t",valid)
+ end
+ context.bold("available setup groups: ")
+ context("%, t.",valid)
+ end
+ elseif document.arguments.overview then
+ if document.arguments.save then
+ context.enablemode { "setups:save" }
+ end
+ context.input("x-setups-overview.mkiv")
+ elseif #document.files > 0 then
+ context.usemodule { "x-setups-basics" }
+ for i=1,#document.files do
+ local filename = "i-" .. document.files[i]
+ report_setups("processing %a",filename)
+ context.loadsetups { filename }
+ end
+ context.input("x-setups-proofing.mkiv")
+ else
+ context("no setups")
+ end
+
+ context.stoptext()
+\stopluacode
+
+\stoptext
+
diff --git a/tex/context/base/mkiv/mult-ini.lua b/tex/context/base/mkiv/mult-ini.lua
index 7763994d6..99703b488 100644
--- a/tex/context/base/mkiv/mult-ini.lua
+++ b/tex/context/base/mkiv/mult-ini.lua
@@ -60,6 +60,9 @@ sharedstorage.currentresponse = sharedstorage.currentresponse or "en"
local currentinterface = sharedstorage.currentinterface
local currentresponse = sharedstorage.currentresponse
+interfaces.currentinterface = currentinterface
+interfaces.currentresponse = currentresponse
+
local complete = allocate()
interfaces.complete = complete
@@ -316,6 +319,8 @@ function interfaces.setuserinterface(interface,response)
else
report_interface("the language(s) can only be set when making the format")
end
+ interfaces.currentinterface = currentinterface
+ interfaces.currentresponse = currentresponse
end
interfaces.implement {
diff --git a/tex/context/base/mkiv/mult-prm.lua b/tex/context/base/mkiv/mult-prm.lua
index 37983f9a4..d9c432f7c 100644
--- a/tex/context/base/mkiv/mult-prm.lua
+++ b/tex/context/base/mkiv/mult-prm.lua
@@ -232,6 +232,7 @@ return {
"attribute",
"attributedef",
"bodydir",
+ "boundary",
"boxdir",
"catcodetable",
"clearmarks",
@@ -284,6 +285,7 @@ return {
"mathscriptsmode",
"mathstyle",
"mathsurroundskip",
+ "noboundary",
"nokerns",
"nohrule",
"noligs",
@@ -309,6 +311,7 @@ return {
"prehyphenchar",
"primitive",
"protrudechars",
+ "protrusionboundary",
"pxdimen",
"randomseed",
"rightghost",
@@ -333,6 +336,7 @@ return {
"uniformdeviate",
"useboxresource",
"useimageresource",
+ "wordboundary",
--
"vpack",
"hpack",
@@ -1126,6 +1130,8 @@ return {
"prevgraf",
"primitive",
"protected",
+ "protrudechars",
+ "protrusionboundary",
"pxdimen",
"quitvmode",
"radical",
@@ -1257,6 +1263,7 @@ return {
"wd",
"widowpenalties",
"widowpenalty",
+ "wordboundary",
"write",
"xdef",
"xleaders",
diff --git a/tex/context/base/mkiv/node-fin.lua b/tex/context/base/mkiv/node-fin.lua
index 313b804cb..6572d1168 100644
--- a/tex/context/base/mkiv/node-fin.lua
+++ b/tex/context/base/mkiv/node-fin.lua
@@ -192,8 +192,8 @@ local function process(namespace,attribute,head,inheritance,default) -- one attr
local id = getid(stack)
if id == glyph_code then
check = true
- -- elseif id == disc_code then
- -- check = true -- no longer needed as we flatten replace
+ elseif id == disc_code then
+ check = true -- no longer needed as we flatten replace
elseif id == glue_code then
leader = getleader(stack)
if leader then
@@ -321,8 +321,8 @@ local function selective(namespace,attribute,head,inheritance,default) -- two at
local id = getid(stack)
if id == glyph_code then
check = true
- -- elseif id == disc_code then
- -- check = true -- no longer needed as we flatten replace
+ elseif id == disc_code then
+ check = true -- notneeded when we flatten replace
elseif id == glue_code then
leader = getleader(stack)
if leader then
diff --git a/tex/context/base/mkiv/node-fnt.lua b/tex/context/base/mkiv/node-fnt.lua
index 76273cfd6..c726cdb4c 100644
--- a/tex/context/base/mkiv/node-fnt.lua
+++ b/tex/context/base/mkiv/node-fnt.lua
@@ -13,12 +13,13 @@ local concat, keys = table.concat, table.keys
local nodes, node, fonts = nodes, node, fonts
-local trace_characters = false trackers .register("nodes.characters", function(v) trace_characters = v end)
-local trace_fontrun = false trackers .register("nodes.fontrun", function(v) trace_fontrun = v end)
-local trace_variants = false trackers .register("nodes.variants", function(v) trace_variants = v end)
+local trace_characters = false trackers.register("nodes.characters", function(v) trace_characters = v end)
+local trace_fontrun = false trackers.register("nodes.fontrun", function(v) trace_fontrun = v end)
+local trace_variants = false trackers.register("nodes.variants", function(v) trace_variants = v end)
-local force_discrun = true directives.register("nodes.discrun", function(v) force_discrun = v end)
-local force_basepass = true directives.register("nodes.basepass", function(v) force_basepass = v end)
+local force_discrun = true directives.register("nodes.discrun", function(v) force_discrun = v end)
+local force_boundaryrun = true directives.register("nodes.boundaryrun", function(v) force_boundaryrun = v end)
+local force_basepass = true directives.register("nodes.basepass", function(v) force_basepass = v end)
local report_fonts = logs.reporter("fonts","processing")
@@ -58,11 +59,13 @@ local ischar = nuts.ischar -- checked
local traverse_id = nuts.traverse_id
local traverse_char = nuts.traverse_char
-local delete_node = nuts.delete
+local remove_node = nuts.remove
local protect_glyph = nuts.protect_glyph
local glyph_code = nodecodes.glyph
local disc_code = nodecodes.disc
+local boundary_code = nodecodes.boundary
+local word_boundary = nodes.boundarycodes.word
local setmetatableindex = table.setmetatableindex
@@ -185,6 +188,8 @@ function handlers.characters(head)
report_fonts("font %03i, dynamic %03i, glyph %C",font,attr,char)
elseif id == disc_code then
report_fonts("[disc] %s",nodes.listtoutf(n,true,false,n))
+ elseif id == boundary_code then
+ report_fonts("[boundary] %i:%i",getsubtype(n),getfield(n,"value"))
else
report_fonts("[%s]",nodecodes[id])
end
@@ -268,15 +273,34 @@ function handlers.characters(head)
end
end
+ if force_boundaryrun then
+
+ -- we can inject wordboundaries and then let the hyphenator do its work
+ -- but we need to get rid of those nodes in order to build ligatures
+ -- and kern (a rather context thing)
+
+ for b in traverse_id(boundary_code,nuthead) do
+ if getsubtype(b) == word_boundary then
+ if redundant then
+ redundant[#redundant+1] = b
+ else
+ redundant = { b }
+ end
+ end
+ end
+
+ end
+
if redundant then
+ local front = nuthead == redundant[1]
for i=1,#redundant do
- delete_node(nuthead,n)
+ nuthead = remove_node(nuthead,redundant[i],true)
+ end
+ if front then
+ head = tonode(nuthead)
end
end
- -- could be an optional pass : seldom needed, only for documentation as a discretionary
- -- with pre/post/replace will normally not occur on it's own
-
local e = 0
if force_discrun then
@@ -341,9 +365,10 @@ function handlers.characters(head)
report_fonts()
report_fonts("statics : %s",u > 0 and concat(keys(usedfonts)," ") or "none")
report_fonts("dynamics: %s",a > 0 and concat(keys(attrfonts)," ") or "none")
- report_fonts("built-in: %s",b > 0 and b or "none")
+ report_fonts("built-in: %s",b > 0 and b or "none")
+ report_fonts("removed : %s",redundant and #redundant > 0 and #redundant or "none")
if expanders then
- report_fonts("expanded: %s",e > 0 and e or "none")
+ report_fonts("expanded: %s",e > 0 and e or "none")
end
report_fonts()
end
diff --git a/tex/context/base/mkiv/node-ini.lua b/tex/context/base/mkiv/node-ini.lua
index f311bb811..bb8a7d331 100644
--- a/tex/context/base/mkiv/node-ini.lua
+++ b/tex/context/base/mkiv/node-ini.lua
@@ -162,6 +162,17 @@ local leadercodes = mark(getsubtypes("leader"))
local fillcodes = mark(getsubtypes("fill"))
+-- for now:
+
+local boundarycodes = allocate {
+ [0] = "cancel",
+ [1] = "user",
+ [2] = "protrusion",
+ [3] = "word",
+}
+
+-- local boundarycodes = mark(getsubtypes("boundary"))
+
-- local penaltycodes = allocate { -- unfortunately not used (yet)
-- [ 0] = "userpenalty",
-- }
@@ -254,41 +265,43 @@ end
local nodecodes = simplified(node.types())
local whatcodes = simplified(node.whatsits())
-skipcodes = allocate(swapped(skipcodes,skipcodes))
-noadcodes = allocate(swapped(noadcodes,noadcodes))
-radicalcodes = allocate(swapped(radicalcodes,radicalcodes))
-nodecodes = allocate(swapped(nodecodes,nodecodes))
-whatcodes = allocate(swapped(whatcodes,whatcodes))
-listcodes = allocate(swapped(listcodes,listcodes))
-glyphcodes = allocate(swapped(glyphcodes,glyphcodes))
-kerncodes = allocate(swapped(kerncodes,kerncodes))
-penaltycodes = allocate(swapped(penaltycodes,penaltycodes))
-mathcodes = allocate(swapped(mathcodes,mathcodes))
-fillcodes = allocate(swapped(fillcodes,fillcodes))
-margincodes = allocate(swapped(margincodes,margincodes))
-disccodes = allocate(swapped(disccodes,disccodes))
-accentcodes = allocate(swapped(accentcodes,accentcodes))
-fencecodes = allocate(swapped(fencecodes,fencecodes))
-rulecodes = allocate(swapped(rulecodes,rulecodes))
-leadercodes = allocate(swapped(leadercodes,leadercodes))
-
-nodes.skipcodes = skipcodes nodes.gluecodes = skipcodes -- more official
-nodes.noadcodes = noadcodes
-nodes.nodecodes = nodecodes
-nodes.whatcodes = whatcodes nodes.whatsitcodes = whatcodes -- more official
-nodes.listcodes = listcodes
-nodes.glyphcodes = glyphcodes
-nodes.kerncodes = kerncodes
-nodes.penaltycodes = penaltycodes
-nodes.mathcodes = mathcodes
-nodes.fillcodes = fillcodes
-nodes.margincodes = margincodes nodes.marginkerncodes = margincodes
-nodes.disccodes = disccodes nodes.discretionarycodes = disccodes
-nodes.accentcodes = accentcodes
-nodes.radicalcodes = radicalcodes
-nodes.fencecodes = fencecodes
-nodes.rulecodes = rulecodes
-nodes.leadercodes = leadercodes
+skipcodes = allocate(swapped(skipcodes,skipcodes))
+boundarycodes = allocate(swapped(boundarycodes,boundarycodes))
+noadcodes = allocate(swapped(noadcodes,noadcodes))
+radicalcodes = allocate(swapped(radicalcodes,radicalcodes))
+nodecodes = allocate(swapped(nodecodes,nodecodes))
+whatcodes = allocate(swapped(whatcodes,whatcodes))
+listcodes = allocate(swapped(listcodes,listcodes))
+glyphcodes = allocate(swapped(glyphcodes,glyphcodes))
+kerncodes = allocate(swapped(kerncodes,kerncodes))
+penaltycodes = allocate(swapped(penaltycodes,penaltycodes))
+mathcodes = allocate(swapped(mathcodes,mathcodes))
+fillcodes = allocate(swapped(fillcodes,fillcodes))
+margincodes = allocate(swapped(margincodes,margincodes))
+disccodes = allocate(swapped(disccodes,disccodes))
+accentcodes = allocate(swapped(accentcodes,accentcodes))
+fencecodes = allocate(swapped(fencecodes,fencecodes))
+rulecodes = allocate(swapped(rulecodes,rulecodes))
+leadercodes = allocate(swapped(leadercodes,leadercodes))
+
+nodes.skipcodes = skipcodes nodes.gluecodes = skipcodes -- more official
+nodes.boundarycodes = boundarycodes
+nodes.noadcodes = noadcodes
+nodes.nodecodes = nodecodes
+nodes.whatcodes = whatcodes nodes.whatsitcodes = whatcodes -- more official
+nodes.listcodes = listcodes
+nodes.glyphcodes = glyphcodes
+nodes.kerncodes = kerncodes
+nodes.penaltycodes = penaltycodes
+nodes.mathcodes = mathcodes
+nodes.fillcodes = fillcodes
+nodes.margincodes = margincodes nodes.marginkerncodes = margincodes
+nodes.disccodes = disccodes nodes.discretionarycodes = disccodes
+nodes.accentcodes = accentcodes
+nodes.radicalcodes = radicalcodes
+nodes.fencecodes = fencecodes
+nodes.rulecodes = rulecodes
+nodes.leadercodes = leadercodes
listcodes.row = listcodes.alignment
listcodes.column = listcodes.alignment
@@ -298,21 +311,22 @@ kerncodes.kerning = kerncodes.fontkern
kerncodes.italiccorrection = kerncodes.italiccorrection or 1 -- new
nodes.codes = allocate { -- mostly for listing
- glue = skipcodes,
- noad = noadcodes,
- node = nodecodes,
- hlist = listcodes,
- vlist = listcodes,
- glyph = glyphcodes,
- kern = kerncodes,
- penalty = penaltycodes,
- math = mathnodes,
- fill = fillcodes,
- margin = margincodes,
- disc = disccodes,
- whatsit = whatcodes,
- accent = accentcodes,
- fence = fencecodes,
+ glue = skipcodes,
+ boundary = boundarycodes,
+ noad = noadcodes,
+ node = nodecodes,
+ hlist = listcodes,
+ vlist = listcodes,
+ glyph = glyphcodes,
+ kern = kerncodes,
+ penalty = penaltycodes,
+ math = mathnodes,
+ fill = fillcodes,
+ margin = margincodes,
+ disc = disccodes,
+ whatsit = whatcodes,
+ accent = accentcodes,
+ fence = fencecodes,
}
local report_codes = logs.reporter("nodes","codes")
diff --git a/tex/context/base/mkiv/node-ltp.lua b/tex/context/base/mkiv/node-ltp.lua
index 380b94e64..ae17ab9ef 100644
--- a/tex/context/base/mkiv/node-ltp.lua
+++ b/tex/context/base/mkiv/node-ltp.lua
@@ -244,6 +244,7 @@ local margincodes = nodes.margincodes
local disccodes = nodes.disccodes
local mathcodes = nodes.mathcodes
local fillcodes = nodes.fillcodes
+local boundarycodes = nodes.boundarycodes
local temp_code = nodecodes.temp
local glyph_code = nodecodes.glyph
@@ -260,6 +261,9 @@ local vlist_code = nodecodes.vlist
local unset_code = nodecodes.unset
local marginkern_code = nodecodes.marginkern
local dir_code = nodecodes.dir
+local boundary_code = nodecodes.boundary
+
+local protrusion_code = boundarycodes.protrusion
local leaders_code = gluecodes.leaders
@@ -612,6 +616,16 @@ local function find(head) -- do we really want to recurse into an hlist?
else
head = getnext(head)
end
+ elseif id == protrusion_code then
+ local v = getfield(head,"value")
+ if v == 1 or v == 3 then
+ head = getnext(head)
+ if head then
+ head = getnext(head)
+ end
+ else
+ return head
+ end
elseif is_skipable(head) then
head = getnext(head)
else
@@ -652,6 +666,16 @@ local function find(head,tail)
else
tail = getprev(tail)
end
+ elseif id == protrusion_code then
+ local v = getfield(tail,"value")
+ if v == 2 or v == 3 then
+ tail = getprev(tail)
+ if tail then
+ tail = getprev(tail)
+ end
+ else
+ return tail
+ end
elseif is_skipable(tail) then
tail = getprev(tail)
else
@@ -1198,7 +1222,7 @@ local function post_line_break(par)
local prevlast = getprev(lastnode)
local nextlast = getnext(lastnode)
local subtype = getsubtype(lastnode)
- local pre, post, replace, pretail, posttail, replacetail = getdisc(lastnode)
+ local pre, post, replace, pretail, posttail, replacetail = getdisc(lastnode,true)
if subtype == second_disc_code then
if not (getid(prevlast) == disc_code and getsubtype(prevlast) == first_disc_code) then
report_parbuilders('unsupported disc at location %a',3)
@@ -1875,7 +1899,7 @@ local function try_break(pi, break_type, par, first_p, current, checked_expansio
local l = b and b.cur_break or first_p
local o = current and getprev(current)
if current and getid(current) == disc_code then
- local pre, _, _, pretail = getdisc(current)
+ local pre, _, _, pretail = getdisc(current,true)
if pre then
o = pretail
else
diff --git a/tex/context/base/mkiv/node-res.lua b/tex/context/base/mkiv/node-res.lua
index d87f40df7..4d25314ad 100644
--- a/tex/context/base/mkiv/node-res.lua
+++ b/tex/context/base/mkiv/node-res.lua
@@ -18,20 +18,21 @@ local report_nodes = logs.reporter("nodes","housekeeping")
local nodes, node = nodes, node
-nodes.pool = nodes.pool or { }
-local nodepool = nodes.pool
+nodes.pool = nodes.pool or { }
+local nodepool = nodes.pool
-local whatsitcodes = nodes.whatsitcodes
-local skipcodes = nodes.skipcodes
-local kerncodes = nodes.kerncodes
-local rulecodes = nodes.rulecodes
-local nodecodes = nodes.nodecodes
+local whatsitcodes = nodes.whatsitcodes
+local skipcodes = nodes.skipcodes
+local kerncodes = nodes.kerncodes
+local rulecodes = nodes.rulecodes
+local nodecodes = nodes.nodecodes
+local boundarycodes = nodes.boundarycodes
-local glyph_code = nodecodes.glyph
+local glyph_code = nodecodes.glyph
-local allocate = utilities.storage.allocate
+local allocate = utilities.storage.allocate
-local texgetcount = tex.getcount
+local texgetcount = tex.getcount
local reserved, nofreserved = { }, 0
@@ -154,15 +155,22 @@ local user_l = register_nut(new_nut("whatsit",whatsitcodes.userdefine
local user_s = register_nut(new_nut("whatsit",whatsitcodes.userdefined)) setfield(user_s,"type",115) -- 44
local user_t = register_nut(new_nut("whatsit",whatsitcodes.userdefined)) setfield(user_t,"type",116) -- 44
----- user_c = register_nut(new_nut("whatsit",whatsitcodes.userdefined)) setfield(user_c,"type",108) -- 44
+
local left_margin_kern = register_nut(new_nut("margin_kern",0))
local right_margin_kern = register_nut(new_nut("margin_kern",1))
+
local lineskip = register_nut(new_nut("glue",skipcodes.lineskip))
local baselineskip = register_nut(new_nut("glue",skipcodes.baselineskip))
local leftskip = register_nut(new_nut("glue",skipcodes.leftskip))
local rightskip = register_nut(new_nut("glue",skipcodes.rightskip))
+
local temp = register_nut(new_nut("temp",0))
+
local noad = register_nut(new_nut("noad"))
+local boundary = register_nut(new_nut("boundary",boundarycodes.user))
+local wordboundary = register_nut(new_nut("boundary",boundarycodes.word))
+
-- the dir field needs to be set otherwise crash:
local rule = register_nut(new_nut("rule")) setfield(rule, "dir","TLT")
@@ -193,13 +201,33 @@ end
function nutpool.penalty(p)
local n = copy_nut(penalty)
- setfield(n,"penalty",p)
+ if p and p ~= 0 then
+ setfield(n,"penalty",p)
+ end
return n
end
function nutpool.kern(k)
local n = copy_nut(kern)
- setfield(n,"kern",k)
+ if k and k ~= 0 then
+ setfield(n,"kern",k)
+ end
+ return n
+end
+
+function nutpool.boundary(v)
+ local n = copy_nut(boundary)
+ if v and v ~= 0 then
+ setfield(n,"value",v)
+ end
+ return n
+end
+
+function nutpool.wordboundary(v)
+ local n = copy_nut(wordboundary)
+ if v and v ~= 0 then
+ setfield(n,"value",v)
+ end
return n
end
@@ -211,7 +239,9 @@ end
function nutpool.italickern(k)
local n = copy_nut(italickern)
- setfield(n,"kern",k)
+ if k and k ~= 0 then
+ setfield(n,"kern",k)
+ end
return n
end
diff --git a/tex/context/base/mkiv/node-shp.lua b/tex/context/base/mkiv/node-shp.lua
index 4e4c88c03..2f2af4905 100644
--- a/tex/context/base/mkiv/node-shp.lua
+++ b/tex/context/base/mkiv/node-shp.lua
@@ -78,7 +78,7 @@ local function cleanup_redundant(head) -- better name is: flatten_page
local id = getid(start)
if id == disc_code then
if getsubtype(start) == fulldisc_code then
- local _, _, replace, _, _ tail = getdisc(start)
+ local _, _, replace, _, _ tail = getdisc(start,true)
if replace then
local prev, next = getboth(start)
setfield(start,"replace",nil)
diff --git a/tex/context/base/mkiv/spac-ali.mkiv b/tex/context/base/mkiv/spac-ali.mkiv
index e7d4137a0..21714f07c 100644
--- a/tex/context/base/mkiv/spac-ali.mkiv
+++ b/tex/context/base/mkiv/spac-ali.mkiv
@@ -911,7 +911,8 @@
% Structure:
\unexpanded\def\startalignment
- {\begingroup
+ {\par
+ \begingroup
\setupalign}
\unexpanded\def\stopalignment
diff --git a/tex/context/base/mkiv/spac-hor.mkiv b/tex/context/base/mkiv/spac-hor.mkiv
index 39ebcfa26..7c5358c51 100644
--- a/tex/context/base/mkiv/spac-hor.mkiv
+++ b/tex/context/base/mkiv/spac-hor.mkiv
@@ -460,10 +460,18 @@
%D \TEX{} x\crlf
%D \stoptyping
%D
-%D from now on we treat it as anormal space and not as a space with \type
+%D from now on we treat it as a normal space and not as a space with \type
%D {sfcode} 1000.
-\unexpanded\def\normalnotobeyedspace{\mathortext\normalspaceprimitive\space} % no \dontleavehmode\space (else no frenchspacing)
+\unexpanded\def\specialspaceprimitive
+ {\begingroup
+ % so, no fancy extra spacing after: foo i.e.\ bar
+ \nonfrenchspacing\normalspaceprimitive
+ \endgroup}
+
+\unexpanded\def\normalnotobeyedspace
+ {\mathortext\normalspaceprimitive\specialspaceprimitive} % no \dontleavehmode\space (else no frenchspacing)
+
\let\ =\normalnotobeyedspace
% Because I strip spaces at the end of lines (in the editor) we need a bit of
diff --git a/tex/context/base/mkiv/spac-ver.mkiv b/tex/context/base/mkiv/spac-ver.mkiv
index 6ae96b7ec..bbe53fb2a 100644
--- a/tex/context/base/mkiv/spac-ver.mkiv
+++ b/tex/context/base/mkiv/spac-ver.mkiv
@@ -1141,8 +1141,8 @@
%D For poractical reasons we define some boundary characters here.
-\unexpanded\def\leftboundary {\boundary\plusone}
-\unexpanded\def\rightboundary {\boundary\plustwo}
+\unexpanded\def\leftboundary {\protrusionboundary\plusone}
+\unexpanded\def\rightboundary {\protrusionboundary\plustwo}
\unexpanded\def\signalcharacter{\boundary\plusone\char\zerocount\boundary\plustwo} % not the same as strut signals
\newsignal\strutsignal \setfalse\sigstruts
diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf
index 5b21c27a2..707b46e9f 100644
--- a/tex/context/base/mkiv/status-files.pdf
+++ b/tex/context/base/mkiv/status-files.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf
index 68a17780b..f98d31424 100644
--- a/tex/context/base/mkiv/status-lua.pdf
+++ b/tex/context/base/mkiv/status-lua.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/strc-itm.mkvi b/tex/context/base/mkiv/strc-itm.mkvi
index 506aec940..e8a56acf8 100644
--- a/tex/context/base/mkiv/strc-itm.mkvi
+++ b/tex/context/base/mkiv/strc-itm.mkvi
@@ -670,6 +670,36 @@
\strc_itemgroups_insert_reference
\endgroup}
+% needs testing (maybe it need to happen later)
+%
+% \appendtoks
+% \setupcounter
+% [\v_strc_itemgroups_counter]%
+% [\c!prefix=\itemgroupparameter\c!prefix,
+% \c!prefixstopper=\itemgroupparameter\c!prefixstopper,
+% \c!prefixseparatorset=\itemgroupparameter\c!prefixseparatorset,
+% \c!prefixconversion=\itemgroupparameter\c!prefixconversion,
+% \c!prefixconversionset=\itemgroupparameter\c!prefixseparatorset,
+% \c!prefixset=\itemgroupparameter\c!prefixset,
+% \c!prefixsegments=\itemgroupparameter\c!prefixsegments,
+% \c!prefixconnector=\itemgroupparameter\c!prefixconnector,
+% \c!criterium=\itemgroupparameter\c!criterium,
+% \c!numberorder=\ifconditional\c_strc_itemgroups_reverse\v!reverse\else\v!normal\fi,
+% \c!numberstopper=\expdoif{\itemgroupparameter\c!placestopper}\v!yes{\itemgroupparameter\c!stopper},
+% \c!numberconversionset=\v_strc_itemgroups_counter,
+% \c!numbersegments=\currentitemgroupsegments]%
+% \to\itemgroupcommands
+%
+% \def\strc_itemgroups_insert_item_counter_indeed % quite slow ... every time this setup .. but it
+% {\begingroup % can be optimized ... best move some to strc-num
+% % there will be a fixedconversion key
+% %\normalexpanded{\defineconversionset[\v_strc_itemgroups_counter][\currentitemgroupconversionset][\currentitemgroupsymbol]}%
+% \normalexpanded{\strc_sets_define_conversion_set[\v_strc_itemgroups_counter][\currentitemgroupconversionset][\currentitemgroupsymbol]}%
+% %
+% \convertedcounter[\v_strc_itemgroups_counter]% [\number\currentitemlevel]%
+% \strc_itemgroups_insert_reference
+% \endgroup}
+
\def\strc_itemgroups_set_symbol#symbol%
{\edef\strc_itemgroups_tmp_symbol{#symbol}%
\ifx\strc_itemgroups_tmp_symbol\empty \else
@@ -1666,6 +1696,36 @@
%D End of plugin.
+%D Something for tables:
+
+\unexpanded\def\itemtag % not yet in interface definitions
+ {\dosingleempty\strc_itemgroups_item_tag}
+
+\unexpanded\def\strc_itemgroups_item_tag[#reference]% we can reuse more
+ {\def\currentitemreference{#reference}%
+ \iftrialtypesetting
+ \strc_counters_save\v_strc_itemgroups_counter
+ \strc_itemgroups_increment_item_counter
+ \strc_itemgroups_insert_item_tag_indeed
+ \strc_counters_restore\v_strc_itemgroups_counter
+ \else
+ \strc_itemgroups_increment_item_counter
+ \strc_itemgroups_insert_item_tag_indeed
+ \fi}
+
+\def\strc_itemgroups_insert_item_tag_indeed
+ {\letitemgroupparameter\c!distance\zeropoint
+ %letitemgroupparameter\c!width\zeropoint
+ \strc_itemgroups_make_symbol_box
+ \strc_itemgroups_make_destination_box
+ \let\m_strc_itemgroups_destination\empty
+ \ht\b_strc_itemgroups\strutheight
+ \dp\b_strc_itemgroups\strutdepth
+ \box\b_strc_itemgroups
+ \ignorespaces}
+
+%D Done again.
+
\setupitemgroup
[\c!margin=\zeropoint,
\c!leftmargin=\zeropoint,
diff --git a/tex/context/base/mkiv/strc-sec.mkiv b/tex/context/base/mkiv/strc-sec.mkiv
index c57fb2dd6..c78cffbff 100644
--- a/tex/context/base/mkiv/strc-sec.mkiv
+++ b/tex/context/base/mkiv/strc-sec.mkiv
@@ -299,7 +299,7 @@
% lua interface / names and interface might change
-\newconditional\c_strc_rendering_continuous % not used (mkii ?)
+% \newconditional\c_strc_rendering_continuous % not used (mkii ?)
\def\setstructurelevel #1#2{\clf_setstructurelevel {#1}{#2}} % name, level|parent
\def\getstructurelevel #1{\clf_getstructurelevel {#1}} % name
@@ -897,7 +897,7 @@
\fi\fi
\fi
\flushingcolumnfloatstrue
- \setfalse\c_strc_sectioniong_ignore_page
+ \setfalse\c_strc_sectioning_ignore_page
% ignorespaces prevents spaces creeping in when after=\dontleavehmode
\dostarttagged\t!sectioncontent\empty
\ifconditional\headisdisplay
@@ -992,14 +992,14 @@
\doifelselayouttextline\v!footer{\normalexpanded{\setuplayouttext[\v!footer][\c!state=\p_footer]}}\donothing
\fi}
-\newcount \c_strc_sectioniong_preceding_level \c_strc_sectioniong_preceding_level\plusone
+\newcount \c_strc_sectioning_preceding_level \c_strc_sectioning_preceding_level\plusone
\newconditional\c_strc_sectioning_auto_break \settrue\c_strc_sectioning_auto_break
-\newconditional\c_strc_sectioniong_ignore_page
-\newsignal \s_strc_sectioniong_continuous_signal
+\newconditional\c_strc_sectioning_ignore_page
+\newsignal \s_strc_sectioning_continuous_signal
\unexpanded\def\strc_sectioning_inject_continuous_signal
{\ifhmode
- \hskip\s_strc_sectioniong_continuous_signal\relax
+ \hskip\s_strc_sectioning_continuous_signal\relax
\fi}
% \let\dotagsectionlevel\relax
@@ -1042,63 +1042,84 @@
{\ifhmode
\scratchcounter\lastpenalty
\unpenalty % no beauty in this
- \ifdim\lastskip=\s_strc_sectioniong_continuous_signal
+ \ifdim\lastskip=\s_strc_sectioning_continuous_signal
% no page break
- \ifconditional\c_strc_sectioniong_ignore_page
- \setfalse\c_strc_sectioniong_ignore_page
+ \ifconditional\c_strc_sectioning_ignore_page
+ \setfalse\c_strc_sectioning_ignore_page
\else
- \global\c_strc_sectioniong_preceding_level\currentheadlevel
+ \global\c_strc_sectioning_preceding_level\currentheadlevel
\nobreak
\fi
- \global\settrue\c_strc_rendering_continuous
+ % \global\settrue\c_strc_rendering_continuous
\else
\penalty\scratchcounter
- \global\setfalse\c_strc_rendering_continuous
+ % \global\setfalse\c_strc_rendering_continuous
#1%
\fi
\else
- \global\setfalse\c_strc_rendering_continue
+ % \global\setfalse\c_strc_rendering_continuous
#1%
\fi}
\def\currentsectioncountervalue {\clf_depthnumber\numexpr\thenamedheadlevel\currenthead\relax}
\def\previoussectioncountervalue{\clf_depthnumber\numexpr\thenamedheadlevel\currenthead+\minusone\relax}
+% \def\strc_sectioning_handle_page_nop
+% {\edef\p_continue{\headparameter\c!continue}%
+% \ifx\p_continue\v!yes
+% \ifnum\previoussectioncountervalue=\zerocount
+% \strc_sectioning_check_layout
+% \else\ifnum\currentsectioncountervalue>\zerocount
+% \strc_sectioning_check_layout
+% \fi\fi
+% \else
+% \strc_sectioning_check_layout
+% \fi}
+
+\def\currentsectioncountervalue {\clf_depthnumber\numexpr\thenamedheadlevel\currenthead\relax}
+%def\previoussectioncountervalue{\clf_depthnumber\numexpr\thenamedheadlevel\currenthead+\minusone\relax}
+\def\previoussectioncountervalue{\clf_depthnumber\numexpr\thenamedheadlevel\previoushead\relax}
+
+\let\previoushead\empty
+
\def\strc_sectioning_handle_page_nop
{\edef\p_continue{\headparameter\c!continue}%
\ifx\p_continue\v!yes
- \ifnum\previoussectioncountervalue=\zerocount
- \strc_sectioning_check_layout
+ \ifx\currenthead\previoushead % not really needed
+ \strc_sectioning_check_layout
+ \else\ifnum\previoussectioncountervalue=\zerocount
+ \strc_sectioning_check_layout
\else\ifnum\currentsectioncountervalue>\zerocount
- \strc_sectioning_check_layout
- \fi\fi
+ \strc_sectioning_check_layout
+ \fi\fi\fi
\else
\strc_sectioning_check_layout
- \fi}
+ \fi
+ \globallet\previoushead\currenthead}
\def\strc_sectioning_handle_page_yes
- {%[[\currenthead @\thenamedheadlevel\currenthead/prev:\previoussectioncountervalue/curr:\currentsectioncountervalue]]
- \ifconditional\c_strc_sectioniong_ignore_page
- \setfalse\c_strc_sectioniong_ignore_page
+ {\ifconditional\c_strc_sectioning_ignore_page
+ \setfalse\c_strc_sectioning_ignore_page
\else
% beware, these numbers are not yet know here
\strc_sectioning_handle_page_nop
\edef\p_aligntitle{\headparameter\c!aligntitle}%
\ifx\p_aligntitle\v!float
-\ifconditional\c_strc_sectioning_auto_break
- \vspacing[\v!samepage-\currentheadlevel]%
-\fi
+ \ifconditional\c_strc_sectioning_auto_break
+ \vspacing[\v!samepage-\currentheadlevel]%
+ \fi
\headparameter\c!before\relax
\indent
\else
\page_otr_command_flush_side_floats
-\ifconditional\c_strc_sectioning_auto_break
- \vspacing[\v!samepage-\currentheadlevel]%
-\fi
+ \ifconditional\c_strc_sectioning_auto_break
+ \vspacing[\v!samepage-\currentheadlevel]%
+ \fi
\headparameter\c!before\relax
\fi
- \global\c_strc_sectioniong_preceding_level\currentheadlevel
- \fi}
+ \global\c_strc_sectioning_preceding_level\currentheadlevel
+ \fi
+ \globallet\previoushead\currenthead}
\unexpanded\def\strc_sectioning_prevent_page_break#1% see strc-con
{\ifconditional\c_strc_sectioning_auto_break
diff --git a/tex/context/base/mkiv/syst-ini.mkiv b/tex/context/base/mkiv/syst-ini.mkiv
index 2b665ee16..2c00d8c92 100644
--- a/tex/context/base/mkiv/syst-ini.mkiv
+++ b/tex/context/base/mkiv/syst-ini.mkiv
@@ -1144,4 +1144,9 @@
\let\normalstartdmath \Ustartdisplaymath
\let\normalstopdmath \Ustopdisplaymath
+%D For now:
+
+\ifdefined\protrusionboundary \else \let\protrusionboundary\boundary \fi
+\ifdefined\wordboundary \else \let\wordboundary \noboundary \fi
+
\protect \endinput
diff --git a/tex/context/base/mkiv/trac-log.lua b/tex/context/base/mkiv/trac-log.lua
index 5745460cc..86557ef09 100644
--- a/tex/context/base/mkiv/trac-log.lua
+++ b/tex/context/base/mkiv/trac-log.lua
@@ -111,7 +111,7 @@ local direct, subdirect, writer, pushtarget, poptarget, setlogfile, settimedlog,
if tex and (tex.jobname or tex.formatname) then
if texio.setescape then
- texio.setescape(0)
+ texio.setescape(0) -- or (false)
end
local function useluawrites()
diff --git a/tex/context/base/mkiv/typo-brk.lua b/tex/context/base/mkiv/typo-brk.lua
index 9bccf91ea..9fc248305 100644
--- a/tex/context/base/mkiv/typo-brk.lua
+++ b/tex/context/base/mkiv/typo-brk.lua
@@ -40,6 +40,9 @@ local setattr = nuts.setattr
local setlink = nuts.setlink
local setchar = nuts.setchar
local setdisc = nuts.setdisc
+local setnext = nuts.setnext
+local setprev = nuts.setprev
+local setboth = nuts.setboth
local setsubtype = nuts.setsubtype
local copy_node = nuts.copy
@@ -59,12 +62,14 @@ local nodepool = nuts.pool
local tasks = nodes.tasks
local v_reset = interfaces.variables.reset
+local v_yes = interfaces.variables.yes
local implement = interfaces.implement
local new_penalty = nodepool.penalty
local new_glue = nodepool.glue
local new_disc = nodepool.disc
+local new_wordboundary = nodepool.wordboundary
local nodecodes = nodes.nodecodes
local kerncodes = nodes.kerncodes
@@ -100,21 +105,60 @@ for i=1,#mapping do
numbers[m.name] = m
end
-local function insert_break(head,start,before,after,kern)
+-- this needs a cleanup ... maybe make all of them disc nodes
+
+-- todo: use boundaries
+
+local function withattribute(n,a)
+ setfield(n,"attr",a)
+ return n
+end
+
+local function insert_break(head,start,stop,before,after,kern)
+ local a = getfield(start,"attr")
if not kern then
- insert_node_before(head,start,new_penalty(before))
- insert_node_before(head,start,new_glue(0))
+ insert_node_before(head,start,withattribute(new_penalty(before),a))
+ insert_node_before(head,start,withattribute(new_glue(0),a))
end
- insert_node_after(head,start,new_glue(0))
- insert_node_after(head,start,new_penalty(after))
+ insert_node_after(head,stop,withattribute(new_glue(0),a))
+ insert_node_after(head,stop,withattribute(new_penalty(after),a))
end
-methods[1] = function(head,start,_,kern)
- local p, n = getboth(start)
+methods[1] = function(head,start,stop,settings,kern)
+ local p, n = getboth(stop)
if p and n then
- insert_break(head,start,10000,0,kern)
+ insert_break(head,start,stop,10000,0,kern)
end
- return head, start
+ return head, stop
+end
+
+methods[6] = function(head,start,stop,settings,kern)
+ local p = getprev(start)
+ local n = getnext(stop)
+ if p and n then
+ if kern then
+ insert_break(head,start,stop,10000,0,kern)
+ else
+ local l = new_wordboundary()
+ local d = new_disc()
+ local r = new_wordboundary()
+ setfield(d,"attr",getfield(start,"attr")) -- otherwise basemode is forces and we crash
+ setlink(p,l)
+ setlink(l,d)
+ setlink(d,r)
+ setlink(r,n)
+ if start == stop then
+ setboth(start)
+ setdisc(d,start,nil,copy_node(start))
+ else
+ setprev(start)
+ setnext(stop)
+ setdisc(d,start,nil,copy_nodelist(start))
+ end
+ stop = r
+ end
+ end
+ return head, stop
end
methods[2] = function(head,start) -- ( => (-
@@ -131,7 +175,7 @@ methods[2] = function(head,start) -- ( => (-
setchar(hyphen,languages.prehyphenchar(getfield(tmp,"lang")))
setlink(tmp,hyphen)
setfield(start,"post",tmp)
- insert_break(head,start,10000,10000)
+ insert_break(head,start,start,10000,10000)
end
return head, start
end
@@ -150,7 +194,7 @@ methods[3] = function(head,start) -- ) => -)
setchar(hyphen,languages.prehyphenchar(getfield(tmp,"lang")))
setlink(hyphen,tmp)
setfield(start,"pre",hyphen)
- insert_break(head,start,10000,10000)
+ insert_break(head,start,start,10000,10000)
end
return head, start
end
@@ -164,12 +208,12 @@ methods[4] = function(head,start) -- - => - - -
-- setfield(start,"attr",copy_nodelist(getfield(tmp,"attr"))) -- just a copy will do
setfield(start,"attr",getfield(tmp,"attr"))
setdisc(start,copy_node(tmp),copy_node(tmp),tmp)
- insert_break(head,start,10000,10000)
+ insert_break(head,start,start,10000,10000)
end
return head, start
end
-methods[5] = function(head,start,settings) -- x => p q r
+methods[5] = function(head,start,stop,settings) -- x => p q r
local p, n = getboth(start)
if p and n then
local tmp
@@ -193,7 +237,7 @@ methods[5] = function(head,start,settings) -- x => p q r
-- setfield(start,"attr",copy_nodelist(attr)) -- todo: critical only -- just a copy will do
setfield(start,"attr",attr) -- todo: critical only -- just a copy will do
free_node(tmp)
- insert_break(head,start,10000,10000)
+ insert_break(head,start,start,10000,10000)
end
return head, start
end
@@ -227,17 +271,43 @@ function breakpoints.handler(head)
if cmap then
-- for now we collect but when found ok we can move the handler here
-- although it saves nothing in terms of performance
- local d = { current, cmap }
- if done then
- done[#done+1] = d
+ local lang = getfield(current,"lang")
+ local smap = lang and lang >= 0 and lang < 0x7FFF and (cmap[numbers[lang]] or cmap[""])
+ if smap then
+ local skip = smap.skip
+ local start = current
+ local stop = current
+ current = getnext(current)
+ if skip then
+ while current do
+ local c = isglyph(current)
+ if c == char then
+ stop = current
+ current = getnext(current)
+ else
+ break
+ end
+ end
+ end
+ local d = { start, stop, cmap, smap, char }
+ if done then
+ done[#done+1] = d
+ else
+ done = { d }
+ end
else
- done = { d }
+ current = getnext(current)
end
- setattr(current,a_breakpoints,unsetvalue) -- should not be needed
+ setattr(start,a_breakpoints,unsetvalue) -- should not be needed
+ else
+ current = getnext(current)
end
+ else
+ current = getnext(current)
end
+ else
+ current = getnext(current)
end
- current = getnext(current)
elseif id == math_code then
attr = nil
current = end_of_math(current)
@@ -254,16 +324,18 @@ function breakpoints.handler(head)
-- we have hits
local numbers = languages.numbers
for i=1,#done do
- local data = done[i]
- local current = data[1]
- local cmap = data[2]
- local lang = getfield(current,"lang")
- -- we do a sanity check for language
- local smap = lang and lang >= 0 and lang < 0x7FFF and (cmap[numbers[lang]] or cmap[""])
- if smap then
+ local data = done[i]
+ local start = data[1]
+ local stop = data[2]
+ local cmap = data[3]
+ local smap = data[4]
+-- local lang = getfield(start,"lang")
+-- -- we do a sanity check for language
+-- local smap = lang and lang >= 0 and lang < 0x7FFF and (cmap[numbers[lang]] or cmap[""])
+-- if smap then
local nleft = smap.nleft
local cleft = 0
- local prev = getprev(current)
+ local prev = getprev(start)
local kern = nil
while prev and nleft ~= cleft do
local id = getid(prev)
@@ -289,7 +361,7 @@ function breakpoints.handler(head)
if nleft == cleft then
local nright = smap.nright
local cright = 0
- local next = getnext(current)
+ local next = getnext(stop) -- getnext(start)
while next and nright ~= cright do
local char, id = isglyph(next)
if char then
@@ -317,10 +389,10 @@ function breakpoints.handler(head)
if nright == cright then
local method = methods[smap.type]
if method then
- nead, start = method(nead,current,smap,kern)
+ nead, start = method(nead,start,stop,smap,kern)
end
end
- end
+-- end
end
end
return tonode(nead), true
@@ -362,6 +434,7 @@ function breakpoints.setreplacement(name,char,language,settings)
left = left ~= "" and left or nil,
right = right ~= "" and right or nil,
middle = middle ~= "" and middle or nil,
+ skip = settings.range == v_yes,
} -- was { type or 1, before or 1, after or 1 }
end
end
@@ -412,6 +485,7 @@ implement {
{ "right" },
{ "left" },
{ "middle" },
+ { "range" },
}
}
}
diff --git a/tex/context/base/mkiv/typo-brk.mkiv b/tex/context/base/mkiv/typo-brk.mkiv
index 55f4d8466..3f9ce6f3a 100644
--- a/tex/context/base/mkiv/typo-brk.mkiv
+++ b/tex/context/base/mkiv/typo-brk.mkiv
@@ -38,7 +38,10 @@
\def\typo_breakpoints_define_character[#1][#2][#3]% name char settings
{\begingroup
- \getdummyparameters[\c!type=\plusone,\c!nleft=\plusthree,\c!nright=\plusthree,\s!language=,\c!left=,\c!right=,\c!middle=,#3]%
+ \getdummyparameters
+ [\c!type=\plusone,\c!nleft=\plusthree,\c!nright=\plusthree,%
+ \s!language=,\c!left=,\c!right=,\c!middle=,\c!range=\v!no,%
+ #3]%
\clf_definebreakpoint
{#1}%
{#2}%
@@ -50,6 +53,7 @@
right {\directdummyparameter\c!right}%
left {\directdummyparameter\c!left}%
middle {\directdummyparameter\c!middle}%
+ range {\directdummyparameter\c!range}%
}%
\relax
\endgroup}
@@ -63,11 +67,15 @@
\definebreakpoints[compound]
-\definebreakpoint [compound] [+] [\c!nleft=3,\c!nright=3,\c!type=1] % middle=+,left=,right=
-\definebreakpoint [compound] [-] [\c!nleft=3,\c!nright=3,\c!type=1] % middle=+,left=,right=
-\definebreakpoint [compound] [/] [\c!nleft=3,\c!nright=3,\c!type=1] % middle=+,left=,right=
-\definebreakpoint [compound] [(] [\c!nleft=3,\c!nright=3,\c!type=2] % type=5,middle=(,left=(-,right=
-\definebreakpoint [compound] [)] [\c!nleft=3,\c!nright=3,\c!type=3] % type=5,middle=),left=,right=-)
+% 1: simple break
+% 6: simple break but skip same
+
+\definebreakpoint [compound] [+] [\c!nleft=3,\c!nright=3,\c!type=1] % middle=+,left=,right=
+%definebreakpoint [compound] [-] [\c!nleft=3,\c!nright=3,\c!type=1,\c!range=\v!yes] % middle=+,left=,right=
+\definebreakpoint [compound] [-] [\c!nleft=3,\c!nright=3,\c!type=6,\c!range=\v!yes] % middle=+,left=,right=
+\definebreakpoint [compound] [/] [\c!nleft=3,\c!nright=3,\c!type=1] % middle=+,left=,right=
+\definebreakpoint [compound] [(] [\c!nleft=3,\c!nright=3,\c!type=2] % type=5,middle=(,left=(-,right=
+\definebreakpoint [compound] [)] [\c!nleft=3,\c!nright=3,\c!type=3] % type=5,middle=),left=,right=-)
\let\installbreakpoint\definebreakpoint % for a while
diff --git a/tex/context/base/mkiv/typo-itc.lua b/tex/context/base/mkiv/typo-itc.lua
index a46f3e8a0..cf54187d7 100644
--- a/tex/context/base/mkiv/typo-itc.lua
+++ b/tex/context/base/mkiv/typo-itc.lua
@@ -283,7 +283,7 @@ function italics.handler(head)
postinserted = nil
postitalic = 0
updated = false
- pre, post, replace, pretail, posttail, replacetail = getdisc(current)
+ pre, post, replace, pretail, posttail, replacetail = getdisc(current,true)
if replace then
local current = replacetail
while current do
diff --git a/tex/context/interface/common/i-en-xml.xml b/tex/context/interface/common/i-en-xml.xml
deleted file mode 100644
index 363364e08..000000000
--- a/tex/context/interface/common/i-en-xml.xml
+++ /dev/null
@@ -1,738 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<cd:interface file="lxml-ini.mkiv">
-
- <!-- some common definitions -->
-
- <cd:define name="xml-node">
- <cd:keywords delimiters="braces"><cd:constant type="cd:node"/></keywords>
- </cd:define>
-
- <cd:define name="xml-path">
- <cd:keywords delimiters="braces"><cd:constant type="cd:path"/></keywords>
- </cd:define>
-
- <cd:define name="xml-node-path">
- <cd:keywords delimiters="braces"><cd:constant type="cd:node"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:lpath"/></keywords>
- </cd:define>
-
- <cd:define name="xml-true">
- <cd:keywords delimiters="braces"><cd:constant type="cd:true"/></keywords>
- </cd:define>
-
- <cd:define name="xml-true-false">
- <cd:keywords delimiters="braces"><cd:constant type="cd:true"/></cd:keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:false"/></cd:keywords>
- </cd:define>
-
- <!-- the definitions themselves -->
-
- <!-- cd:sequence><cd:string value="xmlmain"/></cd:sequence -->
-
- <cd:command name="xmlmain">
- <cd:arguments>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlflush">
- <cd:arguments><cd:resolve name="xml-node"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmltext">
- <cd:arguments><cd:resolve name="xml-node-path"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmlpure">
- <cd:arguments><cd:resolve name="xml-node-path"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmlflushtext">
- <cd:arguments><cd:resolve name="xml-node"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmlflushpure">
- <cd:arguments><cd:resolve name="xml-node"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmlnonspace">
- <cd:arguments><cd:resolve name="xml-node-path"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmlflushspacewise">
- <cd:arguments><cd:resolve name="xml-node"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmlflushlinewise">
- <cd:arguments><cd:resolve name="xml-node"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmlall">
- <cd:arguments><cd:resolve name="xml-node-path"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmllastmatch" />
-
- <cd:command name="xmlfirst">
- <cd:arguments><cd:resolve name="xml-node-path"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmllast">
- <cd:arguments><cd:resolve name="xml-node-path"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmlcontext">
- <cd:arguments><cd:resolve name="xml-node-path"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmlflushcontext">
- <cd:arguments><cd:resolve name="xml-node"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmlshow">
- <cd:arguments><cd:resolve name="xml-node"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmlinfo">
- <cd:arguments><cd:resolve name="xml-node"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmlfilter">
- <cd:arguments><cd:resolve name="xml-node-path"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmlstrip">
- <cd:arguments><cd:resolve name="xml-node-path"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmlstripped">
- <cd:arguments><cd:resolve name="xml-node-path"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmlstripnolines">
- <cd:arguments><cd:resolve name="xml-node-path"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmlstrippednolines">
- <cd:arguments><cd:resolve name="xml-node-path"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmlposition">
- <cd:arguments>
- <cd:resolve name="xml-node-path"/>
- <cd:keywords delimiters="braces"><cd:constant type="cd:number"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlelement">
- <cd:arguments>
- <cd:resolve name="xml-node"/>
- <cd:keywords delimiters="braces"><cd:constant type="cd:number"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlpos">
- <cd:arguments>
- <cd:resolve name="xml-node"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlsnippet">
- <cd:arguments>
- <cd:resolve name="xml-node"/>
- <cd:keywords delimiters="braces"><cd:constant type="cd:number"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlconcat">
- <cd:arguments>
- <cd:resolve name="xml-node-path"/>
- <cd:keywords delimiters="braces"><cd:constant type="cd:text"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlconcatrange">
- <cd:arguments>
- <cd:resolve name="xml-node-path"/>
- <cd:keywords delimiters="braces"><cd:constant type="cd:text"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:first"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:last"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlcommand">
- <cd:arguments>
- <cd:resolve name="xml-node-path"/>
- <cd:keywords delimiters="braces"><cd:constant type="cd:xmlsetup"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlinlineverbatim">
- <cd:arguments><cd:resolve name="xml-node"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmlinlineverbatim" type="environment">
- <cd:arguments>
- <cd:keywords>
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmldisplayverbatim">
- <cd:arguments><cd:resolve name="xml-node"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmldisplayverbatim" type="environment">
- <cd:arguments>
- <cd:keywords>
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlverbatim">
- <cd:arguments><cd:resolve name="xml-node"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmlprettyprint">
- <cd:arguments>
- <cd:resolve name="xml-node"/>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlloadfile">
- <cd:arguments>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:file"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:xmlsetup"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlloadbuffer">
- <cd:arguments>
- <cd:keywords delimiters="braces"><cd:constant type="cd:buffer"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:xmlsetup"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlloaddata">
- <cd:arguments>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:text"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:xmlsetup"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlloadonly">
- <cd:arguments>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:file"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:xmlsetup"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlprocessfile">
- <cd:arguments>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:file"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:xmlsetup"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlprocessbuffer">
- <cd:arguments>
- <cd:keywords delimiters="braces"><cd:constant type="cd:buffer"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:xmlsetup"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlprocessdata">
- <cd:arguments>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:text"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:xmlsetup"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlinclude">
- <cd:arguments>
- <cd:resolve name="xml-node-path"/>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlname">
- <cd:arguments><cd:resolve name="xml-node"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmlpath">
- <cd:arguments><cd:resolve name="xml-node"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmlnamespace">
- <cd:arguments><cd:resolve name="xml-node"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmltag">
- <cd:arguments><cd:resolve name="xml-node"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmlcount">
- <cd:arguments><cd:resolve name="xml-node"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmlatt">
- <cd:arguments>
- <cd:resolve name="xml-node"/>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlattdef">
- <cd:arguments>
- <cd:resolve name="xml-node"/>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:text"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlrefatt">
- <cd:arguments>
- <cd:resolve name="xml-node"/>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmllastatt" />
-
- <cd:command name="xmlattribute">
- <cd:arguments>
- <cd:resolve name="xml-node-path"/>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlattributedef">
- <cd:arguments>
- <cd:resolve name="xml-node-path"/>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:text"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlchainatt">
- <cd:arguments>
- <cd:resolve name="xml-node"/>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlchainattdef">
- <cd:arguments>
- <cd:resolve name="xml-node"/>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:text"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmldirectives">
- <cd:arguments><cd:resolve name="xml-node"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmldirectivesbefore">
- <cd:arguments><cd:resolve name="xml-node"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmldirectivesafter">
- <cd:arguments><cd:resolve name="xml-node"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmlinstalldirective">
- <cd:arguments><cd:resolve name="name"/></cd:arguments>
- <cd:arguments><cd:resolve name="name"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmlsetup">
- <cd:arguments>
- <cd:resolve name="xml-node"/>
- <cd:keywords delimiters="braces"><cd:constant type="cd:setup"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlsetsetup">
- <cd:arguments>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:lpath"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:setup"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlremovesetup">
- <cd:arguments>
- <cd:keywords delimiters="braces"><cd:constant type="cd:setup"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlremovedocumentsetup">
- <cd:arguments>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:setup"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlflushdocumentsetups">
- <cd:arguments>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:setup"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlresetsetups">
- <cd:arguments>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlresetdocumentsetups">
- <cd:arguments>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlprependsetup">
- <cd:arguments>
- <cd:keywords delimiters="braces"><cd:constant type="cd:setup"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlappendsetup">
- <cd:arguments>
- <cd:keywords delimiters="braces"><cd:constant type="cd:setup"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlbeforesetup">
- <cd:arguments>
- <cd:keywords delimiters="braces"><cd:constant type="cd:setup"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:setup"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlaftersetup">
- <cd:arguments>
- <cd:keywords delimiters="braces"><cd:constant type="cd:setup"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:setup"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlprependdocumentsetup">
- <cd:arguments>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:setup"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlappenddocumentsetup">
- <cd:arguments>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:setup"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlbeforedocumentsetup">
- <cd:arguments>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:setup"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:setup"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlafterdocumentsetup">
- <cd:arguments>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:setup"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:setup"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlregisteredsetups">
- </cd:command>
-
- <cd:command name="xmlregistereddocumentsetups">
- <cd:arguments>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:setup"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlsetfunction">
- <cd:arguments>
- <cd:resolve name="xml-node-path"/>
- <cd:keywords delimiters="braces"><cd:constant type="cd:luafunction"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmldoif">
- <cd:arguments>
- <cd:resolve name="xml-node-path"/>
- <cd:resolve name="xml-true"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmldoifnot">
- <cd:arguments>
- <cd:resolve name="xml-node-path"/>
- <cd:resolve name="xml-true"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmldoifelse">
- <cd:arguments>
- <cd:resolve name="xml-node-path"/>
- <cd:resolve name="xml-true-false"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmldoiftext">
- <cd:arguments>
- <cd:resolve name="xml-node-path"/>
- <cd:resolve name="xml-true"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmldoifnottext">
- <cd:arguments>
- <cd:resolve name="xml-node-path"/>
- <cd:resolve name="xml-true"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmldoifelsetext">
- <cd:arguments>
- <cd:resolve name="xml-node-path"/>
- <cd:resolve name="xml-true-false"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmldoifselfempty">
- <cd:arguments>
- <cd:resolve name="xml-node"/>
- <cd:resolve name="xml-true"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmldoifnotselfempty">
- <cd:arguments>
- <cd:resolve name="xml-node"/>
- <cd:resolve name="xml-true"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmldoifelseselfempty">
- <cd:arguments>
- <cd:resolve name="xml-node"/>
- <cd:resolve name="xml-true-false"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmldoifelseempty">
- <cd:arguments>
- <cd:resolve name="xml-node-path"/>
- <cd:resolve name="xml-true-false"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlregisterns">
- <cd:arguments>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:url"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlregisterns">
- <cd:arguments>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlremapname">
- <cd:arguments>
- <cd:resolve name="xml-node-path"/>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlremapnamespace">
- <cd:arguments>
- <cd:resolve name="xml-node"/>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlchecknamespace">
- <cd:arguments>
- <cd:resolve name="xml-node"/>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlmapvalue">
- <cd:arguments>
- <cd:keywords delimiters="braces"><cd:constant type="cd:category"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:text"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlvalue">
- <cd:arguments>
- <cd:keywords delimiters="braces"><cd:constant type="cd:category"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:text"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmldoifelsevalue">
- <cd:arguments>
- <cd:keywords delimiters="braces"><cd:constant type="cd:category"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- <cd:resolve name="xml-true-false"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlloaddirectives">
- <cd:arguments>
- <cd:keywords delimiters="braces"><cd:constant type="cd:file"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlsave">
- <cd:arguments>
- <cd:resolve name="xml-node"/>
- <cd:keywords delimiters="braces"><cd:constant type="cd:file"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmltofile">
- <cd:arguments>
- <cd:resolve name="xml-node-path"/>
- <cd:keywords delimiters="braces"><cd:constant type="cd:file"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmltobuffer">
- <cd:arguments>
- <cd:resolve name="xml-node-path"/>
- <cd:keywords delimiters="braces"><cd:constant type="cd:buffer"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmltobufferverbose">
- <cd:arguments>
- <cd:resolve name="xml-node-path"/>
- <cd:keywords delimiters="braces"><cd:constant type="cd:buffer"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <!-- not public cq. might disappear
-
- <cd:command name="xmltoparameters">
- <cd:arguments>
- <cd:resolve name="xml-node-path"/>
- <cd:keywords delimiters="braces"><cd:constant type="cd:buffer"/></keywords>
- </cd:arguments>
- </cd:command>
-
- -->
-
- <cd:command name="xmladdindex">
- <cd:arguments><cd:resolve name="xml-node"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmlinclusion">
- <cd:arguments><cd:resolve name="xml-node"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmlinclusions">
- <cd:arguments><cd:resolve name="xml-node"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmlbadinclusions">
- <cd:arguments><cd:resolve name="xml-node"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmlraw">
- <cd:arguments><cd:resolve name="xml-node"/></cd:arguments>
- </cd:command>
-
- <cd:command name="xmlraw" type="environment" />
-
- <!-- injectors -->
-
- <cd:command name="xmlresetinjectors"/>
-
- <cd:command name="xmlsetinjectors">
- <cd:arguments>
- <cd:keywords list="yes"><cd:constant type="cd:name"/></cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlinjector">
- <cd:arguments>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmlapplyselectors">
- <cd:arguments>
- <cd:keywords delimiters="braces"><cd:constant type="cd:node"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <!-- entities -->
-
- <cd:command name="xmlsetentity">
- <cd:arguments>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:text"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmltexentity">
- <cd:arguments>
- <cd:keywords delimiters="braces"><cd:constant type="cd:name"/></keywords>
- <cd:keywords delimiters="braces"><cd:constant type="cd:text"/></keywords>
- </cd:arguments>
- </cd:command>
-
- <!-- general setup -->
-
- <cd:command name="setupxml">
- <cd:arguments>
- <cd:assignments list="yes">
- <cd:parameter name="default">
- <cd:constant type="hidden"/>
- <cd:constant type="none"/>
- <cd:constant type="text"/>
- </cd:parameter>
- <cd:parameter name="compress">
- <cd:constant type="yes"/>
- <cd:constant type="no"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="xmldefaulttotext">
- <cd:arguments><cd:resolve name="xml-node"/></cd:arguments>
- </cd:command>
-
-</cd:interface>
diff --git a/tex/context/interface/common/cont-cs.xml b/tex/context/interface/mkii/cont-cs.xml
index 8da159659..8da159659 100644
--- a/tex/context/interface/common/cont-cs.xml
+++ b/tex/context/interface/mkii/cont-cs.xml
diff --git a/tex/context/interface/common/cont-de.xml b/tex/context/interface/mkii/cont-de.xml
index b3f9289f8..b3f9289f8 100644
--- a/tex/context/interface/common/cont-de.xml
+++ b/tex/context/interface/mkii/cont-de.xml
diff --git a/tex/context/interface/common/cont-en.xml b/tex/context/interface/mkii/cont-en.xml
index 59a6bf6bb..59a6bf6bb 100644
--- a/tex/context/interface/common/cont-en.xml
+++ b/tex/context/interface/mkii/cont-en.xml
diff --git a/tex/context/interface/common/cont-fr.xml b/tex/context/interface/mkii/cont-fr.xml
index e8873393e..e8873393e 100644
--- a/tex/context/interface/common/cont-fr.xml
+++ b/tex/context/interface/mkii/cont-fr.xml
diff --git a/tex/context/interface/common/cont-it.xml b/tex/context/interface/mkii/cont-it.xml
index 9d69dc7b5..9d69dc7b5 100644
--- a/tex/context/interface/common/cont-it.xml
+++ b/tex/context/interface/mkii/cont-it.xml
diff --git a/tex/context/interface/common/cont-nl.xml b/tex/context/interface/mkii/cont-nl.xml
index ac955ae54..ac955ae54 100644
--- a/tex/context/interface/common/cont-nl.xml
+++ b/tex/context/interface/mkii/cont-nl.xml
diff --git a/tex/context/interface/common/cont-pe.xml b/tex/context/interface/mkii/cont-pe.xml
index d538f4cfb..d538f4cfb 100644
--- a/tex/context/interface/common/cont-pe.xml
+++ b/tex/context/interface/mkii/cont-pe.xml
diff --git a/tex/context/interface/common/cont-ro.xml b/tex/context/interface/mkii/cont-ro.xml
index 21ffea245..21ffea245 100644
--- a/tex/context/interface/common/cont-ro.xml
+++ b/tex/context/interface/mkii/cont-ro.xml
diff --git a/tex/context/interface/common/keys-cs.xml b/tex/context/interface/mkii/keys-cs.xml
index 01504609a..01504609a 100644
--- a/tex/context/interface/common/keys-cs.xml
+++ b/tex/context/interface/mkii/keys-cs.xml
diff --git a/tex/context/interface/common/keys-cz.xml b/tex/context/interface/mkii/keys-cz.xml
index ef47e5f3f..ef47e5f3f 100644
--- a/tex/context/interface/common/keys-cz.xml
+++ b/tex/context/interface/mkii/keys-cz.xml
diff --git a/tex/context/interface/common/keys-de.xml b/tex/context/interface/mkii/keys-de.xml
index 97a8ef09b..97a8ef09b 100644
--- a/tex/context/interface/common/keys-de.xml
+++ b/tex/context/interface/mkii/keys-de.xml
diff --git a/tex/context/interface/common/keys-en.xml b/tex/context/interface/mkii/keys-en.xml
index c22ee2820..c22ee2820 100644
--- a/tex/context/interface/common/keys-en.xml
+++ b/tex/context/interface/mkii/keys-en.xml
diff --git a/tex/context/interface/common/keys-fr.xml b/tex/context/interface/mkii/keys-fr.xml
index b03d55d6d..b03d55d6d 100644
--- a/tex/context/interface/common/keys-fr.xml
+++ b/tex/context/interface/mkii/keys-fr.xml
diff --git a/tex/context/interface/common/keys-it.xml b/tex/context/interface/mkii/keys-it.xml
index 622e73f4a..622e73f4a 100644
--- a/tex/context/interface/common/keys-it.xml
+++ b/tex/context/interface/mkii/keys-it.xml
diff --git a/tex/context/interface/common/keys-nl.xml b/tex/context/interface/mkii/keys-nl.xml
index 21040d080..21040d080 100644
--- a/tex/context/interface/common/keys-nl.xml
+++ b/tex/context/interface/mkii/keys-nl.xml
diff --git a/tex/context/interface/common/keys-pe.xml b/tex/context/interface/mkii/keys-pe.xml
index adf7c3e23..adf7c3e23 100644
--- a/tex/context/interface/common/keys-pe.xml
+++ b/tex/context/interface/mkii/keys-pe.xml
diff --git a/tex/context/interface/common/keys-ro.xml b/tex/context/interface/mkii/keys-ro.xml
index 474a2ade5..474a2ade5 100644
--- a/tex/context/interface/common/keys-ro.xml
+++ b/tex/context/interface/mkii/keys-ro.xml
diff --git a/tex/context/interface/mkiv/i-accent.xml b/tex/context/interface/mkiv/i-accent.xml
new file mode 100644
index 000000000..b947dfc12
--- /dev/null
+++ b/tex/context/interface/mkiv/i-accent.xml
@@ -0,0 +1,252 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="defineaccent" file="enco-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-character"/>
+ <cd:resolve name="string-character"/>
+ <cd:resolve name="string-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definecharacter" file="enco-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-character"/>
+ <cd:resolve name="string-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definecommand" file="enco-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-character"/>
+ <cd:resolve name="string-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definemathaccent" file="enco-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-name"/>
+ <cd:resolve name="string-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="buildmathaccent" file="enco-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-character"/>
+ <cd:resolve name="argument-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="buildtextaccent" file="enco-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-character"/>
+ <cd:resolve name="argument-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="buildtextmacron" file="enco-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="buildtextbottomdot" file="enco-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="buildtextcedilla" file="enco-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="buildtextognek" file="enco-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="buildtextbottomcomma" file="enco-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="d" file="enco-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="buildtextgrave" file="enco-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="acute" file="enco-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="grave" file="enco-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ddot" file="enco-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tilde" file="enco-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="bar" file="enco-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="breve" file="enco-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="check" file="enco-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="hat" file="enco-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="vec" file="enco-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dot" file="enco-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="AA" file="enco-ini.mkiv"/>
+
+ <cd:command name="aa" file="enco-ini.mkiv"/>
+
+ <cd:command name="AE" file="enco-ini.mkiv"/>
+
+ <cd:command name="ae" file="enco-ini.mkiv"/>
+
+ <cd:command name="CC" file="enco-ini.mkiv"/>
+
+ <cd:command name="cc" file="enco-ini.mkiv"/>
+
+ <cd:command name="L" file="enco-ini.mkiv"/>
+
+ <cd:command name="l" file="enco-ini.mkiv"/>
+
+ <cd:command name="O" file="enco-ini.mkiv"/>
+
+ <cd:command name="o" file="enco-ini.mkiv"/>
+
+ <cd:command name="OE" file="enco-ini.mkiv"/>
+
+ <cd:command name="oe" file="enco-ini.mkiv"/>
+
+ <cd:command name="SZ" file="enco-ini.mkiv"/>
+
+ <cd:command name="sz" file="enco-ini.mkiv"/>
+
+ <cd:command name="SS" file="enco-ini.mkiv"/>
+
+ <cd:command name="IJ" file="enco-ini.mkiv"/>
+
+ <cd:command name="ij" file="enco-ini.mkiv"/>
+
+ <cd:command name="i" file="enco-ini.mkiv"/>
+
+ <cd:command name="j" file="enco-ini.mkiv"/>
+
+ <cd:command name="eszett" file="enco-ini.mkiv"/>
+
+ <cd:command name="Eszett" file="enco-ini.mkiv"/>
+
+ <cd:command name="Ssharp" file="enco-ini.mkiv"/>
+
+ <cd:command name="lslash" file="enco-ini.mkiv"/>
+
+ <cd:command name="Lslash" file="enco-ini.mkiv"/>
+
+ <cd:command name="dslash" file="enco-ini.mkiv"/>
+
+ <cd:command name="Dslash" file="enco-ini.mkiv"/>
+
+ <cd:command name="oslash" file="enco-ini.mkiv"/>
+
+ <cd:command name="Oslash" file="enco-ini.mkiv"/>
+
+ <cd:command name="dcroat" file="enco-ini.mkiv"/>
+
+ <cd:command name="Dcroat" file="enco-ini.mkiv"/>
+
+ <cd:command name="kcedilla" file="enco-ini.mkiv"/>
+
+ <cd:command name="Kcedilla" file="enco-ini.mkiv"/>
+
+ <cd:command name="lcedilla" file="enco-ini.mkiv"/>
+
+ <cd:command name="Lcedilla" file="enco-ini.mkiv"/>
+
+ <cd:command name="ncedilla" file="enco-ini.mkiv"/>
+
+ <cd:command name="Ncedilla" file="enco-ini.mkiv"/>
+
+ <cd:command name="rcedilla" file="enco-ini.mkiv"/>
+
+ <cd:command name="Rcedilla" file="enco-ini.mkiv"/>
+
+ <cd:command name="aumlaut" file="enco-ini.mkiv"/>
+
+ <cd:command name="Aumlaut" file="enco-ini.mkiv"/>
+
+ <cd:command name="eumlaut" file="enco-ini.mkiv"/>
+
+ <cd:command name="Eumlaut" file="enco-ini.mkiv"/>
+
+ <cd:command name="iumlaut" file="enco-ini.mkiv"/>
+
+ <cd:command name="Iumlaut" file="enco-ini.mkiv"/>
+
+ <cd:command name="oumlaut" file="enco-ini.mkiv"/>
+
+ <cd:command name="Oumlaut" file="enco-ini.mkiv"/>
+
+ <cd:command name="uumlaut" file="enco-ini.mkiv"/>
+
+ <cd:command name="Uumlaut" file="enco-ini.mkiv"/>
+
+ -->
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-align.xml b/tex/context/interface/mkiv/i-align.xml
new file mode 100644
index 000000000..aa94b0d4c
--- /dev/null
+++ b/tex/context/interface/mkiv/i-align.xml
@@ -0,0 +1,273 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setupalign" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="broad"/>
+ <cd:constant type="wide"/>
+ <cd:constant type="bottom" default="yes"/>
+ <cd:constant type="height"/>
+ <cd:constant type="line"/>
+ <cd:constant type="high"/>
+ <cd:constant type="low"/>
+ <cd:constant type="lohi"/>
+ <cd:constant type="flushright"/>
+ <cd:constant type="flushleft"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="width" default="yes"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="reset"/>
+ <cd:constant type="inner"/>
+ <cd:constant type="outer"/>
+ <cd:constant type="flushinner"/>
+ <cd:constant type="flushouter"/>
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="center"/>
+ <cd:constant type="disable"/>
+ <cd:constant type="last"/>
+ <cd:constant type="paragraph"/>
+ <cd:constant type="lefttoright"/>
+ <cd:constant type="righttoleft"/>
+ <cd:constant type="l2r"/>
+ <cd:constant type="r2l"/>
+ <cd:constant type="table"/>
+ <cd:constant type="lesshyphenation"/>
+ <cd:constant type="morehyphenation"/>
+ <cd:constant type="hanging"/>
+ <cd:constant type="nothanging"/>
+ <cd:constant type="hz"/>
+ <cd:constant type="fullhz"/>
+ <cd:constant type="nohz"/>
+ <cd:constant type="hyphenated"/>
+ <cd:constant type="nothyphenated"/>
+ <cd:constant type="tolerant"/>
+ <cd:constant type="verytolerant"/>
+ <cd:constant type="stretch"/>
+ <cd:constant type="extremestretch"/>
+ <cd:constant type="final"/>
+ <cd:constant type="2*final"/>
+ <cd:constant type="3*final"/>
+ <cd:constant type="4*final"/>
+ <!--
+ <cd:constant type="cd:name"/>
+ -->
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="usealignparameter" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="alignment" type="environment" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:inherit name="setupalign"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="linealignment" type="environment" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="left"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="right"/>
+ <cd:constant type="max"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="leftaligned" type="environment" file="spac-ali.mkiv"/>
+
+ <cd:command name="middlealigned" type="environment" file="spac-ali.mkiv"/>
+
+ <cd:command name="rightaligned" type="environment" file="spac-ali.mkiv"/>
+
+ <cd:command name="maxaligned" type="environment" file="spac-ali.mkiv"/>
+
+ <cd:command name="midaligned" type="environment" file="spac-ali.mkiv"/>
+
+ <cd:command name="centeraligned" type="environment" file="spac-ali.mkiv"/>
+
+ <cd:command name="leftaligned" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rightaligned" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="middlealigned" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="maxaligned" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="midaligned" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="centeraligned" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="alignedline" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-alignline"/>
+ <cd:resolve name="argument-alignline"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="wordright" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="right"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="simplealignedbox" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-alignsimple"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="simplealignedspreadbox" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-alignsimple"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="simplealignedboxplus" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-alignsimple"/>
+ <cd:resolve name="argument-text"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="simplereversealignedbox" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-alignsimple"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="simplereversealignedboxplus" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-alignsimple"/>
+ <cd:resolve name="argument-text"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="alignedbox" file="pack-box.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:resolve name="value-aligned"/>
+ </cd:keywords>
+ <cd:csname/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="aligned" file="pack-box.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:resolve name="value-aligned"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="lefttoright" file="spac-ali.mkiv"/>
+
+ <cd:command name="righttoleft" file="spac-ali.mkiv"/>
+
+ <cd:command name="raggedbottom" file="spac-ali.mkiv"/>
+
+ <cd:command name="alignbottom" file="spac-ali.mkiv"/>
+
+ <cd:command name="baselinebottom" file="spac-ali.mkiv"/>
+
+ <cd:command name="notragged" file="spac-ali.mkiv"/>
+
+ <cd:command name="raggedleft" file="spac-ali.mkiv"/>
+
+ <cd:command name="raggedcenter" file="spac-ali.mkiv"/>
+
+ <cd:command name="raggedright" file="spac-ali.mkiv"/>
+
+ <cd:command name="veryraggedleft" file="spac-ali.mkiv"/>
+
+ <cd:command name="veryraggedcenter" file="spac-ali.mkiv"/>
+
+ <cd:command name="veryraggedright" file="spac-ali.mkiv"/>
+
+ <cd:command name="raggedwidecenter" file="spac-ali.mkiv"/>
+
+ <cd:command name="centeredlastline" file="spac-ali.mkiv"/>
+
+ <cd:command name="ttraggedright" file="spac-ali.mkiv"/>
+
+ <cd:command name="forgetragged" file="spac-ali.mkiv"/>
+
+ <cd:command name="line" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="leftline" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rightline" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="centerline" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-anchor.xml b/tex/context/interface/mkiv/i-anchor.xml
new file mode 100644
index 000000000..342976a3d
--- /dev/null
+++ b/tex/context/interface/mkiv/i-anchor.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="defineanchor" file="pack-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplayer"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplayer"/>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="anchor" file="pack-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplayer"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplayer"/>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-attachment.xml b/tex/context/interface/mkiv/i-attachment.xml
new file mode 100644
index 000000000..6aadc0304
--- /dev/null
+++ b/tex/context/interface/mkiv/i-attachment.xml
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="defineattachment" file="scrn-wid.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupattachment"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupattachment" file="scrn-wid.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="title">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="subtitle">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="author">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="file">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="name">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="buffer">
+ <cd:constant type="cd:buffer"/>
+ </cd:parameter>
+ <cd:parameter name="state">
+ <cd:constant type="start" default="yes"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:constant type="normal" default="yes"/>
+ <cd:constant type="hidden"/>
+ </cd:parameter>
+ <cd:parameter name="symbol">
+ <cd:constant type="Graph"/>
+ <cd:constant type="Paperclip"/>
+ <cd:constant type="Pushpin"/>
+ <cd:constant type="Default"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="fit"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="fit"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="depth">
+ <cd:constant type="fit"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="textlayer">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="leftedge"/>
+ <cd:constant type="rightedge"/>
+ <cd:constant type="inmargin"/>
+ <cd:constant type="leftmargin"/>
+ <cd:constant type="rightmargin"/>
+ <cd:constant type="text" default="yes"/>
+ <cd:constant type="high"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="setupattachments" file="scrn-wid.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupattachment"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="registerattachment" file="scrn-wid.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupattachment"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="attachment" generated="yes" variant="generated" file="scrn-wid.mkvi">
+ <cd:sequence>
+ <cd:variable value="attachment"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupattachment"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="attachment" type="environment" generated="yes" variant="generated" file="scrn-wid.mkvi">
+ <cd:sequence>
+ <cd:variable value="attachment"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupattachment"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placeattachments" file="scrn-wid.mkvi"/>
+
+ <cd:command name="attachment" file="scrn-wid.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupattachment"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="attachment" type="environment" file="scrn-wid.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupattachment"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-attribute.xml b/tex/context/interface/mkiv/i-attribute.xml
new file mode 100644
index 000000000..eb699b99e
--- /dev/null
+++ b/tex/context/interface/mkiv/i-attribute.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="pushattribute" file="attr-ini.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="popattribute" file="attr-ini.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installattributestack" file="attr-ini.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="defineattribute" file="attr-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="local" default="yes"/>
+ <cd:constant type="global"/>
+ <cd:constant type="public" default="yes"/>
+ <cd:constant type="private"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definesystemattribute" file="attr-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="local" default="yes"/>
+ <cd:constant type="global"/>
+ <cd:constant type="public"/>
+ <cd:constant type="private" default="yes"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="newattribute" file="attr-ini.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dosetattribute" file="attr-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doresetattribute" file="attr-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dogetattribute" file="attr-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dogetattributeid" file="attr-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetallattributes" file="attr-ini.mkiv"/>
+
+ <cd:command name="savecurrentattributes" file="attr-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="restorecurrentattributes" file="attr-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showattributes" file="attr-ini.mkiv"/>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-backend.xml b/tex/context/interface/mkiv/i-backend.xml
new file mode 100644
index 000000000..ff9a628cb
--- /dev/null
+++ b/tex/context/interface/mkiv/i-backend.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setupbackend" file="back-ini.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="export">
+ <cd:constant type="yes"/>
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="xhtml">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="file">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="intent">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="space">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="xmpfile">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="format">
+ <cd:constant type="version"/>
+ <cd:constant type="default"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="level">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="option">
+ <cd:constant type="always"/>
+ <cd:constant type="never"/>
+ </cd:parameter>
+ <cd:parameter name="profile">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-background.xml b/tex/context/interface/mkiv/i-background.xml
new file mode 100644
index 000000000..400e01454
--- /dev/null
+++ b/tex/context/interface/mkiv/i-background.xml
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definebackground" file="pack-bck.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupbackground"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupbackground" file="pack-bck.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="leftoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rightoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="topoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="bottomoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="background" type="environment" generated="yes" variant="generated" file="pack-bck.mkvi">
+ <cd:sequence>
+ <cd:variable value="background"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupbackground"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="background" type="environment" file="pack-bck.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupbackground"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="background" generated="yes" variant="generated" file="pack-bck.mkvi">
+ <cd:sequence>
+ <cd:variable value="background"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="background" file="pack-bck.mkvi">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="backgroundline" file="pack-bck.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-color"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupbackgrounds" variant="1" file="page-bck.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="top"/>
+ <cd:constant type="header"/>
+ <cd:constant type="text"/>
+ <cd:constant type="footer"/>
+ <cd:constant type="bottom"/>
+ </cd:keywords>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="leftedge"/>
+ <cd:constant type="leftmargin"/>
+ <cd:constant type="text"/>
+ <cd:constant type="rightmargin"/>
+ <cd:constant type="rightedge"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupbackgrounds" variant="2" file="page-bck.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="paper"/>
+ <cd:constant type="page"/>
+ <cd:constant type="leftpage"/>
+ <cd:constant type="rightpage"/>
+ <cd:constant type="text"/>
+ <cd:constant type="hidden"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start" default="yes"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="background" type="environment" begin="push" end="pop" file="page-bck.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsesomebackground" file="page-bck.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifsomebackgroundelse" file="page-bck.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifsomebackground" file="page-bck.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-bar.xml b/tex/context/interface/mkiv/i-bar.xml
new file mode 100644
index 000000000..3f339b9a0
--- /dev/null
+++ b/tex/context/interface/mkiv/i-bar.xml
@@ -0,0 +1,205 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definebar" file="node-rul.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupbar"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupbar" file="node-rul.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="continue">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ <cd:constant type="all"/>
+ </cd:parameter>
+ <cd:parameter name="unit">
+ <cd:constant type="ex" default="yes"/>
+ <cd:constant type="em"/>
+ <cd:constant type="pt"/>
+ <cd:constant type="in"/>
+ <cd:constant type="cm"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="sp"/>
+ <cd:constant type="bp"/>
+ <cd:constant type="pc"/>
+ <cd:constant type="dd"/>
+ <cd:constant type="cc"/>
+ <cd:constant type="nc"/>
+ </cd:parameter>
+ <cd:parameter name="order">
+ <cd:constant type="foreground" default="yes"/>
+ <cd:constant type="background"/>
+ </cd:parameter>
+ <cd:parameter name="rulethickness">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="dy">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="max">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="foregroundstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="foregroundcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="mp">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="setupbars" file="node-rul.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupbar"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="bar" generated="yes" variant="generated" file="node-rul.mkiv">
+ <cd:sequence>
+ <cd:variable value="bar"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="bar" type="environment" file="node-rul.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setbar" file="node-rul.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="directsetbar" file="node-rul.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="bar" type="environment" begin="push" end="pop" file="node-rul.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="overbar" file="node-rul.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="underbar" file="node-rul.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="overstrike" file="node-rul.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="understrike" file="node-rul.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="overbars" file="node-rul.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="underbars" file="node-rul.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="overstrikes" file="node-rul.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="understrikes" file="node-rul.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="underrandom" file="node-rul.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="underrandoms" file="node-rul.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="underdash" file="node-rul.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="underdashes" file="node-rul.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="underdot" file="node-rul.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="underdots" file="node-rul.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-blackrule.xml b/tex/context/interface/mkiv/i-blackrule.xml
new file mode 100644
index 000000000..1db99b9f4
--- /dev/null
+++ b/tex/context/interface/mkiv/i-blackrule.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setupblackrules" file="pack-mrl.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="width">
+ <cd:constant type="max"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="max"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="depth">
+ <cd:constant type="max"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="a" default="yes"/>
+ <cd:constant type="b"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="blackrule" file="pack-mrl.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupblackrules"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="blackrules" file="pack-mrl.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupblackrules"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="vl" file="pack-mrl.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-number-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="hl" file="pack-mrl.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-number-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="somekindoftab" file="tabl-mis.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="alternative">
+ <cd:constant type="horizontal"/>
+ <cd:constant type="vertical" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="m">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-bleed.xml b/tex/context/interface/mkiv/i-bleed.xml
new file mode 100644
index 000000000..15a2fe5f7
--- /dev/null
+++ b/tex/context/interface/mkiv/i-bleed.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setupbleeding" file="pack-box.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="t"/>
+ <cd:constant type="b"/>
+ <cd:constant type="l" default="yes"/>
+ <cd:constant type="r"/>
+ <cd:constant type="bl"/>
+ <cd:constant type="lb"/>
+ <cd:constant type="br"/>
+ <cd:constant type="rb"/>
+ <cd:constant type="tl"/>
+ <cd:constant type="lt"/>
+ <cd:constant type="tr"/>
+ <cd:constant type="rt"/>
+ </cd:parameter>
+ <cd:parameter name="stretch">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="page">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="bleed" file="pack-box.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupbleeding"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="bleedwidth" file="pack-box.mkiv"/>
+
+ <cd:command name="bleedheight" file="pack-box.mkiv"/>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-block.xml b/tex/context/interface/mkiv/i-block.xml
new file mode 100644
index 000000000..980b5b435
--- /dev/null
+++ b/tex/context/interface/mkiv/i-block.xml
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="defineblock" file="strc-blk.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupblock"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupblock" file="strc-blk.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inner">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="block" type="environment" generated="yes" variant="generated" begin="begin" end="end" file="strc-blk.mkiv">
+ <cd:sequence>
+ <cd:variable value="block"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="hideblocks" file="strc-blk.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list"/>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="keepblocks" file="strc-blk.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list"/>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="useblocks" file="strc-blk.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list"/>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ </cd:keywords>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="criterium">
+ <cd:constant type="text" default="yes"/>
+ <cd:constant type="cd:section"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="processblocks" file="strc-blk.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list"/>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ </cd:keywords>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="criterium">
+ <cd:constant type="text" default="yes"/>
+ <cd:constant type="cd:section"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="selectblocks" file="strc-blk.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list"/>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ </cd:keywords>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="criterium">
+ <cd:constant type="text" default="yes"/>
+ <cd:constant type="cd:section"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-bookmark.xml b/tex/context/interface/mkiv/i-bookmark.xml
new file mode 100644
index 000000000..5b7aec9a8
--- /dev/null
+++ b/tex/context/interface/mkiv/i-bookmark.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setupbookmark" file="strc-bkm.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="force">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="number">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="numberseparatorset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="numberconversionset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="numberstarter">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="numberstopper">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="numbersegments">
+ <cd:resolve name="value-prefixsegments"/>
+ </cd:parameter>
+ <cd:parameter name="sectionblock">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="setupbookmarks" file="strc-bkm.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupbookmark"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="bookmark" file="strc-bkm.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:section"/>
+ <cd:constant type="cd:list"/>
+ </cd:keywords>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placebookmarks" file="src-bkm.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:section"/>
+ <cd:constant type="cd:list"/>
+ </cd:keywords>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:section"/>
+ <cd:constant type="cd:list"/>
+ </cd:keywords>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupbookmark"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-boxes.xml b/tex/context/interface/mkiv/i-boxes.xml
new file mode 100644
index 000000000..a9eeb96ae
--- /dev/null
+++ b/tex/context/interface/mkiv/i-boxes.xml
@@ -0,0 +1,982 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="doiftext" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsetext" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doiftextelse" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dowithnextbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ <cd:csname/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dowithnextboxcs" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:csname/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="nextboxwd" file="supp-box.mkiv"/>
+
+ <cd:command name="nextboxht" file="supp-box.mkiv"/>
+
+ <cd:command name="nextboxdp" file="supp-box.mkiv"/>
+
+ <cd:command name="nextboxhtdp" file="supp-box.mkiv"/>
+
+ <cd:command name="flushnextbox" file="supp-box.mkiv"/>
+
+ <cd:command name="nextbox" file="supp-box.mkiv"/>
+
+ <cd:command name="nextdepth" file="supp-box.mkiv"/>
+
+ <cd:command name="dowithnextboxcontent" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-command"/>
+ <cd:csname/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dowithnextboxcontentcs" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:csname/>
+ <cd:csname/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rlap" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="llap" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="clap" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tlap" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="blap" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="reshapebox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="shapebox" type="environment" begin="beginof" end="endof" file="supp-box.mkiv"/>
+
+ <cd:command name="flushshapebox" file="supp-box.mkiv"/>
+
+ <cd:command name="innerflushshapebox" file="supp-box.mkiv"/>
+
+ <cd:command name="shapedhbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="processtokens" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doboundtext" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="limitatetext" variant="1" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:dimension" prefix="cd:sign"/>
+ </cd:keywords>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="limitatetext" variant="2" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:keywords delimiters="braces" list="yes">
+ <cd:constant type="cd:dimension" prefix="cd:sign"/>
+ </cd:keywords>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="limtatefirstline" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="processisolatedchars" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="processisolatedwords" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="applytocharacters" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="applytowords" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="applytosplitstringchar" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="applytosplitstringword" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="applytosplitstringline" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="applytosplitstringcharspaced" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="applytosplitstringwordspaced" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="applytosplitstringlinespaced" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="sbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="inlinedbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="struttedbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="topskippedbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="centeredbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="centerednextbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="centerbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setrigidcolumnhsize" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setrigidcolumnbalance" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-box"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="vboxtohbox" type="environment" file="supp-box.mkiv"/>
+
+ <cd:command name="vboxtohboxseparator" type="environment" file="supp-box.mkiv"/>
+
+ <cd:command name="convertvboxtohbox" file="supp-box.mkiv"/>
+
+ <cd:command name="hboxestohbox" type="environment" file="supp-box.mkiv"/>
+
+ <cd:command name="unhhbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-box"/>
+ <cd:delimiter name="with"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="hhbox" file="supp-box.mkiv"/>
+
+ -->
+
+ <cd:command name="hboxofvbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-box"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifcontent" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-command"/>
+ <cd:csname/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="overlay" type="environment" file="supp-box.mkiv"/>
+
+ <cd:command name="fakebox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-box"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="lbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="cbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ltop" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ctop" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rtop" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="bbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="lhbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mhbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rhbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="lefthbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="midhbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="righthbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="boxofsize" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:keywords delimiters="none" list="yes" optional="yes">
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="limitatelines" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fittopbaselinegrid" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="boxcursor" file="supp-box.mkiv"/>
+
+ <cd:command name="placedbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rightbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="leftbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="topbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="bottombox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="lefttopbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="righttopbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="leftbottombox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rightbottombox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="topleftbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="toprightbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="bottomleftbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="bottomrightbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="middlebox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="baselinemiddlebox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="baselineleftbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="baselinerightbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="lrtbbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="toplinebox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setstackbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="initializeboxstack" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="savebox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="restorebox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="foundbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsebox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifboxelse" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="localpushbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-box"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="localpopbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-box"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="globalpushbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-box"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="globalpopbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-box"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="removedepth" file="supp-box.mkiv"/>
+
+ <cd:command name="obeydepth" file="supp-box.mkiv"/>
+
+ <cd:command name="undepthed" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="removebottomthings" file="supp-box.mkiv"/>
+
+ <cd:command name="removelastskip" file="supp-box.mkiv"/>
+
+ <cd:command name="makestrutofbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-box"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="raisebox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dimension"/>
+ <cd:csname/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="lowerbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dimension"/>
+ <cd:csname/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="halfwaybox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="depthonlybox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="naturalhbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="naturalvbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="naturalvtop" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="naturalvcenter" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="naturalhpack" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="naturalvpack" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="frozenhbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setboxllx" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-box"/>
+ <cd:resolve name="argument-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setboxlly" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-box"/>
+ <cd:resolve name="argument-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="gsetboxllx" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-box"/>
+ <cd:resolve name="argument-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="gsetboxlly" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-box"/>
+ <cd:resolve name="argument-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getboxllx" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-box"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getboxlly" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-box"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="directgetboxllx" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-box"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="directgetboxlly" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-box"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="shownextbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="spreadhbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-box"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="minimalhbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="nodetostring" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getnaturaldimensions" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-box"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="lastnaturalboxwd" file="supp-box.mkiv"/>
+
+ <cd:command name="lastnaturalboxht" file="supp-box.mkiv"/>
+
+ <cd:command name="lastnaturalboxdp" file="supp-box.mkiv"/>
+
+ <cd:command name="naturalwd" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-box"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelserighttoleftinbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-box"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifrighttoleftinboxelse" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-box"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="righttolefthbox" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="lefttorighthbox" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="righttoleftvbox" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="lefttorightvbox" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="righttoleftvtop" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="lefttorightvtop" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="autodirhbox" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="autodirvbox" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="autodirvtop" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="leftorrighthbox" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="leftorrightvbox" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="leftorrightvtop" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ibox" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="obox" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definehbox" file="spac-ali.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="hbox" generated="yes" variant="generated" file="spac-ali.mkiv">
+ <cd:sequence>
+ <cd:string value="hbox"/>
+ <cd:variable value="box"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-buffer.xml b/tex/context/interface/mkiv/i-buffer.xml
new file mode 100644
index 000000000..ad1ffd519
--- /dev/null
+++ b/tex/context/interface/mkiv/i-buffer.xml
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="doifelsebuffer" file="buff-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-buffer"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifbufferelse" file="buff-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-buffer"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetbuffer" file="buff-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-buffer"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="buffer" type="environment" file="buff-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="grabbufferdata" file="buff-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-category-optional"/>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="grabbufferdatadirect" file="buff-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="buffer" type="environment" begin="set" end="end" file="buff-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupbuffer" file="buff-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-buffer-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definebuffer" file="buff-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-buffer-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupbuffer"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getbuffer" file="buff-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-buffer-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getdefinedbuffer" file="buff-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-buffer"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="inlinebuffer" file="buff-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-buffer-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="buffer" type="environment" generated="yes" variant="generated" file="buff-ini.mkiv">
+ <cd:sequence>
+ <cd:variable value="buffer"/>
+ </cd:sequence>
+ </cd:command>
+
+ <cd:command name="getbuffer" generated="yes" variant="generated" file="buff-ini.mkiv">
+ <cd:sequence>
+ <cd:string value="get"/>
+ <cd:variable value="buffer"/>
+ </cd:sequence>
+ </cd:command>
+
+ <cd:command name="hiding" type="environment" file="buff-ini.mkiv"/>
+
+ <cd:command name="processtexbuffer" file="buff-ini.mkiv">
+ <cd:sequence>
+ <cd:string value="processTEXbuffer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-buffer-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="savebuffer" variant="1" file="buff-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-buffer-list"/>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="savebuffer" variant="2" file="buff-ini.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="list">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="file">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="prefix">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ctxluabuffer" file="buff-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-buffer-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mkvibuffer" file="buff-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-buffer-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getbufferdata" file="buff-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-buffer-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="typebuffer" file="buff-ver.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-buffer-list-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptyping"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="typebuffer" generated="yes" variant="generated" file="buff-ver.mkiv">
+ <cd:sequence>
+ <cd:string value="type"/>
+ <cd:variable value="buffer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptyping"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="typedefinedbuffer" file="buff-ver.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-buffer"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptyping"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-button.xml b/tex/context/interface/mkiv/i-button.xml
new file mode 100644
index 000000000..1f6dfd5bf
--- /dev/null
+++ b/tex/context/interface/mkiv/i-button.xml
@@ -0,0 +1,187 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definebutton" file="scrn-but.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupbutton"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupbutton" file="scrn-but.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start" default="yes"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="samepage">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="empty"/>
+ <cd:constant type="none"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="default"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="contrastcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="hidden"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="setupbuttons" file="scrn-but.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupbutton"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="button" generated="yes" variant="generated" file="scrn-but.mkvi">
+ <cd:sequence>
+ <cd:variable value="button"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupbutton"/>
+ </cd:assignments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="button" file="scrn-but.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupbutton"/>
+ </cd:assignments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="overlaybutton" variant="1" file="scrn-but.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="overlaybutton" variant="2" file="scrn-but.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPmenubuttons" file="scrn-but.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="overlayrollbutton" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definepushbutton" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupfieldcontentframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pushbutton" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definepushsymbol" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords>
+ <cd:constant type="n"/>
+ <cd:constant type="r"/>
+ <cd:constant type="d"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="psh" variant="button" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="\"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="psh" type="environment" variant="button" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rollbutton" variant="1" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupinteractionmenu"/>
+ </cd:assignments>
+ <cd:resolve name="string-text"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rollbutton" variant="2" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupbutton"/>
+ </cd:assignments>
+ <cd:resolve name="string-text"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rob" variant="button" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="\"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rob" variant="button" type="environment" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-capitals.xml b/tex/context/interface/mkiv/i-capitals.xml
new file mode 100644
index 000000000..bfbb6bb2b
--- /dev/null
+++ b/tex/context/interface/mkiv/i-capitals.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definecapitals" file="typo-cap.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupcapitals"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupcapitals" file="typo-cap.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="title">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="sc">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setcharactercasing" file="typo-cap.mkiv">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="reset"/>
+ <cd:constant type="WORD"/>
+ <cd:constant type="word"/>
+ <cd:constant type="Word"/>
+ <cd:constant type="Words"/>
+ <cd:constant type="capital"/>
+ <cd:constant type="Capital"/>
+ <cd:constant type="none"/>
+ <cd:constant type="random"/>
+ <cd:constant type="mixed"/>
+ <cd:constant type="camel"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="Cap"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="WORD" file="typo-cap.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="word" file="typo-cap.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="Word" file="typo-cap.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="Words" file="typo-cap.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="camel" file="typo-cap.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="WORDS" file="typo-cap.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="words" file="typo-cap.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pseudosmallcapped" file="typo-cap.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pseudoSmallcapped" file="typo-cap.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pseudoSmallCapped" file="typo-cap.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pseudoMixedCapped" file="typo-cap.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="realsmallcapped" file="typo-cap.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="realSmallcapped" file="typo-cap.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="realSmallCapped" file="typo-cap.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="notsmallcapped" file="typo-cap.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="smallcapped" file="typo-cap.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="Smallcapped" file="typo-cap.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="SmallCapped" file="typo-cap.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="autocap" file="typo-cap.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mixedcaps" file="typo-cap.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="kap" file="typo-cap.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="Caps" file="typo-cap.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="uppercased" file="typo-cap.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="lowercased" file="typo-cap.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="randomizetext" file="typo-cap.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="randomized" type="environment" file="typo-cap.mkiv"/>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-catcodes.xml b/tex/context/interface/mkiv/i-catcodes.xml
new file mode 100644
index 000000000..7c3f649d5
--- /dev/null
+++ b/tex/context/interface/mkiv/i-catcodes.xml
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="texcode" type="environment" file="catc-ctx.mkiv"/>
+
+ <cd:command name="contextcode" type="environment" file="catc-ctx.mkiv"/>
+
+ <cd:command name="contextdefinitioncode" type="environment" file="catc-ctx.mkiv"/>
+
+ <cd:command name="protect" type="environment" begin="un" end="​" file="catc-def.mkiv"/><!-- end="zero width space" -->
+
+ <cd:command name="newcatcodetable" file="catc-ini.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="catcodetable" type="environment" file="catc-ini.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="extendedcatcodetable" type="environment" file="catc-ini.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installactivecharacter" file="catc-act.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="defineactivecharacter" file="catc-act.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-character"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installanddefineactivecharacter" file="catc-act.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-character"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="makecharacteractive" file="catc-act.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="permitcircumflexescape" file="catc-ini.mkiv"/>
+
+ <cd:command name="permitcaretescape" file="catc-ini.mkiv"/>
+
+ <cd:command name="letcatcodecommand" file="catc-ini.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:keywords delimiters="none">
+ <cd:constant type="cd:character"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="defcatcodecommand" file="catc-ini.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:keywords delimiters="none">
+ <cd:constant type="cd:character"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="uedcatcodecommand" file="catc-ini.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:keywords delimiters="none">
+ <cd:constant type="cd:character"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="catcodetable" type="environment" begin="push" end="pop" file="catc-ini.mkiv"/>
+
+ <cd:command name="restorecatcodes" file="catc-ini.mkiv"/>
+
+ <cd:command name="setcatcodetable" file="catc-ini.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tracecatcodetables" file="catc-ini.mkiv"/>
+
+ <cd:command name="catcodetablename" file="catc-ini.mkiv"/>
+
+ <cd:command name="rescan" file="catc-sym.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rescanwithsetup" file="catc-sym.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-character.xml b/tex/context/interface/mkiv/i-character.xml
new file mode 100644
index 000000000..47bc714fa
--- /dev/null
+++ b/tex/context/interface/mkiv/i-character.xml
@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="letteropenbrace" file="catc-sym.mkiv"/>
+
+ <cd:command name="letterclosebrace" file="catc-sym.mkiv"/>
+
+ <cd:command name="letterampersand" file="catc-sym.mkiv"/>
+
+ <cd:command name="letterless" file="catc-sym.mkiv"/>
+
+ <cd:command name="lettermore" file="catc-sym.mkiv"/>
+
+ <cd:command name="letterhash" file="catc-sym.mkiv"/>
+
+ <cd:command name="letterdoublequote" file="catc-sym.mkiv"/>
+
+ <cd:command name="lettersinglequote" file="catc-sym.mkiv"/>
+
+ <cd:command name="letterdollar" file="catc-sym.mkiv"/>
+
+ <cd:command name="letterpercent" file="catc-sym.mkiv"/>
+
+ <cd:command name="letterhat" file="catc-sym.mkiv"/>
+
+ <cd:command name="letterunderscore" file="catc-sym.mkiv"/>
+
+ <cd:command name="letterbar" file="catc-sym.mkiv"/>
+
+ <cd:command name="lettertilde" file="catc-sym.mkiv"/>
+
+ <cd:command name="letterbackslash" file="catc-sym.mkiv"/>
+
+ <cd:command name="letterslash" file="catc-sym.mkiv"/>
+
+ <cd:command name="letterquestionmark" file="catc-sym.mkiv"/>
+
+ <cd:command name="letterat" file="catc-sym.mkiv"/>
+
+ <cd:command name="lettercolon" file="catc-sym.mkiv"/>
+
+ <cd:command name="letterescape" file="catc-sym.mkiv"/>
+
+ <cd:command name="letterbgroup" file="catc-sym.mkiv"/>
+
+ <cd:command name="letteregroup" file="catc-sym.mkiv"/>
+
+ <cd:command name="letterleftbrace" file="catc-sym.mkiv"/>
+
+ <cd:command name="letterrightbrace" file="catc-sym.mkiv"/>
+
+ <cd:command name="letterexclamationmark" file="catc-sym.mkiv"/>
+
+ <cd:command name="utfchar" file="char-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="safechar" file="char-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="checkedchar" file="char-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="textormathchar" file="char-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="chardescription" file="char-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="percent" file="enco-ini.mkiv"/>
+
+ <cd:command name="procent" file="enco-ini.mkiv"/>
+
+ <cd:command name="ampersand" file="enco-ini.mkiv"/>
+
+ <cd:command name="dollar" file="enco-ini.mkiv"/>
+
+ <cd:command name="hash" file="enco-ini.mkiv"/>
+
+ <cd:command name="hyphen" file="enco-ini.mkiv"/>
+
+ <cd:command name="lowerleftsingleninequote" file="enco-ini.mkiv"/>
+
+ <cd:command name="lowerleftdoubleninequote" file="enco-ini.mkiv"/>
+
+ <cd:command name="lowerrightsingleninequote" file="enco-ini.mkiv"/>
+
+ <cd:command name="lowerrightdoubleninequote" file="enco-ini.mkiv"/>
+
+ <cd:command name="upperleftsingleninequote" file="enco-ini.mkiv"/>
+
+ <cd:command name="upperleftdoubleninequote" file="enco-ini.mkiv"/>
+
+ <cd:command name="upperrightsingleninequote" file="enco-ini.mkiv"/>
+
+ <cd:command name="upperrightdoubleninequote" file="enco-ini.mkiv"/>
+
+ <cd:command name="upperleftsinglesixquote" file="enco-ini.mkiv"/>
+
+ <cd:command name="upperleftdoublesixquote" file="enco-ini.mkiv"/>
+
+ <cd:command name="upperrightsinglesixquote" file="enco-ini.mkiv"/>
+
+ <cd:command name="upperrightdoublesixquote" file="enco-ini.mkiv"/>
+
+ <cd:command name="leftsubguillemot" file="enco-ini.mkiv"/>
+
+ <cd:command name="rightsubguillemot" file="enco-ini.mkiv"/>
+
+ <cd:command name="textcontrolspace" file="enco-ini.mkiv"/>
+
+ <cd:command name="textvisiblespace" file="enco-ini.mkiv"/>
+
+ <cd:command name="textminus" file="enco-ini.mkiv"/>
+
+ <cd:command name="textplus" file="enco-ini.mkiv"/>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-characteralign.xml b/tex/context/interface/mkiv/i-characteralign.xml
new file mode 100644
index 000000000..2ee8d0cd9
--- /dev/null
+++ b/tex/context/interface/mkiv/i-characteralign.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="singalcharacteralign" file="typo-tal.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setcharacteralign" file="typo-tal.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:text" prefix="number" method="apply"/>
+ <cd:constant type="cd:text" prefix="text" method="apply"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetcharacteralign" file="typo-tal.mkiv"/>
+
+ <cd:command name="alignmentcharacter" file="typo-tal.mkiv"/>
+
+ <cd:command name="characteralign" type="environment" file="typo-tal.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:text" prefix="number" method="apply"/>
+ <cd:constant type="cd:text" prefix="text" method="apply"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="checkcharacteralign" file="typo-tal.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-characterspacing.xml b/tex/context/interface/mkiv/i-characterspacing.xml
new file mode 100644
index 000000000..cb54030c7
--- /dev/null
+++ b/tex/context/interface/mkiv/i-characterspacing.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definecharacterspacing" file="typo-spa.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupcharacterspacing" file="typo-spa.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-number"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="left">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="0"/>
+ <cd:constant type="1"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setcharacterspacing" file="typo-spa.mkiv">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="reset"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetcharacterspacing" file="typo-spa.mkiv"/>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-characterstripping.xml b/tex/context/interface/mkiv/i-characterstripping.xml
new file mode 100644
index 000000000..cd89ac065
--- /dev/null
+++ b/tex/context/interface/mkiv/i-characterstripping.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setcharacterstripping" file="typo-rep.mkiv">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="reset"/>
+ <cd:constant type="1"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetcharacterstripping" file="typo-rep.mkiv"/>
+
+ <cd:command name="forcecharacterstripping" file="typo-rep.mkiv"/>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-charwidth.xml b/tex/context/interface/mkiv/i-charwidth.xml
new file mode 100644
index 000000000..63240327a
--- /dev/null
+++ b/tex/context/interface/mkiv/i-charwidth.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="charwidthlanguage" file="typo-lan.mkiv"/>
+
+ <cd:command name="averagecharwidth" file="typo-lan.mkiv"/>
+
+ <cd:command name="languagecharwidth" file="typo-lan.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-language"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-chemical.xml b/tex/context/interface/mkiv/i-chemical.xml
new file mode 100644
index 000000000..d300f9008
--- /dev/null
+++ b/tex/context/interface/mkiv/i-chemical.xml
@@ -0,0 +1,255 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="molecule" file="chem-ini.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="chem" file="chem-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupchemical" file="chem-str.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="strut">
+ <cd:inherit name="value-strut"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="fit" default="yes"/>
+ <cd:constant type="none"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="fit" default="yes"/>
+ <cd:constant type="none"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="fit" default="yes"/>
+ <cd:constant type="none"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="fit" default="yes"/>
+ <cd:constant type="none"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="top">
+ <cd:constant type="fit" default="yes"/>
+ <cd:constant type="none"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="bottom">
+ <cd:constant type="fit" default="yes"/>
+ <cd:constant type="none"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="scale">
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ <cd:constant type="normal" default="yes"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="rotation">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="symalign">
+ <cd:constant type="auto" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="axis">
+ <cd:constant type="on"/>
+ <cd:constant type="off" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="framecolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="rulethickness">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="unit">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="factor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="frame">
+ <cd:constant type="on"/>
+ <cd:constant type="off"/>
+ </cd:parameter>
+ <cd:parameter name="rulecolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="bodyfont">
+ <cd:inherit name="setupbodyfont"/>
+ </cd:parameter>
+ <cd:parameter name="size">
+ <cd:constant type="small"/>
+ <cd:constant type="medium" default="yes"/>
+ <cd:constant type="big"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="setupchemicals" file="chem-str.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupchemical"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="setupchemicalframed" file="chem-str.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definechemical" file="chem-str.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definechemicalsymbol" file="chem-str.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="chemicalsymbol" file="chem-str.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="chemicaltext" file="chem-str.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="chemical" type="environment" file="chem-str.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupchemical"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="structurechemical" type="environment" file="chem-str.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupchemical"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="chemical" file="chem-str.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:resolve name="keyword-text-list"/>
+ <cd:resolve name="keyword-text-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="structurechemical" file="chem-str.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:resolve name="keyword-text-list"/>
+ <cd:resolve name="keyword-text-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="chemicaltoptext" file="chem-str.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="chemicalbottext" file="chem-str.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="chemicalmidtext" file="chem-str.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="toptext" file="chem-str.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="bottext" file="chem-str.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="midtext" file="chem-str.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="definechemicals" file="chem-str.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupchemical"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-cleaning.xml b/tex/context/interface/mkiv/i-cleaning.xml
new file mode 100644
index 000000000..d982a5dd5
--- /dev/null
+++ b/tex/context/interface/mkiv/i-cleaning.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="punctuation" type="environment" begin="push" end="pop" file="typo-chr.mkiv"/>
+
+ <cd:command name="removepunctuation" file="typo-chr.mkiv"/>
+
+ <cd:command name="markcontent" file="typo-chr.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="reset"/>
+ <cd:constant type="all" default="yes"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="markedcontent" type="environment" file="typo-chr.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="reset"/>
+ <cd:constant type="all" default="yes"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="removemarkedcontent" file="typo-chr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setcharactercleaning" file="typo-cln.mkiv">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="reset"/>
+ <cd:constant type="1"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-clipping.xml b/tex/context/interface/mkiv/i-clipping.xml
new file mode 100644
index 000000000..aa152a85b
--- /dev/null
+++ b/tex/context/interface/mkiv/i-clipping.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setupclipping" file="grph-trf.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start" default="yes"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="x">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="sx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="sy">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="leftoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rightoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="topoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="bottomoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="mp">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="clip" file="grph-trf.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupclipping"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-collector.xml b/tex/context/interface/mkiv/i-collector.xml
new file mode 100644
index 000000000..dab49f14c
--- /dev/null
+++ b/tex/context/interface/mkiv/i-collector.xml
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definecollector" file="pack-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupcollector"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupcollector" file="pack-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="rotation">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="inner"/>
+ <cd:constant type="outer"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="corner">
+ <cd:constant type="left" default="yes"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="right"/>
+ <cd:constant type="top" default="yes"/>
+ <cd:constant type="bottom"/>
+ </cd:parameter>
+ <cd:parameter name="x">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:resolve name="value-aligned"/>
+ </cd:parameter>
+ <cd:parameter name="state">
+ <cd:constant type="start" default="yes"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setcollector" file="pack-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupcollector"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetcollector" file="pack-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="flushcollector" file="pack-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="composedcollector" file="pack-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="adaptcollector" file="pack-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupcollector"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="collectedtext" file="pack-box.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupcollector"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ <cd:resolve name="argument-text"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-color.xml b/tex/context/interface/mkiv/i-color.xml
new file mode 100644
index 000000000..3f98914e4
--- /dev/null
+++ b/tex/context/interface/mkiv/i-color.xml
@@ -0,0 +1,597 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="negatecolorbox" file="colo-ext.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-box"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="colorintent" type="environment" file="colo-ext.mkiv">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="knockout"/>
+ <cd:constant type="overprint"/>
+ <cd:constant type="none"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="overprint" type="environment" file="colo-ext.mkiv"/>
+
+ <cd:command name="knockout" type="environment" file="colo-ext.mkiv"/>
+
+ <cd:command name="textcolorintent" type="environment" file="colo-ext.mkiv"/>
+
+ <cd:command name="definecolorgroup" file="colo-grp.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords optional="yes">
+ <cd:constant type="gray"/>
+ <cd:constant type="rgb" default="yes"/>
+ <cd:constant type="cmyk"/>
+ <cd:constant type="spot"/>
+ </cd:keywords>
+ <cd:triplet list="yes"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definecolor" variant="1" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="r">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="g">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="b">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="c">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="m">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="k">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="h">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="s">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="v">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="x">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="a">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="none"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="multiply"/>
+ <cd:constant type="screen"/>
+ <cd:constant type="overlay"/>
+ <cd:constant type="softlight"/>
+ <cd:constant type="hardlight"/>
+ <cd:constant type="colordodge"/>
+ <cd:constant type="colorburn"/>
+ <cd:constant type="darken"/>
+ <cd:constant type="lighten"/>
+ <cd:constant type="difference"/>
+ <cd:constant type="exclusion"/>
+ <cd:constant type="hue"/>
+ <cd:constant type="saturation"/>
+ <cd:constant type="color"/>
+ <cd:constant type="luminosity"/>
+ </cd:parameter>
+ <cd:parameter name="t">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definecolor" variant="2" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-color"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="defineglobalcolor" variant="1" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="definecolor"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="defineglobalcolor" variant="2" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-color"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definenamedcolor" variant="1" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="definecolor"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definenamedcolor" variant="2" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-color"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="defineprocesscolor" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-color-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="definecolor"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definespotcolor" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-color"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="a">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="none"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="multiply"/>
+ <cd:constant type="screen"/>
+ <cd:constant type="overlay"/>
+ <cd:constant type="softlight"/>
+ <cd:constant type="hardlight"/>
+ <cd:constant type="colordodge"/>
+ <cd:constant type="colorburn"/>
+ <cd:constant type="darken"/>
+ <cd:constant type="lighten"/>
+ <cd:constant type="difference"/>
+ <cd:constant type="exclusion"/>
+ <cd:constant type="hue"/>
+ <cd:constant type="saturation"/>
+ <cd:constant type="color"/>
+ <cd:constant type="luminosity"/>
+ </cd:parameter>
+ <cd:parameter name="t">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="e">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="p">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definemultitonecolor" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="cd:color">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ <cd:assignments list="yes">
+ <cd:inherit name="definecolor"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="definespotcolor"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definetransparency" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="switchtocolor" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-color"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="color" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-color"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="graycolor" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-color"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="colored" variant="1" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-color"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="colored" variant="2" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="definecolor"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="color" type="environment" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-color"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="directcolor" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-color"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="directcolored" variant="1" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-color"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="directcolored" variant="2" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="definecolor"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="currentcolor" type="environment" file="colo-ini.mkiv"/>
+
+ <cd:command name="colorset" type="environment" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="usecolors" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupcolor" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupcolors" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start" default="yes"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="spot">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="expansion">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="factor">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="rgb">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="cmyk">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="conversion">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="always"/>
+ </cd:parameter>
+ <cd:parameter name="pagecolormodel">
+ <cd:constant type="auto"/>
+ <cd:constant type="none" default="yes"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="textcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="intent">
+ <cd:constant type="overprint"/>
+ <cd:constant type="knockout"/>
+ <cd:constant type="none" default="yes"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="color" type="environment" begin="push" end="pop" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-color"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="color" type="environment" begin="save" end="restore" file="colo-ini.mkiv"/>
+
+ <cd:command name="definepalet" variant="1" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="cd:name">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definepalet" variant="2" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getpaletsize" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="paletsize" file="colo-ini.mkiv"/>
+
+ <cd:command name="setuppalet" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setcolormodell" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="black"/>
+ <cd:constant type="bw"/>
+ <cd:constant type="gray"/>
+ <cd:constant type="rgb"/>
+ <cd:constant type="cmyk"/>
+ <cd:constant type="all" default="yes"/>
+ <cd:constant type="none"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="protectedcolors" type="environment" file="colo-ini.mkiv"/>
+
+ <cd:command name="defineintermediatecolor" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:color"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="a">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="t">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsecolor" file="color-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-color"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifcolorelse" file="color-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-color"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifcolor" file="color-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-color"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="textcolor" type="environment" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-color"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPcolor" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-color"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPcoloronly" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-color"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPtransparency" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-color"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPoptions" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-color"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="colorvalue" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-color"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="grayvalue" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-color"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="colorcomponents" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-color"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="transparencycomponents" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-color"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="processcolorcomponents" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-color"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelseblack" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-color"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifblackelse" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-color"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsedrawingblack" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifdrawingblackelse" file="colo-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showcolorbar" file="colo-run.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-color"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showcolor" file="colo-run.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-color"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showcolorset" file="colo-run.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-color"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showcolorcomponents" file="colo-run.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-color"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showpalet" file="colo-run.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="horizontal" default="yes"/>
+ <cd:constant type="vertical"/>
+ <cd:constant type="number"/>
+ <cd:constant type="value"/>
+ <cd:constant type="name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="comparepalet" file="colo-run.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showcolorgroup" file="colo-run.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="horizontal" default="yes"/>
+ <cd:constant type="vertical"/>
+ <cd:constant type="number"/>
+ <cd:constant type="value"/>
+ <cd:constant type="name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="comparecolorgroup" file="colo-run.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-columns.xml b/tex/context/interface/mkiv/i-columns.xml
new file mode 100644
index 000000000..154d38072
--- /dev/null
+++ b/tex/context/interface/mkiv/i-columns.xml
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setupcolumns" file="page-mul.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="option">
+ <cd:constant type="background"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="direction">
+ <cd:constant type="left"/>
+ <cd:constant type="right" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="balance">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:constant type="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="tolerance">
+ <cd:constant type="setuptolerance"/>
+ </cd:parameter>
+ <cd:parameter name="blank">
+ <cd:inherit name="blank"/>
+ </cd:parameter>
+ <cd:parameter name="ntop">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="rule">
+ <cd:constant type="on"/>
+ <cd:constant type="off" default="yes"/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="columns" type="environment" file="page-mul.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupcolumns"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupcolumnspan" file="page-mul.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="columnspan" type="environment" file="page-mul.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupcolumnspan"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setsimplecolumnhsize" file="page-mul.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="lines">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="simplecolumns" type="environment" file="page-mul.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setsimplecolumnhsize"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-combination.xml b/tex/context/interface/mkiv/i-combination.xml
new file mode 100644
index 000000000..4e7ea2d52
--- /dev/null
+++ b/tex/context/interface/mkiv/i-combination.xml
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definecombination" file="pack-com.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupcombination"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupcombination" file="pack-com.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="fit"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="fit"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="left"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="right"/>
+ <cd:constant type="top"/>
+ <cd:constant type="bottom" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="label"/>
+ <cd:constant type="text" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:inherit name="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="continue">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="setupcombinations" file="pack-com.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupcombination"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="combination" type="environment" variant="1" file="pack-com.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:matrix"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="combination" type="environment" variant="2" file="pack-com.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupcombination"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="content" type="environment" variant="combination" file="pack-com.mkiv"/>
+
+ <cd:command name="caption" type="environment" variant="combination" file="pack-com.mkiv"/>
+
+ -->
+
+ <cd:command name="floatcombination" type="environment" variant="1" file="pack-com.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:matrix"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="floatcombination" type="environment" variant="2" file="pack-com.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupcombination"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-commandhandler.xml b/tex/context/interface/mkiv/i-commandhandler.xml
new file mode 100644
index 000000000..210690d3e
--- /dev/null
+++ b/tex/context/interface/mkiv/i-commandhandler.xml
@@ -0,0 +1,314 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="installparameterhandler" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installrootparameterhandler" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installparameterhashhandler" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installparametersethandler" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installstyleandcolorhandler" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installdefinehandler" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installsetuphandler" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installswitchsetuphandler" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installautosetuphandler" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installbasicparameterhandler" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installbasicautosetuphandler" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installcommandhandler" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installswitchcommandhandler" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installautocommandhandler" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installsimplecommandhandler" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installdirectparameterhandler" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installdirectsetuphandler" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installdirectparametersethandler" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installdirectstyleandcolorhandler" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installdirectcommandhandler" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installsetuponlycommandhandler" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="relateparameterhandlers" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installactionhandler" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installnamespace" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installcorenamespace" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definenamespace" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="name">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="parent">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ <cd:constant type="list"/>
+ </cd:parameter>
+ <cd:parameter name="setup">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ <cd:constant type="list"/>
+ </cd:parameter>
+ <cd:parameter name="set">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ <cd:constant type="list"/>
+ </cd:parameter>
+ <cd:parameter name="frame">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="listnamespaces" file="mult-aux.mkiv"/>
+
+ <cd:command name="showparentchain" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsecommandhandler" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifcommandhandlerelse" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifcommandhandler" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnotcommandhandler" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installdefinitionset" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installdefinitionsetmember" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installparentinjector" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installframedcommandhandler" file="pack-rul.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installframedautocommandhandler" file="pack-rul.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installsimpleframedcommandhandler" file="pack-rul.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-comment.xml b/tex/context/interface/mkiv/i-comment.xml
new file mode 100644
index 000000000..52d54398b
--- /dev/null
+++ b/tex/context/interface/mkiv/i-comment.xml
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definecomment" file="scrn-wid.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupcomment"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupcomment" file="scrn-wid.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start" default="yes"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:constant type="normal" default="yes"/>
+ <cd:constant type="hidden"/>
+ </cd:parameter>
+ <cd:parameter name="symbol">
+ <cd:constant type="Comment"/>
+ <cd:constant type="Help"/>
+ <cd:constant type="Insert"/>
+ <cd:constant type="Key"/>
+ <cd:constant type="Newparagraph"/>
+ <cd:constant type="Note"/>
+ <cd:constant type="Paragraph"/>
+ <cd:constant type="Default"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="fit"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="fit"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="depth">
+ <cd:constant type="fit"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="title">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="subtitle">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="author">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="option">
+ <cd:constant type="xml"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="textlayer">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="leftedge"/>
+ <cd:constant type="rightedge"/>
+ <cd:constant type="inmargin"/>
+ <cd:constant type="leftmargin"/>
+ <cd:constant type="rightmargin"/>
+ <cd:constant type="text"/>
+ <cd:constant type="high" default="yes"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="comment" generated="yes" variant="generated" file="scrn-wid.mkvi">
+ <cd:sequence>
+ <cd:variable value="comment"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-text-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupcomment"/>
+ </cd:assignments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="comment" type="environment" generated="yes" variant="generated" file="scrn-wid.mkvi">
+ <cd:sequence>
+ <cd:variable value="comment"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-text-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupcomment"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placecomments" file="scrn-wid.mkvi"/>
+
+ <cd:command name="comment" file="scrn-wid.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-text-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupcomment"/>
+ </cd:assignments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="comment" type="environment" file="scrn-wid.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-text-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupcomment"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-common-argument.xml b/tex/context/interface/mkiv/i-common-argument.xml
new file mode 100644
index 000000000..9e7429800
--- /dev/null
+++ b/tex/context/interface/mkiv/i-common-argument.xml
@@ -0,0 +1,497 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <!-- * -->
+ <!-- \... {...} -->
+ <!-- -->
+ <!-- * IDENTIFIER -->
+
+ <cd:define name="argument-name">
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="argument-name-optional">
+ <cd:keywords delimiters="braces" optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="argument-name-list">
+ <cd:keywords delimiters="braces" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="argument-name-list-optional">
+ <cd:keywords delimiters="braces" list="yes" optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... {...} -->
+ <!-- -->
+ <!-- * NUMBER -->
+
+ <cd:define name="argument-number">
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="argument-number-optional">
+ <cd:keywords delimiters="braces" optional="yes">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="argument-number-list">
+ <cd:keywords delimiters="braces" list="yes">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="argument-number-list-optional">
+ <cd:keywords delimiters="braces" list="yes" optional="yes">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... {...} -->
+ <!-- -->
+ <!-- * TEXT -->
+
+ <cd:define name="argument-text">
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="argument-text-optional">
+ <cd:keywords delimiters="braces" optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="argument-text-list">
+ <cd:keywords delimiters="braces" list="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="argument-text-list-optional">
+ <cd:keywords delimiters="braces" list="yes" optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... {...} -->
+ <!-- -->
+ <!-- * FILE -->
+
+ <cd:define name="argument-file">
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="argument-file-optional">
+ <cd:keywords delimiters="braces" optional="yes">
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="argument-file-list">
+ <cd:keywords delimiters="braces" list="yes">
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="argument-file-list-optional">
+ <cd:keywords delimiters="braces" list="yes" optional="yes">
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... {...} -->
+ <!-- -->
+ <!-- * DIMENSION -->
+
+ <cd:define name="argument-dimension">
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="argument-dimension-optional">
+ <cd:keywords delimiters="braces" optional="yes">
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="argument-dimension-list">
+ <cd:keywords delimiters="braces" list="yes">
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="argument-dimension-list-optional">
+ <cd:keywords delimiters="braces" list="yes" optional="yes">
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... {...} -->
+ <!-- -->
+ <!-- * DUMMY -->
+
+ <cd:define name="argument-dummy">
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="argument-dummy-optional">
+ <cd:keywords delimiters="braces" optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="argument-dummy-list">
+ <cd:keywords delimiters="braces" list="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="argument-dummy-list-optional">
+ <cd:keywords delimiters="braces" list="yes" optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... {...} -->
+ <!-- -->
+ <!-- * KEY -->
+
+ <cd:define name="argument-key">
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:key"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="argument-key-optional">
+ <cd:keywords delimiters="braces" optional="yes">
+ <cd:constant type="cd:key"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="argument-key-list">
+ <cd:keywords delimiters="braces" list="yes">
+ <cd:constant type="cd:key"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="argument-key-list-optional">
+ <cd:keywords delimiters="braces" list="yes" optional="yes">
+ <cd:constant type="cd:key"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... {...} -->
+ <!-- -->
+ <!-- * REFERENCE -->
+
+ <cd:define name="argument-reference">
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:reference"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="argument-reference-list">
+ <cd:keywords delimiters="braces" list="yes">
+ <cd:constant type="cd:reference"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... {...} -->
+ <!-- -->
+ <!-- * COMMAND -->
+
+ <cd:define name="argument-command">
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="argument-command-list">
+ <cd:keywords delimiters="braces" list="yes">
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... {...} -->
+ <!-- -->
+ <!-- * VALUE -->
+
+ <cd:define name="argument-value">
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:value"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... {...} -->
+ <!-- -->
+ <!-- * FONT -->
+
+ <cd:define name="argument-font">
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:font"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... {...} -->
+ <!-- -->
+ <!-- * COLOR -->
+
+ <cd:define name="argument-color">
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:color"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... {...} -->
+ <!-- -->
+ <!-- * NODE -->
+
+ <cd:define name="argument-node">
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:node"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... {...} -->
+ <!-- -->
+ <!-- * LPATH -->
+
+ <cd:define name="argument-lpath">
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:lpath"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... {...} -->
+ <!-- -->
+ <!-- * XMLSETUP -->
+
+ <cd:define name="argument-xmlsetup">
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:xmlsetup"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... {...} -->
+ <!-- -->
+ <!-- * SECTION -->
+
+ <cd:define name="argument-section">
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... {...} -->
+ <!-- -->
+ <!-- * LIST -->
+
+ <cd:define name="argument-list">
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:list"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... {...} -->
+ <!-- -->
+ <!-- * MARK -->
+
+ <cd:define name="argument-mark">
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:mark"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... {...} -->
+ <!-- -->
+ <!-- * LANGUAGE -->
+
+ <cd:define name="argument-language">
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:language"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... {...} -->
+ <!-- -->
+ <!-- * FIRST -->
+
+ <cd:define name="argument-first">
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:first"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... {...} -->
+ <!-- -->
+ <!-- * LAST -->
+
+ <cd:define name="argument-last">
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:last"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... {...} -->
+ <!-- -->
+ <!-- * BUFFER -->
+
+ <cd:define name="argument-buffer">
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:buffer"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... {...} -->
+ <!-- -->
+ <!-- * SETUP -->
+
+ <cd:define name="argument-setup">
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:setup"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... {...} -->
+ <!-- -->
+ <!-- * CATEGORY -->
+
+ <cd:define name="argument-category">
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:category"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... {...} -->
+ <!-- -->
+ <!-- * CHARACTER -->
+
+ <cd:define name="argument-character">
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:character"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... {...} -->
+ <!-- -->
+ <!-- * CSNAME -->
+
+ <cd:define name="argument-csname">
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:csname"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... {...} -->
+ <!-- -->
+ <!-- * TRUE -->
+
+ <cd:define name="argument-true">
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:true"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... {...} -->
+ <!-- -->
+ <!-- * FALSE -->
+
+ <cd:define name="argument-false">
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:false"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... {...} -->
+ <!-- -->
+ <!-- * ALIGNLINE -->
+
+ <cd:define name="argument-alignline">
+ <cd:keywords delimiters="braces">
+ <cd:resolve name="value-alignline"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... {...} -->
+ <!-- -->
+ <!-- * ALIGNSIMPLE -->
+
+ <cd:define name="argument-alignsimple">
+ <cd:keywords delimiters="braces">
+ <cd:resolve name="value-alignsimple"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... {...} -->
+ <!-- -->
+ <!-- * BTXFIELD -->
+
+ <cd:define name="argument-btxfield">
+ <cd:keywords delimiters="braces">
+ <cd:resolve name="value-btxfield"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... {...} -->
+ <!-- -->
+ <!-- * BTXAUTHOR -->
+
+ <cd:define name="argument-btxauthor">
+ <cd:keywords delimiters="braces">
+ <cd:resolve name="value-btxauthor"/>
+ </cd:keywords>
+ </cd:define>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-common-assignment.xml b/tex/context/interface/mkiv/i-common-assignment.xml
new file mode 100644
index 000000000..0f11d0137
--- /dev/null
+++ b/tex/context/interface/mkiv/i-common-assignment.xml
@@ -0,0 +1,338 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <!-- * -->
+ <!-- \... [..,.=.,..] -->
+ <!-- -->
+ <!-- * SECTIONDATA -->
+
+ <cd:define name="assignment-sectiondata-list">
+ <cd:assignments list="yes">
+ <cd:parameter name="title">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="bookmark">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="marking">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="list">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="reference">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="ownnumber">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:define>
+
+ <cd:define name="assignment-sectiondata-list-optional">
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="title">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="bookmark">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="marking">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="list">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="reference">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="ownnumber">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... [..,.=.,..] -->
+ <!-- -->
+ <!-- * FLOATDATA -->
+
+ <cd:define name="assignment-floatdata-list">
+ <cd:assignments list="yes">
+ <cd:parameter name="title">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="bookmark">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="marking">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="list">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:resolve name="value-floatlocation"/>
+ </cd:parameter>
+ <cd:parameter name="reference">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:define>
+
+ <cd:define name="assignment-floatdata-list-optional">
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="title">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="bookmark">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="marking">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="list">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:resolve name="value-floatlocation"/>
+ </cd:parameter>
+ <cd:parameter name="reference">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... [..,.=.,..] -->
+ <!-- -->
+ <!-- * REGISTERDATA -->
+
+ <cd:define name="assignment-registerdata-list">
+ <cd:assignments list="yes">
+ <cd:parameter name="label">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="keys">
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:text" prefix="cd:processor" method="apply"/>
+ </cd:parameter>
+ <cd:parameter name="entries">
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:text" prefix="cd:processor" method="apply"/>
+ </cd:parameter>
+ <cd:parameter name="keys:1">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="keys:2">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="keys:3">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="entries:1">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="entries:2">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="entries:3">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:define>
+
+ <cd:define name="assignment-registerdata-list-optional">
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="label">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="keys">
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:text" prefix="cd:processor" method="apply"/>
+ </cd:parameter>
+ <cd:parameter name="entries">
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:text" prefix="cd:processor" method="apply"/>
+ </cd:parameter>
+ <cd:parameter name="keys:1">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="keys:2">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="keys:3">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="entries:1">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="entries:2">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="entries:3">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... [..,.=.,..] -->
+ <!-- -->
+ <!-- * CONSTRUCTIONDATA -->
+
+ <cd:define name="assignment-constructiondata-list">
+ <cd:assignments list="yes">
+ <cd:parameter name="title">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="bookmark">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="list">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="reference">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:define>
+
+ <cd:define name="assignment-constructiondata-list-optional">
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="title">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="bookmark">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="list">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="reference">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... [..,.=.,..] -->
+ <!-- -->
+ <!-- * USERDATA -->
+
+ <cd:define name="assignment-userdata">
+ <cd:assignments>
+ <cd:parameter name="cd:key">
+ <cd:constant type="cd:value"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:define>
+
+ <cd:define name="assignment-userdata-optional">
+ <cd:assignments optional="yes">
+ <cd:parameter name="cd:key">
+ <cd:constant type="cd:value"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:define>
+
+ <cd:define name="assignment-userdata-list">
+ <cd:assignments list="yes">
+ <cd:parameter name="cd:key">
+ <cd:constant type="cd:value"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:define>
+
+ <cd:define name="assignment-userdata-list-optional">
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="cd:key">
+ <cd:constant type="cd:value"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... [..,.=.,..] -->
+ <!-- -->
+ <!-- * LABELDATA -->
+
+ <cd:define name="assignment-labeldata-list">
+ <cd:assignments list="yes">
+ <cd:parameter name="cd:key">
+ <cd:constant type="cd:key"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:define>
+
+ <cd:define name="assignment-labeldata-list-optional">
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="cd:key">
+ <cd:constant type="cd:key"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... [..,.=.,..] -->
+ <!-- -->
+ <!-- CITEDATA -->
+
+ <cd:define name="assignment-citedata-list">
+ <cd:assignments list="yes">
+ <cd:parameter name="reference">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:resolve name="value-btxalternative"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:inherit name="setupbtx"/>
+ </cd:assignments>
+ </cd:define>
+
+ <cd:define name="assignment-citedata-list-optional">
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="reference">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:resolve name="value-btxalternative"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:inherit name="setupbtx"/>
+ </cd:assignments>
+ </cd:define>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-common-definitions.xml b/tex/context/interface/mkiv/i-common-definitions.xml
new file mode 100644
index 000000000..1bb84efdc
--- /dev/null
+++ b/tex/context/interface/mkiv/i-common-definitions.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:interfacefile filename="i-common-argument.xml"/>
+ <cd:interfacefile filename="i-common-assignment.xml"/>
+ <cd:interfacefile filename="i-common-keyword.xml"/>
+ <cd:interfacefile filename="i-common-string.xml"/>
+ <cd:interfacefile filename="i-common-value.xml"/>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-common-keyword.xml b/tex/context/interface/mkiv/i-common-keyword.xml
new file mode 100644
index 000000000..15eed8628
--- /dev/null
+++ b/tex/context/interface/mkiv/i-common-keyword.xml
@@ -0,0 +1,704 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <!-- * -->
+ <!-- \... [...] -->
+ <!-- -->
+ <!-- * DIMENSION -->
+
+ <cd:define name="keyword-dimension">
+ <cd:keywords>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-dimension-optional">
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-dimension-list">
+ <cd:keywords list="yes">
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-dimension-list-optional">
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... [...] -->
+ <!-- -->
+ <!-- * NUMBER -->
+
+ <cd:define name="keyword-number">
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-number-optional">
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-number-list">
+ <cd:keywords list="yes">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-number-list-optional">
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... [...] -->
+ <!-- -->
+ <!-- * REFERENCE -->
+
+ <cd:define name="keyword-reference">
+ <cd:keywords>
+ <cd:constant type="cd:reference"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-reference-optional">
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:reference"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-reference-list">
+ <cd:keywords list="yes">
+ <cd:constant type="cd:reference"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-reference-list-optional">
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:reference"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... [...] -->
+ <!-- -->
+ <!-- * IDENTIFIER -->
+
+ <cd:define name="keyword-name">
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-name-optional">
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-name-list">
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-name-list-optional">
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... [...] -->
+ <!-- -->
+ <!-- * SECTION -->
+
+ <cd:define name="keyword-section">
+ <cd:keywords>
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-section-optional">
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-section-list">
+ <cd:keywords list="yes">
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-section-list-optional">
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... [...] -->
+ <!-- -->
+ <!-- * LANGUAGE -->
+
+ <cd:define name="keyword-language">
+ <cd:keywords>
+ <cd:constant type="cd:language"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-language-optional">
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:language"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-language-list">
+ <cd:keywords list="yes">
+ <cd:constant type="cd:language"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-language-list-optional">
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:language"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... [...] -->
+ <!-- -->
+ <!-- * LIST -->
+
+ <cd:define name="keyword-list">
+ <cd:keywords>
+ <cd:constant type="cd:list"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-list-optional">
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:list"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-list-list">
+ <cd:keywords list="yes">
+ <cd:constant type="cd:list"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-list-list-optional">
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:list"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... [...] -->
+ <!-- -->
+ <!-- * MARK -->
+
+ <cd:define name="keyword-mark">
+ <cd:keywords>
+ <cd:constant type="cd:mark"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-mark-optional">
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:mark"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-mark-list">
+ <cd:keywords list="yes">
+ <cd:constant type="cd:mark"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-mark-list-optional">
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:mark"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... [...] -->
+ <!-- -->
+ <!-- * SINGULAR -->
+
+ <cd:define name="keyword-singular">
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-singular-optional">
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-singular-list">
+ <cd:keywords list="yes">
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-singular-list-optional">
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... [...] -->
+ <!-- -->
+ <!-- * PLURAL -->
+
+ <cd:define name="keyword-plural">
+ <cd:keywords>
+ <cd:constant type="cd:plural"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-plural-optional">
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:plural"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-plural-list">
+ <cd:keywords list="yes">
+ <cd:constant type="cd:plural"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-plural-list-optional">
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:plural"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... [...] -->
+ <!-- -->
+ <!-- * COLOR -->
+
+ <cd:define name="keyword-color">
+ <cd:keywords>
+ <cd:constant type="cd:color"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-color-optional">
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:color"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-color-list">
+ <cd:keywords list="yes">
+ <cd:constant type="cd:color"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-color-list-optional">
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:color"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... [...] -->
+ <!-- -->
+ <!-- * TEXT -->
+
+ <cd:define name="keyword-text">
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-text-optional">
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-text-list">
+ <cd:keywords list="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-text-list-optional">
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... [...] -->
+ <!-- -->
+ <!-- * COMMAND -->
+
+ <cd:define name="keyword-command">
+ <cd:keywords>
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-command-optional">
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-command-list">
+ <cd:keywords list="yes">
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-command-list-optional">
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... [...] -->
+ <!-- -->
+ <!-- * BUFFER -->
+
+ <cd:define name="keyword-buffer">
+ <cd:keywords>
+ <cd:constant type="cd:buffer"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-buffer-optional">
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:buffer"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-buffer-list">
+ <cd:keywords list="yes">
+ <cd:constant type="cd:buffer"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-buffer-list-optional">
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:buffer"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... [...] -->
+ <!-- -->
+ <!-- * CATEGORY -->
+
+ <cd:define name="keyword-category">
+ <cd:keywords>
+ <cd:constant type="cd:category"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-category-optional">
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:category"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-category-list">
+ <cd:keywords list="yes">
+ <cd:constant type="cd:category"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-category-list-optional">
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:category"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... [...] -->
+ <!-- -->
+ <!-- * FILE -->
+
+ <cd:define name="keyword-file">
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-file-optional">
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-file-list">
+ <cd:keywords list="yes">
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-file-list-optional">
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... [...] -->
+ <!-- -->
+ <!-- * FONT -->
+
+ <cd:define name="keyword-font">
+ <cd:keywords>
+ <cd:constant type="cd:font"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-font-optional">
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:font"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-font-list">
+ <cd:keywords list="yes">
+ <cd:constant type="cd:font"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-font-list-optional">
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:font"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... [...] -->
+ <!-- -->
+ <!-- * CSNAME -->
+
+ <cd:define name="keyword-csname">
+ <cd:keywords>
+ <cd:constant type="cd:csname"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-csname-optional">
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:csname"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-csname-list">
+ <cd:keywords list="yes">
+ <cd:constant type="cd:csname"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-csname-list-optional">
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:csname"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... [...] -->
+ <!-- -->
+ <!-- * DUMMY -->
+
+ <cd:define name="keyword-dummy">
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-dummy-optional">
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-dummy-list">
+ <cd:keywords list="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-dummy-list-optional">
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... [...] -->
+ <!-- -->
+ <!-- * KEY -->
+
+ <cd:define name="keyword-key">
+ <cd:keywords>
+ <cd:constant type="cd:key"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-key-optional">
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:key"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-key-list">
+ <cd:keywords list="yes">
+ <cd:constant type="cd:key"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-key-list-optional">
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:key"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... [...] -->
+ <!-- -->
+ <!-- * URL -->
+
+ <cd:define name="keyword-url">
+ <cd:keywords>
+ <cd:constant type="cd:url"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-url-optional">
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:url"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-url-list">
+ <cd:keywords list="yes">
+ <cd:constant type="cd:url"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-url-list-optional">
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:url"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... [...] -->
+ <!-- -->
+ <!-- * TEMPLATE -->
+
+ <cd:define name="keyword-template">
+ <cd:keywords>
+ <cd:constant type="cd:template"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-template-optional">
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:template"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-template-list">
+ <cd:keywords list="yes">
+ <cd:constant type="cd:template"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-template-list-optional">
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:template"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... [...] -->
+ <!-- -->
+ <!-- * FLOATLOCATION -->
+
+ <cd:define name="keyword-floatlocation-list">
+ <cd:keywords list="yes">
+ <cd:resolve name="value-floatlocation"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-floatlocation-list-optional">
+ <cd:keywords list="yes" optional="yes">
+ <cd:resolve name="value-floatlocation"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... [...] -->
+ <!-- -->
+ <!-- * LAYOUTELEMENT -->
+
+ <cd:define name="keyword-layoutelement">
+ <cd:keywords>
+ <cd:constant type="date"/>
+ <cd:constant type="pagenumber"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-layoutelement-optional">
+ <cd:keywords optional="yes">
+ <cd:constant type="date"/>
+ <cd:constant type="pagenumber"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... [...] -->
+ <!-- -->
+ <!-- * BTXALTERNATIVE -->
+
+ <cd:define name="keyword-btxalternative">
+ <cd:keywords>
+ <cd:resolve name="value-btxalternative"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="keyword-btxalternative-optional">
+ <cd:keywords optional="yes">
+ <cd:resolve name="value-btxalternative"/>
+ </cd:keywords>
+ </cd:define>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-common-string.xml b/tex/context/interface/mkiv/i-common-string.xml
new file mode 100644
index 000000000..8e940e6f3
--- /dev/null
+++ b/tex/context/interface/mkiv/i-common-string.xml
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <!-- * -->
+ <!-- \... ... -->
+ <!-- -->
+ <!-- * TRUE -->
+
+ <cd:define name="string-true">
+ <cd:keywords delimiters="none">
+ <cd:constant type="cd:true"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... ... -->
+ <!-- -->
+ <!-- * FALSE -->
+
+ <cd:define name="string-false">
+ <cd:keywords delimiters="none">
+ <cd:constant type="cd:false"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... ... -->
+ <!-- -->
+ <!-- * IDENTIFIER -->
+
+ <cd:define name="string-name">
+ <cd:keywords delimiters="none">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... ... -->
+ <!-- -->
+ <!-- * TEXT -->
+
+ <cd:define name="string-text">
+ <cd:keywords delimiters="none">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... ... -->
+ <!-- -->
+ <!-- * CHARACTER -->
+
+ <cd:define name="string-character">
+ <cd:keywords delimiters="none">
+ <cd:constant type="cd:character"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... ... -->
+ <!-- -->
+ <!-- * NUMBER -->
+
+ <cd:define name="string-number">
+ <cd:keywords delimiters="none">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:define>
+
+ <cd:define name="string-number-optional">
+ <cd:keywords delimiters="none" optional="yes">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... ... -->
+ <!-- -->
+ <!-- * CONTENT -->
+
+ <cd:define name="string-content">
+ <cd:keywords delimiters="none">
+ <cd:constant type="cd:content"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... ... -->
+ <!-- -->
+ <!-- * COMMAND -->
+
+ <cd:define name="string-command">
+ <cd:keywords delimiters="none">
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... ... -->
+ <!-- -->
+ <!-- * FILE -->
+
+ <cd:define name="string-file">
+ <cd:keywords delimiters="none">
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... ... -->
+ <!-- -->
+ <!-- * FONT -->
+
+ <cd:define name="string-font">
+ <cd:keywords delimiters="none">
+ <cd:constant type="cd:font"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... ... -->
+ <!-- -->
+ <!-- * DIMENSION -->
+
+ <cd:define name="string-dimension">
+ <cd:keywords delimiters="none">
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... ... -->
+ <!-- -->
+ <!-- * BOX -->
+
+ <cd:define name="string-box">
+ <cd:keywords delimiters="none">
+ <cd:constant type="cd:csname"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:define>
+
+ <!-- * -->
+ <!-- \... ... -->
+ <!-- -->
+ <!-- * BOXOPTIONS -->
+
+ <cd:define name="string-boxoptions">
+ <cd:keywords delimiters="none" optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:define>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-common-value.xml b/tex/context/interface/mkiv/i-common-value.xml
new file mode 100644
index 000000000..f111292b8
--- /dev/null
+++ b/tex/context/interface/mkiv/i-common-value.xml
@@ -0,0 +1,546 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <!-- style = ... -->
+
+ <cd:define name="value-style">
+ <cd:constant type="cd:style"/>
+ <cd:constant type="cd:command"/>
+ </cd:define>
+
+ <!-- mathstyle = ... -->
+
+ <cd:define name="value-mathstyle">
+ <cd:constant type="display"/>
+ <cd:constant type="text"/>
+ <cd:constant type="script"/>
+ <cd:constant type="scriptscript"/>
+ <cd:constant type="cramped"/>
+ <cd:constant type="uncramped"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="packed"/>
+ <cd:constant type="small"/>
+ <cd:constant type="big"/>
+ </cd:define>
+
+ <!-- leftmargin = ... -->
+
+ <cd:define name="value-leftskip">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:define>
+
+ <!-- rightmargin = ... -->
+
+ <cd:define name="value-rightskip">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:define>
+
+ <!-- indentnext = ... -->
+
+ <cd:define name="value-indentnext">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="auto"/>
+ </cd:define>
+
+ <!-- limittext = ... -->
+
+ <cd:define name="value-limittext">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="cd:text"/>
+ </cd:define>
+
+ <!-- prefixsegments = ... -->
+
+ <cd:define name="value-prefixsegments">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="cd:number" prefix="cd:number" method="range"/>
+ <cd:constant type="*" prefix="cd:number" method="range"/>
+ <cd:constant type="all" prefix="cd:number" method="range"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="cd:section" prefix="cd:section" method="range"/>
+ <cd:constant type="*" prefix="cd:section" method="range"/>
+ <cd:constant type="all" prefix="cd:section" method="range"/>
+ </cd:define>
+
+ <!-- numbersegments = ... -->
+
+ <cd:define name="value-numbersegments">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="cd:number" prefix="cd:number" method="range"/>
+ <cd:constant type="*" prefix="cd:number" method="range"/>
+ <cd:constant type="all" prefix="cd:number" method="range"/>
+ </cd:define>
+
+ <!-- starter = ... -->
+
+ <cd:define name="value-starter">
+ <cd:constant type="cd:command"/>
+ <cd:constant type="cd:command" prefix="cd:processor" method="apply"/>
+ </cd:define>
+
+ <!-- stopper = ... -->
+
+ <cd:define name="value-stopper">
+ <cd:constant type="cd:command"/>
+ <cd:constant type="cd:command" prefix="cd:processor" method="apply"/>
+ </cd:define>
+
+ <!-- connector = ... -->
+
+ <cd:define name="value-connector">
+ <cd:constant type="cd:command"/>
+ <cd:constant type="cd:command" prefix="cd:processor" method="apply"/>
+ </cd:define>
+
+ <!-- textstate = ... -->
+
+ <cd:define name="value-textstate">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="high"/>
+ <cd:constant type="none"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="empty"/>
+ <cd:constant type="nomarking"/>
+ <cd:constant type="cd:name"/>
+ </cd:define>
+
+ <!-- pagebreak = ... -->
+
+ <cd:define name="value-pagebreak">
+ <cd:constant type="empty"/>
+ <cd:constant type="header"/>
+ <cd:constant type="footer"/>
+ <cd:constant type="dummy"/>
+ <cd:constant type="frame"/>
+ <cd:constant type="cd:number"/>
+ <cd:constant type="cd:number" prefix="+" method="none"/>
+ <cd:constant type="default"/>
+ <cd:constant type="reset"/>
+ <cd:constant type="disable"/>
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="makeup"/>
+ <cd:constant type="blank"/>
+ <cd:constant type="preference"/>
+ <cd:constant type="bigpreference"/>
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="even"/>
+ <cd:constant type="odd"/>
+ <cd:constant type="quadruple"/>
+ <cd:constant type="last"/>
+ <cd:constant type="lastpage"/>
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:define>
+
+ <!-- columnbreak = ... -->
+
+ <cd:define name="value-columnbreak">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="preference"/>
+ <cd:constant type="local"/>
+ <cd:constant type="force"/>
+ <cd:constant type="first"/>
+ <cd:constant type="last"/>
+ <cd:constant type="cd:number"/>
+ </cd:define>
+
+ <!-- alignline = ... -->
+
+ <cd:define name="value-alignline">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="flushleft"/>
+ <cd:constant type="flushright"/>
+ <cd:constant type="center"/>
+ <cd:constant type="max"/>
+ <cd:constant type="inner"/>
+ <cd:constant type="outer"/>
+ <cd:constant type="innermargin"/>
+ <cd:constant type="outermargin"/>
+ <cd:constant type="inneredge"/>
+ <cd:constant type="outeredge"/>
+ <cd:constant type="backspace"/>
+ <cd:constant type="cutspace"/>
+ <cd:constant type="leftmargin"/>
+ <cd:constant type="rightmargin"/>
+ <cd:constant type="leftedge"/>
+ <cd:constant type="rightedge"/>
+ </cd:define>
+
+ <!-- alignsimple = ... -->
+
+ <cd:define name="value-alignsimple">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="flushleft"/>
+ <cd:constant type="flushright"/>
+ <cd:constant type="inner"/>
+ <cd:constant type="outer"/>
+ </cd:define>
+
+ <!-- aligned = ... -->
+
+ <cd:define name="value-aligned">
+ <cd:constant type="left"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="right"/>
+ <cd:constant type="top"/>
+ <cd:constant type="bottom"/>
+ <cd:constant type="line"/>
+ <cd:constant type="l"/>
+ <cd:constant type="c"/>
+ <cd:constant type="r"/>
+ <cd:constant type="m"/>
+ <cd:constant type="t"/>
+ <cd:constant type="b"/>
+ <cd:constant type="g"/>
+ </cd:define>
+
+ <!-- floatlocation = ... -->
+
+ <cd:define name="value-floatlocation">
+ <cd:constant type="split"/>
+ <cd:constant type="always"/>
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="inner"/>
+ <cd:constant type="outer"/>
+ <cd:constant type="backspace"/>
+ <cd:constant type="cutspace"/>
+ <cd:constant type="inleft"/>
+ <cd:constant type="inright"/>
+ <cd:constant type="inmargin"/>
+ <cd:constant type="leftmargin"/>
+ <cd:constant type="rightmargin"/>
+ <cd:constant type="leftedge"/>
+ <cd:constant type="rightedge"/>
+ <cd:constant type="innermargin"/>
+ <cd:constant type="outermargin"/>
+ <cd:constant type="inneredge"/>
+ <cd:constant type="outeredge"/>
+ <cd:constant type="text"/>
+ <cd:constant type="opposite"/>
+ <cd:constant type="reset"/>
+ <cd:constant type="height"/>
+ <cd:constant type="depth"/>
+ <cd:constant type="line" prefix="cd:sign" method="none"/>
+ <cd:constant type="halfline"/>
+ <cd:constant type="grid"/>
+ <cd:constant type="high"/>
+ <cd:constant type="low"/>
+ <cd:constant type="fit"/>
+ <cd:constant type="90"/>
+ <cd:constant type="180"/>
+ <cd:constant type="270"/>
+ <cd:constant type="nonumber"/>
+ <cd:constant type="none"/>
+ <cd:constant type="local"/>
+ <cd:constant type="here"/>
+ <cd:constant type="force"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="hang" prefix="cd:sign" method="none"/>
+ <cd:constant type="hanging"/>
+ <cd:constant type="tall"/>
+ <cd:constant type="both"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="offset"/>
+ <cd:constant type="top"/>
+ <cd:constant type="bottom"/>
+ <cd:constant type="auto"/>
+ <cd:constant type="page"/>
+ <cd:constant type="leftpage"/>
+ <cd:constant type="rightpage"/>
+ <cd:constant type="somewhere"/>
+ </cd:define>
+
+ <!-- sortorder = ... -->
+
+ <cd:define name="value-sortorder">
+ <cd:constant type="default"/>
+ <cd:constant type="DIN␣5007-1"/>
+ <cd:constant type="DIN␣5007-2"/>
+ <cd:constant type="Duden"/>
+ <cd:constant type="de-DE"/>
+ <cd:constant type="de-CH"/>
+ <cd:constant type="de-AT"/>
+ <cd:constant type="ru-iso9"/>
+ <cd:constant type="ocs-scn"/>
+ <cd:constant type="cd:language"/>
+ </cd:define>
+
+ <!-- sortmethod = ... -->
+
+ <cd:define name="value-sortmethod">
+ <cd:constant type="default"/>
+ <cd:constant type="before"/>
+ <cd:constant type="after"/>
+ <cd:constant type="first"/>
+ <cd:constant type="last"/>
+ <cd:constant type="ch"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="zm"/>
+ <cd:constant type="pm"/>
+ <cd:constant type="mc"/>
+ <cd:constant type="zc"/>
+ <cd:constant type="pc"/>
+ <cd:constant type="uc"/>
+ </cd:define>
+
+ <!-- referenceprefix = ... -->
+
+ <cd:define name="value-referenceprefix">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="cd:text"/>
+ </cd:define>
+
+ <!-- referencetype = ... -->
+
+ <cd:define name="value-referencetype">
+ <cd:constant type="default"/>
+ <cd:constant type="text"/>
+ <cd:constant type="title"/>
+ <cd:constant type="number"/>
+ <cd:constant type="page"/>
+ <cd:constant type="realpage"/>
+ </cd:define>
+
+ <!-- markposition = ... -->
+
+ <cd:define name="value-markposition">
+ <cd:constant type="first"/>
+ <cd:constant type="last"/>
+ <cd:constant type="current"/>
+ <cd:constant type="previous"/>
+ <cd:constant type="next"/>
+ <cd:constant type="top"/>
+ <cd:constant type="bottom"/>
+ <cd:constant type="default"/>
+ <cd:constant type="both"/>
+ <cd:constant type="all"/>
+ <cd:constant type="nocheck" prefix="first" method="range"/>
+ <cd:constant type="nocheck" prefix="last" method="range"/>
+ <cd:constant type="nocheck" prefix="previous" method="range"/>
+ <cd:constant type="nocheck" prefix="next" method="range"/>
+ <cd:constant type="nocheck" prefix="top" method="range"/>
+ <cd:constant type="nocheck" prefix="bottom" method="range"/>
+ </cd:define>
+
+ <!-- strut = ... -->
+
+ <cd:define name="value-strut">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="auto"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="fit"/>
+ <cd:constant type="line"/>
+ <cd:constant type="default"/>
+ <cd:constant type="cd:character"/>
+ </cd:define>
+
+ <!-- grid = ... -->
+
+ <cd:define name="value-grid">
+ <cd:constant type="normal"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="yes"/>
+ <cd:constant type="strict"/>
+ <cd:constant type="tolerant"/>
+ <cd:constant type="top"/>
+ <cd:constant type="bottom"/>
+ <cd:constant type="both"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="fit"/>
+ <cd:constant type="first"/>
+ <cd:constant type="last"/>
+ <cd:constant type="high"/>
+ <cd:constant type="one"/>
+ <cd:constant type="low"/>
+ <cd:constant type="none"/>
+ <cd:constant type="line"/>
+ <cd:constant type="strut"/>
+ <cd:constant type="box"/>
+ <cd:constant type="min"/>
+ <cd:constant type="max"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="cd:name"/>
+ </cd:define>
+
+ <!-- papersize = ... -->
+
+ <cd:define name="value-papersize">
+ <cd:constant type="A0"/>
+ <cd:constant type="A1"/>
+ <cd:constant type="A2"/>
+ <cd:constant type="A3"/>
+ <cd:constant type="A4"/>
+ <cd:constant type="A5"/>
+ <cd:constant type="A6"/>
+ <cd:constant type="A7"/>
+ <cd:constant type="A8"/>
+ <cd:constant type="A9"/>
+ <cd:constant type="A10"/>
+ <cd:constant type="A4/2"/>
+ <cd:constant type="B0"/>
+ <cd:constant type="B1"/>
+ <cd:constant type="B2"/>
+ <cd:constant type="B3"/>
+ <cd:constant type="B4"/>
+ <cd:constant type="B5"/>
+ <cd:constant type="B6"/>
+ <cd:constant type="B7"/>
+ <cd:constant type="B8"/>
+ <cd:constant type="B9"/>
+ <cd:constant type="B10"/>
+ <cd:constant type="C0"/>
+ <cd:constant type="C1"/>
+ <cd:constant type="C2"/>
+ <cd:constant type="C3"/>
+ <cd:constant type="C4"/>
+ <cd:constant type="C5"/>
+ <cd:constant type="C6"/>
+ <cd:constant type="C7"/>
+ <cd:constant type="C8"/>
+ <cd:constant type="C9"/>
+ <cd:constant type="C10"/>
+ <cd:constant type="4␣A0"/>
+ <cd:constant type="2␣A0"/>
+ <cd:constant type="C6/C5"/>
+ <cd:constant type="S3"/>
+ <cd:constant type="S4"/>
+ <cd:constant type="S5"/>
+ <cd:constant type="S6"/>
+ <cd:constant type="S8"/>
+ <cd:constant type="SL"/>
+ <cd:constant type="SM"/>
+ <cd:constant type="SW"/>
+ <cd:constant type="HD"/>
+ <cd:constant type="HD+"/>
+ <cd:constant type="HD-"/>
+ <cd:constant type="S33"/>
+ <cd:constant type="S44"/>
+ <cd:constant type="S55"/>
+ <cd:constant type="S66"/>
+ <cd:constant type="CD"/>
+ <cd:constant type="letter"/>
+ <cd:constant type="ledger"/>
+ <cd:constant type="tabloid"/>
+ <cd:constant type="legal"/>
+ <cd:constant type="folio"/>
+ <cd:constant type="executive"/>
+ <cd:constant type="A"/>
+ <cd:constant type="B"/>
+ <cd:constant type="C"/>
+ <cd:constant type="envelope␣9"/>
+ <cd:constant type="envelope␣10"/>
+ <cd:constant type="envelope␣11"/>
+ <cd:constant type="envelope␣12"/>
+ <cd:constant type="envelope␣14"/>
+ <cd:constant type="monarch"/>
+ <cd:constant type="check"/>
+ <cd:constant type="DL"/>
+ <cd:constant type="E4"/>
+ <cd:constant type="RA0"/>
+ <cd:constant type="RA1"/>
+ <cd:constant type="RA2"/>
+ <cd:constant type="RA3"/>
+ <cd:constant type="RA4"/>
+ <cd:constant type="SRA0"/>
+ <cd:constant type="SRA1"/>
+ <cd:constant type="SRA2"/>
+ <cd:constant type="SRA3"/>
+ <cd:constant type="SRA4"/>
+ <cd:constant type="G5"/>
+ <cd:constant type="E5"/>
+ <cd:constant type="A3plus"/>
+ <cd:constant type="business"/>
+ <cd:constant type="businessUS"/>
+ <cd:constant type="oversized"/>
+ <cd:constant type="undersized"/>
+ <cd:constant type="doublesized"/>
+ <cd:constant type="doubleoversized"/>
+ <cd:constant type="doublewide"/>
+ </cd:define>
+
+ <!-- btxalternative = ... -->
+
+ <cd:define name="value-btxalternative">
+ <cd:constant type="default"/>
+ <cd:constant type="category"/>
+ <cd:constant type="entry"/>
+ <cd:constant type="short"/>
+ <cd:constant type="page"/>
+ <cd:constant type="num"/>
+ <cd:constant type="textnum"/>
+ <cd:constant type="year"/>
+ <cd:constant type="index"/>
+ <cd:constant type="tag"/>
+ <cd:constant type="keywords"/>
+ <cd:constant type="author"/>
+ <cd:constant type="authoryears"/>
+ <cd:constant type="authornum"/>
+ <cd:constant type="authoryear"/>
+ </cd:define>
+
+ <!-- btxfield = ... -->
+
+ <cd:define name="value-btxfield">
+ <cd:constant type="address"/>
+ <cd:constant type="assignee"/>
+ <cd:constant type="author"/>
+ <cd:constant type="booktitle"/>
+ <cd:constant type="chapter"/>
+ <cd:constant type="day"/>
+ <cd:constant type="dayfiled"/>
+ <cd:constant type="edition"/>
+ <cd:constant type="editor"/>
+ <cd:constant type="howpublished"/>
+ <cd:constant type="institution"/>
+ <cd:constant type="journal"/>
+ <cd:constant type="language"/>
+ <cd:constant type="month"/>
+ <cd:constant type="monthfiled"/>
+ <cd:constant type="nationality"/>
+ <cd:constant type="note"/>
+ <cd:constant type="number"/>
+ <cd:constant type="one"/>
+ <cd:constant type="two"/>
+ <cd:constant type="organization"/>
+ <cd:constant type="pages"/>
+ <cd:constant type="publisher"/>
+ <cd:constant type="school"/>
+ <cd:constant type="series"/>
+ <cd:constant type="title"/>
+ <cd:constant type="type"/>
+ <cd:constant type="volume"/>
+ <cd:constant type="year"/>
+ <cd:constant type="yearfiled"/>
+ <cd:constant type="cd:name"/>
+ </cd:define>
+
+ <!-- btxauthor = ... -->
+
+ <cd:define name="value-btxauthor">
+ <cd:constant type="author"/>
+ <cd:constant type="editor"/>
+ </cd:define>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-context.pdf b/tex/context/interface/mkiv/i-context.pdf
new file mode 100644
index 000000000..5e0b833e1
--- /dev/null
+++ b/tex/context/interface/mkiv/i-context.pdf
Binary files differ
diff --git a/tex/context/interface/mkiv/i-context.xml b/tex/context/interface/mkiv/i-context.xml
new file mode 100644
index 000000000..606950c10
--- /dev/null
+++ b/tex/context/interface/mkiv/i-context.xml
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:interfacefile filename="i-common-definitions.xml"/>
+
+ <cd:interfacefile filename="i-accent.xml"/>
+ <cd:interfacefile filename="i-align.xml"/>
+ <cd:interfacefile filename="i-anchor.xml"/>
+ <cd:interfacefile filename="i-attachment.xml"/>
+ <cd:interfacefile filename="i-attribute.xml"/>
+ <cd:interfacefile filename="i-backend.xml"/>
+ <cd:interfacefile filename="i-background.xml"/>
+ <cd:interfacefile filename="i-bar.xml"/>
+ <cd:interfacefile filename="i-blackrule.xml"/>
+ <cd:interfacefile filename="i-bleed.xml"/>
+ <cd:interfacefile filename="i-block.xml"/>
+ <cd:interfacefile filename="i-bookmark.xml"/>
+ <cd:interfacefile filename="i-boxes.xml"/>
+ <cd:interfacefile filename="i-buffer.xml"/>
+ <cd:interfacefile filename="i-button.xml"/>
+ <cd:interfacefile filename="i-capitals.xml"/>
+ <cd:interfacefile filename="i-catcodes.xml"/>
+ <cd:interfacefile filename="i-character.xml"/>
+ <cd:interfacefile filename="i-characteralign.xml"/>
+ <cd:interfacefile filename="i-characterspacing.xml"/>
+ <cd:interfacefile filename="i-characterstripping.xml"/>
+ <cd:interfacefile filename="i-charwidth.xml"/>
+ <cd:interfacefile filename="i-chemical.xml"/>
+ <cd:interfacefile filename="i-cleaning.xml"/>
+ <cd:interfacefile filename="i-clipping.xml"/>
+ <cd:interfacefile filename="i-collector.xml"/>
+ <cd:interfacefile filename="i-color.xml"/>
+ <cd:interfacefile filename="i-columns.xml"/>
+ <cd:interfacefile filename="i-combination.xml"/>
+ <cd:interfacefile filename="i-commandhandler.xml"/>
+ <cd:interfacefile filename="i-comment.xml"/>
+ <cd:interfacefile filename="i-conversion.xml"/>
+ <cd:interfacefile filename="i-counter.xml"/>
+ <cd:interfacefile filename="i-dataset.xml"/>
+ <cd:interfacefile filename="i-define.xml"/>
+ <cd:interfacefile filename="i-delimitedtext.xml"/>
+ <cd:interfacefile filename="i-description.xml"/>
+ <cd:interfacefile filename="i-digits.xml"/>
+ <cd:interfacefile filename="i-dimension.xml"/>
+ <cd:interfacefile filename="i-direction.xml"/>
+ <cd:interfacefile filename="i-document.xml"/>
+ <cd:interfacefile filename="i-dummy.xml"/>
+ <cd:interfacefile filename="i-effect.xml"/>
+ <cd:interfacefile filename="i-enumeration.xml"/>
+ <cd:interfacefile filename="i-export.xml"/>
+ <cd:interfacefile filename="i-field.xml"/>
+ <cd:interfacefile filename="i-figure.xml"/>
+ <cd:interfacefile filename="i-file.xml"/>
+ <cd:interfacefile filename="i-filler.xml"/>
+ <cd:interfacefile filename="i-fillinline.xml"/>
+ <cd:interfacefile filename="i-fillinrule.xml"/>
+ <cd:interfacefile filename="i-firstline.xml"/>
+ <cd:interfacefile filename="i-fittingpage.xml"/>
+ <cd:interfacefile filename="i-floats.xml"/>
+ <cd:interfacefile filename="i-fontfamily.xml"/>
+ <cd:interfacefile filename="i-fonts.xml"/>
+ <cd:interfacefile filename="i-form.xml"/>
+ <cd:interfacefile filename="i-formula.xml"/>
+ <cd:interfacefile filename="i-fraction.xml"/>
+ <cd:interfacefile filename="i-framed.xml"/>
+ <cd:interfacefile filename="i-graphics.xml"/>
+ <cd:interfacefile filename="i-grid.xml"/>
+ <cd:interfacefile filename="i-help.xml"/>
+ <cd:interfacefile filename="i-highlight.xml"/>
+ <cd:interfacefile filename="i-hspace.xml"/>
+ <cd:interfacefile filename="i-hyphenation.xml"/>
+ <cd:interfacefile filename="i-imposition.xml"/>
+ <cd:interfacefile filename="i-indent.xml"/>
+ <cd:interfacefile filename="i-indentedtext.xml"/>
+ <cd:interfacefile filename="i-initial.xml"/>
+ <cd:interfacefile filename="i-injector.xml"/>
+ <cd:interfacefile filename="i-insertion.xml"/>
+ <cd:interfacefile filename="i-interaction.xml"/>
+ <cd:interfacefile filename="i-interactionbar.xml"/>
+ <cd:interfacefile filename="i-interactionmenu.xml"/>
+ <cd:interfacefile filename="i-interactionscreen.xml"/>
+ <cd:interfacefile filename="i-interface.xml"/>
+ <cd:interfacefile filename="i-interlinespace.xml"/>
+ <cd:interfacefile filename="i-interlinespace.xml"/>
+ <cd:interfacefile filename="i-italiccorrection.xml"/>
+ <cd:interfacefile filename="i-itemgroup.xml"/>
+ <cd:interfacefile filename="i-items.xml"/>
+ <cd:interfacefile filename="i-javascript.xml"/>
+ <cd:interfacefile filename="i-kerning.xml"/>
+ <cd:interfacefile filename="i-label.xml"/>
+ <cd:interfacefile filename="i-labeltext.xml"/>
+ <cd:interfacefile filename="i-language.xml"/>
+ <cd:interfacefile filename="i-layer.xml"/>
+ <cd:interfacefile filename="i-layout.xml"/>
+ <cd:interfacefile filename="i-linenumber.xml"/>
+ <cd:interfacefile filename="i-lines.xml"/>
+ <cd:interfacefile filename="i-linetable.xml"/>
+ <cd:interfacefile filename="i-linewidth.xml"/>
+ <cd:interfacefile filename="i-list.xml"/>
+ <cd:interfacefile filename="i-logo.xml"/>
+ <cd:interfacefile filename="i-lohi.xml"/>
+ <cd:interfacefile filename="i-lua.xml"/>
+ <cd:interfacefile filename="i-makeup.xml"/>
+ <cd:interfacefile filename="i-marginblock.xml"/>
+ <cd:interfacefile filename="i-margindata.xml"/>
+ <cd:interfacefile filename="i-marker.xml"/>
+ <cd:interfacefile filename="i-marking.xml"/>
+ <cd:interfacefile filename="i-math.xml"/>
+ <cd:interfacefile filename="i-mathalignment.xml"/>
+ <cd:interfacefile filename="i-mathcases.xml"/>
+ <cd:interfacefile filename="i-mathfence.xml"/>
+ <cd:interfacefile filename="i-mathmatrix.xml"/>
+ <cd:interfacefile filename="i-mathornament.xml"/>
+ <cd:interfacefile filename="i-mathradical.xml"/>
+ <cd:interfacefile filename="i-mathstackers.xml"/>
+ <cd:interfacefile filename="i-metapost.xml"/>
+ <cd:interfacefile filename="i-mixedcolumns.xml"/>
+ <cd:interfacefile filename="i-modes.xml"/>
+ <cd:interfacefile filename="i-modules.xml"/>
+ <cd:interfacefile filename="i-narrow.xml"/>
+ <cd:interfacefile filename="i-naturaltable.xml"/>
+ <cd:interfacefile filename="i-note.xml"/>
+ <cd:interfacefile filename="i-object.xml"/>
+ <cd:interfacefile filename="i-offset.xml"/>
+ <cd:interfacefile filename="i-opposite.xml"/>
+ <cd:interfacefile filename="i-ornament.xml"/>
+ <cd:interfacefile filename="i-output.xml"/>
+ <cd:interfacefile filename="i-overlay.xml"/>
+ <cd:interfacefile filename="i-pagebreak.xml"/>
+ <cd:interfacefile filename="i-pagecomment.xml"/>
+ <cd:interfacefile filename="i-pagefigure.xml"/>
+ <cd:interfacefile filename="i-pagegrid.xml"/>
+ <cd:interfacefile filename="i-pageinjection.xml"/>
+ <cd:interfacefile filename="i-pagelayout.xml"/>
+ <cd:interfacefile filename="i-pagenumber.xml"/>
+ <cd:interfacefile filename="i-pageselection.xml"/>
+ <cd:interfacefile filename="i-pageshift.xml"/>
+ <cd:interfacefile filename="i-pagestate.xml"/>
+ <cd:interfacefile filename="i-pairedbox.xml"/>
+ <cd:interfacefile filename="i-papersize.xml"/>
+ <cd:interfacefile filename="i-paragraph.xml"/>
+ <cd:interfacefile filename="i-paragraphnumber.xml"/>
+ <cd:interfacefile filename="i-paragraphs.xml"/>
+ <cd:interfacefile filename="i-parallel.xml"/>
+ <cd:interfacefile filename="i-parbuilder.xml"/>
+ <cd:interfacefile filename="i-pdf.xml"/>
+ <cd:interfacefile filename="i-penalty.xml"/>
+ <cd:interfacefile filename="i-periods.xml"/>
+ <cd:interfacefile filename="i-phantom.xml"/>
+ <cd:interfacefile filename="i-placement.xml"/>
+ <cd:interfacefile filename="i-position.xml"/>
+ <cd:interfacefile filename="i-positionbar.xml"/>
+ <cd:interfacefile filename="i-positioning.xml"/>
+ <cd:interfacefile filename="i-postponing.xml"/>
+ <cd:interfacefile filename="i-processor.xml"/>
+ <cd:interfacefile filename="i-profile.xml"/>
+ <cd:interfacefile filename="i-publication.xml"/>
+ <cd:interfacefile filename="i-random.xml"/>
+ <cd:interfacefile filename="i-references.xml"/>
+ <cd:interfacefile filename="i-regime.xml"/>
+ <cd:interfacefile filename="i-register.xml"/>
+ <cd:interfacefile filename="i-renderingwindow.xml"/>
+ <cd:interfacefile filename="i-replacement.xml"/>
+ <cd:interfacefile filename="i-rotatation.xml"/>
+ <cd:interfacefile filename="i-scale.xml"/>
+ <cd:interfacefile filename="i-script.xml"/>
+ <cd:interfacefile filename="i-section.xml"/>
+ <cd:interfacefile filename="i-sectionblock.xml"/>
+ <cd:interfacefile filename="i-selector.xml"/>
+ <cd:interfacefile filename="i-setups.xml"/>
+ <cd:interfacefile filename="i-shift.xml"/>
+ <cd:interfacefile filename="i-sidebar.xml"/>
+ <cd:interfacefile filename="i-smash.xml"/>
+ <cd:interfacefile filename="i-sort.xml"/>
+ <cd:interfacefile filename="i-soundtrack.xml"/>
+ <cd:interfacefile filename="i-spellchecking.xml"/>
+ <cd:interfacefile filename="i-startstop.xml"/>
+ <cd:interfacefile filename="i-stream.xml"/>
+ <cd:interfacefile filename="i-string.xml"/>
+ <cd:interfacefile filename="i-strut.xml"/>
+ <cd:interfacefile filename="i-symbol.xml"/>
+ <cd:interfacefile filename="i-synonym.xml"/>
+ <cd:interfacefile filename="i-system.xml"/>
+ <cd:interfacefile filename="i-systemlog.xml"/>
+ <cd:interfacefile filename="i-table.xml"/>
+ <cd:interfacefile filename="i-tabulation.xml"/>
+ <cd:interfacefile filename="i-tagging.xml"/>
+ <cd:interfacefile filename="i-textbackground.xml"/>
+ <cd:interfacefile filename="i-textflow.xml"/>
+ <cd:interfacefile filename="i-textrule.xml"/>
+ <cd:interfacefile filename="i-texts.xml"/>
+ <cd:interfacefile filename="i-thinrule.xml"/>
+ <cd:interfacefile filename="i-token.xml"/>
+ <cd:interfacefile filename="i-tolerance.xml"/>
+ <cd:interfacefile filename="i-tooltip.xml"/>
+ <cd:interfacefile filename="i-tracker.xml"/>
+ <cd:interfacefile filename="i-translation.xml"/>
+ <cd:interfacefile filename="i-twopassdata.xml"/>
+ <cd:interfacefile filename="i-typography.xml"/>
+ <cd:interfacefile filename="i-unit.xml"/>
+ <cd:interfacefile filename="i-variables.xml"/>
+ <cd:interfacefile filename="i-verbatim.xml"/>
+ <cd:interfacefile filename="i-version.xml"/>
+ <cd:interfacefile filename="i-viewerlayer.xml"/>
+ <cd:interfacefile filename="i-visualizer.xml"/>
+ <cd:interfacefile filename="i-vspace.xml"/>
+ <cd:interfacefile filename="i-whitespace.xml"/>
+ <cd:interfacefile filename="i-xml.xml"/>
+ <cd:interfacefile filename="i-xtable.xml"/>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-conversion.xml b/tex/context/interface/mkiv/i-conversion.xml
new file mode 100644
index 000000000..b4755c27c
--- /dev/null
+++ b/tex/context/interface/mkiv/i-conversion.xml
@@ -0,0 +1,632 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="numbers" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="Numbers" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="romannumerals" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="Romannumerals" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="abjadnumerals" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="abjadnodotnumerals" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="abjadnaivenumerals" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="languagecharacters" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="languageCharacters" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="alphabeticnumerals" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="Alphabeticnumerals" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="thainumerals" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="devanagarinumerals" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="gurmurkhinumerals" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="gujaratinumerals" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tibetannumerals" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="greeknumerals" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="Greeknumerals" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="arabicnumerals" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="persiannumerals" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="arabicdecimals" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="persiandecimals" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="arabicexnumerals" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="koreannumerals" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="koreannumeralsp" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="koreannumeralsc" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="koreanparentnumerals" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="koreancirclenumerals" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="chinesenumerals" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="chinesecapnumerals" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="chineseallnumerals" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="character" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="Character" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="characters" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="Characters" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="monthlong" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="monthshort" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="convertmonth" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="month" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MONTH" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MONTHLONG" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MONTHSHORT" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="weekday" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="WEEKDAY" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dayoftheweek" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getdayoftheweek" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelseleapyear" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifleapyearelse" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dayspermonth" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getdayspermonth" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="currentdate" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="yes"/>
+ <cd:constant type="moth"/>
+ <cd:constant type="day"/>
+ <cd:constant type="weekday"/>
+ <cd:constant type="y"/>
+ <cd:constant type="yy"/>
+ <cd:constant type="Y"/>
+ <cd:constant type="m"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="M"/>
+ <cd:constant type="d"/>
+ <cd:constant type="dd"/>
+ <cd:constant type="D"/>
+ <cd:constant type="w"/>
+ <cd:constant type="W"/>
+ <cd:constant type="space"/>
+ <cd:constant type="\␣"/>
+ <cd:constant type="month:mnem"/>
+ <cd:constant type="m:mnem"/>
+ <cd:constant type="d:ord"/>
+ <cd:constant type="day:ord"/>
+ <cd:constant type="dd:ord"/>
+ <cd:constant type="D:ord"/>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="date" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="d">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="m">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:inherit name="currentdate"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rawdate" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:inherit name="currentdate"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="currenttime" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="h"/>
+ <cd:constant type="m"/>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="processmonth" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="processyear" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="defineconversion" variant="1" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-csname"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="defineconversion" variant="2" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-text-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="convertnumber" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="empty"/>
+ <cd:constant type="default"/>
+ <cd:constant type="none"/>
+ <cd:constant type="month"/>
+ <cd:constant type="month:mnem"/>
+ <cd:constant type="character"/>
+ <cd:constant type="Character"/>
+ <cd:constant type="characters"/>
+ <cd:constant type="Characters"/>
+ <cd:constant type="a"/>
+ <cd:constant type="A"/>
+ <cd:constant type="Numbers"/>
+ <cd:constant type="word"/>
+ <cd:constant type="words"/>
+ <cd:constant type="Word"/>
+ <cd:constant type="Words"/>
+ <cd:constant type="n"/>
+ <cd:constant type="N"/>
+ <!-- oldstylenumerals
+ <cd:constant type="o"/>
+ <cd:constant type="O"/>
+ -->
+ <cd:constant type="romannumerals"/>
+ <cd:constant type="Romannumerals"/>
+ <cd:constant type="i"/>
+ <cd:constant type="I"/>
+ <cd:constant type="r"/>
+ <cd:constant type="R"/>
+ <cd:constant type="KR"/>
+ <cd:constant type="RK"/>
+ <cd:constant type="greek"/>
+ <cd:constant type="Greek"/>
+ <cd:constant type="g"/>
+ <cd:constant type="G"/>
+ <cd:constant type="abjadnumerals"/>
+ <cd:constant type="abjadnodotnumerals"/>
+ <cd:constant type="abjadnaivenumerals"/>
+ <cd:constant type="thainumerals"/>
+ <cd:constant type="devanagarinumerals"/>
+ <cd:constant type="gurmurkhinumerals"/>
+ <cd:constant type="gujaratinnumerals"/>
+ <cd:constant type="tibetannumerals"/>
+ <cd:constant type="greeknumerals"/>
+ <cd:constant type="Greeknumerals"/>
+ <cd:constant type="arabicnumerals"/>
+ <cd:constant type="persiannumerals"/>
+ <cd:constant type="arabicexnumerals"/>
+ <cd:constant type="arabicdecimals"/>
+ <cd:constant type="persiandecimals"/>
+ <cd:constant type="koreannumerals"/>
+ <cd:constant type="koreanparentnumerals"/>
+ <cd:constant type="koreancirclenumerals"/>
+ <cd:constant type="kr"/>
+ <cd:constant type="kr-p"/>
+ <cd:constant type="kr-c"/>
+ <cd:constant type="chinesenumerals"/>
+ <cd:constant type="chinesecapnumerals"/>
+ <cd:constant type="chineseallnumerals"/>
+ <cd:constant type="cn"/>
+ <cd:constant type="cn-c"/>
+ <cd:constant type="cn-a"/>
+ <cd:constant type="sloveniannumerals"/>
+ <cd:constant type="slovenianNumerals"/>
+ <cd:constant type="spanishnumerals"/>
+ <cd:constant type="spanishNumerals"/>
+ <cd:constant type="mathgreek"/>
+ <cd:constant type="set␣0"/>
+ <cd:constant type="set␣1"/>
+ <cd:constant type="set␣2"/>
+ <cd:constant type="set␣3"/>
+ <cd:constant type="continued"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="uconvertnumber" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:inherit name="convertnumber"/>
+ </cd:keywords>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelseconversiondefined" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifconversiondefinedelse" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelseconversionnumber" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifconversionnumberelse" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="wordtonumber" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="one"/>
+ <cd:constant type="two"/>
+ <cd:constant type="three"/>
+ <cd:constant type="four"/>
+ <cd:constant type="five"/>
+ </cd:keywords>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="highordinalstr" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ordinalstr" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ordinaldaynumber" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="verbosenumber" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="VerboseNumber" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="smallcappedromannumerals" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="smallcappedcharacters" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="sloveniannumerals" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="slovenianNumerals" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="spanishnumerals" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="spanishNumerals" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="unihex" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="continuednumber" file="core-con.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-counter.xml b/tex/context/interface/mkiv/i-counter.xml
new file mode 100644
index 000000000..7701d40cd
--- /dev/null
+++ b/tex/context/interface/mkiv/i-counter.xml
@@ -0,0 +1,517 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definecounter" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupcounter"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupcounter" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <!--
+ <cd:parameter name="name">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ -->
+ <cd:parameter name="start">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="counter">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:constant type="page"/>
+ </cd:parameter>
+ <cd:parameter name="state">
+ <cd:constant type="start" default="yes"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="way">
+ <cd:constant type="page" prefix="by" method="none"/>
+ <cd:constant type="block" prefix="by" method="none"/>
+ <cd:constant type="text" prefix="by" method="none"/>
+ <cd:constant type="head" prefix="by" method="none"/>
+ <cd:constant type="cd:section" prefix="by" method="none"/>
+ </cd:parameter>
+ <cd:parameter name="prefix">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="prefixseparatorset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="prefixconversion">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="prefixconversionset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="prefixstarter">
+ <cd:resolve name="value-starter"/>
+ </cd:parameter>
+ <cd:parameter name="prefixstopper">
+ <cd:resolve name="value-stopper"/>
+ </cd:parameter>
+ <cd:parameter name="prefixset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="prefixsegments">
+ <cd:resolve name="value-prefixsegments"/>
+ </cd:parameter>
+ <cd:parameter name="numberorder">
+ <cd:constant type="reverse"/>
+ </cd:parameter>
+ <cd:parameter name="numberseparatorset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="numberconversion">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="numberconversionset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="numberstarter">
+ <cd:resolve name="value-starter"/>
+ </cd:parameter>
+ <cd:parameter name="numberstopper">
+ <cd:resolve name="value-stopper"/>
+ </cd:parameter>
+ <cd:parameter name="numbersegments">
+ <cd:resolve name="value-numbersegments"/>
+ </cd:parameter>
+ <cd:parameter name="type">
+ <cd:constant type="first"/>
+ <cd:constant type="previous"/>
+ <!--
+ <cd:constant type="prev"/>
+ -->
+ <cd:constant type="next"/>
+ <cd:constant type="last"/>
+ <cd:constant type="number" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="criterium">
+ <cd:constant type="strict"/>
+ <cd:constant type="positive"/>
+ <cd:constant type="all"/>
+ </cd:parameter>
+ <cd:parameter name="prefixconnector">
+ <cd:resolve name="value-connector"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsecounter" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifcounterelse" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifcounter" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnotcounter" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setcounter" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-number-optional"/>
+ <cd:resolve name="keyword-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setcounterown" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-number-optional"/>
+ <cd:resolve name="keyword-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="restartcounter" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-number-optional"/>
+ <cd:resolve name="keyword-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetcounter" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-number-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="incrementcounter" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-number-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="decrementcounter" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-number-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rawcounter" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-number-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="lastcounter" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-number-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="firstcounter" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-number-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="nextcounter" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-number-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="prevcounter" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-number-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="countersubs" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-number-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="savecounter" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="restorecounter" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showcounter" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="incrementedcounter" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="decrementedcounter" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rawcountervalue" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="lastcountervalue" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="firstcountervalue" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="nextcountervalue" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="prevcountervalue" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rawsubcountervalue" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="lastsubcountervalue" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="firstsubcountervalue" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="nextsubcountervalue" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="prevsubcountervalue" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="convertedcounter" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupcounter"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="convertedsubcounter" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords optional="yes">
+ <cd:resolve name="value-numbersegments"/>
+ </cd:keywords>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupcounter"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="directconvertedcounter" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="first"/>
+ <cd:constant type="previous"/>
+ <!--
+ <cd:constant type="prev"/>
+ -->
+ <cd:constant type="next"/>
+ <cd:constant type="last"/>
+ <cd:constant type="number"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsedefinedcounter" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifdefinedcounterelse" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifdefinedcounter" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifundefinedcounter" file="strc-num.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="defineresetset" file="strc-ini.mkvi">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ <cd:constant type="cd:name" prefix="cd:sectionblock" method="range"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-number-list"/>
+ <cd:resolve name="keyword-number-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="definestructureresetset" file="strc-ini.mkvi">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ <cd:constant type="cd:name" prefix="cd:sectionblock" method="range"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-number-list"/>
+ <cd:resolve name="keyword-number-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="defineseparatorset" file="strc-ini.mkvi">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ <cd:constant type="cd:name" prefix="cd:sectionblock" method="range"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:resolve name="value-connector"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:resolve name="value-connector"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="definestructureseparatorset" file="strc-ini.mkvi">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ <cd:constant type="cd:name" prefix="cd:sectionblock" method="range"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:resolve name="value-connector"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:resolve name="value-connector"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="defineconversionset" file="strc-ini.mkvi">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ <cd:constant type="cd:name" prefix="cd:sectionblock" method="range"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="cd:name" prefix="cd:processor" method="apply"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="cd:name" prefix="cd:processor" method="apply"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="definestructureconversionset" file="strc-ini.mkvi">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ <cd:constant type="cd:name" prefix="cd:sectionblock" method="range"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="cd:name" prefix="cd:processor" method="apply"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="cd:name" prefix="cd:processor" method="apply"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="defineprefixset" file="strc-ini.mkvi">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ <cd:constant type="cd:name" prefix="cd:sectionblock" method="range"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-section-list"/>
+ <cd:resolve name="keyword-section-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="definestructureprefixset" file="strc-ini.mkvi">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ <cd:constant type="cd:name" prefix="cd:sectionblock" method="range"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-section-list"/>
+ <cd:resolve name="keyword-section-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-dataset.xml b/tex/context/interface/mkiv/i-dataset.xml
new file mode 100644
index 000000000..914fe0af1
--- /dev/null
+++ b/tex/context/interface/mkiv/i-dataset.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definedataset" file="core-dat.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupdataset"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupdataset" file="core-dat.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional-list"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="delay">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setdataset" file="core-dat.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="datasetvariable" file="core-dat.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:key"/>
+ <cd:constant type="realpage"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-define.xml b/tex/context/interface/mkiv/i-define.xml
new file mode 100644
index 000000000..0d0398e5d
--- /dev/null
+++ b/tex/context/interface/mkiv/i-define.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="define" file="core-sys.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-number-optional"/>
+ <cd:csname/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="defineexpandable" file="core-sys.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-number-optional"/>
+ <cd:csname/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-delimitedtext.xml b/tex/context/interface/mkiv/i-delimitedtext.xml
new file mode 100644
index 000000000..24fa581fd
--- /dev/null
+++ b/tex/context/interface/mkiv/i-delimitedtext.xml
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definedelimitedtext" file="typo-del.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupdelimitedtext"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupdelimitedtext" file="typo-del.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="language">
+ <cd:constant type="cd:language"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:constant type="font"/>
+ </cd:parameter>
+ <cd:parameter name="repeat">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="text"/>
+ <cd:constant type="paragraph"/>
+ <cd:constant type="margin" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="middle">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nextleft">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nextright">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="spacebefore">
+ <cd:inherit name="blank"/>
+ </cd:parameter>
+ <cd:parameter name="spaceafter">
+ <cd:inherit name="blank"/>
+ </cd:parameter>
+ <cd:parameter name="leftmargin">
+ <cd:resolve name="value-leftskip"/>
+ </cd:parameter>
+ <cd:parameter name="rightmargin">
+ <cd:resolve name="value-rightskip"/>
+ </cd:parameter>
+ <cd:parameter name="indenting">
+ <cd:inherit name="setupindenting"/>
+ </cd:parameter>
+ <cd:parameter name="indentnext">
+ <cd:resolve name="value-indentnext"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="symstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="symcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="delimitedtext" generated="yes" variant="generated" file="typo-del.mkiv">
+ <cd:sequence>
+ <cd:variable value="delimitedtext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="delimitedtext" type="environment" generated="yes" variant="generated" file="typo-del.mkiv">
+ <cd:sequence>
+ <cd:variable value="delimitedtext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:inherit name="startnarrower"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="delimitedtext" file="typo-del.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="delimitedtext" type="environment" file="typo-del.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords list="yes" optional="yes">
+ <cd:inherit name="startnarrower"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="delimited" file="typo-del.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="delimited" type="environment" file="typo-del.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords list="yes" optional="yes">
+ <cd:inherit name="startnarrower"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="quotation" file="typo-del.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="quotation" type="environment" file="typo-del.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:inherit name="startnarrower"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="quote" file="typo-del.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="quote" type="environment" file="typo-del.mkiv"/>
+
+ <cd:command name="blockquote" file="typo-del.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="blockquote" type="environment" file="typo-del.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:inherit name="startnarrower"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="speech" file="typo-del.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="speech" type="environment" file="typo-del.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:inherit name="startnarrower"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupquotation" file="typo-del.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupdelimitedtext"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupquote" file="typo-del.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupdelimitedtext"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="subsentence" file="typo-del.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="subsentence" type="environment" file="typo-del.mkiv"/>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-description.xml b/tex/context/interface/mkiv/i-description.xml
new file mode 100644
index 000000000..0204b3466
--- /dev/null
+++ b/tex/context/interface/mkiv/i-description.xml
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definedescription" file="strc-des.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupdescription"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupdescription" file="strc-des.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="title">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <!-- begin construction values -->
+ <cd:parameter name="level">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="headcommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="left" default="yes"/>
+ <cd:constant type="right"/>
+ <cd:constant type="inmargin"/>
+ <cd:constant type="inleft"/>
+ <cd:constant type="inright"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="leftmargin"/>
+ <cd:constant type="rightmargin"/>
+ <cd:constant type="innermargin"/>
+ <cd:constant type="outermargin"/>
+ <cd:constant type="serried"/>
+ <cd:constant type="hanging"/>
+ <cd:constant type="top"/>
+ <cd:constant type="command"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:inherit name="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="headalign">
+ <cd:inherit name="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="indenting">
+ <cd:inherit name="setupindenting"/>
+ </cd:parameter>
+ <cd:parameter name="display">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="indentnext">
+ <cd:resolve name="value-indentnext"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="fit"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="line"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="none"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hang">
+ <cd:constant type="fit"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="none"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="closesymbol">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="closecommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="expansion">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ <cd:constant type="xml"/>
+ </cd:parameter>
+ <cd:parameter name="sample">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="margin">
+ <cd:resolve name="value-leftskip"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="headstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="headcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <!-- end construction values -->
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="setupdescriptions" file="strc-des.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupdescription"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="description" type="environment" generated="yes" variant="generated:1" file="strc-des.mkvi">
+ <cd:sequence>
+ <cd:variable value="description"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="assignment-constructiondata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="description" type="environment" generated="yes" variant="generated:2" file="strc-des.mkvi">
+ <cd:sequence>
+ <cd:variable value="description"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="description" generated="yes" variant="generated" file="strc-des.mkvi">
+ <cd:sequence>
+ <cd:variable value="description"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="string-content"/>
+ <cd:delimiter name="par"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-digits.xml b/tex/context/interface/mkiv/i-digits.xml
new file mode 100644
index 000000000..325febab3
--- /dev/null
+++ b/tex/context/interface/mkiv/i-digits.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setdigitsmanipulation" file="typo-dig.mkiv">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="reset"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetdigitsmanipulation" file="typo-dig.mkiv"/>
+
+ <cd:command name="equaldigits" file="typo-dig.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dummydigit" file="typo-dig.mkiv"/>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-dimension.xml b/tex/context/interface/mkiv/i-dimension.xml
new file mode 100644
index 000000000..2962a3aef
--- /dev/null
+++ b/tex/context/interface/mkiv/i-dimension.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="assigndimension" file="mult-dim.mkvi">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="small" prefix="cd:sign" method="none"/>
+ <cd:constant type="medium" prefix="cd:sign" method="none"/>
+ <cd:constant type="big" prefix="cd:sign" method="none"/>
+ <cd:constant type="none"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ <cd:csname/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="assignalfadimension" file="mult-dim.mkvi">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ <cd:constant type="none"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ <cd:csname/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="assignwidth" file="mult-dim.mkvi">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="fit"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ <cd:csname/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="assignvalue" file="mult-dim.mkvi">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:csname/>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-direction.xml b/tex/context/interface/mkiv/i-direction.xml
new file mode 100644
index 000000000..725e215a3
--- /dev/null
+++ b/tex/context/interface/mkiv/i-direction.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setupdirections" file="typo-dir.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="bidi">
+ <cd:constant type="on"/>
+ <cd:constant type="off" default="yes"/>
+ <cd:constant type="local"/>
+ <cd:constant type="global"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:constant type="one"/>
+ <cd:constant type="two"/>
+ <cd:constant type="default" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="fences">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setdirection" file="typo-dir.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetdirection" file="typo-dir.mkiv"/>
+
+ <!--
+
+ <cd:command name="lefttorightmark" file="typo-dir.mkiv"/>
+
+ <cd:command name="righttoleftmark" file="typo-dir.mkiv"/>
+
+ <cd:command name="lrm" file="typo-dir.mkiv"/>
+
+ <cd:command name="rlm" file="typo-dir.mkiv"/>
+
+ -->
+
+ <cd:command name="showdirsinmargin" file="supp-dir.mkiv"/>
+
+ <cd:command name="istltdir" file="supp-dir.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="none">
+ <cd:constant type="TLT"/>
+ <cd:constant type="TRT"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="istrtdir" file="supp-dir.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="none">
+ <cd:constant type="TLT"/>
+ <cd:constant type="TRT"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-document.xml b/tex/context/interface/mkiv/i-document.xml
new file mode 100644
index 000000000..739c6b5c4
--- /dev/null
+++ b/tex/context/interface/mkiv/i-document.xml
@@ -0,0 +1,207 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="text" type="environment" file="file-job.mkvi"/>
+
+ <cd:command name="text" type="environment" begin="autostart" end="autostop" file="file-job.mkvi"/>
+
+ <cd:command name="notext" type="environment" file="file-job.mkvi"/>
+
+ <cd:command name="environment" type="environment" variant="1" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ <cd:constant type="*"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="environment" type="environment" variant="2" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:keywords delimiters="none">
+ <cd:constant type="cd:file"/>
+ <cd:constant type="*"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="environment" variant="1" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="environment" variant="2" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:resolve name="string-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="useenvironment" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="currentenvironment" file="file-job.mkvi"/>
+
+ <cd:command name="project" type="environment" variant="1" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ <cd:constant type="*"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="project" type="environment" variant="2" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:keywords delimiters="none">
+ <cd:constant type="cd:file"/>
+ <cd:constant type="*"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="project" variant="1" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="project" variant="2" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:resolve name="string-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="useproject" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="currentproject" file="file-job.mkvi"/>
+
+ <cd:command name="product" type="environment" variant="1" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ <cd:constant type="*"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="product" type="environment" variant="2" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:keywords delimiters="none">
+ <cd:constant type="cd:file"/>
+ <cd:constant type="*"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="product" variant="1" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="product" variant="2" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:resolve name="string-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="useproduct" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="currentproduct" file="file-job.mkvi"/>
+
+ <cd:command name="component" type="environment" variant="1" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ <cd:constant type="*"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="component" type="environment" variant="2" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:keywords delimiters="none">
+ <cd:constant type="cd:file"/>
+ <cd:constant type="*"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="component" variant="1" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="component" variant="2" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:resolve name="string-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="usecomponent" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="currentcomponent" file="file-job.mkvi"/>
+
+ <cd:command name="document" type="environment" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupdocument"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupdocument" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="metadata:author">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="metadata:title">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="metadata:subject">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="metadata:keywords">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="cd:key">
+ <cd:constant type="cd:value"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="documentvariable" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-dummy.xml b/tex/context/interface/mkiv/i-dummy.xml
new file mode 100644
index 000000000..452ac311e
--- /dev/null
+++ b/tex/context/interface/mkiv/i-dummy.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="getdummyparameters" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dummyparameter" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="directdummyparameter" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setdummyparameter" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="letdummyparameter" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="usedummystyleandcolor" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="usedummystyleparameter" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="usedummycolorparameter" file="mult-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-effect.xml b/tex/context/interface/mkiv/i-effect.xml
new file mode 100644
index 000000000..c46c689e2
--- /dev/null
+++ b/tex/context/interface/mkiv/i-effect.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="defineeffect" file="attr-eff.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupeffect"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupeffect" file="attr-eff.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="method">
+ <cd:constant type="none" default="yes"/>
+ <cd:constant type="command"/>
+ </cd:parameter>
+ <cd:parameter name="stretch">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="rulethickness">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="normal" default="yes"/>
+ <cd:constant type="inner"/>
+ <cd:constant type="outer"/>
+ <cd:constant type="both"/>
+ <cd:constant type="hidden"/>
+ <cd:constant type="stretch"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="effect" type="environment" file="attr-eff.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="effect" type="environment" generated="yes" variant="generated" file="attr-eff.mkiv">
+ <cd:sequence>
+ <cd:variable value="effect"/>
+ </cd:sequence>
+ </cd:command>
+
+ <cd:command name="effect" file="attr-eff.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-enumeration.xml b/tex/context/interface/mkiv/i-enumeration.xml
new file mode 100644
index 000000000..abd1da232
--- /dev/null
+++ b/tex/context/interface/mkiv/i-enumeration.xml
@@ -0,0 +1,219 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="defineenumerations" file="strc-enu.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupenumeration"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupenumeration" file="strc-enu.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="title">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="number">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="numbercommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="titledistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="titlestyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="titlecolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="titlecommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="titleleft">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="titleright">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="symbol">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="starter">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stopper">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="coupling">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="counter">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <!-- begin construction values -->
+ <cd:parameter name="level">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="headcommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="inmargin"/>
+ <cd:constant type="inleft"/>
+ <cd:constant type="inright"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="leftmargin"/>
+ <cd:constant type="rightmargin"/>
+ <cd:constant type="innermargin"/>
+ <cd:constant type="outermargin"/>
+ <cd:constant type="serried"/>
+ <cd:constant type="hanging"/>
+ <cd:constant type="top" default="yes"/>
+ <cd:constant type="command"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:inherit name="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="headalign">
+ <cd:inherit name="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="indenting">
+ <cd:inherit name="setupindenting"/>
+ </cd:parameter>
+ <cd:parameter name="display">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="indentnext">
+ <cd:resolve name="value-indentnext"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="fit"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="line"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="none"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hang">
+ <cd:constant type="fit"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="none"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="closesymbol">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="closecommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="expansion">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ <cd:constant type="xml"/>
+ </cd:parameter>
+ <cd:parameter name="sample">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="margin">
+ <cd:resolve name="value-leftskip"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="headstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="headcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <!-- end construction values -->
+ <cd:inherit name="setupcounter"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="setupenumerations" file="strc-enu.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupenumeration"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="enumeration" type="environment" generated="yes" variant="generated:1" file="strc-enu.mkvi">
+ <cd:sequence>
+ <cd:variable value="enumeration"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="assignment-constructiondata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="enumeration" type="environment" generated="yes" variant="generated:2" file="strc-enu.mkvi">
+ <cd:sequence>
+ <cd:variable value="enumeration"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="enumeration" generated="yes" variant="generated" file="strc-enu.mkvi">
+ <cd:sequence>
+ <cd:variable value="enumeration"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="string-content"/>
+ <cd:delimiter name="par"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-export.xml b/tex/context/interface/mkiv/i-export.xml
new file mode 100644
index 000000000..40c73ee51
--- /dev/null
+++ b/tex/context/interface/mkiv/i-export.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setelementexporttag" file="back-exp.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords optional="yes">
+ <cd:constant type="export" default="yes"/>
+ <cd:constant type="nature"/>
+ <cd:constant type="pdf"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="inline"/>
+ <cd:constant type="display"/>
+ <cd:constant type="mixed"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupexport" file="back-exp.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="align">
+ <cd:constant type="flushleft"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="flushright"/>
+ <cd:constant type="normal"/>
+ </cd:parameter>
+ <cd:parameter name="bodyfont">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="title">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="subtitle">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="author">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="html"/>
+ <cd:constant type="div"/>
+ </cd:parameter>
+ <cd:parameter name="properties">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="hyphen">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <!--
+ <cd:parameter name="svgstyle">
+ <cd:constant type=""/>
+ </cd:parameter>
+ -->
+ <cd:parameter name="cssfile">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="firstpage">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="lastpage">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-field.xml b/tex/context/interface/mkiv/i-field.xml
new file mode 100644
index 000000000..67ff40ccf
--- /dev/null
+++ b/tex/context/interface/mkiv/i-field.xml
@@ -0,0 +1,383 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="presetfieldsymbols" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definefieldcategory" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupfieldcategory"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupfieldcategory" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="start">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="type">
+ <cd:constant type="radio"/>
+ <cd:constant type="sub"/>
+ <cd:constant type="text"/>
+ <cd:constant type="line"/>
+ <cd:constant type="push"/>
+ <cd:constant type="check"/>
+ <cd:constant type="signature"/>
+ </cd:parameter>
+ <cd:parameter name="values">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="default">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="fieldframecolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="fieldbackgroundcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="depth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:constant type="left"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="right"/>
+ <cd:constant type="flushleft"/>
+ <cd:constant type="center"/>
+ <cd:constant type="flushright"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="symbol">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="fieldlayer">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="option">
+ <cd:constant type="readonly"/>
+ <cd:constant type="required"/>
+ <cd:constant type="protected"/>
+ <cd:constant type="sorted"/>
+ <cd:constant type="unavailable"/>
+ <cd:constant type="nocheck"/>
+ <cd:constant type="fixed"/>
+ <cd:constant type="file"/>
+ <cd:constant type="hidden"/>
+ <cd:constant type="printable"/>
+ <cd:constant type="auto"/>
+ </cd:parameter>
+ <cd:parameter name="clickin">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="clickout">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="regionin">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="regionout">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="afterkey">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="format">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="validate">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="calculate">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="focusin">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="focusout">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="openpage">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="closepage">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsefieldcategory" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doiffieldcategoryelse" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definefieldbody" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupfieldbody"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupfieldbody" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="category">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:inherit name="setupfieldcategory"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fieldbody" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupfieldbody"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definefieldbodyset" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsefieldbody" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doiffieldbodyelse" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definefield" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords>
+ <cd:constant type="radio"/>
+ <cd:constant type="sub"/>
+ <cd:constant type="text"/>
+ <cd:constant type="line"/>
+ <cd:constant type="push"/>
+ <cd:constant type="check"/>
+ <cd:constant type="signature"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-list"/>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definesubfield" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="clonefield" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="copyfield" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fitfieldframed" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fitfield" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupfieldbody"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupfieldlabelframed" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupfieldcontentframed" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupframed"/>
+ <cd:inherit name="setupfieldcategory"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupfieldtotalframed" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="reset"/>
+ <cd:constant type="label"/>
+ <cd:constant type="frame"/>
+ <cd:constant type="horizontal"/>
+ <cd:constant type="vertical"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupfield" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="reset"/>
+ <cd:constant type="label"/>
+ <cd:constant type="frame"/>
+ <cd:constant type="horizontal"/>
+ <cd:constant type="vertical"/>
+ </cd:keywords>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupfieldtotalframed"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupfieldlabelframed"/>
+ </cd:assignments>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupfieldcontentframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupfields" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="reset"/>
+ <cd:constant type="label"/>
+ <cd:constant type="frame"/>
+ <cd:constant type="horizontal"/>
+ <cd:constant type="vertical"/>
+ </cd:keywords>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupfieldtotalframed"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupfieldlabelframed"/>
+ </cd:assignments>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupfieldcontentframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="field" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definefieldstack" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-list"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupfieldcategory"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fieldstack" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupfieldcategory"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-figure.xml b/tex/context/interface/mkiv/i-figure.xml
new file mode 100644
index 000000000..a53678e89
--- /dev/null
+++ b/tex/context/interface/mkiv/i-figure.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="figure" type="environment" file="grph-fig.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-file"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="externalfigure"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="referring" file="grph-fig.mkiv">
+ <cd:arguments>
+ <cd:position list="yes"/>
+ <cd:position list="yes"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="marking" file="grph-fig.mkiv">
+ <cd:arguments>
+ <cd:position list="yes"/>
+ <cd:position list="yes"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="remark" file="grph-fig.mkiv">
+ <cd:arguments>
+ <cd:position list="yes"/>
+ <cd:position list="yes"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="colorbar" file="grph-fig.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-color-list"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-file.xml b/tex/context/interface/mkiv/i-file.xml
new file mode 100644
index 000000000..4805c0faf
--- /dev/null
+++ b/tex/context/interface/mkiv/i-file.xml
@@ -0,0 +1,404 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="input" variant="1" file="file-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="input" variant="2" file="file-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="string-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doiffile" file="file-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnotfile" file="file-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsefile" file="file-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doiffileelse" file="file-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="jobfilename" file="core-sys.mkiv"/>
+
+ <cd:command name="jobfilesuffix" file="core-sys.mkiv"/>
+
+ <cd:command name="inputfilebarename" file="core-sys.mkiv"/>
+
+ <cd:command name="inputfilerealsuffix" file="core-sys.mkiv"/>
+
+ <cd:command name="inputfilesuffix" file="core-sys.mkiv"/>
+
+ <cd:command name="inputfilename" file="core-sys.mkiv"/>
+
+ <cd:command name="outputfilename" file="core-sys.mkiv"/>
+
+ <cd:command name="readingfile" type="environment" file="file-ini.mkvi"/>
+
+ <cd:command name="endofline" type="environment" begin="push" end="pop" file="file-ini.mkvi"/>
+
+ <cd:command name="restoreendofline" file="file-ini.mkvi"/>
+
+ <cd:command name="inputgivenfile" file="file-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsepath" file="file-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifpathelse" file="file-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsefileexists" file="file-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doiffileexistselse" file="file-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsepathexists" file="file-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifpathexistselse" file="file-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelseparentfile" file="file-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifparentfileelse" file="file-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="splitfilename" file="file-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="splitofffull" file="file-ini.mkvi"/>
+
+ <cd:command name="splitoffpath" file="file-ini.mkvi"/>
+
+ <cd:command name="splitoffbase" file="file-ini.mkvi"/>
+
+ <cd:command name="splitoffname" file="file-ini.mkvi"/>
+
+ <cd:command name="splitofftype" file="file-ini.mkvi"/>
+
+ <cd:command name="splitoffkind" file="file-ini.mkvi"/>
+
+ <cd:command name="splitoffroot" file="file-ini.mkvi"/>
+
+ <cd:command name="doifelseinputfile" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifinputfileelse" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="processfile" file="file-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="usepath" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-file-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="usesubpath" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-file-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="path" type="environment" begin="push" end="pop" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetpath" file="file-job.mkvi"/>
+
+ <cd:command name="allinputpaths" file="file-job.mkvi"/>
+
+ <cd:command name="locatefilepath" file="file-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="locatedfilepath" file="file-job.mkvi"/>
+
+ <cd:command name="usezipfile" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ <cd:resolve name="keyword-file-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="processfilemany" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="processfileonce" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="processfilenone" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="loadtexfile" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="loadluafile" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="loadcldfile" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="loadanyfile" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="loadtexfileonce" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="loadluafileonce" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="loadcldfileonce" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="loadanyfileonce" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="continueifinputfile" file="file-job.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="readjobfile" file="file-res.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="readlocfile" file="file-res.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="readsysfile" file="file-res.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="readfixfile" file="file-res.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="readsetfile" file="file-res.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="readfile" file="file-res.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ReadFile" file="file-res.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="readtexfile" file="file-res.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="readxmlfile" file="file-res.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelselocfile" file="file-res.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doiflocfileelse" file="file-res.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="locfilename" file="file-res.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definefilesynonym" file="file-sys.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definefilefallback" file="file-sys.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-file-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="truefilename" file="file-sys.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-filler.xml b/tex/context/interface/mkiv/i-filler.xml
new file mode 100644
index 000000000..919267b30
--- /dev/null
+++ b/tex/context/interface/mkiv/i-filler.xml
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definefiller" file="spac-flr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupfiller"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupfiller" file="spac-flr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="leftmargin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rightmargin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="symbol" default="yes"/>
+ <cd:constant type="stretch"/>
+ <cd:constant type="rule"/>
+ <cd:constant type="space"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:constant type="local" default="yes"/>
+ <cd:constant type="global"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="broad"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="depth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:resolve name="value-alignsimple"/>
+ </cd:parameter>
+ <cd:parameter name="symbol">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="setupfillers" file="spac-flr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupfiller"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="filler" file="spac-flr.mkiv">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="sym"/>
+ <cd:constant type="symbol"/>
+ <cd:constant type="rule"/>
+ <cd:constant type="width"/>
+ <cd:constant type="space"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="checkedfiller" file="spac-flr.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="sym"/>
+ <cd:constant type="symbol"/>
+ <cd:constant type="rule"/>
+ <cd:constant type="width"/>
+ <cd:constant type="space"/>
+ <cd:constant type="cd:name"/>
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-fillinline.xml b/tex/context/interface/mkiv/i-fillinline.xml
new file mode 100644
index 000000000..dbf9f8627
--- /dev/null
+++ b/tex/context/interface/mkiv/i-fillinline.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setupfillinlines" file="pack-mrl.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="margin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rulethickness">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fillinline" file="pack-mrl.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupfillinlines"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-fillinrule.xml b/tex/context/interface/mkiv/i-fillinrule.xml
new file mode 100644
index 000000000..949b8f6ea
--- /dev/null
+++ b/tex/context/interface/mkiv/i-fillinrule.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setupfillinrules" file="pack-mrl.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="interlinespace">
+ <cd:constant type="small" default="yes"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="fit"/>
+ <cd:constant type="broad" default="yes"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="separator">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fillinrules" file="pack-mrl.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupfillinrules"/>
+ </cd:assignments>
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fillintext" file="pack-mrl.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupfillinrules"/>
+ </cd:assignments>
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-firstline.xml b/tex/context/interface/mkiv/i-firstline.xml
new file mode 100644
index 000000000..ffa706e3d
--- /dev/null
+++ b/tex/context/interface/mkiv/i-firstline.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definefirstline" file="typo-fln.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupfirstline"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupfirstline" file="typo-fln.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="default"/>
+ <cd:constant type="line" default="yes"/>
+ <cd:constant type="word"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setfirstline" file="typo-fln.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="applytofirstcharacter" file="typo-fln.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-fittingpage.xml b/tex/context/interface/mkiv/i-fittingpage.xml
new file mode 100644
index 000000000..3489c55e2
--- /dev/null
+++ b/tex/context/interface/mkiv/i-fittingpage.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definefittingpage" file="page-app.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupfittingpage"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupfittingpage" file="page-app.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="pagestate">
+ <cd:constant type="start"/>
+ <cd:constant type="stop" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="margin">
+ <cd:constant type="page"/>
+ </cd:parameter>
+ <cd:parameter name="scale">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="paper">
+ <cd:constant type="auto"/>
+ <cd:constant type="defaut" default="yes"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fittingpage" type="environment" file="page-app.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupfittingpage"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fittingpage" type="environment" generated="yes" variant="generated" file="page-app.mkiv">
+ <cd:sequence>
+ <cd:variable value="fittingpage"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupfittingpage"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="TEXpage" type="environment" file="page-app.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupfittingpage"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupTEXpage" file="page-app.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupfittingpage"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPpage" type="environment" file="meta-fig.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupfittingpage"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupMPpage" file="meta-fig.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupfittingpage"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-floats.xml b/tex/context/interface/mkiv/i-floats.xml
new file mode 100644
index 000000000..d786769fc
--- /dev/null
+++ b/tex/context/interface/mkiv/i-floats.xml
@@ -0,0 +1,736 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definefloat" variant="1" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-singular"/>
+ <cd:resolve name="keyword-plural-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupfloat"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definefloat" variant="2" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-singular"/>
+ <cd:resolve name="keyword-plural-optional"/>
+ <cd:resolve name="keyword-singular-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupfloat" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-singular-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="indentnext">
+ <cd:resolve name="value-indentnext"/>
+ </cd:parameter>
+ <cd:parameter name="default">
+ <cd:inherit name="placefloat"/>
+ </cd:parameter>
+ <cd:parameter name="fallback">
+ <cd:inherit name="placefloat"/>
+ </cd:parameter>
+ <cd:parameter name="inner">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="criterium">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="sidemethod">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="textmethod">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="sidealign">
+ <cd:constant type="height"/>
+ <cd:constant type="depth"/>
+ <cd:constant type="line"/>
+ <cd:constant type="halfline"/>
+ <cd:constant type="grid"/>
+ <cd:constant type="normal" default="yes"/>
+ </cd:parameter>
+ <!--
+ <cd:parameter name="topoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="bottomoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ -->
+ <cd:parameter name="local">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="availablewidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="availableheight">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="minwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="maxwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:resolve name="value-alignline"/>
+ </cd:parameter>
+ <cd:parameter name="leftmargindistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rightmargindistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="leftmargin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rightmargin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="innermargin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="outermargin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="bottombefore">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="bottomafter">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <!-- begin root only -->
+ <cd:parameter name="spacebefore">
+ <cd:constant type="none"/>
+ <cd:inherit name="blank"/>
+ </cd:parameter>
+ <cd:parameter name="spaceafter">
+ <cd:constant type="none"/>
+ <cd:inherit name="blank"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="none"/>
+ <cd:constant type="overlay"/>
+ </cd:parameter>
+ <cd:parameter name="sidespacebefore">
+ <cd:constant type="none"/>
+ <cd:inherit name="blank"/>
+ </cd:parameter>
+ <cd:parameter name="sidespaceafter">
+ <cd:constant type="none"/>
+ <cd:inherit name="blank"/>
+ </cd:parameter>
+ <cd:parameter name="margin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="ntop">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="nbottom">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="step">
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big" default="yes"/>
+ <cd:constant type="line"/>
+ <cd:constant type="depth"/>
+ </cd:parameter>
+ <cd:parameter name="nlines">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="cache">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <!-- end root only -->
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="setupfloats" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-singular-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupfloat"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definefloatcaption" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupfloatcaption"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="setupfloatcaption" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="suffix">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="suffixseparator">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="suffixstopper">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="low"/>
+ <cd:constant type="high"/>
+ <cd:constant type="grid"/>
+ <cd:constant type="overlay"/>
+ <cd:constant type="inner"/>
+ <cd:constant type="outer"/>
+ <cd:constant type="innermargin"/>
+ <cd:constant type="outermargin"/>
+ <cd:constant type="leftmargin"/>
+ <cd:constant type="rightmargin"/>
+ <cd:constant type="lefthanging"/>
+ <cd:constant type="righthanging"/>
+ <cd:constant type="hang"/>
+ <cd:constant type="top"/>
+ <cd:constant type="bottom" default="yes"/>
+ <cd:constant type="stretch"/>
+ <cd:constant type="none"/>
+ <cd:constant type="default"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="numbercommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="textcommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="spacebefore">
+ <cd:inherit name="blank"/>
+ </cd:parameter>
+ <cd:parameter name="spaceinbetween">
+ <cd:inherit name="blank"/>
+ </cd:parameter>
+ <cd:parameter name="spaceafter">
+ <cd:inherit name="blank"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="topoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="bottomoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="number">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="group">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="leftmargin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rightmargin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="innermargin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="outermargin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:inherit name="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="fit" default="yes"/>
+ <cd:constant type="max"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="minwidth">
+ <cd:constant type="fit" default="yes"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="maxwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:inherit name="setupcounter"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupcaption" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupfloatcaption"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="setupcaptions" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupfloatcaption"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="placefloat" generated="yes" variant="generated" file="strc-flt.mkvi">
+ <cd:sequence>
+ <cd:string value="place"/>
+ <cd:variable value="float"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-floatlocation-list-optional"/>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placefloat" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-singular"/>
+ <cd:resolve name="keyword-floatlocation-list-optional"/>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placefloat" type="environment" generated="yes" variant="generated" file="strc-flt.mkvi">
+ <cd:sequence>
+ <cd:string value="place"/>
+ <cd:variable value="float"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="assignment-floatdata-list-optional"/>
+ <cd:resolve name="assignment-userdata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placefloat" type="environment" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-singular"/>
+ <cd:resolve name="assignment-floatdata-list-optional"/>
+ <cd:resolve name="assignment-userdata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="floattext" type="environment" generated="yes" variant="generated" file="strc-flt.mkvi">
+ <cd:sequence>
+ <cd:variable value="float"/>
+ <cd:string value="text"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-floatlocation-list-optional"/>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placelistoffloats" generated="yes" variant="generated" file="strc-flt.mkvi">
+ <cd:sequence>
+ <cd:string value="placelistof"/>
+ <cd:variable value="floats"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="completelistoffloats" generated="yes" variant="generated" file="strc-flt.mkvi">
+ <cd:sequence>
+ <cd:string value="completelistof"/>
+ <cd:variable value="floats"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="floatuserdataparameter" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelserightpagefloat" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifrightpagefloatelse" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelseoddpagefloat" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifoddpagefloatelse" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsemainfloatbody" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifmainfloatbodyelse" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placefigure" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-floatlocation-list-optional"/>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placefigure" type="environment" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="assignment-floatdata-list-optional"/>
+ <cd:resolve name="assignment-userdata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="figuretext" type="environment" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-floatlocation-list-optional"/>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placelistoffigures" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="completelistoffigures" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placetable" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-floatlocation-list-optional"/>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placetable" type="environment" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="assignment-floatdata-list-optional"/>
+ <cd:resolve name="assignment-userdata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tabletext" type="environment" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-floatlocation-list-optional"/>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placelistoftables" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="completelistoftables" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placegraphic" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-floatlocation-list-optional"/>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placegraphic" type="environment" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="assignment-floatdata-list-optional"/>
+ <cd:resolve name="assignment-userdata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="graphictext" type="environment" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-floatlocation-list-optional"/>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placelistofgraphics" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="completelistofgraphics" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placeintermezzo" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-floatlocation-list-optional"/>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placeintermezzo" type="environment" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="assignment-floatdata-list-optional"/>
+ <cd:resolve name="assignment-userdata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="intermezzotext" type="environment" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-floatlocation-list-optional"/>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placelistofintermezzi" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="completelistofintermezzi" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placechemical" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-floatlocation-list-optional"/>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placechemical" type="environment" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="assignment-floatdata-list-optional"/>
+ <cd:resolve name="assignment-userdata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placelistofchemicals" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="completelistofchemicals" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuplocalfloats" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="noflocalfloats" file="strc-flt.mkvi"/>
+
+ <cd:command name="resetlocalfloats" file="strc-flt.mkvi"/>
+
+ <cd:command name="somelocalfloat" file="strc-flt.mkvi"/>
+
+ <cd:command name="getlocalfloats" file="strc-flt.mkvi"/>
+
+ <cd:command name="flushlocalfloats" file="strc-flt.mkvi"/>
+
+ <cd:command name="getlocalfloat" file="strc-flt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="forcelocalfloats" file="strc-flt.mkvi"/>
+
+ <cd:command name="setupfloatsplitting" file="tabl-tsp.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="lines">
+ <cd:constant type="auto"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="conversion">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="splitfloat" file="tabl-tsp.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupfloatsplitting"/>
+ </cd:assignments>
+ <cd:resolve name="argument-command"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnotinsidesplitfloat" file="tabl-tsp.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placenamedfloat" file="page-flt.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placefloatwithsetups" file="page-flt.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-floatlocation-list-optional"/>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-fontfamily.xml b/tex/context/interface/mkiv/i-fontfamily.xml
new file mode 100644
index 000000000..c069a4c17
--- /dev/null
+++ b/tex/context/interface/mkiv/i-fontfamily.xml
@@ -0,0 +1,225 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definefontfamily" variant="1" file="font-sel.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords>
+ <cd:constant type="rm" default="yes"/>
+ <cd:constant type="ss"/>
+ <cd:constant type="tt"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="hw"/>
+ <cd:constant type="cg"/>
+ <cd:constant type="roman"/>
+ <cd:constant type="serif"/>
+ <cd:constant type="regular"/>
+ <cd:constant type="sansserif"/>
+ <cd:constant type="sans"/>
+ <cd:constant type="support"/>
+ <cd:constant type="teletype"/>
+ <cd:constant type="type"/>
+ <cd:constant type="mono"/>
+ <cd:constant type="handwritten"/>
+ <cd:constant type="calligraphic"/>
+ <cd:constant type="math"/>
+ <cd:constant type="mathematics"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-font"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="rscale">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="designsize">
+ <cd:constant type="default"/>
+ <cd:constant type="auto"/>
+ </cd:parameter>
+ <cd:parameter name="goodies">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="features">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="tf">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="bf">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="it">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="sl">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="bi">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="bs">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="sc">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definefontfamily" variant="2" file="font-sel.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords>
+ <cd:constant type="rm" default="yes"/>
+ <cd:constant type="ss"/>
+ <cd:constant type="tt"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="hw"/>
+ <cd:constant type="cg"/>
+ <cd:constant type="roman"/>
+ <cd:constant type="serif"/>
+ <cd:constant type="regular"/>
+ <cd:constant type="sansserif"/>
+ <cd:constant type="sans"/>
+ <cd:constant type="support"/>
+ <cd:constant type="teletype"/>
+ <cd:constant type="type"/>
+ <cd:constant type="mono"/>
+ <cd:constant type="handwritten"/>
+ <cd:constant type="calligraphic"/>
+ <cd:constant type="math"/>
+ <cd:constant type="mathematics"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-font"/>
+ <cd:resolve name="keyword-name-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definefallbackfamily" variant="1" file="font-sel.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords>
+ <cd:constant type="rm" default="yes"/>
+ <cd:constant type="ss"/>
+ <cd:constant type="tt"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="hw"/>
+ <cd:constant type="cg"/>
+ <cd:constant type="roman"/>
+ <cd:constant type="serif"/>
+ <cd:constant type="regular"/>
+ <cd:constant type="sansserif"/>
+ <cd:constant type="sans"/>
+ <cd:constant type="support"/>
+ <cd:constant type="teletype"/>
+ <cd:constant type="type"/>
+ <cd:constant type="mono"/>
+ <cd:constant type="handwritten"/>
+ <cd:constant type="calligraphic"/>
+ <cd:constant type="math"/>
+ <cd:constant type="mathematics"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-font"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="rscale">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="designsize">
+ <cd:constant type="default"/>
+ <cd:constant type="auto"/>
+ </cd:parameter>
+ <cd:parameter name="goodies">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="range">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="check">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="force">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="features">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="tf">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="bf">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="it">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="sl">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="bi">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="bs">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="sc">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definefallbackfamily" variant="2" file="font-sel.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords>
+ <cd:constant type="rm" default="yes"/>
+ <cd:constant type="ss"/>
+ <cd:constant type="tt"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="hw"/>
+ <cd:constant type="cg"/>
+ <cd:constant type="roman"/>
+ <cd:constant type="serif"/>
+ <cd:constant type="regular"/>
+ <cd:constant type="sansserif"/>
+ <cd:constant type="sans"/>
+ <cd:constant type="support"/>
+ <cd:constant type="teletype"/>
+ <cd:constant type="type"/>
+ <cd:constant type="mono"/>
+ <cd:constant type="handwritten"/>
+ <cd:constant type="calligraphic"/>
+ <cd:constant type="math"/>
+ <cd:constant type="mathematics"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-font"/>
+ <cd:resolve name="keyword-name-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definefontfamilypreset" variant="1" file="font-sel.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignment list="yes">
+ <cd:inherit name="definefontfamily"/>
+ </cd:assignment>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definefontfamilypreset" variant="2" file="font-sel.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-fonts.xml b/tex/context/interface/mkiv/i-fonts.xml
new file mode 100644
index 000000000..112b93c6e
--- /dev/null
+++ b/tex/context/interface/mkiv/i-fonts.xml
@@ -0,0 +1,1627 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definefontfallback" file="font-col.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords>
+ <cd:constant type="cd:font"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="rscale">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="force">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="check">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetfontfallback" file="font-col.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-font-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="emphasistypeface" file="font-emp.mkvi"/>
+
+ <cd:command name="emphasisboldface" file="font-emp.mkvi"/>
+
+ <cd:command name="normalboldface" file="font-emp.mkvi"/>
+
+ <cd:command name="normaltypeface" file="font-emp.mkvi"/>
+
+ <cd:command name="swaptypeface" file="font-emp.mkvi"/>
+
+ <cd:command name="typeface" file="font-emp.mkvi"/>
+
+ <cd:command name="boldface" file="font-emp.mkvi"/>
+
+ <cd:command name="swapface" file="font-emp.mkvi"/>
+
+ <!--
+
+ <cd:command name="emphbf" file="font-emp.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="emphit" file="font-emp.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="emphsl" file="font-emp.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="emphtf" file="font-emp.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="emph" file="font-emp.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="emphasized" file="font-emp.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="definefontfeature" file="font-fea.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="language">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="script">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="auto"/>
+ </cd:parameter>
+ <cd:parameter name="mode">
+ <cd:constant type="node"/>
+ <cd:constant type="base"/>
+ <cd:constant type="auto"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="liga">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="kern">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="extrakerns">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="tlig">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="trep">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="missing">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="dummies">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="analyze">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="unicoding">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="expansion">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="protrusion">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="nostackmath">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="realdimensions">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="itlc">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="textitalics">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="mathitalics">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="slant">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="extend">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="dimensions">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="boundingbox">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="compose">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="char-ligatures">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="compat-ligatures">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="goodies">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="extrafeatures">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="featureset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="colorsheme">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="postprocessor">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="mathdimensions">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="keepligatures">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="auto"/>
+ </cd:parameter>
+ <cd:parameter name="devanagari">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="features">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="tcom">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="anum">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="mathsize">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="decomposehangul">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="mathalternatives">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="mathgaps">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="cd:name">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fontfeaturelist" file="font-fea.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="addfeature" variant="1" file="font-fea.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="addfeature" variant="2" file="font-fea.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="subtractfeature" variant="1" file="font-fea.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="subtractfeature" variant="2" file="font-fea.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="replacefeature" variant="1" file="font-fea.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="replacefeature" variant="2" file="font-fea.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetandaddfeature" variant="1" file="font-fea.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetandaddfeature" variant="2" file="font-fea.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetfeature" file="font-fea.mkvi"/>
+
+ <cd:command name="revivefeature" file="font-fea.mkvi"/>
+
+ <cd:command name="setfontfeature" file="font-fea.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="feature" variant="1" file="font-fea.mkvi">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="="/>
+ <cd:constant type="!"/>
+ <cd:constant type="&gt;"/>
+ <cd:constant type="&lt;"/>
+ <cd:constant type="more"/>
+ <cd:constant type="less"/>
+ <cd:constant type="new"/>
+ <cd:constant type="reset"/>
+ <cd:constant type="default"/>
+ <cd:constant type="old"/>
+ <cd:constant type="local"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="feature" variant="2" file="font-fea.mkvi">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="="/>
+ <cd:constant type="!"/>
+ <cd:constant type="&gt;"/>
+ <cd:constant type="&lt;"/>
+ <cd:constant type="more"/>
+ <cd:constant type="less"/>
+ <cd:constant type="new"/>
+ <cd:constant type="reset"/>
+ <cd:constant type="default"/>
+ <cd:constant type="old"/>
+ <cd:constant type="local"/>
+ </cd:keywords>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsecurrentfonthasfeature" file="font-fea.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifcurrentfonthasfeatureelse" file="font-fea.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doaddfeature" file="font-fea.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dosubtractfeature" file="font-fea.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doreplacefeature" file="font-fea.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doresetandafffeature" file="font-fea.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fontclass" type="environment" file="font-fil.mkvi">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="each"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="classfont" file="font-fil.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-font"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definefontsynonym" file="font-fil.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-font"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="features">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="fallbacks">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="goodies">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="designsize">
+ <cd:constant type="auto"/>
+ <cd:constant type="default"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definefontfile" file="font-fil.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-file"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="features">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="fallbacks">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="goodies">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="designsize">
+ <cd:constant type="auto"/>
+ <cd:constant type="default"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="truefontname" file="font-fil.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-font"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="expandfontsynonym" file="font-fil.mkvi">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsefontsynonym" file="font-fil.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doiffontsynonymelse" file="font-fil.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tracedfontname" file="font-fil.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-font"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fontclassname" file="font-fil.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-font"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="loadfontgoodies" file="font-gds.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setfontcolorsheme" file="font-gds.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetfontcolorsheme" file="font-gds.mkvi"/>
+
+ <cd:command name="definedfont" file="font-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-font-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="font" type="environment" file="font-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-font-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="bodyfontsize" file="font-ini.mkvi"/>
+
+ <cd:command name="normalizebodyfontsize" file="font-ini.mkvi">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="thenormalizedbodyfontsize" file="font-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mapfontsize" file="font-fil.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-dimension"/>
+ <cd:resolve name="keyword-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definefontstyle" file="font-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list"/>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definefontsize" file="font-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definefontalternative" file="font-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definefont" variant="1" file="font-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-font"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupinterlinespace"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definefont" variant="2" file="font-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-font"/>
+ <cd:resolve name="keyword-name-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definefrozenfont" file="font-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-font"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definebodyfontenvironment" file="font-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:keywords>
+ <cd:constant type="default"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="big">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="small">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="a">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="b">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="c">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="d">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="x">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="xx">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="script">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="scriptscript">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="interlinespace">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="em">
+ <cd:constant type="slanted"/>
+ <cd:constant type="italic"/>
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="*">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="setupbodyfontenvironment" file="font-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:keywords>
+ <cd:constant type="default"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="definebodyfontenvironment"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="processbodyfontenvironmentlist" file="font-fil.mkvi">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="bodyfontenvironmentlist" file="font-fil.mkvi"/>
+
+ <cd:command name="registerfontclass" file="font-fil.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setcurrentfontclass" file="font-fil.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tx" file="font-ini.mkvi"/>
+
+ <cd:command name="txx" file="font-ini.mkvi"/>
+
+ <cd:command name="definebodyfont" variant="1" file="font-fil.mkvi">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="default"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="rm" default="yes"/>
+ <cd:constant type="ss"/>
+ <cd:constant type="tt"/>
+ <cd:constant type="hw"/>
+ <cd:constant type="cg"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="tf">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="bf">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="it">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="sl">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="bi">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="bs">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="sc">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="mr">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="mrlr">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="mrrl">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="mb">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="mblr">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="mbrl">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definebodyfont" variant="2" file="font-fil.mkvi">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="default"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="rm" default="yes"/>
+ <cd:constant type="ss"/>
+ <cd:constant type="tt"/>
+ <cd:constant type="hw"/>
+ <cd:constant type="cg"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupbodyfont" file="font-ini.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="cd:name"/>
+ <cd:constant type="global"/>
+ <cd:constant type="reset"/>
+ <cd:constant type="x"/>
+ <cd:constant type="xx"/>
+ <cd:constant type="small"/>
+ <cd:constant type="big"/>
+ <cd:constant type="script"/>
+ <cd:constant type="scriptscript"/>
+ <cd:constant type="rm"/>
+ <cd:constant type="ss"/>
+ <cd:constant type="tt"/>
+ <cd:constant type="hw"/>
+ <cd:constant type="cg"/>
+ <cd:constant type="roman"/>
+ <cd:constant type="serif"/>
+ <cd:constant type="regular"/>
+ <cd:constant type="sans"/>
+ <cd:constant type="sansserif"/>
+ <cd:constant type="support"/>
+ <cd:constant type="type"/>
+ <cd:constant type="teletype"/>
+ <cd:constant type="mono"/>
+ <cd:constant type="handwritten"/>
+ <cd:constant type="calligraphic"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="switchtobodyfont" file="font-ini.mkvi">
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:inherit name="setupbodyfont"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fastswitchtobodyfont" file="font-ini.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="x"/>
+ <cd:constant type="xx"/>
+ <cd:constant type="small"/>
+ <cd:constant type="big"/>
+ <cd:constant type="script"/>
+ <cd:constant type="scriptscript"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="usebodyfont" file="font-ini.mkvi">
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:inherit name="setupbodyfont"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="usebodyfontparameter" file="font-ini.mkvi">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fontchar" file="font-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fontcharbyindex" file="font-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tochar" file="font-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="switchstyleonly" variant="1" file="font-ini.mkiv">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="rm"/>
+ <cd:constant type="ss"/>
+ <cd:constant type="tt"/>
+ <cd:constant type="hw"/>
+ <cd:constant type="cg"/>
+ <cd:constant type="roman"/>
+ <cd:constant type="serif"/>
+ <cd:constant type="regular"/>
+ <cd:constant type="sans"/>
+ <cd:constant type="sansserif"/>
+ <cd:constant type="support"/>
+ <cd:constant type="type"/>
+ <cd:constant type="teletype"/>
+ <cd:constant type="mono"/>
+ <cd:constant type="handwritten"/>
+ <cd:constant type="calligraphic"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="switchstyleonly" variant="2" file="font-ini.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definebodyfontswitch" file="font-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords list="yes">
+ <cd:inherit name="setupbodyfont"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setsmallbodyfont" file="font-ini.mkvi"/>
+
+ <cd:command name="setbigbodyfont" file="font-ini.mkvi"/>
+
+ <cd:command name="setmainbodyfont" file="font-ini.mkvi"/>
+
+ <cd:command name="restoreglobalbodyfont" file="font-ini.mkvi"/>
+
+ <cd:command name="predefinefont" file="font-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-font"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="predefinedfont" file="font-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-font"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showbodyfont" file="font-run.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:inherit name="setupbodyfont"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showbodyfontenvironment" file="font-run.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:inherit name="setupbodyfont"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showfont" file="font-run.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-font"/>
+ <cd:resolve name="keyword-number-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showfontstyle" file="font-run.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:inherit name="setupbodyfont"/>
+ </cd:keywords>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="rm"/>
+ <cd:constant type="ss"/>
+ <cd:constant type="tt"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="hw"/>
+ <cd:constant type="cg"/>
+ </cd:keywords>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="tf"/>
+ <cd:constant type="bf"/>
+ <cd:constant type="it"/>
+ <cd:constant type="sl"/>
+ <cd:constant type="bi"/>
+ <cd:constant type="bs"/>
+ </cd:keywords>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="all"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showligature" file="font-run.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showligatures" file="font-run.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-font"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showfontstrip" file="font-run.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:inherit name="setupbodyfont"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showminimalbaseline" file="font-run.mkiv"/>
+
+ <cd:command name="showkerning" file="font-run.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showcharratio" file="font-run.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showfontparameters" file="font-run.mkiv"/>
+
+ <cd:command name="setsmallcaps" file="font-pre.mkiv"/>
+
+ <cd:command name="setoldstyle" file="font-pre.mkiv"/>
+
+ <cd:command name="settabular" file="font-pre.mkiv"/>
+
+ <cd:command name="setsuperiors" file="font-pre.mkiv"/>
+
+ <cd:command name="tinyfont" file="font-pre.mkiv"/>
+
+ <cd:command name="infofont" file="font-pre.mkiv"/>
+
+ <cd:command name="infofontbold" file="font-pre.mkiv"/>
+
+ <cd:command name="smallbodyfont" file="font-pre.mkiv"/>
+
+ <cd:command name="bigbodyfont" file="font-pre.mkiv"/>
+
+ <cd:command name="smaller" file="font-pre.mkiv"/>
+
+ <cd:command name="bigger" file="font-pre.mkiv"/>
+
+ <cd:command name="normal" file="font-pre.mkiv"/>
+
+ <cd:command name="bold" file="font-pre.mkiv"/>
+
+ <cd:command name="mono" file="font-pre.mkiv"/>
+
+ <cd:command name="monobold" file="font-pre.mkiv"/>
+
+ <cd:command name="slanted" file="font-pre.mkiv"/>
+
+ <cd:command name="italic" file="font-pre.mkiv"/>
+
+ <cd:command name="boldslanted" file="font-pre.mkiv"/>
+
+ <cd:command name="slantedbold" file="font-pre.mkiv"/>
+
+ <cd:command name="bolditalic" file="font-pre.mkiv"/>
+
+ <cd:command name="italicbold" file="font-pre.mkiv"/>
+
+ <cd:command name="small" file="font-pre.mkiv"/>
+
+ <cd:command name="smallnormal" file="font-pre.mkiv"/>
+
+ <cd:command name="smallbold" file="font-pre.mkiv"/>
+
+ <cd:command name="smalltype" file="font-pre.mkiv"/>
+
+ <cd:command name="smallslanted" file="font-pre.mkiv"/>
+
+ <cd:command name="smallboldslanted" file="font-pre.mkiv"/>
+
+ <cd:command name="smallslantedbold" file="font-pre.mkiv"/>
+
+ <cd:command name="smallbolditalic" file="font-pre.mkiv"/>
+
+ <cd:command name="smallitalicbold" file="font-pre.mkiv"/>
+
+ <cd:command name="sans" file="font-pre.mkiv"/>
+
+ <cd:command name="sansserif" file="font-pre.mkiv"/>
+
+ <cd:command name="roman" file="font-pre.mkiv"/>
+
+ <cd:command name="serif" file="font-pre.mkiv"/>
+
+ <cd:command name="regular" file="font-pre.mkiv"/>
+
+ <cd:command name="handwritten" file="font-pre.mkiv"/>
+
+ <cd:command name="calligraphic" file="font-pre.mkiv"/>
+
+ <cd:command name="sansnormal" file="font-pre.mkiv"/>
+
+ <cd:command name="sansbold" file="font-pre.mkiv"/>
+
+ <cd:command name="serifnormal" file="font-pre.mkiv"/>
+
+ <cd:command name="serifbold" file="font-pre.mkiv"/>
+
+ <cd:command name="mononormal" file="font-pre.mkiv"/>
+
+ <cd:command name="monobold" file="font-pre.mkiv"/>
+
+ <cd:command name="definefontsolution" file="font-sol.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupfontsolution"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupfontsolution" file="font-sol.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="goodies">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="solution">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="less">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="more">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:constant type="preroll"/>
+ <cd:constant type="split"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="reverse"/>
+ <cd:constant type="random"/>
+ </cd:parameter>
+ <cd:parameter name="criterium">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="setupfontsolutions" file="font-sol.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupfontsolution"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="setfontsolution" file="font-sol.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetfontsolution" file="font-sol.mkvi"/>
+
+ <cd:command name="fontsolution" type="environment" file="font-sol.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definealternativestyle" file="font-sty.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list"/>
+ <cd:resolve name="keyword-command"/>
+ <cd:resolve name="keyword-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="applyalternativestyle" file="font-sty.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dontconvertfont" file="font-sty.mkvi"/>
+
+ <cd:command name="redoconvertfont" file="font-sty.mkvi"/>
+
+ <cd:command name="definestyle" file="font-sty.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupstyle"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupstyle" file="font-sty.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="method">
+ <cd:constant type="command"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="style" type="environment" generated="yes" variant="generated" file="font-sty.mkvi">
+ <cd:sequence>
+ <cd:variable value="style"/>
+ </cd:sequence>
+ </cd:command>
+
+ <cd:command name="style" generated="yes" variant="generated" file="font-sty.mkvi">
+ <cd:sequence>
+ <cd:variable value="style"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="style" type="environment" variant="1" file="font-sty.mkvi">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ <cd:constant type="cd:font"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="style" type="environment" variant="2" file="font-sty.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupstyle"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="style" variant="1" file="font-sty.mkvi">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ <cd:constant type="cd:font"/>
+ </cd:keywords>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="style" variant="2" file="font-sty.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupstyle"/>
+ </cd:assignments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definestyleinstance" file="font-sty.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords optional="yes">
+ <cd:constant type="rm"/>
+ <cd:constant type="ss"/>
+ <cd:constant type="tt"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="hw"/>
+ <cd:constant type="cg"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="tf"/>
+ <cd:constant type="bf"/>
+ <cd:constant type="it"/>
+ <cd:constant type="sl"/>
+ <cd:constant type="bi"/>
+ <cd:constant type="bs"/>
+ <cd:constant type="sc"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="styleinstance" file="font-sty.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelseitalic" file="font-sym.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifitalicelse" file="font-sym.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="glyphfontfile" file="font-sym.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-font"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getnamedglyphstyled" file="font-sym.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-font"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getnamedglyphdirect" file="font-sym.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-font"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getglyphstyled" file="font-sym.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-font"/>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="cd:character"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getglyphdirect" file="font-sym.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-font"/>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="cd:character"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setfont" file="font-sym.mkvi">
+ <cd:arguments>
+ <cd:resolve name="string-font"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsefontchar" file="font-sym.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-font"/>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doiffontcharelse" file="font-sym.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-font"/>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showchardata" file="font-tra.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showfontdata" file="font-tra.mkiv"/>
+
+ <cd:command name="doifelsefontpresent" file="font-tra.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-font"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doiffontpresentelse" file="font-tra.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-font"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showotfcomposition" file="font-tra.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-font"/>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="-1"/>
+ <cd:constant type="1"/>
+ <cd:constant type="+1"/>
+ <cd:constant type="l2r"/>
+ <cd:constant type="r2l"/>
+ </cd:keywords>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fontclass" file="font-var.mkvi"/>
+
+ <cd:command name="fontbody" file="font-var.mkvi"/>
+
+ <cd:command name="fontstyle" file="font-var.mkvi"/>
+
+ <cd:command name="fontalternative" file="font-var.mkvi"/>
+
+ <cd:command name="fontsize" file="font-var.mkvi"/>
+
+ <cd:command name="fontface" file="font-var.mkvi"/>
+
+ <cd:command name="typescriptone" file="type-ini.mkvi"/>
+
+ <cd:command name="typescripttwo" file="type-ini.mkvi"/>
+
+ <cd:command name="typescriptthree" file="type-ini.mkvi"/>
+
+ <cd:command name="typescriptcollection" type="environment" file="type-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="usetypescriptfile" file="type-ini.mkvi">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="reset"/>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="usetypescript" file="type-ini.mkvi">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="serif"/>
+ <cd:constant type="sans"/>
+ <cd:constant type="mono"/>
+ <cd:constant type="math"/>
+ <cd:constant type="handwriting"/>
+ <cd:constant type="calligraphy"/>
+ <cd:constant type="casual"/>
+ <cd:constant type="all"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ <cd:constant type="fallback"/>
+ <cd:constant type="default"/>
+ <cd:constant type="dtp"/>
+ <cd:constant type="simple"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="size"/>
+ <cd:constant type="name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="loadtypescriptfile" file="type-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="quittypescriptscanning" file="type-ini.mkvi"/>
+
+ <cd:command name="definetypescriptsynonym" file="type-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="typescript" type="environment" file="type-ini.mkvi">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="serif"/>
+ <cd:constant type="sans"/>
+ <cd:constant type="mono"/>
+ <cd:constant type="math"/>
+ <cd:constant type="handwriting"/>
+ <cd:constant type="calligraphy"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="size"/>
+ <cd:constant type="name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definetypescriptprefix" file="type-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="typescriptprefix" file="type-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definetypeface" file="type-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords>
+ <cd:constant type="rm"/>
+ <cd:constant type="ss"/>
+ <cd:constant type="tt"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="hw"/>
+ <cd:constant type="cg"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="serif"/>
+ <cd:constant type="sans"/>
+ <cd:constant type="mono"/>
+ <cd:constant type="math"/>
+ <cd:constant type="handwriting"/>
+ <cd:constant type="calligraphy"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords optional="yes">
+ <cd:constant type="default" default="yes"/>
+ <cd:constant type="dtp"/>
+ </cd:keywords>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="rscale">
+ <cd:constant type="auto"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="features">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="fallbacks">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="goodies">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="designsize">
+ <cd:constant type="auto"/>
+ <cd:constant type="default"/>
+ </cd:parameter>
+ <cd:parameter name="direction">
+ <cd:constant type="both"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupfontexpansion" file="hand-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="vector">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="factor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="stretch">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="shrink">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="step">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupfontprotrusion" file="hand-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="vector">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="factor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-form.xml b/tex/context/interface/mkiv/i-form.xml
new file mode 100644
index 000000000..0f02d0670
--- /dev/null
+++ b/tex/context/interface/mkiv/i-form.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setupforms" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="method">
+ <cd:constant type="XML" default="yes"/>
+ <cd:constant type="HTML"/>
+ <cd:constant type="PDF"/>
+ </cd:parameter>
+ <cd:parameter name="export">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-formula.xml b/tex/context/interface/mkiv/i-formula.xml
new file mode 100644
index 000000000..da1d1c0cf
--- /dev/null
+++ b/tex/context/interface/mkiv/i-formula.xml
@@ -0,0 +1,298 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="defineformula" file="math-for.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupformula"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupformula" file="math-for.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="location">
+ <cd:constant type="left"/>
+ <cd:constant type="right" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:constant type="left"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="right"/>
+ <cd:constant type="flushleft"/>
+ <cd:constant type="center"/>
+ <cd:constant type="flushright"/>
+ <cd:constant type="normal"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="spacebefore">
+ <cd:inherit name="blank"/>
+ </cd:parameter>
+ <cd:parameter name="spaceafter">
+ <cd:inherit name="blank"/>
+ </cd:parameter>
+ <cd:parameter name="numbercommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="option">
+ <cd:constant type="middle"/>
+ </cd:parameter>
+ <cd:parameter name="margin">
+ <cd:resolve name="value-leftskip"/>
+ </cd:parameter>
+ <cd:parameter name="leftmargin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rightmargin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="indentnext">
+ <cd:resolve name="value-indentnext"/>
+ </cd:parameter>
+ <cd:parameter name="grid">
+ <cd:inherit name="snaptogrid"/>
+ </cd:parameter>
+ <cd:inherit name="setupcounter"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="setupformulas" file="math-for.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupformula"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="definesubformula" file="math-for.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupsubformula"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupsubformula" file="math-for.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="indentnext">
+ <cd:resolve name="value-indentnext"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="setupsubformulas" file="math-for.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupsubformula"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="formula" type="environment" generated="yes" variant="generated" file="strc-mat.mkiv">
+ <cd:sequence>
+ <cd:variable value="formula"/>
+ <cd:string value="formula"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:inherit name="setupbodyfont"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="formula" type="environment" file="strc-mat.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:inherit name="setupbodyfont"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="spformula" type="environment" file="strc-mat.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:inherit name="setupbodyfont"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="sdformula" type="environment" file="strc-mat.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:inherit name="setupbodyfont"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mpformula" type="environment" file="strc-mat.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:inherit name="setupbodyfont"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mdformula" type="environment" file="strc-mat.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:inherit name="setupbodyfont"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="defineformulaalternative" file="strc-mat.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-csname"/>
+ <cd:resolve name="keyword-csname"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="formula" file="strc-mat.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:inherit name="setupbodyfont"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="displaymath" type="environment" file="strc-mat.mkiv"/>
+
+ <cd:command name="formulas" type="environment" file="strc-mat.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="cd:reference"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="subformulas" type="environment" file="strc-mat.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="cd:reference"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="namedsubformulas" type="environment" file="strc-mat.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="cd:reference"/>
+ </cd:keywords>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placeformula" file="strc-mat.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="cd:reference"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placeformula" type="environment" variant="1" file="strc-mat.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="title">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="suffix">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="reference">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placeformula" type="environment" variant="2" file="strc-mat.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="cd:reference"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placenamedformula" file="strc-mat.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="cd:reference"/>
+ </cd:keywords>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placesubformula" file="strc-mat.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="cd:reference"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="formulanumber" file="strc-mat">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placecurrentformulanumber" file="strc-mat"/>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-fraction.xml b/tex/context/interface/mkiv/i-fraction.xml
new file mode 100644
index 000000000..444784dfa
--- /dev/null
+++ b/tex/context/interface/mkiv/i-fraction.xml
@@ -0,0 +1,191 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definemathfraction" file="math-frc.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmathfraction"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupmathfraction" file="math-frc.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="topdistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="bottomdistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="margin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="math"/>
+ <cd:constant type="tight"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="inner" default="yes"/>
+ <cd:constant type="outer"/>
+ <cd:constant type="both"/>
+ </cd:parameter>
+ <cd:parameter name="rule">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="auto" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="rulethickness">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="mathstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="no"/>
+ <cd:constant type="none" default="yes"/>
+ <cd:constant type="overlay"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="setupmathfractions" file="math-frc.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupmathfraction"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="fraction" generated="yes" variant="generated" file="math-frc.mkiv">
+ <cd:sequence>
+ <cd:variable value="fraction"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="frac" file="math-frc.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xfrac" file="math-frc.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xxfrac" file="math-frc.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tfrac" file="math-frc.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="sfrac" file="math-frc.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dfrac" file="math-frc.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="binom" file="math-frc.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dbinom" file="math-frc.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tbinom" file="math-frc.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="splitfrac" file="math-frc.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="splitdfrac" file="math-frc.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="cfrac" file="math-frc.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="l"/>
+ <cd:constant type="c"/>
+ <cd:constant type="r"/>
+ <cd:constant type="ll"/>
+ <cd:constant type="lc"/>
+ <cd:constant type="lr"/>
+ <cd:constant type="cl"/>
+ <cd:constant type="cc"/>
+ <cd:constant type="cr"/>
+ <cd:constant type="rl"/>
+ <cd:constant type="rc"/>
+ <cd:constant type="rr"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-framed.xml b/tex/context/interface/mkiv/i-framed.xml
new file mode 100644
index 000000000..1c214322a
--- /dev/null
+++ b/tex/context/interface/mkiv/i-framed.xml
@@ -0,0 +1,593 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <?context-directive job ctxfile x-setups.ctx ?>
+
+ <cd:command name="defineframed" file="pack-rul.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupframed" file="pack-rul.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="corner">
+ <cd:constant type="rectangular" default="yes"/>
+ <cd:constant type="round"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="framecorner">
+ <cd:constant type="rectangular" default="yes"/>
+ <cd:constant type="round"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="backgroundcorner">
+ <cd:constant type="rectangular" default="yes"/>
+ <cd:constant type="round"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="radius">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="frameradius">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="backgroundradius">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="depth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="framedepth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="backgrounddepth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="framecolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="topframe">
+ <cd:constant type="on" default="yes"/>
+ <cd:constant type="off"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="bottomframe">
+ <cd:constant type="on" default="yes"/>
+ <cd:constant type="off"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="leftframe">
+ <cd:constant type="on" default="yes"/>
+ <cd:constant type="off"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="rightframe">
+ <cd:constant type="on" default="yes"/>
+ <cd:constant type="off"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="region">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="rulethickness">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="frameoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="frame">
+ <cd:constant type="on" default="yes"/>
+ <cd:constant type="off"/>
+ <cd:constant type="overlay"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="background">
+ <cd:constant type="foreground"/>
+ <cd:constant type="color"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="backgroundoffset">
+ <cd:constant type="frame"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="component">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="extras">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="foregroundstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="foregroundcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="setups">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="default"/>
+ <cd:constant type="overlay"/>
+ <cd:constant type="none"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="local"/>
+ <cd:constant type="fit" default="yes"/>
+ <cd:constant type="max"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="fixed"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="fit"/>
+ <cd:constant type="max"/>
+ <cd:constant type="broad" default="yes"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:inherit name="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="local"/>
+ <cd:constant type="global"/>
+ </cd:parameter>
+ <cd:parameter name="autostrut">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="height"/>
+ <cd:constant type="depth"/>
+ <cd:constant type="high"/>
+ <cd:constant type="low"/>
+ <cd:constant type="top"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="bottom"/>
+ <cd:constant type="line"/>
+ <cd:constant type="lohi"/>
+ <cd:constant type="hanging"/>
+ <cd:constant type="keep"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="normal" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="autowidth">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="force"/>
+ </cd:parameter>
+ <!--
+ <cd:parameter name="fr!analyze">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ -->
+ <cd:parameter name="lines">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="top">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="bottom">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="blank">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="profile">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="empty">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="loffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="roffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="toffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="boffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="orientation">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <!--
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ -->
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="frameddimension" file="pack-rul.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="framedparameter" file="pack-rul.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="framed" file="pack-rul.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="framed" generated="yes" variant="generated" file="pack-rul.mkiv">
+ <cd:sequence>
+ <cd:variable value="framed"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="normalframedwithsettings" file="pack-rul.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="framed" type="environment" file="pack-rul.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fastlocalframed" file="pack-rul.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="localframed" file="pack-rul.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="directlocalframed" file="pack-rul.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="localframedwithsettings" file="pack-rul.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placeframed" file="pack-rul.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="inframed" file="pack-rul.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="unframed" file="pack-rul.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definemathframed" file="pack-rul.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmathframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupmathframed" file="pack-rul.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathframed" generated="yes" variant="generated" file="pack-rul.mkiv">
+ <cd:sequence>
+ <cd:variable value="mathframed"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmathframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mframed" file="pack-rul.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmathframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="inmframed" file="pack-rul.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmathframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mcframed" file="pack-rul.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmathframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="defineframedtext" file="pack-rul.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupframedtext"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupframedtext" file="pack-rul.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inner">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="depthcorrection">
+ <cd:constant type="on" default="yes"/>
+ <cd:constant type="off"/>
+ </cd:parameter>
+ <cd:parameter name="bodyfont">
+ <cd:inherit name="setupbodyfont"/>
+ </cd:parameter>
+ <cd:parameter name="indenting">
+ <cd:inherit name="setupindenting"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ <cd:inherit name="setupplacement"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="setupframedtexts" file="pack-rul.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupframedtext"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="framedtext" generated="yes" variant="generated" file="pack-rul.mkiv">
+ <cd:sequence>
+ <cd:variable value="framedtext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupframedtext"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="framedtext" type="environment" generated="yes" variant="generated" file="pack-rul.mkiv">
+ <cd:sequence>
+ <cd:variable value="framedtext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="none"/>
+ </cd:keywords>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupframedtext"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="framedtext" file="pack-rul.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupframedtext"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="framedtext" type="environment" file="pack-rul.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="none"/>
+ </cd:keywords>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupframedtext"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="defineframedcontent" file="pack-rul.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupframedcontent"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupframedcontent" file="pack-rul.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="leftoffser">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rightoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="topoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="bottomoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="linecorrection">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="framedcontent" type="environment" file="pack-rul.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="off"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installleftframerenderer" file="pack-fen.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installrightframerenderer" file="pack-fen.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installtopframerenderer" file="pack-fen.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installbottomframerenderer" file="pack-fen.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-graphics.xml b/tex/context/interface/mkiv/i-graphics.xml
new file mode 100644
index 000000000..876467240
--- /dev/null
+++ b/tex/context/interface/mkiv/i-graphics.xml
@@ -0,0 +1,516 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="defineexternalfigure" file="grph-inc.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupexternalfigure"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="defineexternalfigures" file="grph-inc.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupexternalfigure"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="setupexternalfigure" file="grph-inc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="label">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="page">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="object">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="prefix">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:constant type="pdf"/>
+ <cd:constant type="mps"/>
+ <cd:constant type="jpg"/>
+ <cd:constant type="png"/>
+ <cd:constant type="jp2"/>
+ <cd:constant type="jbig"/>
+ <cd:constant type="svg"/>
+ <cd:constant type="eps"/>
+ <cd:constant type="gif"/>
+ <cd:constant type="tif"/>
+ <cd:constant type="mov"/>
+ <cd:constant type="buffer"/>
+ <cd:constant type="tex"/>
+ <cd:constant type="cld"/>
+ <cd:constant type="auto"/>
+ </cd:parameter>
+ <cd:parameter name="controls">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="preview">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="mask">
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="resolution">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="repeat">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="factor">
+ <cd:constant type="fit"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="max"/>
+ <cd:constant type="auto"/>
+ <cd:constant type="default"/>
+ </cd:parameter>
+ <cd:parameter name="hfactor">
+ <cd:constant type="fit"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="max"/>
+ <cd:constant type="auto"/>
+ <cd:constant type="default"/>
+ </cd:parameter>
+ <cd:parameter name="wfactor">
+ <cd:constant type="fit"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="max"/>
+ <cd:constant type="auto"/>
+ <cd:constant type="default"/>
+ </cd:parameter>
+ <cd:parameter name="maxwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="maxheight">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="equalwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="equalheight">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="scale">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="xscale">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="yscale">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="s">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="sx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="sy">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="lines">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="local" default="yes"/>
+ <cd:constant type="global" default="yes"/>
+ <cd:constant type="default"/>
+ </cd:parameter>
+ <cd:parameter name="directory">
+ <cd:constant type="cd:path"/>
+ </cd:parameter>
+ <cd:parameter name="option">
+ <cd:constant type="test"/>
+ <cd:constant type="frame"/>
+ <cd:constant type="empty"/>
+ </cd:parameter>
+ <cd:parameter name="forgroundcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="reset">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="background">
+ <cd:constant type="color"/>
+ <cd:constant type="foreground"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="frame">
+ <cd:constant type="on"/>
+ <cd:constant type="off" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="backgroundcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:inherit name="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="xmax">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ymax">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="frames">
+ <cd:constant type="on"/>
+ <cd:constant type="off" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="interaction">
+ <cd:constant type="yes"/>
+ <cd:constant type="all"/>
+ <cd:constant type="none" default="yes"/>
+ <cd:constant type="reference"/>
+ <cd:constant type="layer"/>
+ <cd:constant type="bookmark"/>
+ </cd:parameter>
+ <cd:parameter name="bodyfont">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="comment">
+ <cd:constant type="cd:command"/>
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="size">
+ <cd:constant type="none"/>
+ <cd:constant type="media"/>
+ <cd:constant type="crop"/>
+ <cd:constant type="trim"/>
+ <cd:constant type="art"/>
+ </cd:parameter>
+ <cd:parameter name="cache">
+ <cd:constant type="cd:path"/>
+ </cd:parameter>
+ <cd:parameter name="resources">
+ <cd:constant type="cd:path"/>
+ </cd:parameter>
+ <cd:parameter name="display">
+ <cd:constant type="cd:file"/> <!-- an alternative figure often low res .. old school pdf stuff -->
+ </cd:parameter>
+ <cd:parameter name="conversion">
+ <cd:constant type="cd:text"/> <!-- a extra (kind of) suffix that triggers conversion -->
+ </cd:parameter>
+ <cd:parameter name="order">
+ <cd:constant type="cd:list"/> <!-- a list of suffixes/types to check -->
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="setupexternalfigures" file="grph-inc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupexternalfigure"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="useexternalfigure" file="grph-inc.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-file"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupexternalfigure"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="externalfigure" file="grph-inc.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupexternalfigure"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getfiguredimensions" file="grph-inc.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupexternalfigure"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="figurewidth" file="grph-inc.mkiv"/>
+
+ <cd:command name="figureheight" file="grph-inc.mkiv"/>
+
+ <cd:command name="figurenaturalwidth" file="grph-inc.mkiv"/>
+
+ <cd:command name="figurenaturalheight" file="grph-inc.mkiv"/>
+
+ <cd:command name="figurefullname" file="grph-inc.mkiv"/>
+
+ <cd:command name="figurefilename" file="grph-inc.mkiv"/>
+
+ <cd:command name="figurefilepath" file="grph-inc.mkiv"/>
+
+ <cd:command name="figurefiletype" file="grph-inc.mkiv"/>
+
+ <cd:command name="noffigurepages" file="grph-inc.mkiv"/>
+
+ <cd:command name="definegraphictypesynonym" file="grph-inc.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsefigure" file="grph-inc.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doiffigureelse" file="grph-inc.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="registerexternalfigure" file="grph-inc.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupexternalfigure"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="usefigurebase" file="grph-inc.mkiv">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="reset"/>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="externalfigurecollection" type="environment" file="grph-inc.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="externalfigurecollectionminwidth" file="grph-inc.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="externalfigurecollectionmaxwidth" file="grph-inc.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="externalfigurecollectionminheight" file="grph-inc.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="externalfigurecollectionmaxheight" file="grph-inc.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="externalfigurecollectionparameter" file="grph-inc.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="efcminwidth" file="grph-inc.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="efcmaxwidth" file="grph-inc.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="efcminheight" file="grph-inc.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="efcmaxheight" file="grph-inc.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="efcparameter" file="grph-inc.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="overlayfigure" file="grph-inc.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="bitmapimage" file="grph-inc.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="color">
+ <cd:constant type="rgb"/>
+ <cd:constant type="cmyk"/>
+ <cd:constant type="gray"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="x">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="bitmapimage" type="environment" file="grph-inc.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="color">
+ <cd:constant type="rgb"/>
+ <cd:constant type="cmyk"/>
+ <cd:constant type="gray"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="x">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="typesetbuffer" file="grph-fig.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="*"/>
+ <cd:constant type="cd:buffer"/>
+ </cd:keywords>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupexternalfigure"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definetypesetting" file="grph-fig.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-text-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupexternalfigure"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="typesetfile" file="grph-fig.mkiv">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:file"/>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupexternalfigure"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="backgroundimage" file="pack-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="backgroundimagefill" file="pack-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-grid.xml b/tex/context/interface/mkiv/i-grid.xml
new file mode 100644
index 000000000..301d8fa45
--- /dev/null
+++ b/tex/context/interface/mkiv/i-grid.xml
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="showgrid" file="page-grd.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="reset"/>
+ <cd:constant type="bottom" default="yes"/>
+ <cd:constant type="top"/>
+ <cd:constant type="none"/>
+ <cd:constant type="all" default="yes"/>
+ <cd:constant type="lines"/>
+ <cd:constant type="frame"/>
+ <cd:constant type="nonumber"/>
+ <cd:constant type="right" default="yes"/>
+ <cd:constant type="left"/>
+ <cd:constant type="outer"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definegridsnapping" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords list="yes">
+ <cd:constant type="local"/>
+ <cd:constant type="global"/>
+ <cd:constant type="noheight"/>
+ <cd:constant type="nodepth"/>
+ <cd:constant type="box"/>
+ <cd:constant type="max"/>
+ <cd:constant type="min"/>
+ <cd:constant type="none"/>
+ <cd:constant type="line"/>
+ <cd:constant type="halfline"/>
+ <cd:constant type="first"/>
+ <cd:constant type="last"/>
+ <cd:constant type="minheight"/>
+ <cd:constant type="maxheight"/>
+ <cd:constant type="mindepth"/>
+ <cd:constant type="maxdepth"/>
+ <cd:constant type="top"/>
+ <cd:constant type="bottom"/>
+ <cd:constant type="strut"/>
+ <cd:constant type="cd:number"/>
+ <cd:constant type="cd:number" prefix="minheight" method="range"/>
+ <cd:constant type="cd:number" prefix="maxheight" method="range"/>
+ <cd:constant type="cd:number" prefix="mindepth" method="range"/>
+ <cd:constant type="cd:number" prefix="maxdepth" method="range"/>
+ <cd:constant type="cd:number" prefix="box" method="range"/>
+ <cd:constant type="cd:number" prefix="top" method="range"/>
+ <cd:constant type="cd:number" prefix="bottom" method="range"/>
+ <cd:constant type="cd:number" prefix="offset" method="range"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="snaptogrid" variant="1" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:resolve name="value-grid"/>
+ </cd:keywords>
+ <cd:csname/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="snaptogrid" variant="2" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:inherit name="definegridsnapping"/>
+ </cd:keywords>
+ <cd:csname/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placeongrid" variant="1" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:resolve name="value-grid"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placeongrid" variant="2" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:inherit name="definegridsnapping"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="gridsnapping" type="environment" variant="1" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:resolve name="value-grid"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="gridsnapping" type="environment" variant="2" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:inherit name="definegridsnapping"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="usegridparameter" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showgridsnapping" file="spac-ver.mkiv"/>
+
+ <cd:command name="basegrid" file="meta-grd.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="dx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="dy">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="factor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="scale">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="xstep">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ystep">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="xoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="yoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:constant type="middle"/>
+ </cd:parameter>
+ <cd:parameter name="unit">
+ <cd:constant type="cm" default="yes"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="in"/>
+ <cd:constant type="pc"/>
+ <cd:constant type="pt"/>
+ <cd:constant type="bp"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="grid" file="meta-grd.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="basegrid"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-help.xml b/tex/context/interface/mkiv/i-help.xml
new file mode 100644
index 000000000..db2128d53
--- /dev/null
+++ b/tex/context/interface/mkiv/i-help.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definehelp" file="scrn-hlp.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuphelp"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuphelp" file="scrn-hlp.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="help" generated="yes" variant="generated" file="scrn-hlp.mkvi">
+ <cd:sequence>
+ <cd:variable value="help"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-optional"/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="help" type="environment" generated="yes" variant="generated" file="scrn-hlp.mkvi">
+ <cd:sequence>
+ <cd:variable value="help"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsehelp" file="scrn-hlp.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifhelpelse" file="scrn-hlp.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placehelp" file="scrn-hlp.mkvi"/>
+
+ <cd:command name="showhelp" file="scrn-hlp.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="helptext" file="scrn-hlp.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-optional"/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="helptext" type="environment" file="scrn-hlp.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-highlight.xml b/tex/context/interface/mkiv/i-highlight.xml
new file mode 100644
index 000000000..1cc4ed4ca
--- /dev/null
+++ b/tex/context/interface/mkiv/i-highlight.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definehighlight" file="core-sys.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuphighlight"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuphighlight" file="core-sys.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="command">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="highlight" generated="yes" variant="generated" file="core-sys.mkiv">
+ <cd:sequence>
+ <cd:variable value="highlight"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="highlight" file="core-sys.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="highlight" type="environment" file="core-sys.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="directhighlight" file="core-sys.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-hspace.xml b/tex/context/interface/mkiv/i-hspace.xml
new file mode 100644
index 000000000..3c96fc247
--- /dev/null
+++ b/tex/context/interface/mkiv/i-hspace.xml
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definehspace" file="spac-hor.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="hspace" file="spac-hor.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:keywords optional="yes">
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="default" default="yes"/>
+ <cd:constant type="none"/>
+ <cd:constant type=".5"/>
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ <cd:constant type="3"/>
+ <!--
+ <cd:constant type="vulgarfraction"/>
+ -->
+ <cd:constant type="speech"/>
+ <cd:constant type="quote"/>
+ <cd:constant type="interquotation"/>
+ <cd:constant type="quotation"/>
+ <cd:constant type="sentence"/>
+ <cd:constant type="intersentence"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="hairspace" file="spac-hor.mkiv"/>
+
+ <cd:command name="thinspace" file="spac-hor.mkiv"/>
+
+ <cd:command name="medspace" file="spac-hor.mkiv"/>
+
+ <cd:command name="thickspace" file="spac-hor.mkiv"/>
+
+ <cd:command name="autoinsertnextspace" file="spac-hor.mkiv"/>
+
+ <cd:command name="hglue" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="frenchspacing" file="spac-hor.mkiv"/>
+
+ <cd:command name="newfrenchspacing" file="spac-hor.mkiv"/>
+
+ <cd:command name="nonfrenchspacing" file="spac-hor.mkiv"/>
+
+ <cd:command name="setupspacing" file="spac-hor.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="fixed"/>
+ <cd:constant type="packed" default="yes"/>
+ <cd:constant type="broad"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="space" file="spac-hor.mkiv"/>
+
+ <cd:command name="removelastspace" file="spac-hor.mkiv"/>
+
+ <cd:command name="nospace" file="spac-hor.mkiv"/>
+
+ <cd:command name="fixedspace" file="spac-hor.mkiv"/>
+
+ <cd:command name="fixedspaces" file="spac-hor.mkiv"/>
+
+ <cd:command name="keepunwantedspaces" file="spac-hor.mkiv"/>
+
+ <cd:command name="removeunwantedspaces" file="spac-hor.mkiv"/>
+
+ <cd:command name="thinspace" file="spac-hor.mkiv"/>
+
+ <cd:command name="negthinspace" file="spac-hor.mkiv"/>
+
+ <cd:command name="enspace" file="spac-hor.mkiv"/>
+
+ <cd:command name="enskip" file="spac-hor.mkiv"/>
+
+ <cd:command name="quad" file="spac-hor.mkiv"/>
+
+ <cd:command name="qquad" file="spac-hor.mkiv"/>
+
+ <cd:command name="emspace" file="spac-hor.mkiv"/>
+
+ <cd:command name="dotfskip" file="spac-hor.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="leftskipadaption" file="spac-hor.mkiv"/>
+
+ <cd:command name="rightskipadaption" file="spac-hor.mkiv"/>
+
+ <cd:command name="dosetleftskipadaption" file="spac-hor.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:resolve name="value-leftskip"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dosetrightskipadaption" file="spac-hor.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:resolve name="value-rightskip"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doadaptleftskip" file="spac-hor.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:resolve name="value-leftskip"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doadaptrightskip" file="spac-hor.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:resolve name="value-rightskip"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="activatespacehandler" file="spac-hor.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="on"/>
+ <cd:constant type="off" default="yes"/>
+ <cd:constant type="yes"/>
+ <cd:constant type="fixed"/>
+ <!--
+ <cd:constant type="cd:name"/>
+ -->
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-hyphenation.xml b/tex/context/interface/mkiv/i-hyphenation.xml
new file mode 100644
index 000000000..934751712
--- /dev/null
+++ b/tex/context/interface/mkiv/i-hyphenation.xml
@@ -0,0 +1,260 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setuphyphenation" file="lang-hyp.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="method">
+ <cd:constant type="original"/>
+ <cd:constant type="tex"/>
+ <cd:constant type="default" default="yes"/>
+ <cd:constant type="hyphenate"/>
+ <cd:constant type="expanded"/>
+ <cd:constant type="traditional"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="hyphenation" type="environment" file="lang-hyp.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="original"/>
+ <cd:constant type="tex"/>
+ <cd:constant type="default" default="yes"/>
+ <cd:constant type="hyphenate"/>
+ <cd:constant type="expanded"/>
+ <cd:constant type="traditional"/>
+ <cd:constant type="none"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definehypenationfeatures" file="lang-hyp.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="characters">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="hyphens">
+ <cd:constant type="yes"/>
+ <cd:constant type="all"/>
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="joiners">
+ <cd:constant type="yes"/>
+ <cd:constant type="all"/>
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="rightwords">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="hyphenmin">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="lefthyphenmin">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="righthyphenmin">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="lefthyphenchar">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="righthyphenchar">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="original"/>
+ <cd:constant type="tex"/>
+ <cd:constant type="hyphenate" default="yes"/>
+ <cd:constant type="expanded"/>
+ <cd:constant type="traditional"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="rightedge">
+ <cd:constant type="tex"/>
+ </cd:parameter>
+ <cd:parameter name="rightchars">
+ <cd:constant type="word"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="sethyphenationfeatures" file="lang-hyp.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="reset"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resethyphenationfeatures" file="lang-hyp.mkiv"/>
+
+ <cd:command name="registerhyphenationpattern" file="lang-hyp.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="keyword-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="unregisterhyphenationpattern" file="lang-hyp.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="keyword-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showhyphenationtrace" file="lang-hyp.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="keyword-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="registerhyphenationexception" file="lang-hyp.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="keyword-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuphyphenmark" file="typo-del.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="sign">
+ <cd:constant type="normal"/>
+ <cd:constant type="wide" default="yes"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definebreakpoints" file="typo-brk.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definebreakpoint" file="typo-brk.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords>
+ <cd:constant type="cd:character"/>
+ </cd:keywords>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="type">
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ <cd:constant type="3"/>
+ <cd:constant type="4"/>
+ <cd:constant type="5"/>
+ </cd:parameter>
+ <cd:parameter name="nleft">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="nright">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="middle">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="language">
+ <cd:constant type="cd:language"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setbreakpoints" file="typo-brk.mkiv">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="reset"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetbreakpoints" file="typo-brk.mkiv"/>
+
+ <cd:command name="showhyphens" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="hyphenatedword" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="hyphenatedpar" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="hyphenatedfile" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="hyphenatedcoloredword" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="hyphenatedhbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="sethyphenatedurlbefore" file="lang-url.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="sethyphenatedurlafter" file="lang-url.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="sethyphenatedurlnormal" file="lang-url.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="hyphenatedurl" file="lang-url.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="hyphenatedfilename" file="lang-url.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-imposition.xml b/tex/context/interface/mkiv/i-imposition.xml
new file mode 100644
index 000000000..b4bd4dee5
--- /dev/null
+++ b/tex/context/interface/mkiv/i-imposition.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="installshipoutmethod" file="page-imp.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="invokepageheandler" file="page-imp.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="normal"/>
+ <cd:constant type="none"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuparranging" file="page-imp.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="disable"/>
+ <cd:constant type="mirrored"/>
+ <cd:constant type="doublesided"/>
+ <cd:constant type="negative"/>
+ <cd:constant type="90"/>
+ <cd:constant type="180"/>
+ <cd:constant type="270"/>
+ <cd:constant type="reset"/>
+ <cd:constant type="background"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="2*16"/>
+ <cd:constant type="2*8"/>
+ <cd:constant type="2*4"/>
+ <cd:constant type="2*2"/>
+ <cd:constant type="2**2"/>
+ <cd:constant type="2SIDE"/>
+ <cd:constant type="2TOP"/>
+ <cd:constant type="2UP"/>
+ <cd:constant type="2DOWN"/>
+ <cd:constant type="2*4*2"/>
+ <cd:constant type="2*2*4"/>
+ <cd:constant type="2TOPSIDE"/>
+ <cd:constant type="2*8*Z"/>
+ <cd:constant type="2*6*Z"/>
+ <cd:constant type="1*8"/>
+ <cd:constant type="1*4"/>
+ <cd:constant type="3SIDE"/>
+ <cd:constant type="TRYPTICHON"/>
+ <cd:constant type="ZFLYER-8"/>
+ <cd:constant type="ZFLYER-10"/>
+ <cd:constant type="ZFLYER-12"/>
+ <cd:constant type="MAPFLYER-12"/>
+ <cd:constant type="DOUBLEWINDOW"/>
+ <cd:constant type="1*2-Conference"/>
+ <cd:constant type="1*4-Conference"/>
+ <cd:constant type="2*2*2"/>
+ <cd:constant type="2*2*3"/>
+ <cd:constant type="XY"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installpagearrangement" file="page-imp.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="none">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="arrangedpages" type="environment" begin="push" end="pop" file="page-imp.mkiv"/>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-indent.xml b/tex/context/interface/mkiv/i-indent.xml
new file mode 100644
index 000000000..666388b6a
--- /dev/null
+++ b/tex/context/interface/mkiv/i-indent.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="defineindenting" file="spac-hor.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords list="yes">
+ <cd:constant type="small" prefix="cd:sign" method="none"/>
+ <cd:constant type="medium" prefix="cd:sign" method="none"/>
+ <cd:constant type="big" prefix="cd:sign" method="none"/>
+ <cd:constant type="none"/>
+ <cd:constant type="no"/>
+ <cd:constant type="not"/>
+ <cd:constant type="first"/>
+ <cd:constant type="next"/>
+ <cd:constant type="yes"/>
+ <cd:constant type="always"/>
+ <cd:constant type="never"/>
+ <cd:constant type="odd"/>
+ <cd:constant type="even"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="reset"/>
+ <cd:constant type="toggle"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupindenting" file="spac-hor.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="small" prefix="cd:sign" method="none"/>
+ <cd:constant type="medium" prefix="cd:sign" method="none"/>
+ <cd:constant type="big" prefix="cd:sign" method="none"/>
+ <cd:constant type="none"/>
+ <cd:constant type="no"/>
+ <cd:constant type="not"/>
+ <cd:constant type="first"/>
+ <cd:constant type="next"/>
+ <cd:constant type="yes"/>
+ <cd:constant type="always"/>
+ <cd:constant type="never"/>
+ <cd:constant type="odd"/>
+ <cd:constant type="even"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="reset"/>
+ <cd:constant type="toggle"/>
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="synchronizeindenting" file="spac-hor.mkiv"/>
+
+ <cd:command name="useindentingparameter" file="spac-hor.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="indentation" file="spac-hor.mkiv"/>
+
+ <cd:command name="noindentation" file="spac-hor.mkiv"/>
+
+ <cd:command name="doindentation" file="spac-hor.mkiv"/>
+
+ <cd:command name="checknextindentation" file="spac-hor.mkiv">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="auto"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="useindentnextparameter" file="spac-hor.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dorechecknextindentation" file="spac-hor.mkiv"/>
+
+ <cd:command name="indentation" type="environment" begin="push" end="pop" file="spac-hor.mkiv"/>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-indentedtext.xml b/tex/context/interface/mkiv/i-indentedtext.xml
new file mode 100644
index 000000000..c70fb5ba0
--- /dev/null
+++ b/tex/context/interface/mkiv/i-indentedtext.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="defineindentedtext" file="strc-ind.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupindentedtext"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupindentedtext" file="strc-ind.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="sample">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="fit" default="yes"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="separator">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="headstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="headcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="indentedtext" type="environment" generated="yes" variant="generated" file="strc-ind.mkiv">
+ <cd:sequence>
+ <cd:variable value="indentedtext"/>
+ </cd:sequence>
+ </cd:command>
+
+ <cd:command name="indentedtext" type="environment" file="strc-ind.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-initial.xml b/tex/context/interface/mkiv/i-initial.xml
new file mode 100644
index 000000000..170a5e1ba
--- /dev/null
+++ b/tex/context/interface/mkiv/i-initial.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="defineinitial" file="typo-drp.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupinitial"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupinitial" file="typo-drp.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="m">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voffset">
+ <cd:constant type="line" default="yes"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="font">
+ <cd:constant type="cd:font"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="margin"/>
+ <cd:constant type="text" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:constant type="first"/>
+ <cd:constant type="last"/>
+ <cd:constant type="auto"/>
+ <cd:constant type="none" default="yes"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placeinitial" file="typo-drp.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setinitial" file="typo-drp.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupinitial"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-injector.xml b/tex/context/interface/mkiv/i-injector.xml
new file mode 100644
index 000000000..c13e544db
--- /dev/null
+++ b/tex/context/interface/mkiv/i-injector.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="resetinjector" file="typo-inj.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="markinjector" file="typo-inj.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="checkinjector" file="typo-inj.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="checkpreviousinjector" file="typo-inj.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="checknextinjector" file="typo-inj.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setinjector" file="typo-inj.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-number-list"/>
+ <cd:resolve name="keyword-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showinjector" file="typo-inj.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="doinstallinjector" file="typo-inj.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doactivateinjector" file="typo-inj.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dotestinjector" file="typo-inj.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-insertion.xml b/tex/context/interface/mkiv/i-insertion.xml
new file mode 100644
index 000000000..9250c9ebf
--- /dev/null
+++ b/tex/context/interface/mkiv/i-insertion.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="defineinsertion" file="page-ins.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupinsertion"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupinsertion" file="page-ins.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="location">
+ <cd:constant type="page" default="yes"/>
+ <cd:constant type="text"/>
+ <cd:constant type="columns"/>
+ <cd:constant type="firstcolumn"/>
+ <cd:constant type="lastcolumn"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelseinsertion" file="page-ins.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifinsertionelse" file="page-ins.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-interaction.xml b/tex/context/interface/mkiv/i-interaction.xml
new file mode 100644
index 000000000..06b104f4c
--- /dev/null
+++ b/tex/context/interface/mkiv/i-interaction.xml
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="defineinteraction" file="scrn-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupinteraction"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupinteraction" variant="1" file="scrn-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="contrastcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="title">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="subtitle">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="author">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="date">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="keyword">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="focus">
+ <cd:constant type="standard"/>
+ <cd:constant type="frame"/>
+ <cd:constant type="width"/>
+ <cd:constant type="minwidth"/>
+ <cd:constant type="height"/>
+ <cd:constant type="minheight"/>
+ <cd:constant type="fit" default="yes"/>
+ <cd:constant type="tight"/>
+ <!--
+ <cd:constant type="xyz"/>
+ <cd:constant type="fitr"/>
+ <cd:constant type="fith"/>
+ <cd:constant type="fitbh"/>
+ <cd:constant type="fitv"/>
+ <cd:constant type="fitbv"/>
+ <cd:constant type="fitb"/>
+ -->
+ </cd:parameter>
+ <cd:parameter name="menu">
+ <cd:constant type="on"/>
+ <cd:constant type="off" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="fieldlayer">
+ <cd:constant type="auto"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="calculate">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="click">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="display">
+ <cd:constant type="normal"/>
+ <cd:constant type="new"/>
+ </cd:parameter>
+ <cd:parameter name="page">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ <cd:constant type="page"/>
+ <cd:constant type="name"/>
+ <cd:constant type="auto"/>
+ </cd:parameter>
+ <cd:parameter name="openaction">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="closeaction">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="openpageaction">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="closepageaction">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="symbolset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="depth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="focusoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupinteraction" variant="2" file="scrn-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="interaction" type="environment" file="scrn-ini.mkvi">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="hidden"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setinteraction" file="scrn-ini.mkvi">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="hidden"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelselocation" file="scrn-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doiflocationelse" file="scrn-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-interactionbar.xml b/tex/context/interface/mkiv/i-interactionbar.xml
new file mode 100644
index 000000000..67c31216a
--- /dev/null
+++ b/tex/context/interface/mkiv/i-interactionbar.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="defineinteractionbar" file="scrn-bar.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupinteractionbar"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupinteractionbar" file="scrn-bar.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="alternative">
+ <cd:constant type="a" default="yes"/>
+ <cd:constant type="b"/>
+ <cd:constant type="c"/>
+ <cd:constant type="d"/>
+ <cd:constant type="e"/>
+ <cd:constant type="f"/>
+ <cd:constant type="g"/>
+ </cd:parameter>
+ <cd:parameter name="state">
+ <cd:constant type="start" default="yes"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:csname"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ <cd:constant type="broad"/>
+ </cd:parameter>
+ <cd:parameter name="depth">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="step">
+ <cd:constant type="small"/>
+ <cd:constant type="medium" default="yes"/>
+ <cd:constant type="big"/>
+ </cd:parameter>
+ <cd:parameter name="backgroundcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="contrastcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="symbol">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="interactionbar" file="scrn-bar.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupinteractionbar"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="interactionbuttons" file="scrn-bar.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupinteractionbar"/>
+ </cd:assignments>
+ <cd:keywords list="yes">
+ <cd:constant type="page"/>
+ <cd:constant type="subpage"/>
+ <cd:constant type="cd:reference"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-interactionmenu.xml b/tex/context/interface/mkiv/i-interactionmenu.xml
new file mode 100644
index 000000000..6bf2f9674
--- /dev/null
+++ b/tex/context/interface/mkiv/i-interactionmenu.xml
@@ -0,0 +1,276 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="defineinteractionmenu" file="scrn-but.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupinteractionmenu"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupinteractionmenu" file="scrn-but.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="alternative">
+ <cd:constant type="vertical"/>
+ <cd:constant type="horizontal"/>
+ <cd:constant type="hidden"/>
+ </cd:parameter>
+ <cd:parameter name="category">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="leftoffset">
+ <cd:constant type="overlay"/>
+ <cd:constant type="frame"/>
+ <cd:constant type="none"/>
+ <cd:constant type="default"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rightoffset">
+ <cd:constant type="overlay"/>
+ <cd:constant type="frame"/>
+ <cd:constant type="none"/>
+ <cd:constant type="default"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="topoffset">
+ <cd:constant type="overlay"/>
+ <cd:constant type="frame"/>
+ <cd:constant type="none"/>
+ <cd:constant type="default"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="bottomoffset">
+ <cd:constant type="overlay"/>
+ <cd:constant type="frame"/>
+ <cd:constant type="none"/>
+ <cd:constant type="default"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="maxwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="maxheight">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="itemalign">
+ <cd:constant type="left"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="right"/>
+ <cd:constant type="flushleft"/>
+ <cd:constant type="flushright"/>
+ <cd:constant type="low"/>
+ <cd:constant type="high"/>
+ <cd:constant type="lohi"/>
+ </cd:parameter>
+ <cd:parameter name="state">
+ <cd:constant type="start" default="yes"/>
+ <cd:constant type="empty"/>
+ <cd:constant type="local"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="overlay"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="position">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="middle">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="samepage">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="empty"/>
+ <cd:constant type="none"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="default"/>
+ </cd:parameter>
+ <cd:parameter name="contrastcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="setupinteractionmenus" file="scrn-but.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupinteractionmenu"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="interactionmenu" type="environment" file="scrn-but.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetinteractionmenu" file="scrn-but.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="raw" variant="interactionmenu" file="scrn-but.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="\"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="raw" type="environment" variant="interactionmenu" file="scrn-but.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="but" variant="interactionmenu" file="scrn-but.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="\"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="but" type="environment" variant="interactionmenu" file="scrn-but.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="got" variant="interactionmenu" file="scrn-but.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="\"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="got" type="environment" variant="interactionmenu" file="scrn-but.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="nop" variant="interactionmenu" file="scrn-but.mkvi">
+ <cd:arguments>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="\"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="nop" type="environment" variant="interactionmenu" file="scrn-but.mkvi"/>
+
+ <cd:command name="txt" variant="interactionmenu" file="scrn-but.mkvi">
+ <cd:arguments>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="\"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="txt" type="environment" variant="interactionmenu" file="scrn-but.mkvi"/>
+
+ <cd:command name="rul" variant="interactionmenu" file="scrn-but.mkvi">
+ <cd:arguments>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="\"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rul" type="environment" variant="interactionmenu" file="scrn-but.mkvi"/>
+
+ <cd:command name="com" variant="interactionmenu" file="scrn-but.mkvi">
+ <cd:arguments>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="\"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="com" type="environment" variant="interactionmenu" file="scrn-but.mkvi"/>
+
+ <cd:command name="includemenu" file="scrn-but.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="interactionmenu" file="scrn-but.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupinteractionmenu"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="menubutton" variant="1" file="scrn-but.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupinteractionmenu"/>
+ </cd:assignments>
+ <cd:resolve name="argument-text"/>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:reference"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="menubutton" variant="2" file="scrn-but.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupbutton"/>
+ </cd:assignments>
+ <cd:resolve name="argument-text"/>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:reference"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="registermenubuttons" file="scrn-but.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-text"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-interactionscreen.xml b/tex/context/interface/mkiv/i-interactionscreen.xml
new file mode 100644
index 000000000..69edbcdb9
--- /dev/null
+++ b/tex/context/interface/mkiv/i-interactionscreen.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setupinteractionscreen" file="scrn-pag.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="width">
+ <cd:constant type="fit"/>
+ <cd:constant type="max"/>
+ <cd:constant type="tight"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="fit"/>
+ <cd:constant type="max"/>
+ <cd:constant type="tight"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="backspace">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="horoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="veroffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="topspace">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="option">
+ <cd:constant type="fit"/>
+ <cd:constant type="max"/>
+ <cd:constant type="singlesided"/>
+ <cd:constant type="doublesided"/>
+ <cd:constant type="bookmark"/>
+ <cd:constant type="auto" default="yes"/>
+ <cd:constant type="none"/>
+ <cd:constant type="default"/>
+ <cd:constant type="fixed"/>
+ <cd:constant type="landscape"/>
+ <cd:constant type="portrait"/>
+ <cd:constant type="page"/>
+ </cd:parameter>
+ <cd:parameter name="delay">
+ <cd:constant type="none" default="yes"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="screen" file="scrn-pag.mkvi">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:inherit name="page"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-interface.xml b/tex/context/interface/mkiv/i-interface.xml
new file mode 100644
index 000000000..c8c93b72b
--- /dev/null
+++ b/tex/context/interface/mkiv/i-interface.xml
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="defaultinterface" file="mult-ini.mkiv"/>
+
+ <cd:command name="currentinterface" file="mult-ini.mkiv"/>
+
+ <cd:command name="currentresponses" file="mult-ini.mkiv"/>
+
+ <cd:command name="interface" type="environment" file="mult-ini.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="none">
+ <cd:constant type="all"/>
+ <cd:constant type="cd:language"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="defineinterfaceconstant" file="mult-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="defineinterfacevariable" file="mult-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="defineinterfaceelement" file="mult-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definefileconstant" file="mult-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definesystemconstant" file="mult-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definemessageconstant" file="mult-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definesystemvariable" file="mult-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setinterfacemessage" file="mult-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="title"/>
+ <cd:constant type="cd:name"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setmessagetext" file="mult-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="currentmessagetext" file="mult-ini.mkiv"/>
+
+ <cd:command name="getmessage" file="mult-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsemessage" file="mult-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifmessageelse" file="mult-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showmessage" file="mult-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:resolve name="argument-text-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="writestatus" file="mult-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="message" file="mult-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="inlinemessage" file="mult-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="displaymessage" file="mult-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showwarning" file="mult-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:resolve name="argument-text-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setinterfaceconstant" file="mult-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setinterfacevariable" file="mult-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setinterfaceelements" file="mult-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setinterfacecommand" file="mult-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-interlinespace.xml b/tex/context/interface/mkiv/i-interlinespace.xml
new file mode 100644
index 000000000..99f5e11af
--- /dev/null
+++ b/tex/context/interface/mkiv/i-interlinespace.xml
@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="defineinterlinespace" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupinterlinespace"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupinterlinespace" variant="1" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="line">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="depth">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="minheight">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="mindepth">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="top">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="height"/>
+ </cd:parameter>
+ <cd:parameter name="bottom">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="stretch">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="shrink">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupinterlinespace" variant="2" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="on"/>
+ <cd:constant type="off"/>
+ <cd:constant type="reset"/>
+ <cd:constant type="auto"/>
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ <cd:constant type="cd:number"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupinterlinespace" variant="3" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuplocalinterlinespace" variant="1" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupinterlinespace"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuplocalinterlinespace" variant="2" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="on"/>
+ <cd:constant type="off"/>
+ <cd:constant type="reset"/>
+ <cd:constant type="auto"/>
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ <cd:constant type="cd:number"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuplocalinterlinespace" variant="3" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="switchtointerlinespace" variant="1" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupinterlinespace"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="switchtointerlinespace" variant="2" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="on"/>
+ <cd:constant type="off"/>
+ <cd:constant type="reset"/>
+ <cd:constant type="auto"/>
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ <cd:constant type="cd:number"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="switchtointerlinespace" variant="3" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dosetupcheckedinterlinespace" variant="1" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:assignments delimiters="braces" list="yes">
+ <cd:inherit name="setupinterlinespace"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dosetupcheckedinterlinespace" variant="2" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="braces" list="yes">
+ <cd:constant type="on"/>
+ <cd:constant type="off"/>
+ <cd:constant type="reset"/>
+ <cd:constant type="auto"/>
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ <cd:constant type="cd:number"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dosetupcheckedinterlinespace" variant="3" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="useinterlinespaceparameter" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-italiccorrection.xml b/tex/context/interface/mkiv/i-italiccorrection.xml
new file mode 100644
index 000000000..f8d711ae8
--- /dev/null
+++ b/tex/context/interface/mkiv/i-italiccorrection.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setitaliccorrection" file="typo-itc.mkvi">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="reset"/>
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetitaliccorrection" file="typo-itc.mkvi"/>
+
+ <cd:command name="italiccorrection" file="typo-itc.mkvi"/>
+
+ <cd:command name="setupitaliccorrection" file="typo-itc.mkvi">
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="text"/>
+ <cd:constant type="always"/>
+ <cd:constant type="global"/>
+ <cd:constant type="none"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-itemgroup.xml b/tex/context/interface/mkiv/i-itemgroup.xml
new file mode 100644
index 000000000..1507b0965
--- /dev/null
+++ b/tex/context/interface/mkiv/i-itemgroup.xml
@@ -0,0 +1,528 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="defineitemgroup" file="strc-itm.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupitemgroup"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupitemgroup" variant="1" file="strc-itm.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="each"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="intro"/>
+ <cd:constant type="random"/>
+ <cd:constant type="continue"/>
+ <cd:constant type="packed"/>
+ <cd:constant type="autointro"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="text"/>
+ <cd:constant type="before"/>
+ <cd:constant type="after"/>
+ <cd:constant type="nowhite"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="inmargin"/>
+ <cd:constant type="atmargin"/>
+ <cd:constant type="intext"/>
+ <cd:constant type="loose"/>
+ <cd:constant type="fit"/>
+ <cd:constant type="nofit"/>
+ <cd:constant type="paragraph"/>
+ <cd:constant type="joinedup"/>
+ <cd:constant type="serried"/>
+ <cd:constant type="stopper"/>
+ <cd:constant type="unpacked"/>
+ <cd:constant type="repeat"/>
+ <cd:constant type="norepeat"/>
+ <cd:constant type="reverse"/>
+ <cd:constant type="columns"/>
+ <cd:constant type="one"/>
+ <cd:constant type="two"/>
+ <cd:constant type="three"/>
+ <cd:constant type="four"/>
+ <cd:constant type="five"/>
+ <cd:constant type="six"/>
+ <cd:constant type="seven"/>
+ <cd:constant type="eight"/>
+ <cd:constant type="nine"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="broad" prefix="cd:number" method="factor"/>
+ <cd:constant type="serried" prefix="cd:number" method="factor"/>
+ <cd:constant type="horizontal"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="beforehead">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="afterhead">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="lefttext">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="righttext">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="factor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="step">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="margin">
+ <cd:resolve name="value-leftskip"/>
+ </cd:parameter>
+ <cd:parameter name="leftmargin">
+ <cd:resolve name="value-leftskip"/>
+ </cd:parameter>
+ <cd:parameter name="rightmargin">
+ <cd:resolve name="value-rightskip"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:inherit name="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="indenting">
+ <cd:resolve name="setupindenting"/>
+ </cd:parameter>
+ <cd:parameter name="start">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="symalign">
+ <cd:constant type="left"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="right"/>
+ <cd:constant type="flushleft"/>
+ <cd:constant type="center"/>
+ <cd:constant type="flushright"/>
+ </cd:parameter>
+ <cd:parameter name="symbol">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="indentnext">
+ <cd:resolve name="value-indentnext"/>
+ </cd:parameter>
+ <cd:parameter name="inner">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:csname"/>
+ </cd:parameter>
+ <cd:parameter name="items">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="maxwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="itemalign">
+ <cd:resolve name="value-alignsimple"/>
+ </cd:parameter>
+ <cd:parameter name="alignsymbol">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="textdistance">
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ <cd:constant type="none"/>
+ <cd:constant type="space" default="yes"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="placestopper">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="headstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="headcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="marstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="marcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="symstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="symcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:inherit name="setupcounter"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupitemgroup" variant="2" file="strc-itm.mkvi">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="cd:number" prefix="cd:name" method="range"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="beforehead">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="afterhead">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="lefttext">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="righttext">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="factor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="step">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="option">
+ <cd:constant type="intro"/>
+ <cd:constant type="random"/>
+ <cd:constant type="continue"/>
+ <cd:constant type="packed"/>
+ <cd:constant type="autointro"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="text"/>
+ <cd:constant type="before"/>
+ <cd:constant type="after"/>
+ <cd:constant type="nowhite"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="inmargin"/>
+ <cd:constant type="atmargin"/>
+ <cd:constant type="intext"/>
+ <cd:constant type="loose"/>
+ <cd:constant type="fit"/>
+ <cd:constant type="nofit"/>
+ <cd:constant type="paragraph"/>
+ <cd:constant type="joinedup"/>
+ <cd:constant type="serried"/>
+ <cd:constant type="stopper"/>
+ <cd:constant type="unpacked"/>
+ <cd:constant type="repeat"/>
+ <cd:constant type="norepeat"/>
+ <cd:constant type="reverse"/>
+ <cd:constant type="columns"/>
+ <cd:constant type="one"/>
+ <cd:constant type="two"/>
+ <cd:constant type="three"/>
+ <cd:constant type="four"/>
+ <cd:constant type="five"/>
+ <cd:constant type="six"/>
+ <cd:constant type="seven"/>
+ <cd:constant type="eight"/>
+ <cd:constant type="nine"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="broad" prefix="cd:number" method="factor"/>
+ <cd:constant type="serried" prefix="cd:number" method="factor"/>
+ <cd:constant type="horizontal"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="margin">
+ <cd:resolve name="value-leftskip"/>
+ </cd:parameter>
+ <cd:parameter name="leftmargin">
+ <cd:resolve name="value-leftskip"/>
+ </cd:parameter>
+ <cd:parameter name="rightmargin">
+ <cd:resolve name="value-rightskip"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:inherit name="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="indenting">
+ <cd:resolve name="setupindenting"/>
+ </cd:parameter>
+ <cd:parameter name="start">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="symalign">
+ <cd:constant type="left"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="right"/>
+ <cd:constant type="flushleft"/>
+ <cd:constant type="center"/>
+ <cd:constant type="flushright"/>
+ </cd:parameter>
+ <cd:parameter name="symbol">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="indentnext">
+ <cd:resolve name="value-indentnext"/>
+ </cd:parameter>
+ <cd:parameter name="inner">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:csname"/>
+ </cd:parameter>
+ <cd:parameter name="items">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="maxwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="itemalign">
+ <cd:resolve name="value-alignsimple"/>
+ </cd:parameter>
+ <cd:parameter name="alignsymbol">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="textdistance">
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ <cd:constant type="none"/>
+ <cd:constant type="space" default="yes"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="placestopper">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="headstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="headcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="marstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="marcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="symstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="symcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:inherit name="setupcounter"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="itemgroup" type="environment" generated="yes" variant="generated" file="strc-itm.mkvi">
+ <cd:sequence>
+ <cd:variable value="itemgroup"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:inherit name="setupitemgroup"/>
+ </cd:keywords>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupitemgroup"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="itemgroup" type="environment" file="strc-itm.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords list="yes" optional="yes">
+ <cd:inherit name="setupitemgroup"/>
+ </cd:keywords>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupitemgroup"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="item" variant="itemgroup" file="strc-itm.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="itm" variant="itemgroup" file="strc-itm.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="but" variant="itemgroup" file="strc-itm.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="nop" variant="itemgroup" file="strc-itm.mkvi"/>
+
+ <cd:command name="txt" variant="itemgroup" file="strc-itm.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="head" variant="itemgroup" file="strc-itm.mkvi">
+ <cd:arguments>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="par"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="headsym" variant="itemgroup" file="strc-itm.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="sym" variant="itemgroup" file="strc-itm.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ran" variant="itemgroup" file="strc-itm.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mar" variant="itemgroup" file="strc-itm.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="sub" variant="itemgroup" file="strc-itm.mkvi"/>
+
+ <cd:command name="its" variant="itemgroup" file="strc-itm.mkvi"/>
+
+ <cd:command name="item" type="environment" file="strc-itm.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="head" type="environment" file="strc-itm.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="specialitem" type="environment" variant="1" file="strc-itm.mkvi">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="item" default="yes"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="specialitem" type="environment" variant="2" file="strc-itm.mkvi">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="sym"/>
+ <cd:constant type="ran"/>
+ <cd:constant type="mar"/>
+ </cd:keywords>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="specialitem" type="environment" variant="3" file="strc-itm.mkvi">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="sub"/>
+ <cd:constant type="its"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="itemize" type="environment" file="strc-itm.mkvi">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:inherit name="setupitemgroup"/>
+ </cd:keywords>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupitemgroup"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-items.xml b/tex/context/interface/mkiv/i-items.xml
new file mode 100644
index 000000000..d3f68132a
--- /dev/null
+++ b/tex/context/interface/mkiv/i-items.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="defineitems" file="typo-itm.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupitems"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupitems" file="typo-itm.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="alternative">
+ <cd:constant type="left" default="yes"/>
+ <cd:constant type="right"/>
+ <cd:constant type="top"/>
+ <cd:constant type="bottom"/>
+ <cd:constant type="inmargin"/>
+ </cd:parameter>
+ <cd:parameter name="textwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="symbol">
+ <cd:constant type="none"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:constant type="left"/>
+ <cd:constant type="middle" default="yes"/>
+ <cd:constant type="right"/>
+ <cd:constant type="flushleft"/>
+ <cd:constant type="flushright"/>
+ <cd:constant type="inner"/>
+ <cd:constant type="outer"/>
+ <cd:constant type="margin"/>
+ </cd:parameter>
+ <cd:parameter name="textalign">
+ <cd:constant type="left"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="right"/>
+ <cd:constant type="flushleft" default="yes"/>
+ <cd:constant type="flushright"/>
+ <cd:constant type="inner"/>
+ <cd:constant type="outer"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="items" file="typo-itm.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupitems"/>
+ </cd:assignments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-javascript.xml b/tex/context/interface/mkiv/i-javascript.xml
new file mode 100644
index 000000000..790d13523
--- /dev/null
+++ b/tex/context/interface/mkiv/i-javascript.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="JScode" type="environment" file="java-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-name"/>
+ <cd:keywords delimiters="none">
+ <cd:constant type="uses"/>
+ </cd:keywords>
+ <cd:resolve name="string-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="JSpreamble" type="environment" file="java-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-name"/>
+ <cd:keywords delimiters="none">
+ <cd:constant type="used"/>
+ </cd:keywords>
+ <cd:keywords delimiters="none">
+ <cd:constant type="now"/>
+ <cd:constant type="later"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setJSpreamble" file="java-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="addtoJSpreamble" file="java-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="useJSscripts" file="java-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ <cd:resolve name="keyword-name-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-kerning.xml b/tex/context/interface/mkiv/i-kerning.xml
new file mode 100644
index 000000000..167bfc4f8
--- /dev/null
+++ b/tex/context/interface/mkiv/i-kerning.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definecharacterkerning" file="typo-krn.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupcharacterkerning"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupcharacterkerning" file="typo-krn.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="factor">
+ <cd:constant type="max"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="features">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setcharacterkerning" file="typo-krn.mkiv">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="reset"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetcharacterkerning" file="typo-krn.mkiv"/>
+
+ <cd:command name="characterkerning" generated="yes" variant="generated" file="typo-krn.mkiv">
+ <cd:sequence>
+ <cd:variable value="characterkerning"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-number-optional"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="kerncharacters" file="typo-krn.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-number-optional"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="letterspacing" file="typo-krn.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-number-optional"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="stretched" file="typo-krn.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupstretched"/>
+ </cd:assignments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupstretched" file="typo-krn.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupcharacterkerning"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-label.xml b/tex/context/interface/mkiv/i-label.xml
new file mode 100644
index 000000000..320c105f9
--- /dev/null
+++ b/tex/context/interface/mkiv/i-label.xml
@@ -0,0 +1,210 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definelabel" file="strc-lab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplabel"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuplabel" file="strc-lab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="title">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="number">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="numbercommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="titledistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="titlestyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="titlecolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="titlecommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="titleleft">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="titleright">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="symbol">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="starter">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stopper">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="coupling">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="counter">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <!-- begin construction values -->
+ <cd:parameter name="level">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="headcommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="inmargin"/>
+ <cd:constant type="inleft"/>
+ <cd:constant type="inright"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="leftmargin"/>
+ <cd:constant type="rightmargin"/>
+ <cd:constant type="innermargin"/>
+ <cd:constant type="outermargin"/>
+ <cd:constant type="serried"/>
+ <cd:constant type="hanging"/>
+ <cd:constant type="top"/>
+ <cd:constant type="command"/>
+ <cd:constant type="intext" default="yes"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:inherit name="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="headalign">
+ <cd:inherit name="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="indenting">
+ <cd:inherit name="setupindenting"/>
+ </cd:parameter>
+ <cd:parameter name="display">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="indentnext">
+ <cd:resolve name="value-indentnext"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="fit"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="line"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="none"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hang">
+ <cd:constant type="fit"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="none"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="closesymbol">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="closecommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="expansion">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ <cd:constant type="xml"/>
+ </cd:parameter>
+ <cd:parameter name="sample">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="margin">
+ <cd:resolve name="value-leftskip"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="headstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="headcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <!-- end construction values -->
+ <cd:inherit name="setupcounter"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="setuplabels" file="strc-lab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setuplabel"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="label" generated="yes" variant="generated" file="strc-lab.mkiv">
+ <cd:sequence>
+ <cd:variable value="label"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="currentlabel" generated="yes" variant="generated" file="strc-lab.mkiv">
+ <cd:sequence>
+ <cd:string value="current"/>
+ <cd:variable value="label"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-labeltext.xml b/tex/context/interface/mkiv/i-labeltext.xml
new file mode 100644
index 000000000..247783762
--- /dev/null
+++ b/tex/context/interface/mkiv/i-labeltext.xml
@@ -0,0 +1,496 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definelabelclass" file="lang-lab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-number-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuplabeltext" generated="yes" variant="generated" file="lang-lab.mkiv">
+ <cd:sequence>
+ <cd:string value="setup"/>
+ <cd:variable value="label"/>
+ <cd:string value="text"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="presetlabeltext" generated="yes" variant="generated" file="lang-lab.mkiv">
+ <cd:sequence>
+ <cd:string value="preset"/>
+ <cd:variable value="label"/>
+ <cd:string value="text"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="copylabeltext" generated="yes" variant="generated" file="lang-lab.mkiv">
+ <cd:sequence>
+ <cd:string value="copy"/>
+ <cd:variable value="label"/>
+ <cd:string value="text"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="assignment-labeldata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="labeltext" type="environment" generated="yes" variant="generated" file="lang-lab.mkiv">
+ <cd:sequence>
+ <cd:variable value="label"/>
+ <cd:string value="text"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="keyword-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="labellanguage" generated="yes" variant="generated" file="lang-lab.mkiv">
+ <cd:sequence>
+ <cd:variable value="label"/>
+ <cd:string value="language"/>
+ </cd:sequence>
+ </cd:command>
+
+ <cd:command name="labeltext" generated="yes" variant="generated" file="lang-lab.mkiv">
+ <cd:sequence>
+ <cd:variable value="label"/>
+ <cd:string value="text"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="labeltexts" generated="yes" variant="generated" file="lang-lab.mkiv">
+ <cd:sequence>
+ <cd:variable value="label"/>
+ <cd:string value="texts"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="leftlabeltext" generated="yes" variant="generated" file="lang-lab.mkiv">
+ <cd:sequence>
+ <cd:string value="left"/>
+ <cd:variable value="label"/>
+ <cd:string value="text"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rightlabeltext" generated="yes" variant="generated" file="lang-lab.mkiv">
+ <cd:sequence>
+ <cd:string value="right"/>
+ <cd:variable value="label"/>
+ <cd:string value="text"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuplabeltext" file="lang-lab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="presetlabeltext" file="lang-lab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="copylabeltext" file="lang-lab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="assignment-labeldata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="labeltext" type="environment" file="lang-lab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="keyword-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="labellanguage" file="lang-lab.mkiv"/>
+
+ <cd:command name="labeltext" file="lang-lab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="labeltexts" file="lang-lab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="leftlabeltext" file="lang-lab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rightlabeltext" file="lang-lab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupheadtext" file="lang-lab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="presetheadtext" file="lang-lab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="copyheadtext" file="lang-lab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="assignment-labeldata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="headtext" type="environment" file="lang-lab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="keyword-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="headlanguage" file="lang-lab.mkiv"/>
+
+ <cd:command name="headtext" file="lang-lab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="headtexts" file="lang-lab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="leftheadtext" file="lang-lab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rightheadtext" file="lang-lab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupmathlabeltext" file="lang-lab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="presetmathlabeltext" file="lang-lab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="copymathlabeltext" file="lang-lab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="assignment-labeldata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathlabeltext" type="environment" file="lang-lab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="keyword-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathlabellanguage" file="lang-lab.mkiv"/>
+
+ <cd:command name="mathlabeltext" file="lang-lab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathlabeltexts" file="lang-lab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="leftmathlabeltext" file="lang-lab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rightmathlabeltext" file="lang-lab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuptaglabeltext" file="lang-lab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="presettaglabeltext" file="lang-lab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="copytaglabeltext" file="lang-lab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="assignment-labeldata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="taglabeltext" type="environment" file="lang-lab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="keyword-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="taglabellanguage" file="lang-lab.mkiv"/>
+
+ <cd:command name="taglabeltext" file="lang-lab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupunittext" file="phys-dim.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="presetunittext" file="phys-dim.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="copyunittext" file="phys-dim.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="assignment-labeldata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="unittext" type="environment" file="phys-dim.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="keyword-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="unitlanguage" file="phys-dim.mkiv"/>
+
+ <cd:command name="unittext" file="phys-dim.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupoperatortext" file="phys-dim.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="presetoperatortext" file="phys-dim.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="copyoperatortext" file="phys-dim.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="assignment-labeldata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="operatortext" type="environment" file="phys-dim.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="keyword-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="operatorlanguage" file="phys-dim.mkiv"/>
+
+ <cd:command name="operatortext" file="phys-dim.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupprefixtext" file="phys-dim.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="presetprefixtext" file="phys-dim.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="copyprefixtext" file="phys-dim.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="assignment-labeldata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="prefixtext" type="environment" file="phys-dim.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="keyword-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="prefixlanguage" file="phys-dim.mkiv"/>
+
+ <cd:command name="prefixtext" file="phys-dim.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+<!--
+
+ <cd:command name="setupsuffixtext" file="phys-dim.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="presetsuffixtext" file="phys-dim.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="copysuffixtext" file="phys-dim.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="assignment-labeldata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="suffixtext" type="environment" file="phys-dim.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="keyword-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="suffixlanguage" file="phys-dim.mkiv"/>
+
+ <cd:command name="suffixtext" file="phys-dim.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+-->
+
+ <cd:command name="setupbtxlabeltext" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="presetbtxlabeltext" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="copybtxlabeltext" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="assignment-labeldata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxlabeltext" type="environment" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language-optional"/>
+ <cd:resolve name="keyword-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxlabellanguage" file="publ-ini.mkiv"/>
+
+ <cd:command name="btxlabeltext" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-language.xml b/tex/context/interface/mkiv/i-language.xml
new file mode 100644
index 000000000..26bdbf060
--- /dev/null
+++ b/tex/context/interface/mkiv/i-language.xml
@@ -0,0 +1,200 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="installlanguage" variant="1" file="lang-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setuplanguage"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installlanguage" variant="2" file="lang-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-language"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuplanguage" file="lang-ini.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:language"/>
+ <cd:constant type="default"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="default">
+ <cd:constant type="cd:language"/>
+ </cd:parameter>
+ <cd:parameter name="state">
+ <cd:constant type="start" default="yes"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="date">
+ <cd:inherit name="currentdate"/>
+ </cd:parameter>
+ <cd:parameter name="patterns">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="lefthyphenmin">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="righthyphenmin">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="lefthyphenchar">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="righthyphenchar">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="setups">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="spacing">
+ <cd:constant type="broad" default="yes"/>
+ <cd:constant type="packed"/>
+ </cd:parameter>
+ <cd:parameter name="font">
+ <cd:constant type="auto"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="limittext">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="hyphen">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="compoundhyphen">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="leftcompoundhyphen">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="rightcompoundhyphen">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="leftquote">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rightquote">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="leftquotation">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rightquotation">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="leftspeech">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rightspeech">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="leftsentence">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="middlespeech">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rightsentence">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="midsentence">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="leftsubsentence">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rightsubsentence">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelselanguage" file="lang-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-language"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doiflanguageelse" file="lang-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-language"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsepatterns" file="lang-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-language"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifpatternselse" file="lang-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-language"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="language" generated="yes" variant="generated" file="lang-ini.mkiv">
+ <cd:sequence>
+ <cd:variable value="language"/>
+ </cd:sequence>
+ </cd:command>
+
+ <cd:command name="language" file="lang-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mainlanguage" file="lang-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="uselanguageparameter" file="lang-ini.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="exceptions" type="environment" file="lang-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-language"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="currentlanguage" file="lang-ini.mkiv"/>
+
+ <cd:command name="currentmainlanguage" file="lang-ini.mkiv"/>
+
+ <cd:command name="commalistsentence" file="lang-lab.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-layer.xml b/tex/context/interface/mkiv/i-layer.xml
new file mode 100644
index 000000000..6be7cccc9
--- /dev/null
+++ b/tex/context/interface/mkiv/i-layer.xml
@@ -0,0 +1,327 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setuplayeredtext" file="pack-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="layeredtext" file="pack-box.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplayer"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplayeredtext"/>
+ </cd:assignments>
+ <cd:resolve name="argument-text"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placelayeredtext" file="pack-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplayer"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplayeredtext"/>
+ </cd:assignments>
+ <cd:resolve name="argument-text"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setlayerframed" variant="1" file="pack-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplayer"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setlayerframed" variant="2" file="pack-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplayer"/>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setlayertext" file="pack-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplayer"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="align">
+ <cd:inherit name="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definelayer" file="pack-lyr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplayer"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuplayer" file="pack-lyr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start" default="yes"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="continue"/>
+ <cd:constant type="next"/>
+ <cd:constant type="repeat"/>
+ </cd:parameter>
+ <cd:parameter name="option">
+ <cd:constant type="test"/>
+ </cd:parameter>
+ <cd:parameter name="page">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="region">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="rotation">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="inner"/>
+ <cd:constant type="outer"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="position">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ <cd:constant type="overlay"/>
+ </cd:parameter>
+ <cd:parameter name="hoffset">
+ <cd:constant type="max"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voffset">
+ <cd:constant type="max"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="dx">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="dy">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="sx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="sy">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="x">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="corner">
+ <cd:constant type="left" default="yes"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="right"/>
+ <cd:constant type="top" default="yes"/>
+ <cd:constant type="bottom"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="grid"/>
+ <cd:resolve name="value-aligned"/>
+ </cd:parameter>
+ <cd:parameter name="line">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="column">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="direction">
+ <cd:constant type="normal" default="yes"/>
+ <cd:constant type="reverse"/>
+ </cd:parameter>
+ <cd:parameter name="doublesided">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:constant type="fit"/>
+ <cd:constant type="overlay" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="repeat">
+ <cd:constant type="yes"/>
+ </cd:parameter>
+ <cd:parameter name="preset">
+ <cd:constant type="lefttop"/>
+ <cd:constant type="righttop"/>
+ <cd:constant type="leftbottom"/>
+ <cd:constant type="rightbottom"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="middletop"/>
+ <cd:constant type="middlebottom"/>
+ <cd:constant type="middleleft"/>
+ <cd:constant type="middleright"/>
+ <cd:constant type="lefttopleft"/>
+ <cd:constant type="lefttopright"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetlayer" file="pack-lyr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="flushlayer" file="pack-lyr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tightlayer" file="pack-lyr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placelayer" file="pack-lyr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="composedlayer" file="pack-lyr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setlayer" file="pack-lyr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords optional="yes">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="even"/>
+ <cd:constant type="odd"/>
+ </cd:keywords>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplayer"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definelayerpreset" variant="1" file="pack-lyr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setuplayer"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definelayerpreset" variant="2" file="pack-lyr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelselayerdata" file="pack-lyr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doiflayerdataelse" file="pack-lyr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="layerwidth" file="pack-lyr.mkiv"/>
+
+ <cd:command name="layerheight" file="pack-lyr.mkiv"/>
+
+ <cd:command name="setMPlayer" file="pack-lyr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplayer"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getMPlayer" file="pack-lyr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-layout.xml b/tex/context/interface/mkiv/i-layout.xml
new file mode 100644
index 000000000..984995f10
--- /dev/null
+++ b/tex/context/interface/mkiv/i-layout.xml
@@ -0,0 +1,367 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definelayout" file="page-lay.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplayout"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuplayout" variant="1" file="page-lay.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start" default="yes"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="repeat"/>
+ </cd:parameter>
+ <cd:parameter name="margin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="edge">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="margindistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="edgedistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="leftedgedistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rightedgedistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="leftmargindistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rightmargindistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="topdistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="headerdistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="footerdistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="bottomdistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="preset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="leftmargin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rightmargin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="leftedge">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rightedge">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="header">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="footer">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="top">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="bottom">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="backspace">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="topspace">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="setups">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="cutspace">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="fit"/>
+ </cd:parameter>
+ <cd:parameter name="bottomspace">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="lines">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="fit"/>
+ </cd:parameter>
+ <cd:parameter name="horoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="veroffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="columns">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="columndistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:constant type="default"/>
+ <cd:constant type="normal" default="name"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="left"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="right"/>
+ <cd:constant type="top"/>
+ <cd:constant type="bottom"/>
+ <cd:constant type="singlesided"/>
+ <cd:constant type="doublesided"/>
+ </cd:parameter>
+ <cd:parameter name="textwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="textheight">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="dx">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="dy">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="scale">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="sx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="sy">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="marking">
+ <cd:constant type="on"/>
+ <cd:constant type="off" default="yes"/>
+ <cd:constant type="page"/>
+ <cd:constant type="empty"/>
+ <cd:constant type="color"/>
+ </cd:parameter>
+ <cd:parameter name="grid">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ <cd:constant type="off"/>
+ </cd:parameter>
+ <cd:parameter name="textdistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="default"/>
+ <cd:constant type="normal" default="yes"/>
+ <cd:constant type="makeup"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="clipoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="cropoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="trimoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="bleedoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="artoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuplayout" variant="2" file="page-lay.mkiv">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="reset"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelselayoutdefined" file="page-lay.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doiflayoutdefinedelse" file="page-lay.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="adaptlayout" file="page-lay.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-number-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="height">
+ <cd:constant type="max"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="lines">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="layout" type="environment" file="page-lay.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelseoddpage" file="page-lay.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifoddpageelse" file="page-lay.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifbothsidesoverruled" file="page-lay.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifbothsides" file="page-lay.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rightorleftpageaction" file="page-lay.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showprint" file="page-run.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:inherit name="setuppapersize"/>
+ </cd:keywords>
+ <cd:keywords list="yes" optional="yes">
+ <cd:inherit name="setuppapersize"/>
+ </cd:keywords>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplayout"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showframe" file="page-run.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="top"/>
+ <cd:constant type="header"/>
+ <cd:constant type="text"/>
+ <cd:constant type="footer"/>
+ <cd:constant type="bottom"/>
+ </cd:keywords>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="leftedge"/>
+ <cd:constant type="leftmargin"/>
+ <cd:constant type="text"/>
+ <cd:constant type="rightmargin"/>
+ <cd:constant type="rightedge"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showsetups" file="page-run.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="pt" default="yes"/>
+ <cd:constant type="bp"/>
+ <cd:constant type="cm" default="yes"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="dd"/>
+ <cd:constant type="cc"/>
+ <cd:constant type="pc"/>
+ <cd:constant type="nd"/>
+ <cd:constant type="nc"/>
+ <cd:constant type="sp"/>
+ <cd:constant type="in"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showlayout" file="page-run.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="pt" default="yes"/>
+ <cd:constant type="bp"/>
+ <cd:constant type="cm" default="yes"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="dd"/>
+ <cd:constant type="cc"/>
+ <cd:constant type="pc"/>
+ <cd:constant type="nd"/>
+ <cd:constant type="nc"/>
+ <cd:constant type="sp"/>
+ <cd:constant type="in"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showmargins" file="page-run.mkiv"/>
+
+ <cd:command name="spread" type="environment" file="page-spr.mkiv"/>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-linenumber.xml b/tex/context/interface/mkiv/i-linenumber.xml
new file mode 100644
index 000000000..623595140
--- /dev/null
+++ b/tex/context/interface/mkiv/i-linenumber.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definelinenumbering" file="page-lin.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplinenumbering"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuplinenumbering" file="page-lin.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="start">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="step">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:constant type="page"/>
+ <cd:constant type="first" default="yes"/>
+ <cd:constant type="next"/>
+ </cd:parameter>
+ <cd:parameter name="conversion">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="continue">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="text"/>
+ <cd:constant type="begin"/>
+ <cd:constant type="end"/>
+ <cd:constant type="default" default="yes"/>
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="inner"/>
+ <cd:constant type="outer"/>
+ <cd:constant type="inleft"/>
+ <cd:constant type="inright"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="inmargin"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:constant type="inner"/>
+ <cd:constant type="outer"/>
+ <cd:constant type="flushleft"/>
+ <cd:constant type="flushright"/>
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="auto" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="margin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="margin"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="linenumbering" type="environment" variant="1" file="page-lin.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplinenumbering"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="linenumbering" type="environment" variant="2" file="page-lin.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:keywords optional="yes">
+ <cd:constant type="continue"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="someline" file="page-lin.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="startline" file="page-lin.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="stopline" file="page-lin.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsesamelinereference" file="page-lin.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-reference"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifsamelinereferenceelse" file="page-lin.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-reference"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="inline" file="page-lin.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="inlinerange" file="page-lin.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-lines.xml b/tex/context/interface/mkiv/i-lines.xml
new file mode 100644
index 000000000..e43945e4d
--- /dev/null
+++ b/tex/context/interface/mkiv/i-lines.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="noflines" file="supp-box.mkiv"/>
+
+ <cd:command name="getnoflines" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getroundednoflines" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getrawnoflines" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="determinenoflines" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definelines" file="spac-lin.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplines"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuplines" file="spac-lin.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="option">
+ <cd:constant type="packed"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="indenting">
+ <cd:inherit name="setupindenting"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:inherit name="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="space">
+ <cd:constant type="yes"/>
+ <cd:constant type="on"/>
+ <cd:constant type="off"/>
+ <cd:constant type="fixed"/>
+ <cd:constant type="default" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="lines" type="environment" generated="yes" variant="generated" file="spac-lin.mkiv">
+ <cd:sequence>
+ <cd:variable value="lines"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplines"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="lines" type="environment" file="spac-lin.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplines"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="emptylines" file="spac-lin.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-number-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-linetable.xml b/tex/context/interface/mkiv/i-linetable.xml
new file mode 100644
index 000000000..a10479161
--- /dev/null
+++ b/tex/context/interface/mkiv/i-linetable.xml
@@ -0,0 +1,165 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setuplinetable" file="tabl-ltb.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="r"/>
+ <cd:constant type="c"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="odd"/>
+ <cd:constant type="even"/>
+ <cd:constant type="header"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <!-- begin root only -->
+ <cd:parameter name="lines">
+ <cd:constant type="fit"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stretch">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="maxwidth">
+ <cd:constant type="fit"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="nleft">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="repeat">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <!-- end root only -->
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="fit" default="yes"/>
+ <cd:constant type="line"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="leftoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rightoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:inherit name="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="background">
+ <cd:constant type="color"/>
+ </cd:parameter>
+ <cd:parameter name="backgroundcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="xheight">
+ <cd:constant type="max"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="xdepth">
+ <cd:constant type="max"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="linetablecell" type="environment" file="tabl-ltb.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplinetable"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="linetable" type="environment" file="tabl-ltb.mkiv"/>
+
+ <cd:command name="linetablehead" type="environment" file="tabl-ltb.mkiv"/>
+
+ <cd:command name="linetablebody" type="environment" file="tabl-ltb.mkiv"/>
+
+ <cd:command name="processlinetablebuffer" file="tabl-ltb.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-buffer-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="processlinetablefile" file="tabl-ltb.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="BC" scope="linetable" file="tabl-ltb.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplinetable"/>
+ </cd:assignments>
+ <cd:resolve name="string-content"/>
+ <cd:delimiter name="EC"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="BR" scope="linetable" file="tabl-ltb.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-content"/>
+ <cd:delimiter name="ER"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="BH" scope="linetable" file="tabl-ltb.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-content"/>
+ <cd:delimiter name="EH"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="NC" scope="linetable" file="tabl-ltb.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplinetable"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="NR" scope="linetable" file="tabl-ltb.mkiv"/>
+
+ -->
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-linewidth.xml b/tex/context/interface/mkiv/i-linewidth.xml
new file mode 100644
index 000000000..65a967954
--- /dev/null
+++ b/tex/context/interface/mkiv/i-linewidth.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setuplinewidth" file="pack-rul.mkiv">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="linewidth" file="pack-rul.mkiv"/>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-list.xml b/tex/context/interface/mkiv/i-list.xml
new file mode 100644
index 000000000..38e534252
--- /dev/null
+++ b/tex/context/interface/mkiv/i-list.xml
@@ -0,0 +1,620 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definelist" file="strc-lst.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-list-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuplist" file="strc-lst.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-list-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start" default="yes"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="none"/>
+ <cd:constant type="here"/>
+ </cd:parameter>
+ <cd:parameter name="type">
+ <cd:constant type="simple"/>
+ <cd:constant type="command"/>
+ <cd:constant type="userdata"/>
+ </cd:parameter>
+ <cd:parameter name="criterium">
+ <cd:constant type="local" default="yes"/>
+ <cd:constant type="intro"/>
+ <cd:constant type="reference"/>
+ <cd:constant type="reference" prefix="cd:sectionblock" method="range"/>
+ <cd:constant type="all"/>
+ <cd:constant type="all" prefix="cd:sectionblock" method="range"/>
+ <cd:constant type="text"/>
+ <cd:constant type="text" prefix="cd:sectionblock" method="range"/>
+ <cd:constant type="current"/>
+ <cd:constant type="current" prefix="cd:sectionblock" method="range"/>
+ <cd:constant type="here"/>
+ <cd:constant type="previous"/>
+ <cd:constant type="previous" prefix="cd:sectionblock" method="range"/>
+ <cd:constant type="component"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="cd:section" prefix="cd:sectionblock" method="range"/>
+ </cd:parameter>
+ <cd:parameter name="list">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="fit"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="auto"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="fit"/>
+ <cd:constant type="broad" default="yes"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="depth">
+ <cd:constant type="fit"/>
+ <cd:constant type="broad" default="yes"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="symbol">
+ <cd:constant type="one"/>
+ <cd:constant type="two"/>
+ <cd:constant type="three"/>
+ <cd:constant type="none"/>
+ <cd:constant type="default" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="label">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ <cd:constant type="none"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="starter">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stopper">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:threeargument"/>
+ </cd:parameter>
+ <cd:parameter name="numbercommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="textcommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="pagecommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="pagenumber">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="always"/>
+ </cd:parameter>
+ <cd:parameter name="headnumber">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="always"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="margin">
+ <cd:constant type="none"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="none"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="aligntitle">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="numberalign">
+ <cd:resolve name="value-alignsimple"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:inherit name="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="hang">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="interaction">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="all" default="yes"/>
+ <cd:constant type="number"/>
+ <cd:constant type="text"/>
+ <cd:constant type="title"/>
+ <cd:constant type="page"/>
+ <cd:constant type="sectionnumber"/>
+ <cd:constant type="pagenumber"/>
+ </cd:parameter>
+ <cd:parameter name="limittext">
+ <cd:resolve name="value-limittext"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="numberstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="numbercolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="textstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="textcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="pagestyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="pagecolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="reference">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="extras">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="order">
+ <cd:constant type="command"/>
+ <cd:constant type="all"/>
+ <cd:constant type="title"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="a"/>
+ <cd:constant type="b" default="yes"/>
+ <cd:constant type="c"/>
+ <cd:constant type="d"/>
+ <cd:constant type="e"/>
+ <cd:constant type="f"/>
+ <cd:constant type="g"/>
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="top"/>
+ <cd:constant type="bottom"/>
+ <cd:constant type="command"/>
+ <cd:constant type="none"/>
+ <cd:constant type="interactive"/>
+ <cd:constant type="paragraph"/>
+ <cd:constant type="horizontal"/>
+ <cd:constant type="vertical"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="maxwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="pageprefix">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="pageprefixseparatorset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="pageprefixconversionset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="pageprefixset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="pageprefixsegments">
+ <cd:resolve name="value-prefixsegments"/>
+ </cd:parameter>
+ <cd:parameter name="pageprefixconnector">
+ <cd:resolve name="value-connector"/>
+ </cd:parameter>
+ <cd:parameter name="pageconversionset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="pagestarter">
+ <cd:resolve name="value-starter"/>
+ </cd:parameter>
+ <cd:parameter name="pagestopper">
+ <cd:resolve name="value-stopper"/>
+ </cd:parameter>
+ <!--
+ <cd:parameter name="prefix">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="prefixseparatorset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="prefixconversionset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="prefixstarter">
+ <cd:resolve name="value-starter"/>
+ </cd:parameter>
+ <cd:parameter name="prefixstopper">
+ <cd:resolve name="value-stopper"/>
+ </cd:parameter>
+ <cd:parameter name="prefixset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="prefixsegments">
+ <cd:resolve name="value-prefixsegments"/>
+ </cd:parameter>
+ <cd:parameter name="prefixconnector">
+ <cd:resolve name="value-connector"/>
+ </cd:parameter>
+ <cd:parameter name="numberseparatorset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="numberconversionset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="numberstarter">
+ <cd:resolve name="value-starter"/>
+ </cd:parameter>
+ <cd:parameter name="numberstopper">
+ <cd:resolve name="value-stopper"/>
+ </cd:parameter>
+ <cd:parameter name="numbersegments">
+ <cd:resolve name="value-numbersegments"/>
+ </cd:parameter>
+ -->
+ <cd:inherit name="setupcounter"/>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="setuplists" file="strc-lst.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-list-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="doifelselist" file="strc-lst.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-list"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doiflistelse" file="strc-lst.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-list"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="writebetweenlist" file="strc-lst.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-list"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="writedatatolist" file="strc-lst.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-list"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="writetolist" file="strc-lst.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-list"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placelist" file="strc-lst.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-list-list"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placerawlist" file="strc-lst.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-list"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="completelist" file="strc-lst.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-list"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definecombinedlist" file="strc-lst.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-list-list"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupcombinedlist" file="strc-lst.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-list"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placecombinedlist" file="strc-lst.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-list"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupcombinedlist" generated="yes" variant="generated" file="strc-lst.mkvi">
+ <cd:sequence>
+ <cd:string value="setup"/>
+ <cd:variable value="combinedlist"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placecombinedlist" generated="yes" variant="generated" file="strc-lst.mkvi">
+ <cd:sequence>
+ <cd:string value="place"/>
+ <cd:variable value="combinedlist"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="completecombinedlist" generated="yes" variant="generated" file="strc-lst.mkvi">
+ <cd:sequence>
+ <cd:string value="complete"/>
+ <cd:variable value="combinedlist"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupcontent" file="strc-lst.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placecontent" file="strc-lst.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="completecontent" file="strc-lst.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="structurelistuservariable" file="strc-lst.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rawstructurelistuservariable" file="strc-lst.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsestructurelisthaspage" file="strc-lst.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifstructurelisthaspageelse" file="strc-lst.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsestructurelisthasnumber" file="strc-lst.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifstructurelisthasnumberelse" file="strc-lst.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definelistextra" file="strc-lst.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplistextra"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuplistextra" file="strc-lst.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definelistalternative" file="strc-lst.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplistalternative"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuplistalternative" file="strc-lst.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:threearguments"/>
+ </cd:parameter>
+ <cd:parameter name="renderingsetup">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="stretch">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="filler">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="determinelistcharacteristics" file="strc-lst.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-list-list"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="currentlistentrynumber" file="strc-lst.mkvi"/>
+
+ <cd:command name="currentlistentrytitle" file="strc-lst.mkvi"/>
+
+ <cd:command name="currentlistentrytitlerendered" file="strc-lst.mkvi"/>
+
+ <cd:command name="currentlistentrypagenumber" file="strc-lst.mkvi"/>
+
+ <cd:command name="currentlistsymbol" file="strc-lst.mkvi"/>
+
+ <cd:command name="listlength" file="strc-lst.mkvi"/>
+
+ <cd:command name="currentlistentrywrapper" type="environment" file="strc-lst.mkvi"/>
+
+ <cd:command name="currentlistentryreferenceattribute" file="strc-lst.mkvi">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="number"/>
+ <cd:constant type="text"/>
+ <cd:constant type="pagenumber"/>
+ <cd:constant type="all"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="currentlistentrydestinationattribute" file="strc-lst.mkvi"/>
+
+ <cd:command name="currentlistentrylimitedtext" file="strc-lst.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-logo.xml b/tex/context/interface/mkiv/i-logo.xml
new file mode 100644
index 000000000..a14717e93
--- /dev/null
+++ b/tex/context/interface/mkiv/i-logo.xml
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="TeX" file="cont-log.mkiv"/>
+
+ <cd:command name="ConTeXt" file="cont-log.mkiv"/>
+
+ <cd:command name="PPCHTeX" file="cont-log.mkiv"/>
+
+ <cd:command name="PRAGMA" file="cont-log.mkiv"/>
+
+ <cd:command name="LaTeX" file="cont-log.mkiv"/>
+
+ <cd:command name="TaBlE" file="cont-log.mkiv"/>
+
+ <cd:command name="PiCTeX" file="cont-log.mkiv"/>
+
+ <cd:command name="AmSTeX" file="cont-log.mkiv"/>
+
+ <cd:command name="LamSTeX" file="cont-log.mkiv"/>
+
+ <cd:command name="Context" file="cont-log.mkiv"/>
+
+ <cd:command name="MetaFont" file="cont-log.mkiv"/>
+
+ <cd:command name="MetaPost" file="cont-log.mkiv"/>
+
+ <cd:command name="MetaFun" file="cont-log.mkiv"/>
+
+ <cd:command name="eTeX" file="cont-log.mkiv"/>
+
+ <cd:command name="pdfTeX" file="cont-log.mkiv"/>
+
+ <cd:command name="pdfeTeX" file="cont-log.mkiv"/>
+
+ <cd:command name="luaTeX" file="cont-log.mkiv"/>
+
+ <cd:command name="luajitTeX" file="cont-log.mkiv"/>
+
+ <cd:command name="metaTeX" file="cont-log.mkiv"/>
+
+ <cd:command name="XeTeX" file="cont-log.mkiv"/>
+
+ <cd:command name="LuaTeX" file="cont-log.mkiv"/>
+
+ <cd:command name="LuajitTeX" file="cont-log.mkiv"/>
+
+ <cd:command name="MKII" file="cont-log.mkiv"/>
+
+ <cd:command name="MKIV" file="cont-log.mkiv"/>
+
+ <cd:command name="MKVI" file="cont-log.mkiv"/>
+
+ <cd:command name="MKIX" file="cont-log.mkiv"/>
+
+ <cd:command name="MKXI" file="cont-log.mkiv"/>
+
+ <cd:command name="MPII" file="cont-log.mkiv"/>
+
+ <cd:command name="MPIV" file="cont-log.mkiv"/>
+
+ <cd:command name="MPVI" file="cont-log.mkiv"/>
+
+ <cd:command name="METAFONT" file="cont-log.mkiv"/>
+
+ <cd:command name="METAPOST" file="cont-log.mkiv"/>
+
+ <cd:command name="PPCHTEX" file="cont-log.mkiv"/>
+
+ <cd:command name="CONTEXT" file="cont-log.mkiv"/>
+
+ <cd:command name="METAFUN" file="cont-log.mkiv"/>
+
+ <cd:command name="TEX" file="cont-log.mkiv"/>
+
+ <cd:command name="LATEX" file="cont-log.mkiv"/>
+
+ <cd:command name="PICTEX" file="cont-log.mkiv"/>
+
+ <cd:command name="TABLE" file="cont-log.mkiv"/>
+
+ <cd:command name="AMSTEX" file="cont-log.mkiv"/>
+
+ <cd:command name="LAMSTEX" file="cont-log.mkiv"/>
+
+ <cd:command name="INRSTEX" file="cont-log.mkiv"/>
+
+ <cd:command name="ETEX" file="cont-log.mkiv"/>
+
+ <cd:command name="PDFTEX" file="cont-log.mkiv"/>
+
+ <cd:command name="PDFETEX" file="cont-log.mkiv"/>
+
+ <cd:command name="LUATEX" file="cont-log.mkiv"/>
+
+ <cd:command name="LUAJITTEX" file="cont-log.mkiv"/>
+
+ <cd:command name="XETEX" file="cont-log.mkiv"/>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-lohi.xml b/tex/context/interface/mkiv/i-lohi.xml
new file mode 100644
index 000000000..7cfd489eb
--- /dev/null
+++ b/tex/context/interface/mkiv/i-lohi.xml
@@ -0,0 +1,223 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definelow" file="typo-scr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplow"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuplow" file="typo-scr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="down">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="low" generated="yes" variant="generated" file="typo-scr.mkiv">
+ <cd:sequence>
+ <cd:variable value="low"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="low" file="typo-scr.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definehigh" file="typo-scr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuphigh"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuphigh" file="typo-scr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="up">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="high" generated="yes" variant="generated" file="typo-scr.mkiv">
+ <cd:sequence>
+ <cd:variable value="high"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="high" file="typo-scr.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definelowhigh" file="typo-scr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplowhigh"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuplowhigh" file="typo-scr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="up">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="down">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="lowhigh" generated="yes" variant="generated" file="typo-scr.mkiv">
+ <cd:sequence>
+ <cd:variable value="lowhigh"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="left"/>
+ <cd:constant type="right" default="yes"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="lohi" file="typo-scr.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="left"/>
+ <cd:constant type="right" default="yes"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="hilo" file="typo-scr.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="left"/>
+ <cd:constant type="right" default="yes"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definelowmidhigh" file="typo-scr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplowmidhigh"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuplowmidhigh" file="typo-scr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="up">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="down">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="lowmidhigh" generated="yes" variant="generated" file="typo-scr.mkiv">
+ <cd:sequence>
+ <cd:variable value="lowmidhigh"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="lomihi" file="typo-scr.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="himilo" file="typo-scr.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-lua.xml b/tex/context/interface/mkiv/i-lua.xml
new file mode 100644
index 000000000..525753723
--- /dev/null
+++ b/tex/context/interface/mkiv/i-lua.xml
@@ -0,0 +1,193 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="taggedctxcommand" file="back-exp.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="luafunction" file="cldf-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="cldprocessfile" file="cldf-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="cldloadfile" file="cldf-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="cldcontext" file="cldf-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="cldcommand" file="cldf-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ctxdirectlua" file="luat-cod.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ctxlatelua" file="luat-cod.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ctxsprint" file="luat-cod.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ctxcommand" file="luat-cod.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ctxdirectcommand" file="luat-cod.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ctxlatecommand" file="luat-cod.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ctxreport" file="luat-cod.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ctxlua" file="luat-cod.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="luacode" file="luat-cod.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="lateluacode" file="luat-cod.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="directluacode" file="luat-cod.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="luaversion" file="luat-cod.mkiv"/>
+
+ <cd:command name="registerctxluafile" file="luat-cod.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ctxloadluafile" file="luat-cod.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="lua" type="environment" file="luat-ini.mkiv"/>
+
+ <cd:command name="luacode" type="environment" file="luat-ini.mkiv"/>
+
+ <cd:command name="luamajorversion" file="luat-ini.mkiv"/>
+
+ <cd:command name="luaminorversion" file="luat-ini.mkiv"/>
+
+ <cd:command name="luaexpanded" file="luat-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="luaparameterset" type="environment" file="luat-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="luaparameterset" file="luat-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="luaconditional" file="luat-ini.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ctxluacode" file="luat-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ctxfunctiondefinition" type="environment" file="luat-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ctxfunctiondefinition" generated="yes" variant="generated" file="luat-ini.mkiv">
+ <cd:sequence>
+ <cd:variable value="ctxfunctiondefinition"/>
+ </cd:sequence>
+ </cd:command>
+
+ <cd:command name="ctxfunction" type="environment" file="luat-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ctxfunction" file="luat-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ctxfunction" generated="yes" variant="generated" file="luat-ini.mkiv">
+ <cd:sequence>
+ <cd:variable value="ctxfunction"/>
+ </cd:sequence>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-makeup.xml b/tex/context/interface/mkiv/i-makeup.xml
new file mode 100644
index 000000000..42a327543
--- /dev/null
+++ b/tex/context/interface/mkiv/i-makeup.xml
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definemakeup" file="page-mak.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmakeup"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupmakeup" file="page-mak.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="page">
+ <cd:inherit name="page"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:inherit name="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="setups">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="top">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="bottom">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="top"/>
+ </cd:parameter>
+ <cd:parameter name="reference">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="pagestate">
+ <cd:constant type="start"/>
+ <cd:constant type="stop" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="headerstate">
+ <cd:constant type="start"/>
+ <cd:constant type="stop" default="yes"/>
+ <cd:constant type="high"/>
+ <cd:constant type="empty"/>
+ <cd:constant type="none"/>
+ <cd:constant type="normal"/>
+ </cd:parameter>
+ <cd:parameter name="footerstate">
+ <cd:constant type="start"/>
+ <cd:constant type="stop" default="yes"/>
+ <cd:constant type="high"/>
+ <cd:constant type="empty"/>
+ <cd:constant type="none"/>
+ <cd:constant type="normal"/>
+ </cd:parameter>
+ <cd:parameter name="topstate">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="high"/>
+ <cd:constant type="empty"/>
+ <cd:constant type="none"/>
+ <cd:constant type="normal" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="bottomstate">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="high"/>
+ <cd:constant type="empty"/>
+ <cd:constant type="none"/>
+ <cd:constant type="normal" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="textstate">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="high"/>
+ <cd:constant type="empty"/>
+ <cd:constant type="none"/>
+ <cd:constant type="normal" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="doublesided">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="empty" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:inherit name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="makeup" type="environment" file="page-mak.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmakeup"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="makeup" type="environment" generated="yes" variant="generated" file="page-mak.mkvi">
+ <cd:sequence>
+ <cd:variable value="makeup"/>
+ <cd:string value="makeup"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmakeup"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="standardmakeup" type="environment" file="page-mak.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmakeup"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="textmakeup" type="environment" file="page-mak.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmakeup"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pagemakeup" type="environment" file="page-mak.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmakeup"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="middlemakeup" type="environment" file="page-mak.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmakeup"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-marginblock.xml b/tex/context/interface/mkiv/i-marginblock.xml
new file mode 100644
index 000000000..f40bf112a
--- /dev/null
+++ b/tex/context/interface/mkiv/i-marginblock.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definemarginblock" file="page-mbk.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmarginblock"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupmarginblock" file="page-mbk.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start" default="yes"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:inherit name="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="top">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="bottom">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="inmargin" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="setupmarginblocks" file="page-mbk.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupmarginblock"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="marginblock" type="environment" file="page-mbk.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-margindata.xml b/tex/context/interface/mkiv/i-margindata.xml
new file mode 100644
index 000000000..5a2b014ea
--- /dev/null
+++ b/tex/context/interface/mkiv/i-margindata.xml
@@ -0,0 +1,469 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definemargindata" file="typo-mar.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmargindata"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupmargindata" file="typo-mar.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="strut">
+ <cd:resolve name="value-strut"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:inherit name="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="anchor">
+ <cd:constant type="region"/>
+ <cd:constant type="text" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="left" default="yes"/>
+ <cd:constant type="right"/>
+ <cd:constant type="inner"/>
+ <cd:constant type="outer"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:constant type="top"/>
+ <cd:constant type="line"/>
+ <cd:constant type="first"/>
+ <cd:constant type="depth"/>
+ <cd:constant type="height"/>
+ </cd:parameter>
+ <cd:parameter name="category">
+ <cd:constant type="default"/>
+ <cd:constant type="edge"/>
+ </cd:parameter>
+ <!--
+ <cd:parameter name="name">
+ <cd:constant type="???"/>
+ </cd:parameter>
+ -->
+ <cd:parameter name="scope">
+ <cd:constant type="local"/>
+ <cd:constant type="global"/>
+ </cd:parameter>
+ <cd:parameter name="option">
+ <cd:constant type="text"/>
+ <cd:constant type="paragraph"/>
+ </cd:parameter>
+ <cd:parameter name="margin">
+ <cd:constant type="local"/>
+ <cd:constant type="normal" default="yes"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="edge"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="dy">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="bottomspace">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="threshold">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="line">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="stack">
+ <cd:constant type="yes"/>
+ <cd:constant type="continue"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="definemarginframed" file="typo-mar.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmarginframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="setupmarginframed" file="typo-mar.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="margindata" generated="yes" variant="generated" file="typo-mar.mkiv">
+ <cd:sequence>
+ <cd:variable value="margindata"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="reference">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:inherit name="setupmargindata"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmarginframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="margindata" file="typo-mar.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="reference">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:inherit name="setupmargindata"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmarginframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="inleftmargin" file="typo-mar.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="reference">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:inherit name="setupmargindata"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmarginframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="inrightmargin" file="typo-mar.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="reference">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:inherit name="setupmargindata"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmarginframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="inoutermargin" file="typo-mar.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="reference">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:inherit name="setupmargindata"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmarginframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ininnermargin" file="typo-mar.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="reference">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:inherit name="setupmargindata"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmarginframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="inleftedge" file="typo-mar.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="reference">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:inherit name="setupmargindata"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmarginframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="inrightedge" file="typo-mar.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="reference">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:inherit name="setupmargindata"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmarginframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ininneredge" file="typo-mar.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="reference">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:inherit name="setupmargindata"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmarginframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="inouteredge" file="typo-mar.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="reference">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:inherit name="setupmargindata"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmarginframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="atleftmargin" file="typo-mar.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="reference">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:inherit name="setupmargindata"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmarginframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="atrightmargin" file="typo-mar.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="reference">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:inherit name="setupmargindata"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmarginframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="inleft" file="typo-mar.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="reference">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:inherit name="setupmargindata"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmarginframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="inright" file="typo-mar.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="reference">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:inherit name="setupmargindata"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmarginframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ininner" file="typo-mar.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="reference">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:inherit name="setupmargindata"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmarginframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="inouter" file="typo-mar.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="reference">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:inherit name="setupmargindata"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmarginframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="inmargin" file="typo-mar.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="reference">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:inherit name="setupmargindata"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmarginframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="inother" file="typo-mar.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="reference">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:inherit name="setupmargindata"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmarginframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="margintext" file="typo-mar.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="reference">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:inherit name="setupmargindata"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmarginframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="marginword" file="typo-mar.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="reference">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:inherit name="setupmargindata"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmarginframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="margintitle" file="typo-mar.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="reference">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:inherit name="setupmargindata"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmarginframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="inothermargin" file="typo-mar.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="reference">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:inherit name="setupmargindata"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmarginframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-marker.xml b/tex/context/interface/mkiv/i-marker.xml
new file mode 100644
index 000000000..103fc5e55
--- /dev/null
+++ b/tex/context/interface/mkiv/i-marker.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definemarker" file="attr-mkr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setmarker" file="attr-mkr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetmarker" file="attr-mkr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="boxmarker" file="attr-mkr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-marking.xml b/tex/context/interface/mkiv/i-marking.xml
new file mode 100644
index 000000000..a556f1007
--- /dev/null
+++ b/tex/context/interface/mkiv/i-marking.xml
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definemarking" file="strc-mar.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-mark-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmarking"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupmarking" file="strc-mar.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-mark-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start" default="yes"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="expansion">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="separator">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="filtercommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="relatemarking" file="strc-mar.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-mark"/>
+ <cd:resolve name="keyword-mark"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setmarking" file="strc-mar.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-mark"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetmarking" file="strc-mar.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-mark"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="synchronizemarking" file="strc-mar.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-mark"/>
+ <cd:resolve name="keyword-number"/>
+ <cd:keywords optional="yes">
+ <cd:constant type="keep"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsemarking" file="strc-mar.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-mark"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifmarkingelse" file="strc-mar.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-mark"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getmarking" file="strc-mar.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-mark"/>
+ <cd:keywords optional="yes">
+ <cd:constant type="page" default="yes"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:resolve name="value-markposition"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fetchonemark" file="strc-mar.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-mark"/>
+ <cd:keywords optional="yes">
+ <cd:resolve name="value-markposition"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fetchtwomarks" file="strc-mar.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-mark"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fetchallmarks" file="strc-mar.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-mark"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fetchmark" file="strc-mar.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-mark"/>
+ <cd:keywords optional="yes">
+ <cd:resolve name="value-markposition"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fetchmarking" file="strc-mar.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-mark"/>
+ <cd:keywords>
+ <cd:constant type="page"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:resolve name="value-markposition"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fetchonemarking" file="strc-mar.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-mark"/>
+ <cd:keywords>
+ <cd:constant type="page"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:resolve name="value-markposition"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fetchtwomarkings" file="strc-mar.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-mark"/>
+ <cd:keywords>
+ <cd:constant type="page"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fetchallmarkings" file="strc-mar.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-mark"/>
+ <cd:keywords>
+ <cd:constant type="page"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-math.xml b/tex/context/interface/mkiv/i-math.xml
new file mode 100644
index 000000000..894cf2a2a
--- /dev/null
+++ b/tex/context/interface/mkiv/i-math.xml
@@ -0,0 +1,456 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definemathematics" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmathematics"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupmathematics" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="openup">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="symbolset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="functionstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="compact">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:constant type="l2r" default="yes"/>
+ <cd:constant type="r2l"/>
+ </cd:parameter>
+ <cd:parameter name="bidi">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="sygreek">
+ <cd:constant type="normal"/>
+ <cd:constant type="italic" default="yes"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="lcgreek">
+ <cd:constant type="normal"/>
+ <cd:constant type="italic" default="yes"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="ucgreek">
+ <cd:constant type="normal" default="yes"/>
+ <cd:constant type="italic"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="italics">
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ <cd:constant type="3" default="yes"/>
+ <cd:constant type="4"/>
+ <cd:constant type="none"/>
+ <cd:constant type="reset"/>
+ </cd:parameter>
+ <cd:parameter name="autopunctuation">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ <cd:constant type="all"/>
+ </cd:parameter>
+ <cd:parameter name="setups">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="domain">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="reset"/>
+ </cd:parameter>
+ <cd:parameter name="textstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="textcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="functionstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="integral">
+ <cd:constant type="limits"/>
+ <cd:constant type="nolimits"/>
+ <cd:constant type="autolimits" default="yes"/>
+ <cd:constant type="displaylimits"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="inlineordisplaymath" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathematics" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="math" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="m" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definemathcommand" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords optional="yes">
+ <cd:constant type="ord"/>
+ <cd:constant type="op"/>
+ <cd:constant type="bin"/>
+ <cd:constant type="rel"/>
+ <cd:constant type="open"/>
+ <cd:constant type="close"/>
+ <cd:constant type="punct"/>
+ <cd:constant type="alpha"/>
+ <cd:constant type="inner"/>
+ <cd:constant type="nothing" default="yes"/>
+ <cd:constant type="limop"/>
+ <cd:constant type="nolop"/>
+ <cd:constant type="box"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="one"/>
+ <cd:constant type="two"/>
+ </cd:keywords>
+ <cd:keywords delimiters="braces" optional="yes">
+ <cd:constant type="cd:command"/>
+ <cd:constant type="cd:oneargument"/>
+ <cd:constant type="cd:twoarguments"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathcommand" generated="yes" variant="generated" file="math-ini.mkiv">
+ <cd:sequence>
+ <cd:variable value="mathcommand"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathcommand" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathop" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mbox" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mtext" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathfunction" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mfunction" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mfunctionlabeltext" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="stackrel" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="apply" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definemathstyle" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords list="yes">
+ <cd:resolve name="value-mathstyle"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupmathstyle" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:resolve name="value-mathstyle"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setmathstyle" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="braces" list="yes">
+ <cd:resolve name="value-mathstyle"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathstyle" type="environment" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:resolve name="value-mathstyle"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathstyle" type="environment" begin="push" end="pop" file="math-ini.mkiv"/>
+
+ <cd:command name="usemathstyleparameter" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="usemathstyleparameter" type="environment" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathtext" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathtexttf" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathtextit" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathtextsl" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathtextbf" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathtextbi" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathtextbs" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathword" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathwordtf" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathwordit" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathwordsl" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathwordbf" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathwordbi" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathwordbs" file="math-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathrm" file="math-ini.mkiv"/>
+
+ <cd:command name="mathss" file="math-ini.mkiv"/>
+
+ <cd:command name="mathtt" file="math-ini.mkiv"/>
+
+ <cd:command name="mathtf" file="math-ini.mkiv"/>
+
+ <cd:command name="mathsl" file="math-ini.mkiv"/>
+
+ <cd:command name="mathit" file="math-ini.mkiv"/>
+
+ <cd:command name="mathbf" file="math-ini.mkiv"/>
+
+ <cd:command name="mathbi" file="math-ini.mkiv"/>
+
+ <cd:command name="mathbs" file="math-ini.mkiv"/>
+
+ <cd:command name="mathupright" file="math-ini.mkiv"/>
+
+ <cd:command name="mathdefault" file="math-ini.mkiv"/>
+
+ <cd:command name="mathscript" file="math-ini.mkiv"/>
+
+ <cd:command name="mathfraktur" file="math-ini.mkiv"/>
+
+ <cd:command name="mathblackboard" file="math-ini.mkiv"/>
+
+ <cd:command name="displaymath" file="supp-mat.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="inlinemath" file="supp-mat.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="textmath" file="supp-mat.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="imath" type="environment" file="supp-mat.mkiv"/>
+
+ <cd:command name="dmath" type="environment" file="supp-mat.mkiv"/>
+
+ <cd:command name="mathmode" type="environment" file="supp-mat.mkiv"/>
+
+ <cd:command name="nonmathematics" file="supp-mat.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="displaymathematics" file="supp-mat.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="inlinemathematics" file="supp-mat.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="automathematics" file="supp-mat.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="cramped" file="supp-mat.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="crampedllap" file="supp-mat.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="crampedrlap" file="supp-mat.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="crampedclap" file="supp-mat.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-mathalignment.xml b/tex/context/interface/mkiv/i-mathalignment.xml
new file mode 100644
index 000000000..cc0ff6fa7
--- /dev/null
+++ b/tex/context/interface/mkiv/i-mathalignment.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definemathalignment" file="math-ali.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmathalignment"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupmathalignment" file="math-ali.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="m">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:constant type="left"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="right"/>
+ <cd:constant type="normal" default="yes"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathalignment" type="environment" generated="yes" variant="generated" file="math-ali.mkiv">
+ <cd:sequence>
+ <cd:variable value="mathalignment"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmathalignment"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathalignment" type="environment" file="math-ali.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmathalignment"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="align" type="environment" file="math-ali.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmathalignment"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-mathcases.xml b/tex/context/interface/mkiv/i-mathcases.xml
new file mode 100644
index 000000000..9744fa9e5
--- /dev/null
+++ b/tex/context/interface/mkiv/i-mathcases.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definemathcases" file="math-ali.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmathcases"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupmathcases" file="math-ali.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="numberdistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathcases" type="environment" generated="yes" variant="generated" file="math-ali.mkiv">
+ <cd:sequence>
+ <cd:variable value="mathcases"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmathcases"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathcases" type="environment" file="math-ali.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmathcases"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="cases" type="environment" file="math-ali.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmathcases"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-mathfence.xml b/tex/context/interface/mkiv/i-mathfence.xml
new file mode 100644
index 000000000..b23f8558e
--- /dev/null
+++ b/tex/context/interface/mkiv/i-mathfence.xml
@@ -0,0 +1,199 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definemathfence" file="math-fen.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmathfence"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupmathfence" file="math-fen.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="command">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="middle">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="mathstyle">
+ <cd:resolve name="value-mathstyle"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="state">
+ <cd:constant type="auto"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fence" generated="yes" variant="generated" file="math-fen.mkiv">
+ <cd:sequence>
+ <cd:variable value="fence"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fenced" file="math-fen.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fence" file="math-fen.mkiv"/>
+
+ <cd:command name="left" file="math-fen.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="middle" file="math-fen.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="right" file="math-fen.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="big" file="math-fen.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="Big" file="math-fen.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="bigg" file="math-fen.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="Bigg" file="math-fen.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="bigl" file="math-fen.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="bigm" file="math-fen.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="bigr" file="math-fen.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="Bigl" file="math-fen.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="Bigm" file="math-fen.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="Bigr" file="math-fen.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="biggl" file="math-fen.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="biggm" file="math-fen.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="biggr" file="math-fen.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="Biggl" file="math-fen.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="Biggm" file="math-fen.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="Biggr" file="math-fen.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="lfence" file="math-fen.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mfence" file="math-fen.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rfence" file="math-fen.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-character"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="checkedfences" type="environment" file="math-fen.mkiv"/>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-mathmatrix.xml b/tex/context/interface/mkiv/i-mathmatrix.xml
new file mode 100644
index 000000000..a934d2b31
--- /dev/null
+++ b/tex/context/interface/mkiv/i-mathmatrix.xml
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definemathmatrix" file="math-ali.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmathmatrix"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupmathmatrix" file="math-ali.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:constant type="left"/>
+ <cd:constant type="middle" default="yes"/>
+ <cd:constant type="right"/>
+ <cd:constant type="normal"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="top"/>
+ <cd:constant type="bottom"/>
+ <cd:constant type="high"/>
+ <cd:constant type="low"/>
+ <cd:constant type="lohi"/>
+ <cd:constant type="normal" default="yes"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathmatrix" type="environment" generated="yes" variant="generated" file="math-ali.mkiv">
+ <cd:sequence>
+ <cd:variable value="mathmatrix"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmathmatrix"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathmatrix" type="environment" file="math-ali.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmathmatrix"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="matrix" type="environment" file="math-ali.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmathmatrix"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="matrices" type="environment" file="math-ali.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmathmatrix"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="intertext" type="environment" file="math-ali.mkiv"/>
+
+ <cd:command name="intertext" file="math-ali.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="substack" type="environment" file="math-ali.mkiv"/>
+
+ <cd:command name="overset" file="math-ali.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="underset" file="math-ali.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-mathornament.xml b/tex/context/interface/mkiv/i-mathornament.xml
new file mode 100644
index 000000000..6009b7921
--- /dev/null
+++ b/tex/context/interface/mkiv/i-mathornament.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definemathornament" file="math-rad.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmathornament"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupmathornament" file="math-rad.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="alternative">
+ <cd:constant type="mp"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="mpoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="mp">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathornament" generated="yes" variant="generated" file="math-rad.mkvi">
+ <cd:sequence>
+ <cd:variable value="mathornament"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-mathradical.xml b/tex/context/interface/mkiv/i-mathradical.xml
new file mode 100644
index 000000000..cedbb4200
--- /dev/null
+++ b/tex/context/interface/mkiv/i-mathradical.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definemathradical" file="math-rad.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmathradical"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupmathradical" file="math-rad.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="alternative">
+ <cd:constant type="default"/>
+ <cd:constant type="normal" default="yes"/>
+ <cd:constant type="mp"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="mpoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="mp">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathradical" generated="yes" variant="generated" file="math-rad.mkvi">
+ <cd:sequence>
+ <cd:variable value="mathradical"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-text-optional"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="sqrt" file="math-rad.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-text-optional"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-mathstackers.xml b/tex/context/interface/mkiv/i-mathstackers.xml
new file mode 100644
index 000000000..37b5737ff
--- /dev/null
+++ b/tex/context/interface/mkiv/i-mathstackers.xml
@@ -0,0 +1,1789 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definemathstackers" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmathstackers"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupmathstackers" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="topcommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="bottomcommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="middlecommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="mp">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="mpheight">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="mpdepth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="mpoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="hoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="minheight">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="mindepth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="mathclass">
+ <cd:constant type="rel" default="yes"/>
+ <cd:constant type="ord"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="min"/>
+ <cd:constant type="max"/>
+ <cd:constant type="normal" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="top" default="yes"/>
+ <cd:constant type="bottom"/>
+ <cd:constant type="high"/>
+ <cd:constant type="low"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="normal"/>
+ <cd:constant type="default"/>
+ <cd:constant type="mp"/>
+ </cd:parameter>
+ <cd:parameter name="minwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="moffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="order">
+ <cd:constant type="normal" default="yes"/>
+ <cd:constant type="reverse"/>
+ </cd:parameter>
+ <cd:parameter name="mathlimits">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definemathextensible" file="math-sty.mkvi">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathextensible" generated="yes" variant="generated" file="math-stc.mkvi">
+ <cd:sequence>
+ <cd:variable value="mathextensible"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definemathoverextensible" file="math-sty.mkvi">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="top"/>
+ <cd:constant type="vfenced"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathoverextensible" generated="yes" variant="generated" file="math-stc.mkvi">
+ <cd:sequence>
+ <cd:variable value="mathoverextensible"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definemathunderextensible" file="math-sty.mkvi">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="bottom"/>
+ <cd:constant type="vfenced"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathunderextensible" generated="yes" variant="generated" file="math-stc.mkvi">
+ <cd:sequence>
+ <cd:variable value="mathunderextensible"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definemathdoubleextensible" file="math-sty.mkvi">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="both"/>
+ <cd:constant type="vfenced"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-number"/>
+ <cd:resolve name="keyword-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathdoubleextensible" generated="yes" variant="generated" file="math-stc.mkvi">
+ <cd:sequence>
+ <cd:variable value="mathdoubleextensible"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definemathovertextextensible" file="math-sty.mkvi">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="bothtext"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathovertextextensible" generated="yes" variant="generated" file="math-stc.mkvi">
+ <cd:sequence>
+ <cd:variable value="mathovertextextensible"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definemathundertextextensible" file="math-sty.mkvi">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="bothtext"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathundertextextensible" generated="yes" variant="generated" file="math-stc.mkvi">
+ <cd:sequence>
+ <cd:variable value="mathundertextextensible"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definemathtriplet" file="math-sty.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathtriplet" generated="yes" variant="generated" file="math-stc.mkvi">
+ <cd:sequence>
+ <cd:variable value="mathtriplet"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathtriplet" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xrel" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xequal" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xleftarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xrightarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xleftrightarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xLeftarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xRightarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xLeftrightarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xtwoheadleftarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xtwoheadrightarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmapsto" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xhookleftarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xhookrightarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xleftharpoondown" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xleftharpoonup" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xrightharpoondown" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xrightharpoonup" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xrightoverleftarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xleftrightharpoons" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xrightleftharpoons" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xtriplerel" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mrel" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mequal" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mleftarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mrightarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mleftrightarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mLeftarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mRightarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mLeftrightarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mtwoheadleftarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mtwoheadrightarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mmapsto" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mhookleftarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mhookrightarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mleftharpoondown" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mleftharpoonup" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mrightharpoondown" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mrightharpoonup" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mrightoverleftarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mleftrightharpoons" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mrightleftharpoons" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mtriplerel" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="eleftarrowfill" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="erightarrowfill" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="eleftrightarrowfill" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="etwoheadrightarrowfill" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="eleftharpoondownfill" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="eleftharpoonupfill" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="erightharpoondownfill" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="erightharpoonupfill" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="eoverbarfill" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="eunderbarfill" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="eoverbracefill" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="eunderbracefill" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="eoverparentfill" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="eunderparentfill" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="eoverbracketfill" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="eunderbracketfill" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="trel" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tequal" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tmapsto" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tleftarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="trightarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tleftrightarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tLeftarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tRightarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tLeftrightarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ttwoheadleftarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ttwoheadrightarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="thookleftarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="thookrightarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tleftharpoondown" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tleftharpoonup" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="trightharpoondown" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="trightharpoonup" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="trightoverleftarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tleftrightharpoons" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="trightleftharpoons" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ttriplerel" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="cleftarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="crightarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="crightoverleftarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <!--
+ <cd:keywords optional="yes">
+ <cd:constant type="reverse"/>
+ <cd:constant type="mathematics"/>
+ <cd:constant type="text"/>
+ <cd:constant type="chemistry"/>
+ </cd:keywords>
+ -->
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="underleftarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="underrightarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="underleftrightarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="undertwoheadleftarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="undertwoheadrightarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="underleftharpoondown" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="underleftharpoonup" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="underrightharpoondown" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="underrightharpoonup" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="underbar" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="underbrace" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="underparent" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="underbracket" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="overleftarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="overrightarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="overleftrightarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="overtwoheadleftarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="overtwoheadrightarrow" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="overleftharpoondown" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="overleftharpoonup" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="overrightharpoondown" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="overrightharpoonup" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="overbar" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="overbrace" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="overparent" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="overbracket" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doublebar" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doublebrace" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doubleparent" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doublebracket" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="overbarunderbar" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="overbraceunderbrace" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="overparentunderparent" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="overbracketunderbracket" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="overbartext" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="overbracetext" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="overparenttext" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="overbrackettext" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="underbartext" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="underbracetext" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="underparenttext" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="underbrackettext" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="singlebond" file="math-stc.mkvi"/>
+
+ <cd:command name="doublebond" file="math-stc.mkvi"/>
+
+ <cd:command name="triplebond" file="math-stc.mkvi"/>
+
+ <cd:command name="definemathunstacked" file="math-stc.mkvi">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="wide"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mathunstacked" generated="yes" variant="generated" file="math-stc.mkvi">
+ <cd:sequence>
+ <cd:variable value="mathunstacked"/>
+ </cd:sequence>
+ </cd:command>
+
+ <cd:command name="And" file="math-stc.mkvi"/>
+
+ <cd:command name="impliedby" file="math-stc.mkvi"/>
+
+ <cd:command name="implies" file="math-stc.mkvi"/>
+
+ <cd:command name="iff" file="math-stc.mkvi"/>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-metapost.xml b/tex/context/interface/mkiv/i-metapost.xml
new file mode 100644
index 000000000..ca15ebb9d
--- /dev/null
+++ b/tex/context/interface/mkiv/i-metapost.xml
@@ -0,0 +1,406 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="MPdefinitions" type="environment" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPextensions" type="environment" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPinitializations" type="environment" file="meta-ini.mkiv"/>
+
+ <cd:command name="MPinclusions" type="environment" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ </cd:keywords>
+ <cd:resolve name="argument-name-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPinclusions" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ </cd:keywords>
+ <cd:resolve name="argument-name-optional"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="defineMPinstance" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupMPinstance"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupMPinstance" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="format">
+ <cd:constant type="metafun" default="yes"/>
+ <cd:constant type="mpost"/>
+ </cd:parameter>
+ <cd:parameter name="initializations">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="setups">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="textstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="textcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="extensions">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:constant type="binary"/>
+ <cd:constant type="decimal"/>
+ <cd:constant type="double"/>
+ <cd:constant type="scaled"/>
+ <cd:constant type="default" default="yes"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetMPinstance" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="processMPfigurefile" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPdrawing" type="environment" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="-"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetMPdrawing" file="meta-ini.mkiv"/>
+
+ <cd:command name="getMPdrawing" file="meta-ini.mkiv"/>
+
+ <cd:command name="MPdrawing" type="environment" begin="push" end="pop" file="meta-ini.mkiv"/>
+
+ <cd:command name="MPdrawing" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPclip" type="environment" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPfontsizehskip" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-font"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupMPvariables" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setMPvariables" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setMPvariable" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="assignment-userdata"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPrawvar" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPvariable" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPvar" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="useMPvariables" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-key-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="uniqueMPgraphic" type="environment" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-key-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="uniqueMPgraphic" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:assignments delimiters="braces" list="yes" optional="yes">
+ <cd:parameter name="cd:key">
+ <cd:constant type="cd:value"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="useMPgraphic" type="environment" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-key-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="useMPgraphic" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:assignments delimiters="braces" list="yes" optional="yes">
+ <cd:parameter name="cd:key">
+ <cd:constant type="cd:value"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="usableMPgraphic" type="environment" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-key-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="reuseMPgraphic" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:assignments delimiters="braces" list="yes" optional="yes">
+ <cd:parameter name="cd:key">
+ <cd:constant type="cd:value"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="reusableMPgraphic" type="environment" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-key-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="reusableMPgraphic" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:assignments delimiters="braces" list="yes" optional="yes">
+ <cd:parameter name="cd:key">
+ <cd:constant type="cd:value"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="uniqueMPpagegraphic" type="environment" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-key-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="uniqueMPpagegraphic" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:assignments delimiters="braces" list="yes" optional="yes">
+ <cd:parameter name="cd:key">
+ <cd:constant type="cd:value"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="processMPbuffer" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="runMPbuffer" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPenvironment" type="environment" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="reset"/>
+ <cd:constant type="global"/>
+ <cd:constant type="+"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetMPenvironment" file="meta-ini.mkiv"/>
+
+ <cd:command name="useMPenvironmentbuffer" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPcode" type="environment" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPcode" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name-optional"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPrun" type="environment" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="useMPrun" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="useMPlibrary" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setMPtext" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPtext" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPstring" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPbetex" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelseMPgraphic" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifMPgraphicelse" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="staticMPfigure" type="environment" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="staticMPgraphic" type="environment" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-key-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="usestaticMPfigure" file="meta-ini.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupscale"/>
+ </cd:assignments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupMPgraphics" file="meta-ini">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="color">
+ <cd:constant type="local" default="yes"/>
+ <cd:constant type="global"/>
+ </cd:parameter>
+ <cd:parameter name="mpy">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-mixedcolumns.xml b/tex/context/interface/mkiv/i-mixedcolumns.xml
new file mode 100644
index 000000000..09e0f3b34
--- /dev/null
+++ b/tex/context/interface/mkiv/i-mixedcolumns.xml
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definemixedcolumns" file="page-mix.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmixedcolumns"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupmixedcolumns" file="page-mix.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="grid">
+ <cd:inherit name="setupgrid"/>
+ </cd:parameter>
+ <cd:parameter name="rulethickness">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:constant type="otr"/>
+ <cd:constant type="box"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="maxheight">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="maxwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="step">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="profile">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:inherit name="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="setups">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="balance">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="splitmethod">
+ <cd:constant type="none"/>
+ <cd:constant type="fixed"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="local" default="yes"/>
+ <cd:constant type="global"/>
+ </cd:parameter>
+ <cd:parameter name="internalgrid">
+ <cd:constant type="line" default="yes"/>
+ <cd:constant type="halfline"/>
+ </cd:parameter>
+ <cd:parameter name="separator">
+ <cd:constant type="rule"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="rulecolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="direction">
+ <cd:constant type="normal" default="yes"/>
+ <cd:constant type="reverse"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mixedcolumns" type="environment" file="page-mix.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmixedcolumns"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mixedcolumns" type="environment" generated="yes" variant="generated" file="page-mix.mkiv">
+ <cd:sequence>
+ <cd:variable value="mixedcolumns"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmixedcolumns"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="boxedcolumns" type="environment" file="page-mix.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmixedcolumns"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-modes.xml b/tex/context/interface/mkiv/i-modes.xml
new file mode 100644
index 000000000..8df4c27f6
--- /dev/null
+++ b/tex/context/interface/mkiv/i-modes.xml
@@ -0,0 +1,216 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="newmode" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setmode" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetmode" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="newsystemmode" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setsystemmode" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetsystemmode" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="preventmode" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="enablemode" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="disablemode" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="globalpreventmode" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="globalenablemode" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="globaldisablemode" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definemode" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list"/>
+ <cd:keywords optional="yes">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ <cd:constant type="keep"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="booleanmodevalue" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsemode" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name-list"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifmodeelse" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name-list"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifmode" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name-list"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnotmode" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name-list"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mode" type="environment" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="notmode" type="environment" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelseallmodes" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name-list"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifallmodeselse" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name-list"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifallmodes" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name-list"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnotallmodes" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name-list"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="allmodes" type="environment" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="notallmodes" type="environment" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="modeset" type="environment" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="default"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pushmode" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="popmode" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pushsystemmode" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="popsystemmode" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-modules.xml b/tex/context/interface/mkiv/i-modules.xml
new file mode 100644
index 000000000..9567cb9af
--- /dev/null
+++ b/tex/context/interface/mkiv/i-modules.xml
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="usemodule" file="file-mod.mkvi">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="m"/>
+ <cd:constant type="p"/>
+ <cd:constant type="s"/>
+ <cd:constant type="x"/>
+ <cd:constant type="t"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-file-list"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="cd:key">
+ <cd:constant type="cd:value"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="usemodules" file="file-mod.mkvi">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="m"/>
+ <cd:constant type="p"/>
+ <cd:constant type="s"/>
+ <cd:constant type="x"/>
+ <cd:constant type="t"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-file-list"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="cd:key">
+ <cd:constant type="cd:value"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="usetexmodule" file="file-mod.mkvi">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="m"/>
+ <cd:constant type="p"/>
+ <cd:constant type="s"/>
+ <cd:constant type="x"/>
+ <cd:constant type="t"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-file-list"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="cd:key">
+ <cd:constant type="cd:value"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="module" type="environment" variant="1" file="file-mod.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="module" type="environment" variant="2" file="file-mod.mkvi">
+ <cd:arguments>
+ <cd:resolve name="string-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupmodule" file="file-mod.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-file-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="test">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="cd:key">
+ <cd:constant type="cd:value"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="moduleparameter" file="file-mod.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="currentmoduleparameter" file="file-mod.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="moduletestsection" type="environment" file="file-mod.mkvi"/>
+
+ <cd:command name="fetchruntinecommand" file="file-mod.mkvi">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="luaenvironment" file="file-mod.mkvi">
+ <cd:arguments>
+ <cd:resolve name="string-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="useluamodule" file="file-mod.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-narrow.xml b/tex/context/interface/mkiv/i-narrow.xml
new file mode 100644
index 000000000..1fa8699e1
--- /dev/null
+++ b/tex/context/interface/mkiv/i-narrow.xml
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definenarrower" file="spac-hor.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupnarrower"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupnarrower" file="spac-hor.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="left">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="middle">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="default">
+ <cd:constant type="left" prefix="cd:sign" method="none"/>
+ <cd:constant type="middle" prefix="cd:sign" method="none" default="yes"/>
+ <cd:constant type="right" prefix="cd:sign" method="none"/>
+ <cd:constant type="left" prefix="cd:number" method="factor"/>
+ <cd:constant type="middle" prefix="cd:number" method="factor"/>
+ <cd:constant type="right" prefix="cd:number" method="factor"/>
+ <cd:constant type="reset"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="narrower" type="environment" file="spac-hor.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="left" prefix="cd:sign" method="none"/>
+ <cd:constant type="middle" prefix="cd:sign" method="none"/>
+ <cd:constant type="right" prefix="cd:sign" method="none"/>
+ <cd:constant type="left" prefix="cd:number" method="factor"/>
+ <cd:constant type="middle" prefix="cd:number" method="factor"/>
+ <cd:constant type="right" prefix="cd:number" method="factor"/>
+ <cd:constant type="reset"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="narrower" type="environment" generated="yes" variant="generated" file="spac-hor.mkiv">
+ <cd:sequence>
+ <cd:variable value="narrower"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="left" prefix="cd:sign" method="none"/>
+ <cd:constant type="middle" prefix="cd:sign" method="none"/>
+ <cd:constant type="right" prefix="cd:sign" method="none"/>
+ <cd:constant type="left" prefix="cd:number" method="factor"/>
+ <cd:constant type="middle" prefix="cd:number" method="factor"/>
+ <cd:constant type="right" prefix="cd:number" method="factor"/>
+ <cd:constant type="reset"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="narrow" type="environment" variant="1" file="spac-hor.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupnarrower"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="narrow" type="environment" variant="2" file="spac-hor.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="left" prefix="cd:sign" method="none"/>
+ <cd:constant type="middle" prefix="cd:sign" method="none"/>
+ <cd:constant type="right" prefix="cd:sign" method="none"/>
+ <cd:constant type="left" prefix="cd:number" method="factor"/>
+ <cd:constant type="middle" prefix="cd:number" method="factor"/>
+ <cd:constant type="right" prefix="cd:number" method="factor"/>
+ <cd:constant type="reset"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="narrow" type="environment" variant="3" file="spac-hor.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupnarrower"/>
+ </cd:assignments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="left" prefix="cd:sign" method="none"/>
+ <cd:constant type="middle" prefix="cd:sign" method="none"/>
+ <cd:constant type="right" prefix="cd:sign" method="none"/>
+ <cd:constant type="left" prefix="cd:number" method="factor"/>
+ <cd:constant type="middle" prefix="cd:number" method="factor"/>
+ <cd:constant type="right" prefix="cd:number" method="factor"/>
+ <cd:constant type="reset"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-naturaltable.xml b/tex/context/interface/mkiv/i-naturaltable.xml
new file mode 100644
index 000000000..d7ba1aac8
--- /dev/null
+++ b/tex/context/interface/mkiv/i-naturaltable.xml
@@ -0,0 +1,301 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setupTABLE" file="tabl-ntb.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="r"/>
+ <cd:constant type="c"/>
+ <cd:constant type="x"/>
+ <cd:constant type="y"/>
+ <cd:constant type="row"/>
+ <cd:constant type="column"/>
+ <cd:constant type="first"/>
+ <cd:constant type="last"/>
+ <cd:constant type="start"/>
+ <cd:constant type="header"/>
+ <cd:constant type="each"/>
+ <cd:constant type="odd"/>
+ <cd:constant type="even"/>
+ <cd:constant type="one"/>
+ <cd:constant type="cd:number"/>
+ <cd:constant type="cd:number" prefix="-" method="none"/>
+ </cd:keywords>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="first"/>
+ <cd:constant type="least"/>
+ <cd:constant type="each"/>
+ <cd:constant type="two"/>
+ <cd:constant type="odd"/>
+ <cd:constant type="even"/>
+ <cd:constant type="cd:number"/>
+ <cd:constant type="cd:number" prefix="-" method="none"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="extras">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="headcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="headstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="leftmargindistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rightmargindistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="columndistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="maxwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="setups">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="textwidth">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="local" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="split">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="repeat"/>
+ <cd:constant type="auto" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="header">
+ <cd:constant type="repeat"/>
+ </cd:parameter>
+ <cd:parameter name="option">
+ <cd:constant type="stretch"/>
+ <cd:constant type="tight"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="samepage">
+ <cd:constant type="before"/>
+ <cd:constant type="after"/>
+ <cd:constant type="both"/>
+ </cd:parameter>
+ <cd:parameter name="spaceinbetween">
+ <cd:inherit name="blank"/>
+ </cd:parameter>
+ <cd:parameter name="splitoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="aligncharacter">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="alignmentcharacter">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="TABLE" type="environment" begin="b" end="e" file="tabl-ntb.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupTABLE"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="TD" type="environment" begin="b" end="e" file="tabl-ntb.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="nc">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="nr">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="m">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="action">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:inherit name="setupTABLE"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="TR" type="environment" begin="b" end="e" file="tabl-ntb.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupTABLE"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="TC" type="environment" begin="b" end="e" file="tabl-ntb.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="bTD"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="TX" type="environment" begin="b" end="e" file="tabl-ntb.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="bTD"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="TY" type="environment" begin="b" end="e" file="tabl-ntb.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupTABLE"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="TH" type="environment" begin="b" end="e" file="tabl-ntb.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="bTD"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="TN" type="environment" begin="b" end="e" file="tabl-ntb.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="bTD"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="TABLEhead" type="environment" begin="b" end="e" file="tabl-ntb.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupTABLE"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="TABLEnext" type="environment" begin="b" end="e" file="tabl-ntb.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupTABLE"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="TABLEbody" type="environment" begin="b" end="e" file="tabl-ntb.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupTABLE"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="TABLEfoot" type="environment" begin="b" end="e" file="tabl-ntb.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupTABLE"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="defineTABLEsetup" file="tabl-ntb.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupTABLE"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="TDs" type="environment" begin="b" end="e" file="tabl-ntb.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="TRs" type="environment" begin="b" end="e" file="tabl-ntb.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="TABLE" type="environment" file="tabl-ntb.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupTABLE"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="TABLEhead" type="environment" file="tabl-ntb.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupTABLE"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="TABLEnext" type="environment" file="tabl-ntb.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupTABLE"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="TABLEbody" type="environment" file="tabl-ntb.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupTABLE"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="TABLEfoot" type="environment" file="tabl-ntb.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupTABLE"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-note.xml b/tex/context/interface/mkiv/i-note.xml
new file mode 100644
index 000000000..be74ca3a6
--- /dev/null
+++ b/tex/context/interface/mkiv/i-note.xml
@@ -0,0 +1,663 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <!--
+
+ <cd:command name="definenotation" file="strc-not.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupnotation"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="setupnotation" file="strc-not.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="title">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="number">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="type">
+ <cd:constant type="note"/>
+ </cd:parameter>
+ <cd:parameter name="numbercommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="titledistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="titlestyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="titlecolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="titlecommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="titleleft">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="titleright">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="symbol">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="starter">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stopper">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="coupling">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="counter">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <!-- begin construction values -->
+ <cd:parameter name="level">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="headcommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="inmargin"/>
+ <cd:constant type="inleft"/>
+ <cd:constant type="inright"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="leftmargin"/>
+ <cd:constant type="rightmargin"/>
+ <cd:constant type="innermargin"/>
+ <cd:constant type="outermargin"/>
+ <cd:constant type="serried"/>
+ <cd:constant type="hanging"/>
+ <cd:constant type="top"/>
+ <cd:constant type="command"/>
+ <cd:constant type="note" default="yes"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:inherit name="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="headalign">
+ <cd:inherit name="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="indenting">
+ <cd:inherit name="setupindenting"/>
+ </cd:parameter>
+ <cd:parameter name="display">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="indentnext">
+ <cd:resolve name="value-indentnext"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="fit"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="line"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="none"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hang">
+ <cd:constant type="fit"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="none"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="closesymbol">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="closecommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="expansion">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ <cd:constant type="xml"/>
+ </cd:parameter>
+ <cd:parameter name="sample">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="margin">
+ <cd:resolve name="value-leftskip"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="headstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="headcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <!-- end construction values -->
+ <cd:inherit name="setupcounter"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="setupnotations" file="strc-not.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupnotation"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="note" type="environment" generated="yes" variant="generated:1" file="strc-not.mkvi">
+ <cd:sequence>
+ <cd:variable value="note"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="assignment-constructiondata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="note" type="environment" generated="yes" variant="generated:2" file="strc-not.mkvi">
+ <cd:sequence>
+ <cd:variable value="note"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="note" generated="yes" variant="generated:1" file="strc-not.mkvi">
+ <cd:sequence>
+ <cd:variable value="note"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="note" generated="yes" variant="generated:2" file="strc-not.mkvi">
+ <cd:sequence>
+ <cd:variable value="note"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="assignment-constructiondata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definenote" file="strc-not.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupnote"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupnote" file="strc-not.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="interaction">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="number"/>
+ <cd:constant type="text"/>
+ <cd:constant type="all"/>
+ </cd:parameter>
+ <cd:parameter name="symbolcommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="textcommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="indicator">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="textseparator">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rulecommand">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rule">
+ <cd:constant type="on" default="yes"/>
+ <cd:constant type="off"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="command"/>
+ <cd:constant type="paragraph"/>
+ </cd:parameter>
+ <cd:parameter name="split">
+ <cd:constant type="tolerant" default="yes"/>
+ <cd:constant type="strict"/>
+ <cd:constant type="verystrict"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="factor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="text"/>
+ <cd:constant type="page"/>
+ <cd:constant type="high"/>
+ <cd:constant type="bottom"/>
+ <cd:constant type="none"/>
+ <cd:constant type="columns"/>
+ <cd:constant type="firstcolumn"/>
+ <cd:constant type="lastcolumn"/>
+ </cd:parameter>
+ <cd:parameter name="next">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="rulecolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="rulethickness">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="setups">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="interlinespace">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="paragraph">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd.command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="scope">
+ <cd:constant type="page"/>
+ </cd:parameter>
+ <cd:parameter name="columndistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="continue">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="grid"/>
+ <cd:constant type="fixed"/>
+ <cd:constant type="columns"/>
+ <cd:constant type="note" default="yes"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="criterium">
+ <cd:constant type="page"/>
+ </cd:parameter>
+ <cd:parameter name="bodyfont">
+ <cd:inherit name="setupbodyfont"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:inherit name="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="textstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="textcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="anchor">
+ <cd:constant type="next"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="setupnotes" file="strc-not.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupnote"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="setnote" variant="1" file="strc-not.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setnote" variant="2" file="strc-not.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="assignment-constructiondata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setnotetext" variant="1" file="strc-not.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setnotetext" variant="2" file="strc-not.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="assignment-constructiondata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placenotes" file="strc-not.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupnote"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="localnotes" type="environment" file="strc-not.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placelocalnotes" file="strc-not.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupnote"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="postponenotes" file="strc-not.mkvi"/>
+
+ <cd:command name="flushnotes" file="strc-not.mkvi"/>
+
+ <cd:command name="doifelsenoteonsamepage" file="strc-not.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnoteonsamepageelse" file="strc-not.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnotescollected" file="strc-not.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="notesymbol" file="strc-not.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-reference-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="note" file="strc-not.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="footnote" type="environment" variant="1" file="strc-not.mkvi">
+ <cd:arguments>
+ <cd:resolve name="assignment-constructiondata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="footnote" type="environment" variant="2" file="strc-not.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="footnote" variant="1" file="strc-not.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="footnote" variant="2" file="strc-not.mkvi">
+ <cd:arguments>
+ <cd:resolve name="assignment-constructiondata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="footnotetext" variant="1" file="strc-not.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="footnotetext" variant="2" file="strc-not.mkvi">
+ <cd:arguments>
+ <cd:resolve name="assignment-constructiondata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placefootnotes" file="strc-not.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupnote"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="localfootnotes" type="environment" file="strc-not.mkvi"/>
+
+ <cd:command name="placelocalfootnotes" file="strc-not.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupnote"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="endnote" type="environment" variant="1" file="strc-not.mkvi">
+ <cd:arguments>
+ <cd:resolve name="assignment-constructiondata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="endnote" type="environment" variant="2" file="strc-not.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="endnote" variant="1" file="strc-not.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="endnote" variant="2" file="strc-not.mkvi">
+ <cd:arguments>
+ <cd:resolve name="assignment-constructiondata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definelinenote" file="strc-lnt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplinenote"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuplinenote" file="strc-lnt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="compress">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="compressmethod">
+ <cd:constant type="separator"/>
+ <cd:constant type="stopper"/>
+ <cd:constant type="space"/>
+ </cd:parameter>
+ <cd:parameter name="compressseparator">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="compressdistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:inherit name="setupnote"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="linenote" generated="yes" variant="generated" file="strc-lnt.mkvi">
+ <cd:sequence>
+ <cd:variable value="linenote"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="startlinenote" generated="yes" variant="generated" file="strc-lnt.mkvi">
+ <cd:sequence>
+ <cd:string value="start"/>
+ <cd:variable value="linenote"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="stoplinenote" generated="yes" variant="generated" file="strc-lnt.mkvi">
+ <cd:sequence>
+ <cd:string value="stop"/>
+ <cd:variable value="linenote"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fromlinenote" file="strc-lnt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tolinenote" file="strc-lnt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="linenote" file="strc-lnt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="startlinenote" file="strc-lnt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="stoplinenote" file="strc-lnt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-object.xml b/tex/context/interface/mkiv/i-object.xml
new file mode 100644
index 000000000..804d17af8
--- /dev/null
+++ b/tex/context/interface/mkiv/i-object.xml
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="ifinobject" file="pack-obj.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-true"/>
+ <cd:delimiter name="else"/>
+ <cd:resolve name="string-false"/>
+ <cd:delimiter name="fi"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="objectmargin" file="pack-obj.mkiv"/>
+
+ <cd:command name="objectwidth" file="pack-obj.mkiv"/>
+
+ <cd:command name="objectheight" file="pack-obj.mkiv"/>
+
+ <cd:command name="objectdepth" file="pack-obj.mkiv"/>
+
+ <cd:command name="setreferencedobject" file="pack-obj.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ <cd:csname/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="settightreferencedobject" file="pack-obj.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ <cd:csname/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setunreferencedobject" file="pack-obj.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ <cd:csname/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="settightunreferencedobject" file="pack-obj.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ <cd:csname/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setobject" file="pack-obj.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ <cd:csname/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="settightobject" file="pack-obj.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ <cd:csname/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getobject" file="pack-obj.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getobjectdimensions" file="pack-obj.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="defaultobjectreference" file="pack-obj.mkiv"/>
+
+ <cd:command name="defaultobjectpage" file="pack-obj.mkiv"/>
+
+ <cd:command name="doifelseobjectfound" file="pack-obj.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifobjectfoundelse" file="pack-obj.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelseobjectreferencefound" file="pack-obj.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifobjectreferencefoundelse" file="pack-obj.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-offset.xml b/tex/context/interface/mkiv/i-offset.xml
new file mode 100644
index 000000000..8e68a3bef
--- /dev/null
+++ b/tex/context/interface/mkiv/i-offset.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setupoffsetbox" file="pack-box.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="x">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="leftoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rightoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="topoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="bottomoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:constant type="fixed"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="depth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:resolve name="value-aligned"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupoffset" file="pack-box.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupoffsetbox"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="offsetbox" file="pack-box.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupoffsetbox"/>
+ </cd:assignments>
+ <cd:csname/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="offset" file="pack-box.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupoffset"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-opposite.xml b/tex/context/interface/mkiv/i-opposite.xml
new file mode 100644
index 000000000..497b6d502
--- /dev/null
+++ b/tex/context/interface/mkiv/i-opposite.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setupoppositeplacing" file="page-fac.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start" default="yes"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="opposite" type="environment" file="page-fac.mkiv"/>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-ornament.xml b/tex/context/interface/mkiv/i-ornament.xml
new file mode 100644
index 000000000..8ad0b7cfb
--- /dev/null
+++ b/tex/context/interface/mkiv/i-ornament.xml
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="ornamenttext" variant="1" file="pack-box.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="alternative">
+ <cd:constant type="a" default="yes"/>
+ <cd:constant type="b"/>
+ </cd:parameter>
+ <cd:inherit name="setupcollector"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ <cd:resolve name="argument-text"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ornamenttext" variant="2" file="pack-box.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="alternative">
+ <cd:constant type="a"/>
+ <cd:constant type="b" default="yes"/>
+ </cd:parameter>
+ <cd:inherit name="setuplayer"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplayeredtext"/>
+ </cd:assignments>
+ <cd:resolve name="argument-text"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ornamenttext" variant="3" file="pack-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="argument-text"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="defineornament" variant="1" file="pack-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="alternative">
+ <cd:constant type="a" default="yes"/>
+ <cd:constant type="b"/>
+ </cd:parameter>
+ <cd:inherit name="setupcollector"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="defineornament" variant="2" file="pack-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="alternative">
+ <cd:constant type="a"/>
+ <cd:constant type="b" default="yes"/>
+ </cd:parameter>
+ <cd:inherit name="setuplayer"/>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplayeredtext"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ornament" generated="yes" variant="generated" file="pack-box.mkiv">
+ <cd:sequence>
+ <cd:variable value="ornament"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-output.xml b/tex/context/interface/mkiv/i-output.xml
new file mode 100644
index 000000000..1f59284ff
--- /dev/null
+++ b/tex/context/interface/mkiv/i-output.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="defineoutputroutine" file="page-otr.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupoutputroutine"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupoutputroutine" variant="1" file="page-otr.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="cd:key">
+ <cd:constant type="cd:csname"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupoutputroutine" variant="2" file="page-otr.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="defineoutputroutinecommand" file="page-otr.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-key-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="traceoutputroutines" file="page-otr.mkvi"/>
+
+ <cd:command name="installoutputroutine" file="page-otr.mkvi">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-overlay.xml b/tex/context/interface/mkiv/i-overlay.xml
new file mode 100644
index 000000000..dd2d43363
--- /dev/null
+++ b/tex/context/interface/mkiv/i-overlay.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="defineoverlay" file="pack-lyr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:resolve name="keyword-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="overlaycolor" file="pack-rul.mkiv"/>
+
+ <cd:command name="overlaylinecolor" file="pack-rul.mkiv"/>
+
+ <cd:command name="overlaywidth" file="pack-rul.mkiv"/>
+
+ <cd:command name="overlayheight" file="pack-rul.mkiv"/>
+
+ <cd:command name="overlaydepth" file="pack-rul.mkiv"/>
+
+ <cd:command name="overlayoffset" file="pack-rul.mkiv"/>
+
+ <cd:command name="overlaylinewidth" file="pack-rul.mkiv"/>
+
+ <cd:command name="doifelseoverlay" file="pack-rul.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifoverlayelse" file="pack-rul.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-pagebreak.xml b/tex/context/interface/mkiv/i-pagebreak.xml
new file mode 100644
index 000000000..abc586ea6
--- /dev/null
+++ b/tex/context/interface/mkiv/i-pagebreak.xml
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definepagebreak" file="page-brk.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords list="yes">
+ <cd:resolve name="value-pagebreak"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pagebreak" file="page-brk.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:resolve name="value-pagebreak"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="page" file="page-brk.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:inherit name="pagebreak"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definecolumnbreak" file="page-brk.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords list="yes">
+ <cd:resolve name="value-columnbreak"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="columnbreak" file="page-brk.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:resolve name="value-columnbreak"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="column" file="page-brk.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:inherit name="columnbreak"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definepagechecker" file="page-brk.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuppagechecker"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuppagechecker" file="page-brk.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="lines">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:constant type="0"/>
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ <cd:constant type="3"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="checkpage" file="page-brk.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuppagechecker"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="testpage" file="page-brk.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-number"/>
+ <cd:resolve name="keyword-dimension-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="testpageonly" file="page-brk.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-number"/>
+ <cd:resolve name="keyword-dimension-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="testpagesync" file="page-brk.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-number"/>
+ <cd:resolve name="keyword-dimension-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="testcolumn" file="page-brk.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-number"/>
+ <cd:resolve name="keyword-dimension-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-pagecomment.xml b/tex/context/interface/mkiv/i-pagecomment.xml
new file mode 100644
index 000000000..26678a4a0
--- /dev/null
+++ b/tex/context/interface/mkiv/i-pagecomment.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setuppagecomment" file="page-com.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="location">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="top"/>
+ <cd:constant type="bottom" default="yes"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="none" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pagecomment" type="environment" file="page-com.mkiv"/>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-pagefigure.xml b/tex/context/interface/mkiv/i-pagefigure.xml
new file mode 100644
index 000000000..5f776e835
--- /dev/null
+++ b/tex/context/interface/mkiv/i-pagefigure.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="pagefigure" file="page-app.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupexternalfigure"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pagefigure" type="environment" file="page-app.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupexternalfigure"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-pagegrid.xml b/tex/context/interface/mkiv/i-pagegrid.xml
new file mode 100644
index 000000000..29810d7db
--- /dev/null
+++ b/tex/context/interface/mkiv/i-pagegrid.xml
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definepagegrid" file="page-cst.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuppagegrid"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuppagegrid" file="page-cst.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="nleft">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="nright">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="auto"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="lines">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="maxwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="maxheight">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="direction">
+ <cd:constant type="normal" default="yes"/>
+ <cd:constant type="reverse"/>
+ </cd:parameter>
+ <cd:parameter name="page">
+ <cd:inherit name="page"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pagegrid" type="environment" generated="yes" variant="generated" file="page-cst.mkiv">
+ <cd:sequence>
+ <cd:variable value="pagegrid"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuppagegrid"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pagegrid" type="environment" file="page-cst.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuppagegrid"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setpagegrid" file="page-cst.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="c">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="r">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="option">
+ <cd:constant type="none" default="yes"/>
+ <!--
+ <cd:constant type="wide"/>
+ -->
+ </cd:parameter>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definepagegridspan" file="page-cst.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuppagegridspan"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuppagegridspan" file="page-cst.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pagegridspan" type="environment" file="page-cst.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuppagegridspan"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pagegridspanwidth" file="page-cst.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definepagegridarea" file="page-cst.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuppagegridarea"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuppagegridarea" file="page-cst.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop" default="yes"/>
+ <cd:constant type="repeat"/>
+ </cd:parameter>
+ <cd:parameter name="x">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="clipoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rightoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuppagegridareatext" file="page-cst.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuppagegridlines" file="page-cst.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-number"/>
+ <cd:resolve name="keyword-number"/>
+ <cd:resolve name="keyword-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuppagegridstart" file="page-cst.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-number"/>
+ <cd:resolve name="keyword-number"/>
+ <cd:resolve name="keyword-number"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-pageinjection.xml b/tex/context/interface/mkiv/i-pageinjection.xml
new file mode 100644
index 000000000..64becc385
--- /dev/null
+++ b/tex/context/interface/mkiv/i-pageinjection.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definepageinjection" file="page-inj.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuppageinjection"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuppageinjection" file="page-inj.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="previous"/>
+ <cd:constant type="next" default="yes"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="delay">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="figure" default="yes"/>
+ <cd:constant type="buffer"/>
+ <cd:constant type="setups"/>
+ <cd:constant type="none"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="page">
+ <cd:inherit name="page"/>
+ </cd:parameter>
+ <cd:parameter name="pagestate">
+ <cd:constant type="start" default="yes"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pageinjection" variant="1" file="page-inj.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:resolve name="assignment-userdata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pageinjection" variant="2" file="page-inj.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuppageinjection"/>
+ </cd:assignments>
+ <cd:resolve name="assignment-userdata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definepageinjectionalternative" file="page-inj.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuppageinjectionalternative"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuppageinjectionalternative" file="page-inj.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="renderingsetup">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-pagelayout.xml b/tex/context/interface/mkiv/i-pagelayout.xml
new file mode 100644
index 000000000..dd4bc27f5
--- /dev/null
+++ b/tex/context/interface/mkiv/i-pagelayout.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="pagearea" file="page-plg.mkiv">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="top"/>
+ <cd:constant type="header"/>
+ <cd:constant type="text"/>
+ <cd:constant type="footer"/>
+ <cd:constant type="bottom"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="text"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="edge"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="lefttext"/>
+ <cd:constant type="middletext" default="yes"/>
+ <cd:constant type="righttext"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pagelayout" type="environment" file="page-plg.mkiv">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="page"/>
+ <cd:constant type="leftpage"/>
+ <cd:constant type="rightpage"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-pagenumber.xml b/tex/context/interface/mkiv/i-pagenumber.xml
new file mode 100644
index 000000000..d17df9425
--- /dev/null
+++ b/tex/context/interface/mkiv/i-pagenumber.xml
@@ -0,0 +1,184 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setuprealpagenumber" file="strc-pag.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupcounter"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupuserpagenumber" file="strc-pag.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="viewerprefix">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="none"/>
+ <cd:constant type="keep"/>
+ <cd:constant type="empty"/>
+ </cd:parameter>
+ <cd:inherit name="setupcounter"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupsubpagenumber" file="strc-pag.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupcounter"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuppagenumber" file="strc-pag.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupuserpagenumber"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="resetrealpagenumber" file="strc-pag.mkiv"/>
+
+ -->
+
+ <cd:command name="resetuserpagenumber" file="strc-pag.mkiv"/>
+
+ <cd:command name="resetsubpagenumber" file="strc-pag.mkiv"/>
+
+ <cd:command name="resetpagenumber" file="strc-pag.mkiv"/>
+
+ <cd:command name="setuppagenumbering" file="strc-pag.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="alternative">
+ <cd:constant type="singlesided" default="yes"/>
+ <cd:constant type="doublesided"/>
+ </cd:parameter>
+ <cd:parameter name="page">
+ <cd:inherit name="page"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="state">
+ <cd:constant type="start" default="yes"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="header" default="yes"/>
+ <cd:constant type="footer"/>
+ <cd:constant type="left"/>
+ <cd:constant type="middle" default="yes"/>
+ <cd:constant type="right"/>
+ <cd:constant type="inleft"/>
+ <cd:constant type="inright"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="inmargin"/>
+ <cd:constant type="atmargin"/>
+ <cd:constant type="marginedge"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="firstrealpagenumber" file="strc-pag.mkiv"/>
+
+ <cd:command name="firstuserpagenumber" file="strc-pag.mkiv"/>
+
+ <cd:command name="firstsubpagenumber" file="strc-pag.mkiv"/>
+
+ <cd:command name="lastrealpagenumber" file="strc-pag.mkiv"/>
+
+ <cd:command name="lastuserpagenumber" file="strc-pag.mkiv"/>
+
+ <cd:command name="lastsubpagenumber" file="strc-pag.mkiv"/>
+
+ <cd:command name="prevrealpagenumber" file="strc-pag.mkiv"/>
+
+ <cd:command name="prevuserpagenumber" file="strc-pag.mkiv"/>
+
+ <cd:command name="prevsubpagenumber" file="strc-pag.mkiv"/>
+
+ <cd:command name="nextrealpagenumber" file="strc-pag.mkiv"/>
+
+ <cd:command name="nextuserpagenumber" file="strc-pag.mkiv"/>
+
+ <cd:command name="nextsubpagenumber" file="strc-pag.mkiv"/>
+
+ <cd:command name="firstrealpage" file="strc-pag.mkiv"/>
+
+ <cd:command name="firstuserpage" file="strc-pag.mkiv"/>
+
+ <cd:command name="firstsubpage" file="strc-pag.mkiv"/>
+
+ <cd:command name="prevrealpage" file="strc-pag.mkiv"/>
+
+ <cd:command name="prevuserpage" file="strc-pag.mkiv"/>
+
+ <cd:command name="prevsubpage" file="strc-pag.mkiv"/>
+
+ <cd:command name="nextrealpage" file="strc-pag.mkiv"/>
+
+ <cd:command name="nextuserpage" file="strc-pag.mkiv"/>
+
+ <cd:command name="nextsubpage" file="strc-pag.mkiv"/>
+
+ <cd:command name="lastrealpage" file="strc-pag.mkiv"/>
+
+ <cd:command name="lastuserpage" file="strc-pag.mkiv"/>
+
+ <cd:command name="lastsubpage" file="strc-pag.mkiv"/>
+
+ <cd:command name="realpagenumber" file="strc-pag.mkiv"/>
+
+ <cd:command name="userpagenumber" file="strc-pag.mkiv"/>
+
+ <cd:command name="subpagenumber" file="strc-pag.mkiv"/>
+
+ <cd:command name="pagenumber" file="strc-pag.mkiv"/>
+
+ <cd:command name="prefixedpagenumber" file="strc-pag.mkiv"/>
+
+ <cd:command name="incrementpagenumber" file="strc-pag.mkiv"/>
+
+ <cd:command name="incrementsubpagenumber" file="strc-pag.mkiv"/>
+
+ <cd:command name="decrementpagenumber" file="strc-pag.mkiv"/>
+
+ <cd:command name="decrementsubpagenumber" file="strc-pag.mkiv"/>
+
+ <cd:command name="completepagenumber" file="strc-pag.mkiv"/>
+
+ <cd:command name="placepagenumber" file="strc-pag.mkiv"/>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-pageselection.xml b/tex/context/interface/mkiv/i-pageselection.xml
new file mode 100644
index 000000000..45c433269
--- /dev/null
+++ b/tex/context/interface/mkiv/i-pageselection.xml
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="insertpages" file="page-sel.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ <cd:resolve name="keyword-number-list-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="filterpages" file="page-sel.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ <cd:keywords list="yes">
+ <cd:constant type="even"/>
+ <cd:constant type="odd"/>
+ <cd:constant type="cd:number"/>
+ <cd:constant type="cd:number" prefix="cd:number" method="range"/>
+ </cd:keywords>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="copypages" file="page-sel.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="marking">
+ <cd:constant type="on"/>
+ <cd:constant type="off" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupexternalfigure"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="combinepages" file="page-sel.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="alternative">
+ <cd:constant type="a" default="yes"/>
+ <cd:constant type="b"/>
+ <cd:constant type="c"/>
+ <cd:constant type="horizontal"/>
+ <cd:constant type="vertical"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="start">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="stop">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="top">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="bottom">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="frame">
+ <cd:constant type="on"/>
+ <cd:constant type="off" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="background">
+ <cd:constant type="foreground"/>
+ <cd:constant type="color"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="backgroundcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="slicepages" file="page-sel.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="offset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="offset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-pageshift.xml b/tex/context/interface/mkiv/i-pageshift.xml
new file mode 100644
index 000000000..630a5af6c
--- /dev/null
+++ b/tex/context/interface/mkiv/i-pageshift.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definepageshift" file="page-imp.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords>
+ <cd:constant type="horizontal"/>
+ <cd:constant type="vertical"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-dimension-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuppageshift" file="page-imp.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="page" default="yes"/>
+ <cd:constant type="paper"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-pagestate.xml b/tex/context/interface/mkiv/i-pagestate.xml
new file mode 100644
index 000000000..0d6a94811
--- /dev/null
+++ b/tex/context/interface/mkiv/i-pagestate.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definepagestate" file="core-dat.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuppagestate"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuppagestate" file="core-dat.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional-list"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="delay">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setpagestate" file="core-dat.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pagestaterealpage" file="core-dat.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setpagestaterealpageno" file="core-dat.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-pairedbox.xml b/tex/context/interface/mkiv/i-pairedbox.xml
new file mode 100644
index 000000000..fbf190257
--- /dev/null
+++ b/tex/context/interface/mkiv/i-pairedbox.xml
@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definepairedbox" file="pack-com.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuppairedbox"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuppairedbox" file="pack-com.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="left"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="right"/>
+ <cd:constant type="top"/>
+ <cd:constant type="bottom"/>
+ <cd:constant type="high"/>
+ <cd:constant type="low"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="bodyfont">
+ <cd:inherit name="setupbodyfont"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="maxwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="maxheight">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:inherit name="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placepairedbox" file="pack-com.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuppairedbox"/>
+ </cd:assignments>
+ <cd:content/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placepairedbox" type="environment" file="pack-com.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuppairedbox"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuppairedbox" generated="yes" variant="generated" file="pack-com.mkiv">
+ <cd:sequence>
+ <cd:string value="setup"/>
+ <cd:variable value="pairedbox"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="setuppairedbox"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placepairedbox" generated="yes" variant="generated" file="pack-com.mkiv">
+ <cd:sequence>
+ <cd:string value="place"/>
+ <cd:variable value="pairedbox"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuppairedbox"/>
+ </cd:assignments>
+ <cd:content/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placepairedbox" type="environment" generated="yes" variant="generated" file="pack-com.mkiv">
+ <cd:sequence>
+ <cd:string value="place"/>
+ <cd:variable value="pairedbox"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuppairedbox"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuplegend" file="pack-com.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="setuppairedbox"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placelegend" file="pack-com.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuppairedbox"/>
+ </cd:assignments>
+ <cd:content/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placelegend" type="environment" file="pack-com.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuppairedbox"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placeontopofeachother" file="pack-com.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placesidebyside" file="pack-com.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-papersize.xml b/tex/context/interface/mkiv/i-papersize.xml
new file mode 100644
index 000000000..99d6b9d9d
--- /dev/null
+++ b/tex/context/interface/mkiv/i-papersize.xml
@@ -0,0 +1,303 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <!--
+
+ <cd:command name="definelayouttarget" file="page-lay.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplayouttarget"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuplayouttarget" file="page-lay.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="top">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="bottom">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:constant type="normal" default="yes"/>
+ <cd:constant type="none"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="scale">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="dx">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="dy">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="topspace">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="backspace">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="page">
+ <cd:constant type="reset"/>
+ <cd:constant type="landscape"/>
+ <cd:constant type="mirrored"/>
+ <cd:constant type="negative"/>
+ <cd:constant type="rotated"/>
+ <cd:constant type="90"/>
+ <cd:constant type="180"/>
+ <cd:constant type="270"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="paper">
+ <cd:constant type="reset"/>
+ <cd:constant type="landscape"/>
+ <cd:constant type="mirrored"/>
+ <cd:constant type="negative"/>
+ <cd:constant type="rotated"/>
+ <cd:constant type="90"/>
+ <cd:constant type="180"/>
+ <cd:constant type="270"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="option">
+ <cd:constant type="fit"/>
+ <cd:constant type="max" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="definepapersize" variant="1" file="page-lay.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="top">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="bottom">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="page">
+ <cd:inherit name="setuppapersize"/>
+ </cd:parameter>
+ <cd:parameter name="paper">
+ <cd:inherit name="setuppapersize"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definepapersize" variant="2" file="page-lay.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords list="yes">
+ <cd:inherit name="setuppapersize"/>
+ </cd:keywords>
+ <cd:keywords list="yes" optional="yes">
+ <cd:inherit name="setuppapersize"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuppapersize" variant="1" file="page-lay.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="reset"/>
+ <cd:constant type="landscape"/>
+ <cd:constant type="mirrored"/>
+ <cd:constant type="negative"/>
+ <cd:constant type="rotated"/>
+ <cd:constant type="90"/>
+ <cd:constant type="180"/>
+ <cd:constant type="270"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="reset"/>
+ <cd:constant type="landscape"/>
+ <cd:constant type="mirrored"/>
+ <cd:constant type="negative"/>
+ <cd:constant type="rotated"/>
+ <cd:constant type="90"/>
+ <cd:constant type="180"/>
+ <cd:constant type="270"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="setuppapersize" variant="2" file="page-lay.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setuplayouttarget"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuppaper" file="page-lay.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="setuplayouttarget"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="setuppapersize" variant="2" file="page-lay.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="top">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="bottom">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:constant type="normal" default="yes"/>
+ <cd:constant type="none"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="scale">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="dx">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="dy">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="topspace">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="backspace">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="page">
+ <cd:constant type="reset"/>
+ <cd:constant type="landscape"/>
+ <cd:constant type="mirrored"/>
+ <cd:constant type="negative"/>
+ <cd:constant type="rotated"/>
+ <cd:constant type="90"/>
+ <cd:constant type="180"/>
+ <cd:constant type="270"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="paper">
+ <cd:constant type="reset"/>
+ <cd:constant type="landscape"/>
+ <cd:constant type="mirrored"/>
+ <cd:constant type="negative"/>
+ <cd:constant type="rotated"/>
+ <cd:constant type="90"/>
+ <cd:constant type="180"/>
+ <cd:constant type="270"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="option">
+ <cd:constant type="fit"/>
+ <cd:constant type="max" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuppaper" file="page-lay.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="setuppapersize"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="adaptpapersize" file="page-lay.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:inherit name="setuppapersize"/>
+ </cd:keywords>
+ <cd:keywords list="yes" optional="yes">
+ <cd:inherit name="setuppapersize"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-paragraph.xml b/tex/context/interface/mkiv/i-paragraph.xml
new file mode 100644
index 000000000..63ddab64f
--- /dev/null
+++ b/tex/context/interface/mkiv/i-paragraph.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="defineparagraph" file="strc-tag.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupparagraph"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupparagraph" file="strc-tag.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:inherit name="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="setups">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="paragraph" type="environment" file="strc-tag.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupparagraph"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="par" type="environment" file="strc-tag.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupparagraph"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="par" type="environment" begin="b" end ="e" file="strc-tag.mkiv"/>
+
+ <cd:command name="setupparagraphintro" file="spac-par.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="reset"/>
+ <cd:constant type="each"/>
+ <cd:constant type="first"/>
+ <cd:constant type="next"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-paragraphnumber.xml b/tex/context/interface/mkiv/i-paragraphnumber.xml
new file mode 100644
index 000000000..f3588f87c
--- /dev/null
+++ b/tex/context/interface/mkiv/i-paragraphnumber.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setupparagraphnumbering" file="page-par.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop" default="yes"/>
+ <cd:constant type="line"/>
+ <cd:constant type="reset"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-paragraphs.xml b/tex/context/interface/mkiv/i-paragraphs.xml
new file mode 100644
index 000000000..6c1dae0db
--- /dev/null
+++ b/tex/context/interface/mkiv/i-paragraphs.xml
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="defineparagraphs" file="tabl-mis.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupparagraphs"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupparagraphs" variant="1" file="tabl-mis.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="each"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="fit" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="top">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="bottom">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:inherit name="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="inner">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rule">
+ <cd:constant type="on"/>
+ <cd:constant type="off" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="rulethickness">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rulecolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupparagraphs" variant="2" file="tabl-mis.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:number" prefix="cd:name" method="range"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="fit" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="top">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="bottom">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:inherit name="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="inner">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rule">
+ <cd:constant type="on"/>
+ <cd:constant type="off" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="rulethickness">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rulecolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="paragraphs" type="environment" file="tabl-mis.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="nextparagraphs" file="tabl-mis.mkiv"/>
+
+ <cd:command name="paragraphs" type="environment" generated="yes" variant="generated" file="tabl-mis.mkiv">
+ <cd:sequence>
+ <cd:variable value="paragraphs"/>
+ </cd:sequence>
+ </cd:command>
+
+ <cd:command name="paragraphs" generated="yes" variant="generated" file="tabl-mis.mkiv">
+ <cd:sequence>
+ <cd:variable value="paragraphs"/>
+ </cd:sequence>
+ </cd:command>
+
+ <cd:command name="nextparagraphs" generated="yes" variant="generated" file="tabl-mis.mkiv">
+ <cd:sequence>
+ <cd:string value="next"/>
+ <cd:variable value="paragraphs"/>
+ </cd:sequence>
+ </cd:command>
+
+ <cd:command name="paragraphscell" type="environment" file="tabl-mis.mkiv"/>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-parallel.xml b/tex/context/interface/mkiv/i-parallel.xml
new file mode 100644
index 000000000..ef2c55f3f
--- /dev/null
+++ b/tex/context/interface/mkiv/i-parallel.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="defineparallel" file="buff-par.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupparallel" file="buff-par.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-list"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="setups">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="start">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="criterium">
+ <cd:constant type="all"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placeparallel" file="buff-par.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-list"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupparallel"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelseparallel" file="buff-par.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:keywords delimiters="braces" list="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="all" default="yes"/>
+ </cd:keywords>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifparallelelse" file="buff-par.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:keywords delimiters="braces" list="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="all" default="yes"/>
+ </cd:keywords>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetparallel" file="buff-par.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="all" default="yes"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="parallel" type="environment" generated="yes" variant="generated" file="buff-par.mkvi">
+ <cd:sequence>
+ <cd:variable value="parallel"/>
+ </cd:sequence>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-parbuilder.xml b/tex/context/interface/mkiv/i-parbuilder.xml
new file mode 100644
index 000000000..b7bf37417
--- /dev/null
+++ b/tex/context/interface/mkiv/i-parbuilder.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="defineparbuilder" file="typo-bld.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="parbuilder" type="environment" file="typo-bld.mkiv">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="default"/>
+ <cd:constant type="oneline"/>
+ <cd:constant type="basic"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setmainparbuilder" file="typo-bld.mkiv">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="default"/>
+ <cd:constant type="oneline"/>
+ <cd:constant type="basic"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-pdf.xml b/tex/context/interface/mkiv/i-pdf.xml
new file mode 100644
index 000000000..9d75ddfd3
--- /dev/null
+++ b/tex/context/interface/mkiv/i-pdf.xml
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="pdfbackendsetcatalog" file="back-pdf.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pdfbackendsetinfo" file="back-pdf.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pdfbackendsetname" file="back-pdf.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pdfbackendsetpageattribute" file="back-pdf.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pdfbackendsetpagesattribute" file="back-pdf.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pdfbackendsetpageresource" file="back-pdf.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pdfbackendsetextgstate" file="back-pdf.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pdfbackendsetcolorspace" file="back-pdf.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pdfbackendsetpattern" file="back-pdf.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pdfbackendsetshade" file="back-pdf.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pdfbackendcurrentresources" file="back-pdf.mkiv"/>
+
+ <cd:command name="pdfcolor" file="back-pdf.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="PDFcolor" file="back-pdf.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="TransparencyHack" file="back-pdf.mkiv"/>
+
+ <cd:command name="lastpredefinedsymbol" file="pack-obj.mkiv"/>
+
+ <cd:command name="predefinesymbol" file="pack-obj.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pdfbackendactualtext" file="back-pdf.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pdfactualtext" file="back-pdf.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="negative" type="environment" file="attr-neg.mkiv"/>
+
+ <cd:command name="positive" type="environment" file="attr-neg.mkiv"/>
+
+ <cd:command name="setuppagetransitions" file="scrn-pag.mkvi">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="reset" default="yes"/>
+ <cd:constant type="auto"/>
+ <cd:constant type="start"/>
+ <cd:constant type="random"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-penalty.xml b/tex/context/interface/mkiv/i-penalty.xml
new file mode 100644
index 000000000..8cadf672b
--- /dev/null
+++ b/tex/context/interface/mkiv/i-penalty.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="resetpenalties" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setpenalties" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="keeplinestogether" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setdefaultpenalties" file="spac-ver.mkiv"/>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-periods.xml b/tex/context/interface/mkiv/i-periods.xml
new file mode 100644
index 000000000..e72152c38
--- /dev/null
+++ b/tex/context/interface/mkiv/i-periods.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setupperiods" file="enco-ini.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="fit"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="symbol">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="periods" variant="1" file="enco-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-number-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="periods" variant="2" file="enco-ini.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupperiods"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="unknown" file="enco-ini.mkiv"/>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-phantom.xml b/tex/context/interface/mkiv/i-phantom.xml
new file mode 100644
index 000000000..e3f92b810
--- /dev/null
+++ b/tex/context/interface/mkiv/i-phantom.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="phantom" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="hphantom" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="vphantom" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="phantombox" file="pack-box.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="depth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-placement.xml b/tex/context/interface/mkiv/i-placement.xml
new file mode 100644
index 000000000..4db307957
--- /dev/null
+++ b/tex/context/interface/mkiv/i-placement.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="defineplacement" file="pack-mis.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupplacement"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupplacement" file="pack-mis.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="grid">
+ <cd:inherit name="snaptogrid"/>
+ </cd:parameter>
+ <cd:parameter name="linecorrection">
+ <cd:constant type="on"/>
+ <cd:constant type="off" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="depthcorrection">
+ <cd:constant type="on"/>
+ <cd:constant type="off" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="margin">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="standard" default="yes"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placement" file="pack-mis.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupplacement"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placement" generated="yes" variant="generated" file="pack-mis.mkiv">
+ <cd:sequence>
+ <cd:variable value="placement"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupplacement"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-position.xml b/tex/context/interface/mkiv/i-position.xml
new file mode 100644
index 000000000..54bc952dc
--- /dev/null
+++ b/tex/context/interface/mkiv/i-position.xml
@@ -0,0 +1,528 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="doifpositionaction" file="anch-pgr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsepositionaction" file="anch-pgr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifpositionactionelse" file="anch-pgr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dopositionaction" file="anch-pgr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="positionoverlay" file="anch-pgr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPoverlayanchor" file="anch-pgr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="positionregionoverlay" file="anch-pgr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="positionoverlay" type="environment" file="anch-pgr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPpositiongraphic" type="environment" file="anch-pgr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-key-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPpositiongraphic" file="anch-pgr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:assignments delimiters="braces" list="yes" optional="yes">
+ <cd:parameter name="cd:key">
+ <cd:constant type="cd:value"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPpositionmethod" type="environment" file="anch-pgr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setMPpositiongraphic" file="anch-pgr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ <cd:assignments delimiters="braces" list="yes" optional="yes">
+ <cd:parameter name="cd:key">
+ <cd:constant type="cd:value"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setMPpositiongraphicrange" file="anch-pgr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ <cd:assignments delimiters="braces" list="yes" optional="yes">
+ <cd:parameter name="cd:key">
+ <cd:constant type="cd:value"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPgetposboxes" file="anch-pgr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name-list"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPgetmultipars" file="anch-pgr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPgetmultishape" file="anch-pgr.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPp" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPr" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPc" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPn" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPx" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPy" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPw" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPh" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPd" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPxy" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPll" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPlr" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPur" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPul" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPpos" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPls" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPrs" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPpardata" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPxywhd" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPposset" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPpage" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPregion" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPcolumn" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPanchor" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPleftskip" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPrightskip" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPplus" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-number"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPv" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-number"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPrest" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MPvv" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setpositiononly" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setposition" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setpositiondata" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setpositionbox" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:csname/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setpositionstrut" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setpositiondataplus" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:keywords delimiters="braces" list="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setpositionplus" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:keywords delimiters="braces" list="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:csname/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="copyposition" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifposition" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelseposition" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifpositionelse" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsepositiononpage" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifpositiononpageelse" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xypos" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="hpos" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="vpos" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="bpos" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="epos" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+
+ <cd:command name="tracepositions" file="anch-pos.mkiv"/>
+
+ <cd:command name="enableparpositions" file="anch-pos.mkiv"/>
+
+ <cd:command name="disableparpositions" file="anch-pos.mkiv"/>
+
+ <cd:command name="doifelseoverlapping" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifoverlappingelse" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsepositionsonsamepage" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name-list"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifpositionsonsamepageelse" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name-list"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsepositionsonthispage" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name-list"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifpositionsonthispageelse" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name-list"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsepositionsused" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifpositionsusedelse" file="anch-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-positionbar.xml b/tex/context/interface/mkiv/i-positionbar.xml
new file mode 100644
index 000000000..e6dadf8c5
--- /dev/null
+++ b/tex/context/interface/mkiv/i-positionbar.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setuppositionbar" file="pack-bar.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="min">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="max">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="depth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="horizontalpositionbar" file="pack-bar.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="setuppositionbar"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="verticalpositionbar" file="pack-bar.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="setuppositionbar"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="horizontalgrowingbar" file="pack-bar.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="setuppositionbar"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="verticalgrowingbar" file="pack-bar.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="setuppositionbar"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-positioning.xml b/tex/context/interface/mkiv/i-positioning.xml
new file mode 100644
index 000000000..98898c7cc
--- /dev/null
+++ b/tex/context/interface/mkiv/i-positioning.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definepositioning" file="pack-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuppositioning"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuppositioning" file="pack-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="offset">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="unit">
+ <cd:constant type="ex"/>
+ <cd:constant type="em"/>
+ <cd:constant type="pt"/>
+ <cd:constant type="in"/>
+ <cd:constant type="cm" default="yes"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="sp"/>
+ <cd:constant type="bp"/>
+ <cd:constant type="pc"/>
+ <cd:constant type="dd"/>
+ <cd:constant type="cc"/>
+ <cd:constant type="nc"/>
+ </cd:parameter>
+ <cd:parameter name="state">
+ <cd:constant type="start" default="yes"/>
+ <cd:constant type="overlay"/>
+ </cd:parameter>
+ <cd:parameter name="xoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="yoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="xstep">
+ <cd:constant type="absolute" default="yes"/>
+ <cd:constant type="relative"/>
+ </cd:parameter>
+ <cd:parameter name="ystep">
+ <cd:constant type="absolute" default="yes"/>
+ <cd:constant type="relative"/>
+ </cd:parameter>
+ <cd:parameter name="xscale">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="yscale">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="xfactor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="yfactor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="factor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="scale">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="positioning" type="environment" file="pack-pos.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuppositioning"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="position" file="pack-pos.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuppositioning"/>
+ </cd:assignments>
+ <cd:position list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-postponing.xml b/tex/context/interface/mkiv/i-postponing.xml
new file mode 100644
index 000000000..619a77552
--- /dev/null
+++ b/tex/context/interface/mkiv/i-postponing.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="postponing" type="environment" file="page-pst.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:number" prefix="cd:sign" method="none"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-processor.xml b/tex/context/interface/mkiv/i-processor.xml
new file mode 100644
index 000000000..a43037754
--- /dev/null
+++ b/tex/context/interface/mkiv/i-processor.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="defineprocessor" file="typo-prc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupprocessor"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupprocessor" file="typo-prc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start" default="yes"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="applyprocessor" file="typo-prc.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-profile.xml b/tex/context/interface/mkiv/i-profile.xml
new file mode 100644
index 000000000..2df175cdf
--- /dev/null
+++ b/tex/context/interface/mkiv/i-profile.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="defineprofile" file="spac-prf.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupprofile"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupprofile" file="spac-prf.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="depth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="factor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="lines">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:constant type="strict" default="yes"/>
+ <cd:constant type="fixed"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setprofile" file="spac-prf.mkvi">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="none"/>
+ <cd:constant type="fixed"/>
+ <cd:constant type="strict"/>
+ <cd:constant type="halffixed"/>
+ <cd:constant type="quarterfixed"/>
+ <cd:constant type="eightsfixed"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetprofile" file="spac-prf.mkvi"/>
+
+ <cd:command name="useprofileparameter" file="spac-prf.mkvi">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="profiledbox" file="spac-prf.mkvi">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="none"/>
+ <cd:constant type="fixed"/>
+ <cd:constant type="strict"/>
+ <cd:constant type="halffixed"/>
+ <cd:constant type="quarterfixed"/>
+ <cd:constant type="eightsfixed"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupprofile"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="profilegivenbox" file="spac-prf.mkvi">
+ <cd:arguments>
+ <cd:keywords delimiters="braces" optional="yes">
+ <cd:constant type="none"/>
+ <cd:constant type="fixed"/>
+ <cd:constant type="strict"/>
+ <cd:constant type="halffixed"/>
+ <cd:constant type="quarterfixed"/>
+ <cd:constant type="eightsfixed"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:resolve name="string-box"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-publication.xml b/tex/context/interface/mkiv/i-publication.xml
new file mode 100644
index 000000000..4d3583e7e
--- /dev/null
+++ b/tex/context/interface/mkiv/i-publication.xml
@@ -0,0 +1,1124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="btxrenderingdefinitions" type="environment" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="loadbtxdefinitionfile" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="loadbtxreplacementfile" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definebtx" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupbtx"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupbtx" variant="1" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="specification">
+ <cd:constant type="default"/>
+ <cd:constant type="apa"/>
+ <cd:constant type="aps"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="dataset">
+ <cd:constant type="default"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="authorconversion">
+ <cd:constant type="normal"/>
+ <cd:constant type="normalshort"/>
+ <cd:constant type="normalinverted"/>
+ <cd:constant type="invertedshort"/>
+ <cd:constant type="short"/>
+ </cd:parameter>
+ <cd:parameter name="etallimit">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="etaldisplay">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="etaloption">
+ <cd:constant type="last"/>
+ </cd:parameter>
+ <cd:parameter name="stopper">
+ <cd:constant type="initials"/>
+ </cd:parameter>
+ <cd:parameter name="interaction">
+ <cd:constant type="start" default="yes"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="all"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:resolve name="value-btxalternative"/>
+ </cd:parameter>
+ <cd:parameter name="sorttype">
+ <cd:constant type="normal" default="yes"/>
+ <cd:constant type="reverse"/>
+ </cd:parameter>
+ <cd:parameter name="compress">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <!--
+ <cd:parameter name="author">
+ <cd:constant type="???"/>
+ </cd:parameter>
+ -->
+ <cd:parameter name="default">
+ <cd:constant type="default"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <!--
+ <cd:parameter name="cd:key">
+ <cd:constant type="cd:value"/>
+ </cd:parameter>
+ -->
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupbtx" variant="2" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="usingbtxspecification" type="environment" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definebtxdataset" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupbtxdataset"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupbtxdataset" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="language">
+ <cd:constant type="cd:language"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definebtxregister" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupbtxregister"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupbtxregister" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="dataset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="field">
+ <cd:constant type="keyword"/>
+ <cd:constant type="range"/>
+ <cd:constant type="pagenumber"/>
+ <cd:constant type="author"/>
+ </cd:parameter>
+ <cd:parameter name="register">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:constant type="once"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="normalshort"/>
+ <cd:constant type="invertedshort"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definebtxrendering" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupbtxrendering"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupbtxrendering" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="textstate">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="pagestate">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="separator">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="criterium">
+ <cd:constant type="previous"/>
+ <cd:constant type="cite"/>
+ <cd:constant type="here"/>
+ <cd:constant type="all"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="specification">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="title">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dataset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <!--
+ <cd:parameter name="reference">
+ <cd:constant type="???"/>
+ </cd:parameter>
+ -->
+ <cd:parameter name="method">
+ <cd:constant type="dataset"/>
+ <cd:constant type="force"/>
+ <cd:constant type="local"/>
+ <cd:constant type="global"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <!--
+ <cd:parameter name="keyword">
+ <cd:constant type="???"/>
+ </cd:parameter>
+ -->
+ <cd:parameter name="sorttype">
+ <cd:constant type="short"/>
+ <cd:constant type="dataset"/>
+ <cd:constant type="list"/>
+ <cd:constant type="reference"/>
+ <cd:constant type="used"/>
+ <cd:constant type="default"/>
+ <cd:constant type="cite"/>
+ <cd:constant type="index"/>
+ </cd:parameter>
+ <cd:parameter name="repeat">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <!--
+ <cd:parameter name="ignore">
+ <cd:constant type="???"/>
+ </cd:parameter>
+ -->
+ <cd:parameter name="group">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="numbering">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="num"/>
+ <cd:constant type="index"/>
+ <cd:constant type="tag"/>
+ <cd:constant type="short"/>
+ <cd:constant type="page"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="usebtxdataset" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:resolve name="keyword-file"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="specification">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="publication" type="environment" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="tag">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="category">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="k">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="t">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupbtxlist" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="completebtxrendering" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupbtxrendering"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placebtxrendering" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupbtxrendering"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="completelistofpublications" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupbtxrendering"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placelistofpublications" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupbtxrendering"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxhybridcite" variant="1" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-citedata-list-optional"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxhybridcite" variant="2" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-citedata-list"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxhybridcite" variant="3" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-btxalternative-optional"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxhybridcite" variant="4" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxlistcitation" variant="1" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-citedata-list-optional"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxlistcitation" variant="2" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-citedata-list"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxlistcitation" variant="3" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-btxalternative-optional"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxtextcitation" variant="1" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-citedata-list-optional"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxtextcitation" variant="2" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-citedata-list"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxtextcitation" variant="3" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-btxalternative-optional"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxalwayscitation" variant="1" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-citedata-list-optional"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxalwayscitation" variant="2" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-citedata-list"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxalwayscitation" variant="3" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-btxalternative-optional"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="bthiddencitation" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="listcitation" variant="1" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-citedata-list-optional"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="listcitation" variant="2" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-citedata-list"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="listcitation" variant="3" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-btxalternative-optional"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="listcite" variant="1" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-citedata-list-optional"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="listcite" variant="2" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-citedata-list"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="listcite" variant="3" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-btxalternative-optional"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="textcitation" variant="1" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-citedata-list-optional"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="textcitation" variant="2" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-citedata-list"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="textcitation" variant="3" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-btxalternative-optional"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="textcite" variant="1" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-citedata-list-optional"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="textcite" variant="2" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-citedata-list"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="textcite" variant="3" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-btxalternative-optional"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="alwayscitation" variant="1" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-citedata-list-optional"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="alwayscitation" variant="2" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-citedata-list"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="alwayscitation" variant="3" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-btxalternative-optional"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="alwayscite" variant="1" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-citedata-list-optional"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="alwayscite" variant="2" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-citedata-list"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="alwayscite" variant="3" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-btxalternative-optional"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="hiddencitation" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="hiddencite" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="citation" variant="1" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-citedata-list-optional"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="citation" variant="2" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-citedata-list"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="citation" variant="3" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-btxalternative-optional"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="citation" variant="4" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="cite" variant="1" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-citedata-list-optional"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="cite" variant="2" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-citedata-list"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="cite" variant="3" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-btxalternative-optional"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="cite" variant="4" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="nocitation" variant="1" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="nocitation" variant="2" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="nocite" variant="1" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="nocite" variant="2" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="savebtxdataset" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:resolve name="keyword-file-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="dataset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="type">
+ <cd:constant type="bib"/>
+ <cd:constant type="lua"/>
+ <cd:constant type="xml"/>
+ </cd:parameter>
+ <cd:parameter name="file">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="criterium">
+ <cd:constant type="all"/>
+ <cd:constant type="text"/>
+ <cd:constant type="intro"/>
+ <cd:constant type="reference"/>
+ <cd:constant type="current"/>
+ <cd:constant type="here"/>
+ <cd:constant type="previous"/>
+ <cd:constant type="local"/>
+ <cd:constant type="component"/>
+ <cd:constant type="all" prefix="cd:sectionblock" method="range"/>
+ <cd:constant type="reference" prefix="cd:sectionblock" method="range"/>
+ <cd:constant type="current" prefix="cd:sectionblock" method="range"/>
+ <cd:constant type="previous" prefix="cd:sectionblock" method="range"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placecitation" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="usebtxdefinitions" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxfield" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-btxfield"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxdetail" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-btxfield"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxflush" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-btxfield"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxdirect" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-btxfield"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxfieldname" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-btxfield"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxfieldtype" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-btxfield"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxfoundname" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-btxfield"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxfoundtype" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-btxfield"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxauthorfield" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="initials"/>
+ <cd:constant type="firstnames"/>
+ <cd:constant type="vons"/>
+ <cd:constant type="surnames"/>
+ <cd:constant type="juniors"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxdoifelse" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-btxfield"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxdoif" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-btxfield"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxdoifnot" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-btxfield"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxsetup" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxdoifelsesameaspreviouschecked" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="always"/>
+ <cd:constant type="doublesided"/>
+ </cd:keywords>
+ <cd:resolve name="argument-btxfield"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxdoifelsesameasprevious" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-btxfield"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxdoifelsecombiinlist" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxdoifsameaspreviouscheckedelse" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="always"/>
+ <cd:constant type="doublesided"/>
+ </cd:keywords>
+ <cd:resolve name="argument-btxfield"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxdoifsameaspreviouselse" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-btxfield"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxdoifcombiinlistelse" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="currentbtxuservariable" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxdoifelseuservariable" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxdoifuservariableelse" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxremapauthor" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-text"/>
+ <cd:resolve name="keyword-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxflushauthor" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="num"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="normalshort"/>
+ <cd:constant type="inverted"/>
+ <cd:constant type="invertedshort"/>
+ </cd:keywords>
+ <cd:resolve name="argument-btxauthor"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxflushsuffix" file="publ-ini.mkiv"/>
+
+ <cd:command name="btxflushauthorname" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-btxauthor"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxflushauthornormal" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-btxauthor"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxflushauthornormalshort" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-btxauthor"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxflushauthorinverted" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-btxauthor"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxflushauthorinvertedshort" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-btxauthor"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxsingularplural" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="editor"/>
+ <cd:constant type="producer"/>
+ <cd:constant type="director"/>
+ </cd:keywords>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxsingularorplural" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="editor"/>
+ <cd:constant type="producer"/>
+ <cd:constant type="director"/>
+ </cd:keywords>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxoneorrange" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="volume"/>
+ <cd:constant type="pages"/>
+ </cd:keywords>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxfirstofrange" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="volume"/>
+ <cd:constant type="pages"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxloadjournalist" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxsavejournalist" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxaddjournal" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxexpandedjournal" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="btxabbreviatedjournal" file="publ-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showbtxdatasetfields" variant="1" file="publ-tra.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="specification">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="dataset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="field">
+ <cd:resolve name="value-btxfield"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showbtxdatasetfields" variant="2" file="publ-tra.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showbtxdatasetcompleteness" variant="1" file="publ-tra.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="specification">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="dataset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="field">
+ <cd:resolve name="value-btxfield"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showbtxdatasetcompleteness" variant="2" file="publ-tra.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showbtxdatasetauthors" variant="1" file="publ-tra.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="specification">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="dataset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="field">
+ <cd:resolve name="value-btxfield"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showbtxdatasetauthors" variant="2" file="publ-tra.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showbtxhashedauthors" file="publ-tra.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-dummy-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showbtxfields" variant="1" file="publ-tra.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="rotation">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="specification">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showbtxfields" variant="2" file="publ-tra.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showbtxtables" file="publ-tra.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-dummy-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-random.xml b/tex/context/interface/mkiv/i-random.xml
new file mode 100644
index 000000000..969cef05f
--- /dev/null
+++ b/tex/context/interface/mkiv/i-random.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="getrandomcount" file="supp-ran.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getrandomdimen" file="supp-ran.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getrandomnumber" file="supp-ran.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getrandomfloat" file="supp-ran.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setrandomseed" file="supp-ran.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getrandomseed" file="supp-ran.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="randomseed" type="environment" begin="push" end="pop" file="supp-ran.mkiv"/>
+
+ <cd:command name="reuserandomseed" file="supp-ran.mkiv"/>
+
+ <cd:command name="randomnumber" file="supp-ran.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mprandomnumber" file="supp-ran.mkiv"/>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-readme.pdf b/tex/context/interface/mkiv/i-readme.pdf
new file mode 100644
index 000000000..21b2d0b48
--- /dev/null
+++ b/tex/context/interface/mkiv/i-readme.pdf
Binary files differ
diff --git a/tex/context/interface/mkiv/i-readme.tex b/tex/context/interface/mkiv/i-readme.tex
new file mode 100644
index 000000000..4fbdfe14d
--- /dev/null
+++ b/tex/context/interface/mkiv/i-readme.tex
@@ -0,0 +1,114 @@
+% language=uk
+
+\usemodule[art-01,abr-01]
+
+\starttext
+
+\startsubject[title=Introduction]
+
+The interface definitions have a long history. They started out in as \TEX\
+commands, something \type {\start} \unknown\ \type {\stop} with embedded
+specifications. When \CONTEXT\ became larger and \XML\ showed up the definitions
+were converted into \XML\ and instead of putting the definitions in the source
+files they moved to one file: \type {cont-en.xml}.
+
+When at some point the number of commands not covered grew and the covered ones
+lagged behind reality, Wolfgang started to systematically collect all the
+information needed to make a more complete set of definitions. In the process we
+enhanced the supported syntax variants and added more methods to share common
+definitions. The current set of files describes all commands (even those not
+really meant for users). Because the definitions are also used to generate files
+for editors like \SCITE, there are some tools that operate on the \XML\ file. If
+needed one can still generate the large files (one per interface with merged
+definitions).
+
+\stopsubject
+
+\startsubject[title=Overviews]
+
+The files describing the interface can be recognized by the prefix \type {i-} and
+suffix \type {xml}. We don't explain the syntax here as those files give enough
+examples of usage.
+
+\starttabulate[|T|p|]
+\NC i-context \NC the main file (it loads other files) \NC \NR
+\NC i-common-definitions \NC common definitions that save time and space when
+ defining others\NC \NR
+\NC i-common-* \NC files loaded by the common definition file \NC \NR
+\NC i-* \NC the setups organized by functionality \NC \NR
+\stoptabulate
+
+There are a couple of styles that implement the rendering of the interface
+commands (traditionally called setups):
+
+\starttabulate[|T|p|]
+\NC x-setups-basics \NC loading of definitions and rendering of compact of extensive
+ interface commands \NC \NR
+\NC x-setups-overview \NC generate a document with all commands using the large combined
+ definition file \NC \NR
+\NC x-setups-generate \NC generate a document with all commands using the individual
+ files but generate the combined file in the process \NC \NR
+\NC x-setups-proofing \NC used for direct rendering of a file where commands
+ are defined \NC \NR
+\stoptabulate
+
+The proofing only works when there is the following line in a definition file:
+
+\starttyping
+<?context-directive job ctxfile x-setups.ctx ?>
+\stoptyping
+
+In that case running the \type {context} command on the file will render the
+defined commands.
+
+\starttyping
+context i-backend.xml
+\stoptyping
+
+If you want the combined \XML\ file(s), you need to call:
+
+\starttyping
+context x-setups-generate.mkiv
+context x-setups-generate.mkiv --interface=nl --result=setup-nl
+\stoptyping
+
+For each relevant interface. If you don't want that, and save quite some disk space,
+you can use:
+
+\starttyping
+context x-setups-overview.mkiv
+context x-setups-overview.mkiv --interface=nl --result=setup-nl
+\stoptyping
+
+Instead of these commands you can also do this:
+
+\starttyping
+context --extra=setups --overview
+context --extra=setups --overview --save
+context --extra=setups --overview --interface=nl
+context --extra=setups framed
+\stoptyping
+
+\stopsubject
+
+\startsubject[title=Use in manuals]
+
+{\em todo}
+
+\stopsubject
+
+\startsubject[title=Keeping up]
+
+We try to keep up with additions in \CONTEXT\ but it might be that we forget some. If
+you run into issues when processing, can't find what should be there, or find a discrepancy in
+a manual (like the beginners manual) you can contact us.
+
+\startlines
+Wolfgang Schuster
+Ton Otten
+Hans Hagen
+\stoplines
+
+\stopsubject
+
+\stoptext
diff --git a/tex/context/interface/mkiv/i-references.xml b/tex/context/interface/mkiv/i-references.xml
new file mode 100644
index 000000000..7b117e4f7
--- /dev/null
+++ b/tex/context/interface/mkiv/i-references.xml
@@ -0,0 +1,566 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setupreferencing" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start" default="yes"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="expansion">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ <cd:constant type="xml"/>
+ </cd:parameter>
+ <cd:parameter name="autofile">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="export">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="doublesided">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="interaction">
+ <cd:constant type="label"/>
+ <cd:constant type="text"/>
+ <cd:constant type="symbol"/>
+ <cd:constant type="all" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="separator">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="prefix">
+ <cd:resolve name="value-referenceprefix"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="textreference" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pagereference" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="reference" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setreference" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="usereferenceparameter" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="boxreference" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list"/>
+ <cd:csname/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="hboxreference" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="vboxreference" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="contentreference" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definereference" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-reference-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetreference" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setpagereference" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-reference-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsereferencefound" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-reference"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifreferencefoundelse" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-reference"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupreferenceprefix" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:resolve name="value-referenceprefix"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupglobalreferenceprefix" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:resolve name="value-referenceprefix"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="referenceprefix" type="environment" begin="push" end="pop" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:resolve name="value-referenceprefix"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="referenceprefix" type="environment" begin="globalpush" end="globalpop" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:resolve name="value-referenceprefix"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="referenceprefix" file="strc-ref.mkvi"/>
+
+ <cd:command name="in" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="at" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="about" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="from" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="over" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="filterreference" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:resolve name="value-referencetype"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getreferenceentry" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:resolve name="value-referencetype"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getreference" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:resolve name="value-referencetype"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ref" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:resolve name="value-referencetype"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="somewhere" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="docheckedpagestate" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-reference"/>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="someplace" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="atpage" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="symbolreference" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definereferenceformat" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupreferenceformat"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupreferenceformat" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="label">
+ <cd:constant type="*"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="type">
+ <cd:resolve name="value-referencetype"/>
+ </cd:parameter>
+ <cd:parameter name="setups">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="autocase">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="referenceformat" generated="yes" variant="generated" file="strc-ref.mkvi">
+ <cd:sequence>
+ <cd:variable value="referenceformat"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="argument-text-optional"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="goto" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:content/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="goto" type="environment" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="gotobox" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:content/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="useurl" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-url"/>
+ <cd:resolve name="keyword-file-optional"/>
+ <cd:resolve name="keyword-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="useURL" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-url"/>
+ <cd:resolve name="keyword-file-optional"/>
+ <cd:resolve name="keyword-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="usefile" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-file"/>
+ <cd:resolve name="keyword-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="useexternaldocument" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-file"/>
+ <cd:resolve name="keyword-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelseurldefined" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifurldefinedelse" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsefiledefined" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doiffiledefinedelse" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupurl" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="url" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="defineprogram" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-text"/>
+ <cd:resolve name="keyword-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupprograms" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="program" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definepage" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="gotopage" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="keyword-reference"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupreferencestructureprefix" file="strc-ref.mkvi">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="default"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="prefix">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="prefixseparatorset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="prefixconversion">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="prefixconversionset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="prefixstarter">
+ <cd:resolve name="value-starter"/>
+ </cd:parameter>
+ <cd:parameter name="prefixstopper">
+ <cd:resolve name="value-stopper"/>
+ </cd:parameter>
+ <cd:parameter name="prefixset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="prefixsegments">
+ <cd:resolve name="value-prefixsegments"/>
+ </cd:parameter>
+ <cd:parameter name="numberconversion">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="numberconversionset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="numberstarter">
+ <cd:resolve name="value-starter"/>
+ </cd:parameter>
+ <cd:parameter name="numberstopper">
+ <cd:resolve name="value-stopper"/>
+ </cd:parameter>
+ <cd:parameter name="numbersegments">
+ <cd:resolve name="value-numbersegments"/>
+ </cd:parameter>
+ <cd:parameter name="numberseparatorset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="prefixconnector">
+ <cd:resolve name="value-connector"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-regime.xml b/tex/context/interface/mkiv/i-regime.xml
new file mode 100644
index 000000000..6c9e5b356
--- /dev/null
+++ b/tex/context/interface/mkiv/i-regime.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="currentregime" file="regi-ini.mkiv"/>
+
+ <cd:command name="disableregime" file="regi-ini.mkiv"/>
+
+ <cd:command name="enableregime" file="regi-ini.mkiv">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cp1250"/>
+ <cd:constant type="cp1251"/>
+ <cd:constant type="cp1252"/>
+ <cd:constant type="cp1253"/>
+ <cd:constant type="cp1254"/>
+ <cd:constant type="cp1255"/>
+ <cd:constant type="cp1256"/>
+ <cd:constant type="cp1257"/>
+ <cd:constant type="cp1258"/>
+ <cd:constant type="8859-1"/>
+ <cd:constant type="8859-2"/>
+ <cd:constant type="8859-3"/>
+ <cd:constant type="8859-4"/>
+ <cd:constant type="8859-9"/>
+ <cd:constant type="8859-10"/>
+ <cd:constant type="8859-13"/>
+ <cd:constant type="8859-14"/>
+ <cd:constant type="8859-15"/>
+ <cd:constant type="8859-16"/>
+ <cd:constant type="utf"/>
+ <cd:constant type="windows-1250"/>
+ <cd:constant type="windows-1251"/>
+ <cd:constant type="windows-1252"/>
+ <cd:constant type="windows-1253"/>
+ <cd:constant type="windows-1254"/>
+ <cd:constant type="windows-1255"/>
+ <cd:constant type="windows-1256"/>
+ <cd:constant type="windows-1257"/>
+ <cd:constant type="windows-1258"/>
+ <cd:constant type="il1"/>
+ <cd:constant type="il2"/>
+ <cd:constant type="il3"/>
+ <cd:constant type="il4"/>
+ <cd:constant type="il5"/>
+ <cd:constant type="il6"/>
+ <cd:constant type="il7"/>
+ <cd:constant type="il8"/>
+ <cd:constant type="il9"/>
+ <cd:constant type="il10"/>
+ <cd:constant type="iso-8859-1"/>
+ <cd:constant type="iso-8859-2"/>
+ <cd:constant type="iso-8859-3"/>
+ <cd:constant type="iso-8859-4"/>
+ <cd:constant type="iso-8859-9"/>
+ <cd:constant type="iso-8859-10"/>
+ <cd:constant type="iso-8859-13"/>
+ <cd:constant type="iso-8859-14"/>
+ <cd:constant type="iso-8859-15"/>
+ <cd:constant type="iso-8859-16"/>
+ <cd:constant type="latin1"/>
+ <cd:constant type="latin2"/>
+ <cd:constant type="latin3"/>
+ <cd:constant type="latin4"/>
+ <cd:constant type="latin5"/>
+ <cd:constant type="latin6"/>
+ <cd:constant type="latin7"/>
+ <cd:constant type="latin8"/>
+ <cd:constant type="latin9"/>
+ <cd:constant type="latin10"/>
+ <cd:constant type="utf-8"/>
+ <cd:constant type="utf8"/>
+ <cd:constant type="windows"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="regime" type="environment" file="regi-ini.mkiv">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:inherit name="enableregime"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-register.xml b/tex/context/interface/mkiv/i-register.xml
new file mode 100644
index 000000000..561912f6a
--- /dev/null
+++ b/tex/context/interface/mkiv/i-register.xml
@@ -0,0 +1,646 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="defineregister" file="strc-reg.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupregister"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupregister" variant="1" file="strc-reg.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:resolve name="keyword-number-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="referencemethod">
+ <cd:constant type="forward"/>
+ </cd:parameter>
+ <cd:parameter name="expansion">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ <cd:constant type="xml"/>
+ </cd:parameter>
+ <cd:parameter name="ownnumber">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="xmlsetup">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="A"/>
+ <cd:constant type="B"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:resolve name="value-sortmethod"/>
+ </cd:parameter>
+ <cd:parameter name="compress">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ <cd:constant type="all"/>
+ </cd:parameter>
+ <cd:parameter name="criterium">
+ <cd:constant type="local"/>
+ <cd:constant type="text"/>
+ <cd:constant type="current"/>
+ <cd:constant type="previous"/>
+ <cd:constant type="all" default="yes"/>
+ <cd:constant type="cd:section"/>
+ </cd:parameter>
+ <cd:parameter name="pageprefixseparatorset">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="pageprefixconversionset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="pageprefixstarter">
+ <cd:resolve name="value-starter"/>
+ </cd:parameter>
+ <cd:parameter name="pageprefixstopper">
+ <cd:resolve name="value-stopper"/>
+ </cd:parameter>
+ <cd:parameter name="pageprefixset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="pageprefixsegments">
+ <cd:resolve name="value-prefixsegments"/>
+ </cd:parameter>
+ <cd:parameter name="pageprefixconnector">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="pageprefix">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="pageseparatorset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="pageconversionset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="pagestarter">
+ <cd:resolve name="value-starter"/>
+ </cd:parameter>
+ <cd:parameter name="pagestopper">
+ <cd:resolve name="value-stopper"/>
+ </cd:parameter>
+ <cd:parameter name="pagesegments">
+ <cd:resolve name="value-numbersegments"/>
+ </cd:parameter>
+ <cd:parameter name="maxwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="indicator">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="textcommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="deeptextcommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="pagecommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="interaction">
+ <cd:constant type="text"/>
+ <cd:constant type="pagenumber" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="pagenumber">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="symbol">
+ <cd:constant type="a"/>
+ <cd:constant type="n" default="yes"/>
+ <cd:constant type="none"/>
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="language">
+ <cd:resolve name="value-sortorder"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="textstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="textcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="pagestyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="pagecolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="balance">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:inherit name="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="numberorder">
+ <cd:constant type="numbers" default="yes"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupregister" variant="2" file="strc-reg.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:number" prefix="cd:name" method="range"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="referencemethod">
+ <cd:constant type="forward"/>
+ </cd:parameter>
+ <cd:parameter name="expansion">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ <cd:constant type="xml"/>
+ </cd:parameter>
+ <cd:parameter name="ownnumber">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="xmlsetup">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="A"/>
+ <cd:constant type="B"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:resolve name="value-sortmethod"/>
+ </cd:parameter>
+ <cd:parameter name="compress">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ <cd:constant type="all"/>
+ </cd:parameter>
+ <cd:parameter name="criterium">
+ <cd:constant type="local"/>
+ <cd:constant type="text"/>
+ <cd:constant type="current"/>
+ <cd:constant type="previous"/>
+ <cd:constant type="all" default="yes"/>
+ <cd:constant type="cd:section"/>
+ </cd:parameter>
+ <cd:parameter name="pageprefixseparatorset">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="pageprefixconversionset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="pageprefixstarter">
+ <cd:resolve name="value-starter"/>
+ </cd:parameter>
+ <cd:parameter name="pageprefixstopper">
+ <cd:resolve name="value-stopper"/>
+ </cd:parameter>
+ <cd:parameter name="pageprefixset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="pageprefixsegments">
+ <cd:resolve name="value-prefixsegments"/>
+ </cd:parameter>
+ <cd:parameter name="pageprefixconnector">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="pageprefix">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="pageseparatorset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="pageconversionset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="pagestarter">
+ <cd:resolve name="value-starter"/>
+ </cd:parameter>
+ <cd:parameter name="pagestopper">
+ <cd:resolve name="value-stopper"/>
+ </cd:parameter>
+ <cd:parameter name="pagesegments">
+ <cd:resolve name="value-numbersegments"/>
+ </cd:parameter>
+ <cd:parameter name="maxwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="indicator">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="textcommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="deeptextcommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="pagecommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="interaction">
+ <cd:constant type="text"/>
+ <cd:constant type="pagenumber" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="pagenumber">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="symbol">
+ <cd:constant type="a"/>
+ <cd:constant type="n" default="yes"/>
+ <cd:constant type="none"/>
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="language">
+ <cd:resolve name="value-sortorder"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="textstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="textcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="pagestyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="pagecolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="balance">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:inherit name="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="numberorder">
+ <cd:constant type="numbers" default="yes"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="setupregisters" variant="1" file="strc-reg.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:resolve name="keyword-number-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupregister"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupregisters" variant="2" file="strc-reg.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:number" prefix="cd:name" method="range"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupregister"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="register" generated="yes" variant="generated:1" file="strc-reg.mkiv">
+ <cd:sequence>
+ <cd:variable value="register"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:text" prefix="cd:processor" method="apply"/>
+ </cd:keywords>
+ <cd:index list="yes"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="register" generated="yes" variant="generated:2" file="strc-reg.mkiv">
+ <cd:sequence>
+ <cd:variable value="register"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:text" prefix="cd:processor" method="apply"/>
+ </cd:keywords>
+ <cd:resolve name="argument-text"/>
+ <cd:index list="yes"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="seeregister" generated="yes" variant="generated" file="strc-reg.mkiv">
+ <cd:sequence>
+ <cd:string value="see"/>
+ <cd:variable value="register"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:text" prefix="cd:processor" method="apply"/>
+ </cd:keywords>
+ <cd:index list="yes"/>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:text" prefix="cd:processor" method="apply"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placeregister" generated="yes" variant="generated" file="strc-reg.mkiv">
+ <cd:sequence>
+ <cd:string value="place"/>
+ <cd:variable value="register"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupregister"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="completeregister" generated="yes" variant="generated" file="strc-reg.mkiv">
+ <cd:sequence>
+ <cd:string value="complete"/>
+ <cd:variable value="register"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupregister"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupregister" generated="yes" variant="generated" file="strc-reg.mkiv">
+ <cd:sequence>
+ <cd:string value="setup"/>
+ <cd:variable value="register"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-number-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupregister"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="index" variant="1" file="strc-reg.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:text" prefix="cd:processor" method="apply"/>
+ </cd:keywords>
+ <cd:index list="yes"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="index" variant="2" file="strc-reg.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:text" prefix="cd:processor" method="apply"/>
+ </cd:keywords>
+ <cd:resolve name="argument-text"/>
+ <cd:index list="yes"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="seeindex" file="strc-reg.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:text" prefix="cd:processor" method="apply"/>
+ </cd:keywords>
+ <cd:index list="yes"/>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:text" prefix="cd:processor" method="apply"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placeindex" file="strc-reg.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupregister"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="completeindex" file="strc-reg.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupregister"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupindex" file="strc-reg.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-number-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupregister"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="startregister" file="strc-reg.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:text" prefix="cd:processor" method="apply"/>
+ </cd:keywords>
+ <cd:index list="yes"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="stopregister" file="strc-reg.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setregisterentry" file="strc-reg.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="assignment-registerdata-list"/>
+ <cd:resolve name="assignment-userdata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="finishregisterentry" file="strc-reg.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="label">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="keys">
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:text" prefix="cd:processor" method="apply"/>
+ </cd:parameter>
+ <cd:parameter name="entries">
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:text" prefix="cd:processor" method="apply"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ <cd:resolve name="assignment-userdata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setstructurepageregister" file="strc-reg.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="assignment-registerdata-list"/>
+ <cd:resolve name="assignment-userdata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="startstructurepageregister" file="strc-reg.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="assignment-registerdata-list"/>
+ <cd:resolve name="assignment-userdata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="stopstructurepageregister" file="strc-reg.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="determineregistercharacteristics" file="strc-reg.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="language">
+ <cd:resolve name="value-sortorder"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:resolve name="value-sortmethod"/>
+ </cd:parameter>
+ <cd:parameter name="numberorder">
+ <cd:constant type="numbers" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="compress">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ <cd:constant type="all"/>
+ </cd:parameter>
+ <cd:parameter name="criterium">
+ <cd:constant type="local"/>
+ <cd:constant type="text"/>
+ <cd:constant type="current"/>
+ <cd:constant type="previous"/>
+ <cd:constant type="all" default="yes"/>
+ <cd:constant type="cd:section"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="utilityregisterlength" file="strc-reg.mkiv"/>
+
+ <cd:command name="placeregister" file="strc-reg.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupregister"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="completeregister" file="strc-reg.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupregister"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="currentregisterpageuserdata" file="strc-reg.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-renderingwindow.xml b/tex/context/interface/mkiv/i-renderingwindow.xml
new file mode 100644
index 000000000..219fda285
--- /dev/null
+++ b/tex/context/interface/mkiv/i-renderingwindow.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="useexternalrendering" file="scrn-wid.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-file"/>
+ <cd:keywords>
+ <cd:constant type="auto"/>
+ <cd:constant type="embed"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setinternalrendering" file="scrn-wid.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords>
+ <cd:constant type="auto"/>
+ <cd:constant type="embed"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definerenderingwindow" file="scrn-wid.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuprenderingwindow"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuprenderingwindow" file="scrn-wid.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="openpageaction">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="closepageaction">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placerenderingwindow" file="scrn-wid.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-replacement.xml b/tex/context/interface/mkiv/i-replacement.xml
new file mode 100644
index 000000000..95b6272e7
--- /dev/null
+++ b/tex/context/interface/mkiv/i-replacement.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="replaceword" file="lang-rep.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-text"/>
+ <cd:resolve name="keyword-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setreplacement" file="lang-rep.mkiv">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="reset"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetreplacement" file="lang-rep.mkiv"/>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-rotatation.xml b/tex/context/interface/mkiv/i-rotatation.xml
new file mode 100644
index 000000000..95a5815e9
--- /dev/null
+++ b/tex/context/interface/mkiv/i-rotatation.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="mirror" file="grph-trf.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuprotate" file="grph-trf.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="location">
+ <cd:constant type="fit"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="depth"/>
+ <cd:constant type="high"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="default"/>
+ <cd:constant type="normal"/>
+ </cd:parameter>
+ <cd:parameter name="rotation">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="inner"/>
+ <cd:constant type="outer"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rotate" file="grph-trf.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuprotate"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dorotatebox" file="grph-trf.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:csname/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-scale.xml b/tex/context/interface/mkiv/i-scale.xml
new file mode 100644
index 000000000..135d6fba8
--- /dev/null
+++ b/tex/context/interface/mkiv/i-scale.xml
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definescale" file="grph-trf.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupscale"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupscale" file="grph-trf.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="scale">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="xscale">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="yscale">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="depth">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="lines">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="factor">
+ <cd:constant type="fit"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="max"/>
+ <cd:constant type="auto"/>
+ <cd:constant type="default"/>
+ </cd:parameter>
+ <cd:parameter name="hfactor">
+ <cd:constant type="fit"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="max"/>
+ <cd:constant type="auto"/>
+ <cd:constant type="default"/>
+ </cd:parameter>
+ <cd:parameter name="wfactor">
+ <cd:constant type="fit"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="max"/>
+ <cd:constant type="auto"/>
+ <cd:constant type="default"/>
+ </cd:parameter>
+ <cd:parameter name="maxwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="maxheight">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="s">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="sx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="sy">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="equalwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="equalheight">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="grid">
+ <cd:constant type="yes"/>
+ <cd:constant type="fit"/>
+ <cd:constant type="height"/>
+ <cd:constant type="depth"/>
+ <cd:constant type="halfline"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="scale" file="grph-trf.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupscale"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fastscale" file="grph-trf.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fastsxsy" file="grph-trf.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-number"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-script.xml b/tex/context/interface/mkiv/i-script.xml
new file mode 100644
index 000000000..f1aee232a
--- /dev/null
+++ b/tex/context/interface/mkiv/i-script.xml
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definescript" file="scrp-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupscript"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupscript" file="scrp-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="method">
+ <cd:constant type="hangul"/>
+ <cd:constant type="hanzi"/>
+ <cd:constant type="nihongo"/>
+ <cd:constant type="ethiopic"/>
+ <cd:constant type="thai"/>
+ <cd:constant type="test"/>
+ </cd:parameter>
+ <cd:parameter name="preset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="features">
+ <cd:constant type="auto"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="setupscripts" file="scrp-ini.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupscript"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="setscript" file="scrp-ini.mkvi">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="hangul"/>
+ <cd:constant type="hanzi"/>
+ <cd:constant type="nihongo"/>
+ <cd:constant type="ethiopic"/>
+ <cd:constant type="thai"/>
+ <cd:constant type="test"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetscript" file="scrp-ini.mkvi"/>
+
+ <cd:command name="script" type="environment" file="scrp-ini.mkvi">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="hangul"/>
+ <cd:constant type="hanzi"/>
+ <cd:constant type="nihongo"/>
+ <cd:constant type="ethiopic"/>
+ <cd:constant type="thai"/>
+ <cd:constant type="test"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="script" generated="yes" varianet="generated" file="scrp-ini.mkvi">
+ <cd:sequence>
+ <cd:variable value="script"/>
+ </cd:sequence>
+ </cd:command>
+
+ <cd:command name="hangul" file="scrp-ini.mkvi"/>
+
+ <cd:command name="hanzi" file="scrp-ini.mkvi"/>
+
+ <cd:command name="nihongo" file="scrp-ini.mkvi"/>
+
+ <cd:command name="ethiopic" file="scrp-ini.mkvi"/>
+
+ <cd:command name="thai" file="scrp-ini.mkvi"/>
+
+ <cd:command name="latin" file="scrp-ini.mkvi"/>
+
+ <!--
+
+ <cd:command name="test" file="scrp-ini.mkvi"/>
+
+ -->
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-section.xml b/tex/context/interface/mkiv/i-section.xml
new file mode 100644
index 000000000..05368f93f
--- /dev/null
+++ b/tex/context/interface/mkiv/i-section.xml
@@ -0,0 +1,671 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definehead" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-section-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuphead"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuphead" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-section-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="frontpartlabel">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="bodypartlabel">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="appendixlabel">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="backpartlabel">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="expansion">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ <cd:constant type="xml"/>
+ </cd:parameter>
+ <cd:parameter name="catcodes">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="sectionresetset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="sectionseparatorset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="sectionconversionset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="conversion">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="sectionstarter">
+ <cd:resolve name="value-starter"/>
+ </cd:parameter>
+ <cd:parameter name="sectionstopper">
+ <cd:resolve name="value-stopper"/>
+ </cd:parameter>
+ <cd:parameter name="sectionset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="sectionsegments">
+ <cd:resolve name="value-prefixsegments"/>
+ </cd:parameter>
+ <cd:parameter name="referenceprefix">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="textstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="textcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="numberstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="numbercolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="coupling">
+ <cd:constant type="cd:section"/>
+ </cd:parameter>
+ <cd:parameter name="ownnumber">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="beforesection">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="aftersection">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="insidesection">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="incrementnumber">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="list"/>
+ <cd:constant type="empty"/>
+ </cd:parameter>
+ <cd:parameter name="placehead">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="hidden"/>
+ <cd:constant type="empty"/>
+ </cd:parameter>
+ <cd:parameter name="number">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="page">
+ <cd:inherit name="page"/>
+ </cd:parameter>
+ <cd:parameter name="marking">
+ <cd:constant type="page"/>
+ <cd:constant type="reset"/>
+ </cd:parameter>
+ <cd:parameter name="header">
+ <cd:constant type=""/>
+ </cd:parameter>
+ <cd:parameter name="header">
+ <cd:resolve name="value-textstate"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:resolve name="value-textstate"/>
+ </cd:parameter>
+ <cd:parameter name="footer">
+ <cd:resolve name="value-textstate"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="continue">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="aligntitle">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ <cd:constant type="float"/>
+ </cd:parameter>
+ <cd:parameter name="interlinespace">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="interaction">
+ <cd:constant type="list"/>
+ <cd:constant type="reference"/>
+ </cd:parameter>
+ <cd:parameter name="internalgrid">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="grid">
+ <cd:resolve name="value-grid"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:inherit name="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="tolerance">
+ <cd:inherit name="setuptolerance"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="hang">
+ <cd:constant type="line"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="fit"/>
+ <cd:constant type="none" default="yes"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="margin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="indentnext">
+ <cd:resolve name="value-indentnext"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="text"/>
+ <cd:constant type="paragraph"/>
+ <cd:constant type="normal" default="yes"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="inmargin"/>
+ <cd:constant type="top"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="bottom"/>
+ <cd:constant type="reverse"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="numberwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="textwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="commandbefore">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="commandafter">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:twoarguments"/>
+ </cd:parameter>
+ <cd:parameter name="textcommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="deeptextcommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="numbercommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="deepnumbercommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="setupheads" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-section-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setuphead"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="section" generated="yes" variant="generated:1" file="strc-sec.mkiv">
+ <cd:sequence>
+ <cd:variable value="section"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="section" generated="yes" variant="generated:2" file="strc-sec.mkiv">
+ <cd:sequence>
+ <cd:variable value="section"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="section" generated="yes" variant="generated:3" file="strc-sec.mkiv">
+ <cd:sequence>
+ <cd:variable value="section"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="assignment-sectiondata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="section" type="environment" generated="yes" variant="generated" file="strc-sec.mkiv">
+ <cd:sequence>
+ <cd:variable value="section"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="assignment-sectiondata-list-optional"/>
+ <cd:resolve name="assignment-userdata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="part" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="chapter" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="section" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="subsection" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="subsubsection" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="subsubsubsection" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="subsubsubsubsection" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="title" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="subject" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="subsubject" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="subsubsubject" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="subsubsubsubject" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="subsubsubsubsubject" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-reference-list-optional"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="part" type="environment" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-sectiondata-list-optional"/>
+ <cd:resolve name="assignment-userdata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="chapter" type="environment" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-sectiondata-list-optional"/>
+ <cd:resolve name="assignment-userdata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="section" type="environment" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-sectiondata-list-optional"/>
+ <cd:resolve name="assignment-userdata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="subsection" type="environment" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-sectiondata-list-optional"/>
+ <cd:resolve name="assignment-userdata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="subsubsection" type="environment" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-sectiondata-list-optional"/>
+ <cd:resolve name="assignment-userdata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="subsubsubsection" type="environment" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-sectiondata-list-optional"/>
+ <cd:resolve name="assignment-userdata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="subsubsubsubsection" type="environment" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-sectiondata-list-optional"/>
+ <cd:resolve name="assignment-userdata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="title" type="environment" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-sectiondata-list-optional"/>
+ <cd:resolve name="assignment-userdata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="subject" type="environment" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-sectiondata-list-optional"/>
+ <cd:resolve name="assignment-userdata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="subsubject" type="environment" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-sectiondata-list-optional"/>
+ <cd:resolve name="assignment-userdata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="subsubsubject" type="environment" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-sectiondata-list-optional"/>
+ <cd:resolve name="assignment-userdata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="subsubsubsubject" type="environment" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-sectiondata-list-optional"/>
+ <cd:resolve name="assignment-userdata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="subsubsubsubsubject" type="environment" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-sectiondata-list-optional"/>
+ <cd:resolve name="assignment-userdata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="namedsection" type="environment" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-section"/>
+ <cd:resolve name="assignment-sectiondata-list-optional"/>
+ <cd:resolve name="assignment-userdata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definesection" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placeheadtext" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-section"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placeheadnumber" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-section"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupheadnumber" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-section"/>
+ <cd:keywords>
+ <cd:constant type="cd:number" prefix="cd:sign" method="none"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="determineheadnumber" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-section"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="currentheadnumber" file="strc-sec.mkiv"/>
+
+ <cd:command name="namedheadnumber" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-section"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="somenamedheadnumber" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-section"/>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="previous"/>
+ <cd:constant type="current"/>
+ <cd:constant type="next"/>
+ <cd:constant type="first"/>
+ <cd:constant type="last"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="headnumber" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-section"/>
+ <cd:keywords optional="yes">
+ <cd:constant type="previous"/>
+ <cd:constant type="current" default="yes"/>
+ <cd:constant type="next"/>
+ <cd:constant type="first"/>
+ <cd:constant type="last"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="someheadnumber" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-section"/>
+ <cd:keywords>
+ <cd:constant type="previous"/>
+ <cd:constant type="current"/>
+ <cd:constant type="next"/>
+ <cd:constant type="first"/>
+ <cd:constant type="last"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="namedstructureheadlocation" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-section"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="structurenumber" file="strc-sec.mkiv"/>
+
+ <cd:command name="structuretitle" file="strc-sec.mkiv"/>
+
+ <cd:command name="structurevariable" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="structureuservariable" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="namedstructurevariable" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-section"/>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="namedstructureuservariable" file="strc-sec.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-section"/>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definesectionlevels" file="strc-lev.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-section-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="sectionlevel" type="environment" file="strc-lev.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:resolve name="assignment-sectiondata-list-optional"/>
+ <cd:resolve name="assignment-userdata-list-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="defineheadalternative" file="strc-ren.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupheadalternative"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupheadalternative" file="strc-ren.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="alternative">
+ <cd:constant type="horizontal"/>
+ <cd:constant type="vertical" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="renderingsetup">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="localheadsetup" type="environment" file="strc-ren.mkiv"/>
+
+ <cd:command name="headhbox" file="strc-ren.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="headvbox" file="strc-ren.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="headreferenceattributes" file="strc-ren.mkiv"/>
+
+ <cd:command name="headnumbercontent" file="strc-ren.mkiv"/>
+
+ <cd:command name="headtextcontent" file="strc-ren.mkiv"/>
+
+ <cd:command name="headwidth" file="strc-ren.mkiv"/>
+
+ <cd:command name="headtextwidth" file="strc-ren.mkiv"/>
+
+ <cd:command name="headnumberwidth" file="strc-ren.mkiv"/>
+
+ <cd:command name="headnumberdistance" file="strc-ren.mkiv"/>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-sectionblock.xml b/tex/context/interface/mkiv/i-sectionblock.xml
new file mode 100644
index 000000000..fc6d87cff
--- /dev/null
+++ b/tex/context/interface/mkiv/i-sectionblock.xml
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definesectionblock" file="strc-sbe.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupsectionblock"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupsectionblock" file="strc-sbe.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="page">
+ <cd:inherit name="page"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="number">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setsectionblock" file="strc-sbe.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="bookmark">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="sectionblock" type="environment" file="strc-sbe.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="bookmark">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:inherit name="setupsectionblock"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="sectionblock" type="environment" generated="yes" variant="generated" file="strc-sbe.mkiv">
+ <cd:sequence>
+ <cd:variable value="sectionblock"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="bookmark">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:inherit name="setupsectionblock"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="sectionblockenvironment" type="environment" file="strc-sbe.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="frontmatter" type="environment" file="strc-sbe.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="bookmark">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:inherit name="setupsectionblock"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="bodymatter" type="environment" file="strc-sbe.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="bookmark">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:inherit name="setupsectionblock"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="appendices" type="environment" file="strc-sbe.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="bookmark">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:inherit name="setupsectionblock"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="backmatter" type="environment" file="strc-sbe.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="bookmark">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:inherit name="setupsectionblock"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-selector.xml b/tex/context/interface/mkiv/i-selector.xml
new file mode 100644
index 000000000..e593e9117
--- /dev/null
+++ b/tex/context/interface/mkiv/i-selector.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="defineselector" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupselector"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupselector" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="m">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="select" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:content optional="yes"/>
+ <cd:content optional="yes"/>
+ <cd:content optional="yes"/>
+ <cd:content optional="yes"/>
+ <cd:content optional="yes"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="directselect" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:content optional="yes"/>
+ <cd:content optional="yes"/>
+ <cd:content optional="yes"/>
+ <cd:content optional="yes"/>
+ <cd:content optional="yes"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-setups.xml b/tex/context/interface/mkiv/i-setups.xml
new file mode 100644
index 000000000..fec773f2e
--- /dev/null
+++ b/tex/context/interface/mkiv/i-setups.xml
@@ -0,0 +1,224 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setups" variant="1" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setups" variant="2" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setup" variant="1" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setup" variant="2" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="directsetup" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fastsetup" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="texsetup" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="luasetup" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="systemsetups" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetsetups" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showsetupsdefinition" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupwithargument" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fastsetupwithargument" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupwithargumentswapped" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fastsetupwithargumentswapped" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="usesetupsparameter" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="autosetups" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doprocesslocalsetups" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsesetups" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifsetupselse" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifsetups" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnotsetups" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="luasetups" type="environment" variant="1" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="grid"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="luasetups" type="environment" variant="2" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlsetups" type="environment" variant="1" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="grid"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlsetups" type="environment" variant="2" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rawsetups" type="environment" variant="1" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="grid"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rawsetups" type="environment" variant="2" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="localsetups" type="environment" variant="1" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="grid"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="localsetups" type="environment" variant="2" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setups" type="environment" variant="1" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="grid"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setups" type="environment" variant="2" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-name"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-shift.xml b/tex/context/interface/mkiv/i-shift.xml
new file mode 100644
index 000000000..d9b8bf7e4
--- /dev/null
+++ b/tex/context/interface/mkiv/i-shift.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="defineshift" file="node.rul.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupshift"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupshift" file="node-rul.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="continue">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="unit">
+ <cd:constant type="ex" default="yes"/>
+ <cd:constant type="em"/>
+ <cd:constant type="pt"/>
+ <cd:constant type="in"/>
+ <cd:constant type="cm"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="sp"/>
+ <cd:constant type="bp"/>
+ <cd:constant type="pc"/>
+ <cd:constant type="dd"/>
+ <cd:constant type="cc"/>
+ <cd:constant type="nc"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="dy">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:inherit name="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="shift" generated="yes" variant="generated" file="node-rul.mkiv">
+ <cd:sequence>
+ <cd:variable value="shift"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="shift" type="environment" file="node-rul.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="shiftup" file="node-rul.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="shiftdown" file="node-rul.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-sidebar.xml b/tex/context/interface/mkiv/i-sidebar.xml
new file mode 100644
index 000000000..8c00ce1ff
--- /dev/null
+++ b/tex/context/interface/mkiv/i-sidebar.xml
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definesidebar" file="anch-bar.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupsidebar"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupsidebar" file="anch-bar.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="rulethickness">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rulecolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="topoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="bottomoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="leftmargindistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="level">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="setupsidebars" file="anch-bar.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupsidebar"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="sidebar" type="environment" file="anch-bar.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupsidebar"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupmarginrule" file="anch-bar.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-number-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupsidebar"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupmarginrules" file="anch-bar.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-number-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupmarginrule"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="marginrule" type="environment" variant="1" file="anch-bar.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-number-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="marginrule" type="environment" variant="2" file="anch-bar.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupmarginrule"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-smash.xml b/tex/context/interface/mkiv/i-smash.xml
new file mode 100644
index 000000000..16c1046bd
--- /dev/null
+++ b/tex/context/interface/mkiv/i-smash.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="smashbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-box"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="smashboxed" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-box"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="hsmashbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-box"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="vsmashbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-box"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="hsmash" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="vsmash" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="hsmashed" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="vsmashed" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="smashedhbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="smashedvbox" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="smash" file="supp-box.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="w"/>
+ <cd:constant type="h" default="yes"/>
+ <cd:constant type="d" default="yes"/>
+ <cd:constant type="t"/>
+ <cd:constant type="b"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-sort.xml b/tex/context/interface/mkiv/i-sort.xml
new file mode 100644
index 000000000..5ecc83f18
--- /dev/null
+++ b/tex/context/interface/mkiv/i-sort.xml
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definesorting" file="strc-syn.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-singular"/>
+ <cd:resolve name="keyword-plural"/>
+ <cd:keywords optional="yes">
+ <cd:constant type="none"/>
+ <cd:constant type="cd:csname"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupsorting" file="strc-syn.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-singular-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="expansion">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ <cd:constant type="xml"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="first"/>
+ <cd:constant type="last"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="next">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:threearguments"/>
+ </cd:parameter>
+ <cd:parameter name="textcommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="synonymcommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="language">
+ <cd:resolve name="value-sortorder"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:resolve name="value-sortmethod"/>
+ </cd:parameter>
+ <cd:parameter name="criterium">
+ <cd:constant type="current"/>
+ <cd:constant type="previous"/>
+ <cd:constant type="local"/>
+ <cd:constant type="text"/>
+ <cd:constant type="all" default="yes"/>
+ <cd:constant type="cd:section"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="textstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="textcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="synonymstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="synonymcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="sorting" generated="yes" variant="generated" file="strc-syn.mkiv">
+ <cd:sequence>
+ <cd:variable value="sorting"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definesort" file="strc-syn.mkiv">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-singular"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placelistofsorts" generated="yes" variant="generated" file="strc-syn.mkiv">
+ <cd:sequence>
+ <cd:string value="placelistof"/>
+ <cd:variable value="sorts"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupsorting"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="completelistofsorts" generated="yes" variant="generated" file="strc-syn.mkiv">
+ <cd:sequence>
+ <cd:string value="completelistof"/>
+ <cd:variable value="sorts"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupsorting"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsecurrentsortingused" file="strc-syn.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetusedsortings" file="strc-syn.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-singular"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="registersort" file="strc-syn.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-singular"/>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placelistofsorts" file="strc-syn.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-singular"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupsorting"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="completelistofsorts" file="strc-syn.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-singular"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupsorting"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="logo" file="strc-syn.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placelistoflogos" file="strc-syn.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupsorting"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="completelistoflogos" file="strc-syn.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupsorting"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-soundtrack.xml b/tex/context/interface/mkiv/i-soundtrack.xml
new file mode 100644
index 000000000..b0f460352
--- /dev/null
+++ b/tex/context/interface/mkiv/i-soundtrack.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setupexternalsoundtracks" file="scrn-wid.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="option">
+ <cd:constant type="repeat"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="useexternalsoundtrack" file="scrn-wid.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="checksoundtrack" file="scrn-wid.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-spellchecking.xml b/tex/context/interface/mkiv/i-spellchecking.xml
new file mode 100644
index 000000000..615ba390b
--- /dev/null
+++ b/tex/context/interface/mkiv/i-spellchecking.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setupspellchecking" file="lang-wrd.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop" defult="yes"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ <cd:constant type="3"/>
+ </cd:parameter>
+ <cd:parameter name="list">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="loadspellchecklist" file="lang-wrd.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-startstop.xml b/tex/context/interface/mkiv/i-startstop.xml
new file mode 100644
index 000000000..e23485fd6
--- /dev/null
+++ b/tex/context/interface/mkiv/i-startstop.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definestartstop" file="core-sys.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupstartstop"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupstartstop" file="core-sys.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <!--
+ <cd:parameter name="commands">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ -->
+ <cd:parameter name="setups">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="startstop" type="environment" generated="yes" variant="generated" file="core-sys.mkiv">
+ <cd:sequence>
+ <cd:variable value="startstop"/>
+ </cd:sequence>
+ </cd:command>
+
+ <cd:command name="startstop" type="environment" file="core-sys.mkiv">
+ <cd:sequence>
+ <cd:string value="​"/><!-- value="zero width space -->
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="startstop" generated="yes" variant="generated" file="core-sys.mkiv">
+ <cd:sequence>
+ <cd:variable value="startstop"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-stream.xml b/tex/context/interface/mkiv/i-stream.xml
new file mode 100644
index 000000000..40ddc89de
--- /dev/null
+++ b/tex/context/interface/mkiv/i-stream.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="currentoutputstream" file="page-str.mkiv"/>
+
+ <cd:command name="ifinoutputstream" file="page-str.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-true"/>
+ <cd:delimiter name="else"/>
+ <cd:resolve name="string-false"/>
+ <cd:delimiter name="fi"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="enableoutputstream" file="page-str.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="disableoutputstream" file="page-str.mkiv"/>
+
+ <cd:command name="outputstream" type="environment" file="page-str.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="flushoutputstream" file="page-str.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="outputstreambox" file="page-str.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="outputstreamcopy" file="page-str.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="outputstreamunvbox" file="page-str.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="outputstreamunvcopy" file="page-str.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="synchronizeoutputstreams" file="page-str.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pushoutputstream" file="page-str.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-string.xml b/tex/context/interface/mkiv/i-string.xml
new file mode 100644
index 000000000..b3efe552b
--- /dev/null
+++ b/tex/context/interface/mkiv/i-string.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="wdofstring" file="blob-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="htofstring" file="blob-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dpofstring" file="blob-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="hdofstring" file="blob-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="htdpofstring" file="blob-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="widthofstring" file="blob-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="heightofstring" file="blob-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="depthofstring" file="blob-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="heightanddepthofstring" file="blob-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setwidthof" file="blob-ini.mkiv">
+ <cd:arguments>
+ <cd:text/>
+ <cd:delimiter name="to"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-strut.xml b/tex/context/interface/mkiv/i-strut.xml
new file mode 100644
index 000000000..1fd12a3bb
--- /dev/null
+++ b/tex/context/interface/mkiv/i-strut.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="strutdp" file="supp-box.mkiv"/>
+
+ <cd:command name="strutht" file="supp-box.mkiv"/>
+
+ <cd:command name="strutwd" file="supp-box.mkiv"/>
+
+ <cd:command name="struthtdp" file="supp-box.mkiv"/>
+
+ <cd:command name="setupstruts" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:resolve name="value-strut"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="synchronizestrut" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:resolve name="value-strut"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="strut" file="spac-ver.mkiv"/>
+
+ <cd:command name="setstrut" file="spac-ver.mkiv"/>
+
+ <cd:command name="setcharstrut" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setfontstrut" file="spac-ver.mkiv"/>
+
+ <cd:command name="setcapstrut" file="spac-ver.mkiv"/>
+
+ <cd:command name="setnostrut" file="spac-ver.mkiv"/>
+
+ <cd:command name="showstruts" file="spac-ver.mkiv"/>
+
+ <cd:command name="showcolorstruts" file="spac-ver.mkiv"/>
+
+ <cd:command name="strut" type="environment" begin="beg" end="end" file="spac-ver.mkiv"/>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-symbol.xml b/tex/context/interface/mkiv/i-symbol.xml
new file mode 100644
index 000000000..33d5b4707
--- /dev/null
+++ b/tex/context/interface/mkiv/i-symbol.xml
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definesymbol" file="symb-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelseinsymbolset" file="symb-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifinsymbolsetelse" file="symb-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifinsymbolset" file="symb-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsesymbolset" file="symb-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifsymbolsetelse" file="symb-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="symbol" variant="1" file="symb-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="symbol" variant="2" file="symb-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="directsymbol" file="symb-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definefiguresymbol" file="symb-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="externalfigure"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="figuresymbol" file="symb-ini.mkiv">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="externalfigure"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsesymboldefined" file="symb-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifsymboldefinedelse" file="symb-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="symbolset" type="environment" file="symb-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupsymbolset" file="symb-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetsymbolset" file="symb-ini.mkiv"/>
+
+ <cd:command name="usesymbols" file="symb-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showsymbolset" file="symb-run.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-synonym.xml b/tex/context/interface/mkiv/i-synonym.xml
new file mode 100644
index 000000000..c64c1c759
--- /dev/null
+++ b/tex/context/interface/mkiv/i-synonym.xml
@@ -0,0 +1,212 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definesynonyms" file="strc-syn.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-singular"/>
+ <cd:resolve name="keyword-plural"/>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:csname"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:csname"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupsynonyms" file="strc-syn.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-singular-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="expansion">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ <cd:constant type="xml"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="first"/>
+ <cd:constant type="last"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="next">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:threearguments"/>
+ </cd:parameter>
+ <cd:parameter name="textcommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="synonymcommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="language">
+ <cd:resolve name="value-sortorder"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:resolve name="value-sortmethod"/>
+ </cd:parameter>
+ <cd:parameter name="criterium">
+ <cd:constant type="current"/>
+ <cd:constant type="previous"/>
+ <cd:constant type="local"/>
+ <cd:constant type="text"/>
+ <cd:constant type="all" default="yes"/>
+ <cd:constant type="cd:section"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="textstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="textcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="synonymstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="synonymcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="synonym" generated="yes" variant="generated" file="strc-syn.mkiv">
+ <cd:sequence>
+ <cd:variable value="synonym"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:resolve name="argument-text"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definesynonym" file="strc-syn.mkiv">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-singular"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:resolve name="argument-text"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placelistofsynonyms" generated="yes" variant="generated" file="strc-syn.mkiv">
+ <cd:sequence>
+ <cd:string value="placelistof"/>
+ <cd:variable value="synonyms"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupsynonyms"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="completelistofsynonyms" generated="yes" variant="generated" file="strc-syn.mkiv">
+ <cd:sequence>
+ <cd:string value="completelistof"/>
+ <cd:variable value="synonyms"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupsynonyms"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="registersynonym" file="strc-syn.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-singular"/>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsecurrentsynonymused" file="strc-syn.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsecurrentsynonymshown" file="strc-syn.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetusedsynonyms" file="strc-syn.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-singular"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetshownsynonyms" file="strc-syn.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-singular"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placelistofsynonyms" file="strc-syn.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-singular"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupsynonyms"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="completelistofsynonyms" file="strc-syn.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-singular"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupsynonyms"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="abbreviation" file="strc-syn.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:resolve name="argument-text"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="infull" file="strc-syn.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="placelistofabbreviations" file="strc-syn.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupsynonyms"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="completelistofabbreviations" file="strc-syn.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupsynonyms"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-system.xml b/tex/context/interface/mkiv/i-system.xml
new file mode 100644
index 000000000..e1404754e
--- /dev/null
+++ b/tex/context/interface/mkiv/i-system.xml
@@ -0,0 +1,3534 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="expanded" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="expanded" type="environment" file="syst-aux.mkiv"/>
+
+ <cd:command name="gobbleoneargument" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="gobbletwoarguments" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="gobblethreearguments" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="gobblefourarguments" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="gobblefivearguments" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="gobblesixarguments" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="gobblesevenarguments" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="gobbleeightarguments" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="gobbleninearguments" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="gobbletenarguments" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="gobbleoneoptional" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="gobbletwooptionals" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-dummy"/>
+ <cd:resolve name="keyword-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="gobblethreeoptionals" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-dummy"/>
+ <cd:resolve name="keyword-dummy"/>
+ <cd:resolve name="keyword-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="gobblefouroptionals" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-dummy"/>
+ <cd:resolve name="keyword-dummy"/>
+ <cd:resolve name="keyword-dummy"/>
+ <cd:resolve name="keyword-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="gobblefiveoptionals" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-dummy"/>
+ <cd:resolve name="keyword-dummy"/>
+ <cd:resolve name="keyword-dummy"/>
+ <cd:resolve name="keyword-dummy"/>
+ <cd:resolve name="keyword-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="donothing" file="syst-aux.mkiv"/>
+
+ <cd:command name="doifelsenextchar" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-character"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnextcharelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-character"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsenextoptional" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnextoptionalelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsenextoptionalcs" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnextoptionalcselse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsenextbgroup" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnextbgroupelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsenextbgroupcs" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnextbgroupcselse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsenextparenthesis" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnextparenthesiselse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsefastoptionalcheck" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doiffastoptionalcheckelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsefastoptionalcheckcs" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doiffastoptionalcheckcselse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="assumelongusagecs" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setvalue" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setgvalue" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setevalue" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setxvalue" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getvalue" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="letvalue" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="letgvalue" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetvalue" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="undefinevalue" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ignorevalue" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuvalue" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuevalue" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setugvalue" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuxvalue" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getuvalue" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelseundefined" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifundefinedelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsedefined" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifdefinedelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifundefined" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifdefined" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="letbeundefined" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="localundefine" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="globalundefine" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsealldefined" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name-list"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifalldefinedelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name-list"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doif" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnot" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelseempty" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifemptyelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifempty" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnotempty" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelseinset" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:resolve name="argument-content-list"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifinsetelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:resolve name="argument-content-list"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifinset" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:resolve name="argument-content-list"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnotinset" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:resolve name="argument-content-list"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsecommon" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-content-list"/>
+ <cd:resolve name="argument-content-list"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifcommonelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-content-list"/>
+ <cd:resolve name="argument-content-list"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifcommon" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-content-list"/>
+ <cd:resolve name="argument-content-list"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnotcommon" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-content-list"/>
+ <cd:resolve name="argument-content-list"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="processcommalist" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-command-list"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="quitcommalist" file="syst-aux.mkiv"/>
+
+ <cd:command name="quitprevcommalist" file="syst-aux.mkiv"/>
+
+ <cd:command name="processcommacommand" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-command-list"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="processcommalistwithparameters" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-command-list"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="processcommalist" type="environment" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-command-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="processcommacommand" type="environment" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-command-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="currentcommalistitem" file="syst-aux.mkiv"/>
+
+ <cd:command name="processaction" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-command"/>
+ <cd:apply list="yes"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="processfirstactioninset" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-command"/>
+ <cd:apply list="yes"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="processallactionsinset" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-command"/>
+ <cd:apply list="yes"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="commalistelement" file="syst-aux.mkiv"/>
+
+ <cd:command name="firstcharacter" file="syst-aux.mkiv"/>
+
+ <cd:command name="remainingcharacters" file="syst-aux.mkiv"/>
+
+ <cd:command name="getfirstcharacter" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsefirstchar" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doiffirstcharelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="thefirstcharacter" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="theremainingcharacters" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelseinstring" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifinstringelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifinstring" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnotinstring" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelseincsname" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-csname"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifincsnameelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-csname"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsenumber" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnumberelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnumber" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnotnumber" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="percentdimen" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="cd:csname"/>
+ </cd:keywords>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="%" prefix="cd:number" method="none"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setpercentdimen" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="cd:csname"/>
+ </cd:keywords>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="%" prefix="cd:number" method="none"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="makerawcommalist" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-command-list"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rawprocesscommalist" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-command-list"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rawprocesscommacommand" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-command-list"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rawdoifelseinset" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:resolve name="argument-content-list"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rawdoifinsetelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:resolve name="argument-content-list"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rawdoifinset" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ <cd:resolve name="argument-content-list"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rawprocessaction" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-command"/>
+ <cd:apply list="yes"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="currentvalue" file="syst-aux.mkiv"/>
+
+ <cd:command name="getparameters" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-text"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="geteparameters" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-text"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getgparameters" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-text"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getxparameters" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-text"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="forgetparameters" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-text"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getexpandedparameters" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-text"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doassign" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-text"/>
+ <cd:resolve name="assignment-userdata"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doeassign" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-text"/>
+ <cd:resolve name="assignment-userdata"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="undoassign" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-text"/>
+ <cd:resolve name="assignment-userdata"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doassignempty" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-text"/>
+ <cd:resolve name="assignment-userdata"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="processassignmentlist" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-userdata-list"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="processassignmentcommand" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-userdata-list"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="processassignmentlist" type="environment" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="processassignmentcommand" type="environment" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="currentassignmentlistkey" file="syst-aux.mkiv"/>
+
+ <cd:command name="currentassignmentlistvalue" file="syst-aux.mkiv"/>
+
+ <cd:command name="getemptyparameters" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-text"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="copyparameters" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-text"/>
+ <cd:resolve name="keyword-text"/>
+ <cd:resolve name="keyword-key-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="checkparameters" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ifparameters" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-true"/>
+ <cd:delimiter name="else"/>
+ <cd:resolve name="string-false"/>
+ <cd:delimiter name="fi"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="commalistsize" file="syst-aux.mkiv"/>
+
+ <cd:command name="getcommalistsize" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-command-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getcommacommandsize" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-command-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getfromcommalist" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-command-list"/>
+ <cd:resolve name="keyword-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getfromcommacommand" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-command-list"/>
+ <cd:resolve name="keyword-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dogetcommacommandelement" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-number"/>
+ <cd:delimiter name="from"/>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="to"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dosingleempty" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="keyword-dummy-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dodoubleempty" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="keyword-dummy-optional"/>
+ <cd:resolve name="keyword-dummy-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dotripleempty" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="keyword-dummy-optional"/>
+ <cd:resolve name="keyword-dummy-optional"/>
+ <cd:resolve name="keyword-dummy-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doquadrupleempty" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="keyword-dummy-optional"/>
+ <cd:resolve name="keyword-dummy-optional"/>
+ <cd:resolve name="keyword-dummy-optional"/>
+ <cd:resolve name="keyword-dummy-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doquintupleempty" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="keyword-dummy-optional"/>
+ <cd:resolve name="keyword-dummy-optional"/>
+ <cd:resolve name="keyword-dummy-optional"/>
+ <cd:resolve name="keyword-dummy-optional"/>
+ <cd:resolve name="keyword-dummy-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dosixtupleempty" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="keyword-dummy-optional"/>
+ <cd:resolve name="keyword-dummy-optional"/>
+ <cd:resolve name="keyword-dummy-optional"/>
+ <cd:resolve name="keyword-dummy-optional"/>
+ <cd:resolve name="keyword-dummy-optional"/>
+ <cd:resolve name="keyword-dummy-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doseventupleempty" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="keyword-dummy-optional"/>
+ <cd:resolve name="keyword-dummy-optional"/>
+ <cd:resolve name="keyword-dummy-optional"/>
+ <cd:resolve name="keyword-dummy-optional"/>
+ <cd:resolve name="keyword-dummy-optional"/>
+ <cd:resolve name="keyword-dummy-optional"/>
+ <cd:resolve name="keyword-dummy-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dosingleargument" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="keyword-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dodoubleargument" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="keyword-dummy"/>
+ <cd:resolve name="keyword-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dotripleargument" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="keyword-dummy"/>
+ <cd:resolve name="keyword-dummy"/>
+ <cd:resolve name="keyword-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doquadrupleargument" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="keyword-dummy"/>
+ <cd:resolve name="keyword-dummy"/>
+ <cd:resolve name="keyword-dummy"/>
+ <cd:resolve name="keyword-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doquintupleargument" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="keyword-dummy"/>
+ <cd:resolve name="keyword-dummy"/>
+ <cd:resolve name="keyword-dummy"/>
+ <cd:resolve name="keyword-dummy"/>
+ <cd:resolve name="keyword-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dosixtupleargument" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="keyword-dummy"/>
+ <cd:resolve name="keyword-dummy"/>
+ <cd:resolve name="keyword-dummy"/>
+ <cd:resolve name="keyword-dummy"/>
+ <cd:resolve name="keyword-dummy"/>
+ <cd:resolve name="keyword-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doseventupleargument" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="keyword-dummy"/>
+ <cd:resolve name="keyword-dummy"/>
+ <cd:resolve name="keyword-dummy"/>
+ <cd:resolve name="keyword-dummy"/>
+ <cd:resolve name="keyword-dummy"/>
+ <cd:resolve name="keyword-dummy"/>
+ <cd:resolve name="keyword-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="strippedcsname" variant="1" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="strippedcsname" variant="2" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="none">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="complexorsimple" variant="1" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="complexorsimple" variant="2" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:csname"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="complexorsimpleempty" variant="1" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="complexorsimpleempty" variant="2" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:csname"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definecomplexorsimple" variant="1" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definecomplexorsimple" variant="2" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:csname"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definecomplexorsimpleempty" variant="1" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definecomplexorsimpleempty" variant="2" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:csname"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="permitspacesbetweengroups" file="syst-aux.mkiv"/>
+
+ <cd:command name="dontpermitspacesbetweengroups" file="syst-aux.mkiv"/>
+
+ <cd:command name="dosinglegroupempty" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-dummy-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dodoublegroupempty" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-dummy-optional"/>
+ <cd:resolve name="argument-dummy-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dotriplegroupempty" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-dummy-optional"/>
+ <cd:resolve name="argument-dummy-optional"/>
+ <cd:resolve name="argument-dummy-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doquadruplegroupempty" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-dummy-optional"/>
+ <cd:resolve name="argument-dummy-optional"/>
+ <cd:resolve name="argument-dummy-optional"/>
+ <cd:resolve name="argument-dummy-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doquintuplegroupempty" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-dummy-optional"/>
+ <cd:resolve name="argument-dummy-optional"/>
+ <cd:resolve name="argument-dummy-optional"/>
+ <cd:resolve name="argument-dummy-optional"/>
+ <cd:resolve name="argument-dummy-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="firstofoneargument" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="firstoftwoarguments" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="secondoftwoarguments" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="firstofthreearguments" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="secondofthreearguments" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="thirdofthreearguments" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="firstoffourarguments" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="secondoffourarguments" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="thirdoffourarguments" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fourthoffourarguments" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="firstoffivearguments" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="secondoffivearguments" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="thirdoffivearguments" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fourthoffivearguments" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fifthoffivearguments" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="firstofsixarguments" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="secondofsixarguments" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="thirdofsixarguments" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fourthofsixarguments" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fifthofsixarguments" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="sixthofsixarguments" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="firstofoneunexpanded" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="firstoftwounexpanded" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="secondoftwounexpanded" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="firstofthreeunexpanded" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="secondofthreeunexpanded" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="thirdofthreeunexpanded" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ <cd:resolve name="argument-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="letempty" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="globalletempty" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="letvalueempty" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="letgvalueempty" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="letvaluerelax" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="letgvalurelax" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="relaxvalueifundefined" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="rawgetparameters" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-text"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="texdefinition" type="environment" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="none" optional="yes">
+ <cd:constant type="spaces"/>
+ <cd:constant type="nospaces"/>
+ </cd:keywords>
+ <cd:keywords delimiters="none" optional="yes">
+ <cd:constant type="global"/>
+ </cd:keywords>
+ <cd:keywords delimiters="none" optional="yes">
+ <cd:constant type="unexpanded"/>
+ </cd:keywords>
+ <cd:keywords delimiters="none" optional="yes">
+ <cd:constant type="expanded"/>
+ </cd:keywords>
+ <cd:keywords delimiters="none">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords delimiters="none" optional="yes">
+ <cd:constant type="cd:template"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="texdefinition" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="texcode" type="environment" file="syst-aux.mkiv"/>
+
+ <cd:command name="newcounter" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fastincrement" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fastdecrement" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="increment" variant="1" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="increment" variant="2" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="parentheses" list="yes">
+ <cd:constant type="cd:csname"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="increment" variant="1" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="increment" variant="2" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="parentheses" list="yes">
+ <cd:constant type="cd:csname"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="decrement" variant="1" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="decrement" variant="2" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="parentheses" list="yes">
+ <cd:constant type="cd:csname"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="incrementvalue" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="decrementvalue" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="newsignal" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="checkedstrippedcsname" variant="1" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="checkedstrippedcsname" variant="2" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="savenormalmeaning" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="recursedepth" file="syst-aux.mkiv"/>
+
+ <cd:command name="recurselevel" file="syst-aux.mkiv"/>
+
+ <cd:command name="dostepwiserecurse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-number"/>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:number" prefix="cd:sign" method="none"/>
+ </cd:keywords>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dorecurse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doexpandedrecurse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dowith" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command-list"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doloop" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="exitloop" file="syst-aux.mkiv"/>
+
+ <cd:command name="exitloopnow" file="syst-aux.mkiv"/>
+
+ <cd:command name="dorecurse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doloopoverlist" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text-list"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="recursestring" file="syst-aux.mkiv"/>
+
+ <cd:command name="newevery" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="EveryPar" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="EveryLine" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="forgeteverypar" file="syst-aux.mkiv"/>
+
+ <cd:command name="convertvalue" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-name"/>
+ <cd:delimiter name="to"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="defconvertedvalue" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelseassignment" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifassignmentelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="docheckassignment" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ifassignment" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-true"/>
+ <cd:delimiter name="else"/>
+ <cd:resolve name="string-false"/>
+ <cd:delimiter name="fi"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="convertargument" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="to"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="convertcommand" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:delimiter name="to"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="defconvertedargument" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="defconvertedcommand" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="edefconvertedargument" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="gdefconvertedargument" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="gdefconvertedcommand" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xdefconvertedargument" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showvalue" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsemeaning" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:csname/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifmeaningelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:csname/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsesamestring" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifsamestringelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifsamestring" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnotsamestring" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ConvertToConstant" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ConvertConstantAfter" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="assignifempty" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="grabuntil" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="processbetween" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="gobbleuntil" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="gobbleuntilrelax" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-content"/>
+ <cd:delimiter name="relax"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="processuntil" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="groupedcommand" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="simplegroupedcommand" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pickupgroupedcommand" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="BeforePar" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="AfterPar" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="GetPar" file="syst-aux.mkiv"/>
+
+ <cd:command name="GotoPar" file="syst-aux.mkiv"/>
+
+ <cd:command name="dowithpargument" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dowithwargument" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dorepeatwithcommand" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:text" prefix="cd:number" method="factor"/>
+ </cd:keywords>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsestringinstring" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifstringinstringelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="appendtoks" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-command"/>
+ <cd:delimiter name="to"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="prependtoks" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-command"/>
+ <cd:delimiter name="to"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="appendtoksonce" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-command"/>
+ <cd:delimiter name="to"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="prependtoksonce" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-command"/>
+ <cd:delimiter name="to"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelseintoks" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifintokselse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="collecting" type="environment" file="syst-aux.mkiv"/>
+
+ <cd:command name="collect" type="environment" file="syst-aux.mkiv"/>
+
+ <cd:command name="expandedcollect" type="environment" file="syst-aux.mkiv"/>
+
+ <cd:command name="collect" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="collectexpanded" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="removetoks" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-command"/>
+ <cd:delimiter name="from"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="appendetoks" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-command"/>
+ <cd:delimiter name="to"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="prependetoks" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-command"/>
+ <cd:delimiter name="to"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="flushtoks" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dotoks" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="beforesplitstring" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="at"/>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="to"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="aftersplitstring" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="at"/>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="to"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="splitstring" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="at"/>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="to"/>
+ <cd:csname/>
+ <cd:delimiter name="and"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="greedysplitstring" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="at"/>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="to"/>
+ <cd:csname/>
+ <cd:delimiter name="and"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="beforetestandsplitstring" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="at"/>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="to"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="aftertestandsplitstring" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="at"/>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="to"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="testandsplitstring" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="at"/>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="to"/>
+ <cd:csname/>
+ <cd:delimiter name="and"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="removesubstring" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="from"/>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="to"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="appendtocommalist" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="prependtocommalist" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="addtocommalist" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pretocommalist" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="robustdoifelseinset" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-content"/>
+ <cd:resolve name="argument-content-list"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="robustdoifinsetelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-content"/>
+ <cd:resolve name="argument-content-list"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="robustaddtocommalist" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="robustpretocommalist" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xsplitstring" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="removefromcommalist" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="substituteincommalist" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="replaceincommalist" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="globalprocesscommalist" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="withoutpt" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="PtToCm" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dimensiontocount" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dimension"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="numberofpoints" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="swapdimens" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="swapcounts" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="swapmacros" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="globalswapdimens" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="globalswapcounts" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="globalswapmacros" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="globalpushmacro" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="localpushmacro" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="globalpopmacro" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="localpopmacro" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="pushmacro" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="popmacro" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="localhsize" file="syst-aux.mkiv"/>
+
+ <cd:command name="setlocalhsize" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:dimension" prefix="cd:sign" method="none"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="availablehsize" file="syst-aux.mkiv"/>
+
+ <cd:command name="distributedhsize" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="hsizefraction" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifvalue" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnotvalue" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsevalue" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifvalueelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnothing" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifsomething" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsenothing" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnothingelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsesomething" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifsomethingelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifvaluenothing" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifvaluesomething" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsevaluenothing" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifvaluenothingelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelseemptyvalue" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifemptyvalueelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifemptyvalue" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnotemptyvalue" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelseallcommon" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-content-list"/>
+ <cd:resolve name="argument-content-list"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifallcommonelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-content-list"/>
+ <cd:resolve name="argument-content-list"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifallcommon" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-content-list"/>
+ <cd:resolve name="argument-content-list"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnotallcommon" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-content-list"/>
+ <cd:resolve name="argument-content-list"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dodoubleemptywithset" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="keyword-dummy-list-optional"/>
+ <cd:resolve name="keyword-dummy-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dotripleemptywithset" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="keyword-dummy-list-optional"/>
+ <cd:resolve name="keyword-dummy-optional"/>
+ <cd:resolve name="keyword-dummy-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dodoubleargumentwithset" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="keyword-dummy-list"/>
+ <cd:resolve name="keyword-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dotripleargumentwithset" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="keyword-dummy-list"/>
+ <cd:resolve name="keyword-dummy"/>
+ <cd:resolve name="keyword-dummy"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="stripcharacter" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-character"/>
+ <cd:delimiter name="from"/>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="to"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="stripspaces" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:delimiter name="from"/>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="to"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="unspacestring" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="to"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="executeifdefined" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsesomespace" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifsomespaceelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="processseparatedlist" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-text"/>
+ <cd:resolve name="keyword-text"/>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:csname"/>
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="processlist" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-character"/>
+ <cd:resolve name="argument-character"/>
+ <cd:resolve name="argument-text"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="processassignlist" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-text-list"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="untexargument" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:delimiter name="to"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="untexcommand" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-csname"/>
+ <cd:delimiter name="to"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="PointsToBigPoints" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dimension"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="PointsToWholeBigPoints" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dimension"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ScaledPointsToBigPoints" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dimension"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ScaledPointsToWholeBigPoints" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dimension"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="PointsToReal" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dimension"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dontleavehmode" file="syst-aux.mkiv"/>
+
+ <cd:command name="utfupper" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="utflower" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="uppercasestring" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="to"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="lowercasestring" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="to"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="counttoken" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="in"/>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="to"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="counttokens" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="to"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="splitofftokens" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="from"/>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="to"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="handletokens" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="with"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="settrialtypesetting" file="syst-aux.mkiv"/>
+
+ <cd:command name="resettrialtypesetting" file="syst-aux.mkiv"/>
+
+ <cd:command name="iftrialtypesetting" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-true"/>
+ <cd:delimiter name="else"/>
+ <cd:resolve name="string-false"/>
+ <cd:delimiter name="fi"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="integerrounding" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="onedigitrounding" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="twodigitrounding" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="threedigitrounding" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="processcontent" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dogobblesingleempty" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-dummy-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dogobbledoubleempty" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-dummy-optional"/>
+ <cd:resolve name="keyword-dummy-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="gobblesingleempty" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-dummy-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="gobbledoubleempty" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-dummy-optional"/>
+ <cd:resolve name="keyword-dummy-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsesometoks" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifsometokselse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifsometoks" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifemptytoks" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="strictinspectnextcharacter" type="environment" file="syst-aux.mkiv"/>
+
+ <cd:command name="strictdoifelsenextoptional" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="strictdoifnextoptionalelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="gobblespacetokens" file="syst-aux.mkiv"/>
+
+ <cd:command name="verbatimstring" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="lastdigit" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="lasttwodigits" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="serializedcommalist" file="syst-aux.mkiv"/>
+
+ <cd:command name="serializecommalist" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-command-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="purenumber" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="filterfromvalue" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="filterfromnext" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-content-optional"/>
+ <cd:resolve name="argument-content-optional"/>
+ <cd:resolve name="argument-content-optional"/>
+ <cd:resolve name="argument-content-optional"/>
+ <cd:resolve name="argument-content-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definemeasure" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="freezemeasure" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setmeasure" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setgmeasure" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setemeasure" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setxmeasure" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="measure" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="measured" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dividedsize" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsedimension" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifdimensionelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsedimenstring" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifdimenstringelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="compresult" file="syst-aux.mkiv"/>
+
+ <cd:command name="comparedimension" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="comparedimensioneps" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="letcscsname" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:delimiter name="csname"/>
+ <cd:resolve name="string-name"/>
+ <cd:delimiter name="endcsname"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="letcsnamecs" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:delimiter name="csname"/>
+ <cd:resolve name="string-name"/>
+ <cd:delimiter name="endcsname"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="letcsnamecsname" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:delimiter name="csname"/>
+ <cd:resolve name="string-name"/>
+ <cd:delimiter name="endcsname"/>
+ <cd:delimiter name="csname"/>
+ <cd:resolve name="string-name"/>
+ <cd:delimiter name="endcsname"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="addvalue" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="unspaced" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="unspaceargument" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-text"/>
+ <cd:delimiter name="to"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="unspaceafter" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsehasspace" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifhasspaceelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setflag" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetflag" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="flag" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelseflagged" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifflaggedelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnotflagged" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="inheritparameter" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-text"/>
+ <cd:resolve name="keyword-text"/>
+ <cd:resolve name="keyword-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsenonzeropositive" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnonzeropositiveelse" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getrawparameters" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-text"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getraweparameters" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-text"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getrawgparameters" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-text"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getrawxparameters" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-text"/>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="unprotected" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-content"/>
+ <cd:delimiter name="par"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resettimer" file="syst-aux.mkiv"/>
+
+ <cd:command name="elapsedtime" file="syst-aux.mkiv"/>
+
+ <cd:command name="elapsedseconds" file="syst-aux.mkiv"/>
+
+ <cd:command name="currentfeaturetest" file="syst-aux.mkiv"/>
+
+ <cd:command name="testfeature" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-content"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showtimer" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="testfeatureonce" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-content"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="freezedimenmacro" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="negated" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="assigndimen" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="appendvalue" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="appendgvalue" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="prependvalue" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="prependgvalue" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="processranges" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="cd:number" prefix="cd:number" method="range"/>
+ </cd:keywords>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dowithrange" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="braces" list="yes">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="cd:number" prefix="cd:number" method="range"/>
+ </cd:keywords>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ignoreimplicitspaces" file="syst-aux.mkiv"/>
+
+ <cd:command name="nointerference" type="environment" file="syst-aux.mkiv"/>
+
+ <cd:command name="expandcheckedcsname" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-key"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="docheckedpair" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="constantnumber" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="constantnumberargument" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="constantdimen" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="constantdimenargument" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="constantemptyargument" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getsubstring" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="converteddimen" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dimension"/>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="ex"/>
+ <cd:constant type="em"/>
+ <cd:constant type="pt"/>
+ <cd:constant type="in"/>
+ <cd:constant type="cm"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="sp"/>
+ <cd:constant type="bp"/>
+ <cd:constant type="pc"/>
+ <cd:constant type="dd"/>
+ <cd:constant type="cc"/>
+ <cd:constant type="nc"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ntimes" file="syst-aux.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-systemlog.xml b/tex/context/interface/mkiv/i-systemlog.xml
new file mode 100644
index 000000000..3f2967912
--- /dev/null
+++ b/tex/context/interface/mkiv/i-systemlog.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="systemlog" file="core-sys.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="systemlogfirst" file="core-sys.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="systemloglast" file="core-sys.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-table.xml b/tex/context/interface/mkiv/i-table.xml
new file mode 100644
index 000000000..649b198ae
--- /dev/null
+++ b/tex/context/interface/mkiv/i-table.xml
@@ -0,0 +1,407 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="table" type="environment" variant="1" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:template/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptables"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="table" type="environment" variant="2" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptables"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definetabletemplate" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:template/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:resolve name="keyword-name-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tables" type="environment" variant="1" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:template/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tables" type="environment" variant="2" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tablehead" type="environment" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tabletail" type="environment" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuptables" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="text">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="split">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="repeat"/>
+ <cd:constant type="auto" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="frame">
+ <cd:constant type="on"/>
+ <cd:constant type="off"/>
+ </cd:parameter>
+ <cd:parameter name="NL">
+ <cd:inherit name="blank"/>
+ </cd:parameter>
+ <cd:parameter name="VL">
+ <cd:constant type="small"/>
+ <cd:constant type="medium" default="yes"/>
+ <cd:constant type="big"/>
+ <cd:constant type="none"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="HL">
+ <cd:constant type="small"/>
+ <cd:constant type="medium" default="yes"/>
+ <cd:constant type="big"/>
+ <cd:constant type="none"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="small"/>
+ <cd:constant type="medium" default="yes"/>
+ <cd:constant type="big"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:constant type="left"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="right" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="commands">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="bodyfont">
+ <cd:inherit name="setupbodyfont"/>
+ </cd:parameter>
+ <cd:parameter name="rulethickness">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="strut"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="depth">
+ <cd:constant type="strut"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="ReFormat" scope="table" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-template"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="enlarge" scope="table" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="Enlarge" scope="table" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="use" scope="table" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="Use" scope="table" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="keyword-template"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="JustLeft" scope="table" file="tabl-tab.mkiv"/>
+
+ <cd:command name="JustCenter" scope="table" file="tabl-tab.mkiv"/>
+
+ <cd:command name="JustRight" scope="table" file="tabl-tab.mkiv"/>
+
+ <cd:command name="Smash" scope="table" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="Raise" variant="1" scope="table" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="parentheses" optional="yes">
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="Raise" variant="2" scope="table" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-number-optional"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="Lower" variant="1" scope="table" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="parentheses" optional="yes">
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="Lower" variant="2" scope="table" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-number-optional"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="BackSpace" variant="1" scope="table" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="parentheses" optional="yes">
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="BackSpace" variant="2" scope="table" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-number-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="Vspace" variant="1" scope="table" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="parentheses" optional="yes">
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="Vspace" variant="2" scope="table" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-number-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="OpenUp" scope="table" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="TableLeft" scope="table" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="TableCenter" scope="table" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="TableRight" scope="table" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="SR" scope="table" file="tabl-tab.mkiv"/>
+
+ <cd:command name="FR" scope="table" file="tabl-tab.mkiv"/>
+
+ <cd:command name="MR" scope="table" file="tabl-tab.mkiv"/>
+
+ <cd:command name="LR" scope="table" file="tabl-tab.mkiv"/>
+
+ <cd:command name="AR" scope="table" file="tabl-tab.mkiv"/>
+
+ <cd:command name="VL" scope="table" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="cd:color"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="VC" scope="table" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="cd:color"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="HL" scope="table" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="cd:color"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="HC" scope="table" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="cd:color"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="VS" scope="table" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="cd:color"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="VD" scope="table" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="cd:color"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="VT" scope="table" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="cd:color"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="VN" scope="table" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="cd:color"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="TB" scope="table" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:inherit name="blank"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="NL" scope="table" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:inherit name="blank"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="NR" scope="table" file="tabl-tab.mkiv"/>
+
+ <cd:command name="NC" scope="table" file="tabl-tab.mkiv"/>
+
+ <cd:command name="FC" scope="table" file="tabl-tab.mkiv"/>
+
+ <cd:command name="MC" scope="table" file="tabl-tab.mkiv"/>
+
+ <cd:command name="LC" scope="table" file="tabl-tab.mkiv"/>
+
+ <cd:command name="DL" scope="table" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="cd:color"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="DC" scope="table" file="tabl-tab.mkiv"/>
+
+ <cd:command name="DV" scope="table" file="tabl-tab.mkiv"/>
+
+ <cd:command name="DR" scope="table" file="tabl-tab.mkiv"/>
+
+ <cd:command name="TWO" scope="table" file="tabl-tab.mkiv"/>
+
+ <cd:command name="THREE" scope="table" file="tabl-tab.mkiv"/>
+
+ <cd:command name="FOUR" scope="table" file="tabl-tab.mkiv"/>
+
+ <cd:command name="FIVE" scope="table" file="tabl-tab.mkiv"/>
+
+ <cd:command name="SIX" scope="table" file="tabl-tab.mkiv"/>
+
+ <cd:command name="SPAN" scope="table" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="REF" scope="table" file="tabl-tab.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-template"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-tabulation.xml b/tex/context/interface/mkiv/i-tabulation.xml
new file mode 100644
index 000000000..1e6dfc1fc
--- /dev/null
+++ b/tex/context/interface/mkiv/i-tabulation.xml
@@ -0,0 +1,270 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definetabulation" file="tabl-tbl.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptabulation"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuptabulation" file="tabl-tbl.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="format">
+ <cd:constant type="cd:template"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="small"/>
+ <cd:constant type="medium" default="yes"/>
+ <cd:constant type="big"/>
+ <cd:constant type="none"/>
+ <cd:constant type="blank"/>
+ <cd:constant type="depth" default="yes"/>
+ <cd:constant type="grid"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:constant type="left"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="right"/>
+ <cd:constant type="dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rule">
+ <cd:constant type="line"/>
+ <cd:constant type="normal" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="rulecolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="rulethickness">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="bodyfont">
+ <cd:inherit name="setupbodyfont"/>
+ </cd:parameter>
+ <cd:parameter name="indenting">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="split">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="repeat"/>
+ <cd:constant type="auto" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="unit">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="margin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="inner">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="EQ">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="header">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="repeat"/>
+ <cd:constant type="text"/>
+ </cd:parameter>
+ <cd:parameter name="frame">
+ <cd:constant type="on"/>
+ <cd:constant type="off" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="title">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tabulation" type="environment" generated="yes" variant="generated" file="tabl-tbl.mkiv">
+ <cd:sequence>
+ <cd:variable value="tabulation"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptabulation"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definetabulate" file="tabl-tbl.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:template optional="yes"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuptabulate" file="tabl-tbl.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes">
+ <cd:inherit name="setuptabulation"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tabulate" type="environment" file="tabl-tbl.mkiv">
+ <cd:arguments>
+ <cd:template optional="yes"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptabulate"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tabulate" type="environment" generated="yes" variant="generated" file="tabl-tbl.mkiv">
+ <cd:sequence>
+ <cd:variable value="tabulate"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptabulate"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tabulatehead" type="environment" file="tabl-tbl.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tabulatetail" type="environment" file="tabl-tbl.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tabulaterule" file="tabl-tbl.mkiv"/>
+
+ <cd:command name="tabulateline" file="tabl-tbl.mkiv"/>
+
+ <cd:command name="tabulateautorule" file="tabl-tbl.mkiv"/>
+
+ <cd:command name="tabulateautoline" file="tabl-tbl.mkiv"/>
+
+ <cd:command name="legend" type="environment" file="tabl-tbl.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptabulate"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="fact" type="environment" file="tabl-tbl.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptabulate"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="VL" scope="tabulate" file="tabl-tbl.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="cd:color"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="NC" scope="tabulate" file="tabl-tbl.mkiv"/>
+
+ <cd:command name="RC" scope="tabulate" file="tabl-tbl.mkiv"/>
+
+ <cd:command name="HC" scope="tabulate" file="tabl-tbl.mkiv"/>
+
+ <cd:command name="EQ" scope="tabulate" file="tabl-tbl.mkiv"/>
+
+ <cd:command name="RQ" scope="tabulate" file="tabl-tbl.mkiv"/>
+
+ <cd:command name="HQ" scope="tabulate" file="tabl-tbl.mkiv"/>
+
+ <cd:command name="NG" scope="tabulate" file="tabl-tbl.mkiv"/>
+
+ <cd:command name="NN" scope="tabulate" file="tabl-tbl.mkiv"/>
+
+ <cd:command name="ND" scope="tabulate" file="tabl-tbl.mkiv"/>
+
+ <cd:command name="NR" scope="tabulate" file="tabl-tbl.mkiv"/>
+
+ <cd:command name="NB" scope="tabulate" file="tabl-tbl.mkiv"/>
+
+ <cd:command name="CC" scope="tabulate" file="tabl-tbl.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-color-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="CL" scope="tabulate" file="tabl-tbl.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-color-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="CM" scope="tabulate" file="tabl-tbl.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-color-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="CR" scope="tabulate" file="tabl-tbl.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-color-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="SR" scope="tabulate" file="tabl-tbl.mkiv"/>
+
+ <cd:command name="FR" scope="tabulate" file="tabl-tbl.mkiv"/>
+
+ <cd:command name="MR" scope="tabulate" file="tabl-tbl.mkiv"/>
+
+ <cd:command name="LR" scope="tabulate" file="tabl-tbl.mkiv"/>
+
+ <cd:command name="AR" scope="tabulate" file="tabl-tbl.mkiv"/>
+
+ <cd:command name="FL" scope="tabulate" file="tabl-tbl.mkiv"/>
+
+ <cd:command name="ML" scope="tabulate" file="tabl-tbl.mkiv"/>
+
+ <cd:command name="LL" scope="tabulate" file="tabl-tbl.mkiv"/>
+
+ <cd:command name="TL" scope="tabulate" file="tabl-tbl.mkiv"/>
+
+ <cd:command name="BL" scope="tabulate" file="tabl-tbl.mkiv"/>
+
+ <cd:command name="HL" scope="tabulate" file="tabl-tbl.mkiv"/>
+
+ <cd:command name="HR" scope="tabulate" file="tabl-tbl.mkiv"/>
+
+ -->
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-tagging.xml b/tex/context/interface/mkiv/i-tagging.xml
new file mode 100644
index 000000000..14f413ce3
--- /dev/null
+++ b/tex/context/interface/mkiv/i-tagging.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setuptagging" file="strc-tag.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:constant type="auto"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tagged" type="environment" begin="dostart" end="dostop" file="strc-tag.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelseinelement" file="strc-tag.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifinelementelse" file="strc-tag.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="taggedlabeltexts" file="strc-tag.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="namedtaggedlabeltexts" file="strc-tag.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="settaggedmetadata" file="strc-tag.mkiv">
+ <cd:arguments>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-textbackground.xml b/tex/context/interface/mkiv/i-textbackground.xml
new file mode 100644
index 000000000..3b17e0efd
--- /dev/null
+++ b/tex/context/interface/mkiv/i-textbackground.xml
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definetextbackground" file="anch-bck.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptextbackground"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuptextbackground" file="anch-bck.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start" default="yes"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="text" default="yes"/>
+ <cd:constant type="paragraph"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="mp">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="background">
+ <cd:constant type="color"/>
+ </cd:parameter>
+ <cd:parameter name="backgroundcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="corner">
+ <cd:constant type="rectangular" default="yes"/>
+ <cd:constant type="round"/>
+ </cd:parameter>
+ <cd:parameter name="level">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="backgroundoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:inherit name="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="dash">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="radius">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="frame">
+ <cd:constant type="on" default="yes"/>
+ <cd:constant type="off"/>
+ </cd:parameter>
+ <cd:parameter name="framecolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="rulethickness">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="frameoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="leftoffset">
+ <cd:resolve name="value-leftskip"/>
+ </cd:parameter>
+ <cd:parameter name="rightoffset">
+ <cd:resolve name="value-rightskip"/>
+ </cd:parameter>
+ <cd:parameter name="topoffset">
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ <cd:constant type="line"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="bottomoffset">
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ <cd:constant type="line"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="textbackground" type="environment" file="anch-bck.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptextbackground"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="textbackground" type="environment" generated="yes" variant="generated" file="anch-bck.mkiv">
+ <cd:sequence>
+ <cd:variable value="textbackground"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptextbackground"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="textbackground" generated="yes" variant="generated" file="anch-bck.mkiv">
+ <cd:sequence>
+ <cd:variable value="textbackground"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="textbackgroundmanual" type="environment" file="anch-bck.mkiv"/>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-textflow.xml b/tex/context/interface/mkiv/i-textflow.xml
new file mode 100644
index 000000000..edcf03492
--- /dev/null
+++ b/tex/context/interface/mkiv/i-textflow.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definetextflow" file="page-flw.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptextflow"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuptextflow" file="page-flw.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="textflowcollector" file="page-flw.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsetextflowcollector" file="page-flw.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doiftextflowcollectorelse" file="page-flw.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsetextflow" file="page-flw.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doiftextflowelse" file="page-flw.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="textflow" type="environment" file="page-flw.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="flushtextflow" file="page-flw.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-textrule.xml b/tex/context/interface/mkiv/i-textrule.xml
new file mode 100644
index 000000000..a849f44e1
--- /dev/null
+++ b/tex/context/interface/mkiv/i-textrule.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setuptextrules" file="pack-mrl.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rulethickness">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="left" default="yes"/>
+ <cd:constant type="inmargin"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="rulecolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="depthcorrection">
+ <cd:constant type="on" default="yes"/>
+ <cd:constant type="off"/>
+ </cd:parameter>
+ <cd:parameter name="bodyfont">
+ <cd:inherit name="setupbodyfont"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="textrule" file="pack-mrl.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="top"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="bottom" default="yes"/>
+ </cd:keywords>
+ <cd:resolve name="argument-text-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="textrule" type="environment" file="pack-mrl.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-texts.xml b/tex/context/interface/mkiv/i-texts.xml
new file mode 100644
index 000000000..009949d35
--- /dev/null
+++ b/tex/context/interface/mkiv/i-texts.xml
@@ -0,0 +1,385 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <!--
+
+ <cd:command name="definelayoutelement" file="page-txt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuplayoutelement"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuplayoutelement" file="page-txt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="empty"/>
+ <cd:constant type="high"/>
+ <cd:constant type="none"/>
+ <cd:constant type="normal" default="yes"/>
+ <cd:constant type="nomarking"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="leftstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="rightstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="leftcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="rightcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="leftwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rightwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuplayouttext" file="page-txt.mkvi">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="top"/>
+ <cd:constant type="header"/>
+ <cd:constant type="text"/>
+ <cd:constant type="footer"/>
+ <cd:constant type="bottom"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="text"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="edge"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="setuplayoutelement"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="setuplayouttext" file="page-txt.mkvi">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="top"/>
+ <cd:constant type="header"/>
+ <cd:constant type="text"/>
+ <cd:constant type="footer"/>
+ <cd:constant type="bottom"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="text"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="edge"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="empty"/>
+ <cd:constant type="high"/>
+ <cd:constant type="none"/>
+ <cd:constant type="normal" default="yes"/>
+ <cd:constant type="nomarking"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="leftstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="rightstyle">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="leftcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="rightcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="leftwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rightwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuptop" file="page-txt.mkvi">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="text"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="edge"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="setuplayoutelement"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupheader" file="page-txt.mkvi">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="text"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="edge"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="setuplayoutelement"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuptext" file="page-txt.mkvi">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="text"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="edge"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="setuplayoutelement"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupfooter" file="page-txt.mkvi">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="text"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="edge"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="setuplayoutelement"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupbottom" file="page-txt.mkvi">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="text"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="edge"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="setuplayoutelement"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelselayouttextline" file="page-txt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doiflayouttextlineelse" file="page-txt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelselayoutsomeline" file="page-txt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doiflayoutsomelineelse" file="page-txt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="noheaderandfooterlines" file="page-txt.mkvi"/>
+
+ <cd:command name="notopandbottomlines" file="page-txt.mkvi"/>
+
+ <cd:command name="setuptoptexts" file="page-txt.mkvi">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="text" default="yes"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="edge"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-layoutelement-optional"/>
+ <cd:resolve name="keyword-layoutelement-optional"/>
+ <cd:resolve name="keyword-layoutelement-optional"/>
+ <cd:resolve name="keyword-layoutelement-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupheadertexts" file="page-txt.mkvi">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="text" default="yes"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="edge"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-layoutelement-optional"/>
+ <cd:resolve name="keyword-layoutelement-optional"/>
+ <cd:resolve name="keyword-layoutelement-optional"/>
+ <cd:resolve name="keyword-layoutelement-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuptexttexts" file="page-txt.mkvi">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="text" default="yes"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="edge"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-layoutelement-optional"/>
+ <cd:resolve name="keyword-layoutelement-optional"/>
+ <cd:resolve name="keyword-layoutelement-optional"/>
+ <cd:resolve name="keyword-layoutelement-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupfootertexts" file="page-txt.mkvi">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="text" default="yes"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="edge"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-layoutelement-optional"/>
+ <cd:resolve name="keyword-layoutelement-optional"/>
+ <cd:resolve name="keyword-layoutelement-optional"/>
+ <cd:resolve name="keyword-layoutelement-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupbottomtexts" file="page-txt.mkvi">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="text" default="yes"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="edge"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-layoutelement-optional"/>
+ <cd:resolve name="keyword-layoutelement-optional"/>
+ <cd:resolve name="keyword-layoutelement-optional"/>
+ <cd:resolve name="keyword-layoutelement-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="settextcontent" file="page-txt.mkvi">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="top"/>
+ <cd:constant type="header"/>
+ <cd:constant type="text"/>
+ <cd:constant type="footer"/>
+ <cd:constant type="bottom"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="text"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="edge"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="left"/>
+ <cd:constant type="middle" default="yes"/>
+ <cd:constant type="right"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-layoutelement"/>
+ <cd:resolve name="keyword-layoutelement-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definetext" file="page-txt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords>
+ <cd:constant type="top"/>
+ <cd:constant type="header"/>
+ <cd:constant type="text"/>
+ <cd:constant type="footer"/>
+ <cd:constant type="bottom"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="text"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="edge"/>
+ </cd:keywords>
+ <cd:resolve name="keyword-layoutelement"/>
+ <cd:resolve name="keyword-layoutelement-optional"/>
+ <cd:resolve name="keyword-layoutelement-optional"/>
+ <cd:resolve name="keyword-layoutelement-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-thinrule.xml b/tex/context/interface/mkiv/i-thinrule.xml
new file mode 100644
index 000000000..b74286e5e
--- /dev/null
+++ b/tex/context/interface/mkiv/i-thinrule.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setupthinrules" file="pack-mrl.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="height">
+ <cd:constant type="max"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="depth">
+ <cd:constant type="max"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="background">
+ <cd:constant type="color"/>
+ </cd:parameter>
+ <cd:parameter name="frame">
+ <cd:constant type="on" default="yes"/>
+ <cd:constant type="off"/>
+ </cd:parameter>
+ <cd:parameter name="rulethickness">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="a"/>
+ <cd:constant type="b" default="yes"/>
+ <cd:constant type="c"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="backgroundcolor">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="interlinespace">
+ <cd:constant type="small" default="yes"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="thinrule" file="pack-mrl.mkiv"/>
+
+ <cd:command name="hairline" file="pack-mrl.mkiv"/>
+
+ <cd:command name="thinrules" file="pack-mrl.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupthinrules"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-token.xml b/tex/context/interface/mkiv/i-token.xml
new file mode 100644
index 000000000..2cc0f4674
--- /dev/null
+++ b/tex/context/interface/mkiv/i-token.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="tokens" type="environment" file="toks-tra.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="flushtokens" file="toks-tra.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showtokens" file="toks-tra.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="testtokens" file="toks-tra.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-tolerance.xml b/tex/context/interface/mkiv/i-tolerance.xml
new file mode 100644
index 000000000..26b554132
--- /dev/null
+++ b/tex/context/interface/mkiv/i-tolerance.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setuptolerance" file="spac-hor.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="horizontal"/>
+ <cd:constant type="vertical"/>
+ <cd:constant type="verystrict"/>
+ <cd:constant type="strict"/>
+ <cd:constant type="tolerant"/>
+ <cd:constant type="verytolerant"/>
+ <cd:constant type="space"/>
+ <cd:constant type="stretch"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-tooltip.xml b/tex/context/interface/mkiv/i-tooltip.xml
new file mode 100644
index 000000000..775d0abcf
--- /dev/null
+++ b/tex/context/interface/mkiv/i-tooltip.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definetooltip" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptooltip"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuptooltip" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="location">
+ <cd:constant type="left"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="right" default="yes"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tooltip" generated="yes" variant="generated:1" file="scrn-fld.mkvi">
+ <cd:sequence>
+ <cd:variable value="tooltip"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptooltip"/>
+ </cd:assignments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tooltip" generated="yes" variant="generated:2" file="scrn-fld.mkvi">
+ <cd:sequence>
+ <cd:variable value="tooltip"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="left"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="right"/>
+ </cd:keywords>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tooltip" variant="1" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptooltip"/>
+ </cd:assignments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tooltip" variant="2" file="scrn-fld.mkvi">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="left"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="right"/>
+ </cd:keywords>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-tracker.xml b/tex/context/interface/mkiv/i-tracker.xml
new file mode 100644
index 000000000..e2b48ade2
--- /dev/null
+++ b/tex/context/interface/mkiv/i-tracker.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="installtextracker" file="trac-ctx.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installtexdirective" file="trac-ctx.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-command"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="enabletrackers" file="trac-deb.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="disabletrackers" file="trac-deb.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resettrackers" file="trac-deb.mkiv"/>
+
+ <cd:command name="showtrackers" file="trac-deb.mkiv"/>
+
+ <cd:command name="enabledirectives" file="trac-deb.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="disabledirectives" file="trac-deb.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showdirectives" file="trac-deb.mkiv"/>
+
+ <cd:command name="enableexperiments" file="trac-deb.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="disableexperiments" file="trac-deb.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showexperiments" file="trac-deb.mkiv"/>
+
+ <cd:command name="showedebuginfo" file="trac-deb.mkiv"/>
+
+ <cd:command name="overloaderror" file="trac-deb.mkiv"/>
+
+ <cd:command name="showlogcategories" file="trac-deb.mkiv"/>
+
+ <cd:command name="showjustification" file="trac-jus.mkiv"/>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-translation.xml b/tex/context/interface/mkiv/i-translation.xml
new file mode 100644
index 000000000..f4f77c526
--- /dev/null
+++ b/tex/context/interface/mkiv/i-translation.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="translate" file="lang-lab.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="cd:language">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="assigntranslation" file="lang-lab.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="cd:language">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ <cd:delimiter name="to"/>
+ <cd:csname/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-twopassdata.xml b/tex/context/interface/mkiv/i-twopassdata.xml
new file mode 100644
index 000000000..f30b8bb23
--- /dev/null
+++ b/tex/context/interface/mkiv/i-twopassdata.xml
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="immediatesavetwopassdata" file="core-two.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-number"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="savetwopassdata" file="core-two.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-number"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="lazysavetwopassdata" file="core-two.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-number"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="savetaggedtwopassdata" file="core-two.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-name"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="lazysavetaggedtwopassdata" file="core-two.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-name"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definetwopasslist" file="core-two.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="gettwopassdata" file="core-two.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="checktwopassdata" file="core-two.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="findtwopassdata" file="core-two.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getfirsttwopassdata" file="core-two.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getlasttwopassdata" file="core-two.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getnamedtwopassdatalist" file="core-two.mkiv">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="gettwopassdatalist" file="core-two.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelseintwopassdata" file="core-two.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifintwopassdataelse" file="core-two.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getfromtwopassdata" file="core-two.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-typography.xml b/tex/context/interface/mkiv/i-typography.xml
new file mode 100644
index 000000000..ffb80c211
--- /dev/null
+++ b/tex/context/interface/mkiv/i-typography.xml
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="normalizetextwidth" file="typo-txt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-font"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="normalizetextheight" file="typo-txt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-font"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="normalizetextdepth" file="typo-txt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-font"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="normalizetextline" file="typo-txt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-font"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="normalizefontwidth" file="typo-txt.mkvi">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-font"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="normalizefontheight" file="typo-txt.mkvi">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-font"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="normalizefontdepth" file="typo-txt.mkvi">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-font"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="normalizefontline" file="typo-txt.mkvi">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-font"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="widthspanningtext" file="typo-txt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-font"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="heightspanningtext" file="typo-txt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-font"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="depthspanningtext" file="typo-txt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-font"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="linespanningtext" file="typo-txt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-font"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="normalizedfontsize" file="typo-txt.mkvi"/>
+
+ <cd:command name="NormalizeTextWidth" file="typo-txt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-font"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="NormalizeTextHeight" file="typo-txt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-font"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="NormalizeFontWidth" file="typo-txt.mkvi">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-font"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="NormalizeFontHeight" file="typo-txt.mkvi">
+ <cd:arguments>
+ <cd:csname/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-font"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="WidthSpanningText" file="typo-txt.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-dimension"/>
+ <cd:resolve name="argument-font"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="TheNormalizedFontSize" file="typo-txt.mkvi"/>
+
+ <cd:command name="nicelyfilledbox" type="environment" file="typo-txt.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-unit.xml b/tex/context/interface/mkiv/i-unit.xml
new file mode 100644
index 000000000..3502b544a
--- /dev/null
+++ b/tex/context/interface/mkiv/i-unit.xml
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="digits" variant="1" file="phys-dim.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="digits" variant="2" file="phys-dim.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="defineunit" file="phys-dim.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupunit"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupunit" file="phys-dim.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="method">
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ <cd:constant type="3"/>
+ <cd:constant type="4"/>
+ <cd:constant type="5"/>
+ <cd:constant type="6"/>
+ </cd:parameter>
+ <cd:parameter name="language">
+ <cd:constant type="cd:language"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="text"/>
+ <cd:constant type="mathematics"/>
+ </cd:parameter>
+ <cd:parameter name="order">
+ <cd:constant type="reverse"/>
+ <cd:constant type="normal" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="separator">
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ <cd:constant type="normal" default="yes"/>
+ <cd:constant type="none"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="space">
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ <cd:constant type="normal" default="yes"/>
+ <cd:constant type="none"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="unit" generated="yes" variant="generated" file="phys-dim.mkiv">
+ <cd:sequence>
+ <cd:variable value="unit"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="unit" file="phys-dim.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installunitsseparator" file="phys-dim.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installunitsspace" file="phys-dim.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="registerunit" file="phys-dim.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="prefix"/>
+ <cd:constant type="unit" default="yes"/>
+ <cd:constant type="operator"/>
+ <cd:constant type="suffixe"/>
+ <cd:constant type="symbol"/>
+ <cd:constant type="packaged"/>
+ </cd:keywords>
+ <cd:resolve name="assignment-userdata-list"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-variables.xml b/tex/context/interface/mkiv/i-variables.xml
new file mode 100644
index 000000000..28aaa6df4
--- /dev/null
+++ b/tex/context/interface/mkiv/i-variables.xml
@@ -0,0 +1,356 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setvariables" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="set">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="reset">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="cd:key">
+ <cd:constant type="cd:value"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setevariables" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="set">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="reset">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="cd:key">
+ <cd:constant type="cd:value"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setgvariables" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="set">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="reset">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="cd:key">
+ <cd:constant type="cd:value"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setxvariables" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="set">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="reset">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="cd:key">
+ <cd:constant type="cd:value"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setvariable" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-key"/>
+ <cd:resolve name="argument-value"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setevariable" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-key"/>
+ <cd:resolve name="argument-value"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setgvariable" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-key"/>
+ <cd:resolve name="argument-value"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setxvariable" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-key"/>
+ <cd:resolve name="argument-value"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getvariable" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showvariable" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsevariable" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-key"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifvariableelse" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-key"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifvariable" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-key"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnotvariable" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-key"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelseemptyvariable" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-key"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifemptyvariableelse" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-key"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifemptyvariable" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-key"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnotemptyvariable" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-key"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getvariabledefault" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-key"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupenv" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="set">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="reset">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="cd:key">
+ <cd:constant type="cd:value"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelseenv" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifenvelse" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifenv" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnotenv" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="env" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="envvar" file="core-env.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-key"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setdocumentfilename" file="luat-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setdocumentargument" file="luat-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setdocumentargumentdefault" file="luat-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getdocumentfilename" file="luat-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getdocumentargument" file="luat-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="getdocumentargumentdefault" file="luat-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsedocumentargument" file="luat-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifdocumentargumentelse" file="luat-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifdocumentargument" file="luat-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnotdocumentargument" file="luat-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsedocumentfilename" file="luat-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifdocumentfilenameelse" file="luat-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifdocumentfilename" file="luat-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifnotdocumentfilename" file="luat-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-verbatim.xml b/tex/context/interface/mkiv/i-verbatim.xml
new file mode 100644
index 000000000..7026d2b10
--- /dev/null
+++ b/tex/context/interface/mkiv/i-verbatim.xml
@@ -0,0 +1,449 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definetype" file="buff-ver.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptype"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuptype" file="buff-ver.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="option">
+ <cd:constant type="mp"/>
+ <cd:constant type="lua"/>
+ <cd:constant type="xml"/>
+ <cd:constant type="parsed-xml"/>
+ <cd:constant type="nested"/>
+ <cd:constant type="tex"/>
+ <cd:constant type="context"/>
+ <cd:constant type="none"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:csname"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="tab">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="compact">
+ <cd:constant type="absolute"/>
+ <cd:constant type="last"/>
+ <cd:constant type="all" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="escape">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:text" prefix="cd:processor" method="apply"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="lines">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="hyphenated"/>
+ </cd:parameter>
+ <cd:parameter name="space">
+ <cd:constant type="on"/>
+ <cd:constant type="off" default="yes"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="fixed"/>
+ <cd:constant type="stretch"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="type" variant="1" file="buff-ver.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptype"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="type" variant="2" file="buff-ver.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptype"/>
+ </cd:assignments>
+ <cd:angles/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="typ" variant="1" file="buff-ver.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptype"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="typ" variant="2" file="buff-ver.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptype"/>
+ </cd:assignments>
+ <cd:angles/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="type" generated="yes" variant="generated:1" file="buff-ver.mkiv">
+ <cd:sequence>
+ <cd:variable value="type"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptype"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="type" generated="yes" variant="generated:2" file="buff-ver.mkiv">
+ <cd:sequence>
+ <cd:variable value="type"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptype"/>
+ </cd:assignments>
+ <cd:angles/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definetyping" file="buff-ver.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptyping"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setuptyping" file="buff-ver.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional-list"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="oddmargin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="evenmargin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="margin">
+ <cd:resolve name="value-leftskip"/>
+ </cd:parameter>
+ <cd:parameter name="option">
+ <cd:constant type="mp"/>
+ <cd:constant type="lua"/>
+ <cd:constant type="xml"/>
+ <cd:constant type="parsed-xml"/>
+ <cd:constant type="nested"/>
+ <cd:constant type="tex"/>
+ <cd:constant type="context"/>
+ <cd:constant type="none" default="yes"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:resolve name="value-style"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:color"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:inherit name="setupalign"/>
+ </cd:parameter>
+ <cd:parameter name="lines">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="hyphenated"/>
+ </cd:parameter>
+ <cd:parameter name="space">
+ <cd:constant type="on"/>
+ <cd:constant type="off" default="yes"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="fixed"/>
+ <cd:constant type="stretch"/>
+ </cd:parameter>
+ <cd:parameter name="keeptogether">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="strip">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="range">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="tab">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="escape">
+ <cd:constant type="yes"/>
+ <cd:constant type="no" default="yes"/>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:text" prefix="cd:processor" method="apply"/>
+ </cd:parameter>
+ <cd:parameter name="indentnext">
+ <cd:resolve name="value-indentnext"/>
+ </cd:parameter>
+ <cd:parameter name="continue">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="start">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="stop">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="step">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="numbering">
+ <cd:constant type="file"/>
+ <cd:constant type="line"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="blank">
+ <cd:inherit name="blank"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="typing" type="environment" variant="1" file="buff-ver.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptyping"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="typing" type="environment" variant="2" file="buff-ver.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="continue"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="typing" type="environment" generated="yes" variant="generated:1" file="buff-ver.mkiv">
+ <cd:sequence>
+ <cd:variable value="typing"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptyping"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="typing" type="environment" generated="yes" variant="generated:2" file="buff-ver.mkiv">
+ <cd:sequence>
+ <cd:variable value="typing"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="continue"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="tex" file="buff-ver.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="arg" file="buff-ver.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="mat" file="buff-ver.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="dis" file="buff-ver.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="astype" file="buff-ver.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="asciistr" file="buff-ver.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="verbatim" file="buff-ver.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="filename" file="buff-ver.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="typefile" file="buff-ver.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptyping"/>
+ </cd:assignments>
+ <cd:resolve name="argument-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelsetypingfile" file="buff-ver.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doiftypingfileelse" file="buff-ver.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="LUA" type="environment" variant="1" file="buff-ver.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptyping"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="LUA" type="environment" variant="2" file="buff-ver.mkiv">
+ <cd:sequence>
+ <cd:variable value="lua"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="continue"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MP" type="environment" variant="1" file="buff-ver.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptyping"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="MP" type="environment" variant="2" file="buff-ver.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="continue"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="XML" type="environment" variant="1" file="buff-ver.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptyping"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="XML" type="environment" variant="2" file="buff-ver.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="continue"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="PARSEDXML" type="environment" variant="1" file="buff-ver.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptyping"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="PARSEDXML" type="environment" variant="2" file="buff-ver.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="continue"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="TEX" type="environment" variant="1" file="buff-ver.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setuptyping"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="TEX" type="environment" variant="2" file="buff-ver.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="continue"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-version.xml b/tex/context/interface/mkiv/i-version.xml
new file mode 100644
index 000000000..d01659815
--- /dev/null
+++ b/tex/context/interface/mkiv/i-version.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setupversion" file="page-inf.mkiv">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="concept"/>
+ <cd:constant type="file"/>
+ <cd:constant type="temporary"/>
+ <cd:constant type="final"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="version" file="page-inf.mkiv">
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="concept"/>
+ <cd:constant type="file"/>
+ <cd:constant type="temporary"/>
+ <cd:constant type="final"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="installversioninfo" file="page-inf.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-command"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="includeversioninfo" file="page-inf.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelseolderversion" file="file-mod.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifolderversionelse" file="file-mod.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifelseoldercontext" file="file-mod.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="doifoldercontextelse" file="file-mod.mkvi">
+ <cd:arguments>
+ <cd:resolve name="argument-number"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-viewerlayer.xml b/tex/context/interface/mkiv/i-viewerlayer.xml
new file mode 100644
index 000000000..3de29b1fd
--- /dev/null
+++ b/tex/context/interface/mkiv/i-viewerlayer.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="defineviewerlayer" file="attr-lay.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupviewerlayer"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupviewerlayer" file="attr-lay.mkiv">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="title">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="state">
+ <cd:constant type="start" default="yes"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="export">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="printable">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="scope">
+ <cd:constant type="local" default="yes"/>
+ <cd:constant type="global"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:constant type="none" default="yes"/>
+ <cd:constant type="command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="viewerlayer" type="environment" file="attr-lay.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="viewerlayer" type="environment" generated="yes" variant="generated" file="attr-lay.mkiv">
+ <cd:sequence>
+ <cd:variable value="viewerlayer"/>
+ </cd:sequence>
+ </cd:command>
+
+ <cd:command name="viewerlayer" file="attr-lay.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showlayoutcomponents" file="attr-lay.mkiv"/>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-visualizer.xml b/tex/context/interface/mkiv/i-visualizer.xml
new file mode 100644
index 000000000..fd7198f9d
--- /dev/null
+++ b/tex/context/interface/mkiv/i-visualizer.xml
@@ -0,0 +1,156 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="ruledhbox" file="trac-vis.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ruledvbox" file="trac-vis.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ruledvtop" file="trac-vis.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ruledtopv" file="trac-vis.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ruledhpack" file="trac-vis.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ruledvpack" file="trac-vis.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ruledtpack" file="trac-vis.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="ruledmbox" file="trac-vis.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="filledhboxr" file="trac-vis.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="filledhboxg" file="trac-vis.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="filledhboxb" file="trac-vis.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="filledhboxc" file="trac-vis.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="filledhboxm" file="trac-vis.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="filledhboxy" file="trac-vis.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="filledhboxk" file="trac-vis.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-boxoptions"/>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showmakeup" file="trc-vis.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="makeup" default="yes"/>
+ <cd:constant type="all"/>
+ <cd:constant type="boxes"/>
+ <cd:constant type="glyph"/>
+ <cd:constant type="fontkern"/>
+ <cd:constant type="hbox"/>
+ <cd:constant type="vbox"/>
+ <cd:constant type="vtop"/>
+ <cd:constant type="kern"/>
+ <cd:constant type="glue"/>
+ <cd:constant type="penalty"/>
+ <cd:constant type="strut"/>
+ <cd:constant type="whatsit"/>
+ <cd:constant type="simple"/>
+ <cd:constant type="simplehbox"/>
+ <cd:constant type="simplevbox"/>
+ <cd:constant type="simplevtop"/>
+ <cd:constant type="user"/>
+ <cd:constant type="math"/>
+ <cd:constant type="italic"/>
+ <cd:constant type="origin"/>
+ <cd:constant type="reset"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="showallmakeup" file="trc-vis.mkiv"/>
+
+ <cd:command name="showboxes" file="trc-vis.mkiv"/>
+
+ <cd:command name="showglyphs" file="trc-vis.mkiv"/>
+
+ <cd:command name="showfontkerns" file="trc-vis.mkiv"/>
+
+ <cd:command name="setvisualizerfont" file="trc-vis.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-font-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="resetvisualizers" file="trc-vis.mkiv"/>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-vspace.xml b/tex/context/interface/mkiv/i-vspace.xml
new file mode 100644
index 000000000..340ce49d5
--- /dev/null
+++ b/tex/context/interface/mkiv/i-vspace.xml
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definevspacingamount" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-dimension-optional"/>
+ <cd:resolve name="keyword-dimension-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="definevspacing" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:keywords>
+ <cd:inherit name="vspacing"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="vspacing" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="preference"/>
+ <cd:constant type="samepage"/>
+ <cd:constant type="max"/>
+ <cd:constant type="force"/>
+ <cd:constant type="disable"/>
+ <cd:constant type="nowhite"/>
+ <cd:constant type="back"/>
+ <cd:constant type="overlay"/>
+ <cd:constant type="always"/>
+ <cd:constant type="weak"/>
+ <cd:constant type="strong"/>
+ <cd:constant type="default"/>
+ <cd:constant type="before"/>
+ <cd:constant type="inbetween"/>
+ <cd:constant type="after"/>
+ <cd:constant type="fixed"/>
+ <cd:constant type="flexible"/>
+ <cd:constant type="none"/>
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ <cd:constant type="line"/>
+ <cd:constant type="halfline"/>
+ <cd:constant type="quarterline"/>
+ <cd:constant type="formula"/>
+ <cd:constant type="white"/>
+ <cd:constant type="height"/>
+ <cd:constant type="depth"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="small" prefix="cd:number" method="factor"/>
+ <cd:constant type="medium" prefix="cd:number" method="factor"/>
+ <cd:constant type="big" prefix="cd:number" method="factor"/>
+ <cd:constant type="line" prefix="cd:number" method="factor"/>
+ <cd:constant type="halfline" prefix="cd:number" method="factor"/>
+ <cd:constant type="quarterline" prefix="cd:number" method="factor"/>
+ <cd:constant type="formula" prefix="cd:number" method="factor"/>
+ <cd:constant type="white" prefix="cd:number" method="factor"/>
+ <cd:constant type="height" prefix="cd:number" method="factor"/>
+ <cd:constant type="depth" prefix="cd:number" method="factor"/>
+ <cd:constant type="cd:number" prefix="category" method="range"/>
+ <cd:constant type="cd:number" prefix="order" method="range"/>
+ <cd:constant type="cd:number" prefix="penalty" method="range"/>
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="directvspacing" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:keywords delimiters="braces" list="yes">
+ <cd:inherit name="vspacing"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupvspacing" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:inherit name="vspacing"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupblank" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:inherit name="vspacing"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="blank" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:inherit name="vspacing"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="inhibitblank" file="spac-ver.mkiv"/>
+
+ <cd:command name="synchronizeblank" file="spac-ver.mkiv"/>
+
+ <cd:command name="definevspace" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="vspace" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:resolve name="keyword-name-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="godown" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:resolve name="keyword-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="vglue" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:resolve name="string-dimension"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="smallskip" file="spac-ver.mkiv"/>
+
+ <cd:command name="medskip" file="spac-ver.mkiv"/>
+
+ <cd:command name="bigskip" file="spac-ver.mkiv"/>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-whitespace.xml b/tex/context/interface/mkiv/i-whitespace.xml
new file mode 100644
index 000000000..8f9fa0823
--- /dev/null
+++ b/tex/context/interface/mkiv/i-whitespace.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="setupwhitespace" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="fix"/>
+ <cd:constant type="fixed"/>
+ <cd:constant type="flexible"/>
+ <cd:constant type="line"/>
+ <cd:constant type="halfline"/>
+ <cd:constant type="quarterline"/>
+ <cd:constant type="none" default="yes"/>
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ <cd:constant type="default"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="synchronizewhitespace" file="spac-ver.mkiv"/>
+
+ <cd:command name="correctwhitespace" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="packed" type="environment" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="blank"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="unpacked" type="environment" file="spac-ver.mkiv"/>
+
+ <cd:command name="linecorrection" type="environment" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="blank"/>
+ <cd:inherit name="blank"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="locallinecorrection" type="environment" file="spac-ver.mkiv">
+ <cd:arguments>
+ <cd:keywords list="yes" optional="yes">
+ <cd:constant type="blank"/>
+ <cd:inherit name="blank"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface> \ No newline at end of file
diff --git a/tex/context/interface/mkiv/i-xml.xml b/tex/context/interface/mkiv/i-xml.xml
new file mode 100644
index 000000000..c13196383
--- /dev/null
+++ b/tex/context/interface/mkiv/i-xml.xml
@@ -0,0 +1,827 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" file="lxml-ini.mkiv">
+
+ <!-- the definitions themselves -->
+
+ <cd:command name="xmlmain">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlflush">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmltext">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlpure">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlflushtext">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlflushpure">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlnonspace">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlflushspacewise">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlflushlinewise">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlall">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmllastmatch"/>
+
+ <cd:command name="xmlfirst">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmllast">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlcontext">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlflushcontext">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlshow">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlinfo">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlfilter">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlstrip">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlstripped">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlstripnolines">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlstrippednolines">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlposition">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlelement">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlpos">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlsnippet">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-number"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlconcat">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlconcatrange">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-first"/>
+ <cd:resolve name="argument-last"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlcommand">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ <cd:resolve name="argument-xmlsetup"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlinlineverbatim">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlinlineverbatim" type="environment">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmldisplayverbatim">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmldisplayverbatim" type="environment">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlverbatim">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlprettyprint">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlloadfile">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-xmlsetup"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlloadbuffer">
+ <cd:arguments>
+ <cd:resolve name="argument-buffer"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-xmlsetup"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlloaddata">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-xmlsetup"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlloadonly">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-xmlsetup"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlprocessfile">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-file"/>
+ <cd:resolve name="argument-xmlsetup"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlprocessbuffer">
+ <cd:arguments>
+ <cd:resolve name="argument-buffer"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-xmlsetup"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlprocessdata">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-text"/>
+ <cd:resolve name="argument-xmlsetup"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlinclude">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlname">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlpath">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlnamespace">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmltag">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlcount">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlatt">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlattdef">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlrefatt">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmllastatt"/>
+
+ <cd:command name="xmlattribute">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlattributedef">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlchainatt">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlchainattdef">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmldirectives">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmldirectivesbefore">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmldirectivesafter">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlinstalldirective">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-csname"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlsetup">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-setup"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlsetsetup">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-lpath"/>
+ <cd:resolve name="argument-setup"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlremovesetup">
+ <cd:arguments>
+ <cd:resolve name="argument-setup"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlremovedocumentsetup">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-setup"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlflushdocumentsetups">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-setup"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlresetsetups">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlresetdocumentsetups">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlprependsetup">
+ <cd:arguments>
+ <cd:resolve name="argument-setup"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlappendsetup">
+ <cd:arguments>
+ <cd:resolve name="argument-setup"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlbeforesetup">
+ <cd:arguments>
+ <cd:resolve name="argument-setup"/>
+ <cd:resolve name="argument-setup"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlaftersetup">
+ <cd:arguments>
+ <cd:resolve name="argument-setup"/>
+ <cd:resolve name="argument-setup"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlprependdocumentsetup">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-setup"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlappenddocumentsetup">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-setup"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlbeforedocumentsetup">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-setup"/>
+ <cd:resolve name="argument-setup"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlafterdocumentsetup">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-setup"/>
+ <cd:resolve name="argument-setup"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlregisteredsetups">
+ </cd:command>
+
+ <cd:command name="xmlregistereddocumentsetups">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-setup"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlsetfunction">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:luafunction"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmldoif">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmldoifnot">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmldoifelse">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmldoiftext">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmldoifnottext">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmldoifelsetext">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmldoifselfempty">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmldoifnotselfempty">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-true"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmldoifelseselfempty">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmldoifelseempty">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlregisterns">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:url"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlregisterns">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlremapname">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlremapnamespace">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlchecknamespace">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlmapvalue">
+ <cd:arguments>
+ <cd:resolve name="argument-category"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlvalue">
+ <cd:arguments>
+ <cd:resolve name="argument-category"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmldoifelsevalue">
+ <cd:arguments>
+ <cd:resolve name="argument-category"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-true"/>
+ <cd:resolve name="argument-false"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlloaddirectives">
+ <cd:arguments>
+ <cd:resolve name="argument-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlsave">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmltofile">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ <cd:resolve name="argument-file"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmltobuffer">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ <cd:resolve name="argument-buffer"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmltobufferverbose">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ <cd:resolve name="argument-buffer"/>
+ </cd:arguments>
+ </cd:command>
+
+ <!--
+
+ <cd:command name="xmltoparameters">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ <cd:resolve name="argument-buffer"/>
+ </cd:arguments>
+ </cd:command>
+
+ -->
+
+ <cd:command name="xmladdindex">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlinclusion">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlinclusions">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlbadinclusions">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlraw">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlraw" type="environment"/>
+
+ <!-- injectors -->
+
+ <cd:command name="xmlresetinjectors"/>
+
+ <cd:command name="xmlsetinjectors">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlinjector">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlapplyselectors">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ </cd:arguments>
+ </cd:command>
+
+ <!-- entities -->
+
+ <cd:command name="xmlsetentity">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmltexentity">
+ <cd:arguments>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <!-- general setup -->
+
+ <cd:command name="setupxml">
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="default">
+ <cd:constant type="hidden"/>
+ <cd:constant type="none"/>
+ <cd:constant type="text"/>
+ </cd:parameter>
+ <cd:parameter name="compress">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmldefaulttotext">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ </cd:arguments>
+ </cd:command>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-xtable.xml b/tex/context/interface/mkiv/i-xtable.xml
new file mode 100644
index 000000000..31b4a6842
--- /dev/null
+++ b/tex/context/interface/mkiv/i-xtable.xml
@@ -0,0 +1,247 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?context-directive job ctxfile x-setups.ctx ?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands">
+
+ <cd:command name="definextable" file="tabl-xtb.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name"/>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupxtable"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="setupxtable" file="tabl-xtb.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-list-optional"/>
+ <cd:assignments list="yes">
+ <cd:parameter name="textwidth">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="local" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="bodyfont">
+ <cd:inherit name="setupbodyfont"/>
+ </cd:parameter>
+ <cd:parameter name="spaceinbetween">
+ <cd:inherit name="blank"/>
+ </cd:parameter>
+ <cd:parameter name="option">
+ <cd:constant type="tight"/>
+ <cd:constant type="max"/>
+ <cd:constant type="stretch"/>
+ <cd:constant type="width"/>
+ <cd:constant type="height"/>
+ <cd:constant type="fixed"/>
+ </cd:parameter>
+ <cd:parameter name="textheight">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="maxwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="columndistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="leftmargindistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rightmargindistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="header">
+ <cd:constant type="repeat"/>
+ </cd:parameter>
+ <cd:parameter name="footer">
+ <cd:constant type="repeat"/>
+ </cd:parameter>
+ <cd:parameter name="rulethickness">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="split">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="repeat"/>
+ <cd:constant type="auto" default="yes"/>
+ </cd:parameter>
+ <cd:parameter name="splitoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="samepage">
+ <cd:constant type="before"/>
+ <cd:constant type="after"/>
+ <cd:constant type="both"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xtable" type="environment" variant="1" file="tabl-xtb.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupxtable"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xtable" type="environment" variant="2" file="tabl-xtb.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="embeddedxtable" type="environment" variant="1" file="tabl-xtb.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupxtable"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="embeddedxtable" type="environment" variant="2" file="tabl-xtb.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xtable" type="environment" generated="yes" variant="generated" file="tabl-xtb.mkvi">
+ <cd:sequence>
+ <cd:variable value="xtable"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupxtable"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="processxtablebuffer" file="tabl-xtb.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xrow" type="environment" file="tabl-xtb.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupxtable"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xcell" type="environment" file="tabl-xtb.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="nc">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="nr">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:inherit name="setupxtable"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xtablehead" type="environment" variant="1" file="tabl-xtb.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupxtable"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xtablehead" type="environment" variant="2" file="tabl-xtb.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xtablefoot" type="environment" variant="1" file="tabl-xtb.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupxtable"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xtablefoot" type="environment" variant="2" file="tabl-xtb.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xtablenext" type="environment" variant="1" file="tabl-xtb.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupxtable"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xtablenext" type="environment" variant="2" file="tabl-xtb.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xtablebody" type="environment" variant="1" file="tabl-xtb.mkvi">
+ <cd:arguments>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupxtable"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xtablebody" type="environment" variant="2" file="tabl-xtb.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xgroup" type="environment" file="tabl-xtb.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupxtable"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xrowgroup" type="environment" file="tabl-xtb.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupxtable"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xcellgroup" type="environment" file="tabl-xtb.mkvi">
+ <cd:arguments>
+ <cd:resolve name="keyword-name-optional"/>
+ <cd:assignments list="yes" optional="yes">
+ <cd:inherit name="setupxtable"/>
+ </cd:assignments>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="currentxtablerow" file="tabl-xtb.mkvi"/>
+
+ <cd:command name="currentxtablecolumn" file="tabl-xtb.mkvi"/>
+
+</cd:interface>
diff --git a/tex/context/modules/mkiv/s-fonts-system.lua b/tex/context/modules/mkiv/s-fonts-system.lua
index 0c0ad4d86..5b58a4a53 100644
--- a/tex/context/modules/mkiv/s-fonts-system.lua
+++ b/tex/context/modules/mkiv/s-fonts-system.lua
@@ -8,19 +8,20 @@ if not modules then modules = { } end modules ['s-fonts-system'] = {
-- ["zapfinoforteltpro"]={
-- ["designsize"]=0,
--- ["familyname"]="zapfinoforteltpro",
-- ["filename"]="zapfinoforteltpro.otf",
-- ["fontname"]="zapfinoforteltpro",
-- ["fontweight"]="regular",
+-- ["family"]="zapfinoforteltpro",
+-- ["subfamily"]="regular",
+-- ["familyname"]="zapfinoforteltpro",
+-- ["subfamilyname"]="regular",
-- ["format"]="otf",
-- ["fullname"]="zapfinoforteltpro",
-- ["maxsize"]=0,
-- ["minsize"]=0,
-- ["modification"]=1105543074,
--- ["modifiers"]="regular",
-- ["rawname"]="ZapfinoForteLTPro",
-- ["style"]="normal",
--- ["subfamily"]="regular",
-- ["variant"]="normal",
-- ["weight"]="normal",
-- ["width"]="normal",
diff --git a/tex/context/modules/mkiv/s-set-31.mkiv b/tex/context/modules/mkiv/s-setups-missing.mkiv
index 53037a78d..53037a78d 100644
--- a/tex/context/modules/mkiv/s-set-31.mkiv
+++ b/tex/context/modules/mkiv/s-setups-missing.mkiv
diff --git a/tex/context/modules/mkiv/x-set-11.mkiv b/tex/context/modules/mkiv/x-setups-basics.mkiv
index ce14b0619..c3adb6881 100644
--- a/tex/context/modules/mkiv/x-set-11.mkiv
+++ b/tex/context/modules/mkiv/x-setups-basics.mkiv
@@ -1,10 +1,10 @@
%D \module
-%D [ file=x-set-11,
-%D version=2004.10.31,
+%D [ file=setups-basics, % x-set-11,
+%D version=2016.04.05, % 2004.10.31,
%D remark=setupx.tex: 1998.07.20 and later,
%D title=\CONTEXT\ Setup Definitions,
%D subtitle=Macro Definitions,
-%D author=Hans Hagen,
+%D author={Hans Hagen & Wolfgang Schuster},
%D date=\currentdate,
%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
@@ -603,9 +603,59 @@
function xml.functions.setups_define(id)
local x = lxml.getid(id)
- for c in xml.collected(x,"/cd:interface/cd:define") do
+ for c in xml.collected(x,"cd:interface/cd:define") do
definitions[c.at.name] = c
end
+
+ for c in xml.collected(x,"cd:interface/cd:interface") do
+ c.at.file = c.__f__
+ c.at["xmlns:cd"] = nil
+ -- c.dt[#c.dt+1] = " "
+ end
+
+ local interface = interfaces.currentinterface or "en"
+
+ if interface ~= "en" then
+
+ local constants = interfaces.complete.constants
+ local variables = interfaces.complete.variables
+ local commands = interfaces.complete.commands
+ local elements = interfaces.complete.elements
+
+ local function replace(pattern,attribute,one,two)
+ for e in xml.collected(x,pattern) do
+ local t = e.at[attribute]
+ if t then
+ local c = one[t] or (two and two[t])
+ if c then
+ local v = c[interface]
+ if v then
+ e.at[attribute] = v
+ end
+ end
+ end
+ end
+ end
+
+ replace('cd:string', 'value', commands, elements)
+ replace('cd:variable' , 'value', variables)
+
+ replace('cd:parameter', 'name', constants)
+ replace('cd:constant', 'type', variables)
+ replace('cd:constant', 'default', variables)
+ replace('cd:variable', 'type', variables)
+ replace('cd:inherit', 'name', commands, elements)
+
+
+ end
+
+ if tex.modes["setups:save"] and environment.currentrun == 1 then
+ local s = tostring(x)
+ s = string.gsub(s,"\n*%s*(</cd:interface>)%s+(<cd:interface)", "\n\n %1\n\n %2")
+ s = string.gsub(s,"\n*%s*(</cd:interface>)%s+(</cd:interface>)","\n\n %1\n\n %2")
+ io.savedata("context-"..interface..".xml",s)
+ end
+
end
function moduledata.setups.resolved(name)
@@ -644,9 +694,12 @@
\loadsetups[\xmlatt{#1}{filename}]
\stopxmlsetups
+% todo: option to expand
+
\startxmlsetups xml:setups:basics
- \xmlinclude {#1}{include}{filename}
- \xmlcommand {#1}{/interface/interfacefile}{xml:setups:interfacefile}
+% \xmlcommand {#1}{interface/interfacefile}{xml:setups:interfacefile}
+% \xmlinclude {#1}{include}{filename}
+ \xmlincludeoptions {#1}{interfacefile|include}{filename}{recurse,basename}
\xmlsetsetup{#1}{*}{xml:setups:*}
\xmlfunction{#1}{setups_define}
\stopxmlsetups
@@ -664,10 +717,9 @@
{\doifsomething{#1}
{\doonlyonce{setups:#1}
{\doglobal\prependtocommalist{setups:#1}\loadedsetups % last overloads first
- % \setupxml
- % [\c!default=\v!hidden, % ignore elements that are not defined
- % \c!compress=\v!yes]
- \xmlloadonly{setups:#1}{#1}{setups}%
+ \doiffileexistselse{#1}
+ {\xmlloadonly{setups:#1}{#1}{setups}}%
+ {\xmlloadonly{setups:#1}{#1.xml}{setups}}%
% qualified path saves > 50% runtime
\xmlfilter{setups:#1}{/interface//command/command(xml:setups:register)}%
}}}
@@ -798,6 +850,8 @@
}
\stopxmlsetups
+\let\currentSETUPfilename\empty
+
\startxmlsetups xml:setups:typeset:raw
\tttf
\nohyphens
@@ -805,6 +859,7 @@
\doglobal\newcounter\currentSETUPargument
\xdef\maximumSETUPargument{\xmlfilter{#1}{/arguments/*/s_count()}}
\edef\currentSETUPhash{\xmlatt{#1}{hash}}
+ \xdef\currentSETUPfilename{\xmlatt{#1}{file}}%
\bgroup
\enablemode[setups-pass-one]%
\doif {\xmlatt{#1}{generated}} {yes} {
@@ -870,6 +925,7 @@
\stopxmlsetups
\startxmlsetups xml:setups:typeset:yes
+ \glet\currentSETUPfilename\empty
\ifcase\kindofsetup
\xmlsetup{#1}{xml:setups:typeset:line}
\or
@@ -883,16 +939,28 @@
\xmlsetup{#1}{xml:setups:typeset:detail}
\getvalue{\e!stop setuptext}
\fi
+ \glet\currentSETUPfilename\empty
\stopxmlsetups
+\defineoverlay
+ [setupfilename]
+ [\vbox to \overlayheight
+ {\infofont
+ \vfill
+ \scratchdimen.5\exheight
+ \hbox to \overlaywidth
+ {\strut
+ \hss
+ \currentSETUPfilename
+ \hskip\dimexpr\scratchdimen+\strutdp\relax}%
+ \vskip\scratchdimen}]
+
\setupsetup
[\c!before=,
\c!after=,
\c!command=\setup,
\c!criterium=\v!used]
-% slow ... also hash this
-
\startxmlsetups xml:setups:resolve
\ignorespaces
\ctxlua{moduledata.setups.resolved('\xmlatt{#1}{name}')}
@@ -1210,7 +1278,7 @@
\else
\showSETUP{#1}
{\letterleftbrace\setupEQsymbol\letterrightbrace}
- {\letterleftbrace\setupEQsymbol,\setupEQsymbol\letterrightbrace}
+ {\letterleftbrace..,\setupEQsymbol,..\letterrightbrace}
\fi
\stoptexdefinition
@@ -1220,7 +1288,7 @@
\else
\showSETUP{#1}
{[\setupEQsymbol]}
- {[\setupEQsymbol,\setupEQsymbol]}
+ {[..,\setupEQsymbol,..]}
\fi
\stoptexdefinition
diff --git a/tex/context/modules/mkiv/x-setups-generate.mkiv b/tex/context/modules/mkiv/x-setups-generate.mkiv
new file mode 100644
index 000000000..f64489e8d
--- /dev/null
+++ b/tex/context/modules/mkiv/x-setups-generate.mkiv
@@ -0,0 +1,18 @@
+%D \module
+%D [ file=setups-generate,
+%D version=2016.04.05,
+%D title=\CONTEXT\ Setup Definitions,
+%D subtitle=Macro Definitions,
+%D author={Hans Hagen & Wolfgang Schuster},
+%D date=\currentdate,
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\enablemode[setups:save]
+
+\input x-setups-overview.mkiv
+
+\endinput
diff --git a/tex/context/modules/mkiv/x-set-12.mkiv b/tex/context/modules/mkiv/x-setups-overview.mkiv
index c60445313..35ded7a86 100644
--- a/tex/context/modules/mkiv/x-set-12.mkiv
+++ b/tex/context/modules/mkiv/x-setups-overview.mkiv
@@ -1,10 +1,10 @@
%D \module
-%D [ file=x-set-12,
-%D version=2004.10.31,
+%D [ file=setups-basics, % x-set-12,
+%D version=2016.04.05, % 2004.10.31,
%D remark=setupx.tex: 1998.07.20 and later,
%D title=\CONTEXT\ Setup Definitions,
%D subtitle=Macro Definitions,
-%D author=Hans Hagen,
+%D author={Hans Hagen & Wolfgang Schuster},
%D date=\currentdate,
%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
@@ -12,28 +12,10 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-% included loading overhead
-%
-% 2.55 / 2.40 (luatex)
-% 1.90 / 1.80 (luajittex)
-
-% \newif\ifcachedcommand
-% \newif\ifcalledcommand
-%
-% \cachedcommandtrue
-% \calledcommandtrue
-%
-% \usemodule[speedtest]
-
-\usemodule[set-11]
+\usemodule[setups-basics]
\unprotect
-% \starttext
-% \setup{installlanguage}
-% \placesetup
-% \stoptext
-
\definecolor[TitleColor][r=.375,g=.125,b=.125]
\definecolor[TitleColor][r=.125,g=.375,b=.125]
\definecolor[TitleColor][r=.125,g=.125,b=.375]
@@ -48,13 +30,21 @@
\definecolor[TitleColor][r=.15,g=.20,b=.25]
\definecolor[TitleColor][r=.15,g=.25,b=.20]
-\startinterface english \loadsetups[cont-en.xml] \stopinterface
-\startinterface dutch \loadsetups[cont-nl.xml] \stopinterface
-\startinterface german \loadsetups[cont-de.xml] \stopinterface
-\startinterface french \loadsetups[cont-fr.xml] \stopinterface
-\startinterface italian \loadsetups[cont-it.xml] \stopinterface
-\startinterface czech \loadsetups[cont-cs.xml] \stopinterface
-\startinterface romanian \loadsetups[cont-ro.xml] \stopinterface
+\doifelsemode {setups:traditional} {
+
+ \startinterface english \loadsetups[cont-en.xml] \stopinterface
+ \startinterface dutch \loadsetups[cont-nl.xml] \stopinterface
+ \startinterface german \loadsetups[cont-de.xml] \stopinterface
+ \startinterface french \loadsetups[cont-fr.xml] \stopinterface
+ \startinterface italian \loadsetups[cont-it.xml] \stopinterface
+ \startinterface czech \loadsetups[cont-cs.xml] \stopinterface
+ \startinterface romanian \loadsetups[cont-ro.xml] \stopinterface
+
+} {
+
+ \loadsetups[i-context.xml]
+
+}
\startinterface dutch \definecolor[LocalColor][r=.75,g=.25,b=.25] \stopinterface
\startinterface english \definecolor[LocalColor][r=.25,g=.75,b=.25] \stopinterface
@@ -160,6 +150,8 @@
[\c!rulethickness=1pt,
\c!rulecolor=TitleColor]
+\dontcomplain
+
\starttext
\setupbackgrounds
diff --git a/tex/context/modules/mkiv/x-setups-proofing.mkiv b/tex/context/modules/mkiv/x-setups-proofing.mkiv
new file mode 100644
index 000000000..e40ee2ad1
--- /dev/null
+++ b/tex/context/modules/mkiv/x-setups-proofing.mkiv
@@ -0,0 +1,50 @@
+%D \module
+%D [ file=setups-proofing,
+%D version=2016.04.05,
+%D title=\CONTEXT\ Setup Definitions,
+%D subtitle=Macro Definitions,
+%D author={Hans Hagen & Wolfgang Schuster},
+%D date=\currentdate,
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% <?context-directive job ctxfile x-setups.ctx ?>
+
+\usemodule[x][setups-basics]
+
+\unprotect
+
+\loadsetups
+ [\jobname.xml]
+
+\setupbodyfont
+ [10pt]
+
+\setuplayout
+ [\c!width=middle,
+ \c!topspace=1cm,
+ \c!bottomspace=1cm,
+ \c!backspace=1cm,
+ \c!cutspace=1cm,
+ \c!footer=0pt,
+ \c!header=1cm]
+
+\setuplayout
+ [\v!middle]
+
+\setupframedtext
+ [setuptext]
+ [\c!background=setupfilename]
+
+\protect
+
+\starttext
+
+ \loadsetups[i-common-definitions]
+
+ \placeeverysetup
+
+\stoptext
diff --git a/tex/context/modules/mkiv/x-setups.ctx b/tex/context/modules/mkiv/x-setups.ctx
new file mode 100644
index 000000000..0ca4d8f6f
--- /dev/null
+++ b/tex/context/modules/mkiv/x-setups.ctx
@@ -0,0 +1,15 @@
+<?xml version='1.0' standalone='yes'?>
+
+<!-- this is also a demo of using the xml interface -->
+
+<ctx:job>
+ <ctx:message>generating interface setups</ctx:message>
+ <ctx:process>
+ <ctx:flags>
+ <ctx:flag>purge</ctx:flag>
+ </ctx:flags>
+ <ctx:resources>
+ <ctx:environment>x-setups-proofing.mkiv</ctx:environment>
+ </ctx:resources>
+ </ctx:process>
+</ctx:job>
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index e4ae182b7..6ca1ac01c 100644
--- a/tex/generic/context/luatex/luatex-fonts-merged.lua
+++ b/tex/generic/context/luatex/luatex-fonts-merged.lua
@@ -1,6 +1,6 @@
-- merged file : c:/data/develop/context/sources/luatex-fonts-merged.lua
-- parent file : c:/data/develop/context/sources/luatex-fonts.lua
--- merge date : 04/04/16 13:06:24
+-- merge date : 04/10/16 23:52:50
do -- begin closure to overcome local limits and interference
@@ -8184,7 +8184,7 @@ local reservednames={ [0]="copyright",
"manufacturer",
"designer",
"description",
- "venderurl",
+ "vendorurl",
"designerurl",
"license",
"licenseurl",
@@ -8244,7 +8244,15 @@ local decoders={
macintosh={},
iso={},
windows={
- ["unicode bmp"]=utf16_to_utf8_be
+ ["unicode semantics"]=utf16_to_utf8_be,
+ ["unicode bmp"]=utf16_to_utf8_be,
+ ["unicode full"]=utf16_to_utf8_be,
+ ["unicode 1.0 semantics"]=utf16_to_utf8_be,
+ ["unicode 1.1 semantics"]=utf16_to_utf8_be,
+ ["unicode 2.0 bmp"]=utf16_to_utf8_be,
+ ["unicode 2.0 full"]=utf16_to_utf8_be,
+ ["unicode variation sequences"]=utf16_to_utf8_be,
+ ["unicode full repertoire"]=utf16_to_utf8_be,
},
custom={},
}
@@ -8355,13 +8363,23 @@ local panosewidths={
[ 8]="verycondensed",
[ 9]="monospaced",
}
-function readers.name(f,fontdata)
+local platformnames={
+ postscriptname=true,
+ fullname=true,
+ family=true,
+ subfamily=true,
+ typographicfamily=true,
+ typographicsubfamily=true,
+ compatiblefullname=true,
+}
+function readers.name(f,fontdata,specification)
local datatable=fontdata.tables.name
if datatable then
setposition(f,datatable.offset)
local format=readushort(f)
local nofnames=readushort(f)
local offset=readushort(f)
+ local start=datatable.offset+offset
local namelists={
unicode={},
windows={},
@@ -8388,7 +8406,7 @@ function readers.name(f,fontdata)
language=language,
name=name,
length=readushort(f),
- offset=readushort(f),
+ offset=start+readushort(f),
}
else
skipshort(f,2)
@@ -8406,7 +8424,6 @@ function readers.name(f,fontdata)
skipshort(f,5)
end
end
- local start=datatable.offset+offset
local names={}
local done={}
local function filter(platform,e,l)
@@ -8418,7 +8435,7 @@ function readers.name(f,fontdata)
local encoding=name.encoding
local language=name.language
if (not e or encoding==e) and (not l or language==l) then
- setposition(f,start+name.offset)
+ setposition(f,name.offset)
local content=readstring(f,name.length)
local decoder=decoders[platform]
if decoder then
@@ -8444,10 +8461,52 @@ function readers.name(f,fontdata)
filter("macintosh")
filter("unicode")
fontdata.names=names
+ if specification.platformnames then
+ local collected={}
+ for platform,namelist in next,namelists do
+ local filtered=false
+ for i=1,#namelist do
+ local entry=namelist[i]
+ local name=entry.name
+ if platformnames[name] then
+ setposition(f,entry.offset)
+ local content=readstring(f,entry.length)
+ local encoding=entry.encoding
+ local decoder=decoders[platform]
+ if decoder then
+ decoder=decoder[encoding]
+ end
+ if decoder then
+ content=decoder(content)
+ end
+ if filtered then
+ filtered[name]=content
+ else
+ filtered={ [name]=content }
+ end
+ end
+ end
+ if filtered then
+ collected[platform]=filtered
+ end
+ end
+ fontdata.platformnames=collected
+ end
else
fontdata.names={}
end
end
+local validutf=lpeg.patterns.validutf8
+local function getname(fontdata,key)
+ local names=fontdata.names
+ if names then
+ local value=names[key]
+ if value then
+ local content=value.content
+ return lpegmatch(validutf,content) and content or nil
+ end
+ end
+end
readers["os/2"]=function(f,fontdata)
local datatable=fontdata.tables["os/2"]
if datatable then
@@ -9233,20 +9292,10 @@ local function unpackoutlines(data)
end
otf.packoutlines=packoutlines
otf.unpackoutlines=unpackoutlines
-local validutf=lpeg.patterns.validutf8
-local function getname(fontdata,key)
- local names=fontdata.names
- if names then
- local value=names[key]
- if value then
- local content=value.content
- return lpegmatch(validutf,content) and content or nil
- end
- end
-end
-local function getinfo(maindata,sub)
+local function getinfo(maindata,sub,platformnames)
local fontdata=sub and maindata.subfonts and maindata.subfonts[sub] or maindata
local names=fontdata.names
+ local info=nil
if names then
local metrics=fontdata.windowsmetrics or {}
local postscript=fontdata.postscript or {}
@@ -9255,13 +9304,23 @@ local function getinfo(maindata,sub)
local filename=fontdata.filename
local weight=getname(fontdata,"weight") or cffinfo.weight or metrics.weight
local width=getname(fontdata,"width") or cffinfo.width or metrics.width
- return {
+ local fontname=getname(fontdata,"postscriptname")
+ local fullname=getname(fontdata,"fullname")
+ local family=getname(fontdata,"family")
+ local subfamily=getname(fontdata,"subfamily")
+ local familyname=getname(fontdata,"typographicfamily") or family
+ local subfamilyname=getname(fontdata,"typographicsubfamily") or subfamily
+ local compatiblename=getname(fontdata,"compatiblefullname")
+ info={
subfontindex=fontdata.subfontindex or sub or 0,
- fontname=getname(fontdata,"postscriptname"),
- fullname=getname(fontdata,"fullname"),
- familyname=getname(fontdata,"typographicfamily") or getname(fontdata,"family"),
- subfamily=getname(fontdata,"subfamily"),
- modifiers=getname(fontdata,"typographicsubfamily"),
+ version=getname(fontdata,"version"),
+ fontname=fontname,
+ fullname=fullname,
+ family=family,
+ subfamily=subfamily,
+ familyname=familyname,
+ subfamilyname=subfamilyname,
+ compatiblename=compatiblename,
weight=weight and lower(weight),
width=width and lower(width),
pfmweight=metrics.weightclass or 400,
@@ -9276,20 +9335,23 @@ local function getinfo(maindata,sub)
monospaced=(tonumber(postscript.monospaced or 0)>0) or metrics.panosewidth=="monospaced",
averagewidth=metrics.averagewidth,
xheight=metrics.xheight,
+ capheight=metrics.capheight,
ascender=metrics.typoascender,
descender=metrics.typodescender,
+ platformnames=platformnames and fontdata.platformnames or nil,
}
elseif n then
- return {
+ info={
filename=fontdata.filename,
comment="there is no info for subfont "..n,
}
else
- return {
+ info={
filename=fontdata.filename,
comment="there is no info",
}
end
+ return info
end
local function loadtables(f,specification,offset)
if offset then
@@ -9470,7 +9532,10 @@ local function loadfont(specification,n)
specification.details=true
end
if specification.details then
- specification.info=true
+ specification.info=true
+ end
+ if specification.platformnames then
+ specification.platformnames=true
end
local function message(str)
report("fatal error in file %a: %s\n%s",specification.filename,str,debug.traceback())
@@ -9538,27 +9603,36 @@ function readers.loadfont(filename,n)
}
end
end
-function readers.getinfo(filename,n,details)
+function readers.getinfo(filename,specification)
+ local subfont=nil
+ local platformname=false
+ if type(specification)=="table" then
+ subfont=tonumber(specification.subfont)
+ platformnames=specification.platformnames
+ else
+ subfont=tonumber(specification)
+ end
local fontdata=loadfont {
filename=filename,
details=true,
+ platformnames=platformnames,
}
if fontdata then
local subfonts=fontdata.subfonts
if not subfonts then
- return getinfo(fontdata)
- elseif type(n)~="number" then
+ return getinfo(fontdata,nil,platformnames)
+ elseif not subfont then
local info={}
for i=1,#subfonts do
- info[i]=getinfo(fontdata,i)
+ info[i]=getinfo(fontdata,i,platformnames)
end
return info
- elseif n>1 and n<=subfonts then
- return getinfo(fontdata,n)
+ elseif subfont>1 and subfont<=#subfonts then
+ return getinfo(fontdata,subfont,platformnames)
else
return {
filename=filename,
- comment="there is no subfont "..n.." in this file"
+ comment="there is no subfont "..subfont.." in this file"
}
end
else
@@ -20229,12 +20303,12 @@ function otf.dataset(tfmdata,font)
end
return rl
end
-local function report_disc(n)
- report_run("kern: %s > %s",disc,languages.serializediscretionary(disc))
+local function report_disc(what,n)
+ report_run("%s: %s > %s",what,n,languages.serializediscretionary(n))
end
local function kernrun(disc,k_run,font,attr,...)
if trace_kernruns then
- report_disc("kern")
+ report_disc("kern",disc)
end
local prev,next=getboth(disc)
local nextstart=next
@@ -20315,7 +20389,7 @@ local function kernrun(disc,k_run,font,attr,...)
end
local function comprun(disc,c_run,...)
if trace_compruns then
- report_disc("comp")
+ report_disc("comp",disc)
end
local pre,post,replace=getdisc(disc)
local renewed=false
@@ -20355,20 +20429,20 @@ local function comprun(disc,c_run,...)
end
local function testrun(disc,t_run,c_run,...)
if trace_testruns then
- report_disc("test")
+ report_disc("test",disc)
end
local prev,next=getboth(disc)
if not next then
return
end
- local pre,post,replace,pretail,posttail,replacetail=getdisc(disc)
+ local pre,post,replace,pretail,posttail,replacetail=getdisc(disc,true)
local done=false
if replace and prev then
setlink(replacetail,next)
- if t_run(replace,next,...) then
- setfield(disc,"replace",nil)
+ local ok,overflow=t_run(replace,next,...)
+ if ok and overflow then
+ setfield(disc,"replace",nil)
setlink(prev,replace)
- setlink(replacetail,next)
setboth(disc)
flush_node_list(disc)
return replace,true
@@ -20460,7 +20534,13 @@ local function t_run_single(start,stop,font,attr,lookupcache)
if lookupmatch then
local s=getnext(start)
local l=nil
+ local d=0
while s do
+ if s==stop then
+ d=1
+ elseif d>0 then
+ d=d+1
+ end
local lg=lookupmatch[getchar(s)]
if lg then
l=lg
@@ -20470,7 +20550,7 @@ local function t_run_single(start,stop,font,attr,lookupcache)
end
end
if l and l.ligature then
- return true
+ return true,d>1
end
end
end
@@ -20560,7 +20640,13 @@ local function t_run_multiple(start,stop,font,attr,steps,nofsteps)
if lookupmatch then
local s=getnext(start)
local l=nil
+ local d=0
while s do
+ if s==stop then
+ d=1
+ elseif d>0 then
+ d=d+1
+ end
local lg=lookupmatch[getchar(s)]
if lg then
l=lg
@@ -20570,7 +20656,7 @@ local function t_run_multiple(start,stop,font,attr,steps,nofsteps)
end
end
if l and l.ligature then
- return true
+ return true,d>1
end
end
else
@@ -23666,7 +23752,6 @@ local fonts=fonts
local nodes=nodes
local nuts=nodes.nuts
local traverse_id=nuts.traverse_id
-local free_node=nuts.free
local remove_node=nuts.remove
local glyph_code=nodes.nodecodes.glyph
local disc_code=nodes.nodecodes.disc
@@ -23769,9 +23854,7 @@ function nodes.handlers.nodepass(head)
end
if redundant then
for i=1,#redundant do
- local n=redundant[i]
- remove_node(nuthead,n)
- free_node(n)
+ remove_node(nuthead,redundant[i],true)
end
end
for d in traverse_id(disc_code,nuthead) do