summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2000-10-22 00:00:00 +0200
committerHans Hagen <pragma@wxs.nl>2000-10-22 00:00:00 +0200
commite78478392e9717499b101d0fed642c945c104097 (patch)
tree7f3dbe64040cbcf413644cae6516872c0fb5cd2b
parent73000ea3b7c8225c980f40ef90b86e2d57fe4003 (diff)
downloadcontext-e78478392e9717499b101d0fed642c945c104097.tar.gz
stable 2000.10.22
-rw-r--r--context/config/texexec.rme144
-rw-r--r--context/data/cont-cz.tws4029
-rw-r--r--context/data/cont-de.tws4029
-rw-r--r--context/data/cont-en.tws4029
-rw-r--r--context/data/cont-nl.tws4029
-rw-r--r--context/perltk/cont_mis.pm69
-rw-r--r--context/perltk/cont_set.pm650
-rw-r--r--context/perltk/fdf2tan.pl118
-rw-r--r--context/perltk/mptopdf.pl46
-rw-r--r--context/perltk/runperl.zipbin0 -> 1451 bytes
-rw-r--r--context/perltk/texexec.pl1707
-rw-r--r--context/perltk/texexec.rme144
-rw-r--r--context/perltk/texshow.pl90
-rw-r--r--context/perltk/texutil.pl2465
-rw-r--r--doc/context/base/context.rme60
-rw-r--r--doc/context/base/minstall.pdfbin0 -> 88700 bytes
-rw-r--r--doc/context/base/mreadme.pdfbin0 -> 73809 bytes
-rw-r--r--dvips/config/context.map8
-rw-r--r--fonts/tfm/hoekwater/context/contnav.tfmbin0 -> 1032 bytes
-rw-r--r--fonts/type1/hoekwater/context/contnav.pfbbin0 -> 6695 bytes
-rw-r--r--metapost/context/metafun.mp41
-rw-r--r--metapost/context/mp-back.mp206
-rw-r--r--metapost/context/mp-butt.mp75
-rw-r--r--metapost/context/mp-char.mp968
-rw-r--r--metapost/context/mp-core.mp232
-rw-r--r--metapost/context/mp-page.mp218
-rw-r--r--metapost/context/mp-shap.mp261
-rw-r--r--metapost/context/mp-spec.mp147
-rw-r--r--metapost/context/mp-text.mp202
-rw-r--r--metapost/context/mp-tool.mp1216
-rw-r--r--tex/context/base/colo-ini.tex90
-rw-r--r--tex/context/base/colo-rgb.tex139
-rw-r--r--tex/context/base/cont-cz.tex6
-rw-r--r--tex/context/base/cont-de.tex8
-rw-r--r--tex/context/base/cont-en.tex8
-rw-r--r--tex/context/base/cont-fil.tex30
-rw-r--r--tex/context/base/cont-it.tex34
-rw-r--r--tex/context/base/cont-log.tex27
-rw-r--r--tex/context/base/cont-new.tex452
-rw-r--r--tex/context/base/cont-nl.tex8
-rw-r--r--tex/context/base/cont-sys.rme16
-rw-r--r--tex/context/base/cont-uk.tex2
-rw-r--r--tex/context/base/cont-usr.ori28
-rw-r--r--tex/context/base/context.tex60
-rw-r--r--tex/context/base/core-buf.tex132
-rw-r--r--tex/context/base/core-con.tex15
-rw-r--r--tex/context/base/core-dat.tex26
-rw-r--r--tex/context/base/core-des.tex2
-rw-r--r--tex/context/base/core-fig.tex460
-rw-r--r--tex/context/base/core-fil.tex14
-rw-r--r--tex/context/base/core-fld.tex21
-rw-r--r--tex/context/base/core-fnt.tex125
-rw-r--r--tex/context/base/core-grd.tex38
-rw-r--r--tex/context/base/core-int.tex162
-rw-r--r--tex/context/base/core-itm.tex55
-rw-r--r--tex/context/base/core-lst.tex67
-rw-r--r--tex/context/base/core-mat.tex16
-rw-r--r--tex/context/base/core-mps.tex143
-rw-r--r--tex/context/base/core-mul.tex344
-rw-r--r--tex/context/base/core-nav.tex8
-rw-r--r--tex/context/base/core-new.tex17
-rw-r--r--tex/context/base/core-not.tex64
-rw-r--r--tex/context/base/core-ntb.tex921
-rw-r--r--tex/context/base/core-obj.tex10
-rw-r--r--tex/context/base/core-pag.tex2
-rw-r--r--tex/context/base/core-pos.tex1088
-rw-r--r--tex/context/base/core-ref.tex345
-rw-r--r--tex/context/base/core-rul.tex411
-rw-r--r--tex/context/base/core-sec.tex146
-rw-r--r--tex/context/base/core-syn.tex12
-rw-r--r--tex/context/base/core-tab.tex11
-rw-r--r--tex/context/base/core-tbl.tex11
-rw-r--r--tex/context/base/core-uti.tex6
-rw-r--r--tex/context/base/core-var.tex1
-rw-r--r--tex/context/base/core-ver.tex289
-rw-r--r--tex/context/base/enco-ans.tex4
-rw-r--r--tex/context/base/enco-chi.tex46
-rw-r--r--tex/context/base/enco-ec.tex4
-rw-r--r--tex/context/base/enco-fde.tex118
-rw-r--r--tex/context/base/enco-fpl.tex90
-rw-r--r--tex/context/base/enco-fro.tex33
-rw-r--r--tex/context/base/enco-ibm.tex2
-rw-r--r--tex/context/base/enco-il2.tex4
-rw-r--r--tex/context/base/enco-ini.tex118
-rw-r--r--tex/context/base/enco-pdf.tex4
-rw-r--r--tex/context/base/enco-pol.tex2
-rw-r--r--tex/context/base/enco-pro.tex72
-rw-r--r--tex/context/base/enco-win.tex6
-rw-r--r--tex/context/base/enco-x5.tex4
-rw-r--r--tex/context/base/font-aer.tex69
-rw-r--r--tex/context/base/font-ber.tex12
-rw-r--r--tex/context/base/font-chi.tex733
-rw-r--r--tex/context/base/font-fil.tex5
-rw-r--r--tex/context/base/font-ini.tex549
-rw-r--r--tex/context/base/font-uni.tex10
-rw-r--r--tex/context/base/java-fld.tex109
-rw-r--r--tex/context/base/java-ini.tex24
-rw-r--r--tex/context/base/lang-alt.tex10
-rw-r--r--tex/context/base/lang-ana.tex6
-rw-r--r--tex/context/base/lang-art.tex10
-rw-r--r--tex/context/base/lang-bal.tex10
-rw-r--r--tex/context/base/lang-cel.tex10
-rw-r--r--tex/context/base/lang-ger.tex336
-rw-r--r--tex/context/base/lang-grk.tex10
-rw-r--r--tex/context/base/lang-ind.tex10
-rw-r--r--tex/context/base/lang-ini.tex30
-rw-r--r--tex/context/base/lang-ita.tex203
-rw-r--r--tex/context/base/lang-lab.tex3
-rw-r--r--tex/context/base/lang-sla.tex159
-rw-r--r--tex/context/base/lang-ura.tex10
-rw-r--r--tex/context/base/lang-vn.tex12
-rw-r--r--tex/context/base/m-chart.tex1198
-rw-r--r--tex/context/base/m-cweb.tex1371
-rw-r--r--tex/context/base/m-pictex.tex2
-rw-r--r--tex/context/base/m-units.tex22
-rw-r--r--tex/context/base/main-001.tex2207
-rw-r--r--tex/context/base/main-002.tex221
-rw-r--r--tex/context/base/main-003.tex539
-rw-r--r--tex/context/base/meta-clp.tex164
-rw-r--r--tex/context/base/meta-fig.tex85
-rw-r--r--tex/context/base/meta-ini.tex510
-rw-r--r--tex/context/base/meta-pag.tex115
-rw-r--r--tex/context/base/meta-txt.tex261
-rw-r--r--tex/context/base/mult-com.tex3188
-rw-r--r--tex/context/base/mult-con.tex3826
-rw-r--r--tex/context/base/mult-ini.tex126
-rw-r--r--tex/context/base/mult-sys.tex32
-rw-r--r--tex/context/base/s-abr-01.tex10
-rw-r--r--tex/context/base/s-chi-00.tex6
-rw-r--r--tex/context/base/s-map-01.tex11
-rw-r--r--tex/context/base/s-pre-05.tex8
-rw-r--r--tex/context/base/s-pre-15.tex179
-rw-r--r--tex/context/base/s-pre-19.tex328
-rw-r--r--tex/context/base/spec-fdf.tex44
-rw-r--r--tex/context/base/spec-ini.tex34
-rw-r--r--tex/context/base/spec-mis.tex9
-rw-r--r--tex/context/base/spec-pdf.tex30
-rw-r--r--tex/context/base/spec-ps.tex2
-rw-r--r--tex/context/base/spec-tpd.tex11
-rw-r--r--tex/context/base/spec-tr.tex2
-rw-r--r--tex/context/base/supp-ali.tex140
-rw-r--r--tex/context/base/supp-box.tex486
-rw-r--r--tex/context/base/supp-emp.tex382
-rw-r--r--tex/context/base/supp-eps.tex29
-rw-r--r--tex/context/base/supp-fil.tex51
-rw-r--r--tex/context/base/supp-fun.tex125
-rw-r--r--tex/context/base/supp-lan.tex116
-rw-r--r--tex/context/base/supp-mat.tex16
-rw-r--r--tex/context/base/supp-mis.tex117
-rw-r--r--tex/context/base/supp-mpe.tex433
-rw-r--r--tex/context/base/supp-mps.tex537
-rw-r--r--tex/context/base/supp-pdf.tex116
-rw-r--r--tex/context/base/supp-ran.tex25
-rw-r--r--tex/context/base/symb-eur.tex52
-rw-r--r--tex/context/base/symb-ini.tex94
-rw-r--r--tex/context/base/syst-etx.tex215
-rw-r--r--tex/context/base/syst-ext.tex456
-rw-r--r--tex/context/base/syst-gen.tex261
-rw-r--r--tex/context/base/syst-new.tex37
-rw-r--r--tex/context/base/syst-tex.tex53
-rw-r--r--tex/context/base/thrd-ran.tex4
-rw-r--r--tex/context/base/thrd-tab.tex10
-rw-r--r--tex/context/base/typo-ini.tex40
-rw-r--r--tex/context/base/verb-eif.tex211
-rw-r--r--tex/context/base/verb-ini.tex136
-rw-r--r--tex/context/base/verb-pas.tex266
-rw-r--r--tex/context/base/verb-pl.tex2
-rw-r--r--tex/context/base/verb-sql.tex22
-rw-r--r--tex/context/base/verb-xml.tex409
-rw-r--r--tex/context/config/cont-cz.ini2
-rw-r--r--tex/context/config/cont-de.ini2
-rw-r--r--tex/context/config/cont-en.ini2
-rw-r--r--tex/context/config/cont-nl.ini2
-rw-r--r--tex/context/config/cont-uk.ini2
-rw-r--r--tex/context/config/cont-usr.tex28
-rw-r--r--tex/context/config/context.ini2
-rw-r--r--tex/generic/context/m-ch-de.tex10
-rw-r--r--tex/generic/context/m-ch-en.tex10
-rw-r--r--tex/generic/context/m-ch-nl.tex10
-rw-r--r--tex/generic/context/m-metapo.tex89
-rw-r--r--tex/generic/context/mptopdf.tex143
-rw-r--r--tex/generic/context/ppchtex.noc206
-rw-r--r--tex/latex/context/m-ch-de.sty1
-rw-r--r--tex/latex/context/m-ch-en.sty1
-rw-r--r--tex/latex/context/m-ch-nl.sty1
-rw-r--r--tex/latex/context/m-metapo.sty1
-rw-r--r--tex/latex/context/m-pictex.sty1
187 files changed, 45375 insertions, 8410 deletions
diff --git a/context/config/texexec.rme b/context/config/texexec.rme
new file mode 100644
index 000000000..1e0f0a3c2
--- /dev/null
+++ b/context/config/texexec.rme
@@ -0,0 +1,144 @@
+% == introduction ==
+%
+% This is 'texexec.ini', the file used by texexec to determine where
+% to find files, what TeX to use, what flags to pass, etc. Although
+% TeXexec tries to locate things itself, a little help is sometimes
+% needed. One can influence texexec by setting some variables. These
+% are only needed when the automatic determined settings fail.
+%
+% == interfacing ==
+%
+% UsedInterfaces nl,en the formats generated with --make
+% UserInterface nl the default format used
+%
+% == binaries ==
+%
+% TeXExecutable pdfetex the TeX binary to use
+% MpExecutable mpost the MetaPost binary to use
+% MpToTeXExecutable mpto the MetaPost to TeX converter
+% DviToMpExecutable dvitomp the DVI to MetaPost converter
+%
+% == Scripts ==
+%
+% DviSpecialScript dvispec the DVI special filter script
+%
+% == flags ==
+%
+% TeXFormatFlag & the format introducer
+% TeXVirginFlag -ini the format generation switch
+%
+% == paths ==
+%
+% TeXFormatPath texmf/... fmt files
+% ConTeXtPath texmf/tex/context/base sources
+% SetupPath texmf/tex/base/user cont-sys/usr file
+% TeXScriptsPath texmf/context/perltk scripts
+% TeXFontsPath texmf font files
+%
+% == the main shell setting ==
+%
+% As shown below, one can define his/her own sections. We default to
+% the teTeX/fpTeX web2c based settings.
+
+set TeXShell to tetex
+%set TeXShell to fptex
+%set TeXShell to miktex
+%set TeXShell to private
+
+% == setting up the variables ==
+%
+% Here are some general defaults. They can be overruled later.
+
+set UsedInterfaces to en,nl,de,uk
+set UserInterface to en
+
+set TeXExecutable to tex
+
+set MpExecutable to mpost
+set MpToTeXExecutable to mpto
+set DviToMpExecutable to dvitomp
+set DviSpecialScript to dvispec
+
+set MpFormat to metafun
+
+set TeXFormatFlag to &
+set MpFormatFlag to &
+
+set TeXFontsPath to l:/tex/texmf;l:/tex/texmf-local;
+
+% For teTeX the next settings will do.
+
+for tetex set UsedInterfaces to en,nl,de,uk
+for tetex set UserInterface to en
+for tetex set TeXExecutable to pdfetex
+for tetex set TeXVirginFlag to -ini
+for tetex set TeXPassString to -progname=context
+for tetex set TeXBatchString to -int=batchmode
+for tetex set MpToTeXExecutable to mptotex
+for tetex set MpVirginFlag to -ini
+for tetex set MpPassString to -progname=mpost
+for tetex set MpBatchString to -int=batchmode
+
+% These also apply to fpTeX.
+
+for fptex set UsedInterfaces to en,nl,de,uk
+for fptex set UserInterface to en
+for fptex set TeXExecutable to pdfetex
+for fptex set TeXVirginFlag to -ini
+for fptex set TeXPassString to -progname=context
+for fptex set TeXBatchString to -int=batchmode
+for fptex set MpToTeXExecutable to mptotex
+for fptex set MpVirginFlag to -ini
+for fptex set MpPassString to -progname=mpost
+for fptex set MpBatchString to -int=batchmode
+
+% MikTeX users probably have to set up some paths too.
+
+for miktex set UsedInterfaces to en,nl,de,uk
+for miktex set UserInterface to en
+for miktex set TeXExecutable to pdftex
+for miktex set TeXVirginFlag to --initialize
+for miktex set TeXBatchString to --interaction=batchmode
+for miktex set MpToTeXExecutable to mptotex
+for miktex set MpVirginFlag to --initialize
+for miktex set MpPassString to
+for miktex set MpBatchString to --interaction=batchmode
+
+% These are the settings used on some machines at PRAGMA ADE that
+% don't use the texmf tree. They can serve as an example for local
+% settings. Local settings should either be added to the previous
+% one, or go without the 'for' directives. Consider these
+% settings as an example.
+
+for private set UsedInterfaces to en,nl
+for private set UserInterface to nl
+for private set ConTeXtPath to t:/sources/
+for private set SetupPath to t:/perl/
+for private set TeXScriptsPath to t:/perl/
+
+% == read this too ==
+%
+% If this file is called 'texexec.rme', copy it to 'texexec.ini',
+% check the settings above, change them according to your TeX
+% distribution, and say:
+%
+% texexec --verbose
+%
+% When set up properly, you should see your local settings fly by.
+% When these settings are ok, the next call should work:
+%
+% texexec --make
+%
+% and you should be able to process a file by saying
+%
+% texexec filename
+%
+% See 'mtexexec.pdf' for more information on the flags you can use with
+% 'texexec'. Also make sure you have the 'texutil' script installed in
+% the same path as 'texexec'.
+
+% Experimental
+%
+% set TcXPath to d:/tex/texmf/web2c
+% set FmtLanguage to pl
+% set FmtBodyFont to plr
diff --git a/context/data/cont-cz.tws b/context/data/cont-cz.tws
new file mode 100644
index 000000000..965258bce
--- /dev/null
+++ b/context/data/cont-cz.tws
@@ -0,0 +1,4029 @@
+startsetup
+com:instalacejazyka:
+typ:val/vars/:
+val:*jmeno::
+var:mezerovani:zhustene,siroky::
+var:lefthyphenmin:*dimenze::
+var:righthyphenmin:*dimenze::
+var:status:start,stop::
+var:vetavlevo:*prikaz::
+var:vetavpravo:*prikaz::
+var:podvetavlevo:*prikaz::
+var:podvetavpravo:*prikaz::
+var:citovatvlevo:*prikaz::
+var:citovatvpravo:*prikaz::
+var:citacevlevo:*prikaz::
+var:citacevpravo:*prikaz::
+var:implicitni:*jmeno::
+stopsetup
+
+startsetup
+com:nastavjazyk:
+typ:val/vars/:
+ivr:instalacejazyka::
+stopsetup
+
+startsetup
+com:jazyk:
+typ:val/:
+val:nl,fr,en,uk,de,sp,cz,..:nl:
+stopsetup
+
+startsetup
+com:hlavnijazyk:
+typ:val/:
+val:nl,fr,en,uk,de,sp,cz,..:nl:
+stopsetup
+
+startsetup
+com:prelozit:
+typ:vars/:
+var:*jmeno:*text::
+stopsetup
+
+startsetup
+com:uzijkodovani:
+typ:vals/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:uzijspeciality:
+typ:vals/:
+val:reset,*jmeno::
+stopsetup
+
+startsetup
+com:definujvystup:
+typ:val/vals/:
+val:*jmeno::
+val:*jmeno::
+stopsetup
+
+startsetup
+com:nastavvystup:
+typ:vals/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:definujprostredizakladnihofontu:
+typ:val/vars/:
+val:5pt,...,12pt,default::
+var:text:*dimenze::
+var:script:*dimenze::
+var:scriptscript:*dimenze::
+var:x:*dimenze::
+var:xx:*dimenze::
+var:male:*dimenze::
+var:velky:*dimenze::
+stopsetup
+
+startsetup
+com:nastavprostredizakladnihofontu:
+typ:val/vars/:
+ivl:nastavzakladnifont::
+ivr:nastavzakladnifont::
+stopsetup
+
+startsetup
+com:ukazpostredizakladnihofontu:
+typ:vals/:
+ivl:nastavzakladnifont::
+stopsetup
+
+startsetup
+com:definujzakladnifont:
+typ:vals/val/vars/:
+val:5pt,...,12pt,default::
+val:rm,ss,tt,mm,hw,cg::
+var:tf:*soubor::
+var:bf:*soubor::
+var:sl:*soubor::
+var:it:*soubor::
+var:bs:*soubor::
+var:bi:*soubor::
+var:sc:*soubor::
+var:ex:*soubor::
+var:mi:*soubor::
+var:sy:*soubor::
+var:ma:*soubor::
+var:mb:*soubor::
+var:mc:*soubor::
+stopsetup
+
+startsetup
+com:ukazzakladnifont:
+typ:vals/:
+ivl:nastavzakladnifont::
+stopsetup
+
+startsetup
+com:nastavzakladnifont:
+typ:vals/:
+val:*jmeno, serif,pravidelne,antikva, sans,podpora,bezserifu, mono,opis,strojopis, rukopisne,kaligraficke, 5pt,...,12pt:sau,ibm,12pt,serif:
+stopsetup
+
+startsetup
+com:prepninazakladnifont:
+typ:vals/:
+val:5pt,...,12pt,male,velke,globalne::
+stopsetup
+
+startsetup
+com:definujfont:
+typ:val/val/:
+val:*jmeno::
+val:*soubor::
+stopsetup
+
+startsetup
+com:setupstrut:
+typ:vals/:
+val:ano,ne,kap,*text:ano:
+stopsetup
+
+startsetup
+com:nastavbarvu:
+typ:val/:
+val:*jmeno:rgb:
+stopsetup
+
+startsetup
+com:nastavbarvy:
+typ:vars/:
+var:status:start,stop,globalne,lokalne::
+var:konverze:ano,ne,vzdy::
+var:redukce:ano,ne::
+var:rgb:ano,ne::
+var:cmyk:ano,ne::
+stopsetup
+
+startsetup
+com:definujbarvu:
+typ:val/vars/:
+val:*jmeno::
+var:r:*text::
+var:g:*text::
+var:b:*text::
+var:c:*text::
+var:m:*text::
+var:y:*text::
+var:k:*text::
+var:s:*text::
+stopsetup
+
+startsetup
+com:startbarva:
+typ:val/stp/:
+val:*jmeno::
+val:*text::
+stopsetup
+
+startsetup
+com:barva:
+typ:val/arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:sedabarva:
+typ:val/:
+val:*text::
+stopsetup
+
+startsetup
+com:ukazbarvu:
+typ:val/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:definujpaletu:
+typ:val/vars/:
+val:*jmeno::
+var:*jmeno:*jmeno::
+stopsetup
+
+startsetup
+com:nastavpaletu:
+typ:val/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:definujskupinubarev:
+typ:val/val/vals/:
+val:*jmeno::
+val:rgb,cmyk,seda,s:rgb:
+val:trips/::
+stopsetup
+
+startsetup
+com:ukazpaletu:
+typ:val/vals/:
+val:*jmeno::
+val:horizontalne,vertikalne,jmeno,hodnota::
+stopsetup
+
+startsetup
+com:ukazskupinubarev:
+typ:val/vals/:
+val:*jmeno::
+val:horizontalne,vertikalne,jmeno,hodnota,cislo::
+stopsetup
+
+startsetup
+com:porovnejpaletu:
+typ:val/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:porovnejskupinubarev:
+typ:val/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:ukazupravu:
+typ::
+stopsetup
+
+startsetup
+com:nastavtype:
+typ:var/:
+var:mezera:zap,vyp::
+var:volba:sklonene,normalni,zadny::
+var:pismeno:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:barva:*jmeno::
+stopsetup
+
+startsetup
+com:opis:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:pis:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:tex:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:arg:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:definujopis:
+typ:val/vars/:
+val:soubor,typing,*jmeno::
+ivr:nastavopis::
+stopsetup
+
+startsetup
+com:nastavopis:
+typ:val/vars/:
+val:soubor,typing,*jmeno::
+var:mezera:zap,vyp::
+var:stranka:ano,ne::
+var:volba:sklonene,normalni,prikazy,barevne,zadny::
+var:text:ano,ne::
+var:iprikaz:*prikaz::
+var:vprikaz:*prikaz::
+var:cprikaz:*prikaz::
+var:pred:*prikaz::
+var:po:*prikaz::
+var:marginalie:*dimenze,standardni::
+var:sudamarginalie:*dimenze::
+var:lichyokraj:*dimenze::
+var:prazdny:*dimenze,male,stredni,velke,standardni,pulradku,radek::
+var:escape:*\@@mssetupcharacter ::
+var:odsadpristi:ano,ne::
+var:pismeno:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:barva:*jmeno::
+var:paleta:*jmeno::
+stopsetup
+
+startsetup
+com:starttyping:
+typ:stp/:
+stopsetup
+
+startsetup
+com:opissoubor:
+typ:arg/arg/:
+val:*jmeno::
+val:*soubor::
+stopsetup
+
+startsetup
+com:nastavpoznamkypodcarou:
+typ:vars/:
+var:konverze:cisla,pismena,Pismena,rimskecislice,Rimskecislice::
+var:zpusob:skrztext,skrz*sekce::
+var:misto:stranka,text,sloupce,vysoko::
+var:linka:zap,vyp::
+var:pred:*prikaz::
+var:po:*prikaz::
+var:sirka:*dimenze::
+var:vyska:*dimenze::
+var:zakladnifont:5pt,...,12pt,male,velke::
+var:pismeno:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:vzdalenost:*dimenze::
+var:vzdalenostsloupcu:*dimenze::
+var:vzdalenostokraje:*dimenze::
+var:n:*cislo::
+var:ciselnyprikaz:*\prikaz#1::
+ivr:oramovani::
+stopsetup
+
+startsetup
+com:nastavdefinicipoznamekpodcarou:
+typ:vars/:
+ivr:definujpopis::
+stopsetup
+
+startsetup
+com:poznamkapodcarou:
+typ:ref/arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:poznamka:
+typ:ref/:
+stopsetup
+
+startsetup
+com:startlokalnipoznamkypodcarou:
+typ:stp/:
+ivr:nastavpoznamkypodcarou::
+stopsetup
+
+startsetup
+com:umistilokalnipoznamkypodcarou:
+typ:vars/:
+ivr:nastavpoznamkypodcarou::
+stopsetup
+
+startsetup
+com:umistipoznamkypodcarou:
+typ:vars/:
+ivr:nastavpoznamkypodcarou::
+stopsetup
+
+startsetup
+com:nastavpodtrzeni:
+typ:vars/:
+var:alternativa:a,b,c::
+var:tloustkalinky:*dimenze::
+var:offsetspodku:*dimenze::
+var:offsetvrsku:*dimenze::
+stopsetup
+
+startsetup
+com:podtrzeno:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:podtrzeni:
+typ:wrds/:
+val:*text::
+stopsetup
+
+startsetup
+com:nadtrzeno:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:nadtrzeni:
+typ:wrds/:
+val:*text::
+stopsetup
+
+startsetup
+com:preskrtnuto:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:preskrtnuti:
+typ:wrds/:
+val:*text::
+stopsetup
+
+startsetup
+com:rimskecislice:
+typ:arg/:
+val:*cislo::
+stopsetup
+
+startsetup
+com:Rimskecislice:
+typ:arg/:
+val:*cislo::
+stopsetup
+
+startsetup
+com:cisla:
+typ:arg/:
+val:*cislo::
+stopsetup
+
+startsetup
+com:znak:
+typ:arg/:
+val:*cislo::
+stopsetup
+
+startsetup
+com:Znak:
+typ:arg/:
+val:*cislo::
+stopsetup
+
+startsetup
+com:znaky:
+typ:arg/:
+val:*cislo::
+stopsetup
+
+startsetup
+com:Znaky:
+typ:arg/:
+val:*cislo::
+stopsetup
+
+startsetup
+com:stredoveky:
+typ:arg/:
+val:*cislo::
+stopsetup
+
+startsetup
+com:mesic:
+typ:arg/:
+val:*cislo::
+stopsetup
+
+startsetup
+com:MESIC:
+typ:arg/:
+val:*cislo::
+stopsetup
+
+startsetup
+com:vsedniden:
+typ:arg/:
+val:*cislo::
+stopsetup
+
+startsetup
+com:VSEDNIDEN:
+typ:arg/:
+val:*cislo::
+stopsetup
+
+startsetup
+com:nastavkapitalky:
+typ:vars/:
+var:titul:ano,ne::
+var:sc:ano,ne::
+stopsetup
+
+startsetup
+com:kap:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:nokap:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:KAP:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:Kap:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:Kaps:
+typ:wrds/:
+val:*text::
+stopsetup
+
+startsetup
+com:SLOVO:
+typ:wrd/:
+val:*text::
+stopsetup
+
+startsetup
+com:SLOVA:
+typ:wrds/:
+val:*text::
+stopsetup
+
+startsetup
+com:Slovo:
+typ:wrd/:
+val:*text::
+stopsetup
+
+startsetup
+com:Slova:
+typ:wrds/:
+val:*text::
+stopsetup
+
+startsetup
+com:roztazene:
+typ:wrd/:
+val:*text::
+stopsetup
+
+startsetup
+com:definujsymbol:
+typ:val/val/:
+val:*jmeno::
+val:*text::
+stopsetup
+
+startsetup
+com:definujobrazeksymbol:
+typ:val/val/vars/:
+val:*jmeno::
+val:*text::
+ivr:externiobraz::
+stopsetup
+
+startsetup
+com:symbol:
+typ:val/val/:
+val:*jmeno::
+val:*jmeno::
+stopsetup
+
+startsetup
+com:startsadasymbolu:
+typ:val/stp/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:nastavsadusymbolu:
+typ:val/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:uzijsymbol:
+typ:val/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:ukazsadusymbolu:
+typ:val/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:definujkonverzi:
+typ:val/val/:
+val:*jmeno::
+val:*prikaz,*text::
+stopsetup
+
+startsetup
+com:konvertujcislo:
+typ:arg/arg/:
+val:*jmeno::
+val:*cislo::
+stopsetup
+
+startsetup
+com:nastavtexthlavicky:
+typ:val/var/:
+val:nl,fr,en,uk,de,sp,cz,..:nl:
+var:*jmeno:*text::
+stopsetup
+
+startsetup
+com:nastavtextpopisku:
+typ:val/var/:
+val:nl,fr,en,uk,de,sp,cz,..:nl:
+var:*jmeno:*text::
+stopsetup
+
+startsetup
+com:texthlavicky:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:textpopisku:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:nastavmarginalnilinky:
+typ:var/:
+var:uroven:*cislo::
+var:tloustka:*dimenze::
+stopsetup
+
+startsetup
+com:startmarginalnilinka:
+typ:val/stp/:
+val:*cislo::
+stopsetup
+
+startsetup
+com:marginalnilinka:
+typ:val/arg/:
+val:*cislo::
+stopsetup
+
+startsetup
+com:nastavsirkucary:
+typ:val/:
+val:*dimenze::
+stopsetup
+
+startsetup
+com:nastavoramovani:
+typ:vars/:
+var:vyska:prizpusobive,siroky,*dimenze::
+var:sirka:prizpusobive,siroky,*dimenze::
+var:offset:zadny,prekryv,implicitni,*dimenze::
+var:misto:nizko,podlehloubky::
+var:volba:zadny,prazdne::
+var:strut:ano,ne::
+var:zarovnani:ne,vlevo,vpravo,nastred,normalni,vysoko,nizko,nivy::
+var:spodek:*prikaz::
+var:vrsek:*prikaz::
+var:ramecek:zap,vyp,prekryv::
+var:rameceknahore:zap,vyp::
+var:ramecekdole:zap,vyp::
+var:ramecekvlevo:zap,vyp::
+var:ramecekvpravo:zap,vyp::
+var:offsetramecku:*dimenze::
+var:hloubkaramecku:*dimenze::
+var:rohramecku:zaobleny,pravouhly::
+var:polomerramecku:*dimenze::
+var:barvaramecku:*jmeno::
+var:pozadi:rastr,barevne,zadny,popredi,*jmeno::
+var:rastrpozadi:*cislo::
+var:barvapozadi:*jmeno::
+var:offsetpozadi:ramecek,*dimenze::
+var:hloubkapozadi:*dimenze::
+var:rohpozadi:zaobleny,pravouhly::
+var:polomerpozadi:*dimenze::
+var:hloubka:*dimenze::
+var:roh:zaobleny,pravouhly::
+var:polomer:*dimenze::
+var:prazdne:ano,ne::
+val:*text::
+stopsetup
+
+startsetup
+com:oramovani:
+typ:vars/arg/:
+ivr:nastavoramovani::
+val:*text::
+stopsetup
+
+startsetup
+com:zaramovani:
+typ:vars/arg/:
+ivr:nastavoramovani::
+val:*text::
+stopsetup
+
+startsetup
+com:tenkelinky:
+typ:var/:
+ivr:nastavtenkelinky::
+stopsetup
+
+startsetup
+com:nastavtenkelinky:
+typ:var/:
+var:meziradkovamezera:male,stredni,velke::
+var:n:*cislo::
+var:pred:*prikaz::
+var:po:*prikaz::
+stopsetup
+
+startsetup
+com:vlasovalinka:
+typ::
+stopsetup
+
+startsetup
+com:tenkalinka:
+typ::
+stopsetup
+
+startsetup
+com:definujoramovanytext:
+typ:val/vars/:
+val:*jmeno::
+ivr:nastavoramovanetexty::
+stopsetup
+
+startsetup
+com:definujoramovani:
+typ:val/vars/:
+val:*jmeno::
+ivr:nastavoramovanetexty::
+stopsetup
+
+startsetup
+com:nastavoramovanetexty:
+typ:vars/:
+var:zakladnifont:5pt,...,12pt,male,velke::
+var:pismeno:normalni,tucne,sklonene,tucnesklonene,opis,male...,*prikaz::
+var:vlevo:*prikaz::
+var:vpravo:*prikaz::
+var:pred:*prikaz::
+var:po:*prikaz::
+var:vnitrni:*prikaz::
+var:marginalie:standardni,ano,ne::
+ivr:nastavoramovani::
+stopsetup
+
+startsetup
+com:start<<oramovanytext>>:
+typ:val/vars/stp/:
+val:vlevo,vpravo,nastred::
+ivr:nastavoramovanetexty::
+stopsetup
+
+startsetup
+com:<<oramovanytext>>:
+typ:vars/:
+ivr:nastavoramovanetexty::
+stopsetup
+
+startsetup
+com:startpozadi:
+typ:stp/:
+stopsetup
+
+startsetup
+com:pozadi:
+typ::
+stopsetup
+
+startsetup
+com:nastavpozadi:
+typ:vars/:
+var:levyoffset:*dimenze::
+var:pravyoffset:*dimenze::
+var:offsetvrsku:*dimenze::
+var:offsetspodku:*dimenze::
+var:status:start,stop::
+ivr:nastavoramovani::
+stopsetup
+
+startsetup
+com:vyplnovelinky:
+typ:vars/arg/arg/:
+ivr:nastavvyplnovelinky::
+stopsetup
+
+startsetup
+com:vyplnenytext:
+typ:vars/arg/arg/par/:
+ivr:nastavvyplnovelinky::
+stopsetup
+
+startsetup
+com:nastavvyplnovelinky:
+typ:vars/:
+var:sirka:prizpusobive,siroky,*dimenze::
+var:vzdalenost:*dimenze::
+var:pred:*prikaz::
+var:po:*prikaz::
+var:pismeno:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:n:*cislo::
+var:meziradkovamezera:male,stredni,velke::
+var:oddelovac:*text::
+stopsetup
+
+startsetup
+com:vyplnovyradek:
+typ:vars/nop/par/:
+ivr:nastavvyplnoveradky::
+stopsetup
+
+startsetup
+com:nastavvyplnoveradky:
+typ:vars/:
+var:sirka:*dimenze::
+var:marginalie:*dimenze::
+var:vzdalenost:*dimenze::
+var:pred:*prikaz::
+var:po:*prikaz::
+stopsetup
+
+startsetup
+com:nastavtextovelinky:
+typ:vars/:
+var:misto:vlevo,naokraji::
+var:pred:*prikaz::
+var:po:*prikaz::
+var:mezi:*prikaz::
+var:sirka:*dimenze::
+var:vzdalenost:*dimenze::
+var:zakladnifont:5pt,...,12pt,male,velke::
+var:barva:*jmeno::
+var:pismeno:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:barvalinky:*jmeno::
+stopsetup
+
+startsetup
+com:textovalinka:
+typ:val/arg/:
+val:vrsek,spodek::
+val:*text::
+stopsetup
+
+startsetup
+com:starttextovalinka:
+typ:val/arg/stp/:
+val:vrsek,spodek::
+val:*text::
+stopsetup
+
+startsetup
+com:cernalinka:
+typ:vars/:
+ivr:nastavcernelinky::
+stopsetup
+
+startsetup
+com:cernelinky:
+typ:vars/:
+ivr:nastavcernelinky::
+stopsetup
+
+startsetup
+com:nastavcernelinky:
+typ:vars/:
+var:sirka:*dimenze,max::
+var:vyska:*dimenze,max::
+var:hloubka:*dimenze,max::
+var:alternativa:a,b::
+var:vzdalenost:*dimenze::
+var:n:*cislo::
+stopsetup
+
+startsetup
+com:definujprekryv:
+typ:vals/val/:
+val:*jmeno::
+val:*prikaz::
+stopsetup
+
+startsetup
+com:uzijmodul:
+typ:vals/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:reset:
+typ:vals/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:zadnytest:
+typ::
+stopsetup
+
+startsetup
+com:startlokalnihoprostredi:
+typ:stp/:
+stopsetup
+
+startsetup
+com:nastavsystem:
+typ:vars/:
+var:rozliseni:*cislo::
+var:soubor:*text::
+var:adresar:*text::
+var:nahodne:normalni,male,stredni,velke,*cislo::
+stopsetup
+
+startsetup
+com:uzijadresar:
+typ:vals/:
+val:*jmeno,reset:.:
+stopsetup
+
+startsetup
+com:ped:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:ap:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:pedap:
+typ:arg/arg/:
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:ukazramecek:
+typ:val/:
+val:text,marginalie,hrana::
+stopsetup
+
+startsetup
+com:ukazstrukturu:
+typ::
+stopsetup
+
+startsetup
+com:zarovnanovlevo:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:zarovnanovpravo:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:zarovnanonastred:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:slovovpravo:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:naokraj:
+typ:val/ref/arg/:
+val:+,-,nizko::
+val:*text::
+stopsetup
+
+startsetup
+com:nadruhyokraj:
+typ:val/ref/arg/:
+val:+,-,nizko::
+val:*text::
+stopsetup
+
+startsetup
+com:vlevo:
+typ:val/ref/arg/:
+val:+,-,nizko::
+val:*text::
+stopsetup
+
+startsetup
+com:vpravo:
+typ:val/ref/arg/:
+val:+,-,nizko::
+val:*text::
+stopsetup
+
+startsetup
+com:sloupec:
+typ::
+stopsetup
+
+startsetup
+com:ukazpodpery:
+typ::
+stopsetup
+
+startsetup
+com:ukaznastaveni:
+typ::
+stopsetup
+
+startsetup
+com:ukazvzhled:
+typ::
+stopsetup
+
+startsetup
+com:marginalnitext:
+typ:val/ref/arg/:
+val:+,-,nizko::
+val:*text::
+stopsetup
+
+startsetup
+com:nastavmarginalniblok:
+typ:vars/:
+var:misto:naokraji,vlevo,nastred,vpravo::
+var:pismeno:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:sirka:*dimenze::
+var:zarovnani:vlevo,nastred,vpravo,ne::
+var:vrsek:*prikaz::
+var:mezi:*prikaz::
+var:spodek:*prikaz::
+var:vlevo:*prikaz::
+var:vpravo:*prikaz::
+var:pred:*prikaz::
+var:po:*prikaz::
+stopsetup
+
+startsetup
+com:startmarginalniblok:
+typ:stp/:
+stopsetup
+
+startsetup
+com:cast:
+typ:refs/arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:titul:
+typ:refs/arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:kapitola:
+typ:refs/arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:sekce:
+typ:refs/arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:podsekce:
+typ:refs/arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:podpodsekce:
+typ:refs/arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:tema:
+typ:refs/arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:podtema:
+typ:refs/arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:podpodtema:
+typ:refs/arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:dodatek:
+typ:refs/arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:tref:
+typ:arg/arg/ref/:
+val:*text::
+stopsetup
+
+startsetup
+com:pref:
+typ:arg/arg/ref/:
+val:*text::
+stopsetup
+
+startsetup
+com:oref:
+typ:arg/ref/:
+val:*text::
+stopsetup
+
+startsetup
+com:nekde:
+typ:arg/arg/ref/:
+val:*text::
+stopsetup
+
+startsetup
+com:nastrane:
+typ:ref/:
+stopsetup
+
+startsetup
+com:ref:
+typ:val/ref/:
+val:t,p,r,s,e::
+val:*text::
+stopsetup
+
+startsetup
+com:odkaznatext:
+typ:ref/arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:odkaznastranu:
+typ:ref/:
+stopsetup
+
+startsetup
+com:odkaz:
+typ:ref/arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:uzijodkazy:
+typ:vals/:
+val:*soubor::
+stopsetup
+
+startsetup
+com:definujodkaz:
+typ:val/refs/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:definujformatodkazu:
+typ:val/vars/:
+val:*jmeno::
+var:vlevo:*text::
+var:vpravo:*text::
+var:text:*text::
+var:popisek:*jmeno::
+stopsetup
+
+startsetup
+com:hl:
+typ:val/:
+val:*cislo::
+stopsetup
+
+startsetup
+com:vl:
+typ:val/:
+val:*cislo::
+stopsetup
+
+startsetup
+com:jdidolu:
+typ:val/:
+val:*dimenze::
+stopsetup
+
+startsetup
+com:bilemisto:
+typ::
+stopsetup
+
+startsetup
+com:zadnebilemisto:
+typ::
+stopsetup
+
+startsetup
+com:crlf:
+typ::
+stopsetup
+
+startsetup
+com:mezera:
+typ::
+stopsetup
+
+startsetup
+com:tvrdemezery:
+typ::
+stopsetup
+
+startsetup
+com:zadnamezera:
+typ::
+stopsetup
+
+startsetup
+com:zhustene:
+typ::
+stopsetup
+
+startsetup
+com:opakovat:
+typ:val/:
+val:repeat/*text::
+stopsetup
+
+startsetup
+com:nastavpopisy:
+typ:vals/vars/:
+val:*jmeno::
+var:stylhlavicky:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:pismeno:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:barva:*jmeno::
+var:sirka:prizpusobive,siroky,*dimenze::
+var:vzdalenost:*dimenze::
+var:vzor:*text::
+var:text:*text::
+var:zarovnani:vlevo,nastred,vpravo::
+var:marginalie:standardni,ano,ne,*dimenze::
+var:misto:vlevo,vpravo,vrsek,semknuto, naokraji,vlevo,vpravo,visici::
+var:zaveseni:prizpusobive,siroky,*cislo::
+var:pred:*prikaz::
+var:mezi:*prikaz::
+var:po:*prikaz::
+var:odsadpristi:ano,ne::
+stopsetup
+
+startsetup
+com:nastavvycty:
+typ:vals/vars/:
+val:*jmeno::
+ivr:definujpopis::
+var:misto:vlevo,vpravo,vrsek,semknuto, naokraji,vlevo,vpravo,visici::
+var:text:*text::
+var:urovne:*cislo::
+var:konverze:cisla,pismena,Pismena,rimskecislice,Rimskecislice::
+var:zpusob:skrztext,skrz*sekce::
+var:dobloku:ano,ne::
+var:cislooddilu:ano,cislo,ne::
+var:oddelovac:*text::
+var:predel:*text::
+var:propojeni:*jmeno::
+var:zpusobpropojeni:globalne,lokalne::
+var:cislo:ne,*jmeno::
+var:zarovnejtitul:ne,ano::
+var:start:*cislo::
+stopsetup
+
+startsetup
+com:definujvycet:
+typ:vals/val/vars/:
+val:*jmeno::
+val:*jmeno::
+ivr:nastavvycty::
+stopsetup
+
+startsetup
+com:<<vycet>>:
+typ:nop/par/:
+val:*text::
+stopsetup
+
+startsetup
+com:start<<vycet>>:
+typ:stp/:
+stopsetup
+
+startsetup
+com:definujpopis:
+typ:val/vars/:
+val:*jmeno::
+ivr:nastavpopisy::
+stopsetup
+
+startsetup
+com:<<popis>>:
+typ:arg/nop/par/:
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:start<<popis>>:
+typ:arg/stp/:
+val:*text::
+stopsetup
+
+startsetup
+com:nastavodsazovani:
+typ:vals/vars/:
+val:*jmeno::
+var:pismeno:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:stylhlavicky:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:sirka:prizpusobive,*dimenze::
+var:text:*text::
+var:vzor:*text::
+var:pred:*prikaz::
+var:po:*prikaz::
+var:vzdalenost:*dimenze::
+var:oddelovac:*text::
+stopsetup
+
+startsetup
+com:definujodsazovani:
+typ:val/vars/:
+val:*jmeno::
+ivr:nastavodsazovani::
+stopsetup
+
+startsetup
+com:<<odsazovani>>:
+typ:nop/par/:
+val:*text::
+stopsetup
+
+startsetup
+com:definujpopisek:
+typ:val/vars/:
+val:*jmeno::
+var:text:*text::
+var:misto:naokraji,dotextu::
+var:zpusob:skrztext,skrz*sekce::
+var:dobloku:ano,ne::
+var:stylhlavicky:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:barvahlavicky:*jmeno::
+var:pred:*prikaz::
+var:po:*prikaz::
+stopsetup
+
+startsetup
+com:<<oznacovani>>:
+typ:ref/:
+stopsetup
+
+startsetup
+com:nastavsloupce:
+typ:vars/:
+var:n:*cislo::
+var:nvrsek:*cislo::
+var:linka:zap,vyp::
+var:vyska:*dimenze::
+var:tolerance:velmistriktni,striktni,tolerantni,velmitolerantni,natahnout::
+var:vzdalenost:*dimenze::
+var:rovnovaha:ano,ne::
+var:zarovnani:ano,ne,text::
+var:prazdny:fixne,pulradku,radek,prizpusobive,velke,stredni,male::
+var:volba:pozadi::
+var:smer:vlevo,vpravo::
+ivr:nastavoramovani::
+stopsetup
+
+startsetup
+com:startsloupce:
+typ:vars/stp/:
+ivr:nastavsloupce::
+stopsetup
+
+startsetup
+com:definujtext:
+typ:val/val/val/val/val/:
+val:*jmeno::
+val:zahlavi,upati::
+val:*text::
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:nastavzahlavi:
+typ:val/vars/:
+val:text,marginalie,hrana:text:
+var:status:normalni,stop,start,prazdne,vysoko,zadny, zadneznaceni,*jmeno::
+var:strut:ano,ne::
+var:pismeno:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:stylvlevo:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:stylvpravo:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:sirkavlevo:*dimenze::
+var:sirkavpravo:*dimenze::
+var:pred:*prikaz::
+var:po:*prikaz::
+stopsetup
+
+startsetup
+com:nastavupati:
+typ:val/vars/:
+ivl:nastavzahlavi::
+ivr:nastavzahlavi::
+stopsetup
+
+startsetup
+com:nastavtext:
+typ:val/vars/:
+ivl:nastavzahlavi::
+ivr:nastavzahlavi::
+stopsetup
+
+startsetup
+com:nastavhorejsek:
+typ:val/vars/:
+ivl:nastavzahlavi::
+ivr:nastavzahlavi::
+stopsetup
+
+startsetup
+com:nastavspodek:
+typ:val/vars/:
+ivl:nastavzahlavi::
+ivr:nastavzahlavi::
+stopsetup
+
+startsetup
+com:zadnezahlaviaupati:
+typ::
+stopsetup
+
+startsetup
+com:zadnehorniadolniradky:
+typ::
+stopsetup
+
+startsetup
+com:nastavtextyzahlavi:
+typ:val/val/val/:
+val:text,marginalie,hrana:text:
+val:*text,*sekce,datum,*znacka,cislostranky::
+val:*text,*sekce,datum,*znacka,cislostranky::
+stopsetup
+
+startsetup
+com:nastavtextyupati:
+typ:val/val/val/:
+val:text,marginalie,hrana:text:
+val:*text,*sekce,datum,*znacka,cislostranky::
+val:*text,*sekce,datum,*znacka,cislostranky::
+stopsetup
+
+startsetup
+com:nastavtexttexty:
+typ:val/val/val/:
+val:text,marginalie,hrana:text:
+val:*text,*sekce,datum,*znacka,cislostranky::
+val:*text,*sekce,datum,*znacka,cislostranky::
+stopsetup
+
+startsetup
+com:nastavhornitexty:
+typ:val/val/val/:
+val:text,marginalie,hrana:text:
+val:*text,*sekce,datum,*znacka,cislostranky::
+val:*text,*sekce,datum,*znacka,cislostranky::
+stopsetup
+
+startsetup
+com:nastavdolnitexty:
+typ:val/val/val/:
+val:text,marginalie,hrana:text:
+val:*text,*sekce,datum,*znacka,cislostranky::
+val:*text,*sekce,datum,*znacka,cislostranky::
+stopsetup
+
+startsetup
+com:definujznaceni:
+typ:val/val/:
+val:*jmeno::
+val:*jmeno::
+stopsetup
+
+startsetup
+com:propojeneznaceni:
+typ:val/val/:
+val:*jmeno::
+val:*jmeno::
+stopsetup
+
+startsetup
+com:rozpojeneznaceni:
+typ:val/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:resetznaceni:
+typ:val/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:nastavznaceni:
+typ:val/var/:
+val:*jmeno::
+var:status:start,stop::
+var:oddelovac:*prikaz::
+var:expanzen:ano,ne::
+stopsetup
+
+startsetup
+com:znaceni:
+typ:val/arg/:
+val:*jmeno::
+val:*text::
+stopsetup
+
+startsetup
+com:ziskejznaceni:
+typ:val/val/:
+val:*jmeno::
+val:prvni,posledni,predchozi,obe,vse::
+stopsetup
+
+startsetup
+com:zadneznaceni:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:nastavvzhled:
+typ:vars/:
+var:sirka:*dimenze,prizpusobive,nastred::
+var:vyska:*dimenze,prizpusobive,nastred::
+var:zpetnamezera:*dimenze::
+var:svrchnimezera:*dimenze::
+var:marginalie:*dimenze::
+var:levyokraj:*dimenze::
+var:pravyokraj:*dimenze::
+var:zahlavi:*dimenze::
+var:upati:*dimenze::
+var:vrsek:*dimenze::
+var:spodek:*dimenze::
+var:levahrana:*dimenze::
+var:pravahrana:*dimenze::
+var:vzdalenostzahlavi:*dimenze::
+var:vzdalenostupati:*dimenze::
+var:vzdalenostvrsku:*dimenze::
+var:vzdalenostspodku:*dimenze::
+var:vzdalenostlevehookraje:*dimenze::
+var:vzdalenostpravehookraje:*dimenze::
+var:vzdalenostlevehrany:*dimenze::
+var:vzdalenostpravehrany:*dimenze::
+var:horoffset:*dimenze::
+var:offsethlavicky:*dimenze::
+var:pismeno:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:znaceni:zap,vyp,barevne::
+var:misto:vlevo,nastred,vpravo,spodek,vrsek, jednostranne,dvoustranny::
+var:meritko:*dimenze::
+var:nx:*cislo::
+var:ny:*cislo::
+var:dx:*dimenze::
+var:dy:*dimenze::
+var:radky:*cislo::
+var:mrizka:ano,ne::
+var:bottomspace:*cislo::
+var:cutspace:*cislo::
+stopsetup
+
+startsetup
+com:prizpusobvzhled:
+typ:vals/vars/:
+val:*cislo::
+var:vyska:*dimenze,max::
+var:radky:*cislo::
+stopsetup
+
+startsetup
+com:ukazmrizku:
+typ::
+stopsetup
+
+startsetup
+com:umistinamrizku:
+typ:val/arg/:
+ivl:premistinamrizku::
+stopsetup
+
+startsetup
+com:premistinamrizku:
+typ:val/:
+val:vrsek,obe,spodek:obe:
+stopsetup
+
+startsetup
+com:startprojekt:
+typ:fil/stp/:
+val:*soubor::
+stopsetup
+
+startsetup
+com:startprostredi:
+typ:fil/stp/:
+val:*soubor::
+stopsetup
+
+startsetup
+com:startprodukt:
+typ:fil/stp/:
+val:*soubor::
+stopsetup
+
+startsetup
+com:startkomponenta:
+typ:fil/stp/:
+val:*soubor::
+stopsetup
+
+startsetup
+com:zadnedalsisoubory:
+typ::
+stopsetup
+
+startsetup
+com:nastavmeziradkovoumezeru:
+typ:val/vars/:
+val:reset,male,stredni,velke,zap,vyp:male:
+var:vyska:*cislo::
+var:podlehloubky:*cislo::
+var:radek:*dimenze::
+var:vrsek:*cislo::
+var:spodek:*cislo::
+stopsetup
+
+startsetup
+com:nastavcislovanistran:
+typ:vars/:
+var:alternativa:jednostranne,dvoustranny::
+var:misto:zahlavi,upati, vlevo,vpravo,nastred, marginalie,textovahrana,vlevo,vpravo::
+var:konverze:cisla,pismena,Pismena,rimskecislice,Rimskecislice::
+var:pismeno:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:vlevo:*text::
+var:vpravo:*text::
+var:zpusob:skrztext,skrz*sekce::
+var:text:*text::
+var:oddelovaccisla:*text::
+var:oddelovactextu:*text::
+var:*sekce*cislo:ano,ne::
+var:oddelovac:*text::
+var:status:start,stop::
+var:prikaz:*\prikaz#1::
+stopsetup
+
+startsetup
+com:nastavzuzeni:
+typ:vars/:
+var:vlevo:*dimenze::
+var:vpravo:*dimenze::
+var:stredni:*dimenze::
+stopsetup
+
+startsetup
+com:definuj:
+typ:val/cmd/arg/:
+val:*cislo:0:
+stopsetup
+
+startsetup
+com:uzijprikazy:
+typ:arg/:
+stopsetup
+
+startsetup
+com:definujstartstop:
+typ:val/vars/:
+var:pred:*prikaz::
+var:po:*prikaz::
+var:pismeno:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:prikazy:*prikaz::
+stopsetup
+
+startsetup
+com:nastavnadpisy:
+typ:vars/:
+var:cislooddilu:ano,cislo,ne::
+var:alternativa:normalni,marginalie,nastred,text,odstavec::
+var:oddelovac:*text::
+var:prikaz:*\prikaz#1#2::
+stopsetup
+
+startsetup
+com:nastavpopisky:
+typ:vars/:
+var:misto:vrsek,spodek,zadny,vysoko,nizko,nastred::
+var:sirka:prizpusobive,max,*dimenze::
+var:stylhlavicky:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:pismeno:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:cislo:ano,ne::
+var:mezi:*prikaz::
+var:zarovnani:vlevo,nastred,vpravo,ne::
+var:konverze:cisla,pismena,Pismena,rimskecislice,Rimskecislice::
+var:zpusob:skrztext,skrz*sekce::
+stopsetup
+
+startsetup
+com:nastavpopisek:
+typ:val/vars/:
+val:*jmeno::
+ivr:nastavpopisky::
+stopsetup
+
+startsetup
+com:nastavplvouciobjekty:
+typ:vars/:
+var:misto:vlevo,vpravo,nastred::
+var:sirka:prizpusobive,*dimenze::
+var:pred:*prikaz::
+var:po:*prikaz::
+var:marginalie:*dimenze::
+var:mezerapred:repeat/male,repeat/stredni,repeat/velke,zadny::
+var:mezeraza:repeat/male,repeat/stredni,repeat/velke,zadny::
+var:bocnimezerapred:repeat/male,repeat/stredni,repeat/velke,zadny::
+var:bocnimezeraza:repeat/male,repeat/stredni,repeat/velke,zadny::
+var:odsadpristi:ano,ne::
+var:nvrsek:*cislo::
+var:nspodek:*cislo::
+var:nradky:*cislo::
+ivr:nastavoramovani::
+stopsetup
+
+startsetup
+com:nastavdeleniplvoucichobjektu:
+typ:vars/:
+var:konverze:cisla,pismena,Pismena,rimskecislice,Rimskecislice::
+var:radky:*cislo::
+stopsetup
+
+startsetup
+com:rozdelplvouciobjekt:
+typ:vars/arg/arg/:
+ivr:nastavdeleniplvoucichobjektu::
+stopsetup
+
+startsetup
+com:nastavumisteniprotejsku:
+typ:var/:
+var:status:start,stop::
+stopsetup
+
+startsetup
+com:startprotejsek:
+typ:stp/:
+stopsetup
+
+startsetup
+com:nastavdelitko:
+typ:var/:
+var:znak:--,---,-,\normalpenalty 10000\ ,),(,=,/::
+stopsetup
+
+startsetup
+com:nastavumistovani:
+typ:vars/:
+var:status:start,prekryv::
+var:jednotka:cm,pt,em,mm,ex,sp,in::
+var:faktor:*cislo::
+var:meritko:*cislo::
+var:offset:ano,ne::
+var:xkrok:absolutni,relativni::
+var:ykrok:absolutni,relativni::
+stopsetup
+
+startsetup
+com:startumistovani:
+typ:stp/:
+stopsetup
+
+startsetup
+com:mrizka:
+typ:vars/:
+var:x:*cislo::
+var:y:*cislo::
+var:nx:*cislo::
+var:ny:*cislo::
+var:dx:*cislo::
+var:dy:*cislo::
+var:xkrok:*cislo::
+var:ykrok:*cislo::
+var:offset:ano,ne::
+var:faktor:*cislo::
+var:meritko:*cislo::
+var:jednotka:cm,pt,em,mm,ex,sp,in::
+var:misto:vlevo,nastred::
+stopsetup
+
+startsetup
+com:strana:
+typ:vals/:
+val:ano,zlom,ne,nastaveni,vysokapriorita, vlevo,vpravo,zablokovat,posledni,ctyrnasobny, sude,liche,prazdny,prazdne,reset:ano:
+stopsetup
+
+startsetup
+com:nastavodkazovani:
+typ:var/:
+var:status:start,stop::
+var:*sekce*cislo:ano,ne::
+var:prefix:+,-,*text::
+var:interakce:popisek,text,vse,symbol::
+var:sirka:*dimenze::
+var:vlevo:*prikaz::
+var:vpravo:*prikaz::
+var:konverzesouboru:ano,ne,male,velke::
+var:oddelovac:*text::
+var:autofile:ano,ne,stranka::
+stopsetup
+
+startsetup
+com:nastavurl:
+typ:vars/:
+var:pismeno:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:urlalternativa:zadny,obe,pred,po::
+var:prostorurl:ano,ne::
+stopsetup
+
+startsetup
+com:zapisdoseznamuodkazu:
+typ:val/arg/arg/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:umistiseznamodkazu:
+typ:vals/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:definujseznamodkazu:
+typ:val/vars/:
+val:*jmeno::
+ivr:nastavseznamodkazu::
+stopsetup
+
+startsetup
+com:nastavseznamodkazu:
+typ:vals/vars/:
+val:*jmeno::
+var:status:start,stop::
+var:kriterium:*sekce,lokalne,predchozi,vse::
+var:prikaz:*prikaz::
+var:pred:*prikaz::
+var:po:*prikaz::
+stopsetup
+
+startsetup
+com:zapisdoseznamu:
+typ:val/arg/arg/:
+val:*sekce,*jmeno::
+stopsetup
+
+startsetup
+com:zapismeziseznam:
+typ:val/arg/:
+val:*sekce,*jmeno::
+stopsetup
+
+startsetup
+com:zadnyseznam:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:umistiseznam:
+typ:vals/vars/:
+val:*jmeno::
+ivr:nastavseznam::
+stopsetup
+
+startsetup
+com:stanovcharakteristickuseznamu:
+typ:vals/vars/:
+val:*jmeno::
+ivr:nastavseznam::
+stopsetup
+
+startsetup
+com:definujseznam:
+typ:val/val/vars/:
+val:*jmeno::
+val:*jmeno::
+ivr:nastavseznam::
+stopsetup
+
+startsetup
+com:nastavseznam:
+typ:vals/vars/:
+val:*jmeno::
+var:status:start,stop::
+var:alternativa:a,b,c,...,zadny,prikaz::
+var:propojeni:zap,vyp::
+var:kriterium:*sekce,lokalne,predchozi,vse::
+var:hranicestranky:*seznam::
+var:pismeno:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:stylcisla:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:styltextu:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:stylstranky:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:barva:*jmeno::
+var:prikaz:*\prikaz#1#2#3::
+var:ciselnyprikaz:*\prikaz#1::
+var:textovyprikaz:*\prikaz#1::
+var:strankovyprikaz:*\prikaz#1::
+var:interakce:cislooddilu,text,cislostranky,vse::
+var:pred:*prikaz::
+var:po:*prikaz::
+var:mezi:*prikaz::
+var:vlevo:*text::
+var:vpravo:*text::
+var:popisek:ano,ne::
+var:prefix:ano,ne::
+var:cislostranky:ano,ne::
+var:*sekce*cislo:ano,ne::
+var:zarovnejtitul:ano,ne::
+var:marginalie:*dimenze::
+var:sirka:*dimenze,prizpusobive::
+var:vyska:*dimenze,prizpusobive,siroky::
+var:hloubka:*dimenze,prizpusobive,siroky::
+var:vzdalenost:*dimenze::
+var:oddelovac:*text::
+var:symbol:zadny,1,2,3,...::
+var:expanzen:ano,ne,prikaz::
+var:maxsirka:*dimenze::
+ivr:oramovani::
+stopsetup
+
+startsetup
+com:definujkombinovanyseznam:
+typ:val/vals/vars/:
+val:*jmeno::
+val:*seznam::
+ivr:nastavkombinovanyseznam::
+stopsetup
+
+startsetup
+com:nastavkombinovanyseznam:
+typ:val/vars/:
+val:*jmeno::
+var:uroven:1,2,3,4,*sekce,aktualni::
+ivr:nastavseznam::
+stopsetup
+
+startsetup
+com:umisti<<kombinovanyseznam>>:
+typ:val/vars/:
+val:*jmeno::
+ivr:nastavkombinovanyseznam::
+stopsetup
+
+startsetup
+com:uplny<<kombinovanyseznam>>:
+typ:val/vars/:
+val:*jmeno::
+ivr:nastavkombinovanyseznam::
+stopsetup
+
+startsetup
+com:nastavcislovani:
+typ:vars/:
+var:zpusob:skrztext,skrz*sekce::
+var:status:start,stop::
+stopsetup
+
+startsetup
+com:nastavrovnice:
+typ:vars/:
+var:misto:vlevo,vpravo::
+var:vlevo:*text::
+var:vpravo:*text::
+stopsetup
+
+startsetup
+com:publikace:
+typ:ref/:
+stopsetup
+
+startsetup
+com:nastavpublikace:
+typ:vars/:
+var:alternativa:apa,normalni::
+ivr:nastavvycty::
+stopsetup
+
+startsetup
+com:nastavradky:
+typ:vars/:
+var:pred:*prikaz::
+var:po:*prikaz::
+var:mezi:*prikaz::
+var:odsazovani:ano,ne,sude,liche::
+stopsetup
+
+startsetup
+com:startradky:
+typ:stp/:
+stopsetup
+
+startsetup
+com:nastavcislovaniodstavcu:
+typ:vars/:
+var:status:start,stop,reset,radek::
+var:pismeno:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:vzdalenost:*dimenze::
+stopsetup
+
+startsetup
+com:nastavcislovaniradku:
+typ:vars/:
+var:konverze:cisla,pismena,Pismena,rimskecislice,Rimskecislice, text::
+var:start:*cislo::
+var:krok:*cislo::
+var:sirka:*dimenze::
+var:misto:dotextu,naokraji::
+var:pismeno:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:prefix:*text::
+var:odkazujici:zap,vyp::
+stopsetup
+
+startsetup
+com:startcislovaniradku:
+typ:val/stp/:
+val:pokracovat::
+stopsetup
+
+startsetup
+com:startradek:
+typ:ref/stp/:
+stopsetup
+
+startsetup
+com:nejakyradek:
+typ:ref/:
+stopsetup
+
+startsetup
+com:vradku:
+typ:ref/:
+stopsetup
+
+startsetup
+com:nastavmarginalie:
+typ:val/vars/:
+val:vlevo,vpravo,*cislo::
+var:misto:vlevo,vpravo,obe::
+var:pismeno:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:pred:*prikaz::
+var:po:*prikaz::
+var:zarovnani:uvnitr,vnejsi,vlevo,vpravo,nastred,normalni,ne,ano::
+var:radek:*cislo::
+var:vzdalenost:*dimenze::
+var:oddelovac:*text::
+ivr:nastavoramovani::
+stopsetup
+
+startsetup
+com:nastavcislostrany:
+typ:vars/:
+var:cislo:*cislo::
+var:status:start,stop,drzet::
+stopsetup
+
+startsetup
+com:nastavpodcislostrany:
+typ:vars/:
+var:zpusob:skrztext,skrz*sekce::
+var:status:start,stop,zadny::
+stopsetup
+
+startsetup
+com:nastavpreskok:
+typ:val/:
+val:normalni,standardni,radek,*dimenze, velke,stredni,male, fixne,prizpusobive:normalni:
+stopsetup
+
+startsetup
+com:definujpreskok:
+typ:val/val/:
+val:*jmeno::
+ivl:nastavpreskok::
+stopsetup
+
+startsetup
+com:definujvelikostpapiru:
+typ:val/vars/:
+val:*jmeno::
+var:sirka:*dimenze::
+var:vyska:*dimenze::
+var:offset:*dimenze::
+var:meritko:*cislo::
+stopsetup
+
+startsetup
+com:nastavvelikostpapiru:
+typ:vals/vals/:
+val:A3,A4,A5,A6,letter,...,CD,*jmeno, nasirku,zrcadleno,otoceno,90,180,270:A4:
+val:A3,A4,A5,A6,letter,...,*jmeno, nasirku,zrcadleno,otoceno,negativ,90,180,270:A4:
+stopsetup
+
+startsetup
+com:nastavusporadani:
+typ:vals/:
+val:zablokovat, 2*16,2*8,2*4,2*2,2UP,2DOWN, zrcadleno,otoceno,dvoustranny,negativ,90,180,270::
+stopsetup
+
+startsetup
+com:ukazvytisk:
+typ:vals/vals/vars/:
+ivr:nastavvelikostpapiru::
+ivr:nastavvelikostpapiru::
+ivr:nastavvzhled::
+stopsetup
+
+startsetup
+com:mettiloghi:
+typ:val/val/val/vars/:
+val:*jmeno::
+val:vrsek,zahlavi,upati,spodek::
+val:zadny,stranka, levahrana,levyokraj, vlevo,nastred,vpravo, pravyokraj,pravahrana::
+var:prikaz:*prikaz,*text::
+var:status:start,stop::
+stopsetup
+
+startsetup
+com:definiscicolori:
+typ:vals/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:nastavbilamista:
+typ:val/:
+val:zadny,male,stredni,velke,radek,fixne,fixuj,*dimenze:zadny:
+stopsetup
+
+startsetup
+com:nastavodsazovani:
+typ:vals/:
+val:zadny,male,stredni,velke,dalsi,prvni,*dimenze:zadny:
+stopsetup
+
+startsetup
+com:definujbloksekce:
+typ:val/vars/:
+val:*jmeno::
+ivr:nastavbloksekce::
+stopsetup
+
+startsetup
+com:nastavbloksekce:
+typ:val/vars/:
+val:*jmeno::
+var:cislo:ano,ne::
+var:stranka:ano,vpravo::
+var:pred:*prikaz::
+var:po:*prikaz::
+stopsetup
+
+startsetup
+com:definujsekci:
+typ:val/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:nastavsekci:
+typ:val/val/vars/:
+val:*jmeno::
+val:*jmeno:prednicast,hlavnicast,dodatek,epilog:
+var:konverze:cisla,pismena,Pismena,rimskecislice,Rimskecislice::
+var:predchozicislo:ano,ne::
+stopsetup
+
+startsetup
+com:nastavnadpis:
+typ:val/vars/:
+val:*sekce::
+var:pismeno:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:styltextu:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:stylcisla:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:cislo:ano,ne::
+var:vlastnicislo:ano,ne::
+var:stranka:vlevo,vpravo,ano::
+var:pokracovat:ano,ne::
+var:zahlavi:zadny,prazdne,vysoko,zadneznaceni::
+var:pred:*prikaz::
+var:mezi:*prikaz::
+var:po:*prikaz::
+var:alternativa:normalni,naokraji,nastred,text::
+var:prikaz:*\prikaz#1#2::
+var:ciselnyprikaz:*\prikaz#1::
+var:textovyprikaz:*\prikaz#1::
+var:prefix:+,-,*text::
+var:umistihlavicku:ano,ne::
+var:zvysujicicislo:ano,ne,*soubor::
+var:zarovnani:vlevo,vpravo,normalni,siroky::
+var:tolerance:velmistriktni,striktni,tolerantni,velmitolerantni,natahnout::
+var:odsadpristi:ano,ne::
+var:soubor:*jmeno::
+var:expanzen:ano,prikaz,ne::
+stopsetup
+
+startsetup
+com:nastavcislonadpisu:
+typ:val/val/:
+val:*sekce::
+val:*cislo,+*cislo,-*cislo::
+stopsetup
+
+startsetup
+com:cislonadpisu:
+typ:val/:
+val:*sekce::
+stopsetup
+
+startsetup
+com:stanovcislonadpisu:
+typ:val/:
+val:*sekce::
+stopsetup
+
+startsetup
+com:aktualnicislonadpisu:
+typ::
+stopsetup
+
+startsetup
+com:dalsi<<oddil>>:
+typ::
+stopsetup
+
+startsetup
+com:definujnadpis:
+typ:val/val/:
+val:*jmeno::
+val:*sekce::
+stopsetup
+
+startsetup
+com:nastavvycet:
+typ:val/vals/vars/:
+val:*cislo,kazdy::
+val:standardni,repeat/siroky,repeat/semknuto,zhustene, rozbalene,predel,spojeno,naokraji,naokraji, autouvod,uvolnene,sekce,dotextu:standardni:
+var:marginalie:ne,standardni,*dimenze::
+var:sirka:*dimenze::
+var:vzdalenost:*dimenze::
+var:faktor:*cislo::
+var:polozky:*cislo::
+var:pred:*prikaz::
+var:mezi:*prikaz::
+var:po:*prikaz::
+var:vlevo:*text::
+var:vpravo:*text::
+var:predhlavickou:*prikaz::
+var:pohlavicce:*prikaz::
+var:stylhlavicky:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:stylsnacky:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:stylsymboly:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:predel:*text::
+var:n:*cislo::
+var:symbol:*cislo::
+var:zarovnani:vlevo,vpravo,normalni::
+var:odsadpristi:ano,ne::
+stopsetup
+
+startsetup
+com:startvycet:
+typ:vals/vars/stp/:
+val:a,A,KA,n,N,m,r,R,KR,*cislo,pokracovat, standardni,repeat/siroky,repeat/semknuto,zhustene, predel,spojeno,naokraji,naokraji,uvod,sloupce:standardni:
+ivr:nastavvycet::
+stopsetup
+
+startsetup
+com:polozka:
+typ:refs/:
+stopsetup
+
+startsetup
+com:spodek:
+typ:ref/:
+stopsetup
+
+startsetup
+com:pol:
+typ:refs/:
+stopsetup
+
+startsetup
+com:ran:
+typ:arg/:
+stopsetup
+
+startsetup
+com:nadpis:
+typ:refs/:
+stopsetup
+
+startsetup
+com:okr:
+typ:refs/arg/:
+stopsetup
+
+startsetup
+com:pod:
+typ:refs/:
+stopsetup
+
+startsetup
+com:sym:
+typ:arg/:
+stopsetup
+
+startsetup
+com:nop:
+typ::
+stopsetup
+
+startsetup
+com:definujrejstrik:
+typ:val/val/:
+val:*jmeno v singularu::
+val:*jmeno v pluralu::
+stopsetup
+
+startsetup
+com:nastavrejstrik:
+typ:val/val/vars/:
+val:*jmeno v singularu::
+val:*jmeno::
+var:n:*cislo::
+var:rovnovaha:ano,ne::
+var:zarovnani:ano,ne::
+var:pismeno:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:stylstranky:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:styltextu:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:indikator:ano,ne::
+var:propojeni:ano,ne::
+var:*sekce*cislo:ano,ne::
+var:kriterium:*sekce,lokalne,vse::
+var:vzdalenost:*dimenze::
+var:symbol:1,2,...,n,a,...,zadny::
+var:interakce:cislostranky,text::
+var:expanzen:ano,prikaz,ne::
+var:odkazujici:zap,vyp::
+var:prikaz:*\prikaz#1::
+var:misto:vlevo,nastred,vpravo::
+var:maxsirka:*dimenze::
+var:neznamyodkaz:prazdne,zadny::
+stopsetup
+
+startsetup
+com:<<rejstrik>>:
+typ:val/idxs/:
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:start<<rejstrik>>:
+typ:val/idxs/:
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:zapisdorejstriku:
+typ:val/val/idxs/:
+val:*jmeno v singularu::
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:propojene<<rejstrik>>:
+typ:val/idx/:
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:propojenyrejstrik:
+typ:val/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:viz<<rejstrik>>:
+typ:val/arg/idxs/:
+val:*text::
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:uplny<<rejstrik>>:
+typ:vars/:
+ivr:nastavrejstrik::
+stopsetup
+
+startsetup
+com:umisti<<rejstrik>>:
+typ:vars/:
+ivr:nastavrejstrik::
+stopsetup
+
+startsetup
+com:definujsynonyma:
+typ:val/val/val/val/:
+val:*jmeno v singularu::
+val:*jmeno v pluralu::
+val:*prikaz::
+val:*prikaz::
+stopsetup
+
+startsetup
+com:nastavsynonyma:
+typ:val/vars/:
+val:*jmeno::
+var:styltextu:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:stylsynonyma:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:misto:vlevo,vpravo,vrsek,semknuto, naokraji,vlevo,vpravo::
+var:sirka:*dimenze::
+var:status:start,stop::
+var:kriterium:vse,uzito::
+var:konverze:ano,ne::
+var:expanzen:ano,prikaz,ne::
+var:prikaz:*\prikaz#1#2#3::
+stopsetup
+
+startsetup
+com:<<synonymum>>:
+typ:val/arg/arg/:
+val:*text::
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:uplnyseznam<<synonyma>>:
+typ::
+stopsetup
+
+startsetup
+com:umistiseznam<<synonyma>>:
+typ::
+stopsetup
+
+startsetup
+com:nacist<<synonyma>>:
+typ::
+stopsetup
+
+startsetup
+com:definujtrideni:
+typ:val/val/val/:
+val:*jmeno v singularu::
+val:*jmeno v pluralu::
+val:*prikaz::
+stopsetup
+
+startsetup
+com:nastavtrideni:
+typ:val/vars/:
+val:*jmeno::
+var:pred:*prikaz::
+var:po:*prikaz::
+var:prikaz:*\prikaz#1::
+var:status:start,stop::
+var:kriterium:vse,uzito::
+var:pismeno:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:expanzen:ano,prikaz,ne::
+stopsetup
+
+startsetup
+com:<<trid>>:
+typ:val/arg/:
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:uplnyseznam<<tridit>>:
+typ::
+stopsetup
+
+startsetup
+com:umistiseznam<<tridit>>:
+typ::
+stopsetup
+
+startsetup
+com:nacist<<tridit>>:
+typ::
+stopsetup
+
+startsetup
+com:definujupravu:
+typ:val/vars/:
+val:*jmeno::
+ivr:nastavupravu::
+stopsetup
+
+startsetup
+com:startuprava:
+typ:val/vars/stp/:
+val:*jmeno::
+ivr:nastavupravu::
+stopsetup
+
+startsetup
+com:nastavupravu:
+typ:val/vars/:
+val:*jmeno::
+var:sirka:*dimenze::
+var:vyska:*dimenze::
+var:voffset:*dimenze::
+var:hoffset:*dimenze::
+var:stranka:vlevo,ano,vpravo::
+var:prikazy:*prikaz::
+var:oboustranne:ano,ne,prazdne::
+var:statuszahlavi:normalni,stop,start,prazdne,zadny,zadneznaceni::
+var:statusupati:normalni,stop,start,prazdne,zadny,zadneznaceni::
+var:statustextu:normalni,stop,start,prazdne,zadny,zadneznaceni::
+var:statusvrsku:stop,start::
+var:statusspodku:stop,start::
+stopsetup
+
+startsetup
+com:start<<jmeno>>zlom:
+typ:stp/:
+stopsetup
+
+startsetup
+com:verze:
+typ:val/:
+val:finalni,koncept,docasne:finalni:
+stopsetup
+
+startsetup
+com:aktualnidatum:
+typ:vals/:
+val:den,mesic,MESIC,vsedniden,VSEDNIDEN,rok, dd,mm,jj,yy,d,m,j,y,znacka:den,mesic,rok:
+stopsetup
+
+startsetup
+com:datum:
+typ:vars/vals/:
+var:d:*cislo::
+var:m:*cislo::
+var:y:*cislo::
+ivl:aktualnidatum::
+stopsetup
+
+startsetup
+com:odkaznadatum:
+typ::
+stopsetup
+
+startsetup
+com:odsazovani:
+typ:vals/:
+val:nikdy,ne,ne,ano,vzdy,prvni,dalsi:nikdy:
+stopsetup
+
+startsetup
+com:zadneodsazovani:
+typ::
+stopsetup
+
+startsetup
+com:preskoc:
+typ:vals/:
+val:repeat/male,repeat/stredni,repeat/velke, zadnabila,zpet,bily,zablokovat,sila,reset, radek,pulradku,rovnice,fixne,prizpusobive:velke:
+stopsetup
+
+startsetup
+com:startzhustene:
+typ:val/stp/:
+val:prazdny::
+stopsetup
+
+startsetup
+com:startnezhustene:
+typ:stp/:
+stopsetup
+
+startsetup
+com:startkorekceradku:
+typ:stp/:
+stopsetup
+
+startsetup
+com:korekcebilehomista:
+typ:arg/:
+stopsetup
+
+startsetup
+com:startodlozit:
+typ:stp/:
+stopsetup
+
+startsetup
+com:startlokalni:
+typ:stp/:
+stopsetup
+
+startsetup
+com:startzuzeni:
+typ:vals/stp/:
+val:repeat/vlevo,repeat/nastred,repeat/vpravo:nastred:
+stopsetup
+
+startsetup
+com:startskryt:
+typ:stp/:
+stopsetup
+
+startsetup
+com:nastavzarovnani:
+typ:val/:
+val:sirka,vlevo,vpravo,nastred,uvnitr,vnejsi, siroce,siroky,vyska,spodek,radek,reset::
+stopsetup
+
+startsetup
+com:startzarovnavani:
+typ:stp/val/:
+ivr:nastavzarovnani::
+stopsetup
+
+startsetup
+com:nastavradkovani:
+typ:val/:
+val:siroky,zhustene::
+stopsetup
+
+startsetup
+com:nastavtoleranci:
+typ:vals/:
+val:horizontalne,vertikalne, natahnout,velmistriktni,striktni,tolerantni,velmitolerantni:velmistriktni:
+stopsetup
+
+startsetup
+com:typstrany:
+typ:val/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:zpracujstranu:
+typ:vals/val/:
+val:*jmeno::
+val:ano,ne:ano:
+stopsetup
+
+startsetup
+com:parovastrana:
+typ:vals/vars/:
+val:*jmeno::
+var:volba:dvoustranny::
+var:pred:*prikaz::
+var:po:*prikaz::
+stopsetup
+
+startsetup
+com:pozice:
+typ:poss/arg/:
+val:*cislo::
+val:*cislo::
+val:*text::
+stopsetup
+
+startsetup
+com:nastavrastr:
+typ:vars/:
+var:metoda:tecka,linka,externi::
+var:rozliseni:*cislo::
+var:faktor:*cislo::
+var:rastr:*cislo::
+stopsetup
+
+startsetup
+com:nastavpozadi:
+typ:val/vals/vars/:
+val:vrsek,zahlavi,text,upati,spodek, stranka,papir,levastranka,pravastranka::
+val:levahrana,levyokraj,text,pravyokraj,pravahrana::
+var:status:start,stop,opakovat::
+ivr:nastavoramovani::
+stopsetup
+
+startsetup
+com:startbuffer:
+typ:val/stp/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:ziskejbuffer:
+typ:val/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:typebuffer:
+typ:val/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:definujbuffer:
+typ:val/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:nastavbuffer:
+typ:val/vars/:
+val:*jmeno::
+var:odstavec:*cislo::
+var:pred:*prikaz::
+var:po:*prikaz::
+stopsetup
+
+startsetup
+com:definujblok:
+typ:val/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:zadnedalsibloky:
+typ::
+stopsetup
+
+startsetup
+com:schovejbloky:
+typ:vals/vals/:
+val:*jmeno::
+val:*jmeno::
+stopsetup
+
+startsetup
+com:zachovejbloky:
+typ:vals/vals/:
+val:*jmeno::
+val:vse,*jmeno::
+stopsetup
+
+startsetup
+com:uzijbloky:
+typ:vals/vals/:
+val:*jmeno::
+val:*jmeno::
+stopsetup
+
+startsetup
+com:zpracujbloky:
+typ:vals/vals/:
+val:*jmeno::
+val:*jmeno::
+stopsetup
+
+startsetup
+com:vyberbloky:
+typ:vals/vals/var/:
+val:*jmeno::
+val:*jmeno::
+var:kriterium:vse,*sekce::
+stopsetup
+
+startsetup
+com:nastavblok:
+typ:vals/vars/:
+val:*jmeno::
+var:pred:*prikaz::
+var:po:*prikaz::
+var:vnitrni:*prikaz::
+var:pismeno:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:soubor:*soubor::
+stopsetup
+
+startsetup
+com:startrovnice:
+typ:stp/:
+val:*rovnice::
+stopsetup
+
+startsetup
+com:matematika:
+typ:arg/:
+val:*rovnice::
+stopsetup
+
+startsetup
+com:umistirovnici:
+typ:refs/arg/dis/:
+val:*text::
+val:*rovnice::
+stopsetup
+
+startsetup
+com:umistipodrovnici:
+typ:refs/arg/dis/:
+val:*text::
+val:*rovnice::
+stopsetup
+
+startsetup
+com:umisti<<plvouciobjekt>>:
+typ:val/refs/arg/arg/:
+val:vlevo,vpravo,zde,vrsek,spodek, vlevo,vpravo,naokraji,marginalie, stranka,naproti,vzdy,sila,vysoko:zde:
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:rezervovat<<plvouciobjekt>>:
+typ:vars/val/refs/arg/:
+var:vyska:*dimenze::
+var:sirka:*dimenze::
+var:ramecek:zap,vyp::
+val:vlevo,vpravo,zde,vrsek,spodek, vlevo,vpravo,naokraji,marginalie, stranka,naproti,vzdy,sila:zde:
+val:*text::
+stopsetup
+
+startsetup
+com:definujplvouciobjekt:
+typ:val/val/:
+val:*jmeno v singularu::
+val:*jmeno v pluralu::
+stopsetup
+
+startsetup
+com:nastavplvouciobjekt:
+typ:val/vars/:
+val:*jmeno::
+var:vyska:*dimenze::
+var:sirka:*dimenze::
+var:hranicestranky:*seznam::
+ivr:nastavoramovani::
+stopsetup
+
+startsetup
+com:start<<plvouciobjekt>>text:
+typ:val/ref/arg/arg/stp/:
+val:vlevo,vpravo,vysoko,nastred,nizko,offset,vysoko::
+val:*text::
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:umistiseznam<<plvouciobjekty>>:
+typ::
+stopsetup
+
+startsetup
+com:uplnyseznam<<plvouciobjekty>>:
+typ::
+stopsetup
+
+startsetup
+com:odkaz:
+typ:vars/:
+var:bet:*text::
+var:ken:*text::
+var:dat:*text::
+var:z:*text::
+var:na:*text::
+var:ref:*text::
+stopsetup
+
+startsetup
+com:vyberpapir:
+typ:vars/:
+var:rodina:1,2::
+stopsetup
+
+startsetup
+com:dvoustrannypapir:
+typ:val/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:chem:
+typ:arg/arg/arg/:
+val:*text::
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:zlomek:
+typ:arg/arg/:
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:tecky:
+typ:val/:
+val:*cislo::
+stopsetup
+
+startsetup
+com:bydliste:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:polozky:
+typ:vars/args/:
+ivr:nastavpolozky::
+stopsetup
+
+startsetup
+com:nastavpolozky:
+typ:vars/:
+var:misto:vlevo,vpravo,naokraji,vrsek,spodek::
+var:symbol:1,2,...,n,a,...,*text,zadny::
+var:sirka:*dimenze::
+var:n:*cislo,neznamy::
+var:pred:*prikaz::
+var:mezi:*prikaz::
+var:zarovnani:vlevo,vpravo,nastred,marginalie::
+var:po:*prikaz::
+stopsetup
+
+startsetup
+com:startcitace:
+typ:vals/stp/:
+val:repeat/vlevo,repeat/nastred,repeat/vpravo:nastred:
+stopsetup
+
+startsetup
+com:citace:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:citovat:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:nastavcitaci:
+typ:vars/:
+var:pred:*prikaz::
+var:po:*prikaz::
+var:pismeno:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+stopsetup
+
+startsetup
+com:scitani:
+typ:val/:
+val:male,stredni,velke:stredni:
+stopsetup
+
+startsetup
+com:definujodstavce:
+typ:val/vars/:
+val:*jmeno::
+var:n:*cislo::
+var:linka:zap,vyp::
+var:vyska:prizpusobive,*dimenze::
+var:pred:*prikaz::
+var:po:*prikaz::
+var:vnitrni:*prikaz::
+var:vzdalenost:*dimenze::
+var:tolerance:velmistriktni,striktni,tolerantni,velmitolerantni,natahnout::
+var:zarovnani:vlevo,vpravo,nastred::
+stopsetup
+
+startsetup
+com:<<odstavec>>:
+typ::
+stopsetup
+
+startsetup
+com:start<<odstavec>>:
+typ:stp/:
+stopsetup
+
+startsetup
+com:nastavodstavce:
+typ:val/val/vars/:
+val:*jmeno::
+val:*cislo,kazdy::
+var:pismeno:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:sirka:*dimenze::
+var:vyska:*dimenze::
+var:zarovnani:vlevo,vpravo,nastred,sirka::
+var:tolerance:velmistriktni,striktni,tolerantni,velmitolerantni,natahnout::
+var:vzdalenost:*dimenze::
+var:pred:*prikaz::
+var:po:*prikaz::
+var:vnitrni:*prikaz::
+var:prikaz:*prikaz::
+var:linka:zap,vyp::
+stopsetup
+
+startsetup
+com:nastavtab:
+typ:vars/:
+var:vzor:*text::
+var:sirka:*dimenze::
+var:stylhlavicky:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:misto:vlevo,vpravo::
+stopsetup
+
+startsetup
+com:tab:
+typ:arg/nop/par/:
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:startdokument:
+typ:val/stp/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:dopisy:
+typ:val/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:popisky:
+typ:val/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:nastavkorespondenci:
+typ:vals/:
+val:formeel,informeel,rekening,ls, vysoko,nastred,nizko:formeel,nizko:
+stopsetup
+
+startsetup
+com:nastavlisty:
+typ:vars/:
+var:alternativa:*cislo::
+var:text:*text::
+var:velikost:male,stredni,velke::
+var:pismeno:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:cislo:*cislo,spojeno::
+stopsetup
+
+startsetup
+com:list:
+typ:val/:
+val:*text::
+stopsetup
+
+startsetup
+com:nastavetikety:
+typ:vars/:
+var:alternativa:a::
+var:n:*cislo,vse::
+var:misto:marginalie,vlevo,vpravo,nastred::
+stopsetup
+
+startsetup
+com:definujtabelaci:
+typ:val/val/val/:
+val:*jmeno::
+val:*jmeno::
+val:*text::
+stopsetup
+
+startsetup
+com:starttabelator:
+typ:val/vars/stp/:
+val:*text::
+ivr:uzijexterniobraz::
+stopsetup
+
+startsetup
+com:nastavtabelaci:
+typ:val/vars/:
+val:*jmeno::
+var:jednotka:*dimenze::
+var:odsazovani:ano,ne::
+var:pred:*prikaz::
+var:po:*prikaz::
+var:vnitrni:*prikaz::
+var:EQ:*text::
+var:barvalinky:*jmeno::
+var:zarovnani:vlevo,nastred,vpravo,normalni::
+var:tloustkalinky:*dimenze::
+var:vzdalenost:prazdny,podlehloubky,*dimenze,male,stredni,velke,zadny::
+stopsetup
+
+startsetup
+com:nastavtabulky:
+typ:vars/:
+var:vzdalenost:male,stredni,velke::
+var:zakladnifont:5pt,...,12pt,male,velke::
+var:HL:*cislo,male,stredni,velke,zadny::
+var:VL:*cislo,male,stredni,velke,zadny::
+var:hloubka:*cislo,strut::
+var:vyska:*cislo,strut::
+var:tloustkalinky:*dimenze::
+var:barvalinky:*jmeno::
+var:zarovnani:vpravo,nastred,vlevo,normalni::
+var:prikazy:*prikaz::
+var:zarovnani:vlevo,nastred,vpravo,normalni::
+var:pozadi:rastr,barevne,zadny::
+var:rastrpozadi:*cislo::
+var:barvapozadi:*jmeno::
+stopsetup
+
+startsetup
+com:starttabulka:
+typ:val/stp/:
+val:*text,*jmeno::
+stopsetup
+
+startsetup
+com:starttabulky:
+typ:val/stp/:
+val:*text,*jmeno::
+stopsetup
+
+startsetup
+com:definujsablonutabulky:
+typ:val/val/val/val/:
+val:*jmeno::
+val:*text::
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:uzijexternisoubory:
+typ:val/vars/:
+val:*jmeno::
+var:zakladnifont:5pt,...,12pt,male,velke::
+var:soubor:*soubor::
+stopsetup
+
+startsetup
+com:uzijexternisoubor:
+typ:val/val/val/vars/:
+val:*jmeno::
+val:*jmeno::
+val:*soubor::
+var:zakladnifont:5pt,...,12pt,male,velke::
+stopsetup
+
+startsetup
+com:uzijexterniobraz:
+typ:val/val/vars/:
+val:*jmeno::
+val:*soubor::
+var:meritko:*cislo::
+var:faktor:max,prizpusobive,siroky::
+var:sfaktor:*cislo,max,siroky,prizpusobive::
+var:vfaktor:*cislo,max,siroky,prizpusobive::
+var:sirka:*dimenze::
+var:vyska:*dimenze::
+var:ramecek:zap,vyp::
+var:prednastaveni:ano,ne::
+var:obrazovka:*soubor::
+var:nahled:ano,ne::
+var:opakovat:ano,ne::
+var:objekt:ano,ne::
+var:typ:eps,mps,pdf,tif,png,jpg,mov,tex::
+var:metoda:eps,mps,pdf,tif,png,jpg,mov,tex::
+stopsetup
+
+startsetup
+com:externiobraz:
+typ:val/vars/:
+val:*soubor::
+ivr:uzijexterniobraz::
+stopsetup
+
+startsetup
+com:nastavexterniobrazy:
+typ:var/:
+var:volba:ramecek,prazdne,test::
+var:objekt:ano,ne::
+var:ramecky:zap,vyp::
+var:ymax:*cislo::
+var:xmax:*cislo::
+var:adresar:*text::
+var:misto:lokalne,globalne::
+stopsetup
+
+startsetup
+com:ukazexterniobrazy:
+typ:vars/:
+var:alternativa:a,b,c::
+stopsetup
+
+startsetup
+com:uzijexternizvuk:
+typ:val/val/:
+val:*jmeno::
+val:*soubor::
+stopsetup
+
+startsetup
+com:jmeno:
+typ:arg/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:startlegenda:
+typ:val/tex/{leg}nop/sep/nop/sep/nop/sep/tex/{leg}stp/:
+val:dve::
+val:*text::
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:startfakt:
+typ:tex/{geg}nop/sep/nop/sep/nop/sep/tex/{geg}stp/:
+val:*text::
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:otocit:
+typ:vars/arg/:
+ivr:nastavotoceni::
+stopsetup
+
+startsetup
+com:nastavotoceni:
+typ:vars/:
+var:rotace:*cislo::
+ivr:nastavoramovani::
+stopsetup
+
+startsetup
+com:zrcadlit:
+typ:arg/:
+stopsetup
+
+startsetup
+com:meritko:
+typ:vars/arg/:
+var:sx:*cislo::
+var:sy:*cislo::
+stopsetup
+
+startsetup
+com:nastavspojeni:
+typ:vars/:
+var:pred:commando::
+var:mezi:commando::
+var:po:commando::
+var:vzdalenost:*dimenze::
+var:vyska:*dimenze,prizpusobive::
+var:sirka:*dimenze,prizpusobive::
+var:zarovnani:ne,vlevo,vpravo,nastred,normalni::
+stopsetup
+
+startsetup
+com:startspojeni:
+typ:val/stp/:
+val:*n*m::
+stopsetup
+
+startsetup
+com:umistivedlesebe:
+typ:arg/arg/:
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:umistinadsebe:
+typ:arg/arg/:
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:startprekryv:
+typ:arg/arg/stp/:
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:startprehled:
+typ:vals/stp/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:nastavinterakcniobrazovku:
+typ:vars/:
+var:sirka:*dimenze,prizpusobive,max::
+var:vyska:*dimenze,prizpusobive,max::
+var:zpetnamezera:*dimenze::
+var:svrchnimezera:*dimenze::
+var:horoffset:*dimenze::
+var:offsethlavicky:*dimenze::
+var:volba:max,zalozka::
+var:prodleva:*cislo,zadny::
+stopsetup
+
+startsetup
+com:obrazovka:
+typ::
+stopsetup
+
+startsetup
+com:nastavprechodstrany:
+typ:vals/:
+val:reset, *cislo::
+stopsetup
+
+startsetup
+com:nastavinterakci:
+typ:vars/:
+var:status:start,stop::
+var:menu:zap,vyp::
+var:stranka:ano,ne::
+var:klik:ano,ne::
+var:split:ano,ne::
+var:obrazovka:novy::
+var:otevriakci:*reference::
+var:zavriakci:*reference::
+var:akceotevrenistranky:*reference::
+var:akcezavrenistranky:*reference::
+var:pocitat:*jmeno::
+var:strut:ano,ne::
+var:sirka:*dimenze::
+var:vyska:*dimenze::
+var:hloubka:*dimenze::
+var:pismeno:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...*prikaz::
+var:barva:*jmeno::
+var:kontrastnibarva:*jmeno::
+var:sadasymbolu:*jmeno::
+var:titul:*text::
+var:podtitulek:*text::
+var:autor:*text::
+var:datum:*text::
+stopsetup
+
+startsetup
+com:nastavinterakcnimenu:
+typ:vals/vars/dests/:
+val:vlevo,vpravo,vrsek,spodek,*jmeno::
+var:pred:*prikaz::
+var:po:*prikaz::
+var:mezi:*prikaz::
+var:vlevo:*prikaz::
+var:vpravo:*prikaz::
+var:stredni:*prikaz::
+var:status:start,stop,zadny::
+var:pismeno:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...*prikaz::
+var:barva:*jmeno::
+var:vzdalenost:prekryv,*dimenze::
+var:stejnastranka:ano,prazdne,ne,zadny::
+var:neznamyodkaz:ano,prazdne,ne,zadny::
+var:levyoffset:*dimenze::
+var:pravyoffset:*dimenze::
+var:offsetvrsku:*dimenze::
+var:offsetspodku:*dimenze::
+var:position:ano,ne::
+ivr:nastavoramovani::
+stopsetup
+
+startsetup
+com:definujinterakcnimenu:
+typ:val/val/vars/:
+val:vlevo,vpravo,vrsek,spodek,*jmeno::
+val:vlevo,vpravo,vrsek,spodek,*jmeno::
+ivr:nastavinterakcnimenu::
+stopsetup
+
+startsetup
+com:startinteraktivnimenu:
+typ:val/stp/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:zablokujinterakcnimenu:
+typ:val/refs/:
+val:vlevo,vpravo,vrsek,spodek,*jmeno::
+stopsetup
+
+startsetup
+com:uzijexternidokument:
+typ:val/val/val/:
+val:*jmeno::
+val:file::
+val:*text::
+stopsetup
+
+startsetup
+com:uzijURL:
+typ:val/val/val/val/:
+val:*jmeno::
+val:*text::
+val:file::
+val:*text::
+stopsetup
+
+startsetup
+com:propojenydokument:
+typ:val/val/val/:
+val:*jmeno::
+val:file::
+val:*jmeno::
+val:*text::
+stopsetup
+
+startsetup
+com:zref:
+typ:ref/:
+val:*text::
+stopsetup
+
+startsetup
+com:interakcnilista:
+typ:vars/:
+ivr:nastavinterakcnilistu::
+stopsetup
+
+startsetup
+com:interakcnitlacitka:
+typ:vars/vals/:
+ivr:nastavinterakcnilistu::
+val:*jmeno::
+stopsetup
+
+startsetup
+com:nastavinterakcnilistu:
+typ:vars/:
+var:status:start,stop::
+var:alternativa:a,b,c,d,e,f,g::
+var:symbol:ano,ne::
+var:sirka:*dimenze,hoogte,prizpusobive::
+var:vyska:*dimenze,hoogte,prizpusobive::
+var:hloubka:*dimenze::
+var:barva:*jmeno::
+var:krok:*cislo,male,stredni,velke::
+ivr:nastavoramovani::
+stopsetup
+
+startsetup
+com:synchronizovat:
+typ::
+stopsetup
+
+startsetup
+com:startsynchronizace:
+typ:stp/:
+stopsetup
+
+startsetup
+com:nastavsynchronizacnilistu:
+typ:vars/:
+var:alternativa:stranka,lokalne::
+var:sirka:*dimenze,hoogte,prizpusobive::
+var:vyska:*dimenze::
+var:pismeno:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+var:barva:*jmeno::
+ivr:nastavoramovani::
+stopsetup
+
+startsetup
+com:synchronizacnilista:
+typ:val/vars/:
+val:*jmeno::
+var:alternativa:stranka,lokalne::
+ivr:nastavsynchronizacnilistu::
+stopsetup
+
+startsetup
+com:nastavsynchronizaci:
+typ:vars/:
+var:status:start,stop::
+stopsetup
+
+startsetup
+com:definujprofil:
+typ:vals/vals/:
+val:*jmeno::
+val:*jmeno::
+stopsetup
+
+startsetup
+com:nastavprofily:
+typ:vars/:
+var:volba:test::
+stopsetup
+
+startsetup
+com:startprofil:
+typ:vals/stp/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:dodrzujprofil:
+typ:arg/val/:
+val:*text::
+val:*jmeno::
+stopsetup
+
+startsetup
+com:segnalibro:
+typ:vals/vals/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:definiscilogo:
+typ:val/arg/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:startverze:
+typ:vals/stp/:
+val:*cislo::
+stopsetup
+
+startsetup
+com:nastavverze:
+typ:vars/:
+var:cislo:*cislo::
+var:pismeno:normalni,tucne,sklonene,tucnesklonene,opis,kap,male...,*prikaz::
+stopsetup
+
+startsetup
+com:oznacverzi:
+typ::
+stopsetup
+
+startsetup
+com:vyberverzi:
+typ::
+stopsetup
+
+startsetup
+com:definujverzi:
+typ:val/vals/:
+val:*jmeno::
+val:*cislo::
+stopsetup
+
+startsetup
+com:dodrzujverzi:
+typ:arg/val/:
+val:*text::
+val:*jmeno::
+stopsetup
+
+startsetup
+com:dodrzujverziprofilu:
+typ:arg/val/val/:
+val:*text::
+val:*jmeno::
+val:*jmeno::
+stopsetup
+
+startsetup
+com:definujprogram:
+typ:val/val/val/:
+val:*jmeno::
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:nastavprogramy:
+typ:vars/:
+var:adresar:*text::
+stopsetup
+
+startsetup
+com:program:
+typ:val/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:startobraz:
+typ:val/val/vars/stp/:
+val:*jmeno::
+val:*soubor::
+var:faktor:*cislo::
+var:ramecek:zap,vyp::
+stopsetup
+
+startsetup
+com:odkazujici/obrazek:
+typ:poss/poss/val/:
+val:*cislo::
+val:*cislo::
+val:*cislo::
+val:*cislo::
+val:*text::
+stopsetup
+
+startsetup
+com:znaceni/obrazek:
+typ:poss/poss/val/:
+val:*cislo::
+val:*cislo::
+val:*cislo::
+val:*cislo::
+val:*text::
+stopsetup
+
+startsetup
+com:oznaceni:
+typ:poss/poss/vars/arg/:
+val:*cislo::
+val:*cislo::
+val:*cislo::
+val:*cislo::
+ivr:nastavoramovani::
+val:*text::
+stopsetup
+
+startsetup
+com:jdina:
+typ:arg/arg/refs/:
+val:*text::
+stopsetup
+
+startsetup
+com:jdinabox:
+typ:arg/refs/:
+val:*text::
+stopsetup
+
+startsetup
+com:tlacitko:
+typ:vars/arg/refs/:
+ivr:nastavtlacitka::
+val:*text::
+stopsetup
+
+startsetup
+com:nastavtlacitka:
+typ:vars/:
+var:status:start,stop::
+ivr:nastavoramovani::
+stopsetup
+
+startsetup
+com:tlacitkomenu:
+typ:val/vars/arg/refs/:
+ivr:nastavoramovani::
+val:*text::
+stopsetup
+
+startsetup
+com:nastavkomentar:
+typ:vars/:
+var:sirka:*dimenze::
+var:vyska:*dimenze::
+var:barva:*jmeno::
+var:titul:*text::
+var:mezera:ano,ne::
+var:symbol:normalni,Novy,Bublinka,Pridavek,Napoveda,Odstavec,Klavesa::
+stopsetup
+
+startsetup
+com:startkomentar:
+typ:val/vars/stp/:
+val:*jmeno::
+ivr:nastavkomentar::
+stopsetup
+
+startsetup
+com:komentar:
+typ:val/vars/arg/:
+val:*jmeno::
+ivr:nastavkomentar::
+stopsetup
+
+startsetup
+com:definujpole:
+typ:val/val/val/vals/val/:
+val:*jmeno::
+val:*jmeno:radio,check,push,line,text,popup,choice,combo:
+val:*jmeno::
+val:*jmeno::
+val:*jmeno::
+stopsetup
+
+startsetup
+com:definujpodpole:
+typ:val/val/vals/:
+val:*jmeno::
+val:*jmeno::
+val:*jmeno::
+stopsetup
+
+startsetup
+com:kopirujpole:
+typ:val/vals/:
+val:*jmeno::
+val:*jmeno::
+stopsetup
+
+startsetup
+com:klonujpole:
+typ:val/vals/val/vals/:
+val:*jmeno::
+val:*jmeno::
+val:*jmeno::
+val:*jmeno::
+stopsetup
+
+startsetup
+com:pole:
+typ:val/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:prizpusobivepole:
+typ:val/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:vyplnovepole:
+typ:val/arg/:
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:bublinkovanapoveda:
+typ:val/arg/arg/:
+val:vlevo,vpravo,nastred::
+val:*text::
+stopsetup
+
+startsetup
+com:ukazpole:
+typ:vals/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:zaznamovepole:
+typ::
+stopsetup
+
+startsetup
+com:nastavpole:
+typ:val/vals/vars/vars/vars/:
+val:*jmeno::
+val:popisek,horizontalne,vertikalne,ramecek::
+ivr:oramovani::
+ivr:nastavvsechnapole::
+stopsetup
+
+startsetup
+com:nastavvsechnapole:
+typ:vals/val/vars/vars/vars/:
+val:*jmeno::
+val:reset,popisek,horizontalne,vertikalne,ramecek::
+ivr:oramovani::
+var:n:*cislo::
+var:vzdalenost:*dimenze::
+var:pred:*prikaz::
+var:po:*prikaz::
+var:mezi:*prikaz::
+var:barva:*jmeno::
+var:pismeno:normalni,tucne,sklonene,tucnesklonene,opis::
+var:zarovnani:vlevo,nastred,vpravo::
+var:volba:pouzeprocteni,pozadovane,chranene,tridene, nedostupne, skryte,tisknutelne::
+var:klikuvnitr:*reference::
+var:klikvne:*reference::
+var:oblastuvnitr:*reference::
+var:oblastvne:*reference::
+var:klavesapo:*reference::
+var:formatovat:*reference::
+var:validovat:*reference::
+var:pocitat:*reference::
+var:offsetpole:*dimenze::
+var:barvarameckupole:*jmeno::
+var:barvapozadipole:*jmeno::
+stopsetup
+
+startsetup
+com:setupforms:
+typ:vars/:
+var:metoda:HTML,FDF::
+stopsetup
+
+startsetup
+com:definujzasobnikpoli:
+typ:val/vals/vars/:
+val:*jmeno::
+val:*jmeno::
+ivr:nastavvsechnapole::
+stopsetup
+
+startsetup
+com:zasobnikpoli:
+typ:val/vals/vars/:
+val:*jmeno::
+val:*jmeno::
+ivr:nastavvsechnapole::
+stopsetup
+
+startsetup
+com:orez:
+typ:vars/arg/:
+ivr:nastavorez::
+stopsetup
+
+startsetup
+com:nastavorez:
+typ:vars/:
+var:nx:*cislo::
+var:ny:*cislo::
+var:x:*cislo::
+var:y:*cislo::
+var:sirka:*dimenze::
+var:vyska:*dimenze::
+var:hoffset:*dimenze::
+var:voffset:*dimenze::
+var:mp:*jmeno::
+stopsetup
+
+startsetup
+com:umistilegendu:
+typ:arg/arg/:
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:nastavlegendu:
+typ:vars/:
+var:n:*cislo::
+var:vzdalenost:*dimenze::
+var:mezi:*prikaz::
+var:sirka:*dimenze::
+var:vyska:*dimenze::
+var:misto:vpravo,spodek::
+var:zakladnifont:5pt,...,12pt,male,velke::
+stopsetup
+
+startsetup
+com:definerule:
+typ:val/vars/:
+val:*jmeno::
+ivr:setuprule::
+stopsetup
+
+startsetup
+com:placerule:
+typ:val/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:setuprule:
+typ:val/vars/:
+val:*jmeno::
+var:hloubka:*dimenze::
+var:vyska:*dimenze::
+var:sirka:*dimenze::
+var:mezerapred:*dimenze::
+var:mezeraza:*dimenze::
+var:barva:*jmeno::
+stopsetup
+
+startsetup
+com:definetextvariable:
+typ:val/val/vars/:
+ivr:setuptextvariable::
+stopsetup
+
+startsetup
+com:setuptextvariable:
+typ:val/vars/:
+val:*jmeno::
+var:vlevo:*text::
+var:vpravo:*text::
+var:vzdalenost:*dimenze::
+var:prikaz:*\prikaz#1::
+var:strut:ano,ne,kap,*text::
+stopsetup
+
+startsetup
+com:settextvariable:
+typ:val/val/:
+val:*jmeno::
+val:*text::
+stopsetup
+
+startsetup
+com:placetextvariable:
+typ:val/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:textvariable:
+typ:val/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:definerawfont:
+typ:val/val/vars/:
+val:*jmeno::
+val:*soubor::
+ivr:nastavmeziradkovoumezeru::
+stopsetup
+
+startsetup
+com:switchtorawfont:
+typ:val/:
+val:*jmeno::
+stopsetup
+
+startsetup
+com:definetextposition:
+typ:val/vars/:
+val:*jmeno::
+ivr:nastavumistovani::
+stopsetup
+
+startsetup
+com:setuptextposition:
+typ:val/vars/:
+val:*jmeno::
+ivr:nastavumistovani::
+stopsetup
+
+startsetup
+com:positiontext:
+typ:val/arg/:
+val:*jmeno::
+val:*text::
+stopsetup
+
+startsetup
+com:setupstrut:
+typ:val/:
+val:ano,ne,kap,*text:ano:
+stopsetup
+
diff --git a/context/data/cont-de.tws b/context/data/cont-de.tws
new file mode 100644
index 000000000..451988498
--- /dev/null
+++ b/context/data/cont-de.tws
@@ -0,0 +1,4029 @@
+startsetup
+com:installieresprache:
+typ:val/vars/:
+val:*Name::
+var:spatiumausgleich:gepackt,breit::
+var:lefthyphenmin:*Dimension::
+var:righthyphenmin:*Dimension::
+var:status:start,stop::
+var:linkersatz:*Befehl::
+var:rechtersatz:*Befehl::
+var:linkersubsatz:*Befehl::
+var:rechtersubsatz:*Befehl::
+var:linkerzitieren:*Befehl::
+var:rechterzitieren:*Befehl::
+var:linkerzitat:*Befehl::
+var:rechterzitat:*Befehl::
+var:default:*Name::
+stopsetup
+
+startsetup
+com:stellespracheein:
+typ:val/vars/:
+ivr:installieresprache::
+stopsetup
+
+startsetup
+com:sprache:
+typ:val/:
+val:nl,fr,en,uk,de,sp,cz,..:nl:
+stopsetup
+
+startsetup
+com:hauptsprache:
+typ:val/:
+val:nl,fr,en,uk,de,sp,cz,..:nl:
+stopsetup
+
+startsetup
+com:uebersetzten:
+typ:vars/:
+var:*Name:*Text::
+stopsetup
+
+startsetup
+com:benutzekodierung:
+typ:vals/:
+val:*Name::
+stopsetup
+
+startsetup
+com:benutzespezielles:
+typ:vals/:
+val:reset,*Name::
+stopsetup
+
+startsetup
+com:defineoutput:
+typ:val/vals/:
+val:*Name::
+val:*Name::
+stopsetup
+
+startsetup
+com:stelleausgabeein:
+typ:vals/:
+val:*Name::
+stopsetup
+
+startsetup
+com:definierefliesstextumgebung:
+typ:val/vars/:
+val:5pt,...,12pt,default::
+var:text:*Dimension::
+var:script:*Dimension::
+var:scriptscript:*Dimension::
+var:x:*Dimension::
+var:xx:*Dimension::
+var:klein:*Dimension::
+var:gross:*Dimension::
+stopsetup
+
+startsetup
+com:stellefliesstextumgebungein:
+typ:val/vars/:
+ivl:stellefliesstextein::
+ivr:stellefliesstextein::
+stopsetup
+
+startsetup
+com:zeigefliesstextumgebung:
+typ:vals/:
+ivl:stellefliesstextein::
+stopsetup
+
+startsetup
+com:definierefliesstext:
+typ:vals/val/vars/:
+val:5pt,...,12pt,default::
+val:rm,ss,tt,mm,hw,cg::
+var:tf:*Datei::
+var:bf:*Datei::
+var:sl:*Datei::
+var:it:*Datei::
+var:bs:*Datei::
+var:bi:*Datei::
+var:sc:*Datei::
+var:ex:*Datei::
+var:mi:*Datei::
+var:sy:*Datei::
+var:ma:*Datei::
+var:mb:*Datei::
+var:mc:*Datei::
+stopsetup
+
+startsetup
+com:zeigefliesstext:
+typ:vals/:
+ivl:stellefliesstextein::
+stopsetup
+
+startsetup
+com:stellefliesstextein:
+typ:vals/:
+val:*Name, serif,regular,antiqua, sans,support,grotesk, mono,tippen,fernschreiber, handschrift,kalligraphie, 5pt,...,12pt:sau,ibm,12pt,serif:
+stopsetup
+
+startsetup
+com:wechselezumfliesstext:
+typ:vals/:
+val:5pt,...,12pt,klein,gross,global::
+stopsetup
+
+startsetup
+com:definiereschrift:
+typ:val/val/:
+val:*Name::
+val:*Datei::
+stopsetup
+
+startsetup
+com:setupstrut:
+typ:vals/:
+val:ja,nein,kap,*Text:ja:
+stopsetup
+
+startsetup
+com:stellefarbeein:
+typ:val/:
+val:*Name:rgb:
+stopsetup
+
+startsetup
+com:stellefarbenein:
+typ:vars/:
+var:status:start,stop,global,lokal::
+var:konversion:ja,nein,immer::
+var:reduktion:ja,nein::
+var:rgb:ja,nein::
+var:cmyk:ja,nein::
+stopsetup
+
+startsetup
+com:definierefarbe:
+typ:val/vars/:
+val:*Name::
+var:r:*Text::
+var:g:*Text::
+var:b:*Text::
+var:c:*Text::
+var:m:*Text::
+var:y:*Text::
+var:k:*Text::
+var:s:*Text::
+stopsetup
+
+startsetup
+com:startfarbe:
+typ:val/stp/:
+val:*Name::
+val:*Text::
+stopsetup
+
+startsetup
+com:farbe:
+typ:val/arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:graufarbe:
+typ:val/:
+val:*Text::
+stopsetup
+
+startsetup
+com:zeigefarbe:
+typ:val/:
+val:*Name::
+stopsetup
+
+startsetup
+com:definierepalette:
+typ:val/vars/:
+val:*Name::
+var:*Name:*Name::
+stopsetup
+
+startsetup
+com:stellepaletteein:
+typ:val/:
+val:*Name::
+stopsetup
+
+startsetup
+com:definierefarbengruppe:
+typ:val/val/vals/:
+val:*Name::
+val:rgb,cmyk,grau,s:rgb:
+val:trips/::
+stopsetup
+
+startsetup
+com:zeigepalette:
+typ:val/vals/:
+val:*Name::
+val:horizontal,vertikal,name,wert::
+stopsetup
+
+startsetup
+com:zeigefarbengruppe:
+typ:val/vals/:
+val:*Name::
+val:horizontal,vertikal,name,wert,nummer::
+stopsetup
+
+startsetup
+com:vergleichepalette:
+typ:val/:
+val:*Name::
+stopsetup
+
+startsetup
+com:vergleichefarbengruppe:
+typ:val/:
+val:*Name::
+stopsetup
+
+startsetup
+com:zeigeumbruch:
+typ::
+stopsetup
+
+startsetup
+com:stelletipein:
+typ:var/:
+var:spatium:an,aus::
+var:option:geneigt,normal,kein::
+var:stil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:farbe:*Name::
+stopsetup
+
+startsetup
+com:tippen:
+typ:arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:tip:
+typ:arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:tex:
+typ:arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:arg:
+typ:arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:definieretippen:
+typ:val/vars/:
+val:datei,tippen,*Name::
+ivr:stelletippenein::
+stopsetup
+
+startsetup
+com:stelletippenein:
+typ:val/vars/:
+val:datei,tippen,*Name::
+var:spatium:an,aus::
+var:seite:ja,nein::
+var:option:geneigt,normal,befehle,farbe,kein::
+var:text:ja,nein::
+var:ibefehl:*Befehl::
+var:vbefehl:*Befehl::
+var:cbefehl:*Befehl::
+var:vor:*Befehl::
+var:nach:*Befehl::
+var:marginalie:*Dimension,standard::
+var:geraderand:*Dimension::
+var:ungeraderand:*Dimension::
+var:blanko:*Dimension,klein,mittel,gross,standard,halbezeile,zeile::
+var:escape:*\@@mssetupcharacter ::
+var:ziehefolgendeein:ja,nein::
+var:stil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:farbe:*Name::
+var:palette:*Name::
+stopsetup
+
+startsetup
+com:starttippen:
+typ:stp/:
+stopsetup
+
+startsetup
+com:tippedatei:
+typ:arg/arg/:
+val:*Name::
+val:*Datei::
+stopsetup
+
+startsetup
+com:stellefussnotenein:
+typ:vars/:
+var:konversion:ziffern,buchstaben,Buchstaben,roemischezahlen,Roemischezahlen::
+var:art:protext,pro*Abschnitt::
+var:platz:seite,text,spalten,hoch::
+var:linie:an,aus::
+var:vor:*Befehl::
+var:nach:*Befehl::
+var:breite:*Dimension::
+var:hoehe:*Dimension::
+var:fliesstext:5pt,...,12pt,klein,gross::
+var:stil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:abstand:*Dimension::
+var:spaltenabstand:*Dimension::
+var:marginalabstand:*Dimension::
+var:n:*Nummer::
+var:nummerbefehl:*\Befehl#1::
+ivr:umrahmt::
+stopsetup
+
+startsetup
+com:stellefussnotendefinitionein:
+typ:vars/:
+ivr:definierebeschreibung::
+stopsetup
+
+startsetup
+com:fussnote:
+typ:ref/arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:notiz:
+typ:ref/:
+stopsetup
+
+startsetup
+com:startlokalefussnoten:
+typ:stp/:
+ivr:stellefussnotenein::
+stopsetup
+
+startsetup
+com:platzierelokalefussnoten:
+typ:vars/:
+ivr:stellefussnotenein::
+stopsetup
+
+startsetup
+com:platzierefussnoten:
+typ:vars/:
+ivr:stellefussnotenein::
+stopsetup
+
+startsetup
+com:stelleunterstreichenein:
+typ:vars/:
+var:alternative:a,b,c::
+var:liniendicke:*Dimension::
+var:untenoffset:*Dimension::
+var:obenoffset:*Dimension::
+stopsetup
+
+startsetup
+com:unterstrichen:
+typ:arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:unterstreichen:
+typ:wrds/:
+val:*Text::
+stopsetup
+
+startsetup
+com:ueberstrichen:
+typ:arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:ueberstreichen:
+typ:wrds/:
+val:*Text::
+stopsetup
+
+startsetup
+com:durchgestrichen:
+typ:arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:durchstreichen:
+typ:wrds/:
+val:*Text::
+stopsetup
+
+startsetup
+com:roemischezahlen:
+typ:arg/:
+val:*Nummer::
+stopsetup
+
+startsetup
+com:Roemischezahlen:
+typ:arg/:
+val:*Nummer::
+stopsetup
+
+startsetup
+com:ziffern:
+typ:arg/:
+val:*Nummer::
+stopsetup
+
+startsetup
+com:buchstabe:
+typ:arg/:
+val:*Nummer::
+stopsetup
+
+startsetup
+com:Buchstabe:
+typ:arg/:
+val:*Nummer::
+stopsetup
+
+startsetup
+com:buchstaben:
+typ:arg/:
+val:*Nummer::
+stopsetup
+
+startsetup
+com:Buchstaben:
+typ:arg/:
+val:*Nummer::
+stopsetup
+
+startsetup
+com:mittelalterlich:
+typ:arg/:
+val:*Nummer::
+stopsetup
+
+startsetup
+com:monat:
+typ:arg/:
+val:*Nummer::
+stopsetup
+
+startsetup
+com:MONAT:
+typ:arg/:
+val:*Nummer::
+stopsetup
+
+startsetup
+com:wochentag:
+typ:arg/:
+val:*Nummer::
+stopsetup
+
+startsetup
+com:WOCHENTAG:
+typ:arg/:
+val:*Nummer::
+stopsetup
+
+startsetup
+com:stelleversalienein:
+typ:vars/:
+var:titel:ja,nein::
+var:sc:ja,nein::
+stopsetup
+
+startsetup
+com:kap:
+typ:arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:nokap:
+typ:arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:KAP:
+typ:arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:Kap:
+typ:arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:Kaps:
+typ:wrds/:
+val:*Text::
+stopsetup
+
+startsetup
+com:WORT:
+typ:wrd/:
+val:*Text::
+stopsetup
+
+startsetup
+com:WOERTER:
+typ:wrds/:
+val:*Text::
+stopsetup
+
+startsetup
+com:Wort:
+typ:wrd/:
+val:*Text::
+stopsetup
+
+startsetup
+com:Woerter:
+typ:wrds/:
+val:*Text::
+stopsetup
+
+startsetup
+com:gestreckt:
+typ:wrd/:
+val:*Text::
+stopsetup
+
+startsetup
+com:definieresymbol:
+typ:val/val/:
+val:*Name::
+val:*Text::
+stopsetup
+
+startsetup
+com:definiereabbsymbol:
+typ:val/val/vars/:
+val:*Name::
+val:*Text::
+ivr:externeabbildung::
+stopsetup
+
+startsetup
+com:symbol:
+typ:val/val/:
+val:*Name::
+val:*Name::
+stopsetup
+
+startsetup
+com:startsymbolset:
+typ:val/stp/:
+val:*Name::
+stopsetup
+
+startsetup
+com:stellesymbolsetein:
+typ:val/:
+val:*Name::
+stopsetup
+
+startsetup
+com:verwendesymbole:
+typ:val/:
+val:*Name::
+stopsetup
+
+startsetup
+com:showsymbolset:
+typ:val/:
+val:*Name::
+stopsetup
+
+startsetup
+com:definierekonversion:
+typ:val/val/:
+val:*Name::
+val:*Befehl,*Text::
+stopsetup
+
+startsetup
+com:konvertierezahl:
+typ:arg/arg/:
+val:*Name::
+val:*Nummer::
+stopsetup
+
+startsetup
+com:stelleueberschrifttextein:
+typ:val/var/:
+val:nl,fr,en,uk,de,sp,cz,..:nl:
+var:*Name:*Text::
+stopsetup
+
+startsetup
+com:stellelabeltextein:
+typ:val/var/:
+val:nl,fr,en,uk,de,sp,cz,..:nl:
+var:*Name:*Text::
+stopsetup
+
+startsetup
+com:ueberschrifttext:
+typ:arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:labeltext:
+typ:arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:stellemarginallinieein:
+typ:var/:
+var:niveau:*Nummer::
+var:dicke:*Dimension::
+stopsetup
+
+startsetup
+com:startmarginallinie:
+typ:val/stp/:
+val:*Nummer::
+stopsetup
+
+startsetup
+com:marginallinie:
+typ:val/arg/:
+val:*Nummer::
+stopsetup
+
+startsetup
+com:stellelinienbreiteein:
+typ:val/:
+val:*Dimension::
+stopsetup
+
+startsetup
+com:stelleumrahmtein:
+typ:vars/:
+var:hoehe:passend,breit,*Dimension::
+var:breite:passend,breit,*Dimension::
+var:offset:kein,overlay,default,*Dimension::
+var:platz:tief,tiefe::
+var:option:kein,leer::
+var:strut:ja,nein::
+var:ausrichtung:nein,links,rechts,mittig,normal,hoch,tief,hoti::
+var:unten:*Befehl::
+var:oben:*Befehl::
+var:rahmen:an,aus,overlay::
+var:obenrahmen:an,aus::
+var:untenrahmen:an,aus::
+var:linkerrahmen:an,aus::
+var:rechterrahmen:an,aus::
+var:rahmenoffset:*Dimension::
+var:rahmentiefe:*Dimension::
+var:rahmenwinkel:rund,rechteckig::
+var:rahmenradius:*Dimension::
+var:rahmenfarbe:*Name::
+var:hintergrund:raster,farbe,kein,vordergrund,*Name::
+var:hintergrundraster:*Nummer::
+var:hintergrundfarbe:*Name::
+var:hintergrundoffset:rahmen,*Dimension::
+var:hintergrundtiefe:*Dimension::
+var:hintergrundwinkel:rund,rechteckig::
+var:hintergrundradius:*Dimension::
+var:tiefe:*Dimension::
+var:winkel:rund,rechteckig::
+var:radius:*Dimension::
+var:leer:ja,nein::
+val:*Text::
+stopsetup
+
+startsetup
+com:umrahmt:
+typ:vars/arg/:
+ivr:stelleumrahmtein::
+val:*Text::
+stopsetup
+
+startsetup
+com:imumriss:
+typ:vars/arg/:
+ivr:stelleumrahmtein::
+val:*Text::
+stopsetup
+
+startsetup
+com:duennerumriss:
+typ:var/:
+ivr:stelleduennerumrissein::
+stopsetup
+
+startsetup
+com:stelleduennerumrissein:
+typ:var/:
+var:zeilenabstande:klein,mittel,gross::
+var:n:*Nummer::
+var:vor:*Befehl::
+var:nach:*Befehl::
+stopsetup
+
+startsetup
+com:haarlinie:
+typ::
+stopsetup
+
+startsetup
+com:duennelinie:
+typ::
+stopsetup
+
+startsetup
+com:definiereumrahmtertext:
+typ:val/vars/:
+val:*Name::
+ivr:stelleumrahmtetexteein::
+stopsetup
+
+startsetup
+com:definiereumrahmt:
+typ:val/vars/:
+val:*Name::
+ivr:stelleumrahmtetexteein::
+stopsetup
+
+startsetup
+com:stelleumrahmtetexteein:
+typ:vars/:
+var:fliesstext:5pt,...,12pt,klein,gross::
+var:stil:normal,fett,geneigt,fettgeneigt,tippen,klein...,*Befehl::
+var:links:*Befehl::
+var:rechts:*Befehl::
+var:vor:*Befehl::
+var:nach:*Befehl::
+var:innen:*Befehl::
+var:marginalie:standard,ja,nein::
+ivr:stelleumrahmtein::
+stopsetup
+
+startsetup
+com:start<<umrahmtertext>>:
+typ:val/vars/stp/:
+val:links,rechts,mittig::
+ivr:stelleumrahmtetexteein::
+stopsetup
+
+startsetup
+com:<<umrahmtertext>>:
+typ:vars/:
+ivr:stelleumrahmtetexteein::
+stopsetup
+
+startsetup
+com:starthintergrund:
+typ:stp/:
+stopsetup
+
+startsetup
+com:hintergrund:
+typ::
+stopsetup
+
+startsetup
+com:stellehintergrundein:
+typ:vars/:
+var:linkeroffset:*Dimension::
+var:rechterabstand:*Dimension::
+var:obenoffset:*Dimension::
+var:untenoffset:*Dimension::
+var:status:start,stop::
+ivr:stelleumrahmtein::
+stopsetup
+
+startsetup
+com:gefuelltesrechteck:
+typ:vars/arg/arg/:
+ivr:stellegefuelltesrechteckein::
+stopsetup
+
+startsetup
+com:ausfuelltext:
+typ:vars/arg/arg/par/:
+ivr:stellegefuelltesrechteckein::
+stopsetup
+
+startsetup
+com:stellegefuelltesrechteckein:
+typ:vars/:
+var:breite:passend,breit,*Dimension::
+var:abstand:*Dimension::
+var:vor:*Befehl::
+var:nach:*Befehl::
+var:stil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:n:*Nummer::
+var:zeilenabstande:klein,mittel,gross::
+var:seperator:*Text::
+stopsetup
+
+startsetup
+com:gefuelltezeile:
+typ:vars/nop/par/:
+ivr:stellegefuelltezeileein::
+stopsetup
+
+startsetup
+com:stellegefuelltezeileein:
+typ:vars/:
+var:breite:*Dimension::
+var:marginalie:*Dimension::
+var:abstand:*Dimension::
+var:vor:*Befehl::
+var:nach:*Befehl::
+stopsetup
+
+startsetup
+com:stelletextumrissein:
+typ:vars/:
+var:platz:links,imrand::
+var:vor:*Befehl::
+var:nach:*Befehl::
+var:zwischen:*Befehl::
+var:breite:*Dimension::
+var:abstand:*Dimension::
+var:fliesstext:5pt,...,12pt,klein,gross::
+var:farbe:*Name::
+var:stil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:linienfarbe:*Name::
+stopsetup
+
+startsetup
+com:textlinie:
+typ:val/arg/:
+val:oben,unten::
+val:*Text::
+stopsetup
+
+startsetup
+com:starttextlinie:
+typ:val/arg/stp/:
+val:oben,unten::
+val:*Text::
+stopsetup
+
+startsetup
+com:rechteck:
+typ:vars/:
+ivr:stellerechteckein::
+stopsetup
+
+startsetup
+com:rechtecke:
+typ:vars/:
+ivr:stellerechteckein::
+stopsetup
+
+startsetup
+com:stellerechteckein:
+typ:vars/:
+var:breite:*Dimension,max::
+var:hoehe:*Dimension,max::
+var:tiefe:*Dimension,max::
+var:alternative:a,b::
+var:abstand:*Dimension::
+var:n:*Nummer::
+stopsetup
+
+startsetup
+com:definiereoverlay:
+typ:vals/val/:
+val:*Name::
+val:*Befehl::
+stopsetup
+
+startsetup
+com:verwendemodul:
+typ:vals/:
+val:*Name::
+stopsetup
+
+startsetup
+com:ruecksetzten:
+typ:vals/:
+val:*Name::
+stopsetup
+
+startsetup
+com:keintest:
+typ::
+stopsetup
+
+startsetup
+com:startlokaleumgebung:
+typ:stp/:
+stopsetup
+
+startsetup
+com:stellesystemein:
+typ:vars/:
+var:aufloesung:*Nummer::
+var:datei:*Text::
+var:verzeichnis:*Text::
+var:zufaellig:normal,klein,mittel,gross,*Nummer::
+stopsetup
+
+startsetup
+com:benutzeverzeichnis:
+typ:vals/:
+val:*Name,zuruecksetzten:.:
+stopsetup
+
+startsetup
+com:tief:
+typ:arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:hoch:
+typ:arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:tiho:
+typ:arg/arg/:
+val:*Text::
+val:*Text::
+stopsetup
+
+startsetup
+com:zeigerahmen:
+typ:val/:
+val:text,marginalie,kante::
+stopsetup
+
+startsetup
+com:zeigeaufbau:
+typ::
+stopsetup
+
+startsetup
+com:linksbuendig:
+typ:arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:rechtsbuendig:
+typ:arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:zentriert:
+typ:arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:wortrechts:
+typ:arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:inmarginalie:
+typ:val/ref/arg/:
+val:+,-,tief::
+val:*Text::
+stopsetup
+
+startsetup
+com:inanderermarginale:
+typ:val/ref/arg/:
+val:+,-,tief::
+val:*Text::
+stopsetup
+
+startsetup
+com:imlinken:
+typ:val/ref/arg/:
+val:+,-,tief::
+val:*Text::
+stopsetup
+
+startsetup
+com:imrechten:
+typ:val/ref/arg/:
+val:+,-,tief::
+val:*Text::
+stopsetup
+
+startsetup
+com:spalte:
+typ::
+stopsetup
+
+startsetup
+com:zeigestruts:
+typ::
+stopsetup
+
+startsetup
+com:zeigeeinstellungen:
+typ::
+stopsetup
+
+startsetup
+com:zeigelayout:
+typ::
+stopsetup
+
+startsetup
+com:marginaltext:
+typ:val/ref/arg/:
+val:+,-,tief::
+val:*Text::
+stopsetup
+
+startsetup
+com:stellemarginalblockein:
+typ:vars/:
+var:platz:imrand,links,mittig,rechts::
+var:stil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:breite:*Dimension::
+var:ausrichtung:links,mittig,rechts,nein::
+var:oben:*Befehl::
+var:zwischen:*Befehl::
+var:unten:*Befehl::
+var:links:*Befehl::
+var:rechts:*Befehl::
+var:vor:*Befehl::
+var:nach:*Befehl::
+stopsetup
+
+startsetup
+com:startmarginalblock:
+typ:stp/:
+stopsetup
+
+startsetup
+com:teil:
+typ:refs/arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:titel:
+typ:refs/arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:kapitel:
+typ:refs/arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:absatz:
+typ:refs/arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:unterabsatz:
+typ:refs/arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:unterunterabsatz:
+typ:refs/arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:thema:
+typ:refs/arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:unterthema:
+typ:refs/arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:unterunterthema:
+typ:refs/arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:anhang:
+typ:refs/arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:in:
+typ:arg/arg/ref/:
+val:*Text::
+stopsetup
+
+startsetup
+com:bei:
+typ:arg/arg/ref/:
+val:*Text::
+stopsetup
+
+startsetup
+com:ueber:
+typ:arg/ref/:
+val:*Text::
+stopsetup
+
+startsetup
+com:irgendwo:
+typ:arg/arg/ref/:
+val:*Text::
+stopsetup
+
+startsetup
+com:aufseite:
+typ:ref/:
+stopsetup
+
+startsetup
+com:ref:
+typ:val/ref/:
+val:t,p,r,s,e::
+val:*Text::
+stopsetup
+
+startsetup
+com:textreferenz:
+typ:ref/arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:seitenreferenz:
+typ:ref/:
+stopsetup
+
+startsetup
+com:referenz:
+typ:ref/arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:verwendereferenzen:
+typ:vals/:
+val:*Datei::
+stopsetup
+
+startsetup
+com:definierereferenz:
+typ:val/refs/:
+val:*Name::
+stopsetup
+
+startsetup
+com:definierereferenzformat:
+typ:val/vars/:
+val:*Name::
+var:links:*Text::
+var:rechts:*Text::
+var:text:*Text::
+var:label:*Name::
+stopsetup
+
+startsetup
+com:hl:
+typ:val/:
+val:*Nummer::
+stopsetup
+
+startsetup
+com:vl:
+typ:val/:
+val:*Nummer::
+stopsetup
+
+startsetup
+com:nachunten:
+typ:val/:
+val:*Dimension::
+stopsetup
+
+startsetup
+com:zwischenraum:
+typ::
+stopsetup
+
+startsetup
+com:keinzwischenraum:
+typ::
+stopsetup
+
+startsetup
+com:crlf:
+typ::
+stopsetup
+
+startsetup
+com:spatium:
+typ::
+stopsetup
+
+startsetup
+com:festesspatium:
+typ::
+stopsetup
+
+startsetup
+com:keinspatium:
+typ::
+stopsetup
+
+startsetup
+com:kleinerdurchschuss:
+typ::
+stopsetup
+
+startsetup
+com:wiederholen:
+typ:val/:
+val:repeat/*Text::
+stopsetup
+
+startsetup
+com:definierebeschreibungen:
+typ:vals/vars/:
+val:*Name::
+var:kopfstil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:stil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:farbe:*Name::
+var:breite:passend,breit,*Dimension::
+var:abstand:*Dimension::
+var:muster:*Text::
+var:text:*Text::
+var:ausrichtung:links,mittig,rechts::
+var:marginalie:standard,ja,nein,*Dimension::
+var:platz:links,rechts,oben,kleinerabstand, imrand,imlinken,imrechten,haengend::
+var:haengend:passend,breit,*Nummer::
+var:vor:*Befehl::
+var:zwischen:*Befehl::
+var:nach:*Befehl::
+var:ziehefolgendeein:ja,nein::
+stopsetup
+
+startsetup
+com:stellebeschreibungein:
+typ:vals/vars/:
+val:*Name::
+ivr:definierebeschreibung::
+var:platz:links,rechts,oben,kleinerabstand, imrand,imlinken,imrechten,haengend::
+var:text:*Text::
+var:niveaus:*Nummer::
+var:konversion:ziffern,buchstaben,Buchstaben,roemischezahlen,Roemischezahlen::
+var:art:protext,pro*Abschnitt::
+var:blockauf:ja,nein::
+var:abschnittsnummer:ja,nummer,nein::
+var:seperator:*Text::
+var:abschnitttrenner:*Text::
+var:verknuepfung:*Name::
+var:verkopplungsart:global,lokal::
+var:nummer:nein,*Name::
+var:titelausrichten:nein,ja::
+var:start:*Nummer::
+stopsetup
+
+startsetup
+com:definierenummerierung:
+typ:vals/val/vars/:
+val:*Name::
+val:*Name::
+ivr:stellebeschreibungein::
+stopsetup
+
+startsetup
+com:<<nummerierung>>:
+typ:nop/par/:
+val:*Text::
+stopsetup
+
+startsetup
+com:start<<nummerierung>>:
+typ:stp/:
+stopsetup
+
+startsetup
+com:definierebeschreibung:
+typ:val/vars/:
+val:*Name::
+ivr:definierebeschreibungen::
+stopsetup
+
+startsetup
+com:<<beschreibung>>:
+typ:arg/nop/par/:
+val:*Text::
+val:*Text::
+stopsetup
+
+startsetup
+com:start<<beschreibung>>:
+typ:arg/stp/:
+val:*Text::
+stopsetup
+
+startsetup
+com:stelleeinzuegein:
+typ:vals/vars/:
+val:*Name::
+var:stil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:kopfstil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:breite:passend,*Dimension::
+var:text:*Text::
+var:muster:*Text::
+var:vor:*Befehl::
+var:nach:*Befehl::
+var:abstand:*Dimension::
+var:seperator:*Text::
+stopsetup
+
+startsetup
+com:definiereeinzug:
+typ:val/vars/:
+val:*Name::
+ivr:stelleeinzuegein::
+stopsetup
+
+startsetup
+com:<<einzug>>:
+typ:nop/par/:
+val:*Text::
+stopsetup
+
+startsetup
+com:definierelabel:
+typ:val/vars/:
+val:*Name::
+var:text:*Text::
+var:platz:imrand,imtext::
+var:art:protext,pro*Abschnitt::
+var:blockauf:ja,nein::
+var:kopfstil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:kopffarbe:*Name::
+var:vor:*Befehl::
+var:nach:*Befehl::
+stopsetup
+
+startsetup
+com:<<beschriften>>:
+typ:ref/:
+stopsetup
+
+startsetup
+com:stellespaltenein:
+typ:vars/:
+var:n:*Nummer::
+var:noben:*Nummer::
+var:linie:an,aus::
+var:hoehe:*Dimension::
+var:toleranz:sehrstreng,streng,tolerant,sehrtolerant,strecken::
+var:abstand:*Dimension::
+var:ausgleichen:ja,nein::
+var:ausrichtung:ja,nein,text::
+var:blanko:fest,halbezeile,zeile,flexibel,gross,mittel,klein::
+var:option:hintergrund::
+var:richtung:links,rechts::
+ivr:stelleumrahmtein::
+stopsetup
+
+startsetup
+com:startspalten:
+typ:vars/stp/:
+ivr:stellespaltenein::
+stopsetup
+
+startsetup
+com:definieretext:
+typ:val/val/val/val/val/:
+val:*Name::
+val:kopfzeile,fusszeile::
+val:*Text::
+val:*Text::
+val:*Text::
+stopsetup
+
+startsetup
+com:stellekopfzeileein:
+typ:val/vars/:
+val:text,marginalie,kante:text:
+var:status:normal,stop,start,leer,hoch,kein, keinebeschriftung,*Name::
+var:strut:ja,nein::
+var:stil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:linkerstil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:rechterstil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:linkerbreite:*Dimension::
+var:rechterbreite:*Dimension::
+var:vor:*Befehl::
+var:nach:*Befehl::
+stopsetup
+
+startsetup
+com:stellefusszeileein:
+typ:val/vars/:
+ivl:stellekopfzeileein::
+ivr:stellekopfzeileein::
+stopsetup
+
+startsetup
+com:stelletextein:
+typ:val/vars/:
+ivl:stellekopfzeileein::
+ivr:stellekopfzeileein::
+stopsetup
+
+startsetup
+com:stellenobenein:
+typ:val/vars/:
+ivl:stellekopfzeileein::
+ivr:stellekopfzeileein::
+stopsetup
+
+startsetup
+com:stelleuntenein:
+typ:val/vars/:
+ivl:stellekopfzeileein::
+ivr:stellekopfzeileein::
+stopsetup
+
+startsetup
+com:keinekopfundfusszeilen:
+typ::
+stopsetup
+
+startsetup
+com:keinzeilenobenundunten:
+typ::
+stopsetup
+
+startsetup
+com:stellekopfzeilentextein:
+typ:val/val/val/:
+val:text,marginalie,kante:text:
+val:*Text,*Abschnitt,datum,*Beschriftung,seitennummer::
+val:*Text,*Abschnitt,datum,*Beschriftung,seitennummer::
+stopsetup
+
+startsetup
+com:stellefusszeilentextein:
+typ:val/val/val/:
+val:text,marginalie,kante:text:
+val:*Text,*Abschnitt,datum,*Beschriftung,seitennummer::
+val:*Text,*Abschnitt,datum,*Beschriftung,seitennummer::
+stopsetup
+
+startsetup
+com:stelletexttexteein:
+typ:val/val/val/:
+val:text,marginalie,kante:text:
+val:*Text,*Abschnitt,datum,*Beschriftung,seitennummer::
+val:*Text,*Abschnitt,datum,*Beschriftung,seitennummer::
+stopsetup
+
+startsetup
+com:stelletextobenein:
+typ:val/val/val/:
+val:text,marginalie,kante:text:
+val:*Text,*Abschnitt,datum,*Beschriftung,seitennummer::
+val:*Text,*Abschnitt,datum,*Beschriftung,seitennummer::
+stopsetup
+
+startsetup
+com:stelletextuntenein:
+typ:val/val/val/:
+val:text,marginalie,kante:text:
+val:*Text,*Abschnitt,datum,*Beschriftung,seitennummer::
+val:*Text,*Abschnitt,datum,*Beschriftung,seitennummer::
+stopsetup
+
+startsetup
+com:definierebeschriftung:
+typ:val/val/:
+val:*Name::
+val:*Name::
+stopsetup
+
+startsetup
+com:verknuepfebeschriftung:
+typ:val/val/:
+val:*Name::
+val:*Name::
+stopsetup
+
+startsetup
+com:entknuepfebeschriftung:
+typ:val/:
+val:*Name::
+stopsetup
+
+startsetup
+com:ruecksetztenbeschriftung:
+typ:val/:
+val:*Name::
+stopsetup
+
+startsetup
+com:stellebeschriftungein:
+typ:val/var/:
+val:*Name::
+var:status:start,stop::
+var:seperator:*Befehl::
+var:expansion:ja,nein::
+stopsetup
+
+startsetup
+com:beschriftung:
+typ:val/arg/:
+val:*Name::
+val:*Text::
+stopsetup
+
+startsetup
+com:holebeschriftung:
+typ:val/val/:
+val:*Name::
+val:erste,letzte,vorig,beide,alles::
+stopsetup
+
+startsetup
+com:keinebeschriftung:
+typ:arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:stellelayoutein:
+typ:vars/:
+var:breite:*Dimension,passend,mittig::
+var:hoehe:*Dimension,passend,mittig::
+var:rumpfspatium:*Dimension::
+var:kopfspatium:*Dimension::
+var:marginalie:*Dimension::
+var:linkerrand:*Dimension::
+var:rechterrand:*Dimension::
+var:kopfzeile:*Dimension::
+var:fusszeile:*Dimension::
+var:oben:*Dimension::
+var:unten:*Dimension::
+var:linkekante:*Dimension::
+var:rechtekante:*Dimension::
+var:kopfzeilenabstand:*Dimension::
+var:fusszeilenabstand:*Dimension::
+var:obenabstand:*Dimension::
+var:abstandunten:*Dimension::
+var:linkerrandabstand:*Dimension::
+var:rechterrandabstand:*Dimension::
+var:linkerkantenabstand:*Dimension::
+var:rechterkantenabstand:*Dimension::
+var:rumpfabstand:*Dimension::
+var:kopfoffset:*Dimension::
+var:stil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:beschriftung:an,aus,farbe::
+var:platz:links,mittig,rechts,unten,oben, einzelseitig,doppelseitig::
+var:format:*Dimension::
+var:nx:*Nummer::
+var:ny:*Nummer::
+var:dx:*Dimension::
+var:dy:*Dimension::
+var:zeilen:*Nummer::
+var:gritter:ja,nein::
+var:bottomspace:*Nummer::
+var:cutspace:*Nummer::
+stopsetup
+
+startsetup
+com:passelayoutan:
+typ:vals/vars/:
+val:*Nummer::
+var:hoehe:*Dimension,max::
+var:zeilen:*Nummer::
+stopsetup
+
+startsetup
+com:zeigegitter:
+typ::
+stopsetup
+
+startsetup
+com:amgitterausrichten:
+typ:val/arg/:
+ivl:amgitterneuausrichten::
+stopsetup
+
+startsetup
+com:amgitterneuausrichten:
+typ:val/:
+val:oben,beide,unten:beide:
+stopsetup
+
+startsetup
+com:startprojekt:
+typ:fil/stp/:
+val:*Datei::
+stopsetup
+
+startsetup
+com:startumgebung:
+typ:fil/stp/:
+val:*Datei::
+stopsetup
+
+startsetup
+com:startprodukt:
+typ:fil/stp/:
+val:*Datei::
+stopsetup
+
+startsetup
+com:startkomponente:
+typ:fil/stp/:
+val:*Datei::
+stopsetup
+
+startsetup
+com:keinedateienmehr:
+typ::
+stopsetup
+
+startsetup
+com:stellezeilenabstandein:
+typ:val/vars/:
+val:zuruecksetzten,klein,mittel,gross,an,aus:klein:
+var:hoehe:*Nummer::
+var:tiefe:*Nummer::
+var:zeile:*Dimension::
+var:oben:*Nummer::
+var:unten:*Nummer::
+stopsetup
+
+startsetup
+com:stelleseitennummeriernungein:
+typ:vars/:
+var:alternative:einzelseitig,doppelseitig::
+var:platz:kopfzeile,fusszeile, links,rechts,mittig, marginalie,marginalkante,imlinken,imrechten::
+var:konversion:ziffern,buchstaben,Buchstaben,roemischezahlen,Roemischezahlen::
+var:stil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:links:*Text::
+var:rechts:*Text::
+var:art:protext,pro*Abschnitt::
+var:text:*Text::
+var:nummernseperator:*Text::
+var:textseparator:*Text::
+var:*Abschnitt*Nummer:ja,nein::
+var:seperator:*Text::
+var:status:start,stop::
+var:befehl:*\Befehl#1::
+stopsetup
+
+startsetup
+com:stelleengerein:
+typ:vars/:
+var:links:*Dimension::
+var:rechts:*Dimension::
+var:mittig:*Dimension::
+stopsetup
+
+startsetup
+com:definieren:
+typ:val/cmd/arg/:
+val:*Nummer:0:
+stopsetup
+
+startsetup
+com:verwendebefehl:
+typ:arg/:
+stopsetup
+
+startsetup
+com:definierestartstop:
+typ:val/vars/:
+var:vor:*Befehl::
+var:nach:*Befehl::
+var:stil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:befehle:*Befehl::
+stopsetup
+
+startsetup
+com:stelleueberschriftenein:
+typ:vars/:
+var:abschnittsnummer:ja,nummer,nein::
+var:alternative:normal,marginalie,mittig,text,absatz::
+var:seperator:*Text::
+var:befehl:*\Befehl#1#2::
+stopsetup
+
+startsetup
+com:stellebilderunterschriftein:
+typ:vars/:
+var:platz:oben,unten,kein,hoch,tief,mittig::
+var:breite:passend,max,*Dimension::
+var:kopfstil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:stil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:nummer:ja,nein::
+var:zwischen:*Befehl::
+var:ausrichtung:links,mittig,rechts,nein::
+var:konversion:ziffern,buchstaben,Buchstaben,roemischezahlen,Roemischezahlen::
+var:art:protext,pro*Abschnitt::
+stopsetup
+
+startsetup
+com:stellebildunterschriftein:
+typ:val/vars/:
+val:*Name::
+ivr:stellebilderunterschriftein::
+stopsetup
+
+startsetup
+com:stellegleitobjekteein:
+typ:vars/:
+var:platz:links,rechts,mittig::
+var:breite:passend,*Dimension::
+var:vor:*Befehl::
+var:nach:*Befehl::
+var:marginalie:*Dimension::
+var:vorspatium:repeat/klein,repeat/mittel,repeat/gross,kein::
+var:nachspatium:repeat/klein,repeat/mittel,repeat/gross,kein::
+var:nebenvorspatium:repeat/klein,repeat/mittel,repeat/gross,kein::
+var:nebennachspatium:repeat/klein,repeat/mittel,repeat/gross,kein::
+var:ziehefolgendeein:ja,nein::
+var:noben:*Nummer::
+var:nunten:*Nummer::
+var:zzeile:*Nummer::
+ivr:stelleumrahmtein::
+stopsetup
+
+startsetup
+com:stelleplatziegeteiltegleitobjekt:
+typ:vars/:
+var:konversion:ziffern,buchstaben,Buchstaben,roemischezahlen,Roemischezahlen::
+var:zeilen:*Nummer::
+stopsetup
+
+startsetup
+com:teilegleitobjekt:
+typ:vars/arg/arg/:
+ivr:stelleplatziegeteiltegleitobjekt::
+stopsetup
+
+startsetup
+com:stellegegenueberplatzierenein:
+typ:var/:
+var:status:start,stop::
+stopsetup
+
+startsetup
+com:startgegenueber:
+typ:stp/:
+stopsetup
+
+startsetup
+com:stellebindestrichein:
+typ:var/:
+var:zeichen:--,---,-,\normalpenalty 10000\ ,),(,=,/::
+stopsetup
+
+startsetup
+com:stellepositionierenein:
+typ:vars/:
+var:status:start,overlay::
+var:einheit:cm,pt,em,mm,ex,sp,in::
+var:faktor:*Nummer::
+var:format:*Nummer::
+var:offset:ja,nein::
+var:xschritt:absolut,relativ::
+var:yschritt:absolut,relativ::
+stopsetup
+
+startsetup
+com:startpositionieren:
+typ:stp/:
+stopsetup
+
+startsetup
+com:gitter:
+typ:vars/:
+var:x:*Nummer::
+var:y:*Nummer::
+var:nx:*Nummer::
+var:ny:*Nummer::
+var:dx:*Nummer::
+var:dy:*Nummer::
+var:xschritt:*Nummer::
+var:yschritt:*Nummer::
+var:offset:ja,nein::
+var:faktor:*Nummer::
+var:format:*Nummer::
+var:einheit:cm,pt,em,mm,ex,sp,in::
+var:platz:links,mittig::
+stopsetup
+
+startsetup
+com:seite:
+typ:vals/:
+val:ja,umbruch,nein,einstellung,grosszuegig, links,rechts,sperren,letzte,viertel, gerade,ungerade,blanko,leer,zuruecksetzten:ja:
+stopsetup
+
+startsetup
+com:stellereferenzierenein:
+typ:var/:
+var:status:start,stop::
+var:*Abschnitt*Nummer:ja,nein::
+var:prefix:+,-,*Text::
+var:interaktion:label,text,alles,symbol::
+var:breite:*Dimension::
+var:links:*Befehl::
+var:rechts:*Befehl::
+var:konvertieredatei:ja,nein,klein,gross::
+var:seperator:*Text::
+var:autofile:ja,nein,seite::
+stopsetup
+
+startsetup
+com:stelleurlein:
+typ:vars/:
+var:stil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:urlalternative:kein,beide,vor,nach::
+var:urlspatium:ja,nein::
+stopsetup
+
+startsetup
+com:schreibezurreferenzliste:
+typ:val/arg/arg/:
+val:*Name::
+stopsetup
+
+startsetup
+com:platzierereferenzliste:
+typ:vals/:
+val:*Name::
+stopsetup
+
+startsetup
+com:definierereferenzliste:
+typ:val/vars/:
+val:*Name::
+ivr:stellereferenzlisteein::
+stopsetup
+
+startsetup
+com:stellereferenzlisteein:
+typ:vals/vars/:
+val:*Name::
+var:status:start,stop::
+var:kriterium:*Abschnitt,lokal,vorig,alles::
+var:befehl:*Befehl::
+var:vor:*Befehl::
+var:nach:*Befehl::
+stopsetup
+
+startsetup
+com:schreibezurliste:
+typ:val/arg/arg/:
+val:*Abschnitt,*Name::
+stopsetup
+
+startsetup
+com:schreibezwischenliste:
+typ:val/arg/:
+val:*Abschnitt,*Name::
+stopsetup
+
+startsetup
+com:keineliste:
+typ:arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:platziereliste:
+typ:vals/vars/:
+val:*Name::
+ivr:stellelisteein::
+stopsetup
+
+startsetup
+com:bestimmelistencharakeristika:
+typ:vals/vars/:
+val:*Name::
+ivr:stellelisteein::
+stopsetup
+
+startsetup
+com:definiereliste:
+typ:val/val/vars/:
+val:*Name::
+val:*Name::
+ivr:stellelisteein::
+stopsetup
+
+startsetup
+com:stellelisteein:
+typ:vals/vars/:
+val:*Name::
+var:status:start,stop::
+var:alternative:a,b,c,...,kein,befehl::
+var:verknuepfung:an,aus::
+var:kriterium:*Abschnitt,lokal,vorig,alles::
+var:seitenbegrenzung:*Liste::
+var:stil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:nummernstil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:textstil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:seitenstil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:farbe:*Name::
+var:befehl:*\Befehl#1#2#3::
+var:nummerbefehl:*\Befehl#1::
+var:textbefehl:*\Befehl#1::
+var:seitenbefehl:*\Befehl#1::
+var:interaktion:abschnittsnummer,text,seitennummer,alles::
+var:vor:*Befehl::
+var:nach:*Befehl::
+var:zwischen:*Befehl::
+var:links:*Text::
+var:rechts:*Text::
+var:label:ja,nein::
+var:prefix:ja,nein::
+var:seitennummer:ja,nein::
+var:*Abschnitt*Nummer:ja,nein::
+var:titelausrichten:ja,nein::
+var:marginalie:*Dimension::
+var:breite:*Dimension,passend::
+var:hoehe:*Dimension,passend,breit::
+var:tiefe:*Dimension,passend,breit::
+var:abstand:*Dimension::
+var:seperator:*Text::
+var:symbol:kein,1,2,3,...::
+var:expansion:ja,nein,befehl::
+var:maxbreite:*Dimension::
+ivr:umrahmt::
+stopsetup
+
+startsetup
+com:definierezusammengestellteliste:
+typ:val/vals/vars/:
+val:*Name::
+val:*Liste::
+ivr:stellezusammengestelltelisteein::
+stopsetup
+
+startsetup
+com:stellezusammengestelltelisteein:
+typ:val/vars/:
+val:*Name::
+var:niveau:1,2,3,4,*Abschnitt,aktuell::
+ivr:stellelisteein::
+stopsetup
+
+startsetup
+com:platziere<<kombiniereliste>>:
+typ:val/vars/:
+val:*Name::
+ivr:stellezusammengestelltelisteein::
+stopsetup
+
+startsetup
+com:vollende<<kombiniereliste>>:
+typ:val/vars/:
+val:*Name::
+ivr:stellezusammengestelltelisteein::
+stopsetup
+
+startsetup
+com:stellenummerierungein:
+typ:vars/:
+var:art:protext,pro*Abschnitt::
+var:status:start,stop::
+stopsetup
+
+startsetup
+com:stelleformelnein:
+typ:vars/:
+var:platz:links,rechts::
+var:links:*Text::
+var:rechts:*Text::
+stopsetup
+
+startsetup
+com:publikation:
+typ:ref/:
+stopsetup
+
+startsetup
+com:stellepublikationein:
+typ:vars/:
+var:alternative:apa,normal::
+ivr:stellebeschreibungein::
+stopsetup
+
+startsetup
+com:stellezeilenein:
+typ:vars/:
+var:vor:*Befehl::
+var:nach:*Befehl::
+var:zwischen:*Befehl::
+var:einziehen:ja,nein,gerade,ungerade::
+stopsetup
+
+startsetup
+com:startzeilen:
+typ:stp/:
+stopsetup
+
+startsetup
+com:stelleabsatznummerierungein:
+typ:vars/:
+var:status:start,stop,zuruecksetzten,zeile::
+var:stil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:abstand:*Dimension::
+stopsetup
+
+startsetup
+com:stellezeilennumerierungein:
+typ:vars/:
+var:konversion:ziffern,buchstaben,Buchstaben,roemischezahlen,Roemischezahlen, text::
+var:start:*Nummer::
+var:schritt:*Nummer::
+var:breite:*Dimension::
+var:platz:imtext,imrand::
+var:stil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:prefix:*Text::
+var:referieren:an,aus::
+stopsetup
+
+startsetup
+com:startzeilennumerierung:
+typ:val/stp/:
+val:fortsetzten::
+stopsetup
+
+startsetup
+com:startzeile:
+typ:ref/stp/:
+stopsetup
+
+startsetup
+com:einezeile:
+typ:ref/:
+stopsetup
+
+startsetup
+com:inzeile:
+typ:ref/:
+stopsetup
+
+startsetup
+com:stelleinmarginalieein:
+typ:val/vars/:
+val:links,rechts,*Nummer::
+var:platz:links,rechts,beide::
+var:stil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:vor:*Befehl::
+var:nach:*Befehl::
+var:ausrichtung:innen,aussen,links,rechts,mittig,normal,nein,ja::
+var:zeile:*Nummer::
+var:abstand:*Dimension::
+var:seperator:*Text::
+ivr:stelleumrahmtein::
+stopsetup
+
+startsetup
+com:stelleseitennummerein:
+typ:vars/:
+var:nummer:*Nummer::
+var:status:start,stop,behalte::
+stopsetup
+
+startsetup
+com:stelleunterseitennummerein:
+typ:vars/:
+var:art:protext,pro*Abschnitt::
+var:status:start,stop,kein::
+stopsetup
+
+startsetup
+com:stelleblankoein:
+typ:val/:
+val:normal,standard,zeile,*Dimension, gross,mittel,klein, fest,flexibel:normal:
+stopsetup
+
+startsetup
+com:definiereblanko:
+typ:val/val/:
+val:*Name::
+ivl:stelleblankoein::
+stopsetup
+
+startsetup
+com:definierepapierformat:
+typ:val/vars/:
+val:*Name::
+var:breite:*Dimension::
+var:hoehe:*Dimension::
+var:offset:*Dimension::
+var:format:*Nummer::
+stopsetup
+
+startsetup
+com:stellepapierformatein:
+typ:vals/vals/:
+val:A3,A4,A5,A6,letter,...,CD,*Name, querformat,gespiegelt,gedreht,90,180,270:A4:
+val:A3,A4,A5,A6,letter,...,*Name, querformat,gespiegelt,gedreht,negativ,90,180,270:A4:
+stopsetup
+
+startsetup
+com:stelleanordnenein:
+typ:vals/:
+val:sperren, 2*16,2*8,2*4,2*2,2UP,2DOWN, gespiegelt,gedreht,doppelseitig,negativ,90,180,270::
+stopsetup
+
+startsetup
+com:zeigedruck:
+typ:vals/vals/vars/:
+ivr:stellepapierformatein::
+ivr:stellepapierformatein::
+ivr:stellelayoutein::
+stopsetup
+
+startsetup
+com:definujlogo:
+typ:val/val/val/vars/:
+val:*Name::
+val:oben,kopfzeile,fusszeile,unten::
+val:kein,seite, linkekante,linkerrand, links,mittig,rechts, rechterrand,rechterkante::
+var:befehl:*Befehl,*Text::
+var:status:start,stop::
+stopsetup
+
+startsetup
+com:umistiloga:
+typ:vals/:
+val:*Name::
+stopsetup
+
+startsetup
+com:stellezwischenraumein:
+typ:val/:
+val:kein,klein,mittel,gross,zeile,fest,stellewiederher,*Dimension:kein:
+stopsetup
+
+startsetup
+com:stelleeinziehenein:
+typ:vals/:
+val:kein,klein,mittel,gross,folgende,erste,*Dimension:kein:
+stopsetup
+
+startsetup
+com:definiereabschnittsblock:
+typ:val/vars/:
+val:*Name::
+ivr:stelleabschnittsblockein::
+stopsetup
+
+startsetup
+com:stelleabschnittsblockein:
+typ:val/vars/:
+val:*Name::
+var:nummer:ja,nein::
+var:seite:ja,rechts::
+var:vor:*Befehl::
+var:nach:*Befehl::
+stopsetup
+
+startsetup
+com:definiereabschnitt:
+typ:val/:
+val:*Name::
+stopsetup
+
+startsetup
+com:stelleabschnittein:
+typ:val/val/vars/:
+val:*Name::
+val:*Name:einleitung,haupttext,anhang,epilog:
+var:konversion:ziffern,buchstaben,Buchstaben,roemischezahlen,Roemischezahlen::
+var:vorigenummer:ja,nein::
+stopsetup
+
+startsetup
+com:stelleueberschriftein:
+typ:val/vars/:
+val:*Abschnitt::
+var:stil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:textstil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:nummernstil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:nummer:ja,nein::
+var:eigenenummer:ja,nein::
+var:seite:links,rechts,ja::
+var:fortsetzen:ja,nein::
+var:kopfzeile:kein,leer,hoch,keinebeschriftung::
+var:vor:*Befehl::
+var:zwischen:*Befehl::
+var:nach:*Befehl::
+var:alternative:normal,imrand,mittig,text::
+var:befehl:*\Befehl#1#2::
+var:nummerbefehl:*\Befehl#1::
+var:textbefehl:*\Befehl#1::
+var:prefix:+,-,*Text::
+var:setzekopf:ja,nein::
+var:nummererhoehen:ja,nein,*Datei::
+var:ausrichtung:links,rechts,normal,breit::
+var:toleranz:sehrstreng,streng,tolerant,sehrtolerant,strecken::
+var:ziehefolgendeein:ja,nein::
+var:datei:*Name::
+var:expansion:ja,befehl,nein::
+stopsetup
+
+startsetup
+com:stellekopfzahlein:
+typ:val/val/:
+val:*Abschnitt::
+val:*Nummer,+*Nummer,-*Nummer::
+stopsetup
+
+startsetup
+com:kopfnummer:
+typ:val/:
+val:*Abschnitt::
+stopsetup
+
+startsetup
+com:bestimmekopfnummer:
+typ:val/:
+val:*Abschnitt::
+stopsetup
+
+startsetup
+com:heutigeskopfnummer:
+typ::
+stopsetup
+
+startsetup
+com:folgende<<abschnitt>>:
+typ::
+stopsetup
+
+startsetup
+com:definiereueberschrift:
+typ:val/val/:
+val:*Name::
+val:*Abschnitt::
+stopsetup
+
+startsetup
+com:stelleaufzaehlungein:
+typ:val/vals/vars/:
+val:*Nummer,jede::
+val:standard,repeat/breit,repeat/kleinerabstand,gepackt, ungepackt,trenner,keinabstand,amrand,imrand, autointro,lose,absatz,imtext:standard:
+var:marginalie:nein,standard,*Dimension::
+var:breite:*Dimension::
+var:abstand:*Dimension::
+var:faktor:*Nummer::
+var:posten:*Nummer::
+var:vor:*Befehl::
+var:zwischen:*Befehl::
+var:nach:*Befehl::
+var:links:*Text::
+var:rechts:*Text::
+var:vorkopf:*Befehl::
+var:nachkopf:*Befehl::
+var:kopfstil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:beschrstil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:symstil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:abschnitttrenner:*Text::
+var:n:*Nummer::
+var:symbol:*Nummer::
+var:ausrichtung:links,rechts,normal::
+var:ziehefolgendeein:ja,nein::
+stopsetup
+
+startsetup
+com:startaufzaehlung:
+typ:vals/vars/stp/:
+val:a,A,KA,n,N,m,r,R,KR,*Nummer,fortsetzten, standard,repeat/breit,repeat/kleinerabstand,gepackt, trenner,keinabstand,amrand,imrand,intro,spalten:standard:
+ivr:stelleaufzaehlungein::
+stopsetup
+
+startsetup
+com:pos:
+typ:refs/:
+stopsetup
+
+startsetup
+com:but:
+typ:ref/:
+stopsetup
+
+startsetup
+com:its:
+typ:refs/:
+stopsetup
+
+startsetup
+com:ran:
+typ:arg/:
+stopsetup
+
+startsetup
+com:kopf:
+typ:refs/:
+stopsetup
+
+startsetup
+com:mar:
+typ:refs/arg/:
+stopsetup
+
+startsetup
+com:unter:
+typ:refs/:
+stopsetup
+
+startsetup
+com:sym:
+typ:arg/:
+stopsetup
+
+startsetup
+com:nop:
+typ::
+stopsetup
+
+startsetup
+com:definiereregister:
+typ:val/val/:
+val:*singular::
+val:*plural::
+stopsetup
+
+startsetup
+com:stelleregisterein:
+typ:val/val/vars/:
+val:*singular::
+val:*Name::
+var:n:*Nummer::
+var:ausgleichen:ja,nein::
+var:ausrichtung:ja,nein::
+var:stil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:seitenstil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:textstil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:indikator:ja,nein::
+var:verknuepfung:ja,nein::
+var:*Abschnitt*Nummer:ja,nein::
+var:kriterium:*Abschnitt,lokal,alles::
+var:abstand:*Dimension::
+var:symbol:1,2,...,n,a,...,kein::
+var:interaktion:seitennummer,text::
+var:expansion:ja,befehl,nein::
+var:referieren:an,aus::
+var:befehl:*\Befehl#1::
+var:platz:links,mittig,rechts::
+var:maxbreite:*Dimension::
+var:unbekantereferenz:leer,kein::
+stopsetup
+
+startsetup
+com:<<register>>:
+typ:val/idxs/:
+val:*Text::
+val:*Text::
+stopsetup
+
+startsetup
+com:start<<register>>:
+typ:val/idxs/:
+val:*Text::
+val:*Text::
+stopsetup
+
+startsetup
+com:schreibezumregister:
+typ:val/val/idxs/:
+val:*singular::
+val:*Text::
+val:*Text::
+stopsetup
+
+startsetup
+com:verknuepft<<register>>:
+typ:val/idx/:
+val:*Text::
+val:*Text::
+stopsetup
+
+startsetup
+com:verknuepfregister:
+typ:val/:
+val:*Name::
+stopsetup
+
+startsetup
+com:sieh<<register>>:
+typ:val/arg/idxs/:
+val:*Text::
+val:*Text::
+val:*Text::
+stopsetup
+
+startsetup
+com:vollende<<register>>:
+typ:vars/:
+ivr:stelleregisterein::
+stopsetup
+
+startsetup
+com:platziere<<register>>:
+typ:vars/:
+ivr:stelleregisterein::
+stopsetup
+
+startsetup
+com:definieresynonyme:
+typ:val/val/val/val/:
+val:*singular::
+val:*plural::
+val:*Befehl::
+val:*Befehl::
+stopsetup
+
+startsetup
+com:stellesynonymein:
+typ:val/vars/:
+val:*Name::
+var:textstil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:synonymstil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:platz:links,rechts,oben,kleinerabstand, imrand,imlinken,imrechten::
+var:breite:*Dimension::
+var:status:start,stop::
+var:kriterium:alles,verwende::
+var:konversion:ja,nein::
+var:expansion:ja,befehl,nein::
+var:befehl:*\Befehl#1#2#3::
+stopsetup
+
+startsetup
+com:<<synonym>>:
+typ:val/arg/arg/:
+val:*Text::
+val:*Text::
+val:*Text::
+stopsetup
+
+startsetup
+com:vollendeauflistenvon<<synonyme>>:
+typ::
+stopsetup
+
+startsetup
+com:platziereauflistenvon<<synonyme>>:
+typ::
+stopsetup
+
+startsetup
+com:laden<<synonyme>>:
+typ::
+stopsetup
+
+startsetup
+com:definieresortieren:
+typ:val/val/val/:
+val:*singular::
+val:*plural::
+val:*Befehl::
+stopsetup
+
+startsetup
+com:stellesortierenein:
+typ:val/vars/:
+val:*Name::
+var:vor:*Befehl::
+var:nach:*Befehl::
+var:befehl:*\Befehl#1::
+var:status:start,stop::
+var:kriterium:alles,verwende::
+var:stil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:expansion:ja,befehl,nein::
+stopsetup
+
+startsetup
+com:<<sortiere>>:
+typ:val/arg/:
+val:*Text::
+val:*Text::
+stopsetup
+
+startsetup
+com:vollendeauflistenvon<<sortieren>>:
+typ::
+stopsetup
+
+startsetup
+com:platziereauflistenvon<<sortieren>>:
+typ::
+stopsetup
+
+startsetup
+com:laden<<sortieren>>:
+typ::
+stopsetup
+
+startsetup
+com:definiereumbruch:
+typ:val/vars/:
+val:*Name::
+ivr:stelleumbruchein::
+stopsetup
+
+startsetup
+com:startumbruch:
+typ:val/vars/stp/:
+val:*Name::
+ivr:stelleumbruchein::
+stopsetup
+
+startsetup
+com:stelleumbruchein:
+typ:val/vars/:
+val:*Name::
+var:breite:*Dimension::
+var:hoehe:*Dimension::
+var:voffset:*Dimension::
+var:hoffset:*Dimension::
+var:seite:links,ja,rechts::
+var:befehle:*Befehl::
+var:doppelseitig:ja,nein,leer::
+var:kopfzeilenstatus:normal,stop,start,leer,kein,keinebeschriftung::
+var:fusszeilenstatus:normal,stop,start,leer,kein,keinebeschriftung::
+var:textstatus:normal,stop,start,leer,kein,keinebeschriftung::
+var:statusoben:stop,start::
+var:untenstatus:stop,start::
+stopsetup
+
+startsetup
+com:start<<name>>umbruch:
+typ:stp/:
+stopsetup
+
+startsetup
+com:version:
+typ:val/:
+val:endfassung,konzept,temporaer:endfassung:
+stopsetup
+
+startsetup
+com:heutigesdatum:
+typ:vals/:
+val:tag,monat,MONAT,wochentag,WOCHENTAG,jahr, dd,mm,jj,yy,d,m,j,y,merkmal:tag,monat,jahr:
+stopsetup
+
+startsetup
+com:datum:
+typ:vars/vals/:
+var:d:*Nummer::
+var:m:*Nummer::
+var:y:*Nummer::
+ivl:heutigesdatum::
+stopsetup
+
+startsetup
+com:verweisdatum:
+typ::
+stopsetup
+
+startsetup
+com:einziehen:
+typ:vals/:
+val:nie,nicht,nein,ja,immer,erste,folgende:nie:
+stopsetup
+
+startsetup
+com:nichteinziehen:
+typ::
+stopsetup
+
+startsetup
+com:blanko:
+typ:vals/:
+val:repeat/klein,repeat/mittel,repeat/gross, keinweiss,zurueck,weiss,sperren,zwinge,zuruecksetzten, zeile,halbezeile,formel,fest,flexibel:gross:
+stopsetup
+
+startsetup
+com:startkleinerdurchschuss:
+typ:val/stp/:
+val:blanko::
+stopsetup
+
+startsetup
+com:startgrosserdurchschuss:
+typ:stp/:
+stopsetup
+
+startsetup
+com:startzeilenkorrektur:
+typ:stp/:
+stopsetup
+
+startsetup
+com:korrigierezwischenraum:
+typ:arg/:
+stopsetup
+
+startsetup
+com:startverschieben:
+typ:stp/:
+stopsetup
+
+startsetup
+com:startlokal:
+typ:stp/:
+stopsetup
+
+startsetup
+com:startenger:
+typ:vals/stp/:
+val:repeat/links,repeat/mittig,repeat/rechts:mittig:
+stopsetup
+
+startsetup
+com:startverbergen:
+typ:stp/:
+stopsetup
+
+startsetup
+com:stelleausrichtungein:
+typ:val/:
+val:breite,links,rechts,mittig,innen,aussen, breit,breit,hoehe,unten,zeile,zuruecksetzten::
+stopsetup
+
+startsetup
+com:startausrichtung:
+typ:stp/val/:
+ivr:stelleausrichtungein::
+stopsetup
+
+startsetup
+com:stellespatiumein:
+typ:val/:
+val:breit,gepackt::
+stopsetup
+
+startsetup
+com:stelletoleranzein:
+typ:vals/:
+val:horizontal,vertikal, strecken,sehrstreng,streng,tolerant,sehrtolerant:sehrstreng:
+stopsetup
+
+startsetup
+com:seitentyp:
+typ:val/:
+val:*Name::
+stopsetup
+
+startsetup
+com:bearbeiteseite:
+typ:vals/val/:
+val:*Name::
+val:ja,nein:ja:
+stopsetup
+
+startsetup
+com:doppelseite:
+typ:vals/vars/:
+val:*Name::
+var:option:doppelseitig::
+var:vor:*Befehl::
+var:nach:*Befehl::
+stopsetup
+
+startsetup
+com:position:
+typ:poss/arg/:
+val:*Nummer::
+val:*Nummer::
+val:*Text::
+stopsetup
+
+startsetup
+com:stellerasterein:
+typ:vars/:
+var:methode:punkt,linie,extern::
+var:aufloesung:*Nummer::
+var:faktor:*Nummer::
+var:raster:*Nummer::
+stopsetup
+
+startsetup
+com:stellehintergruendeein:
+typ:val/vals/vars/:
+val:oben,kopfzeile,text,fusszeile,unten, seite,papier,linkerseite,rechterseite::
+val:linkekante,linkerrand,text,rechterrand,rechterkante::
+var:status:start,stop,wiederholen::
+ivr:stelleumrahmtein::
+stopsetup
+
+startsetup
+com:startpuffer:
+typ:val/stp/:
+val:*Name::
+stopsetup
+
+startsetup
+com:holepuffer:
+typ:val/:
+val:*Name::
+stopsetup
+
+startsetup
+com:tippepuffer:
+typ:val/:
+val:*Name::
+stopsetup
+
+startsetup
+com:definierepuffer:
+typ:val/:
+val:*Name::
+stopsetup
+
+startsetup
+com:stellepufferein:
+typ:val/vars/:
+val:*Name::
+var:absatz:*Nummer::
+var:vor:*Befehl::
+var:nach:*Befehl::
+stopsetup
+
+startsetup
+com:definiereblock:
+typ:val/:
+val:*Name::
+stopsetup
+
+startsetup
+com:keinebloeckemehr:
+typ::
+stopsetup
+
+startsetup
+com:verbergebloecke:
+typ:vals/vals/:
+val:*Name::
+val:*Name::
+stopsetup
+
+startsetup
+com:behaltebloecke:
+typ:vals/vals/:
+val:*Name::
+val:alles,*Name::
+stopsetup
+
+startsetup
+com:verwendebloecke:
+typ:vals/vals/:
+val:*Name::
+val:*Name::
+stopsetup
+
+startsetup
+com:bearbeitebloecke:
+typ:vals/vals/:
+val:*Name::
+val:*Name::
+stopsetup
+
+startsetup
+com:waehlebloeckeaus:
+typ:vals/vals/var/:
+val:*Name::
+val:*Name::
+var:kriterium:alles,*Abschnitt::
+stopsetup
+
+startsetup
+com:stelleblockein:
+typ:vals/vars/:
+val:*Name::
+var:vor:*Befehl::
+var:nach:*Befehl::
+var:innen:*Befehl::
+var:stil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:datei:*Datei::
+stopsetup
+
+startsetup
+com:startformel:
+typ:stp/:
+val:*Formel::
+stopsetup
+
+startsetup
+com:mathematik:
+typ:arg/:
+val:*Formel::
+stopsetup
+
+startsetup
+com:platziereformel:
+typ:refs/arg/dis/:
+val:*Text::
+val:*Formel::
+stopsetup
+
+startsetup
+com:platziereunterformel:
+typ:refs/arg/dis/:
+val:*Text::
+val:*Formel::
+stopsetup
+
+startsetup
+com:platziere<<gleitobjekt>>:
+typ:val/refs/arg/arg/:
+val:links,rechts,hier,oben,unten, imlinken,imrechten,imrand,marginalie, seite,gegenueber,immer,zwinge,lang:hier:
+val:*Text::
+val:*Text::
+stopsetup
+
+startsetup
+com:reservieren<<gleitobjekt>>:
+typ:vars/val/refs/arg/:
+var:hoehe:*Dimension::
+var:breite:*Dimension::
+var:rahmen:an,aus::
+val:links,rechts,hier,oben,unten, imlinken,imrechten,imrand,marginalie, seite,gegenueber,immer,zwinge:hier:
+val:*Text::
+stopsetup
+
+startsetup
+com:definieregleitobjekt:
+typ:val/val/:
+val:*singular::
+val:*plural::
+stopsetup
+
+startsetup
+com:stellegleitobjektein:
+typ:val/vars/:
+val:*Name::
+var:hoehe:*Dimension::
+var:breite:*Dimension::
+var:seitenbegrenzung:*Liste::
+ivr:stelleumrahmtein::
+stopsetup
+
+startsetup
+com:start<<gleitobjekt>>text:
+typ:val/ref/arg/arg/stp/:
+val:links,rechts,hoch,mittig,tief,offset,lang::
+val:*Text::
+val:*Text::
+val:*Text::
+stopsetup
+
+startsetup
+com:platziereauflistenvon<<gleitobjekte>>:
+typ::
+stopsetup
+
+startsetup
+com:vollendeauflistenvon<<gleitobjekte>>:
+typ::
+stopsetup
+
+startsetup
+com:verweis:
+typ:vars/:
+var:bet:*Text::
+var:ken:*Text::
+var:dat:*Text::
+var:von:*Text::
+var:zu:*Text::
+var:ref:*Text::
+stopsetup
+
+startsetup
+com:waehlepapieraus:
+typ:vars/:
+var:familie:1,2::
+stopsetup
+
+startsetup
+com:doppelseitigespapier:
+typ:val/:
+val:*Name::
+stopsetup
+
+startsetup
+com:chem:
+typ:arg/arg/arg/:
+val:*Text::
+val:*Text::
+val:*Text::
+stopsetup
+
+startsetup
+com:bruch:
+typ:arg/arg/:
+val:*Text::
+val:*Text::
+stopsetup
+
+startsetup
+com:punkt:
+typ:val/:
+val:*Nummer::
+stopsetup
+
+startsetup
+com:wohnort:
+typ:arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:posten:
+typ:vars/args/:
+ivr:stellepostenein::
+stopsetup
+
+startsetup
+com:stellepostenein:
+typ:vars/:
+var:platz:links,rechts,imrand,oben,unten::
+var:symbol:1,2,...,n,a,...,*Text,kein::
+var:breite:*Dimension::
+var:n:*Nummer,unbekannt::
+var:vor:*Befehl::
+var:zwischen:*Befehl::
+var:ausrichtung:links,rechts,mittig,marginalie::
+var:nach:*Befehl::
+stopsetup
+
+startsetup
+com:startzitat:
+typ:vals/stp/:
+val:repeat/links,repeat/mittig,repeat/rechts:mittig:
+stopsetup
+
+startsetup
+com:zitat:
+typ:arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:zitieren:
+typ:arg/:
+val:*Text::
+stopsetup
+
+startsetup
+com:stellezitierenein:
+typ:vars/:
+var:vor:*Befehl::
+var:nach:*Befehl::
+var:stil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+stopsetup
+
+startsetup
+com:zusatz:
+typ:val/:
+val:klein,mittel,gross:mittel:
+stopsetup
+
+startsetup
+com:definiereabsaetze:
+typ:val/vars/:
+val:*Name::
+var:n:*Nummer::
+var:linie:an,aus::
+var:hoehe:passend,*Dimension::
+var:vor:*Befehl::
+var:nach:*Befehl::
+var:innen:*Befehl::
+var:abstand:*Dimension::
+var:toleranz:sehrstreng,streng,tolerant,sehrtolerant,strecken::
+var:ausrichtung:links,rechts,mittig::
+stopsetup
+
+startsetup
+com:<<absatz>>:
+typ::
+stopsetup
+
+startsetup
+com:start<<absatz>>:
+typ:stp/:
+stopsetup
+
+startsetup
+com:stelleabsaetzeein:
+typ:val/val/vars/:
+val:*Name::
+val:*Nummer,jede::
+var:stil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:breite:*Dimension::
+var:hoehe:*Dimension::
+var:ausrichtung:links,rechts,mittig,breite::
+var:toleranz:sehrstreng,streng,tolerant,sehrtolerant,strecken::
+var:abstand:*Dimension::
+var:vor:*Befehl::
+var:nach:*Befehl::
+var:innen:*Befehl::
+var:befehl:*Befehl::
+var:linie:an,aus::
+stopsetup
+
+startsetup
+com:stelletabein:
+typ:vars/:
+var:muster:*Text::
+var:breite:*Dimension::
+var:kopfstil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:platz:links,rechts::
+stopsetup
+
+startsetup
+com:tab:
+typ:arg/nop/par/:
+val:*Text::
+val:*Text::
+stopsetup
+
+startsetup
+com:startdokument:
+typ:val/stp/:
+val:*Name::
+stopsetup
+
+startsetup
+com:briefe:
+typ:val/:
+val:*Name::
+stopsetup
+
+startsetup
+com:labels:
+typ:val/:
+val:*Name::
+stopsetup
+
+startsetup
+com:stellekorrespondenzein:
+typ:vals/:
+val:formeel,informeel,rekening,ls, hoch,mittig,tief:formeel,tief:
+stopsetup
+
+startsetup
+com:stelleblattein:
+typ:vars/:
+var:alternative:*Nummer::
+var:text:*Text::
+var:groesse:klein,mittel,gross::
+var:stil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:nummer:*Nummer,keinabstand::
+stopsetup
+
+startsetup
+com:blatt:
+typ:val/:
+val:*Text::
+stopsetup
+
+startsetup
+com:stellestickerein:
+typ:vars/:
+var:alternative:a::
+var:n:*Nummer,alles::
+var:platz:marginalie,links,rechts,mittig::
+stopsetup
+
+startsetup
+com:definieretabulator:
+typ:val/val/val/:
+val:*Name::
+val:*Name::
+val:*Text::
+stopsetup
+
+startsetup
+com:starttabulator:
+typ:val/vars/stp/:
+val:*Text::
+ivr:verwendeexterneabbildung::
+stopsetup
+
+startsetup
+com:stelletabulatorein:
+typ:val/vars/:
+val:*Name::
+var:einheit:*Dimension::
+var:einziehen:ja,nein::
+var:vor:*Befehl::
+var:nach:*Befehl::
+var:innen:*Befehl::
+var:EQ:*Text::
+var:linienfarbe:*Name::
+var:ausrichtung:links,mittig,rechts,normal::
+var:liniendicke:*Dimension::
+var:abstand:blanko,tiefe,*Dimension,klein,mittel,gross,kein::
+stopsetup
+
+startsetup
+com:stelletabellenein:
+typ:vars/:
+var:abstand:klein,mittel,gross::
+var:fliesstext:5pt,...,12pt,klein,gross::
+var:HL:*Nummer,klein,mittel,gross,kein::
+var:VL:*Nummer,klein,mittel,gross,kein::
+var:tiefe:*Nummer,strut::
+var:hoehe:*Nummer,strut::
+var:liniendicke:*Dimension::
+var:linienfarbe:*Name::
+var:ausrichtung:rechts,mittig,links,normal::
+var:befehle:*Befehl::
+var:ausrichtung:links,mittig,rechts,normal::
+var:hintergrund:raster,farbe,kein::
+var:hintergrundraster:*Nummer::
+var:hintergrundfarbe:*Name::
+stopsetup
+
+startsetup
+com:starttabelle:
+typ:val/stp/:
+val:*Text,*Name::
+stopsetup
+
+startsetup
+com:starttabellen:
+typ:val/stp/:
+val:*Text,*Name::
+stopsetup
+
+startsetup
+com:definieretabellenvorlage:
+typ:val/val/val/val/:
+val:*Name::
+val:*Text::
+val:*Text::
+val:*Text::
+stopsetup
+
+startsetup
+com:verwendeexternedateien:
+typ:val/vars/:
+val:*Name::
+var:fliesstext:5pt,...,12pt,klein,gross::
+var:datei:*Datei::
+stopsetup
+
+startsetup
+com:verwendeexternedatei:
+typ:val/val/val/vars/:
+val:*Name::
+val:*Name::
+val:*Datei::
+var:fliesstext:5pt,...,12pt,klein,gross::
+stopsetup
+
+startsetup
+com:verwendeexterneabbildung:
+typ:val/val/vars/:
+val:*Name::
+val:*Datei::
+var:format:*Nummer::
+var:faktor:max,passend,breit::
+var:bfaktor:*Nummer,max,breit,passend::
+var:hfaktor:*Nummer,max,breit,passend::
+var:breite:*Dimension::
+var:hoehe:*Dimension::
+var:rahmen:an,aus::
+var:voreinstellung:ja,nein::
+var:bildschirm:*Datei::
+var:vorschau:ja,nein::
+var:wiederholen:ja,nein::
+var:objekt:ja,nein::
+var:typ:eps,mps,pdf,tif,png,jpg,mov,tex::
+var:methode:eps,mps,pdf,tif,png,jpg,mov,tex::
+stopsetup
+
+startsetup
+com:externeabbildung:
+typ:val/vars/:
+val:*Datei::
+ivr:verwendeexterneabbildung::
+stopsetup
+
+startsetup
+com:stelleexterneabbildungenein:
+typ:var/:
+var:option:rahmen,leer,test::
+var:objekt:ja,nein::
+var:umrahmen:an,aus::
+var:ymax:*Nummer::
+var:xmax:*Nummer::
+var:verzeichnis:*Text::
+var:platz:lokal,global::
+stopsetup
+
+startsetup
+com:zeigeexterneabbildungen:
+typ:vars/:
+var:alternative:a,b,c::
+stopsetup
+
+startsetup
+com:verwendeexternestonstueck:
+typ:val/val/:
+val:*Name::
+val:*Datei::
+stopsetup
+
+startsetup
+com:name:
+typ:arg/:
+val:*Name::
+stopsetup
+
+startsetup
+com:startlegende:
+typ:val/tex/{leg}nop/sep/nop/sep/nop/sep/tex/{leg}stp/:
+val:zwei::
+val:*Text::
+val:*Text::
+val:*Text::
+stopsetup
+
+startsetup
+com:startgegeben:
+typ:tex/{geg}nop/sep/nop/sep/nop/sep/tex/{geg}stp/:
+val:*Text::
+val:*Text::
+val:*Text::
+stopsetup
+
+startsetup
+com:drehen:
+typ:vars/arg/:
+ivr:stelledrehenein::
+stopsetup
+
+startsetup
+com:stelledrehenein:
+typ:vars/:
+var:rotation:*Nummer::
+ivr:stelleumrahmtein::
+stopsetup
+
+startsetup
+com:spiegeln:
+typ:arg/:
+stopsetup
+
+startsetup
+com:format:
+typ:vars/arg/:
+var:sx:*Nummer::
+var:sy:*Nummer::
+stopsetup
+
+startsetup
+com:stellekombinationein:
+typ:vars/:
+var:vor:commando::
+var:zwischen:commando::
+var:nach:commando::
+var:abstand:*Dimension::
+var:hoehe:*Dimension,passend::
+var:breite:*Dimension,passend::
+var:ausrichtung:nein,links,rechts,mittig,normal::
+stopsetup
+
+startsetup
+com:startkombination:
+typ:val/stp/:
+val:*n*m::
+stopsetup
+
+startsetup
+com:platzierenebeneinander:
+typ:arg/arg/:
+val:*Text::
+val:*Text::
+stopsetup
+
+startsetup
+com:platziereuntereinander:
+typ:arg/arg/:
+val:*Text::
+val:*Text::
+stopsetup
+
+startsetup
+com:startoverlay:
+typ:arg/arg/stp/:
+val:*Text::
+val:*Text::
+stopsetup
+
+startsetup
+com:startueberblick:
+typ:vals/stp/:
+val:*Name::
+stopsetup
+
+startsetup
+com:stelleinteraktionsbildschirmein:
+typ:vars/:
+var:breite:*Dimension,passend,max::
+var:hoehe:*Dimension,passend,max::
+var:rumpfspatium:*Dimension::
+var:kopfspatium:*Dimension::
+var:rumpfabstand:*Dimension::
+var:kopfoffset:*Dimension::
+var:option:max,bookmark::
+var:wartezeit:*Nummer,kein::
+stopsetup
+
+startsetup
+com:bildschirm:
+typ::
+stopsetup
+
+startsetup
+com:stelleseitenuebergangein:
+typ:vals/:
+val:zuruecksetzten, *Nummer::
+stopsetup
+
+startsetup
+com:stelleinteraktionein:
+typ:vars/:
+var:status:start,stop::
+var:menue:an,aus::
+var:seite:ja,nein::
+var:klick:ja,nein::
+var:split:ja,nein::
+var:bildschirm:neu::
+var:oeffenaktion:*Referenz::
+var:schliessenaktion:*Referenz::
+var:openpageaction:*Referenz::
+var:closepageaction:*Referenz::
+var:berechnen:*Name::
+var:strut:ja,nein::
+var:breite:*Dimension::
+var:hoehe:*Dimension::
+var:tiefe:*Dimension::
+var:stil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...*Befehl::
+var:farbe:*Name::
+var:kontrastfarbe:*Name::
+var:symbolset:*Name::
+var:titel:*Text::
+var:untertitel:*Text::
+var:autor:*Text::
+var:datum:*Text::
+stopsetup
+
+startsetup
+com:stelleinteraktionsmenueein:
+typ:vals/vars/dests/:
+val:links,rechts,oben,unten,*Name::
+var:vor:*Befehl::
+var:nach:*Befehl::
+var:zwischen:*Befehl::
+var:links:*Befehl::
+var:rechts:*Befehl::
+var:mittig:*Befehl::
+var:status:start,stop,kein::
+var:stil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...*Befehl::
+var:farbe:*Name::
+var:abstand:overlay,*Dimension::
+var:selbeseite:ja,leer,nein,kein::
+var:unbekantereferenz:ja,leer,nein,kein::
+var:linkeroffset:*Dimension::
+var:rechterabstand:*Dimension::
+var:obenoffset:*Dimension::
+var:untenoffset:*Dimension::
+var:position:ja,nein::
+ivr:stelleumrahmtein::
+stopsetup
+
+startsetup
+com:definiereinteraktionsmenue:
+typ:val/val/vars/:
+val:links,rechts,oben,unten,*Name::
+val:links,rechts,oben,unten,*Name::
+ivr:stelleinteraktionsmenueein::
+stopsetup
+
+startsetup
+com:startinteraktionsmenue:
+typ:val/stp/:
+val:*Name::
+stopsetup
+
+startsetup
+com:inaktiviereinteraktionsmenue:
+typ:val/refs/:
+val:links,rechts,oben,unten,*Name::
+stopsetup
+
+startsetup
+com:verwendeexteresdokument:
+typ:val/val/val/:
+val:*Name::
+val:file::
+val:*Text::
+stopsetup
+
+startsetup
+com:verwendeURL:
+typ:val/val/val/val/:
+val:*Name::
+val:*Text::
+val:file::
+val:*Text::
+stopsetup
+
+startsetup
+com:verknuepfedokument:
+typ:val/val/val/:
+val:*Name::
+val:file::
+val:*Name::
+val:*Text::
+stopsetup
+
+startsetup
+com:von:
+typ:ref/:
+val:*Text::
+stopsetup
+
+startsetup
+com:interaktionsbalken:
+typ:vars/:
+ivr:stelleinteraktionsbalkenein::
+stopsetup
+
+startsetup
+com:interaktionsknopfe:
+typ:vars/vals/:
+ivr:stelleinteraktionsbalkenein::
+val:*Name::
+stopsetup
+
+startsetup
+com:stelleinteraktionsbalkenein:
+typ:vars/:
+var:status:start,stop::
+var:alternative:a,b,c,d,e,f,g::
+var:symbol:ja,nein::
+var:breite:*Dimension,hoogte,passend::
+var:hoehe:*Dimension,hoogte,passend::
+var:tiefe:*Dimension::
+var:farbe:*Name::
+var:schritt:*Nummer,klein,mittel,gross::
+ivr:stelleumrahmtein::
+stopsetup
+
+startsetup
+com:synchronisieren:
+typ::
+stopsetup
+
+startsetup
+com:startsynchronisation:
+typ:stp/:
+stopsetup
+
+startsetup
+com:stellesynchronisationsbalkenein:
+typ:vars/:
+var:alternative:seite,lokal::
+var:breite:*Dimension,hoogte,passend::
+var:hoehe:*Dimension::
+var:stil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+var:farbe:*Name::
+ivr:stelleumrahmtein::
+stopsetup
+
+startsetup
+com:synchronisationsbalken:
+typ:val/vars/:
+val:*Name::
+var:alternative:seite,lokal::
+ivr:stellesynchronisationsbalkenein::
+stopsetup
+
+startsetup
+com:stellesynchronisationein:
+typ:vars/:
+var:status:start,stop::
+stopsetup
+
+startsetup
+com:definiereprofil:
+typ:vals/vals/:
+val:*Name::
+val:*Name::
+stopsetup
+
+startsetup
+com:stelleprofilein:
+typ:vars/:
+var:option:test::
+stopsetup
+
+startsetup
+com:startprofil:
+typ:vals/stp/:
+val:*Name::
+stopsetup
+
+startsetup
+com:folgeprofil:
+typ:arg/val/:
+val:*Text::
+val:*Name::
+stopsetup
+
+startsetup
+com:umistizalozky:
+typ:vals/vals/:
+val:*Name::
+stopsetup
+
+startsetup
+com:zalozka:
+typ:val/arg/:
+val:*Name::
+stopsetup
+
+startsetup
+com:startversion:
+typ:vals/stp/:
+val:*Nummer::
+stopsetup
+
+startsetup
+com:stelleversionein:
+typ:vars/:
+var:nummer:*Nummer::
+var:stil:normal,fett,geneigt,fettgeneigt,tippen,kap,klein...,*Befehl::
+stopsetup
+
+startsetup
+com:beschrifteversion:
+typ::
+stopsetup
+
+startsetup
+com:waehleversionaus:
+typ::
+stopsetup
+
+startsetup
+com:definiereversion:
+typ:val/vals/:
+val:*Name::
+val:*Nummer::
+stopsetup
+
+startsetup
+com:folgeversion:
+typ:arg/val/:
+val:*Text::
+val:*Name::
+stopsetup
+
+startsetup
+com:folgeprofilversion:
+typ:arg/val/val/:
+val:*Text::
+val:*Name::
+val:*Name::
+stopsetup
+
+startsetup
+com:definiereprogramme:
+typ:val/val/val/:
+val:*Name::
+val:*Text::
+val:*Text::
+stopsetup
+
+startsetup
+com:stelleprogrammein:
+typ:vars/:
+var:verzeichnis:*Text::
+stopsetup
+
+startsetup
+com:programm:
+typ:val/:
+val:*Name::
+stopsetup
+
+startsetup
+com:startabbildung:
+typ:val/val/vars/stp/:
+val:*Name::
+val:*Datei::
+var:faktor:*Nummer::
+var:rahmen:an,aus::
+stopsetup
+
+startsetup
+com:referieren/abbildung:
+typ:poss/poss/val/:
+val:*Nummer::
+val:*Nummer::
+val:*Nummer::
+val:*Nummer::
+val:*Text::
+stopsetup
+
+startsetup
+com:beschriftung/abbildung:
+typ:poss/poss/val/:
+val:*Nummer::
+val:*Nummer::
+val:*Nummer::
+val:*Nummer::
+val:*Text::
+stopsetup
+
+startsetup
+com:bemerkung:
+typ:poss/poss/vars/arg/:
+val:*Nummer::
+val:*Nummer::
+val:*Nummer::
+val:*Nummer::
+ivr:stelleumrahmtein::
+val:*Text::
+stopsetup
+
+startsetup
+com:zu:
+typ:arg/arg/refs/:
+val:*Text::
+stopsetup
+
+startsetup
+com:zurbox:
+typ:arg/refs/:
+val:*Text::
+stopsetup
+
+startsetup
+com:knopf:
+typ:vars/arg/refs/:
+ivr:stelleknopfein::
+val:*Text::
+stopsetup
+
+startsetup
+com:stelleknopfein:
+typ:vars/:
+var:status:start,stop::
+ivr:stelleumrahmtein::
+stopsetup
+
+startsetup
+com:menueknopf:
+typ:val/vars/arg/refs/:
+ivr:stelleumrahmtein::
+val:*Text::
+stopsetup
+
+startsetup
+com:stellekommentarein:
+typ:vars/:
+var:breite:*Dimension::
+var:hoehe:*Dimension::
+var:farbe:*Name::
+var:titel:*Text::
+var:spatium:ja,nein::
+var:symbol:normal,Neu,Ballon,Zusatz,Hilfe,Absatz,Schluessel::
+stopsetup
+
+startsetup
+com:startkommentar:
+typ:val/vars/stp/:
+val:*Name::
+ivr:stellekommentarein::
+stopsetup
+
+startsetup
+com:kommentar:
+typ:val/vars/arg/:
+val:*Name::
+ivr:stellekommentarein::
+stopsetup
+
+startsetup
+com:definierefeld:
+typ:val/val/val/vals/val/:
+val:*Name::
+val:*Name:radio,check,push,line,text,popup,choice,combo:
+val:*Name::
+val:*Name::
+val:*Name::
+stopsetup
+
+startsetup
+com:definieresubfeld:
+typ:val/val/vals/:
+val:*Name::
+val:*Name::
+val:*Name::
+stopsetup
+
+startsetup
+com:kopierefeld:
+typ:val/vals/:
+val:*Name::
+val:*Name::
+stopsetup
+
+startsetup
+com:klonierefeld:
+typ:val/vals/val/vals/:
+val:*Name::
+val:*Name::
+val:*Name::
+val:*Name::
+stopsetup
+
+startsetup
+com:feld:
+typ:val/:
+val:*Name::
+stopsetup
+
+startsetup
+com:passendfeld:
+typ:val/:
+val:*Name::
+stopsetup
+
+startsetup
+com:ausfuellfeld:
+typ:val/arg/:
+val:*Text::
+val:*Text::
+stopsetup
+
+startsetup
+com:tooltip:
+typ:val/arg/arg/:
+val:links,rechts,mittig::
+val:*Text::
+stopsetup
+
+startsetup
+com:zeigefelder:
+typ:vals/:
+val:*Name::
+stopsetup
+
+startsetup
+com:registrierefelder:
+typ::
+stopsetup
+
+startsetup
+com:stellefeldein:
+typ:val/vals/vars/vars/vars/:
+val:*Name::
+val:label,horizontal,vertikal,rahmen::
+ivr:umrahmt::
+ivr:stellefelderin::
+stopsetup
+
+startsetup
+com:stellefelderin:
+typ:vals/val/vars/vars/vars/:
+val:*Name::
+val:zuruecksetzten,label,horizontal,vertikal,rahmen::
+ivr:umrahmt::
+var:n:*Nummer::
+var:abstand:*Dimension::
+var:vor:*Befehl::
+var:nach:*Befehl::
+var:zwischen:*Befehl::
+var:farbe:*Name::
+var:stil:normal,fett,geneigt,fettgeneigt,tippen::
+var:ausrichtung:links,mittig,rechts::
+var:option:nurlesbar,obligatorisch,geschuetzt,sortiert, nichtverfuegbar, versteckt,druckbar::
+var:klickin:*Referenz::
+var:klickaus:*Referenz::
+var:regionin:*Referenz::
+var:regionaus:*Referenz::
+var:nachtaste:*Referenz::
+var:formatieren:*Referenz::
+var:validieren:*Referenz::
+var:berechnen:*Referenz::
+var:feldoffset:*Dimension::
+var:feldrahmenfarbe:*Name::
+var:feldhintergrundfarbe:*Name::
+stopsetup
+
+startsetup
+com:setupforms:
+typ:vars/:
+var:methode:HTML,FDF::
+stopsetup
+
+startsetup
+com:definierefeldstapel:
+typ:val/vals/vars/:
+val:*Name::
+val:*Name::
+ivr:stellefelderin::
+stopsetup
+
+startsetup
+com:feldstapel:
+typ:val/vals/vars/:
+val:*Name::
+val:*Name::
+ivr:stellefelderin::
+stopsetup
+
+startsetup
+com:ausschnitt:
+typ:vars/arg/:
+ivr:stelleausschnittein::
+stopsetup
+
+startsetup
+com:stelleausschnittein:
+typ:vars/:
+var:nx:*Nummer::
+var:ny:*Nummer::
+var:x:*Nummer::
+var:y:*Nummer::
+var:breite:*Dimension::
+var:hoehe:*Dimension::
+var:hoffset:*Dimension::
+var:voffset:*Dimension::
+var:mp:*Name::
+stopsetup
+
+startsetup
+com:platzierelegende:
+typ:arg/arg/:
+val:*Text::
+val:*Text::
+stopsetup
+
+startsetup
+com:stellelegendeein:
+typ:vars/:
+var:n:*Nummer::
+var:abstand:*Dimension::
+var:zwischen:*Befehl::
+var:breite:*Dimension::
+var:hoehe:*Dimension::
+var:platz:rechts,unten::
+var:fliesstext:5pt,...,12pt,klein,gross::
+stopsetup
+
+startsetup
+com:definerule:
+typ:val/vars/:
+val:*Name::
+ivr:setuprule::
+stopsetup
+
+startsetup
+com:placerule:
+typ:val/:
+val:*Name::
+stopsetup
+
+startsetup
+com:setuprule:
+typ:val/vars/:
+val:*Name::
+var:tiefe:*Dimension::
+var:hoehe:*Dimension::
+var:breite:*Dimension::
+var:vorspatium:*Dimension::
+var:nachspatium:*Dimension::
+var:farbe:*Name::
+stopsetup
+
+startsetup
+com:definetextvariable:
+typ:val/val/vars/:
+ivr:setuptextvariable::
+stopsetup
+
+startsetup
+com:setuptextvariable:
+typ:val/vars/:
+val:*Name::
+var:links:*Text::
+var:rechts:*Text::
+var:abstand:*Dimension::
+var:befehl:*\Befehl#1::
+var:strut:ja,nein,kap,*Text::
+stopsetup
+
+startsetup
+com:settextvariable:
+typ:val/val/:
+val:*Name::
+val:*Text::
+stopsetup
+
+startsetup
+com:placetextvariable:
+typ:val/:
+val:*Name::
+stopsetup
+
+startsetup
+com:textvariable:
+typ:val/:
+val:*Name::
+stopsetup
+
+startsetup
+com:definerawfont:
+typ:val/val/vars/:
+val:*Name::
+val:*Datei::
+ivr:stellezeilenabstandein::
+stopsetup
+
+startsetup
+com:switchtorawfont:
+typ:val/:
+val:*Name::
+stopsetup
+
+startsetup
+com:definetextposition:
+typ:val/vars/:
+val:*Name::
+ivr:stellepositionierenein::
+stopsetup
+
+startsetup
+com:setuptextposition:
+typ:val/vars/:
+val:*Name::
+ivr:stellepositionierenein::
+stopsetup
+
+startsetup
+com:positiontext:
+typ:val/arg/:
+val:*Name::
+val:*Text::
+stopsetup
+
+startsetup
+com:setupstrut:
+typ:val/:
+val:ja,nein,kap,*Text:ja:
+stopsetup
+
diff --git a/context/data/cont-en.tws b/context/data/cont-en.tws
new file mode 100644
index 000000000..910d9c6a2
--- /dev/null
+++ b/context/data/cont-en.tws
@@ -0,0 +1,4029 @@
+startsetup
+com:installlanguage:
+typ:val/vars/:
+val:*name::
+var:spacing:packed,broad::
+var:lefthyphenmin:*dimension::
+var:righthyphenmin:*dimension::
+var:state:start,stop::
+var:leftsentence:*command::
+var:rightsentence:*command::
+var:leftsubsentence:*command::
+var:rightsubsentence:*command::
+var:leftquote:*command::
+var:rightquote:*command::
+var:leftquotation:*command::
+var:rightquotation:*command::
+var:default:*name::
+stopsetup
+
+startsetup
+com:setuplanguage:
+typ:val/vars/:
+ivr:installlanguage::
+stopsetup
+
+startsetup
+com:language:
+typ:val/:
+val:nl,fr,en,uk,de,sp,cz,..:nl:
+stopsetup
+
+startsetup
+com:mainlanguage:
+typ:val/:
+val:nl,fr,en,uk,de,sp,cz,..:nl:
+stopsetup
+
+startsetup
+com:translate:
+typ:vars/:
+var:*name:*text::
+stopsetup
+
+startsetup
+com:useencoding:
+typ:vals/:
+val:*name::
+stopsetup
+
+startsetup
+com:usespecials:
+typ:vals/:
+val:reset,*name::
+stopsetup
+
+startsetup
+com:defineoutput:
+typ:val/vals/:
+val:*name::
+val:*name::
+stopsetup
+
+startsetup
+com:setupoutput:
+typ:vals/:
+val:*name::
+stopsetup
+
+startsetup
+com:definebodyfontenvironment:
+typ:val/vars/:
+val:5pt,...,12pt,default::
+var:text:*dimension::
+var:script:*dimension::
+var:scriptscript:*dimension::
+var:x:*dimension::
+var:xx:*dimension::
+var:small:*dimension::
+var:big:*dimension::
+stopsetup
+
+startsetup
+com:setupbodyfontenvironment:
+typ:val/vars/:
+ivl:setupbodyfont::
+ivr:setupbodyfont::
+stopsetup
+
+startsetup
+com:showbodyfontenvironment:
+typ:vals/:
+ivl:setupbodyfont::
+stopsetup
+
+startsetup
+com:definebodyfont:
+typ:vals/val/vars/:
+val:5pt,...,12pt,default::
+val:rm,ss,tt,mm,hw,cg::
+var:tf:*file::
+var:bf:*file::
+var:sl:*file::
+var:it:*file::
+var:bs:*file::
+var:bi:*file::
+var:sc:*file::
+var:ex:*file::
+var:mi:*file::
+var:sy:*file::
+var:ma:*file::
+var:mb:*file::
+var:mc:*file::
+stopsetup
+
+startsetup
+com:showbodyfont:
+typ:vals/:
+ivl:setupbodyfont::
+stopsetup
+
+startsetup
+com:setupbodyfont:
+typ:vals/:
+val:*name, serif,regular,roman, sans,support,sansserif, mono,type,teletype, handwritten,calligraphic, 5pt,...,12pt:sau,ibm,12pt,serif:
+stopsetup
+
+startsetup
+com:switchtobodyfont:
+typ:vals/:
+val:5pt,...,12pt,small,big,global::
+stopsetup
+
+startsetup
+com:definefont:
+typ:val/val/:
+val:*name::
+val:*file::
+stopsetup
+
+startsetup
+com:setupstrut:
+typ:vals/:
+val:yes,no,cap,*text:yes:
+stopsetup
+
+startsetup
+com:setupcolor:
+typ:val/:
+val:*name:rgb:
+stopsetup
+
+startsetup
+com:setupcolors:
+typ:vars/:
+var:state:start,stop,global,local::
+var:conversion:yes,no,always::
+var:reduction:yes,no::
+var:rgb:yes,no::
+var:cmyk:yes,no::
+stopsetup
+
+startsetup
+com:definecolor:
+typ:val/vars/:
+val:*name::
+var:r:*text::
+var:g:*text::
+var:b:*text::
+var:c:*text::
+var:m:*text::
+var:y:*text::
+var:k:*text::
+var:s:*text::
+stopsetup
+
+startsetup
+com:startcolor:
+typ:val/stp/:
+val:*name::
+val:*text::
+stopsetup
+
+startsetup
+com:color:
+typ:val/arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:graycolor:
+typ:val/:
+val:*text::
+stopsetup
+
+startsetup
+com:showcolor:
+typ:val/:
+val:*name::
+stopsetup
+
+startsetup
+com:definepalet:
+typ:val/vars/:
+val:*name::
+var:*name:*name::
+stopsetup
+
+startsetup
+com:setuppalet:
+typ:val/:
+val:*name::
+stopsetup
+
+startsetup
+com:definecolorgroup:
+typ:val/val/vals/:
+val:*name::
+val:rgb,cmyk,gray,s:rgb:
+val:trips/::
+stopsetup
+
+startsetup
+com:showpalet:
+typ:val/vals/:
+val:*name::
+val:horizontal,vertical,name,value::
+stopsetup
+
+startsetup
+com:showcolorgroup:
+typ:val/vals/:
+val:*name::
+val:horizontal,vertical,name,value,number::
+stopsetup
+
+startsetup
+com:comparepalet:
+typ:val/:
+val:*name::
+stopsetup
+
+startsetup
+com:comparecolorgroup:
+typ:val/:
+val:*name::
+stopsetup
+
+startsetup
+com:showmakeup:
+typ::
+stopsetup
+
+startsetup
+com:setuptype:
+typ:var/:
+var:space:on,off::
+var:option:slanted,normal,none::
+var:style:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:color:*name::
+stopsetup
+
+startsetup
+com:type:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:typ:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:tex:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:arg:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:definetyping:
+typ:val/vars/:
+val:file,typing,*name::
+ivr:setuptyping::
+stopsetup
+
+startsetup
+com:setuptyping:
+typ:val/vars/:
+val:file,typing,*name::
+var:space:on,off::
+var:page:yes,no::
+var:option:slanted,normal,commands,color,none::
+var:text:yes,no::
+var:icommand:*command::
+var:vcommand:*command::
+var:ccommand:*command::
+var:before:*command::
+var:after:*command::
+var:margin:*dimension,standard::
+var:evenmargin:*dimension::
+var:oddmargin:*dimension::
+var:blank:*dimension,small,medium,big,standard,halfline,line::
+var:escape:*\@@mssetupcharacter ::
+var:indentnext:yes,no::
+var:style:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:color:*name::
+var:palet:*name::
+stopsetup
+
+startsetup
+com:starttyping:
+typ:stp/:
+stopsetup
+
+startsetup
+com:typefile:
+typ:arg/arg/:
+val:*name::
+val:*file::
+stopsetup
+
+startsetup
+com:setupfootnotes:
+typ:vars/:
+var:conversion:numbers,characters,Characters,romannumerals,Romannumerals::
+var:way:bytext,by*section::
+var:location:page,text,columns,high::
+var:rule:on,off::
+var:before:*command::
+var:after:*command::
+var:width:*dimension::
+var:height:*dimension::
+var:bodyfont:5pt,...,12pt,small,big::
+var:style:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:distance:*dimension::
+var:columndistance:*dimension::
+var:margindistance:*dimension::
+var:n:*number::
+var:numbercommand:*\command#1::
+ivr:framed::
+stopsetup
+
+startsetup
+com:setupfootnotedefinition:
+typ:vars/:
+ivr:definedescription::
+stopsetup
+
+startsetup
+com:footnote:
+typ:ref/arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:note:
+typ:ref/:
+stopsetup
+
+startsetup
+com:startlocalfootnotes:
+typ:stp/:
+ivr:setupfootnotes::
+stopsetup
+
+startsetup
+com:placelocalfootnotes:
+typ:vars/:
+ivr:setupfootnotes::
+stopsetup
+
+startsetup
+com:placefootnotes:
+typ:vars/:
+ivr:setupfootnotes::
+stopsetup
+
+startsetup
+com:setupunderbar:
+typ:vars/:
+var:alternative:a,b,c::
+var:rulethickness:*dimension::
+var:bottomoffset:*dimension::
+var:topoffset:*dimension::
+stopsetup
+
+startsetup
+com:underbar:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:underbars:
+typ:wrds/:
+val:*text::
+stopsetup
+
+startsetup
+com:overbar:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:overbars:
+typ:wrds/:
+val:*text::
+stopsetup
+
+startsetup
+com:overstrike:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:overstrikes:
+typ:wrds/:
+val:*text::
+stopsetup
+
+startsetup
+com:romannumerals:
+typ:arg/:
+val:*number::
+stopsetup
+
+startsetup
+com:Romannumerals:
+typ:arg/:
+val:*number::
+stopsetup
+
+startsetup
+com:numbers:
+typ:arg/:
+val:*number::
+stopsetup
+
+startsetup
+com:character:
+typ:arg/:
+val:*number::
+stopsetup
+
+startsetup
+com:Character:
+typ:arg/:
+val:*number::
+stopsetup
+
+startsetup
+com:characters:
+typ:arg/:
+val:*number::
+stopsetup
+
+startsetup
+com:Characters:
+typ:arg/:
+val:*number::
+stopsetup
+
+startsetup
+com:mediaeval:
+typ:arg/:
+val:*number::
+stopsetup
+
+startsetup
+com:month:
+typ:arg/:
+val:*number::
+stopsetup
+
+startsetup
+com:MONTH:
+typ:arg/:
+val:*number::
+stopsetup
+
+startsetup
+com:weekday:
+typ:arg/:
+val:*number::
+stopsetup
+
+startsetup
+com:WEEKDAY:
+typ:arg/:
+val:*number::
+stopsetup
+
+startsetup
+com:setupcapitals:
+typ:vars/:
+var:title:yes,no::
+var:sc:yes,no::
+stopsetup
+
+startsetup
+com:kap:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:nocap:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:CAP:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:Cap:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:Caps:
+typ:wrds/:
+val:*text::
+stopsetup
+
+startsetup
+com:WORD:
+typ:wrd/:
+val:*text::
+stopsetup
+
+startsetup
+com:WORDS:
+typ:wrds/:
+val:*text::
+stopsetup
+
+startsetup
+com:Word:
+typ:wrd/:
+val:*text::
+stopsetup
+
+startsetup
+com:Words:
+typ:wrds/:
+val:*text::
+stopsetup
+
+startsetup
+com:stretched:
+typ:wrd/:
+val:*text::
+stopsetup
+
+startsetup
+com:definesymbol:
+typ:val/val/:
+val:*name::
+val:*text::
+stopsetup
+
+startsetup
+com:definefiguresymbol:
+typ:val/val/vars/:
+val:*name::
+val:*text::
+ivr:externalfigure::
+stopsetup
+
+startsetup
+com:symbol:
+typ:val/val/:
+val:*name::
+val:*name::
+stopsetup
+
+startsetup
+com:startsymbolset:
+typ:val/stp/:
+val:*name::
+stopsetup
+
+startsetup
+com:setupsymbolset:
+typ:val/:
+val:*name::
+stopsetup
+
+startsetup
+com:usesymbols:
+typ:val/:
+val:*name::
+stopsetup
+
+startsetup
+com:showsymbolset:
+typ:val/:
+val:*name::
+stopsetup
+
+startsetup
+com:defineconversion:
+typ:val/val/:
+val:*name::
+val:*command,*text::
+stopsetup
+
+startsetup
+com:convertnumber:
+typ:arg/arg/:
+val:*name::
+val:*number::
+stopsetup
+
+startsetup
+com:setupheadtext:
+typ:val/var/:
+val:nl,fr,en,uk,de,sp,cz,..:nl:
+var:*name:*text::
+stopsetup
+
+startsetup
+com:setuplabeltext:
+typ:val/var/:
+val:nl,fr,en,uk,de,sp,cz,..:nl:
+var:*name:*text::
+stopsetup
+
+startsetup
+com:headtext:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:labeltext:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:setupmarginrules:
+typ:var/:
+var:level:*number::
+var:thickness:*dimension::
+stopsetup
+
+startsetup
+com:startmarginrule:
+typ:val/stp/:
+val:*number::
+stopsetup
+
+startsetup
+com:marginrule:
+typ:val/arg/:
+val:*number::
+stopsetup
+
+startsetup
+com:setuplinewidth:
+typ:val/:
+val:*dimension::
+stopsetup
+
+startsetup
+com:setupframed:
+typ:vars/:
+var:height:fit,broad,*dimension::
+var:width:fit,broad,*dimension::
+var:offset:none,overlay,default,*dimension::
+var:location:low,depth::
+var:option:none,empty::
+var:strut:yes,no::
+var:align:no,left,right,middle,normal,high,low,lohi::
+var:bottom:*command::
+var:top:*command::
+var:frame:on,off,overlay::
+var:topframe:on,off::
+var:bottomframe:on,off::
+var:leftframe:on,off::
+var:rightframe:on,off::
+var:frameoffset:*dimension::
+var:framedepth:*dimension::
+var:framecorner:round,rectangular::
+var:frameradius:*dimension::
+var:framecolor:*name::
+var:background:screen,color,none,foreground,*name::
+var:backgroundscreen:*number::
+var:backgroundcolor:*name::
+var:backgroundoffset:frame,*dimension::
+var:backgrounddepth:*dimension::
+var:backgroundcorner:round,rectangular::
+var:backgroundradius:*dimension::
+var:depth:*dimension::
+var:corner:round,rectangular::
+var:radius:*dimension::
+var:empty:yes,no::
+val:*text::
+stopsetup
+
+startsetup
+com:framed:
+typ:vars/arg/:
+ivr:setupframed::
+val:*text::
+stopsetup
+
+startsetup
+com:inframed:
+typ:vars/arg/:
+ivr:setupframed::
+val:*text::
+stopsetup
+
+startsetup
+com:thinrules:
+typ:var/:
+ivr:setupthinrules::
+stopsetup
+
+startsetup
+com:setupthinrules:
+typ:var/:
+var:interlinespace:small,medium,big::
+var:n:*number::
+var:before:*command::
+var:after:*command::
+stopsetup
+
+startsetup
+com:hairline:
+typ::
+stopsetup
+
+startsetup
+com:thinrule:
+typ::
+stopsetup
+
+startsetup
+com:defineframedtext:
+typ:val/vars/:
+val:*name::
+ivr:setupframedtexts::
+stopsetup
+
+startsetup
+com:defineframed:
+typ:val/vars/:
+val:*name::
+ivr:setupframedtexts::
+stopsetup
+
+startsetup
+com:setupframedtexts:
+typ:vars/:
+var:bodyfont:5pt,...,12pt,small,big::
+var:style:normal,bold,slanted,boldslanted,type,small...,*command::
+var:left:*command::
+var:right:*command::
+var:before:*command::
+var:after:*command::
+var:inner:*command::
+var:margin:standard,yes,no::
+ivr:setupframed::
+stopsetup
+
+startsetup
+com:start<<framedtext>>:
+typ:val/vars/stp/:
+val:left,right,middle::
+ivr:setupframedtexts::
+stopsetup
+
+startsetup
+com:<<framedtext>>:
+typ:vars/:
+ivr:setupframedtexts::
+stopsetup
+
+startsetup
+com:startbackground:
+typ:stp/:
+stopsetup
+
+startsetup
+com:background:
+typ::
+stopsetup
+
+startsetup
+com:setupbackground:
+typ:vars/:
+var:leftoffset:*dimension::
+var:rightoffset:*dimension::
+var:topoffset:*dimension::
+var:bottomoffset:*dimension::
+var:state:start,stop::
+ivr:setupframed::
+stopsetup
+
+startsetup
+com:fillinrules:
+typ:vars/arg/arg/:
+ivr:setupfillinrules::
+stopsetup
+
+startsetup
+com:fillintext:
+typ:vars/arg/arg/par/:
+ivr:setupfillinrules::
+stopsetup
+
+startsetup
+com:setupfillinrules:
+typ:vars/:
+var:width:fit,broad,*dimension::
+var:distance:*dimension::
+var:before:*command::
+var:after:*command::
+var:style:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:n:*number::
+var:interlinespace:small,medium,big::
+var:separator:*text::
+stopsetup
+
+startsetup
+com:fillinline:
+typ:vars/nop/par/:
+ivr:setupfillinlines::
+stopsetup
+
+startsetup
+com:setupfillinlines:
+typ:vars/:
+var:width:*dimension::
+var:margin:*dimension::
+var:distance:*dimension::
+var:before:*command::
+var:after:*command::
+stopsetup
+
+startsetup
+com:setuptextrules:
+typ:vars/:
+var:location:left,inmargin::
+var:before:*command::
+var:after:*command::
+var:inbetween:*command::
+var:width:*dimension::
+var:distance:*dimension::
+var:bodyfont:5pt,...,12pt,small,big::
+var:color:*name::
+var:style:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:rulecolor:*name::
+stopsetup
+
+startsetup
+com:textrule:
+typ:val/arg/:
+val:top,bottom::
+val:*text::
+stopsetup
+
+startsetup
+com:starttextrule:
+typ:val/arg/stp/:
+val:top,bottom::
+val:*text::
+stopsetup
+
+startsetup
+com:blackrule:
+typ:vars/:
+ivr:setupblackrules::
+stopsetup
+
+startsetup
+com:blackrules:
+typ:vars/:
+ivr:setupblackrules::
+stopsetup
+
+startsetup
+com:setupblackrules:
+typ:vars/:
+var:width:*dimension,max::
+var:height:*dimension,max::
+var:depth:*dimension,max::
+var:alternative:a,b::
+var:distance:*dimension::
+var:n:*number::
+stopsetup
+
+startsetup
+com:defineoverlay:
+typ:vals/val/:
+val:*name::
+val:*command::
+stopsetup
+
+startsetup
+com:usemodule:
+typ:vals/:
+val:*name::
+stopsetup
+
+startsetup
+com:reset:
+typ:vals/:
+val:*name::
+stopsetup
+
+startsetup
+com:donttest:
+typ::
+stopsetup
+
+startsetup
+com:startlocalenvironment:
+typ:stp/:
+stopsetup
+
+startsetup
+com:setupsystem:
+typ:vars/:
+var:resolution:*number::
+var:file:*text::
+var:directory:*text::
+var:random:normal,small,medium,big,*number::
+stopsetup
+
+startsetup
+com:usedirectory:
+typ:vals/:
+val:*name,reset:.:
+stopsetup
+
+startsetup
+com:low:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:high:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:lohi:
+typ:arg/arg/:
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:showframe:
+typ:val/:
+val:text,margin,edge::
+stopsetup
+
+startsetup
+com:showbuildup:
+typ::
+stopsetup
+
+startsetup
+com:leftaligned:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:rightaligned:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:midaligned:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:wordright:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:inmargin:
+typ:val/ref/arg/:
+val:+,-,low::
+val:*text::
+stopsetup
+
+startsetup
+com:inothermargin:
+typ:val/ref/arg/:
+val:+,-,low::
+val:*text::
+stopsetup
+
+startsetup
+com:inleft:
+typ:val/ref/arg/:
+val:+,-,low::
+val:*text::
+stopsetup
+
+startsetup
+com:inright:
+typ:val/ref/arg/:
+val:+,-,low::
+val:*text::
+stopsetup
+
+startsetup
+com:column:
+typ::
+stopsetup
+
+startsetup
+com:showstruts:
+typ::
+stopsetup
+
+startsetup
+com:showsetups:
+typ::
+stopsetup
+
+startsetup
+com:showlayout:
+typ::
+stopsetup
+
+startsetup
+com:margintext:
+typ:val/ref/arg/:
+val:+,-,low::
+val:*text::
+stopsetup
+
+startsetup
+com:setupmarginblocks:
+typ:vars/:
+var:location:inmargin,left,middle,right::
+var:style:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:width:*dimension::
+var:align:left,middle,right,no::
+var:top:*command::
+var:inbetween:*command::
+var:bottom:*command::
+var:left:*command::
+var:right:*command::
+var:before:*command::
+var:after:*command::
+stopsetup
+
+startsetup
+com:startmarginblock:
+typ:stp/:
+stopsetup
+
+startsetup
+com:part:
+typ:refs/arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:title:
+typ:refs/arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:chapter:
+typ:refs/arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:section:
+typ:refs/arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:subsection:
+typ:refs/arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:subsubsection:
+typ:refs/arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:subject:
+typ:refs/arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:subsubject:
+typ:refs/arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:subsubsubject:
+typ:refs/arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:appendix:
+typ:refs/arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:in:
+typ:arg/arg/ref/:
+val:*text::
+stopsetup
+
+startsetup
+com:at:
+typ:arg/arg/ref/:
+val:*text::
+stopsetup
+
+startsetup
+com:about:
+typ:arg/ref/:
+val:*text::
+stopsetup
+
+startsetup
+com:somewhere:
+typ:arg/arg/ref/:
+val:*text::
+stopsetup
+
+startsetup
+com:atpage:
+typ:ref/:
+stopsetup
+
+startsetup
+com:ref:
+typ:val/ref/:
+val:t,p,r,s,e::
+val:*text::
+stopsetup
+
+startsetup
+com:textreference:
+typ:ref/arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:pagereference:
+typ:ref/:
+stopsetup
+
+startsetup
+com:reference:
+typ:ref/arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:usereferences:
+typ:vals/:
+val:*file::
+stopsetup
+
+startsetup
+com:definereference:
+typ:val/refs/:
+val:*name::
+stopsetup
+
+startsetup
+com:definereferenceformat:
+typ:val/vars/:
+val:*name::
+var:left:*text::
+var:right:*text::
+var:text:*text::
+var:label:*name::
+stopsetup
+
+startsetup
+com:hl:
+typ:val/:
+val:*number::
+stopsetup
+
+startsetup
+com:vl:
+typ:val/:
+val:*number::
+stopsetup
+
+startsetup
+com:godown:
+typ:val/:
+val:*dimension::
+stopsetup
+
+startsetup
+com:whitespace:
+typ::
+stopsetup
+
+startsetup
+com:nowhitespace:
+typ::
+stopsetup
+
+startsetup
+com:crlf:
+typ::
+stopsetup
+
+startsetup
+com:space:
+typ::
+stopsetup
+
+startsetup
+com:fixedspaces:
+typ::
+stopsetup
+
+startsetup
+com:nospace:
+typ::
+stopsetup
+
+startsetup
+com:packed:
+typ::
+stopsetup
+
+startsetup
+com:redo:
+typ:val/:
+val:repeat/*text::
+stopsetup
+
+startsetup
+com:setupdescriptions:
+typ:vals/vars/:
+val:*name::
+var:headstyle:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:style:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:color:*name::
+var:width:fit,broad,*dimension::
+var:distance:*dimension::
+var:sample:*text::
+var:text:*text::
+var:align:left,middle,right::
+var:margin:standard,yes,no,*dimension::
+var:location:left,right,top,serried, inmargin,inleft,inright,hanging::
+var:hang:fit,broad,*number::
+var:before:*command::
+var:inbetween:*command::
+var:after:*command::
+var:indentnext:yes,no::
+stopsetup
+
+startsetup
+com:setupenumerations:
+typ:vals/vars/:
+val:*name::
+ivr:definedescription::
+var:location:left,right,top,serried, inmargin,inleft,inright,hanging::
+var:text:*text::
+var:levels:*number::
+var:conversion:numbers,characters,Characters,romannumerals,Romannumerals::
+var:way:bytext,by*section::
+var:blockway:yes,no::
+var:sectionnumber:yes,number,no::
+var:separator:*text::
+var:stopper:*text::
+var:coupling:*name::
+var:couplingway:global,local::
+var:number:no,*name::
+var:aligntitle:no,yes::
+var:start:*number::
+stopsetup
+
+startsetup
+com:defineenumeration:
+typ:vals/val/vars/:
+val:*name::
+val:*name::
+ivr:setupenumerations::
+stopsetup
+
+startsetup
+com:<<enumeration>>:
+typ:nop/par/:
+val:*text::
+stopsetup
+
+startsetup
+com:start<<enumeration>>:
+typ:stp/:
+stopsetup
+
+startsetup
+com:definedescription:
+typ:val/vars/:
+val:*name::
+ivr:setupdescriptions::
+stopsetup
+
+startsetup
+com:<<description>>:
+typ:arg/nop/par/:
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:start<<description>>:
+typ:arg/stp/:
+val:*text::
+stopsetup
+
+startsetup
+com:setupindentations:
+typ:vals/vars/:
+val:*name::
+var:style:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:headstyle:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:width:fit,*dimension::
+var:text:*text::
+var:sample:*text::
+var:before:*command::
+var:after:*command::
+var:distance:*dimension::
+var:separator:*text::
+stopsetup
+
+startsetup
+com:defineindenting:
+typ:val/vars/:
+val:*name::
+ivr:setupindentations::
+stopsetup
+
+startsetup
+com:<<indentation>>:
+typ:nop/par/:
+val:*text::
+stopsetup
+
+startsetup
+com:definelabel:
+typ:val/vars/:
+val:*name::
+var:text:*text::
+var:location:inmargin,intext::
+var:way:bytext,by*section::
+var:blockway:yes,no::
+var:headstyle:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:headcolor:*name::
+var:before:*command::
+var:after:*command::
+stopsetup
+
+startsetup
+com:<<labeling>>:
+typ:ref/:
+stopsetup
+
+startsetup
+com:setupcolumns:
+typ:vars/:
+var:n:*number::
+var:ntop:*number::
+var:rule:on,off::
+var:height:*dimension::
+var:tolerance:verystrict,strict,tolerant,verytolerant,stretch::
+var:distance:*dimension::
+var:balance:yes,no::
+var:align:yes,no,text::
+var:blank:fixed,halfline,line,flexible,big,medium,small::
+var:option:background::
+var:direction:left,right::
+ivr:setupframed::
+stopsetup
+
+startsetup
+com:startcolumns:
+typ:vars/stp/:
+ivr:setupcolumns::
+stopsetup
+
+startsetup
+com:definetext:
+typ:val/val/val/val/val/:
+val:*name::
+val:header,footer::
+val:*text::
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:setupheader:
+typ:val/vars/:
+val:text,margin,edge:text:
+var:state:normal,stop,start,empty,high,none, nomarking,*name::
+var:strut:yes,no::
+var:style:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:leftstyle:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:rightstyle:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:leftwidth:*dimension::
+var:rightwidth:*dimension::
+var:before:*command::
+var:after:*command::
+stopsetup
+
+startsetup
+com:setupfooter:
+typ:val/vars/:
+ivl:setupheader::
+ivr:setupheader::
+stopsetup
+
+startsetup
+com:setuptext:
+typ:val/vars/:
+ivl:setupheader::
+ivr:setupheader::
+stopsetup
+
+startsetup
+com:setuptop:
+typ:val/vars/:
+ivl:setupheader::
+ivr:setupheader::
+stopsetup
+
+startsetup
+com:setupbottom:
+typ:val/vars/:
+ivl:setupheader::
+ivr:setupheader::
+stopsetup
+
+startsetup
+com:noheaderandfooterlines:
+typ::
+stopsetup
+
+startsetup
+com:notopandbottomlines:
+typ::
+stopsetup
+
+startsetup
+com:setupheadertexts:
+typ:val/val/val/:
+val:text,margin,edge:text:
+val:*text,*section,date,*mark,pagenumber::
+val:*text,*section,date,*mark,pagenumber::
+stopsetup
+
+startsetup
+com:setupfootertexts:
+typ:val/val/val/:
+val:text,margin,edge:text:
+val:*text,*section,date,*mark,pagenumber::
+val:*text,*section,date,*mark,pagenumber::
+stopsetup
+
+startsetup
+com:setuptexttexts:
+typ:val/val/val/:
+val:text,margin,edge:text:
+val:*text,*section,date,*mark,pagenumber::
+val:*text,*section,date,*mark,pagenumber::
+stopsetup
+
+startsetup
+com:setuptoptexts:
+typ:val/val/val/:
+val:text,margin,edge:text:
+val:*text,*section,date,*mark,pagenumber::
+val:*text,*section,date,*mark,pagenumber::
+stopsetup
+
+startsetup
+com:setupbottomtexts:
+typ:val/val/val/:
+val:text,margin,edge:text:
+val:*text,*section,date,*mark,pagenumber::
+val:*text,*section,date,*mark,pagenumber::
+stopsetup
+
+startsetup
+com:definemarking:
+typ:val/val/:
+val:*name::
+val:*name::
+stopsetup
+
+startsetup
+com:couplemarking:
+typ:val/val/:
+val:*name::
+val:*name::
+stopsetup
+
+startsetup
+com:decouplemarking:
+typ:val/:
+val:*name::
+stopsetup
+
+startsetup
+com:resetmarking:
+typ:val/:
+val:*name::
+stopsetup
+
+startsetup
+com:setupmarking:
+typ:val/var/:
+val:*name::
+var:state:start,stop::
+var:separator:*command::
+var:expansion:yes,no::
+stopsetup
+
+startsetup
+com:marking:
+typ:val/arg/:
+val:*name::
+val:*text::
+stopsetup
+
+startsetup
+com:getmarking:
+typ:val/val/:
+val:*name::
+val:first,last,previous,both,all::
+stopsetup
+
+startsetup
+com:nomarking:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:setuplayout:
+typ:vars/:
+var:width:*dimension,fit,middle::
+var:height:*dimension,fit,middle::
+var:backspace:*dimension::
+var:topspace:*dimension::
+var:margin:*dimension::
+var:leftmargin:*dimension::
+var:rightmargin:*dimension::
+var:header:*dimension::
+var:footer:*dimension::
+var:top:*dimension::
+var:bottom:*dimension::
+var:leftedge:*dimension::
+var:rightedge:*dimension::
+var:headerdistance:*dimension::
+var:footerdistance:*dimension::
+var:topdistance:*dimension::
+var:bottomdistance:*dimension::
+var:leftmargindistance:*dimension::
+var:rightmargindistance:*dimension::
+var:leftedgedistance:*dimension::
+var:rightedgedistance:*dimension::
+var:horoffset:*dimension::
+var:veroffset:*dimension::
+var:style:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:marking:on,off,color::
+var:location:left,middle,right,bottom,top, singlesided,doublesided::
+var:scale:*dimension::
+var:nx:*number::
+var:ny:*number::
+var:dx:*dimension::
+var:dy:*dimension::
+var:lines:*number::
+var:grid:yes,no::
+var:bottomspace:*number::
+var:cutspace:*number::
+stopsetup
+
+startsetup
+com:adaptlayout:
+typ:vals/vars/:
+val:*number::
+var:height:*dimension,max::
+var:lines:*number::
+stopsetup
+
+startsetup
+com:showgrid:
+typ::
+stopsetup
+
+startsetup
+com:placeongrid:
+typ:val/arg/:
+ivl:moveongrid::
+stopsetup
+
+startsetup
+com:moveongrid:
+typ:val/:
+val:top,both,bottom:both:
+stopsetup
+
+startsetup
+com:startproject:
+typ:fil/stp/:
+val:*file::
+stopsetup
+
+startsetup
+com:startenvironment:
+typ:fil/stp/:
+val:*file::
+stopsetup
+
+startsetup
+com:startproduct:
+typ:fil/stp/:
+val:*file::
+stopsetup
+
+startsetup
+com:startcomponent:
+typ:fil/stp/:
+val:*file::
+stopsetup
+
+startsetup
+com:nomorefiles:
+typ::
+stopsetup
+
+startsetup
+com:setupinterlinespace:
+typ:val/vars/:
+val:reset,small,medium,big,on,off:small:
+var:height:*number::
+var:depth:*number::
+var:line:*dimension::
+var:top:*number::
+var:bottom:*number::
+stopsetup
+
+startsetup
+com:setuppagenumbering:
+typ:vars/:
+var:alternative:singlesided,doublesided::
+var:location:header,footer, left,right,middle, margin,marginedge,inleft,inright::
+var:conversion:numbers,characters,Characters,romannumerals,Romannumerals::
+var:style:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:left:*text::
+var:right:*text::
+var:way:bytext,by*section::
+var:text:*text::
+var:numberseparator:*text::
+var:textseparator:*text::
+var:*section*number:yes,no::
+var:separator:*text::
+var:state:start,stop::
+var:command:*\command#1::
+stopsetup
+
+startsetup
+com:setupnarrower:
+typ:vars/:
+var:left:*dimension::
+var:right:*dimension::
+var:middle:*dimension::
+stopsetup
+
+startsetup
+com:define:
+typ:val/cmd/arg/:
+val:*number:0:
+stopsetup
+
+startsetup
+com:usecommands:
+typ:arg/:
+stopsetup
+
+startsetup
+com:definestartstop:
+typ:val/vars/:
+var:before:*command::
+var:after:*command::
+var:style:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:commands:*command::
+stopsetup
+
+startsetup
+com:setupheads:
+typ:vars/:
+var:sectionnumber:yes,number,no::
+var:alternative:normal,margin,middle,text,paragraph::
+var:separator:*text::
+var:command:*\command#1#2::
+stopsetup
+
+startsetup
+com:setupcaptions:
+typ:vars/:
+var:location:top,bottom,none,high,low,middle::
+var:width:fit,max,*dimension::
+var:headstyle:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:style:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:number:yes,no::
+var:inbetween:*command::
+var:align:left,middle,right,no::
+var:conversion:numbers,characters,Characters,romannumerals,Romannumerals::
+var:way:bytext,by*section::
+stopsetup
+
+startsetup
+com:setupcaption:
+typ:val/vars/:
+val:*name::
+ivr:setupcaptions::
+stopsetup
+
+startsetup
+com:setupfloats:
+typ:vars/:
+var:location:left,right,middle::
+var:width:fit,*dimension::
+var:before:*command::
+var:after:*command::
+var:margin:*dimension::
+var:spacebefore:repeat/small,repeat/medium,repeat/big,none::
+var:spaceafter:repeat/small,repeat/medium,repeat/big,none::
+var:sidespacebefore:repeat/small,repeat/medium,repeat/big,none::
+var:sidespaceafter:repeat/small,repeat/medium,repeat/big,none::
+var:indentnext:yes,no::
+var:ntop:*number::
+var:nbottom:*number::
+var:nlines:*number::
+ivr:setupframed::
+stopsetup
+
+startsetup
+com:setupfloatsplitting:
+typ:vars/:
+var:conversion:numbers,characters,Characters,romannumerals,Romannumerals::
+var:lines:*number::
+stopsetup
+
+startsetup
+com:splitfloat:
+typ:vars/arg/arg/:
+ivr:setupfloatsplitting::
+stopsetup
+
+startsetup
+com:setupoppositeplacing:
+typ:var/:
+var:state:start,stop::
+stopsetup
+
+startsetup
+com:startopposite:
+typ:stp/:
+stopsetup
+
+startsetup
+com:setuphyphenmark:
+typ:var/:
+var:sign:--,---,-,\normalpenalty 10000\ ,),(,=,/::
+stopsetup
+
+startsetup
+com:setuppositioning:
+typ:vars/:
+var:state:start,overlay::
+var:unit:cm,pt,em,mm,ex,sp,in::
+var:factor:*number::
+var:scale:*number::
+var:offset:yes,no::
+var:xstep:absolute,relative::
+var:ystep:absolute,relative::
+stopsetup
+
+startsetup
+com:startpositioning:
+typ:stp/:
+stopsetup
+
+startsetup
+com:grid:
+typ:vars/:
+var:x:*number::
+var:y:*number::
+var:nx:*number::
+var:ny:*number::
+var:dx:*number::
+var:dy:*number::
+var:xstep:*number::
+var:ystep:*number::
+var:offset:yes,no::
+var:factor:*number::
+var:scale:*number::
+var:unit:cm,pt,em,mm,ex,sp,in::
+var:location:left,middle::
+stopsetup
+
+startsetup
+com:page:
+typ:vals/:
+val:yes,markup,no,preference,bigpreference, left,right,disable,last,quadruple, even,odd,blank,empty,reset:yes:
+stopsetup
+
+startsetup
+com:setupreferencing:
+typ:var/:
+var:state:start,stop::
+var:*section*number:yes,no::
+var:prefix:+,-,*text::
+var:interaction:label,text,all,symbol::
+var:width:*dimension::
+var:left:*command::
+var:right:*command::
+var:convertfile:yes,no,small,big::
+var:separator:*text::
+var:autofile:yes,no,page::
+stopsetup
+
+startsetup
+com:setupurl:
+typ:vars/:
+var:style:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:urlalternative:none,both,before,after::
+var:urlspace:yes,no::
+stopsetup
+
+startsetup
+com:writetoreferencelist:
+typ:val/arg/arg/:
+val:*name::
+stopsetup
+
+startsetup
+com:placereferencelist:
+typ:vals/:
+val:*name::
+stopsetup
+
+startsetup
+com:definereferencelist:
+typ:val/vars/:
+val:*name::
+ivr:setupreferencelist::
+stopsetup
+
+startsetup
+com:setupreferencelist:
+typ:vals/vars/:
+val:*name::
+var:state:start,stop::
+var:criterium:*section,local,previous,all::
+var:command:*command::
+var:before:*command::
+var:after:*command::
+stopsetup
+
+startsetup
+com:writetolist:
+typ:val/arg/arg/:
+val:*section,*name::
+stopsetup
+
+startsetup
+com:writebetweenlist:
+typ:val/arg/:
+val:*section,*name::
+stopsetup
+
+startsetup
+com:nolist:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:placelist:
+typ:vals/vars/:
+val:*name::
+ivr:setuplist::
+stopsetup
+
+startsetup
+com:determinelistcharacteristics:
+typ:vals/vars/:
+val:*name::
+ivr:setuplist::
+stopsetup
+
+startsetup
+com:definelist:
+typ:val/val/vars/:
+val:*name::
+val:*name::
+ivr:setuplist::
+stopsetup
+
+startsetup
+com:setuplist:
+typ:vals/vars/:
+val:*name::
+var:state:start,stop::
+var:alternative:a,b,c,...,none,command::
+var:coupling:on,off::
+var:criterium:*section,local,previous,all::
+var:pageboundaries:*list::
+var:style:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:numberstyle:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:textstyle:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:pagestyle:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:color:*name::
+var:command:*\command#1#2#3::
+var:numbercommand:*\command#1::
+var:textcommand:*\command#1::
+var:pagecommand:*\command#1::
+var:interaction:sectionnumber,text,pagenumber,all::
+var:before:*command::
+var:after:*command::
+var:inbetween:*command::
+var:left:*text::
+var:right:*text::
+var:label:yes,no::
+var:prefix:yes,no::
+var:pagenumber:yes,no::
+var:*section*number:yes,no::
+var:aligntitle:yes,no::
+var:margin:*dimension::
+var:width:*dimension,fit::
+var:height:*dimension,fit,broad::
+var:depth:*dimension,fit,broad::
+var:distance:*dimension::
+var:separator:*text::
+var:symbol:none,1,2,3,...::
+var:expansion:yes,no,command::
+var:maxwidth:*dimension::
+ivr:framed::
+stopsetup
+
+startsetup
+com:definecombinedlist:
+typ:val/vals/vars/:
+val:*name::
+val:*list::
+ivr:setupcombinedlist::
+stopsetup
+
+startsetup
+com:setupcombinedlist:
+typ:val/vars/:
+val:*name::
+var:level:1,2,3,4,*section,current::
+ivr:setuplist::
+stopsetup
+
+startsetup
+com:place<<combinedlist>>:
+typ:val/vars/:
+val:*name::
+ivr:setupcombinedlist::
+stopsetup
+
+startsetup
+com:complete<<combinedlist>>:
+typ:val/vars/:
+val:*name::
+ivr:setupcombinedlist::
+stopsetup
+
+startsetup
+com:setupnumbering:
+typ:vars/:
+var:way:bytext,by*section::
+var:state:start,stop::
+stopsetup
+
+startsetup
+com:setupformulae:
+typ:vars/:
+var:location:left,right::
+var:left:*text::
+var:right:*text::
+stopsetup
+
+startsetup
+com:publication:
+typ:ref/:
+stopsetup
+
+startsetup
+com:setuppublications:
+typ:vars/:
+var:alternative:apa,normal::
+ivr:setupenumerations::
+stopsetup
+
+startsetup
+com:setuplines:
+typ:vars/:
+var:before:*command::
+var:after:*command::
+var:inbetween:*command::
+var:indenting:yes,no,even,odd::
+stopsetup
+
+startsetup
+com:startlines:
+typ:stp/:
+stopsetup
+
+startsetup
+com:setupparagraphnumbering:
+typ:vars/:
+var:state:start,stop,reset,line::
+var:style:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:distance:*dimension::
+stopsetup
+
+startsetup
+com:setuplinenumbering:
+typ:vars/:
+var:conversion:numbers,characters,Characters,romannumerals,Romannumerals, text::
+var:start:*number::
+var:step:*number::
+var:width:*dimension::
+var:location:intext,inmargin::
+var:style:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:prefix:*text::
+var:referencing:on,off::
+stopsetup
+
+startsetup
+com:startlinenumbering:
+typ:val/stp/:
+val:continue::
+stopsetup
+
+startsetup
+com:startline:
+typ:ref/stp/:
+stopsetup
+
+startsetup
+com:someline:
+typ:ref/:
+stopsetup
+
+startsetup
+com:inline:
+typ:ref/:
+stopsetup
+
+startsetup
+com:setupinmargin:
+typ:val/vars/:
+val:left,right,*number::
+var:location:left,right,both::
+var:style:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:before:*command::
+var:after:*command::
+var:align:inner,outer,left,right,middle,normal,no,yes::
+var:line:*number::
+var:distance:*dimension::
+var:separator:*text::
+ivr:setupframed::
+stopsetup
+
+startsetup
+com:setuppagenumber:
+typ:vars/:
+var:number:*number::
+var:state:start,stop,keep::
+stopsetup
+
+startsetup
+com:setupsubpagenumber:
+typ:vars/:
+var:way:bytext,by*section::
+var:state:start,stop,none::
+stopsetup
+
+startsetup
+com:setupblank:
+typ:val/:
+val:normal,standard,line,*dimension, big,medium,small, fixed,flexible:normal:
+stopsetup
+
+startsetup
+com:defineblank:
+typ:val/val/:
+val:*name::
+ivl:setupblank::
+stopsetup
+
+startsetup
+com:definepapersize:
+typ:val/vars/:
+val:*name::
+var:width:*dimension::
+var:height:*dimension::
+var:offset:*dimension::
+var:scale:*number::
+stopsetup
+
+startsetup
+com:setuppapersize:
+typ:vals/vals/:
+val:A3,A4,A5,A6,letter,...,CD,*name, landscape,mirrored,rotated,90,180,270:A4:
+val:A3,A4,A5,A6,letter,...,*name, landscape,mirrored,rotated,negative,90,180,270:A4:
+stopsetup
+
+startsetup
+com:setuparranging:
+typ:vals/:
+val:disable, 2*16,2*8,2*4,2*2,2UP,2DOWN, mirrored,rotated,doublesided,negative,90,180,270::
+stopsetup
+
+startsetup
+com:showprint:
+typ:vals/vals/vars/:
+ivr:setuppapersize::
+ivr:setuppapersize::
+ivr:setuplayout::
+stopsetup
+
+startsetup
+com:definelogo:
+typ:val/val/val/vars/:
+val:*name::
+val:top,header,footer,bottom::
+val:none,page, leftedge,leftmargin, left,middle,right, rightmargin,rightedge::
+var:command:*command,*text::
+var:state:start,stop::
+stopsetup
+
+startsetup
+com:placelogos:
+typ:vals/:
+val:*name::
+stopsetup
+
+startsetup
+com:setupwhitespace:
+typ:val/:
+val:none,small,medium,big,line,fixed,fix,*dimension:none:
+stopsetup
+
+startsetup
+com:setupindenting:
+typ:vals/:
+val:none,small,medium,big,next,first,*dimension:none:
+stopsetup
+
+startsetup
+com:definesectionblock:
+typ:val/vars/:
+val:*name::
+ivr:setupsectionblock::
+stopsetup
+
+startsetup
+com:setupsectionblock:
+typ:val/vars/:
+val:*name::
+var:number:yes,no::
+var:page:yes,right::
+var:before:*command::
+var:after:*command::
+stopsetup
+
+startsetup
+com:definesection:
+typ:val/:
+val:*name::
+stopsetup
+
+startsetup
+com:setupsection:
+typ:val/val/vars/:
+val:*name::
+val:*name:frontpart,bodypart,appendix,backpart:
+var:conversion:numbers,characters,Characters,romannumerals,Romannumerals::
+var:previousnumber:yes,no::
+stopsetup
+
+startsetup
+com:setuphead:
+typ:val/vars/:
+val:*section::
+var:style:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:textstyle:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:numberstyle:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:number:yes,no::
+var:ownnumber:yes,no::
+var:page:left,right,yes::
+var:continue:yes,no::
+var:header:none,empty,high,nomarking::
+var:before:*command::
+var:inbetween:*command::
+var:after:*command::
+var:alternative:normal,inmargin,middle,text::
+var:command:*\command#1#2::
+var:numbercommand:*\command#1::
+var:textcommand:*\command#1::
+var:prefix:+,-,*text::
+var:placehead:yes,no::
+var:incrementnumber:yes,no,*file::
+var:align:left,right,normal,broad::
+var:tolerance:verystrict,strict,tolerant,verytolerant,stretch::
+var:indentnext:yes,no::
+var:file:*name::
+var:expansion:yes,command,no::
+stopsetup
+
+startsetup
+com:setupheadnumber:
+typ:val/val/:
+val:*section::
+val:*number,+*number,-*number::
+stopsetup
+
+startsetup
+com:headnumber:
+typ:val/:
+val:*section::
+stopsetup
+
+startsetup
+com:determineheadnumber:
+typ:val/:
+val:*section::
+stopsetup
+
+startsetup
+com:currentheadnumber:
+typ::
+stopsetup
+
+startsetup
+com:next<<section>>:
+typ::
+stopsetup
+
+startsetup
+com:definehead:
+typ:val/val/:
+val:*name::
+val:*section::
+stopsetup
+
+startsetup
+com:setupitemize:
+typ:val/vals/vars/:
+val:*number,each::
+val:standard,repeat/broad,repeat/serried,packed, unpacked,stopper,joinedup,atmargin,inmargin, autointro,loose,section,intext:standard:
+var:margin:no,standard,*dimension::
+var:width:*dimension::
+var:distance:*dimension::
+var:factor:*number::
+var:items:*number::
+var:before:*command::
+var:inbetween:*command::
+var:after:*command::
+var:left:*text::
+var:right:*text::
+var:beforehead:*command::
+var:afterhead:*command::
+var:headstyle:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:marstyle:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:symstyle:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:stopper:*text::
+var:n:*number::
+var:symbol:*number::
+var:align:left,right,normal::
+var:indentnext:yes,no::
+stopsetup
+
+startsetup
+com:startitemize:
+typ:vals/vars/stp/:
+val:a,A,KA,n,N,m,r,R,KR,*number,continue, standard,repeat/broad,repeat/serried,packed, stopper,joinedup,atmargin,inmargin,intro,columns:standard:
+ivr:setupitemize::
+stopsetup
+
+startsetup
+com:item:
+typ:refs/:
+stopsetup
+
+startsetup
+com:but:
+typ:ref/:
+stopsetup
+
+startsetup
+com:its:
+typ:refs/:
+stopsetup
+
+startsetup
+com:ran:
+typ:arg/:
+stopsetup
+
+startsetup
+com:head:
+typ:refs/:
+stopsetup
+
+startsetup
+com:mar:
+typ:refs/arg/:
+stopsetup
+
+startsetup
+com:sub:
+typ:refs/:
+stopsetup
+
+startsetup
+com:sym:
+typ:arg/:
+stopsetup
+
+startsetup
+com:nop:
+typ::
+stopsetup
+
+startsetup
+com:defineregister:
+typ:val/val/:
+val:*singular name::
+val:*plural name::
+stopsetup
+
+startsetup
+com:setupregister:
+typ:val/val/vars/:
+val:*singular name::
+val:*name::
+var:n:*number::
+var:balance:yes,no::
+var:align:yes,no::
+var:style:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:pagestyle:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:textstyle:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:indicator:yes,no::
+var:coupling:yes,no::
+var:*section*number:yes,no::
+var:criterium:*section,local,all::
+var:distance:*dimension::
+var:symbol:1,2,...,n,a,...,none::
+var:interaction:pagenumber,text::
+var:expansion:yes,command,no::
+var:referencing:on,off::
+var:command:*\command#1::
+var:location:left,middle,right::
+var:maxwidth:*dimension::
+var:unknownreference:empty,none::
+stopsetup
+
+startsetup
+com:<<register>>:
+typ:val/idxs/:
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:start<<register>>:
+typ:val/idxs/:
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:writetoregister:
+typ:val/val/idxs/:
+val:*singular name::
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:coupled<<register>>:
+typ:val/idx/:
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:coupleregister:
+typ:val/:
+val:*name::
+stopsetup
+
+startsetup
+com:see<<register>>:
+typ:val/arg/idxs/:
+val:*text::
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:complete<<register>>:
+typ:vars/:
+ivr:setupregister::
+stopsetup
+
+startsetup
+com:place<<register>>:
+typ:vars/:
+ivr:setupregister::
+stopsetup
+
+startsetup
+com:definesynonyms:
+typ:val/val/val/val/:
+val:*singular name::
+val:*plural name::
+val:*command::
+val:*command::
+stopsetup
+
+startsetup
+com:setupsynonyms:
+typ:val/vars/:
+val:*name::
+var:textstyle:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:synonymstyle:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:location:left,right,top,serried, inmargin,inleft,inright::
+var:width:*dimension::
+var:state:start,stop::
+var:criterium:all,used::
+var:conversion:yes,no::
+var:expansion:yes,command,no::
+var:command:*\command#1#2#3::
+stopsetup
+
+startsetup
+com:<<synonym>>:
+typ:val/arg/arg/:
+val:*text::
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:completelistof<<synonyms>>:
+typ::
+stopsetup
+
+startsetup
+com:placelistof<<synonyms>>:
+typ::
+stopsetup
+
+startsetup
+com:load<<synonyms>>:
+typ::
+stopsetup
+
+startsetup
+com:definesorting:
+typ:val/val/val/:
+val:*singular name::
+val:*plural name::
+val:*command::
+stopsetup
+
+startsetup
+com:setupsorting:
+typ:val/vars/:
+val:*name::
+var:before:*command::
+var:after:*command::
+var:command:*\command#1::
+var:state:start,stop::
+var:criterium:all,used::
+var:style:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:expansion:yes,command,no::
+stopsetup
+
+startsetup
+com:<<sort>>:
+typ:val/arg/:
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:completelistof<<sorts>>:
+typ::
+stopsetup
+
+startsetup
+com:placelistof<<sorts>>:
+typ::
+stopsetup
+
+startsetup
+com:load<<sorts>>:
+typ::
+stopsetup
+
+startsetup
+com:definemakeup:
+typ:val/vars/:
+val:*name::
+ivr:setupmakeup::
+stopsetup
+
+startsetup
+com:startmakeup:
+typ:val/vars/stp/:
+val:*name::
+ivr:setupmakeup::
+stopsetup
+
+startsetup
+com:setupmakeup:
+typ:val/vars/:
+val:*name::
+var:width:*dimension::
+var:height:*dimension::
+var:voffset:*dimension::
+var:hoffset:*dimension::
+var:page:left,yes,right::
+var:commands:*command::
+var:doublesided:yes,no,empty::
+var:headerstate:normal,stop,start,empty,none,nomarking::
+var:footerstate:normal,stop,start,empty,none,nomarking::
+var:textstate:normal,stop,start,empty,none,nomarking::
+var:topstate:stop,start::
+var:bottomstate:stop,start::
+stopsetup
+
+startsetup
+com:start<<name>>makeup:
+typ:stp/:
+stopsetup
+
+startsetup
+com:version:
+typ:val/:
+val:final,concept,temporary:final:
+stopsetup
+
+startsetup
+com:currentdate:
+typ:vals/:
+val:day,month,MONTH,weekday,WEEKDAY,year, dd,mm,jj,yy,d,m,j,y,referral:day,month,year:
+stopsetup
+
+startsetup
+com:date:
+typ:vars/vals/:
+var:d:*number::
+var:m:*number::
+var:y:*number::
+ivl:currentdate::
+stopsetup
+
+startsetup
+com:referraldate:
+typ::
+stopsetup
+
+startsetup
+com:indenting:
+typ:vals/:
+val:never,not,no,yes,always,first,next:never:
+stopsetup
+
+startsetup
+com:noindenting:
+typ::
+stopsetup
+
+startsetup
+com:blank:
+typ:vals/:
+val:repeat/small,repeat/medium,repeat/big, nowhite,back,white,disable,force,reset, line,halfline,formula,fixed,flexible:big:
+stopsetup
+
+startsetup
+com:startpacked:
+typ:val/stp/:
+val:blank::
+stopsetup
+
+startsetup
+com:startunpacked:
+typ:stp/:
+stopsetup
+
+startsetup
+com:startlinecorrection:
+typ:stp/:
+stopsetup
+
+startsetup
+com:correctwhitespace:
+typ:arg/:
+stopsetup
+
+startsetup
+com:startpostponing:
+typ:stp/:
+stopsetup
+
+startsetup
+com:startlocal:
+typ:stp/:
+stopsetup
+
+startsetup
+com:startnarrower:
+typ:vals/stp/:
+val:repeat/left,repeat/middle,repeat/right:middle:
+stopsetup
+
+startsetup
+com:starthiding:
+typ:stp/:
+stopsetup
+
+startsetup
+com:setupalign:
+typ:val/:
+val:width,left,right,middle,inner,outer, wide,broad,height,bottom,line,reset::
+stopsetup
+
+startsetup
+com:startalignment:
+typ:stp/val/:
+ivr:setupalign::
+stopsetup
+
+startsetup
+com:setupspacing:
+typ:val/:
+val:broad,packed::
+stopsetup
+
+startsetup
+com:setuptolerance:
+typ:vals/:
+val:horizontal,vertical, stretch,verystrict,strict,tolerant,verytolerant:verystrict:
+stopsetup
+
+startsetup
+com:pagetype:
+typ:val/:
+val:*name::
+stopsetup
+
+startsetup
+com:processpage:
+typ:vals/val/:
+val:*name::
+val:yes,no:yes:
+stopsetup
+
+startsetup
+com:couplepage:
+typ:vals/vars/:
+val:*name::
+var:option:doublesided::
+var:before:*command::
+var:after:*command::
+stopsetup
+
+startsetup
+com:position:
+typ:poss/arg/:
+val:*number::
+val:*number::
+val:*text::
+stopsetup
+
+startsetup
+com:setupscreens:
+typ:vars/:
+var:method:dot,rule,external::
+var:resolution:*number::
+var:factor:*number::
+var:screen:*number::
+stopsetup
+
+startsetup
+com:setupbackgrounds:
+typ:val/vals/vars/:
+val:top,header,text,footer,bottom, page,paper,leftpage,rightpage::
+val:leftedge,leftmargin,text,rightmargin,rightedge::
+var:state:start,stop,repeat::
+ivr:setupframed::
+stopsetup
+
+startsetup
+com:startbuffer:
+typ:val/stp/:
+val:*name::
+stopsetup
+
+startsetup
+com:getbuffer:
+typ:val/:
+val:*name::
+stopsetup
+
+startsetup
+com:typebuffer:
+typ:val/:
+val:*name::
+stopsetup
+
+startsetup
+com:definebuffer:
+typ:val/:
+val:*name::
+stopsetup
+
+startsetup
+com:setupbuffer:
+typ:val/vars/:
+val:*name::
+var:paragraph:*number::
+var:before:*command::
+var:after:*command::
+stopsetup
+
+startsetup
+com:defineblock:
+typ:val/:
+val:*name::
+stopsetup
+
+startsetup
+com:nomoreblocks:
+typ::
+stopsetup
+
+startsetup
+com:hideblocks:
+typ:vals/vals/:
+val:*name::
+val:*name::
+stopsetup
+
+startsetup
+com:keepblocks:
+typ:vals/vals/:
+val:*name::
+val:all,*name::
+stopsetup
+
+startsetup
+com:useblocks:
+typ:vals/vals/:
+val:*name::
+val:*name::
+stopsetup
+
+startsetup
+com:processblocks:
+typ:vals/vals/:
+val:*name::
+val:*name::
+stopsetup
+
+startsetup
+com:selectblocks:
+typ:vals/vals/var/:
+val:*name::
+val:*name::
+var:criterium:all,*section::
+stopsetup
+
+startsetup
+com:setupblock:
+typ:vals/vars/:
+val:*name::
+var:before:*command::
+var:after:*command::
+var:inner:*command::
+var:style:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:file:*file::
+stopsetup
+
+startsetup
+com:startformula:
+typ:stp/:
+val:*formula::
+stopsetup
+
+startsetup
+com:mathematics:
+typ:arg/:
+val:*formula::
+stopsetup
+
+startsetup
+com:placeformula:
+typ:refs/arg/dis/:
+val:*text::
+val:*formula::
+stopsetup
+
+startsetup
+com:placesubformula:
+typ:refs/arg/dis/:
+val:*text::
+val:*formula::
+stopsetup
+
+startsetup
+com:place<<float>>:
+typ:val/refs/arg/arg/:
+val:left,right,here,top,bottom, inleft,inright,inmargin,margin, page,opposite,always,force,tall:here:
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:reserve<<float>>:
+typ:vars/val/refs/arg/:
+var:height:*dimension::
+var:width:*dimension::
+var:frame:on,off::
+val:left,right,here,top,bottom, inleft,inright,inmargin,margin, page,opposite,always,force:here:
+val:*text::
+stopsetup
+
+startsetup
+com:definefloat:
+typ:val/val/:
+val:*singular name::
+val:*plural name::
+stopsetup
+
+startsetup
+com:setupfloat:
+typ:val/vars/:
+val:*name::
+var:height:*dimension::
+var:width:*dimension::
+var:pageboundaries:*list::
+ivr:setupframed::
+stopsetup
+
+startsetup
+com:start<<float>>text:
+typ:val/ref/arg/arg/stp/:
+val:left,right,high,middle,low,offset,tall::
+val:*text::
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:placelistof<<floats>>:
+typ::
+stopsetup
+
+startsetup
+com:completelistof<<floats>>:
+typ::
+stopsetup
+
+startsetup
+com:referral:
+typ:vars/:
+var:bet:*text::
+var:ken:*text::
+var:dat:*text::
+var:from:*text::
+var:to:*text::
+var:ref:*text::
+stopsetup
+
+startsetup
+com:selectpaper:
+typ:vars/:
+var:family:1,2::
+stopsetup
+
+startsetup
+com:couplepaper:
+typ:val/:
+val:*name::
+stopsetup
+
+startsetup
+com:chem:
+typ:arg/arg/arg/:
+val:*text::
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:fraction:
+typ:arg/arg/:
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:periods:
+typ:val/:
+val:*number::
+stopsetup
+
+startsetup
+com:domicile:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:items:
+typ:vars/args/:
+ivr:setupitems::
+stopsetup
+
+startsetup
+com:setupitems:
+typ:vars/:
+var:location:left,right,inmargin,top,bottom::
+var:symbol:1,2,...,n,a,...,*text,none::
+var:width:*dimension::
+var:n:*number,unknown::
+var:before:*command::
+var:inbetween:*command::
+var:align:left,right,middle,margin::
+var:after:*command::
+stopsetup
+
+startsetup
+com:startquotation:
+typ:vals/stp/:
+val:repeat/left,repeat/middle,repeat/right:middle:
+stopsetup
+
+startsetup
+com:quotation:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:quote:
+typ:arg/:
+val:*text::
+stopsetup
+
+startsetup
+com:setupquote:
+typ:vars/:
+var:before:*command::
+var:after:*command::
+var:style:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+stopsetup
+
+startsetup
+com:adding:
+typ:val/:
+val:small,medium,big:medium:
+stopsetup
+
+startsetup
+com:defineparagraphs:
+typ:val/vars/:
+val:*name::
+var:n:*number::
+var:rule:on,off::
+var:height:fit,*dimension::
+var:before:*command::
+var:after:*command::
+var:inner:*command::
+var:distance:*dimension::
+var:tolerance:verystrict,strict,tolerant,verytolerant,stretch::
+var:align:left,right,middle::
+stopsetup
+
+startsetup
+com:<<paragraph>>:
+typ::
+stopsetup
+
+startsetup
+com:start<<paragraph>>:
+typ:stp/:
+stopsetup
+
+startsetup
+com:setupparagraphs:
+typ:val/val/vars/:
+val:*name::
+val:*number,each::
+var:style:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:width:*dimension::
+var:height:*dimension::
+var:align:left,right,middle,width::
+var:tolerance:verystrict,strict,tolerant,verytolerant,stretch::
+var:distance:*dimension::
+var:before:*command::
+var:after:*command::
+var:inner:*command::
+var:command:*command::
+var:rule:on,off::
+stopsetup
+
+startsetup
+com:setuptab:
+typ:vars/:
+var:sample:*text::
+var:width:*dimension::
+var:headstyle:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:location:left,right::
+stopsetup
+
+startsetup
+com:tab:
+typ:arg/nop/par/:
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:startdocument:
+typ:val/stp/:
+val:*name::
+stopsetup
+
+startsetup
+com:letters:
+typ:val/:
+val:*name::
+stopsetup
+
+startsetup
+com:labels:
+typ:val/:
+val:*name::
+stopsetup
+
+startsetup
+com:setupcorrespondence:
+typ:vals/:
+val:formeel,informeel,rekening,ls, high,middle,low:formeel,low:
+stopsetup
+
+startsetup
+com:setupsheets:
+typ:vars/:
+var:alternative:*number::
+var:text:*text::
+var:size:small,medium,big::
+var:style:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:number:*number,joinedup::
+stopsetup
+
+startsetup
+com:sheet:
+typ:val/:
+val:*text::
+stopsetup
+
+startsetup
+com:setupstickers:
+typ:vars/:
+var:alternative:a::
+var:n:*number,all::
+var:location:margin,left,right,middle::
+stopsetup
+
+startsetup
+com:definetabulate:
+typ:val/val/val/:
+val:*name::
+val:*name::
+val:*text::
+stopsetup
+
+startsetup
+com:starttabulate:
+typ:val/vars/stp/:
+val:*text::
+ivr:useexternalfigure::
+stopsetup
+
+startsetup
+com:setuptabulate:
+typ:val/vars/:
+val:*name::
+var:unit:*dimension::
+var:indenting:yes,no::
+var:before:*command::
+var:after:*command::
+var:inner:*command::
+var:EQ:*text::
+var:rulecolor:*name::
+var:align:left,middle,right,normal::
+var:rulethickness:*dimension::
+var:distance:blank,depth,*dimension,small,medium,big,none::
+stopsetup
+
+startsetup
+com:setuptables:
+typ:vars/:
+var:distance:small,medium,big::
+var:bodyfont:5pt,...,12pt,small,big::
+var:HL:*number,small,medium,big,none::
+var:VL:*number,small,medium,big,none::
+var:depth:*number,strut::
+var:height:*number,strut::
+var:rulethickness:*dimension::
+var:rulecolor:*name::
+var:align:right,middle,left,normal::
+var:commands:*command::
+var:align:left,middle,right,normal::
+var:background:screen,color,none::
+var:backgroundscreen:*number::
+var:backgroundcolor:*name::
+stopsetup
+
+startsetup
+com:starttable:
+typ:val/stp/:
+val:*text,*name::
+stopsetup
+
+startsetup
+com:starttables:
+typ:val/stp/:
+val:*text,*name::
+stopsetup
+
+startsetup
+com:definetabletemplate:
+typ:val/val/val/val/:
+val:*name::
+val:*text::
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:useexternalfiles:
+typ:val/vars/:
+val:*name::
+var:bodyfont:5pt,...,12pt,small,big::
+var:file:*file::
+stopsetup
+
+startsetup
+com:useexternalfile:
+typ:val/val/val/vars/:
+val:*name::
+val:*name::
+val:*file::
+var:bodyfont:5pt,...,12pt,small,big::
+stopsetup
+
+startsetup
+com:useexternalfigure:
+typ:val/val/vars/:
+val:*name::
+val:*file::
+var:scale:*number::
+var:factor:max,fit,broad::
+var:wfactor:*number,max,broad,fit::
+var:hfactor:*number,max,broad,fit::
+var:width:*dimension::
+var:height:*dimension::
+var:frame:on,off::
+var:preset:yes,no::
+var:display:*file::
+var:preview:yes,no::
+var:repeat:yes,no::
+var:object:yes,no::
+var:type:eps,mps,pdf,tif,png,jpg,mov,tex::
+var:method:eps,mps,pdf,tif,png,jpg,mov,tex::
+stopsetup
+
+startsetup
+com:externalfigure:
+typ:val/vars/:
+val:*file::
+ivr:useexternalfigure::
+stopsetup
+
+startsetup
+com:setupexternalfigures:
+typ:var/:
+var:option:frame,empty,test::
+var:object:yes,no::
+var:frames:on,off::
+var:ymax:*number::
+var:xmax:*number::
+var:directory:*text::
+var:location:local,global::
+stopsetup
+
+startsetup
+com:showexternalfigures:
+typ:vars/:
+var:alternative:a,b,c::
+stopsetup
+
+startsetup
+com:useexternalsoundtrack:
+typ:val/val/:
+val:*name::
+val:*file::
+stopsetup
+
+startsetup
+com:name:
+typ:arg/:
+val:*name::
+stopsetup
+
+startsetup
+com:startlegend:
+typ:val/tex/{leg}nop/sep/nop/sep/nop/sep/tex/{leg}stp/:
+val:two::
+val:*text::
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:startfact:
+typ:tex/{geg}nop/sep/nop/sep/nop/sep/tex/{geg}stp/:
+val:*text::
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:rotate:
+typ:vars/arg/:
+ivr:setuprotate::
+stopsetup
+
+startsetup
+com:setuprotate:
+typ:vars/:
+var:rotation:*number::
+ivr:setupframed::
+stopsetup
+
+startsetup
+com:mirror:
+typ:arg/:
+stopsetup
+
+startsetup
+com:scale:
+typ:vars/arg/:
+var:sx:*number::
+var:sy:*number::
+stopsetup
+
+startsetup
+com:setupcombinations:
+typ:vars/:
+var:before:commando::
+var:inbetween:commando::
+var:after:commando::
+var:distance:*dimension::
+var:height:*dimension,fit::
+var:width:*dimension,fit::
+var:align:no,left,right,middle,normal::
+stopsetup
+
+startsetup
+com:startcombination:
+typ:val/stp/:
+val:*n*m::
+stopsetup
+
+startsetup
+com:placesidebyside:
+typ:arg/arg/:
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:placeontopofeachother:
+typ:arg/arg/:
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:startoverlay:
+typ:arg/arg/stp/:
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:startoverview:
+typ:vals/stp/:
+val:*name::
+stopsetup
+
+startsetup
+com:setupinteractionscreen:
+typ:vars/:
+var:width:*dimension,fit,max::
+var:height:*dimension,fit,max::
+var:backspace:*dimension::
+var:topspace:*dimension::
+var:horoffset:*dimension::
+var:veroffset:*dimension::
+var:option:max,bookmark::
+var:delay:*number,none::
+stopsetup
+
+startsetup
+com:screen:
+typ::
+stopsetup
+
+startsetup
+com:setuppagetransitions:
+typ:vals/:
+val:reset, *number::
+stopsetup
+
+startsetup
+com:setupinteraction:
+typ:vars/:
+var:state:start,stop::
+var:menu:on,off::
+var:page:yes,no::
+var:click:yes,no::
+var:split:yes,no::
+var:display:new::
+var:openaction:*reference::
+var:closeaction:*reference::
+var:openpageaction:*reference::
+var:closepageaction:*reference::
+var:calculate:*name::
+var:strut:yes,no::
+var:width:*dimension::
+var:height:*dimension::
+var:depth:*dimension::
+var:style:normal,bold,slanted,boldslanted,type,cap,small...*command::
+var:color:*name::
+var:contrastcolor:*name::
+var:symbolset:*name::
+var:title:*text::
+var:subtitle:*text::
+var:author:*text::
+var:date:*text::
+stopsetup
+
+startsetup
+com:setupinteractionmenu:
+typ:vals/vars/dests/:
+val:left,right,top,bottom,*name::
+var:before:*command::
+var:after:*command::
+var:inbetween:*command::
+var:left:*command::
+var:right:*command::
+var:middle:*command::
+var:state:start,stop,none::
+var:style:normal,bold,slanted,boldslanted,type,cap,small...*command::
+var:color:*name::
+var:distance:overlay,*dimension::
+var:samepage:yes,empty,no,none::
+var:unknownreference:yes,empty,no,none::
+var:leftoffset:*dimension::
+var:rightoffset:*dimension::
+var:topoffset:*dimension::
+var:bottomoffset:*dimension::
+var:position:yes,no::
+ivr:setupframed::
+stopsetup
+
+startsetup
+com:defineinteractionmenu:
+typ:val/val/vars/:
+val:left,right,top,bottom,*name::
+val:left,right,top,bottom,*name::
+ivr:setupinteractionmenu::
+stopsetup
+
+startsetup
+com:startinteractionmenu:
+typ:val/stp/:
+val:*name::
+stopsetup
+
+startsetup
+com:disableinteractionmenu:
+typ:val/refs/:
+val:left,right,top,bottom,*name::
+stopsetup
+
+startsetup
+com:useexternaldocument:
+typ:val/val/val/:
+val:*name::
+val:file::
+val:*text::
+stopsetup
+
+startsetup
+com:useURL:
+typ:val/val/val/val/:
+val:*name::
+val:*text::
+val:file::
+val:*text::
+stopsetup
+
+startsetup
+com:coupledocument:
+typ:val/val/val/:
+val:*name::
+val:file::
+val:*name::
+val:*text::
+stopsetup
+
+startsetup
+com:from:
+typ:ref/:
+val:*text::
+stopsetup
+
+startsetup
+com:interactionbar:
+typ:vars/:
+ivr:setupinteractionbar::
+stopsetup
+
+startsetup
+com:interactionbuttons:
+typ:vars/vals/:
+ivr:setupinteractionbar::
+val:*name::
+stopsetup
+
+startsetup
+com:setupinteractionbar:
+typ:vars/:
+var:state:start,stop::
+var:alternative:a,b,c,d,e,f,g::
+var:symbol:yes,no::
+var:width:*dimension,hoogte,fit::
+var:height:*dimension,hoogte,fit::
+var:depth:*dimension::
+var:color:*name::
+var:step:*number,small,medium,big::
+ivr:setupframed::
+stopsetup
+
+startsetup
+com:synchronize:
+typ::
+stopsetup
+
+startsetup
+com:startsynchronization:
+typ:stp/:
+stopsetup
+
+startsetup
+com:setupsynchronizationbar:
+typ:vars/:
+var:alternative:page,local::
+var:width:*dimension,hoogte,fit::
+var:height:*dimension::
+var:style:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+var:color:*name::
+ivr:setupframed::
+stopsetup
+
+startsetup
+com:synchronizationbar:
+typ:val/vars/:
+val:*name::
+var:alternative:page,local::
+ivr:setupsynchronizationbar::
+stopsetup
+
+startsetup
+com:setupsynchronization:
+typ:vars/:
+var:state:start,stop::
+stopsetup
+
+startsetup
+com:defineprofile:
+typ:vals/vals/:
+val:*name::
+val:*name::
+stopsetup
+
+startsetup
+com:setupprofiles:
+typ:vars/:
+var:option:test::
+stopsetup
+
+startsetup
+com:startprofile:
+typ:vals/stp/:
+val:*name::
+stopsetup
+
+startsetup
+com:followprofile:
+typ:arg/val/:
+val:*text::
+val:*name::
+stopsetup
+
+startsetup
+com:placebookmarks:
+typ:vals/vals/:
+val:*name::
+stopsetup
+
+startsetup
+com:bookmark:
+typ:val/arg/:
+val:*name::
+stopsetup
+
+startsetup
+com:startversion:
+typ:vals/stp/:
+val:*number::
+stopsetup
+
+startsetup
+com:setupversions:
+typ:vars/:
+var:number:*number::
+var:style:normal,bold,slanted,boldslanted,type,cap,small...,*command::
+stopsetup
+
+startsetup
+com:markversion:
+typ::
+stopsetup
+
+startsetup
+com:selectversion:
+typ::
+stopsetup
+
+startsetup
+com:defineversion:
+typ:val/vals/:
+val:*name::
+val:*number::
+stopsetup
+
+startsetup
+com:followversion:
+typ:arg/val/:
+val:*text::
+val:*name::
+stopsetup
+
+startsetup
+com:followprofileversion:
+typ:arg/val/val/:
+val:*text::
+val:*name::
+val:*name::
+stopsetup
+
+startsetup
+com:defineprogram:
+typ:val/val/val/:
+val:*name::
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:setupprograms:
+typ:vars/:
+var:directory:*text::
+stopsetup
+
+startsetup
+com:program:
+typ:val/:
+val:*name::
+stopsetup
+
+startsetup
+com:startfigure:
+typ:val/val/vars/stp/:
+val:*name::
+val:*file::
+var:factor:*number::
+var:frame:on,off::
+stopsetup
+
+startsetup
+com:referring/figure:
+typ:poss/poss/val/:
+val:*number::
+val:*number::
+val:*number::
+val:*number::
+val:*text::
+stopsetup
+
+startsetup
+com:marking/figure:
+typ:poss/poss/val/:
+val:*number::
+val:*number::
+val:*number::
+val:*number::
+val:*text::
+stopsetup
+
+startsetup
+com:remark:
+typ:poss/poss/vars/arg/:
+val:*number::
+val:*number::
+val:*number::
+val:*number::
+ivr:setupframed::
+val:*text::
+stopsetup
+
+startsetup
+com:goto:
+typ:arg/arg/refs/:
+val:*text::
+stopsetup
+
+startsetup
+com:gotobox:
+typ:arg/refs/:
+val:*text::
+stopsetup
+
+startsetup
+com:button:
+typ:vars/arg/refs/:
+ivr:setupbuttons::
+val:*text::
+stopsetup
+
+startsetup
+com:setupbuttons:
+typ:vars/:
+var:state:start,stop::
+ivr:setupframed::
+stopsetup
+
+startsetup
+com:menubutton:
+typ:val/vars/arg/refs/:
+ivr:setupframed::
+val:*text::
+stopsetup
+
+startsetup
+com:setupcomment:
+typ:vars/:
+var:width:*dimension::
+var:height:*dimension::
+var:color:*name::
+var:title:*text::
+var:space:yes,no::
+var:symbol:normal,New,Balloon,Addition,Help,Paragraph,Key::
+stopsetup
+
+startsetup
+com:startcomment:
+typ:val/vars/stp/:
+val:*name::
+ivr:setupcomment::
+stopsetup
+
+startsetup
+com:comment:
+typ:val/vars/arg/:
+val:*name::
+ivr:setupcomment::
+stopsetup
+
+startsetup
+com:definefield:
+typ:val/val/val/vals/val/:
+val:*name::
+val:*name:radio,check,push,line,text,popup,choice,combo:
+val:*name::
+val:*name::
+val:*name::
+stopsetup
+
+startsetup
+com:definesubfield:
+typ:val/val/vals/:
+val:*name::
+val:*name::
+val:*name::
+stopsetup
+
+startsetup
+com:copyfield:
+typ:val/vals/:
+val:*name::
+val:*name::
+stopsetup
+
+startsetup
+com:clonefield:
+typ:val/vals/val/vals/:
+val:*name::
+val:*name::
+val:*name::
+val:*name::
+stopsetup
+
+startsetup
+com:field:
+typ:val/:
+val:*name::
+stopsetup
+
+startsetup
+com:fitfield:
+typ:val/:
+val:*name::
+stopsetup
+
+startsetup
+com:fillinfield:
+typ:val/arg/:
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:tooltip:
+typ:val/arg/arg/:
+val:left,right,middle::
+val:*text::
+stopsetup
+
+startsetup
+com:showfields:
+typ:vals/:
+val:*name::
+stopsetup
+
+startsetup
+com:logfields:
+typ::
+stopsetup
+
+startsetup
+com:setupfield:
+typ:val/vals/vars/vars/vars/:
+val:*name::
+val:label,horizontal,vertical,frame::
+ivr:framed::
+ivr:setupfields::
+stopsetup
+
+startsetup
+com:setupfields:
+typ:vals/val/vars/vars/vars/:
+val:*name::
+val:reset,label,horizontal,vertical,frame::
+ivr:framed::
+var:n:*number::
+var:distance:*dimension::
+var:before:*command::
+var:after:*command::
+var:inbetween:*command::
+var:color:*name::
+var:style:normal,bold,slanted,boldslanted,type::
+var:align:left,middle,right::
+var:option:readonly,required,protected,sorted, unavailable, hidden,printable::
+var:clickin:*reference::
+var:clickout:*reference::
+var:regionin:*reference::
+var:regionout:*reference::
+var:afterkey:*reference::
+var:format:*reference::
+var:validate:*reference::
+var:calculate:*reference::
+var:fieldoffset:*dimension::
+var:fieldframecolor:*name::
+var:fieldbackgroundcolor:*name::
+stopsetup
+
+startsetup
+com:setupforms:
+typ:vars/:
+var:method:HTML,FDF::
+stopsetup
+
+startsetup
+com:definefieldstack:
+typ:val/vals/vars/:
+val:*name::
+val:*name::
+ivr:setupfields::
+stopsetup
+
+startsetup
+com:fieldstack:
+typ:val/vals/vars/:
+val:*name::
+val:*name::
+ivr:setupfields::
+stopsetup
+
+startsetup
+com:clip:
+typ:vars/arg/:
+ivr:setupclipping::
+stopsetup
+
+startsetup
+com:setupclipping:
+typ:vars/:
+var:nx:*number::
+var:ny:*number::
+var:x:*number::
+var:y:*number::
+var:width:*dimension::
+var:height:*dimension::
+var:hoffset:*dimension::
+var:voffset:*dimension::
+var:mp:*name::
+stopsetup
+
+startsetup
+com:placelegend:
+typ:arg/arg/:
+val:*text::
+val:*text::
+stopsetup
+
+startsetup
+com:setuplegend:
+typ:vars/:
+var:n:*number::
+var:distance:*dimension::
+var:inbetween:*command::
+var:width:*dimension::
+var:height:*dimension::
+var:location:right,bottom::
+var:bodyfont:5pt,...,12pt,small,big::
+stopsetup
+
+startsetup
+com:definerule:
+typ:val/vars/:
+val:*name::
+ivr:setuprule::
+stopsetup
+
+startsetup
+com:placerule:
+typ:val/:
+val:*name::
+stopsetup
+
+startsetup
+com:setuprule:
+typ:val/vars/:
+val:*name::
+var:depth:*dimension::
+var:height:*dimension::
+var:width:*dimension::
+var:spacebefore:*dimension::
+var:spaceafter:*dimension::
+var:color:*name::
+stopsetup
+
+startsetup
+com:definetextvariable:
+typ:val/val/vars/:
+ivr:setuptextvariable::
+stopsetup
+
+startsetup
+com:setuptextvariable:
+typ:val/vars/:
+val:*name::
+var:left:*text::
+var:right:*text::
+var:distance:*dimension::
+var:command:*\command#1::
+var:strut:yes,no,cap,*text::
+stopsetup
+
+startsetup
+com:settextvariable:
+typ:val/val/:
+val:*name::
+val:*text::
+stopsetup
+
+startsetup
+com:placetextvariable:
+typ:val/:
+val:*name::
+stopsetup
+
+startsetup
+com:textvariable:
+typ:val/:
+val:*name::
+stopsetup
+
+startsetup
+com:definerawfont:
+typ:val/val/vars/:
+val:*name::
+val:*file::
+ivr:setupinterlinespace::
+stopsetup
+
+startsetup
+com:switchtorawfont:
+typ:val/:
+val:*name::
+stopsetup
+
+startsetup
+com:definetextposition:
+typ:val/vars/:
+val:*name::
+ivr:setuppositioning::
+stopsetup
+
+startsetup
+com:setuptextposition:
+typ:val/vars/:
+val:*name::
+ivr:setuppositioning::
+stopsetup
+
+startsetup
+com:positiontext:
+typ:val/arg/:
+val:*name::
+val:*text::
+stopsetup
+
+startsetup
+com:setupstrut:
+typ:val/:
+val:yes,no,cap,*text:yes:
+stopsetup
+
diff --git a/context/data/cont-nl.tws b/context/data/cont-nl.tws
new file mode 100644
index 000000000..f024cd8ec
--- /dev/null
+++ b/context/data/cont-nl.tws
@@ -0,0 +1,4029 @@
+startsetup
+com:installeertaal:
+typ:val/vars/:
+val:*naam::
+var:spatiering:opelkaar,ruim::
+var:lefthyphenmin:*maat::
+var:righthyphenmin:*maat::
+var:status:start,stop::
+var:linkerzin:*commando::
+var:rechterzin:*commando::
+var:linkersubzin:*commando::
+var:rechtersubzin:*commando::
+var:linkerciteer:*commando::
+var:rechterciteer:*commando::
+var:linkercitaat:*commando::
+var:rechtercitaat:*commando::
+var:default:*naam::
+stopsetup
+
+startsetup
+com:steltaalin:
+typ:val/vars/:
+ivr:installeertaal::
+stopsetup
+
+startsetup
+com:taal:
+typ:val/:
+val:nl,fr,en,uk,de,sp,cz,..:nl:
+stopsetup
+
+startsetup
+com:hoofdtaal:
+typ:val/:
+val:nl,fr,en,uk,de,sp,cz,..:nl:
+stopsetup
+
+startsetup
+com:vertaal:
+typ:vars/:
+var:*naam:*tekst::
+stopsetup
+
+startsetup
+com:usecodering:
+typ:vals/:
+val:*naam::
+stopsetup
+
+startsetup
+com:gebruikspecials:
+typ:vals/:
+val:reset,*naam::
+stopsetup
+
+startsetup
+com:definieeruitvoer:
+typ:val/vals/:
+val:*naam::
+val:*naam::
+stopsetup
+
+startsetup
+com:steluitvoerin:
+typ:vals/:
+val:*naam::
+stopsetup
+
+startsetup
+com:definieerkorpsomgeving:
+typ:val/vars/:
+val:5pt,...,12pt,default::
+var:text:*maat::
+var:script:*maat::
+var:scriptscript:*maat::
+var:x:*maat::
+var:xx:*maat::
+var:klein:*maat::
+var:groot:*maat::
+stopsetup
+
+startsetup
+com:stelkorpsomgevingin:
+typ:val/vars/:
+ivl:stelkorpsin::
+ivr:stelkorpsin::
+stopsetup
+
+startsetup
+com:toonkorpsomgeving:
+typ:vals/:
+ivl:stelkorpsin::
+stopsetup
+
+startsetup
+com:definieerkorps:
+typ:vals/val/vars/:
+val:5pt,...,12pt,default::
+val:rm,ss,tt,mm,hw,cg::
+var:tf:*file::
+var:bf:*file::
+var:sl:*file::
+var:it:*file::
+var:bs:*file::
+var:bi:*file::
+var:sc:*file::
+var:ex:*file::
+var:mi:*file::
+var:sy:*file::
+var:ma:*file::
+var:mb:*file::
+var:mc:*file::
+stopsetup
+
+startsetup
+com:toonkorps:
+typ:vals/:
+ivl:stelkorpsin::
+stopsetup
+
+startsetup
+com:stelkorpsin:
+typ:vals/:
+val:*naam, serif,regular,romaan, sans,support,schreefloos, mono,type,teletype, handschrift,calligrafie, 5pt,...,12pt:sau,ibm,12pt,serif:
+stopsetup
+
+startsetup
+com:switchnaarkorps:
+typ:vals/:
+val:5pt,...,12pt,klein,groot,globaal::
+stopsetup
+
+startsetup
+com:definieerfont:
+typ:val/val/:
+val:*naam::
+val:*file::
+stopsetup
+
+startsetup
+com:stelstrutin:
+typ:vals/:
+val:ja,nee,kap,*tekst:ja:
+stopsetup
+
+startsetup
+com:stelkleurin:
+typ:val/:
+val:*naam:rgb:
+stopsetup
+
+startsetup
+com:stelkleurenin:
+typ:vars/:
+var:status:start,stop,globaal,lokaal::
+var:conversie:ja,nee,altijd::
+var:reductie:ja,nee::
+var:rgb:ja,nee::
+var:cmyk:ja,nee::
+stopsetup
+
+startsetup
+com:definieerkleur:
+typ:val/vars/:
+val:*naam::
+var:r:*tekst::
+var:g:*tekst::
+var:b:*tekst::
+var:c:*tekst::
+var:m:*tekst::
+var:y:*tekst::
+var:k:*tekst::
+var:s:*tekst::
+stopsetup
+
+startsetup
+com:startkleur:
+typ:val/stp/:
+val:*naam::
+val:*tekst::
+stopsetup
+
+startsetup
+com:kleur:
+typ:val/arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:grijskleur:
+typ:val/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:toonkleur:
+typ:val/:
+val:*naam::
+stopsetup
+
+startsetup
+com:definieerpalet:
+typ:val/vars/:
+val:*naam::
+var:*naam:*naam::
+stopsetup
+
+startsetup
+com:stelpaletin:
+typ:val/:
+val:*naam::
+stopsetup
+
+startsetup
+com:definieerkleurgroep:
+typ:val/val/vals/:
+val:*naam::
+val:rgb,cmyk,grijs,s:rgb:
+val:trips/::
+stopsetup
+
+startsetup
+com:toonpalet:
+typ:val/vals/:
+val:*naam::
+val:horizontaal,vertikaal,naam,waarde::
+stopsetup
+
+startsetup
+com:toonkleurgroep:
+typ:val/vals/:
+val:*naam::
+val:horizontaal,vertikaal,naam,waarde,nummer::
+stopsetup
+
+startsetup
+com:vergelijkpalet:
+typ:val/:
+val:*naam::
+stopsetup
+
+startsetup
+com:vergelijkkleurgroep:
+typ:val/:
+val:*naam::
+stopsetup
+
+startsetup
+com:toonopmaak:
+typ::
+stopsetup
+
+startsetup
+com:steltypein:
+typ:var/:
+var:spatie:aan,uit::
+var:optie:schuin,normaal,geen::
+var:letter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:kleur:*naam::
+stopsetup
+
+startsetup
+com:type:
+typ:arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:typ:
+typ:arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:tex:
+typ:arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:arg:
+typ:arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:definieertypen:
+typ:val/vars/:
+val:file,typen,*naam::
+ivr:steltypenin::
+stopsetup
+
+startsetup
+com:steltypenin:
+typ:val/vars/:
+val:file,typen,*naam::
+var:spatie:aan,uit::
+var:pagina:ja,nee::
+var:optie:schuin,normaal,commandos,kleur,geen::
+var:tekst:ja,nee::
+var:icommando:*commando::
+var:vcommando:*commando::
+var:ccommando:*commando::
+var:voor:*commando::
+var:na:*commando::
+var:marge:*maat,standaard::
+var:evenmarge:*maat::
+var:onevenmarge:*maat::
+var:blanko:*maat,klein,middel,groot,standaard,halveregel,regel::
+var:escape:*\@@mssetupcharacter ::
+var:springvolgendein:ja,nee::
+var:letter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:kleur:*naam::
+var:palet:*naam::
+stopsetup
+
+startsetup
+com:starttypen:
+typ:stp/:
+stopsetup
+
+startsetup
+com:typefile:
+typ:arg/arg/:
+val:*naam::
+val:*file::
+stopsetup
+
+startsetup
+com:stelvoetnotenin:
+typ:vars/:
+var:conversie:cijfers,letters,Letters,romeins,Romeins::
+var:wijze:pertekst,per*sectie::
+var:plaats:pagina,tekst,kolommen,hoog::
+var:lijn:aan,uit::
+var:voor:*commando::
+var:na:*commando::
+var:breedte:*maat::
+var:hoogte:*maat::
+var:korps:5pt,...,12pt,klein,groot::
+var:letter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:afstand:*maat::
+var:kolomafstand:*maat::
+var:margeafstand:*maat::
+var:n:*getal::
+var:nummercommando:*\commando#1::
+ivr:omlijnd::
+stopsetup
+
+startsetup
+com:stelvoetnootdefinitiein:
+typ:vars/:
+ivr:doordefinieren::
+stopsetup
+
+startsetup
+com:voetnoot:
+typ:ref/arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:noot:
+typ:ref/:
+stopsetup
+
+startsetup
+com:startlokalevoetnoten:
+typ:stp/:
+ivr:stelvoetnotenin::
+stopsetup
+
+startsetup
+com:plaatslokalevoetnoten:
+typ:vars/:
+ivr:stelvoetnotenin::
+stopsetup
+
+startsetup
+com:plaatsvoetnoten:
+typ:vars/:
+ivr:stelvoetnotenin::
+stopsetup
+
+startsetup
+com:stelonderstrepenin:
+typ:vars/:
+var:variant:a,b,c::
+var:lijndikte:*maat::
+var:onderoffset:*maat::
+var:bovenoffset:*maat::
+stopsetup
+
+startsetup
+com:onderstreep:
+typ:arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:onderstrepen:
+typ:wrds/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:overstreep:
+typ:arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:overstrepen:
+typ:wrds/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:doorstreep:
+typ:arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:doorstrepen:
+typ:wrds/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:romeins:
+typ:arg/:
+val:*getal::
+stopsetup
+
+startsetup
+com:Romeins:
+typ:arg/:
+val:*getal::
+stopsetup
+
+startsetup
+com:cijfers:
+typ:arg/:
+val:*getal::
+stopsetup
+
+startsetup
+com:letter:
+typ:arg/:
+val:*getal::
+stopsetup
+
+startsetup
+com:Letter:
+typ:arg/:
+val:*getal::
+stopsetup
+
+startsetup
+com:letters:
+typ:arg/:
+val:*getal::
+stopsetup
+
+startsetup
+com:Letters:
+typ:arg/:
+val:*getal::
+stopsetup
+
+startsetup
+com:mediaeval:
+typ:arg/:
+val:*getal::
+stopsetup
+
+startsetup
+com:maand:
+typ:arg/:
+val:*getal::
+stopsetup
+
+startsetup
+com:MAAND:
+typ:arg/:
+val:*getal::
+stopsetup
+
+startsetup
+com:weekdag:
+typ:arg/:
+val:*getal::
+stopsetup
+
+startsetup
+com:WEEKDAG:
+typ:arg/:
+val:*getal::
+stopsetup
+
+startsetup
+com:stelkapitalenin:
+typ:vars/:
+var:titel:ja,nee::
+var:sc:ja,nee::
+stopsetup
+
+startsetup
+com:kap:
+typ:arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:nokap:
+typ:arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:KAP:
+typ:arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:Kap:
+typ:arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:Kaps:
+typ:wrds/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:WOORD:
+typ:wrd/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:WOORDEN:
+typ:wrds/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:Woord:
+typ:wrd/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:Woorden:
+typ:wrds/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:uitgerekt:
+typ:wrd/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:definieersymbool:
+typ:val/val/:
+val:*naam::
+val:*tekst::
+stopsetup
+
+startsetup
+com:definieerfiguursymbool:
+typ:val/val/vars/:
+val:*naam::
+val:*tekst::
+ivr:externfiguur::
+stopsetup
+
+startsetup
+com:symbool:
+typ:val/val/:
+val:*naam::
+val:*naam::
+stopsetup
+
+startsetup
+com:startsymboolset:
+typ:val/stp/:
+val:*naam::
+stopsetup
+
+startsetup
+com:stelsymboolsetin:
+typ:val/:
+val:*naam::
+stopsetup
+
+startsetup
+com:gebruiksymbolen:
+typ:val/:
+val:*naam::
+stopsetup
+
+startsetup
+com:toonsymboolset:
+typ:val/:
+val:*naam::
+stopsetup
+
+startsetup
+com:definieerconversie:
+typ:val/val/:
+val:*naam::
+val:*commando,*tekst::
+stopsetup
+
+startsetup
+com:converteernummer:
+typ:arg/arg/:
+val:*naam::
+val:*getal::
+stopsetup
+
+startsetup
+com:stelkoptekstin:
+typ:val/var/:
+val:nl,fr,en,uk,de,sp,cz,..:nl:
+var:*naam:*tekst::
+stopsetup
+
+startsetup
+com:stellabeltekstin:
+typ:val/var/:
+val:nl,fr,en,uk,de,sp,cz,..:nl:
+var:*naam:*tekst::
+stopsetup
+
+startsetup
+com:koptekst:
+typ:arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:labeltekst:
+typ:arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:stelkantlijnin:
+typ:var/:
+var:niveau:*getal::
+var:dikte:*maat::
+stopsetup
+
+startsetup
+com:startkantlijn:
+typ:val/stp/:
+val:*getal::
+stopsetup
+
+startsetup
+com:kantlijn:
+typ:val/arg/:
+val:*getal::
+stopsetup
+
+startsetup
+com:stellijndiktein:
+typ:val/:
+val:*maat::
+stopsetup
+
+startsetup
+com:stelomlijndin:
+typ:vars/:
+var:hoogte:passend,ruim,*maat::
+var:breedte:passend,ruim,*maat::
+var:offset:geen,overlay,default,*maat::
+var:plaats:laag,diepte::
+var:optie:geen,leeg::
+var:strut:ja,nee::
+var:uitlijnen:nee,links,rechts,midden,normaal,hoog,laag,laho::
+var:onder:*commando::
+var:boven:*commando::
+var:kader:aan,uit,overlay::
+var:bovenkader:aan,uit::
+var:onderkader:aan,uit::
+var:linkerkader:aan,uit::
+var:rechterkader:aan,uit::
+var:kaderoffset:*maat::
+var:kaderdiepte:*maat::
+var:kaderhoek:rond,recht::
+var:kaderstraal:*maat::
+var:kaderkleur:*naam::
+var:achtergrond:raster,kleur,geen,voorgrond,*naam::
+var:achtergrondraster:*getal::
+var:achtergrondkleur:*naam::
+var:achtergrondoffset:kader,*maat::
+var:achtergronddiepte:*maat::
+var:achtergrondhoek:rond,recht::
+var:achtergrondstraal:*maat::
+var:diepte:*maat::
+var:hoek:rond,recht::
+var:straal:*maat::
+var:leeg:ja,nee::
+val:*tekst::
+stopsetup
+
+startsetup
+com:omlijnd:
+typ:vars/arg/:
+ivr:stelomlijndin::
+val:*tekst::
+stopsetup
+
+startsetup
+com:inlijnd:
+typ:vars/arg/:
+ivr:stelomlijndin::
+val:*tekst::
+stopsetup
+
+startsetup
+com:dunnelijnen:
+typ:var/:
+ivr:steldunnelijnenin::
+stopsetup
+
+startsetup
+com:steldunnelijnenin:
+typ:var/:
+var:interlinie:klein,middel,groot::
+var:n:*getal::
+var:voor:*commando::
+var:na:*commando::
+stopsetup
+
+startsetup
+com:haarlijn:
+typ::
+stopsetup
+
+startsetup
+com:dunnelijn:
+typ::
+stopsetup
+
+startsetup
+com:definieerkadertekst:
+typ:val/vars/:
+val:*naam::
+ivr:stelkadertekstenin::
+stopsetup
+
+startsetup
+com:definieeromlijnd:
+typ:val/vars/:
+val:*naam::
+ivr:stelkadertekstenin::
+stopsetup
+
+startsetup
+com:stelkadertekstenin:
+typ:vars/:
+var:korps:5pt,...,12pt,klein,groot::
+var:letter:normaal,vet,schuin,vetschuin,type,klein...,*commando::
+var:links:*commando::
+var:rechts:*commando::
+var:voor:*commando::
+var:na:*commando::
+var:binnen:*commando::
+var:marge:standaard,ja,nee::
+ivr:stelomlijndin::
+stopsetup
+
+startsetup
+com:start<<kadertekst>>:
+typ:val/vars/stp/:
+val:links,rechts,midden::
+ivr:stelkadertekstenin::
+stopsetup
+
+startsetup
+com:<<kadertekst>>:
+typ:vars/:
+ivr:stelkadertekstenin::
+stopsetup
+
+startsetup
+com:startachtergrond:
+typ:stp/:
+stopsetup
+
+startsetup
+com:achtergrond:
+typ::
+stopsetup
+
+startsetup
+com:stelachtergrondin:
+typ:vars/:
+var:linkeroffset:*maat::
+var:rechteroffset:*maat::
+var:bovenoffset:*maat::
+var:onderoffset:*maat::
+var:status:start,stop::
+ivr:stelomlijndin::
+stopsetup
+
+startsetup
+com:invullijnen:
+typ:vars/arg/arg/:
+ivr:stelinvullijnenin::
+stopsetup
+
+startsetup
+com:invultekst:
+typ:vars/arg/arg/par/:
+ivr:stelinvullijnenin::
+stopsetup
+
+startsetup
+com:stelinvullijnenin:
+typ:vars/:
+var:breedte:passend,ruim,*maat::
+var:afstand:*maat::
+var:voor:*commando::
+var:na:*commando::
+var:letter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:n:*getal::
+var:interlinie:klein,middel,groot::
+var:scheider:*tekst::
+stopsetup
+
+startsetup
+com:invulregel:
+typ:vars/nop/par/:
+ivr:stelinvulregelsin::
+stopsetup
+
+startsetup
+com:stelinvulregelsin:
+typ:vars/:
+var:breedte:*maat::
+var:marge:*maat::
+var:afstand:*maat::
+var:voor:*commando::
+var:na:*commando::
+stopsetup
+
+startsetup
+com:steltekstlijnenin:
+typ:vars/:
+var:plaats:links,inmarge::
+var:voor:*commando::
+var:na:*commando::
+var:tussen:*commando::
+var:breedte:*maat::
+var:afstand:*maat::
+var:korps:5pt,...,12pt,klein,groot::
+var:kleur:*naam::
+var:letter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:lijnkleur:*naam::
+stopsetup
+
+startsetup
+com:tekstlijn:
+typ:val/arg/:
+val:boven,onder::
+val:*tekst::
+stopsetup
+
+startsetup
+com:starttekstlijn:
+typ:val/arg/stp/:
+val:boven,onder::
+val:*tekst::
+stopsetup
+
+startsetup
+com:blokje:
+typ:vars/:
+ivr:stelblokjesin::
+stopsetup
+
+startsetup
+com:blokjes:
+typ:vars/:
+ivr:stelblokjesin::
+stopsetup
+
+startsetup
+com:stelblokjesin:
+typ:vars/:
+var:breedte:*maat,max::
+var:hoogte:*maat,max::
+var:diepte:*maat,max::
+var:variant:a,b::
+var:afstand:*maat::
+var:n:*getal::
+stopsetup
+
+startsetup
+com:definieeroverlay:
+typ:vals/val/:
+val:*naam::
+val:*commando::
+stopsetup
+
+startsetup
+com:gebruikmodule:
+typ:vals/:
+val:*naam::
+stopsetup
+
+startsetup
+com:reset:
+typ:vals/:
+val:*naam::
+stopsetup
+
+startsetup
+com:geentest:
+typ::
+stopsetup
+
+startsetup
+com:startdeelomgeving:
+typ:stp/:
+stopsetup
+
+startsetup
+com:stelsysteemin:
+typ:vars/:
+var:resolutie:*getal::
+var:file:*tekst::
+var:gebied:*tekst::
+var:willekeur:normaal,klein,middel,groot,*getal::
+stopsetup
+
+startsetup
+com:gebruikgebied:
+typ:vals/:
+val:*naam,reset:.:
+stopsetup
+
+startsetup
+com:laag:
+typ:arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:hoog:
+typ:arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:laho:
+typ:arg/arg/:
+val:*tekst::
+val:*tekst::
+stopsetup
+
+startsetup
+com:toonkader:
+typ:val/:
+val:tekst,marge,rand::
+stopsetup
+
+startsetup
+com:toonopbouw:
+typ::
+stopsetup
+
+startsetup
+com:regellinks:
+typ:arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:regelrechts:
+typ:arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:regelmidden:
+typ:arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:woordrechts:
+typ:arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:inmarge:
+typ:val/ref/arg/:
+val:+,-,laag::
+val:*tekst::
+stopsetup
+
+startsetup
+com:inanderemarge:
+typ:val/ref/arg/:
+val:+,-,laag::
+val:*tekst::
+stopsetup
+
+startsetup
+com:inlinker:
+typ:val/ref/arg/:
+val:+,-,laag::
+val:*tekst::
+stopsetup
+
+startsetup
+com:inrechter:
+typ:val/ref/arg/:
+val:+,-,laag::
+val:*tekst::
+stopsetup
+
+startsetup
+com:kolom:
+typ::
+stopsetup
+
+startsetup
+com:toonstruts:
+typ::
+stopsetup
+
+startsetup
+com:tooninstellingen:
+typ::
+stopsetup
+
+startsetup
+com:toonlayout:
+typ::
+stopsetup
+
+startsetup
+com:margetekst:
+typ:val/ref/arg/:
+val:+,-,laag::
+val:*tekst::
+stopsetup
+
+startsetup
+com:stelmargeblokkenin:
+typ:vars/:
+var:plaats:inmarge,links,midden,rechts::
+var:letter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:breedte:*maat::
+var:uitlijnen:links,midden,rechts,nee::
+var:boven:*commando::
+var:tussen:*commando::
+var:onder:*commando::
+var:links:*commando::
+var:rechts:*commando::
+var:voor:*commando::
+var:na:*commando::
+stopsetup
+
+startsetup
+com:startmargeblok:
+typ:stp/:
+stopsetup
+
+startsetup
+com:deel:
+typ:refs/arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:titel:
+typ:refs/arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:hoofdstuk:
+typ:refs/arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:paragraaf:
+typ:refs/arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:subparagraaf:
+typ:refs/arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:subsubparagraaf:
+typ:refs/arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:onderwerp:
+typ:refs/arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:subonderwerp:
+typ:refs/arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:subsubonderwerp:
+typ:refs/arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:bijlage:
+typ:refs/arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:in:
+typ:arg/arg/ref/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:op:
+typ:arg/arg/ref/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:over:
+typ:arg/ref/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:ergens:
+typ:arg/arg/ref/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:oppagina:
+typ:ref/:
+stopsetup
+
+startsetup
+com:ref:
+typ:val/ref/:
+val:t,p,r,s,e::
+val:*tekst::
+stopsetup
+
+startsetup
+com:tekstreferentie:
+typ:ref/arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:paginareferentie:
+typ:ref/:
+stopsetup
+
+startsetup
+com:referentie:
+typ:ref/arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:gebruikreferenties:
+typ:vals/:
+val:*file::
+stopsetup
+
+startsetup
+com:definieerreferentie:
+typ:val/refs/:
+val:*naam::
+stopsetup
+
+startsetup
+com:definieerreferentieformaat:
+typ:val/vars/:
+val:*naam::
+var:links:*tekst::
+var:rechts:*tekst::
+var:tekst:*tekst::
+var:label:*naam::
+stopsetup
+
+startsetup
+com:hl:
+typ:val/:
+val:*getal::
+stopsetup
+
+startsetup
+com:vl:
+typ:val/:
+val:*getal::
+stopsetup
+
+startsetup
+com:omlaag:
+typ:val/:
+val:*maat::
+stopsetup
+
+startsetup
+com:witruimte:
+typ::
+stopsetup
+
+startsetup
+com:geenwitruimte:
+typ::
+stopsetup
+
+startsetup
+com:crlf:
+typ::
+stopsetup
+
+startsetup
+com:spatie:
+typ::
+stopsetup
+
+startsetup
+com:vastespaties:
+typ::
+stopsetup
+
+startsetup
+com:geenspatie:
+typ::
+stopsetup
+
+startsetup
+com:opelkaar:
+typ::
+stopsetup
+
+startsetup
+com:herhaal:
+typ:val/:
+val:repeat/*tekst::
+stopsetup
+
+startsetup
+com:steldoordefinierenin:
+typ:vals/vars/:
+val:*naam::
+var:kopletter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:letter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:kleur:*naam::
+var:breedte:passend,ruim,*maat::
+var:afstand:*maat::
+var:monster:*tekst::
+var:tekst:*tekst::
+var:uitlijnen:links,midden,rechts::
+var:marge:standaard,ja,nee,*maat::
+var:plaats:links,rechts,boven,aanelkaar, inmarge,inlinker,inrechter,hangend::
+var:hang:passend,ruim,*getal::
+var:voor:*commando::
+var:tussen:*commando::
+var:na:*commando::
+var:springvolgendein:ja,nee::
+stopsetup
+
+startsetup
+com:steldoornummerenin:
+typ:vals/vars/:
+val:*naam::
+ivr:doordefinieren::
+var:plaats:links,rechts,boven,aanelkaar, inmarge,inlinker,inrechter,hangend::
+var:tekst:*tekst::
+var:niveaus:*getal::
+var:conversie:cijfers,letters,Letters,romeins,Romeins::
+var:wijze:pertekst,per*sectie::
+var:blokwijze:ja,nee::
+var:sectienummer:ja,nummer,nee::
+var:scheider:*tekst::
+var:afsluiter:*tekst::
+var:koppeling:*naam::
+var:koppelwijze:globaal,lokaal::
+var:nummer:nee,*naam::
+var:titeluitlijnen:nee,ja::
+var:start:*getal::
+stopsetup
+
+startsetup
+com:doornummeren:
+typ:vals/val/vars/:
+val:*naam::
+val:*naam::
+ivr:steldoornummerenin::
+stopsetup
+
+startsetup
+com:<<doornummering>>:
+typ:nop/par/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:start<<doornummering>>:
+typ:stp/:
+stopsetup
+
+startsetup
+com:doordefinieren:
+typ:val/vars/:
+val:*naam::
+ivr:steldoordefinierenin::
+stopsetup
+
+startsetup
+com:<<doordefinitie>>:
+typ:arg/nop/par/:
+val:*tekst::
+val:*tekst::
+stopsetup
+
+startsetup
+com:start<<doordefinitie>>:
+typ:arg/stp/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:steldoorspringenin:
+typ:vals/vars/:
+val:*naam::
+var:letter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:kopletter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:breedte:passend,*maat::
+var:tekst:*tekst::
+var:monster:*tekst::
+var:voor:*commando::
+var:na:*commando::
+var:afstand:*maat::
+var:scheider:*tekst::
+stopsetup
+
+startsetup
+com:doorspringen:
+typ:val/vars/:
+val:*naam::
+ivr:steldoorspringenin::
+stopsetup
+
+startsetup
+com:<<doorsprong>>:
+typ:nop/par/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:doorlabelen:
+typ:val/vars/:
+val:*naam::
+var:tekst:*tekst::
+var:plaats:inmarge,intekst::
+var:wijze:pertekst,per*sectie::
+var:blokwijze:ja,nee::
+var:kopletter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:kopkleur:*naam::
+var:voor:*commando::
+var:na:*commando::
+stopsetup
+
+startsetup
+com:<<doorlabel>>:
+typ:ref/:
+stopsetup
+
+startsetup
+com:stelkolommenin:
+typ:vars/:
+var:n:*getal::
+var:nboven:*getal::
+var:lijn:aan,uit::
+var:hoogte:*maat::
+var:tolerantie:zeerstreng,streng,soepel,zeersoepel,rek::
+var:afstand:*maat::
+var:balanceren:ja,nee::
+var:uitlijnen:ja,nee,tekst::
+var:blanko:vast,halveregel,regel,flexibel,groot,middel,klein::
+var:optie:achtergrond::
+var:richting:links,rechts::
+ivr:stelomlijndin::
+stopsetup
+
+startsetup
+com:startkolommen:
+typ:vars/stp/:
+ivr:stelkolommenin::
+stopsetup
+
+startsetup
+com:definieertekst:
+typ:val/val/val/val/val/:
+val:*naam::
+val:hoofd,voet::
+val:*tekst::
+val:*tekst::
+val:*tekst::
+stopsetup
+
+startsetup
+com:stelhoofdin:
+typ:val/vars/:
+val:tekst,marge,rand:tekst:
+var:status:normaal,stop,start,leeg,hoog,geen, geenmarkering,*naam::
+var:strut:ja,nee::
+var:letter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:linkerletter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:rechterletter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:linkerbreedte:*maat::
+var:rechterbreedte:*maat::
+var:voor:*commando::
+var:na:*commando::
+stopsetup
+
+startsetup
+com:stelvoetin:
+typ:val/vars/:
+ivl:stelhoofdin::
+ivr:stelhoofdin::
+stopsetup
+
+startsetup
+com:steltekstin:
+typ:val/vars/:
+ivl:stelhoofdin::
+ivr:stelhoofdin::
+stopsetup
+
+startsetup
+com:stelbovenin:
+typ:val/vars/:
+ivl:stelhoofdin::
+ivr:stelhoofdin::
+stopsetup
+
+startsetup
+com:stelonderin:
+typ:val/vars/:
+ivl:stelhoofdin::
+ivr:stelhoofdin::
+stopsetup
+
+startsetup
+com:geenhoofdenvoetregels:
+typ::
+stopsetup
+
+startsetup
+com:geenbovenenonderregels:
+typ::
+stopsetup
+
+startsetup
+com:stelhoofdtekstenin:
+typ:val/val/val/:
+val:tekst,marge,rand:tekst:
+val:*tekst,*sectie,datum,*markering,paginanummer::
+val:*tekst,*sectie,datum,*markering,paginanummer::
+stopsetup
+
+startsetup
+com:stelvoettekstenin:
+typ:val/val/val/:
+val:tekst,marge,rand:tekst:
+val:*tekst,*sectie,datum,*markering,paginanummer::
+val:*tekst,*sectie,datum,*markering,paginanummer::
+stopsetup
+
+startsetup
+com:stelteksttekstenin:
+typ:val/val/val/:
+val:tekst,marge,rand:tekst:
+val:*tekst,*sectie,datum,*markering,paginanummer::
+val:*tekst,*sectie,datum,*markering,paginanummer::
+stopsetup
+
+startsetup
+com:stelboventekstenin:
+typ:val/val/val/:
+val:tekst,marge,rand:tekst:
+val:*tekst,*sectie,datum,*markering,paginanummer::
+val:*tekst,*sectie,datum,*markering,paginanummer::
+stopsetup
+
+startsetup
+com:stelondertekstenin:
+typ:val/val/val/:
+val:tekst,marge,rand:tekst:
+val:*tekst,*sectie,datum,*markering,paginanummer::
+val:*tekst,*sectie,datum,*markering,paginanummer::
+stopsetup
+
+startsetup
+com:definieermarkering:
+typ:val/val/:
+val:*naam::
+val:*naam::
+stopsetup
+
+startsetup
+com:koppelmarkering:
+typ:val/val/:
+val:*naam::
+val:*naam::
+stopsetup
+
+startsetup
+com:ontkoppelmarkering:
+typ:val/:
+val:*naam::
+stopsetup
+
+startsetup
+com:resetmarkering:
+typ:val/:
+val:*naam::
+stopsetup
+
+startsetup
+com:stelmarkeringin:
+typ:val/var/:
+val:*naam::
+var:status:start,stop::
+var:scheider:*commando::
+var:expansie:ja,nee::
+stopsetup
+
+startsetup
+com:markeer:
+typ:val/arg/:
+val:*naam::
+val:*tekst::
+stopsetup
+
+startsetup
+com:haalmarkering:
+typ:val/val/:
+val:*naam::
+val:eerste,laatste,vorige,beide,alles::
+stopsetup
+
+startsetup
+com:geenmarkering:
+typ:arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:stellayoutin:
+typ:vars/:
+var:breedte:*maat,passend,midden::
+var:hoogte:*maat,passend,midden::
+var:rugwit:*maat::
+var:kopwit:*maat::
+var:marge:*maat::
+var:linkermarge:*maat::
+var:rechtermarge:*maat::
+var:hoofd:*maat::
+var:voet:*maat::
+var:boven:*maat::
+var:onder:*maat::
+var:linkerrand:*maat::
+var:rechterrand:*maat::
+var:hoofdafstand:*maat::
+var:voetafstand:*maat::
+var:bovenafstand:*maat::
+var:onderafstand:*maat::
+var:linkermargeafstand:*maat::
+var:rechtermargeafstand:*maat::
+var:linkerrandafstand:*maat::
+var:rechterrandafstand:*maat::
+var:rugoffset:*maat::
+var:kopoffset:*maat::
+var:letter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:markering:aan,uit,kleur::
+var:plaats:links,midden,rechts,onder,boven, enkelzijdig,dubbelzijdig::
+var:schaal:*maat::
+var:nx:*getal::
+var:ny:*getal::
+var:dx:*maat::
+var:dy:*maat::
+var:regels:*getal::
+var:grid:ja,nee::
+var:bodemwit:*getal::
+var:snijwit:*getal::
+stopsetup
+
+startsetup
+com:paslayoutaan:
+typ:vals/vars/:
+val:*getal::
+var:hoogte:*maat,max::
+var:regels:*getal::
+stopsetup
+
+startsetup
+com:toongrid:
+typ::
+stopsetup
+
+startsetup
+com:plaatsopgrid:
+typ:val/arg/:
+ivl:verplaatsopgrid::
+stopsetup
+
+startsetup
+com:verplaatsopgrid:
+typ:val/:
+val:boven,beide,onder:beide:
+stopsetup
+
+startsetup
+com:startproject:
+typ:fil/stp/:
+val:*file::
+stopsetup
+
+startsetup
+com:startomgeving:
+typ:fil/stp/:
+val:*file::
+stopsetup
+
+startsetup
+com:startprodukt:
+typ:fil/stp/:
+val:*file::
+stopsetup
+
+startsetup
+com:startonderdeel:
+typ:fil/stp/:
+val:*file::
+stopsetup
+
+startsetup
+com:geenfilesmeer:
+typ::
+stopsetup
+
+startsetup
+com:stelinterliniein:
+typ:val/vars/:
+val:reset,klein,middel,groot,aan,uit:klein:
+var:hoogte:*getal::
+var:diepte:*getal::
+var:regel:*maat::
+var:boven:*getal::
+var:onder:*getal::
+stopsetup
+
+startsetup
+com:stelnummeringin:
+typ:vars/:
+var:variant:enkelzijdig,dubbelzijdig::
+var:plaats:hoofd,voet, links,rechts,midden, marge,kantlijn,inlinker,inrechter::
+var:conversie:cijfers,letters,Letters,romeins,Romeins::
+var:letter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:links:*tekst::
+var:rechts:*tekst::
+var:wijze:pertekst,per*sectie::
+var:tekst:*tekst::
+var:nummerscheider:*tekst::
+var:tekstscheider:*tekst::
+var:*sectie*getal:ja,nee::
+var:scheider:*tekst::
+var:status:start,stop::
+var:commando:*\commando#1::
+stopsetup
+
+startsetup
+com:stelsmallerin:
+typ:vars/:
+var:links:*maat::
+var:rechts:*maat::
+var:midden:*maat::
+stopsetup
+
+startsetup
+com:definieer:
+typ:val/cmd/arg/:
+val:*getal:0:
+stopsetup
+
+startsetup
+com:gebruikcommandos:
+typ:arg/:
+stopsetup
+
+startsetup
+com:definieerstartstop:
+typ:val/vars/:
+var:voor:*commando::
+var:na:*commando::
+var:letter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:commandos:*commando::
+stopsetup
+
+startsetup
+com:stelkoppenin:
+typ:vars/:
+var:sectienummer:ja,nummer,nee::
+var:variant:normaal,marge,midden,tekst,alinea::
+var:scheider:*tekst::
+var:commando:*\commando#1#2::
+stopsetup
+
+startsetup
+com:stelblokkopjesin:
+typ:vars/:
+var:plaats:boven,onder,geen,hoog,laag,midden::
+var:breedte:passend,max,*maat::
+var:kopletter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:letter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:nummer:ja,nee::
+var:tussen:*commando::
+var:uitlijnen:links,midden,rechts,nee::
+var:conversie:cijfers,letters,Letters,romeins,Romeins::
+var:wijze:pertekst,per*sectie::
+stopsetup
+
+startsetup
+com:stelblokkopjein:
+typ:val/vars/:
+val:*naam::
+ivr:stelblokkopjesin::
+stopsetup
+
+startsetup
+com:stelplaatsblokkenin:
+typ:vars/:
+var:plaats:links,rechts,midden::
+var:breedte:passend,*maat::
+var:voor:*commando::
+var:na:*commando::
+var:marge:*maat::
+var:voorwit:repeat/klein,repeat/middel,repeat/groot,geen::
+var:nawit:repeat/klein,repeat/middel,repeat/groot,geen::
+var:zijvoorwit:repeat/klein,repeat/middel,repeat/groot,geen::
+var:zijnawit:repeat/klein,repeat/middel,repeat/groot,geen::
+var:springvolgendein:ja,nee::
+var:nboven:*getal::
+var:nonder:*getal::
+var:nregels:*getal::
+ivr:stelomlijndin::
+stopsetup
+
+startsetup
+com:stelplaatsblokkensplitsenin:
+typ:vars/:
+var:conversie:cijfers,letters,Letters,romeins,Romeins::
+var:regels:*getal::
+stopsetup
+
+startsetup
+com:splitsplaatsblok:
+typ:vars/arg/arg/:
+ivr:stelplaatsblokkensplitsenin::
+stopsetup
+
+startsetup
+com:stelnaastplaatsenin:
+typ:var/:
+var:status:start,stop::
+stopsetup
+
+startsetup
+com:startnaast:
+typ:stp/:
+stopsetup
+
+startsetup
+com:stelkoppeltekenin:
+typ:var/:
+var:teken:--,---,-,\normalpenalty 10000\ ,),(,=,/::
+stopsetup
+
+startsetup
+com:stelpositionerenin:
+typ:vars/:
+var:status:start,overlay::
+var:eenheid:cm,pt,em,mm,ex,sp,in::
+var:factor:*getal::
+var:schaal:*getal::
+var:offset:ja,nee::
+var:xstap:absoluut,relatief::
+var:ystap:absoluut,relatief::
+stopsetup
+
+startsetup
+com:startpositioneren:
+typ:stp/:
+stopsetup
+
+startsetup
+com:rooster:
+typ:vars/:
+var:x:*getal::
+var:y:*getal::
+var:nx:*getal::
+var:ny:*getal::
+var:dx:*getal::
+var:dy:*getal::
+var:xstap:*getal::
+var:ystap:*getal::
+var:offset:ja,nee::
+var:factor:*getal::
+var:schaal:*getal::
+var:eenheid:cm,pt,em,mm,ex,sp,in::
+var:plaats:links,midden::
+stopsetup
+
+startsetup
+com:pagina:
+typ:vals/:
+val:ja,opmaak,nee,voorkeur,grotevoorkeur, links,rechts,blokkeer,laatste,viertal, even,oneven,blanko,leeg,reset:ja:
+stopsetup
+
+startsetup
+com:stelrefererenin:
+typ:var/:
+var:status:start,stop::
+var:*sectie*getal:ja,nee::
+var:prefix:+,-,*tekst::
+var:interactie:label,tekst,alles,symbool::
+var:breedte:*maat::
+var:links:*commando::
+var:rechts:*commando::
+var:converteerfile:ja,nee,klein,groot::
+var:scheider:*tekst::
+var:autofile:ja,nee,pagina::
+stopsetup
+
+startsetup
+com:stelurlin:
+typ:vars/:
+var:letter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:urlvariant:geen,beide,voor,na::
+var:urlspatie:ja,nee::
+stopsetup
+
+startsetup
+com:schrijfnaarreferentielijst:
+typ:val/arg/arg/:
+val:*naam::
+stopsetup
+
+startsetup
+com:plaatsreferentielijst:
+typ:vals/:
+val:*naam::
+stopsetup
+
+startsetup
+com:definieerreferentielijst:
+typ:val/vars/:
+val:*naam::
+ivr:stelreferentielijstin::
+stopsetup
+
+startsetup
+com:stelreferentielijstin:
+typ:vals/vars/:
+val:*naam::
+var:status:start,stop::
+var:criterium:*sectie,lokaal,vorige,alles::
+var:commando:*commando::
+var:voor:*commando::
+var:na:*commando::
+stopsetup
+
+startsetup
+com:schrijfnaarlijst:
+typ:val/arg/arg/:
+val:*sectie,*naam::
+stopsetup
+
+startsetup
+com:schrijftussenlijst:
+typ:val/arg/:
+val:*sectie,*naam::
+stopsetup
+
+startsetup
+com:geenlijst:
+typ:arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:plaatslijst:
+typ:vals/vars/:
+val:*naam::
+ivr:stellijstin::
+stopsetup
+
+startsetup
+com:bepaallijstkenmerken:
+typ:vals/vars/:
+val:*naam::
+ivr:stellijstin::
+stopsetup
+
+startsetup
+com:definieerlijst:
+typ:val/val/vars/:
+val:*naam::
+val:*naam::
+ivr:stellijstin::
+stopsetup
+
+startsetup
+com:stellijstin:
+typ:vals/vars/:
+val:*naam::
+var:status:start,stop::
+var:variant:a,b,c,...,geen,commando::
+var:koppeling:aan,uit::
+var:criterium:*sectie,lokaal,vorige,alles::
+var:paginaovergangen:*lijst::
+var:letter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:nummerletter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:tekstletter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:paginaletter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:kleur:*naam::
+var:commando:*\commando#1#2#3::
+var:nummercommando:*\commando#1::
+var:tekstcommando:*\commando#1::
+var:paginacommando:*\commando#1::
+var:interactie:sectienummer,tekst,paginanummer,alles::
+var:voor:*commando::
+var:na:*commando::
+var:tussen:*commando::
+var:links:*tekst::
+var:rechts:*tekst::
+var:label:ja,nee::
+var:prefix:ja,nee::
+var:paginanummer:ja,nee::
+var:*sectie*getal:ja,nee::
+var:titeluitlijnen:ja,nee::
+var:marge:*maat::
+var:breedte:*maat,passend::
+var:hoogte:*maat,passend,ruim::
+var:diepte:*maat,passend,ruim::
+var:afstand:*maat::
+var:scheider:*tekst::
+var:symbool:geen,1,2,3,...::
+var:expansie:ja,nee,commando::
+var:maxbreedte:*maat::
+ivr:omlijnd::
+stopsetup
+
+startsetup
+com:definieersamengesteldelijst:
+typ:val/vals/vars/:
+val:*naam::
+val:*lijst::
+ivr:stelsamengesteldelijstin::
+stopsetup
+
+startsetup
+com:stelsamengesteldelijstin:
+typ:val/vars/:
+val:*naam::
+var:niveau:1,2,3,4,*sectie,huidige::
+ivr:stellijstin::
+stopsetup
+
+startsetup
+com:plaats<<samengesteldelijst>>:
+typ:val/vars/:
+val:*naam::
+ivr:stelsamengesteldelijstin::
+stopsetup
+
+startsetup
+com:volledige<<samengesteldelijst>>:
+typ:val/vars/:
+val:*naam::
+ivr:stelsamengesteldelijstin::
+stopsetup
+
+startsetup
+com:stelnummerenin:
+typ:vars/:
+var:wijze:pertekst,per*sectie::
+var:status:start,stop::
+stopsetup
+
+startsetup
+com:stelformulesin:
+typ:vars/:
+var:plaats:links,rechts::
+var:links:*tekst::
+var:rechts:*tekst::
+stopsetup
+
+startsetup
+com:publicatie:
+typ:ref/:
+stopsetup
+
+startsetup
+com:stelpublicatiesin:
+typ:vars/:
+var:variant:apa,normaal::
+ivr:steldoornummerenin::
+stopsetup
+
+startsetup
+com:stelregelsin:
+typ:vars/:
+var:voor:*commando::
+var:na:*commando::
+var:tussen:*commando::
+var:inspringen:ja,nee,even,oneven::
+stopsetup
+
+startsetup
+com:startregels:
+typ:stp/:
+stopsetup
+
+startsetup
+com:stelparagraafnummerenin:
+typ:vars/:
+var:status:start,stop,reset,regel::
+var:letter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:afstand:*maat::
+stopsetup
+
+startsetup
+com:stelregelnummerenin:
+typ:vars/:
+var:conversie:cijfers,letters,Letters,romeins,Romeins, tekst::
+var:start:*getal::
+var:stap:*getal::
+var:breedte:*maat::
+var:plaats:intekst,inmarge::
+var:letter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:prefix:*tekst::
+var:refereren:aan,uit::
+stopsetup
+
+startsetup
+com:startregelnummeren:
+typ:val/stp/:
+val:verder::
+stopsetup
+
+startsetup
+com:startregel:
+typ:ref/stp/:
+stopsetup
+
+startsetup
+com:eenregel:
+typ:ref/:
+stopsetup
+
+startsetup
+com:inregel:
+typ:ref/:
+stopsetup
+
+startsetup
+com:stelinmargein:
+typ:val/vars/:
+val:links,rechts,*getal::
+var:plaats:links,rechts,beide::
+var:letter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:voor:*commando::
+var:na:*commando::
+var:uitlijnen:binnen,buiten,links,rechts,midden,normaal,nee,ja::
+var:regel:*getal::
+var:afstand:*maat::
+var:scheider:*tekst::
+ivr:stelomlijndin::
+stopsetup
+
+startsetup
+com:stelpaginanummerin:
+typ:vars/:
+var:nummer:*getal::
+var:status:start,stop,handhaaf::
+stopsetup
+
+startsetup
+com:stelsubpaginanummerin:
+typ:vars/:
+var:wijze:pertekst,per*sectie::
+var:status:start,stop,geen::
+stopsetup
+
+startsetup
+com:stelblankoin:
+typ:val/:
+val:normaal,standaard,regel,*maat, groot,middel,klein, vast,flexibel:normaal:
+stopsetup
+
+startsetup
+com:definieerblanko:
+typ:val/val/:
+val:*naam::
+ivl:stelblankoin::
+stopsetup
+
+startsetup
+com:definieerpapierformaat:
+typ:val/vars/:
+val:*naam::
+var:breedte:*maat::
+var:hoogte:*maat::
+var:offset:*maat::
+var:schaal:*getal::
+stopsetup
+
+startsetup
+com:stelpapierformaatin:
+typ:vals/vals/:
+val:A3,A4,A5,A6,letter,...,CD,*naam, liggend,gespiegeld,geroteerd,90,180,270:A4:
+val:A3,A4,A5,A6,letter,...,*naam, liggend,gespiegeld,geroteerd,negatief,90,180,270:A4:
+stopsetup
+
+startsetup
+com:stelarrangerenin:
+typ:vals/:
+val:blokkeer, 2*16,2*8,2*4,2*2,2UP,2DOWN, gespiegeld,geroteerd,dubbelzijdig,negatief,90,180,270::
+stopsetup
+
+startsetup
+com:toonprint:
+typ:vals/vals/vars/:
+ivr:stelpapierformaatin::
+ivr:stelpapierformaatin::
+ivr:stellayoutin::
+stopsetup
+
+startsetup
+com:definieerbeeldmerk:
+typ:val/val/val/vars/:
+val:*naam::
+val:boven,hoofd,voet,onder::
+val:geen,pagina, linkerrand,linkermarge, links,midden,rechts, rechtermarge,rechterrand::
+var:commando:*commando,*tekst::
+var:status:start,stop::
+stopsetup
+
+startsetup
+com:plaatsbeeldmerken:
+typ:vals/:
+val:*naam::
+stopsetup
+
+startsetup
+com:stelwitruimtein:
+typ:val/:
+val:geen,klein,middel,groot,regel,vast,herstel,*maat:geen:
+stopsetup
+
+startsetup
+com:stelinspringenin:
+typ:vals/:
+val:geen,klein,middel,groot,volgende,eerste,*maat:geen:
+stopsetup
+
+startsetup
+com:definieersectieblok:
+typ:val/vars/:
+val:*naam::
+ivr:stelsectieblokin::
+stopsetup
+
+startsetup
+com:stelsectieblokin:
+typ:val/vars/:
+val:*naam::
+var:nummer:ja,nee::
+var:pagina:ja,rechts::
+var:voor:*commando::
+var:na:*commando::
+stopsetup
+
+startsetup
+com:definieersectie:
+typ:val/:
+val:*naam::
+stopsetup
+
+startsetup
+com:stelsectiein:
+typ:val/val/vars/:
+val:*naam::
+val:*naam:inleiding,hoofdtekst,bijlage,uitleiding:
+var:conversie:cijfers,letters,Letters,romeins,Romeins::
+var:vorigenummer:ja,nee::
+stopsetup
+
+startsetup
+com:stelkopin:
+typ:val/vars/:
+val:*sectie::
+var:letter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:tekstletter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:nummerletter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:nummer:ja,nee::
+var:eigennummer:ja,nee::
+var:pagina:links,rechts,ja::
+var:doorgaan:ja,nee::
+var:hoofd:geen,leeg,hoog,geenmarkering::
+var:voor:*commando::
+var:tussen:*commando::
+var:na:*commando::
+var:variant:normaal,inmarge,midden,tekst::
+var:commando:*\commando#1#2::
+var:nummercommando:*\commando#1::
+var:tekstcommando:*\commando#1::
+var:prefix:+,-,*tekst::
+var:plaatskop:ja,nee::
+var:verhoognummer:ja,nee,*file::
+var:uitlijnen:links,rechts,normaal,ruim::
+var:tolerantie:zeerstreng,streng,soepel,zeersoepel,rek::
+var:springvolgendein:ja,nee::
+var:file:*naam::
+var:expansie:ja,commando,nee::
+stopsetup
+
+startsetup
+com:stelkopnummerin:
+typ:val/val/:
+val:*sectie::
+val:*getal,+*getal,-*getal::
+stopsetup
+
+startsetup
+com:kopnummer:
+typ:val/:
+val:*sectie::
+stopsetup
+
+startsetup
+com:bepaalkopnummer:
+typ:val/:
+val:*sectie::
+stopsetup
+
+startsetup
+com:huidigekopnummer:
+typ::
+stopsetup
+
+startsetup
+com:volgende<<sectie>>:
+typ::
+stopsetup
+
+startsetup
+com:definieerkop:
+typ:val/val/:
+val:*naam::
+val:*sectie::
+stopsetup
+
+startsetup
+com:stelopsommingin:
+typ:val/vals/vars/:
+val:*getal,elk::
+val:standaard,repeat/ruim,repeat/aanelkaar,opelkaar, vanelkaar,afsluiter,aansluitend,opmarge,inmarge, autointro,los,paragraaf,intekst:standaard:
+var:marge:nee,standaard,*maat::
+var:breedte:*maat::
+var:afstand:*maat::
+var:factor:*getal::
+var:items:*getal::
+var:voor:*commando::
+var:tussen:*commando::
+var:na:*commando::
+var:links:*tekst::
+var:rechts:*tekst::
+var:kopvoor:*commando::
+var:kopna:*commando::
+var:kopletter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:marletter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:symletter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:afsluiter:*tekst::
+var:n:*getal::
+var:symbool:*getal::
+var:uitlijnen:links,rechts,normaal::
+var:springvolgendein:ja,nee::
+stopsetup
+
+startsetup
+com:startopsomming:
+typ:vals/vars/stp/:
+val:a,A,KA,n,N,m,r,R,KR,*getal,verder, standaard,repeat/ruim,repeat/aanelkaar,opelkaar, afsluiter,aansluitend,opmarge,inmarge,intro,kolommen:standaard:
+ivr:stelopsommingin::
+stopsetup
+
+startsetup
+com:som:
+typ:refs/:
+stopsetup
+
+startsetup
+com:but:
+typ:ref/:
+stopsetup
+
+startsetup
+com:its:
+typ:refs/:
+stopsetup
+
+startsetup
+com:ran:
+typ:arg/:
+stopsetup
+
+startsetup
+com:kop:
+typ:refs/:
+stopsetup
+
+startsetup
+com:mar:
+typ:refs/arg/:
+stopsetup
+
+startsetup
+com:sub:
+typ:refs/:
+stopsetup
+
+startsetup
+com:sym:
+typ:arg/:
+stopsetup
+
+startsetup
+com:nop:
+typ::
+stopsetup
+
+startsetup
+com:definieerregister:
+typ:val/val/:
+val:*naam enkelvoud::
+val:*naam meervoud::
+stopsetup
+
+startsetup
+com:stelregisterin:
+typ:val/val/vars/:
+val:*naam enkelvoud::
+val:*naam::
+var:n:*getal::
+var:balanceren:ja,nee::
+var:uitlijnen:ja,nee::
+var:letter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:paginaletter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:tekstletter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:aanduiding:ja,nee::
+var:koppeling:ja,nee::
+var:*sectie*getal:ja,nee::
+var:criterium:*sectie,lokaal,alles::
+var:afstand:*maat::
+var:symbool:1,2,...,n,a,...,geen::
+var:interactie:paginanummer,tekst::
+var:expansie:ja,commando,nee::
+var:refereren:aan,uit::
+var:commando:*\commando#1::
+var:plaats:links,midden,rechts::
+var:maxbreedte:*maat::
+var:onbekendeverwijzing:leeg,geen::
+stopsetup
+
+startsetup
+com:<<register>>:
+typ:val/idxs/:
+val:*tekst::
+val:*tekst::
+stopsetup
+
+startsetup
+com:start<<register>>:
+typ:val/idxs/:
+val:*tekst::
+val:*tekst::
+stopsetup
+
+startsetup
+com:schrijfnaarregister:
+typ:val/val/idxs/:
+val:*naam enkelvoud::
+val:*tekst::
+val:*tekst::
+stopsetup
+
+startsetup
+com:gekoppelde<<register>>:
+typ:val/idx/:
+val:*tekst::
+val:*tekst::
+stopsetup
+
+startsetup
+com:koppelregister:
+typ:val/:
+val:*naam::
+stopsetup
+
+startsetup
+com:zie<<register>>:
+typ:val/arg/idxs/:
+val:*tekst::
+val:*tekst::
+val:*tekst::
+stopsetup
+
+startsetup
+com:volledige<<register>>:
+typ:vars/:
+ivr:stelregisterin::
+stopsetup
+
+startsetup
+com:plaats<<register>>:
+typ:vars/:
+ivr:stelregisterin::
+stopsetup
+
+startsetup
+com:definieersynoniemen:
+typ:val/val/val/val/:
+val:*naam enkelvoud::
+val:*naam meervoud::
+val:*commando::
+val:*commando::
+stopsetup
+
+startsetup
+com:stelsynoniemenin:
+typ:val/vars/:
+val:*naam::
+var:tekstletter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:synoniemletter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:plaats:links,rechts,boven,aanelkaar, inmarge,inlinker,inrechter::
+var:breedte:*maat::
+var:status:start,stop::
+var:criterium:alles,gebruikt::
+var:conversie:ja,nee::
+var:expansie:ja,commando,nee::
+var:commando:*\commando#1#2#3::
+stopsetup
+
+startsetup
+com:<<synoniem>>:
+typ:val/arg/arg/:
+val:*tekst::
+val:*tekst::
+val:*tekst::
+stopsetup
+
+startsetup
+com:volledigelijstmet<<synoniemen>>:
+typ::
+stopsetup
+
+startsetup
+com:plaatslijstmet<<synoniemen>>:
+typ::
+stopsetup
+
+startsetup
+com:laad<<synoniemen>>:
+typ::
+stopsetup
+
+startsetup
+com:definieersorteren:
+typ:val/val/val/:
+val:*naam enkelvoud::
+val:*naam meervoud::
+val:*commando::
+stopsetup
+
+startsetup
+com:stelsorterenin:
+typ:val/vars/:
+val:*naam::
+var:voor:*commando::
+var:na:*commando::
+var:commando:*\commando#1::
+var:status:start,stop::
+var:criterium:alles,gebruikt::
+var:letter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:expansie:ja,commando,nee::
+stopsetup
+
+startsetup
+com:<<sorteer>>:
+typ:val/arg/:
+val:*tekst::
+val:*tekst::
+stopsetup
+
+startsetup
+com:volledigelijstmet<<sorteren>>:
+typ::
+stopsetup
+
+startsetup
+com:plaatslijstmet<<sorteren>>:
+typ::
+stopsetup
+
+startsetup
+com:laad<<sorteren>>:
+typ::
+stopsetup
+
+startsetup
+com:definieeropmaak:
+typ:val/vars/:
+val:*naam::
+ivr:stelopmaakin::
+stopsetup
+
+startsetup
+com:startopmaak:
+typ:val/vars/stp/:
+val:*naam::
+ivr:stelopmaakin::
+stopsetup
+
+startsetup
+com:stelopmaakin:
+typ:val/vars/:
+val:*naam::
+var:breedte:*maat::
+var:hoogte:*maat::
+var:voffset:*maat::
+var:hoffset:*maat::
+var:pagina:links,ja,rechts::
+var:commandos:*commando::
+var:dubbelzijdig:ja,nee,leeg::
+var:hoofdstatus:normaal,stop,start,leeg,geen,geenmarkering::
+var:voetstatus:normaal,stop,start,leeg,geen,geenmarkering::
+var:tekststatus:normaal,stop,start,leeg,geen,geenmarkering::
+var:bovenstatus:stop,start::
+var:onderstatus:stop,start::
+stopsetup
+
+startsetup
+com:start<<naam>>opmaak:
+typ:stp/:
+stopsetup
+
+startsetup
+com:versie:
+typ:val/:
+val:definitief,concept,voorlopig:definitief:
+stopsetup
+
+startsetup
+com:huidigedatum:
+typ:vals/:
+val:dag,maand,MAAND,weekdag,WEEKDAG,jaar, dd,mm,jj,yy,d,m,j,y,kenmerk:dag,maand,jaar:
+stopsetup
+
+startsetup
+com:datum:
+typ:vars/vals/:
+var:d:*getal::
+var:m:*getal::
+var:y:*getal::
+ivl:huidigedatum::
+stopsetup
+
+startsetup
+com:kenmerkdatum:
+typ::
+stopsetup
+
+startsetup
+com:inspringen:
+typ:vals/:
+val:nooit,niet,nee,ja,altijd,eerste,volgende:nooit:
+stopsetup
+
+startsetup
+com:nietinspringen:
+typ::
+stopsetup
+
+startsetup
+com:blanko:
+typ:vals/:
+val:repeat/klein,repeat/middel,repeat/groot, geenwit,terug,wit,blokkeer,forceer,reset, regel,halveregel,formule,vast,flexibel:groot:
+stopsetup
+
+startsetup
+com:startopelkaar:
+typ:val/stp/:
+val:blanko::
+stopsetup
+
+startsetup
+com:startvanelkaar:
+typ:stp/:
+stopsetup
+
+startsetup
+com:startregelcorrectie:
+typ:stp/:
+stopsetup
+
+startsetup
+com:corrigeerwitruimte:
+typ:arg/:
+stopsetup
+
+startsetup
+com:startuitstellen:
+typ:stp/:
+stopsetup
+
+startsetup
+com:startlokaal:
+typ:stp/:
+stopsetup
+
+startsetup
+com:startsmaller:
+typ:vals/stp/:
+val:repeat/links,repeat/midden,repeat/rechts:midden:
+stopsetup
+
+startsetup
+com:startverbergen:
+typ:stp/:
+stopsetup
+
+startsetup
+com:steluitlijnenin:
+typ:val/:
+val:breedte,links,rechts,midden,binnen,buiten, breed,ruim,hoogte,onder,regel,reset::
+stopsetup
+
+startsetup
+com:startuitlijnen:
+typ:stp/val/:
+ivr:steluitlijnenin::
+stopsetup
+
+startsetup
+com:stelspatieringin:
+typ:val/:
+val:ruim,opelkaar::
+stopsetup
+
+startsetup
+com:steltolerantiein:
+typ:vals/:
+val:horizontaal,vertikaal, rek,zeerstreng,streng,soepel,zeersoepel:zeerstreng:
+stopsetup
+
+startsetup
+com:soortpagina:
+typ:val/:
+val:*naam::
+stopsetup
+
+startsetup
+com:verwerkpagina:
+typ:vals/val/:
+val:*naam::
+val:ja,nee:ja:
+stopsetup
+
+startsetup
+com:koppelpagina:
+typ:vals/vars/:
+val:*naam::
+var:optie:dubbelzijdig::
+var:voor:*commando::
+var:na:*commando::
+stopsetup
+
+startsetup
+com:positioneer:
+typ:poss/arg/:
+val:*getal::
+val:*getal::
+val:*tekst::
+stopsetup
+
+startsetup
+com:stelrastersin:
+typ:vars/:
+var:methode:punt,lijn,extern::
+var:resolutie:*getal::
+var:factor:*getal::
+var:raster:*getal::
+stopsetup
+
+startsetup
+com:stelachtergrondenin:
+typ:val/vals/vars/:
+val:boven,hoofd,tekst,voet,onder, pagina,papier,linkerpagina,rechterpagina::
+val:linkerrand,linkermarge,tekst,rechtermarge,rechterrand::
+var:status:start,stop,herhaal::
+ivr:stelomlijndin::
+stopsetup
+
+startsetup
+com:startbuffer:
+typ:val/stp/:
+val:*naam::
+stopsetup
+
+startsetup
+com:haalbuffer:
+typ:val/:
+val:*naam::
+stopsetup
+
+startsetup
+com:typebuffer:
+typ:val/:
+val:*naam::
+stopsetup
+
+startsetup
+com:definieerbuffer:
+typ:val/:
+val:*naam::
+stopsetup
+
+startsetup
+com:stelbufferin:
+typ:val/vars/:
+val:*naam::
+var:alinea:*getal::
+var:voor:*commando::
+var:na:*commando::
+stopsetup
+
+startsetup
+com:definieerblok:
+typ:val/:
+val:*naam::
+stopsetup
+
+startsetup
+com:geenblokkenmeer:
+typ::
+stopsetup
+
+startsetup
+com:verbergblokken:
+typ:vals/vals/:
+val:*naam::
+val:*naam::
+stopsetup
+
+startsetup
+com:handhaafblokken:
+typ:vals/vals/:
+val:*naam::
+val:alles,*naam::
+stopsetup
+
+startsetup
+com:gebruikblokken:
+typ:vals/vals/:
+val:*naam::
+val:*naam::
+stopsetup
+
+startsetup
+com:verwerkblokken:
+typ:vals/vals/:
+val:*naam::
+val:*naam::
+stopsetup
+
+startsetup
+com:selecteerblokken:
+typ:vals/vals/var/:
+val:*naam::
+val:*naam::
+var:criterium:alles,*sectie::
+stopsetup
+
+startsetup
+com:stelblokin:
+typ:vals/vars/:
+val:*naam::
+var:voor:*commando::
+var:na:*commando::
+var:binnen:*commando::
+var:letter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:file:*file::
+stopsetup
+
+startsetup
+com:startformule:
+typ:stp/:
+val:*formule::
+stopsetup
+
+startsetup
+com:wiskunde:
+typ:arg/:
+val:*formule::
+stopsetup
+
+startsetup
+com:plaatsformule:
+typ:refs/arg/dis/:
+val:*tekst::
+val:*formule::
+stopsetup
+
+startsetup
+com:plaatssubformule:
+typ:refs/arg/dis/:
+val:*tekst::
+val:*formule::
+stopsetup
+
+startsetup
+com:plaats<<blok>>:
+typ:val/refs/arg/arg/:
+val:links,rechts,hier,boven,onder, inlinker,inrechter,inmarge,marge, pagina,naast,altijd,forceer,lang:hier:
+val:*tekst::
+val:*tekst::
+stopsetup
+
+startsetup
+com:reserveer<<blok>>:
+typ:vars/val/refs/arg/:
+var:hoogte:*maat::
+var:breedte:*maat::
+var:kader:aan,uit::
+val:links,rechts,hier,boven,onder, inlinker,inrechter,inmarge,marge, pagina,naast,altijd,forceer:hier:
+val:*tekst::
+stopsetup
+
+startsetup
+com:definieerplaatsblok:
+typ:val/val/:
+val:*naam enkelvoud::
+val:*naam meervoud::
+stopsetup
+
+startsetup
+com:stelplaatsblokin:
+typ:val/vars/:
+val:*naam::
+var:hoogte:*maat::
+var:breedte:*maat::
+var:paginaovergangen:*lijst::
+ivr:stelomlijndin::
+stopsetup
+
+startsetup
+com:start<<blok>>tekst:
+typ:val/ref/arg/arg/stp/:
+val:links,rechts,hoog,midden,laag,offset,lang::
+val:*tekst::
+val:*tekst::
+val:*tekst::
+stopsetup
+
+startsetup
+com:plaatslijstmet<<blokken>>:
+typ::
+stopsetup
+
+startsetup
+com:volledigelijstmet<<blokken>>:
+typ::
+stopsetup
+
+startsetup
+com:kenmerk:
+typ:vars/:
+var:bet:*tekst::
+var:ken:*tekst::
+var:dat:*tekst::
+var:van:*tekst::
+var:aan:*tekst::
+var:ref:*tekst::
+stopsetup
+
+startsetup
+com:selecteerpapier:
+typ:vars/:
+var:soort:1,2::
+stopsetup
+
+startsetup
+com:koppelpapier:
+typ:val/:
+val:*naam::
+stopsetup
+
+startsetup
+com:chem:
+typ:arg/arg/arg/:
+val:*tekst::
+val:*tekst::
+val:*tekst::
+stopsetup
+
+startsetup
+com:breuk:
+typ:arg/arg/:
+val:*tekst::
+val:*tekst::
+stopsetup
+
+startsetup
+com:punten:
+typ:val/:
+val:*getal::
+stopsetup
+
+startsetup
+com:woonplaats:
+typ:arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:items:
+typ:vars/args/:
+ivr:stelitemsin::
+stopsetup
+
+startsetup
+com:stelitemsin:
+typ:vars/:
+var:plaats:links,rechts,inmarge,boven,onder::
+var:symbool:1,2,...,n,a,...,*tekst,geen::
+var:breedte:*maat::
+var:n:*getal,onbekend::
+var:voor:*commando::
+var:tussen:*commando::
+var:uitlijnen:links,rechts,midden,marge::
+var:na:*commando::
+stopsetup
+
+startsetup
+com:startcitaat:
+typ:vals/stp/:
+val:repeat/links,repeat/midden,repeat/rechts:midden:
+stopsetup
+
+startsetup
+com:citaat:
+typ:arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:citeer:
+typ:arg/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:stelciterenin:
+typ:vars/:
+var:voor:*commando::
+var:na:*commando::
+var:letter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+stopsetup
+
+startsetup
+com:toevoegen:
+typ:val/:
+val:klein,middel,groot:middel:
+stopsetup
+
+startsetup
+com:definieeralineas:
+typ:val/vars/:
+val:*naam::
+var:n:*getal::
+var:lijn:aan,uit::
+var:hoogte:passend,*maat::
+var:voor:*commando::
+var:na:*commando::
+var:binnen:*commando::
+var:afstand:*maat::
+var:tolerantie:zeerstreng,streng,soepel,zeersoepel,rek::
+var:uitlijnen:links,rechts,midden::
+stopsetup
+
+startsetup
+com:<<alinea>>:
+typ::
+stopsetup
+
+startsetup
+com:start<<alinea>>:
+typ:stp/:
+stopsetup
+
+startsetup
+com:stelalineasin:
+typ:val/val/vars/:
+val:*naam::
+val:*getal,elk::
+var:letter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:breedte:*maat::
+var:hoogte:*maat::
+var:uitlijnen:links,rechts,midden,breedte::
+var:tolerantie:zeerstreng,streng,soepel,zeersoepel,rek::
+var:afstand:*maat::
+var:voor:*commando::
+var:na:*commando::
+var:binnen:*commando::
+var:commando:*commando::
+var:lijn:aan,uit::
+stopsetup
+
+startsetup
+com:steltabin:
+typ:vars/:
+var:monster:*tekst::
+var:breedte:*maat::
+var:kopletter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:plaats:links,rechts::
+stopsetup
+
+startsetup
+com:tab:
+typ:arg/nop/par/:
+val:*tekst::
+val:*tekst::
+stopsetup
+
+startsetup
+com:startdocument:
+typ:val/stp/:
+val:*naam::
+stopsetup
+
+startsetup
+com:brieven:
+typ:val/:
+val:*naam::
+stopsetup
+
+startsetup
+com:labels:
+typ:val/:
+val:*naam::
+stopsetup
+
+startsetup
+com:stelbrievenin:
+typ:vals/:
+val:formeel,informeel,rekening,ls, hoog,midden,laag:formeel,laag:
+stopsetup
+
+startsetup
+com:stelsheetsin:
+typ:vars/:
+var:variant:*getal::
+var:tekst:*tekst::
+var:formaat:klein,middel,groot::
+var:letter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:nummer:*getal,aansluitend::
+stopsetup
+
+startsetup
+com:sheet:
+typ:val/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:stelstickersin:
+typ:vars/:
+var:variant:a::
+var:n:*getal,alles::
+var:plaats:marge,links,rechts,midden::
+stopsetup
+
+startsetup
+com:definieertabulatie:
+typ:val/val/val/:
+val:*naam::
+val:*naam::
+val:*tekst::
+stopsetup
+
+startsetup
+com:starttabulatie:
+typ:val/vars/stp/:
+val:*tekst::
+ivr:gebruikexternfiguur::
+stopsetup
+
+startsetup
+com:steltabulatiein:
+typ:val/vars/:
+val:*naam::
+var:eenheid:*maat::
+var:inspringen:ja,nee::
+var:voor:*commando::
+var:na:*commando::
+var:binnen:*commando::
+var:EQ:*tekst::
+var:lijnkleur:*naam::
+var:uitlijnen:links,midden,rechts,normaal::
+var:lijndikte:*maat::
+var:afstand:blanko,diepte,*maat,klein,middel,groot,geen::
+stopsetup
+
+startsetup
+com:steltabellenin:
+typ:vars/:
+var:afstand:klein,middel,groot::
+var:korps:5pt,...,12pt,klein,groot::
+var:HL:*getal,klein,middel,groot,geen::
+var:VL:*getal,klein,middel,groot,geen::
+var:diepte:*getal,strut::
+var:hoogte:*getal,strut::
+var:lijndikte:*maat::
+var:lijnkleur:*naam::
+var:uitlijnen:rechts,midden,links,normaal::
+var:commandos:*commando::
+var:uitlijnen:links,midden,rechts,normaal::
+var:achtergrond:raster,kleur,geen::
+var:achtergrondraster:*getal::
+var:achtergrondkleur:*naam::
+stopsetup
+
+startsetup
+com:starttabel:
+typ:val/stp/:
+val:*tekst,*naam::
+stopsetup
+
+startsetup
+com:starttabellen:
+typ:val/stp/:
+val:*tekst,*naam::
+stopsetup
+
+startsetup
+com:definieertabelvorm:
+typ:val/val/val/val/:
+val:*naam::
+val:*tekst::
+val:*tekst::
+val:*tekst::
+stopsetup
+
+startsetup
+com:gebruikexternefiles:
+typ:val/vars/:
+val:*naam::
+var:korps:5pt,...,12pt,klein,groot::
+var:file:*file::
+stopsetup
+
+startsetup
+com:gebruikexternefile:
+typ:val/val/val/vars/:
+val:*naam::
+val:*naam::
+val:*file::
+var:korps:5pt,...,12pt,klein,groot::
+stopsetup
+
+startsetup
+com:gebruikexternfiguur:
+typ:val/val/vars/:
+val:*naam::
+val:*file::
+var:schaal:*getal::
+var:factor:max,passend,ruim::
+var:bfactor:*getal,max,ruim,passend::
+var:hfactor:*getal,max,ruim,passend::
+var:breedte:*maat::
+var:hoogte:*maat::
+var:kader:aan,uit::
+var:preset:ja,nee::
+var:scherm:*file::
+var:preview:ja,nee::
+var:herhaal:ja,nee::
+var:object:ja,nee::
+var:type:eps,mps,pdf,tif,png,jpg,mov,tex::
+var:methode:eps,mps,pdf,tif,png,jpg,mov,tex::
+stopsetup
+
+startsetup
+com:externfiguur:
+typ:val/vars/:
+val:*file::
+ivr:gebruikexternfiguur::
+stopsetup
+
+startsetup
+com:stelexternefigurenin:
+typ:var/:
+var:optie:kader,leeg,test::
+var:object:ja,nee::
+var:hokjes:aan,uit::
+var:ymax:*getal::
+var:xmax:*getal::
+var:gebied:*tekst::
+var:plaats:lokaal,globaal::
+stopsetup
+
+startsetup
+com:toonexternefiguren:
+typ:vars/:
+var:variant:a,b,c::
+stopsetup
+
+startsetup
+com:gebruikexterngeluidsfragment:
+typ:val/val/:
+val:*naam::
+val:*file::
+stopsetup
+
+startsetup
+com:naam:
+typ:arg/:
+val:*naam::
+stopsetup
+
+startsetup
+com:startlegenda:
+typ:val/tex/{leg}nop/sep/nop/sep/nop/sep/tex/{leg}stp/:
+val:twee::
+val:*tekst::
+val:*tekst::
+val:*tekst::
+stopsetup
+
+startsetup
+com:startgegeven:
+typ:tex/{geg}nop/sep/nop/sep/nop/sep/tex/{geg}stp/:
+val:*tekst::
+val:*tekst::
+val:*tekst::
+stopsetup
+
+startsetup
+com:roteer:
+typ:vars/arg/:
+ivr:stelroterenin::
+stopsetup
+
+startsetup
+com:stelroterenin:
+typ:vars/:
+var:rotatie:*getal::
+ivr:stelomlijndin::
+stopsetup
+
+startsetup
+com:spiegel:
+typ:arg/:
+stopsetup
+
+startsetup
+com:schaal:
+typ:vars/arg/:
+var:sx:*getal::
+var:sy:*getal::
+stopsetup
+
+startsetup
+com:stelcombinatiesin:
+typ:vars/:
+var:voor:commando::
+var:tussen:commando::
+var:na:commando::
+var:afstand:*maat::
+var:hoogte:*maat,passend::
+var:breedte:*maat,passend::
+var:uitlijnen:nee,links,rechts,midden,normaal::
+stopsetup
+
+startsetup
+com:startcombinatie:
+typ:val/stp/:
+val:*n*m::
+stopsetup
+
+startsetup
+com:plaatsnaastelkaar:
+typ:arg/arg/:
+val:*tekst::
+val:*tekst::
+stopsetup
+
+startsetup
+com:plaatsonderelkaar:
+typ:arg/arg/:
+val:*tekst::
+val:*tekst::
+stopsetup
+
+startsetup
+com:startoverlay:
+typ:arg/arg/stp/:
+val:*tekst::
+val:*tekst::
+stopsetup
+
+startsetup
+com:startoverzicht:
+typ:vals/stp/:
+val:*naam::
+stopsetup
+
+startsetup
+com:stelinteractieschermin:
+typ:vars/:
+var:breedte:*maat,passend,max::
+var:hoogte:*maat,passend,max::
+var:rugwit:*maat::
+var:kopwit:*maat::
+var:rugoffset:*maat::
+var:kopoffset:*maat::
+var:optie:max,bookmark::
+var:wachttijd:*getal,geen::
+stopsetup
+
+startsetup
+com:scherm:
+typ::
+stopsetup
+
+startsetup
+com:stelpaginaovergangenin:
+typ:vals/:
+val:reset, *getal::
+stopsetup
+
+startsetup
+com:stelinteractiein:
+typ:vars/:
+var:status:start,stop::
+var:menu:aan,uit::
+var:pagina:ja,nee::
+var:klik:ja,nee::
+var:splitsen:ja,nee::
+var:scherm:nieuw::
+var:openactie:*verwijzing::
+var:sluitactie:*verwijzing::
+var:openpaginaactie:*verwijzing::
+var:sluitpaginaactie:*verwijzing::
+var:bereken:*naam::
+var:strut:ja,nee::
+var:breedte:*maat::
+var:hoogte:*maat::
+var:diepte:*maat::
+var:letter:normaal,vet,schuin,vetschuin,type,kap,klein...*commando::
+var:kleur:*naam::
+var:contrastkleur:*naam::
+var:symboolset:*naam::
+var:titel:*tekst::
+var:subtitel:*tekst::
+var:auteur:*tekst::
+var:datum:*tekst::
+stopsetup
+
+startsetup
+com:stelinteractiemenuin:
+typ:vals/vars/dests/:
+val:links,rechts,boven,onder,*naam::
+var:voor:*commando::
+var:na:*commando::
+var:tussen:*commando::
+var:links:*commando::
+var:rechts:*commando::
+var:midden:*commando::
+var:status:start,stop,geen::
+var:letter:normaal,vet,schuin,vetschuin,type,kap,klein...*commando::
+var:kleur:*naam::
+var:afstand:overlay,*maat::
+var:zelfdepagina:ja,leeg,nee,geen::
+var:onbekendeverwijzing:ja,leeg,nee,geen::
+var:linkeroffset:*maat::
+var:rechteroffset:*maat::
+var:bovenoffset:*maat::
+var:onderoffset:*maat::
+var:positie:ja,nee::
+ivr:stelomlijndin::
+stopsetup
+
+startsetup
+com:definieerinteractiemenu:
+typ:val/val/vars/:
+val:links,rechts,boven,onder,*naam::
+val:links,rechts,boven,onder,*naam::
+ivr:stelinteractiemenuin::
+stopsetup
+
+startsetup
+com:startinteractiemenu:
+typ:val/stp/:
+val:*naam::
+stopsetup
+
+startsetup
+com:blokkeerinteractiemenu:
+typ:val/refs/:
+val:links,rechts,boven,onder,*naam::
+stopsetup
+
+startsetup
+com:gebruikexterndocument:
+typ:val/val/val/:
+val:*naam::
+val:file::
+val:*tekst::
+stopsetup
+
+startsetup
+com:gebruikURL:
+typ:val/val/val/val/:
+val:*naam::
+val:*tekst::
+val:file::
+val:*tekst::
+stopsetup
+
+startsetup
+com:koppeldocument:
+typ:val/val/val/:
+val:*naam::
+val:file::
+val:*naam::
+val:*tekst::
+stopsetup
+
+startsetup
+com:uit:
+typ:ref/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:interactiebalk:
+typ:vars/:
+ivr:stelinteractiebalkin::
+stopsetup
+
+startsetup
+com:interactiebuttons:
+typ:vars/vals/:
+ivr:stelinteractiebalkin::
+val:*naam::
+stopsetup
+
+startsetup
+com:stelinteractiebalkin:
+typ:vars/:
+var:status:start,stop::
+var:variant:a,b,c,d,e,f,g::
+var:symbool:ja,nee::
+var:breedte:*maat,hoogte,passend::
+var:hoogte:*maat,hoogte,passend::
+var:diepte:*maat::
+var:kleur:*naam::
+var:stap:*getal,klein,middel,groot::
+ivr:stelomlijndin::
+stopsetup
+
+startsetup
+com:synchroniseer:
+typ::
+stopsetup
+
+startsetup
+com:startsynchronisatie:
+typ:stp/:
+stopsetup
+
+startsetup
+com:stelsynchronisatiebalkin:
+typ:vars/:
+var:variant:pagina,lokaal::
+var:breedte:*maat,hoogte,passend::
+var:hoogte:*maat::
+var:letter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+var:kleur:*naam::
+ivr:stelomlijndin::
+stopsetup
+
+startsetup
+com:synchronisatiebalk:
+typ:val/vars/:
+val:*naam::
+var:variant:pagina,lokaal::
+ivr:stelsynchronisatiebalkin::
+stopsetup
+
+startsetup
+com:stelsynchronisatiein:
+typ:vars/:
+var:status:start,stop::
+stopsetup
+
+startsetup
+com:definieerprofiel:
+typ:vals/vals/:
+val:*naam::
+val:*naam::
+stopsetup
+
+startsetup
+com:stelprofielenin:
+typ:vars/:
+var:optie:test::
+stopsetup
+
+startsetup
+com:startprofiel:
+typ:vals/stp/:
+val:*naam::
+stopsetup
+
+startsetup
+com:volgprofiel:
+typ:arg/val/:
+val:*tekst::
+val:*naam::
+stopsetup
+
+startsetup
+com:plaatsbookmarks:
+typ:vals/vals/:
+val:*naam::
+stopsetup
+
+startsetup
+com:bookmark:
+typ:val/arg/:
+val:*naam::
+stopsetup
+
+startsetup
+com:startversie:
+typ:vals/stp/:
+val:*getal::
+stopsetup
+
+startsetup
+com:stelversiesin:
+typ:vars/:
+var:nummer:*getal::
+var:letter:normaal,vet,schuin,vetschuin,type,kap,klein...,*commando::
+stopsetup
+
+startsetup
+com:markeerversie:
+typ::
+stopsetup
+
+startsetup
+com:selecteerversie:
+typ::
+stopsetup
+
+startsetup
+com:definieerversie:
+typ:val/vals/:
+val:*naam::
+val:*getal::
+stopsetup
+
+startsetup
+com:volgversie:
+typ:arg/val/:
+val:*tekst::
+val:*naam::
+stopsetup
+
+startsetup
+com:volgprofielversie:
+typ:arg/val/val/:
+val:*tekst::
+val:*naam::
+val:*naam::
+stopsetup
+
+startsetup
+com:definieerprogramma:
+typ:val/val/val/:
+val:*naam::
+val:*tekst::
+val:*tekst::
+stopsetup
+
+startsetup
+com:stelprogrammasin:
+typ:vars/:
+var:gebied:*tekst::
+stopsetup
+
+startsetup
+com:programma:
+typ:val/:
+val:*naam::
+stopsetup
+
+startsetup
+com:startfiguur:
+typ:val/val/vars/stp/:
+val:*naam::
+val:*file::
+var:factor:*getal::
+var:kader:aan,uit::
+stopsetup
+
+startsetup
+com:refereer/figuur:
+typ:poss/poss/val/:
+val:*getal::
+val:*getal::
+val:*getal::
+val:*getal::
+val:*tekst::
+stopsetup
+
+startsetup
+com:markeer/figuur:
+typ:poss/poss/val/:
+val:*getal::
+val:*getal::
+val:*getal::
+val:*getal::
+val:*tekst::
+stopsetup
+
+startsetup
+com:toelichting:
+typ:poss/poss/vars/arg/:
+val:*getal::
+val:*getal::
+val:*getal::
+val:*getal::
+ivr:stelomlijndin::
+val:*tekst::
+stopsetup
+
+startsetup
+com:naar:
+typ:arg/arg/refs/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:naarbox:
+typ:arg/refs/:
+val:*tekst::
+stopsetup
+
+startsetup
+com:button:
+typ:vars/arg/refs/:
+ivr:stelbuttonsin::
+val:*tekst::
+stopsetup
+
+startsetup
+com:stelbuttonsin:
+typ:vars/:
+var:status:start,stop::
+ivr:stelomlijndin::
+stopsetup
+
+startsetup
+com:menubutton:
+typ:val/vars/arg/refs/:
+ivr:stelomlijndin::
+val:*tekst::
+stopsetup
+
+startsetup
+com:stelcommentaarin:
+typ:vars/:
+var:breedte:*maat::
+var:hoogte:*maat::
+var:kleur:*naam::
+var:titel:*tekst::
+var:spatie:ja,nee::
+var:symbool:normaal,Nieuw,Ballon,Toevoeging,Help,Paragraaf,Sleutel::
+stopsetup
+
+startsetup
+com:startcommentaar:
+typ:val/vars/stp/:
+val:*naam::
+ivr:stelcommentaarin::
+stopsetup
+
+startsetup
+com:commentaar:
+typ:val/vars/arg/:
+val:*naam::
+ivr:stelcommentaarin::
+stopsetup
+
+startsetup
+com:definieerveld:
+typ:val/val/val/vals/val/:
+val:*naam::
+val:*naam:radio,check,push,line,text,popup,choice,combo:
+val:*naam::
+val:*naam::
+val:*naam::
+stopsetup
+
+startsetup
+com:definieersubveld:
+typ:val/val/vals/:
+val:*naam::
+val:*naam::
+val:*naam::
+stopsetup
+
+startsetup
+com:copieerveld:
+typ:val/vals/:
+val:*naam::
+val:*naam::
+stopsetup
+
+startsetup
+com:kloonveld:
+typ:val/vals/val/vals/:
+val:*naam::
+val:*naam::
+val:*naam::
+val:*naam::
+stopsetup
+
+startsetup
+com:veld:
+typ:val/:
+val:*naam::
+stopsetup
+
+startsetup
+com:passendveld:
+typ:val/:
+val:*naam::
+stopsetup
+
+startsetup
+com:invulveld:
+typ:val/arg/:
+val:*tekst::
+val:*tekst::
+stopsetup
+
+startsetup
+com:suggestie:
+typ:val/arg/arg/:
+val:links,rechts,midden::
+val:*tekst::
+stopsetup
+
+startsetup
+com:toonvelden:
+typ:vals/:
+val:*naam::
+stopsetup
+
+startsetup
+com:registreervelden:
+typ::
+stopsetup
+
+startsetup
+com:stelveldin:
+typ:val/vals/vars/vars/vars/:
+val:*naam::
+val:label,horizontaal,vertikaal,kader::
+ivr:omlijnd::
+ivr:stelveldenin::
+stopsetup
+
+startsetup
+com:stelveldenin:
+typ:vals/val/vars/vars/vars/:
+val:*naam::
+val:reset,label,horizontaal,vertikaal,kader::
+ivr:omlijnd::
+var:n:*getal::
+var:afstand:*maat::
+var:voor:*commando::
+var:na:*commando::
+var:tussen:*commando::
+var:kleur:*naam::
+var:letter:normaal,vet,schuin,vetschuin,type::
+var:uitlijnen:links,midden,rechts::
+var:optie:alleenleesbaar,verplicht,beschermd,gesorteerd, nietbeschikbaar, verborgen,printbaar::
+var:klikin:*verwijzing::
+var:klikuit:*verwijzing::
+var:gebiedin:*verwijzing::
+var:gebieduit:*verwijzing::
+var:natoets:*verwijzing::
+var:formatteer:*verwijzing::
+var:valideer:*verwijzing::
+var:bereken:*verwijzing::
+var:veldoffset:*maat::
+var:veldkaderkleur:*naam::
+var:veldachtergrondkleur:*naam::
+stopsetup
+
+startsetup
+com:stelformulierenin:
+typ:vars/:
+var:methode:HTML,FDF::
+stopsetup
+
+startsetup
+com:definieerveldstapel:
+typ:val/vals/vars/:
+val:*naam::
+val:*naam::
+ivr:stelveldenin::
+stopsetup
+
+startsetup
+com:veldstapel:
+typ:val/vals/vars/:
+val:*naam::
+val:*naam::
+ivr:stelveldenin::
+stopsetup
+
+startsetup
+com:clip:
+typ:vars/arg/:
+ivr:stelclipin::
+stopsetup
+
+startsetup
+com:stelclipin:
+typ:vars/:
+var:nx:*getal::
+var:ny:*getal::
+var:x:*getal::
+var:y:*getal::
+var:breedte:*maat::
+var:hoogte:*maat::
+var:hoffset:*maat::
+var:voffset:*maat::
+var:mp:*naam::
+stopsetup
+
+startsetup
+com:plaatslegenda:
+typ:arg/arg/:
+val:*tekst::
+val:*tekst::
+stopsetup
+
+startsetup
+com:stellegendain:
+typ:vars/:
+var:n:*getal::
+var:afstand:*maat::
+var:tussen:*commando::
+var:breedte:*maat::
+var:hoogte:*maat::
+var:plaats:rechts,onder::
+var:korps:5pt,...,12pt,klein,groot::
+stopsetup
+
+startsetup
+com:definieerlijn:
+typ:val/vars/:
+val:*naam::
+ivr:stellijnin::
+stopsetup
+
+startsetup
+com:plaatslijn:
+typ:val/:
+val:*naam::
+stopsetup
+
+startsetup
+com:stellijnin:
+typ:val/vars/:
+val:*naam::
+var:diepte:*maat::
+var:hoogte:*maat::
+var:breedte:*maat::
+var:voorwit:*maat::
+var:nawit:*maat::
+var:kleur:*naam::
+stopsetup
+
+startsetup
+com:definieertekstvariabele:
+typ:val/val/vars/:
+ivr:steltekstvariabelein::
+stopsetup
+
+startsetup
+com:steltekstvariabelein:
+typ:val/vars/:
+val:*naam::
+var:links:*tekst::
+var:rechts:*tekst::
+var:afstand:*maat::
+var:commando:*\commando#1::
+var:strut:ja,nee,kap,*tekst::
+stopsetup
+
+startsetup
+com:kentekstvariabeletoe:
+typ:val/val/:
+val:*naam::
+val:*tekst::
+stopsetup
+
+startsetup
+com:plaatstekstvariabele:
+typ:val/:
+val:*naam::
+stopsetup
+
+startsetup
+com:tekstvariabele:
+typ:val/:
+val:*naam::
+stopsetup
+
+startsetup
+com:definerawfont:
+typ:val/val/vars/:
+val:*naam::
+val:*file::
+ivr:stelinterliniein::
+stopsetup
+
+startsetup
+com:switchtorawfont:
+typ:val/:
+val:*naam::
+stopsetup
+
+startsetup
+com:definieertekstpositie:
+typ:val/vars/:
+val:*naam::
+ivr:stelpositionerenin::
+stopsetup
+
+startsetup
+com:steltekstpositiein:
+typ:val/vars/:
+val:*naam::
+ivr:stelpositionerenin::
+stopsetup
+
+startsetup
+com:positioneertekst:
+typ:val/arg/:
+val:*naam::
+val:*tekst::
+stopsetup
+
+startsetup
+com:stelstrutin:
+typ:val/:
+val:ja,nee,kap,*tekst:ja:
+stopsetup
+
diff --git a/context/perltk/cont_mis.pm b/context/perltk/cont_mis.pm
new file mode 100644
index 000000000..6bd449bf0
--- /dev/null
+++ b/context/perltk/cont_mis.pm
@@ -0,0 +1,69 @@
+#D \module
+#D [ file=cont\_mis.pm,
+#D version=1999.05.05,
+#D title=General modules,
+#D subtitle=all kind of subs,
+#D author=Hans Hagen,
+#D date=\currentdate,
+#D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+#C
+#C This module is part of the \CONTEXT\ macro||package and is
+#C therefore copyrighted by \PRAGMA. See licen-en.pdf for
+#C details.
+
+#D Not yet documented, source will be cleaned up.
+
+package cont_mis ;
+
+use strict ;
+
+my ($message, $separator, $content) ;
+
+format =
+@>>>>>>>>>>>>>>>>>>>>> @ @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+$message,$separator,$content
+.
+
+sub report
+ { ($message, $separator, $content) = @_ ; write }
+
+sub crlf { print "\n" }
+sub banner { crlf ; report (shift , '/', shift) ; crlf }
+sub message { report (shift , ':', shift) }
+sub help { report (shift , ' ', shift) }
+sub status { message ('status' , shift) }
+sub warning { message ('warning' , shift) }
+sub error { message ('error' , shift) }
+sub continue { message ('' , shift) }
+
+sub hex_color
+ { my ($r,$g,$b) = @_ ;
+ if ($r>1) { $r=0xffff } else { $r = 0xffff*$r }
+ if ($g>1) { $g=0xffff } else { $g = 0xffff*$g }
+ if ($b>1) { $b=0xffff } else { $b = 0xffff*$b }
+ local $_ = sprintf "%4x%4x%4x", $r, $g, $b ;
+ s/ /0/go ;
+ return $_ }
+
+sub InterfaceFound
+ { local $_ = shift ;
+ if (/^\%.*interface=(.*?)\b/)
+ { return $1 }
+ elsif (/\\(starttekst|stoptekst|startonderdeel)/)
+ { return 'nl' }
+ elsif (/\\(stelle|verwende|umgebung|benutze)/)
+ { return 'de' }
+ elsif (/\\(stel|gebruik|omgeving)/)
+ { return 'nl' }
+ elsif (/\\(use|setup|environment)/)
+ { return 'en' }
+ elsif (/(hoogte|breedte|letter)=/)
+ { return 'nl' }
+ elsif (/(height|width|style)=/)
+ { return 'en' }
+ elsif (/(hoehe|breite|schrift)=/)
+ { return 'de' }
+ else
+ { return '' } }
+
+1;
diff --git a/context/perltk/cont_set.pm b/context/perltk/cont_set.pm
new file mode 100644
index 000000000..a7c9c5a2f
--- /dev/null
+++ b/context/perltk/cont_set.pm
@@ -0,0 +1,650 @@
+#D \module
+#D [ file=cont\_set.pm,
+#D version=1999.04.01,
+#D title=General modules,
+#D subtitle=showing \CONTEXT\ commands,
+#D author=Hans Hagen,
+#D date=\currentdate,
+#D copyright={PRAGMA / Hans Hagen \& Ton Otten},
+#D suggestions={Tobias Burnus \& Taco Hoekater}]
+#C
+#C This module is part of the \CONTEXT\ macro||package and is
+#C therefore copyrighted by \PRAGMA. See licen-en.pdf for
+#C details.
+
+#D As always: thanks to Taco and Tobias for testing this
+#D module and providing suggestions and code snippets as
+#D well as haunting bugs.
+
+package cont_set ;
+
+#D This module (package) deals with providing help information
+#D about the \CONTEXT\ commands. The data needed is derived
+#D from the setup files by \CONTEXT\ itself. The data is
+#D stored in files with suffix \type {tws} (tex work setup).
+#D This module introduces some subroutines:
+#D
+#D \starttabulatie[|Tl|p|]
+#D \NC \type {set\_setup\_interface} \NC sets the primary interface
+#D to search in \NC \NR
+#D \NC \type {set\_setup\_title} \NC sets the title of the main
+#D window title \NC \NR
+#D \NC \type {setups\_found} \NC locate the \type {tws} files
+#D using the \type {kpsewhich}
+#D program \NC \NR
+#D \NC \type {show\_setups} \NC allocate the radio buttons
+#D that can be used to select a
+#D command set \NC \NR
+#D \NC \type {load\_setup(filename)} \NC load the names \type {tws}
+#D file \NC \NR
+#D \NC \type {load\_setups} \NC all found command files can
+#D be loaded at once \NC \NR
+#D \NC \type {setup\_found(filename)} \NC this routine returns~1 when
+#D the file is loaded \NC \NR
+#D \NC \type {update\_setup} \NC when we browse the list with
+#D commands, this routine takes care
+#D of updating the text area \NC \NR
+#D \NC \type {change\_setup} \NC we can manually set the
+#D command set we want to browse,
+#D and this routine takes care of
+#D this \NC \NR
+#D \NC \type {show\_setup(command)} \NC context sensitive help can be
+#D provided by calling this sub \NC \NR
+#D \stoptabulatie
+#D
+#D First we load some packages and set some constants.
+
+use Tk ;
+use Tk::ROText ;
+use Config ;
+
+use strict;
+
+use subs qw/ update_setup / ;
+
+my $dosish = ($Config{'osname'} =~ /dos|win/i) ;
+my $default_size = $dosish ? 9 : 12 ;
+
+my $textfont = "Courier $default_size " ;
+my $userfont = "Courier $default_size italic" ;
+my $buttonfont = "Helvetica $default_size bold " ;
+
+unless ($dosish)
+ { $textfont = "-adobe-courier-bold-r-normal--$default_size-120-75-75-m-70-iso8859-1" ;
+ $userfont = "-adobe-courier-bold-o-normal--$default_size-120-75-75-m-70-iso8859-1" ;
+ $buttonfont = "-adobe-helvetica-bold-r-normal--$default_size-120-75-75-p-69-iso8859-1" }
+
+my $s_vertical = 30 ;
+my $s_horizontal = 72 ;
+my $c_horizontal = 24 ;
+
+#D The main window is not resizable, but the text area and
+#D command list will have scrollbars.
+
+my $mw = MainWindow -> new ( -title => 'ConTeXt commands' ) ;
+
+$mw -> resizable ('n', 'n') ;
+
+sub SetupWindow { return $mw } ;
+
+my $sw = $mw -> Scrolled ( 'ROText' ,
+ -scrollbars => 'se' ,
+ -height => $s_vertical ,
+ -width => $s_horizontal ,
+ -wrap => 'none' ,
+ -background => 'ivory1' ,
+ -font => $textfont ) ;
+
+my $cw = $mw -> Scrolled ( 'Listbox' ,
+ -scrollbars => 'e' ,
+ -font => $textfont ,
+ -width => $c_horizontal ,
+ -selectbackground => 'gray' ,
+ -background => 'ivory1' ,
+ -selectmode => 'browse' ) ;
+
+#D The (optional) file buttons are packed in a frame.
+
+my $fw = $mw -> Frame () ;
+
+my %lw ;
+
+#D We can search for commands, using:
+
+my $request = $fw -> Entry ( -font => $textfont ,
+ -background => 'ivory1' ,
+ -width => 20 ) ;
+
+#D And the whole bunch of widgets are packed in the main
+#D window.
+
+$fw -> pack ( -fill => 'x' ,
+ -side => 'top' ) ;
+$sw -> pack ( #-fill => 'both' ,
+ #-expand => 1 ,
+ -side => 'left' ) ;
+$cw -> pack ( -fill => 'both' ,
+ -expand => 1 ) ;
+
+#D We scan for available setup files, with suffix \type {tws}.
+#D These should be somewhere on the system, grouped in one
+#D directory. At least the english file \type {cont-en.tws}
+#D should be found.
+
+my $tws_path = '' ;
+my @setup_files = ('cont-en.tws') ;
+my $setup_file = $setup_files[0] ;
+my $setup_interface = 'en' ;
+my $old_setup_file = '' ;
+
+sub set_setup_interface
+ { $setup_interface = shift }
+
+sub set_setup_title
+ { $mw -> configure ( -title => shift ) }
+
+sub setups_found
+ { $tws_path = `kpsewhich --format="other text files" --progname=context cont-en.tws` ;
+ $tws_path =~ s/cont-en\.tws.*// ;
+ chop $tws_path ;
+ @setup_files = glob ("$tws_path*.tws") ;
+ if (@setup_files)
+ { foreach (@setup_files) { s/\.tws// ; s/.*\/// }
+ $setup_file = $setup_files[0] ;
+ return 1 }
+ else
+ { return 0 } }
+
+#D The setup files can be shown and chosen.
+
+sub show_setups
+ { foreach (@setup_files)
+ { $lw{$_} = $fw -> Radiobutton ( -text => lc $_ ,
+ -value => $_ ,
+ -font => $buttonfont ,
+ -selectcolor => 'ivory1' ,
+ -indicatoron => 0 ,
+ command => \&change_setup ,
+ -variable => \$setup_file ) ;
+ $lw{$_} -> pack ( -padx => '2p',
+ -pady => '2p',
+ -side => 'left' ) }
+ $request -> pack ( -padx => '6p',
+ -pady => '2p',
+ -side => 'left' ) }
+
+$cw -> bind ('<B1-Motion>', \&update_setup ) ;
+$cw -> bind ('<1>' , \&update_setup ) ;
+$cw -> bind ('<Key>' , \&update_setup ) ;
+
+$sw -> tag ('configure', 'user' , -font => $userfont ) ;
+$sw -> tag ('configure', 'command' , -foreground => 'green3' ) ;
+$sw -> tag ('configure', 'variable' , -font => $userfont ) ;
+$sw -> tag ('configure', 'default' , -underline => 1 ) ;
+$sw -> tag ('configure', 'symbol' , -foreground => 'blue3' ) ;
+$sw -> tag ('configure', 'or' , -foreground => 'yellow3' ) ;
+$sw -> tag ('configure', 'argument' , -foreground => 'red3' ) ;
+$sw -> tag ('configure', 'par' , -lmargin1 => '4m' ,
+ -lmargin2 => '6m' ) ;
+
+my %setups ;
+my %commands ;
+my %loadedsetups ;
+my %positions ;
+my %crosslinks ;
+
+my $current_setup = '' ;
+
+#D Setups are organized in files called \type {*.tws} and
+#D alike. Several files can be loaded simultaneously. When
+#D loading, we grab whole paragraphs. The variables and values
+#D belonging to a command, are stored in the hash table \type
+#D {setups}, one per language. The command templates are
+#D stored in \type {commands}.
+#D
+#D A \type {tws} file is generated by \CONTEXT\ from the setup
+#D definition files. Only \CONTEXT\ knows the current meaning
+#D of commands and keywords. The files are generating by
+#D simply saying something like:
+#D
+#D \starttypen
+#D texexec --interface=en setupd
+#D texexec --interface=de setupd
+#D texexec --interface=nl setupd
+#D texexec --interface=cz setupd
+#D texexec --interface=it setupd
+#D \stoptypen
+#D
+#D This results in files formatted as:
+#D
+#D \starttypen
+#D startsetup
+#D com:setupcolors
+#D typ:vars/
+#D var:state:start,stop,global,local:
+#D var:conversion:yes,no,always:
+#D var:reduction:yes,no:
+#D var:rgb:yes,no:
+#D var:cmyk:yes,no:
+#D stopsetup
+#D \stoptypen
+#D
+#D This format can be stored rather efficient and parsed rather
+#D fast. What more do we need.
+
+sub load_setup
+ { my $filename = shift ;
+ unless (keys %{$commands{$filename}})
+ { local $/ = 'stopsetup' ; # in plaats van '' ivm unix ; (taco)
+ $current_setup = '' ;
+ if (open(SETUP, "$tws_path$filename.tws" ))
+ { my $position = 0 ;
+ while (<SETUP>)
+ { chomp ;
+ s/startsetup//mso ;
+ s/stopsetup//mso ; # redundant geworden
+ s/\r\n //gms ; # in plaats van s/ //gms ; (taco)
+ s/com\:(.*?)\:\s(.*)//mso ;
+ my $string = $1 ;
+ my $command = $1 ;
+ my $setup = $2 ;
+ ++$position ;
+ $string =~ s/(.*?)\<\<(.*?)\>\>(.*?)/$1$2$3/o ;
+ $setups {$filename}{$string} = $setup ;
+ $commands {$filename}{$string} = $command ;
+ $positions {$filename}{$string} = $position ;
+ $crosslinks{$filename}[$position] = $string }
+ close (SETUP) } }
+ my @list = sort {lc $a cmp lc $b} keys %{$commands{$filename}} ;
+ $cw -> delete ('0.0', 'end') ;
+ $cw -> insert ('end', @list) ;
+ $cw -> selectionSet ('0.0', '0.0') ;
+ $cw -> activate ('0.0') ;
+ $setup_file = $filename ;
+ update_setup }
+
+sub load_setups
+ { foreach my $setup (@setup_files) { load_setup ($setup) } }
+
+#D The core of this module deals with transforming the
+#D definitions like shown earlier. Details on the format
+#D can be found in the file \type {setupd.tex}. We use the
+#D \type {Tk::Text} automatic hanging identation features.
+#D The next subs are examples of the kind you write once
+#D and never look at again.
+
+my @arguments = () ;
+my $nested_setup = 0 ;
+my $continue_setup = 0 ;
+my $argument = 0 ;
+my $stopsuffix = '' ;
+my $stopcommand = '' ;
+
+my %arg ;
+
+$arg {repeat} = '//n*/' ;
+$arg {arg} = 'argument/{/.../}' ;
+$arg {args} = 'argument/{/..,...,../}' ;
+$arg {dis} = 'argument/$$/.../$$' ;
+$arg {idx} = 'argument/{/.../}' ;
+$arg {idxs} = 'argument/{/..+...+../}' ;
+$arg {mat} = 'argument/$/...:$' ;
+$arg {nop} = '//.../' ;
+$arg {fil} = '//.../' ;
+$arg {pos} = 'symbol/(/.../)' ;
+$arg {poss} = 'symbol/(/...,.../)' ;
+$arg {sep} = 'command//\\\\/' ;
+$arg {ref} = 'symbol/[/ref/]' ;
+$arg {refs} = 'symbol/[/ref,../]' ;
+$arg {val} = 'symbol/[/.../]' ;
+$arg {vals} = 'symbol/[/..,...,../]' ;
+$arg {var} = 'symbol/[/..=../]' ;
+$arg {vars} = 'symbol/[/..,..=..,../]' ;
+$arg {cmd} = 'command//\cmd/' ;
+$arg {dest} = 'symbol/[/..ref/]' ;
+$arg {dests} = 'symbol/[/..,..refs,../]' ;
+$arg {trip} = 'symbol/[/x:y:z=/]' ;
+$arg {trips} = 'symbol/[/x:y:z=,../]' ;
+$arg {wrd} = 'argument/{/.../}' ;
+$arg {wrds} = 'argument/{/......./}' ;
+$arg {par} = 'command//\par/' ;
+$arg {stp} = '//stop/' ;
+$arg {par} = 'command///' ;
+
+sub show_command
+ { my $command = shift ;
+ local $_ = $commands{$setup_file}{$command} ;
+ if ($command eq $_)
+ { $sw -> insert ('end', "\\$command", 'command' ) }
+ elsif (/(.*?)\<\<(.*?)\>\>(.*?)/o)
+ { $sw -> insert ('end', "\\", 'command' ) ;
+ if ($1) { $sw -> insert ('end', $1, 'command' ) }
+ if ($2) { $sw -> insert ('end', $2, ['command','user'] ) }
+ if ($3) { $sw -> insert ('end', $3, 'command' ) }
+ $stopsuffix = $2 } }
+
+sub show_left_argument
+ { local $_ = shift ;
+ my @thearg = split (/\//, $arg{$arguments[$_]}) ;
+ $sw -> insert ('end', $thearg[1], ['par',$thearg[0]] ) }
+
+sub show_middle_argument
+ { local $_ = shift ;
+ my @thearg = split (/\//, $arg{$arguments[$_]}) ;
+ if ($thearg[1])
+ { $sw -> insert ('end', $thearg[2], 'par' ) }
+ else
+ { $sw -> insert ('end', $thearg[2], ['par',$thearg[0]] ) } }
+
+sub show_right_argument
+ { local $_ = shift ;
+ my @thearg = split (/\//, $arg{$arguments[$_]}) ;
+ $sw -> insert ('end', $thearg[3], ['par',$thearg[0]] ) ;
+ ++$argument }
+
+sub show_reference
+ { if (($nested_setup<=1)&&(defined($arguments[$argument])))
+ { if ($arguments[$argument]=~/ref/)
+ { $sw -> insert ('end', "\n" ) ;
+ show_left_argument ($argument) ;
+ show_middle_argument ($argument) ;
+ show_right_argument ($argument) } } }
+
+sub show_stop_command
+ { my $before_stop = shift ;
+ if ($stopcommand)
+ { if ($stopsuffix)
+ { $sw -> insert ('end', '\\stop', 'command' ) ;
+ $sw -> insert ('end', $stopsuffix, ['command','user'] ) }
+ else
+ { $sw -> insert ('end', $stopcommand, 'command' ) } } }
+
+sub show_whatever_left
+ { while ($argument<@arguments)
+ { $sw -> insert ('end', "\n" ) ;
+ show_left_argument ($argument) ;
+ show_middle_argument ($argument) ;
+ show_right_argument ($argument) ;
+ ++$argument }
+ if ($stopcommand)
+ { $sw -> insert ('end', "\n...\n...\n...\n", 'par') ;
+ show_stop_command } }
+
+sub do_update_setup # type: 0=all 1=vars 2=vals
+ { my ($command, $type) = @_ ;
+ my $setup = $setups{$setup_file}{$command} ;
+ my $default = '' ;
+ my $key = '' ;
+ my $meaning = '' ;
+ my @values = () ;
+ local $_ ;
+ ++$nested_setup ;
+ while ($setup=~/(typ|var|val|ivr|ivl)\:(.*?)\:\s/mgo)
+ { $key = $1 ;
+ $meaning = $2 ;
+ if (($key=~/var/o)&&($type!=2))
+ { $_ = $meaning ; s/(.*?)\:(.*?)\:(.*)//o ;
+ if (($nested_setup>1)&&(!$2)) { next }
+ $key = $1 ;
+ if ($3) { $default = $3 } else { $default = '' }
+ $_= $2 ; s/\s//go ; @values = split (/,/,$_) ;
+ if ($continue_setup)
+ { $sw -> insert ('end', ",\n ", 'par') }
+ else
+ { $continue_setup = 1 ;
+ $sw -> insert ('end', "\n", 'par') ;
+ show_left_argument($argument) }
+ $sw -> insert ('end', $key , 'par' ) ;
+ $sw -> insert ('end', '=', ['symbol','par'] ) ;
+ #while (1)
+ while (@values)
+ { my $value = shift @values ;
+ if ($value =~ /^\*/o)
+ { $value =~ s/^\*//o ;
+ $sw -> insert ('end', lc $value, ['variable','par'] ) }
+ elsif ($value eq $default)
+ { $sw -> insert ('end', $value, ['default','par'] ) }
+ else
+ { $sw -> insert ('end', $value, 'par' ) }
+ if (@values)
+ { $sw -> insert ('end', '|' , ['or','par'] ) }
+ else
+ { last } } }
+ elsif (($key=~/val/o)&&($type!=1))
+ { $_ = $meaning ; s/(.*)\:(.*)//o ;
+ if (($nested_setup>1)&&(!$2)) { next }
+ $_ = $1 ; s/\s//go ; @values = split (/,/,$_) ;
+ if ($2) { $default = $2 } else { $default = '' }
+ if ($continue_setup)
+ { $continue_setup = 0 ;
+ show_right_argument($argument) }
+ $sw -> insert ('end', "\n" , 'par') ;
+ show_left_argument($argument) ;
+ #while (1)
+ while (@values)
+ { unless (@values) { last }
+ my $value = shift (@values) ;
+ if ($value =~ /^\*/o)
+ { $value =~ s/^\*//o ;
+ $sw -> insert ('end', lc $value, ['variable','par'] ) }
+ elsif ($value eq $default)
+ { $sw -> insert ('end', $value, ['default','par'] ) }
+ else
+ { $sw -> insert ('end', $value, 'par' ) }
+ if (@values)
+ { $sw -> insert ('end', ', ', 'par' ) }
+ else
+ { last } }
+ show_right_argument($argument) }
+ elsif ($key=~/typ/o)
+ { if ($nested_setup==1)
+ { show_command ($command) ;
+ my $arguments = $meaning ;
+ if ($arguments=~/stp/)
+ { $_ = $command ;
+ s/start(.*)/$1/o ;
+ $stopcommand = "\\stop$_" ;
+ $arguments =~ s/stp//go }
+ @arguments = split (/\//,$arguments) ;
+ if (@arguments)
+ { for (my $i=0;$i<@arguments;$i++)
+ { show_left_argument ($i) ;
+ show_middle_argument ($i) ;
+ show_right_argument ($i) }
+ if ($stopcommand)
+ { $sw -> insert ('end', ' ... ') ;
+ show_stop_command }
+ $sw -> insert ('end', "\n\n") ;
+ show_command ($command) }
+ $argument = 0 ;
+ $continue_setup = 0 } }
+ elsif ($key=~/ivr/o)
+ { $meaning =~ s/(.*)\:(.*)//o ;
+ do_update_setup ($1,1) }
+ elsif ($key=~/ivl/o)
+ { $meaning =~ s/(.*)\:(.*)//o ;
+ do_update_setup ($1,2) }
+ show_reference }
+ --$nested_setup ;
+ if (($continue_setup)&&(!$nested_setup))
+ { show_right_argument ;
+ show_whatever_left } }
+
+#D Now the real work is done, we only have to define a few
+#D housekeeping routines. The next sub adapts the text area
+#D to the current selected command and normally is bound to
+#D the list browsing commands.
+
+sub update_setup
+ { $old_setup_file = $setup_file ;
+ if (keys %{$commands{$setup_file}})
+ { my $key ;
+ unless ($cw->curselection)
+ { $cw -> selectionSet('0.0','0.0') }
+ $key = $cw -> get($cw->curselection) ;
+ if ($current_setup ne $key)
+ { $current_setup = $key ;
+ $sw -> delete ('1.0', 'end' ) ;
+ $nested_setup = 0 ;
+ $argument = 0 ;
+ $stopcommand = '' ;
+ $stopsuffix = '' ;
+ do_update_setup ($key,0) ;
+ $mw -> raise ;
+ $mw -> focus } } }
+
+#D In editors we want to provide context sensitive help
+#D information. The next sub first tries to locate the
+#D commands asked for in the setup data currently selected,
+#D and when not found takes a look at all the loaded files.
+
+sub show_setup
+ { my $asked_for = shift ;
+ unless ($asked_for) { return }
+ my $found = 0 ;
+ $asked_for =~ s/^\\// ;
+ if ($setup_interface)
+ { $found = 0 ;
+ foreach my $name (@setup_files)
+ { if (($name=~/\-$setup_interface/)&&(exists($commands{$name}{$asked_for})))
+ { $found = 1 ;
+ $setup_file = $name ;
+ last } } }
+ if (!($found)&&(exists($commands{$setup_file}{$asked_for})))
+ { $found = 1 }
+ else
+ { $found = 0 ;
+ foreach my $name (@setup_files)
+ { if (exists($commands{$name}{$asked_for}))
+ { $found = 1 ;
+ $setup_file = $name ;
+ last } } }
+ if ($found)
+ { my @list = sort {lc $a cmp lc $b} keys %{$commands{$setup_file}} ;
+ $cw -> delete ('0.0', 'end') ;
+ $cw -> insert ('end', @list) ;
+ $found = 0 ;
+ foreach (@list) { if ($_ eq $asked_for) { last } ++$found }
+ my $index = "$found.0" ;
+ $cw -> selectionSet ($index, $index) ;
+ $cw -> activate ($index) ;
+ $cw -> see ($index) ;
+ update_setup ;
+ $mw -> raise ;
+ $mw -> focus } }
+
+#D Whenever a new set of commands is selected (by means of the
+#D buttons on top the screen) the list and text are to be
+#D updated.
+
+sub change_setup
+ { my $command = '' ;
+ if ($old_setup_file)
+ { unless ($cw->curselection)
+ { $cw -> selectionSet('0.0','0.0') }
+ $command = $cw -> get($cw->curselection) ;
+ my $position = $positions{$old_setup_file}{$command} ;
+ $command = $crosslinks{$setup_file}[$position] }
+ load_setup($setup_file) ;
+ my @list = sort {lc $a cmp lc $b} keys %{$commands{$setup_file}} ;
+ $cw -> delete ('0.0', 'end') ;
+ $cw -> insert ('end', @list) ;
+ if ($command)
+ { show_setup($command) }
+ else
+ { $cw -> selectionClear ('0.0','end') ;
+ $cw -> selectionSet ('0.0', '0.0') ;
+ $cw -> see ('0.0') ;
+ $cw -> activate ('0.0') }
+ update_setup ;
+ $mw -> raise ;
+ $mw -> focus }
+
+#D Sometimes we want to make sure the dat is loaded indeed:
+
+sub setup_found
+ { my $filename = shift ;
+ if (-e "$tws_path$filename.tws")
+ { $setup_file = $filename ;
+ return 1 }
+ else
+ { return 0 } }
+
+#D The next feature is dedicated to Tobias, who suggested
+#D it, and Taco, who saw it as yet another proof of the
+#D speed of \PERL. It's also dedicated to Ton, who needs it
+#D for translating the big manual.
+
+sub handle_request
+ { my $index = $cw -> index('end') ;
+ unless ($index) { return }
+ my $req = $request -> get ;
+ unless ($req) { return }
+ $req =~ s/\\//o ;
+ $req =~ s/\s//go ;
+ $request -> delete('0','end') ;
+ $request -> insert('0',$req) ;
+ unless ($req) { return }
+ my ($l,$c) = split (/\./,$index) ;
+ for (my $i=0;$i<=$l;$i++)
+ { $index = "$i.0" ;
+ my $str = $cw -> get ($index, $index) ;
+ if ($str =~ /^$req/)
+ { $cw -> selectionClear ('0.0','end') ;
+ $cw -> selectionSet ($index, $index) ;
+ $cw -> activate ($index) ;
+ $cw -> see ($index) ;
+ update_setup ;
+ $mw -> raise ;
+ $mw -> focus ;
+ return } } }
+
+$request -> bind ('<Return>', sub { handle_request } ) ;
+
+sub insert_request
+ { my ($self, $chr) = @_ ;
+ if ($self ne $request)
+ { $request -> insert ('end', $chr) }
+ handle_request }
+
+foreach my $chr ('a'..'z','A'..'Z')
+ { $mw -> bind ( "<KeyPress-$chr>", sub { insert_request(shift, $chr) } ) }
+
+$mw -> bind ( "<backslash>", sub { insert_request(shift, "\\") } ) ;
+
+sub delete_request
+ { my $self = shift ;
+ if ($self ne $request)
+ { my $to = $request -> index ('end') ;
+ my $from = $to - 1 ;
+ if ($from<0) { $from = 0 }
+ $request -> delete ($from,$to) }
+ handle_request }
+
+$mw -> bind ( "<BackSpace>", sub { delete_request } ) ;
+
+sub new_request
+ { $request -> delete (0,'end') ;
+ handle_request }
+
+$mw -> bind ( "<space>", sub { new_request } ) ;
+
+#D Just in case:
+
+sub raise_setup
+ { $mw -> raise }
+
+sub dont_exit
+ { $mw -> protocol( 'WM_DELETE_WINDOW' => sub { } ) }
+
+#D An example use is:
+#D
+#D \starttypen
+#D load_setup ("cont-$nl") ;
+#D show_setup ('omlijnd') ;
+#D MainLoop () ;
+#D \stoptypen
+#D
+#D Now everything is done, we return 1:
+
+1 ;
diff --git a/context/perltk/fdf2tan.pl b/context/perltk/fdf2tan.pl
new file mode 100644
index 000000000..0e505d054
--- /dev/null
+++ b/context/perltk/fdf2tan.pl
@@ -0,0 +1,118 @@
+#D \module
+#D [ file=fdf2tan.pl,
+#D version=2000.02.06,
+#D title=converting \FDF\ annotations,
+#D subtitle=fdf2tan,
+#D author=Hans Hagen,
+#D date=\currentdate,
+#D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+#C
+#C This module is part of the \CONTEXT\ macro||package and is
+#C therefore copyrighted by \PRAGMA. See licen-en.pdf for
+#C details.
+
+#D This is a preliminary version, that will probably be changed
+#D and merged into a more general module.
+
+use Text::Wrap ;
+
+my $filename = $ARGV[0] ; exit if ($filename eq '') ;
+
+$filename =~ s/\..*$//o ;
+
+my $D = "[0-9\-\.]" ;
+my $nn = 0 ;
+
+my %stack ;
+
+sub saveobject
+ { $n = shift ; $str = shift ;
+ if ($n>$max) { $max = $n }
+ if ($str =~ s/\/Type\s+\/Annot\s+\/Subtype\s+\/Text//o)
+ { ++$nn ;
+ $str =~ s/\/Page\s+(\d+)//o ;
+ $page = $1 ; ++$page ;
+ $str =~ s/\/Rect\s+\[\s*(.*?)\s*\]//o ;
+ $rec = $1 ;
+ if ($rec =~ /($D+)\s*($D+)\s*($D+)\s*($D+)/o)
+ { $FDFllx = $1 ; $FDFlly = $2 ; $FDFurx = $3 ; $FDFury = $4 }
+ $X = $FDFllx - $PDFllx ;
+ $Y = $PDFury - $FDFury ;
+ $str =~ s/\/M\s.*$//o ;
+ $str =~ s/\/T\s.*$//o ;
+ $str =~ s/^.*\/Contents\s.*?\(//o ;
+ $str =~ s/\)\s+$//o ;
+ $str =~ s/\\\\r/@@@@@@/o ;
+ $str =~ s/\\r/\n/go;
+ $str =~ s/@@@@@@/\\r/o ;
+ $str =~ s/\\([\<\>\(\)\{\}\\])/$1/go ;
+ $stack{sprintf("test:%3d %3d %3d\n",$page,$Y,$X)} =
+ "\\startFDFcomment[$page]" .
+ sprintf("[%.3f,%.3f]",$X,$Y) .
+ "\n$str\n\\stopFDFcomment\n\n" } }
+
+exit unless (open (PDF,"<$filename.pdf")) ; binmode PDF ;
+exit unless (open (FDF,"<$filename.fdf")) ;
+exit unless (open (TAN,">$filename.tan")) ;
+
+print "processing $filename ... " ;
+
+$PDFllx = 0 ; $PDFlly = 0 ; $PDFurx = 597 ; $PDFury = 847 ;
+
+while (<PDF>)
+ { if (/\/MediaBox\s*\[\s*($D+)\s*($D+)\s*($D+)\s*($D+)/o)
+ { $PDFllx = $1 ; $PDFlly = $2 ; $PDFurx = $3 ; $PDFury = $4 ;
+ last } }
+
+$_ = "" ; while ($Line=<FDF>) { chomp $Line; $_ .= $Line }
+
+s/\\n/ /go ;
+s/\\\s//go ;
+
+s/\\225/\\\/L/go ; s/\\226/\\OE/go ; s/\\227/\\vS/go ;
+s/\\230/\\"Y/go ; s/\\231/\\vZ/go ; s/\\233/\\\/l/go ;
+s/\\234/\\oe/go ; s/\\235/\\vs/go ; s/\\236/\\vz/go ;
+s/\\253/\\<</go ; s/\\273/\\>>/go ; s/\\300/\\`A/go ;
+s/\\301/\\'A/go ; s/\\302/\\^A/go ; s/\\303/\\~A/go ;
+s/\\304/\\"A/go ; s/\\305/\\oA/go ; s/\\306/\\AE/go ;
+s/\\307/\\,C/go ; s/\\310/\\`E/go ; s/\\311/\\'E/go ;
+s/\\312/\\^E/go ; s/\\313/\\"E/go ; s/\\314/\\`I/go ;
+s/\\315/\\'I/go ; s/\\316/\\^I/go ; s/\\317/\\"I/go ;
+s/\\321/\\~N/go ; s/\\322/\\`O/go ; s/\\323/\\'O/go ;
+s/\\324/\\^O/go ; s/\\325/\\~O/go ; s/\\326/\\"O/go ;
+s/\\330/\\\/O/go ; s/\\331/\\`U/go ; s/\\332/\\'U/go ;
+s/\\333/\\^U/go ; s/\\334/\\"U/go ; s/\\335/\\'Y/go ;
+s/\\337/\\SS/go ; s/\\340/\\`a/go ; s/\\341/\\'a/go ;
+s/\\342/\\^a/go ; s/\\343/\\~a/go ; s/\\344/\\"a/go ;
+s/\\345/\\oa/go ; s/\\346/\\ae/go ; s/\\347/\\,c/go ;
+s/\\350/\\`e/go ; s/\\351/\\'e/go ; s/\\352/\\^e/go ;
+s/\\353/\\"e/go ; s/\\354/\\`i/go ; s/\\355/\\'i/go ;
+s/\\356/\\^i/go ; s/\\357/\\"i/go ; s/\\361/\\~n/go ;
+s/\\362/\\`o/go ; s/\\363/\\'o/go ; s/\\364/\\^o/go ;
+s/\\365/\\~o/go ; s/\\366/\\"o/go ; s/\\370/\\\/o/go ;
+s/\\371/\\`u/go ; s/\\372/\\'u/go ; s/\\373/\\^u/go ;
+s/\\374/\\"u/go ; s/\\375/\\'y/go ; s/\\377/\\"y/go ;
+
+s/\\(\d\d\d)/[$1]/go ;
+
+while (s/(\d+)(\s+\d+\s+obj)(.*?)endobj/saveobject($1,$3)/goe) { }
+
+$wrap::columns = 80 ;
+
+foreach $key (sort keys %stack)
+ { print TAN wrap("","",$stack{$key}) }
+
+close (PDF) ; close (FDF) ; close (TAN) ;
+
+if (open (TAN,">fdf-tan.tex"))
+ { print TAN "% interface=en output=pdftex\n\n" .
+ "\\setupcolors[state=start]\n\n" .
+ "\\setupinteraction[state=start]\n\n" .
+ "\\setupbodyfont[pos,10pt]\n\n" .
+ "\\starttext\n\n" .
+ "\\usemodule[fdfann]\n\n" .
+ "\\annotatepages[$filename]\n\n" .
+ "\\stoptext\n" ;
+ close (TAN) }
+
+print "$nn annotations found, run 'texexec fdf-tan'\n" ;
diff --git a/context/perltk/mptopdf.pl b/context/perltk/mptopdf.pl
new file mode 100644
index 000000000..48b43f655
--- /dev/null
+++ b/context/perltk/mptopdf.pl
@@ -0,0 +1,46 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' && eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+#D \module
+#D [ file=mptopdf.pl,
+#D version=2000.05.29,
+#D title=converting MP to PDF,
+#D subtitle=\MPTOPDF,
+#D author=Hans Hagen,
+#D date=\currentdate,
+#D url=www.pragma-ade.nl,
+#D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}]
+#C
+#C This module is part of the \CONTEXT\ macro||package and is
+#C therefore copyrighted by \PRAGMA. See licen-en.pdf for
+#C details.
+
+$program = "MPtoPDF 1.0" ;
+$pattern = $ARGV[0] ;
+$done = 0 ;
+$report = '' ;
+
+if (($pattern eq '')||($pattern =~ /^\-+(h|help)$/io))
+ { print "\n$program: provide MP output file (or pattern)\n" ;
+ exit }
+elsif (-e $pattern)
+ { @files = ($pattern) }
+elsif ($pattern =~ /.\../o)
+ { @files = glob "$pattern" }
+else
+ { $pattern .= '.*' ;
+ @files = glob "$pattern" }
+
+foreach $file (@files)
+ { $_ = $file ;
+ if (s/\.(\d+)$// && -e $file)
+ { system ("pdftex \&mptopdf \\relax $file") ;
+ rename ("$_.pdf", "$_-$1.pdf") ;
+ if ($done) { $report .= " +" }
+ $report .= " $_-$1.pdf" ;
+ ++$done } }
+
+if ($done)
+ { print "\n$program: $pattern is converted to$report\n" }
+else
+ { print "\n$program: no filename matches $pattern\n" }
diff --git a/context/perltk/runperl.zip b/context/perltk/runperl.zip
new file mode 100644
index 000000000..4855544f0
--- /dev/null
+++ b/context/perltk/runperl.zip
Binary files differ
diff --git a/context/perltk/texexec.pl b/context/perltk/texexec.pl
new file mode 100644
index 000000000..0f47a5089
--- /dev/null
+++ b/context/perltk/texexec.pl
@@ -0,0 +1,1707 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' && eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+#D \module
+#D [ file=texexec.pl,
+#D version=2000.03.25,
+#D title=running \ConTeXt,
+#D subtitle=\TEXEXEC,
+#D author=Hans Hagen,
+#D date=\currentdate,
+#D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+#C
+#C This module is part of the \CONTEXT\ macro||package and is
+#C therefore copyrighted by \PRAGMA. See licen-en.pdf for
+#C details.
+
+# Thanks to Tobias Burnus for the german translations.
+# Thanks to Thomas Esser for hooking it into web2c
+# Thanks to Taco Hoekwater for suggesting improvements
+
+#D We started with a hack provided by Thomas Esser. This
+#D expression replaces the unix specific line \type
+#D {#!/usr/bin/perl}.
+
+use Cwd ;
+use Time::Local ;
+use Config ;
+use Getopt::Long ;
+
+my %ConTeXtInterfaces ; # otherwise problems with strict
+my %ResponceInterface ; # since i dunno how to allocate else
+my %Help ;
+
+#use strict ;
+
+#D In this script we will launch some programs and other
+#D scripts. \TEXEXEC\ uses an ini||file to sort out where
+#D those programs are stored. Two boolean variables keep
+#D track of the way to call the programs. In \TEXEXEC,
+#D \type {$dosish} keeps track of the operating system.
+#D It will be no surprise that Thomas Esser provided me
+#D the neccessary code to accomplish this.
+
+$ENV{"MPXCOMMAND"} = "0" ; # otherwise loop
+
+my $dosish = ($Config{'osname'} =~ /dos|win/i) ;
+
+my $TeXUtil = 'texutil' ;
+my $TeXExec = 'texexec' ;
+my $DVIspec = 'dvispec' ;
+my $SGMLtoTeX = 'sgml2tex' ;
+my $FDFtoTeX = 'fdf2tex' ;
+
+my $MetaFun = 'metafun' ;
+my $MpToPdf = 'mptopdf' ;
+
+$Getopt::Long::passthrough = 1 ; # no error message
+$Getopt::Long::autoabbrev = 1 ; # partial switch accepted
+
+my $AddEmpty = '' ;
+my $Alone = 0 ;
+my $Optimize = 0 ;
+my $ForceTeXutil = 0 ;
+my $Arrange = 0 ;
+my $BackSpace = '0pt' ;
+my $Background = '' ;
+my $CenterPage = 0 ;
+my $ConTeXtInterface = 'unknown' ;
+my $Convert = '' ;
+my $DoMPTeX = 0 ;
+my $DoMPXTeX = 0 ;
+my $EnterBatchMode = 0 ;
+my $Environment = '' ;
+my $FastMode = 0 ;
+my $FinalMode = 0 ;
+my $Format = '' ;
+my $MpDoFormat = '' ;
+my $HelpAsked = 0 ;
+my $MainBodyFont = 'standard' ;
+my $MainLanguage = 'standard' ;
+my $MainResponse = 'standard' ;
+my $MakeFormats = 0 ;
+my $Markings = 0 ;
+my $Mode = '' ;
+my $NoArrange = 0 ;
+my $NoDuplex = 0 ;
+my $NOfRuns = 7 ;
+my $NoMPMode = 0 ;
+my $NoMPRun = 0 ;
+my $OutputFormat = 'standard' ;
+my $Pages = '' ;
+my $PageScale = '1000' ; # == 1.0
+my $PaperFormat = 'standard' ;
+my $PaperOffset = '0pt' ;
+my $PassOn = '' ;
+my $PdfArrange = 0 ;
+my $PdfSelect = 0 ;
+my $PdfCombine = 0 ;
+my $PrintFormat = 'standard' ;
+my $ProducePdf = 0 ;
+my $Result = 0 ;
+my $Suffix = '' ;
+my $RunOnce = 0 ;
+my $Selection = '' ;
+my $Combination = '2*4' ;
+my $SilentMode = 0 ;
+my $TeXProgram = '' ;
+my $TeXTranslation = '' ;
+my $TextWidth = '0pt' ;
+my $TopSpace = '0pt' ;
+my $TypesetFigures = 0 ;
+my $TypesetListing = 0 ;
+my $TypesetModule = 0 ;
+my $UseColor = 0 ;
+my $Verbose = 0 ;
+my $PdfCopy = 0 ;
+my $LogFile = "" ;
+
+&GetOptions
+ ( "arrange" => \$Arrange ,
+ "batch" => \$EnterBatchMode ,
+ "color" => \$UseColor ,
+ "centerpage" => \$CenterPage ,
+ "convert=s" => \$Convert ,
+ "environment=s" => \$Environment ,
+ "fast" => \$FastMode ,
+ "final" => \$FinalMode ,
+ "format=s" => \$Format ,
+ "mpformat=s" => \$MpDoFormat ,
+ "help" => \$HelpAsked ,
+ "interface=s" => \$ConTeXtInterface ,
+ "language=s" => \$MainLanguage ,
+ "bodyfont=s" => \$MainBodyFont ,
+ "response=s" => \$MainResponse ,
+ "make" => \$MakeFormats ,
+ "mode=s" => \$Mode ,
+ "module" => \$TypesetModule ,
+ "figures=s" => \$TypesetFigures ,
+ "listing" => \$TypesetListing ,
+ "mptex" => \$DoMPTeX ,
+ "mpxtex" => \$DoMPXTeX ,
+ "noarrange" => \$NoArrange ,
+ "nomp" => \$NoMPMode ,
+ "nomprun" => \$NoMPRun ,
+ "once" => \$RunOnce ,
+ "output=s" => \$OutputFormat ,
+ "pages=s" => \$Pages ,
+ "paper=s" => \$PaperFormat ,
+ "passon=s" => \$PassOn ,
+ "pdf" => \$ProducePdf ,
+ "pdfarrange" => \$PdfArrange ,
+ "pdfselect" => \$PdfSelect ,
+ "pdfcombine" => \$PdfCombine ,
+ "pdfcopy" => \$PdfCopy ,
+ "scale=s" => \$PageScale ,
+ "selection=s" => \$Selection ,
+ "combination=s" => \$Combination ,
+ "noduplex" => \$NoDuplex ,
+ "paperoffset=s" => \$PaperOffset ,
+ "backspace=s" => \$BackSpace ,
+ "topspace=s" => \$TopSpace ,
+ "markings" => \$Markings ,
+ "textwidth=s" => \$TextWidth ,
+ "addempty=s" => \$AddEmpty ,
+ "background=s" => \$Background ,
+ "logfile=s" => \$LogFile ,
+ "print=s" => \$PrintFormat ,
+ "results=s" => \$Result ,
+ "suffix=s" => \$Suffix ,
+ "runs=s" => \$NOfRuns ,
+ "silent" => \$SilentMode ,
+ "tex=s" => \$TeXProgram ,
+ "verbose" => \$Verbose ,
+ "alone" => \$Alone ,
+ "optimize" => \$Optimize ,
+ "texutil" => \$ForceTeXutil ) ;
+
+$SIG{INT} = "IGNORE" ;
+
+if ($ARGV[0] =~ /\.mpx$/io) # catch -tex=.... bug in mpost
+ { $TeXProgram = '' ; $DoMPXTeX = 1 ; $NoMPMode = 1 }
+
+if ($DoMPTeX||$DoMPXTeX)
+ { $RunOnce = 1 ;
+ $ProducePdf = 0 }
+
+if ($PdfArrange||$PdfSelect||$PdfCopy||$PdfCombine)
+ { $ProducePdf = 1 ;
+ $RunOnce = 1 }
+
+if ($ProducePdf)
+ { $OutputFormat = "pdf" }
+
+if ($RunOnce||$Pages||$TypesetFigures||$TypesetListing)
+ { $NOfRuns = 1 }
+
+if (($LogFile ne '')&&($LogFile =~ /\w+\.log$/io))
+ { open (LOGFILE,">$LogFile") ;
+ *STDOUT = *LOGFILE ;
+ *STDERR = *LOGFILE }
+
+my $Program = " TeXExec 2.3 - ConTeXt / PRAGMA ADE 1997-2000" ;
+
+print "\n$Program\n\n";
+
+my $pathslash = '/' ; if ($0 =~ /\\/) { $pathslash = "\\" }
+my $cur_path = ".$pathslash" ;
+my $own_path = $0 ; $own_path =~ s/texexec(\.pl|\.bat|)//io ;
+
+sub checked_path
+ { my $path = shift ;
+ if ((defined($path))&&($path ne ''))
+ { $path =~ s/[\/\\]/$pathslash/go ;
+ $path =~ s/[\/\\]*$//go ;
+ $path .= $pathslash }
+ else
+ { $path = '' }
+ return $path }
+
+sub checked_file
+ { my $path = shift ;
+ if ((defined($path))&&($path ne ''))
+ { $path =~ s/[\/\\]/$pathslash/go }
+ else
+ { $path = '' }
+ return $path }
+
+sub CheckPath
+ { my ($Key, $Value) = @_ ;
+ if (($Value =~ /\//)&&($Value !~ /\;/)) # no multipath test yet
+ { $Value = checked_path($Value) ;
+ unless (-d $Value)
+ { print " error : $Key set to unknown path $Value\n" } } }
+
+# set <variable> to <value>
+# for <script> set <variable> to <value>
+# except for <script> set <variable> to <value>
+
+my $IniPath = '' ;
+
+#D The kpsewhich program is not available in all tex distributions, so
+#D we have to locate it before running it (as suggested by Thomas).
+
+my @paths ;
+
+if ($ENV{PATH} =~ /\;/)
+ { @paths = split(/\;/,$ENV{PATH}) }
+else
+ { @paths = split(/\:/,$ENV{PATH}) }
+
+my $kpsewhich = '' ;
+
+if ($IniPath eq '')
+ { foreach (@paths)
+ { my $p = checked_path($_) . 'kpsewhich' ;
+ if ((-e $p)||(-e $p . '.exe'))
+ { $kpsewhich = $p ;
+ $IniPath = `$kpsewhich --format="other text files" -progname=context texexec.ini` ;
+ chomp($IniPath) ;
+ last } }
+ if ($Verbose)
+ { if ($kpsewhich eq '')
+ { print " locating ini file : kpsewhich not found in path\n" }
+ elsif ($IniPath eq '')
+ { print " locating ini file : not found by kpsewhich\n" }
+ else
+ { print " locating ini file : found by kpsewhich\n" } } }
+
+#D Now, when we didn't find the \type {kpsewhich}, we have
+#D to revert to some other method. We could have said:
+#D
+#D \starttypen
+#D unless ($IniPath)
+#D { $IniPath = `perl texpath.pl texexec.ini` }
+#D \stoptypen
+#D
+#D But loading perl (for the second time) take some time. Instead of
+#D providing a module, which can introduce problems with loading, I
+#D decided to copy the code of \type {texpath} into this file.
+
+use File::Find ;
+
+my ($ReportPath, $ReportName, $ReportFile) = (0,0,1) ;
+my ($FileToLocate, $PathToStartOn) = ('','') ;
+my ($LocatedPath, $LocatedName, $LocatedFile) = ('','','') ;
+
+sub DoLocateFile # we have to keep on pruning
+ { if (lc $_ eq $FileToLocate)
+ { $LocatedPath = $File::Find::dir ;
+ $LocatedName = $_ ;
+ $LocatedFile = $File::Find::name }
+ if ($LocatedName) { $File::Find::prune = 1 } }
+
+sub LocatedFile
+ { $PathToStartOn = shift ;
+ $FileToLocate = lc shift ;
+ if ($FileToLocate eq '')
+ { $FileToLocate = $PathToStartOn ;
+ $PathToStartOn = $own_path }
+ ($LocatedPath, $LocatedName, $LocatedFile) = ('','','') ;
+ if ($FileToLocate ne '')
+ { if (-e $cur_path . $FileToLocate)
+ { $LocatedPath = $cur_path ;
+ $LocatedName = $FileToLocate ;
+ $LocatedFile = $cur_path . $FileToLocate }
+ else
+ { $_ = checked_path($PathToStartOn) ;
+ if (-e $_ . $FileToLocate)
+ { $LocatedPath = $_ ;
+ $LocatedName = $FileToLocate ;
+ $LocatedFile = $_ . $FileToLocate }
+ else
+ { $_ = checked_path($PathToStartOn) ;
+ if (/(.*?[\/\\]texmf[\/\\]).*/i)
+ { my $SavedRoot = $1 ;
+ File::Find::find(\&DoLocateFile, checked_path($1 . 'context/')) ;
+ unless ($LocatedFile)
+ { File::Find::find(\&DoLocateFile, $SavedRoot) } }
+ else
+ { $_ = checked_path($_) ;
+ File::Find::find(\&DoLocateFile, $_) } } } }
+ return ($LocatedPath, $LocatedName, $LocatedFile) }
+
+#D So now we can say:
+
+unless ($IniPath)
+ { ($LocatedPath, $LocatedName, $IniPath) = LocatedFile($own_path,'texexec.ini') ;
+ if ($Verbose)
+ { if ($IniPath eq '')
+ { print " locating ini file : not found by searching\n" }
+ else
+ { print " locating ini file : found by searching\n" } } }
+
+#D The last resorts:
+
+unless ($IniPath)
+ { if ($ENV{TEXEXEC_INI_FILE})
+ { $IniPath = checked_path($ENV{TEXEXEC_INI_FILE}) . 'texexec.ini' ;
+ unless (-e $IniPath) { $IniPath = '' } }
+ if ($Verbose)
+ { if ($IniPath eq '')
+ { print " locating ini file : no environment variable set\n" }
+ else
+ { print " locating ini file : found by environment variable\n" } } }
+
+unless ($IniPath)
+ { $IniPath = $own_path . 'texexec.ini' ;
+ unless (-e $IniPath) { $IniPath = '' }
+ if ($Verbose)
+ { if ($IniPath eq '')
+ { print " locating ini file : not found in own path\n" }
+ else
+ { print " locating ini file : found in own path\n" } } }
+
+#D Now we're ready for loading the initialization file! We
+#D also define some non strict variables. Using \type {$Done}
+#D permits assignments.
+
+my %Done ;
+
+unless ($IniPath)
+ { $IniPath = 'texexec.ini' }
+
+if (open(INI, $IniPath))
+ { if ($Verbose)
+ { print " reading : $IniPath\n" }
+ while (<INI>)
+ { if (!/^[a-zA-Z\s]/oi)
+ { }
+ elsif (/except for\s+(\S+)\s+set\s+(\S+)\s*to\s*(.*)\s*/goi)
+ { my $one = $1 ; my $two= $2 ; my $three = $3 ;
+ if ($one ne $Done{"TeXShell"})
+ { $three =~ s/^[\'\"]// ; $three =~ s/[\'\"]$// ; $three =~ s/\s*$// ;
+ if ($Verbose)
+ { print " setting : '$two' to '$three' except for '$one'\n" }
+ $Done{"$two"} = $three ;
+ CheckPath ($two, $three) } }
+ elsif (/for\s+(\S+)\s+set\s+(\S+)\s*to\s*(.*)\s*/goi)
+ { my $one = $1 ; my $two= $2 ; my $three = $3 ; $three =~ s/\s*$// ;
+ if ($one eq $Done{"TeXShell"})
+ { $three =~ s/^[\'\"]// ; $three =~ s/[\'\"]$// ;
+ if ($Verbose)
+ { print " setting : '$two' to '$three' for '$one'\n" }
+ $Done{"$two"} = $three ;
+ CheckPath ($two, $three) } }
+ elsif (/set\s+(\S+)\s*to\s*(.*)\s*/goi)
+ { my $one = $1 ; my $two= $2 ;
+ unless (defined($Done{"$one"}))
+ { $two =~ s/^[\'\"]// ; $two =~ s/[\'\"]$// ; $two =~ s/\s*$// ;
+ if ($Verbose)
+ { print " setting : '$one' to '$two' for 'all'\n" }
+ $Done{"$one"} = $two ;
+ CheckPath ($one, $two) } } }
+ close (INI) ;
+ if ($Verbose)
+ { print "\n" } }
+elsif ($Verbose)
+ { print " warning : $IniPath not found, did you read 'texexec.rme'?\n" ;
+ exit 1 }
+else
+ { print " warning : $IniPath not found, try 'texexec --verbose'\n" ;
+ exit 1 }
+
+sub IniValue
+ { my ($Key,$Default) = @_ ;
+ if (defined($Done{$Key})) { $Default = $Done{$Key} }
+ if ($Verbose)
+ { print " used setting : $Key = $Default\n" }
+ return $Default }
+
+my $TeXShell = IniValue('TeXShell' , '' ) ;
+my $SetupPath = IniValue('SetupPath' , '' ) ;
+my $UserInterface = IniValue('UserInterface' , 'en' ) ;
+my $UsedInterfaces = IniValue('UsedInterfaces' , 'en' ) ;
+my $TeXFontsPath = IniValue('TeXFontsPath' , '.' ) ;
+my $MpExecutable = IniValue('MpExecutable' , 'mpost' ) ;
+my $MpToTeXExecutable = IniValue('MpToTeXExecutable' , 'mpto' ) ;
+my $DviToMpExecutable = IniValue('DviToMpExecutable' , 'dvitomp' ) ;
+my $TeXProgramPath = IniValue('TeXProgramPath' , '' ) ;
+my $TeXFormatPath = IniValue('TeXFormatPath' , '' ) ;
+my $ConTeXtPath = IniValue('ConTeXtPath' , '' ) ;
+my $TeXScriptsPath = IniValue('TeXScriptsPath' , '' ) ;
+my $TeXExecutable = IniValue('TeXExecutable' , 'tex' ) ;
+my $TeXVirginFlag = IniValue('TeXVirginFlag' , '-ini' ) ;
+my $TeXBatchFlag = IniValue('TeXBatchFlag' , '-int=batchmode' ) ;
+my $MpBatchFlag = IniValue('MpBatchFlag' , '-int=batchmode' ) ;
+my $TeXPassString = IniValue('TeXPassString' , '' ) ;
+my $TeXFormatFlag = IniValue('TeXFormatFlag' , '' ) ;
+my $MpFormatFlag = IniValue('MpFormatFlag' , '' ) ;
+my $MpVirginFlag = IniValue('MpVirginFlag' , '-ini' ) ;
+my $MpPassString = IniValue('MpPassString' , '' ) ;
+my $MpFormat = IniValue('MpFormat' , $MetaFun ) ;
+
+my $FmtLanguage = IniValue('FmtLanguage' , '' ) ;
+my $FmtBodyFont = IniValue('FmtBodyFont' , '' ) ;
+my $FmtResponse = IniValue('FmtResponse' , '' ) ;
+my $TcXPath = IniValue('TcXPath' , '' ) ;
+
+if (($FmtLanguage)&&($MainLanguage eq 'standard'))
+ { $MainLanguage = $FmtLanguage }
+if (($FmtBodyFont)&&($MainBodyFont eq 'standard'))
+ { $MainBodyFont = $FmtBodyFont }
+if (($FmtResponse)&&($MainResponse eq 'standard'))
+ { $MainResponse = $FmtResponse }
+
+if ($Verbose) { print "\n" }
+
+if ($TeXFormatFlag eq "" )
+ { $TeXFormatFlag = "&" }
+
+if ($MpFormatFlag eq "")
+ { $MpFormatFlag = "&" }
+
+unless ($dosish)
+ { if ($TeXFormatFlag == "&") { $TeXFormatFlag = "\\&" }
+ if ($MpFormatFlag == "&") { $MpFormatFlag = "\\&" } }
+
+if ($TeXProgram)
+ { $TeXExecutable = $TeXProgram }
+
+my $fmtutil = '' ;
+
+if ($Alone)
+ { if ($Verbose)
+ { print " generating format : not using fmtutil\n" } }
+elsif ($TeXShell =~ /tetex|fptex/i)
+ { foreach (@paths)
+ { my $p = checked_path($_) . 'fmtutil' ;
+ if (-e $p)
+ { $fmtutil = $p ; last }
+ elsif (-e $p . '.exe')
+ { $fmtutil = $p . '.exe' ; last } }
+ if ($Verbose)
+ { if ($fmtutil eq '')
+ { print " locating fmtutil : not found in path\n" }
+ else
+ { print " locating fmtutil : found\n" } } }
+
+unless ($TeXScriptsPath)
+ { $TeXScriptsPath = $own_path }
+
+unless ($ConTeXtPath)
+ { $ConTeXtPath = $TeXScriptsPath }
+
+if ($ENV{"HOME"})
+ { if ($SetupPath) { $SetupPath .= "," }
+ $SetupPath .= $ENV{"HOME"} }
+
+if ($TeXFormatPath) { $TeXFormatPath =~ s/[\/\\]$// ; $TeXFormatPath .= '/' }
+if ($ConTeXtPath) { $ConTeXtPath =~ s/[\/\\]$// ; $ConTeXtPath .= '/' }
+if ($SetupPath) { $SetupPath =~ s/[\/\\]$// ; $SetupPath .= '/' }
+if ($TeXScriptsPath) { $TeXScriptsPath =~ s/[\/\\]$// ; $TeXScriptsPath .= '/' }
+
+my %OutputFormats ;
+
+$OutputFormats{pdf} = "pdftex" ;
+$OutputFormats{pdftex} = "pdftex" ;
+$OutputFormats{dvips} = "dvips" ;
+$OutputFormats{dvipsone} = "dvipsone" ;
+$OutputFormats{acrobat} = "acrobat" ;
+$OutputFormats{dviwindo} = "dviwindo" ;
+$OutputFormats{dviview} = "dviview" ;
+
+my @ConTeXtFormats = ("nl", "en", "de", "cz", "uk", "it") ;
+
+sub SetInterfaces
+ { my ($short,$long,$full) = @_ ;
+ $ConTeXtInterfaces{$short} = $short ;
+ $ConTeXtInterfaces{$long} = $short ;
+ $ResponseInterface{$short} = $full ;
+ $ResponseInterface{$long} = $full }
+
+#SetInterfaces ( "en" , "unknown" , "english" ) ;
+
+SetInterfaces ( "nl" , "dutch" , "dutch" ) ;
+SetInterfaces ( "en" , "english" , "english" ) ;
+SetInterfaces ( "de" , "german" , "german" ) ;
+SetInterfaces ( "cz" , "czech" , "czech" ) ;
+SetInterfaces ( "uk" , "brittish" , "english" ) ;
+SetInterfaces ( "it" , "italian" , "italian" ) ;
+SetInterfaces ( "no" , "norwegian" , "norwegian" ) ;
+SetInterfaces ( "xx" , "experimental" , "english" ) ;
+
+$Help{ARRANGE} = " --arrange process and arrange\n" ;
+$Help{BATCH} = " --batch run in batch mode (don't pause)\n" ;
+$Help{CENTERPAGE} = " --centerpage center the page on the paper\n" ;
+$Help{COLOR} = " --color enable color (when not yet enabled)\n" ;
+$Help{CONVERT} = " --convert converts file first\n" ;
+$Help{convert} =
+$Help{CONVERT} . " =xml : XML => TeX\n"
+ . " =sgml : SGML => TeX\n" ;
+$Help{ENVIRONMENT} = " --environment load some environments first\n" ;
+$Help{environment} =
+$Help{ENVIRONMENT} . " =name : list of environments\n" ;
+$Help{FAST} = " --fast skip as much as possible\n" ;
+$Help{FIGURES} = " --figures typeset figure directory\n" ;
+$Help{figures} =
+$Help{FIGURES} . " =a : room for corrections\n"
+ . " =b : just graphics\n"
+ . " =c : one (cropped) per page\n"
+ . " --paperoffset room left at paper border\n" ;
+$Help{FINAL} = " --final add a final run without skipping\n" ;
+$Help{FORMAT} = " --format fmt file\n" ;
+$Help{format} =
+$Help{FORMAT} . " =name : format file (memory dump) \n" ;
+$Help{MPFORMAT} = " --mpformat mem file\n" ;
+$Help{mpformat} =
+$Help{MPFORMAT} . " =name : format file (memory dump) \n" ;
+$Help{INTERFACE} = " --interface user interface\n" ;
+$Help{interface} =
+$Help{INTERFACE} . " =en : English\n"
+ . " =nl : Dutch\n"
+ . " =de : German\n"
+ . " =cz : Czech\n"
+ . " =uk : Brittish\n"
+ . " =it : Italian\n" ;
+$Help{LANGUAGE} = " --language main hyphenation language \n" ;
+$Help{language} =
+$Help{LANGUAGE} . " =xx : standard abbreviation \n" ;
+$Help{LISTING} = " --listing produce a verbatim listing\n" ;
+$Help{listing} =
+$Help{LISTING} . " --backspace inner margin of the page\n" .
+ " --topspace top/bottom margin of the page\n" ;
+$Help{MAKE} = " --make build format files \n" ;
+$Help{make} =
+$Help{MAKE} . " --language patterns to include\n" .
+ " --bodyfont bodyfont to preload\n" .
+ " --response response interface language\n" .
+ " --format TeX format\n" .
+ " --mpformat MetaPost format\n" .
+ " --program TeX program\n" ;
+$Help{MODE} = " --mode running mode \n" ;
+$Help{mode} =
+$Help{MODE} . " =list : modes to set\n" ;
+$Help{MODULE} = " --module typeset tex/pl/mp module\n" ;
+$Help{MPTEX} = " --mptex run an MetaPost plus btex-etex cycle\n" ;
+$Help{MPXTEX} = " --mpxtex generatet an MetaPostmpx file\n" ;
+$Help{NOARRANGE} = " --noarrange process but ignore arrange\n" ;
+$Help{NOMP} = " --nomp don't run MetaPost at all\n" ;
+$Help{NOMPRUN} = " --nomprun don't run MetaPost at runtime\n" ;
+$Help{ONCE} = " --once run TeX only once (no TeXUtil either)\n" ;
+$Help{OUTPUT} = " --output specials to use\n" ;
+$Help{output} =
+$Help{OUTPUT} . " =pdftex\n"
+ . " =dvips\n"
+ . " =dvipsone\n"
+ . " =dviwindo\n"
+ . " =dviview\n" ;
+$Help{PASSON} = ' --passon switches to pass to TeX ("--src" for MikTeX)' . "\n" ;
+$Help{PAGES} = " --pages pages to output\n" ;
+$Help{pages} =
+$Help{PAGES} . " =odd : odd pages\n" .
+ " =even : even pages\n" .
+ " =x,y:z : pages x and y to z\n" ;
+$Help{PAPER} = " --paper paper input and output format\n" ;
+$Help{paper} =
+$Help{PAPER} . " =a4a3 : A4 printed on A3\n" .
+ " =a5a4 : A5 printed on A4\n" ;
+$Help{PDF} = " --pdf produce PDF directly using pdf(e)tex\n" ;
+$Help{PDFARRANGE} = " --pdfarrange arrange pdf pages\n" ;
+$Help{pdfarrange} =
+$Help{PDFARRANGE} . " --paperoffset room left at paper border\n" .
+ " --paper paper format\n" .
+ " --noduplex single sided\n" .
+ " --backspace inner margin of the page\n" .
+ " --topspace top/bottom margin of the page\n" .
+ " --markings add cutmarks\n" .
+ " --background =background graphic\n" .
+ " --addempty add empty page after\n" .
+ " --textwidth width of the original (one sided) text\n" ;
+$Help{PDFCOMBINE} = " --pdfcombine combine pages to one page\n" ;
+$Help{pdfcombine} =
+$Help{PDFCOMBINE} . " --paperformat paper format\n" .
+ " --combination n*m pages per page\n" .
+ " --paperoffset room left at paper border\n" ;
+$Help{PDFCOPY} = " --pdfcopy scale pages down/up\n" ;
+$Help{pdfcopy} =
+$Help{PDFCOPY} . " --scale new page scale\n" .
+ " --paperoffset room left at paper border\n" .
+ " --background =background graphic\n" ;
+$Help{PDFSELECT} = " --pdfselect select pdf pages\n" ;
+$Help{pdfselect} =
+$Help{PDFSELECT} . " --selection pages to select\n" .
+ " =odd : odd pages\n" .
+ " =even : even pages\n" .
+ " =x,y:z : pages x and y to z\n" .
+ " --paperoffset room left at paper border\n" .
+ " --paperformat paper format\n" .
+ " --backspace inner margin of the page\n" .
+ " --topspace top/bottom margin of the page\n" .
+ " --markings add cutmarks\n" .
+ " --background =background graphic\n" .
+ " --addempty add empty page after\n" .
+ " --textwidth width of the original (one sided) text\n" ;
+$Help{PRINT} = " --print page imposition scheme\n" ;
+$Help{print} =
+$Help{PRINT} . " =up : 2 pages per sheet doublesided \n" .
+ " =down : 2 rotated pages per sheet doublesided \n" ;
+$Help{RESULT} = " --result resulting file \n" ;
+$Help{result} =
+$Help{RESULT} . " =name : filename \n" ;
+$Help{SUFFIX} = " --suffix resulting file suffix\n" ;
+$Help{suffix} =
+$Help{SUFFIX} . " =string : suffix \n" ;
+$Help{RUNS} = " --runs maximum number of TeX runs \n" ;
+$Help{runs} =
+$Help{RUNS} . " =n : number of runs\n" ;
+$Help{SILENT} = " --silent minimize (status) messages\n" ;
+$Help{TEX} = " --tex TeX binary \n" ;
+$Help{tex} =
+$Help{TEX} . " =name : binary of executable \n" ;
+$Help{VERBOSE} = " --verbose shows some additional info \n" ;
+$Help{HELP} = " --help show this or more, e.g. '--help interface'\n" ;
+
+$Help{ALONE} = " --alone bypass utilities (e.g. fmtutil for non-standard fmt's)\n" ;
+$Help{TEXUTIL} = " --texutil force TeXUtil run\n" ;
+
+if ($HelpAsked)
+ { if (@ARGV)
+ { foreach (@ARGV) { s/\-//go ; print "$Help{$_}\n" } }
+ else
+ { print $Help{ARRANGE} ;
+ print $Help{BATCH} ;
+ print $Help{CENTERPAGE} ;
+ print $Help{COLOR} ;
+ print $Help{CONVERT} ;
+ print $Help{ENVIRONMENT} ;
+ print $Help{FAST} ;
+ print $Help{FIGURES} ;
+ print $Help{FINAL} ;
+ print $Help{FORMAT} ;
+ print $Help{INTERFACE} ;
+ print $Help{LISTING} ;
+ print $Help{LANGUAGE} ;
+ print $Help{MAKE} ;
+ print $Help{MODE} ;
+ print $Help{MODULE} ;
+ print $Help{MPTEX} ;
+ print $Help{MPXTEX} ;
+ print $Help{NOARRANGE} ;
+ print $Help{NOMP} ;
+ print $Help{NOMPRUN} ;
+ print $Help{ONCE} ;
+ print $Help{OUTPUT} ;
+ print $Help{PAGES} ;
+ print $Help{PAPER} ;
+ print $Help{PASSON} ;
+ print $Help{PDFARRANGE} ;
+ print $Help{PDFCOMBINE} ;
+ print $Help{PDFCOPY} ;
+ print $Help{PDFSELECT} ;
+ print $Help{PDF} ;
+ print $Help{PRINT} ;
+ print $Help{RESULT} ;
+ print $Help{SUFFIX} ;
+ print $Help{RUNS} ;
+ print $Help{SILENT} ;
+ print $Help{TEX} ;
+ print $Help{VERBOSE} ;
+ print $Help{ALONE} ;
+ print $Help{TEXUTIL} ;
+ print "\n" ;
+ print $Help{HELP} ;
+ print "\n" }
+ exit 0 }
+
+my $FinalRunNeeded = 0 ;
+
+sub MPJobName
+ { my $JobName = shift ;
+ my $MPfile = shift ;
+ my $MPJobName = '' ;
+ if (-e "$JobName-$MPfile.mp")
+ { $MPJobName = "$JobName-$MPfile.mp" }
+ elsif (-e "$MPfile.mp")
+ { $MPJobName = "$MPfile.mp" }
+ else
+ { $MPJobName = "" }
+ return $MPJobName }
+
+sub RunPerlScript
+ { my ($ScriptName, $Options) = @_ ;
+ if ($dosish)
+ { if (-e "$TeXScriptsPath$ScriptName.pl")
+ { system ("perl $TeXScriptsPath$ScriptName.pl $Options") } }
+ else
+ { system ("$ScriptName $Options") } }
+
+sub ConvertXMLFile
+ { my $FileName = shift ; RunPerlScript($SGMLtoTeX, "$FileName.xml") }
+
+sub ConvertSGMLFile
+ { my $FileName = shift ; RunPerlScript($SGMLtoTeX, "$FileName.sgm") }
+
+my $FullFormat = '' ;
+
+sub CheckOutputFormat
+ { my $Ok = 1 ;
+ if ($OutputFormat ne 'standard')
+ { my @OutputFormat = split(/,/,$OutputFormat) ;
+ foreach my $F (@OutputFormat)
+ { if (defined($OutputFormats{lc $F}))
+ { my $OF = $OutputFormats{lc $F} ;
+ next if (",$FullFormat," =~ /\,$OF\,/) ;
+ if ($FullFormat) { $FullFormat .= "," }
+ $FullFormat .= "$OutputFormats{lc $F}" }
+ else
+ { $Ok = 0 } }
+ if (!$Ok)
+ { print $Help{output} }
+ elsif ($FullFormat)
+ { print OPT "\\setupoutput[$FullFormat]\n" } }
+ unless ($FullFormat)
+ { $FullFormat = $OutputFormat } } # 'standard' to terminal
+
+sub MakeOptionFile
+ { my ($FinalRun, $FastDisabled, $JobName) = @_ ;
+ open (OPT, ">$JobName.top") ;
+ print OPT "\\unprotect\n" ;
+ if ($Result) # no '' test
+ { print OPT "\\setupsystem[file=$Result]\n" }
+ elsif ($Suffix)
+ { print OPT "\\setupsystem[file=$JobName$Suffix]\n" }
+ $MainLanguage = lc $MainLanguage ;
+ unless ($MainLanguage eq "standard")
+ { print OPT "\\setuplanguage[$MainLanguage]\n" }
+# can best become : \use...[mik] / [web]
+if ($TeXShell eq (MikTeX))
+ { print OPT "\\def\\MPOSTbatchswitch \{$MpBatchString\}" ;
+ print OPT "\\def\\MPOSTformatswitch\{$MpPassString $MpFormatFlag\}" }
+#
+ if ($FullFormat ne 'standard')
+ { print OPT "\\setupoutput[$FullFormat]\n" }
+ if ($EnterBatchMode)
+ { print OPT "\\batchmode\n" }
+ if ($UseColor)
+ { print OPT "\\setupcolors[\\c!status=\\v!start]\n" }
+ if ($NoMPMode||$NoMPRun)
+ { print OPT "\\runMPgraphicsfalse\n" }
+ if (($FastMode)&&(!$FastDisabled))
+ { print OPT "\\fastmode\n" }
+ if ($SilentMode)
+ { print OPT "\\silentmode\n" }
+ if ($SetupPath)
+ { print OPT "\\setupsystem[\\c!gebied=\{$SetupPath\}]\n" }
+ $_ = $PaperFormat ;
+ #unless (($PdfArrange)||($PdfSelect)||($PdfCombine)||($PdfCopy))
+ unless (($PdfSelect)||($PdfCombine)||($PdfCopy))
+ { if (/.4.3/goi)
+ { print OPT "\\stelpapierformaatin[A4][A3]\n" }
+ elsif (/.5.4/goi)
+ { print OPT "\\stelpapierformaatin[A5][A4]\n" }
+ elsif (!/standard/)
+ { print OPT "\\stelpapierformaatin[$_][$_]\n" } }
+ if (($PdfSelect||$PdfCombine||$PdfCopy||$PdfArrange)&&($Background ne ''))
+ { print " background graphic : $Background\n" ;
+ print OPT "\\defineoverlay[whatever][{\\externalfigure[$Background][\\c!factor=\\v!max]}]\n" ;
+ print OPT "\\stelachtergrondenin[\\v!pagina][\\c!achtergrond=whatever]\n" }
+ if ($CenterPage)
+ { print OPT "\\stellayoutin[\\c!plaats=\\v!midden,\\c!markering=\\v!aan]\n" }
+ if ($NoArrange)
+ { print OPT "\\stelarrangerenin[\\v!blokkeer]\n" }
+ elsif ($Arrange||$PdfArrange)
+ { $FinalRunNeeded = 1 ;
+ if ($FinalRun)
+ { if ($PrintFormat =~ /.*up/goi)
+ { print OPT "\\stelarrangerenin[2UP,\\v!geroteerd,\\v!dubbelzijdig]\n" }
+ elsif ($PrintFormat =~ /.*down/goi)
+ { print OPT "\\stelarrangerenin[2DOWN,\\v!geroteerd,\\v!dubbelzijdig]\n" }
+ elsif ($PrintFormat =~ /.*side/goi)
+ { print OPT "\\stelarrangerenin[2SIDE,\\v!geroteerd,\\v!dubbelzijdig]\n" }
+ else
+ { print OPT "\\stelarrangerenin[$PrintFormat]\n" } }
+ else
+ { print OPT "\\stelarrangerenin[\\v!blokkeer]\n" } }
+ if ($Mode)
+ { print OPT "\\enablemode[$Mode]\n" }
+ if ($Pages)
+ { if (lc $Pages eq "odd")
+ { print OPT "\\chardef\\whichpagetoshipout=1\n" }
+ elsif (lc $Pages eq "even")
+ { print OPT "\\chardef\\whichpagetoshipout=2\n" }
+ else
+ { my @Pages = split (/\,/,$Pages) ;
+ $Pages = '' ;
+ foreach my $page (@Pages)
+ { if ($page =~ /\:/)
+ { my ($from,$to) = split (/\:/,$page) ;
+ foreach (my $i=$from;$i<=$to;$i++)
+ { $Pages .= $i . ',' } }
+ else
+ { $Pages .= $page . ',' } }
+ chop $Pages ;
+ print OPT "\\def\\pagestoshipout\{$Pages\}\n" } }
+ print OPT "\\protect\n" ;
+ if ($Environment)
+ { foreach my $E (split(/,/,$Environment)) { print OPT "\\omgeving $E\n" } }
+ close (OPT) ;
+ if (open(TMP,">cont-opt.bak")&&open(TMP,"<cont-opt.tex"))
+ { while (<OPT>) { print TMP $_ } } }
+
+my $UserFileOk = 0 ;
+my @MainLanguages ;
+my $AllLanguages = '' ;
+
+sub MakeUserFile
+ { $UserFileOk = 0 ;
+ return if (($MainLanguage eq 'standard')&&
+ ($MainBodyFont eq 'standard')) ;
+ print " preparing user file : cont-fmt.tex\n" ;
+ open (USR, ">cont-fmt.tex") ;
+ print USR "\\unprotect\n" ;
+ $AllLanguages = $MainLanguage ;
+ if ($MainLanguage ne 'standard')
+ { @MainLanguages = split (/\,/,$MainLanguage) ;
+ foreach (@MainLanguages)
+ { print USR "\\installlanguage[\\s!$_][\\c!status=\\v!start]\n" }
+ $MainLanguage = $MainLanguages[0] ;
+ print USR "\\setupcurrentlanguage[\\s!$MainLanguage]\n" }
+ if ($MainBodyFont ne 'standard')
+ { print USR "\\definefilesynonym[font-cmr][font-$MainBodyFont]\n" }
+ print USR "\\protect\n" ;
+ print USR "\\endinput\n" ;
+ close (USR) ;
+ ReportUserFile () ;
+ print "\n" ;
+ $UserFileOk = 1 }
+
+sub RemoveResponseFile
+ { unlink "mult-def.tex" }
+
+sub MakeResponseFile
+ { if ($MainResponse eq 'standard')
+ { RemoveResponseFile() }
+ elsif (! defined ($ResponseInterface{$MainResponse}))
+ { RemoveResponseFile() }
+ else
+ { my $MR = $ResponseInterface{$MainResponse} ;
+ print " preparing interface file : mult-def.tex\n" ;
+ print " response language : $MR\n" ;
+ open (DEF, ">mult-def.tex") ;
+ print DEF "\\def\\currentresponses\{$MR\}\n\\endinput\n" ;
+ close (DEF) } }
+
+sub RestoreUserFile
+ { unlink "cont-fmt.log" ;
+ rename "cont-fmt.tex", "cont-fmt.log" ;
+ ReportUserFile () }
+
+sub ReportUserFile
+ { return unless ($UserFileOk) ;
+ print "\n" ;
+ if ($MainLanguage ne 'standard')
+ { print " additional patterns : $AllLanguages\n" ;
+ print " default language : $MainLanguage\n" }
+ if ($MainBodyFont ne 'standard')
+ { print " default bodyfont : $MainBodyFont\n" } }
+
+sub CompareFiles # 2 = tuo
+ { my ($File1, $File2) = @_ ;
+ my $Str1 = my $Str2 = '' ;
+ if ((-s $File1 eq -s $File2)&&(open(TUO1,$File1))&&(open(TUO2,$File2)))
+ { while(1)
+ { $Str1 = <TUO1> ;
+ $Str2 = <TUO2> ;
+ if ($Str1 eq $Str2)
+ { unless ($Str1) { close(TUO1) ; close(TUO2) ; return 1 } }
+ else
+ { close(TUO1) ; close(TUO2) ; return 0 } } }
+ else
+ { return 0 } }
+
+sub CheckPositions
+ { return if ($DVIspec eq '') ;
+ my $JobName = shift ; my $TuoName = "$JobName.tuo" ;
+ if (open(POS,"$TuoName"))
+ { seek POS, -s $TuoName -5000, 0 ;
+ while (<POS>)
+ { if (/\% *position commands *\: *(\d*) *\(unresolved\)/io)
+ { if ($1)
+ { print " dvi positions : $1 ($DVIspec ." ;
+ close (POS) ;
+ open(POS,">>$TuoName") ;
+ $ENV{uc "$DVIspec.TEXFONTSDIR"} = $TeXFontsPath ;
+ print POS "\%\n\% extracted from dvi file by $DVIspec:\n\%\n" ;
+ close(POS) ;
+ print "." ;
+ RunPerlScript ($DVIspec, "$JobName >> $TuoName") ;
+ print ".)\n" }
+ last } }
+ close (POS) } }
+
+my $ConTeXtVersion = "unknown" ;
+my $ConTeXtModes = '' ;
+
+sub ScanPreamble
+ { my ($FileName) = @_ ;
+ open (TEX, $FileName) ;
+ while (<TEX>)
+ { chomp ;
+ if (/^\%.*/)
+ { if (/tex=([a-z]*)/goi) { $TeXExecutable = $1 }
+ if (/translat.*?=([\:\/0-9\-a-z]*)/goi) { $TeXTranslation = $1 }
+ if (/program=([a-z]*)/goi) { $TeXExecutable = $1 }
+ if (/modes=([a-z\,]*)/goi) { $ConTeXtModes = $1 }
+ if (/output=([a-z\,]*)/goi) { $OutputFormat = $1 }
+ if ($ConTeXtInterface eq "unknown")
+ { if (/format=([a-z]*)/goi) { $ConTeXtInterface = $ConTeXtInterfaces{$1} }
+ if (/interface=([a-z]*)/goi) { $ConTeXtInterface = $ConTeXtInterfaces{"$1"} } }
+ if (/version=([a-z]*)/goi) { $ConTeXtVersion = $1 } }
+ else
+ { last } }
+ close(TEX) }
+
+sub ScanContent
+ { my ($ConTeXtInput) = @_ ;
+ open (TEX, $ConTeXtInput) ;
+ while (<TEX>)
+ { if (/\\(starttekst|stoptekst|startonderdeel|startdocument|startoverzicht)/)
+ { $ConTeXtInterface = "nl" ; last }
+ elsif (/\\(stelle|verwende|umgebung|benutze)/)
+ { $ConTeXtInterface = "de" ; last }
+ elsif (/\\(stel|gebruik|omgeving)/)
+ { $ConTeXtInterface = "nl" ; last }
+ elsif (/\\(use|setup|environment)/)
+ { $ConTeXtInterface = "en" ; last }
+ elsif (/(hoogte|breedte|letter)=/)
+ { $ConTeXtInterface = "nl" ; last }
+ elsif (/(height|width|style)=/)
+ { $ConTeXtInterface = "en" ; last }
+ elsif (/(hoehe|breite|schrift)=/)
+ { $ConTeXtInterface = "de" ; last }
+ elsif (/externfiguur/)
+ { $ConTeXtInterface = "nl" ; last }
+ elsif (/externalfigure/)
+ { $ConTeXtInterface = "en" ; last }
+ elsif (/externeabbildung/)
+ { $ConTeXtInterface = "de" ; last } }
+ close (TEX) }
+
+if ($ConTeXtInterfaces{$ConTeXtInterface})
+ { $ConTeXtInterface = $ConTeXtInterfaces{$ConTeXtInterface} }
+
+my $Problems = my $Ok = 0 ;
+
+sub RunTeX
+ { my $JobName = shift ;
+ my $StartTime = time ;
+ my $cmd ;
+ my $TeXProgNameFlag ;
+ if (!$dosish) # we assume tetex on linux
+ { $TeXProgramPath = '' ;
+ $TeXFormatPath = '' ;
+ if (!$TeXProgNameFlag &&
+ ($Format =~ /^cont/) &&
+ ($TeXPassString !~ /progname/io))
+ { $TeXProgNameFlag = "-progname=context" } }
+ $cmd = "$TeXProgramPath$TeXExecutable $TeXProgNameFlag " .
+ "$TeXPassString $PassOn " ;
+ #$cmd .= " -kpathsea-debug=62536 " ;
+ if ($EnterBatchMode)
+ { $cmd .= "$TeXBatchFlag " }
+ if ($TeXTranslation ne '')
+ { $cmd .= "-translate-file=$TeXTranslation " }
+ $cmd .= "$TeXFormatFlag$TeXFormatPath$Format $JobName" ;
+ if ($Verbose) { print "\n$cmd\n\n" }
+ if ($EnterBatchMode)
+# { $Problems = system("$cmd 1>batch.log 2>batch.err") ;
+# unlink "texexec.nul" }
+ { $Problems = system("$cmd") }
+ else
+ { $Problems = system ("$cmd") }
+ my $StopTime = time - $StartTime ;
+ print "\n run time : $StopTime seconds\n" ;
+ return $Problems }
+
+sub PushResult
+ { my $File = shift ; $File =~ s/\..*$//o ; $Result =~ s/\..*$//o ;
+ if ($Result)
+ { print " outputfile : $Result\n" ;
+ unlink "texexec.tuo" ; rename "$File.tuo", "texexec.tuo" ;
+ unlink "texexec.log" ; rename "$File.log", "texexec.log" ;
+ unlink "texexec.dvi" ; rename "$File.dvi", "texexec.dvi" ;
+ unlink "texexec.pdf" ; rename "$File.pdf", "texexec.pdf" ;
+ if (-e "$Result.tuo")
+ { unlink "$File.tuo" ;
+ rename "$Result.tuo", "$File.tuo" } }
+if ($Optimize)
+ { unlink "$File.tuo" }
+}
+
+sub PopResult
+ { my $File = shift ; $File =~ s/\..*$//o ; $Result =~ s/\..*$//o ;
+ if ($Result)
+ { print " renaming : $File to $Result\n" ;
+ unlink "$Result.tuo" ; rename "$File.tuo", "$Result.tuo" ;
+ unlink "$Result.log" ; rename "$File.log", "$Result.log" ;
+ unlink "$Result.dvi" ; rename "$File.dvi", "$Result.dvi" ;
+ unlink "$Result.pdf" ; rename "$File.pdf", "$Result.pdf" ;
+ return if ($File ne "texexec") ;
+ rename "texexec.tuo", "$File.tuo" ;
+ rename "texexec.log", "$File.log" ;
+ rename "texexec.dvi", "$File.dvi" ;
+ rename "texexec.pdf", "$File.pdf" } }
+
+sub RunTeXutil
+ { my $StopRunning ;
+ my $JobName = shift ;
+ unlink "$JobName.tup" ;
+ rename "$JobName.tuo", "$JobName.tup" ;
+ print " sorting and checking : running texutil\n" ;
+ my $TcXSwitch = '' ;
+ if ($TcXPath ne '') { $TcXSwitch = "--tcxpath=$TcXPath" }
+ RunPerlScript
+ ($TeXUtil, "--ref --ij --high $TcXPath $JobName" );
+ if (-e "$JobName.tuo")
+ { CheckPositions ($JobName) ;
+ $StopRunning = CompareFiles("$JobName.tup", "$JobName.tuo") }
+ else
+ { $StopRunning = 1 } # otherwise potential loop
+ if (!$StopRunning)
+ { print "\n utility file analysis : another run needed\n" }
+ return $StopRunning }
+
+sub RunTeXMP
+ { my $JobName = shift ;
+ my $MPfile = shift ;
+ my $MPrundone = 0 ;
+ my $MPJobName = MPJobName($JobName,$MPfile) ;
+ my $MPFoundJobName = "" ;
+ if ($MPJobName ne "")
+ { if (open(MP, "$MPJobName"))
+ { $_ = <MP> ; chomp ; # we should handle the prefix as well
+ if (/collected graphics of job \"(.+)\"/i)
+ { $MPFoundJobName = $1 }
+ close(MP) ;
+ if ($MPFoundJobName ne "")
+ { if ($JobName =~ /$MPFoundJobName$/i)
+ { if ($MpExecutable ne '')
+ { print " generating graphics : metaposting $MPJobName\n" ;
+ if ($EnterBatchMode)
+ { RunPerlScript ($TeXExec,"--mptex --nomp --batch $MPJobName") }
+ else
+ { RunPerlScript ($TeXExec,"--mptex --nomp $MPJobName") } }
+ else
+ { print " generating graphics : metapost cannot be run\n" }
+ $MPrundone = 1 } } } }
+ return $MPrundone }
+
+sub RunConTeXtFile
+ { my ($JobName) = @_ ;
+ $JobName =~ s/\\/\//goi ;
+ if (-e "$JobName.tex")
+ { ScanPreamble ("$JobName.tex") ;
+ if ($ConTeXtInterface eq "unknown")
+ { ScanContent ("$JobName.tex") }
+ if ($ConTeXtInterface eq "unknown")
+ { $ConTeXtInterface = $UserInterface }
+ if ($ConTeXtInterface eq "unknown")
+ { $ConTeXtInterface = "en" }
+ if ($ConTeXtInterface eq "")
+ { $ConTeXtInterface = "en" }
+ if (lc $Convert eq "xml")
+ { print " xml input : $JobName.xml\n" ;
+ ConvertXMLFile ($JobName) }
+ elsif (lc $Convert eq "sgml")
+ { print " sgml input : $JobName.sgm\n" ;
+ ConvertSGMLFile ($JobName) }
+ CheckOutputFormat ;
+ my $StopRunning = 0 ;
+ my $MPrundone = 0 ;
+ if ($Format eq '')
+ { $Format = "cont-$ConTeXtInterface" }
+ print " executable : $TeXProgramPath$TeXExecutable\n" ;
+ print " format : $TeXFormatPath$Format\n" ;
+ print " inputfile : $JobName\n" ;
+ print " output : $FullFormat\n" ;
+ print " interface : $ConTeXtInterface\n" ;
+ if ($TeXTranslation ne '')
+ { print " translation : $TeXTranslation\n" }
+ my $Options = '' ;
+ if ($FastMode) { $Options .= " fast" }
+ if ($FinalMode) { $Options .= " final" }
+ if ($Verbose) { $Options .= " verbose" }
+ if ($TypesetListing) { $Options .= " listing" }
+ if ($TypesetModule) { $Options .= " module" }
+ if ($TypesetFigures) { $Options .= " figures" }
+ if ($MakeFormats) { $Options .= " make" }
+ if ($RunOnce) { $Options .= " once" }
+ if ($UseColor) { $Options .= " color" }
+ if ($EnterBatchMode) { $Options .= " batch" }
+ if ($NoMPMode) { $Options .= " nomp" }
+ if ($CenterPage) { $Options .= " center" }
+ if ($Arrange) { $Options .= " arrange" }
+ if ($NoArrange) { $Options .= " no-arrange" }
+ if ($Options)
+ { print " options :$Options\n" }
+ if ($ConTeXtModes)
+ { print " possible modes : $ConTeXtModes\n" }
+ if ($Mode)
+ { print " current mode : $Mode\n" }
+ else
+ { print " current mode : all\n" }
+ if ($Environment)
+ { print " environments : $Environment\n" }
+ if ($Suffix)
+ { $Result = "$JobName$Suffix" }
+ PushResult($JobName) ;
+ $Problems = 0 ;
+ my $TeXRuns = 0 ;
+ if (($PdfArrange)||($PdfSelect)||($RunOnce))
+ { MakeOptionFile (1, 1, $JobName) ;
+ print "\n" ;
+ $Problems = RunTeX($JobName) ;
+ if ($ForceTeXutil)
+ { $Ok = RunTeXutil ($JobName) }
+ PopResult($JobName) }
+ else
+ { while (!$StopRunning&&($TeXRuns<$NOfRuns)&&(!$Problems))
+ { MakeOptionFile (0, 0, $JobName) ;
+ ++$TeXRuns ;
+ print " TeX run : $TeXRuns\n\n" ;
+ $Problems = RunTeX($JobName) ;
+ if ((!$Problems)&&($NOfRuns>1))
+ { if (!$NoMPMode)
+ { $MPrundone = RunTeXMP ($JobName, "mpgraph") ;
+ $MPrundone = RunTeXMP ($JobName, "mprun") }
+ $StopRunning = RunTeXutil ($JobName) } }
+ if (($NOfRuns==1)&&$ForceTeXutil)
+ { $Ok = RunTeXutil ($JobName) }
+ if ((!$Problems)&&(($FinalMode||$FinalRunNeeded))&&($NOfRuns>1))
+ { MakeOptionFile (1, $FinalMode, $JobName) ;
+ print " final TeX run : $TeXRuns\n\n" ;
+ $Problems = RunTeX($JobName) }
+ unlink "$JobName.tup" ; # previous tuo file
+ unlink "$JobName.top" ; # runtime option file
+ PopResult($JobName) } } }
+
+sub RunSomeTeXFile
+ { my ($JobName) = @_ ;
+ if (-e "$JobName.tex")
+ { PushResult($JobName) ;
+ print " executable : $TeXProgramPath$TeXExecutable\n" ;
+ print " format : $TeXFormatPath$Format\n" ;
+ print " inputfile : $JobName\n" ;
+ $Problems = RunTeX($JobName) ;
+ PopResult($JobName) } }
+
+my $ModuleFile = "texexec" ;
+my $ListingFile = "texexec" ;
+my $FiguresFile = "texexec" ;
+my $ArrangeFile = "texexec" ;
+my $SelectFile = "texexec" ;
+my $CopyFile = "texexec" ;
+my $CombineFile = "texexec" ;
+
+sub RunModule
+ { my ($FileName) = @_ ;
+ if ((-e "$FileName.tex")||(-e "$FileName.pl")||(-e "$FileName.mp")||
+ (-e "$FileName.pm"))
+ { RunPerlScript ($TeXUtil,
+ "--documents $FileName.pl $FileName.pm $FileName.mp $FileName.tex" ) ;
+ print " module : $FileName\n\n" ;
+ open (MOD, ">$ModuleFile.tex") ;
+ print MOD "% format=dutch \n" ;
+ print MOD "\\starttekst \n" ;
+ print MOD "\\input modu-abr \n" ;
+ print MOD "\\input modu-arg \n" ;
+ print MOD "\\input modu-env \n" ;
+ print MOD "\\input modu-mod \n" ;
+ print MOD "\\input modu-pap \n" ;
+ print MOD "\\def\\ModuleNumber{1}\n" ;
+ print MOD "\\input $FileName.ted \n" ;
+ print MOD "\\stoptekst \n" ;
+ close (MOD) ;
+ $ConTeXtInterface = "nl" ;
+ RunConTeXtFile($ModuleFile) ;
+ if ($FileName ne $ModuleFile)
+ { foreach my $FileSuffix ("dvi", "pdf", "tui", "tuo", "log")
+ { unlink ("$FileName.$FileSuffix") ;
+ rename ("$ModuleFile.$FileSuffix", "$FileName.$FileSuffix") } }
+ unlink ("$ModuleFile.tex") } }
+
+sub RunFigures
+ { my @Files = @_ ;
+ $TypesetFigures = lc $TypesetFigures ;
+ return unless ($TypesetFigures =~ /[abc]/o) ;
+ unlink "$FiguresFile.pdf" ;
+ if (@Files) { RunPerlScript ($TeXUtil, "--figures @Files" ) }
+ open (FIG, ">$FiguresFile.tex") ;
+ print FIG "% format=english\n" ;
+ print FIG "\\starttext\n" ;
+ print FIG "\\setuplayout\n" ;
+ print FIG " [topspace=1.5cm,backspace=1.5cm,\n" ;
+ print FIG " header=1.5cm,footer=0pt,\n" ;
+ print FIG " width=middle,height=middle]\n" ;
+ print FIG "\\showexternalfigures[alternative=$TypesetFigures,offset=$PaperOffset]\n" ;
+ print FIG "\\stoptext\n" ;
+ close(FIG) ;
+ $ConTeXtInterface = "en" ;
+ RunConTeXtFile($FiguresFile) }
+
+sub CleanTeXFileName
+ { my $str = shift ;
+ $str =~ s/([\$\_\#])/\\$1/go ;
+ $str =~ s/([\~])/\\string$1/go ;
+ return $str }
+
+sub RunListing
+ { my $FileName = shift ;
+ return unless -f $FileName ;
+ print " input file : $FileName\n" ;
+ if ($BackSpace eq "0pt")
+ { $BackSpace="1.5cm" }
+ else
+ { print " backspace : $BackSpace\n" }
+ if ($TopSpace eq "0pt")
+ { $TopSpace="1.5cm" }
+ else
+ { print " topspace : $TopSpace\n" }
+ my $CleanFileName = CleanTeXFileName($FileName) ;
+ open (LIS, ">$ListingFile.tex") ;
+ print LIS "% format=english\n" ;
+ print LIS "\\starttext\n" ;
+ print LIS "\\setupbodyfont[11pt,tt]\n" ;
+ print LIS "\\setuplayout\n" ;
+ print LIS " [topspace=$TopSpace,backspace=$BackSpace,\n" ;
+ print LIS " header=0cm,footer=1.5cm,\n" ;
+ print LIS " width=middle,height=middle]\n" ;
+ print LIS "\\setupfootertexts[$CleanFileName][pagenumber]\n" ;
+ print LIS "\\typefile\{$FileName\}\n" ;
+ print LIS "\\stoptext\n" ;
+ close(LIS) ;
+ $ConTeXtInterface = "en" ;
+ RunConTeXtFile($ListingFile) }
+
+# sub DetermineNOfPdfPages
+# { my $FileName = shift ;
+# my $NOfPages = 0 ;
+# if (($FileName =~ /\.pdf$/io)&&(open(PDF,$FileName)))
+# { binmode PDF ;
+# my $PagesFound = 0 ;
+# while (<PDF>)
+# { if (/\/Type \/Pages/o)
+# { $PagesFound = 1 }
+# if ($PagesFound)
+# { if (/\/Count\s*(\d*)/o)
+# { if ($1>$NOfPages) { $NOfPages = $1 } }
+# elsif (/endobj/o)
+# { $PagesFound = 0 } } }
+# close ( PDF ) }
+# return $NOfPages }
+
+sub RunArrange
+ { my @files = @_ ;
+ print " backspace : $BackSpace\n" ;
+ print " topspace : $TopSpace\n" ;
+ print " paperoffset : $PaperOffset\n" ;
+ if ($AddEmpty eq '')
+ { print " empty pages added : none\n" }
+ else
+ { print " empty pages added : $AddEmpty\n" }
+ if ($TextWidth eq '0pt')
+ { print " textwidth : unknown\n" }
+ else
+ { print " textwidth : $TextWidth\n" }
+ open (ARR, ">$ArrangeFile.tex") ;
+ print ARR "% format=english\n" ;
+# if ($PaperFormat ne 'standard')
+# { print " paperformat : $PaperFormat\n" ;
+# print ARR "\\setuppapersize[$PaperFormat][$PaperFormat]\n" }
+ print ARR "\\definepapersize\n" ;
+ print ARR " [offset=$PaperOffset]\n";
+ print ARR "\\setuplayout\n" ;
+ print ARR " [backspace=$BackSpace,\n" ;
+ print ARR " topspace=$TopSpace,\n" ;
+ if ($Markings)
+ { print ARR " marking=on,\n" ;
+ print " cutmarkings : on\n" }
+ print ARR " width=middle,\n" ;
+ print ARR " height=middle,\n" ;
+ print ARR " location=middle,\n" ;
+ print ARR " header=0pt,\n" ;
+ print ARR " footer=0pt]\n" ;
+ if ($NoDuplex)
+ { print " duplex : off\n" }
+ else
+ { print " duplex : on\n" ;
+ print ARR "\\setuppagenumbering\n" ;
+ print ARR " [alternative=doublesided]\n" }
+ foreach my $FileName (@files)
+ { print " pdffile : $FileName\n" ;
+ print ARR "\\insertpages\n [$FileName]" ;
+ if ($AddEmpty ne '') { print ARR "[$AddEmpty]" }
+ print ARR "[width=$TextWidth]\n" }
+ print ARR "\\stoptext\n" ;
+ close (ARR) ;
+ $ConTeXtInterface = "en" ;
+ RunConTeXtFile($ModuleFile) }
+
+sub RunSelect
+ { my $FileName = shift ;
+ print " pdffile : $FileName\n" ;
+ print " backspace : $BackSpace\n" ;
+ print " topspace : $TopSpace\n" ;
+ print " paperoffset : $PaperOffset\n" ;
+ if ($TextWidth eq '0pt')
+ { print " textwidth : unknown\n" }
+ else
+ { print " textwidth : $TextWidth\n" }
+ open (SEL, ">$SelectFile.tex") ;
+ print SEL "% format=english\n" ;
+ if ($PaperFormat ne 'standard')
+ { print " papersize : $PaperFormat\n" ;
+ print SEL "\\setuppapersize[$PaperFormat][$PaperFormat]\n" }
+ print SEL "\\definepapersize\n" ;
+ print SEL " [offset=$PaperOffset]\n";
+ print SEL "\\setuplayout\n" ;
+ print SEL " [backspace=$BackSpace,\n" ;
+ print SEL " topspace=$TopSpace,\n" ;
+ if ($Markings)
+ { print SEL " marking=on,\n" ;
+ print " cutmarkings : on\n" }
+ print SEL " width=middle,\n" ;
+ print SEL " height=middle,\n" ;
+ print SEL " location=middle,\n" ;
+ print SEL " header=0pt,\n" ;
+ print SEL " footer=0pt]\n" ;
+ print SEL "\\setupexternalfigures\n" ;
+ print SEL " [directory=]\n" ;
+ if ($Selection ne '')
+ { print SEL "\\filterpages\n" ;
+ print SEL " [$FileName][$Selection][width=$TextWidth]\n" }
+ print SEL "\\stoptext\n" ;
+ close (SEL) ;
+ $ConTeXtInterface = "en" ;
+ RunConTeXtFile($SelectFile) }
+
+sub RunCopy
+ { my $FileName = shift ;
+ print " pdffile : $FileName\n" ;
+ if ($PageScale==1000)
+ { print " offset : $PaperOffset\n" }
+ else
+ { print " scale : $PageScale\n" ;
+ if ($PageScale<10)
+ { $PageScale *= 1000 ;
+ $PageScale = printf(".0f",$PageScale) } }
+ open (COP, ">$CopyFile.tex") ;
+ print COP "% format=english\n" ;
+ print COP "\\getfiguredimensions\n" ;
+ print COP " [$FileName][page=1]\n" ;
+ print COP "\\definepapersize\n" ;
+ print COP " [copy]\n" ;
+ print COP " [width=\\naturalfigurewidth,\n" ;
+ print COP " height=\\naturalfigureheight]\n" ;
+ print COP "\\setuppapersize\n" ;
+ print COP " [copy][copy]\n" ;
+ print COP "\\setuplayout\n" ;
+ print COP " [location=middle,\n" ;
+ print COP " topspace=0pt,\n" ;
+ print COP " backspace=0pt,\n" ;
+ print COP " header=0pt,\n" ;
+ print COP " footer=0pt,\n" ;
+ print COP " width=middle,\n" ;
+ print COP " height=middle]\n" ;
+ print COP "\\setupexternalfigures\n" ;
+ print COP " [directory=]\n" ;
+ print COP "\\starttext\n" ;
+ print COP "\\copypages\n" ;
+ print COP " [$FileName][scale=$PageScale,offset=$PaperOffset]\n" ;
+ print COP "\\stoptext\n" ;
+ close (COP) ;
+ $ConTeXtInterface = "en" ;
+ RunConTeXtFile($CopyFile) }
+
+sub RunCombine
+ { my $FileName = shift ;
+ print " pdffile : $FileName\n" ;
+ my ($nx,$ny) = split (/\*/,$Combination,2) ;
+ return unless ($nx&&$ny) ;
+ print " combination : $Combination\n" ;
+ open (COM, ">$CombineFile.tex") ;
+ print COM "% format=english\n" ;
+ if ($PaperFormat ne 'standard')
+ { print " papersize : $PaperFormat\n" ;
+ print COM "\\setuppapersize\n" ;
+ print COM " [$PaperFormat][$PaperFormat]\n" }
+ if ($PaperOffset eq '0pt')
+ { $PaperOffset = '1cm' }
+ my $CleanFileName = CleanTeXFileName($FileName) ;
+ print " paper offset : $PaperOffset\n" ;
+ print COM "\\setuplayout\n" ;
+ print COM " [topspace=$PaperOffset,\n" ;
+ print COM " backspace=$PaperOffset,\n" ;
+ print COM " header=0pt,\n" ;
+ print COM " footer=1cm,\n" ;
+ print COM " width=middle,\n" ;
+ print COM " height=middle]\n" ;
+ print COM "\\setupfootertexts\n" ;
+ print COM " [$CleanFileName\\space---\\space\\currentdate\\space---\\space\\pagenumber]\n" ;
+ print COM "\\setupexternalfigures\n" ;
+ print COM " [directory=]\n" ;
+ print COM "\\starttext\n" ;
+ print COM "\\combinepages[$FileName][nx=$nx,ny=$ny]\n" ;
+ print COM "\\stoptext\n" ;
+ close (COM) ;
+ $ConTeXtInterface = "en" ;
+ RunConTeXtFile($CombineFile) }
+
+sub LocatedFormatPath
+ { my $FormatPath = shift ;
+ if (($FormatPath eq '')&&($kpsewhich ne ''))
+ { $FormatPath = `$kpsewhich --show-path=fmt` ;
+ chomp $FormatPath ;
+ $FormatPath =~ s/\.+\;//o ; # should be a sub
+ $FormatPath =~ s/\;.*//o ;
+ $FormatPath =~ s/\!//go ;
+ $FormatPath =~ s/\/\//\//go ;
+ $FormatPath =~ s/\\\\/\//go ;
+ $FormatPath =~ s/[\/\\]$// ;
+ $FormatPath .= '/' ;
+ if (($FormatPath ne '')&&$Verbose)
+ { print " located formatpath : $FormatPath\n" } }
+ return $FormatPath }
+
+sub RunOneFormat
+ { my ($FormatName) = @_ ;
+ my @TeXFormatPath ;
+ my $TeXPrefix = '' ;
+ if ($fmtutil ne '')
+ { my $cmd = "$fmtutil --byfmt $FormatName" ;
+ if ($Verbose) { print "\n$cmd\n\n" }
+ MakeUserFile ; # this works only when the path is kept
+ MakeResponseFile ;
+ $Problems = system ( "$cmd" ) ;
+ RemoveResponseFile ;
+ RestoreUserFile }
+ else
+ { $Problems = 1 }
+ if ($Problems)
+ { if ($TeXExecutable =~ /etex|eetex|pdfetex|pdfeetex/io)
+ {$TeXPrefix = "*" }
+ my $CurrentPath = cwd() ;
+ $TeXFormatPath = LocatedFormatPath($TeXFormatPath) ;
+ if ($TeXFormatPath ne '')
+ { chdir "$TeXFormatPath" }
+ MakeUserFile ;
+ MakeResponseFile ;
+ my $cmd = "$TeXProgramPath$TeXExecutable $TeXVirginFlag " .
+ "$TeXPassString $PassOn ${TeXPrefix}$FormatName" ;
+ if ($Verbose) { print "\n$cmd\n\n" }
+ system ( $cmd ) ;
+ RemoveResponseFile ;
+ RestoreUserFile ;
+ if (($TeXFormatPath ne '')&&($CurrentPath ne ''))
+ { chdir $CurrentPath } } }
+
+sub RunFormats
+ { my $ConTeXtFormatsPrefix ; my $MetaFunDone = 0 ;
+ if (@ARGV)
+ { @ConTeXtFormats = @ARGV }
+ elsif ($UsedInterfaces ne '')
+ { @ConTeXtFormats = split /\,/,$UsedInterfaces }
+ if ($Format)
+ { @ConTeXtFormats = $Format; $ConTeXtFormatsPrefix='' ; }
+ else
+ { $ConTeXtFormatsPrefix="cont-" ; }
+ foreach my $Interface (@ConTeXtFormats)
+ { if ($Interface eq $MetaFun)
+ { RunMpFormat ($MetaFun) ; $MetaFunDone = 1 }
+ elsif ($Interface eq $MpToPdf)
+ { RunOneFormat ("$MpToPdf") }
+ else
+ { RunOneFormat ("$ConTeXtFormatsPrefix$Interface") } }
+ #
+ # this will be default in a few months, or maybe better:
+ # add it as interface (fake -) in texexec.ini
+ #
+ # if (($ConTeXtFormatsPrefix ne "")&&(!$MetaFunDone))
+ # { RunMpFormat ($MetaFun) } }
+ #
+ print "\n" ;
+ print " TeX binary : $TeXProgramPath$TeXExecutable\n" ;
+ print " format(s) : @ConTeXtFormats\n\n" }
+
+sub RunMpFormat
+ { my $MpFormat = shift ;
+ return if ($MpFormat eq '') ;
+ my $MpFormatPath = '' ;
+ my $CurrentPath = cwd() ;
+ $MpFormatPath = LocatedFormatPath($MpFormatPath) ;
+ if ($MpFormatPath ne '') { chdir "$MpFormatPath" }
+ my $cmd = "$MpExecutable $MpVirginFlag $MpPassString $MpFormat" ;
+ if ($Verbose) { print "\n$cmd\n\n" }
+ system ( $cmd ) ;
+ if (($MpFormatPath ne '')&&($CurrentPath ne ''))
+ { chdir $CurrentPath } }
+
+sub RunFiles
+ { if ($PdfArrange)
+ { my @arrangedfiles = () ;
+ foreach my $JobName (@ARGV)
+ { unless ($JobName =~ /.*\.pdf$/oi)
+ { if (-f "$JobName.pdf")
+ { $JobName .= ".pdf" }
+ else
+ { $JobName .= ".PDF" } }
+ push @arrangedfiles, $JobName }
+ if (@arrangedfiles)
+ { RunArrange (@arrangedfiles) } }
+ elsif (($PdfSelect)||($PdfCopy)||($PdfCombine))
+ { my $JobName = $ARGV[0] ;
+ if ($JobName ne '')
+ { unless ($JobName =~ /.*\.pdf$/oi)
+ { if (-f "$JobName.pdf")
+ { $JobName .= ".pdf" }
+ else
+ { $JobName .= ".PDF" } }
+ if ($PdfSelect)
+ { RunSelect ($JobName) }
+ elsif ($PdfCopy)
+ { RunCopy ($JobName) }
+ else
+ { RunCombine ($JobName) } } }
+ else
+ { foreach my $JobName (@ARGV)
+ { $JobName =~ s/\.tex//goi ;
+ if ($TypesetModule)
+ { unless ($Format) { RunModule ($JobName) } }
+ elsif (($Format eq '')||($Format =~ /^cont.*/io))
+ { RunConTeXtFile ($JobName) }
+ else
+ { RunSomeTeXFile ($JobName) }
+ unless (-s "$JobName.log") { unlink ("$JobName.log") }
+ unless (-s "$JobName.tui") { unlink ("$JobName.tui") } } } }
+
+my $MpTmp = "tmpgraph" ;
+my $MpKep = "$MpTmp.kep" ;
+my $MpLog = "$MpTmp.log" ;
+my $MpTex = "$MpTmp.tex" ;
+my $MpDvi = "$MpTmp.dvi" ;
+
+my %mpbetex ;
+
+sub RunMP ###########
+ { if (($MpExecutable)&&($MpToTeXExecutable)&&($DviToMpExecutable))
+ { foreach my $RawMpName (@ARGV)
+ { my ($MpName, $Rest) = split (/\./, $RawMpName, 2) ;
+ my $MpFile = "$MpName.mp" ;
+ if (-e $MpFile and (-s $MpFile>25)) # texunlink makes empty file
+ { unlink "$MpName.mpt" ;
+ doRunMP($MpName,0) ;
+ # test for labels
+ my $belabels = 0 ;
+ if (open(MP, "<$MpName.mpt"))
+ { while (<MP>)
+ { if (/% figure (\d+) : (.*)/o)
+ { $mpbetex{$1} .= "$2\n" ; ++$belabels } }
+ close (MP) ;
+ if ($belabels)
+ { print " second MP run needed : $belabels merged labels\n" ;
+ doRunMP($MpName,1) } } } } } }
+
+sub doRunMP ###########
+ { my ($MpName, $MergeBE) = @_ ;
+ my $TexFound = 0 ;
+ my $MpFile = "$MpName.mp" ;
+ if (open(MP, $MpFile))
+ { local $/ = "\0777" ; $_ = <MP> ; close(MP) ;
+ # save old file
+ unlink ($MpKep) ;
+ return if (-e $MpKep) ;
+ rename ($MpFile, $MpKep) ;
+ # check for tex stuff
+ $TexFound = $MergeBE || /(btex|etex|verbatimtex)/o ;
+ # shorten lines into new file if okay
+ unless (-e $MpFile)
+ { open(MP, ">$MpFile") ;
+ s/(btex.*?)\;(.*?etex)/$1\@\@\@$2/gmois ;
+ s/\;/\;\n/gmois ;
+ s/\n\n/\n/gmois ;
+ s/(btex.*?)\@\@\@(.*?etex)/$1\;$2/gmois ;
+# merge labels
+if ($MergeBE)
+ { s/beginfig\s*\((\d+)\)\s*\;/beginfig($1)\;\n$mpbetex{$1}\n/goims }
+ print MP $_ ; print MP "end .\n" ;
+ close(MP) }
+ if ($TexFound)
+ { print " metapost to tex : $MpName\n" ;
+ $Problems = system ("$MpToTeXExecutable $MpFile > $MpTex" ) ;
+ if (-e $MpTex && !$Problems)
+ { open (TMP,">>$MpTex") ;
+ print TMP "\\end\n" ; # to be sure
+ close (TMP) ;
+ if (($Format eq '')||($Format =~ /^cont.*/io))
+ { $OutputFormat = "dvips" ;
+ RunConTeXtFile ($MpTmp) }
+ else
+ { RunSomeTeXFile ($MpTmp) }
+ if (-e $MpDvi && !$Problems)
+ { print " dvi to metapost : $MpName\n" ;
+ $Problems = system ("$DviToMpExecutable $MpDvi $MpName.mpx") }
+ unlink $MpTex ;
+ unlink $MpDvi } }
+ print " metapost : $MpName\n" ;
+ my $cmd = $MpExecutable ;
+ if ($EnterBatchMode)
+ { $cmd .= " $MpBatchFlag " }
+ if (($MpFormat ne '')&&($MpFormat !~ /(plain|mpost)/oi))
+ { print " format : $MpFormat\n" ;
+ $cmd .= " $MpPassString $MpFormatFlag$MpFormat " }
+ $Problems = system ("$cmd $MpName" ) ;
+# unlink "mptrace.tmp" ; rename ($MpFile, "mptrace.tmp") ;
+ if (-e $MpKep)
+ { unlink ($MpFile) ;
+ rename ($MpKep, $MpFile) } } }
+
+sub RunMPX
+ { my $MpName = shift ; $MpName =~ s/\..*$//o ;
+ my $MpFile = $MpName . ".mp" ;
+ if (($MpToTeXExecutable)&&($DviToMpExecutable)&&
+ (-e $MpFile)&&(-s $MpFile>5)&&open(MP, $MpFile))
+ { local $/ = "\0777" ; $_ = <MP> ; close(MP) ;
+ if (/(btex|etex|verbatimtex)/o)
+ { print " generating mpx file : $MpName\n" ;
+ $Problems = system ("$MpToTeXExecutable $MpFile > $MpTex" ) ;
+ if (-e $MpTex && !$Problems)
+ { open (TMP,">>$MpTex") ;
+ print TMP "\\end\n" ; # to be sure
+ close (TMP) ;
+ if (($Format eq '')||($Format =~ /^cont.*/io))
+ { RunConTeXtFile ($MpTmp) }
+ else
+ { RunSomeTeXFile ($MpTmp) }
+ if (-e $MpDvi && !$Problems)
+ { $Problems = system ("$DviToMpExecutable $MpDvi $MpName.mpx") }
+ unlink $MpTex ;
+ unlink $MpDvi } } } }
+
+if ($TypesetListing)
+ { RunListing (@ARGV) }
+elsif ($TypesetFigures)
+ { RunFigures (@ARGV) }
+elsif ($DoMPTeX)
+ { RunMP }
+elsif ($DoMPXTeX)
+ { RunMPX ($ARGV[0]) }
+elsif ($MakeFormats)
+ { if ($MpDoFormat ne '')
+ { RunMpFormat($MpDoFormat) }
+ else
+ { RunFormats } }
+elsif (@ARGV)
+ { foreach (@ARGV) { $_ =~ s/\.tex//io } @ARGV = <@ARGV> ; RunFiles }
+else
+ { print $Help{HELP} ;
+ unless ($Verbose) { print $Help{VERBOSE} } }
+
+if (-f "cont-opt.tex")
+ { unlink ("cont-opt.bak") ;
+ rename ("cont-opt.tex", "cont-opt.bak") }
+
+if (-f "cont-opt.tex")
+ { unlink ("texexec.nul") }
+
+if ($Problems) { exit 1 }
diff --git a/context/perltk/texexec.rme b/context/perltk/texexec.rme
new file mode 100644
index 000000000..1e0f0a3c2
--- /dev/null
+++ b/context/perltk/texexec.rme
@@ -0,0 +1,144 @@
+% == introduction ==
+%
+% This is 'texexec.ini', the file used by texexec to determine where
+% to find files, what TeX to use, what flags to pass, etc. Although
+% TeXexec tries to locate things itself, a little help is sometimes
+% needed. One can influence texexec by setting some variables. These
+% are only needed when the automatic determined settings fail.
+%
+% == interfacing ==
+%
+% UsedInterfaces nl,en the formats generated with --make
+% UserInterface nl the default format used
+%
+% == binaries ==
+%
+% TeXExecutable pdfetex the TeX binary to use
+% MpExecutable mpost the MetaPost binary to use
+% MpToTeXExecutable mpto the MetaPost to TeX converter
+% DviToMpExecutable dvitomp the DVI to MetaPost converter
+%
+% == Scripts ==
+%
+% DviSpecialScript dvispec the DVI special filter script
+%
+% == flags ==
+%
+% TeXFormatFlag & the format introducer
+% TeXVirginFlag -ini the format generation switch
+%
+% == paths ==
+%
+% TeXFormatPath texmf/... fmt files
+% ConTeXtPath texmf/tex/context/base sources
+% SetupPath texmf/tex/base/user cont-sys/usr file
+% TeXScriptsPath texmf/context/perltk scripts
+% TeXFontsPath texmf font files
+%
+% == the main shell setting ==
+%
+% As shown below, one can define his/her own sections. We default to
+% the teTeX/fpTeX web2c based settings.
+
+set TeXShell to tetex
+%set TeXShell to fptex
+%set TeXShell to miktex
+%set TeXShell to private
+
+% == setting up the variables ==
+%
+% Here are some general defaults. They can be overruled later.
+
+set UsedInterfaces to en,nl,de,uk
+set UserInterface to en
+
+set TeXExecutable to tex
+
+set MpExecutable to mpost
+set MpToTeXExecutable to mpto
+set DviToMpExecutable to dvitomp
+set DviSpecialScript to dvispec
+
+set MpFormat to metafun
+
+set TeXFormatFlag to &
+set MpFormatFlag to &
+
+set TeXFontsPath to l:/tex/texmf;l:/tex/texmf-local;
+
+% For teTeX the next settings will do.
+
+for tetex set UsedInterfaces to en,nl,de,uk
+for tetex set UserInterface to en
+for tetex set TeXExecutable to pdfetex
+for tetex set TeXVirginFlag to -ini
+for tetex set TeXPassString to -progname=context
+for tetex set TeXBatchString to -int=batchmode
+for tetex set MpToTeXExecutable to mptotex
+for tetex set MpVirginFlag to -ini
+for tetex set MpPassString to -progname=mpost
+for tetex set MpBatchString to -int=batchmode
+
+% These also apply to fpTeX.
+
+for fptex set UsedInterfaces to en,nl,de,uk
+for fptex set UserInterface to en
+for fptex set TeXExecutable to pdfetex
+for fptex set TeXVirginFlag to -ini
+for fptex set TeXPassString to -progname=context
+for fptex set TeXBatchString to -int=batchmode
+for fptex set MpToTeXExecutable to mptotex
+for fptex set MpVirginFlag to -ini
+for fptex set MpPassString to -progname=mpost
+for fptex set MpBatchString to -int=batchmode
+
+% MikTeX users probably have to set up some paths too.
+
+for miktex set UsedInterfaces to en,nl,de,uk
+for miktex set UserInterface to en
+for miktex set TeXExecutable to pdftex
+for miktex set TeXVirginFlag to --initialize
+for miktex set TeXBatchString to --interaction=batchmode
+for miktex set MpToTeXExecutable to mptotex
+for miktex set MpVirginFlag to --initialize
+for miktex set MpPassString to
+for miktex set MpBatchString to --interaction=batchmode
+
+% These are the settings used on some machines at PRAGMA ADE that
+% don't use the texmf tree. They can serve as an example for local
+% settings. Local settings should either be added to the previous
+% one, or go without the 'for' directives. Consider these
+% settings as an example.
+
+for private set UsedInterfaces to en,nl
+for private set UserInterface to nl
+for private set ConTeXtPath to t:/sources/
+for private set SetupPath to t:/perl/
+for private set TeXScriptsPath to t:/perl/
+
+% == read this too ==
+%
+% If this file is called 'texexec.rme', copy it to 'texexec.ini',
+% check the settings above, change them according to your TeX
+% distribution, and say:
+%
+% texexec --verbose
+%
+% When set up properly, you should see your local settings fly by.
+% When these settings are ok, the next call should work:
+%
+% texexec --make
+%
+% and you should be able to process a file by saying
+%
+% texexec filename
+%
+% See 'mtexexec.pdf' for more information on the flags you can use with
+% 'texexec'. Also make sure you have the 'texutil' script installed in
+% the same path as 'texexec'.
+
+% Experimental
+%
+% set TcXPath to d:/tex/texmf/web2c
+% set FmtLanguage to pl
+% set FmtBodyFont to plr
diff --git a/context/perltk/texshow.pl b/context/perltk/texshow.pl
new file mode 100644
index 000000000..db1ce778c
--- /dev/null
+++ b/context/perltk/texshow.pl
@@ -0,0 +1,90 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' && eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+#D \module
+#D [ file=texshow.pl,
+#D version=1999.03.30,
+#D title=\TEXSHOW,
+#D subtitle=showing \CONTEXT\ commands,
+#D author=Hans Hagen,
+#D date=\currentdate,
+#D copyright={PRAGMA / Hans Hagen \& Ton Otten},
+#D suggestions={Tobias Burnus \& Taco Hoekwater}]
+#C
+#C This module is part of the \CONTEXT\ macro||package and is
+#C therefore copyrighted by \PRAGMA. See licen-en.pdf for
+#C details.
+
+#D We need to find the module path. We could have used:
+#D
+#D \starttypen
+#D use FindBin ;
+#D use lib $FindBin::Bin ;
+#D \stoptypen
+#D
+#D But because we're sort of depending on \WEBC\ anyway, the
+#D next few lines are more appropriate:
+
+BEGIN
+ { $cont_pm_path = `kpsewhich --format="other text files" --progname=context cont_mis.pm` ;
+ chomp($cont_pm_path) ;
+ $cont_pm_path =~ s/cont_mis\.pm.*// }
+
+use lib $cont_pm_path ;
+
+#D Now we can load some modules:
+
+use Getopt::Long ;
+
+$Getopt::Long::passthrough = 1 ; # no error message
+$Getopt::Long::autoabbrev = 1 ; # partial switch accepted
+
+&GetOptions
+ ( "help" => \$ShowHelp ,
+ "interface" => \$Interface ) ;
+
+cont_mis::banner ('TeXShow 0.1 - ConTeXt', 'PRAGMA ADE 1999') ;
+
+if ($ShowHelp)
+ { cont_mis::help ('--help', "print this help") ;
+ cont_mis::help ('--interface', "primary interface") ;
+ cont_mis::help ('string', "show info about command 'string'") ;
+ cont_mis::help ('string lg', "show info about 'string' in language 'lg'") ;
+ cont_mis::crlf () ;
+ exit 0 }
+
+use cont_mis ;
+use cont_set ;
+
+use Tk ;
+
+#D This scripts is rather simple, because most of the action
+#D takes place in the module \type {cont_set.pm}.
+
+cont_mis::status ('searching for setup files') ;
+
+if (cont_set::setups_found)
+ { cont_mis::status ('loading setups') ;
+ cont_set::load_setups ;
+ cont_mis::status ('preparing display') ;
+ cont_set::show_setups ;
+ $command = $ARGV[0] ;
+ $interface = $ARGV[1] ;
+ if ($interface)
+ { $Interface = $interface }
+ if ($Interface)
+ { cont_set::set_setup_interface($Interface) ;
+ cont_mis::message ('primary interface', $Interface) }
+ if ($command)
+ { cont_mis::message ('searching command', $command) ;
+ cont_set::show_setup ($command) }
+ else
+ { cont_mis::warning ('no command specified') ;
+ cont_set::set_setup_title('TeXShow : ConTeXt commands') }
+ cont_mis::status ('entering main loop') ;
+ MainLoop () }
+else
+ { cont_mis::error ('no setup files found') }
+
+END { cont_mis::crlf ;
+ cont_mis::status ('closing down') }
diff --git a/context/perltk/texutil.pl b/context/perltk/texutil.pl
new file mode 100644
index 000000000..4aee6e93e
--- /dev/null
+++ b/context/perltk/texutil.pl
@@ -0,0 +1,2465 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' && eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+#D We started with a hack provided by Thomas Esser. This
+#D expression replaces the unix specific line \type
+#D {#!/usr/bin/perl}.
+
+#D \module
+#D [ file=texutil.pl,
+#D version=1999.03.14, % 1999.11.05
+#D title=pre- and postprocessing utilities,
+#D subtitle=\TEXUTIL,
+#D author=Hans Hagen,
+#D date=\currentdate,
+#D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+#C
+#C This module is part of the \CONTEXT\ macro||package and is
+#C therefore copyrighted by \PRAGMA. See licen-en.pdf for
+#C details.
+
+# Thanks to Tobias Burnus for the german translations.
+# Thanks to Thomas Esser for hooking it into web2c
+# Thanks to Taco Hoekwater for making the file -w proof
+# Thanks to Alex Knowles and friends for the right JPG specs
+# Thanks to Sebastian Rahtz for the eps to PDF method
+
+# undocumented:
+#
+# --analyze file.pdf : reports some statistics
+# --purge [jobname] : removes temporary files
+
+#D This is \TEXUTIL, a utility program (script) to be used
+#D alongside the \CONTEXT\ macro package. This \PERL\ script is
+#D derived from the \MODULA\ version and uses slightly better
+#D algoritms for sanitizing \TEX\ specific (sub|)|strings.
+#D
+#D This implementation has some features not found in the
+#D binary version, like scanning illustrations other than \EPS.
+#D I would suggest to keep an eye on the version number:
+
+$Program = "TeXUtil 7.3 - ConTeXt / PRAGMA ADE 1992-2000" ;
+
+#D By the way, this is my first \PERL\ script, which means
+#D that it will be improved as soon as I find new and/or more
+#D suitable solutions in the \PERL\ manuals. As can be seen in
+#D the definition of \type{$Program}, this program is part of
+#D the \CONTEXT\ suite, and therefore can communicate with the
+#D users in english as well as some other languages. One can
+#D set his favourite language by saying something like:
+
+#D \starttypen
+#D perl texutil.pl --int=de --fig *.eps *.tif *.pdf *.png *.jpg
+#D \stoptypen
+#D
+#D or simpler:
+#D
+#D \starttypen
+#D perl texutil.pl --fig *.*
+#D \stoptypen
+
+#D Of course one can also say \type{--interface=nl}, which
+#D happens to be my native language.
+
+#D I won't go into too much detail on the algoritms used.
+#D The next few pages show the functionality as reported by the
+#D helpinformation and controled by command line arguments
+#D and can serve as additional documentation.
+
+#D \TEXUTIL\ can handle different tasks; which one is active
+#D depends on the command line arguments. These are handled by
+#D a \PERL\ system module. This means that, at least for the
+#D moment, there is no external control as provided by the
+#D \PRAGMA\ environment system.
+
+use Getopt::Long ;
+
+#D We don't want error messages and accept partial switches,
+#D which saves users some typing.
+
+$Getopt::Long::passthrough = 1 ; # no error message
+$Getopt::Long::autoabbrev = 1 ; # partial switch accepted
+
+#D We also predefine the interface language and set a boolean
+#D that keeps track of unknown options. \voetnoot {This feature
+#D is still to be implemented.}
+
+$UserInterface = "en" ;
+$UnknownOptions = 0 ;
+$TcXPath = '' ;
+
+#D Here come the options:
+
+&GetOptions
+ ("references" => \$ProcessReferences,
+ "ij" => \$ProcessIJ,
+ "high" => \$ProcessHigh,
+ "quotes" => \$ProcessQuotes,
+ "tcxpath=s" => \$TcXPath,
+ "documents" => \$ProcessDocuments,
+ "type=s" => \$ProcessType,
+ "outputfile=s" => \$ProcessOutputFile,
+ "sources" => \$ProcessSources,
+ "setups" => \$ProcessSetups,
+ "templates" => \$ProcessTemplates,
+ "infos" => \$ProcessInfos,
+ "figures" => \$ProcessFigures,
+ "epspage" =>\$ProcessEpsPage,
+ "epstopdf" =>\$ProcessEpsToPdf,
+ "logfile" => \$ProcessLogFile,
+ "box" =>\$ProcessBox,
+ "hbox" =>\$ProcessHBox,
+ "vbox" =>\$ProcessVBox,
+ "criterium=f" =>\$ProcessCriterium,
+ "unknown" =>\$ProcessUnknown,
+ "purge" => \$PurgeFiles,
+ "analyze" => \$AnalyzeFile,
+ "help" => \$ProcessHelp,
+ "silent" => \$ProcessSilent,
+ "verbose" => \$ProcessVerbose,
+ "interface=s" => \$UserInterface) ;
+
+#D We need some hacks to suppress terminal output. This
+#D piece of code is based on page~193 of "Programming Perl".
+
+$ProgramLog = "texutil.log" ;
+
+sub RedirectTerminal
+ { open SAVEDSTDOUT, ">&STDOUT" ;
+ open STDOUT, ">$ProgramLog" ;
+ select STDOUT; $| = 1 }
+
+#D And, indeed:
+
+if ($ProcessSilent)
+ { RedirectTerminal }
+else
+ { $ProcessVerbose = 0 }
+
+#D We can temporary open the terminal channel.
+
+sub OpenTerminal
+ { close STDOUT ;
+ open STDOUT, ">&SAVEDSTDOUT" }
+
+sub CloseTerminal
+ { open SAVEDSTDOUT, ">&STDOUT" ;
+ open STDOUT, ">>$ProgramLog" ;
+ select STDOUT; $| = 1 }
+
+#D By default wildcards are expanded into a list. The
+#D subroutine below is therefore only needed when no file or
+#D pattern is given.
+
+$InputFile = "@ARGV" ; # niet waterdicht
+
+#sub CheckInputFiles
+# { my ($UserSuppliedPath) = @_ ;
+# @UserSuppliedFiles = map { split " " } sort lc $UserSuppliedPath }
+
+sub CheckInputFiles
+ { @UserSuppliedFiles = glob $_[0] }
+
+#D The next subroutine takes care of the optional output
+#D filename (e.g. for figure dimensions).
+
+$ProcessOutputFile = "" ;
+
+my $Rubish ;
+
+sub SetOutputFile
+ { ($OutFilNam, $OutFilSuf) = split (/\./, $_[0], 2) ;
+ unless ($ProcessOutputFile eq "")
+ { $ProcessOutputFile .= "." . $OutFilSuf ;
+ ($OutFilNam, $OutFilSuf, $Rubish) = split (/\./, $ProcessOutputFile , 3)}
+ $OutputFile = $OutFilNam . "." . $OutFilSuf }
+
+#D Sometimes we need to split filenames.
+
+my ($FileName, $FileSuffix) = ("","") ;
+
+sub SplitFileName
+ { my $Rubish = "" ;
+ if ($_[0] =~ /^\.\//)
+ { ($Rubish, $FileName) = split ( /^\.\//, $_[0], 2) }
+ else
+ { $FileName = $_[0] }
+ return split (/\./, $FileName, 2) }
+
+#D In order to support multiple interfaces, we save the
+#D messages in a hash table. As a bonus we can get a quick
+#D overview of the messages we deal with.
+
+my %MS ;
+
+sub Report
+ { foreach $_ (@_)
+ { if (! defined $MS{$_})
+ { print $_ }
+ else
+ { print $MS{$_} }
+ print " " }
+ print "\n" }
+
+#D The messages are saved in a hash table and are called
+#D by name. This contents of this table depends on the
+#D interface language in use.
+
+#D \startcompressdefinitions
+
+if ($UserInterface eq "nl")
+
+ { # begin of dutch section
+
+ $MS{"ProcessingReferences"} = "commando's, lijsten en indexen verwerken" ;
+ $MS{"MergingReferences"} = "indexen samenvoegen" ;
+ $MS{"GeneratingDocumentation"} = "ConTeXt documentatie file voorbereiden" ;
+ $MS{"GeneratingSources"} = "ConTeXt broncode file genereren" ;
+ $MS{"FilteringDefinitions"} = "ConTeXt definities filteren" ;
+ $MS{"CopyingTemplates"} = "TeXEdit toets templates copieren" ;
+ $MS{"CopyingInformation"} = "TeXEdit help informatie copieren" ;
+ $MS{"GeneratingFigures"} = "figuur file genereren" ;
+ $MS{"FilteringLogFile"} = "log file filteren (poor mans version)" ;
+
+ $MS{"SortingIJ"} = "IJ sorteren onder Y" ;
+ $MS{"ConvertingHigh"} = "hoge ASCII waarden converteren" ;
+ $MS{"ProcessingQuotes"} = "characters met accenten afhandelen" ;
+ $MS{"ForcingFileType"} = "filetype instellen" ;
+ $MS{"UsingEps"} = "EPS files afhandelen" ;
+ $MS{"UsingTif"} = "TIF files afhandelen" ;
+ $MS{"UsingPdf"} = "PDF files afhandelen" ;
+ $MS{"UsingPng"} = "PNG files afhandelen" ;
+ $MS{"UsingJpg"} = "JPG files afhandelen" ;
+ $MS{"EpsToPdf"} = "EPS converteren naar PDF";
+ $MS{"EpsPage"} = "EPS pagina instellen";
+ $MS{"FilteringBoxes"} = "overfull boxes filteren" ;
+ $MS{"ApplyingCriterium"} = "criterium toepassen" ;
+ $MS{"FilteringUnknown"} = "onbekende ... filteren" ;
+
+ $MS{"NoInputFile"} = "geen invoer file opgegeven" ;
+ $MS{"NoOutputFile"} = "geen uitvoer file gegenereerd" ;
+ $MS{"EmptyInputFile"} = "lege invoer file" ;
+ $MS{"NotYetImplemented"} = "nog niet beschikbaar" ;
+
+ $MS{"Action"} = " actie :" ;
+ $MS{"Option"} = " optie :" ;
+ $MS{"Error"} = " fout :" ;
+ $MS{"Remark"} = " opmerking :" ;
+ $MS{"SystemCall"} = " systeemaanroep :" ;
+ $MS{"BadSystemCall"} = " foute systeemaanroep :" ;
+ $MS{"MissingSubroutine"} = " onbekende subroutine :" ;
+
+ $MS{"EmbeddedFiles"} = " gebruikte files :" ;
+ $MS{"BeginEndError"} = " b/e fout in :" ;
+ $MS{"SynonymEntries"} = " aantal synoniemen :" ;
+ $MS{"SynonymErrors"} = " fouten :" ;
+ $MS{"RegisterEntries"} = " aantal ingangen :" ;
+ $MS{"RegisterErrors"} = " fouten :" ;
+ $MS{"PassedCommands"} = " aantal commando's :" ;
+
+ $MS{"MultiPagePdfFile"} = " te veel pagina's :" ;
+ $MS{"MissingMediaBox"} = " geen mediabox :" ;
+ $MS{"MissingBoundingBox"} = " geen boundingbox :" ;
+
+ $MS{"NOfDocuments"} = " documentatie blokken :" ;
+ $MS{"NOfDefinitions"} = " definitie blokken :" ;
+ $MS{"NOfSkips"} = " overgeslagen blokken :" ;
+ $MS{"NOfSetups"} = " gecopieerde setups :" ;
+ $MS{"NOfTemplates"} = " gecopieerde templates :" ;
+ $MS{"NOfInfos"} = " gecopieerde helpinfos :" ;
+ $MS{"NOfFigures"} = " verwerkte figuren :" ;
+ $MS{"NOfBoxes"} = " te volle boxen :" ;
+ $MS{"NOfUnknown"} = " onbekende ... :" ;
+
+ $MS{"InputFile"} = " invoer file :" ;
+ $MS{"OutputFile"} = " outvoer file :" ;
+ $MS{"FileType"} = " type file :" ;
+ $MS{"EpsFile"} = " eps file :" ;
+ $MS{"PdfFile"} = " pdf file :" ;
+ $MS{"TifFile"} = " tif file :" ;
+ $MS{"PngFile"} = " png file :" ;
+ $MS{"JpgFile"} = " jpg file :" ;
+ $MS{"MPFile"} = " metapost file :" ;
+
+ $MS{"LoadedFilter"} = " geladen filter :" ;
+ $MS{"RemappedKeys"} = " onderschepte keys :" ;
+ $MS{"WrongFilterPath"} = " fout filter pad :" ;
+
+ $MS{"Overfull"} = "te vol" ;
+ $MS{"Entries"} = "ingangen" ;
+ $MS{"References"} = "verwijzingen" ;
+
+ } # end of dutch section
+
+elsif ($UserInterface eq "de")
+
+ { # begin of german section
+
+ $MS{"ProcessingReferences"} = "Verarbeiten der Befehle, Listen und Register" ;
+ $MS{"MergingReferences"} = "Register verschmelzen" ;
+ $MS{"GeneratingDocumentation"} = "Vorbereiten der ConTeXt-Dokumentationsdatei" ;
+ $MS{"GeneratingSources"} = "Erstellen einer nur Quelltext ConTeXt-Datei" ;
+ $MS{"FilteringDefinitions"} = "Filtern der ConTeXt-Definitionen" ;
+ $MS{"CopyingTemplates"} = "Kopieren der TeXEdit-Test-key-templates" ;
+ $MS{"CopyingInformation"} = "Kopieren der TeXEdit-Hilfsinformation" ;
+ $MS{"GeneratingFigures"} = "Erstellen einer Abb-Uebersichtsdatei" ;
+ $MS{"FilteringLogFile"} = "Filtern der log-Datei" ;
+
+ $MS{"SortingIJ"} = "Sortiere IJ nach Y" ;
+ $MS{"ConvertingHigh"} = "Konvertiere hohe ASCII-Werte" ;
+ $MS{"ProcessingQuotes"} = "Verarbeiten der Akzentzeichen" ;
+ $MS{"ForcingFileType"} = "Dateityp einstellen" ;
+ $MS{"UsingEps"} = "EPS-Dateien verarbeite" ;
+ $MS{"UsingTif"} = "TIF-Dateien verarbeite" ;
+ $MS{"UsingPdf"} = "PDF-Dateien verarbeite" ;
+ $MS{"UsingPng"} = "PNG-Dateien verarbeite" ;
+ $MS{"UsingJpg"} = "JPG-Dateien verarbeite" ;
+ $MS{"EpsToPdf"} = "convert EPS to PDF";
+ $MS{"EpsPage"} = "setup EPS page";
+
+ $MS{"FilteringBoxes"} = "Filtern der ueberfuellten Boxen" ;
+ $MS{"ApplyingCriterium"} = "Anwenden des uebervoll-Kriteriums" ;
+ $MS{"FilteringUnknown"} = "Filter unbekannt ..." ;
+
+ $MS{"NoInputFile"} = "Keine Eingabedatei angegeben" ;
+ $MS{"NoOutputFile"} = "Keine Ausgabedatei generiert" ;
+ $MS{"EmptyInputFile"} = "Leere Eingabedatei" ;
+ $MS{"NotYetImplemented"} = "Noch nicht verfuegbar" ;
+
+ $MS{"Action"} = " Aktion :" ;
+ $MS{"Option"} = " Option :" ;
+ $MS{"Error"} = " Fehler :" ;
+ $MS{"Remark"} = " Anmerkung :" ;
+ $MS{"SystemCall"} = " system call :" ;
+ $MS{"BadSystemCall"} = " bad system call :" ;
+ $MS{"MissingSubroutine"} = " missing subroutine :" ;
+ $MS{"SystemCall"} = " Systemaufruf :" ;
+ $MS{"BadSystemCall"} = " Fehlerhafter Aufruf :" ;
+ $MS{"MissingSubroutine"} = " Fehlende Unterroutine :" ;
+
+ $MS{"EmbeddedFiles"} = " Eingebettete Dateien :" ;
+ $MS{"BeginEndError"} = " Beg./Ende-Fehler in :" ;
+ $MS{"SynonymEntries"} = " Synonymeintraege :" ;
+ $MS{"SynonymErrors"} = " Fehlerhafte Eintraege :" ;
+ $MS{"RegisterEntries"} = " Registereintraege :" ;
+ $MS{"RegisterErrors"} = " Fehlerhafte Eintraege :" ;
+ $MS{"PassedCommands"} = " Verarbeite Befehle :" ;
+
+ $MS{"MultiPagePdfFile"} = " zu viele Seiten :" ;
+ $MS{"MissingMediaBox"} = " fehlende mediabox :" ;
+ $MS{"MissingBoundingBox"} = " fehlende boundingbox :" ;
+
+ $MS{"NOfDocuments"} = " Dokumentbloecke :" ;
+ $MS{"NOfDefinitions"} = " Definitionsbloecke :" ;
+ $MS{"NOfSkips"} = "Uebersprungene Bloecke :" ;
+ $MS{"NOfSetups"} = " Kopierte setups :" ;
+ $MS{"NOfTemplates"} = " Kopierte templates :" ;
+ $MS{"NOfInfos"} = " Kopierte helpinfos :" ;
+ $MS{"NOfFigures"} = " Verarbeitete Abb. :" ;
+ $MS{"NOfBoxes"} = " Zu volle Boxen :" ;
+ $MS{"NOfUnknown"} = " Unbekannt ... :" ;
+
+ $MS{"InputFile"} = " Eingabedatei :" ;
+ $MS{"OutputFile"} = " Ausgabedatei :" ;
+ $MS{"FileType"} = " Dateityp :" ;
+ $MS{"EpsFile"} = " eps-Datei :" ;
+ $MS{"PdfFile"} = " pdf-Datei :" ;
+ $MS{"TifFile"} = " tif-Datei :" ;
+ $MS{"PngFile"} = " png-Datei :" ;
+ $MS{"JpgFile"} = " jpg-Datei :" ;
+ $MS{"MPFile"} = " metapost-Datei :" ;
+
+ $MS{"LoadedFilter"} = " loaded filter :" ; # tobias
+ $MS{"RemappedKeys"} = " remapped keys :" ; # tobias
+ $MS{"WrongFilterPath"} = " wrong filter path :" ; # tobias
+
+ $MS{"Overfull"} = "zu voll" ;
+ $MS{"Entries"} = "Eintraege" ;
+ $MS{"References"} = "Referenzen" ;
+
+ } # end of german section
+
+else
+
+ { # begin of english section
+
+ $MS{"ProcessingReferences"} = "processing commands, lists and registers" ;
+ $MS{"MergingReferences"} = "merging registers" ;
+ $MS{"GeneratingDocumentation"} = "preparing ConTeXt documentation file" ;
+ $MS{"GeneratingSources"} = "generating ConTeXt source only file" ;
+ $MS{"FilteringDefinitions"} = "filtering formal ConTeXt definitions" ;
+ $MS{"CopyingTemplates"} = "copying TeXEdit quick key templates" ;
+ $MS{"CopyingInformation"} = "copying TeXEdit help information" ;
+ $MS{"GeneratingFigures"} = "generating figure directory file" ;
+ $MS{"FilteringLogFile"} = "filtering log file" ;
+
+ $MS{"SortingIJ"} = "sorting IJ under Y" ;
+ $MS{"ConvertingHigh"} = "converting high ASCII values" ;
+ $MS{"ProcessingQuotes"} = "handling accented characters" ;
+ $MS{"ForcingFileType"} = "setting up filetype" ;
+ $MS{"UsingEps"} = "processing EPS-file" ;
+ $MS{"UsingTif"} = "processing TIF-file" ;
+ $MS{"UsingPdf"} = "processing PDF-file" ;
+ $MS{"UsingPng"} = "processing PNG-file" ;
+ $MS{"UsingJpg"} = "processing JPG-file" ;
+ $MS{"EpsToPdf"} = "convert EPS to PDF";
+ $MS{"EpsPage"} = "setup EPS page";
+
+ $MS{"FilteringBoxes"} = "filtering overfull boxes" ;
+ $MS{"ApplyingCriterium"} = "applying overfull criterium" ;
+ $MS{"FilteringUnknown"} = "filtering unknown ..." ;
+
+ $MS{"NoInputFile"} = "no input file given" ;
+ $MS{"NoOutputFile"} = "no output file generated" ;
+ $MS{"EmptyInputFile"} = "empty input file" ;
+ $MS{"NotYetImplemented"} = "not yet available" ;
+
+ $MS{"Action"} = " action :" ;
+ $MS{"Option"} = " option :" ;
+ $MS{"Error"} = " error :" ;
+ $MS{"Remark"} = " remark :" ;
+ $MS{"SystemCall"} = " system call :" ;
+ $MS{"BadSystemCall"} = " bad system call :" ;
+ $MS{"MissingSubroutine"} = " missing subroutine :" ;
+
+ $MS{"EmbeddedFiles"} = " embedded files :" ;
+ $MS{"BeginEndError"} = " b/e error in :" ;
+ $MS{"SynonymEntries"} = " synonym entries :" ;
+ $MS{"SynonymErrors"} = " bad entries :" ;
+ $MS{"RegisterEntries"} = " register entries :" ;
+ $MS{"RegisterErrors"} = " bad entries :" ;
+ $MS{"PassedCommands"} = " passed commands :" ;
+
+ $MS{"MultiPagePdfFile"} = " too many pages :" ;
+ $MS{"MissingMediaBox"} = " missing mediabox :" ;
+ $MS{"MissingBoundingBox"} = " missing boundingbox :" ;
+
+ $MS{"NOfDocuments"} = " document blocks :" ;
+ $MS{"NOfDefinitions"} = " definition blocks :" ;
+ $MS{"NOfSkips"} = " skipped blocks :" ;
+ $MS{"NOfSetups"} = " copied setups :" ;
+ $MS{"NOfTemplates"} = " copied templates :" ;
+ $MS{"NOfInfos"} = " copied helpinfos :" ;
+ $MS{"NOfFigures"} = " processed figures :" ;
+ $MS{"NOfBoxes"} = " overfull boxes :" ;
+ $MS{"NOfUnknown"} = " unknown ... :" ;
+
+ $MS{"InputFile"} = " input file :" ;
+ $MS{"OutputFile"} = " output file :" ;
+ $MS{"FileType"} = " file type :" ;
+ $MS{"EpsFile"} = " eps file :" ;
+ $MS{"PdfFile"} = " pdf file :" ;
+ $MS{"TifFile"} = " tif file :" ;
+ $MS{"PngFile"} = " png file :" ;
+ $MS{"JpgFile"} = " jpg file :" ;
+ $MS{"MPFile"} = " metapost file :" ;
+
+ $MS{"LoadedFilter"} = " loaded filter :" ;
+ $MS{"RemappedKeys"} = " remapped keys :" ;
+ $MS{"WrongFilterPath"} = " wrong filter path :" ;
+
+ $MS{"Overfull"} = "overfull" ;
+ $MS{"Entries"} = "entries" ;
+ $MS{"References"} = "references" ;
+
+ } # end of english section
+
+#D \stopcompressdefinitions
+
+#D Showing the banner (name and version of the program) and
+#D offering helpinfo is rather straightforward.
+
+sub ShowBanner
+ { Report("\n $Program\n") }
+
+sub ShowHelpInfo
+ { Report("HelpInfo") }
+
+#D The helpinfo is also saved in the hash table. This looks
+#D like a waste of energy and space, but the program gains
+#D readability.
+
+#D \startcompressdefinitions
+
+if ($UserInterface eq "nl")
+
+ { # begin of dutch section
+
+ $MS{"HelpInfo"} =
+
+" --references hulp file verwerken / tui->tuo \n" .
+" --ij : IJ als Y sorteren \n" .
+" --high : hoge ASCII waarden converteren \n" .
+" --quotes : quotes converteren \n" .
+" --tcxpath : tcx filter pad \n" .
+" \n" .
+" --purge tijdelijke (klad) files verwijderen \n" .
+" \n" .
+" --documents documentatie file genereren / tex->ted \n" .
+" --sources broncode file genereren / tex->tes \n" .
+" --setups ConTeXt definities filteren / tex->texutil.tus \n" .
+" --templates TeXEdit templates filteren / tex->tud \n" .
+" --infos TeXEdit helpinfo filteren / tex->tud \n" .
+" \n" .
+" --figures eps figuren lijst genereren / *->texutil.tuf \n" .
+" --epspage : voorbereiden voor pdf \n" .
+" --epstopdf : omzetten naar pdf \n" .
+" \n" .
+" --logfile logfile filteren / log->$ProgramLog \n" .
+" --box : overfull boxes controleren \n" .
+" --criterium : overfull criterium in pt \n" .
+" --unknown :onbekende ... controleren \n" ;
+
+ } # end of dutch section
+
+elsif ($UserInterface eq "de")
+
+ { # begin of german section
+
+ $MS{"HelpInfo"} =
+
+" --references Verarbeiten der Hilfsdatei / tui->tuo \n" .
+" --ij : Sortiere IJ als Y \n" .
+" --high : Konvertiere hohe ASCII-Werte \n" .
+" --quotes : Konvertiere akzentuierte Buchstaben \n" .
+" --tcxpath : tcx Filter Path \n" .
+" \n" .
+" --purge entferne temporaere ConTeXt-Dateien \n" .
+" \n" .
+" --documents Erstelle Dokumentationsdatei / tex->ted \n" .
+" --sources Erstelle reine Quelltextdateien / tex->tes \n" .
+" --setups Filtere ConTeXt-Definitionen / tex->texutil.tus\n" .
+" --templates Filtere TeXEdit-templates / tex->tud \n" .
+" --infos Filtere TeXEdit-helpinfo / tex->tud \n" .
+" \n" .
+" --figures Erstelle eps-Abbildungsliste / *->texutil.tuf \n" .
+" --epspage : Bereite fuer pdf vor \n" .
+" --epstopdf : Konvertiere zu pdf \n" .
+" \n" .
+" --logfile Filtere log-Datei / log->$ProgramLog \n" .
+" --box : Ueberpruefe uebervolle Boxen \n" .
+" --criterium : Uebervoll-Kriterium in pt \n" .
+" --unknown : Ueberpruefe auf unbekannte ... \n" ;
+
+ } # end of german section
+
+
+else
+
+ { # begin of english section
+
+ $MS{"HelpInfo"} =
+
+" --references process auxiliary file / tui->tuo \n" .
+" --ij : sort IJ as Y \n" .
+" --high : convert high ASCII values \n" .
+" --quotes : convert quotes characters \n" .
+" --tcxpath : tcx filter path \n" .
+" \n" .
+" --purge clean up temporary context files \n" .
+" \n" .
+" --documents generate documentation file / tex->ted \n" .
+" --sources generate source only file / tex->tes \n" .
+" --setups filter ConTeXt definitions / tex->texutil.tus \n" .
+" --templates filter TeXEdit templates / tex->tud \n" .
+" --infos filter TeXEdit helpinfo / tex->tud \n" .
+" \n" .
+" --figures generate eps figure list / *->texutil.tuf \n" .
+" --epspage : prepare for pdf \n" .
+" --epstopdf : convert to pdf \n" .
+" \n" .
+" --logfile filter logfile / log->$ProgramLog \n" .
+" --box : check overful boxes \n" .
+" --criterium : overfull criterium in pt \n" .
+" --unknown : check unknown ... \n" ;
+
+ } # end of english section
+
+#D \stopcompressdefinitions
+
+#D In order to sort strings correctly, we have to sanitize
+#D them. This is especially needed when we include \TEX\
+#D commands, quotes characters and compound word placeholders.
+#D
+#D \startopsomming[opelkaar]
+#D \som \type{\name}: csnames are stripped
+#D \som \type{{}}: are removed
+#D \som \type{\"e}: and alike are translated into \type{"e} etc.
+#D \som \type{"e}: is translated into an \type{e} and \type{b} etc.
+#D \som \type{||}: becomes \type{-}
+#D \som \type{\-}: also becomes \type{-}
+#D \stopopsomming
+#D
+#D Of course other accented characters are handled too. The
+#D appended string is responsible for decent sorting.
+#D
+#D \startPL
+#D $TargetString = SanitizedString ( $SourceString ) ;
+#D \stopPL
+#D
+#D The sort order depends on the ordering in array
+#D \type{$ASCII}:
+
+$ASCII{"^"} = "a" ; $ASCII{'"'} = "b" ; $ASCII{"`"} = "c" ;
+$ASCII{"'"} = "d" ; $ASCII{"~"} = "e" ; $ASCII{","} = "f" ;
+
+#sub SanitizedString
+# { my ($string) = $_[0] ;
+# if ($ProcessQuotes)
+# { $string =~ s/\\([\^\"\`\'\~\,])/$1/gio ;
+# $copied = $string ;
+# $copied =~ s/([\^\"\`\'\~\,])([a-zA-Z])/$ASCII{$1}/gio ;
+# $string =~ s/([\^\"\`\'\~\,])([a-zA-Z])/$2/gio ;
+# $string=$string.$copied }
+# $string =~ s/\\-|\|\|/\-/gio ;
+# $string =~ s/\\[a-zA-Z]*| |\{|\}//gio ;
+# return $string }
+
+#D YET UNDOCUMENTED
+
+my $SortN = 0 ; my @Filter ;
+
+# copied from texexec
+
+my @paths ;
+my $kpsewhich = '' ;
+my $pathslash = '/' ; if ($0 =~ /\\/) { $pathslash = "\\" }
+
+sub checked_path
+ { my $path = shift ;
+ if ((defined($path))&&($path ne ''))
+ { $path =~ s/[\/\\]/$pathslash/go ;
+ $path =~ s/[\/\\]*$//go ;
+ $path .= $pathslash }
+ else
+ { $path = '' }
+ return $path }
+
+if ($ENV{PATH} =~ /\;/)
+ { @paths = split(/\;/,$ENV{PATH}) }
+else
+ { @paths = split(/\:/,$ENV{PATH}) }
+
+# until here.
+
+sub InitializeKeys
+ { my $filename = $ARGV[0] ;
+ return unless (open(TEX,"$filename.tex")) ;
+ for ($i=0;$i<=255;$i++)
+ { @Filter[$i] = $i }
+ if ($TcXPath eq '')
+ { foreach (@paths)
+ { my $p = checked_path($_) . 'kpsewhich' ;
+ if ((-e $p)||(-e $p . '.exe'))
+ { $kpsewhich = $p ; last } } }
+ while (<TEX>)
+ { chomp ;
+ my $Filter ;
+ if (/^\%/)
+ { if (s/.*translat.*?=([\:\/0-9\-a-z]*)/$1/oi)
+ { my $Translation = $_ ;
+ if ($TcXPath ne '')
+ { $TcXPath = checked_path($TcXPath) ;
+ $Filter = "$TcXPath$pathslash$Translation.tcx" }
+ elsif ($kpsewhich ne '')
+ { $Filter = `$kpsewhich --format="web2c files" $Translation.tcx` ;
+ chomp $Filter }
+ else
+ { last }
+ if (open(ASC,$Filter))
+ { Report ("LoadedFilter", $Translation) ;
+ while (<ASC>)
+ { if (/^(\d+)\s*(\d+)/)
+ { @Filter[$2] = $1 } }
+ close (ASC) }
+ elsif ($TcXPath ne '')
+ { Report ("WrongFilterPath", $TcXPath) }
+ last } }
+ else
+ { last } }
+ close (TEX) }
+
+sub HandleKey
+ { ++$SortN ;
+ $RestOfLine =~ s/\{(.*)\}/$1/o ;
+ my ($lan, $enc, $str, $chr, $map, $alf) = split(/\}\s*\{/, $RestOfLine) ;
+ if ($str =~ /^(\d+)/) { $str = ''.chr(@Filter[$1]) }
+ $map = chr(ord($MAP[$i])+128) ;
+ $STR[$SortN] = $str ;
+ $CHR[$SortN] = $chr ;
+ $MAP[$SortN] = $map ;
+ $ALF{"$chr$map"} = $alf }
+
+sub FlushKeys
+ { Report ("RemappedKeys", $SortN) }
+
+sub SanitizedString
+ { my $string = shift ;
+ if ($SortN)
+ { my $copied = $string ;
+ for ($i=1;$i<=$SortN;$i++)
+ { my $s = $STR[$i] ;
+ my $m = $MAP[$i] ;
+ my $c = $CHR[$i] ;
+ $string =~ s/($s)/$c/ge ;
+ $copied =~ s/($s)/$m/eg }
+ #print "$string $copied\n" ;
+ $string .= "\x00";
+ $string .= $copied }
+ elsif ($ProcessQuotes)
+ { $string =~ s/\\([\^\"\`\'\~\,])/$1/gio ;
+ $copied = $string ;
+ $copied =~ s/([\^\"\`\'\~\,])([a-zA-Z])/$ASCII{$1}/gio ;
+ $string =~ s/([\^\"\`\'\~\,])([a-zA-Z])/$2/gio ;
+ $string .= "\x00";
+ $string .= $copied }
+ $string =~ s/\\-|\|\|/\-/gio ;
+ $string =~ s/\\[a-zA-Z]*| |\{|\}//gio ;
+ return $string }
+
+#D This subroutine looks a bit complicated, which is due to the
+#D fact that we want to sort for instance an accented \type{e}
+#D after the plain \type{e}, so the imaginary words
+#D
+#D \starttypen
+#D eerste
+#D \"eerste
+#D \"e\"erste
+#D eerst\"e
+#D \stoptypen
+#D
+#D come out in an acceptable order.
+
+#D We also have to deal with the typical \TEX\ sequences with
+#D the double \type{^}'s, like \type{^^45}. These hexadecimal
+#D coded characters are just converted.
+#D
+#D \startPL
+#D $TargetString = HighConverted ( $SourceString ) ;
+#D \stopPL
+
+sub HighConverted
+ { my ($string) = $_[0] ;
+ $string =~ s/\^\^([a-f0-9][a-f0-9])/chr hex($1)/geo ;
+ return $string }
+
+#D \extras
+#D {references}
+#D
+#D \CONTEXT\ can handle many lists, registers (indexes),
+#D tables of whatever and references. This data is collected
+#D in one pass and processed in a second one. In between,
+#D relevant data is saved in the file \type{\jobname.tui}.
+#D This file also holds some additional information concerning
+#D second pass optimizations.
+#D
+#D The main task of \TEXUTIL\ is to sort lists and registers
+#D (indexes). The results are stored in again one file called
+#D \type{\jobname.tuo}.
+#D
+#D Just for debugging purposes the nesting of files loaded
+#D during the \CONTEXT\ run is stored. Of course this only
+#D applies to files that are handled by the \CONTEXT\ file
+#D structuring commands (projects, products, components and
+#D environments).
+#D
+#D We have to handle the entries:
+#D
+#D \starttypen
+#D f b {test}
+#D f e {test}
+#D \stoptypen
+#D
+#D and only report some status info at the end of the run.
+
+sub InitializeFiles
+ { $NOfFiles = 0 ;
+ $NOfBadFiles = 0 }
+
+sub HandleFile
+ { $RestOfLine =~ s/.*\{(.*)\}/$1/gio ;
+ ++$Files{$RestOfLine} }
+
+sub FlushFiles
+ { print TUO "%\n" . "% $Program / Files\n" . "%\n" ;
+ foreach $File (keys %Files)
+ { print TUO "% $File ($Files{$File})\n" }
+ print TUO "%\n" ;
+ $NOfFiles = keys %Files ;
+ Report("EmbeddedFiles", $NOfFiles) ;
+ foreach $File (keys %Files)
+ { unless (($Files{$File} % 2) eq 0)
+ { ++$NOfBadFiles ;
+ Report("BeginEndError", $File) } } }
+
+#D Commands don't need a special treatment. They are just
+#D copied. Such commands are tagged by a \type{c}, like:
+#D
+#D \starttypen
+#D c \thisisutilityversion{year.month.day}
+#D c \twopassentry{class}{key}{value}
+#D c \mainreference{prefix}{entry}{pagenumber}{realpage}{tag}
+#D c \listentry{category}{tag}{number}{title}{pagenumber}{realpage}
+#D c \initializevariable\realnumberofpages{number}
+#D \stoptypen
+#D
+#D For historic reasons we check for the presense of the
+#D backslash.
+
+my $NOfPositionsFound = 0 ;
+my $TotalNOfPositions = 0 ;
+my $TotalNOfMPgraphics = 0 ;
+
+sub InitializeCommands
+ { print TUO "%\n" . "% $Program / Commands\n" . "%\n" ;
+ $NOfCommands = 0 }
+
+sub HandleCommand
+ { ++$NOfCommands ;
+ $RestOfLine =~ s/^\\//go ;
+ if ($RestOfLine =~ /^pospxy/o)
+ { ++$NOfPositionsFound }
+ elsif ($RestOfLine =~ /^initializevariable\\totalnofpositions\{(.*)\}/i)
+ { $TotalNOfPositions = $1 }
+ elsif ($RestOfLine =~ /^initializevariable\\totalnofMPgraphics\{(.*)\}/i)
+ { $TotalNOfMPgraphics = $1 }
+ print TUO "\\$RestOfLine\n" }
+
+sub FlushCommands
+ { Report ("PassedCommands", $NOfCommands) }
+
+#D Synonyms are a sort of key||value pairs and are used for
+#D ordered lists like abbreviations and units.
+#D
+#D \starttypen
+#D s e {class}{sanitized key}{key}{associated data}
+#D \stoptypen
+#D
+#D The sorted lists are saved as (surprise):
+#D
+#D \starttypen
+#D \synonymentry{class}{sanitized key}{key}{associated data}
+#D \stoptypen
+
+sub InitializeSynonyms
+ { $NOfSynonyms = 0 ;
+ $NOfBadSynonyms = 0 }
+
+#M \definieersynoniem [testname] [testnames] [\testmeaning]
+#M
+#M \stelsynoniemenin [testname] [criterium=alles]
+
+#D Let's first make clear what we can expect. Synonym
+#D entries look like:
+#D
+#D \startbuffer
+#D \testname [alpha] {\sl alpha} {a greek letter a}
+#D \testname {alpha} {another a}
+#D \testname [Beta] {\kap{beta}} {a greek letter b}
+#D \testname {beta} {indeed another b}
+#D \testname {gamma} {something alike g}
+#D \testname {delta} {just a greek d}
+#D \stopbuffer
+#D
+#D \typebuffer
+#D
+#D This not that spectacular list is to be sorted according
+#D to the keys (names). \haalbuffer
+
+sub HandleSynonym
+ { ++$NOfSynonyms ;
+ ($SecondTag, $RestOfLine) = split(/ /, $RestOfLine, 2) ;
+ ($Class, $Key, $Entry, $Meaning) = split(/} \{/, $RestOfLine) ;
+ chop $Meaning ;
+ $Class = substr $Class, 1 ;
+ if ($Entry eq "")
+ { ++$NOfBadSynonyms }
+ else
+ { $SynonymEntry[$NOfSynonyms] =
+ join ($JOIN,$Class,$Key,$Entry,$Meaning) } }
+
+#D Depending on the settings\voetnoot{One can call for
+#D all defined entries, call only the used ones, change
+#D layout, attach (funny) commands etc.} a list of
+#D {\em testnames} looks like:
+#D
+#D \plaatslijstmettestnames
+#D
+#D Watch the order in which these entries are sorted.
+
+sub FlushSynonyms
+ { print TUO "%\n" . "% $Program / Synonyms\n" . "%\n" ;
+ @SynonymEntry = sort { lc($a) cmp lc($b) } @SynonymEntry ;
+ $NOfSaneSynonyms = 0 ;
+ for ($n=1; $n<=$NOfSynonyms; $n++)
+ { # check normally not needed
+ if (($n==1)||($SynonymEntry[$n] ne $SynonymEntry[$n-1]))
+ { ($Class, $Key, $Entry, $Meaning) =
+ split(/$JOIN/, $SynonymEntry[$n]) ;
+ ++$NOfSaneSynonyms ;
+ print TUO "\\synonymentry{$Class}{$Key}{$Entry}{$Meaning}\n" } }
+ Report("SynonymEntries", $NOfSynonyms, "->", $NOfSaneSynonyms, "Entries") ;
+ if ($NOfBadSynonyms>0)
+ { Report("SynonymErrors", $NOfBadSynonyms) } }
+
+#D Register entries need a bit more care, especially when they
+#D are nested. In the near future we will also handle page
+#D ranges.
+#D
+#D \starttypen
+#D r e {class}{tag}{sanitized key}{key}{pagenumber}{realpage}
+#D r s {class}{tag}{sanitized key}{key}{string}{pagenumber}
+#D r r {class}{tag}{sanitized key}{key}{string}{pagenumber}
+#D \stoptypen
+#D
+#D The last one indicates the start of a range.
+
+#D The first one is the normal entry, the second one concerns
+#D {\em see this or that} entries. Keys are sanitized, unless
+#D the user supplies a sanitized key. To save a lot of
+#D programming, all data concerning an entry is stored in one
+#D string. Subentries are specified as:
+#D
+#D \starttypen
+#D first&second&third
+#D first+second+third
+#D \stoptypen
+#D
+#D When these characters are needed for typesetting purposes, we
+#D can also use the first character to specify the separator:
+#D
+#D \starttypen
+#D &$x^2+y^2=r^2$
+#D +this \& that
+#D \stoptypen
+#D
+#D Subentries are first unpacked and next stored in a
+#D consistent way, which means that we can use both separators
+#D alongside each other. We leave it to the reader to sort
+#D out the dirty tricks.
+
+$SPLIT ="%%" ;
+$JOIN ="__" ;
+
+sub InitializeRegisters
+ { $NOfEntries = 0 ;
+ $NOfBadEntries = 0 }
+
+$ProcessType = "" ;
+
+$RegStat{"f"} = 1 ;
+$RegStat{"e"} = 2 ; # end up between from and to
+$RegStat{"t"} = 3 ;
+$RegStat{"s"} = 4 ;
+
+sub HandleRegister
+ { ($SecondTag, $RestOfLine) = split(/ /, $RestOfLine, 2) ;
+ ++$NOfEntries ;
+ if ($SecondTag eq "s")
+ { ($Class, $Location, $Key, $Entry, $SeeToo, $Page ) =
+ split(/} \{/, $RestOfLine) ;
+ chop $Page ;
+ $Class = substr $Class, 1 ;
+ $RealPage = 0 }
+ else
+ { ($Class, $Location, $Key, $Entry, $Page, $RealPage ) =
+ split(/} \{/, $RestOfLine) ;
+ chop $RealPage ;
+ $Class = substr $Class, 1 ;
+ $SeeToo = "" }
+ #
+ $_ = $Key ;
+ if (/\:\:/)
+ { ($PageHow,$Key) = split (/\:\:/) }
+ else
+ { $PageHow = "" }
+ $_ = $Entry ;
+ if (/\:\:/)
+ { ($TextHow,$Entry) = split (/\:\:/) }
+ else
+ { $TextHow = "" }
+ #
+ if ($Key eq "")
+ { $Key = SanitizedString($Entry) }
+if ($SortMethod ne '') { $ProcessHigh = 0 }
+ if ($ProcessHigh)
+ { $Key = HighConverted($Key) }
+ $KeyTag = substr $Key, 0, 1 ;
+ if ($KeyTag eq "&")
+ { $Key =~ s/^\&//go ;
+ $Key =~ s/([^\\])\&/$1$SPLIT/go }
+ elsif ($KeyTag eq "+")
+ { $Key =~ s/^\+//go ;
+ $Key =~ s/([^\\])\+/$1$SPLIT/go }
+ else
+ { $Key =~ s/([^\\])\&/$1$SPLIT/go ;
+ $Key =~ s/([^\\])\+/$1$SPLIT/go }
+ $Key .= " " ; # so, "Word" comes for "Word Another Word"
+ $EntryTag = substr $Entry, 0, 1 ;
+ if ($EntryTag eq "&")
+ { $Entry =~ s/^\&//go ;
+ $Entry =~ s/([^\\])\&/$1$SPLIT/go }
+ elsif ($EntryTag eq "+")
+ { $Entry =~ s/^\+//go ;
+ $Entry =~ s/([^\\])\+/$1$SPLIT/go }
+ elsif ($KeyTag eq "&")
+ { $Entry =~ s/([^\\])\&/$1$SPLIT/go }
+ elsif ($KeyTag eq "+")
+ { $Entry =~ s/([^\\])\+/$1$SPLIT/go }
+ else
+ { $Entry =~ s/([^\\])\&/$1$SPLIT/go ;
+ $Entry =~ s/([^\\])\+/$1$SPLIT/go }
+ $Key =~ s/^([^a-zA-Z])/ $1/go ;
+ if ($ProcessIJ)
+ { $Key =~ s/ij/yy/go }
+ $LCKey = lc $Key ;
+ $RegStatus = $RegStat{$SecondTag} ;
+ $RealPageNumber= sprintf("%6i",$RealPage) ;
+ $RegisterEntry[$NOfEntries] =
+ join($JOIN,$Class,$LCKey,$Key,$Entry,$TextHow,$RegStatus,
+ $RealPageNumber,$Location,$Page,$PageHow,$SeeToo) }
+
+#M \definieerregister [testentry] [testentries]
+
+#D The previous routine deals with entries like:
+#D
+#D \startbuffer
+#D \testentry {alpha}
+#D \testentry {beta}
+#D \testentry {gamma}
+#D \testentry {gamma}
+#D \testentry {delta}
+#D \testentry {epsilon}
+#D \testentry {alpha+first}
+#D \testentry {alpha+second}
+#D \testentry {alpha+second}
+#D \testentry {alpha+third}
+#D \testentry {alpha+second+one}
+#D \testentry {alpha+second+one}
+#D \testentry {alpha+second+two}
+#D \testentry {alpha+second+three}
+#D \testentry {gamma+first+one}
+#D \testentry {gamma+second}
+#D \testentry {gamma+second+one}
+#D
+#D \testentry {alpha+fourth}
+#D \testentry {&alpha&fourth}
+#D \testentry {+alpha+fourth}
+#D
+#D \testentry [alpha+fourth] {alpha+fourth}
+#D \testentry [&alpha&fourth&one] {&alpha&fourth&one}
+#D \testentry [+alpha+fourth+two] {&alpha&fourth&two}
+#D
+#D \testentry {\kap{alpha}+fifth}
+#D \testentry {\kap{alpha}+f\'ifth}
+#D \testentry {\kap{alpha}+f"ifth}
+#D
+#D \testentry [&betaformula] {&$a^2+b^2=c^2$}
+#D
+#D \testentry {zeta \& more}
+#D
+#D \testentry [pagehowto::key]{texthowto::entry}
+#D
+#D \stopbuffer
+#D
+#D \typebuffer
+#D
+#D \haalbuffer After being sorted, these entries are
+#D turned into something \TEX\ using:
+
+$RegisterEntry[0] = ("") ;
+
+sub How
+ { return "$TextHow\:\:" . "$_[0]" }
+
+sub FlushRegisters
+ { print TUO "%\n" . "% $Program / Registers\n" . "%\n" ;
+ @RegisterEntry = sort { lc($a) cmp lc($b) } @RegisterEntry ;
+ $NOfSaneEntries = 0 ;
+ $NOfSanePages = 0 ;
+ $LastPage = "" ;
+ $LastRealPage = "" ;
+ $AlfaClass = "" ;
+ $Alfa = "" ;
+ $PreviousA = "" ;
+ $PreviousB = "" ;
+ $PreviousC = "" ;
+ $ActualA = "" ;
+ $ActualB = "" ;
+ $ActualC = "" ;
+ for ($n=1 ; $n<=$NOfEntries ; ++$n)
+ { ($Class, $LCKey, $Key, $Entry, $TextHow, $RegisterState,
+ $RealPage, $Location, $Page, $PageHow, $SeeToo) =
+ split(/$JOIN/, $RegisterEntry[$n]) ;
+ $RealPage =~ s/^\s*//o ;
+ $TestAlfa = lc substr $Key, 0, 1 ;
+#
+if ($SortN)
+ { $AlfKey = $Key ;
+ $AlfKey =~ s/(.).*\x00(.).*/$1$2/o ;
+ if (defined($ALF{$AlfKey}))
+ { $TestAlfa = $ALF{$AlfKey} } }
+#
+ if ((lc $TestAlfa ne lc $Alfa) or ($AlfaClass ne $Class))
+ { # $Alfa= lc substr $Key, 0, 1 ;
+ $Alfa = $TestAlfa ;
+ $AlfaClass = $Class ;
+ if ($Alfa ne " ")
+ { print TUO "\\registerentry{$Class}{$Alfa}\n" } }
+ ($ActualA, $ActualB, $ActualC ) =
+ split(/$SPLIT/, $Entry, 3) ;
+ unless ($ActualA) { $ActualA = "" }
+ unless ($ActualB) { $ActualB = "" }
+ unless ($ActualC) { $ActualC = "" }
+ if (How($ActualA) eq $PreviousA)
+ { $ActualA = "" }
+ else
+ { $PreviousA = How($ActualA) ;
+ $PreviousB = "" ;
+ $PreviousC = "" }
+ if (How($ActualB) eq $PreviousB)
+ { $ActualB = "" }
+ else
+ { $PreviousB = How($ActualB) ;
+ $PreviousC = "" }
+ if (How($ActualC) eq $PreviousC)
+ { $ActualC = "" }
+ else
+ { $PreviousC = How($ActualC) }
+ $Copied = 0 ;
+ if ($ActualA ne "")
+ { print TUO "\\registerentrya{$Class}{$ActualA}\n" ;
+ $Copied = 1 }
+ if ($ActualB ne "")
+ { print TUO "\\registerentryb{$Class}{$ActualB}\n" ;
+ $Copied = 1 }
+ if ($ActualC ne "")
+ { print TUO "\\registerentryc{$Class}{$ActualC}\n" ;
+ $Copied = 1 }
+ if ($Copied)
+ { $NOfSaneEntries++ }
+ if ($RealPage eq 0)
+# { print TUO "\\registersee{$Class}{$SeeToo}{$Page}\n" ;
+{ print TUO "\\registersee{$Class}{$PageHow,$TextHow}{$SeeToo}{$Page}\n" ;
+ $LastPage = $Page ;
+ $LastRealPage = $RealPage }
+ elsif (($Copied) ||
+ ! (($LastPage eq $Page) and ($LastRealPage eq $RealPage)))
+# { print TUO "\\registerpage{$Class}{$Location}{$Page}{$RealPage}\n" ;
+{ if ($RegisterState eq $RegStat{"f"})
+ { print TUO "\\registerfrom{$Class}{$PageHow,$TextHow}{$Location}{$Page}{$RealPage}\n" }
+ elsif ($RegisterState eq $RegStat{"t"})
+ { print TUO "\\registerto {$Class}{$PageHow,$TextHow}{$Location}{$Page}{$RealPage}\n" }
+ else
+ { print TUO "\\registerpage{$Class}{$PageHow,$TextHow}{$Location}{$Page}{$RealPage}\n" }
+ ++$NOfSanePages ;
+ $LastPage = $Page ;
+ $LastRealPage = $RealPage } }
+ Report("RegisterEntries", $NOfEntries, "->", $NOfSaneEntries, "Entries",
+ $NOfSanePages, "References") ;
+ if ($NOfBadEntries>0)
+ { Report("RegisterErrors", $NOfBadEntries) } }
+
+#D As promised, we show the results:
+#D
+#D \plaatstestentry
+
+#D For debugging purposes we flush some status information. The
+#D faster machines become, the more important this section will
+#D be. The totals, when changed, force texexec to do a second pass.
+
+sub FlushData
+ { print TUO "" .
+ "% embedded files : $NOfFiles ($NOfBadFiles errors)\n" .
+ "% synonym entries : $NOfSynonyms ($NOfBadSynonyms errors)\n" .
+ "% register entries : $NOfEntries ($NOfBadEntries errors)\n" .
+ "% metapost graphics : $TotalNOfMPgraphics\n" .
+ "% position commands : $TotalNOfPositions " ;
+ if ($TotalNOfPositions)
+ { if ($NOfPositionsFound)
+ { print TUO "(resolved)\n" }
+ else
+ { print TUO "(unresolved)\n" } }
+ else
+ { print TUO "(not used)\n" } }
+
+#D The functionallity described on the previous few pages is
+#D called upon in the main routine:
+
+sub NormalHandleReferences
+ { if ($InputFile eq "")
+ { Report("Error", "NoInputFile") }
+ else
+ { unless (open (TUI, "$InputFile.tui"))
+ { Report("Error", "EmptyInputFile", $InputFile) }
+ else
+ { Report("InputFile", "$InputFile.tui" ) ;
+ unlink "$InputFile.tmp" ;
+ rename "$InputFile.tuo", "$InputFile.tmp" ;
+ Report("OutputFile", "$InputFile.tuo" ) ;
+ open (TUO, ">$InputFile.tuo") ;
+ print TUO "%\n" . "% $Program / Commands\n" . "%\n" ;
+ while (<TUI>)
+ { $SomeLine = $_ ;
+ chomp $SomeLine ;
+ ($FirstTag, $RestOfLine) = split ' ', $SomeLine, 2 ;
+ if ($FirstTag eq "c")
+ { HandleCommand }
+ elsif ($FirstTag eq "s")
+ { HandleSynonym }
+ elsif ($FirstTag eq "r")
+ { HandleRegister }
+ elsif ($FirstTag eq "f")
+ { HandleFile }
+ elsif ($FirstTag eq "k")
+ { HandleKey }
+ elsif ($FirstTag eq "q")
+ { $ValidOutput = 0 ;
+ last } }
+ if ($ValidOutput)
+ { FlushCommands ; # already done during pass
+ FlushKeys ;
+ FlushRegisters ;
+ FlushSynonyms ;
+ FlushFiles ;
+ FlushData ;
+ close (TUO) }
+ else
+ { close (TUO) ;
+ unlink "$InputFile.tuo" ;
+ rename "$InputFile.tmp", "$InputFile.tuo" ;
+ Report ("Remark", "NoOutputFile") } } } }
+
+my $Suffix ;
+
+sub MergerHandleReferences
+ { unlink "texutil.tuo" ;
+ Report("OutputFile", "texutil.tuo" ) ;
+ open (TUO, ">texutil.tuo") ;
+ foreach $InputFile (@ARGV)
+ { ($InputFile, $Suffix) = split (/\./, $InputFile, 2) ;
+ unless (open (TUI, "$InputFile.tui"))
+ { Report("Error", "EmptyInputFile", $InputFile) }
+ else
+ { Report("InputFile", "$InputFile.tui" ) ;
+ while (<TUI>)
+ { $SomeLine = $_ ;
+ chomp $SomeLine ;
+ ($FirstTag, $RestOfLine) = split ' ', $SomeLine, 2 ;
+ if ($FirstTag eq "r")
+ { HandleRegister } } } }
+ if ($ValidOutput)
+ { FlushRegisters ;
+ close (TUO) }
+ else
+ { close (TUO) ;
+ unlink "texutil.tuo" ;
+ Report ("Remark", "NoOutputFile") } }
+
+# sub HandleReferences
+# { Report("Action", "ProcessingReferences") ;
+# if ($ProcessIJ )
+# { Report("Option", "SortingIJ") }
+# if ($ProcessHigh)
+# { Report("Option", "ConvertingHigh") }
+# if ($ProcessQuotes)
+# { Report("Option", "ProcessingQuotes") }
+# if ($InputFile eq "")
+# { Report("Error", "NoInputFile") }
+# else
+# { unless (open (TUI, "$InputFile.tui"))
+# { Report("Error", "EmptyInputFile", $InputFile) }
+# else
+# { Report("InputFile", "$InputFile.tui" ) ;
+# InitializeCommands ;
+# InitializeRegisters ;
+# InitializeSynonyms ;
+# InitializeFiles ;
+# $ValidOutput = 1 ;
+# unlink "$InputFile.tmp" ;
+# rename "$InputFile.tuo", "$InputFile.tmp" ;
+# Report("OutputFile", "$InputFile.tuo" ) ;
+# open (TUO, ">$InputFile.tuo") ;
+# while (<TUI>)
+# { $SomeLine = $_ ;
+# chomp $SomeLine ;
+# ($FirstTag, $RestOfLine) = split ' ', $SomeLine, 2 ;
+# if ($FirstTag eq "c")
+# { HandleCommand }
+# elsif ($FirstTag eq "s")
+# { HandleSynonym }
+# elsif ($FirstTag eq "r")
+# { HandleRegister }
+# elsif ($FirstTag eq "f")
+# { HandleFile }
+# elsif ($FirstTag eq "q")
+# { $ValidOutput = 0 ;
+# last } }
+# if ($ValidOutput)
+# { FlushCommands ; # already done during pass
+# FlushRegisters ;
+# FlushSynonyms ;
+# FlushFiles ;
+# FlushData ;
+# close (TUO) }
+# else
+# { close (TUO) ;
+# unlink "$InputFile.tuo" ;
+# rename "$InputFile.tmp", "$InputFile.tuo" ;
+# Report ("Remark", "NoOutputFile") } } } }
+
+sub HandleReferences
+ { $Merging = @ARGV ;
+ $Merging = ($Merging>1) ;
+ if ($Merging)
+ { Report("Action", "MergingReferences") }
+ else
+ { Report("Action", "ProcessingReferences") }
+ if ($ProcessIJ )
+ { Report("Option", "SortingIJ") }
+ if ($ProcessHigh)
+ { Report("Option", "ConvertingHigh") }
+ if ($ProcessQuotes)
+ { Report("Option", "ProcessingQuotes") }
+ InitializeKeys ;
+ InitializeCommands ;
+ InitializeRegisters ;
+ InitializeSynonyms ;
+ InitializeFiles ;
+ $ValidOutput = 1 ;
+ if ($Merging)
+ { MergerHandleReferences }
+ else
+ { NormalHandleReferences } }
+
+#D \extras
+#D {documents}
+#D
+#D Documentation can be woven into a source file. The next
+#D routine generates a new, \TEX\ ready file with the
+#D documentation and source fragments properly tagged. The
+#D documentation is included as comment:
+#D
+#D \starttypen
+#D %D ...... some kind of documentation
+#D %M ...... macros needed for documenation
+#D %S B begin skipping
+#D %S E end skipping
+#D \stoptypen
+#D
+#D The most important tag is \type{%D}. Both \TEX\ and
+#D \METAPOST\ files use \type{%} as a comment chacacter, while
+#D \PERL\ uses \type{#}. Therefore \type{#D} is also handled.
+#D
+#D The generated file gets the suffix \type{ted} and is
+#D structured as:
+#D
+#D \starttypen
+#D \startmodule[type=suffix]
+#D \startdocumentation
+#D \stopdocumentation
+#D \startdefinition
+#D \stopdefinition
+#D \stopmodule
+#D \stoptypen
+#D
+#D Macro definitions specific to the documentation are not
+#D surrounded by start||stop commands. The suffix specifaction
+#D can be overruled at runtime, but defaults to the file
+#D extension. This specification can be used for language
+#D depended verbatim typesetting.
+
+my $skippingbang = 0 ;
+
+sub HandleDocuments
+ { Report("Action", "GeneratingDocumentation") ;
+ if ($ProcessType ne "")
+ { Report("Option", "ForcingFileType", $ProcessType) }
+ if ($InputFile eq "")
+ { Report("Error", "NoInputFile") }
+ else
+ { CheckInputFiles ($InputFile) ;
+ foreach $FullName (@UserSuppliedFiles)
+ { ($FileName, $FileSuffix) = SplitFileName ($FullName) ;
+ unless ($FileSuffix)
+ { $FileSuffix = "tex" }
+ unless (-f "$FileName.$FileSuffix")
+ { next }
+ unless (open (TEX, "$FileName.$FileSuffix"))
+ { Report("Error", "EmptyInputFile", "$FileName.$FileSuffix" ) }
+ else
+ { Report("InputFile", "$FileName.$FileSuffix") ;
+ Report("OutputFile", "$FileName.ted") ;
+ open (TED, ">$FileName.ted") ;
+ $NOfDocuments = 0 ;
+ $NOfDefinitions = 0 ;
+ $NOfSkips = 0 ;
+ $SkipLevel = 0 ;
+ $InDocument = 0 ;
+ $InDefinition = 0 ;
+ if ($ProcessType eq "")
+ { $FileType=lc $FileSuffix }
+ else
+ { $FileType=lc $ProcessType }
+ Report("FileType", $FileType) ;
+ print TED "\\startmodule[type=$FileType]\n" ;
+ while (<TEX>)
+ { chomp ;
+ s/\s*$//o ;
+ if ($skippingbang)
+ { $skippingbang = 0 }
+ elsif (/^[%\#]D/)
+ { if ($SkipLevel == 0)
+ { if (length $_ < 3)
+ {$SomeLine = "" }
+ else # HH: added after that
+ {$SomeLine = substr $_, 3 }
+ if ($InDocument)
+ { print TED "$SomeLine\n" }
+ else
+ { if ($InDefinition)
+ { print TED "\\stopdefinition\n" ;
+ $InDefinition = 0 }
+ unless ($InDocument)
+ { print TED "\n\\startdocumentation\n" }
+ print TED "$SomeLine\n" ;
+ $InDocument = 1 ;
+ ++$NOfDocuments } } }
+ elsif (/^[%\#]M/)
+ { if ($SkipLevel == 0)
+ { $SomeLine = substr $_, 3 ;
+ print TED "$SomeLine\n" } }
+ elsif (/^[%\%]S B]/)
+ { ++$SkipLevel ;
+ ++$NOfSkips }
+ elsif (/^[%\%]S E]/)
+ { --$SkipLevel }
+ elsif (/^[%\#]/)
+ { }
+ elsif (/^eval \'\(exit \$\?0\)\' \&\& eval \'exec perl/o)
+ { $skippingbang = 1 }
+ elsif ($SkipLevel == 0)
+ { $InLocalDocument = $InDocument ;
+ $SomeLine = $_ ;
+ if ($InDocument)
+ { print TED "\\stopdocumentation\n" ;
+ $InDocument = 0 }
+ if (($SomeLine eq "") && ($InDefinition))
+ { print TED "\\stopdefinition\n" ;
+ $InDefinition = 0 }
+ else
+ { if ($InDefinition)
+ { print TED "$SomeLine\n" }
+ elsif ($SomeLine ne "")
+ { print TED "\n" . "\\startdefinition\n" ;
+ $InDefinition = 1 ;
+ unless ($InLocalDocument)
+ { ++$NOfDefinitions }
+ print TED "$SomeLine\n" } } } }
+ if ($InDocument)
+ { print TED "\\stopdocumentation\n" }
+ if ($InDefinition)
+ { print TED "\\stopdefinition\n" }
+ print TED "\\stopmodule\n" ;
+ close (TED) ;
+ unless (($NOfDocuments) || ($NOfDefinitions))
+ { unlink "$FileName.ted" }
+ Report ("NOfDocuments", $NOfDocuments) ;
+ Report ("NOfDefinitions", $NOfDefinitions) ;
+ Report ("NOfSkips", $NOfSkips) } } } }
+
+#D \extras
+#D {sources}
+#D
+#D Documented sources can be stripped of documentation and
+#D comments, although at the current processing speeds the
+#D overhead of skipping the documentation at run time is
+#D neglectable. Only lines beginning with a \type{%} are
+#D stripped. The stripped files gets the suffix \type{tes}.
+
+sub HandleSources
+ { Report("Action", "GeneratingSources") ;
+ if ($InputFile eq "")
+ { Report("Error", "NoInputFile") }
+ else
+ { CheckInputFiles ($InputFile) ;
+ foreach $FullName (@UserSuppliedFiles)
+ { ($FileName, $FileSuffix) = SplitFileName ($FullName) ;
+ unless ($FileSuffix)
+ { $FileSuffix = "tex" }
+ unless (-f "$FileName.$FileSuffix")
+ { next }
+ unless (open (TEX, "$FileName.$FileSuffix"))
+ { Report("Error", "EmptyInputFile", "$FileName.$FileSuffix" ) }
+ else
+ { Report("InputFile", "$FileName.$FileSuffix") ;
+ Report("OutputFile", "$FileName.tes") ;
+ open (TES, ">$FileName.tes") ;
+ $EmptyLineDone = 1 ;
+ $FirstCommentDone = 0 ;
+ while (<TEX>)
+ { $SomeLine = $_ ;
+ chomp $SomeLine ;
+ if ($SomeLine eq "")
+ { unless ($FirstCommentDone)
+ { $FirstCommentDone = 1 ;
+ print TES
+ "\n% further documentation is removed\n\n" ;
+ $EmptyLineDone = 1 }
+ unless ($EmptyLineDone)
+ { print TES "\n" ;
+ $EmptyLineDone = 1 } }
+ elsif ($SomeLine =~ /^%/)
+ { unless ($FirstCommentDone)
+ { print TES "$SomeLine\n" ;
+ $EmptyLineDone = 0 } }
+ else
+ { print TES "$SomeLine\n" ;
+ $EmptyLineDone = 0 } }
+ close (TES) ;
+ unless ($FirstCommentDone)
+ { unlink "$FileName.tes" } } } } }
+
+#D \extras
+#D {setups}
+#D
+#D All \CONTEXT\ commands are specified in a compact format
+#D that can be used to generate quick reference tables and
+#D cards. Such setups are preceded by \type{%S}. The setups
+#D are collected in the file \type{texutil.tus}.
+
+sub HandleSetups
+ { Report("Action", "FilteringDefinitions" ) ;
+ if ($InputFile eq "")
+ { Report("Error", "NoInputFile") }
+ else
+ { SetOutputFile ("texutil.tus" ) ;
+ Report("OutputFile", $OutputFile) ;
+ open (TUS, ">$OutputFile") ; # always reset!
+ $NOfSetups = 0 ;
+ CheckInputFiles ($InputFile) ;
+ foreach $FullName (@UserSuppliedFiles)
+ { ($FileName, $FileSuffix) = SplitFileName ($FullName) ;
+ unless ($FileSuffix)
+ { $FileSuffix = "tex" }
+ unless (-f "$FileName.$FileSuffix")
+ { next }
+ unless (open (TEX, "$FileName.$FileSuffix"))
+ { Report("Error", "EmptyInputFile", "$FileName.$FileSuffix" ) }
+ else
+ { Report("InputFile", "$FileName.$FileSuffix") ;
+ print TUS "%\n" . "% File : $FileName.$FileSuffix\n" . "%\n" ;
+ while (<TEX>)
+ { $SomeLine = $_ ;
+ chomp $SomeLine ;
+ ($Tag, $RestOfLine) = split(/ /, $SomeLine, 2) ;
+ if ($Tag eq "%S")
+ { ++$NOfSetups ;
+ while ($Tag eq "%S")
+ { print TUS "$RestOfLine\n" ;
+ $SomeLine = <TEX> ;
+ chomp $SomeLine ;
+ ($Tag, $RestOfLine) = split(/ /, $SomeLine, 2) }
+ print TUS "\n" } } } }
+ close (TUS) ;
+ unless ($NOfSetups)
+ { unlink $OutputFile }
+ Report("NOfSetups", $NOfSetups) } }
+
+#D \extras
+#D {templates, infos}
+#D
+#D From the beginning, the \CONTEXT\ source files contained
+#D helpinfo and key||templates for \TEXEDIT. In fact, for a
+#D long time, this was the only documentation present. More
+#D and more typeset (interactive) documentation is replacing
+#D this helpinfo, but we still support the traditional method.
+#D This information is formatted like:
+#D
+#D \starttypen
+#D %I n=Struts
+#D %I c=\strut,\setnostrut,\setstrut,\toonstruts
+#D %I
+#D %I text
+#D %I ....
+#D %P
+#D %I text
+#D %I ....
+#D \stoptypen
+#D
+#D Templates look like:
+#D
+#D \starttypen
+#D %T n=kap
+#D %T m=kap
+#D %T a=k
+#D %T
+#D %T \kap{?}
+#D \stoptypen
+#D
+#D The key||value pairs stand for {\em name}, {\em mnemonic},
+#D {\em key}. This information is copied to files with the
+#D extension \type{tud}.
+
+sub HandleEditorCues
+ { if ($ProcessTemplates)
+ { Report("Action", "CopyingTemplates" ) }
+ if ($ProcessInfos)
+ {Report("Action", "CopyingInformation" ) }
+ if ($InputFile eq "")
+ { Report("Error", "NoInputFile") }
+ else
+ { CheckInputFiles ($InputFile) ;
+ foreach $FullName (@UserSuppliedFiles)
+ { ($FileName, $FileSuffix) = SplitFileName ($FullName) ;
+ if ($FileSuffix eq "")
+ { $FileSuffix = "tex" }
+ unless (-f "$FileName.$FileSuffix")
+ { next }
+ unless (open (TEX, "$FileName.$FileSuffix"))
+ { Report("Error", "EmptyInputFile", "$FileName.$FileSuffix" ) }
+ else
+ { Report("InputFile", "$FileName.$FileSuffix") ;
+ Report("OutputFile", "$FileName.tud") ;
+ open (TUD, ">$FileName.tud") ;
+ $NOfTemplates = 0 ;
+ $NOfInfos = 0 ;
+ while (<TEX>)
+ { $SomeLine = $_ ;
+ chomp $SomeLine ;
+ ($Tag, $RestOfLine) = split(/ /, $SomeLine, 2) ;
+ if (($Tag eq "%T") && ($ProcessTemplates))
+ { ++$NOfTemplates ;
+ while ($Tag eq "%T")
+ { print TUD "$SomeLine\n" ;
+ $SomeLine = <TEX> ;
+ chomp $SomeLine ;
+ ($Tag, $RestOfLine) = split(/ /, $SomeLine, 2) }
+ print TUD "\n" }
+ elsif (($Tag eq "%I") && ($ProcessInfos))
+ { ++$NOfInfos ;
+ while (($Tag eq "%I") || ($Tag eq "%P"))
+ { print TUD "$SomeLine\n" ;
+ $SomeLine = <TEX> ;
+ chomp $SomeLine ;
+ ($Tag, $RestOfLine) = split(/ /, $SomeLine, 2) }
+ print TUD "\n" } }
+ close (TUD) ;
+ unless (($NOfTemplates) || ($NOfInfos))
+ { unlink "$FileName.tud" }
+ if ($ProcessTemplates)
+ { Report("NOfTemplates", $NOfTemplates) }
+ if ($ProcessInfos)
+ { Report("NOfInfos", $NOfInfos) } } } } }
+
+#D \extras
+#D {figures}
+#D
+#D Directories can be scanned for illustrations in \EPS, \PDF,
+#D \TIFF, \PNG\ or \JPG\ format. The resulting file \type{texutil.tuf}
+#D contains entries like:
+#D
+#D \starttypen
+#D \thisisfigureversion{year.month.day}
+#D \presetfigure[file][...specifications...]
+#D \stoptypen
+#D
+#D where the specifications are:
+#D
+#D \starttypen
+#D [e=suffix,x=xoffset,y=yoffset,w=width,h=height,t=title,c=creator,s=size]
+#D \stoptypen
+#D
+#D This data can be used when determining dimensions and
+#D generate directories of illustrations.
+
+$DPtoCM = 2.54/72.0 ;
+$INtoCM = 2.54 ;
+
+sub SaveFigurePresets
+ { my ($FNam, $FTyp, $FUni, $FXof, $FYof, $FWid, $FHei, $FTit, $FCre, $FSiz) = @_ ;
+ if ($ProcessVerbose)
+ { OpenTerminal ;
+ if ($FUni)
+ { print "n=$FNam t=$FTyp " .
+ (sprintf "x=%1.3fcm y=%1.3fcm ", $FXof, $FYof) .
+ (sprintf "w=%1.3fcm h=%1.3fcm\n", $FWid, $FHei) }
+ else
+ { print "n=$FNam t=$FTyp " .
+ "x=${FXof}bp y=${FYof}bp " .
+ "w=${FWid}bp h=${FHei}bp\n" }
+ CloseTerminal }
+ else
+ { ++$NOfFigures ;
+ $Figures[$NOfFigures] = "\\presetfigure[$FNam][e=$FTyp" ;
+ if ($FUni)
+ { $Figures[$NOfFigures] .= (sprintf ",w=%5.3fcm,h=%5.3fcm", $FWid, $FHei) }
+ else
+ { $Figures[$NOfFigures] .= ",w=${FWid}bp,h=${FHei}bp" }
+ if (($FXof!=0)||($FYof!=0))
+ { if ($FUni)
+ { $Figures[$NOfFigures] .= (sprintf ",x=%1.3fcm,y=%1.3fcm", $FXof, $FYof) }
+ else
+ { $Figures[$NOfFigures] .= ",x=${FXof}bp,y=${FYof}bp" } }
+ if ($FTit)
+ { $Figures[$NOfFigures] .= ",t=\{$FTit\}" }
+ if ($FCre)
+ { $Figures[$NOfFigures] .= ",c=\{$FCre\}" }
+ $Figures[$NOfFigures] .= ",s=$FSiz]\n" } }
+
+#D The \EPS\ to \PDF\ conversion pipe to \GHOSTSCRIPT\ is
+#D inspired by a script posted by Sebastian Ratz at the
+#D \PDFTEX\ mailing list. Watch the bounding box check, we
+#D use the values found in an earlier pass.
+
+sub ConvertEpsToEps
+ { my ( $SuppliedFileName , $LLX, $LLY, $URX, $URY ) = @_ ;
+ ($FileName, $FileSuffix) = SplitFileName ($SuppliedFileName) ;
+ if ($ProcessEpsToPdf)
+ { unlink "$FileName.pdf" ;
+ $GSCommandLine = "-q " .
+ "-sDEVICE=pdfwrite " .
+ "-dNOCACHE " .
+ "-dUseFlateCompression=true " .
+ "-dMaxSubsetPct=100 " .
+ "-sOutputFile=$FileName.pdf " .
+ "- -c " .
+ "quit " ;
+ open ( EPS, "| gs $GSCommandLine") }
+ elsif ($PDFReady)
+ { return }
+ else
+ { open ( EPS, ">texutil.tmp" ) ;
+ binmode EPS }
+ open ( TMP , "$SuppliedFileName" ) ;
+ binmode TMP ;
+ $EpsBBOX = 0 ;
+ $EpsWidth = $URX - $LLX ;
+ $EpsHeight = $URY - $LLY ;
+ $EpsXOffset = 0 - $LLX ;
+ $EpsYOffset = 0 - $LLY ;
+ while (<TMP>)
+ { if (/%!PS/)
+ { s/(.*)%!PS/%!PS/o ;
+ print EPS $_ ;
+ last } }
+ while (<TMP>)
+ { if ((!$PDFReady)&&(/^%%(HiResB|ExactB|B)oundingBox:/o))
+ { unless ($EpsBBOX)
+ { print EPS "%%PDFready: $Program\n" ;
+ print EPS "%%BoundingBox: 0 0 $EpsWidth $EpsHeight\n" ;
+ print EPS "<< /PageSize [$EpsWidth $EpsHeight] >> setpagedevice\n" ;
+ print EPS "gsave $EpsXOffset $EpsYOffset translate\n" ;
+ $EpsBBOX = 1 } }
+ elsif (/^%%EOF/o) # when final: (/^%%(EOF|Trailer)/o)
+ { last }
+ elsif (/^%%Trailer/o)
+ { last }
+ else
+ { print EPS $_ } }
+ close ( TMP ) ;
+ if (($EpsBBOX)&&(!$PDFReady))
+ { print EPS "grestore\n%%EOF\n%%RestOfFileIgnored: $Program\n" ;
+ close ( EPS ) ;
+ Report ( "PdfFile", "$SuppliedFileName" ) ;
+ unless ($ProcessEpsToPdf)
+ { unlink "$SuppliedFileName" ;
+ rename "texutil.tmp", "$SuppliedFileName" } }
+ else
+ { close (EPS) }
+ unlink "texutil.tmp" }
+
+sub HandleEpsFigure
+ { my ($SuppliedFileName) = @_ ;
+ my ($Temp) = "" ;
+ if (-f $SuppliedFileName)
+ { ($FileName, $FileSuffix) = SplitFileName ($SuppliedFileName) ;
+ if ($FileSuffix ne "")
+ {#$Temp = $FileSuffix ;
+ #$Temp =~ s/[0-9]//go ;
+ #if ($Temp eq "")
+ if ($FileSuffix =~ /^[0-9]+$/o)
+ { $EpsFileName = $SuppliedFileName;
+ Report ( "MPFile", "$SuppliedFileName" ) }
+ elsif ((lc $FileSuffix ne "eps")&&(lc $FileSuffix ne "mps"))
+ { return }
+ else
+ { $EpsFileName = $SuppliedFileName; # $FileName
+ Report ( "EpsFile", "$SuppliedFileName" ) }
+ $EpsTitle = "" ;
+ $EpsCreator = "" ;
+ open ( EPS , $SuppliedFileName ) ;
+ binmode EPS ;
+ $EpsSize = -s EPS ;
+ $PDFReady = 0 ;
+ $MPSFound = 0 ;
+ $BBoxFound = 0 ;
+ while (<EPS>)
+ { $SomeLine = $_;
+ chomp $SomeLine ;
+ if (($BBoxFound) && ((substr $SomeLine,0,1) ne "%"))
+ { last }
+ if ($BBoxFound<2)
+ { if ($SomeLine =~ /^%%BoundingBox:/io)
+ { $EpsBBox = $SomeLine ; $BBoxFound = 1 ; next }
+ elsif ($SomeLine =~ /^%%HiResBoundingBox:/io)
+ { $EpsBBox = $SomeLine ; $BBoxFound = 2 ; next }
+ elsif ($SomeLine =~ /^%%ExactBoundingBox:/io)
+ { $EpsBBox = $SomeLine ; $BBoxFound = 3 ; next } }
+ if ($SomeLine =~ /^%%PDFready:/io)
+ { $PDFReady = 1 }
+ elsif ($SomeLine =~ /^%%Creator:/io)
+ { ($Tag, $EpsCreator) = split (/ /, $SomeLine, 2) ;
+ if ($EpsCreator =~ /MetaPost/io)
+ { $MPSFound = 1 } }
+ elsif ($SomeLine =~ /^%%Title:/io)
+ { ($Tag, $EpsTitle) = split (/ /, $SomeLine, 2) } }
+ close ( EPS ) ;
+ if ($BBoxFound)
+ { ($Tag, $LLX, $LLY, $URX, $URY, $RestOfLine) = split (/ /, $EpsBBox, 6 ) ;
+ $EpsHeight = ($URY-$LLY)*$DPtoCM ;
+ $EpsWidth = ($URX-$LLX)*$DPtoCM ;
+ $EpsXOffset = $LLX*$DPtoCM ;
+ $EpsYOffset = $LLY*$DPtoCM ;
+ if ($MPSFound)
+ { $EpsType = "mps" }
+ else
+ { $EpsType = "eps" }
+ SaveFigurePresets
+ ( $EpsFileName, $EpsType, 1,
+ $EpsXOffset, $EpsYOffset, $EpsWidth, $EpsHeight,
+ $EpsTitle, $EpsCreator, $EpsSize ) ;
+ if (($ProcessEpsPage) || ($ProcessEpsToPdf))
+ { ConvertEpsToEps ( $SuppliedFileName, $LLX, $LLY, $URX, $URY ) } }
+ else
+ { Report ( "MissingBoundingBox", "$SuppliedFileName" ) } } } }
+
+#D The \PDF\ scanning does a similar job. This time we
+#D search for a mediabox. I could have shared some lines
+#D with the previous routines, but prefer readability.
+
+sub HandlePdfFigure
+ { my ( $SuppliedFileName ) = @_ ;
+ ($FileName, $FileSuffix) = SplitFileName ($SuppliedFileName) ;
+ if (lc $FileSuffix ne "pdf")
+ { return }
+ else
+ { $PdfFileName = $SuppliedFileName ;
+ Report ( "PdfFile", "$SuppliedFileName" ) }
+ open ( PDF , $SuppliedFileName ) ;
+ binmode PDF ;
+ $PdfSize = -s PDF ;
+ $MediaBoxFound = 0 ;
+ $MediaBox = 0 ;
+ $PageFound = 0 ;
+ $PagesFound = 0 ;
+ while (<PDF>)
+ { $SomeLine = $_ ;
+ chomp ($SomeLine) ;
+ if ($SomeLine =~ /\/Type \/Pages/io)
+ { $PagesFound = 1 }
+ elsif ($SomeLine =~ /\/Type \/Page/io)
+ { ++$PageFound ;
+ if ($PageFound>1) { last } }
+ if ((($PageFound)||($PagesFound)) && ($SomeLine =~ /\/MediaBox /io))
+ { $MediaBox = $SomeLine ;
+ $MediaBoxFound = 1 ;
+ if ($PagesFound) { last } } }
+ close ( PDF ) ;
+ if ($PageFound>1)
+ { Report ( "MultiPagePdfFile", "$SuppliedFileName" ) }
+# elsif (($MediaBoxFound) && ($MediaBox))
+ if (($MediaBoxFound) && ($MediaBox))
+ { my $D = "[0-9\-\.]" ;
+ $MediaBox =~ /\/MediaBox\s*\[\s*($D+)\s*($D+)\s*($D+)\s*($D+)/o ;
+ $LLX = $1 ; $LLY = $2 ; $URX = $3 ; $URY = $4 ;
+ $PdfHeight = ($URY-$LLY)*$DPtoCM ;
+ $PdfWidth = ($URX-$LLX)*$DPtoCM ;
+ $PdfXOffset = $LLX*$DPtoCM ;
+ $PdfYOffset = $LLY*$DPtoCM ;
+ SaveFigurePresets
+ ( $PdfFileName, "pdf", 1,
+ $PdfXOffset, $PdfYOffset, $PdfWidth, $PdfHeight,
+ "", "", $PdfSize ) }
+ else
+ { Report ( "MissingMediaBox", "$SuppliedFileName" ) } }
+
+#D A previous version of \TEXUTIL\ used \type{tifftags} or
+#D \type{tiffinfo} for collecting the dimensions. However,
+#D the current implementation does this job itself.
+
+sub TifGetByte
+ { my ($B) = 0 ;
+ read TIF, $B, 1 ;
+ return ord($B) }
+
+sub TifGetShort
+ { my ($S) = 0 ;
+ read TIF, $S, 2 ;
+ if ($TifLittleEndian)
+ { return (unpack ("v", $S)) }
+ else
+ { return (unpack ("n", $S)) } }
+
+sub TifGetLong
+ { my ($L) = 0 ;
+ read TIF, $L, 4 ;
+ if ($TifLittleEndian)
+ { return (unpack ("V", $L)) }
+ else
+ { return (unpack ("N", $L)) } }
+
+sub TifGetRational
+ { my ($N, $M) = (0,0) ;
+ $N = TifGetLong ;
+ $M = TifGetLong ;
+ return $N/$M }
+
+sub TifGetAscii
+ { my ($S) = "" ;
+ --$TifValues;
+ if ($TifValues)
+ { return "" }
+ else
+ { read TIF, $S, $TifValues ;
+ return $S } }
+
+sub TifGetWhatever
+ { if ($_[0]==1)
+ { return TifGetByte }
+ elsif ($_[0]==2)
+ { return TifGetAscii }
+ elsif ($_[0]==3)
+ { return TifGetShort }
+ elsif ($_[0]==4)
+ { return TifGetLong }
+ elsif ($_[0]==5)
+ { return TifGetRational }
+ else
+ { return 0 } }
+
+sub TifGetChunk
+ { seek TIF, $TifNextChunk, 0 ;
+ $Length = TifGetShort ;
+ $TifNextChunk += 2 ;
+ for ($i=1; $i<=$Length; $i++)
+ { seek TIF, $TifNextChunk, 0 ;
+ $TifTag = TifGetShort ;
+ $TifType = TifGetShort ;
+ $TifValues = TifGetLong ;
+ if ($TifTag==256)
+ { $TifWidth = TifGetWhatever($TifType) }
+ elsif ($TifTag==257)
+ { $TifHeight = TifGetWhatever($TifType) }
+ elsif ($TifTag==296)
+ { $TifUnit = TifGetWhatever($TifType) }
+ elsif ($TifTag==282)
+ { seek TIF, TifGetLong, 0 ;
+ $TifHRes = TifGetWhatever($TifType) }
+ elsif ($TifTag==283)
+ { seek TIF, TifGetLong, 0 ;
+ $TifVRes = TifGetWhatever($TifType) }
+ elsif ($TifTag==350)
+ { seek TIF, TifGetLong, 0 ;
+ $TifCreator = TifGetWhatever($TifType) }
+ elsif ($TifTag==315)
+ { seek TIF, TifGetLong, 0 ;
+ $TifAuthor = TifGetWhatever($TifType) }
+ elsif ($TifTag==269)
+ { seek TIF, TifGetLong, 0 ;
+ $TifTitle = TifGetWhatever($TifType) }
+ $TifNextChunk += 12 }
+ seek TIF, $TifNextChunk, 0 ;
+ $TifNextChunk = TifGetLong ;
+ return ($TifNextChunk>0) }
+
+sub HandleTifFigure
+ { my ( $SuppliedFileName ) = @_ ;
+ ($FileName, $FileSuffix) = SplitFileName ($SuppliedFileName) ;
+ if (lc $FileSuffix ne "tif")
+ { return }
+ else
+ { $TifFile = $SuppliedFileName ;
+ if (open ( TIF, $TifFile )) { # { must be here, perl 5.003 bug
+ Report ( "TifFile", "$SuppliedFileName" ) ;
+ binmode TIF;
+ $TifWidth = 0 ;
+ $TifHeight = 0 ;
+ $TifTitle = "" ;
+ $TifAuthor = "" ;
+ $TifCreator = "" ;
+ $TifUnit = 0 ;
+ $TifHRes = 1 ;
+ $TifVRes = 1 ;
+ $TifSize = -s TIF ;
+ $TifByteOrder = "" ;
+ seek TIF, 0, 0 ;
+ read TIF, $TifByteOrder, 2 ;
+ $TifLittleEndian = ($TifByteOrder eq "II") ;
+ $TifTag = TifGetShort;
+ unless ($TifTag == 42)
+ { close ( TIF ) ;
+ return }
+ $TifNextChunk = TifGetLong ;
+ while (TifGetChunk) { }
+ if ($TifUnit==2)
+ { $TifMult = $INtoCM }
+ else
+ { $TifMult = 1 }
+ $TifWidth = ($TifWidth /$TifHRes)*$TifMult ;
+ $TifHeight = ($TifHeight/$TifVRes)*$TifMult ;
+ close ( TIF ) ;
+ SaveFigurePresets
+ ( $TifFile, "tif", $TifUnit,
+ 0, 0, $TifWidth, $TifHeight,
+ $TifTitle, $TifCreator, $TifSize ) } } }
+
+#D I first intended to use the public utility \type{pngmeta}
+#D (many thanks to Taco for compiling it), but using this
+#D utility to analyze lots of \PNG\ files, I tried to do a
+#D similar job in \PERL. Here are the results:
+
+my ($PngSize, $PngWidth, $PngHeight) = (0,0,0) ;
+my ($PngMult, $PngHRes, $PngVRes, $PngUnit) = (0,1,1,0) ;
+my ($PngFile, $PngTitle, $PngAuthor, $PngCreator) = ("","","") ;
+my ($PngNextChunk, $PngLength, $PngType) = (0,0,0) ;
+my ($PngKeyword, $PngDummy) = ("","") ;
+
+my $PngSignature = chr(137) . chr(80) . chr(78) . chr(71) .
+ chr (13) . chr(10) . chr(26) . chr(10) ;
+sub PngGetByte
+ { my ($B) = 0 ;
+ read PNG, $B, 1 ;
+ return (ord($B)) }
+
+sub PngGetLong
+ { my ($L) = 0 ;
+ read PNG, $L, 4 ;
+ return (unpack("N", $L)) }
+
+sub PngGetChunk
+ { if ($PngNextChunk<$PngSize)
+ { seek PNG, $PngNextChunk, 0 ;
+ $PngLength = PngGetLong ;
+ $PngNextChunk = $PngNextChunk + $PngLength + 12 ;
+ read PNG, $PngType, 4 ;
+ if ($PngType eq "")
+ { return 0 }
+ elsif ($PngType eq "IEND")
+ { return 0 }
+ elsif ($PngType eq "IHDR")
+ { $PngWidth = PngGetLong ;
+ $PngHeight = PngGetLong }
+ elsif ($PngType eq "pHYs")
+ { $PngHRes = PngGetLong ;
+ $PngVRes = PngGetLong ;
+ read PNG, $PngUnit, 1 }
+ elsif ($PngType eq "tEXt")
+ { read PNG, $PngKeyword, 79 ;
+ read PNG, $PngDummy, 1 ;
+ if ( $PngKeyword eq "Title")
+ { read PNG, $PngTitle, $Length }
+ elsif ( $PngKeyword eq "Author")
+ { read PNG, $PngAuthor, $PngLength }
+ elsif ( $PngKeyword eq "Software")
+ { read PNG, $PngCreator, $PngLength } }
+ return 1 }
+ else
+ { return 0 } }
+
+sub HandlePngFigure
+ { my ( $SuppliedFileName ) = @_ ;
+ ($FileName, $FileSuffix) = SplitFileName ($SuppliedFileName) ;
+ if (lc $FileSuffix ne "png")
+ { return }
+ else
+ { $PngFile = $SuppliedFileName ;
+ if (open ( PNG, $PngFile ))
+ { Report ( "PngFile", "$SuppliedFileName" ) }
+ $PngSize = 0 ;
+ $PngWidth = 0 ;
+ $PngHeight = 0 ;
+ $PngTitle = "" ;
+ $PngAuthor = "" ;
+ $PngCreator = "" ;
+ $PngUnit = 0 ;
+ $PngVRes = 1 ;
+ $PngHRes = 1 ;
+ $PngSig = "" ;
+ $PngSize = -s PNG ;
+ binmode PNG ;
+ seek PNG, 0, 0 ;
+ read PNG, $PngSig, 8;
+ unless ($PngSig eq $PngSignature)
+ { close ( PNG ) ;
+ return }
+ $PngNextChunk = 8 ;
+ while (PngGetChunk) { }
+ $PngWidth = ($PngWidth /$PngVRes) ;
+ $PngHeight = ($PngHeight/$PngHRes) ;
+ close ( PNG ) ;
+ SaveFigurePresets
+ ( $PngFile, "png", $PngUnit,
+ 0, 0, $PngWidth, $PngHeight,
+ $PngTitle, $PngCreator, $PngSize ) } }
+
+#D Well, we also offer \JPG\ scanning (actually \JFIF)
+#D scanning. (I can recomend David Salomon's book on Data
+#D Compression to those interested in the internals of
+#D \JPG.)
+#D
+#D It took me some time to discover that the (sort of)
+#D reference document I used had a faulty byte position table.
+#D Nevertheless, when I was finaly able to grab the header,
+#D Piet van Oostrum pointer me to the \PERL\ script of Alex
+#D Knowles (and numerous other contributers), from which I
+#D could deduce what segment contained the dimensions.
+
+my ($JpgSize, $JpgWidth, $JpgHeight) = (0,0,0) ;
+my ($JpgMult, $JpgUnit, $JpgHRes, $JpgVRes) = (1,0,1,1) ;
+my ($JpgFile, $JpgVersion, $JpgDummy) = ("",0,"") ;
+my ($JpgSig, $JpgPos, $JpgLen, $JpgSoi, $JpgApp) = ("",0,0,0,0) ;
+
+my $JpgSignature = "JFIF" . chr(0) ;
+
+sub JpgGetByte
+ { my ($B) = 0 ;
+ read JPG, $B, 1 ;
+ return ( ord($B) ) }
+
+sub JpgGetInteger
+ { my ($I) = 0 ;
+ read JPG, $I, 2 ;
+ return (unpack("n", $I)) }
+
+sub HandleJpgFigure
+ { my ($SuppliedFileName) = @_ ;
+ ($FileName, $FileSuffix) = SplitFileName ($SuppliedFileName) ;
+ if (lc $FileSuffix ne "jpg")
+ { return }
+ else
+ { $JpgFile = $SuppliedFileName ;
+ Report ( "JpgFile", "$SuppliedFileName" ) }
+ open ( JPG, $JpgFile ) ;
+ binmode JPG ;
+ $JpgSignature = "JFIF" . chr(0) ;
+ $JpgSize = -s JPG ;
+ $JpgWidth = 0 ;
+ $JpgHeight = 0 ;
+ $JpgUnit = 0 ;
+ $JpgVRes = 1 ;
+ $JpgHRes = 1 ;
+ seek JPG, 0, 0 ;
+ read JPG, $JpgSig, 4 ;
+ unless ($JpgSig eq chr(255).chr(216).chr(255).chr(224))
+ { close ( JPG ) ;
+ return }
+ $JpgLen = JpgGetInteger;
+ read JPG, $JpgSig, 5 ;
+ unless ($JpgSig eq $JpgSignature)
+ { close ( JPG ) ;
+ return }
+ $JpgUnit = JpgGetByte ;
+ $JpgVersion = JpgGetInteger ;
+ $JpgHRes = JpgGetInteger ;
+ $JpgVRes = JpgGetInteger ;
+ $JpgPos = $JpgLen + 4 ;
+ $JpgSoi = 255 ;
+ while ()
+ { seek JPG, $JpgPos, 0 ;
+ $JpgSoi = JpgGetByte ;
+ $JpgApp = JpgGetByte ;
+ $JpgLen = JpgGetInteger ;
+ if ($JpgSoi!=255)
+ { last }
+ if (($JpgApp>=192) && ($JpgApp<=195)) # Found in the perl script.
+ { $JpgDummy = JpgGetByte ; # Found in the perl script.
+ $JpgHeight = JpgGetInteger ; # Found in the perl script.
+ $JpgWidth = JpgGetInteger } # Found in the perl script.
+ $JpgPos = $JpgPos + $JpgLen + 2 }
+ close ( JPG ) ;
+ if ($JpgUnit==1)
+ { $JpgMult = $INtoCM }
+ else
+ { $JpgMult = 1 }
+ $JpgWidth = ($JpgWidth/$JpgHRes)*$JpgMult ;
+ $JpgHeight = ($JpgHeight/$JpgVRes)*$JpgMult ;
+ close ( JPG ) ;
+ SaveFigurePresets
+ ( $JpgFile, "jpg", $JpgUnit,
+ 0, 0, $JpgWidth, $JpgHeight,
+ "", "", $JpgSize ) }
+
+#D Now we can handle figures!
+
+sub InitializeFigures
+ { $NOfFigures = 0 }
+
+sub FlushFigures
+ { $Figures = sort { lc ($a) cmp lc ($b) } $Figures ;
+ SetOutputFile ("texutil.tuf") ;
+ open ( TUF, ">$OutputFile" ) ;
+ print TUF "%\n" . "% $Program / Figures\n" . "%\n" ;
+ print TUF "\\thisisfigureversion\{1996.06.01\}\n" . "%\n" ;
+ for ($n=1 ; $n<=$NOfFigures ; ++$n)
+ { print TUF $Figures[$n] }
+ close (TUF) ;
+ if ($NOfFigures)
+ { Report("OutputFile", $OutputFile ) }
+ else
+ { unlink $OutputFile }
+ Report ( "NOfFigures", $NOfFigures ) }
+
+sub DoHandleFigures
+ { my ($FigureSuffix, $FigureMethod) = @_ ;
+ if ($InputFile eq "")
+ { $InputFile = $FigureSuffix }
+ CheckInputFiles ($InputFile) ;
+ foreach $FileName (@UserSuppliedFiles)
+ { &{$FigureMethod} ( $FileName ) } }
+
+sub HandleFigures
+ { Report("Action", "GeneratingFigures" ) ;
+ foreach $FileType (@ARGV)
+ { if ($FileType=~/\.eps/io)
+ { Report("Option", "UsingEps") ;
+ if ($ProcessEpsToPdf) { Report("Option", "EpsToPdf") }
+ if ($ProcessEpsPage) { Report("Option", "EpsPage") }
+ last } }
+ foreach $FileType (@ARGV)
+ { if ($FileType=~/\.pdf/io)
+ { Report("Option", "UsingPdf") ;
+ last } }
+ foreach $FileType (@ARGV)
+ { if ($FileType=~/\.tif/io)
+ { Report("Option", "UsingTif") ;
+ #RunTifPrograms ;
+ last } }
+ foreach $FileType (@ARGV)
+ { if ($FileType=~/\.png/io)
+ { Report("Option", "UsingPng") ;
+ last } }
+ foreach $FileType (@ARGV)
+ { if ($FileType=~/\.jpg/io)
+ { Report("Option", "UsingJpg") ;
+ last } }
+ InitializeFigures ;
+ DoHandleFigures ("eps", "HandleEpsFigure") ;
+ DoHandleFigures ("pdf", "HandlePdfFigure") ;
+ DoHandleFigures ("tif", "HandleTifFigure") ;
+ DoHandleFigures ("png", "HandlePngFigure") ;
+ DoHandleFigures ("jpg", "HandleJpgFigure") ;
+ FlushFigures }
+
+#D \extras
+#D {logfiles}
+#D
+#D This (poor man's) log file scanning routine filters
+#D overfull box messages from a log file (\type{\hbox},
+#D \type{\vbox} or both). The collected problems are saved
+#D in \type{$ProgramLog}. One can specify a selection
+#D criterium.
+#D
+#D \CONTEXT\ reports unknown entities. These can also be
+#D filtered. When using fast computers, or when processing
+#D files in batch, one has to rely on the log files and/or
+#D this filter.
+
+$Unknown = "onbekende verwijzing|" .
+ "unbekannte Referenz|" .
+ "unknown reference|" .
+ "dubbele verwijzing|" .
+ "duplicate reference|" .
+ "doppelte Referenz" ;
+
+sub FlushLogTopic
+ { unless ($TopicFound)
+ { $TopicFound = 1 ;
+ print ALL "\n% File: $FileName.log\n\n" } }
+
+sub HandleLogFile
+ { if ($ProcessBox)
+ { Report("Option", "FilteringBoxes", "(\\vbox & \\hbox)") ;
+ $Key = "[h|v]box" }
+ elsif ($ProcessHBox)
+ { Report("Option", "FilteringBoxes", "(\\hbox)") ;
+ $Key = "hbox" ;
+ $ProcessBox = 1 }
+ elsif ($ProcessVBox)
+ { Report("Option", "FilteringBoxes", "(\\vbox)") ;
+ $Key = "vbox" ;
+ $ProcessBox = 1 }
+ if (($ProcessBox) && ($ProcessCriterium))
+ { Report("Option", "ApplyingCriterium") }
+ if ($ProcessUnknown)
+ { Report("Option", "FilteringUnknown") }
+ unless (($ProcessBox) || ($ProcessUnknown))
+ { ShowHelpInfo ;
+ return }
+ Report("Action", "FilteringLogFile" ) ;
+ if ($InputFile eq "")
+ { Report("Error", "NoInputFile") }
+ else
+ { $NOfBoxes = 0 ;
+ $NOfMatching = 0 ;
+ $NOfUnknown = 0 ;
+ SetOutputFile ($ProgramLog) ;
+ Report("OutputFile", $OutputFile) ;
+ CheckInputFiles ($InputFile) ;
+ open ( ALL, ">$OutputFile" ) ;
+ foreach $FullName (@UserSuppliedFiles)
+ { ($FileName, $FileSuffix) = SplitFileName ($FullName) ;
+ if (! open (LOG, "$FileName.log"))
+ { Report("Error", "EmptyInputFile", "$FileName.$FileSuffix" ) }
+ elsif (-e "$FileName.tex")
+ { $TopicFound = 0 ;
+ Report("InputFile", "$FileName.log") ;
+ while (<LOG>)
+ { $SomeLine = $_ ;
+ chomp $SomeLine ;
+ if (($ProcessBox) && ($SomeLine =~ /Overfull \\$Key/))
+ { ++$NOfBoxes ;
+ $SomePoints = $SomeLine ;
+ $SomePoints =~ s/.*\((.*)pt.*/$1/ ;
+ if ($SomePoints>=$ProcessCriterium)
+ { ++$NOfMatching ;
+ FlushLogTopic ;
+ print ALL "$SomeLine\n" ;
+ $SomeLine=<LOG> ;
+ print ALL $SomeLine } }
+ if (($ProcessUnknown) && ($SomeLine =~ /$Unknown/io))
+ { ++$NOfUnknown ;
+ FlushLogTopic ;
+ print ALL "$SomeLine\n" } } } }
+ close (ALL) ;
+ unless (($NOfBoxes) ||($NOfUnknown))
+ { unlink $OutputFile }
+ if ($ProcessBox)
+ { Report ( "NOfBoxes" , "$NOfBoxes", "->", $NOfMatching, "Overfull") }
+ if ($ProcessUnknown)
+ { Report ( "NOfUnknown", "$NOfUnknown") } } }
+
+#D Undocumented feature.
+
+my $removedfiles = 0 ;
+my $keptfiles = 0 ;
+my $persistentfiles = 0 ;
+my $reclaimedbytes = 0 ;
+
+sub RemoveContextFile
+ { my $filename = shift ;
+ my $filesize = -s $filename ;
+ unlink $filename ;
+ if (-e $filename)
+ { ++$persistentfiles ;
+ print " persistent : $filename\n" }
+ else
+ { ++$removedfiles ; $reclaimedbytes += $filesize ;
+ print " removed : $filename\n" } }
+
+sub KeepContextFile
+ { my $filename = shift ;
+ ++$keptfiles ;
+ print " kept : $filename\n" }
+
+my @dontaskprefixes = sort glob "mpx-*" ;
+push @dontaskprefixes , ("tex-form.tex","tex-edit.tex","tex-temp.tex",
+ "texexec.tex","texexec.tui","texexec.tuo",
+ "texexec.ps","texexec.pdf","texexec.dvi",
+ "cont-opt.tex","cont-opt.bak") ;
+my @dontasksuffixes = ("mprun.mp","mpgraph.mp","mprun.mpd","mpgraph.mpd") ;
+my @forsuresuffixes = ("tui","tup","ted","tes","top","log","tmp", "mpt", "mpx", "mpd") ;
+my @texonlysuffixes = ("dvi","ps","pdf") ;
+my @texnonesuffixes = ("tuo","tub","top") ;
+
+sub PurgeFiles # no my in foreach
+ { my $pattern = $ARGV[0] ; my $strippedname ;
+ if ($pattern eq '')
+ { $pattern = "*.*" }
+ else
+ { $pattern .= "-.*" }
+ my @files = sort glob $pattern ;
+ foreach $file (@dontaskprefixes)
+ { if (-e $file)
+ { RemoveContextFile($file) } }
+ foreach $suffix (@dontasksuffixes)
+ { foreach (@files)
+ { if (/$suffix$/i)
+ { RemoveContextFile($_) } } }
+ foreach $suffix (@forsuresuffixes)
+ { foreach (@files)
+ { if (/\.$suffix$/i)
+ { RemoveContextFile($_) } } }
+ foreach (@files)
+ { if (/\.\d*$/)
+ { RemoveContextFile($_) } }
+ foreach $suffix (@texnonesuffixes)
+ { foreach (@files)
+ { if (/(.*)\.$suffix$/i)
+ { if (-e "$1.tex")
+ { KeepContextFile($_) }
+ else
+ { $strippedname = $1 ;
+ $strippedname =~ s/\-[a-z]$//io ;
+ if (-e "$strippedname.tex")
+ { KeepContextFile($_." (potential result file)") }
+ else
+ { RemoveContextFile($_) } } } } }
+ if ($removedfiles||$keptfiles||$persistentfiles)
+ { print "\n" }
+ print " removed files : $removedfiles\n" ;
+ print " kept files : $keptfiles\n" ;
+ print " persistent files : $persistentfiles\n" ;
+ print " reclaimed bytes : $reclaimedbytes\n" }
+
+#D Another undocumented feature.
+
+sub AnalyzeFile
+ { my $filename = $ARGV[0] ;
+ return unless (($filename =~ /\.pdf/)&&(-e $filename)) ;
+ my $filesize = -s $filename ;
+ print " analyzing file : $filename\n" ;
+ print " file size : $filesize\n" ;
+ open (PDF, $filename) ;
+ binmode PDF ;
+ my $Object = 0 ;
+ my $Annot = 0 ;
+ my $Link = 0 ;
+ my $Widget = 0 ;
+ my $Named = 0 ;
+ my $Script = 0 ;
+ my $Cross = 0 ;
+ while (<PDF>)
+ { while (/\d+\s+\d+\s+obj/go) { ++$Object } ;
+ while (/\/Type\s*\/Annot/go) { ++$Annot } ;
+ while (/\/GoToR\s*\/F/go) { ++$Cross } ;
+ while (/\/Subtype\s*\/Link/go) { ++$Link } ;
+ while (/\/Subtype\s*\/Widget/go) { ++$Widget } ;
+ while (/\/S\s*\/Named/go) { ++$Named } ;
+ while (/\/S\s*\/JavaScript/go) { ++$Script } }
+ close (PDF) ;
+ print " objects : $Object\n" ;
+ print " annotations : $Annot\n" ;
+ print " links : $Link ($Named named / $Script scripts / $Cross files)\n" ;
+ print " widgets : $Widget\n" }
+
+#D We're done! All this actions and options are organized in
+#D one large conditional:
+
+ ShowBanner ;
+
+if ($UnknownOptions ) { ShowHelpInfo } # not yet done
+elsif ($ProcessReferences) { HandleReferences }
+elsif ($ProcessDocuments ) { HandleDocuments }
+elsif ($ProcessSources ) { HandleSources }
+elsif ($ProcessSetups ) { HandleSetups }
+elsif ($ProcessTemplates ) { HandleEditorCues }
+elsif ($ProcessInfos ) { HandleEditorCues }
+elsif ($ProcessFigures ) { HandleFigures }
+elsif ($ProcessLogFile ) { HandleLogFile }
+elsif ($PurgeFiles ) { PurgeFiles }
+elsif ($AnalyzeFile ) { AnalyzeFile }
+elsif ($ProcessHelp ) { ShowHelpInfo } # redundant
+else { ShowHelpInfo }
+
+#D So far.
diff --git a/doc/context/base/context.rme b/doc/context/base/context.rme
new file mode 100644
index 000000000..4670af856
--- /dev/null
+++ b/doc/context/base/context.rme
@@ -0,0 +1,60 @@
+Some Basic information
+----------------------
+
+There are currently three interfaces available:
+
+ cont-en the english version
+ cont-de the german version
+ cont-nl the dutch version
+
+One should compile one of these (or all) into a fmt file.
+When one uses the main file,
+
+ context the undefined version
+
+TeX ask for an interface language as well as a message
+language. Here one has to specify the full name (english,
+german, dutch) or use the default (enter).
+
+By default only the english hyphenation patterns are loaded,
+unless more are enabled in:
+
+ cont-usr the typesetting language specifications
+
+Furthermore, users can preset commands etc in the file
+
+ cont-sys a system file loaded at runtime
+
+For questions and remarks on ConTeXt, one can subscribe to
+the list:
+
+ ntg-context@ntg.nl
+
+by sending the message
+
+ subscribe ntg-context
+
+to the list server:
+
+ majordomo@ntg.nl
+
+One can find more info at:
+
+ www.pragma-ade.nl
+
+or at the mirror sites mentioned there.
+
+Don't hesitate to ask questions. ConTeXt can do a lot, and
+the manuals are always a bit behind and incomplete. Also take
+a look at the files
+
+ mreadme.pdf
+ minstall.pdf
+ mtexexec.pdf
+ mtexutil.pdf
+
+The teTeX, fpTeX, and 4TeX distributions demonstrate how
+ConTeXt can be integrated in a TeX directory structure.
+
+-------------------------
+Hans Hagen, pragma@wxs.nl
diff --git a/doc/context/base/minstall.pdf b/doc/context/base/minstall.pdf
new file mode 100644
index 000000000..60f26390f
--- /dev/null
+++ b/doc/context/base/minstall.pdf
Binary files differ
diff --git a/doc/context/base/mreadme.pdf b/doc/context/base/mreadme.pdf
new file mode 100644
index 000000000..a11043b37
--- /dev/null
+++ b/doc/context/base/mreadme.pdf
Binary files differ
diff --git a/dvips/config/context.map b/dvips/config/context.map
new file mode 100644
index 000000000..dd23bcd9c
--- /dev/null
+++ b/dvips/config/context.map
@@ -0,0 +1,8 @@
+% This map file defined the fonts that come with the ConTeXt
+% macro package. Currently only some navigational symbols
+% are distributed. These can be fetched from the pragma site
+% www.pragma-ade.nl as part of the ConTeXt distribution, or
+% can be found on CTAN as well as in the teTeX distribution
+% (look for /hoekwater/context).
+
+contnav ContextNavigation <contnav.pfb
diff --git a/fonts/tfm/hoekwater/context/contnav.tfm b/fonts/tfm/hoekwater/context/contnav.tfm
new file mode 100644
index 000000000..c272e9d49
--- /dev/null
+++ b/fonts/tfm/hoekwater/context/contnav.tfm
Binary files differ
diff --git a/fonts/type1/hoekwater/context/contnav.pfb b/fonts/type1/hoekwater/context/contnav.pfb
new file mode 100644
index 000000000..ab81c4f69
--- /dev/null
+++ b/fonts/type1/hoekwater/context/contnav.pfb
Binary files differ
diff --git a/metapost/context/metafun.mp b/metapost/context/metafun.mp
new file mode 100644
index 000000000..802264351
--- /dev/null
+++ b/metapost/context/metafun.mp
@@ -0,0 +1,41 @@
+%D \module
+%D [ file=metafun.mp,
+%D version=2000.07.15,
+%D title=\CONTEXT\ \METAPOST\ graphics,
+%D subtitle=format generation file,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D When generating many graphics at runtime, it can save run
+%D time to use a format file. We could have named this file
+%D \type {context}, but this is error prone, because it forces
+%D to use the progname \type {mpost} or \type {context}
+%D explicitly, depending on the needs. When using the format,
+%D a mismatch in the memory specification of \type {mpost} or
+%D \type {context} (the \TEX\ one) could lead to lost strings
+%D (and as a result in buggy boundingbox and special
+%D handling). By using the name \type {metatex} we make sure
+%D %D that we use (unless overloaded) the settings of \type
+%D {mpost}.
+
+if unknown ahangle :
+ input plain.mp ; % John Hobby's file
+else :
+ let dump = relax ;
+fi ;
+
+input mp-tool.mp ;
+input mp-spec.mp ;
+input mp-core.mp ;
+input mp-page.mp ;
+input mp-text.mp ;
+input mp-shap.mp ;
+input mp-butt.mp ;
+input mp-char.mp ;
+
+dump ; endinput .
diff --git a/metapost/context/mp-back.mp b/metapost/context/mp-back.mp
new file mode 100644
index 000000000..99e88554b
--- /dev/null
+++ b/metapost/context/mp-back.mp
@@ -0,0 +1,206 @@
+%D \module
+%D [ file=mp-back.mp,
+%D version=2000.05.31,
+%D title=\CONTEXT\ \METAPOST\ graphics,
+%D subtitle=backgrounds,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See licen-en.pdf for
+%C details.
+
+if unknown context_tool : input mp-tool ; fi ;
+if known context_back : endinput ; fi ;
+
+boolean context_back ; context_back := true ;
+
+def some_hash ( expr hash_width ,
+ hash_height ,
+ hash_linewidth ,
+ hash_linecolor ,
+ hash_angle ,
+ hash_gap ) =
+
+ stripe_gap := hash_gap ;
+ stripe_angle := hash_angle ;
+ drawoptions (withpen pencircle scaled hash_linewidth
+ withcolor hash_linecolor) ;
+ path p ; p := unitsquare xscaled hash_width yscaled hash_height ;
+ stripe_path_a () (draw) p ; % next we move it all to quadrant 1
+ currentpicture := currentpicture shifted urcorner currentpicture ;
+
+enddef ;
+
+def some_double_back (expr back_type ,
+ back_width ,
+ back_height ,
+ back_delta ,
+ back_linewidth ,
+ back_linecolor ,
+ back_fillcolor ,
+ back_topcolor ,
+ back_bottomcolor ,
+ back_leftcolor ,
+ back_rightcolor ) =
+
+ numeric ww ; ww := back_width ;
+ numeric hh ; hh := back_height ;
+ numeric dd ; dd := back_delta ;
+
+ color back_nillcolor ; back_nillcolor := back_topcolor ;
+
+ path p ; p := fullsquare xscaled ww yscaled hh ;
+ path q ; q := fullsquare xscaled (ww-2dd) yscaled (hh-2dd) ;
+ path r ; r := llcorner p --
+ lrcorner p shifted (-3dd,0) .. controls lrcorner p ..
+ lrcorner p shifted (0, 3dd) --
+ urcorner p shifted (0,-3dd) .. controls urcorner p ..
+ urcorner p shifted (-3dd,0) --
+ ulcorner p -- cycle ;
+ path s ; s := r xscaled ((ww-2dd)/ww) yscaled ((hh-2dd)/hh) ;
+ path t ; t := llcorner p --
+ lrcorner p --
+ urcorner p shifted (0,-3dd) .. controls urcorner p ..
+ urcorner p shifted (-3dd,0) --
+ ulcorner p shifted ( 3dd,0) .. controls ulcorner p ..
+ ulcorner p shifted (0,-3dd) --
+ llcorner p -- cycle ;
+ path u ; u := t xscaled ((ww-2dd)/ww) yscaled ((hh-2dd)/hh) ;
+ path v ; v := llcorner p shifted ( 3dd,0) --
+ lrcorner p shifted (-3dd,0) .. controls lrcorner p ..
+ lrcorner p shifted (0, 3dd) --
+ urcorner p shifted (0,-3dd) .. controls urcorner p ..
+ urcorner p shifted (-3dd,0) --
+ ulcorner p shifted ( 3dd,0) .. controls ulcorner p ..
+ ulcorner p shifted (0,-3dd) ..
+ llcorner p shifted (0, 3dd) .. controls llcorner p .. cycle ; % {down} .. cycle ;
+ path w ; w := t xscaled ((ww-2dd)/ww) yscaled ((hh-2dd)/hh) ;
+ path a ; a := llcorner p -- ulcorner p --
+ ulcorner q -- llcorner q -- cycle ;
+ path b ; b := llcorner p -- lrcorner p --
+ lrcorner q -- llcorner q -- cycle ;
+ path c ; c := lrcorner p -- urcorner p --
+ urcorner q -- lrcorner q -- cycle ;
+ path d ; d := ulcorner p -- urcorner p --
+ urcorner q -- ulcorner q -- cycle ;
+ path e ; e := llcorner p -- lrcorner p --
+ urcorner p -- urcorner q --
+ lrcorner q -- llcorner q -- cycle ;
+ path f ; f := llcorner p -- ulcorner p --
+ urcorner p -- urcorner q --
+ ulcorner q -- llcorner q -- cycle ;
+
+ linecap := butt ; pickup pencircle scaled back_linewidth ;
+
+ if back_type=1 :
+
+ fill p withcolor back_fillcolor ;
+ fill a withcolor back_leftcolor ;
+ fill b withcolor back_bottomcolor ;
+ fill c withcolor back_rightcolor ;
+ fill d withcolor back_topcolor ;
+ draw a withcolor back_linecolor ;
+ draw d withcolor back_linecolor ;
+ draw b withcolor back_linecolor ;
+ draw c withcolor back_linecolor ;
+
+ elseif back_type=2 :
+
+ fill p withcolor back_fillcolor ;
+ fill e withcolor back_bottomcolor ;
+ fill f withcolor back_topcolor ;
+ draw e withcolor back_linecolor ;
+ draw f withcolor back_linecolor ;
+
+ elseif back_type=3 :
+
+ fill v withcolor back_nillcolor ;
+ fill w withcolor back_fillcolor ;
+ draw v withcolor back_linecolor ;
+ draw w withcolor back_linecolor ;
+
+ elseif back_type=4 :
+
+ fill t withcolor back_nillcolor ;
+ fill u withcolor back_fillcolor ;
+ draw t withcolor back_linecolor ;
+ draw u withcolor back_linecolor ;
+
+ elseif back_type=5 :
+
+ t := t rotatedaround(center t,180) ;
+ u := u rotatedaround(center u,180) ;
+
+ fill t withcolor back_nillcolor ;
+ fill u withcolor back_fillcolor ;
+ draw t withcolor back_linecolor ;
+ draw u withcolor back_linecolor ;
+
+ elseif back_type=6 :
+
+ r := r rotatedaround(center r,180) ;
+ s := s rotatedaround(center s,180) ;
+
+ fill r withcolor back_nillcolor ;
+ fill s withcolor back_fillcolor ;
+ draw r withcolor back_linecolor ;
+ draw s withcolor back_linecolor ;
+
+ elseif back_type=7 :
+
+ fill r withcolor back_nillcolor ;
+ fill s withcolor back_fillcolor ;
+ draw r withcolor back_linecolor ;
+ draw s withcolor back_linecolor ;
+
+fi ;
+
+enddef ;
+
+endinput ;
+
+beginfig (1) ;
+
+some_double_back (1, 4.5cm, 1.5cm, .25cm, 1mm,
+ .5white, .8white, .7white, .6white, .7white, .6white)
+
+currentpicture := currentpicture shifted (0,-3cm) ;
+
+some_double_back (2, 4.5cm, 1.5cm, .25cm, 1mm,
+ .5white, .8white, .7white, .6white, white, white)
+
+currentpicture := currentpicture shifted (0,-3cm) ;
+
+some_double_back (3, 4.5cm, 1.5cm, .25cm, 1mm,
+ .5white, .8white, .7white, white, white, white)
+
+currentpicture := currentpicture shifted (0,-3cm) ;
+
+some_double_back (4, 4.5cm, 1.5cm, .25cm, 1mm,
+ .5white, .8white, .7white, white, white, white)
+
+currentpicture := currentpicture shifted (0,-3cm) ;
+
+some_double_back (5, 4.5cm, 1.5cm, .25cm, 1mm,
+ .5white, .8white, .7white, white, white, white)
+
+currentpicture := currentpicture shifted (0,-3cm) ;
+
+some_double_back (6, 4.5cm, 1.5cm, .25cm, 1mm,
+ .5white, .8white, .7white, white, white, white)
+
+currentpicture := currentpicture shifted (0,-3cm) ;
+
+some_double_back (7, 4.5cm, 1.5cm, .25cm, 1mm,
+ .5white, .8white, .7white, white, white, white)
+
+currentpicture := currentpicture shifted (0,-3cm) ;
+
+some_double_back (8, 4.5cm, 1.5cm, .25cm, 1mm,
+ .5white, .8white, .7white, white, white, white)
+
+endfig ;
+
+end .
diff --git a/metapost/context/mp-butt.mp b/metapost/context/mp-butt.mp
new file mode 100644
index 000000000..cf580211e
--- /dev/null
+++ b/metapost/context/mp-butt.mp
@@ -0,0 +1,75 @@
+%D \module
+%D [ file=mp-butt.mp,
+%D version=2000.05.31,
+%D title=\CONTEXT\ \METAPOST\ graphics,
+%D subtitle=buttons,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See licen-en.pdf for
+%C details.
+
+if unknown context_tool : input mp-tool ; fi ;
+if known context_butt : endinput ; fi ;
+
+boolean context_butt ; context_butt := true ;
+
+def some_button (expr button_type ,
+ button_size ,
+ button_linecolor ,
+ button_fillcolor ) =
+
+ numeric button_linewidth ; button_linewidth := button_size/10 ;
+
+ drawoptions (withpen pencircle scaled button_linewidth
+ withcolor button_linecolor) ;
+
+ path p ; p := unitsquare scaled button_size ;
+ numeric d ; d := button_size ;
+ numeric l ; l := button_linewidth ;
+
+ fill p withcolor button_fillcolor ; draw p ;
+
+ if button_type=101 :
+ draw (d-2l,2l)--(2l,.5d)--(d-2l,d-2l)--cycle ;
+ elseif button_type=102 :
+ draw (2l,2l)--(d-2l,.5d)--(2l,d-2l)--cycle ;
+ elseif button_type=103 :
+ for i=2l step 2l until d-2l :
+ draw (2l,i)--(2l ,i) ;
+ draw (4l,i)--(d-2l,i) ;
+ endfor ;
+ elseif button_type=104 :
+ for i=2l step 2l until d-2l :
+ draw (2l ,i)--(d/2-l,i) ;
+ draw (d/2+l,i)--(d-2l ,i) ;
+ endfor ;
+ elseif button_type=105 :
+ fill fullcircle scaled (.2d) shifted (.5d,.7d) ;
+ fill fullcircle xscaled (.6d) yscaled d shifted (.5d,0) ;
+ clip currentpicture to p ;
+ draw p ;
+ elseif button_type=106 :
+ draw (2l,2l)--(d-2l,d-2l) ;
+ draw (d-2l,2l)--(2l,d-2l) ;
+ elseif button_type=107 :
+ p := (3l,d-2l)--(d-3l,d-2l)--(.5d,4l)--cycle ;
+ fill p ; draw p ;
+ draw (.5d,2l) ;
+ elseif button_type=108 :
+ draw (.5d,2l)--(d-2l,d-2l)--(2l,d-2l)--cycle ;
+ elseif button_type=109 :
+ draw (.5d,d-2l)--(d-2l,2l)--(2l,2l)--cycle ;
+ elseif button_type=110 :
+ button_linewidth := button_linewidth/2 ;
+ draw p enlarged (-2l,-l) ;
+ for i=2l step l until d-2l :
+ draw (3l,i)--(d-3l,i) ;
+ endfor ;
+ fi ;
+
+enddef ;
+
+endinput ;
diff --git a/metapost/context/mp-char.mp b/metapost/context/mp-char.mp
new file mode 100644
index 000000000..8c0d53f75
--- /dev/null
+++ b/metapost/context/mp-char.mp
@@ -0,0 +1,968 @@
+%D \module
+%D [ file=mp-char.mp,
+%D version=1998.10.10,
+%D title=\CONTEXT\ \METAPOST\ graphics,
+%D subtitle=charts,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See licen-en.pdf for
+%C details.
+
+if unknown context_tool : input mp-tool ; fi ;
+if unknown context_shap : input mp-shap ; fi ;
+if known context_char : endinput ; fi ;
+
+boolean context_char ; context_char := true ;
+
+vardef enlarged_path (expr p, w) = % NAAR mp-tool
+ (llcorner p shifted (-w,-w) --
+ lrcorner p shifted ( w,-w) --
+ urcorner p shifted ( w, w) --
+ ulcorner p shifted (-w, w) -- cycle)
+enddef;
+
+secondarydef p peepholed q =
+ begingroup ;
+ save start ; pair start ; start := point 0 of p ;
+ %drawdot start scaled_to_grid withpen pencircle scaled 2shape_line_width withcolor red ;
+ if xpart start >= xpart center p :
+ if ypart start >= ypart center p :
+ urcorner q -- ulcorner q -- llcorner q -- lrcorner q --
+ reverse p -- lrcorner q -- cycle
+ else :
+ lrcorner q -- urcorner q -- ulcorner q -- llcorner q --
+ reverse p -- llcorner q -- cycle
+ fi
+ else :
+ if ypart start > ypart center p :
+ ulcorner q -- llcorner q -- lrcorner q -- urcorner q --
+ reverse p -- urcorner q -- cycle
+ else :
+ llcorner q -- lrcorner q -- urcorner q -- ulcorner q --
+ reverse p -- ulcorner q -- cycle
+ fi
+ fi
+ endgroup
+enddef ;
+
+boolean intersection_found ;
+
+secondarydef p intersection_point q =
+ begingroup
+ save x_, y_ ;
+ (x_,y_) = p intersectiontimes q ;
+ if x_<0 :
+ intersection_found := false ;
+ center p % origin
+ else :
+ intersection_found := true ;
+ .5[point x_ of p, point y_ of q]
+ fi
+ endgroup
+enddef ;
+
+current_position := 0 ;
+
+def save_text_position (expr p) = % beware: clip shift needed
+ current_position := current_position + 1 ;
+ savedata
+ "\MPposition{" & decimal current_position & "}{"
+ & decimal xpart p & "}{"
+ & decimal ypart p & "}" ;
+enddef ;
+
+%D settings
+
+grid_width := 60pt ;
+grid_height := 40pt ;
+
+shape_width := 45pt ;
+shape_height := 30pt ;
+
+chart_offset := 2pt ;
+
+color chart_background_color ; chart_background_color := white ;
+
+%D test mode
+
+boolean show_mid_points ; show_mid_points := false ;
+boolean show_con_points ; show_con_points := false ;
+boolean show_all_points ; show_all_points := false ;
+
+%D shapes
+
+color shape_line_color, shape_fill_color ;
+
+shape_line_width := 2pt ;
+shape_line_color := .5white ;
+shape_fill_color := .9white ;
+
+shape_node := 0 ;
+shape_action := 24 ;
+shape_procedure := 5 ;
+shape_product := 12 ;
+shape_decision := 14 ;
+shape_archive := 19 ;
+shape_loop := 35 ;
+shape_wait := 6 ;
+shape_subprocedure := 20 ; shape_sub_procedure := 20 ;
+shape_singledocument := 32 ; shape_single_document := 32 ;
+shape_multidocument := 33 ; shape_multi_document := 33 ;
+shape_right := 66 ;
+shape_left := 67 ;
+shape_up := 68 ;
+shape_down := 69 ;
+
+% vardef some_shape_path (expr type) == imported from mp-shap
+
+def show_shapes (expr n) =
+
+ begin_chart(n,8,10) ;
+ show_con_points := true ;
+ for i=0 upto 7 :
+ for j=0 upto 9 :
+ new_shape(i+1,j+1,i*10+j);
+ endfor ;
+ endfor ;
+ end_chart ;
+
+enddef ;
+
+%D connections
+
+color connection_line_color ;
+
+connection_line_width := shape_line_width ;
+connection_line_color := .8white ;
+connection_smooth_size := 5pt ;
+connection_arrow_size := 4pt ;
+connection_dash_size := 3pt ;
+
+max_x := 6 ;
+max_y := 4 ;
+
+numeric xypoint ; xypoint := 0 ;
+
+pair xypoints [] ;
+
+boolean xyfree [][] ;
+path xypath [][] ;
+numeric xysx [][] ;
+numeric xysy [][] ;
+color xyfill [][] ;
+color xydraw [][] ;
+numeric xyline [][] ;
+boolean xypeep [][] ;
+
+numeric cpath ; cpath := 0 ;
+path cpaths [] ;
+numeric cline [] ;
+color ccolor [] ;
+boolean carrow [] ;
+boolean cdash [] ;
+boolean ccross [] ;
+
+boolean smooth ; smooth := true ;
+boolean peepshape ; peepshape := false ;
+boolean arrowtip ; arrowtip := true ;
+boolean dashline ; dashline := false ;
+boolean forcevalid ; forcevalid := false ;
+boolean touchshape ; touchshape := false ;
+boolean showcrossing ; showcrossing := false ;
+
+picture dash_pattern ;
+
+boolean reverse_y ; reverse_y := true ;
+
+def y_pos (expr y) =
+ if reverse_y : max_y + 1 - y else : y fi
+enddef ;
+
+def initialize_grid (expr maxx, maxy) =
+ begingroup ;
+ save i, j ;
+ max_x := maxx ;
+ max_y := maxy ;
+ for x=1 upto max_x :
+ for y=1 upto max_y :
+ xyfree [x][y] := true ;
+ xyfill [x][y] := shape_fill_color ;
+ xydraw [x][y] := shape_line_color ;
+ xyline [x][y] := shape_line_width ;
+ endfor ;
+ endfor ;
+ endgroup ;
+enddef ;
+
+def scaled_to_grid =
+ xscaled grid_width yscaled grid_height
+enddef ;
+
+def xy_offset (expr x, y) =
+ (x+.5,y+.5)
+enddef ;
+
+def draw_shape (expr x, yy, p, sx, sy) =
+ begingroup ;
+ save y ;
+ y := y_pos(yy) ;
+ xypath [x][y] := (p xscaled sx yscaled sy) shifted xy_offset(x,y) ;
+ xyfree [x][y] := false ;
+ xysx [x][y] := sx ;
+ xysy [x][y] := sy ;
+ xyfill [x][y] := shape_fill_color ;
+ xydraw [x][y] := shape_line_color ;
+ xyline [x][y] := shape_line_width ;
+ xypeep [x][y] := peepshape ;
+ endgroup ;
+enddef ;
+
+vardef i_point (expr x, y, p, t) =
+ begingroup ;
+ save q, ok ;
+ pair q ;
+ boolean ok ;
+ q := xypath[x][y] intersection_point ((p) shifted xy_offset(x,y)) ;
+ ok := true ;
+% if xpart q < -.5 : ok := false ; q := (-.45,ypart q) fi ;
+% if xpart q > .5 : ok := false ; q := ( .45,ypart q) fi ;
+% if ypart q < -.5 : ok := false ; q := (xpart q,-.45) fi ;
+% if ypart q > .5 : ok := false ; q := (xpart q, .45) fi ;
+ if not ok :
+ message (t & " of shape (" & decimal x & "," & decimal y & ") limited") ;
+ fi ;
+ q
+ endgroup
+enddef ;
+
+vardef trimmed (expr x, y, z, t) =
+ if touchshape and t : xyline[x][y]/z else : epsilon fi
+enddef ;
+
+zfactor := 1/3 ;
+
+vardef xy_bottom (expr x, y, z, t) =
+ i_point (x, y, ((0,0)--(0,-2)) shifted (zfactor*z*xysx[x][y],0), "bottom")
+ shifted(0,-trimmed(x,y,grid_height,t))
+enddef ;
+
+vardef xy_top (expr x, y, z, t) =
+ i_point (x, y, ((0,0)--(0,2)) shifted (zfactor*z*xysx[x][y],0), "top")
+ shifted(0,trimmed(x,y,grid_height,t))
+enddef ;
+
+vardef xy_left (expr x, y, z, t) =
+ i_point (x, y, ((0,0)--(-2,0)) shifted (0,zfactor*z*xysy[x][y]), "left")
+ shifted(-trimmed(x,y,grid_width,t),0)
+enddef ;
+
+vardef xy_right (expr x, y, z, t) =
+ i_point (x, y, ((0,0)--(2,0)) shifted (0,zfactor*z*xysy[x][y]), "right")
+ shifted(trimmed(x,y,grid_width,t),0)
+enddef ;
+
+def flush_shapes =
+ for x=1 upto max_x :
+ for y=1 upto max_y :
+ flush_shape (x, y) ;
+ endfor ;
+ endfor ;
+enddef ;
+
+def draw_connection_point (expr x, y, z) =
+ pickup pencircle scaled if (z=0): 2 fi xyline[x][y] ;
+ drawdot xy_bottom(x,y,z,false) scaled_to_grid withcolor (1,0,0) ;
+ drawdot xy_top (x,y,z,false) scaled_to_grid withcolor (0,1,0) ;
+ drawdot xy_left (x,y,z,false) scaled_to_grid withcolor (0,0,1) ;
+ drawdot xy_right (x,y,z,false) scaled_to_grid withcolor (1,1,0) ;
+enddef ;
+
+def flush_shape (expr x, yy) =
+ begingroup ;
+ save y ;
+ y := y_pos(yy) ;
+ if not xyfree[x][y] :
+ pickup pencircle scaled xyline[x][y] ;
+ if xypeep[x][y] :
+ fill (xypath[x][y] peepholed (unitsquare shifted (x,y)))
+ scaled_to_grid withpen pencircle scaled 0
+ withcolor chart_background_color ;
+ else :
+ fill xypath[x][y] scaled_to_grid withcolor xyfill[x][y] ;
+ fi ;
+ draw xypath[x][y] scaled_to_grid withcolor xydraw[x][y] ;
+ if show_con_points or show_all_points :
+ draw_connection_point (x, y, 0) ;
+ fi ;
+ if show_all_points :
+ for i=-1 upto 1 :
+ draw_connection_point (x, y, i) ;
+ endfor ;
+ fi ;
+ fi ;
+ endgroup ;
+enddef ;
+
+vardef points_initialized (expr xfrom, yfrom, xto, yto, n) =
+ if not xyfree[xfrom][yfrom] and not xyfree[xto][yto] :
+ xypoint := n ; true
+ else :
+ xypoint := 0 ; false
+ fi
+enddef ;
+
+def collapse_points =
+ % remove redundant points
+ n := 1 ;
+ for i=2 upto xypoint:
+ if not (xypoints[i]=xypoints[n]) :
+ n := n + 1 ;
+ xypoints[n] := xypoints[i]
+ fi ;
+ endfor ;
+ xypoint := n ;
+ % make straight lines
+ if xypoints[2]=xypoints[xypoint-1] :
+ xypoints[3] := xypoints[xypoint] ;
+ xypoint := 3 ;
+ fi ;
+enddef ;
+
+vardef smoothed (expr a,b) =
+ sx := connection_smooth_size/grid_width ;
+ sy := connection_smooth_size/grid_height ;
+ if ypart a = ypart b :
+ a shifted (if xpart a >= xpart b : - fi sx,0)
+ else :
+ a shifted (0,if ypart a >= ypart b : - fi sy)
+ fi
+enddef ;
+
+vardef trim_points =
+ begingroup
+ save p, a, b, d, i ; path p ; pair d ;
+ p := for i=1 upto xypoint-1 : xypoints[i]-- endfor xypoints[xypoint] ;
+ if touchshape :
+ a := shape_line_width/grid_width ;
+ b := shape_line_width/grid_height ;
+ else :
+ a := epsilon ;
+ b := epsilon ;
+ fi ;
+ d := direction infinity of p ;
+ xypoints[xypoint] := xypoints[xypoint] shifted
+ if xpart d < 0 : (+a,0) ;
+ elseif xpart d > 0 : (-a,0) ;
+ elseif ypart d < 0 : (0,+b) ;
+ elseif ypart d > 0 : (0,-b) ;
+ else : origin ;
+ fi ;
+ d := direction 0 of p ;
+ xypoints[1] := xypoints[1] shifted
+ if xpart d < 0 : (-a,0) ;
+ elseif xpart d > 0 : (+a,0) ;
+ elseif ypart d < 0 : (0,-b) ;
+ elseif ypart d > 0 : (0,+b) ;
+ else : origin ;
+ fi ;
+ endgroup
+enddef ;
+
+vardef trim_points = enddef ;
+
+vardef connection_path =
+ if reverse_connection : reverse fi (xypoints[1]--
+ for i=2 upto xypoint-1 :
+ if smooth :
+ smoothed(xypoints[i],xypoints[i-1]) ..
+ controls xypoints[i] and xypoints[i] ..
+ smoothed(xypoints[i],xypoints[i+1]) --
+ else :
+ xypoints[i]--
+ fi
+ endfor
+ xypoints[xypoint])
+enddef ;
+
+def draw_connection =
+ if xypoint>0 :
+ collapse_points ;
+ trim_points ;
+ cpath := cpath + 1 ;
+ cpaths[cpath] := connection_path scaled_to_grid ;
+ cline[cpath] := connection_line_width ;
+ ccolor[cpath] := connection_line_color ;
+ carrow[cpath] := arrowtip ;
+ cdash[cpath] := dashline ;
+ ccross[cpath] := showcrossing ;
+ else :
+ message("no connection defined") ;
+ fi ;
+ reverse_connection := false ;
+enddef ;
+
+def flush_connections =
+ pair ip ;
+ boolean crossing ;
+ ahlength := connection_arrow_size ;
+ dash_pattern := dashpattern(on connection_dash_size off connection_dash_size ) ;
+ for i=1 upto cpath :
+ if ccross[i] :
+ crossing := false ;
+ for j=1 upto i :
+ %if not ((point infinity of cpaths[i] = point infinity of cpaths[j]) or
+ % (point 0 of cpaths[i] = point 0 of cpaths[j])) :
+ if not (point infinity of cpaths[i] = point infinity of cpaths[j]) :
+ ip := cpaths[i] intersection_point cpaths[j] ;
+ if intersection_found : crossing := true fi ;
+ fi ;
+ endfor ;
+ if crossing :
+ pickup pencircle scaled 2cline[i] ;
+% draw cpaths[i] withcolor chart_background_color ;
+path cp ; cp := cpaths[i] ;
+cp := cp cutbefore point .05 length cp of cp ;
+cp := cp cutafter point .95 length cp of cp ;
+draw cp withcolor chart_background_color ;
+ fi ;
+ fi ;
+ pickup pencircle scaled cline[i] ;
+ if carrow[i] :
+ if cdash[i] :
+ drawarrow cpaths[i] withcolor ccolor[i] dashed dash_pattern ;
+ else :
+ drawarrow cpaths[i] withcolor ccolor[i] ;
+ fi ;
+ else :
+ if cdash[i] :
+ draw cpaths[i] withcolor ccolor[i] dashed dash_pattern ;
+ else :
+ draw cpaths[i] withcolor ccolor[i] ;
+ fi ;
+ fi ;
+ draw_midpoint (i) ;
+ endfor ;
+enddef ;
+
+def draw_midpoint (expr n) =
+ begingroup
+ save p ;
+ pair p ;
+ p := point .5*length(cpaths[n]) of cpaths[n];
+ pickup pencircle scaled 2cline[n] ;
+ save_text_position (p) ;
+ if show_mid_points :
+ drawdot p withcolor .7white ;
+ fi ;
+ endgroup ;
+enddef ;
+
+boolean reverse_connection ; reverse_connection := false ;
+
+vardef up_on_grid (expr n) =
+ (xpart xypoints[n],(ypart xypoints[n]+1) div 1)
+enddef ;
+
+vardef down_on_grid (expr n) =
+ (xpart xypoints[n],(ypart xypoints[n]) div 1)
+enddef ;
+
+vardef left_on_grid (expr n) =
+ ((xpart xypoints[n]) div 1, ypart xypoints[n])
+enddef ;
+
+vardef right_on_grid (expr n) =
+ ((xpart xypoints[n]+1) div 1, ypart xypoints[n])
+enddef ;
+
+vardef x_on_grid (expr n, xfrom, xto, zfrom) =
+ if (xfrom=xto) and not (zfrom=0) :
+ if (zfrom=1) : right_on_grid(2) else : left_on_grid(2) fi
+ elseif xpart xypoints[1] < xpart xypoints[6] :
+ right_on_grid(n)
+ else :
+ left_on_grid(n)
+ fi
+enddef ;
+
+vardef y_on_grid (expr n, yfrom, yto, zfrom) =
+ if (yfrom=yto) and not (zfrom=0) :
+ if (zfrom=1) : up_on_grid(2) else : down_on_grid(2) fi
+ elseif ypart xypoints[1] < ypart xypoints[6] :
+ up_on_grid(n)
+ else :
+ down_on_grid(n)
+ fi
+enddef ;
+
+vardef xy_on_grid (expr n, m) =
+ (xpart xypoints[n], ypart xypoints[m])
+enddef ;
+
+vardef down_to_grid (expr a,b) =
+ (xpart xypoints[a],
+ ypart xypoints[if ypart xypoints[a]<ypart xypoints[b]:a else:b fi])
+enddef ;
+
+vardef up_to_grid (expr a,b) =
+ (xpart xypoints[a],
+ ypart xypoints[if ypart xypoints[a]>ypart xypoints[b]:a else:b fi])
+enddef ;
+
+vardef left_to_grid (expr a,b) =
+ (xpart xypoints[if xpart xypoints[a]<xpart xypoints[b]:a else:b fi],
+ ypart xypoints[a])
+enddef ;
+
+vardef right_to_grid (expr a,b) =
+ (xpart xypoints[if xpart xypoints[a]>xpart xypoints[b]:a else:b fi],
+ ypart xypoints[a])
+enddef ;
+
+vardef valid_connection (expr xfrom, yfrom, xto, yto) =
+ begingroup ;
+ save ok, vc, pp ;
+ boolean ok ;
+ % check for slanted lines
+ ok := true ;
+ for i=1 upto xypoint-1 :
+ if not ((xpart xypoints[i]=xpart xypoints[i+1]) or
+ (ypart xypoints[i]=ypart xypoints[i+1])) : ok := false ;
+ fi ;
+ endfor ;
+ if not ok :
+ %message("slanted");
+ false
+ elseif forcevalid :
+ %message("force");
+ true
+ elseif (xfrom=xto) and (yfrom=yto) :
+ %message("self");
+ false
+ else :
+ % check for crossing shapes
+ pair vc ;
+ path pp ;
+
+ pair xyfirst, xylast ;
+ xyfirst := xypoints[1] ;
+ xylast := xypoints[xypoint] ;
+ trim_points ;
+ pp := for i=1 upto xypoint-1 : xypoints[i]-- endfor xypoints[xypoint] ;
+ xypoints[1] := xyfirst ;
+ xypoints[xypoint] := xylast ;
+
+ for i=1 upto max_x :
+ for j=1 upto max_y :
+if not ( ( (i,j) = (xfrom,yfrom) ) or ( (i,j) = (yfrom,yto) ) ) :
+ if not xyfree[i][j] :
+ vc := pp intersection_point xypath[i][j] ;
+ if intersection_found : ok := false fi ;
+ fi ;
+fi ;
+ endfor ;
+ endfor ;
+ %if not ok: message("crossing") ; fi ;
+ ok
+ fi
+ endgroup
+enddef ;
+
+def connect_top_bottom (expr xfrom,yyfrom,zfrom) (expr xto,yyto,zto) =
+ yfrom := y_pos(yyfrom) ; yto := y_pos(yyto) ;
+ if points_initialized(xfrom,yfrom,xto,yto,6) :
+ xypoints[1] := xy_top(xfrom,yfrom,zfrom,true) ;
+ xypoints[6] := xy_bottom(xto,yto,zto,true) ;
+ xypoints[2] := up_on_grid(1) ;
+ xypoints[5] := down_on_grid(6) ;
+ xypoints[3] := up_to_grid(2,5) ;
+ xypoints[4] := up_to_grid(2,5) ;
+ if not valid_connection(xfrom,yfrom,xto,yto) :
+ xypoints[3] := x_on_grid(2,xfrom,xto,zfrom) ;
+ xypoints[4] := xy_on_grid(3,5) ;
+ fi ;
+ draw_connection ;
+ fi ;
+enddef ;
+
+def connect_left_right (expr xfrom,yyfrom,zfrom) (expr xto,yyto,zto) =
+ yfrom := y_pos(yyfrom) ; yto := y_pos(yyto) ;
+ if points_initialized(xfrom,yfrom,xto,yto,6) :
+ xypoints[1] := xy_left(xfrom,yfrom,zfrom,true) ;
+ xypoints[6] := xy_right(xto,yto,zto,true) ;
+ xypoints[2] := left_on_grid(1) ;
+ xypoints[5] := right_on_grid(6) ;
+ xypoints[3] := left_to_grid(2,5) ;
+ xypoints[4] := left_to_grid(2,5) ;
+ if not valid_connection(xfrom,yfrom,xto,yto) :
+ xypoints[3] := y_on_grid(2,yfrom,yto,zfrom) ;
+ xypoints[4] := xy_on_grid(5,3) ;
+ fi ;
+ draw_connection ;
+ fi ;
+enddef ;
+
+def connect_left_top (expr xfrom,yyfrom,zfrom) (expr xto,yyto,zto) =
+ yfrom := y_pos(yyfrom) ; yto := y_pos(yyto) ;
+ if points_initialized(xfrom,yfrom,xto,yto,5) :
+ xypoints[1] := xy_left(xfrom,yfrom,zfrom,true) ;
+ xypoints[5] := xy_top(xto,yto,zto,true) ;
+ xypoints[2] := left_on_grid(1) ;
+ xypoints[4] := up_on_grid(5) ;
+ xypoints[3] := left_to_grid(2,5) ;
+ if not valid_connection(xfrom,yfrom,xto,yto) :
+ xypoints[3] := xy_on_grid(2,4) ;
+ fi ;
+ draw_connection ;
+ fi ;
+enddef ;
+
+def connect_left_bottom (expr xfrom,yyfrom,zfrom) (expr xto,yyto,zto) =
+ yfrom := y_pos(yyfrom) ; yto := y_pos(yyto) ;
+ if points_initialized(xfrom,yfrom,xto,yto,5) :
+ xypoints[1] := xy_left(xfrom,yfrom,zfrom,true) ;
+ xypoints[5] := xy_bottom(xto,yto,zto,true) ;
+ xypoints[2] := left_on_grid(1) ;
+ xypoints[4] := down_on_grid(5) ;
+ xypoints[3] := left_to_grid(2,5) ;
+ if not valid_connection(xfrom,yfrom,xto,yto) :
+ xypoints[3] := xy_on_grid(2,4) ;
+ fi ;
+ draw_connection ;
+ fi ;
+enddef ;
+
+def connect_right_top (expr xfrom,yyfrom,zfrom) (expr xto,yyto,zto) =
+ yfrom := y_pos(yyfrom) ; yto := y_pos(yyto) ;
+ if points_initialized(xfrom,yfrom,xto,yto,5) :
+ xypoints[1] := xy_right(xfrom,yfrom,zfrom,true) ;
+ xypoints[5] := xy_top(xto,yto,zto,true) ;
+ xypoints[2] := right_on_grid(1) ;
+ xypoints[4] := up_on_grid(5) ;
+ xypoints[3] := right_to_grid(2,5) ;
+ if not valid_connection(xfrom,yfrom,xto,yto) :
+ xypoints[3] := xy_on_grid(2,4) ;
+ fi ;
+ draw_connection ;
+ fi ;
+enddef ;
+
+def connect_right_bottom (expr xfrom,yyfrom,zfrom) (expr xto,yyto,zto) =
+ yfrom := y_pos(yyfrom) ; yto := y_pos(yyto) ;
+ if points_initialized(xfrom,yfrom,xto,yto,5) :
+ xypoints[1] := xy_right(xfrom,yfrom,zfrom,true) ;
+ xypoints[5] := xy_bottom(xto,yto,zto,true) ;
+ xypoints[2] := right_on_grid(1) ;
+ xypoints[4] := down_on_grid(5) ;
+ xypoints[3] := right_to_grid(2,5) ;
+ if not valid_connection(xfrom,yfrom,xto,yto) :
+ xypoints[3] := xy_on_grid(2,4) ;
+ fi ;
+ draw_connection ;
+ fi ;
+enddef ;
+
+def connect_left_left (expr xfrom,yyfrom,zfrom) (expr xto,yyto,zto) =
+ yfrom := y_pos(yyfrom) ; yto := y_pos(yyto) ;
+ if points_initialized(xfrom,yfrom,xto,yto,6) :
+ xypoints[1] := xy_left(xfrom,yfrom,zfrom,true) ;
+ xypoints[6] := xy_left(xto,yto,zto,true) ;
+ xypoints[2] := left_on_grid(1) ;
+ xypoints[5] := left_on_grid(6) ;
+ xypoints[3] := left_to_grid(2,5) ;
+ xypoints[4] := left_to_grid(5,2) ;
+ if not valid_connection(xfrom,yfrom,xto,yto) :
+ xypoints[3] := y_on_grid(2,yfrom,yto,zfrom) ;
+ xypoints[4] := xy_on_grid(5,3) ;
+ fi ;
+ draw_connection ;
+ fi ;
+enddef ;
+
+def connect_right_right (expr xfrom,yyfrom,zfrom) (expr xto,yyto,zto) =
+ yfrom := y_pos(yyfrom) ; yto := y_pos(yyto) ;
+ if points_initialized(xfrom,yfrom,xto,yto,6) :
+ xypoints[1] := xy_right(xfrom,yfrom,zfrom,true) ;
+ xypoints[6] := xy_right(xto,yto,zto,true) ;
+ xypoints[2] := right_on_grid(1) ;
+ xypoints[5] := right_on_grid(6) ;
+ xypoints[3] := right_to_grid(2,5) ;
+ xypoints[4] := right_to_grid(5,2) ;
+ if not valid_connection(xfrom,yfrom,xto,yto) :
+ xypoints[3] := y_on_grid(2,yfrom,yto,zfrom) ;
+ xypoints[4] := xy_on_grid(5,3) ;
+ fi ;
+ draw_connection ;
+ fi ;
+enddef ;
+
+def connect_top_top (expr xfrom,yyfrom,zfrom) (expr xto,yyto,zto) =
+ yfrom := y_pos(yyfrom) ; yto := y_pos(yyto) ;
+ if points_initialized(xfrom,yfrom,xto,yto,6) :
+ xypoints[1] := xy_top(xfrom,yfrom,zfrom,true) ;
+ xypoints[6] := xy_top(xto,yto,zto,true) ;
+ xypoints[2] := up_on_grid(1) ;
+ xypoints[5] := up_on_grid(6) ;
+ xypoints[3] := up_to_grid(2,5) ;
+ xypoints[4] := up_to_grid(5,2) ;
+ if not valid_connection(xfrom,yfrom,xto,yto) :
+ xypoints[3] := x_on_grid(2,xfrom,xto,zfrom) ;
+ xypoints[4] := xy_on_grid(3,5) ;
+ fi ;
+ draw_connection ;
+ fi ;
+enddef ;
+
+def connect_bottom_bottom (expr xfrom,yyfrom,zfrom) (expr xto,yyto,zto) =
+ yfrom := y_pos(yyfrom) ; yto := y_pos(yyto) ;
+ if points_initialized(xfrom,yfrom,xto,yto,6) :
+ xypoints[1] := xy_bottom(xfrom,yfrom,zfrom,true) ;
+ xypoints[6] := xy_bottom(xto,yto,zto,true) ;
+ xypoints[2] := down_on_grid(1) ;
+ xypoints[5] := down_on_grid(6) ;
+ xypoints[3] := down_to_grid(2,5) ;
+ xypoints[4] := down_to_grid(5,2) ;
+ if not valid_connection(xfrom,yfrom,xto,yto) :
+ xypoints[3] := x_on_grid(2,xfrom,xto,zfrom) ;
+ xypoints[4] := xy_on_grid(3,5) ;
+ fi ;
+ draw_connection ;
+ fi ;
+enddef ;
+
+def connect_bottom_top (expr xfrom,yfrom,zfrom) (expr xto,yto,zto) =
+ reverse_connection := true ;
+ connect_top_bottom (xto,yto,zto) (xfrom,yfrom,zfrom) ;
+enddef ;
+
+def connect_right_left (expr xfrom,yfrom,zfrom) (expr xto,yto,zto) =
+ reverse_connection := true ;
+ connect_left_right (xto,yto,zto) (xfrom,yfrom,zfrom) ;
+enddef ;
+
+def connect_top_left (expr xfrom,yfrom,zfrom) (expr xto,yto,zto) =
+ reverse_connection := true ;
+ connect_left_top (xto,yto,zto) (xfrom,yfrom,zfrom) ;
+enddef ;
+
+def connect_bottom_left (expr xfrom,yfrom,zfrom) (expr xto,yto,zto) =
+ reverse_connection := true ;
+ connect_left_bottom (xto,yto,zto) (xfrom,yfrom,zfrom) ;
+enddef ;
+
+def connect_top_right (expr xfrom,yfrom,zfrom) (expr xto,yto,zto) =
+ reverse_connection := true ;
+ connect_right_top (xto,yto,zto) (xfrom,yfrom,zfrom) ;
+enddef ;
+
+def connect_bottom_right (expr xfrom,yfrom,zfrom) (expr xto,yto,zto) =
+ reverse_connection := true ;
+ connect_right_bottom (xto,yto,zto) (xfrom,yfrom,zfrom) ;
+enddef ;
+
+def draw_test_shape (expr x, y) =
+ draw_shape(x,y,fullcircle, .7, .7) ;
+enddef ;
+
+def draw_test_shapes =
+ for i=1 upto max_x :
+ for j=1 upto max_y :
+ draw_test_shape(i,j) ;
+ endfor ;
+ endfor ;
+enddef;
+
+def draw_test_area =
+ pickup pencircle scaled .5shape_line_width ;
+ draw (unitsquare xscaled max_x yscaled max_y shifted (1,1))
+ scaled_to_grid withcolor blue ;
+enddef ;
+
+def show_connection (expr n, m) =
+
+ begin_chart(100+n,6,6) ;
+
+ draw_test_area ;
+
+ smooth := true ;
+ arrowtip := true ;
+ dashline := true ;
+
+ draw_test_shape(2,2) ; draw_test_shape(4,5) ;
+ draw_test_shape(3,3) ; draw_test_shape(5,1) ;
+ draw_test_shape(2,5) ; draw_test_shape(1,3) ;
+ draw_test_shape(6,2) ; draw_test_shape(4,6) ;
+
+ if (m=1) :
+ connect_top_bottom (2,2,0) (4,5,0) ;
+ connect_top_bottom (3,3,0) (5,1,0) ;
+ connect_top_bottom (2,5,0) (1,3,0) ;
+ connect_top_bottom (6,2,0) (4,6,0) ;
+ elseif (m=2) :
+ connect_top_top (2,2,0) (4,5,0) ;
+ connect_top_top (3,3,0) (5,1,0) ;
+ connect_top_top (2,5,0) (1,3,0) ;
+ connect_top_top (6,2,0) (4,6,0) ;
+ elseif (m=3) :
+ connect_bottom_bottom (2,2,0) (4,5,0) ;
+ connect_bottom_bottom (3,3,0) (5,1,0) ;
+ connect_bottom_bottom (2,5,0) (1,3,0) ;
+ connect_bottom_bottom (6,2,0) (4,6,0) ;
+ elseif (m=4) :
+ connect_left_right (2,2,0) (4,5,0) ;
+ connect_left_right (3,3,0) (5,1,0) ;
+ connect_left_right (2,5,0) (1,3,0) ;
+ connect_left_right (6,2,0) (4,6,0) ;
+ elseif (m=5) :
+ connect_left_left (2,2,0) (4,5,0) ;
+ connect_left_left (3,3,0) (5,1,0) ;
+ connect_left_left (2,5,0) (1,3,0) ;
+ connect_left_left (6,2,0) (4,6,0) ;
+ elseif (m=6) :
+ connect_right_right (2,2,0) (4,5,0) ;
+ connect_right_right (3,3,0) (5,1,0) ;
+ connect_right_right (2,5,0) (1,3,0) ;
+ connect_right_right (6,2,0) (4,6,0) ;
+ elseif (m=7) :
+ connect_left_top (2,2,0) (4,5,0) ;
+ connect_left_top (3,3,0) (5,1,0) ;
+ connect_left_top (2,5,0) (1,3,0) ;
+ connect_left_top (6,2,0) (4,6,0) ;
+ elseif (m=8) :
+ connect_left_bottom (2,2,0) (4,5,0) ;
+ connect_left_bottom (3,3,0) (5,1,0) ;
+ connect_left_bottom (2,5,0) (1,3,0) ;
+ connect_left_bottom (6,2,0) (4,6,0) ;
+ elseif (m=9) :
+ connect_right_top (2,2,0) (4,5,0) ;
+ connect_right_top (3,3,0) (5,1,0) ;
+ connect_right_top (2,5,0) (1,3,0) ;
+ connect_right_top (6,2,0) (4,6,0) ;
+ else :
+ connect_right_bottom (2,2,0) (4,5,0) ;
+ connect_right_bottom (3,3,0) (5,1,0) ;
+ connect_right_bottom (2,5,0) (1,3,0) ;
+ connect_right_bottom (6,2,0) (4,6,0) ;
+ fi ;
+
+ end_chart ;
+
+enddef ;
+
+def show_connections =
+ for f=1 upto 10 :
+ show_connection(f,f) ;
+ endfor ;
+enddef ;
+
+%D charts
+
+def clip_chart (expr minx, miny, maxx, maxy) =
+ cmin_x := minx ;
+ cmax_x := maxx ;
+ cmin_y := miny ;
+ cmax_y := maxy ;
+enddef ;
+
+def begin_chart (expr n, maxx, maxy) =
+ chart_figure := n ;
+ chart_scale := 1 ;
+ if chart_figure>0: beginfig(chart_figure) ; fi ;
+ initialize_grid (maxx, maxy) ;
+ bboxmargin := 0 ;
+ cmin_x := 1 ;
+ cmax_x := maxx ;
+ cmin_y := 1 ;
+ cmax_y := maxy ;
+enddef ;
+
+def end_chart =
+ flush_shapes ;
+ flush_connections ;
+ cmin_x := cmin_x ;
+ cmax_x := cmin_x+cmax_x ;
+ cmin_y := cmin_y-1 ;
+ cmax_y := cmin_y+cmax_y ;
+ if reverse_y :
+ cmin_y := y_pos(cmin_y) ;
+ cmax_y := y_pos(cmax_y) ;
+ fi ;
+ path p ;
+ p := (((cmin_x,cmin_y)--(cmax_x,cmin_y)--
+ (cmax_x,cmax_y)--(cmin_x,cmax_y)--cycle))
+ scaled_to_grid ;
+ %draw p withcolor red ;
+ p := enlarged_path (p,chart_offset) ;
+ clip currentpicture to p ;
+ setbounds currentpicture to p ;
+ savedata
+ "\MPclippath{" &
+ decimal xpart llcorner p & "}{" &
+ decimal ypart llcorner p & "}{" &
+ decimal xpart urcorner p & "}{" &
+ decimal ypart urcorner p & "}" ;
+ savedata
+ "\MPareapath{" &
+ decimal (xpart llcorner p + 2chart_offset) & "}{" &
+ decimal (ypart llcorner p + 2chart_offset) & "}{" &
+ decimal (xpart urcorner p - 2chart_offset) & "}{" &
+ decimal (ypart urcorner p - 2chart_offset) & "}" ;
+ currentpicture := currentpicture scaled chart_scale ;
+ if chart_figure>0: endfig ; fi ;
+enddef ;
+
+def new_shape (expr x, y, n) =
+ if known n :
+ if (x>0) and (x<=max_x) and (y>0) and (y<=max_y) :
+ sx := shape_width/grid_width ;
+ sy := shape_height/grid_height ;
+ draw_shape(x,y,some_shape_path(n), sx, sy) ;
+ else :
+ message ("shape outside grid ignored") ;
+ fi ;
+ else
+ message ("shape not known" ) ;
+ fi ;
+enddef ;
+
+def begin_sub_chart =
+ begingroup ;
+ save shape_line_width , connection_line_width ;
+ save shape_line_color, shape_fill_color, connection_line_color ;
+ color shape_line_color, shape_fill_color, connection_line_color ;
+ save smooth, arrowtip, dashline, peepshape ;
+ boolean smooth, arrowtip, dashline, peepshape ;
+enddef ;
+
+def end_sub_chart =
+ endgroup ;
+enddef ;
+
+%D done
+
+endinput ;
+
+%D testing
+
+show_shapes(100) ;
+
+end
+
+%D more testing
+
+show_connections ;
+
+begin_chart (1,4,5) ;
+ %clip_chart(1,1,1,2) ;
+ new_shape (1,1,31) ;
+ new_shape (1,2,3) ;
+ new_shape (4,4,5) ;
+ connect_top_left (1,1,0) (4,4,0) ;
+ connect_bottom_top (1,2,0) (4,4,0) ;
+ connect_left_right (1,2,0) (1,1,0) ;
+end_chart ;
+
+end
diff --git a/metapost/context/mp-core.mp b/metapost/context/mp-core.mp
new file mode 100644
index 000000000..d4045d3da
--- /dev/null
+++ b/metapost/context/mp-core.mp
@@ -0,0 +1,232 @@
+%D \module
+%D [ file=mp-core.mp,
+%D version=1999.08.12,
+%D title=\CONTEXT\ \METAPOST\ graphics,
+%D subtitle=core interfacing,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See licen-en.pdf for
+%C details.
+
+if unknown context_tool : input mp-tool ; fi ;
+if known context_core : endinput ; fi ;
+
+boolean context_core ; context_core := true ;
+
+pair lxy[], rxy[], cxy[], llxy[], lrxy[], ulxy[], urxy[] ;
+path pxy[] ;
+numeric hxy[], wxy[], dxy[], nxy[] ;
+
+def box_found (expr n,x,y,w,h,d) =
+ not ((x=0) and (y=0) and (w=0) and (h=0) and (d=0))
+enddef ;
+
+def initialize_box_pos (expr pos,n,x,y,w,h,d) =
+ pair lxy, rxy, cxy, llxy, lrxy, ulxy, urxy ;
+ path pxy ; numeric hxy, wxy, dxy, nxy;
+ lxy := (x,y) ; lxy[pos] := lxy ;
+ llxy := (x,y-d) ; llxy[pos] := llxy ;
+ lrxy := (x+w,y-d) ; lrxy[pos] := lrxy ;
+ urxy := (x+w,y+h) ; urxy[pos] := urxy ;
+ ulxy := (x,y+h) ; ulxy[pos] := ulxy ;
+ wxy := w ; wxy[pos] := wxy ;
+ hxy := h ; hxy[pos] := hxy ;
+ dxy := d ; dxy[pos] := dxy ;
+ rxy := lxy shifted (wxy,0) ; rxy[pos] := rxy ;
+ pxy := llxy--lrxy--urxy--ulxy--cycle ; pxy[pos] := pxy ;
+ cxy := center pxy ; cxy[pos] := cxy ;
+ nxy := n ; nxy[pos] := nxy ;
+enddef ;
+
+def initialize_box (expr n,x,y,w,h,d) =
+
+ numeric bpos ; bpos := 0 ; initialize_box_pos(bpos,n,x,y,w,h,d) ;
+
+enddef ;
+
+def initialize_area (expr fn,fx,fy,fw,fh,fd,
+ tn,tx,ty,tw,th,td) =
+
+ numeric fpos ; fpos := 1 ; initialize_box_pos(fpos,fn,fx,fy,fw,fh,fd) ;
+ numeric tpos ; tpos := 2 ; initialize_box_pos(tpos,tn,tx,ty,tw,th,td) ;
+
+ do_initialize_area (fpos, tpos) ;
+
+enddef ;
+
+def do_initialize_area (expr fpos, tpos) =
+ lxy := lxy[fpos] ;
+ llxy := (xpart llxy[fpos], ypart llxy[tpos]) ;
+ lrxy := lrxy[tpos] ;
+ urxy := (xpart urxy[tpos], ypart urxy[fpos]) ;
+ ulxy := ulxy[fpos] ;
+ wxy := xpart lrxy - xpart llxy ;
+ hxy := hxy[fpos] ;
+ dxy := dxy[tpos] ;
+ rxy := lxy shifted (wxy,0) ;
+ pxy := llxy--lrxy--urxy--ulxy--cycle ;
+ cxy := center pxy ;
+enddef ;
+
+def initialize_par (expr fn,fx,fy,fw,fh,fd, ln,lx,ly,lw,lh,ld,
+ rn,rx,ry,rw,rh,rd, tn,tx,ty,tw,th,td) =
+
+ numeric fpos ; fpos := 1 ; initialize_box_pos(fpos,fn,fx,fy,fw,fh,fd) ;
+ numeric lpos ; lpos := 3 ; initialize_box_pos(lpos,ln,lx,ly,lw,lh,ld) ;
+ numeric rpos ; rpos := 4 ; initialize_box_pos(rpos,rn,rx,ry,rw,rh,rd) ;
+ numeric tpos ; tpos := 2 ; initialize_box_pos(tpos,tn,tx,ty,tw,th,td) ;
+
+ do_initialize_area (fpos, tpos) ;
+ do_initialize_par (fpos, lpos, rpos, tpos) ;
+
+enddef ;
+
+def do_initialize_par (expr fpos, lpos, rpos, tpos) =
+
+ pair leftxy, righxy ; path txy, mxy, bxy ; % top mid bot
+
+ leftxy := if xpart ulxy[fpos] > xpart ulxy[lpos] : ulxy[fpos] else : ulxy[lpos] fi ;
+ righxy := if xpart urxy[tpos] < xpart urxy[rpos] : urxy[tpos] else : urxy[rpos] fi ;
+
+ pxy := origin ;
+
+ if (round(ypart llxy[fpos]) = round(ypart ulxy[tpos])) and
+ (round(xpart lrxy[tpos]) < round(xpart llxy[fpos])) :
+
+ txy := llxy[fpos] -- (xpart lrxy[rpos], ypart lrxy[fpos]) --
+ (xpart urxy[rpos], ypart urxy[fpos]) -- ulxy[fpos] -- cycle ;
+ mxy := origin ;
+ bxy := (xpart llxy[lpos], ypart llxy[tpos]) -- lrxy[tpos] --
+ urxy[tpos] -- (xpart ulxy[lpos], ypart ulxy[tpos]) -- cycle ;
+
+ elseif ypart llxy[fpos] = ypart llxy[tpos] :
+
+ txy := llxy[fpos] -- lrxy[tpos] -- urxy[tpos] -- ulxy[fpos] --cycle ;
+ mxy := origin ;
+ bxy := origin ;
+
+ else :
+
+ txy := (xpart lrxy[rpos], ypart lrxy[fpos]) --
+ (xpart urxy[rpos], ypart urxy[fpos]) --
+ ulxy[fpos] -- llxy[fpos] -- cycle ;
+ mxy := (xpart llxy[lpos], ypart ulxy[tpos]) --
+ (xpart llxy[rpos], ypart ulxy[tpos]) --
+ (xpart lrxy[rpos], ypart lrxy[fpos]) --
+ (xpart llxy[lpos], ypart llxy[fpos]) -- cycle ;
+ bxy := (xpart llxy[lpos], ypart llxy[tpos]) --
+ (xpart righxy, ypart lrxy[tpos]) --
+ (xpart righxy, ypart urxy[tpos]) --
+ (xpart llxy[lpos], ypart ulxy[tpos]) -- cycle ;
+
+ if (round(point 0 of bxy) = round(point 1 of bxy)) or
+ (round(point 0 of bxy) = round(point 2 of bxy)) :
+ bxy := origin ;
+ fi ;
+
+ if (round(point 0 of mxy) = round(point 1 of mxy)) or
+ (round(point 0 of mxy) = round(point 2 of mxy)) :
+ mxy := origin ;
+ fi ;
+
+ if (round(point 0 of txy) = round(point 1 of txy)) or
+ (round(point 0 of txy) = round(point 2 of txy)) :
+ txy := origin ;
+ fi ;
+
+ if (round (length(mxy)) > 1) :
+ if (round (length(txy)) < 2) :
+ if (round (length(bxy)) < 2) :
+ pxy := mxy ;
+ else :
+ pxy := point 0 of bxy -- point 1 of bxy -- point 2 of bxy --
+ point 1 of mxy -- point 2 of mxy -- point 3 of mxy --
+ cycle ;
+ fi ;
+ else :
+ if (round (length(bxy)) < 2) :
+ pxy := point 1 of mxy --
+ point 1 of txy -- point 2 of txy -- point 3 of txy --
+ point 3 of mxy -- point 0 of mxy --
+ cycle ;
+ else :
+ pxy := point 1 of mxy --
+ point 1 of txy -- point 2 of txy -- point 3 of txy --
+ point 3 of mxy --
+ point 0 of bxy -- point 1 of bxy -- point 2 of bxy --
+ cycle ;
+ fi ;
+ fi ;
+ fi ;
+
+ fi ;
+
+enddef ;
+
+color boxfillcolor ; boxfillcolor := .8white ;
+color boxlinecolor ; boxlinecolor := .8blue ;
+
+def draw_box =
+ pickup pencircle scaled .5 ;
+ draw pxy withcolor boxlinecolor ;
+ draw lxy -- rxy withcolor boxlinecolor ;
+% pickup pencircle scaled 1.5 ;
+% draw llxy withcolor green ;
+% draw lrxy withcolor green ;
+% draw urxy withcolor green ;
+% draw ulxy withcolor green ;
+% draw cxy withcolor red ;
+% pickup pencircle scaled 1 ;
+% draw lxy withcolor red ;
+% draw rxy withcolor red ;
+enddef ;
+
+def draw_par =
+ pickup pencircle scaled .5 ;
+ if length pxy > 1 :
+ fill pxy withcolor boxfillcolor ; draw pxy withcolor boxlinecolor ;
+ else :
+ draw_par_top ; draw_par_mid ; draw_par_bot ;
+ fi ;
+% pickup pencircle scaled 1.5 ;
+% draw llxy[lpos] withcolor red ;
+% draw llxy[rpos] withcolor red ;
+% draw llxy[tpos] withcolor green ;
+% draw llxy[fpos] withcolor green ;
+enddef ;
+
+def draw_par_top =
+ pickup pencircle scaled .5 ;
+ if length txy > 1 :
+ fill txy withcolor boxfillcolor ; draw txy withcolor boxlinecolor ;
+ fi ;
+enddef ;
+
+def draw_par_mid =
+ pickup pencircle scaled .5 ;
+ if length mxy > 1 :
+ fill mxy withcolor boxfillcolor ; draw mxy withcolor boxlinecolor ;
+ fi ;
+enddef ;
+
+def draw_par_bot =
+ pickup pencircle scaled .5 ;
+ if length bxy > 1 :
+ fill bxy withcolor boxfillcolor ; draw bxy withcolor boxlinecolor ;
+ fi ;
+enddef ;
+
+def anchor_box (expr n,x,y,w,h,d) =
+% bboxmargin := 0 ;
+% setbounds currentpicture to unitsquare shifted (x,y) ;
+ currentpicture := currentpicture shifted (-x,-y) ;
+enddef ;
+
+let draw_area = draw_box ;
+let anchor_area = anchor_box ;
+let anchor_par = anchor_box ;
+
+endinput ;
diff --git a/metapost/context/mp-page.mp b/metapost/context/mp-page.mp
new file mode 100644
index 000000000..7133ae6ff
--- /dev/null
+++ b/metapost/context/mp-page.mp
@@ -0,0 +1,218 @@
+%D \module
+%D [ file=mp-page.mp,
+%D version=1999.03.10,
+%D title=\CONTEXT\ \METAPOST\ graphics,
+%D subtitle=page enhancements,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module is rather preliminary and subjected to
+%D changes.
+
+if unknown context_tool : input mp-tool ; fi ;
+if known context_page : endinput ; fi ;
+
+boolean context_page ; context_page := true ;
+
+if unknown PageStateAvailable :
+ boolean PageStateAvailable ; PageStateAvailable := false ;
+fi ;
+
+if unknown OnRightPage :
+ boolean OnRightPage ; OnRightPage := true ;
+fi ;
+
+PageNumber := 0 ;
+PaperHeight := 845.04684pt ;
+PaperWidth := 597.50787pt ;
+PrintPaperHeight := 845.04684pt ;
+PrintPaperWidth := 597.50787pt ;
+TopSpace := 71.12546pt ;
+BackSpace := 71.13275pt ;
+MakeupHeight := 711.3191pt ;
+MakeupWidth := 426.78743pt ;
+TopHeight := 0.0pt ;
+TopDistance := 0.0pt ;
+HeaderHeight := 56.90294pt ;
+HeaderDistance := 0.0pt ;
+TextHeight := 597.51323pt ;
+FooterDistance := 0.0pt ;
+FooterHeight := 56.90294pt ;
+BottomDistance := 0.0pt ;
+BottomHeight := 0.0pt ;
+LeftEdgeWidth := 0.0pt ;
+LeftEdgeDistance := 0.0pt ;
+LeftMarginWidth := 75.58197pt ;
+LeftMarginDistance := 11.99829pt ;
+TextWidth := 426.78743pt ;
+RightMarginDistance := 11.99829pt ;
+RightMarginWidth := 75.58197pt ;
+RightEdgeDistance := 0.0pt ;
+RightEdgeWidth := 0.0pt ;
+
+PageOffset := 0.0pt ;
+PageDepth := 0.0pt ;
+
+LeftEdge := -4 ; Top := -40 ;
+LeftEdgeSeparator := -3 ; TopSeparator := -30 ;
+LeftMargin := -2 ; Header := -20 ;
+LeftMarginSeparator := -1 ; HeaderSeparator := -10 ;
+Text := 0 ; Text := 0 ;
+RightMarginSeparator := +1 ; FooterSeparator := +10 ;
+RightMargin := +2 ; Footer := +20 ;
+RightEdgeSeparator := +3 ; BottomSeparator := +30 ;
+RightEdge := +4 ; Bottom := +40 ;
+
+Margin := LeftMargin ;
+Edge := LeftEdge ;
+InnerMargin := RightMargin ;
+InnerEdge := RightEdge ;
+OuterMargin := LeftMargin ;
+OuterEdge := LeftEdge ;
+
+path Area [][] ; pair Location [][] ; path Field [][] ; path Page ;
+numeric HorPos ; numeric Hstep [] ; numeric Hsize [] ;
+numeric VerPos ; numeric Vstep [] ; numeric Vsize [] ;
+
+for VerPos=Top step 10 until Bottom:
+ for HorPos=LeftEdge step 1 until RightEdge:
+ Area[HorPos][VerPos] := origin--cycle ;
+ Area[VerPos][HorPos] := Area[HorPos][VerPos] ;
+ Location[HorPos][VerPos] := origin ;
+ Location[VerPos][HorPos] := Location[HorPos][VerPos] ;
+ Field[HorPos][VerPos] := origin--cycle ;
+ Field[VerPos][HorPos] := Field[HorPos][VerPos] ;
+ endfor ;
+endfor ;
+
+% def LoadPageState =
+% scantokens "input mp-state.tmp" ;
+% enddef ;
+
+def SwapPageState =
+ if not OnRightPage :
+ BackSpace := PaperWidth-MakeupWidth-BackSpace ;
+ i := LeftMarginWidth ;
+ LeftMarginWidth := RightMarginWidth ;
+ RightMarginWidth := i ;
+ i := LeftMarginDistance ;
+ LeftMarginDistance := RightMarginDistance ;
+ RightMarginDistance := i ;
+ i := LeftEdgeWidth ;
+ LeftEdgeWidth := RightEdgeWidth ;
+ RightEdgeWidth := i ;
+ i := LeftEdgeDistance ;
+ LeftEdgeDistance := RightEdgeDistance ;
+ RightEdgeDistance := i ;
+
+ Margin := LeftMargin ;
+ Edge := LeftEdge ;
+ InnerMargin := RightMargin ;
+ InnerEdge := RightEdge ;
+ OuterMargin := LeftMargin ;
+ OuterEdge := LeftEdge ;
+ else :
+ Margin := RightMargin ;
+ Edge := RightEdge ;
+ InnerMargin := LeftMargin ;
+ InnerEdge := LeftEdge ;
+ OuterMargin := RightMargin ;
+ OuterEdge := RightEdge ;
+ fi ;
+enddef ;
+
+def StartPage =
+
+ if PageStateAvailable :
+ LoadPageState ;
+ SwapPageState ;
+ fi ;
+
+ numeric Vsize[], Hsize[], Vstep[], Hstep[] ;
+
+ Vsize[Top] = TopHeight ;
+ Vsize[TopSeparator] = TopDistance ;
+ Vsize[Header] = HeaderHeight ;
+ Vsize[HeaderSeparator] = HeaderDistance ;
+ Vsize[Text] = TextHeight ;
+ Vsize[FooterSeparator] = FooterDistance ;
+ Vsize[Footer] = FooterHeight ;
+ Vsize[BottomSeparator] = BottomDistance ;
+ Vsize[Bottom] = BottomHeight ;
+
+ Vstep[Top] = Vstep[TopSeparator] +Vsize[TopSeparator] ;
+ Vstep[TopSeparator] = PaperHeight-TopSpace ;
+ Vstep[Header] = Vstep[TopSeparator] -Vsize[Header] ;
+ Vstep[HeaderSeparator] = Vstep[Header] -Vsize[HeaderSeparator] ;
+ Vstep[Text] = Vstep[HeaderSeparator]-Vsize[Text] ;
+ Vstep[FooterSeparator] = Vstep[Text] -Vsize[FooterSeparator] ;
+ Vstep[Footer] = Vstep[FooterSeparator]-Vsize[Footer] ;
+ Vstep[BottomSeparator] = Vstep[Footer] -Vsize[BottomSeparator] ;
+ Vstep[Bottom] = Vstep[BottomSeparator]-Vsize[Bottom] ;
+
+ Hsize[LeftEdge] = LeftEdgeWidth ;
+ Hsize[LeftEdgeSeparator] = LeftEdgeDistance ;
+ Hsize[LeftMargin] = LeftMarginWidth ;
+ Hsize[LeftMarginSeparator] = LeftMarginDistance ;
+ Hsize[Text] = MakeupWidth ;
+ Hsize[RightMarginSeparator] = RightMarginDistance ;
+ Hsize[RightMargin] = RightMarginWidth ;
+ Hsize[RightEdgeSeparator] = RightEdgeDistance ;
+ Hsize[RightEdge] = RightEdgeWidth ;
+
+ Hstep[LeftEdge] = Hstep[LeftEdgeSeparator] -Hsize[LeftEdge] ;
+ Hstep[LeftEdgeSeparator] = Hstep[LeftMargin] -Hsize[LeftEdgeSeparator] ;
+ Hstep[LeftMargin] = Hstep[LeftMarginSeparator] -Hsize[LeftMargin] ;
+ Hstep[LeftMarginSeparator] = Hstep[Text] -Hsize[LeftMarginSeparator] ;
+ Hstep[Text] = BackSpace ;
+ Hstep[RightMarginSeparator] = Hstep[Text] +Hsize[Text] ;
+ Hstep[RightMargin] = Hstep[RightMarginSeparator]+Hsize[RightMarginSeparator] ;
+ Hstep[RightEdgeSeparator] = Hstep[RightMargin] +Hsize[RightMargin] ;
+ Hstep[RightEdge] = Hstep[RightEdgeSeparator] +Hsize[RightEdgeSeparator] ;
+
+ for VerPos=Top step 10 until Bottom:
+ for HorPos=LeftEdge step 1 until RightEdge:
+ Area[HorPos][VerPos] := unitsquare xscaled Hsize[HorPos] yscaled Vsize[VerPos] ;
+ Area[VerPos][HorPos] := Area[HorPos][VerPos] ;
+ Location[HorPos][VerPos] := (Hstep[HorPos],Vstep[VerPos]) ;
+ Location[VerPos][HorPos] := Location[HorPos][VerPos] ;
+ Field[HorPos][VerPos] := Area[HorPos][VerPos] shifted Location[HorPos][VerPos] ;
+ Field[VerPos][HorPos] := Field[HorPos][VerPos] ;
+ endfor ;
+ endfor ;
+
+% pickup pencircle scaled 0pt ;
+
+ Page := unitsquare xscaled PaperWidth yscaled PaperHeight ;
+ bboxmargin := 0 ; setbounds currentpicture to Page ;
+
+enddef ;
+
+def StopPage =
+
+ %pickup pencircle scaled 0pt ;
+
+ bboxmargin := 0 ; setbounds currentpicture to Page ;
+
+enddef ;
+
+% obsolete
+
+def llEnlarged (expr p,d) = (llcorner p shifted (-d,-d)) enddef ;
+def lrEnlarged (expr p,d) = (lrcorner p shifted (+d,-d)) enddef ;
+def urEnlarged (expr p,d) = (urcorner p shifted (+d,+d)) enddef ;
+def ulEnlarged (expr p,d) = (ulcorner p shifted (-d,+d)) enddef ;
+
+def Enlarged (expr p, d) =
+ (llEnlarged (p,d) --
+ lrEnlarged (p,d) --
+ urEnlarged (p,d) --
+ ulEnlarged (p,d) -- cycle)
+enddef ;
+
+endinput ;
diff --git a/metapost/context/mp-shap.mp b/metapost/context/mp-shap.mp
new file mode 100644
index 000000000..5b95e71aa
--- /dev/null
+++ b/metapost/context/mp-shap.mp
@@ -0,0 +1,261 @@
+%D \module
+%D [ file=mp-shap.mp,
+%D version=2000.05.31,
+%D title=\CONTEXT\ \METAPOST\ graphics,
+%D subtitle=shapes,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See licen-en.pdf for
+%C details.
+
+if unknown context_tool : input mp-tool ; fi ;
+if known context_shap : endinput ; fi ;
+
+boolean context_shap ; context_shap := true ;
+
+vardef some_shape_path (expr type) =
+
+ begingroup ;
+
+ save border, xradius, yradius,
+ normal, mirror, rotate,
+ lc, rc, tc, bc, ll, lr, ur, ul,
+ llx, lrx, urx, ulx, lly, lry, ury, uly ;
+
+ path border ;
+
+ xradius := .15 ; xxradius := .10 ;
+ yradius := .15 ; yyradius := .10 ;
+
+ pair ll ; ll := llcorner (unitsquare shifted (-.5,-.5)) ;
+ pair lr ; lr := lrcorner (unitsquare shifted (-.5,-.5)) ;
+ pair ur ; ur := urcorner (unitsquare shifted (-.5,-.5)) ;
+ pair ul ; ul := ulcorner (unitsquare shifted (-.5,-.5)) ;
+
+ pair llx ; llx := ll shifted (xradius,0) ;
+ pair lly ; lly := ll shifted (0,yradius) ;
+
+ pair lrx ; lrx := lr shifted (-xradius,0) ;
+ pair lry ; lry := lr shifted (0,yradius) ;
+
+ pair urx ; urx := ur shifted (-xradius,0) ;
+ pair ury ; ury := ur shifted (0,-yradius) ;
+
+ pair ulx ; ulx := ul shifted (xradius,0) ;
+ pair uly ; uly := ul shifted (0,-yradius) ;
+
+ pair llxx ; llxx := ll shifted (xxradius,0) ;
+ pair llyy ; llyy := ll shifted (0,yyradius) ;
+
+ pair lrxx ; lrxx := lr shifted (-xxradius,0) ;
+ pair lryy ; lryy := lr shifted (0,yyradius) ;
+
+ pair urxx ; urxx := ur shifted (-xxradius,0) ;
+ pair uryy ; uryy := ur shifted (0,-yyradius) ;
+
+ pair ulxx ; ulxx := ul shifted (xxradius,0) ;
+ pair ulyy ; ulyy := ul shifted (0,-yyradius) ;
+
+ pair lc ; lc := ll shifted (0,.5) ;
+ pair rc ; rc := lr shifted (0,.5) ;
+ pair tc ; tc := ul shifted (.5,0) ;
+ pair bc ; bc := ll shifted (.5,0) ;
+
+ def mirror (expr p) =
+ p rotatedaround(origin,180)
+ enddef ;
+
+ def normal (expr p ) =
+ p
+ enddef ;
+
+ def rotate (expr p) =
+ p rotated 45
+ enddef ;
+
+ if type= 0 :
+ border := normal (origin--cycle) ;
+
+ elseif type= 5 :
+ border := normal (llx--lrx{right}...rc...{left}urx--ulx{left}...lc...{right}cycle) ;
+ elseif type= 6 :
+ border := normal (ll--lrx{right}...rc...{left}urx--ul--cycle) ;
+ elseif type= 7 :
+ border := mirror (ll--lrx{right}...rc...{left}urx--ul--cycle) ;
+ elseif type= 8 :
+ border := normal (lr--ury{up}...tc...{down}uly--ll--cycle) ;
+ elseif type= 9 :
+ border := mirror (lr--ury{up}...tc...{down}uly--ll--cycle) ;
+ elseif type=10 :
+ border := normal (ll--lr--ur--ul--ll--ur--ul--ll--cycle) ;
+ elseif type=11 :
+ border := normal (ll--lr--ur--ul--ll--lr--ul--ll--cycle) ;
+ elseif type=12 :
+ border := normal (ll--lrx--ur--ulx--cycle) ;
+ elseif type=13 :
+ border := normal (llx--lr--urx--ul--cycle) ;
+ elseif type=14 :
+ border := normal (lly--bc--lry--ury--tc--uly--cycle) ;
+ elseif type=15 :
+ border := normal (llx--lrx--rc--urx--ulx--lc--cycle) ;
+ elseif type=16 :
+ border := normal (ll--lrx--rc--urx--ul--cycle) ;
+ elseif type=17 :
+ border := mirror (ll--lrx--rc--urx--ul--cycle) ;
+ elseif type=18 :
+ border := normal (lr--ury--tc--uly--ll--cycle) ;
+ elseif type=19 :
+ border := mirror (lr--ury--tc--uly--ll--cycle) ;
+ elseif type=20 :
+ border := normal (ll--lr--ur--ul--ll--llxx--ulxx--ul--ll--
+ lr--ur--urxx--lrxx--cycle) ;
+ elseif type=21 :
+ border := normal (ul--ll--lr--ur--ul--ulyy--uryy--ur--ul--
+ ll--lr--lryy--llyy--cycle) ;
+ elseif type=22 :
+ border := normal (ll--lrx--lry--ur--ulx--uly--cycle) ;
+ elseif type=23 :
+ border := normal (llx--lr--ury--urx--ul--lly--cycle) ;
+ elseif type=24 :
+ border := normal (ll--lr--ur--ul--cycle) ;
+ elseif type=25 :
+ border := normal (llx--lrx--lry--ury--urx--ulx--uly--lly--cycle) ;
+ elseif type=26 :
+ border := normal (ll--lrx--lry--ur--ul--cycle) ;
+ elseif type=27 :
+ border := mirror (ll--lr--ury--urx--ul--cycle) ;
+ elseif type=28 :
+ border := normal (ll--lr--ury--urx--ul--cycle) ;
+ elseif type=29 :
+ border := mirror (ll--lrx--lry--ur--ul--cycle) ;
+ elseif type=30 :
+ border := rotate (bc{right}...{up}rc...tc{left}...{down}lc...{right}bc &
+ bc--tc & tc{left}..{down}lc & lc--rc &
+ rc{up}..tc{left}...{down}lc...{right}bc & cycle) ;
+ elseif type=31 :
+ border := normal (bc{right}...{up}rc...tc{left}...{down}lc...{right}bc &
+ bc--tc & tc{left}..{down}lc & lc--rc &
+ rc{up}..tc{left}...{down}lc...{right}bc & cycle) ;
+ elseif type=32 :
+ border := normal (ll{right}...{right}lry--ur--ul--ll--cycle) ;
+ elseif type=33 :
+ border := normal (ll{right}...{right}lry--ur--ul--ll--cycle
+ --ul--ulx--ulx shifted(0,yyradius)
+ --ur shifted(yyradius,yyradius)
+ --lry shifted(yyradius,yyradius)
+ --lry shifted(0,yyradius)
+ --ur--ul--cycle ) ;
+ elseif type=34 :
+ border := normal (uly..tc..ury &
+ ury..tc shifted (0,-2yradius)..uly &
+ uly--lly &
+ lly..bc..lry &
+ lry--ury &
+ ury..tc shifted (0,-2yradius)..uly & cycle ) ;
+ elseif type=35 :
+ border := normal (bc{right}...rc{up}...tc{left}...lc{down}...cycle) ;
+ elseif type=36 :
+ border := normal (ul--tc{right}..rc{down}..{left}bc--ll &
+ ll..(xpart llx, ypart lc)..ul & cycle) ;
+ elseif type=37 :
+ border := mirror (ul--tc{right}..rc{down}..{left}bc--ll &
+ ll..(xpart llx, ypart lc)..ul & cycle) ;
+ elseif type=38 :
+ border := normal (ll--lc{up}..tc{right}..{down}rc--lr &
+ lr..(xpart bc, ypart lly)..ll & cycle) ;
+ elseif type=39 :
+ border := mirror (ll--lc{up}..tc{right}..{down}rc--lr &
+ lr..(xpart bc, ypart lly)..ll & cycle) ;
+ elseif type=40 :
+ border := normal (ll--lr--ur--ul--ll--ur--ul--ll--lr--ul--ll--cycle) ;
+ elseif type=41 :
+ border := normal (ll--lr--ur--ul--ll--lr--rc--lc--ll--bc--tc--ul--ll & cycle) ;
+ elseif type=42 :
+ border := normal (ll--lr--origin shifted (+epsilon,0)--
+ ur--ul--origin shifted (-epsilon,0)--cycle) ;
+ elseif type=43 :
+ border := normal (ll--ul--origin shifted (0,+epsilon)--
+ ur--lr--origin shifted (0,-epsilon)--cycle) ;
+ elseif type=45 :
+ border := normal (bc--rc--tc--lc--cycle) ;
+ elseif type=46 :
+ border := normal (ll--ul--rc--cycle) ;
+ elseif type=47 :
+ border := mirror (ll--ul--rc--cycle) ;
+ elseif type=48 :
+ border := mirror (ul--ur--bc--cycle) ;
+ elseif type=49 :
+ border := normal (ul--ur--bc--cycle) ;
+
+ elseif type=56 :
+ border := normal (ll--lry--ury--ul--cycle) ;
+ elseif type=57 :
+ border := mirror (ll--lry--ury--ul--cycle) ;
+ elseif type=58 :
+ border := normal (ll--ulx--urx--lr--cycle) ;
+ elseif type=59 :
+ border := mirror (ll--ulx--urx--lr--cycle) ;
+
+ elseif type= 61 :
+ border := normal (fullcircle scaled (1.5*yradius) xscaled (grid_height/grid_width)) ;
+ elseif type= 62 :
+ border := normal (fullcircle scaled (2.0*yradius) xscaled (grid_height/grid_width)) ;
+
+ elseif type= 66 :
+ border := normal (rc--origin shifted ( epsilon,0) --cycle &
+ rc--origin --cycle ) ;
+ elseif type= 67 :
+ border := normal (lc--origin shifted (-epsilon,0) --cycle &
+ lc--origin --cycle ) ;
+ elseif type= 68 :
+ border := normal (tc--origin shifted (0, epsilon) --cycle &
+ tc--origin --cycle ) ;
+ elseif type= 69 :
+ border := normal (bc--origin shifted (0,-epsilon) --cycle &
+ bc--origin --cycle ) ;
+
+ elseif type= 75 :
+ border := mirror (lly--lry--ury--uly--cycle) ;
+ elseif type= 76 :
+ border := mirror (ll--lr--ur--uly--cycle) ;
+ elseif type= 77 :
+ border := mirror (ll--lr--ury--ul--cycle) ;
+ elseif type= 78 :
+ border := mirror (lly--lr--ur--ul--cycle) ;
+ elseif type= 79 :
+ border := mirror (ll--lry--ur--ul--cycle) ;
+
+ else :
+ border := normal (origin--cycle) ;
+ %border := normal (ll--lr--ur--ul--cycle) ;
+ fi ;
+
+ border
+
+ endgroup
+
+enddef;
+
+def some_shape ( expr shape_type ,
+ shape_width ,
+ shape_height ,
+ shape_linewidth ,
+ shape_linecolor ,
+ shape_fillcolor ) =
+
+ path p ; p :=
+ some_shape_path (shape_type)
+ xscaled shape_width
+ yscaled shape_height ;
+
+ pickup pencircle scaled shape_linewidth ;
+
+ fill p withcolor shape_fillcolor ;
+ draw p withcolor shape_linecolor ;
+
+enddef ;
+
+endinput ;
diff --git a/metapost/context/mp-spec.mp b/metapost/context/mp-spec.mp
new file mode 100644
index 000000000..7fa743cbc
--- /dev/null
+++ b/metapost/context/mp-spec.mp
@@ -0,0 +1,147 @@
+%D \module
+%D [ file=mp-spec.mp,
+%D version=1999.6.26,
+%D title=\CONTEXT\ \METAPOST\ graphics,
+%D subtitle=special extensions,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See licen-en.pdf for
+%C details.
+
+%D This module is rather preliminary and subjected to
+%D changes. Here we closely cooperates with the \METAPOST\
+%D to \PDF\ converter module built in \CONTEXT\ and provides
+%D for instance shading. More information can be found in
+%D type {supp-mpe.tex}.
+
+if unknown context_tool : input mp-tool ; fi ;
+if known context_spec : endinput ; fi ;
+
+boolean context_spec ; context_spec := true ;
+
+numeric _special_counter_ ; _special_counter_ := 0 ;
+numeric _color_counter_ ; _color_counter_ := 0 ;
+numeric _special_signal_ ; _special_signal_ := 123 ;
+
+%D When set to \type {true}, shading will be supported. Some
+%D day I will also write an additional directive.
+
+boolean _inline_specials_ ; _inline_specials_ := false ;
+
+%D Because we want to output only those specials that are
+%D actually used in a figure, we need a bit complicated
+%D bookkeeping and collection of specials. At the cost of some
+%D obscurity, we now have rather efficient resources.
+
+string _all_specials_ ; _all_specials_ := "" ;
+
+vardef add_special_signal =
+ if (length _all_specials_>0) :
+ special ("%%MetaPostSpecials: 1.0 " & decimal _special_signal_ ) ; % version
+ fi ;
+enddef ;
+
+vardef add_extra_specials =
+ scantokens _all_specials_ ;
+enddef ;
+
+vardef reset_extra_specials =
+ _all_specials_ := "" ;
+enddef ;
+
+extra_endfig :=
+ " add_special_signal ; " &
+ extra_endfig &
+ " add_extra_specials ; " &
+ " reset_extra_specials ; " ;
+
+def flush_special (expr typ, siz, dat) =
+ _special_counter_ := _special_counter_ + 1 ;
+ if _inline_specials_ :
+ _all_specials_ := _all_specials_
+ & "special "
+ & "(" & ditto
+ & dat & " "
+ & decimal _special_counter_ & " "
+ & decimal typ & " "
+ & decimal siz
+ & " special"
+ & ditto & ");" ;
+ else :
+ _all_specials_ := _all_specials_
+ & "special "
+ & "(" & ditto
+ & "%%MetaPostSpecial: "
+ & decimal siz & " "
+ & dat & " "
+ & decimal _special_counter_ & " "
+ & decimal typ
+ & ditto & ");" ;
+ fi ;
+enddef ;
+
+%D Shade allocation.
+
+vardef define_circular_shade (expr a, b, ra, rb, ca, cb) =
+ flush_special(3, 17, "0 1 1" &
+ dddecimal ca & ddecimal a & " " & decimal ra &
+ dddecimal cb & ddecimal b & " " & decimal rb ) ;
+ _special_counter_
+enddef ;
+
+vardef define_linear_shade (expr a, b, ca, cb) =
+ flush_special(2, 15, "0 1 1" &
+ dddecimal ca & ddecimal a &
+ dddecimal cb & ddecimal b ) ;
+ _special_counter_
+enddef ;
+
+%D A few predefined shading macros.
+
+boolean trace_shades ; trace_shades := false ;
+
+def linear_shade (expr p, n, ca, cb) =
+ begingroup ;
+ save a, b, sh ; pair a, b ;
+ if (n=1) : a := llcorner p ; b := urcorner p ;
+ elseif (n=2) : a := llcorner p ; b := ulcorner p ;
+ elseif (n=3) : a := lrcorner p ; b := ulcorner p ;
+ else : a := llcorner p ; b := lrcorner p ;
+ fi ;
+ fill p withshade define_linear_shade (a,b,ca,cb) ;
+ if trace_shades :
+ drawarrow a -- b withpen pencircle scaled 1pt ;
+ fi ;
+ endgroup ;
+enddef ;
+
+def circular_shade (expr p, n, ca, cb) =
+ begingroup ;
+ save ab, r ; pair ab ; numeric r ;
+ r := (xpart lrcorner p - xpart llcorner p) ++
+ (ypart urcorner p - ypart lrcorner p) ;
+ if (n=1) : ab := llcorner p ;
+ elseif (n=2) : ab := lrcorner p ;
+ elseif (n=3) : ab := urcorner p ;
+ elseif (n=4) : ab := ulcorner p ;
+ else : ab := center p ; r := .5r ;
+ fi ;
+ fill p withshade define_circular_shade(ab,ab,0,r,ca,cb) ;
+ if trace_shades :
+ drawarrow ab -- ab shifted (0,r) withpen pencircle scaled 1pt ;
+ fi ;
+ endgroup ;
+enddef ;
+
+%D Since a \type {fill p withshade s} syntax looks better
+%D than some macro, we implement a new primary.
+
+primarydef p withshade sc =
+ hide (_color_counter_ := _color_counter_ + 1)
+ p withcolor (_special_signal_/1000,_color_counter_/1000,sc/1000)
+enddef ;
+
+endinput ;
diff --git a/metapost/context/mp-text.mp b/metapost/context/mp-text.mp
new file mode 100644
index 000000000..c08bac5ff
--- /dev/null
+++ b/metapost/context/mp-text.mp
@@ -0,0 +1,202 @@
+%D \module
+%D [ file=mp-text.mp,
+%D version=2000.07.10,
+%D title=\CONTEXT\ \METAPOST\ graphics,
+%D subtitle=text support,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See licen-en.pdf for
+%C details.
+
+%D Under construction.
+
+if unknown context_tool : input mp-tool ; fi ;
+if known context_text : endinput ; fi ;
+
+boolean context_text ; context_text := true ;
+
+if unknown noftexpictures :
+ numeric noftexpictures ; noftexpictures := 0 ;
+fi ;
+
+if unknown texpictures[1] :
+ picture texpictures[] ;
+fi ;
+
+numeric textextoffset ; textextoffset := 0 ;
+
+vardef textext@#(expr txt) =
+ interim labeloffset := textextoffset ;
+ noftexpictures := noftexpictures + 1 ;
+ if string txt :
+ write "% figure " & decimal charcode & " : " &
+ "texpictures[" & decimal noftexpictures & "] := btex " &
+ txt & " etex ;" to jobname & ".mpt" ;
+ if unknown texpictures[noftexpictures] :
+ thelabel@#("unknown",origin)
+ else :
+ thelabel@#(texpictures[noftexpictures],origin)
+ fi
+ else :
+ thelabel@#(txt,origin)
+ fi
+enddef ;
+
+pair laboff.origin ; laboff.origin = (infinity,infinity) ;
+pair laboff.raw ; laboff.raw = (infinity,infinity) ;
+
+vardef thelabel@#(expr s, z) =
+ save p ; picture p ;
+ p = s if not picture s : infont defaultfont scaled defaultscale fi ;
+ if laboff@#<>laboff.origin :
+ (p shifted (z + labeloffset*laboff@# - (labxf@#*lrcorner p +
+ labyf@#*ulcorner p + (1-labxf@#-labyf@#)*llcorner p)))
+ else :
+ (p shifted z)
+ fi
+enddef;
+
+def build_parshape (expr p, offset_or_path, dx, dy,
+ baselineskip, strutheight, strutdepth, topskip) =
+
+ if unknown trace_parshape :
+ boolean trace_parshape ; trace_parshape := false ;
+ fi ;
+
+ begingroup ;
+
+ save q, l, r, line, tt, bb,
+ n, hsize, vsize, vvsize, voffset, hoffset, width, indent,
+ ll, lll, rr, rrr, cp, cq, t, b ;
+
+ path q, l, r, line, tt, bb ;
+ numeric n, hsize, vsize, vvsize, voffset, hoffset, width[], indent[] ;
+ pair ll, lll, rr, rrr, cp, cq, t, b ;
+
+ n := 0 ; cp := center p ;
+
+ if path offset_or_path :
+ q := offset_or_path ; cq := center q ;
+ voffset := dy ;
+ hoffset := dx ;
+ else :
+ q := p ; cq := center q ;
+ hoffset := offset_or_path + dx ;
+ voffset := offset_or_path + dy ;
+ fi ;
+
+ hsize := xpart lrcorner q - xpart llcorner q ;
+ vsize := ypart urcorner q - ypart lrcorner q ;
+
+ q := p shifted - cp ;
+
+ startsavingdata ;
+
+ savedata "\global\parvoffset " & decimal voffset&"bp " ;
+ savedata "\global\parhoffset " & decimal hoffset&"bp " ;
+ savedata "\global\parwidth " & decimal hsize&"bp " ;
+ savedata "\global\parheight " & decimal vsize&"bp " ;
+
+ if not path offset_or_path :
+ q := q xscaled ((hsize-2hoffset)/hsize)
+ yscaled ((vsize-2voffset)/vsize) ;
+ fi ;
+
+ hsize := xpart lrcorner q - xpart llcorner q ;
+ vsize := ypart urcorner q - ypart lrcorner q ;
+
+ t := (ulcorner q -- urcorner q) intersection_point q ;
+ b := (llcorner q -- lrcorner q) intersection_point q ;
+
+ if xpart directionpoint t of q < 0 :
+ q := reverse q ;
+ fi ;
+
+ l := q cutbefore t ;
+ l := l if xpart point 0 of q < 0 : & q fi cutafter b ;
+
+ r := q cutbefore b ;
+ r := r if xpart point 0 of q > 0 : & q fi cutafter t ;
+
+% tt := (ulcorner q -- urcorner q) shifted (0,-topskip) ;
+% bb := (llcorner q -- lrcorner q) shifted (0,strutdepth) ;
+%
+% l := l cutbefore (l intersection_point tt) ;
+% l := l cutafter (l intersection_point bb) ;
+% r := r cutbefore (r intersection_point bb) ;
+% r := r cutafter (r intersection_point tt) ;
+
+ if trace_parshape :
+ drawarrow p withpen pencircle scaled 2pt withcolor red ;
+ drawarrow l shifted cp withpen pencircle scaled 1pt withcolor green ;
+ drawarrow r shifted cp withpen pencircle scaled 1pt withcolor blue ;
+ fi ;
+
+ vardef found_point (expr lin, pat, sig) =
+ pair a, b ;
+ a := pat intersection_point (lin shifted (0,strutheight)) ;
+ if intersection_found :
+ a := a shifted (0,-strutheight) ;
+ else :
+ a := pat intersection_point lin ;
+ fi ;
+ b := pat intersection_point (lin shifted (0,-strutdepth)) ;
+ if intersection_found :
+ if sig :
+ if xpart b > xpart a : a := b shifted (0,strutdepth) fi ;
+ else :
+ if xpart b < xpart a : a := b shifted (0,strutdepth) fi ;
+ fi ;
+ fi ;
+ a
+ enddef ;
+
+ if (strutheight+strutdepth<baselineskip) :
+ vvsize := vsize ;
+ else :
+ vvsize := (vsize div baselineskip) * baselineskip ;
+ fi ;
+
+ for i=topskip step baselineskip until vvsize :
+
+ line := (ulcorner q -- urcorner q) shifted (0,-i-eps) ;
+
+ ll := found_point(line,l,true ) ;
+ rr := found_point(line,r,false) ;
+
+ if trace_parshape :
+ fill (ll--rr--rr shifted (0,strutheight)--ll
+ shifted (0,strutheight)--cycle) shifted cp withcolor .5white ;
+ fill (ll--rr--rr shifted (0,-strutdepth)--ll
+ shifted (0,-strutdepth)--cycle) shifted cp withcolor .7white ;
+ draw ll shifted cp withpen pencircle scaled 2pt ;
+ draw rr shifted cp withpen pencircle scaled 2pt ;
+ draw (ll--rr) shifted cp withpen pencircle scaled .5pt ;
+ fi ;
+
+ n := n + 1 ;
+ indent[n] := abs(xpart ll - xpart llcorner q) ;
+ width[n] := abs(xpart rr - xpart ll) ;
+
+ if (i=strutheight) and (width[n]<baselineskip) :
+ n := n - 1 ;
+ savedata "\global\chardef\parfirst=1 " ;
+ fi ;
+
+ endfor ;
+
+ savedata "\global\parlines " & decimal n ;
+ savedata "\global\partoks{ " ;
+ for i=1 upto n:
+ savedata decimal indent[i]&"bp " & decimal width[i]&"bp " ;
+ endfor ;
+ savedata "}" ;
+
+ stopsavingdata ;
+
+ endgroup ;
+
+enddef ;
diff --git a/metapost/context/mp-tool.mp b/metapost/context/mp-tool.mp
new file mode 100644
index 000000000..a3ad4927e
--- /dev/null
+++ b/metapost/context/mp-tool.mp
@@ -0,0 +1,1216 @@
+%D \module
+%D [ file=mp-tool.mp,
+%D version=1998.02.15,
+%D title=\CONTEXT\ \METAPOST\ graphics,
+%D subtitle=auxiliary macros,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module is rather preliminary and subjected to
+%D changes.
+
+if known context_tool : endinput ; fi ;
+
+boolean context_tool ; context_tool := true ;
+
+%D We always want \EPS\ conforming output, so we say:
+
+prologues := 2 ; % 1 = troff, 2 = tex
+warningcheck := 0 ;
+
+%D A semicolor to be used in specials:
+
+string semicolor ; semicolor := char 59 ;
+
+%D By including this module, \METAPOST\ automatically writes a
+%D high resolution boundingbox to the \POSTSCRIPT\ file. This
+%D hack is due to John Hobby himself.
+
+% somehow the first one gets no HiRes.
+
+vardef ddecimal primary p =
+ " " & decimal xpart p &
+ " " & decimal ypart p
+enddef ;
+
+extra_endfig := extra_endfig
+ & "special "
+ & "("
+ & ditto
+ & "%%HiResBoundingBox:"
+ & ditto
+ & "&ddecimal llcorner currentpicture"
+ & "&ddecimal urcorner currentpicture"
+ & ");";
+
+%D Also handy (when we flush colors):
+
+vardef dddecimal primary c =
+ " " & decimal redpart c &
+ " " & decimal greenpart c &
+ " " & decimal bluepart c
+enddef ;
+
+%D We have standardized data file names:
+
+if not known _data_prefix_ :
+
+ string _data_prefix_ ; _data_prefix_ = "mpd-" ;
+ string _data_suffix_ ; _data_suffix_ = ".tmp" ;
+
+fi ;
+
+def data_file =
+ _data_prefix_ & decimal charcode & _data_suffix_
+enddef ;
+
+%D Because \METAPOST\ has a hard coded limit of 4~datafiles,
+%D we need some trickery when we have multiple files.
+
+if unknown collapse_data :
+ boolean collapse_data ; collapse_data := false ;
+fi ;
+
+boolean savingdata ; savingdata := false ;
+
+def savedata expr txt =
+ if collapse_data :
+ write if savingdata : txt else :
+ "\MPdata{" & decimal charcode & "}{" & txt & "}"
+ fi
+ & "%" to jobname & _data_suffix_ ;
+ else :
+ write txt to data_file ;
+ fi ;
+enddef ;
+
+def startsavingdata =
+ savingdata := true ;
+ if collapse_data :
+ write
+ "\MPdata{" & decimal charcode & "}{%"
+ to
+ jobname & _data_suffix_ ;
+ fi ;
+enddef ;
+
+def stopsavingdata =
+ savingdata := false ;
+ if collapse_data :
+ write "}%" to jobname & _data_suffix_ ;
+ fi ;
+enddef ;
+
+%D Instead of a keystroke eating save and allocation
+%D sequence, you can use the \quote {new} alternatives to
+%D save and allocate in one command.
+
+def newcolor text v = forsuffixes i=v : save i ; color i ; endfor ; enddef ;
+def newnumeric text v = forsuffixes i=v : save i ; numeric i ; endfor ; enddef ;
+def newboolean text v = forsuffixes i=v : save i ; boolean i ; endfor ; enddef ;
+def newtransform text v = forsuffixes i=v : save i ; transform i ; endfor ; enddef ;
+def newpath text v = forsuffixes i=v : save i ; path i ; endfor ; enddef ;
+def newpicture text v = forsuffixes i=v : save i ; picture i ; endfor ; enddef ;
+def newstring text v = forsuffixes i=v : save i ; string i ; endfor ; enddef ;
+
+%D Sometimes we don't want parts of the graphics add to the
+%D bounding box. One way of doing this is to save the bounding
+%D box, draw the graphics that may not count, and restore the
+%D bounding box.
+%D
+%D \starttypen
+%D push_boundingbox currentpicture;
+%D pop_boundingbox currentpicture;
+%D \stoptypen
+%D
+%D The bounding box can be called with:
+%D
+%D \starttypen
+%D boundingbox currentpicture
+%D inner_boundingbox currentpicture
+%D outer_boundingbox currentpicture
+%D \stoptypen
+%D
+%D Especially the latter one can be of use when we include
+%D the graphic in a document that is clipped to the bounding
+%D box. In such occasions one can use:
+%D
+%D \starttypen
+%D set_outer_boundingbox currentpicture;
+%D \stoptypen
+%D
+%D Its counterpart is:
+%D
+%D \starttypen
+%D set_inner_boundingbox p
+%D \stoptypen
+
+path pushed_boundingbox;
+
+def push_boundingbox text p =
+ pushed_boundingbox := boundingbox p;
+enddef;
+
+def pop_boundingbox text p =
+ setbounds p to pushed_boundingbox;
+enddef;
+
+vardef boundingbox primary p =
+ llcorner p --
+ lrcorner p --
+ urcorner p --
+ ulcorner p -- cycle
+enddef;
+
+vardef inner_boundingbox primary p =
+ top rt llcorner p --
+ top lft lrcorner p --
+ bot lft urcorner p --
+ bot rt ulcorner p -- cycle
+enddef;
+
+vardef outer_boundingbox primary p =
+ bot lft llcorner p --
+ bot rt lrcorner p --
+ top rt urcorner p --
+ top lft ulcorner p -- cycle
+enddef;
+
+def innerboundingbox = inner_boundingbox enddef ;
+def outerboundingbox = outer_boundingbox enddef ;
+
+vardef set_inner_boundingbox text q =
+ setbounds q to inner_boundingbox q;
+enddef;
+
+vardef set_outer_boundingbox text q =
+ setbounds q to outer_boundingbox q;
+enddef;
+
+%D Some missing functions can be implemented rather
+%D straightforward:
+
+def tand (expr x) = (sind(x)/cosd(x)) enddef ;
+def sqr (expr x) = (x*x) enddef ;
+def log (expr x) = (if x=0: 0 else: mlog(x)/mlog(10) fi) enddef ;
+def ln (expr x) = (if x=0: 0 else: mlog(x)/256 fi) enddef ;
+def exp (expr x) = ((mexp 256)**x) enddef ;
+def pow (expr x) = (x**power) enddef ;
+def inv (expr x) = (if x=0: 0 else: x**-1 fi) enddef ;
+def asin (expr x) = (x+(x**3)/6+3(x**5)/40) enddef ;
+def acos (expr x) = (asin(-x)) enddef ;
+def atan (expr x) = (x-(x**3)/3+(x**5)/5-(x**7)/7) enddef ;
+
+numeric Pi ; Pi := 3.14159 ;
+
+%D We provide two macros for drawing stripes across a shape.
+%D The first method (with the n suffix) uses another method,
+%D slower in calculation, but more efficient when drawn. The
+%D first macro divides the sides into n equal parts. The
+%D first argument specifies the way the lines are drawn, while
+%D the second argument identifier the way the shape is to be
+%D drawn.
+%D
+%D \starttypen
+%D stripe_path_n
+%D (dashed evenly withcolor blue)
+%D (filldraw)
+%D fullcircle xscaled 100 yscaled 40 shifted (50,50) withpen pencircle scaled 4;
+%D \stoptypen
+%D
+%D The a (or angle) alternative supports arbitrary angles and
+%D is therefore more versatile.
+%D
+%D \starttypen
+%D stripe_path_a
+%D (withpen pencircle scaled 2 withcolor red)
+%D (draw)
+%D fullcircle xscaled 100 yscaled 40 withcolor blue;
+%D \stoptypen
+%D
+%D The first alternative obeys:
+
+stripe_n := 10;
+stripe_slot := 3;
+
+%D When no pen dimensions are passed, the slot determines
+%D the spacing.
+%D
+%D The angle alternative is influenced by:
+
+stripe_gap := 5;
+stripe_angle := 45;
+
+def stripe_path_n (text s_spec) (text s_draw) expr s_path =
+ do_stripe_path_n (s_spec) (s_draw) (s_path)
+enddef;
+
+def do_stripe_path_n (text s_spec) (text s_draw) (expr s_path) text s_text =
+ begingroup
+ save curpic, newpic, bb, pp, ww;
+ picture curpic, newpic;
+ path bb, pp;
+ pp := s_path;
+ curpic := currentpicture;
+ currentpicture := nullpicture;
+ s_draw pp s_text;
+ bb := boundingbox currentpicture;
+ newpic := currentpicture;
+ currentpicture := nullpicture;
+ ww := min(ypart urcorner newpic - ypart llcorner newpic,
+ xpart urcorner newpic - xpart llcorner newpic);
+ ww := ww/(stripe_slot*stripe_n);
+ for i=1/stripe_n step 1/stripe_n until 1:
+ draw point (1+i) of bb -- point (3-i) of bb
+ withpen pencircle scaled ww s_spec ;
+ endfor;
+ for i=0 step 1/stripe_n until 1:
+ draw point (3+i) of bb -- point (1-i) of bb
+ withpen pencircle scaled ww s_spec;
+ endfor;
+ clip currentpicture to pp;
+ addto newpic also currentpicture;
+ currentpicture := curpic;
+ addto currentpicture also newpic;
+ endgroup
+enddef;
+
+def stripe_path_a (text s_spec) (text s_draw) expr s_path =
+ do_stripe_path_a (s_spec) (s_draw) (s_path)
+enddef;
+
+def do_stripe_path_a (text s_spec) (text s_draw) (expr s_path) text s_text =
+ begingroup
+ save curpic, newpic, pp; picture curpic, newpic; path pp ;
+ pp := s_path ;
+ curpic := currentpicture;
+ currentpicture := nullpicture;
+ s_draw pp s_text ;
+ def do_stripe_rotation (expr p) =
+ (currentpicture rotatedaround(center p,stripe_angle))
+ enddef ;
+ s_max := max
+ (xpart llcorner do_stripe_rotation(currentpicture),
+ xpart urcorner do_stripe_rotation(currentpicture),
+ ypart llcorner do_stripe_rotation(currentpicture),
+ ypart urcorner do_stripe_rotation(currentpicture));
+ newpic := currentpicture;
+ currentpicture := nullpicture;
+ for i=-s_max-.5stripe_gap step stripe_gap until s_max:
+ draw (-s_max,i)--(s_max,i) s_spec;
+ endfor;
+ currentpicture := do_stripe_rotation(newpic);
+ clip currentpicture to pp ;
+ addto newpic also currentpicture;
+ currentpicture := curpic;
+ addto currentpicture also newpic;
+ endgroup
+enddef;
+
+%D A few normalizing macros:
+%D
+%D \starttypen
+%D xscale_currentpicture ( width )
+%D yscale_currentpicture ( height )
+%D xyscale_currentpicture ( width, height )
+%D scale_currentpicture ( width, height )
+%D \stoptypen
+
+% def xscale_currentpicture(expr the_width) =
+% natural_width := xpart urcorner currentpicture - xpart llcorner currentpicture;
+% currentpicture := currentpicture scaled (the_width/natural_width) ;
+% enddef;
+%
+% def yscale_currentpicture(expr the_height ) =
+% natural_height := ypart urcorner currentpicture - ypart llcorner currentpicture;
+% currentpicture := currentpicture scaled (the_height/natural_height) ;
+% enddef;
+%
+% def xyscale_currentpicture(expr the_width, the_height) =
+% natural_width := xpart urcorner currentpicture - xpart llcorner currentpicture;
+% natural_height := ypart urcorner currentpicture - ypart llcorner currentpicture;
+% currentpicture := currentpicture
+% xscaled (the_width/natural_width)
+% yscaled (the_height/natural_height) ;
+% enddef;
+%
+% def scale_currentpicture(expr the_width, the_height) =
+% xscale_currentpicture(the_width) ;
+% yscale_currentpicture(the_height) ;
+% enddef;
+
+% nog eens uitbreiden zodat path en pic worden afgehandeld.
+
+% natural_width := xpart urcorner currentpicture - xpart llcorner currentpicture;
+% currentpicture := currentpicture scaled (the_width/natural_width) ;
+
+% TODO TODO TODO TODO, not yet ok
+
+primarydef p xsized w =
+ (p scaled (w/(xpart urcorner p - xpart llcorner p)))
+enddef ;
+
+primarydef p ysized h =
+ (p scaled (h/(ypart urcorner p - ypart llcorner p)))
+enddef ;
+
+primarydef p sized wh =
+ (p xscaled (xpart wh/(xpart urcorner p - xpart llcorner p))
+ yscaled (ypart wh/(ypart urcorner p - ypart llcorner p)))
+enddef ;
+
+primarydef p xysized wh =
+ (p xscaled (xpart wh/(xpart urcorner p - xpart llcorner p))
+ yscaled (ypart wh/(ypart urcorner p - ypart llcorner p)))
+enddef ;
+
+def xscale_currentpicture(expr w) =
+ currentpicture := currentpicture xsized w ;
+enddef;
+
+def yscale_currentpicture(expr h) =
+ currentpicture := currentpicture ysized h ;
+enddef;
+
+def xyscale_currentpicture(expr w, h) =
+ currentpicture := currentpicture xysized (w,h) ;
+enddef;
+
+def scale_currentpicture(expr w, h) =
+ currentpicture := currentpicture xsized w ;
+ currentpicture := currentpicture ysized h ;
+enddef;
+
+%D A full circle is centered at the origin, while a unitsquare
+%D is located in the first quadrant. Now guess what kind of
+%D path fullsquare and unitcircle do return.
+
+path fullsquare, unitcircle ;
+
+fullsquare := unitsquare shifted - center unitsquare ;
+unitcircle := fullcircle shifted urcorner fullcircle ;
+
+%D Some more paths:
+
+path urcircle, ulcircle, llcircle, lrcircle ;
+
+urcircle := origin--(+.5,0)&(+.5,0){up} ..(0,+.5)&(0,+.5)--cycle ;
+ulcircle := origin--(0,+.5)&(0,+.5){left} ..(-.5,0)&(-.5,0)--cycle ;
+llcircle := origin--(-.5,0)&(-.5,0){down} ..(0,-.5)&(0,-.5)--cycle ;
+lrcircle := origin--(0,-.5)&(0,-.5){right}..(+.5,0)&(+.5,0)--cycle ;
+
+path tcircle, bcircle, lcircle, rcircle ;
+
+tcircle = origin--(+.5,0)&(+.5,0){up} ..(0,+.5)..{down} (-.5,0)--cycle ;
+bcircle = origin--(-.5,0)&(-.5,0){down} ..(0,-.5)..{up} (+.5,0)--cycle ;
+lcircle = origin--(0,+.5)&(0,+.5){left} ..(-.5,0)..{right}(0,-.5)--cycle ;
+rcircle = origin--(0,-.5)&(0,-.5){right}..(+.5,0)..{left} (0,+.5)--cycle ;
+
+path urtriangle, ultriangle, lltriangle, lrtriangle ;
+
+urtriangle := origin--(+.5,0)--(0,+.5)--cycle ;
+ultriangle := origin--(0,+.5)--(-.5,0)--cycle ;
+lltriangle := origin--(-.5,0)--(0,-.5)--cycle ;
+lrtriangle := origin--(0,-.5)--(+.5,0)--cycle ;
+
+path unitdiamond, fulldiamond ;
+
+unitdiamond := (.5,0)--(1,.5)--(.5,1)--(0,.5)--cycle ;
+fulldiamond := unitdiamond shifted - center unitdiamond ;
+
+%D shorter
+
+primarydef p xyscaled q =
+ p xscaled (xpart paired(q)) yscaled (ypart paired(q))
+enddef ;
+
+%D Experimenteel, zie folder-3.tex.
+
+def set_grid(expr w, h, nx, ny) =
+ boolean grid[][] ; boolean grid_full ;
+ grid_w := w ;
+ grid_h := h ;
+ grid_nx := nx ;
+ grid_ny := ny ;
+ grid_x := round(w/grid_nx) ; % +.5) ;
+ grid_y := round(h/grid_ny) ; % +.5) ;
+ grid_left := (1+grid_x)*(1+grid_y) ;
+ grid_full := false ;
+ for i=0 upto grid_x:
+ for j=0 upto grid_y:
+ grid[i][j] := false ;
+ endfor ;
+ endfor ;
+enddef ;
+
+vardef new_on_grid(expr _dx_, _dy_) =
+ dx := _dx_ ;
+ dy := _dy_ ;
+ ddx := min(round(dx/grid_nx),grid_x) ; % +.5),grid_x) ;
+ ddy := min(round(dy/grid_ny),grid_y) ; % +.5),grid_y) ;
+ if not grid_full and not grid[ddx][ddy]:
+ grid[ddx][ddy] := true ;
+ grid_left := grid_left-1 ;
+ grid_full := (grid_left=0) ;
+ true
+ else:
+ false
+ fi
+enddef ;
+
+%D usage: \type{innerpath peepholed outerpath}.
+%D
+%D beginfig(1);
+%D def fullsquare = (unitsquare shifted -center unitsquare) enddef ;
+%D fill (fullsquare scaled 200) withcolor red ;
+%D path p ; p := (fullcircle scaled 100) ; bboxmargin := 0 ;
+%D fill p peepholed bbox p ;
+%D endfig;
+
+secondarydef p peepholed q =
+ begingroup ;
+ save start ; pair start ; start := point 0 of p ;
+ if xpart start >= xpart center p :
+ if ypart start >= ypart center p :
+ urcorner q -- ulcorner q -- llcorner q -- lrcorner q --
+ reverse p -- lrcorner q -- cycle
+ else :
+ lrcorner q -- urcorner q -- ulcorner q -- llcorner q --
+ reverse p -- llcorner q -- cycle
+ fi
+ else :
+ if ypart start > ypart center p :
+ ulcorner q -- llcorner q -- lrcorner q -- urcorner q --
+ reverse p -- urcorner q -- cycle
+ else :
+ llcorner q -- lrcorner q -- urcorner q -- ulcorner q --
+ reverse p -- ulcorner q -- cycle
+ fi
+ fi
+ endgroup
+enddef ;
+
+boolean intersection_found ;
+
+secondarydef p intersection_point q =
+ begingroup
+ save x_, y_ ;
+ (x_,y_) = p intersectiontimes q ;
+ if x_<0 :
+ intersection_found := false ;
+ center p % origin
+ else :
+ intersection_found := true ;
+ .5[point x_ of p, point y_ of q]
+ fi
+ endgroup
+enddef ;
+
+%D New, undocumented, experimental:
+
+vardef tensecircle (expr width, height, offset) =
+ ((-width/2,-height/2) ... (0,-height/2-offset) ...
+ (+width/2,-height/2) ... (+width/2+offset,0) ...
+ (+width/2,+height/2) ... (0,+height/2+offset) ...
+ (-width/2,+height/2) ... (-width/2-offset,0) ... cycle)
+enddef ;
+
+%vardef tensecircle (expr width, height, offset) =
+% ((-width/2,-height/2)..(0,-height/2-offset)..(+width/2,-height/2) &
+% (+width/2,-height/2)..(+width/2+offset,0)..(+width/2,+height/2) &
+% (+width/2,+height/2)..(0,+height/2+offset)..(-width/2,+height/2) &
+% (-width/2,+height/2)..(-width/2-offset,0)..(-width/2,-height/2)..cycle)
+%enddef ;
+
+%D Some colors.
+
+color cyan ; cyan = (0,1,1) ;
+color magenta ; magenta = (1,0,1) ;
+color yellow ; yellow = (1,1,0) ;
+
+%D Well, this is the dangerous and naive version:
+
+def drawfill text t =
+ fill t ;
+ draw t ;
+enddef;
+
+%D This two step approach saves the path first, since it can
+%D be a function. Attributes must not be randomized.
+
+def drawfill expr c =
+ path _c_ ; _c_ := c ;
+ do_drawfill
+enddef ;
+
+def do_drawfill text t =
+ draw _c_ t ;
+ fill _c_ t ;
+enddef;
+
+def undrawfill expr c =
+ drawfill c withcolor background
+enddef ;
+
+%D Moved from mp-char.mp
+
+vardef paired (expr d) =
+ if pair d : d else : (d,d) fi
+enddef ;
+
+%primarydef p enlarged d =
+% begingroup ; save dd ; pair dd ;
+% dd := if pair d : d else : (d,d) fi ;
+% (llcorner p shifted (-xpart dd,-ypart dd) --
+% lrcorner p shifted (+xpart dd,-ypart dd) --
+% urcorner p shifted (+xpart dd,+ypart dd) --
+% ulcorner p shifted (-xpart dd,+ypart dd) --
+% cycle)
+% endgroup
+%enddef;
+
+primarydef p enlarged d =
+ (p llmoved d -- p lrmoved d -- p urmoved d -- p ulmoved d -- cycle)
+enddef;
+
+primarydef p llenlarged d =
+ (p llmoved d -- lrcorner p -- urcorner p -- ulcorner p -- cycle)
+enddef ;
+
+primarydef p lrenlarged d =
+ (llcorner p -- p lrmoved d -- urcorner p -- ulcorner p -- cycle)
+enddef ;
+
+primarydef p urenlarged d =
+ (llcorner p -- lrcorner p -- p urmoved d -- ulcorner p -- cycle)
+enddef ;
+
+primarydef p ulenlarged d =
+ (llcorner p -- lrcorner p -- urcorner p -- p ulmoved d -- cycle)
+enddef ;
+
+primarydef p llmoved d =
+ ((llcorner p) shifted (-xpart paired(d),-ypart paired(d)))
+enddef ;
+
+primarydef p lrmoved d =
+ ((lrcorner p) shifted (+xpart paired(d),-ypart paired(d)))
+enddef ;
+
+primarydef p urmoved d =
+ ((urcorner p) shifted (+xpart paired(d),+ypart paired(d)))
+enddef ;
+
+primarydef p ulmoved d =
+ ((ulcorner p) shifted (-xpart paired(d),+ypart paired(d)))
+enddef ;
+
+%D Nice too:
+
+primarydef p superellipsed s =
+ superellipse
+ (.5[lrcorner p,urcorner p],
+ .5[urcorner p,ulcorner p],
+ .5[ulcorner p,llcorner p],
+ .5[llcorner p,lrcorner p],
+ s)
+enddef ;
+
+primarydef p squeezed s =
+ ((llcorner p .. .5[llcorner p,lrcorner p] shifted ( 0, ypart paired(s)) .. lrcorner p) &
+ (lrcorner p .. .5[lrcorner p,urcorner p] shifted (-xpart paired(s), 0) .. urcorner p) &
+ (urcorner p .. .5[urcorner p,ulcorner p] shifted ( 0,-ypart paired(s)) .. ulcorner p) &
+ (ulcorner p .. .5[ulcorner p,llcorner p] shifted ( xpart paired(s), 0) .. llcorner p) & cycle)
+enddef ;
+
+primarydef p randomshifted s =
+ begingroup ; save ss ; pair ss ; ss := paired(s) ;
+ p shifted (-.5xpart ss + uniformdeviate xpart ss,
+ -.5ypart ss + uniformdeviate ypart ss)
+ endgroup
+enddef ;
+
+primarydef p randomized s =
+ for i=0 upto length(p)-1 :
+ ((point i of p) randomshifted s) .. controls
+ ((postcontrol i of p) randomshifted s) and
+ ((precontrol (i+1) of p) randomshifted s) ..
+ endfor cycle
+enddef ;
+
+%D Rather fundamental.
+
+% vardef rightpath expr p =
+% save q, t, b ; path q ; pair t, b ;
+% t := (ulcorner p -- urcorner p) intersection_point p ;
+% b := (llcorner p -- lrcorner p) intersection_point p ;
+% if xpart directionpoint t of p < 0 : p := reverse p ; fi ;
+% q := p cutbefore b ;
+% q := q if xpart point 0 of p > 0 : & p fi cutafter t ;
+% q
+% enddef ;
+%
+% vardef leftpath expr p =
+% save q, t, b ; path q ; pair t, b ;
+% t := (ulcorner p -- urcorner p) intersection_point p ;
+% b := (llcorner p -- lrcorner p) intersection_point p ;
+% if xpart directionpoint t of p < 0 : p := reverse p ; fi ;
+% q := p cutbefore t ;
+% q := q if xpart point 0 of p > 0 : & p fi cutafter b ;
+% q
+% enddef ;
+
+def leftrightpath(expr p, l) =
+ save q, t, b ; path q ; pair t, b ;
+ t := (ulcorner p -- urcorner p) intersection_point p ;
+ b := (llcorner p -- lrcorner p) intersection_point p ;
+ if xpart directionpoint t of p < 0 : p := reverse p ; fi ;
+ q := p cutbefore if l: t else: b fi ;
+ q := q if xpart point 0 of p > 0 : &
+ p fi cutafter if l: b else: t fi ;
+ q
+enddef ;
+
+vardef leftpath expr p = leftrightpath(p,true ) enddef ;
+vardef rightpath expr p = leftrightpath(p,false) enddef ;
+
+%D Tracing.
+
+let normaldraw = draw ;
+let normalfill = fill ;
+
+def drawlineoptions (text t) = def _lin_opt_ = t enddef ; enddef ;
+def drawpointoptions (text t) = def _pnt_opt_ = t enddef ; enddef ;
+def drawcontroloptions(text t) = def _ctr_opt_ = t enddef ; enddef ;
+def drawlabeloptions (text t) = def _lab_opt_ = t enddef ; enddef ;
+def draworiginoptions (text t) = def _ori_opt_ = t enddef ; enddef ;
+def drawboundoptions (text t) = def _bnd_opt_ = t enddef ; enddef ;
+def drawpathoptions (text t) = def _pth_opt_ = t enddef ; enddef ;
+
+drawlineoptions (withpen pencircle scaled 1 withcolor .5white) ;
+drawpointoptions (withpen pencircle scaled 4 withcolor black) ;
+drawcontroloptions(withpen pencircle scaled 2.5 withcolor black) ;
+drawlabeloptions () ;
+draworiginoptions (withpen pencircle scaled 1 withcolor .5white) ;
+drawboundoptions (dashed evenly _ori_opt_) ;
+drawpathoptions (withpen pencircle scaled 5 withcolor .8white) ;
+
+%D Path.
+
+def drawpath expr p =
+ normaldraw p _pth_opt_
+enddef;
+
+%D Arrow.
+
+vardef drawarrowpath expr p =
+ save autoarrows ; boolean autoarrows ; autoarrows := true ;
+ drawarrow p _pth_opt_
+enddef ;
+
+%D Points.
+
+def drawpoint expr c =
+ if string c :
+ string _c_ ; _c_ := "(" & c & ")" ;
+ dotlabel.urt(_c_, scantokens _c_) ;
+ drawdot scantokens _c_
+ else :
+ dotlabel.urt("(" & decimal xpart c & "," & decimal ypart c & ")", c) ;
+ drawdot c
+ fi _pnt_opt_
+enddef ;
+
+%D PathPoints.
+
+def drawpoints expr c = path _c_ ; _c_ := c ; do_drawpoints enddef ;
+def drawcontrolpoints expr c = path _c_ ; _c_ := c ; do_drawcontrolpoints enddef ;
+def drawcontrollines expr c = path _c_ ; _c_ := c ; do_drawcontrollines enddef ;
+def drawpointlabels expr c = path _c_ ; _c_ := c ; do_drawpointlabels enddef ;
+
+def do_drawpoints text t =
+ for _i_=0 upto length(_c_) :
+ normaldraw point _i_ of _c_ _pnt_opt_ t ;
+ endfor ;
+enddef;
+
+def do_drawcontrolpoints text t =
+ for _i_=0 upto length(_c_) :
+ normaldraw precontrol _i_ of _c_ _ctr_opt_ t ;
+ normaldraw postcontrol _i_ of _c_ _ctr_opt_ t ;
+ endfor ;
+enddef;
+
+def do_drawcontrollines text t =
+ for _i_=0 upto length(_c_) :
+ normaldraw point _i_ of _c_ -- precontrol _i_ of _c_ _lin_opt_ t ;
+ normaldraw point _i_ of _c_ -- postcontrol _i_ of _c_ _lin_opt_ t ;
+ endfor ;
+enddef;
+
+boolean swappointlabels ; swappointlabels := false ;
+
+def do_drawpointlabels text t =
+ for _i_=0 upto length(_c_) :
+ pair _u_ ; _u_ := unitvector(direction _i_ of _c_)
+ rotated if swappointlabels : - fi 90 ;
+ pair _p_ ; _p_ := (point _i_ of _c_) ;
+ _u_ := 12 * defaultscale * _u_ ;
+ normaldraw thelabel ( decimal _i_,
+ _p_ shifted if cycle _c_ and (_i_=0) : - fi _u_ ) _lab_opt_ t ;
+ endfor ;
+enddef;
+
+%D Bounding box.
+
+def drawboundingbox expr p =
+ normaldraw boundingbox p _bnd_opt_
+enddef ;
+
+%D Origin.
+
+numeric originlength ; originlength := .5cm ;
+
+def draworigin text t =
+ normaldraw (origin shifted (0, originlength) --
+ origin shifted (0,-originlength)) _ori_opt_ t ;
+ normaldraw (origin shifted ( originlength,0) --
+ origin shifted (-originlength,0)) _ori_opt_ t ;
+enddef;
+
+%D Axis.
+
+numeric tickstep ; tickstep := 5mm ;
+numeric ticklength ; ticklength := 2mm ;
+
+def drawxticks expr c = path _c_ ; _c_ := c ; do_drawxticks enddef ;
+def drawyticks expr c = path _c_ ; _c_ := c ; do_drawyticks enddef ;
+def drawticks expr c = path _c_ ; _c_ := c ; do_drawticks enddef ;
+
+% Adding eps prevents disappearance due to rounding errors.
+
+def do_drawxticks text t =
+ for i=0 step -tickstep until xpart llcorner _c_ - eps :
+ if (i<=xpart lrcorner _c_) :
+ normaldraw (i,-ticklength)--(i,ticklength) _ori_opt_ t ;
+ fi ;
+ endfor ;
+ for i=0 step tickstep until xpart lrcorner _c_ + eps :
+ if (i>=xpart llcorner _c_) :
+ normaldraw (i,-ticklength)--(i,ticklength) _ori_opt_ t ;
+ fi ;
+ endfor ;
+ normaldraw (llcorner _c_ -- ulcorner _c_)
+ shifted (-xpart llcorner _c_,0) _ori_opt_ t ;
+enddef ;
+
+def do_drawyticks text t =
+ for i=0 step -tickstep until ypart llcorner _c_ - eps :
+ if (i<=ypart ulcorner _c_) :
+ normaldraw (-ticklength,i)--(ticklength,i) _ori_opt_ t ;
+ fi ;
+ endfor ;
+ for i=0 step tickstep until ypart ulcorner _c_ + eps :
+ if (i>=ypart llcorner _c_) :
+ normaldraw (-ticklength,i)--(ticklength,i) _ori_opt_ t ;
+ fi ;
+ endfor ;
+ normaldraw (llcorner _c_ -- lrcorner _c_)
+ shifted (0,-ypart llcorner _c_) _ori_opt_ t ;
+enddef ;
+
+def do_drawticks text t =
+ drawxticks _c_ t ;
+ drawyticks _c_ t ;
+enddef ;
+
+%D All of it except axis.
+
+def drawwholepath expr p =
+ draworigin ;
+ drawpath p ;
+ drawcontrollines p ;
+ drawcontrolpoints p ;
+ drawpoints p ;
+ drawboundingbox p ;
+ drawpointlabels p ;
+enddef ;
+
+%D Tracing.
+
+def visualizeddraw expr c =
+ if picture c : normaldraw c else : path _c_ ; _c_ := c ; do_visualizeddraw fi
+enddef ;
+
+def visualizedfill expr c =
+ if picture c : normalfill c else : path _c_ ; _c_ := c ; do_visualizedfill fi
+enddef ;
+
+def do_visualizeddraw text t =
+ draworigin ;
+ drawpath _c_ t ;
+ drawcontrollines _c_ ;
+ drawcontrolpoints _c_ ;
+ drawpoints _c_ ;
+ drawboundingbox _c_ ;
+ drawpointlabels _c_ ;
+enddef ;
+
+def do_visualizedfill text t =
+ if cycle _c_ : normalfill _c_ t fi ;
+ draworigin ;
+ drawcontrollines _c_ ;
+ drawcontrolpoints _c_ ;
+ drawpoints _c_ ;
+ drawboundingbox _c_ ;
+ drawpointlabels _c_ ;
+enddef ;
+
+def visualizepaths =
+ let fill = visualizedfill ;
+ let draw = visualizeddraw ;
+enddef ;
+
+def naturalizepaths =
+ let fill = normalfill ;
+ let draw = normaldraw ;
+enddef ;
+
+extra_endfig := extra_endfig & " naturalizepaths ; " ;
+
+%D Normally, arrowheads don't scale well. So we provide a
+%D hack.
+
+boolean autoarrows ; autoarrows := false ;
+numeric ahfactor ; ahfactor := 2.5 ;
+
+def set_ahlength (text t) =
+ ahlength := (ahfactor*pen_size(t)) ;
+enddef ;
+
+vardef pen_size (text t) =
+ save p ; picture p ; p := nullpicture ;
+ addto p doublepath (top origin -- bot origin) t ;
+ (ypart urcorner p - ypart lrcorner p)
+enddef ;
+
+%D The next two macros are adapted versions of plain
+%D \METAPOST\ definitions.
+
+def _finarr text t =
+ if autoarrows : set_ahlength (t) fi ;
+ draw _apth t ;
+ filldraw arrowhead _apth t ;
+enddef;
+
+def _findarr text t =
+ if autoarrows : set_ahlength (t) fi ;
+ draw _apth t ;
+ fill arrowhead _apth withpen currentpen t ;
+ fill arrowhead reverse _apth withpen currentpen t ;
+enddef ;
+
+%D Handy too ......
+
+vardef pointarrow (expr pat, loc, len, off) =
+ save l, r, s, t ; path l, r ; numeric s ; pair t ;
+ t := if pair loc : loc else : point loc along pat fi ;
+% draw t withpen pencircle scaled 10 withcolor .5white ;
+ s := len/2 - off ; if s<=0 : s := 0 elseif s>len : s := len fi ;
+ r := pat cutbefore t ;
+ r := (r cutafter point (arctime s of r) of r) ;
+ s := len/2 + off ; if s<=0 : s := 0 elseif s>len : s := len fi ;
+ l := reverse (pat cutafter t) ;
+ l := (reverse (l cutafter point (arctime s of l) of l)) ;
+ (l..r)
+enddef ;
+
+def rightarrow (expr pat,tim,len) = pointarrow(pat,tim,len,-len) enddef ;
+def leftarrow (expr pat,tim,len) = pointarrow(pat,tim,len,+len) enddef ;
+def centerarrow (expr pat,tim,len) = pointarrow(pat,tim,len, 0) enddef ;
+
+%D The \type {along} and \type {on} operators can be used
+%D as follows:
+%D
+%D \starttypen
+%D drawdot point .5 along somepath ;
+%D drawdot point 3cm on somepath ;
+%D \stoptypen
+%D
+%D The number denotes a percentage (fraction).
+
+primarydef pct along pat = % also negative
+ (arctime (pct * (arclength pat)) of pat) of pat
+enddef ;
+
+% primarydef len on pat =
+% (arctime len of pat) of pat
+% enddef ;
+
+primarydef len on pat =
+ (arctime if len>0 : len else : (arclength(pat)+len) fi of pat) of pat
+enddef ;
+
+% this cuts of a piece from both ends
+
+tertiarydef pat cutends len =
+ begingroup ; save tap ; path tap ;
+ tap := pat cutbefore (point len on pat) ;
+ (tap cutafter (point -len on tap))
+ endgroup
+enddef ;
+
+%D To be documented.
+
+path freesquare ;
+
+freesquare := ((-1,0)--(-1,-1)--(0,-1)--(+1,-1)--
+ (+1,0)--(+1,+1)--(0,+1)--(-1,+1)--cycle) scaled .5 ;
+
+numeric freelabeloffset ; freelabeloffset := 3pt ;
+numeric freedotlabelsize ; freedotlabelsize := 3pt ;
+
+vardef thefreelabel (expr str, loc, ori) =
+ save s, p, q, l ; picture s ; path p, q ; pair l ;
+ interim labeloffset := freelabeloffset ;
+ s := if string str : thelabel(str,loc) else : str shifted -center str shifted loc fi ;
+ setbounds s to boundingbox s enlarged freelabeloffset ;
+ p := fullcircle scaled (2*length(loc-ori)) shifted ori ;
+ q := freesquare xyscaled (urcorner s - llcorner s) ;
+ l := point (xpart (p intersectiontimes (ori--loc))) of q ;
+setbounds s to boundingbox s enlarged -freelabeloffset ; % new
+ %draw boundingbox s shifted -l withpen pencircle scaled .5pt withcolor red ;
+ (s shifted -l)
+enddef ;
+
+vardef freelabel (expr str, loc, ori) =
+ draw thefreelabel(str,loc,ori) ;
+enddef ;
+
+vardef freedotlabel (expr str, loc, ori) =
+ interim linecap:=rounded ;
+ draw loc withpen pencircle scaled freedotlabelsize ;
+ freelabel(str,loc,ori) ;
+enddef ;
+
+%D \starttypen
+%D drawarrow anglebetween(line_a,line_b,somelabel) ;
+%D \stoptypen
+
+% angleoffset ; angleoffset := 0pt ;
+numeric anglelength ; anglelength := 20pt ;
+numeric anglemethod ; anglemethod := 1 ;
+
+vardef anglebetween (expr a, b, str) = % path path string
+ save pointa, pointb, common, middle, offset ;
+ pair pointa, pointb, common, middle, offset ;
+ save curve ; path curve ;
+ save where ; numeric where ;
+ if round point 0 of a = round point 0 of b :
+ common := point 0 of a ;
+ else :
+ common := a intersectionpoint b ;
+ fi ;
+ pointa := point anglelength on a ;
+ pointb := point anglelength on b ;
+ where := turningnumber (common--pointa--pointb--cycle) ;
+ if anglemethod = 1 :
+ curve := pointa{pointa rotated (where*90)} .. pointb ;
+ middle := point .5 along curve ;
+ elseif anglemethod = 2 :
+ middle := common rotatedaround(.5[pointa,pointb],180) ;
+ curve := pointa--middle--pointb ;
+ elseif anglemethod = 3 :
+ middle := ((common--pointa) rotatedaround (pointa,-where*90))
+ intersectionpoint
+ ((common--pointb) rotatedaround (pointb, where*90)) ;
+ curve := pointa--middle--pointb ;
+ fi ;
+ draw thefreelabel(str, middle, common) withcolor black ;
+ curve
+enddef ;
+
+% Stack
+
+picture currentpicturestack[] ;
+numeric currentpicturedepth ; currentpicturedepth := 0 ;
+
+def pushcurrentpicture =
+ currentpicturedepth := currentpicturedepth + 1 ;
+ currentpicturestack[currentpicturedepth] := currentpicture ;
+ currentpicture := nullpicture ;
+enddef ;
+
+def popcurrentpicture =
+ if currentpicturedepth > 0 :
+ addto currentpicturestack[currentpicturedepth] also currentpicture ;
+ currentpicture := currentpicturestack[currentpicturedepth] ;
+ currentpicturedepth := currentpicturedepth - 1 ;
+ fi ;
+enddef ;
+
+%D colorcircle(size, red, green, blue) ;
+
+% vardef colorcircle (expr size, red, green, blue) =
+% save r, g, b, rr, gg, bb, cc, mm, yy ; save radius ;
+% path r, g, b, rr, bb, gg, cc, mm, yy ; numeric radius ;
+%
+% radius := 5cm ; pickup pencircle scaled (radius/25) ;
+%
+% r := g := b := fullcircle scaled radius shifted (0,radius/4) ;
+%
+% r := r rotatedaround (origin, 15) ;
+% g := g rotatedaround (origin,135) ;
+% b := b rotatedaround (origin,255) ;
+%
+% r := r rotatedaround(center r,-90) ;
+% g := g rotatedaround(center g, 90) ;
+%
+% gg := buildcycle(buildcycle(reverse r,b),g) ;
+% cc := buildcycle(buildcycle(b,reverse g),r) ;
+%
+% rr := gg rotatedaround(origin,120) ;
+% bb := gg rotatedaround(origin,240) ;
+%
+% yy := cc rotatedaround(origin,120) ;
+% mm := cc rotatedaround(origin,240) ;
+%
+% pushcurrentpicture ;
+%
+% fill fullcircle scaled radius withcolor white ;
+%
+% fill rr withcolor red ; fill cc withcolor white-red ;
+% fill gg withcolor green ; fill mm withcolor white-green ;
+% fill bb withcolor blue ; fill yy withcolor white-blue ;
+%
+% for i = rr,gg,bb,cc,mm,yy : draw i withcolor .5white ; endfor ;
+%
+% currentpicture := currentpicture xsized size ;
+%
+% popcurrentpicture ;
+% enddef ;
+
+% vardef colorcircle (expr size, red, green, blue) =
+% save r, g, b, rr, gg, bb, cc, mm, yy ; save radius ;
+% path r, g, b, rr, bb, gg, cc, mm, yy ; numeric radius ;
+%
+% radius := 5cm ; pickup pencircle scaled (radius/25) ;
+%
+% transform t ; t := identity rotatedaround(origin,120) ;
+%
+% r := fullcircle scaled radius
+% shifted (0,radius/4) rotatedaround(origin,15) ;
+%
+% g := r transformed t ; b := g transformed t ;
+%
+% r := r rotatedaround(center r,-90) ;
+% g := g rotatedaround(center g, 90) ;
+%
+% gg := buildcycle(buildcycle(reverse r,b),g) ;
+% cc := buildcycle(buildcycle(b,reverse g),r) ;
+%
+% rr := gg transformed t ; bb := rr transformed t ;
+% yy := cc transformed t ; mm := yy transformed t ;
+%
+% pushcurrentpicture ;
+%
+% fill fullcircle scaled radius withcolor white ;
+%
+% fill rr withcolor red ; fill cc withcolor white-red ;
+% fill gg withcolor green ; fill mm withcolor white-green ;
+% fill bb withcolor blue ; fill yy withcolor white-blue ;
+%
+% for i = rr,gg,bb,cc,mm,yy : draw i withcolor .5white ; endfor ;
+%
+% currentpicture := currentpicture xsized size ;
+%
+% popcurrentpicture ;
+% enddef ;
+
+vardef colorcircle (expr size, red, green, blue) =
+ save r, g, b, c, m, y, w ; save radius ;
+ path r, g, b, c, m, y, w ; numeric radius ;
+
+ radius := 5cm ; pickup pencircle scaled (radius/25) ;
+
+ transform t ; t := identity rotatedaround(origin,120) ;
+
+ r := fullcircle rotated 90 scaled radius
+ shifted (0,radius/4) rotatedaround(origin,135) ;
+
+ b := r transformed t ; g := b transformed t ;
+
+ c := buildcycle(subpath(1,7) of g,subpath(1,7) of b) ;
+ y := c transformed t ; m := y transformed t ;
+
+ w := buildcycle(subpath(3,5) of r, subpath(3,5) of g,subpath(3,5) of b) ;
+
+ pushcurrentpicture ;
+
+ fill r withcolor red ;
+ fill g withcolor green ;
+ fill b withcolor blue ;
+ fill c withcolor white-red ;
+ fill m withcolor white-green ;
+ fill y withcolor white-blue ;
+ fill w withcolor white ;
+
+ for i = r,g,b,c,m,y : draw i withcolor .5white ; endfor ;
+
+ currentpicture := currentpicture xsized size ;
+
+ popcurrentpicture ;
+enddef ;
+
+% penpoint (i,2) of somepath -> inner / outer point
+
+vardef penpoint expr pnt of p =
+ save n, d ; numeric n, d ;
+ (n,d) = if pair pnt : pnt else : (pnt,1) fi ;
+ (point n of p shifted ((penoffset direction n of p of currentpen) scaled d))
+enddef ;
+
+% nice: currentpicture := inverted currentpicture ;
+
+vardef inverted expr p =
+ save pp ; picture pp ; pp := nullpicture ;
+ for i within p :
+ addto pp
+ if stroked i or filled i :
+ if filled i : contour else : doublepath fi pathpart i
+ dashed dashpart i withpen penpart i
+ else :
+ also i
+ fi
+ withcolor white-(redpart i, greenpart i, bluepart i) ;
+ endfor ;
+ pp
+enddef ;
+
+% yes or no: "text" infont "cmr12" at 24pt ;
+
+% let normalinfont = infont ;
+%
+% numeric lastfontsize ; lastfontsize = fontsize defaultfont ;
+%
+% def infont primary name = % no vardef, no expr
+% hide(lastfontsize := fontsize name) % no ;
+% normalinfont name
+% enddef ;
+%
+% def scaledat expr size =
+% scaled (size/lastfontsize)
+% enddef ;
+%
+% let at = scaledat ;
+
+% like decimal
+
+def condition primary b = if b : "true" else : "false" fi enddef ;
+
+endinput ;
diff --git a/tex/context/base/colo-ini.tex b/tex/context/base/colo-ini.tex
index d5b9beb6e..02b6ca694 100644
--- a/tex/context/base/colo-ini.tex
+++ b/tex/context/base/colo-ini.tex
@@ -123,6 +123,36 @@
11: barva je prevedena na sed
\stopmessages
+\startmessages italian library: colors
+ title: colore
+ 1: sistema -- attivato globalmente
+ 2: sistema -- attivato localmente
+ 3: -- non definito
+ 4: sistema -- caricato
+ 5: sistema -- sconosciuto
+ 6: tavolozza -- resa disponibile
+ 7: tavolozza -- non disponibile
+ 8: specifica -- del colore -- convertita in nero
+ 9: spazio dei colori -- non supportato
+ 10: spazio dei colori -- supportato
+ 11: il colore è convertito in grigio
+\stopmessages
+
+\startmessages norwegian library: colors
+ title: farge
+ 1: system -- er aktivert globalt
+ 2: system -- er aktivert lokalt
+ 3: -- er udefinert
+ 4: system -- er lest inn
+ 5: ukjent system --
+ 6: palett -- er tilgjengelig
+ 7: palett -- er ikke tilgjengelig
+ 8: spesifikasjon -- for farge -- gir kun svart
+ 9: -- fargerom er ikke støttet
+ 10: -- fargerom er støttet
+ 11: fargen vil bli vist som grå
+\stopmessages
+
%D \macros
%D {definecolor}
%D
@@ -256,7 +286,7 @@
\newif\ifRGBsupported
\newif\ifCMYKsupported
-\newif\ifconverttoGRAY
+\newif\ifconverttoGRAY % obsolete
\newif\ifpreferGRAY
\newif\ifGRAYprefered
\newif\ifreduceCMYK
@@ -272,14 +302,19 @@
%D Color modes are entered using the next set of commands.
%D The \type{\stop} alternatives are implemented in a way
-%D that permits non||grouped use.
+%D that permits non||grouped use.
+%D
+%D The, for this module redundant, check if we are in color
+%D mode is needed when we use these macros in other modules.
\def\dostartcolormodeR#1:#2:#3\od%
{\bgroup
- \def\@@cl@@r{#1}\def\@@cl@@g{#2}\def\@@cl@@b{#3}%
+ %\def\@@cl@@r{#1}\def \@@cl@@g{#2}\def \@@cl@@b{#3}%
+ \edef\@@cl@@r{#1}\edef\@@cl@@g{#2}\edef\@@cl@@b{#3}%
\ifpreferGRAY\ifx\@@cl@@r\@@cr@@g\ifx\@@cl@@r\@@cl@@b
\GRAYpreferedtrue
\fi\fi\fi
+ \ifincolor\else\RGBsupportedfalse\CMYKsupportedfalse\fi
\ifGRAYprefered
\dostartgraycolormode\@@cl@@r
\else\ifRGBsupported
@@ -295,10 +330,12 @@
\def\dostartcolormodeC#1:#2:#3:#4\od%
{\bgroup
- \def\@@cl@@c{#1}\def\@@cl@@m{#2}\def\@@cl@@y{#3}\def\@@cl@@k{#4}%
+ %\def\@@cl@@c{#1}\def \@@cl@@m{#2}\def \@@cl@@y{#3}\def \@@cl@@k{#4}%
+ \edef\@@cl@@c{#1}\edef\@@cl@@m{#2}\edef\@@cl@@y{#3}\edef\@@cl@@k{#4}%
\ifpreferGRAY\ifx\@@cl@@k\@@cl@@z\ifx\@@cl@@c\@@cr@@m\ifx\@@cl@@c\@@cl@@y
\GRAYpreferedtrue
\fi\fi\fi\fi
+ \ifincolor\else\RGBsupportedfalse\CMYKsupportedfalse\fi
\ifGRAYprefered
\dostartgraycolormode\@@cl@@c
\else\ifCMYKsupported
@@ -336,13 +373,15 @@
{\getvalue{dostartcolormode#1}}
\def\startcolormode#1%
- {\doifcolorelse{#1}
- {\getcurrentcolorspecs{#1}%
- \expandafter\dostartcolormode\currentcolorspecs\od}
- {\dostopcolormode}}
+ {\ifincolor
+ \doifcolorelse{#1}
+ {\getcurrentcolorspecs{#1}%
+ \expandafter\dostartcolormode\currentcolorspecs\od}
+ {\dostopcolormode}%
+ \fi}
\def\stopcolormode%
- {\dostopcolormode}
+ {\ifincolor\dostopcolormode\fi}
%D We use some reserved names for local color components.
%D Consistent use of these scratch variables saves us
@@ -429,15 +468,25 @@
\doconvertRGBtoCMYK#3\to\@@cl@@y
\let\@@cl@@k=\@@cl@@z}
+%D The following switch is mainly meant for (hidden)
+%D documentation purposes.
+
+\newif\ifweightGRAY \weightGRAYtrue
+
+\def\nGRAYfactor{333.333}
+\def\rGRAYfactor{\ifweightGRAY300\else\nGRAYfactor\fi}
+\def\gGRAYfactor{\ifweightGRAY590\else\nGRAYfactor\fi}
+\def\bGRAYfactor{\ifweightGRAY110\else\nGRAYfactor\fi}
+
\def\convertRGBtoGRAY#1#2#3%
{\scratchdimen=#1\s!pt
- \scratchdimen=300\scratchdimen
+ \scratchdimen=\rGRAYfactor\scratchdimen
\scratchcounter=\scratchdimen
\scratchdimen=#2\s!pt
- \scratchdimen=590\scratchdimen
+ \scratchdimen=\gGRAYfactor\scratchdimen
\advance\scratchcounter by \scratchdimen
\scratchdimen=#3\s!pt
- \scratchdimen=110\scratchdimen
+ \scratchdimen=\bGRAYfactor\scratchdimen
\advance\scratchcounter by \scratchdimen
\advance\scratchcounter by \!!medcard
\divide\scratchcounter by \!!maxcard
@@ -1476,27 +1525,28 @@
\def\MPcolor#1%
{\ifMPgraphics
- \@EA\@EA\@EA\doMPcolor\csname\??cr#1\endcsname::::\end
+ \@EA\@EA\@EA\doMPcolor\csname\??cr#1\endcsname:::::\end
\else
#1%
\fi}
-\def\doMPcolor#1:#2:#3:#4:#5\end%
+\def\doMPcolor#1:#2:#3:#4:#5:#6\end%
{\if #1R(#2,#3,#4)%
- \else\if#1C(1-#2+#5,1-#3+#5,1-#4+#5)%
+ \else\if#1C(1-#2-#5,1-#3-#5,1-#4-#5)%
+% \else\if#1C(1-#2+#5,1-#3+#5,1-#4+#5)%
\else\if#1S(#2,#2,#2)%
\else (0,0,0)%
\fi\fi\fi}
-
+
%D \macros
%D {PDFcolor,FDFcolor}
%D
%D Similar alternatives are avaliable for \PDF:
\def\PDFcolor#1%
- {\@EA\@EA\@EA\doPDFcolor\csname\??cr#1\endcsname::::\end}
+ {\@EA\@EA\@EA\doPDFcolor\csname\??cr#1\endcsname:::::\end}
-\def\doPDFcolor#1:#2:#3:#4:#5\end%
+\def\doPDFcolor#1:#2:#3:#4:#5:#6\end%
{\if #1R#2 #3 #4 rg%
\else\if#1C#2 #3 #4 #5 k%
\else\if#1S#2 g%
@@ -1504,9 +1554,9 @@
\fi\fi\fi}
\def\FDFcolor#1%
- {\@EA\@EA\@EA\doFDFcolor\csname\??cr#1\endcsname::::\end}
+ {\@EA\@EA\@EA\doFDFcolor\csname\??cr#1\endcsname:::::\end}
-\def\doFDFcolor#1:#2:#3:#4:#5\end%
+\def\doFDFcolor#1:#2:#3:#4:#5:#6\end%
{[\if #1R#2 #3 #4%
\else\if#1C#2 #3 #4 #5%
\else\if#1S#2%
diff --git a/tex/context/base/colo-rgb.tex b/tex/context/base/colo-rgb.tex
index 19934eee7..0b5a7de1c 100644
--- a/tex/context/base/colo-rgb.tex
+++ b/tex/context/base/colo-rgb.tex
@@ -54,9 +54,9 @@
\definecolor [darkyellow] [r=.8, g=.8, b=.6]
\definecolor [middleyellow] [r=1, g=1, b=.2]
-\definecolor [darkgray] [r=.5, g=.5, b=.5]
-\definecolor [middlegray] [r=.7, g=.7, b=.7]
-\definecolor [lightgray] [r=.9, g=.9, b=.9]
+\definecolor [darkgray] [s=.5]
+\definecolor [middlegray] [s=.7]
+\definecolor [lightgray] [s=.9]
%D These colors are mapped to interface dependant colornames.
@@ -112,6 +112,7 @@
\definecolor [gelb] [yellow]
\definecolor [weiss] [white]
+ \definecolor [grau] [gray]
\definecolor [schwarz] [black]
\definecolor [dunkelrot] [darkred]
@@ -143,44 +144,87 @@
\startinterface czech
- \definecolor [cervena] [red]
- \definecolor [zelena] [green]
- \definecolor [modra] [blue]
+ \definecolor [cervena] [red]
+ \definecolor [zelena] [green]
+ \definecolor [modra] [blue]
- \definecolor [azurova] [cyan]
- \definecolor [fialova] [magenta]
- \definecolor [zluta] [yellow]
+ \definecolor [azurova] [cyan]
+ \definecolor [fialova] [magenta]
+ \definecolor [zluta] [yellow]
- \definecolor [bila] [white]
- \definecolor [cerna] [black]
+ \definecolor [bila] [white]
+ \definecolor [cerna] [black]
- \definecolor [tmavecervena] [darkred]
- \definecolor [strednecervena][middlered]
- \definecolor [svetlecervena] [lightred]
+ \definecolor [tmavecervena] [darkred]
+ \definecolor [strednecervena] [middlered]
+ \definecolor [svetlecervena] [lightred]
- \definecolor [tmavezelena] [darkgreen]
- \definecolor [strednezelena] [middlegreen]
- \definecolor [svetlezelena] [lightgreen]
+ \definecolor [tmavezelena] [darkgreen]
+ \definecolor [strednezelena] [middlegreen]
+ \definecolor [svetlezelena] [lightgreen]
- \definecolor [tmavemodra] [darkblue]
- \definecolor [strednemodra] [middleblue]
- \definecolor [svetlemodra] [lightblue]
+ \definecolor [tmavemodra] [darkblue]
+ \definecolor [strednemodra] [middleblue]
+ \definecolor [svetlemodra] [lightblue]
- \definecolor [tmaveazurova] [darkcyan]
- \definecolor [stredneazurova][middlecyan]
+ \definecolor [tmaveazurova] [darkcyan]
+ \definecolor [stredneazurova] [middlecyan]
- \definecolor [tmavefialova] [darkmagenta]
- \definecolor [strednefialova][middlemagenta]
+ \definecolor [tmavefialova] [darkmagenta]
+ \definecolor [strednefialova] [middlemagenta]
- \definecolor [tmavezluta] [darkyellow]
- \definecolor [strednezluta] [middleyellow]
+ \definecolor [tmavezluta] [darkyellow]
+ \definecolor [strednezluta] [middleyellow]
- \definecolor [tmaveseda] [darkgray]
- \definecolor [stredneseda] [middlegray]
- \definecolor [svetleseda] [lightgray]
+ \definecolor [tmaveseda] [darkgray]
+ \definecolor [stredneseda] [middlegray]
+ \definecolor [svetleseda] [lightgray]
\stopinterface
+\startinterface italian
+
+ \definecolor [rosso] [red]
+ \definecolor [verde] [green]
+ \definecolor [blu] [blue]
+
+ \definecolor [cyan] [cyan]
+ \definecolor [magenta] [magenta]
+ \definecolor [giallo] [yellow]
+
+ \definecolor [bianco] [white]
+ \definecolor [grigio] [gray]
+ \definecolor [nero] [black]
+
+ \definecolor [rossoscuro] [darkred]
+ \definecolor [rossomedio] [middlered]
+ \definecolor [rossochiaro] [lightred]
+
+ \definecolor [verdescuro] [darkgreen]
+ \definecolor [verdemedio] [middlegreen]
+ \definecolor [verdechiaro] [lightgreen]
+
+ \definecolor [bluscuro] [darkblue]
+ \definecolor [blumedio] [middleblue]
+ \definecolor [bluchiaro] [lightblue]
+
+ \definecolor [cyanscuro] [darkcyan]
+ \definecolor [cyanchiaro] [middlecyan]
+
+ \definecolor [magentascuro] [darkmagenta]
+ \definecolor [magentachiaro] [middlemagenta]
+
+
+ \definecolor [gialloscuro] [darkyellow]
+ \definecolor [giallomedio] [middleyellow]
+
+ \definecolor [grigioscuro] [darkgray]
+ \definecolor [grigiomedio] [middlegray]
+ \definecolor [grigiochiaro] [lightgray]
+
+\stopinterface
+
+
%D Like colors, we first define the english colorgroups. These
%D colorgroups are tuned for distinctive gray scale printing.
@@ -340,19 +384,34 @@
\stopinterface
\startinterface czech
- \definecolorgroup [seda] [gray]
- \definecolorgroup [cervena] [red]
- \definecolorgroup [zelena] [green]
- \definecolorgroup [modra] [blue]
- \definecolorgroup [azurova] [cyan]
- \definecolorgroup [fialova] [magenta]
- \definecolorgroup [zluta] [yellow]
- \definecolorgroup [cervena*][red*]
- \definecolorgroup [zelena*] [green*]
- \definecolorgroup [modra*] [blue*]
- \definecolorgroup [zluta*] [yellow*]
+ \definecolorgroup [seda] [gray]
+ \definecolorgroup [cervena] [red]
+ \definecolorgroup [zelena] [green]
+ \definecolorgroup [modra] [blue]
+ \definecolorgroup [azurova] [cyan]
+ \definecolorgroup [fialova] [magenta]
+ \definecolorgroup [zluta] [yellow]
+ \definecolorgroup [cervena*] [red*]
+ \definecolorgroup [zelena*] [green*]
+ \definecolorgroup [modra*] [blue*]
+ \definecolorgroup [zluta*] [yellow*]
\stopinterface
+\startinterface italian
+ \definecolorgroup [grigio] [gray]
+ \definecolorgroup [rosso] [red]
+ \definecolorgroup [verde] [green]
+ \definecolorgroup [blu] [blue]
+ \definecolorgroup [ciano] [cyan]
+ \definecolorgroup [magenta] [magenta]
+ \definecolorgroup [giallo] [yellow]
+ \definecolorgroup [rosso*] [red*]
+ \definecolorgroup [verde*] [green*]
+ \definecolorgroup [blu*] [blue*]
+ \definecolorgroup [giallo*] [yellow*]
+\stopinterface
+
+
%D The next set of color palets is quite language independant.
%D These palets are meant as examples.
diff --git a/tex/context/base/cont-cz.tex b/tex/context/base/cont-cz.tex
index e2ba2b56e..05ac01287 100644
--- a/tex/context/base/cont-cz.tex
+++ b/tex/context/base/cont-cz.tex
@@ -28,8 +28,4 @@
\setupbodyfont [csr,rm,12pt]
-\protect
-
-\dump
-
-\endinput
+\protect \errorstopmode \dump \endinput
diff --git a/tex/context/base/cont-de.tex b/tex/context/base/cont-de.tex
index eb0ab22c4..2e410fd54 100644
--- a/tex/context/base/cont-de.tex
+++ b/tex/context/base/cont-de.tex
@@ -25,15 +25,11 @@
\installlanguage [\s!uk] [\c!status=\v!start]
\installlanguage [\s!de] [\c!status=\v!start]
\installlanguage [\s!fr] [\c!status=\v!start]
-\installlanguage [\s!sp] [\c!status=\v!start]
+\installlanguage [\s!es] [\c!status=\v!start]
\installlanguage [\s!nl] [\c!status=\v!start]
\installlanguage [deo] [\c!status=\v!start]
\setupbodyfont [cmr,rm,12pt]
-\protect
-
-\dump
-
-\endinput
+\protect \errorstopmode \dump \endinput
diff --git a/tex/context/base/cont-en.tex b/tex/context/base/cont-en.tex
index 544876940..a0ff80769 100644
--- a/tex/context/base/cont-en.tex
+++ b/tex/context/base/cont-en.tex
@@ -25,13 +25,9 @@
\installlanguage [\s!uk] [\c!status=\v!start]
\installlanguage [\s!de] [\c!status=\v!start]
\installlanguage [\s!fr] [\c!status=\v!start]
-\installlanguage [\s!sp] [\c!status=\v!start]
+\installlanguage [\s!es] [\c!status=\v!start]
\installlanguage [\s!nl] [\c!status=\v!start]
\setupbodyfont [cmr,rm,12pt]
-\protect
-
-\dump
-
-\endinput
+\protect \errorstopmode \dump \endinput
diff --git a/tex/context/base/cont-fil.tex b/tex/context/base/cont-fil.tex
index 0f68ef860..2d27b9dad 100644
--- a/tex/context/base/cont-fil.tex
+++ b/tex/context/base/cont-fil.tex
@@ -13,7 +13,7 @@
\writestatus{loading}{Context File Synonyms}
-\definefilesynonym [chemie] [chemic]
+\definefilesynonym [chemie] [chemic]
\definefilesynonym [unit] [units]
\definefilesynonym [eenheid] [units]
@@ -23,23 +23,31 @@
\definefilesynonym [pre-general] [pre-00]
-\definefilesynonym [pre-original] [pre-01]
-\definefilesynonym [pre-green] [pre-02]
-\definefilesynonym [pre-funny] [pre-03]
-\definefilesynonym [pre-colorful] [pre-04]
-\definefilesynonym [pre-fuzzy] [pre-05]
-\definefilesynonym [pre-polish] [pre-06]
+\definefilesynonym [pre-original] [pre-01] % public
+\definefilesynonym [pre-green] [pre-02] % public
+\definefilesynonym [pre-funny] [pre-03] % public
+\definefilesynonym [pre-colorful] [pre-04] % public
+\definefilesynonym [pre-fuzzy] [pre-05] % public
+\definefilesynonym [pre-polish] [pre-06] % public
\definefilesynonym [pre-spider] [pre-07]
-\definefilesynonym [pre-split] [pre-08]
+\definefilesynonym [pre-wonder] [pre-08]
\definefilesynonym [pre-windows] [pre-09]
\definefilesynonym [pre-grow] [pre-10]
\definefilesynonym [pre-stack] [pre-11]
\definefilesynonym [pre-arrows] [pre-12]
\definefilesynonym [pre-writing] [pre-13]
-\definefilesynonym [pre-wonder] [pre-14]
-\definefilesynonym [pre-balls] [pre-15]
+\definefilesynonym [pre-split] [pre-14]
+\definefilesynonym [pre-balls] [pre-15] % public
\definefilesynonym [pre-knot] [pre-16]
-
+
+% [pre-17] % experimental
+% [pre-18] % experimental
+
+\definefilesynonym [pre-organic] [pre-19]
+\definefilesynonym [pre-super] [pre-20]
+\definefilesynonym [pre-zoom] [pre-21]
+\definefilesynonym [pre-cycle] [pre-22]
+
\definefilesynonym [abr-pseudocaps] [abr-01]
\definefilesynonym [abr-smallcaps] [abr-02]
diff --git a/tex/context/base/cont-it.tex b/tex/context/base/cont-it.tex
new file mode 100644
index 000000000..b5b020644
--- /dev/null
+++ b/tex/context/base/cont-it.tex
@@ -0,0 +1,34 @@
+%D \module
+%D [ file=cont-en,
+%D version=1997.08.19,
+%D title=\CONTEXT,
+%D subtitle=\CONTEXT\ English Format Generation,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\catcode`\{=1 \catcode`\}=2 \def\defaultinterface{italian}
+
+\input context.tex
+
+\unprotect
+
+\setupcurrentlanguage[\s!it]
+
+\loaduserspecifications
+
+\installlanguage [\s!en] [\c!status=\v!start]
+%\installlanguage [\s!uk] [\c!status=\v!start]
+\installlanguage [\s!de] [\c!status=\v!start]
+\installlanguage [\s!fr] [\c!status=\v!start]
+%\installlanguage [\s!es] [\c!status=\v!start]
+\installlanguage [\s!it] [\c!status=\v!start]
+%\installlanguage [\s!nl] [\c!status=\v!start]
+
+\setupbodyfont [cmr,rm,12pt]
+
+\protect \errorstopmode \dump \endinput
diff --git a/tex/context/base/cont-log.tex b/tex/context/base/cont-log.tex
index 1aecd0efd..8fd0774f1 100644
--- a/tex/context/base/cont-log.tex
+++ b/tex/context/base/cont-log.tex
@@ -38,7 +38,7 @@
\kern-.125emX}
\def\ConTeXt%
- {C%
+ {C%
\CMRkern-.0333emo%
\CMRkern-.0333emn%
\CMRkern-.0333em\TeX%
@@ -98,14 +98,26 @@
10 at \currentfontscale\bodyfontsize
\logofont}
+%\unexpanded\def\MetaFont%
+% {\hbox{\setMFPfont METAFONT}}
+%
+%\unexpanded\def\MetaPost%
+% {\hbox{\setMFPfont METAPOST}}
+
+\def\MetaHyphen% there is no hyphenchar in this font
+ {\discretionary{\vrule\!!height.33em\!!depth-.27em\!!width.33em}{}{}}
+
\unexpanded\def\MetaFont%
- {{\setMFPfont METAFONT}}
+ {{\setMFPfont META\MetaHyphen FONT}}
\unexpanded\def\MetaPost%
- {{\setMFPfont METAPOST}}
+ {{\setMFPfont META\MetaHyphen POST}}
+
+\unexpanded\def\MetaFun%
+ {MetaFun}
%D \macros
-%D {TEX, METAFONT, METAPOST,
+%D {TEX, METAFONT, METAPOST, METAFUN,
%D PICTEX, TABLE,
%D CONTEXT, PPCHTEX,
%D AMSTEX, LATEX, LAMSTEX}
@@ -119,6 +131,7 @@
\def\METAPOST {\MetaPost}
\def\PPCHTEX {\PPCHTeX}
\def\CONTEXT {\ConTeXt}
+\def\METAFUN {\MetaFun}
\def\TEX {\TeX}
\def\LATEX {\LaTeX}
@@ -142,9 +155,9 @@
%D Some placeholders:
-\def\eTeX {\mathematics{\varepsilon}-\TEX}
-\def\pdfTeX {pdf\TEX}
-\def\pdfeTeX {pdfe-\TEX}
+\def\eTeX {\mathematics{\varepsilon}-\TeX}
+\def\pdfTeX {pdf\TeX}
+\def\pdfeTeX {pdfe-\TeX}
\let\ETEX \eTeX
\let\PDFTEX \pdfTeX
diff --git a/tex/context/base/cont-new.tex b/tex/context/base/cont-new.tex
index ef0d14211..b33c6cc56 100644
--- a/tex/context/base/cont-new.tex
+++ b/tex/context/base/cont-new.tex
@@ -18,223 +18,33 @@
\writestatus{\m!systems}{beware: some patches loaded from cont-new.tex!}
-%D Hm. Needed for low level calls, like in verbatim.
-
-\def\startcolormode#1%
- {\ifincolor
- \doifcolorelse{#1}
- {\getcurrentcolorspecs{#1}%
- \expandafter\dostartcolormode\currentcolorspecs\od}
- {\dostopcolormode}%
- \fi}
-
-\def\stopcolormode%
- {\ifincolor\dostopcolormode\fi}
-
-%D New table stuff.
-
-\readfile{supp-ali}{}{} % alignment stuff
-\readfile{core-ntb}{}{} % new table mechanism
-
-\ifx\alignmentclass\undefined \else % [|lg{.}|] \NG 12.34 \NC
-
-\gdef\handletabulatecharalign#1 % space delimited !
- {\edef\alignmentclass{\tabulatecolumn}%
- \edef\alignmentcharacter{\getvalue{\@@tabalign@@\tabulatecolumn}}%
- \ifcase\tabulatepass\or
- \setfirstpasscharacteralign\checkalignment{#1}%
- \fi % force hsize
- \setsecondpasscharacteralign\checkalignment{#1}}
-
-\fi
-
-%D A funny (but rather stupid) one.
-
-\def\removebottomthings%
- {\dorecurse{5}{\unskip\unkern\unpenalty}}
-
-%D We also support broad here:
-
-\def\dosetraggedcommand#1%
- {\expanded{\dodosetraggedcommand{#1}}}
-
-\def\dodosetraggedcommand#1%
- {\doifinsetelse{\v!ruim} {#1}{\!!doneatrue}{\!!doneafalse}%
- \doifinsetelse{\v!breed}{#1}{\!!donebtrue}{\!!donebfalse}%
- \let\raggedcommand\relax
- \let\raggedtopcommand\empty
- \let\raggedbottomcommand\empty
- \ExpandFirstAfter\processallactionsinset
- [#1]
- [ \v!links=>\if!!donea \def\raggedcommand{\veryraggedleft}%
- \else \def\raggedcommand{\raggedleft}%
- \fi,
- \v!rechts=>\if!!donea \def\raggedcommand{\veryraggedright}%
- \else \def\raggedcommand{\raggedright}%
- \fi,
- \v!midden=>\if!!doneb \def\raggedcommand{\raggedwidecenter}%
- \else\if!!donea \def\raggedcommand{\veryraggedcenter}%
- \else \def\raggedcommand{\raggedcenter}%
- \fi\fi,
- \v!hoog=>\let\raggedbottomcommand\vfilll, % bonus, pretty strong
- \v!laag=>\let\raggedtopcommand \vfilll, % used with \framed
- \v!nee=>\def\raggedcommand{\raggedright},
- \v!ja=>\let\raggedcommand\relax,
- \v!normaal=>\let\raggedcommand\relax]}
-
-%D Sometimes a capstrut comes in handy
-%D
-%D \starttabulatie[|Tl|l|l|]
-%D \NC yes \NC normal strut \NC {\toonstruts\setupstrut[ja]\strut} \NC \NR
-%D \NC no \NC no strut \NC {\toonstruts\setupstrut[nee]\strut} \NC \NR
-%D \NC kap \NC a capital strut (i.e. Q) \NC {\toonstruts\setupstrut[kap]\strut} \NC \NR
-%D \NC A B \unknown \NC a character strut (e.g. A) \NC {\toonstruts\setupstrut[A]\strut} \NC \NR
-%D \NC \NC a normal strut \NC {\toonstruts\setupstrut\strut} \NC \NR
-%D \stoptabulatie
-
-\def\setstrut%
- {\setstrutdimen\strutheight\strutheightfactor\spacingfactor
- \setstrutdimen\strutdepth \strutdepthfactor \spacingfactor
- \dosetstrut}
-
-\def\setcharstrut#1%
- {\setbox\strutbox=\hbox{#1}%
- \edef\strutheight{\the\ht\strutbox}%
- \edef\strutdepth {\the\dp\strutbox}%
- \dosetstrut}
-
-\def\setcapstrut% could be M, but Q has descender
- {\setcharstrut{Q}}
-
-\def\setupstrut%
- {\dosingleempty\dosetupstrut}
-
-\def\dosetupstrut[#1]%
- {\processaction
- [#1]
- [ \v!ja=>\setstrut,
- \v!nee=>\setnostrut,
- \v!kap=>\setcapstrut,
- \s!default=>\setstrut,
- \s!unknown=>\setcharstrut{\commalistelement}]}
-
-%D Centered looks nicer:
-
-\def\dosetstrut%
- {\let\strut=\normalstrut
- \setbox\strutbox=\normalhbox
- {\normalhbox to \!!zeropoint
- {% \hss % new, will be option
- \vrule
- \!!width \strutwidth
- \!!height\strutheight
- \!!depth \strutdepth
- \hss}}}
-
-%D in case of no color we don't want to see the rules
-
-\def\dophantombox#1\\{\hphantom{\dofilledbox#1\\}}
-
-\def\raster[#1]%
- {\groupedcommand{\startraster[#1]}{\stopraster}}
-
-\def\setgraybox\width#1\height#2\depth#3\raster#4\corner#5\radius#6\\%
- {\doifelsenothing{#4}
- {\dophantombox\width#1\height#2\depth#3\corner#5\radius#6\\}
- {\raster[#4]%
- {\dofilledbox \width#1\height#2\depth#3\corner#5\radius#6\\}}}
-
-\def\setcolorbox\width#1\height#2\depth#3\color#4\corner#5\radius#6\\%
- {\ifincolor
- \doifcolorelse{#4}{\color[#4]%
- {\dofilledbox \width#1\height#2\depth#3\corner#5\radius#6\\}}
- {\dophantombox\width#1\height#2\depth#3\corner#5\radius#6\\}%
+%D Interesting, saves keystrokes, but also dangerous.
+
+%\def\checkMPbackground%
+% {\doifoverlayelse\currentbackground
+% {}
+% {\doifMPgraphicelse\currentbackground
+% {\defineoverlay[\currentbackground][\useMPgraphic{\currentbackground}]}
+% {}}}
+%
+%\appendtoks \checkMPbackground \to \everybackgroundbox
+
+%D Better (no zero dimension mp figs) and faster:
+
+\def\dododopagebodybackground#1#2#3#4%
+ {\ifsomebackgroundfound{#3#4}%
+ \ifdim#1>\!!zeropoint\relax
+ \ifdim#2>\!!zeropoint\relax
+ \localframed
+ [\??ma#3#4]
+ [\c!breedte=#1,\c!hoogte=#2,\c!offset=\v!overlay]
+ {\getvalue{\??ma#3#4\c!commando}}% {\hsize=#1\vsize=#2....}
+ \fi
+ \fi
\else
- \dophantombox\width#1\height#2\depth#3\corner#5\radius#6\\%
+ \hskip#1%
\fi}
-%D more and more
-
-\def\lhbox{\dowithnextbox{\hbox to \hsize{\box\nextbox\hss }}\hbox}
-\def\mhbox{\dowithnextbox{\hbox to \hsize{\hss\box\nextbox\hss}}\hbox}
-\def\rhbox{\dowithnextbox{\hbox to \hsize{\hss\box\nextbox }}\hbox}
-
-\let\lefthbox =\lhbox
-\let\midhbox =\mhbox
-\let\righthbox=\rhbox
-
-%D to be tested
-
-\def\docomplexuit[#1::#2]%
- {\dontleavehmode % added, but probably not needed
- \bgroup
- \doifdefinedelse{\v!file:::#1}
- {\def\doexternaldocument[##1][##2][##3]%
- {\naar{##3}[#1::#2]}%
- \getvalue{\v!file:::#1}}
- {\tttf[#1]}%
- \egroup}
-
-%D Makes sense:
-
-\def\removelastskip% \ifvmode the plain tex one \fi
- {\ifvmode\ifdim\lastskip=\z@\else\vskip-\lastskip\fi\fi}
-
-%D More hyphention control, will be combined with hz setup.
-
-\def\nohyphens%
- {\ifx\dohyphens\relax
- \edef\dohyphens%
- {\hyphenpenalty\the\hyphenpenalty
- \exhyphenpenalty\the\exhyphenpenalty\relax}%
- \fi
- \hyphenpenalty\@M\exhyphenpenalty\@M}
-
-\let\dohyphens\relax
-
-%D Better (a mere copy with \dohyphens):
-
-\bgroup \catcode`\~=\active \catcode`\/=\active
-
-\unexpanded\gdef\hyphenatedurl#1% {}{} handles accents
- {\bgroup
- \ifnum\hyphenpenalty<10000 \else
- \def\discretionary##1##2##3{##1\allowbreak##2}%
- \fi
- \obeyhyphens
- \def\splitbefore##1%
- {\setbox\scratchbox=\hbox{##1{}{}}%
- \ifcase\urlsplitmode
- \box\scratchbox
- \or
- \postwordbreak\box\scratchbox\prewordbreak
- \or
- \prewordbreak\discretionary{\box\scratchbox}{}{\box\scratchbox}\prewordbreak
- \else
- \postwordbreak\box\scratchbox\prewordbreak
- \fi}%
- \def\splitafter##1%
- {\ifcase\urlsplitmode
- ##1{}{}%
- \or
- \prewordbreak\discretionary{##1{}{}}{}{##1{}{}}\prewordbreak
- \or
- \prewordbreak\discretionary{##1{}{}}{}{##1{}{}}\prewordbreak
- \else
- \prewordbreak\discretionary{}{##1{}{}}{##1{}{}}\prewordbreak
- \fi}%
- \def\flushurl%
- {\savedurl\let\savedurl\empty}%
- \def\\%
- {\spliturl\#}%
- \let\~=\tildeletter \let~=\~%
- \let\/=\slashletter \let/=\/%
- \let\savedurl\empty
- \handletokens#1\with\scanurl
- \egroup}
-
-\egroup
-
%D A prelude to strategies. Note for myself: overloads
%D previous stuff from local pragma test files.
@@ -291,9 +101,11 @@
\def\doifstrategyvariable #1#2{\doifstrategyvariableelse{#1}{#2}{}}
\def\doifnotstrategyvariable#1#2{\doifstrategyvariableelse{#1}{}{#2}}
-%D New: only at start of columns; may change !
+%D New: only at start of columns; may change ! Rather
+%D interwoven and therefore to be integrated when the multi
+%D column modules are merged.
-\definesystemvariable {ks} % KolomSpan
+% already taken care of: \definesystemvariable{ks}
\def\setupcolumnspan[#1]%
{\getparameters[\??ks][#1]}
@@ -312,16 +124,14 @@
{\bgroup
\setupcolumnspan[#1]%
\forgetall
-%
- \ifbinnenkolommen
- \advance\hsize by \intercolumnwidth
- \hsize=\@@ksn\hsize
- \advance\hsize by -\intercolumnwidth
- \fi
-%
+ \ifbinnenkolommen
+ \advance\hsize by \intercolumnwidth
+ \hsize=\@@ksn\hsize
+ \advance\hsize by -\intercolumnwidth
+ \fi
\dowithnextbox
{\setbox\columnspanbox=\box\nextbox
-\ifbinnenkolommen\wd\columnspanbox=\hsize\fi
+ \ifbinnenkolommen\wd\columnspanbox=\hsize\fi
\postprocesscolumnspanbox\columnspanbox
\scratchdimen=\ht\columnspanbox
\setbox\columnspanbox=\hbox % depth to be checked, probably option!
@@ -353,11 +163,6 @@
\prevdepth\dp\strutbox
\egroup}
\vbox\bgroup
-% \ifbinnenkolommen
-% \advance\hsize by \intercolumnwidth
-% \hsize=\@@ksn\hsize
-% \advance\hsize by -\intercolumnwidth
-% \fi
%\topskipcorrection % becomes an option !
\EveryPar{\begstrut\EveryPar{}}} % also !
@@ -367,147 +172,14 @@
\def\stopcolumnspan%
{\egroup}
-%D A test:
-
-\def\EndTableParBox%
- {\removelastskip % added
- %\MakeStrut{0pt}{\StrutDepthFactor\StrutUnit} % removed
-\par
-\ifnum\prevgraf>0
- \strut
- \vskip-\lineheight
-\fi
- \egroup % finishes the \vtop begun by \BeginTableParbox
- \getboxheight\scratchdimen\of\box\scratchbox\relax % added
- \ifdim\scratchdimen>\TABLEparheight % added
- \global\TABLEparheight=\scratchdimen % added
- \fi % added
- \box\scratchbox}
-
-%D A few local optimizations and new features:
-
-\readfile {cont-loc} {} {}
-
-%D For Ton:
+%D For Ton. Do be documented.
\def\plaatsexterndocument[#1]%
{\def\doexternaldocument[##1][##2][##3]%
{\readlocfile{##2}{}{}}%
\getvalue{\v!file:::#1}}
-%D For me:
-
-\beginTEX
-
-\def\p!doifinstringelse#1#2%
- {\def\pp!doifinstringelse##1#1##2##3\war%
- {\csname if\if##2@fals\else tru\fi e\endcsname}%
- \expanded{\pp!doifinstringelse#2#1@@\noexpand\war}} % expand #2 here
-
-\endTEX
-
-\beginETEX \unless
-
-\def\p!doifinstringelse#1#2%
- {\def\pp!doifinstringelse##1#1##2##3\war%
- {\unless\if##2@}%
- \expanded{\pp!doifinstringelse#2#1@@\noexpand\war}} % expand #2 here
-
-\endETEX
-
-%D For Willy's nested commented buffers:
-
-\def\processnextbufferline#1#2#3%
- {\relax % checken waarom eerdere macro dit nodig heeft / supp-mps run
- \convertargument#1 \to\next
- \doifinstringelse{\delcharacter\texcommentsymbol}{\delcharacter\next}
- {\def\next{#3}}
- {\doifinstringelse{\endofblock}{\next}
- {\ifnum\nestedbufferlevel=0\relax % \relax ?
- \def\next{#2}%
- \else
- \decrement\nestedbufferlevel\relax
- \def\next{#3}%
- \fi}
- {\doifinstringelse{\beginofblock}{\next}
- {\increment\nestedbufferlevel\relax
- \def\next{#3}}
- {\def\next{#3}}}}%
- \next}
-
-%D Some day:
-
-% \definieermarkering[\v!margetitel]
-%
-% \def\complexmargewoord[#1][#2]#3%
-% {\doglobal\increment\margincontent
-% \stelinmargein[\margincontent][]% see next macro
-% \@EA\setgvalue\@EA{\@EA\??im\@EA\margincontent\@EA}\@EA
-% {\@EA\stelinmargein\@EA[\margincontent][]% see next macro
-% \flushmargincontent[#1][#2]{#3}%
-% \markeer[\v!margetitel]{#3}}}
-
-%D Undocumented and still under development.
-
-\def\startsimplecolumns%
- {\dosingleempty\dostartsimplecolumns}
-
-\def\dostartsimplecolumns[#1]%
- {\bgroup
- \getparameters[\??kl][\c!breedte=\hsize,\c!afstand=1em,\c!n=2,#1]%
- \setrigidcolumnhsize\@@klbreedte\@@klafstand\@@kln
- \setbox\scratchbox=\vbox\bgroup
- \forgetall} % \blanko[\v!blokkeer]
-
-\def\stopsimplecolumns%
- {\removebottomthings
- \egroup
- \rigidcolumnbalance\scratchbox
- \egroup}
-
-%D Improved:
-
-\newbox\rigidcolumnbox
-
-\def\rigidcolumnbalance#1%
- {\ifnum\rigidcolumns=1 % tzt ook h/d correctie
- \ifinner\ifhmode\box\else\unvbox\fi\else\unvbox\fi#1\relax
- \else
- \vbox
- {\forgetall
- \dontcomplain
- \setbox\rigidcolumnbox=\vbox
- {\line{}\goodbreak\unvbox#1\removebottomthings}%
- \splittopskip=\openstrutheight
- \setbox\scratchbox=\vsplit\rigidcolumnbox to \!!zeropoint
- \scratchdimen=\ht\rigidcolumnbox
- \divide\scratchdimen by \rigidcolumns
- \getnoflines\scratchdimen
- \scratchdimen=\noflines\lineheight
- \setbox\scratchbox=\hbox to \savedrigidhsize
- {\dorecurse{\rigidcolumns}
- {\setbox\scratchbox=\vsplit\rigidcolumnbox to \scratchdimen
- \dp\scratchbox=\openstrutdepth
- \vtop
- \ifalignrigidcolumns to
- \ifstretchrigidcolumns\vsize\else\scratchdimen\fi
- \fi
- {\unvbox\scratchbox}%
- \hfill}%
- \hfillneg}%
- \advance\scratchdimen by -\openstrutdepth
- \setbox\scratchbox\hbox{\raise\scratchdimen\box\scratchbox}
- \dp\scratchbox=\openstrutdepth
- \ht\scratchbox=\scratchdimen
- \box\scratchbox}
- \fi}
-
-%D Is this a better default?
-
-\def\doverbatimgoodbreak%
- {} % instead of {\ifoptimizeverbatim\penalty100\fi}
-
-%D Hm:
+%D Far from complete.
\def\startgeheel%
{\startregelcorrectie
@@ -516,56 +188,12 @@
\def\stopgeheel
{\stopregelcorrectie}
-%D Under construction:
-
-\def\resetpositions%
- {\let\someposition=\gobblesevenarguments % old
- \let\pxypos =\gobblefourarguments % new
- \let\pxywhdpos =\gobblesevenarguments} % new
-
-\resetpositions
-
-%D Some more box stuff, related to positioning (under
-%D construction). Nice stuff for a tips and tricks maps
-%D article.
-%D
-%D \starttypen
-%D \raisebox{100pt}\hbox{test}
-%D \raisebox50pt\hbox{test}
-%D \hsmash{\raisebox{100pt}\hbox{test}}
-%D \stoptypen
-
-\def\doraiselowerbox#1#2% a nice trick us used to accept
- {\def\next% % both direct and {} dimensions
- {\dowithnextbox
- {\setbox\nextbox=\hbox{#1\scratchdimen\box\nextbox}%
- \ht\nextbox=\ht\strutbox
- \dp\nextbox=\dp\strutbox
- \box\nextbox}}%
- \afterassignment\next\scratchdimen=#2}
+%D No more news.
-\def\raisebox{\doraiselowerbox\raise}
-\def\lowerbox{\doraiselowerbox\raise}
-
-%D It's more convenient to use \type {\columnwidth} instead
-%D of messing around with boxes each time.
-
-\newdimen\columnwidth
-\newdimen\gutterwidth
-
-\def\determinecolumnwidth%
- {\bgroup
- \setbox\scratchbox=\hbox
- {\setcolumnhsize
- \global\columnwidth=\usercolumnwidth
- \global\gutterwidth=\intercolumnwidth}%
- \egroup}
-
-%D The next line can be uncommented when Taco's extensions to
-%D \quote {\TEX\ The Program} are used.
+\protect
-% \readfile {syst-eet} {} {}
+%D A few local optimizations and new features, if defined:
-\protect
+\readfile {cont-loc} {} {}
\endinput
diff --git a/tex/context/base/cont-nl.tex b/tex/context/base/cont-nl.tex
index 7b64f597e..2f4d33662 100644
--- a/tex/context/base/cont-nl.tex
+++ b/tex/context/base/cont-nl.tex
@@ -25,13 +25,9 @@
\installlanguage [\s!uk] [\c!status=\v!start]
\installlanguage [\s!de] [\c!status=\v!start]
\installlanguage [\s!fr] [\c!status=\v!start]
-\installlanguage [\s!sp] [\c!status=\v!start]
+\installlanguage [\s!es] [\c!status=\v!start]
\installlanguage [\s!nl] [\c!status=\v!start]
\setupbodyfont [cmr,rm,12pt]
-\protect
-
-\dump
-
-\endinput
+\protect \errorstopmode \dump \endinput
diff --git a/tex/context/base/cont-sys.rme b/tex/context/base/cont-sys.rme
index 0378f95b7..847f51d6b 100644
--- a/tex/context/base/cont-sys.rme
+++ b/tex/context/base/cont-sys.rme
@@ -63,12 +63,22 @@
%
% Enabling run time \METAPOST\ (also enable \write18 in texmf.cnf):
-\runMPgraphicstrue
-\recycleMPslotstrue
+ \runMPgraphicstrue
+\runMPTEXgraphicstrue
+ \recycleMPslotstrue
+\useMETAFUNformattrue
% Enabling nested pretty printing:
-\newprettytrue
+ \newprettytrue
+
+% Protect filenames:
+
+ \protectbufferstrue
+
+% not really needed
+
+% \runutilityfiletrue
% So far.
diff --git a/tex/context/base/cont-uk.tex b/tex/context/base/cont-uk.tex
index e1bb62d9d..cc087c36d 100644
--- a/tex/context/base/cont-uk.tex
+++ b/tex/context/base/cont-uk.tex
@@ -25,7 +25,7 @@
\installlanguage [\s!uk] [\c!status=\v!start]
\installlanguage [\s!de] [\c!status=\v!start]
\installlanguage [\s!fr] [\c!status=\v!start]
-\installlanguage [\s!sp] [\c!status=\v!start]
+\installlanguage [\s!es] [\c!status=\v!start]
\installlanguage [\s!nl] [\c!status=\v!start]
\setupbodyfont [cmr,rm,12pt]
diff --git a/tex/context/base/cont-usr.ori b/tex/context/base/cont-usr.ori
index 161c076c0..a02a01429 100644
--- a/tex/context/base/cont-usr.ori
+++ b/tex/context/base/cont-usr.ori
@@ -39,6 +39,7 @@
\definefilesynonym [lang-no.pat] [nohyph.tex]
\definefilesynonym [lang-pl.pat] [plhyph.tex]
\definefilesynonym [lang-pt.pat] [pthyph.tex]
+\definefilesynonym [lang-ro.pat] [rohyph.tex]
\definefilesynonym [lang-sk.pat] [skhyph.tex]
\definefilesynonym [lang-sp.pat] [sphyph.tex]
\definefilesynonym [lang-sv.pat] [sehyph.tex]
@@ -46,6 +47,20 @@
\definefilesynonym [lang-uk.pat] [ukhyphen.tex]
\definefilesynonym [lang-us.pat] [ushyph1.tex]
+%D When the dutch spelling changed, new patterns were
+%D constructed. For long these were named \type {dutch96.pat}.
+%D From 2000 however, the old \type {nehyph} files were
+%D replaced by \type {nehyph96.tex}. Typical something that
+%D you have to find out by accident. The names of hyphenation
+%D files as well as their coding is one of the dark areas of
+%D \TEX\ distributions.
+
+\doiffileelse{nehyph96.tex}
+ {\definefilesynonym[lang-nl.pat][nehyph96.tex]}
+ {\doiffileelse{dutch96.pat}
+ {\definefilesynonym[lang-nl.pat][dutch96.pat]}
+ {\definefilesynonym[lang-nl.pat][nehyph.tex]}}
+
%D Pattern files are (can be) encoded! And, alas, not all
%D pattern files are self contained, which is why (for the
%D moment) we specify encodings here.
@@ -79,8 +94,9 @@
% \installlanguage [\s!no] [\c!status=\v!start] % norwegian
% \installlanguage [\s!pl] [\c!status=\v!start] % polish
% \installlanguage [\s!pt] [\c!status=\v!start] % portuguese
+% \installlanguage [\s!ro] [\c!status=\v!start] % romanian
% \installlanguage [\s!sk] [\c!status=\v!start] % slovak
-% \installlanguage [\s!sp] [\c!status=\v!start] % spanish
+% \installlanguage [\s!es] [\c!status=\v!start] % spanish
% \installlanguage [\s!sv] [\c!status=\v!start] % swedish
% \installlanguage [\s!tr] [\c!status=\v!start] % turkish
% \installlanguage [\s!uk] [\c!status=\v!start] % english uk
@@ -105,8 +121,9 @@
% \setupcurrentlanguage[\s!no]
% \setupcurrentlanguage[\s!pl]
% \setupcurrentlanguage[\s!pt]
+% \setupcurrentlanguage[\s!ro]
% \setupcurrentlanguage[\s!sk]
-% \setupcurrentlanguage[\s!sp]
+% \setupcurrentlanguage[\s!es]
% \setupcurrentlanguage[\s!sv]
% \setupcurrentlanguage[\s!tr]
@@ -119,6 +136,13 @@
% \definefilesynonym [font-cmr] [font-csr] % czech & slovak
% \definefilesynonym [font-cmr] [font-plr] % polish
+%D In some languages, compound characters, like \type {"e}
+%D are used to get accented and non latin characters.
+
+ \useencoding[fde] % german
+% \useencoding[fro] % romanian
+% \useencoding[fpl] % polish
+
%D Don't remove the next few lines.
\protect \endinput
diff --git a/tex/context/base/context.tex b/tex/context/base/context.tex
index 0c18656cc..098c55493 100644
--- a/tex/context/base/context.tex
+++ b/tex/context/base/context.tex
@@ -13,7 +13,7 @@
\catcode`\{=1 \catcode`\}=2
-\def\contextversion{2000.5.11}
+\def\contextversion{2000.10.22}
%D Welcome to the main module. When this module is ran through
%D \type{initex} or \type{tex -i} or \type{whatevertex} using
@@ -28,6 +28,7 @@
%D minimal as possible.
\input syst-tex.tex
+\input syst-etx.tex
\input syst-gen.tex
\input syst-ext.tex
\input syst-new.tex
@@ -36,6 +37,12 @@
\CONTEXTtrue
+%D In order to conveniently load files, we need a few
+%D support modules.
+
+\input supp-ini.tex
+\input supp-fil.tex
+
%D After this we're ready for the multi||lingual interface
%D modules.
@@ -52,8 +59,6 @@
%D Now we're ready for some general support modules. These
%D modules implement some basic typesetting functionality.
-\input supp-ini.tex
-\input supp-fil.tex
\input supp-box.tex
\input supp-mrk.tex
\input supp-vis.tex
@@ -66,8 +71,14 @@
\input supp-tpi.tex
\input supp-mat.tex
\input supp-ran.tex
+\input supp-ali.tex
-%D Verbatim typestting is implemented in a separate class of
+%D The next module deals with language specific typographic
+%D extensions.
+
+\input typo-ini.tex
+
+%D Verbatim typesetting is implemented in a separate class of
%D modules. The pretty typesetting modules are loaded at run
%D time.
@@ -164,8 +175,19 @@
\input core-pag.tex
\input core-tbl.tex
\input core-mis.tex
-\input core-mps.tex
\input core-int.tex
+\input core-ntb.tex
+
+%D Like languages, fonts, encodings and symbols, \METAPOST\
+%D support is also organized in its own class of modules.
+
+\input meta-ini.tex
+\input meta-pag.tex
+\input meta-fig.tex
+
+%D On which the next one depends:
+
+\input core-pos.tex
%D A few more languages, that have specifics using core
%D functionality:
@@ -198,7 +220,7 @@
\input main-002.tex % still to be split
\input main-003.tex % still to be split
-\input core-fig.tex
+\input core-fig.tex % after page body
\input core-par.tex
%D The next two modules implement some additional
@@ -276,6 +298,21 @@
\stopinterface
+\startinterface italian
+
+\writestring{Questo pacchetto è basato sul Plain TeX. Usa una versione adattata del}
+\writestring{meccanismo di marcatura esteso di J. Fox (1987) ad alcune parti del}
+\writestring{meccanismo per i float laterali di D. Comenetz (1993). La maggior parte}
+\writestring{Plain TeX di D.E. Knuth (\fmtversion) è disponibile e può essere usata}
+\writestring{senza problemi. Questo pacchetto usa TaBlE, un pacchetto progettato e}
+\writestring{con diritti di copia di M.J. Wichura (1988). Solo qualche file ausiliario}
+\writestring{viene generato, alcuni dei quali devono essere elaborati da TeXUtil}
+\writestring{(\utilityversion). La versione attuale del blocco è \blockversion.}
+\writestring{}
+\writestring{L'INTERFACCIA UTENTE ITALIANA E' ANCORA IN VIA DI SVILUPPO!}
+
+\stopinterface
+
\edef\copyrightversion%
{Copyright 1990-\the\normalyear\normalspace /
PRAGMA ADE / J. Hagen - A.F. Otten}
@@ -345,6 +382,15 @@
\stopinterface
+\startinterface italian
+
+ \installlanguage [\s!it] [\c!status=\v!start]
+
+ \appendtoks \language [\s!it] \to \everyjob
+ \appendtoks \mainlanguage [\s!it] \to \everyjob
+
+\stopinterface
+
\protect
%D Finally we load some fonts.
@@ -353,6 +399,6 @@
%D Now dumping the format is all that's left to be done.
-\dump
+\errorstopmode \dump
\endinput
diff --git a/tex/context/base/core-buf.tex b/tex/context/base/core-buf.tex
index 445abc564..431669918 100644
--- a/tex/context/base/core-buf.tex
+++ b/tex/context/base/core-buf.tex
@@ -79,6 +79,38 @@
12: -- preskoceno
\stopmessages
+\startmessages italian library: textblocks
+ title: blocchi di testo
+ 1: nuova versione, seconda passata necessaria
+ 2: scrittura dei blocchi su --
+ 3: lettura dei blocchi da --
+ 4: seconda passata necessaria
+ 5: -- non nascosto
+ 6: -- nascosto ed elaborato
+ 7: -- nascosto
+ 8: -- composto
+ 9: -- non composto
+ 10: -- caricato ed elaborato
+ 11: -- caricato e composto
+ 12: -- saltato
+\stopmessages
+
+\startmessages norwegian library: textblocks
+ title: tekstblokker
+ 1: ny versjon, andre gjennomkjøring nødvendig
+ 2: skriver blokker til --
+ 3: leser blokker fra --
+ 4: andre gjennomkjøring nødvendig
+ 5: -- ikke skjult
+ 6: -- skjult og behandlet
+ 7: -- skjult
+ 8: -- tegnsatt
+ 9: -- ikke tegnsatt
+ 10: -- lest inn og behandlet
+ 11: -- lest inn og tegnsatt
+ 12: -- utelatt
+\stopmessages
+
\unprotect
% PAS OP!
@@ -109,6 +141,12 @@
\fi
\egroup}
+\def\resetbuffer%
+ {\dosingleempty\doresetbuffer}
+
+\def\doresetbuffer[#1]%
+ {\unlinkfile{\TEXbufferfile{\iffirstargument#1\else\jobname\fi}}}
+
% \EveryPar%
% {\doglobal\newcounter\NOfLines}
%
@@ -117,26 +155,25 @@
% \hskip-3em%
% \hbox to 3em{\hss\NOfLines\hskip1em}}
+%D For Willy's nested commented buffers, we need the \type
+%D {\delcharacter} trick.
+
\def\processnextbufferline#1#2#3%
{\relax % checken waarom eerdere macro dit nodig heeft / supp-mps run
\convertargument#1 \to\next
- \ifx\next\emptybufferline
- \ifsegmentatebuffer \emptybufferlinetrue \fi
- \def\next{#3}%
- \else
- \emptybufferlinefalse
- \doifinstringelse{\endofblock}{\next}
- {\ifnum\nestedbufferlevel=0\relax % \relax ?
- \def\next{#2}%
- \else
- \decrement\nestedbufferlevel\relax
- \def\next{#3}%
- \fi}
- {\doifinstringelse{\beginofblock}{\next}
- {\increment\nestedbufferlevel\relax
- \def\next{#3}}
- {\def\next{#3}}}%
- \fi
+ \doifinstringelse{\delcharacter\texcommentsymbol}{\delcharacter\next}
+ {\def\next{#3}}
+ {\doifinstringelse{\endofblock}{\next}
+ {\ifnum\nestedbufferlevel=0\relax % \relax ?
+ \def\next{#2}%
+ \else
+ \decrement\nestedbufferlevel\relax
+ \def\next{#3}%
+ \fi}
+ {\doifinstringelse{\beginofblock}{\next}
+ {\increment\nestedbufferlevel\relax
+ \def\next{#3}}
+ {\def\next{#3}}}}%
\next}
\def\dostartbuffer%
@@ -153,7 +190,7 @@
\next}
\def\dododostartbuffer[#1][#2][#3][#4]%
- {\showmessage{\m!systems}{15}{#2}%
+ {%\showmessage{\m!systems}{15}{#2}%
\doifelsevalue{\??bu#1\c!alinea}{\v!ja}
{\segmentatebuffertrue}
{\doifnumberelse{\getvalue{\??bu#1\c!alinea}}
@@ -175,8 +212,10 @@
\egroup
\getvalue{#4}}%
\doifelsenothing{#2}
- {\immediate\openout\tmpblocks=\TEXbufferfile{\jobname}}
- {\immediate\openout\tmpblocks=\TEXbufferfile{#2}}%
+ {\message{<\TEXbufferfile{\jobname}>}%
+ \immediate\openout\tmpblocks=\TEXbufferfile{\jobname}}
+ {\message{<\TEXbufferfile{#2}>}%
+ \immediate\openout\tmpblocks=\TEXbufferfile{#2}}%
\ifsegmentatebuffer
\immediate\write\tmpblocks{\string\startbufferparagraph}%
\fi
@@ -197,7 +236,7 @@
\def\dobuffer#1[#2]#3%
{\def\dodobuffer##1%
- {\showmessage{\m!systems}{#1}{##1}%
+ {%\showmessage{\m!systems}{#1}{##1}%
\beginrestorecatcodes
\doifdefinedelse{\??bu##1\c!nummer}
{#3{\TEXbufferfile{def-\getvalue{\??bu##1\c!nummer}}}{}{}}
@@ -497,7 +536,7 @@
\endrestorecatcodes}
\def\setupcopyblock%
- {\dostepwiserecurse{1}{255}{1}{\catcode\recurselevel=\@@other}%
+ {\makeallother % \dostepwiserecurse{1}{255}{1}{\catcode\recurselevel=\@@other}%
\obeylines}
\def\writeoutblocks%
@@ -514,13 +553,13 @@
\bgroup
\obeylines
-\gdef\copyblocklineAB#1
+\long\gdef\copyblocklineAB#1
{\processnextblocklineAB{#1}%
{\closeblock}%
{\writeoutblocks{#1}%
\writetmpblock{#1}%
\copyblocklineAB}}
-\gdef\skipblocklineAB#1
+\long\gdef\skipblocklineAB#1
{\processnextblocklineAB{#1}%
{\closeblock}%
{\skipblocklineAB}}
@@ -541,13 +580,13 @@
\bgroup
\obeylines
-\gdef\copyblockline#1
+\long\gdef\copyblockline#1
{\processnextblockline{#1}%
{\closeblock}%
{\writeoutblocks{#1}%
\writetmpblock{#1}%
\copyblockline}}
-\gdef\skipblockline#1
+\long\gdef\skipblockline#1
{\processnextblockline{#1}%
{\closeblock}%
{\skipblockline}}
@@ -856,6 +895,47 @@
\def\beginvanblok[#1]% % er wordt ook gechecked op \eindvanblok[..]
{\getvalue{\e!beginvan#1}}
+
+\def\forceerblokken[#1]%
+ {\def\docommando##1%
+ {\setvalue{\e!beginvan##1}%
+ {\setblocklevel+\bgroup
+ \dodoubleempty\doforceerblok[##1]}%
+ \setvalue{\e!eindvan##1}%
+ {\getvalue{\??tb##1\c!na}%
+ \egroup\setblocklevel-}}%
+ \processcommalist[#1]\docommando}
+
+\def\doforceerblok[#1][#2]%
+ {\doifassignmentelse{#2}
+ {\settrue \blockassignmentstatus}
+ {\setfalse\blockassignmentstatus}%
+ \ifconditional\blockassignmentstatus
+ \dosetupblockparameters[#1][#2]%
+ \fi
+ \getvalue{\??tb#1\c!voor}%
+ \doattributes{\??tb#1}\c!letter\c!kleur{}%
+ \getvalue{\??tb#1\c!binnen}}
+
+\def\passeerblokken[#1]%
+ {\def\docommando##1%
+ {\setvalue{\e!beginvan##1}%
+ {\setblocklevel+\bgroup
+ \obeylines % here, since we look ahead
+ \dodoubleempty\dopasseerblok[##1]}%}%
+ \setvalue{\e!eindvan##1}%
+ {}}%
+ \processcommalist[#1]\docommando}
+
+\def\dopasseerblok[#1][#2]%
+ {\def\closeblock%
+ {\egroup\setblocklevel-}%
+ \checkcopyingblocks
+ \obeylines
+ \@EA\@EA\@EA\convertargument\@EA\string\csname\e!eindvan#1\endcsname\to\endofblockA
+ \@EA\convertargument\string\eindvanblok[#1]\to\endofblockB % MULTI LINGUAL MAKEN
+ \setupcopyblock
+ \skipblocklineAB}
% the buffer mechanism handles nesting, add some switch
diff --git a/tex/context/base/core-con.tex b/tex/context/base/core-con.tex
index b378db9d9..07a3072a8 100644
--- a/tex/context/base/core-con.tex
+++ b/tex/context/base/core-con.tex
@@ -155,6 +155,18 @@
\fi}}
%D \macros
+%D {oldstylenumerals,oldstyleromannumerals}
+%D
+%D These conversions are dedicated to Frans Goddijn.
+
+\unexpanded\def\oldstylenumerals#1%
+ {{\os\number#1}}
+
+\unexpanded\def\oldstyleromannumerals#1%
+ {{\leftrulefalse\rightrulefalse\ss\txx\boxrulewidth=.15ex
+ \ruledhbox spread .15em{\hss\uppercased{\romannumerals{#1}}\hss}}}
+
+%D \macros
%D {protectconversion}
%D
%D The previous two commands are not robust enough to be
@@ -579,6 +591,9 @@
\defineconversion [g] [\greeknumerals]
\defineconversion [G] [\Greeknumerals]
+\defineconversion [o] [\oldstylenumerals]
+\defineconversion [or] [\oldstyleromannumerals]
+
\defineconversion [\v!letter] [\character]
\defineconversion [\v!Letter] [\Character]
diff --git a/tex/context/base/core-dat.tex b/tex/context/base/core-dat.tex
index b9f9b594c..dad330ebd 100644
--- a/tex/context/base/core-dat.tex
+++ b/tex/context/base/core-dat.tex
@@ -37,6 +37,32 @@
4: unbekannte Datei --
\stopmessages
+% TOM :
+
+\startmessages czech library: databases
+ title: databases
+ 1: --
+ 2: local file --
+ 3: global file --
+ 4: unknown file --
+\stopmessages
+
+\startmessages italian library: databases
+ title: database
+ 1: --
+ 2: file locale --
+ 3: file globale --
+ 4: file sconosciuto --
+\stopmessages
+
+\startmessages norwegian library: databases
+ title: databaser
+ 1: --
+ 2: lokal fil --
+ 3: global fil --
+ 4: ukjent fil --
+\stopmessages
+
\unprotect
%D This module is a (limited) rewrite of the original \type
diff --git a/tex/context/base/core-des.tex b/tex/context/base/core-des.tex
index c28867ae2..82799c7b7 100644
--- a/tex/context/base/core-des.tex
+++ b/tex/context/base/core-des.tex
@@ -513,7 +513,7 @@
\doifvaluesomething{\??dd#1\c!koppeling}
{\processaction % genereert > of <
[\getvalue{\??dd#1\c!koppelwijze}]
- [ \v!lokaal=>\chardef\definitiekoppeling=1, % old: default
+ [ \v!lokaal=>\chardef\definitiekoppeling=1, % old: default
\v!globaal=>\chardef\definitiekoppeling=2]}% new: global crosslinking
\fi
\stelnummerin % the number is called indirectly
diff --git a/tex/context/base/core-fig.tex b/tex/context/base/core-fig.tex
index 954f88c12..259acb0b7 100644
--- a/tex/context/base/core-fig.tex
+++ b/tex/context/base/core-fig.tex
@@ -15,6 +15,10 @@
\unprotect
+% tex, tmp, mov and avi will become part of the fuzzy
+% graphics and also behandled by special drivers; the
+% current support is hackery
+
% figurefilemode checken
% zowieso alles checken
% movie scanner
@@ -41,6 +45,7 @@
7: figuurfile -- moet opnieuw worden aangemaakt
8: figuurobject -- wordt opnieuw gebruikt
9: suffix -- bij figuur -- wordt niet afgehandeld
+ 10: figuur -- heeft geen afmetingen
\stopmessages
\startmessages english library: figures
@@ -54,6 +59,7 @@
7: you have to regenerate figure file --
8: figureobject -- is reused
9: suffix -- by figure -- is not handled
+ 10: figure -- has zero dimensions
\stopmessages
\startmessages german library: figures
@@ -67,8 +73,11 @@
7: Sie muessen eine neue Abbildungsdatei -- erstellen
8: Abbildungobjekt -- wurde wiederverwandt
9: Dateiendung -- der Abbildung -- wird nicht unterstuetzt
+ 10: figure -- has zero dimensions
\stopmessages
+% TOBIAS: 10
+
\startmessages czech library: figures
title: obrazy
1: obraz -- nelze nalezt
@@ -80,6 +89,23 @@
7: musite znovu vygenerovat soubor obrazu --
8: obrazovy objekt -- je znovu pouzit
9: pripona -- obrazu -- neni uvazovana
+ 10: figure -- has zero dimensions
+\stopmessages
+
+% TOM : 10
+
+\startmessages italian library: figures
+ title: figure
+ 1: la figura -- non è stata trovata
+ 2: la figura -- non è preimpostata
+ 3: dimensioni della figura -- prese da --
+ 4: dimensioni di -- caricate dal file di immagini stesso
+ 5: dimensioni di -- caricate dal file di immagini --
+ 6: dimensioni di -- calcolate TeXUtil
+ 7: bisogna rigenerare il file di immagini --
+ 8: oggetto-figura -- riutilizzato
+ 9: suffisso -- per figura -- non gestito
+ 10: figura -- ha dimensioni nulle
\stopmessages
%D Due to the mere fact that \DVI|/|\PDF\ drivers differ in their
@@ -203,10 +229,12 @@
\def\dododoanalyzefigurefiles#1%
{\ifcase\figurestatus
\def\@@efcurrentpath{#1}%
-\sanitizefilename#1\to\@@efcurrentpath
+ \sanitizefilename#1\to\@@efcurrentpath
\doiffileinsertionsupportedelse{\@@efcurrenttype}
- {\edef\@@efcurrentfile%
- {\@@efcurrentpath\f!pathseparator\@@effilename.\figureextension{\@@efcurrenttype}}%
+ {\assignfullfilename % needed
+ {\@@efcurrentpath}%
+ {\@@effilename.\figureextension{\@@efcurrenttype}}%
+ \to\@@efcurrentfile%
\dodododoanalyzefigurefiles}
{}%
\fi}
@@ -216,11 +244,14 @@
%D two of course only take place when the first scan fails.
\def\doanalyzefigurefilesA%
- {\doiffileelse{\@@efcurrentfile}
- {\getfiguredimensionsA
- \getfiguredimensionsB
- \getfiguredimensionsC}
- {}}
+ {\ifcase\figurestatus
+ \@@eftrace{locating \@@efcurrentfile\space as \@@efcurrenttype}%
+ \doiffileelse{\@@efcurrentfile}
+ {\getfiguredimensionsA
+ \getfiguredimensionsB
+ \getfiguredimensionsC}
+ {}%
+ \fi}
%D It is possible to let \TEX\ determine the dimensions itself.
%D The next macro shows how such a test is implemented. The
@@ -232,11 +263,9 @@
%D Should be a special!
\def\dogetfiguresizetex#1#2#3#4#5#6% file pagina ...
- {\doifinset{\@@efextension}{\c!tex,\c!tmp}
- {\doifnumberelse{\@@efextension}
- {\executedfalse}
- {\ExpandBothAfter\doifinset{\@@efextension}{\figuretypes}
- {\executedfalse}}}%
+ {\doifinsetelse{\@@efextension}{\c!tex,\c!tmp}
+ {\ifx\@@efcurrentpath\empty\executedfalse\else\executedtrue\fi}
+ {\executedfalse}%
\ifexecuted
\global\setbox\foundexternalfigure=\vbox
{\insidefloattrue
@@ -253,29 +282,38 @@
#4=\!!zeropoint
#5=\wd\foundexternalfigure
#6=\ht\foundexternalfigure
+ \else
+ \@@eftrace{ignored}%
\fi}
\let\dogetfiguresizetmp\dogetfiguresizetex
%D Here we start scanning the other types:
+\def\@@dogetfiguresize{dogetfiguresize}
+
\def\getfiguredimensionsA%
{\ifcase\figurestatus
- \@@eftrace{analyzing \@@efcurrentfile\space as \@@efcurrenttype}%
- \!!widthb=\!!zeropoint
- \executeifdefined{dogetfiguresize\@@efcurrenttype}\gobblesixarguments
- {\@@efcurrentfile}{\@@efpagina}%
- {\!!widtha}{\!!heighta}{\!!widthb}{\!!heightb}%
-% new from here
- \ifdim\!!widtha=\!!zeropoint\relax\ifdim\!!heighta=\!!zeropoint\relax
- \ifdim\!!widthb=\!!zeropoint\relax\ifdim\!!heightb=\!!zeropoint\relax
- \executedfalse % nothing decent found
+ \@@eftrace{analyzing \@@efcurrentfile\space
+ on \@@efcurrentpath\space
+ as \@@efcurrenttype}%
+ \!!widthb=\!!zeropoint % ?
+ \doifdefinedelse{\@@dogetfiguresize\@@efcurrenttype}
+ {\executedtrue
+ \getvalue{\@@dogetfiguresize\@@efcurrenttype}%
+ {\@@efcurrentfile}{\@@efpagina}%
+ {\!!widtha}{\!!heighta}{\!!widthb}{\!!heightb}}
+ {\executedfalse}%
+ \ifexecuted
+ \ifdim\!!widtha=\!!zeropoint\relax\ifdim\!!heighta=\!!zeropoint\relax
+ \ifdim\!!widthb=\!!zeropoint\relax\ifdim\!!heightb=\!!zeropoint\relax
+ \showmessage{\m!figures}{10}{\@@efcurrentfile}%
+ \@@eftrace{zero}%
+ \fi\fi
\fi\fi
- \fi\fi
- \ifexecuted % searching for mps, eps found, but no valid mps
- \doif{\@@efcurrenttype}{\c!mps}{\ifcase\EPScreator\executedfalse\fi}%
+ \doif{\@@efcurrenttype}{\c!mps}
+ {\ifcase\EPScreator\executedfalse\fi}%
\fi
-% until here
\ifexecuted
\chardef\figurestatus=3
\doifelse{\@@efcurrenttype}{\c!eps}
@@ -308,9 +346,12 @@
\def\getfiguredimensionsB%
{\ifcase\figurestatus\ifcase\figurefilemode\else
- \def\@@efloadname{\@@efcurrentpath\f!pathseparator\@@exfile}%
+ %\def\@@efloadname{\@@efcurrentpath\f!pathseparator\@@exfile}%
+ \assignfullfilename\@@efcurrentpath\@@exfile\to\@@efloadname
\edef\@@effilenametype{\@@effilename.\@@efcurrenttype}%
- \@@eftrace{analyzing \@@efloadname\space on \@@effilenametype}%
+ \@@eftrace{analyzing \@@efloadname\space
+ on \@@efcurrentpath\space
+ for \@@effilenametype}%
\pushendofline
\let\presetfigure=\presetfigureA
\readsetfile{\@@efcurrentpath}{\@@exfile}\relax\relax
@@ -332,7 +373,8 @@
\def\getfiguredimensionsC%
{\ifcase\figurestatus\ifrunutilityfile\ifcase\figurefilemode\else
- \doif{\@@efcurrenttype}{\c!tex}
+ %\doif{\@@efcurrenttype}{\c!tex} % oeps, was wrong
+ \doifnotinset{\@@efextension}{\c!tex,\c!tmp}
{\doiffileelse{\@@efcurrentfile}
{\edef\@@effilenametype{\@@effilename.\@@efcurrenttype}%
\@@eftrace{running texutil on \@@effilenametype}%
@@ -342,8 +384,8 @@
\@@eftrace{analyzing \@@efloadname\space on \@@effilenametype}%
\pushendofline
\let\presetfigure=\presetfigureB
- \readsetfile{.}{\@@efloadname}\relax\relax
- \popendofline
+ \readsetfile{.}{\@@efloadname}\relax\relax
+ \popendofline
\@@eftrace{\ifcase\figurestatus not \fi found}}
{}}%
\fi\fi\fi}
@@ -359,9 +401,12 @@
\def\doanalyzefigurefilesB%
{\ifcase\figurestatus\ifcase\figurefilemode\else
- \def\@@efloadname{\@@efcurrentpath\f!pathseparator\@@exfile}%
+ %\def\@@efloadname{\@@efcurrentpath\f!pathseparator\@@exfile}%
+ \assignfullfilename\@@efcurrentpath\@@exfile\to\@@efloadname
\edef\@@effilenametype{\@@effilename.\figureextension{\@@efcurrenttype}}%
- \@@eftrace{analyzing \@@efloadname\space on \@@effilenametype}%
+ \@@eftrace{analyzing \@@efloadname\space
+ on \@@efcurrentpath\space
+ for \@@effilenametype}%
\pushendofline
\let\presetfigure=\presetfigureC
\readsetfile{\@@efcurrentpath}{\@@exfile}\relax\relax
@@ -386,8 +431,11 @@
\def\doanalyzefigurefilesC%
{\ifcase\figurestatus\ifcase\figurefilemode\else
- \def\@@efloadname{\@@efcurrentpath\f!pathseparator\@@exfile}%
- \@@eftrace{analyzing \@@efloadname\space on \@@effilename.* surrogate}%
+ %\def\@@efloadname{\@@efcurrentpath\f!pathseparator\@@exfile}%
+ \assignfullfilename\@@efcurrentpath\@@exfile\to\@@efloadname
+ \@@eftrace{analyzing \@@efloadname\space
+ on \@@efcurrentpath\space
+ for \@@effilename.* surrogate}%
\pushendofline
\let\presetfigure=\presetfigureD
\readsetfile{\@@efcurrentpath}{\@@exfile}\relax\relax
@@ -435,8 +483,11 @@
\def\dodolocatepresetfigurefiles#1%
{\ifcase\figurestatus
\doiffileinsertionsupportedelse{\@@efcurrenttype}
- {\edef\@@efcurrentfile%
- {#1\f!pathseparator\@@effilename.\figureextension{\@@efcurrenttype}}%
+ {%\edef\@@efcurrentfile%
+ % {#1\f!pathseparator\@@effilename.\figureextension{\@@efcurrenttype}}%
+ \assignfullfilename
+ {#1}{\@@effilename.\figureextension{\@@efcurrenttype}}%
+ \to\@@efcurrentfile
\@@eftrace{only searching for \@@efcurrentfile}%
\doiffileelse{\@@efcurrentfile}
{\chardef\figurestatus=1
@@ -454,9 +505,9 @@
\def\setnaturalfiguresize%
{\doifsomething{\@@efbreedte}
- {\figwid=\@@efbreedte}%
+ {\global\figwid=\@@efbreedte}%
\doifsomething{\@@efhoogte}
- {\fighei=\@@efhoogte}%
+ {\global\fighei=\@@efhoogte}%
\doifsomething{\@@efschaal}
{\figxsca=\@@efschaal
\figysca=\@@efschaal}}
@@ -465,25 +516,25 @@
{\doifinsetelse{\@@effactor}{\v!max,\v!passend,\v!ruim}
{\doapplyfiguresize
\ifdim\@@epw>\@@eph\relax
- \docalculatefigurenorm\figwid\@@effactor\@@efbreedte\hsize\@@efhsize
+ \docalculatefigurenorm\figwid\@@effactor\@@efmaxbreedte\hsize\@@efhsize
\docalculatefigurescales\figwid\@@epw\fighei\@@eph
\else
- \docalculatefigurenorm\fighei\@@effactor\@@efhoogte\teksthoogte\@@efvsize
+ \docalculatefigurenorm\fighei\@@effactor\@@efmaxhoogte\figurevsize\@@efvsize
\docalculatefigurescales\fighei\@@eph\figwid\@@epw
\fi
\!!doneatrue}
{\doifinsetelse{\@@efhfactor}{\v!max,\v!passend,\v!ruim}
{\doapplyfiguresize
- \docalculatefigurenorm\fighei\@@efhfactor\@@efhoogte\teksthoogte\@@efvsize
+ \docalculatefigurenorm\fighei\@@efhfactor\@@efmaxhoogte\figurevsize\@@efvsize
\docalculatefigurescales\fighei\@@eph\figwid\@@epw
\!!doneatrue}
{\doifinsetelse{\@@efbfactor}{\v!max,\v!passend,\v!ruim}
{\doapplyfiguresize
- \docalculatefigurenorm\figwid\@@efbfactor\@@efbreedte\hsize\@@efhsize
+ \docalculatefigurenorm\figwid\@@efbfactor\@@efmaxbreedte\hsize\@@efhsize
\docalculatefigurescales\figwid\@@epw\fighei\@@eph
- \!!doneatrue}
- {\docalculatefigurenorm\fighei\@@effactor\@@efhoogte\teksthoogte\@@efvsize
- \docalculatefigurenorm\fighei\@@efhfactor\@@efhoogte\teksthoogte\@@efvsize
+ \!!doneatrue} % max ???
+ {\docalculatefigurenorm\fighei\@@effactor \@@efhoogte \teksthoogte\@@efvsize
+ \docalculatefigurenorm\fighei\@@efhfactor\@@efhoogte \teksthoogte\@@efvsize
\docalculatefigurenorm\figwid\@@efbfactor\@@efbreedte\hsize\hsize
\!!doneafalse}}}%
\if!!donea
@@ -502,59 +553,107 @@
\doapplyfigurescale\fighei\@@eph\figysca
\global\figwid=\!!zeropoint
\global\fighei=\!!zeropoint
- \doifelsenothing{\@@efbreedte}
- {\doifsomething{\@@efhoogte}
- {\ifdim\@@eph>\@@efhoogte
- \global\fighei=\@@efhoogte
+ \doifelsenothing{\@@efmaxbreedte}
+ {\doifsomething{\@@efmaxhoogte}
+ {\ifdim\@@eph>\@@efmaxhoogte
+ \global\fighei=\@@efmaxhoogte
\fi}}
- {\ifdim\@@epw>\@@efbreedte
- \global\figwid=\@@efbreedte
+ {\ifdim\@@epw>\@@efmaxbreedte
+ \global\figwid=\@@efmaxbreedte
\fi}}}
+\def\dosetdimensionfiguresize#1#2#3%
+ {#1\relax
+ \doifsomething{\@@efmaxbreedte}
+ {\ifdim\figwid>\@@efmaxbreedte\global\figwid=\@@efmaxbreedte#2\relax\fi}%
+ \doifsomething{\@@efmaxhoogte}
+ {\ifdim\fighei>\@@efmaxhoogte \global\fighei=\@@efmaxhoogte #3\relax\fi}}
+
\def\setdimensionfiguresize%
{\ifdim\figwid>\!!zeropoint\relax
\ifdim\fighei>\!!zeropoint\relax
- \docalculatefigurescale\fighei\@@eph\figysca
- \docalculatefigurescale\figwid\@@epw\figxsca
+ \dosetdimensionfiguresize%
+ {\docalculatefigurescale\fighei\@@eph\figysca
+ \docalculatefigurescale\figwid\@@epw\figxsca}%
+ {\docalculatefigurescale\fighei\@@eph\figysca
+ \docalculatefigurescale\figwid\@@epw\figxsca}%
+ {\docalculatefigurescale\fighei\@@eph\figysca
+ \docalculatefigurescale\figwid\@@epw\figxsca}%
\else
- \docalculatefigurescales\figwid\@@epw\fighei\@@eph
+ \dosetdimensionfiguresize%
+ {\docalculatefigurescales\figwid\@@epw\fighei\@@eph}%
+ {\docalculatefigurescales\figwid\@@epw\fighei\@@eph}%
+ {\docalculatefigurescales\figwid\@@epw\fighei\@@eph}%
\fi
\else
\ifdim\fighei>\!!zeropoint\relax
- \docalculatefigurescales\fighei\@@eph\figwid\@@epw
+ \dosetdimensionfiguresize%
+ {\docalculatefigurescales\fighei\@@eph\figwid\@@epw}%
+ {\docalculatefigurescales\fighei\@@eph\figwid\@@epw}%
+ {\docalculatefigurescales\fighei\@@eph\figwid\@@epw}%
\else
- \doapplyfigurescale\figwid\@@epw\figxsca
- \doapplyfigurescale\fighei\@@eph\figysca
+ \dosetdimensionfiguresize%
+ {\doapplyfigurescale\figwid\@@epw\figxsca
+ \doapplyfigurescale\fighei\@@eph\figysca}%
+ {\docalculatefigurescales\figwid\@@epw\fighei\@@eph}%
+ {\docalculatefigurescales\fighei\@@eph\figwid\@@epw}%
\fi
\fi}
\def\setupexternalfigures%
{\dosingleempty\dosetupexternalfigures}
-\def\dosetupexternalfigures[#1]%
+\def\dosetupexternalfigures[#1]% needs a good clean up
{\getparameters[\??ex][#1]%
- \doifelsenothing{\@@explaats}
+ \getparameters[\??ef][#1]% dangerous for figs with backgrounds
+ \doifelsenothing{\@@explaats} % fig file paths
{\scratchcounter=3 }
- {\doifelsenothing{\@@exfile}
+ {\doifelsenothing{\@@exfile} % tuf file paths
{\scratchcounter=3 }
{\scratchcounter=0
\ExpandBothAfter\doifinset{\v!lokaal}{\@@explaats}
{\advance\scratchcounter by 1 }%
\ExpandBothAfter\doifinset{\v!globaal}{\@@explaats}
{\advance\scratchcounter by 2 }}}%
- \chardef\figurefilemode=\scratchcounter}
+ \chardef\figurefilemode=\scratchcounter
+ \ifcase\figurefilemode
+ \let\@@ex@@gebied\f!currentpath
+ \or % lokaal
+ \let\@@ex@@gebied\f!currentpath
+ \or % globaal
+ \let\@@ex@@gebied\@@exgebied
+ \or % lokaal,globaal / non empty gebied
+ \edef\@@ex@@gebied{\f!currentpath\ifx\@@exgebied\empty\else,\fi\@@exgebied}%
+ \fi
+ \ExpandBothAfter\doifinset{\v!default}{\@@explaats}
+ {\edef\@@ex@@gebied{\@@ex@@gebied,}}% default tex path search
+ \ifx\@@exfile\empty
+ \chardef\figurefilemode=0
+ \fi}
+
+\def\resetexternalfigures%
+ {\setupexternalfigures
+ [\c!optie=,\c!maxbreedte=,\c!maxhoogte=,
+ \c!kader=\v!uit,\c!achtergrond=]}
+
+% will move:
+
+\appendtoks \resetexternalfigures \to \everyoverlay
+\appendtoks \resetexternalfigures \to \everypagebody
+
+%appendtoks \resetexternalfigures \to \everysymbol
\def\docalculatefigurenorm#1#2#3#4#5%
{\processaction
[#2]
- [ \v!max=>#1=#4\relax,
- \v!passend=>#1=#5\relax,
- \v!ruim=>#1=#5\relax
- \advance #1 by -4\@@exkorps\relax,
- \s!default=>\doifsomething{#3}{#1=#3\relax},
- \s!unknown=>#1=\@@exkorps\relax
- \divide#1 by \!!ten\relax
- \multiply#1 by #2\relax]}
+ [ \v!max=>\global#1=#4\relax,
+ \v!passend=>\global#1=#5\relax,
+ \v!ruim=>\global#1=#5\relax
+ \global\advance #1 by -4\@@exkorps\relax,
+ \s!default=>\doifsomething{#3}{\global#1=#3\relax},
+ \s!unknown=>\global#1=\@@exkorps\relax
+ \global\divide#1 by \!!ten\relax
+ \global\multiply#1 by #2\relax]}
\def\docalculatefigurescales#1#2#3#4%
{\dimen0=#1\relax % #1 = new 1-value
@@ -576,37 +675,43 @@
#3=\dimen0 } % #3 = schaal
\def\doapplyfigurescale#1#2#3%
- {#1=#2\relax
+ {\global#1=#2\relax
\ifcase0\@@efschaal\relax
#3=\!!thousand
\else
#3=\@@efschaal
\fi
- \relax % important !
+ \relax % important !
\ifnum#3=\!!thousand\else
- \divide#1 by \!!thousand
- \multiply#1 by #3\relax
+ \global\divide#1 by \!!thousand
+ \global\multiply#1 by #3\relax
\fi}
+\newdimen\figurevsize % we cannot manipulate any global vsize !
+
\def\doapplyfiguresize%
- {\ifinner
- \teksthoogte=\vsize
- \scratchdimen=\teksthoogte
+ {\figurevsize=\teksthoogte
+ \ifinner
+ \figurevsize =\vsize % \teksthoogte =\vsize
+ \scratchdimen=\vsize % \scratchdimen=\teksthoogte
+ \else\ifinsidefloat
+ \figurevsize =\vsize % \teksthoogte =\vsize
+ \scratchdimen=\vsize % \scratchdimen=\teksthoogte
\else\ifinpagebody
- \teksthoogte=\vsize
- \scratchdimen=\teksthoogte
+ \figurevsize =\vsize % \teksthoogte =\vsize
+ \scratchdimen=\vsize % \scratchdimen=\teksthoogte
\else
\ifdim\pagegoal<\maxdimen
\ifdim\pagetotal<\pagegoal
\scratchdimen=\pagegoal
\advance\scratchdimen by -\pagetotal
\else
- \scratchdimen=\teksthoogte
+ \scratchdimen=\figurevsize % \teksthoogte
\fi
\else
- \scratchdimen=\teksthoogte
+ \scratchdimen=\figurevsize % \teksthoogte
\fi
- \fi\fi
+ \fi\fi\fi
\doifelsenothing{\@@efhoogte}
{\edef\@@efvsize{\the\scratchdimen}}
{\let\@@efvsize=\@@efhoogte}%
@@ -616,7 +721,7 @@
\def\convertfigureinsertscale#1#2#3#4%
{\scratchdimen=#1\relax
- \ifnum#3=\!!thousand\else % better 1000 100 10 ranges, evt round 2sp
+ \ifnum#3=\!!thousand\else % better 1000 100 10 ranges, evt round 2sp
\divide\scratchdimen by \!!thousand
\multiply\scratchdimen by #3\relax
\fi
@@ -628,14 +733,17 @@
\newbox\foundexternalfigure
-\def\presetfiguremov%
- {\let\@@eftype \c!mov
- \let\@@efextension \c!mov
+\def\presetundefinedfigure#1%
+ {\let\@@eftype #1%
+ \let\@@efextension #1%
\let\@@efobject \v!nee
\let\@@efpreset \v!nee
\ifx\@@efbreedte\empty\def\@@breedte{4cm}\fi
\ifx\@@efhoogte \empty\def\@@hoogte {3cm}\fi}
+\def\presetfiguremov{\presetundefinedfigure\c!mov}
+\def\presetfigureavi{\presetundefinedfigure\c!avi}
+
% The page number (frame) is passed as first option.
\newcounter\forcedMPSobject % better something \every<type>
@@ -645,17 +753,27 @@
%D scales is according to the specifications. This macro is
%D quite unreadable, for which I appologize. The main
%D complication is that we have to catch all kind of border
-%D cases, like \METAPOST\ graphics and buffers.
+%D cases, like \METAPOST\ graphics and buffers.
+
+% note * : this is needed because reusable graphics
+% combined with funny page aspect aspect ratio's can lead to
+% strange side effects of preceding factor=max specs. This
+% surfaced in the metafun manual, where the two side by
+% side clipped cow heads [the second one was a reused object]
+% where the second one inherited some characteristics from
+% the factor=max one some 30 pages back. Sigh.
\def\calculateexternalfigure[#1][#2][#3][#4][#5][#6]%
{\mindermeldingen
+ \global\figwid=\!!zeropoint \figxsca=1 % see note *
+ \global\fighei=\!!zeropoint \figysca=1 % see note *
\global\setbox\foundexternalfigure=\box\voidb@x
- \beforesplitstring#3\at.\to\@@effilename
- \aftersplitstring #3\at.\to\@@efextension
-\doifelse{\@@effilename}{mprun}
- {\edef\@@effilepref{\bufferprefix}}
- {\let \@@effilepref\empty}%
-\edef\@@effilename{\@@effilepref\@@effilename}%
+ \expandafter\beforesplitstring#3\at.\to\@@effilename
+ \expandafter\aftersplitstring #3\at.\to\@@efextension
+ \doifelse{\@@effilename}{mprun}
+ {\edef\@@effilepref{\bufferprefix}}
+ {\let \@@effilepref\empty}%
+ \edef\@@effilename{\@@effilepref\@@effilename}%
\restorecatcodes % recently added; we presume local use
\def\@@eflabel{#2}%
\global\let\externalfigurelog\empty
@@ -669,14 +787,18 @@
[\??ef]
[\c!type=\s!unknown,\c!methode=\@@eftype,\c!symbool=\v!nee,
\c!object=\@@exobject,\c!preset=\v!ja,
+% old \c!achtergrond=,\c!achtergrondkleur=,\c!achtergrondraster=\@@rsraster,
+% old \c!hoek=,\c!straal=.5\korpsgrootte,\c!kader=\v!uit,
\c!pagina=0,\c!preview=\v!nee,\c!herhaal=\v!nee,
+\c!maxbreedte=\@@exmaxbreedte,\c!maxhoogte=\@@exmaxhoogte,
\c!schaal=,\c!breedte=,\c!hoogte=,\c!scherm=,
- \c!factor=,\c!hfactor=,\c!bfactor=,
- \c!achtergrond=,\c!achtergrondkleur=,\c!achtergrondraster=\@@rsraster,
- \c!hoek=,\c!straal=.5\korpsgrootte,\c!kader=\v!uit]%
+ \c!factor=,\c!hfactor=,\c!bfactor=]%
\doif{\@@efextension}{\c!mov}{\presetfiguremov}%
+ \doif{\@@efextension}{\c!avi}{\presetfigureavi}%
#1[#4][#5][#6]%
+ \doif{\@@efreset}{\v!ja}{\resetexternalfigures}%
\doif{\@@eftype}{\c!mov}{\presetfiguremov}%
+ \doif{\@@eftype}{\c!avi}{\presetfigureavi}%
\doif{\@@eftype}{\v!buffer}
{\ifx\@@efextension\empty
\let\@@efextension\c!tmp
@@ -688,6 +810,7 @@
\c!tmp=>\let\@@eftype\c!tex
\edef\@@effilepref{\bufferprefix}%
\edef\@@effilename{\@@effilepref\@@effilename},
+ \c!avi=>\presetfigureavi,
\c!mov=>\presetfiguremov]%
\edef\figuretypes{\figuretypes,\c!tex}%
\doifelse{\@@efobject}{\v!nee}
@@ -698,11 +821,12 @@
\doifobjectfoundelse{FIG}{\@@efobjectname}{\donetrue}{\donefalse}}
{\donefalse}}
{\donefalse}}%
- \doif{\@@effilename}{\jobname}
+ \doifparentfileelse{\@@effilename}
{\@EA\removefromcommalist\@EA{\jobsuffix}\figuretypes
\let\@@efextension=\empty
\showmessage{\m!figures}{9}{\@@effilename,\jobsuffix}%
- \donefalse}%
+ \donefalse}
+ {}%
\ifdone
\getobjectdimensions{FIG}{\@@efobjectname}%
\geteparameters % e !
@@ -725,15 +849,15 @@
\edef\@@effullname{\@@effilename.\@@efextension}%
\def\figureextension##1{\@@efextension}%
\fi}%
- \ifcase\figurefilemode
- \let\@@ex@@gebied\f!currentpath
- \or
- \let\@@ex@@gebied\f!currentpath
- \or
- \let\@@ex@@gebied\@@exgebied
- \or
- \edef\@@ex@@gebied{\f!currentpath\ifx\@@exgebied\empty\else,\fi\@@exgebied}%
- \fi
+% \ifcase\figurefilemode
+% \let\@@ex@@gebied\f!currentpath
+% \or % lokaal
+% \let\@@ex@@gebied\f!currentpath
+% \or % globaal
+% \let\@@ex@@gebied\@@exgebied
+% \or % lokaal,globaal / non empty gebied
+% \edef\@@ex@@gebied{\f!currentpath\ifx\@@exgebied\empty\else,\fi\@@exgebied}%
+% \fi
\doifelse{\@@efpreset}{\v!nee}
{\doifelse{\@@eftype}{\s!unknown}
{\chardef\figurestatus=0
@@ -752,13 +876,15 @@
\fi
\doifelse{#2}{\s!figurepreset}
{\chardef\figurestatus=4
- \def\@@efloadname{\f!currentpath\f!pathseparator\@@exfile}%
+ %\def\@@efloadname{\f!currentpath\f!pathseparator\@@exfile}%
+ \assignfullfilename\f!currentpath\@@exfile\to\@@efloadname
\let\@@eftype=\@@epe}
{\chardef\figurestatus=0
\analyzefigurefiles}}%
\let\@@epe=\@@eftype
\edef\@@efextension{\figureextension{\@@eftype}}% dirty trick
- \figwid=\!!zeropoint \fighei=\!!zeropoint \figxsca=1 \figysca=1
+ \global\figwid=\!!zeropoint \figxsca=1
+ \global\fighei=\!!zeropoint \figysca=1
\doif{\@@exoptie}{\v!kader}
{\let\@@efkader=\v!aan}%
\fi
@@ -773,7 +899,7 @@
\showmessage{\m!figures}{4}{\@@effullname}%
\or
\showmessage{\m!figures}{5}{\@@effullname,\@@efloadname}%
- \or
+ \or % no message
\doifnot{\@@efsymbool}{\v!ja}
{\showmessage{\m!figures}{8}{\@@effullname}}%
\fi
@@ -804,29 +930,30 @@
\doif{\@@exoptie}{\v!leeg}
{\skipexternalfigurestrue
\let\@@efkader=\v!uit}%
-\doifelsenothing{\@@efpagina} % NIEUW
- {\let\@@efoptions\empty}
- {\let\@@efoptions\@@efpagina}%
+ \doifelsenothing{\@@efpagina} % NIEUW
+ {\let\@@efoptions\empty}
+ {\let\@@efoptions\@@efpagina}%
\doif{\@@efpreview}{\v!ja}
{\addtocommalist\v!preview\@@efoptions}%
\doif{\@@efherhaal}{\v!ja}
{\addtocommalist\v!herhaal\@@efoptions}%
-\doif{\@@eftype}{\c!mps}
- {\ifcase\EPSspecial\else\ifinobject\else
- \@@eftrace{special mps, object forced}%
- \doglobal\increment\forcedMPSobject
- \edef\@@efobjectname{\c!mps::\forcedMPSobject}%
- \let\@@efobject\v!ja
- \fi\fi}%
-\global\let\lastfigureobjectname\@@efobjectname
- \doifelse{\@@efobject}{\v!nee}
+ \doif{\@@eftype}{\c!mps}
+ {\ifcase\EPSspecial\else\ifinobject\else
+ \@@eftrace{special mps, object forced}%
+ \doglobal\increment\forcedMPSobject
+ \edef\@@efobjectname{\c!mps::\forcedMPSobject}%
+ \let\@@efobject\v!ja
+ \fi\fi}%
+ \global\let\lastfigureobjectname\@@efobjectname
+ \doifelse{\@@efobject}{\v!nee}
{\donefalse}
{\doifobjectssupportedelse{\donetrue}{\donefalse}}%
\ifdone
\doifobjectfoundelse{FIG}{\@@efobjectname}
{}
{\bgroup
- \figwid=\@@epw\fighei=\@@eph
+ \figwid=\@@epw % local ?
+ \fighei=\@@eph % local ?
\scratchdimen=\@@epx\scratchdimen=-\scratchdimen
\edef\@@epx{\number\scratchdimen}%
\scratchdimen=\@@epy\scratchdimen=-\scratchdimen
@@ -918,7 +1045,7 @@
\gdef\noffigurepages{\nofinsertpages}
\def\dogetfiguredimensions[#1][#2]%
- {{\let\immediate\relax % very dirty but prevents flushing, will change
+ {{\let\immediate\relax % very dirty but prevents flushing, will change
\setbox0=\hbox{\externalfigure[#1][#2,\c!scherm=,\c!object=\v!nee]}}}
\presetlocalframed[\??ef]
@@ -926,36 +1053,58 @@
\def\doplaceexternalfigure% used direct and indirect
{\dosixtupleempty\dodoplaceexternalfigure}
+\newconditional\externalfigurelevel
+
\def\dodoplaceexternalfigure[#1][#2][#3][#4][#5][#6]%
{\bgroup
\setupexternalfigures
\calculateexternalfigure[#1][#2][#3][#4][#5][#6]%
\setupexternalfigures
\calculateexternalscreenfigure[#1][#2][#3][#4][#5][#6]%
+\pushmacro\figurewidth
+\pushmacro\figureheight
\xdef\figurewidth {\the\figwid}%
\xdef\figureheight{\the\fighei}%
- \ifskipexternalfigures
- \localframed
- [\??ef]
- [\c!breedte=\figwid,
- \c!hoogte=\fighei,
- \c!kader=\v!aan]
- {\ttx name: #2 \\ file: #3 \\ skipped}%
- \else\ifcase\figurestatus
- \localframed
- [\??ef]
- [\c!breedte=\figwid,
- \c!hoogte=\fighei,
- \c!kader=\v!aan]
- {\ttx name: #2 \\ file: #3 \\ unknown}%
+ \ifconditional\externalfigurelevel % probably background
+ \ifskipexternalfigures
+ % nothing
+ \else\ifcase\figurestatus
+ % nothing
+ \else
+ \box\foundexternalfigure
+ \fi\fi
\else
- \localframed
- [\??ef]
- [\c!breedte=\figwid,
- \c!hoogte=\fighei,
- \c!offset=\v!overlay]
- {\vfilll\box\foundexternalfigure}%
- \fi\fi
+ \settrue\externalfigurelevel
+ \ifskipexternalfigures
+ \localframed
+ [\??ef]
+ [\c!breedte=\figurewidth,
+ \c!hoogte=\figureheight,
+ \c!kader=\v!aan]
+ {\ttx name: #2 \\ file: #3 \\ skipped}%
+ \else\ifcase\figurestatus
+ \localframed
+ [\??ef]
+ [\c!breedte=\figurewidth,
+ \c!hoogte=\figureheight,
+ \c!kader=\v!aan]
+ {\ttx name: #2 \\ file: #3 \\ unknown}%
+ \else
+\doifelse{\@@efreset}{\v!ja}
+ {\ht\foundexternalfigure=\figureheight
+ \dp\foundexternalfigure=\!!zeropoint
+ \wd\foundexternalfigure=\figurewidth
+ \box\foundexternalfigure}
+ {\localframed
+ [\??ef]
+ [\c!breedte=\figurewidth,
+ \c!hoogte=\figureheight,
+ \c!offset=\v!overlay]
+ {\vfilll\box\foundexternalfigure}}%
+ \fi\fi
+ \fi
+\popmacro\figureheight
+\popmacro\figurewidth
\egroup}
\def\getexternalfigure#1%
@@ -996,7 +1145,9 @@
\def\dosetuseexternalfigure[#1][#2][#3][#4]%
{\doifinstringelse{=}{#3}
{\setvalue{\??ef\??ef#1}{\doplaceexternalfigure[\dopresetfigure][#1][#2][#3][#4]}}
- {\setvalue{\??ef\??ef#1}{\doplaceexternalfigure[\doprecopfigure][#1][#2][#3][#4]}}%
+ {\doifelsenothing{#3} % catch [1][2][leeg][leeg]
+ {\setvalue{\??ef\??ef#1}{\doplaceexternalfigure[\dopresetfigure][#1][#2][#3][#4]}}
+ {\setvalue{\??ef\??ef#1}{\doplaceexternalfigure[\doprecopfigure][#1][#2][#3][#4]}}}%
\doifundefined{#1}{\setvalue{#1}{\getexternalfigure{#1}}}} % upward compatible
\def\useexternalfigure%
@@ -1137,6 +1288,9 @@
\def\showexternalfigures%
{\dosingleempty\doshowexternalfigures}
+\def\overlayfigure#1%
+ {\externalfigure[#1][\c!breedte=\overlaywidth,\c!hoogte=\overlayheight]}
+
%D Still undocumented!
\newcount\efreference
@@ -1451,21 +1605,21 @@
\def\setupclipping%
{\dodoubleargument\getparameters[\??cp]}
-%D defining sound tracks:
+%D defining sound tracks:
%D
-%D \starttypen
+%D \starttypen
%D \useexternalsoundtrack[label][file]
-%D \stoptypen
+%D \stoptypen
%D
%D associated actions: StartSound StopSound PauseSound ResumeSound
%D
-%D Todo: like external figures, also search on path,
+%D Todo: like external figures, also search on path,
%D although, they need to be present ar viewing time, so ...
\def\useexternalsoundtrack%
{\dodoubleargument\douseexternalsoundtrack}
-\def\douseexternalsoundtrack[#1][#2]%
+\def\douseexternalsoundtrack[#1][#2]%
{\setgvalue{\??sd#1}{#2}}
\def\checksoundtrack#1%
@@ -1486,12 +1640,16 @@
\setupexternalfigures
[\c!optie=,
\c!object=\v!ja,
+ \c!reset=\v!nee,
+ \c!maxbreedte=\@@efbreedte,
+ \c!maxhoogte=\@@efhoogte,
\c!korps=\korpsgrootte,
\c!gebied=,
\c!file=\f!utilityfilename.\f!figureextension,
\c!straal=.5\korpsgrootte,
\c!hoek=\v!recht,
\c!kader=\v!uit,
+ \c!achtergrond=, % new
\c!plaats={\v!lokaal,\v!globaal}]
\setupexternalfigures
diff --git a/tex/context/base/core-fil.tex b/tex/context/base/core-fil.tex
index c67aa1702..50a05693a 100644
--- a/tex/context/base/core-fil.tex
+++ b/tex/context/base/core-fil.tex
@@ -39,6 +39,16 @@
1: synonymum souboru -- je jiz pouzito pro --
\stopmessages
+\startmessages italian library: files
+ title: file
+ 1: sinonimo file -- già in uso per --
+\stopmessages
+
+\startmessages norwegian library: files
+ title: filer
+ 1: filesynonym -- er allerede brukt for --
+\stopmessages
+
%D \macros
%D {definefilesynonym}
%D
@@ -184,10 +194,10 @@
%D We also redefine:
\def\MPgraphicfile%
- {\bufferprefix mp\ifMPrun run\else graph\fi}
+ {\bufferprefix mp\ifMPrun run\else graph\fi}
\def\convertMPcolorfile%
- {\bufferprefix metacmyk.tmp}
+ {\bufferprefix metacmyk.tmp}
%D Temporarily here:
diff --git a/tex/context/base/core-fld.tex b/tex/context/base/core-fld.tex
index 33b77f9ad..d7957fc85 100644
--- a/tex/context/base/core-fld.tex
+++ b/tex/context/base/core-fld.tex
@@ -843,15 +843,16 @@
{\doifundefined{fieldstack:#1}
{\setgvalue{fieldstack:#1}{\dodofieldstack[#1][#2][#3]}}}
-\def\dodofieldstack[#1][#2][#3]%
+\def\dodofieldstack[#1][#2][#3]% start=n, 0 == leeg
{\bgroup
+ \getparameters[\??fd][\c!start=1,#3]%
\setupfields[\v!reset]%
\definesymbol[\v!leeg][]%
- \useJSscripts[fld]%
+ \useJSscripts[fld][FieldStack]%
\newcounter\stackedfieldnumber
\def\dododofieldstack##1%
{\increment\stackedfieldnumber
- \ifnum\stackedfieldnumber=1
+ \ifnum\stackedfieldnumber=\@@fdstart\relax
\definefield[#1:\stackedfieldnumber][check][#1][##1,\v!leeg][##1]%
\else
\definefield[#1:\stackedfieldnumber][check][#1][##1,\v!leeg][\v!leeg]%
@@ -880,6 +881,20 @@
\def\fieldstack%
{\dotripleempty\dofieldstack}
+%D When submitting a form, we need to tell the driver module
+%D that we want \FDF\ or \HTML.
+
+\def\setupforms%
+ {\dodoubleargument\getparameters[\??fr]}
+
+\def\checksubmitform#1%
+ {\setsubmitoutputformat{\@@frmethode}}
+
+\setexecutecommandcheck {submitform} \checksubmitform
+
+\setupforms
+ [\c!methode=HTML]
+
\protect
\endinput
diff --git a/tex/context/base/core-fnt.tex b/tex/context/base/core-fnt.tex
index a7ce7f68f..9928d64ee 100644
--- a/tex/context/base/core-fnt.tex
+++ b/tex/context/base/core-fnt.tex
@@ -72,8 +72,8 @@
%D \type {\groupedcommand}.
\def\usepseudocaps%
- {\def\cap@@uppercase{\the\everyuppercase\uppercase}%
- \def\cap@@lowercase{\the\everylowercase\lowercase}%
+ {\def\cap@@uppercase{\the\everyuppercase\uppercased}%
+ \def\cap@@lowercase{\the\everylowercase\lowercased}%
\def\cap@@visualize{\tx}}
\def\userealcaps%
@@ -145,13 +145,16 @@
{\definealternativestyle[\v!kapitaal][\normalkap][\normalkap]%
\definealternativestyle[\v!smallcaps][\sc][\sc]%
\let\kap\normalkap}
- {\definealternativestyle[\v!kapitaal][\normalkap][\uppercase]%
- \definealternativestyle[\v!smallcaps][\sc][\uppercase]%
+ {\definealternativestyle[\v!kapitaal][\normalkap][\uppercased]%
+ \definealternativestyle[\v!smallcaps][\sc][\uppercased]%
\def\kap{\doconvertfont{\v!kapitaal}}}%
\doifelse{\@@kksc}{\v!ja}
{\userealcaps}
{\usepseudocaps}}
+\ifx\uppercased\undefined \let\uppercased\uppercase \fi
+\ifx\lowercased\undefined \let\lowercased\lowercase \fi
+
\setupcapitals
[\c!titel=\v!ja,
\c!sc=\v!nee]
@@ -201,8 +204,10 @@
\def\processwords#1%
{\doprocesswords#1 \od\unskip}
+\let\processword\relax
+
\unexpanded\def\Words%
- {\let\processwords=\Word
+ {\let\processword=\Word
\processwords}
\unexpanded\def\WORD#1%
@@ -277,22 +282,71 @@
%D
%D The default skip can be set with:
+% \def\stretchedspacefactor{4}
+% \def\stretchedspaceamount{.25em}
+%
+% \unexpanded\def\stretcheduppercase#1%
+% {\bgroup
+% \the\everyuppercase
+% \uppercase{\def\textstring{#1}}%
+% \ifdim\stretchedspaceamount>\!!zeropoint
+% \def\textkern%
+% {\kern\stretchedspaceamount}%
+% \def\textskip%
+% {\scratchdimen=\stretchedspaceamount
+% \hskip\stretchedspacefactor\scratchdimen}%
+% \@EA\processtokens\@EA\relax\@EA\textkern\@EA\relax\@EA
+% \textskip\@EA{\textstring}%
+% \else
+% \textstring
+% \fi
+% \egroup}
+
+\def\stretchedspacefactor{4}
\def\stretchedspaceamount{.25em}
+\def\stretchedbreaktokens{.@/}
-\unexpanded\def\stretcheduppercase#1%
+\unexpanded\def\stretcheduppercase#1%
{\bgroup
\the\everyuppercase
\uppercase{\def\textstring{#1}}%
\ifdim\stretchedspaceamount>\!!zeropoint
- \def\textkern{\kern \stretchedspaceamount}%
- \def\textskip{\hskip\stretchedspaceamount}%
- \@EA\processtokens\@EA\relax\@EA\textskip\@EA\relax\@EA
- {\@EA\textkern\@EA\textkern\@EA}\@EA{\textstring}%
+ \def\textkern##1%
+ {\determinemidwordbreak{##1}{\stretchedbreaktokens}%
+ \kern\stretchedspaceamount##1\domidwordbreak}%
+ \def\textskip%
+ {\scratchdimen=\stretchedspaceamount
+ \hskip\stretchedspacefactor\scratchdimen}%
+ \@EA\processtokens\@EA\relax\@EA\textkern\@EA\relax\@EA
+ \textskip\@EA{\textstring}%
\else
\textstring
\fi
\egroup}
+%D An auxiliary macro, see for usage \type {\stretcheduppercase}.
+
+\let\domidwordbreak\relax
+
+\def\setmidwordbreaktoken#1%
+ {\sfcode`#1=5000\relax}
+
+\def\determinemidwordbreak#1#2%
+ {\edef\midwordbreaktokens{#2}%
+ \ifx\midwordbreaktokens\empty
+ \global\let\domidwordbreak\relax
+ \else
+ \setbox\scratchbox=\hbox
+ {\expandafter\handletokens\midwordbreaktokens\with\setmidwordbreaktoken
+ a\space \!!dimena=\the\lastskip
+ #1\space\!!dimenb=\the\lastskip \relax % needed
+ \ifdim\!!dimena=\!!dimenb
+ \global\let\domidwordbreak\relax
+ \else
+ \global\let\domidwordbreak\allowbreak
+ \fi}%
+ \fi}
+
%D \macros
%D {underbar,underbars,
%D overbar,overbars,
@@ -377,10 +431,10 @@
\unexpanded\def\dodounderbar#1%
{\bgroup
- \dimen0=1.5\normallineskip
+ \dimen0=\@@ononderoffset
\dimen0=\underbarlevel\dimen0
\ifdone \else
- \advance\dimen0 by -\normallineskip
+ %\advance\dimen0 by -1pt
\advance\dimen0 by -\ht\strutbox
\fi
\dimen2=\dimen0
@@ -431,7 +485,7 @@
\def\dooverstrike#1%
{\bgroup
- \dimen0=2.5\normallineskip
+ \dimen0=\@@onbovenoffset
\dimen2=\dimen0
\advance\dimen2 by \@@onlijndikte
\dododounderbar{\dimen2}{-\dimen0}{#1}%
@@ -492,7 +546,8 @@
\fi}
\def\dohighlow#1#2#3#4#5%
- {\bgroup
+ {\dontleavehmode
+ \bgroup
\scratchdimen=
\ifdim\fontdimen5\textfont2=1ex\fontdimen#2\textfont2\else#3ex\fi
\advance\scratchdimen by #4ex
@@ -507,7 +562,8 @@
\unexpanded\def\low {\dohighlow\lower{16}{.48}{0}}
\unexpanded\def\lohi#1#2%
- {\hbox
+ {\dontleavehmode
+ \hbox
{\setbox4=\hbox{\dohighlow\lower{16}{.48}{.1}{#1}}%
\setbox6=\hbox{\dohighlow\raise{14}{.86}{.1}{#2}}%
\ifdim\wd4<\wd6
@@ -516,11 +572,48 @@
\wd6=\!!zeropoint\box6\box4
\fi}}
+%D \macros
+%D {setupinitial,placeinitial,checkinitial}
+%D
+%D {\em To be documented.}
+%D
+%D \starttypen
+%D \setupinitial[state=start] \placeinitial \input tufte
+%D \stoptypen
+%D
+%D and
+%D
+%D \starttypen
+%D \def\bpar{\ifvmode\checkinitial\fi}
+%D \def\epar{\ifhmode\par\fi\checkinitial}
+%D \stoptypen
+
+% to do: more fine tuning
+
+\def\setupinitial%
+ {\dodoubleempty\getparameters[\??dc]}
+
+\definefontsynonym[Initial][Regular] % prefered initial identifier
+\definefontsynonym[initial][Initial] % internal but accepted too
+
+\setupinitial
+ [\c!status=\v!stop,
+ \c!n=3,
+ \s!font=initial]
+
+\def\placeinitial%
+ {\doif{\@@dcstatus}{\v!start}
+ {\ifnum\@@dcn>0 \AutoDroppedCaps \fi}}
+
+\let\checkinitial\CheckDroppedCaps
+
%D This module has only a few setups:
\setupunderbar
[\c!variant=a,
- \c!lijndikte=\linewidth]
+ \c!lijndikte=\linewidth,
+ \c!onderoffset=1.5pt,
+ \c!bovenoffset=2.5pt]
\protect
diff --git a/tex/context/base/core-grd.tex b/tex/context/base/core-grd.tex
index f5518afec..2fe0b971a 100644
--- a/tex/context/base/core-grd.tex
+++ b/tex/context/base/core-grd.tex
@@ -209,7 +209,6 @@
%D
%D \macros
%D {getnoflines}
-%D {}
%D
%D Het commando \type{\getnoflines} converteert een hoogte
%D (dimensie) in een aantal regels en kent dit toe aan
@@ -310,7 +309,7 @@
\forcepresnaptrue
\fi
\ifforcepresnap
- \vbox{\strut}\nobreak\vskip-\openlineheight
+ \vbox{\hsize\!!zeropoint\strut}\nobreak\vskip-\openlineheight
\fi
%
\ifdim\ht\nextbox>\ht\strutbox
@@ -444,26 +443,27 @@
\fi}
\def\setgridbox#1#2#3%
- {\setbox#1=\ruledvbox to #3
+ {\setbox#1=\ruledvbox to #3 % given size
{\forgetall
\offinterlineskip
\hsize=#2
- \getnoflines{#3}%
- \vskip\topskip
- \vskip-\ht\strutbox
- \scratchdimen=#2\advance\scratchdimen by \lineheight
- \dorecurse
- {\noflines}
- {\strut
- \hskip-.5\lineheight
- \rlap
- {\hskip\scratchdimen\hskip2pt\infofont
- \hbox to 1em{\hss\recurselevel}}%
- \vrule
- \!!height .5\testrulewidth
- \!!depth .5\testrulewidth
- \!!width \scratchdimen
- \par}
+ \ruledvbox % calculated size
+ {\getnoflines{#3}%
+ \vskip\topskip
+ \vskip-\ht\strutbox
+ \scratchdimen=#2\advance\scratchdimen by \lineheight
+ \dorecurse
+ {\noflines}
+ {\strut
+ \hskip-.5\lineheight
+ \rlap
+ {\hskip\scratchdimen\hskip2pt\infofont
+ \hbox to 1em{\hss\recurselevel}}%
+ \vrule
+ \!!height .5\testrulewidth
+ \!!depth .5\testrulewidth
+ \!!width \scratchdimen
+ \par}}
\vfill}}
%D Some intervention macros:
diff --git a/tex/context/base/core-int.tex b/tex/context/base/core-int.tex
index e99c6af56..7ae8ab6d5 100644
--- a/tex/context/base/core-int.tex
+++ b/tex/context/base/core-int.tex
@@ -47,6 +47,22 @@
4: zadna strankova synchronizace (--) v hmode
\stopmessages
+\startmessages italian library: interactions
+ title: interazione
+ 1: rapporto -- x -- (b x a)
+ 2: attiva
+ 3: inattiva
+ 4: sincronizzazione di pagina (--) non disponibile in hmode
+\stopmessages
+
+\startmessages norwegian library: interactions
+ title: interaksjon
+ 1: forholdstall -- x -- (b x h)
+ 2: aktiv
+ 3: inaktiv
+ 4: ingen sidesynkronisering (--) i hmode
+\stopmessages
+
\startmessages dutch library: versions
title: versie
1: er mankeert een @+
@@ -75,6 +91,20 @@
3: oznacene strany: --
\stopmessages
+\startmessages italian library: versions
+ title: version
+ 1: @+ mancante
+ 2: marcatura pagine
+ 3: pagine selezionate: --
+\stopmessages
+
+\startmessages norwegian library: versions
+ title: versjon
+ 1: manglende @+
+ 2: markerer sider
+ 3: valgte sider: --
+\stopmessages
+
\unprotect
\definesystemconstant {link}
@@ -271,20 +301,44 @@
\def\initializeidentity% The macro is not to be changed;
{\iflocation % only the \@@ia-variables may be set!
- \dosetupidentity % Although ConTeXt is the producer
- {\@@iatitel} % we no longer set this field, since
+ \dosetupidentity % ConTeXt is the producer but we
+ {\@@iatitel} % no longer mention the pragma site, since
{\@@iasubtitel} % we don't want to be bothered with
{\@@iaauteur} % remarks about third party documents
- {\jobname.tex} % and/or associated with documents
+ {ConTeXt/user/\jobname.tex} % and/or associated with documents
{\@@iadatum}% % produced outside our control.
\global\let\initializeidentity\relax
\fi}
\appendtoks \initializeidentity \to \everyshipout
+% \def\initializepaper%
+% {\bgroup
+% \doif\@@pcstatus\v!start\locationfalse
+% \iflocation % without screen settings
+% \egroup
+% \dosetuppaper
+% {\papierformaat}
+% {\the\papierbreedte}
+% {\the\papierhoogte}%
+% \else
+% \egroup
+% \dosetuppaper
+% {\printpapierformaat}
+% {\the\printpapierbreedte}
+% {\the\printpapierhoogte}%
+% \fi}
+
\def\initializepaper%
{\bgroup
- \doif\@@pcstatus\v!start\locationfalse
+ %\doif\@@pcstatus\v!start\locationfalse
+ %\doifsomething
+ % {\@@pplinks\@@pprechts\@@ppboven\@@pponder}\locationfalse
+ \ifx\@@pplinks \empty \else\locationfalse\fi
+ \ifx\@@pprechts\empty \else\locationfalse\fi
+ \ifx\@@ppboven \empty \else\locationfalse\fi
+ \ifx\@@pponder \empty \else\locationfalse\fi
+ \ifx\@@pcstatus\v!start \locationfalse\fi
\iflocation % without screen settings
\egroup
\dosetuppaper
@@ -299,6 +353,8 @@
{\the\printpapierhoogte}%
\fi}
+\appendtoks \initializepaper \to \everyshipout
+
\def\doinitializepaper%
{\bgroup
\berekeninteractiescherm
@@ -314,6 +370,8 @@
{\the\papierhoogte}%
\egroup}
+\let\@@pcscreendata\empty
+
\def\dosetupinteractionscreens% met a, b en \number
{\doifnot{\@@pcstatus}{\v!start}
{\bgroup
@@ -324,8 +382,16 @@
\v!bookmark=>\!!counte=2,
\s!unknown=>\!!counte=0,
\s!default=>\!!counte=0]%
- \showmessage{\m!interactions}{1} % niet waterdicht
- {\@EA\withoutpt\the\!!widtha,\@EA\withoutpt\the\!!heighta}%
+ \edef\temp%
+ {{\number\rugoffset}{\number\kopoffset}%
+ {\number\!!widtha}{\number\!!heighta}%
+ {\the\!!counte}}%
+ \doifnot{\the\!!widtha\the\!!heighta}{\@@pcscreendata}
+ {\xdef\@@pcscreendata{\the\!!widtha\the\!!heighta}%
+ \showmessage{\m!interactions}{1} % niet waterdicht
+ {\@EA\withoutpt\the\!!widtha,\@EA\withoutpt\the\!!heighta}}%
+ % need to be split: dimensions for each page
+ % and mode per document and only once !
\dosetupscreen
{\number\rugoffset}{\number\kopoffset}
{\number\!!widtha}{\number\!!heighta}
@@ -339,6 +405,8 @@
\let\setupinteractionscreens\dosetupinteractionscreens
\fi}
+\appendtoks \setupinteractionscreens \to \everyshipout
+
\def\stelinteractieschermin%
{\dosingleempty\dostelinteractieschermin}
@@ -610,7 +678,7 @@
\c!achtergrond=\locationboxbackground,
#2]
{\dolocationattributes{#1}\c!letter\c!kleur{#3}}}%
- \hbox{#4{\box\locationbox}}}%{\copy\locationbox}}}
+ \hbox{#4{\box\locationbox}}}
\def\setlocationboxyes#1[#2]#3[#4]%
{\ifx\currentouterreference\empty
@@ -657,21 +725,11 @@
\global\skippedmenuitemtrue
\fi}
-%\def\setlocationbox#1[#2]#3[#4]%
-% {\doifinstringelse{#4}{\getvalue{#1\c!blokkade}}
-% {\setlocationboxnop{#1}[#2]{#3}[#4]}
-% {\doifreferencefoundelse{#4}
-% {\setlocationboxyes{#1}[#2]{#3}[#4]}
-% {\setlocationboxnop{#1}[#2]{#3}[#4]%
-% \unknownreference{#4}}}}
-
\def\setlocationbox#1[#2]#3[#4]%
{\doifreferencepermittedelse{#4}{\getvalue{#1\c!blokkade}}
{\setlocationboxyes{#1}[#2]{#3}[#4]}
{\setlocationboxnop{#1}[#2]{#3}[#4]}}
-%\dolocationattributes{#1}\c!letter\c!kleur{#3}}}%
-
\def\dodosetlocationcommanditem#1#2#3[#4]#5\\%
{\bgroup
\leavevmode
@@ -712,6 +770,8 @@
\unskip
\getvalue{\??am#1#5}}
+\newcounter\currentamposition
+
\def\setamboxcommands#1#2%
{\def\@@amboxcommand##1\\%
{\bgroup
@@ -721,26 +781,31 @@
\fi
\egroup
\ignorespaces}%
+ \doglobal\newcounter\currentamposition %%% experiment
\def\raw[##1]##2\\%
{\@@amboxcommand\naarbox{\ignorespaces##2\unskip}[##1]\\}%
\def\but[##1]##2\\%
- {\@@amboxcommand\setlocationbox{\??am#1}[]{\ignorespaces##2\unskip}[##1]\\}%
+ {\@@amboxcommand\do@@amposition{#1}{##1}{\setlocationbox{\??am#1}[]{\ignorespaces##2\unskip}[##1]}\\}%
\def\got[##1]##2\\% pas op! offset
{\@@amboxcommand\setlocationbox{\??am#1}[\c!kader=\v!uit,\c!achtergrond=]{\ignorespaces##2\unskip}[##1]\\}%
\def\nop##1\\%
{\@@amboxcommand\phantom{\localframed[\??am#1][]{}}\\}%
\def\txt##1\\%
{\@@amboxcommand\localframed[\??am#1][\c!kader=\v!uit,\c!achtergrond=]{\ignorespaces##1\unskip}\\}%
- \def\rul##1\\%
+ \def\rul##1\\% ook \do@@amposition !
{\@@amboxcommand\localframed[\??am#1][]{\ignorespaces##1\unskip}\\}%
\def\com##1\\%
{\ignorespaces##1\unskip\ignorespaces}}
+\ifx\do@@amposition\undefined
+ \let\do@@amposition\gobbletwoarguments % hook for positional thingies
+\fi
+
\def\@@amhbox#1#2#3#4%
{\testinteractiemenu{#3}%
\iflocationmenupermitted
\bgroup
-\showcomposition
+ \showcomposition
\def\dolocationcommand##1%
{\dosetlocationcommanditem{#3}{##1}}%
\dimen0=\zetbreedte
@@ -751,6 +816,7 @@
\setbox0=\hbox to \dimen0
{\forgetall
\executeamboxcommands{#3}{#4}\c!links\c!midden\c!rechts}%
+ \setbox0=\hbox{\do@@ammenuposition{#3}{\box0}}%
\wd0=\zetbreedte
% geen \ht=#2 setting (yet)
\hskip-\pagebackgroundhoffset
@@ -765,7 +831,7 @@
{\testinteractiemenu{#3}%
\iflocationmenupermitted
\bgroup
-\showcomposition
+ \showcomposition
\dimen0=\teksthoogte
\advance\dimen0 by \pagebackgroundvoffset
\advance\dimen0 by \pagebackgroundvoffset
@@ -777,6 +843,7 @@
\stelblankoin[\v!standaard]% % (tijdelijk) is aangepast.
\hsize#2\relax
\executeamboxcommands{#3}{#4}\c!voor\c!tussen\c!na}%
+ \setbox0=\vbox{\hbox{\do@@ammenuposition{#3}{\box0}}}%
\setbox0=\vbox
{\vskip-\pagebackgroundvoffset
\vskip\getvalue{\??am#3\c!bovenoffset}%
@@ -791,6 +858,10 @@
#1\relax
\fi}
+\ifx\do@@ammenuposition\undefined
+ \let\do@@ammenuposition\gobbleoneargument % hook for positional thingies
+\fi
+
\setvalue{\??am\s!do\v!rechts}%
{\@@amvbox{\dodummypageskip\v!rechts}\rechterrandbreedte}
@@ -876,9 +947,13 @@
\def\dodefinieerinteractiemenu[#1][#2][#3]%
{\ConvertToConstant\doifelse{#3}{}
{\setvalue{\??am\c!menu#1}%
- {\extendedmenufalse\dointeractiemenu{#1}{#2}}}
+ {\extendedmenufalse\dointeractiemenu{#1}{#2}}%
+ \setvalue{\@@dodolijstelement#1}%
+ {\def\dosomelijstelement{\dodomenulijstelement{#1}}}} % of #2 ?
{\setvalue{\??am\c!menu#1}%
{\extendedmenufalse\dointeractiemenu{#1}{}}%
+ \setvalue{\@@dodolijstelement#1}%
+ {\def\dosomelijstelement{\dodomenulijstelement{#1}}}%
\presetlocalframed[\??am#1]%
\letvalue{\??am#1\c!blokkade}\empty
\edef\!!stringe{\getvalue{\??am#2}}%
@@ -905,6 +980,23 @@
\def\definieerinteractiemenu%
{\dotripleempty\dodefinieerinteractiemenu}
+\def\dodomenulijstelement#1#2#3#4#5#6#7%
+ {\setbox0=\hbox
+ {\let\gotolocation\gobbleoneargument % hack to catch last []
+ \docheckrealreferencepage{#7}%
+ \setlocationboxyes
+ {\??am#1}% % needed !
+ []% no settings
+ {\doifelsenothing{\??li#2\c!maxbreedte}
+ {#5}
+ {\limitatetext
+ {#5}
+ {\getvalue{\??li#2\c!maxbreedte}}
+ {\unknown}}}% % needed !
+ []}% normally the destination, catch by gobble
+ \@@amboxcommand\do@@amposition{#1}{#7}% beware, we pass the pagenumber
+ {\ignorespaces\linklisttoelement{#2}{#3}{#6}{#7}{\box0}\unskip}\\}
+
\processbetween{\e!interactiemenu}\dostartinteractiemenu
\def\dostartinteractiemenu#1%
@@ -1546,8 +1638,11 @@
\def\stopprofiel%
{\processprofile1[#1]%
\egroup}%
- \DoAfterFi\processprofile0[#1]%
- \fi}
+ \def\next{\processprofile0[#1]}% % \DoAfterFi \processprofile0[#1]%
+ \else % ^^^^^^^^^^ will be obsolete
+ \let\next\relax % since ugly and never used
+ \fi
+ \next}
\let\stopprofiel=\relax
@@ -1962,22 +2057,26 @@
% text, the symbols scale down.
% \stopcommentaar
+% jammer, tussen/midden had erin gemoeten; \c!commando toevoegen
+
+\def\registermenucommand#1%
+ {\noindent#1\space}
+
\def\doregistermenubuttons[#1][#2]% [menu id] [register]
{\bgroup
\ifsecondargument
\stelinteractiemenuin
[#1][\c!onbekendeverwijzing=\v!ja,\c!zelfdepagina=\v!ja]%
\def\docommando##1%
- {\noindent
- \menubutton[#1]{##1}[#2:##1]%
- \space}%
+ {\registermenucommand{\menubutton[#1]{##1}[#2:##1]}}%
\else
\def\docommando##1%
- {\noindent
- \button[\c!onbekendeverwijzing=\v!ja,\c!zelfdepagina=\v!ja]{##1}[#1:##1]%
- \space}%
+ {\registermenucommand
+ {\button
+ [\c!onbekendeverwijzing=\v!ja,\c!zelfdepagina=\v!ja]
+ {##1}[#1:##1]}}%
\fi
- \handletokens abcdefghijklmnopqrstuvwxyz\with\docommando
+ \handletokens abcdefghijklmnopqrstuvwxyz\with\docommando % moet anders
\egroup}
\def\registermenubuttons%
@@ -2040,6 +2139,7 @@
\stelinteractiemenuin
[\v!links,\v!rechts,\v!boven,\v!onder]
[\c!offset=.25em,
+ \c!positie=\v!nee,
\c!kader=\v!aan,
\c!achtergrond=,
\c!achtergrondkleur=,
diff --git a/tex/context/base/core-itm.tex b/tex/context/base/core-itm.tex
index 702c5fe5d..d62127e42 100644
--- a/tex/context/base/core-itm.tex
+++ b/tex/context/base/core-itm.tex
@@ -29,6 +29,14 @@
9: aktualne ne vice nez -- urovne/urovni vyctu
\stopmessages
+\startmessages italian library: layouts
+ 9: attualmente non più di -- livelli di elencazione
+\stopmessages
+
+\startmessages norwegian library: layouts
+ 9: for øyeblikket maksimalt -- nivåer i opplisting
+\stopmessages
+
\unprotect
% - meerdere niveaus (moet niet moeilijk zijn)
@@ -111,6 +119,8 @@
{\getparameters[\??op\itemlevel][#2]}%
{\getparameters[\??op#1][#2]}}
+\newconditional\inlinelistitem \setfalse\inlinelistitem
+
\def\dododostelopsomminginconstant[#1][#2#3#4]% * permits [2]
{\processaction
[#2#3#4]
@@ -125,6 +135,7 @@
\v!inmarge*=>{\doassign[\??op#1][\c!breedte=-2em]}, % signal
\v!opmarge*=>\doifnot{#1}{1}{\doassign[\??op#1][\c!breedte=0em]}, % signal
\v!kolommen*=>\packitems,
+\v!intekst*=>\settrue\inlinelistitem, % new
\v!los*=>\optimizeitemsfalse,
\v!alinea*=>{\paragraphitemstrue
\packitems},
@@ -213,7 +224,9 @@
\setgvalue{\??op\c!symbool\s!local\itemlevel}%
{\convertnumber{#1}{\countervalue{\s!itemcount\itemlevel}}}%
\def\listitem%
- {\getvalue{\??op\c!symbool\s!local\itemlevel}\tempsymbool}%
+ {\getvalue{\??op\itemlevel\c!links}% new
+ \getvalue{\??op\c!symbool\s!local\itemlevel}\tempsymbool
+ \getvalue{\??op\itemlevel\c!rechts}}% new
\let\docommando\gobbleoneargument}
{\let\listitem\empty}}}
@@ -230,9 +243,25 @@
\multiply#2 by \getvalue{\??op#1\c!factor}\relax
\advance#2 by \getvalue{\??op#1\c!breedte}\relax}
+% The next conditionals deal with \item \startitemize. It
+% looks like a hack to skip back, but that way we preserve
+% the indentation and bullet placement. It's a rather
+% untested feature.
+
+\newconditional\concatnextitem \setfalse\concatnextitem
+\newconditional\autoconcatnextitem \settrue \autoconcatnextitem
+\newsignal \itemsignal
+
\def\dodostartopsomming[#1][#2]%
- {\ifhmode
- \par
+ {\setfalse\inlinelistitem % new, no indent (leftskip)
+ \setfalse\concatnextitem % new, concat
+ \ifhmode
+ \ifconditional\autoconcatnextitem % new, concat
+ \ifdim\lastskip=\itemsignal % new, concat
+ \settrue\concatnextitem % new, concat
+ \fi % new, concat
+ \fi % new, concat
+ \par
\fi
\ifnum\itemlevel=\maxitemlevel\relax
\showmessage{\m!layouts}{9}{\maxitemlevel}%
@@ -351,7 +380,9 @@
\fi\fi
\calculatelistwidth{\itemlevel}{\dimen0}%
\ifdim\dimen0>\!!zeropoint\relax
+\ifconditional\inlinelistitem\else
\advance\leftskip by \dimen0\relax
+\fi
\fi}
\def\dostartopsomming[#1][#2]%
@@ -445,11 +476,15 @@
\else
\calculatelistwidth{\itemlevel}{\dimen0}%
\fi
+\ifconditional\inlinelistitem
+ \hbox to \dimen0{\ifsubsom\llap{+}\fi\box8\hfill}%
+\else
\llap{\hbox to \dimen0{\ifsubsom\llap{+}\fi\box8\hfill}}%
+\fi
\fi
\setevalue{\??op\c!symbool\itemlevel}%
- %{\getvalue{\??op\c!symbool\s!local\itemlevel}}% problems with \uchar
- {\noexpand\getvalue{\??op\c!symbool\s!local\itemlevel}}%
+ {\getvalue{\??op\c!symbool\s!local\itemlevel}}% still problems with \uchar ?
+ %{\noexpand\getvalue{\??op\c!symbool\s!local\itemlevel}}% no, spoils subrefs
\kopsomfalse
\subsomfalse
\symsomfalse
@@ -459,6 +494,9 @@
\def\complexdosom[#1]%
{\par
\ignorespaces
+ \ifconditional\concatnextitem % new, concat
+ \dosomebreak\nobreak % new, concat
+ \fi % new, concat
\doadvanceitem
\ifnum\itemcolumndepth=0\relax\ifnum\noflistelements>0\relax
\dosomebreak\nobreak
@@ -483,6 +521,11 @@
\else
\itemuse\c!tussen
\fi
+ \ifconditional\concatnextitem % new, concat
+ \vskip-\lastskip % new, concat
+ \vskip-\lineheight % new, concat
+ \nobreak % new, concat
+ \fi % new, concat
\ignorespaces
\dolistitem
\ifpackeditems
@@ -498,6 +541,8 @@
\rawreference{\s!lst}{#1}{\itemreference}%
\egroup}}%
\strut % added 11-08-99
+ \setfalse\concatnextitem % new, concat
+ \hskip\itemsignal % new, concat
\ignorespaces}
\def\complexsom[#1]#2\par% todo: no two pass data
diff --git a/tex/context/base/core-lst.tex b/tex/context/base/core-lst.tex
index a9e4d4142..75d8e8649 100644
--- a/tex/context/base/core-lst.tex
+++ b/tex/context/base/core-lst.tex
@@ -56,6 +56,12 @@
% \schrijfwegnaarlijst
% \endgroup}}
+% Auto cross document links work by either using logical or
+% page references, depending on the general settings. The
+% locations are stored in global references where the auto tag
+% number uses the text container. We use reference mapping
+% (define reference) to keep track of the current ref.
+
\def\doschrijfnaarlijst#1#2#3#4%
{\doifvalue{\??li#1\c!status}{\v!start}
{\begingroup
@@ -66,24 +72,26 @@
{\def\dopaginanummer{0}}%
% niet waterdicht, wat te doen met figuren en zo
% first hack: scheelt rommel, second hack: alleen koppen
- \ExpandBothAfter\rawdoifinsetelse{#1}{\crossdocumentelements}
+ \doifelsevalue{\??rf#1\c!status}{\v!start}
{\doif{\@@sectionlevel\@@sectie}{0}{\autocrossdocumentfalse}}
{\autocrossdocumentfalse}%
- % blijft nog wat zwakjes
+ % blijft nog wat zwakjes en inefficient
\ifautocrossdocument
\bgroup
- \thisisdestination{#1::\sectionformat}%
+ \thisisnextinternal{#1}%
+ %\thisisdestination{#1::\sectionformat}%
\@EA\setsectieenkoppeling\@EA{#1}%
\edef\currentlevel{\@@sectionlevel\@@sectie}%
- \def\docommando##1%
- {\def\dodocommando####1%
- {\setsectieenkoppeling{####1}%
- \def\level{\@@sectionlevel\@@sectie}%
- \ifnum\level>\currentlevel
- \expanded{\definereference[##1::####1][\v!geen]}%
- \else\ifnum\level=\currentlevel
- \expanded{\definereference[##1::####1][##1::{####1::\sectionformat}]}%
- \fi\fi}%
+ \def\docommando##1%
+ {\def\dodocommando####1%
+ {\doifvalue{\??rf####1\c!status}{\v!start}
+ {\setsectieenkoppeling{####1}%
+ \def\level{\@@sectionlevel\@@sectie}%
+ \ifnum\level>\currentlevel
+ \expanded{\definereference[##1::####1][\v!geen]}%
+ \else\ifnum\level=\currentlevel
+ \expanded{\definereference[##1::####1][##1::{####1::\sectionformat}]}%
+ \fi\fi}}%
\processcommacommand[\crossdocumentelements]\dodocommando}%
\processcommacommand[\crossdocumentreferences]\docommando
\egroup
@@ -301,26 +309,28 @@
\strut\splitlistsymbol\getvalue{\??li#1\c!scheider}%
\doifvalue{\??li#1\c!label}{\v!ja}{\rightlabeltext{#1}}}]}
+\def\@@dodolijstelement{dodolijstelement}
+
\def\dosomelijstelement#1#2#3{#1 #2 \translatednumber[#3]}
-\def\dodolijstelementa{\let\dosomelijstelement\dodofixdlijstelementABC}
-\def\dodolijstelementb{\let\dosomelijstelement\dodofixdlijstelementABC}
-\def\dodolijstelementc{\let\dosomelijstelement\dodofixdlijstelementABC}
-\def\dodolijstelementd{\let\dosomelijstelement\dodofixdlijstelementD}
-\def\dodolijstelemente{\let\dosomelijstelement\dodofixdlijstelementE}
-\def\dodolijstelementf{\let\dosomelijstelement\dodofixdlijstelementF}
-\def\dodolijstelementg{\let\dosomelijstelement\dodofixdlijstelementG}
+\setvalue{\@@dodolijstelement a}{\let\dosomelijstelement\dodofixdlijstelementABC}
+\setvalue{\@@dodolijstelement b}{\let\dosomelijstelement\dodofixdlijstelementABC}
+\setvalue{\@@dodolijstelement c}{\let\dosomelijstelement\dodofixdlijstelementABC}
+\setvalue{\@@dodolijstelement d}{\let\dosomelijstelement\dodofixdlijstelementD}
+\setvalue{\@@dodolijstelement e}{\let\dosomelijstelement\dodofixdlijstelementE}
+\setvalue{\@@dodolijstelement f}{\let\dosomelijstelement\dodofixdlijstelementF}
+\setvalue{\@@dodolijstelement g}{\let\dosomelijstelement\dodofixdlijstelementG}
-\setvalue{dodolijstelement\v!geen}%
+\setvalue{\@@dodolijstelement\v!geen}%
{\def\dosomelijstelement{\dodofreevlijstelement}}
-\setvalue{dodolijstelement\v!vertikaal}%
+\setvalue{\@@dodolijstelement\v!vertikaal}%
{\def\dosomelijstelement{\dodofreevlijstelement}}
-\setvalue{dodolijstelement\v!horizontaal}%
+\setvalue{\@@dodolijstelement\v!horizontaal}%
{\def\dosomelijstelement{\dodofreehlijstelement}}
-\setvalue{dodolijstelement\v!commando}%
+\setvalue{\@@dodolijstelement\v!commando}%
{\let\dosomelijstelement\dodocommandlijstelement}
% Here I learned something new: \leftskip can be changed
@@ -336,7 +346,7 @@
\def\dolijstelement#1#2#3#4#5#6% pas op: wordt ook elders gedefinieerd
{\doiftoclevelelse[#5]
- {\getvalue{dodolijstelement\getvalue{\??li#1\c!variant}}%
+ {\getvalue{\@@dodolijstelement\getvalue{\??li#1\c!variant}}%
%\showcomposition
\let\@@iabreedte=\!!zeropoint % moet boolean worden
\bgroup
@@ -589,11 +599,12 @@
\def\strippedlistentry[#1::#2::#3]{#1::#2}%
\def\linklisttoelement#1#2#3#4#5% % list location format page data
- {\ifautocrossdocument
- \gotodestination{}{}{#1::\strippedlistentry[#3]}{#4}{#5}%
- \else
+ {%\ifautocrossdocument
+ % \gotodestination{}{}{#1::\strippedlistentry[#3]}{#4}{#5}%
+ %\else
\gotonextinternal{#1}{#2}{#4}{#5}%
- \fi}
+ %\fi}
+ }
\def\schrijfnaarlijst[#1]#2#3%
{\doifsomething{#1}
diff --git a/tex/context/base/core-mat.tex b/tex/context/base/core-mat.tex
index 1cc32fcb6..76f60ff41 100644
--- a/tex/context/base/core-mat.tex
+++ b/tex/context/base/core-mat.tex
@@ -44,7 +44,7 @@
%D and \type{sub}.
\global\let\normalsuper=^
-\global\let\normalsub =_
+\global\let\normalsuber=_
\newcount\supersubmode
@@ -53,16 +53,16 @@
\appendtoks \advance\supersubmode by 1 \to \everysupersub
% \def\dodosuper#1{\normalsuper{\the\everysupersub#1}}
-% \def\dodosub #1{\normalsub {\the\everysupersub#1}}
+% \def\dodosuber#1{\normalsuber{\the\everysupersub#1}}
%
% \def\dosuper{\ifx\next\bgroup\expandafter\dodosuper\else\normalsuper\fi}
-% \def\dosub {\ifx\next\bgroup\expandafter\dodosub \else\normalsub \fi}
+% \def\dosuber{\ifx\next\bgroup\expandafter\dodosuber\else\normalsuber\fi}
%
-% \def\super {\futurelet\next\dosuper}
-% \def\sub {\futurelet\next\dosub }
+% \def\super{\futurelet\next\dosuper}
+% \def\suber{\futurelet\next\dosuber}
\def\super#1{\normalsuper{\the\everysupersub#1}}
-\def\sub #1{\normalsub {\the\everysupersub#1}}
+\def\suber#1{\normalsuber{\the\everysupersub#1}}
%D \macros
%D {enablesupersub}
@@ -75,9 +75,9 @@
\catcode`\_=\@@active
\gdef\enablesupersub%
{\catcode`\^=\@@active
- \def^{\ifmmode\expandafter\super\else\expandafter\donormalsuper\fi}%
+ \def^{\ifmmode\expandafter\super\else\expandafter\normalsuper\fi}%
\catcode`\_=\@@active
- \def_{\ifmmode\expandafter\sub \else\expandafter\donormalsub \fi}}
+ \def_{\ifmmode\expandafter\suber\else\expandafter\normalsuber\fi}}
\egroup
%D \macro
diff --git a/tex/context/base/core-mps.tex b/tex/context/base/core-mps.tex
deleted file mode 100644
index 724402983..000000000
--- a/tex/context/base/core-mps.tex
+++ /dev/null
@@ -1,143 +0,0 @@
-%D \module
-%D [ file=core-mps,
-%D version=1999.07.10,
-%D title=\CONTEXT\ Core Macros,
-%D subtitle=\METAPOST\ Connectivity,
-%D author=Hans Hagen,
-%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
-%C
-%C This module is part of the \CONTEXT\ macro||package and is
-%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
-%C details.
-
-\writestatus{loading}{Context Core Macros / MetaPost Connectivity}
-
-\unprotect
-
-%D Let's first preload a few auxiliary \METAPOST\ files.
-
-\appendtoks
- input mp-tool ;
- input mp-spec ;
- _inline_shading_ := true ;
-\to \MPinitializations
-
-%D We save the number of graphics for the sake of \TEXEXEC.
-
-\newcounter\totalnumberofMPgraphics
-\def\thecurrentMPgraphic{\the\currentMPgraphic}
-
-\appendtoks
- \savecurrentvalue\totalnumberofMPgraphics\thecurrentMPgraphic
-\to \everybye
-
-%D The next few macros tell \METAPOST\ how the \CONTEXT\
-%D pagebody looks.
-
-\def\writeMPpagedata%
- {\bgroup
- \def\writeMPpagedata ##1 ##2%
- {\scratchdimen=##2%
- \immediate\write\scratchwrite{##1 := \the\scratchdimen;}}%
- \immediate\openout\scratchwrite=\TEXbufferfile{mp-state}\relax
- \writeMPpagedata PaperHeight \papierhoogte
- \writeMPpagedata PaperWidth \papierbreedte
- \writeMPpagedata PrintPaperHeight \printpapierhoogte
- \writeMPpagedata PrintPaperWidth \printpapierbreedte
- \writeMPpagedata TopSpace \kopwit
- \writeMPpagedata BackSpace \rugwit
- \writeMPpagedata MakeupHeight \zethoogte
- \writeMPpagedata MakeupWidth \zetbreedte
- \writeMPpagedata TopHeight \bovenhoogte
- \writeMPpagedata TopDistance \bovenafstand
- \writeMPpagedata HeaderHeight \hoofdhoogte
- \writeMPpagedata HeaderDistance \hoofdafstand
- \writeMPpagedata TextHeight \teksthoogte
- \writeMPpagedata FooterDistance \voetafstand
- \writeMPpagedata FooterHeight \voethoogte
- \writeMPpagedata BottomDistance \onderafstand
- \writeMPpagedata BottomHeight \onderhoogte
- \writeMPpagedata LeftEdgeWidth \linkerrandbreedte
- \writeMPpagedata LeftEdgeDistance \linkerrandafstand
- \writeMPpagedata LeftMarginWidth \linkermargebreedte
- \writeMPpagedata LeftMarginDistance \linkermargeafstand
- \writeMPpagedata TextWidth \tekstbreedte
- \writeMPpagedata RightMarginDistance \rechtermargeafstand
- \writeMPpagedata RightMarginWidth \rechtermargebreedte
- \writeMPpagedata RightEdgeDistance \rechterrandafstand
- \writeMPpagedata RightEdgeWidth \rechterrandbreedte
- \doifelsevalue{\??ma\v!pagina\c!offset}{\v!overlay}
- {\writeMPpagedata PageOffset {0pt}}
- {\writeMPpagedata PageOffset {\getvalue{\??ma\v!pagina\c!offset}}}%
- \writeMPpagedata PageDepth {\getvalue{\??ma\v!pagina\c!diepte}}%
- \immediate\closeout\scratchwrite
- \egroup}
-
-\prependtoks \flushMPpagedata \to \everyMPgraphic
-
-\let\flushMPpagedata\relax
-
-\def\setMPpagedata%
- {\gdef\flushMPpagedata{\writeMPpagedata\global\let\flushMPpagedata\relax}}
-
-%D We have to make sure that the right page data is loaded,
-%D especially when we run multiple jobs on one path.
-
-\prependtoks \prepareMPpagedata \to \everyMPgraphic
-
-\def\prepareMPpagedata%
- {\appendtoks
- input mp-page ;
- def LoadPageState =
- scantokens "input \TEXbufferfile{mp-state}" ;
- enddef ;
- \to \MPinitializations
- \let\prepareMPpagedata\relax}
-
-%D \macros
-%D {startuniqueMPgraphic, uniqueMPgraphic}
-%D
-%D This macros is probably of most use to myself, since I like
-%D to use graphics that adapt themselves. The next \METAPOST\
-%D kind of graphic is both unique and reused when possible.
-%D
-%D \starttypen
-%D \defineoverlay[example][\uniqueMPgraphic{test}]
-%D
-%D \startuniqueMPgraphic {test}
-%D draw unitsquare xscaled \overlaywidth yscaled \overlayheight ;
-%D \stopuniqueMPgraphic
-%D \stoptypen
-
-\long\def\startuniqueMPgraphic#1#2\stopuniqueMPgraphic%
- {\setvalue{MP:#1}%
- {\startreusableMPgraphic{\overlaystamp:#1}#2\stopreusableMPgraphic
- \reuseMPgraphic{\overlaystamp:#1}}}
-
-\def\uniqueMPgraphic#1%
- {\getvalue{MP:#1}}
-
-\def\overlaystamp%
- {\overlaywidth:\overlayheight:\overlaydepth:\overlaycolor}
-
-%D We redefine a macro from \type {supp-mps.tex}:
-
-\def\MPdatafile%
- {\bufferprefix mpd-\the\currentMPgraphic.tmp}
-
-%D We also have to make sure that \METAPOST\ knows this:
-
-\appendtoks
- if not known _data_prefix_ :
- string _data_prefix_ , _data_suffix_ ;
- fi ;
- _data_prefix_ := "\bufferprefix mpd-" ;
- _data_suffix_ := ".tmp" ;
-\to \MPinitializations
-
-%D Happy drawing.
-
-\protect
-
-\endinput
diff --git a/tex/context/base/core-mul.tex b/tex/context/base/core-mul.tex
index f358604e0..ec5578012 100644
--- a/tex/context/base/core-mul.tex
+++ b/tex/context/base/core-mul.tex
@@ -101,6 +101,40 @@
13: siroky plovouci objekt je presunut nad sloupce
\stopmessages
+\startmessages italian library: columns
+ title: colonne
+ 1: solo -- colonne possibili
+ 2: in alternativa, usare \string\filbreak
+ 3: problemi, disabilitare il bilanciamento
+ 4: float in cima non ancora supportato
+ 5: float in fondo non ancora supportato
+ 6: -- float(s) posticipate
+ 7: bilanciamento annullato dopo 100 passi
+ 8: bilanciamento in -- passo/i
+ 9: controllare seghettamento
+ 10: (meno di) una riga rimasta
+ 11: oggetto mobile troppo ampio per la colonna
+ 12: oggetto mobile spostata alla colonna successiva / --
+ 13: oggetto mobile ampio spostato sopra le colonne
+\stopmessages
+
+\startmessages norwegian library: columns
+ title: kolonner
+ 1: maksimalt -- kolonner
+ 2: bruk \string\filbreak\space som et alternativ
+ 3: problemer, slår av balansering
+ 4: flytblokker øverst er ikke støttet enda
+ 5: flytblokker nedert er ikke støttet enda
+ 6: -- flytblokk forskjøvet
+ 7: balansering avbrutt etter 100 iterasjoner
+ 8: balansert etter -- iterasjoner
+ 9: kontroller tekstlayout!
+ 10: (mindre enn) 1 linje igjen
+ 11: flytblokk for bredt for kolonna
+ 12: flytblokk forskjøvet til neste kolonne / --
+ 13: bred flytblokk forksjøvet til toppen av kolonnene
+\stopmessages
+
%D This completely new implementation can handle enough
%D situations for everyday documents, but is still far from
%D perfect. While at the moment the routine doesn't support
@@ -139,8 +173,8 @@
%D
%D \interface \type{\nofcolumns} \\
%D the number of columns \\
-%D \interface \type{\minbalancetoplines}
-%D the minimum number op balanced top lines
+%D \interface \type{\minbalancetoplines} \\
+%D the minimum number op balanced top lines \\
%D \interface \type{\betweencolumns} \\
%D the stuff between columns \\
%D \interface \type{\finaloutput{action}{box}} \\
@@ -205,6 +239,8 @@
%D
%D \interface \type{\finishcolumnbox} \\
%D do something special (a hook) \\
+%D \interface \type{\postprocesscolumnpagebox} \\
+%D do something with each columnbox (also a hook) \\
%D \interface \type{\postprocesscolumnbox} \\
%D do something with each columnbox (also a hook) \\
%D \interface \type{\postprocesscolumnline} \\
@@ -276,6 +312,20 @@
\newdimen\finalcolumnheights
\newcount\finalcolumnlines
+%D It's more convenient to use \type {\columnwidth} instead
+%D of messing around with boxes each time.
+
+\newdimen\columnwidth
+\newdimen\gutterwidth
+
+\def\determinecolumnwidth%
+ {\bgroup
+ \setbox\scratchbox=\hbox
+ {\setcolumnhsize
+ \global\columnwidth=\usercolumnwidth
+ \global\gutterwidth=\intercolumnwidth}%
+ \egroup}
+
%D During initialization the temporary boxes are allocated.
%D This enables us to use as much columns as we want, without
%D exhausting the pool of boxes too fast. We could have packed
@@ -451,7 +501,7 @@
\ifdim\partialpageheight>\!!zeropoint
\global\advance\vsize by -\partialpageheight
\fi
- \getinsertionheights\to\dimen0\\%
+ \getinsertionheights\to\dimen0\\%
\global\advance\vsize by -\dimen0
\ifgridsnapping % evt altijd, nog testen
\getnoflines\vsize
@@ -546,7 +596,7 @@
%D reasoning to find out what happens and maybe I'm making
%D some mistake, but it works.
%D
-%D Unvoiding box \type{\partialpage} is sometimes necessary,
+%D Voiding box \type{\partialpage} is sometimes necessary,
%D e.g. when there is no text given between \type{\begin..}
%D and \type{\end..}. The \type{\par} is needed!
@@ -554,9 +604,9 @@
{%\par
\vskip\lineheight\vskip-\lineheight % take footnotes into account
\dontshowcomposition
-\doflushcolumnfloat % added recently
- \doflushcolumnfloats % added recently
- \flushfootnotes
+ \doflushcolumnfloat % added recently
+ %\doflushcolumnfloats % no, since it results in wrong top floats
+ \flushfootnotes % before start of columns
\par
\ifbalancecolumns
\global\output={\continuousmulticolumnsout}%
@@ -645,6 +695,8 @@
\let\maxcolumnheight=\!!zeropoint
\let\maxcolumndepth =\!!zeropoint
+\newbox\columnpagebox
+
\def\setmaxcolumndimensions%
{\let\maxcolumnheight=\!!zeropoint
\let\maxcolumndepth =\!!zeropoint
@@ -656,6 +708,76 @@
\edef\maxcolumndepth{\the\dp\currentcolumnbox}%
\fi}}
+% \def\flushcolumnedpage%
+% {\bgroup
+% \forgetall
+% \setmulticolumnsout
+% \showcomposition
+% \setmaxcolumndimensions
+% \postprocesscolumns
+% \dohandleallcolumns % \hbox i.v.m. \showcomposition
+% {\global\setbox\currentcolumnbox=\hbox to \localcolumnwidth
+% {\box\currentcolumnbox
+% \global\wd\currentcolumnbox=\localcolumnwidth
+% \ifheightencolumns
+% \global\ht\currentcolumnbox=\fixedcolumnheight
+% \fi}}%
+% \setmaxcolumndimensions
+% \overlaycolumnfootnotes
+% \setbox0=\vbox
+% {\hbox to \finalcolumntextwidth
+% {\ifreversecolumns
+% \@EA\dohandlerevcolumns
+% \else
+% \@EA\dohandleallcolumns
+% \fi
+% {\finishcolumnbox{\hbox
+% {\ifx\finishcolumnbox\relax\else\strut\fi
+% \box\currentcolumnbox}}%
+% \hfil}%
+% \unskip}}%
+% \scratchdimen=\!!zeropoint
+% \dohandleallcolumns
+% {\ifdim-\ht\currenttopcolumnbox<\scratchdimen
+% \scratchdimen=-\ht\currenttopcolumnbox
+% \fi
+% \global\setbox\currenttopcolumnbox=\box\voidb@x}%
+% \advance\scratchdimen by \ht0
+% \setbox2=\hbox to \columntextwidth
+% {\vrule\!!width\!!zeropoint\!!height\scratchdimen\!!depth\dp0
+% \dostepwiserecurse{2}{\nofcolumns}{1}{\hfil\betweencolumns}\hfil}%
+% \setbox0=\hbox
+% {\box0\hskip-\columntextwidth\color[black]{\box2}}%
+% \ifvoid\partialpage \else
+% \ifgridsnapping % do you believe this junk?
+% \scratchdimen=\savedpagetotal
+% \advance\scratchdimen by -\ht\partialpage
+% \advance\scratchdimen by -\dp\partialpage
+% \advance\scratchdimen by -\topskip
+% \box\partialpage
+% \kern\scratchdimen
+% \else
+% \unvbox\partialpage
+% \fi
+% \fi
+% \global\partialpageheight=\!!zeropoint
+% \setvsize
+% \dosomebreak\nobreak
+% \ifgridsnapping \else
+% \dimen0=\topskip
+% \advance\dimen0 by -\openstrutheight
+% \nointerlineskip
+% \vskip-\dimen0
+% \fi
+% \prevdepth\openstrutdepth
+% \nointerlineskip
+% \dp0=\!!zeropoint
+% \global\finalcolumnheights=\ht0
+% \getnoflines\finalcolumnheights
+% \global\finalcolumnlines=\noflines
+% \box0
+% \egroup}
+
\def\flushcolumnedpage%
{\bgroup
\forgetall
@@ -672,7 +794,7 @@
\fi}}%
\setmaxcolumndimensions
\overlaycolumnfootnotes
- \setbox0=\vbox
+ \setbox\columnpagebox=\vbox
{\hbox to \finalcolumntextwidth
{\ifreversecolumns
\@EA\dohandlerevcolumns
@@ -690,12 +812,18 @@
\scratchdimen=-\ht\currenttopcolumnbox
\fi
\global\setbox\currenttopcolumnbox=\box\voidb@x}%
- \advance\scratchdimen by \ht0
- \setbox2=\hbox to \columntextwidth
- {\vrule\!!width\!!zeropoint\!!height\scratchdimen\!!depth\dp0
+ \advance\scratchdimen by \ht\columnpagebox
+ \setbox\scratchbox=\hbox to \columntextwidth
+ {\vrule
+ \!!width\!!zeropoint
+ \!!height\scratchdimen
+ \!!depth\dp\columnpagebox
\dostepwiserecurse{2}{\nofcolumns}{1}{\hfil\betweencolumns}\hfil}%
- \setbox0=\hbox
- {\box0\hskip-\columntextwidth\color[black]{\box2}}%
+ \setbox\columnpagebox=\hbox
+ {\box\columnpagebox
+ \hskip-\columntextwidth
+ \color[black]{\box\scratchbox}}%
+ \postprocesscolumnpagebox % new, acts upon \box\columnpagebox
\ifvoid\partialpage \else
\ifgridsnapping % do you believe this junk?
\scratchdimen=\savedpagetotal
@@ -712,18 +840,18 @@
\setvsize
\dosomebreak\nobreak
\ifgridsnapping \else
- \dimen0=\topskip
- \advance\dimen0 by -\openstrutheight
+ \scratchdimen=\topskip
+ \advance\scratchdimen by -\openstrutheight
\nointerlineskip
- \vskip-\dimen0
+ \vskip-\scratchdimen
\fi
\prevdepth\openstrutdepth
\nointerlineskip
- \dp0=\!!zeropoint
- \global\finalcolumnheights=\ht0
+ \dp\columnpagebox=\!!zeropoint
+ \global\finalcolumnheights=\ht\columnpagebox
\getnoflines\finalcolumnheights
\global\finalcolumnlines=\noflines
- \box0
+ \box\columnpagebox
\egroup}
%D In case one didn't notice, finaly \type{\finishcolumnbox} is
@@ -803,8 +931,9 @@
%D We default to doing nothing!
-\let\postprocesscolumnline=\undefined
-\let\postprocesscolumnbox =\undefined
+\let\postprocesscolumnline =\undefined
+\let\postprocesscolumnbox =\undefined
+\let\postprocesscolumnpagebox=\relax
%D \macros
%D {reversecolumnstrue}
@@ -1344,17 +1473,19 @@
\fi}
\def\docolumnroomfloat%
- {\ifnofloatpermitted
+ {\ifpostponecolumnfloats
+ \global\roomforfloatfalse
+ \else\ifnofloatpermitted
\global\roomforfloatfalse
\else
\bgroup
\getcolumnstatus\column\count255\total\dimen0\goal\dimen2\\%
\advance\dimen0 by 2\openlineheight % nog nodig ?
-%\ifnum\count255=\nofcolumns
-% \getinsertionheight
-% %\message{\insertionheight}\wait
-% \advance\dimen0 by \insertionheight
-%\fi
+ %\ifnum\count255=\nofcolumns
+ % \getinsertionheight
+ % %\message{\insertionheight}\wait
+ % \advance\dimen0 by \insertionheight
+ %\fi
\setbox\scratchbox=\vbox % tricky met objecten ?
{\blanko[\@@bkvoorwit]
\snaptogrid\vbox{\copy\floatbox}}%
@@ -1371,7 +1502,7 @@
\global\roomforfloatfalse
\fi
\egroup
- \fi}
+ \fi\fi}
%D Flushing one float is done as soon as possible, i.e.
%D \type{\everypar}. This means that (at the moment)
@@ -1380,7 +1511,7 @@
\newif\ifflushingcolumnfloats \flushingcolumnfloatstrue
\def\doflushcolumnfloat%
- {\ifflushingcolumnfloats\ifprocessingverbatim\else\ifsomefloatwaiting
+ {\ifpostponecolumnfloats\else\ifflushingcolumnfloats\ifprocessingverbatim\else\ifsomefloatwaiting
\bgroup
\forgetall
\let\doflushcolumnfloat=\relax
@@ -1390,10 +1521,10 @@
\ifdim\wd\floatbox>\hsize
\doresavefloat
\else
-% \setbox2=\vbox
-% {\blanko[\@@bkvoorwit]
-% \snaptogrid\vbox{\copy\floatbox}%
-% \blanko[\@@bknawit]
+ %\setbox2=\vbox
+ % {\blanko[\@@bkvoorwit]
+ % \snaptogrid\vbox{\copy\floatbox}%
+ % \blanko[\@@bknawit]
\setbox2=\vbox
{\blanko[\@@bkvoorwit]
\snaptogrid\vbox{\copy\floatbox}}%
@@ -1426,9 +1557,9 @@
\par
\ifdim\prevdepth<\!!zeropoint\relax % anders bovenaan kolom witruimte
\else
-\nobreak
+ \nobreak
\blanko[\@@bkvoorwit]
-\nobreak
+ \nobreak
\fi
\flushfloatbox
\blanko[\@@bknawit]
@@ -1436,7 +1567,7 @@
\fi
\fi
\egroup
- \fi\fi\fi}
+ \fi\fi\fi\fi}
%D This one looks complicated. Upto \type{\nofcolumns} floats
%D are placed, taking the width of a float into account. This
@@ -1453,76 +1584,81 @@
%D because of lining out the columns.
\def\doflushcolumnfloats%
- {\bgroup
- \forgetall
- \ifsomefloatwaiting
- \dimen8=\!!zeropoint
- \dimen4=\!!zeropoint
- \count0=0 % count0 can be used local
- \count2=\nofcolumns % count2 can be used local
- \dohandleallcolumns
- {\ifnum\count0>0\relax % the wide one's reserved space
- \global\setbox\currenttopcolumnbox=\vbox
- {\snaptogrid\vbox
- {\copy\currenttopcolumnbox
- \hbox{\vphantom{\copy\floatbox}}}
- \witruimte % nodig ?
- \blanko[\@@bknawit]}%
- \else
- \dogetfloat
- \ifdim\wd\floatbox>\hsize
- \dimen0=\wd\floatbox
- \advance\dimen0 by \intercolumnwidth
- \dimen2=\hsize
- \advance\dimen2 by \intercolumnwidth
-\advance\dimen0 by .5pt
-\advance\dimen2 by .5pt
- \divide\dimen0 by \dimen2
- \count0=\dimen0
- \advance\count0 by 1
- \ifnum\count0>\count2
- \doresavefloat
- \count0=0
- \else
- \dimen0=\count0\hsize
- \advance\dimen0 by \count0\intercolumnwidth
- \advance\dimen0 by -\intercolumnwidth
- \global\setbox\floatbox=\hbox to \dimen0
- %{\hss\hbox{\copy\floatbox}\hss}%
- {\processaction[\@@bkplaats] % how easy to forget
- [ \v!links=>\copy\floatbox\hss,
- \v!rechts=>\hss\copy\floatbox,
- \s!default=>\hss\copy\floatbox\hss,
- \s!unknown=>\hss\copy\floatbox\hss]}%
- \fi
- \showmessage{\m!columns}{13}{}%
- \else
- % \showmessage{\m!columns}{13}{}%
- \fi
- \ifdim\ht\floatbox>\!!zeropoint\relax
+ {\ifpostponecolumnfloats\else
+ \bgroup
+ \forgetall
+ \ifsomefloatwaiting
+ \dimen8=\!!zeropoint
+ \dimen4=\!!zeropoint
+ \count0=0 % count0 can be used local
+ \count2=\nofcolumns % count2 can be used local
+ \dohandleallcolumns
+ {\ifnum\count0>0\relax % the wide one's reserved space
\global\setbox\currenttopcolumnbox=\vbox
{\snaptogrid\vbox
{\copy\currenttopcolumnbox
- \copy\floatbox}
- \witruimte % nodig ?
- \blanko[\@@bknawit]}%
+ \hbox{\vphantom{\copy\floatbox}}}
+ \witruimte % nodig ?
+ \blanko[\@@bknawit]}%
+ \else
+ \dogetfloat
+\ifdim\wd\floatbox>\finalcolumntextwidth % better somewhere else too
+ \global\setbox\floatbox=\hbox to \finalcolumntextwidth{\hss\box\floatbox\hss}%
+\fi % otherwise the graphic may disappear
+ \ifdim\wd\floatbox>\hsize
+ \dimen0=\wd\floatbox
+ \advance\dimen0 by \intercolumnwidth
+ \dimen2=\hsize
+ \advance\dimen2 by \intercolumnwidth
+ \advance\dimen0 by .5pt % hm, why 1
+ \advance\dimen2 by .5pt % hm, why 2
+ \divide\dimen0 by \dimen2
+ \count0=\dimen0
+ \advance\count0 by 1
+ \ifnum\count0>\count2
+ \doresavefloat
+ \count0=0
+ \else
+ \dimen0=\count0\hsize
+ \advance\dimen0 by \count0\intercolumnwidth
+ \advance\dimen0 by -\intercolumnwidth
+ \global\setbox\floatbox=\hbox to \dimen0
+ %{\hss\hbox{\copy\floatbox}\hss}%
+ {\processaction[\@@bkplaats] % how easy to forget
+ [ \v!links=>\copy\floatbox\hss,
+ \v!rechts=>\hss\copy\floatbox,
+ \s!default=>\hss\copy\floatbox\hss,
+ \s!unknown=>\hss\copy\floatbox\hss]}%
+ \fi
+ \showmessage{\m!columns}{13}{}%
+ \else
+ % \showmessage{\m!columns}{13}{}%
+ \fi
+ \ifdim\ht\floatbox>\!!zeropoint\relax
+ \global\setbox\currenttopcolumnbox=\vbox
+ {\snaptogrid\vbox
+ {\copy\currenttopcolumnbox
+ \copy\floatbox}
+ \witruimte % nodig ?
+ \blanko[\@@bknawit]}%
+ \fi
+ \dimen6=\ht\currenttopcolumnbox
+ \advance\dimen6 by \dp\currenttopcolumnbox
\fi
- \dimen6=\ht\currenttopcolumnbox
- \advance\dimen6 by \dp\currenttopcolumnbox
- \fi
- \ifdim\dimen4<\ht\currenttopcolumnbox
- \dimen4=\ht\currenttopcolumnbox
- \fi
- \advance\dimen8 by \dimen6
- \advance\count2 by -1
- \advance\count0 by -1 }%
- \setvsize
- \global\advance\vsize by -\dimen8
- \global\pagegoal=\vsize
- \else
- %\doflushfloats % does not snap!
- \fi
- \egroup}
+ \ifdim\dimen4<\ht\currenttopcolumnbox
+ \dimen4=\ht\currenttopcolumnbox
+ \fi
+ \advance\dimen8 by \dimen6
+ \advance\count2 by -1
+ \advance\count0 by -1 }%
+ \setvsize
+ \global\advance\vsize by -\dimen8
+ \global\pagegoal=\vsize
+ \else
+ %\doflushfloats % does not snap!
+ \fi
+ \egroup
+ \fi}
%D This were the multi||column routines. They can and need to
%D be improved but at the moment their behaviour is acceptable.
@@ -1534,9 +1670,7 @@
%D \normalizevbox{...}
%D \stoptypen
-\protect
-
-\endinput
+\protect \endinput
% border case, should fit on one page
%
diff --git a/tex/context/base/core-nav.tex b/tex/context/base/core-nav.tex
index acbbeec47..5bb611bf6 100644
--- a/tex/context/base/core-nav.tex
+++ b/tex/context/base/core-nav.tex
@@ -74,6 +74,9 @@
\doifelse{\@@iaklik}{\v!ja}
{\highlighthyperlinkstrue}
{\highlighthyperlinksfalse}%
+ \doifelse{\@@iasplitsen}{\v!ja}
+ {\locationsplittrue}
+ {\locationsplitfalse}%
\doifelse{\@@iascherm}{\v!nieuw}
{\gotonewwindowtrue}
{\gotonewwindowfalse}%
@@ -125,6 +128,7 @@
%D This macro stores the current strut values.
\newif\iflocationstrut
+\newif\iflocationsplit
\def\resetgoto%
{\global\let\@@ia@@hoogte=\!!zeropoint
@@ -319,7 +323,8 @@
\c!klik=\v!ja,
\c!scherm=,
%\c!openactie={\v!eerstepagina,AtOpenInitializeForm},
- \c!openactie={\v!eerstepagina,\v!ResetForm},
+ %\c!openactie={\v!eerstepagina,\v!ResetForm},
+ \c!openactie=\v!ResetForm,
\c!sluitactie=,
\c!openpaginaactie=,
\c!sluitpaginaactie=,
@@ -328,6 +333,7 @@
\c!letter=\v!vet,
\c!bereken=,
\c!strut=\v!ja,
+ \c!splitsen=\v!ja,
\c!kleur=interactioncolor,
\c!contrastkleur=interactioncontrastcolor,
\c!symboolset=,
diff --git a/tex/context/base/core-new.tex b/tex/context/base/core-new.tex
index 610d89aae..3119af447 100644
--- a/tex/context/base/core-new.tex
+++ b/tex/context/base/core-new.tex
@@ -48,8 +48,23 @@
%
% this one fails in removing system modes
+% \def\enablemode[#1]%
+% {\expanded{\addtocommalist{#1}\noexpand\currentmode}}
+
+%D Sometimes, we want to prevent a mode for being set. Think
+%D of situations where a style enables a mode, but an outer
+%D level style does not want that. Preventing can be
+%D considered a permanent disabling on forehand.
+
+\let\preventedmodes\empty
+
+\def\preventmode[#1]%
+ {\expanded{\addtocommalist{#1}\noexpand\preventedmodes}}
+
\def\enablemode[#1]%
- {\expanded{\addtocommalist{#1}\noexpand\currentmode}}
+ {\expanded
+ {\doifnotinset{#1}{\preventedmodes}
+ {\noexpand\addtocommalist{#1}\noexpand\currentmode}}}
\def\disablemode[#1]%
{\expanded{\removefromcommalist{#1}\noexpand\currentmode}}
diff --git a/tex/context/base/core-not.tex b/tex/context/base/core-not.tex
index 7b88a254b..89b411f7f 100644
--- a/tex/context/base/core-not.tex
+++ b/tex/context/base/core-not.tex
@@ -98,10 +98,12 @@
{\dosingleempty\dosetupfootnotes}
\def\dodofootnoterule%
- {\color
- [\@@vnlijnkleur]
- {\hrule\!!width.2\hsize\!!height\@@vnlijndikte\!!depth\!!zeropoint}
- \kern\strutdepth}
+ {\ifvmode
+ \color
+ [\@@vnlijnkleur]
+ {\hrule\!!width.2\hsize\!!height\@@vnlijndikte\!!depth\!!zeropoint}
+ \kern\strutdepth
+ \fi}
\def\dosetupfootnotes[#1]%
{\getparameters[\??vn][#1]%
@@ -150,6 +152,12 @@
\dimen\footins=\@@vnhoogte
\multiply\dimen\footins by \scratchcounter}
+\ifx\setfootnotehsize\undefined
+
+ \def\setfootnotehsize{\hsize=\@@vnbreedte} % can be overloaded
+
+\fi
+
\def\setcleverfootnotes%
{\def\startpushfootnote {\bgroup % wellicht ooit kopuitlijnen
\stelinmargein[\c!uitlijnen=\v!links]%
@@ -160,7 +168,8 @@
\def\stoppopfootnotes {}}
\def\setcolumnfootnotes%
- {\def\startpushfootnote {\setrigidcolumnhsize\@@vnbreedte\@@vnkolomafstand\@@vnn
+ {\def\startpushfootnote {\setfootnotehsize % possibly overloaded
+ \setrigidcolumnhsize\hsize\@@vnkolomafstand\@@vnn
\bgroup
\stelinmargein[\c!uitlijnen=\v!links]%
\getvalue{\e!start\??vn\??vn}}%
@@ -177,7 +186,7 @@
\stopvboxtohbox}%
\def\startpopfootnotes {\vbox\bgroup % \doifdimenelse
\doifnotinset{\@@vnbreedte}{\v!passend,\v!ruim}
- {\hsize=\@@vnbreedte}}%
+ {\setfootnotehsize}}%
\def\stoppopfootnotes {\convertvboxtohbox\egroup}}
%D The numbers that accompany a footnote are generated using
@@ -348,6 +357,8 @@
\def\dostartfootnote% nog gobble als in pagebody
{\bgroup
+ %\restorecatcodes % to be tested first
+ \ignorelines % makes footnotes work in \startlines ... \stoplines
\unskip\unskip
\ifdim\lastkern=\footnotesignal
\high{\kern\@@vnafstand}% gets the font right, hack !
@@ -374,7 +385,8 @@
\def\linkermargeafstand{\@@vnmargeafstand}%
\def\rechtermargeafstand{\@@vnmargeafstand}%
\ifcase\@@vnn\relax % new 31-07-99 ; always ?
- \doifnotinset{\@@vnbreedte}{\v!passend,\v!ruim}{\hsize\@@vnbreedte}%
+ \doifnotinset{\@@vnbreedte}{\v!passend,\v!ruim}
+ {\setfootnotehsize}%
\fi
\startpushfootnote
{\ifx\footnotenumber\empty \else
@@ -430,32 +442,6 @@
\let\startpopfootnotes = \relax
\let\stoppopfootnotes = \relax
-% \def\placefootnoteinserts%
-% {%\ifvoid\footins \else % unsafe, strange
-% \ifdim\ht\footins>\!!zeropoint\relax
-% \ifendnotes \else
-% \@@vnvoor
-% \dofootnoterule % alleen in ..mode
-% \bgroup
-% \setfootnotebodyfont
-% \localframed
-% [\??vn]
-% [\c!breedte=\v!passend,
-% \c!hoogte=\v!passend,
-% \c!strut=\v!nee,
-% \c!offset=\v!overlay]
-% {\startpopfootnotes % == \vbox
-% \ifdim\dp\footins=\!!zeropoint % this hack is needed because \vadjust
-% \hbox{\lower\dp\strutbox\box\footins}% % in margin number placement
-% \else % hides the (always) present depth
-% \box\footins
-% \fi
-% \stoppopfootnotes}%
-% \egroup
-% \@@vnna
-% \fi
-% \fi}
-
\def\placefootnoteinserts%
{%\ifvoid\footins \else % unsafe, strange
\ifdim\ht\footins>\!!zeropoint\relax
@@ -516,7 +502,8 @@
\newbox\postponedfootnotes
\def\autopostponefootnotes%
- {\gdef\localfootinsert%
+% {\gdef\localfootinsert%
+ {\def\localfootinsert%
{\ifinner
%\message{[postponed footnote]}%
\global\setbox\postponedfootnotes=\vbox\bgroup
@@ -531,7 +518,8 @@
\def\postponefootnotes%
{\let\autopostponefootnotes=\postponefootnotes
\let\postponefootnotes\relax % prevent loops
- \gdef\localfootinsert%
+% \gdef\localfootinsert%
+ \def\localfootinsert%
{%\message{[postponed footnote]}%
\global\setbox\postponedfootnotes=\vbox\bgroup
\unvbox\postponedfootnotes
@@ -540,7 +528,8 @@
\def\doflushfootnotes% also called directly, \ifvoid is needed !
{\ifendnotes \else
\ifvoid\postponedfootnotes
- \global\let\localfootinsert=\insert
+% \global\let\localfootinsert=\insert
+ \let\localfootinsert=\insert
\else
\bgroup
\ifdim\ht\postponedfootnotes>\!!zeropoint
@@ -551,7 +540,8 @@
\fi
\fi
\egroup
- \global\let\localfootinsert=\insert
+% \global\let\localfootinsert=\insert
+ \let\localfootinsert=\insert
\insert\footins\bgroup\unvbox\postponedfootnotes\egroup
\fi
\fi}
diff --git a/tex/context/base/core-ntb.tex b/tex/context/base/core-ntb.tex
new file mode 100644
index 000000000..7a3119c17
--- /dev/null
+++ b/tex/context/base/core-ntb.tex
@@ -0,0 +1,921 @@
+%D \module
+%D [ file=core-tbl,
+%D version=2000.04.18,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Natural Tables,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This is an unfinished, preliminary module. At least two
+%D runs are needed to get the table fixed.
+
+\writestatus{loading}{Context Core Macros / Natural Tables}
+
+%D As always, this is the nth version. Much time went in
+%D trying to speed up the many cell calculations, some
+%D optimizations were rejected in order not to complicate this
+%D module too much (and in order to prevail extensibility).
+
+%D To Do:
+%D
+%D \starttypen
+%D break over pagina
+%D kop herhalen
+%D reset settings
+%D
+%D \setupTABLE [c|column|x] [nx|odd|even|first|last][a=b]
+%D \setupTABLE [r|row |y] [nx|odd|even|first|last][a=b]
+%D \setupTABLE [nx|odd|even|first|last][ny|odd|even|first|last][a=b]
+%D \setupTABLE [nx|odd|even|first|last] [a=b]
+%D \setupTABLE [a=b]
+%D
+%D \bTH \eTH
+%D \stoptypen
+
+\unprotect
+
+%D A simple way to force equal line spacing is to say:
+%D
+%D \starttypen
+%D \def\bTBLCELL{\begstrut}
+%D \def\eTBLCELL{\endstrut}
+%D \stoptypen
+
+%D However, the next alternative also takes care of preceding
+%D and following white space.
+
+\def\bTBLCELL%
+ {\inhibitblank\doconvertfont\tbltblletter\empty\everypar{\begstrut}}
+
+\def\eTBLCELL%
+ {\ifhmode
+ \endstrut
+ \else
+ \par
+ \ifdim\prevdepth<\!!zeropoint % =-1000pt ?
+ \vskip-\dp\strutbox
+ \else
+ \removebottomthings
+ \fi
+ \fi}
+
+\newcounter\currenttbl
+
+%\def\@@tbl{tbl} \def\tblcell{m} \def\tblnone{n}
+\def\@@tbl{tbl} \def\tblcell{1} \def\tblnone{2}
+
+\def\@@tblprefix{tbl:}
+
+%D This should be done more efficient:
+
+\def\settbltag#1#2#3{\setevalue{\@@tblprefix#1:#2:s}{#3}} % \number#3
+\def\settblcol#1#2#3{\setevalue{\@@tblprefix#1:#2:c}{#3}}
+\def\settblrow#1#2#3{\setevalue{\@@tblprefix#1:#2:r}{#3}}
+
+\def\settblwd #1#2#3{\setxvalue{\@@tblprefix#1:#2:wd}{#3}} % global !
+\def\settblht #1#2#3{\setxvalue{\@@tblprefix#1:#2:ht}{#3}} % global !
+
+\def\gettbltag#1#2{\getvalue{\@@tblprefix#1:#2:s}}
+\def\gettblcol#1#2{\getvalue{\@@tblprefix#1:#2:c}}
+\def\gettblrow#1#2{\getvalue{\@@tblprefix#1:#2:r}}
+
+\def\gettblwd #1#2{\getvalue{\@@tblprefix#1:#2:wd}}
+\def\gettblht #1#2{\getvalue{\@@tblprefix#1:#2:ht}}
+
+\def\settblwid#1#2{\setxvalue{\@@tblprefix#1:w}{#2}} % global !
+\def\settblhei#1#2{\setxvalue{\@@tblprefix#1:h}{#2}} % global !
+\def\settblaut#1#2{\setxvalue{\@@tblprefix#1:a}{#2}} % global !
+
+\def\gettblwid#1{\ifundefined{\@@tblprefix#1:w}\!!zeropoint\else\getvalue{\@@tblprefix#1:w}\fi}
+\def\gettblhei#1{\ifundefined{\@@tblprefix#1:h}\!!zeropoint\else\getvalue{\@@tblprefix#1:h}\fi}
+\def\gettblaut#1{\getvalue{\@@tblprefix#1:a}}
+
+\def\doiftbltag #1#2{\doifdefined {\@@tblprefix#1:#2:s}}
+\def\doifnottbltag #1#2{\doifundefined {\@@tblprefix#1:#2:s}}
+\def\doifelsetbltag#1#2{\doifdefinedelse{\@@tblprefix#1:#2:s}}
+\def\doiftblrow #1#2{\doifdefined {\@@tblprefix#1:#2:r}}
+\def\doiftblcol #1#2{\doifdefined {\@@tblprefix#1:#2:c}}
+\def\doifnottblcol #1#2{\doifundefined {\@@tblprefix#1:#2:c}}
+
+\def\settbltxt#1#2{\long\setvalue{\@@tblprefix:#1:#2:t}}
+\def\gettbltxt#1#2{\getvalue {\@@tblprefix:#1:#2:t}}
+
+%\def\doiftbl #1#2#3{\ifcase0\getvalue{\@@tblprefix#1:#2:s}\relax \else#3\fi}
+%\def\doifnottbl #1#2#3{\ifcase0\getvalue{\@@tblprefix#1:#2:s}\relax #3\fi}
+%\def\doifelsetbl#1#2#3#4{\ifcase0\getvalue{\@@tblprefix#1:#2:s}\relax#4\else#3\fi}
+%
+%\let\doiftbltag \doiftbl
+%\let\doifnottbltag \doifnottbl
+%\let\doifelsetbltag\doifelsetbl
+
+\newtoks\tbltoks
+
+\let\pushTBLparameters\relax
+\let\popTBLparameters \relax
+
+\newif\ifautoTBLspread \autoTBLspreadfalse
+\newif\ifautoTBLhsize \autoTBLhsizetrue
+\newif\ifautoTBLrowspan \autoTBLrowspantrue
+\newif\ifautoTBLemptycell \autoTBLemptycelltrue
+\newif\ifappendTBLsetups \appendTBLsetupstrue
+
+\newif\iftraceTABLE \traceTABLEfalse
+
+\presetlocalframed[\@@tbl\@@tbl]
+
+\long\def\handleTBLcell#1#2[#3]{}
+
+\long\def\bTC#1\eTC{\bTD#1\eTD}
+\long\def\bTX#1\eTX{\bTD#1\eTD}
+\long\def\bTY#1\eTY{\bTR#1\eTR}
+
+\let\getTABLEparameters\getparameters
+
+\unexpanded\def\setupTABLE%
+ {\dotripleempty\dosetupTABLE}
+
+\def\dosetupTABLE[#1][#2][#3]%
+ {\ifthirdargument
+ \processaction
+ [#1]
+ [ \v!rij=>{\dosetupTABLExy[\c!y][#2][#3]},
+ \v!kolom=>{\dosetupTABLExy[\c!x][#2][#3]},
+ r=>{\dosetupTABLExy[\c!y][#2][#3]},
+ c=>{\dosetupTABLExy[\c!x][#2][#3]},
+ y=>{\dosetupTABLExy[\c!y][#2][#3]},
+ x=>{\dosetupTABLExy[\c!x][#2][#3]},
+ \s!unknown=>{\dosetupTABLEzz[#1][#2][#3]}]%
+ \else\ifsecondargument
+ \processaction
+ [#1]
+ [ \v!rij=>{\dosetupTABLExy[\c!y][\v!elk][#2]},
+ \v!kolom=>{\dosetupTABLExy[\c!x][\v!elk][#2]},
+ r=>{\dosetupTABLExy[\c!y][\v!elk][#2]},
+ c=>{\dosetupTABLExy[\c!x][\v!elk][#2]},
+ y=>{\dosetupTABLExy[\c!y][\v!elk][#2]},
+ x=>{\dosetupTABLExy[\c!x][\v!elk][#2]},
+ \s!unknown=>{\dosetupTABLEzz[\c!x][#1][#2]}]%
+ \else
+ \getparameters[\@@tbl\@@tbl][#1]%
+ \fi\fi}
+
+\def\dosetupTABLExy[#1][#2][#3]%
+ {\def\dodosetupTABLE##1%
+ {\setTABLEparameters[#1##1][#3]}%
+ \processcommalist[#2]\dodosetupTABLE}
+
+\def\dosetupTABLEzz[#1][#2][#3]%
+ {\def\dodosetupTABLE##1%
+ {\def\dododosetupTABLE####1%
+ {\setTABLEparameters[\c!x##1\c!y####1][#3]}%
+ \processcommalist[#2]\dododosetupTABLE}%
+ \processcommalist[#1]\dodosetupTABLE}
+
+\def\nopTABLEparameters[#1][#2]%
+ {\setvalue{\@@tblprefix#1}{}}
+
+\def\setTABLEparameters[#1][#2]%
+ {\pushTBLparameters
+ \ifappendTBLsetups
+ \doifdefinedelse{\@@tblprefix#1}
+ {\def\getTABLEparameters[##1][##2]%
+ {\setvalue{\@@tblprefix#1}{\getTABLEparameters[\@@tbl\@@tbl][##2,#2]}}%
+ \getvalue{\@@tblprefix#1}%
+ \let\getTABLEparameters\getparameters}
+ {\setvalue{\@@tblprefix#1}{\getTABLEparameters[\@@tbl\@@tbl][#2]}}%
+ \else
+ \setvalue{\@@tblprefix#1}{\getTABLEparameters[\@@tbl\@@tbl][#2]}%
+ \fi
+ \popTBLparameters}
+
+\def\v!oddeven#1{\ifodd#1\v!oneven\else\v!even\fi}
+
+\let\setupTBLsection\relax
+
+\def\setupTBLcell#1#2% cell over col over row
+ {\setupTBLsection % here ?
+ \getvalue{\@@tblprefix\c!y\v!elk}%
+ \getvalue{\@@tblprefix\c!x\v!elk}%
+ \getvalue{\@@tblprefix\c!y\v!oddeven{#1}}%
+ \getvalue{\@@tblprefix\c!x\v!oddeven{#2}}%
+ \getvalue{\@@tblprefix\c!x\v!oddeven{#2}\c!y\v!oddeven{#1}}%
+ \ifnum#1=1 \getvalue{\@@tblprefix\c!y\v!eerste }\fi
+ \ifnum#2=1 \getvalue{\@@tblprefix\c!x\v!eerste }\fi
+ \ifnum#1=\maximumrow\relax\getvalue{\@@tblprefix\c!y\v!laatste}\fi
+ \ifnum#2=\maximumcol\relax\getvalue{\@@tblprefix\c!x\v!laatste}\fi
+ \getvalue{\@@tblprefix\c!y#1}%
+ \getvalue{\@@tblprefix\c!x#2}%
+ \getvalue{\@@tblprefix\c!x#2\c!y#1}\relax}
+
+\long\def\parseTR[#1][#2]#3\eTR% [#2] is dummy that kills spaces
+ {\def\currentcol{0}\increment\maximumrow#3}
+
+% \long\def\parseTD[#1][#2]#3\eTD% [#2] is dummy that kills spaces
+% {\getparameters[\@@tbl][\c!ny=\tblnr,\c!nx=\tblnc,nc=1,nr=1,#1]%
+% \let\row\maximumrow
+% \let\col\currentcol
+% % goto first cell
+% \doloop{\increment\col \doifnottbltag\row\col\exitloop}%
+% % fill r*c cells and set span
+% \let\currentcol\col
+% \let\currentrow\row
+% \dorecurse{\tblny}
+% {\let\col\currentcol
+% \settblcol\row\col\tblnx
+% \ifnum\tblnx>\maximumrowspan\relax
+% \let\maximumrowspan\tblnx
+% \fi
+% \dorecurse{\tblnx}
+% {\settbltag\row\col\tblnone
+% \increment\col}%
+% \increment\row}%
+% \decrement\row
+% % set values
+% \settbltag\maximumrow\currentcol\tblcell
+% \settblcol\maximumrow\currentcol\tblnx
+% \settblrow\maximumrow\currentcol\tblny
+% % save text
+% \edef\celltag{{\maximumrow}{\currentcol}}%
+% \@EA\settbltxt\@EA\maximumrow\@EA\currentcol\@EA
+% {\@EA\handleTBLcell\celltag[#1]{#3}}%
+% % check max column
+% \let\currentcol\col
+% \decrement\currentcol
+% \ifnum\currentcol>\maximumcol\let\maximumcol\currentcol\fi}
+
+\long\def\parseTD[#1][#2]#3\eTD% [#2] is dummy that kills spaces
+ {\getparameters[\@@tbl][\c!ny=\tblnr,\c!nx=\tblnc,nc=1,nr=1,#1]%
+ % goto first cell
+ \doloop
+ {\increment\currentcol
+ \doifnottbltag\maximumrow\currentcol\exitloop}%
+ % fill r*c cells and set span
+ \let\row\maximumrow
+ \let\col\currentcol
+ \dorecurse{\tblny}
+ {\let\col\currentcol
+ \settblcol\row\col\tblnx
+ \ifnum\tblnx>\maximumrowspan\relax
+ \let\maximumrowspan\tblnx
+ \fi
+ \dorecurse{\tblnx}
+ {\settbltag\row\col\tblnone
+ \increment\col}%
+ \increment\row}%
+ % check max column
+ \decrement\col
+ \ifnum\col>\maximumcol
+ \let\maximumcol\col
+ \fi
+ % set values
+ \settbltag\maximumrow\currentcol\tblcell
+ \settblcol\maximumrow\currentcol\tblnx
+ \settblrow\maximumrow\currentcol\tblny
+ % save text
+ \edef\celltag{{\maximumrow}{\currentcol}}%
+ \@EA\settbltxt\@EA\maximumrow\@EA\currentcol\@EA
+ {\@EA\handleTBLcell\celltag[#1]{#3}}}
+
+\long\def\parseTH[#1]#2\eTH%
+% {\parseTD[#1,\c!letter=\v!vet,\c!karakteruitlijnen=\v!nee]#2\eTD}
+ {\parseTD[#1,\c!kleur=\tbltblkopkleur,\c!letter=\tbltblkopletter,\c!karakteruitlijnen=\v!nee]#2\eTD}
+
+\newtoks\TBLhead
+\newtoks\TBLbody
+\newtoks\TBLfoot
+
+% to be done: head <raw> foot, dus state var
+
+\long\def\bTABLEhead{\dosingleempty\doTABLEhead}
+\long\def\bTABLEbody{\dosingleempty\doTABLEbody}
+\long\def\bTABLEfoot{\dosingleempty\doTABLEfoot}
+
+\long\def\doTABLEhead[#1]#2\eTABLEhead%
+ {\appendtoks\doTABLEsection[#1]{#2}\to\TBLhead}
+
+\long\def\doTABLEbody[#1]#2\eTABLEbody%
+ {\appendtoks\doTABLEsection[#1]{#2}\to\TBLbody}
+
+\long\def\doTABLEfoot[#1]#2\eTABLEfoot%
+ {\appendtoks\doTABLEsection[#1]{#2}\to\TBLfoot}
+
+\long\def\doTABLEsection[#1]#2%
+ {\def\setupTBLsection{\getparameters[\@@tbl\@@tbl][#1]}%
+ #2%
+ \let\setupTBLsection\relax}
+
+\let\pushTBL\relax
+\let\popTBL \relax
+
+\chardef\TBLpass=0
+
+\def\bTABLE%
+ {\dosingleempty\dobTABLE}
+
+\def\dobTABLE[#1]%
+ {\pushTBL
+ \vbox\bgroup
+ \localcolortrue
+ \getparameters
+ [\@@tbl\@@tbl]
+ [\c!uitlijnen={\v!rechts,\v!ruim,\v!hoog},#1]%
+ \dontcomplain
+ \def\currentcol{0}%
+ \def\maximumrowspan{1}%
+ \let\maximumcol\currentcol
+ \let\maximumrow\currentcol
+ \def\bTR{\dodoubleempty\parseTR}%
+ \def\bTD{\dodoubleempty\parseTD}%
+ \def\bTH{\dodoubleempty\parseTH}%
+ \endgraf}
+
+\def\eTABLE%
+ {\the\TBLhead\the\TBLbody\the\TBLfoot\endgraf % tricky and dirty order -)
+ % finish cells
+ \dorecurse{\maximumrow}
+ {\let\row\recurselevel
+ \dorecurse{\maximumcol}
+ {\let\col\recurselevel \let\xxcol\col \let\xxrow\row
+ \doifnottbltag\row\col
+ {\let\xrow\row
+ \doloop
+ {\let\xcol\col
+ \doloop
+ {\doifelsetbltag\xrow\xcol
+ {\exitloop}
+ {\increment\xcol \relax
+ \ifnum\xcol>\maximumcol \exitloop \fi}}%
+ \doifelsetbltag\xrow\xcol
+ {\exitloop}
+ {\let\xxrow\xrow \let\xxcol\xcol \increment\xrow \relax
+ \ifnum\xrow>\maximumrow \exitloop \fi}}}%
+ \ifnum\xxrow>\maximumrow\let\xxrow\maximumrow\fi
+ \ifnum\xxcol>\maximumcol\let\xxcol\maximumcol\fi
+ \decrement(\xxrow,\row)\increment\xxrow
+ \decrement(\xxcol,\col)\increment\xxcol
+ \doifnottbltag\row\col
+ {\let\xrow\row
+ \dorecurse{\xxrow}
+ {\let\xcol\col \settblcol\xrow\xcol\xxcol
+ \dorecurse{\xxcol}
+ {\settbltag\xrow\xcol\tblnone \increment\xcol}%
+ \increment\xrow}%
+ \settbltag\row\col\tblcell
+ \settblcol\row\col\xxcol
+ \settblrow\row\col\xxrow
+ \ifautoTBLemptycell
+ \edef\celltag{{\row}{\col}}%
+ \@EA\settbltxt\@EA\row\@EA\col\@EA
+ {\@EA\handleTBLcell\celltag[]{\strut}}%
+ \fi}}}%
+ % to be sure
+ \dorecurse{\maximumrow}
+ {\let\row\recurselevel
+ \dorecurse{\maximumcol}
+ {\let\col\recurselevel
+ \doiftblrow\row\col
+ {\scratchcounter=\maximumrow
+ \advance\scratchcounter by -\row
+ \advance\scratchcounter by 1
+ \ifnum\gettblrow\row\col>\scratchcounter
+ \settblrow\row\col{\the\scratchcounter}%
+ \fi}%
+ \settblht\row\col\!!zeropoint
+ \settblwd\row\col\!!zeropoint
+ \doifnottblcol\row\col{\settblcol\row\col0}%
+ \doifnottbltag\row\col{\settbltag\row\col\tblnone}}}%
+ % check and do
+ \begTBL
+ \dorecurse{\maximumrow}
+ {\bTBL
+ \let\row\recurselevel
+ \dorecurse{\maximumcol}
+ {\let\col\recurselevel
+ \expanded{\doTBL{\row}{\col}}}%
+ \eTBL}%
+ \endTBL
+ \egroup
+ \popTBL}
+
+\def\spanTBL#1#2%
+ {\scratchcounter=\gettblcol{#1}{#2}\relax
+ \ifnum\scratchcounter>0
+ \advance\scratchcounter by -1
+ \dorecurse{\scratchcounter}{\appendtoks\spantblcol\to\tbltoks}%
+ \dorecurse{\scratchcounter}
+ {\appendtoks
+ \skiptblcol
+ \to\tbltoks}%
+ \appendtoks
+ \nexttblcol
+ \to\tbltoks
+ \fi}
+
+\def\bTBL%
+ {\appendtoks
+ \begintblrow
+ \to\tbltoks}
+
+\def\eTBL%
+ {\appendtoks
+ \endtblrow
+ \to\tbltoks}
+
+% We use aligments to handle the empty (skipped) columns, so
+% that we don't have to (re|)|calculate these.
+
+\def\skiptblcol%
+ {\doglobal\increment\colTBL}
+
+\def\nexttblcol%
+ {\doglobal\increment\colTBL&}
+
+\def\spantblcol%
+ {\span}
+
+\def\begintblrow%
+ {\noalign
+ {\doglobal\increment\rowTBL
+ \doglobal\newcounter\colTBL}%
+ \nexttblcol}
+
+\def\endtblrow%
+ {\crcr\noalign{\nointerlineskip}}
+
+\def\begintbl%
+ {\doglobal\newcounter\colTBL
+ \doglobal\newcounter\rowTBL
+ \doglobal\decrement\rowTBL
+ \tabskip\!!zeropoint
+ \halign\bgroup\ignorespaces##\unskip&&\ignorespaces##\unskip\cr}
+
+\def\endtbl%
+ {\egroup}
+
+\setvalue{\tblnone TBL}#1#2%
+ {\spanTBL{#1}{#2}}
+
+\setvalue{\tblcell TBL}#1#2%
+ {\appendtoks
+ \makeTBL{#1}{#2}% % append nog isoleren
+ \to\tbltoks
+ \spanTBL{#1}{#2}}
+
+\def\doTBL#1#2%
+ {\getvalue{\gettbltag{#1}{#2}TBL}{#1}{#2}}
+
+\def\begTBL%
+ {\doglobal\newcounter\rowTBL
+ \doglobal\newcounter\colTBL
+ \chardef\TBLpass=0
+ \tbltoks\emptytoks
+ \appendtoks
+ \begintbl
+ \to\tbltoks}
+
+\def\endTBL%
+ {\appendtoks
+ \endtbl
+ \to\tbltoks
+ \setbox\scratchbox=\hbox
+ {\localframed
+ [\@@tbl\@@tbl]
+ [\c!kader=\v!uit,\c!achtergrond=,\c!uitlijnen=\v!nee]
+ {\strut}}%
+ \edef\minimalcellheight{\the\ht\scratchbox}%
+ \dorecurse{\maximumcol}
+ {\settblaut\recurselevel\!!zeropoint
+% new
+\let\xcol\recurselevel
+\dorecurse{\maximumrow}
+ {\settblwd \recurselevel\xcol\!!zeropoint
+ \settblht \recurselevel\xcol\!!zeropoint}%
+% till here
+ \settblwid\recurselevel\!!zeropoint}%
+ \dorecurse{\maximumrow}
+ {\settblhei\recurselevel\maxdimen}%
+ \chardef\TBLpass=1
+ \let\handleTBLcell\dohandleTBLcellA
+ \def\makeTBL##1##2%
+ {\gettbltxt{##1}{##2}}%
+ \def\inTBLcell##1##2%
+ {\ExpandBothAfter\doifinsetelse{\localwidth}{\v!passend,\v!ruim} % user set
+ {}
+ {\scratchdimen=\gettblaut\colTBL\relax
+ \ifdim\localwidth>\scratchdimen
+ \settblaut\colTBL\localwidth
+ \fi}}%
+ \setbox0=\vbox{\the\tbltoks}%
+%\ifautoTBLspread
+%\else
+ \ifdim\wd0>\hsize
+ \ifautoTBLhsize
+ \checktblwidthsone % trial run
+ \checktblwidthstwo % real run
+ \let\handleTBLcell\dohandleTBLcellB
+ \setbox\scratchbox=\vbox{\the\tbltoks}%
+ \fi
+ \else\ifautoTBLrowspan\ifnum\maximumrowspan>1 % max ?
+ \let\handleTBLcell\dohandleTBLcellC
+ \setbox\scratchbox=\vbox{\the\tbltoks}%
+ \fi\fi\fi
+%\fi
+ \let\handleTBLcell\dohandleTBLcellD
+ \chardef\TBLpass=2
+ \def\makeTBL##1##2% meer in cellD
+ {\dimen2=\!!zeropoint
+ \pushmacro\colTBL
+ \dorecurse{\gettblcol{##1}{##2}}
+ {\advance\dimen2 by \gettblwid\colTBL
+ \increment\colTBL}%
+ \edef\widthTBL{\the\dimen2}%
+ \popmacro\colTBL
+ \setbox\scratchbox=\hbox{\gettbltxt{##1}{##2}}%
+ \settblht{##1}{##2}{\the\ht\scratchbox}%
+ \settblwd{##1}{##2}{\the\wd\scratchbox}%
+ \ifdim\ht\scratchbox>\gettblhei{##1}\relax
+ \settblhei{##1}{\the\ht\scratchbox}%
+ \fi}%
+ \setbox\scratchbox=\vbox{\the\tbltoks}%
+ \checktblheightsone
+ \checktblheightstwo
+ \let\handleTBLcell\dohandleTBLcellE
+ \chardef\TBLpass=3
+ \def\makeTBL##1##2%
+ {% height
+ \pushmacro\rowTBL
+ \scratchdimen=\!!zeropoint
+ \def\rowTBL{##1}%
+ \ifnum\gettblcol{##1}{##2}=\maximumcol\relax
+ % case: nc=maxcolumns
+ \else
+ \dorecurse{\gettblrow{##1}{##2}}
+ {\advance\scratchdimen by \gettblhei\rowTBL
+ \increment\rowTBL}%
+ \ifdim\scratchdimen<\gettblht{##1}{##2}\relax
+ \scratchdimen=\gettblht{##1}{##2}\relax
+ \fi
+ \fi
+ \edef\heightTBL{\the\scratchdimen}%
+ \popmacro\rowTBL
+ % width
+ \pushmacro\colTBL
+ \scratchdimen=\!!zeropoint
+ \dorecurse{\gettblcol{##1}{##2}}
+ {\advance\scratchdimen by \gettblwid\colTBL
+ \increment\colTBL}%
+ \edef\widthTBL{\the\scratchdimen}%
+ \popmacro\colTBL
+ % cell
+ \setbox\scratchbox=\hbox{\gettbltxt{##1}{##2}}%
+ \ifnum\gettblcol{##1}{##2}=\maximumcol\relax
+ % case: nc=maxcolumns
+ \else
+ \scratchdimen=\gettblhei{##1}%
+ \setbox\scratchbox=\hbox
+ {\lower\ht\scratchbox\hbox{\raise\scratchdimen\box\scratchbox}}%
+ \ht\scratchbox=\scratchdimen
+ \fi
+ \dp\scratchbox=\!!zeropoint
+ \box\scratchbox}%
+ \iftraceTABLE\showtbltoks\fi
+ \vbox{\the\tbltoks}}
+
+\def\checktblwidthsone{\dochecktblwidths0} % 0 = trial run
+\def\checktblwidthstwo{\dochecktblwidths1} % 1 = real run
+
+\def\dochecktblwidths#1%
+ {\iftraceTABLE\showtblwids{B#1}\fi
+ \!!dimena=\hsize
+ \!!counta=0
+ \dorecurse{\maximumcol}
+ {\scratchdimen=\gettblaut\recurselevel\relax
+ \ifdim\scratchdimen>\!!zeropoint\relax
+ \advance\!!dimena by -\scratchdimen
+ \else
+ \scratchdimen=\gettblwid\recurselevel\relax
+ \ifdim\scratchdimen>\tbltblmaxbreedte\relax
+ \ifcase#1\else\settblwid\recurselevel\!!zeropoint\fi
+ \advance\!!counta by 1
+ \else
+ \ifdim\scratchdimen>\!!zeropoint\relax
+ \advance\!!dimena by -\scratchdimen
+ \else
+ % eigenlijk moet dit alleen als de kolom wordt overspannen door een
+ % vorige, maw extra dubbele loop en status var
+ \advance\!!counta by 1
+ \fi
+ \fi
+ \fi}%
+ \ifcase\!!counta \else \divide\!!dimena by \!!counta \fi
+ \dorecurse{\maximumcol}
+ {\scratchdimen=\gettblwid\recurselevel\relax
+ \ifcase#1
+ \ifdim\scratchdimen<\!!dimena % take natural width
+ \settblaut\recurselevel{\the\scratchdimen}%
+ \fi
+ \else
+ \ifdim\scratchdimen=\!!zeropoint\relax % auto set width
+ \settblwid\recurselevel{\the\!!dimena}%
+ \fi
+ \fi}%
+ \iftraceTABLE\showtblwids{E#1}\fi}
+
+% \def\checktblwidthsXXX%
+% {\!!dimena=\hsize
+% \!!counta=0
+% \dorecurse{\maximumcol}
+% {\scratchdimen=\gettblaut\recurselevel\relax
+% \ifdim\scratchdimen>\!!zeropoint\relax
+% \advance\!!dimena by -\scratchdimen
+% \else
+% \advance\!!counta by 1
+% \fi}%
+% \ifcase\!!counta \else \divide\!!dimena by \!!counta \fi
+% \dorecurse{\maximumcol}
+% {\scratchdimen=\gettblaut\recurselevel\relax
+% \ifdim\scratchdimen=\!!zeropoint\relax
+% \settblaut\recurselevel{\the\!!dimena}%
+% \fi
+% \settblwid\recurselevel{\the\!!dimena}%
+% }}
+
+\def\checktblheightsone%
+ {\dorecurse{\maximumrow}
+ {\let\xrowTBL\recurselevel
+ \dorecurse{\maximumcol}
+ {\let\xcolTBL\recurselevel
+ \count0=0\gettblrow\xrowTBL\xcolTBL\relax
+ % check row span
+ \ifnum\count0>1
+ % current height in row
+ \dimen0=\gettblht\xrowTBL\xcolTBL
+ % find nearest height in row
+ \dimen2=\!!zeropoint
+ \dorecurse{\maximumcol}
+ {\ifnum\recurselevel=\xcolTBL\else
+ \count2=0\gettblrow\xrowTBL\recurselevel\relax
+ \ifnum\count2=1
+ \dimen4=\gettblht\xrowTBL\recurselevel\relax
+ \ifdim\dimen2<\dimen4
+ \dimen2=\dimen4
+ \fi
+ \fi
+ \fi}%
+ \let\xxrowTBL\xrowTBL
+ % calculate cummulative height
+ \dimen4=\dimen2
+ \dorecurse{\count0}
+ {\ifnum\xxrowTBL=\xrowTBL\else
+ \advance\dimen4 by \gettblhei\xxrowTBL
+ \fi
+ \increment\xxrowTBL}%
+ % distribute overshoot equally
+ \ifdim\dimen4<\dimen0
+ \advance\dimen0 by -\dimen4
+ \divide\dimen0 by \count0
+ \let\xxrowTBL\xrowTBL
+ \settblhei\xrowTBL{\the\dimen2}%
+ \dorecurse{\count0}
+ {\dorecurse{\maximumcol}
+ {\ifnum\recurselevel=\xcolTBL\else
+ \scratchdimen=\gettblht\xxrowTBL\recurselevel
+ \advance\scratchdimen by \dimen0
+ \settblht\xxrowTBL\recurselevel{\the\scratchdimen}%
+ \ifdim\gettblhei\xxrowTBL<\scratchdimen
+ \settblhei\xxrowTBL{\the\scratchdimen}%
+ \fi
+ \fi}%
+ \increment\xxrowTBL}%
+ \else\ifdim\dimen4>\dimen0
+ \settblhei\xrowTBL{\the\dimen2}%
+ \fi\fi
+ \fi}}}
+
+\def\checktblheightstwo%
+ {}
+
+\def\showtblwids#1%
+ {\vbox
+ {\forgetall\tttf
+ [#1]\dorecurse{\maximumcol}{[\recurselevel:\gettblwid\recurselevel]}}}
+
+\def\showtbltoks%
+ {\vbox
+ {\forgetall\tttf
+ \let\begintbl \relax \let\endtbl \relax
+ \let\begintblrow\par \let\endtblrow \par
+ \def\nexttblcol {[next]}\def\spantblcol{[span]}
+ \def\makeTBL##1##2{[##1,##2]}
+ \the\tbltoks}}
+
+\def\TBLcharalign%
+ {\doifelse{\tbltblkarakteruitlijnen}{\v!ja}
+ {\let\next\doTBLcharalign}
+ {\let\next\gobbleoneargument}%
+ \next}
+
+\long\def\doTBLcharalign#1#2% column data
+ {\edef\alignmentclass{#1}%
+ \edef\alignmentcharacter{\tbltbluitlijnkarakter}%
+ \ifcase\TBLpass\or
+ \setfirstpasscharacteralign\checkalignment{\strut#2\unskip}%
+ \fi % force hsize, so always a second
+ \setsecondpasscharacteralign\checkalignment{\strut#2\unskip}%
+ \ignorespaces}
+
+\long\def\dohandleTBLcellA#1#2[#3]#4%
+ {\setbox\scratchbox=\hbox
+ {\setupTBLcell{#1}{#2}%
+ \localframed
+ [\@@tbl\@@tbl]
+ [#3,\c!achtergrond=,\c!kader=\v!uit]% 25% faster
+ {\bTBLCELL\TBLcharalign{#2}{#4}\eTBLCELL\inTBLcell{##1}{##2}}}%
+ \scratchdimen=\gettblwid\colTBL\relax
+ \ifdim\wd\scratchbox>\scratchdimen
+ \settblwid\colTBL{\the\wd\scratchbox}% auto set
+ \fi
+ \let\rowTBLx\rowTBL\increment\rowTBLx
+ \scratchdimen=\gettblhei\rowTBLx\relax
+ \ifdim\ht\scratchbox<\scratchdimen
+ \settblhei\rowTBLx{\the\ht\scratchbox}% auto set
+ \fi
+ \settblht{#1}{#2}{\the\ht\scratchbox}%
+ \settblwd{#1}{#2}{\the\wd\scratchbox}%
+ \ifdim\wd\scratchbox<.75\hsize
+ \ifdim\ht\scratchbox>2\openlineheight % honor width since this can be a
+ \scratchdimen=\gettblaut\colTBL\relax % figure or so
+ \ifdim\wd\scratchbox>\scratchdimen
+ \settblaut\colTBL{\the\wd\scratchbox}%
+ %\message{[forcing width of \colTBL\space(\the\wd\scratchbox/\the\hsize)]}%
+ \fi
+ \fi
+ \fi
+ \setbox2=\null
+ \wd2=\wd\scratchbox \ht2=\ht\scratchbox \dp2=\dp\scratchbox
+ \box2}
+
+\long\def\dohandleTBLcellBC#1#2#3[#4]#5%
+ {\setbox\scratchbox=\hbox
+ {\setupTBLcell{#2}{#3}%
+ \localframed
+ [\@@tbl\@@tbl]
+ [#4,#1,\c!kader=\v!uit,\c!achtergrond=]
+ {\bTBLCELL#5\eTBLCELL}}%
+ \setbox2=\null
+ \wd2=\wd\scratchbox \ht2=\ht\scratchbox \dp2=\dp\scratchbox
+ \ifautoTBLrowspan
+ \let\rowTBLx\rowTBL\increment\rowTBLx
+ \scratchdimen=\gettblhei\rowTBLx\relax
+ \ifnum\gettblrow\rowTBLx\colTBL>1 \ifdim\ht\scratchbox>\scratchdimen
+ \scratchdimen=-\scratchdimen \advance\scratchdimen by -\ht\scratchbox
+ \ht2=\scratchdimen
+ \fi \fi
+ \fi
+ \box2 }
+
+\long\def\dohandleTBLcellB#1#2[#3]#4%
+ {\scratchdimen=\gettblaut\colTBL\relax
+ \ifdim\scratchdimen>\!!zeropoint\relax
+ \let\tblwidthkey\c!breedte \edef\tblwidth{\the\scratchdimen}%
+ \else
+ \scratchdimen=\gettblwid\colTBL\relax
+ \ifdim\scratchdimen>\!!zeropoint\relax
+ \ifnum\gettblcol{#1}{#2}=\maximumcol\relax
+ \scratchdimen=\hsize
+ \fi
+ \let\tblwidthkey\c!breedte \edef\tblwidth{\the\scratchdimen}%
+ \else
+ \let\tblwidthkey\s!unknown \let \tblwidth \!!zeropoint
+ \fi
+ \fi
+ \dohandleTBLcellBC{\tblwidthkey=\tblwidth}{#1}{#2}[#3]{\TBLcharalign{#2}{#4}}}
+
+\long\def\dohandleTBLcellC%
+ {\dohandleTBLcellBC{}}
+
+\long\def\dohandleTBLcellD#1#2[#3]#4%
+ {\setupTBLcell{#1}{#2}%
+ \localframed
+ [\@@tbl\@@tbl]
+ [#3,\c!breedte=\widthTBL,
+ \c!achtergrond=,\c!kader=\v!uit]% 25% faster
+ {\bTBLCELL\TBLcharalign{#2}{#4}\eTBLCELL}}
+
+\long\def\dohandleTBLcellE#1#2[#3]#4%
+ {\setupTBLcell{#1}{#2}%
+ \getparameters[\@@tbl\@@tbl][#3]% to get the color right, the way we
+ \color % handle color here prevents interference due to whatsit nodes
+ [\tbltblkleur] % as well as permits local colors to take precedence
+ {\ifdim\heightTBL=\!!zeropoint\relax % case: nc=maxcolumns
+ \localframed
+ [\@@tbl\@@tbl]
+ [\c!kleur=,\c!breedte=\widthTBL]
+ {\bTBLCELL\TBLcharalign{#2}{#4}\eTBLCELL}%
+ \else
+ \localframed
+ [\@@tbl\@@tbl]
+ [\c!kleur=,\c!breedte=\widthTBL,\c!hoogte=\heightTBL]
+ {\bTBLCELL\TBLcharalign{#2}{#4}\eTBLCELL}%
+ \fi}}
+
+\setupTABLE
+ [\c!kaderoffset=.5\linewidth,
+ \c!achtergrondoffset=\v!kader,
+ \c!kaderkleur=black,
+ \c!kleur=,
+ \c!letter=,
+\c!kopletter=\v!vet,
+\c!kopkleur=,
+ \c!strut=\v!nee,
+ \c!karakteruitlijnen=\v!nee,
+ \c!uitlijnkarakter={,},
+ \c!maxbreedte=8em]
+
+%D We have already prepared the previous macros for nesting,
+%D so we only have to pop in the right ones:
+
+%D Redefined:
+
+\newcounter\TBLlevel
+
+\def\@@tblprefix{\@@tbl:\ifnum\TBLlevel>1 \TBLlevel:\fi}
+
+\long\def\settbltxt#1#2#3%
+ {\setxvalue{\@@tblprefix#1:#2:l}{\TBLlevel}%
+ \long\setvalue{\@@tblprefix#1:#2:t}%
+ {\doifdefined{\@@tblprefix#1:#2:l}
+ {\edef\TBLlevel{\getvalue{\@@tblprefix#1:#2:l}}}%
+ #3}}
+
+\def\gettbltxt#1#2%
+ {\getvalue{\@@tblprefix#1:#2:t}}
+
+%D New:
+
+\def\pushTBLparameters%
+ {\pushmacro\TBLlevel
+ \ifcase\TBLpass
+ % we're just after \bTABLE
+ \else\ifnum\TBLlevel>0
+ \doglobal\increment\TBLlevel\relax
+ \fi\fi}
+
+\def\popTBLparameters%
+ {\popmacro\TBLlevel}
+
+\def\pushTBL%
+ {\ifnum\TBLlevel=0
+ \doglobal\increment\currenttbl\relax
+ \fi
+ \doglobal\increment\TBLlevel\relax
+ \ifnum\TBLlevel>1
+ \resetallTABLEparameters
+ \pushmacro\colTBL
+ \pushmacro\rowTBL
+ \else
+ \global\intabletrue
+ \fi}
+
+\def\popTBL%
+ {\ifnum\TBLlevel>1
+ \popmacro\rowTBL
+ \popmacro\colTBL
+ \else
+ \global\intablefalse
+ \fi
+ \doglobal\decrement\TBLlevel\relax}
+
+\chardef\resetTABLEmode=0
+
+\def\resetallTABLEparameters% moet genest wel werken
+ {\ifnum\TBLlevel>1 % in ieder geval
+ \ifcase\resetTABLEmode
+ \presetlocalframed % breedte hoogte diepte offset
+ [\@@tbl\@@tbl]% % achtergrond, achtergrondraster, achtergrondkleur
+ % not ok yet
+ \setupTABLE
+ [\c!kaderoffset=.5\linewidth,
+ \c!achtergrondoffset=\v!kader,
+ \c!kaderkleur=black,
+ \c!kleur=,
+ \c!letter=,
+\c!kopletter=,
+\c!kopkleur=,
+ \c!strut=\v!nee,
+ \c!karakteruitlijnen=\v!nee,
+ \c!uitlijnkarakter={,},
+ \c!maxbreedte=8em]%
+ \else
+ \setupTABLE
+ [\c!breedte=\v!passend,
+ \c!hoogte=\v!passend]%
+ \fi
+ \fi}
+
+\protect \endinput
diff --git a/tex/context/base/core-obj.tex b/tex/context/base/core-obj.tex
index 8c6d0e079..d44235a22 100644
--- a/tex/context/base/core-obj.tex
+++ b/tex/context/base/core-obj.tex
@@ -35,6 +35,16 @@
31: duplicitni object --
\stopmessages
+\startmessages italian library: references
+ 30: oggetto sconosciuto --
+ 31: oggetto duplicato --
+\stopmessages
+
+\startmessages norwegian library: references
+ 30: ukjent objekt --
+ 31: duplikat objekt --
+\stopmessages
+
%D \macros
%D {setobject,getobject,ifinobject}
%D
diff --git a/tex/context/base/core-pag.tex b/tex/context/base/core-pag.tex
index 6ed2f3475..8a175b972 100644
--- a/tex/context/base/core-pag.tex
+++ b/tex/context/base/core-pag.tex
@@ -124,7 +124,7 @@
\fi
\fi}
-% cleaner, but unchecked
+% cleaner, but unchecked, and incomplete
%
% \def\dostelarrangereninXY#1#2#3#4#5#6#7#8%
% {\global\chardef\arrangedpageX =#1%
diff --git a/tex/context/base/core-pos.tex b/tex/context/base/core-pos.tex
new file mode 100644
index 000000000..761acf08d
--- /dev/null
+++ b/tex/context/base/core-pos.tex
@@ -0,0 +1,1088 @@
+%D \module
+%D [ file=core-pos,
+%D version=1999.08.01,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Positioning Support,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Positioning Support}
+
+%D Although \TEX\ has a rather powerful channel to the outside
+%D world, called \type {\special}, real communication with
+%D other programs is complicated by the fact that no positional
+%D information is available. Mid 1999, I discussed this with
+%D \THANH, the author of \PDFTEX, and after some experiments,
+%D \PDFTEX\ was extended with a simple but effective mechanism,
+%D that provided positional information. The interesting
+%D thought is that, although \TEX\ is frozen, similar
+%D functionality could have been achieved with \type
+%D {\specials} and an additional \DVI\ postprocessor.
+%D
+%D Since we want to be as compatible as can be, \CONTEXT\ will
+%D support both methods, although the development is primarily
+%D driven by the \PDFTEX\ way of doing things. Since the
+%D mechanism is basically not limited to one application, for
+%D the moment we stick to building the functionality around one
+%D \CONTEXT\ special command, but at the same time we keep our
+%D eyes open for extensions in other directions.
+%D
+%D A question that may arise when one reads this module, is to
+%D what extend these macros are generic, in the sense that they
+%D could be collected in a support module instead of a core
+%D module. Since the mechanism described here will closely
+%D cooperate with the \METAPOST\ support built in \CONTEXT,
+%D which in turn will be tightly integrated with the \CONTEXT\
+%D overlay mechanisms, I decided to write a core module instead
+%D of a support one. This makes even more sense, when one takes
+%D into account that this kind of support depends on special
+%D drivers.
+
+\unprotect
+
+%D The first application of positional information was embedded
+%D graphics. Since we are interacting with text, it made sense
+%D to take the current line height and depth into account too.
+%D This is why we have two basic position macros: one for
+%D simple positions, and one for boxes.
+%D
+%D We could have sticked to one special, and actually did so in
+%D earlier experiments, but for convenience, as well for
+%D clearness, we now have two alternatives. This approach will
+%D save us quite some bytes when storing large quantities of
+%D positional information. We save as less information as
+%D needed, that is, we save no dimensions, in a \METAPOST\
+%D friendly way.
+%D
+%D The three specials involved are:
+%D
+%D \starttypen
+%D \dosetposition {identifier}
+%D \dosetpositionwhd {identifier} {width} {height} {depth}
+%D \dosetpositionpapersize {width} {height}
+%D \stoptypen
+%D
+%D Either directly, when using \PDFTEX, or by means of a
+%D postprocessor, when using \DVI\ output, these end up in the
+%D utility file as:
+%D
+%D \starttypen
+%D \pospxy {identifier} {page} {x} {y}
+%D \pospxywhd {identifier} {page} {x} {y} {w} {h} {d}
+%D \stoptypen
+%D
+%D This means that we have to provide both a utility set and
+%D reset macro for positions.
+
+\def\POSprefix{POS::}
+
+\def\pxypos {\pospxy}
+\def\pxyposwhd{\pospxywhd}
+
+\def\resetpositions%
+ {\let\pospxy =\gobblefourarguments
+ \let\pospxywhd=\gobblesevenarguments}
+
+\resetpositions
+
+\def\setpositions%
+ {\def\pospxy##1##2##3##4%
+ {\dosetpositionnm\@@posp{##2}%
+ \dosetpositionpt\@@posx{##3}%
+ \dosetpositionpt\@@posy{##4}%
+ \setxvalue{\POSprefix##1}{\@@posp,\@@posx,\@@posy}}%
+ \def\pospxywhd##1##2##3##4##5##6##7%
+ {\dosetpositionnm\@@posp{##2}%
+ \dosetpositionpt\@@posx{##3}%
+ \dosetpositionpt\@@posy{##4}%
+ \dosetpositionpt\@@posw{##5}%
+ \dosetpositionpt\@@posh{##6}%
+ \dosetpositionpt\@@posd{##7}%
+ \setxvalue{\POSprefix##1}{\@@posp,\@@posx,\@@posy,\@@posw,\@@posh,\@@posd}}}
+
+%D For postprocessing purposes, we save the number of
+%D positions.
+
+\newcounter\currentpositions % current number of positions
+\newcounter\totalnofpositions % total from previous run
+
+\prependtoks
+ \savecurrentvalue\totalnofpositions\currentpositions
+\to \everybye % \everylastshipout
+
+%D We save positionional information without dimensions, which
+%D saves some bytes. The conversion too saves some bytes, but
+%D is primarily needed because we want to pass those values to
+%D \METAPOST\ too.
+
+\def\dosetpositionpt#1#2%
+ {\scratchdimen=#2sp\xdef#1{\@EA\withoutpt\the\scratchdimen}}
+
+\def\dosetpositionnm#1#2%
+ {\xdef#1{\number#2}}
+
+\def\checkpositions%
+ {\bgroup
+ \setbox0=\hbox{\doutilities{positions}{\jobname}{}{}{}}%
+ \global\let\checkpositions=\relax
+ \egroup}
+
+%D Since the positional values are to be fully expandable, we
+%D need to preload them as soon as possible, which is why we
+%D load the data when we start a text.
+
+\appendtoks \checkpositions \to \everystarttext
+
+%D \macros
+%D {MPp, MPx, MPy, MPw, MPh, MPd,
+%D MPxy, MPll, MPlr, MPur, MPul, MPpos}
+%D
+%D Access to the positional information is provided by macros
+%D with short names that are clearly meant for \METAPOST.
+
+\def\MPp {\doMPxyhdwlr\doMPp }
+\def\MPx {\doMPxyhdwlr\doMPx }
+\def\MPy {\doMPxyhdwlr\doMPy }
+\def\MPw {\doMPxyhdwlr\doMPw }
+\def\MPh {\doMPxyhdwlr\doMPh }
+\def\MPd {\doMPxyhdwlr\doMPd }
+\def\MPxy {\doMPxyhdwlr\doMPxy }
+\def\MPll {\doMPxyhdwlr\doMPll }
+\def\MPlr {\doMPxyhdwlr\doMPlr }
+\def\MPur {\doMPxyhdwlr\doMPur }
+\def\MPul {\doMPxyhdwlr\doMPul }
+\def\MPpos{\doMPxyhdwlr\doMPpos}
+
+%D So \type {\MPx{identifier}} returns a position, specified
+%D in points. When unknown, \type {0pt} is returned. From the
+%D next definitions, we can see that some positions are
+%D expressions.
+
+\def\doMPp #1,#2,#3,#4,#5,#6,#7\relax{#1}
+\def\doMPx #1,#2,#3,#4,#5,#6,#7\relax{#2pt}
+\def\doMPy #1,#2,#3,#4,#5,#6,#7\relax{#3pt}
+\def\doMPw #1,#2,#3,#4,#5,#6,#7\relax{#4pt}
+\def\doMPh #1,#2,#3,#4,#5,#6,#7\relax{#5pt}
+\def\doMPd #1,#2,#3,#4,#5,#6,#7\relax{#6pt}
+\def\doMPxy #1,#2,#3,#4,#5,#6,#7\relax{(#2pt,#3pt)}
+\def\doMPll #1,#2,#3,#4,#5,#6,#7\relax{(#2pt,#3pt-#6pt)}
+\def\doMPlr #1,#2,#3,#4,#5,#6,#7\relax{(#2pt+#4pt,#3pt-#6pt)}
+\def\doMPur #1,#2,#3,#4,#5,#6,#7\relax{(#2pt+#4pt,#3pt+#5pt)}
+\def\doMPul #1,#2,#3,#4,#5,#6,#7\relax{(#2pt,#3pt+#5pt)}
+\def\doMPpos#1,#2,#3,#4,#5,#6,#7\relax{#1,#2pt,#3pt,#4pt,#5pt,#6pt}
+
+%D As said, we will default to zero (dimensions) when a
+%D position is unknown.
+
+\def\doMPxyhdwlr#1#2%
+ {\ifundefined{\POSprefix#2}%
+ #10,0,0,0,0,0,0\relax
+ \else
+ \@EA\@EA\@EA#1\csname\POSprefix#2\endcsname,0,0,0,0\relax
+ \fi}
+
+%D \macros
+%D {MPanchor}
+%D
+%D For readability we define a few synonyms:
+
+\let\MPanchor\MPpos
+
+%D \macros
+%D {POSp, POSx, POSy, POSh, POSd, POSw}
+%D
+%D and:
+
+\let\POSp\MPp \let\POSx\MPx \let\POSy\MPy
+\let\POSh\MPh \let\POSd\MPd \let\POSw\MPw
+
+\newbox\positionbox
+\newif\ifpositioning
+
+%D There are two low level positioning macros. Both store the
+%D position as well as execute an action associated with that
+%D position.
+
+\def\initializenextposition%
+ {\ifpositioning \else
+ \global\positioningtrue
+ \dosetpositionpapersize
+ {\number\printpapierbreedte}
+ {\number\printpapierhoogte }%
+ \fi
+ \doglobal\increment\currentpositions}
+
+\def\setposition#1%
+ {\initializenextposition
+ \dosetposition{#1}%
+ \dopositionaction{#1}}
+
+\def\setpositionbox#1%
+ {\dowithnextbox
+ {\hbox to \wd\nextbox
+ {\initializenextposition
+ \def\currentposition{#1}%
+ \dosetpositionwhd{#1}
+ {\number\wd\nextbox}{\number\ht\nextbox}{\number\dp\nextbox}%
+ \setbox\positionbox=\box\nextbox
+ \dopositionaction{#1}%
+ \box\positionbox
+ \hss}}}
+
+\let\currentposition\s!unknown
+
+%D A few more low level macros take care of defining and
+%D recalling actions. We could save this information in the
+%D position containers themselves, this would save hash
+%D entries, but at the cost of much more time consuming
+%D expansion. Actions are saved globally!
+
+\newtoks\everypositionaction
+
+\let\POSactionprefix\POSprefix
+
+\def\dosetpositionaction#1%
+ {\setgvalue{\POSactionprefix#1::}}
+
+\def\dopositionaction#1% test saves hash entry in etex
+ {\doifdefined{\POSactionprefix#1::}%
+ {\bgroup
+ \the\everypositionaction
+ \getvalue{\POSactionprefix#1::}%
+ \egroup}}
+
+\def\doifpositionaction#1%
+ {\doifdefined{\POSactionprefix#1::}}
+
+%D We can copy a position with:
+%D
+%D \starttypen
+%D \copyposition {to} {from}
+%D \stoptypen
+%D
+%D Again, this is a global action.
+
+\def\copyposition#1#2%
+ {\bgroup
+ \edef\to {\POSprefix#1}%
+ \edef\from{\POSprefix#2}%
+ \doifdefined\from
+ {\global\@EA\@EA\@EA\let\@EA\csname\@EA\to\@EA\endcsname\csname\from\endcsname}%
+ \egroup}
+
+%D The fact that handling positions is a two pass operation, is
+%D one of the reasons why we need to be able to test for
+%D existence, using:
+%D
+%D \starttypen
+%D \doifpositionelse {identifier} {found action} {not found action}
+%D \stoptypen
+
+\def\doifpositionelse#1%
+ {\doifdefinedelse{\POSprefix#1}}
+
+%D We have now arrived at a few macros that would make sense as
+%D support macros, but ended up in the core.
+
+%D \macros
+%D {xypos}
+%D
+%D We have several macros available to save positions. Later
+%D we will see applications.
+%D
+%D \starttabulatie[|l|l||]
+%D \NC \type {\xypos} \NC \NC simple position with no dimensions \NC \NR
+%D \NC \type {\hpos} \NC \NC position and characteristics of a \type {\hbox} \NC \NR
+%D \NC \type {\vpos} \NC \NC position and characteristics of a \type {\vbox} \NC \NR
+%D \NC \type {\lpos} \NC l: \NC left edge of a line \NC \NR
+%D \NC \type {\rpos} \NC r: \NC right edge of a line \NC \NR
+%D \NC \type {\bpos} \NC b: \NC begin point in a line \NC \NR
+%D \NC \type {\epos} \NC e: \NC end point in a line \NC \NR
+%D \NC \type {\fpos} \NC f: \NC begin point in a paragraph \NC \NR
+%D \NC \type {\tpos} \NC t: \NC end point in a paragraph \NC \NR
+%D \stoptabulatie
+%D
+%D Each macro takes an identifier as argument, and the \type
+%D {\hpos} and \type {\vpos} also expect box content.
+
+\def\xypos{\initializenextposition\dosetposition}
+
+\def\hpos#1{\dontleavehmode\setpositionbox{#1}\hbox}
+\def\vpos#1{\setpositionbox{#1}\vbox}
+
+\def\lpos#1{\lrpos{l:#1}{\kern\leftskip}}
+\def\rpos#1{\lrpos{r:#1}{\hskip\hsize\hskip-\rightskip}}
+
+\def\bpos#1{\hpos{b:#1}{\strut}\ignorespaces}
+\def\epos#1{\ifhmode\unskip\fi\hpos{e:#1}{\strut}}
+
+\def\fpos#1{\lpos{#1}\rpos{#1}\bpos{#1}}
+\def\tpos#1{\epos{#1}}
+
+%D The macros \type {\lpos} and \type {\rpos} share some code.
+
+\def\lrpos#1#2%
+ {\dontleavehmode\vadjust
+ {\setbox0=\hbox{\raise\dp\strutbox\hbox{\hpos{#1}{\strut}}}%
+ \smashbox0
+ \rlap{#2\box0}}}
+
+%D \macros
+%D {doifoverlappingelse}
+%D
+%D A first application of positional information, is to
+%D determine if two boxes do overlap:
+%D
+%D \starttypen
+%D \doifoverlappingelse{point a}{point b}
+%D {action when overlapping}
+%D {action when not overlapping}
+%D \stoptypen
+
+\def\doifoverlappingelse#1#2#3#4%
+ {\ifnum\MPp{#1}=\MPp{#2}\relax
+ \bgroup
+ \donefalse
+ \def\check##1##2%
+ {\ifdone\else
+ \ifdim\dimen1##1<\dimen0 \else \ifdim\dimen1##1>\dimen2 \else
+ \ifdim\dimen1##2<\dimen4 \else \ifdim\dimen1##2>\dimen6 \else
+ \donetrue
+ \fi\fi
+ \fi\fi
+ \fi}%
+ \dimen 0=\MPx{#1}%
+ \dimen 2=\MPx{#1}\advance\dimen 2 by \MPw{#1}%
+ \dimen 4=\MPy{#1}\advance\dimen 4 by -\MPd{#1}%
+ \dimen 6=\MPy{#1}\advance\dimen 6 by \MPh{#1}%
+ \dimen10=\MPx{#2}%
+ \dimen12=\MPx{#2}\advance\dimen12 by \MPw{#2}%
+ \dimen14=\MPy{#2}\advance\dimen14 by -\MPd{#2}%
+ \dimen16=\MPy{#2}\advance\dimen16 by \MPh{#2}%
+ %\message{\the\dimen 0-\the\dimen 2,\the\dimen 4-\the\dimen 6}\wait
+ %\message{\the\dimen10-\the\dimen12,\the\dimen14-\the\dimen16}\wait
+ \check04\check24\check26\check06\ifdone\egroup#3\else\egroup#4\fi
+ \else
+ #4%
+ \fi}
+
+%D \macros
+%D {doifpositionsonsamepageelse,
+%D doifpositionsonthispageelse}
+%D
+%D Instead of letting the user handle fuzzy expansion, we
+%D provide a simple test on positione being on the same page.
+%D
+%D \starttypen
+%D \doifpositionsonsamepageelse{point a}{point b}
+%D {action when on same page}
+%D {action when not on same page}
+%D \doifpositionsonthispageelse{point a}{point b}
+%D {action when on this page}
+%D {action when not on this page}
+%D \stoptypen
+
+\def\doifpositionsonsamepageelse#1#2#3#4%
+ {\bgroup
+ \scratchcounter=#1\donefalse
+ \def\docommando##1%
+ {\ifcase\scratchcounter
+ \scratchcounter=\MPp{##1}\donetrue
+ \else
+ \ifnum\scratchcounter=\MPp{##1}\relax\else\donefalse\fi
+ \fi}%
+ \rawprocesscommalist[#2]\docommando
+ \ifdone\egroup#3\else\egroup#4\fi}
+
+\def\doifpositionsonsamepageelse%
+ {\doifpositionsonsamepageelse{0}}
+
+\def\doifpositionsonthispageelse#1#2#3%
+ {\doifpositionsonsamepageelse\realfolio}
+
+%D Before we come to graphics support, we have to make sure of
+%D the reference point on the page. The next macro does so and
+%D is hooked into the page building routine.
+
+\def\placepositionanchors%
+ {\ifpositioning
+ \vbox to \teksthoogte
+ {\hpos{head:\realfolio}{\hskip\tekstbreedte}
+ \vfill
+ \hpos{tail:\realfolio}{\hskip\tekstbreedte}}
+ \else
+ \vskip\teksthoogte
+ \fi}
+
+%D \macros
+%D {positionoverlay,startpositionoverlay}
+%D
+%D As long as we're dealing with graphics it makes much sense
+%D to use the available overlay mechanism. For this purpose, we
+%D define some dedicated overlay extensions.
+%D
+%D \startbuffer[sample]
+%D \defineoverlay [sample] [\positionoverlay{sample}]
+%D
+%D \startpositionoverlay{sample}
+%D \setMPpositiongraphic{A-1}{connectcenter}{from=A-1m,to=A-2}
+%D \stoppositionoverlay
+%D \stopbuffer
+%D
+%D \typebuffer[sample]
+%D
+%D \startbuffer[graphic]
+%D \startMPpositiongraphic{connectcenter}
+%D path pa, pb ; pair ca, cb ;
+%D initialize_box(\MPvar{from}) ; pa := pxy ; ca := cxy ;
+%D initialize_box(\MPvar{to}) ; pb := pxy ; cb := cxy ;
+%D draw pa withcolor red ;
+%D draw pb withcolor red ;
+%D draw ca -- cb withcolor blue ;
+%D anchor_box(\MPanchor{\MPvar{from}}) ;
+%D \stopMPpositiongraphic
+%D \stopbuffer
+%D
+%D We can best demonstrate this in an example, say:
+%D
+%D \startbuffer[text]
+%D \omlijnd
+%D [achtergrond=sample,uitlijnen=midden,breedte=7cm]
+%D {We want to connect \hpos {A-1} {this} word with its
+%D grammatical cousin \hpos {A-2} {that}.}
+%D \stopbuffer
+%D
+%D \typebuffer[text]
+%D
+%D \startregelcorrectie
+%D %\haalbuffer[graphic,sample,text]
+%D \stopregelcorrectie
+%D
+%D The graphic is defined in the following way, using some
+%D macros defined in an auxiliary \METAPOST\ module that is
+%D preloaded.
+%D
+%D \typebuffer[graphic]
+
+\def\MPanchoridentifier{mp-anchor}
+\def\MPoverlayposprefix{MO::}
+
+\long\def\defineMPpositiongraphic#1%
+ {\long\setvalue{\MPoverlayposprefix#1}}
+
+%D The rest of the definitions concerning such overlays may
+%D look complicated,
+
+\let\currentpositionoverlay\empty
+
+%D Position actions are automatically executed when a position
+%D is set. In the next macro, the definitions sort of prelude
+%D this process.
+
+\def\positionoverlay#1%
+ {\ifpositioning
+ \vbox to \overlayheight
+ {\edef\MPanchor##1{\MPpos{#1::\MPanchoridentifier}}%
+ \def\dohandlepositionboxes##1##2##3% pos tag setups
+ {\ifnum\MPp{##1}=\realpageno\relax % extra saveguard / beter in \dodo
+ \dodohandlepositionboxes{##1}{##2}{##3}%
+ \fi}%
+ \def\dohandleMPpositiongraphic##1##2##3% pos tag setups
+ {\ifnum\MPp{##1}=\realpageno\relax % extra saveguard / beter in \dodo
+ \dodohandleMPpositiongraphic{##1}{##2}{##3}%
+ \fi}%
+ \hpos{#1::\MPanchoridentifier}{\hskip\overlaywidth}%
+ \vfill}%
+ \fi}
+
+\def\startpositionoverlay#1%
+ {\def\currentpositionoverlay{#1}}
+
+\def\stoppositionoverlay%
+ {\let\currentpositionoverlay\empty}
+
+\def\resetpositionoverlay#1%
+ {\dosetpositionaction{#1::\MPanchoridentifier::}{}}
+
+%D Here the complication has to do with collecting actions
+%D for later execution.
+
+\def\handlepositionboxes#1#2#3%
+ {\bgroup
+ \ifx\currentpositionoverlay\empty
+ \edef\!!stringa{\POSactionprefix#2::}%
+ \else
+ \edef\!!stringa{\POSactionprefix\currentpositionoverlay::\MPanchoridentifier::}%
+ \fi
+ \let\dohandlepositionboxes\relax
+ \doifundefinedelse\!!stringa
+ {\let\!!stringb\empty}
+ {\edef\!!stringb{\getvalue\!!stringa}}%
+ \setxvalue\!!stringa
+ {\!!stringb\dohandlepositionboxes{#1}{#2}{#3}}%
+ \egroup}
+
+%D The indirectness enables us (as was demonstrated a few lines
+%D ago) to redefine this macro but still use its functionality.
+
+\def\dodohandlepositionboxes#1#2#3%
+ {\doifdefined{\MPoverlayposprefix#1}
+ {\getvalue{\MPoverlayposprefix#1}{#1}{#2}{#3}}}
+
+\let\dohandlepositionboxes\dodohandlepositionboxes
+
+%D A position graphic is a normal (non||reused) \METAPOST\
+%D graphic, used immediately, with zero dimensions, so that a
+%D sequence of them does not harm.
+
+\newbox\positiongraphicbox
+
+\def\setMPpositiongraphic%
+ {\dotriplegroupempty\dosetMPpositiongraphic}
+
+\def\dosetMPpositiongraphic#1#2#3% pos tag vars
+ {\ifx\currentpositionoverlay\empty
+ \dosetpositionaction{#1}{\MPpositiongraphic{#2}{#3}}%
+ \else % silly can be one
+ \handlepositiongraphics{#1}{#2}{#3}%
+ \fi}
+
+\def\handlepositiongraphics#1#2#3% combine with boxes
+ {\bgroup
+ \ifx\currentpositionoverlay\empty
+ \edef\!!stringa{\POSactionprefix#2::}% #2 ?
+ \else
+ \edef\!!stringa{\POSactionprefix\currentpositionoverlay::\MPanchoridentifier::}%
+ \fi
+ \let\dohandleMPpositiongraphic\relax
+ \doifundefinedelse\!!stringa
+ {\let\!!stringb\empty}
+ {\edef\!!stringb{\getvalue\!!stringa}}%
+ \setxvalue\!!stringa
+ {\!!stringb\dohandleMPpositiongraphic{#1}{#2}{#3}}%
+ \egroup}
+
+\def\dodohandleMPpositiongraphic#1#2#3%
+ {\def\currentposition{#1}\MPpositiongraphic{#2}{#3}}
+
+\let\dohandleMPpositiongraphic\dodohandleMPpositiongraphic
+
+\def\startMPpositiongraphic% id setups
+ {\dodoublegroupempty\dostartMPpositiongraphic}
+
+\long\def\dostartMPpositiongraphic#1#2#3\stopMPpositiongraphic%
+ {\long\setgvalue{MPG:#1}% tag list mpcode
+ {\useMPpositiongraphic{#1}{#2}{#3}}}
+
+\def\prepareMPpositionvariables%
+ {\doifundefined{\@@meta self}{\setvalue{\@@meta self}{\currentposition}}%
+ \doifundefined{\@@meta from}{\setvalue{\@@meta from}{\currentposition}}}
+
+\long\def\useMPpositiongraphic#1#2#3%
+ {\bgroup
+ \prepareMPvariables{#2}%
+ \prepareMPpositionvariables
+% \startuseMPgraphic{MPG}#3\stopuseMPgraphic
+% \getvalue{MP:MPG}%
+ \enableincludeMPgraphics
+ \startMPgraphic#3\stopMPgraphic
+ \loadMPgraphic{\MPgraphicfile.\the\currentMPgraphic}{}%
+ \deallocateMPslot\currentMPgraphic
+ \placeMPgraphic
+ \egroup}
+
+\def\MPpositiongraphic%
+ {\dodoublegroupempty\doMPpositiongraphic}
+
+\def\doMPpositiongraphic#1#2% tag setups
+ {\bgroup
+ \def\@@meta{#1:}%
+ \setupMPvariables[#2]%
+ \prepareMPpositionvariables
+ \MPshiftdrawingtrue
+ \def\doMPpositiongraphic##1##2{\getvalue{MPG:##1}}% temp hack
+ \setbox\positiongraphicbox=\hbox
+ {\doifdefinedelse{MPM:#1} % method
+ {\ignorespaces\getvalue{MPM:#1}\unskip}
+ {\getvalue{MPG:#1}}}%
+ \smashbox\positiongraphicbox
+ \box\positiongraphicbox
+ \egroup}
+
+\long\def\startMPpositionmethod#1#2\stopMPpositionmethod%
+ {\long\setgvalue{MPM:#1}{#2}} % todo: var list here
+
+%D The auxiliary \METAPOST\ macros are defined by default,
+%D by saying:
+
+\appendtoks
+ if unknown context_core : input mp-core.mp ; fi ;
+\to \MPinitializations
+
+%D Some of these macros are pretty clever but too complicated
+%D to be nice.
+
+\setupMPvariables
+ [mpos:box]
+ [linecolor=blue,
+ linewidth=\linewidth,
+ backgroundcolor=lightgray]
+
+\startMPpositiongraphic{mpos:box}{backgroundcolor,linecolor}
+ initialize_box(\MPpos{\MPvar{self}}) ;
+ boxfillcolor := \MPvar{backgroundcolor} ;
+ boxlinecolor := \MPvar{linecolor} ;
+ draw_box ;
+ anchor_box(\MPanchor{\MPvar{self}}) ;
+\stopMPpositiongraphic
+
+\setupMPvariables
+ [mpos:area]
+ [linecolor=blue,
+ linewidth=\linewidth,
+ backgroundcolor=lightgray]
+
+\startMPpositiongraphic{mpos:area}{backgroundcolor,linecolor}
+ initialize_area(\MPpos{b:\MPvar{self}},\MPpos{e:\MPvar{self}}) ;
+ boxfillcolor := \MPvar{backgroundcolor} ;
+ boxlinecolor := \MPvar{linecolor} ;
+ draw_area ;
+ anchor_area(\MPanchor{b:\MPvar{self}}) ;
+\stopMPpositiongraphic
+
+\setupMPvariables
+ [mpos:par]
+ [linecolor=blue,
+ linewidth=\linewidth,
+ backgroundcolor=lightgray]
+
+\startMPpositionmethod{mpos:par}
+ \ifnum\MPp{b:\MPvar{self}}=\MPp{e:\MPvar{self}}\relax
+ \startMPpositiongraphic{mpos:par}{backgroundcolor,linecolor}
+ initialize_par(\MPpos{b:\MPvar{self}},\MPpos{l:\MPvar{self}},
+ \MPpos{r:\MPvar{self}},\MPpos{e:\MPvar{self}}) ;
+ boxfillcolor := \MPvar{backgroundcolor} ;
+ boxlinecolor := \MPvar{linecolor} ;
+ draw_par ;
+ anchor_par(\MPanchor{b:\MPvar{self}}) ;
+ \stopMPpositiongraphic
+ \MPpositiongraphic{mpos:par}{}%
+ \else
+ \startMPpositiongraphic{mpos:par}{backgroundcolor,linecolor}
+ initialize_par(\MPpos{b:\MPvar{self}},\MPpos{l:\MPvar{self}},
+ \MPpos{r:\MPvar{self}},\MPpos{tail:\realfolio}) ;
+ boxfillcolor := \MPvar{backgroundcolor} ;
+ boxlinecolor := \MPvar{linecolor} ;
+ draw_par ;
+ anchor_par(\MPanchor{b:\MPvar{self}}) ;
+ \stopMPpositiongraphic
+ \MPpositiongraphic{mpos:par}{}%
+ \advance\realpageno by 1
+ \dosetpositionaction{head:\realfolio}%
+ {\copyposition{b:\MPvar{self}}{head:\realfolio}%
+ \doshowpositionpar{\MPvar{self}}}%
+ \fi
+\stopMPpositionmethod
+
+% lelijk, aanpassen
+
+\setupMPvariables
+ [mpos:connect]
+ [linecolor=blue,
+ linewidth=\linewidth,
+ arrowcolor=red,
+ backgroundcolor=lightgray]
+
+\startMPpositiongraphic{mpos:connect}{linecolor,linewidth,arrowcolor}
+ path pa, pb ; pair ca, cb ;
+ initialize_box(\MPpos{\MPvar{from}}) ; pa := pxy ; ca := cxy ;
+ initialize_box(\MPpos{\MPvar{to}}) ; pb := pxy ; cb := cxy ;
+ drawoptions(withpen pencircle scaled \MPvar{linewidth}) ;
+ draw pa withcolor \MPvar{linecolor} ;
+ draw pb withcolor \MPvar{linecolor} ;
+ drawoptions(withpen pencircle scaled (3*\MPvar{linewidth})) ;
+ drawarrow ca -- cb withcolor \MPvar{arrowcolor} ;
+ anchor_box(\MPanchor{\MPvar{from}}) ;
+\stopMPpositiongraphic
+
+%D \macros
+%D {stackposdown, stackposup, stackposleft,stackposright}
+%D
+%D A non graphic example of the use of positioning, is to stack
+%D text in for instance the margin.
+%D
+%D \stackposdown \inlinker {some text}The text \type {some text}
+%D goes into the left margin, and \stackposdown \inlinker {some
+%D more}\type {some more} as well. When they overlap, they
+%D will not touch.
+%D
+%D Here we said \type {\stackposdown \inlinker{some text}}. Instead
+%D of \stackposleft \inlinker {one}stacking \stackposleft \inlinker
+%D {two}vertically, one can stack horizontally by \stackposleft
+%D \inlinker {three}using \type {\stackposleft}.
+%D
+%D We can go in all four directions, using \type {\stackposdown},
+%D \type {\stackposup}, \type {\stackposleft} and \type
+%D {\stackposright}.
+
+\def\stackposdistance{.5em}
+
+\newcounter\currentautopos
+
+\def\POSstackprefix{stack:}
+
+\def\dostackposbox#1#2%
+ {\dowithnextbox
+ {#2{\let\previousautopos\currentautopos
+ \doglobal\increment\currentautopos
+ \hpos{\POSstackprefix\currentautopos}
+ {\doifoverlappingelse{\POSstackprefix\currentautopos}{\POSstackprefix\previousautopos}
+ {#1}
+ {\box\nextbox}}}}%
+ \hbox}
+
+\def\stackposup {\dostackposbox{\raise\lineheight\box\nextbox}}
+\def\stackposdown {\dostackposbox{\lower\lineheight\box\nextbox}}
+\def\stackposleft {\dostackposbox{\copy\nextbox\hskip\wd\nextbox\hskip\stackposdistance}}
+\def\stackposright{\dostackposbox{\hskip\stackposdistance\hskip\wd\nextbox\box\nextbox}}
+
+%D The next hack make sure that margin texts near faulty
+%D strutted lines are handled ok.
+
+\newif\ifrepositionmarginbox % \repositionmarginboxtrue
+
+\newcounter\currentmarginpos
+
+\def\dopositionmarginbox#1%
+ {\bgroup
+ \ifrepositionmarginbox
+ \doglobal\increment\currentmarginpos
+ \setposition{\s!margin:\currentmarginpos}%
+ \scratchdimen=\MPy{\s!margin:\currentmarginpos}%
+ \doglobal\increment\currentmarginpos
+ \advance\scratchdimen by -\MPy{\s!margin:\currentmarginpos}%
+ \advance\scratchdimen by -\dp\strutbox
+ \setbox#1=\hbox
+ {\setposition{\s!margin:\currentmarginpos}\raise\scratchdimen\box#1}%
+ \dp#1=\!!zeropoint
+ \ht#1=\!!zeropoint
+ \fi
+ \vadjust{\box#1}%
+ \egroup}
+
+%D For a right menu, a sequence of calls to \type
+%D {right_menu_button} is generated.
+%D
+%D \starttypen
+%D right_menu_button (n, p, s=0/1/2, x, y, w, h, d) ;
+%D \stoptypen
+%D
+%D Here, n is the number of the button, s a status variable,
+%D while the rest is positional info. The status variable is
+%D 0, 1 or~2: not found, found and found but current page.
+
+% 0=not found 1=found 2=current page
+
+% geen leeg
+
+\newtoks\MPmenutoks
+
+\def\MPmenubuttons#1{\the\MPmenutoks}
+
+\appendtoks \global\MPmenutoks\emptytoks \to \everyshipout
+
+% 0=notfound 1=found 2=currentpage
+
+\def\do@@amposition#1#2#3%
+ {\doifelsevalue{\??am#1\c!positie}{\v!ja}
+ {\doglobal\increment\currentamposition
+ \doifnumberelse{#2}
+ {\docheckrealreferencepage{#2}%
+ \global\chardef\currentamrealpage=\ifrealreferencepage2\else1\fi}
+ {\doifreferencefoundelse{#2}
+ {\global\chardef\currentamrealpage=\ifrealreferencepage2\else1\fi}
+ {\global\chardef\currentamrealpage=0}}% % not found
+ \expanded
+ {\doglobal\noexpand\appendtoks
+ #1_menu_button(\currentamposition,\the\currentamrealpage,\noexpand\MPpos{#1:\currentamposition}) ;
+ \to \MPmenutoks}%
+ \hpos{#1:\currentamposition}{#3}}
+ {#3}}
+
+\def\do@@ammenuposition#1%
+ {\ifnum\currentamposition>0
+ \dowithnextbox{\hpos{menu:#1:\realfolio}{\box\nextbox}}\hbox
+ \fi}
+
+\protect \endinput
+
+%D \macros
+%D {GFC, GTC, GSC}
+%D
+%D The next macros extend tables and tabulation with
+%D backgrounds and position related features. Areas are
+%D specified with symbolic names, and symbolic references to
+%D the graphics involved. Each table has its own namespace.
+
+\newcounter\noftabpositions
+\newtoks \posXCtoks
+
+\def\tbPOSprefix%
+ {tbp:\noftabpositions:}
+
+\def\tablepos%
+ {\scratchtoks\posXCtoks
+ \global\posXCtoks\emptytoks
+ \the\scratchtoks}
+
+\let\tabulatepos\tablepos
+
+\def\dodododoGSC[#1:#2]%
+ {\remappositionframed{#2}{\tbPOSprefix#1}%
+ \bpos{\tbPOSprefix#1}%
+ \doglobal\appendtoks\@EA\epos\@EA{\tbPOSprefix#1}\to\posXCtoks}
+
+\def\dododoGSC[#1:#2:#3]%
+ {\doglobal\appendtoks\dodododoGSC[#1:#2]\to\posXCtoks\NC}
+
+\def\dodoGSC[#1]%
+ {\def\docommando##1{\dododoGSC[##1:##1]}%
+ \processcommalist[#1]\docommando}
+
+\def\dodododoGFC[#1:#2:#3]%
+ {\remappositionframed{#2}{\tbPOSprefix#1}%
+ \bpos{\tbPOSprefix#1}}
+
+\def\dododoGFC[#1]%
+ {\def\docommando##1{\dodododoGFC[##1:##1]}%
+ \processcommalist[#1]\docommando}
+
+\def\dodoGFC[#1]%
+ {\doglobal\appendtoks\dododoGFC[#1]\to\posXCtoks\NC}
+
+\def\dododododoGTC[#1:#2]%
+ {\epos{\tbPOSprefix#1}}
+
+\def\dodododoGTC[#1]%
+ {\def\docommando##1{\dododododoGTC[##1:##1]}%
+ \processcommalist[#1]\docommando}
+
+\def\dododoGTC[#1]%
+ {\doglobal\appendtoks\dodododoGTC[#1]\to\posXCtoks}
+
+\def\dodoGTC[#1]%
+ {\doglobal\appendtoks\dododoGTC[#1]\to\posXCtoks\NC}
+
+\def\dodododoXC[#1#2]%
+ {\if#1>\dodoGFC [#2:#2]\else
+ \if#1+\dodoGFC [#2:#2]\else
+ \if#1<\dodoGTC [#2:#2]\else
+ \if#1-\dodoGTC [#2:#2]\else
+ \if#1=\dodoGSC [#2:#2]\else
+ \dodoGSC[#1#2:#1#2]\fi\fi\fi\fi\fi}
+
+\def\dododoXC#1%
+ {\dodododoXC[#1]}
+
+\def\dodoXC[#1]%
+ {{\let\NC\relax\processcommalist[#1]\dododoXC}}
+
+\def\doGSC[#1]{\iffirstargument\dodoGSC[#1]\else\expandafter\NC\fi}
+\def\doGFC[#1]{\iffirstargument\dodoGFC[#1]\else\expandafter\NC\fi}
+\def\doGTC[#1]{\iffirstargument\dodoGTC[#1]\else\expandafter\NC\fi}
+\def\doXC [#1]{\iffirstargument\dodoXC [#1]\else\expandafter\fi\NC}
+
+\def\GSC{\dosingleempty\doGSC}
+\def\GFC{\dosingleempty\doGFC}
+\def\GTC{\dosingleempty\doGTC}
+\def\XC {\dosingleempty\doXC }
+
+%D The amount of code to support tables and tabulation is
+%D rather minimalistic.
+
+\let\tabulatepos\tablepos
+
+\def\tabulatenormalpos%
+ {\hss\tabulatepos\hss}
+
+\def\tabulateequalpos%
+ {\setbox\scratchbox=\hbox{\tabulateEQ}%
+ \hbox to \wd\scratchbox{\hss\kern\!!zeropoint\tabulatepos\hss}%
+ \hskip-\wd\scratchbox
+ \box\scratchbox}
+
+\def\tabulatenormalcolumn#1%
+ {&\iftabulateequal\tabulateequalpos\else\tabulatenormalpos\fi
+ &\global\chardef\tabulatetype=#1&}
+
+\def\tabulateequalcolumn#1%
+ {&\tabulateequalpos
+ &\global\chardef\tabulatetype=#1&}
+
+\appendtoks \doglobal\increment\noftabpositions \to \everytabulate
+
+%D \macros
+%D {definepositionframed}
+%D
+%D The next example show how to provide backgrounds to table
+%D cells. First we define some framed backgrounds.
+%D
+%D \startbuffer
+%D \definepositionframed[x][background=color,backgroundcolor=red]
+%D \definepositionframed[y][background=color,backgroundcolor=green]
+%D \definepositionframed[z][background=color,backgroundcolor=blue]
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D % \haalbuffer
+%D
+%D \startbuffer
+%D \starttabulatie[|c|c|c|]
+%D \GFC[f:x] this is a small \NC table \NC in which we \NC \FR
+%D \NC will demonstrate \GFC[g:z] that this \GTC[g] positioning \NC \MR
+%D \GSC[e:y] mechanism also \GTC[f] works quite well \NC in tables \NC \LR
+%D \stoptabulatie
+%D \stopbuffer
+%D
+%D The table itself defines three areas (a, b and~c) using
+%D these frames.
+%D
+%D \typebuffer
+%D % \haalbuffer
+%D
+%D Tables (based on \TABLE) are supported by:
+
+\def\normalTABLEsimplebar {\unskip\!ttRightGlue&\tablepos&} % |
+\def\normalTABLEcomplexbar{\unskip\!ttRightGlue&\omit\tablepos\!ttAlternateVrule} % \|
+\def\normalTABLEquote {\unskip\!ttRightGlue&\omit\tablepos&} % "
+
+\appendtoks \doglobal\increment\noftabpositions \to \EveryTable
+
+%D In the previous example, we could have provided an overlay to
+%D the framed definition. A more direct approach is demonstrated
+%D below:
+%D
+%D \startbuffer
+%D \def\cw#1{\color[white]{#1}}
+%D
+%D \def\TableShade#1#2%
+%D {\startMPpositiongraphic
+%D initialize_area(\MPpos{b:#1},\MPpos{e:#1}) ;
+%D linear_shade(pxy,0,.4#2,.9#2) ;
+%D anchor_area(\MPanchor{b:#1}) ;
+%D \stopMPpositiongraphic}
+%D
+%D \dosetpositionaction{b:x}{\TableShade{x}{red}}
+%D \dosetpositionaction{b:y}{\TableShade{y}{green}}
+%D \dosetpositionaction{b:z}{\TableShade{z}{blue}}
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D % \haalbuffer
+%D
+%D The definition of the table looks about the same as the
+%D previous one:
+%D
+%D \startbuffer
+%D \starttabel[|c|c|c|]
+%D \GFC[b:z] \cw{this is a small} \NC \cw{table} \NC in which we \NC \FR
+%D \NC \cw{will demonstrate} \GFC[c:y] \cw{that this} \GTC[c] \cw{positioning} \NC \MR
+%D \GSC[a:x] \cw{mechanism also} \GTC[b] \cw{works quite well} \NC in tables \NC \LR
+%D \stoptabel
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D % \haalbuffer
+
+% \definepositionframed[w][background=color,backgroundcolor=yellow]
+% \definepositionframed[x][background=color,backgroundcolor=red]
+% \definepositionframed[y][background=color,backgroundcolor=green]
+% \definepositionframed[z][background=color,backgroundcolor=blue]
+%
+% \starttabulate[|c|c|c|]
+% \NC this is a small \NC table \NC in which we \NC \FR
+% \NC will demonstrate \NC that this \NC positioning \NC \MR
+% \NC mechanism also \NC works quite well \NC in tables \NC \LR
+% \stoptabulate
+%
+% \starttabulate[|c|c|c|]
+% \GFC[f:x] this is a small \GTC table \NC in which we \NC \FR
+% \NC will demonstrate \GFC[g:z] that this \GTC[g] positioning \NC \MR
+% \GSC[e:y] mechanism also \GTC[f] works quite well \NC in tables \NC \LR
+% \stoptabulate
+%
+% \starttabulate[|c|c|c|]
+% \GFC[f:x,d:w] this is a small \GTC[d] table \NC in which we \NC \FR
+% \NC will demonstrate \GFC[g:z] that this \GTC[g] positioning \NC \MR
+% \GSC[e:y] mechanism also \GTC[f] works quite well \NC in tables \NC \LR
+% \stoptabulate
+%
+% \starttabulate[|c|c|c|]
+% \XC[+f:x] this is a small \XC table \NC in which we \NC \FR
+% \NC will demonstrate \XC[+g:z] that this \XC[-g] positioning \NC \MR
+% \XC[=e:y] mechanism also \XC[-f] works quite well \NC in tables \NC \LR
+% \stoptabulate
+%
+% \starttabulate[|c|c|c|]
+% \XC[+f:x,+d:w] this is a small \XC[-d] table \NC in which we \NC \FR
+% \NC will demonstrate \XC[+g:z] that this \XC[-g] positioning \NC \MR
+% \XC[=e:y] mechanism also \XC[-f] works quite well \NC in tables \NC \LR
+% \stoptabulate
+
+% evt [b:x]
+%
+% \definepositionframed[x][background=color,backgroundcolor=red]
+% \definepositionframed[y][background=color,backgroundcolor=green]
+% \definepositionframed[z][background=color,backgroundcolor=blue]
+
+\def\remappositionframed#1#2% from to
+ {\copyposition{b:#1}{b:#2}%
+ \copyposition{e:#1}{e:#2}%
+ \dosetpositionaction{b:#2}{\dopositionaction{b:#1}}}
+
+\def\definepositionframed%
+ {\dodoubleargument\dodefinepositionframed}
+
+\def\dodefinepositionframed[#1][#2]%
+ {\dosetpositionaction{b:#1}{\dopositionframed[#1][#2]}}
+
+\def\positionframed%
+ {\dodoubleempty\dopositionframed}
+
+\def\dopositionframed[#1][#2]%
+ {\bgroup
+ \setbox\scratchbox=\hbox
+ {\dimen0=\MPx{e:#1}%
+ \advance\dimen0 by -\MPx{b:#1}%
+ \dimen2=\MPy{b:#1}%
+ \advance\dimen2 by -\MPy{e:#1}%
+ \advance\dimen2 by \MPd{e:#1}%
+ \lower\dimen2\hbox
+ {\advance\dimen2 by \MPh{b:#1}%
+ \framed
+ [\c!breedte=\dimen0,\c!hoogte=\dimen2,
+ \c!offset=\v!overlay,#2]{}}}%
+ \smashbox\scratchbox
+ \box\scratchbox
+ \egroup}
+
+% \def\sethdistances#1%
+% {\hbox{\lpos{ml:#1}\hpos{mh:#1}{\strut}\rpos{mr:#1}}}
+%
+% \def\gethdistances#1%
+% {\scratchdimen=\MPx{mh:#1}%
+% \advance\scratchdimen by -\MPx{ml#1}%
+% \edef\lefthdistance{\the\scratchdimen}%
+% \scratchdimen=\MPx{mr:#1}%
+% \advance\scratchdimen by -\MPx{mh:#1}%
+% \edef\righthdistance{\the\scratchdimen}}
+
+\protect \endinput
diff --git a/tex/context/base/core-ref.tex b/tex/context/base/core-ref.tex
index 8604bafab..c4705cd0e 100644
--- a/tex/context/base/core-ref.tex
+++ b/tex/context/base/core-ref.tex
@@ -37,9 +37,9 @@
% rt!list -> \definereference
% rt!exec -> \definereference
%
-% not, because the current implementation permits to
-% determine the page state and is more efficient.
-
+% but for the moment will not do so, if only because
+% the current implementation permits us to determine
+% the page state and is also more efficient
\unprotect
@@ -87,6 +87,28 @@
23: obskurni (nejasna) reference -- (prefix=--)
\stopmessages
+\startmessages italian library: references
+ title: riferimenti
+ 1: riferimento sconosciuto --
+ 2: riferimento duplicato -- a pagina --
+ 3: riferimento di tipo sconosciuto --
+ 4: riferimento illecito --
+ 21: documento -- caricato
+ 22: il documento -- non è interattivo
+ 23: riferimento ambiguo -- (prefisso=--)
+\stopmessages
+
+\startmessages norwegian library: references
+ title: referanser
+ 1: ukjent referanse --
+ 2: duplikat referanse -- på side --
+ 3: ukjent referansetype --
+ 4: ulovlig referanse --
+ 21: dokument -- er lest inn
+ 22: dokument -- er ikke interaktivt
+ 23: obskur referanse -- (Prefix=--)
+\stopmessages
+
%D This module deals with referencing. In \CONTEXT\ referencing
%D is one of the core features, although at a first glance
%D probably nobody will notice. This is good, because
@@ -259,18 +281,55 @@
%D In practice this comes to giving \type {\mainreference} a
%D appropriate meaning and loading the utility file.
-%\def\setreferences%
-% {\def\mainreference##1##2##3##4##5%
-% {\doifundefinedelse{\r!cross\fileprefix##1##2}
-% {\setglobalcrossreference{##1##2}{##3}{##4}{##5}}
-% {\showmessage{\m!references}{2}{[##1][##2],##4}}}}
+% \def\setreferences%
+% {\def\mainreference##1##2##3##4##5%
+% {\doifundefinedelse{\r!cross\fileprefix##1##2}
+% {\setglobalcrossreference{##1##2}{##3}{##4}{##5}}
+% {\showmessage{\m!references}{2}{[##1][##2],##4}}}}
+
+% \def\setreferences%
+% {\the\everyreference % we're grouped anyway
+% \def\mainreference##1##2##3##4##5%
+% {\doifundefinedelse{\r!cross\fileprefix##1##2}
+% {\setglobalcrossreference{##1##2}{##3}{##4}{##5}}
+% {\ifcase0##4\else\showmessage{\m!references}{2}{[##1][##2],##4}\fi}}}
+
+%D For a long time the only way to access an external file was
+%D to use the file prefix (\type {somefile::}. However, when
+%D you split up a document, redefining the references may be
+%D such a pain, that another approach is feasible. By setting
+%D the \type {autofile} variable to \type {yes} or \type
+%D {page}, you can access the reference directly. The latter
+%D case nills the prefix method, thereby saving some memory.
+%D
+%D \starttabulatie[||||]
+%D \NC filename::tag \NC page(filename::pnum) \NC tag \NC\NR
+%D \NC $\star$ \NC \NC \NC\NR
+%D \NC $\star$ \NC $\star$ \NC $\star$ \NC\NR
+%D \NC \NC $\star$ \NC \NC\NR
+%D \stoptabulatie
+
+\chardef\autocrossfilereferences=0
-\def\setreferences%
+\def\setreferences% some day, filename will be stored in ref record
{\the\everyreference % we're grouped anyway
\def\mainreference##1##2##3##4##5%
{\doifundefinedelse{\r!cross\fileprefix##1##2}
- {\setglobalcrossreference{##1##2}{##3}{##4}{##5}}
- {\ifcase0##4\else\showmessage{\m!references}{2}{[##1][##2],##4}\fi}}}
+ {\ifcase\autocrossfilereferences
+ \setglobalcrossreference{##1##2}{##3}{##4}{##5}%
+ \or
+ \setglobalcrossreference{##1##2}{##3}{##4}{##5}%
+ \doifundefinedelse{\r!cross##1##2}
+ {\expanded{\definereference[##1##2][\fileprefix##1##2]}}
+ {\showmessage{\m!references}{2}{[##1][##2],##4 (auto \currentutilityfilename)}}%
+ \or
+ \doifundefinedelse{\r!cross##1##2}
+ {\expanded{\definereference[##1##2][\noexpand\v!pagina(\fileprefix##4)]}}
+ {\showmessage{\m!references}{2}{[##1][##2],##4 (auto \currentutilityfilename)}}%
+ \fi}
+ {\ifcase0##4\else
+ \showmessage{\m!references}{2}{[##1][##2],##4 (\currentutilityfilename)}%
+ \fi}}}
\def\resetreferences%
{\let\mainreference=\gobblefivearguments}
@@ -291,6 +350,15 @@
\newtoks\everycheckreferences
+%D When we load references, the file name is stored in a
+%D list.
+
+\let\loadedreferences\empty
+
+%D We only load references ones.
+
+\newconditional\jobreferencesloaded
+
%D This token list is expanded after the references are loaded.
%D This hook can be used to initialize mechanisms that depend
%D on the reference mechsnism. An example can be found in the
@@ -305,12 +373,27 @@
\egroup
\the\everycheckreferences}
+% \def\usereferences[#1]%
+% {\bgroup
+% \checkreferences % Load job ones first!
+% \setbox0=\hbox
+% {\doonlyonce{references:#1}{\doutilities{references}{#1}{}{}{}}}%
+% \egroup}
+
\def\usereferences[#1]%
- {\bgroup
- \checkreferences
- \setbox0=\hbox
- {\doonlyonce{references:#1}{\doutilities{references}{#1}{}{}{}}}%
- \egroup}
+ {\bgroup\setbox\scratchbox=\hbox\bgroup
+ \checkreferences
+ \doifparentfileelse{#1}
+ {\ifconditional\jobreferencesloaded\else
+ \doutilities{references}{#1}{}{}{}%
+ \global\settrue\jobreferencesloaded
+ \fi}
+ {\ExpandBothAfter\doifnotinset{#1}{\loadedreferences}
+ {\doutilities{references}{#1}{}{}{}%
+ \ifx\fileprefix\empty\else
+ \doglobal\addtocommalist{#1}\loadedreferences
+ \fi}}
+ \egroup\egroup}
%D As mentioned we will also use the cross reference mechanism
%D for navigational purposes. The main reason for this is that
@@ -800,6 +883,9 @@
\ifx\currentreferencespecial\empty
\ifx\currentouterreference\empty
\docheckinnerreference
+ \ifreferencefound \else
+ \checkglobalfilereferences
+ \fi
\else
\docheckouterreference
\fi
@@ -822,6 +908,9 @@
\ifx\currentreferencespecial\empty
\ifx\currentouterreference\empty
\docheckinnerreference
+ \ifreferencefound \else
+ \checkglobalfilereferences
+ \fi
\else
\docheckouterreference
\fi
@@ -833,8 +922,6 @@
\fi
\fi
\fi
-% \doif{\currentfullreference}{\v!geen} % DOCUMENT THIS ONE!
-% {\global\referencefoundfalse}
\iftracereferences
\doshowcurrentreference\space
\writestatus{\m!references}{\currentreferenceshow}%
@@ -868,6 +955,9 @@
\ifx\currentreferencespecial\empty
\ifx\currentouterreference\empty
\docheckinnerreference
+ \ifreferencefound \else
+ \checkglobalfilereferences
+ \fi
\else
\docheckouterreference
\fi
@@ -890,6 +980,9 @@
\ifx\currentreferencespecial\empty
\ifx\currentouterreference\empty
\docheckinnerreference
+ \ifreferencefound \else
+ \checkglobalfilereferences
+ \fi
\else
\docheckouterreference
\fi
@@ -901,8 +994,6 @@
\fi
\fi
\fi
-% \doif{\currentfullreference}{\v!geen} % DOCUMENT THIS ONE!
-% {\global\referencefoundfalse}%
\iftracereferences
\doshowcurrentreference\space
\writestatus{\m!references}{\currentreferenceshow}%
@@ -913,6 +1004,26 @@
\endETEX
+%D Although this can be considered a hack, we provide the
+%D option to locate unknown references in other (loaded) files.
+%D This can be dangerous, since there can be conflicting
+%D definitions.
+
+\newconditional\autoglobalfilereferences
+
+\def\checkglobalfilereferences%
+ {\ifconditional\autoglobalfilereferences
+ \processcommacommand[\loadedreferences]\docheckglobalfilereference
+ \fi}
+
+\def\docheckglobalfilereference#1%
+ {\doifdefined{\r!cross#1::\currentinnerreference}
+ {\def\currentouterreference{#1}%
+ \edef\currentfullreference%
+ {\currentouterreference::\currentinnerreference}%
+ \global\referencefoundtrue
+ \quitcommalist}}
+
%D For most situations, we could use:
%D
%D \starttypen
@@ -1340,15 +1451,28 @@
%D uppercase here, since the suffix is handled in the special
%D driver. Conversion is taken care of by:
%D
-%D \startypen
+%D \starttypen
%D \setreferencefilename somefilename\to\SomeFileName
%D \stoptypen
+% \def\setreferencefilename#1\to#2%
+% {\doifelse{\@@converteerfile}{\v!ja} % boolean is sneller
+% {\uppercasestring#1\to#2}
+% {\edef#2{#1}}}
+
+\chardef\referencefilecase=0
+
\def\setreferencefilename#1\to#2%
- {\doifelsevalue{\??rf\c!converteerfile}{\v!ja} % boolean is sneller
- {\uppercasestring#1\to#2}
- {\edef#2{#1}}}
-
+ {\ifcase\referencefilecase
+ \edef#2{#1}%
+ \or
+ \uppercasestring#1\to#2%
+ \or
+ \lowercasestring#1\to#2%
+ \else
+ \edef#2{#1}%
+ \fi}
+
%D Internal references can best be set using the next few
%D macros. Setting such references to unique values is
%D completely up to the macros that call them.
@@ -1569,8 +1693,8 @@
\setglobalsystemreference \rt!exec \v!ResumeMovie {resumemovie}
\setglobalsystemreference \rt!exec \v!ResumeSound {resumesound}
\setglobalsystemreference \rt!exec \v!SaveDocument {save}
-\setglobalsystemreference \rt!exec \v!SearchAgain {searchagain}
\setglobalsystemreference \rt!exec \v!SearchDocument {search}
+\setglobalsystemreference \rt!exec \v!SearchAgain {searchagain}
\setglobalsystemreference \rt!exec \v!StartMovie {startmovie}
\setglobalsystemreference \rt!exec \v!StartSound {startsound}
\setglobalsystemreference \rt!exec \v!StopMovie {stopmovie}
@@ -1581,6 +1705,8 @@
\setglobalsystemreference \rt!exec \v!HideField {hide}
\setglobalsystemreference \rt!exec \v!ShowField {show}
\setglobalsystemreference \rt!exec \v!GotoPage {gotopage}
+\setglobalsystemreference \rt!exec \v!Query {query}
+\setglobalsystemreference \rt!exec \v!QueryAgain {queryagain}
%D Executing the command looks alike the previous goto macros.
@@ -1644,23 +1770,37 @@
\v!label=>\let\dowantedreference=\dolabelonlyreference,
\v!tekst=>\let\dowantedreference=\dotextonlyreference,
\v!symbool=>\let\dowantedreference=\dosymbolreference]%
- %\doifelse{\@@rfstrut}{\v!ja} % some day an option
- % {\referencetruttrue}
- % {\referencestrutfalse}%
- \ifx\@@rfprefix\s!unknown
- % retain the current value
- \else\ifx\@@rfprefix\empty
- \let\referenceprefix=\empty
- \else\ifx\@@rfprefix\incrementreferenceprefix
- \advance\prefixcounter by 1
- \edef\referenceprefix{\the\prefixcounter:}%
- \let\@@rfprefix\s!unknown
- \else\ifx\@@rfprefix\decrementreferenceprefix
- \let\referenceprefix=\empty
- \let\@@rfprefix\s!unknown
- \else
- \edef\referenceprefix{\@@rfprefix:}%
- \fi\fi\fi\fi}
+ \chardef\autocrossfilereferences=0
+ \processaction
+ [\@@rfautofile]
+ [ \v!ja=>\chardef\autocrossfilereferences=1,
+ \v!pagina=>\chardef\autocrossfilereferences=2]%
+ \chardef\referencefilecase=0
+ \processaction[\@@rfconverteerfile]
+ [ \v!ja=>\chardef\referencefilecase=1,
+ \v!groot=>\chardef\referencefilecase=1,
+ \v!klein=>\chardef\referencefilecase=2]%
+ % \doifelse{\@@rfstrut}{\v!ja} % some day an option
+ % {\referencetruttrue}{\referencestrutfalse}%
+ %
+ % This is a typical example where \ifx\@@rfprefix\s!unknown fails:
+ %
+ \doifnot{\@@rfprefix}{\s!unknown} % retain the current value
+ {\ifx\@@rfprefix\empty
+ \let\referenceprefix=\empty
+ \else\ifx\@@rfprefix\incrementreferenceprefix
+ \advance\prefixcounter by 1
+ \edef\referenceprefix{\the\prefixcounter:}%
+ \let\@@rfprefix\s!unknown
+ \else\ifx\@@rfprefix\decrementreferenceprefix
+ \let\referenceprefix=\empty
+ \let\@@rfprefix\s!unknown
+ \else
+ \edef\referenceprefix{\@@rfprefix:}%
+ \fi\fi\fi}%
+ \doifelse{\@@rfglobaal}{\v!ja}
+ {\settrue \autoglobalfilereferences}
+ {\setfalse\autoglobalfilereferences}}
\def\incrementreferenceprefix{+}
\def\decrementreferenceprefix{-}
@@ -1774,8 +1914,8 @@
{\dontleavehmode
\bgroup
\def\thecurrentsubtextreference%
- {\limitatetext{\currentsubtextreference}{\@@rfbreedte}{...}}%
- %\leaveoutervmode
+ {\limitatetext{\currentsubtextreference}{\@@rfbreedte}{\unknown}}%
+ %\leaveoutervmode % no
\@@rflinks
\doifreferencefoundelse{#1}
{\let\crlf\space
@@ -1908,9 +2048,13 @@
% better:
\def\docompletereference#1#2[#3]%
- {\doifsomespaceelse{#2}
- {\donaarspace{\dotextprefix{#2}#1}[#3]}
- {\donaarfixed{\dotextprefix{#2}#1}[#3]}}
+ {\iflocationsplit
+ \doifsomespaceelse{#2}
+ {\donaarspace{\dotextprefix{#2}#1}[#3]}
+ {\donaarfixed{\dotextprefix{#2}#1}[#3]}%
+ \else
+ \donaarfixed{\dotextprefix{#2}#1}[#3]%
+ \fi}
\def\dolabelonlyreference#1#2[#3]%
{\doifsomespaceelse{#2}
@@ -1959,7 +2103,8 @@
\c!label=, % can be {left}{right}
\c!commando=\in,
#2]%
- \unexpanded\setvalue{#1}{\doexecutereferenceformat{#1}}%
+ \unexpanded\setvalue{#1}%
+ {\dontleavehmode\doexecutereferenceformat{#1}}%
\fi}
\def\noexecutelabelreferenceformat#1%
@@ -2063,20 +2208,29 @@
\newcount\similarreference % 0=noppes 1=create/refer 2,3,..=refer
\def\donaarspace#1[#2]%
- {\ifsecondaryreference\setbox0=\hbox\fi % due to space insertion
- {\let\donaarspace=\donaarfixed
- \iflocation
- \def\processisolatedword##1%
- {\ifisolatedwords\ifsharesimilarreferences
- \global\advance\similarreference by 1
- \fi\fi
- \hbox{\gotolocation{#2}{##1\presetgoto}}}%
- \doattributes\??ia\c!letter\c!kleur
- {\processisolatedwords{#1}\processisolatedword}%
- \global\similarreference=0
- \else
- #1\relax % \relax prevents #1's next macros from gobbling \fi
- \fi}}
+ {\iflocationsplit
+ \ifsecondaryreference\setbox0=\hbox\fi % due to space insertion
+ {\let\donaarspace=\donaarfixed
+ \iflocation
+ \def\processisolatedword##1%
+ {\ifisolatedwords\ifsharesimilarreferences
+ \global\advance\similarreference by 1
+ \fi\fi
+ \hbox{\gotolocation{#2}{##1\presetgoto}}}%
+ \doattributes\??ia\c!letter\c!kleur
+ {\processisolatedwords{#1}\processisolatedword}%
+ \else
+ #1\relax % \relax prevents #1's next macros from gobbling \fi
+ \fi}%
+ \else
+ \iflocation
+ \doattributes\??ia\c!letter\c!kleur
+ {\gotolocation{#2}{#1\presetgoto}}%
+ \else
+ #1\relax % \relax prevents #1's next macros from gobbling \fi
+ \fi
+ \fi
+ \global\similarreference=0 }
\def\donaarfixed#1[#2]%
{{\iflocation
@@ -2142,22 +2296,30 @@
\def\dogebruikexterndocument[#1][#2][#3]%
{\bgroup
- \doifelsenothing{#1}
- {\dogebruikexterndocument[#2][#2][#3]}
- {\doifelsenothing{#3}
- {\dogebruikexterndocument[#1][#2][#2]}
- {\doifsomething{#2}
- {\setgvalue{\v!file:::#1}{\doexternaldocument[][#2][#3]}% just \do
- \doifparentfileelse{#2}
- {\showmessage{\m!references}{21}{#2}}
- {\bgroup % prevents wrong loading of \jobname
- \def\fileprefix{#1::}%
- \let\setglobalcrossreference=\setoutercrossreference
- \usereferences[#2]%
- \egroup % when called nested
- \showmessage{\m!references}{21}{#2}}}}}%
+ \ifsecondargument
+ \doifelsenothing{#1}
+ {\dogebruikexterndocument[#2][#2][#3]}
+ {\doifelsenothing{#3}
+ {\dogebruikexterndocument[#1][#2][#2]}
+ {\doifsomething{#2}
+ {\setgvalue{\v!file:::#1}{\doexternaldocument[][#2][#3]}% just \do
+ \doif{\@@rfstatus}{\v!start}
+ {\doifparentfileelse{#2}
+ {\showmessage{\m!references}{21}{#2}}
+ {\dodogebruikexterndocument{#1}{#2}}}}}}%
+ \else
+ \dodogebruikexterndocument{#1}{#1}%
+ \fi
\egroup}
+\def\dodogebruikexterndocument#1#2%
+ {\bgroup % prevents wrong loading of \jobname
+ \def\fileprefix{#1::}%
+ \let\setglobalcrossreference=\setoutercrossreference
+ \usereferences[#2]%
+ \egroup % when called nested
+ \showmessage{\m!references}{21}{#2}}
+
%D The \URL\ alternative takes four arguments:
%D
%D \showsetup{\y!gebruikURL}
@@ -2329,8 +2491,18 @@
{\docomplexuit[#1]}
{\docomplexuit[#1::]}}
+% \def\docomplexuit[#1::#2]%
+% {\bgroup
+% \doifdefinedelse{\v!file:::#1}
+% {\def\doexternaldocument[##1][##2][##3]%
+% {\naar{##3}[#1::#2]}%
+% \getvalue{\v!file:::#1}}
+% {\tttf[#1]}%
+% \egroup}
+
\def\docomplexuit[#1::#2]%
- {\bgroup
+ {\dontleavehmode % added, but probably not needed
+ \bgroup
\doifdefinedelse{\v!file:::#1}
{\def\doexternaldocument[##1][##2][##3]%
{\naar{##3}[#1::#2]}%
@@ -2652,16 +2824,16 @@
\def\docoupledocument[#1][#2][#3][#4]%
{\ifthirdargument
\begingroup
- \def\dolijstelement##1##2##3##4##5##6%
+ \def\dolijstelement##1##2##3##4##5##6% 2=aut 6=pag / 2 goes into text ref slot
{\global\utilitydonetrue %{Watch the braces here below!}
- %\setglobalcrossreference{{##1::\strippedlistentry[##5]}}{}{}{##6}}%
- \setglobalcrossreference{{##1::\strippedlistentry[##5]}}{}{##6}{}}%
+ \setglobalcrossreference{{##1::\strippedlistentry[##5]}}{}{##6}{##2}}%
\def\usereferences[##1]%
{\setbox0=\vbox{\doutilities{#3}{##1}{#3}{}{}}}%
\dogebruikexterndocument[#1][#2][#4]%
\doglobal\addtocommalist{#1}\crossdocumentreferences
\def\docommando##1%
- {\doglobal\addtocommalist{##1}\crossdocumentelements}%
+ {\setxvalue{\??rf##1\c!status}{\v!start}% for fast checking
+ \doglobal\addtocommalist{##1}\crossdocumentelements}%
\processcommalist[#3]\docommando
\ifutilitydone
\global\autocrossdocumenttrue
@@ -2796,8 +2968,8 @@
\checkinteractiebalk{1.5em}\v!ruim\!!zeropoint % brrrrr
\setbox2=\hbox
{\setupsymbolset[\@@iasymboolset]%
- \localframed[\??ib][]{\symbol[\v!vorigepagina]}}%
- \!!heighta=\ht2
+ \localframed[\??ib][#1,\c!achtergrond=]{\symbol[\v!vorigepagina]}}%
+ \!!heighta=\ht2 % needed because we default to nothing
\stelinteractiebalkin[#1,\c!strut=\v!nee]%
\setupinteraction[\c!breedte=\!!zeropoint]%
%\!!counta=1
@@ -2827,6 +2999,7 @@
\edef\localreference{##1}%
\dodocomplexbutton\??ib
[\c!hoogte=\!!heighta,\c!breedte=\!!widtha]%
+% funny buggy left over: [\c!breedte=\!!widtha]%
{\dontleavehmode\symbol[\localreference]}%
[\localreference]%
\hss}%
@@ -2912,6 +3085,7 @@
\setupreferencing
[\c!status=\v!start,
+ \c!autofile=\v!nee,
\v!deel\c!nummer=\v!ja,
\v!hoofdstuk\c!nummer=\v!nee,
\c!interactie=\v!alles,
@@ -2919,12 +3093,13 @@
%\c!urlspatie=\v!nee,
%\c!urlletter=,
%\c!urlkleur=,
- \c!converteerfile=\v!ja,
+ \c!converteerfile=\v!nee,
%\c!strut=\v!nee, % some day an option
\c!prefix=,
\c!breedte=.75\zetbreedte,
\c!links=\citaat\bgroup,
\c!rechts=\egroup,
+ \c!globaal=\v!nee,
\c!scheider=~]
\setupurl
diff --git a/tex/context/base/core-rul.tex b/tex/context/base/core-rul.tex
index c25fa87fb..26f93fb9d 100644
--- a/tex/context/base/core-rul.tex
+++ b/tex/context/base/core-rul.tex
@@ -164,10 +164,18 @@
%D A quite valid way of letting drivers do the job, is giving
%D a solid rule a gray texture.
+\def\raster[#1]%
+ {\groupedcommand{\startraster[#1]}{\stopraster}}
+
\def\setgraybox\width#1\height#2\depth#3\raster#4\corner#5\radius#6\\%
- {\startraster[#4]%
- \dofilledbox\width#1\height#2\depth#3\corner#5\radius#6\\%
- \stopraster}
+ {\doifelsenothing{#4} % avoid black rules when no gray
+ {\dophantombox\width#1\height#2\depth#3\corner#5\radius#6\\}
+ {\raster[#4]%
+ {\dofilledbox \width#1\height#2\depth#3\corner#5\radius#6\\}}}
+
+%D The auxiliary macro is defined as:
+
+\def\dophantombox#1\\{\hphantom{\dofilledbox#1\\}}
%D We don't have to stick to a \TEX\ drawn rule, but
%D also can use rounded or even fancier shapes, as we will
@@ -218,19 +226,18 @@
\def\setcolorbox\width#1\height#2\depth#3\color#4\corner#5\radius#6\\%
{\ifincolor
- \doifsomething{#4}
- {\startcolor[#4]%
- \dofilledbox\width#1\height#2\depth#3\corner#5\radius#6\\%
- \stopcolor}%
+ \doifcolorelse{#4}{\color[#4]%
+ {\dofilledbox \width#1\height#2\depth#3\corner#5\radius#6\\}}
+ {\dophantombox\width#1\height#2\depth#3\corner#5\radius#6\\}%
\else
- \dofilledbox\width#1\height#2\depth#3\corner#5\radius#6\\%
+ \dophantombox\width#1\height#2\depth#3\corner#5\radius#6\\%
\fi}
\def\colorbox%
{\setcolorbox}
%D \macros
-%D {defineoverlay,
+%D {defineoverlay,doifoverlayelse,
%D overlaywidth, overlayheight, overlaydepth,
%D overlaycolor, overlaylinecolor, overlaylinewidth}
%D
@@ -287,12 +294,12 @@
%D
%D The resulting box is lowered to the right depth.
-\def\overlaywidth {\the\vsize} % We preset the variables
-\def\overlayheight {\the\hsize} % to some reasonable default
-\let\overlaydepth \!!zeropoint % values. The attributes
-\let\overlaycolor \empty % of the frame can be (are)
-\let\overlaylinewidth \!!zeropoint % set somewhere else.
-\let\overlaylinecolor \empty %
+\def\overlaywidth {\the\vsize\space} % We preset the variables
+\def\overlayheight {\the\hsize\space} % to some reasonable default
+\let\overlaydepth \!!zeropoint % values. The attributes
+\let\overlaycolor \empty % of the frame can be (are)
+\let\overlaylinewidth \!!zeropoint % set somewhere else.
+\let\overlaylinecolor \empty %
\newtoks\everyoverlay
@@ -301,23 +308,23 @@
\def\dodefineoverlay[#1][#2]%
{\def\docommando##1%
- {\setvalue{executeoverlay##1}{\executedefinedoverlay##1\\#2\\}}%
+ {\setvalue{\??ov##1}{\executedefinedoverlay##1\\#2\\}}%
\processcommalist[#1]\docommando}
\long\def\executedefinedoverlay#1\\#2\\#3#4#5#6#7#8#9%
{\bgroup
\scratchdimen=#3%
- \edef\overlaywidth{\the\scratchdimen}%
+ \edef\overlaywidth{\the\scratchdimen\space}%
\scratchdimen=#4%
\advance\scratchdimen by #5%
- \edef\overlayheight{\the\scratchdimen}%
+ \edef\overlayheight{\the\scratchdimen\space}%
\scratchdimen=#5%
- \edef\overlaydepth{\the\scratchdimen}%
+ \edef\overlaydepth{\the\scratchdimen\space}%
\edef\overlaycolor{#6}%
-\prependtoks
- \hsize=\overlaywidth
- \vsize=\overlayheight
-\to\everyoverlay
+ \prependtoks
+ \hsize=\overlaywidth
+ \vsize=\overlayheight
+ \to\everyoverlay
%\writestatus
% {overlay}
% {#1\space w=\overlaywidth/h+d=\overlayheight/d=\overlaydepth]}%
@@ -339,12 +346,17 @@
\def\executeoverlay#1#2#3#4#5#6#7%
{}
+%D For testing we provide:
+
+\def\doifoverlayelse#1%
+ {\doifdefinedelse{\??ov#1}}
+
%D We predefine two already familiar backgrounds:
-\setvalue{executeoverlay\v!raster}#1#2#3#4#5#6#7%
+\setvalue{\??ov\v!raster}#1#2#3#4#5#6#7%
{\graybox\width#1\height#2\depth#3\raster#5\corner#6\radius#7\\}
-\setvalue{executeoverlay\v!kleur}#1#2#3#4#5#6#7%
+\setvalue{\??ov\v!kleur}#1#2#3#4#5#6#7%
{\colorbox\width#1\height#2\depth#3\color#4\corner#6\radius#7\\}
%D After all these preparations, the background macro does no
@@ -358,21 +370,30 @@
%D \som a \TEX\ or driver based method
%D \stopopsomming
%D
-%D Here we go:
+%D The macro can be extended by adding commands to the token
+%D list register \type {\everybackgroundbox}. For this
+%D purpose, the name of the current background is available in
+%D \type {\currentbackgound}.
\newbox\extraframebox
+\newtoks\everybackgroundbox
+
+\let\currentbackground\empty
+
\def\dodobackgroundbox#1#2#3#4#5#6%
{\bgroup
+ \def\currentbackground{#1}%
+ \the\everybackgroundbox
\setbox\extraframebox=\hbox
- {\executeifdefined{executeoverlay#1}\gobblesevenarguments
+ {\executeifdefined{\??ov\currentbackground}\gobblesevenarguments
{\dimen2}{\dimen4}{\dimen6}{#3}{#4}{#5}{#6}}%
\setbox\extraframebox=\hbox
{\vbox{\moveleft\dimen0\box\extraframebox}}%
- \wd\extraframebox=\backgroundwidth
+ \wd\extraframebox=\!!zeropoint % \backgroundwidth
\ht\extraframebox=\backgroundheight
\dp\extraframebox=\backgrounddepth
- \box\extraframebox\hskip-\backgroundwidth
+ \box\extraframebox % \hskip-\backgroundwidth
\egroup}
\def\dobackgroundbox#1\background#2\color#3\raster#4\offset#5\corner
@@ -383,18 +404,20 @@
\dimen2=\wd#1\advance\dimen2 by 2\dimen0
\dimen4=\ht#1\advance\dimen4 by \dimen0
\dimen6=\dp#1\advance\dimen6 by \dimen0\advance\dimen6 by #8\relax
+ \edef\backgroundwidth {\the\wd#1}%
+ \edef\backgroundheight{\the\ht#1}%
+ \edef\backgrounddepth {\the\dp#1}%
+ %\edef\foregroundbox{\box#1}%
+ \def\foregroundbox% fuzzy but needed hack, this \vss, otherwise
+ {\vbox to \backgroundheight{\vss\box#1\vss}}% vertical shift
\def\docommando##1%
{\dodobackgroundbox{##1}{#1}{#3}{#4}{#6}{#7}}%
- \hbox
- {\edef\backgroundwidth {\the\wd#1}%
- \edef\backgroundheight{\the\ht#1}%
- \edef\backgrounddepth {\the\dp#1}%
- \edef\foregroundbox{\box#1}%
- \expanded{\rawprocesscommalist[#2]\noexpand\docommando}%
- \box#1}}}
+ \hbox to \backgroundwidth % in case 'foreground' is uses as overlay
+ {\expanded{\rawprocesscommalist[#2]\noexpand\docommando}%
+ \box#1\hss}}}
%D One can explictly insert the foreground box. For that
-%D purpose we introduce the overlay \tyupe {foreground}.
+%D purpose we introduce the overlay \type {foreground}.
\defineoverlay[\v!voorgrond][\foregroundbox]
@@ -536,6 +559,8 @@
%D mere fact that this way we can use the optional argument
%D grabbers.
+\def\defaultframeoffset{.25ex}
+
\unexpanded\def\framed%
{\bgroup
\presetlocalframed[\??ol]%
@@ -576,7 +601,6 @@
\def\localframed%
{\bgroup
- \inframedtrue
\dodoubleempty\startlocalframed}
%D Before we go into details, we present (and implement) the
@@ -592,16 +616,154 @@
%D backgrounds, when \type {#2} sets the offset to \type
%D {overlay}, both offsets become invalid.
+% \def\startlocalframed[#1][#2]% beware, also on cont-loc!
+% {\bgroup
+% \inframedtrue
+% \edef\@@framed{#1}%
+% % this piece of pre expansion is needed
+% \scratchdimen\getvalue{\@@framed\c!kaderoffset}%
+% \setevalue{\@@framed\c!kaderoffset}{\the\scratchdimen}%
+% \doifnotvalue{\@@framed\c!achtergrondoffset}{\v!kader}
+% {\scratchdimen\getvalue{\@@framed\c!achtergrondoffset}%
+% \setevalue{\@@framed\c!achtergrondoffset}{\the\scratchdimen}}%
+% % to prevent deadlock in case of self refering
+% \ifsecondargument % faster
+% \getparameters[\@@framed][#2]% here !
+% \fi
+% % beware, both the frame and background offset can be overruled
+% \edef\localoffset{\getvalue{\@@framed\c!offset}}%
+% \edef\localwidth {\getvalue{\@@framed\c!breedte}}%
+% \edef\localheight{\getvalue{\@@framed\c!hoogte}}%
+% \edef\localformat{\getvalue{\@@framed\c!uitlijnen}}%
+% \edef\localstrut {\getvalue{\@@framed\c!strut}}%
+% \doifvaluesomething{\@@framed\c!lijndikte} % nested \framed inherits
+% {\linewidth=\getvalue{\@@framed\c!lijndikte}}%
+% \doifelsenothing{\localformat}
+% {\boxhasformatfalse}
+% {\boxhasformattrue
+% \dosetraggedcommand{\localformat}%
+% \edef\beforeframedbox{\raggedtopcommand\getvalue{\@@framed\c!boven}}%
+% \edef\afterframedbox {\getvalue{\@@framed\c!onder}\raggedbottomcommand}}%
+% \doifelse{\localoffset}{\v!geen}
+% {\boxhasoffsetfalse
+% \boxhasstrutfalse
+% \boxisoverlaidfalse
+% \@@localoffset=\linewidth}
+% {\doifelse{\localoffset}{\v!overlay}
+% {\boxhasoffsetfalse
+% \boxhasstrutfalse
+% \boxisoverlaidtrue
+% \@@localoffset=\!!zeropoint}
+% {\boxhasoffsettrue
+% \boxhasstruttrue
+% \boxisoverlaidfalse
+% \ifx\localoffset\v!default % new per 2-6-2000
+% \let\localoffset\defaultframeoffset
+% \letvalue{\@@framed\c!offset}\defaultframeoffset
+% \else
+% \let\defaultframeoffset\localoffset
+% \fi
+% \@@localoffset=\localoffset
+% \advance\@@localoffset by \linewidth}}%
+% \doifelse{\localwidth}{\v!passend}
+% {\ifboxhasformat
+% \boxhaswidthtrue
+% \!!widtha=\hsize
+% \else
+% \boxhaswidthfalse
+% \fi}
+% {\boxhaswidthtrue
+% \doifelse{\localwidth}{\v!ruim}
+% {\!!widtha=\hsize}
+% {\!!widtha=\localwidth}}%
+% \doifelse{\localheight}{\v!passend}
+% {\boxhasheightfalse} % no longer: \boxhasstrutfalse
+% {\doifelse{\localheight}{\v!ruim}
+% {\boxhasheightfalse}
+% {\boxhasheighttrue
+% \!!heighta=\localheight}}%
+% \ifdim\!!widtha=\hsize
+% \parindent=\!!zeropoint
+% \setlocalhsize
+% \!!widtha=\localhsize
+% \fi
+% \advance\!!widtha by -2\@@localoffset
+% \advance\!!heighta by -2\@@localoffset
+% \doif{\localstrut}{\v!nee}
+% {\boxhasstrutfalse}%
+% \ifboxhasstrut
+% \setstrut
+% \let\localbegstrut=\begstrut
+% \let\localendstrut=\endstrut
+% \let\localstrut =\strut
+% \else
+% \let\localbegstrut=\pseudobegstrut % was: \relax
+% \let\localendstrut=\pseudoendstrut % was: \relax
+% \let\localstrut =\pseudostrut % was: \relax
+% %\ifboxhasheight\ifdim\!!heighta<\ht\strutbox % saveguard
+% % \let\localbegstrut=\relax % but not that
+% % \let\localstrut =\relax % save afterall
+% %\fi\fi
+% \fi
+% \ifboxhasheight
+% \let\\=\vboxednewline
+% \ifboxhaswidth
+% \let\hairline=\vboxedhairline
+% \ifboxhasformat
+% \let\next=\doformatboxSomeFormat
+% \else
+% \let\next=\doformatboxNoFormat
+% \fi
+% \else
+% \let\hairline=\hboxedhairline
+% \ifboxhasformat
+% \let\next=\doformatboxHeight
+% \else
+% \let\next=\doformatboxVSize
+% \fi
+% \fi
+% \else
+% \ifboxhaswidth
+% \ifboxhasformat
+% \let\hairline=\vboxedhairline
+% \let\\=\vboxednewline
+% \let\next=\doformatboxWidth
+% \else
+% \let\hairline=\hboxedhairline
+% \let\\=\hboxednewline
+% \let\next=\doformatboxHSize
+% \fi
+% \else
+% \let\hairline=\hboxedhairline
+% \let\\=\hboxednewline
+% \let\next=\doformatboxNoSize
+% \fi
+% \fi
+% \def\dowithframedbox%
+% {\let\postprocessframebox\undefined %new
+% \aftergroup\stoplocalframed}%
+% \edef\framedwidth % a new feature
+% {\ifdim\!!widtha >\!!zeropoint\the\!!widtha \else\!!zeropoint\fi}%
+% \edef\framedheight% a new feature
+% {\ifdim\!!heighta>\!!zeropoint\the\!!heighta\else\!!zeropoint\fi}%
+% \afterassignment\dowithframedbox
+% \setbox\framebox=\next}
+
\def\startlocalframed[#1][#2]%
{\bgroup
+ \inframedtrue
\edef\@@framed{#1}%
+ % this piece of pre expansion is needed
\scratchdimen\getvalue{\@@framed\c!kaderoffset}%
\setevalue{\@@framed\c!kaderoffset}{\the\scratchdimen}%
- \scratchdimen\getvalue{\@@framed\c!achtergrondoffset}%
- \setevalue{\@@framed\c!achtergrondoffset}{\the\scratchdimen}%
+ \doifnotvalue{\@@framed\c!achtergrondoffset}{\v!kader}
+ {\scratchdimen\getvalue{\@@framed\c!achtergrondoffset}%
+ \setevalue{\@@framed\c!achtergrondoffset}{\the\scratchdimen}}%
+ % to prevent deadlock in case of self refering
\ifsecondargument % faster
\getparameters[\@@framed][#2]% here !
\fi
+ % beware, both the frame and background offset can be overruled
\edef\localoffset{\getvalue{\@@framed\c!offset}}%
\edef\localwidth{\getvalue{\@@framed\c!breedte}}%
\edef\localheight{\getvalue{\@@framed\c!hoogte}}%
@@ -609,45 +771,59 @@
\edef\localstrut{\getvalue{\@@framed\c!strut}}%
\doifvaluesomething{\@@framed\c!lijndikte}
{\linewidth=\getvalue{\@@framed\c!lijndikte}}%
- \doifelsenothing{\localformat}
- {\boxhasformatfalse}
- {\boxhasformattrue
- \dosetraggedcommand{\localformat}%
- \edef\beforeframedbox{\raggedtopcommand\getvalue{\@@framed\c!boven}}%
- \edef\afterframedbox {\getvalue{\@@framed\c!onder}\raggedbottomcommand}}%
- \doifelse{\localoffset}{\v!geen}
- {\boxhasoffsetfalse
- \boxhasstrutfalse
- \boxisoverlaidfalse
- \@@localoffset=\linewidth}
- {\doifelse{\localoffset}{\v!overlay}
- {\boxhasoffsetfalse
- \boxhasstrutfalse
- \boxisoverlaidtrue
- \@@localoffset=\!!zeropoint}
- {\boxhasoffsettrue
- \boxhasstruttrue
- \boxisoverlaidfalse
- \@@localoffset=\localoffset
- \advance\@@localoffset by \linewidth}}%
- \doifelse{\localwidth}{\v!passend}
- {\ifboxhasformat
- \boxhaswidthtrue
- \!!widtha=\hsize
- \else
- \boxhaswidthfalse
- \fi}
- {\doifelse{\localwidth}{\v!ruim}
- {\boxhaswidthtrue
- \!!widtha=\hsize}
- {\boxhaswidthtrue
- \!!widtha=\localwidth}}%
- \doifelse{\localheight}{\v!passend}
- {\boxhasheightfalse} % no longer: \boxhasstrutfalse
- {\doifelse{\localheight}{\v!ruim}
- {\boxhasheightfalse}
- {\boxhasheighttrue
- \!!heighta=\localheight}}%
+ \ifx\localformat\empty
+ \boxhasformatfalse
+ \else
+ \boxhasformattrue
+ \dosetraggedcommand{\localformat}%
+ \edef\beforeframedbox{\raggedtopcommand\getvalue{\@@framed\c!boven}}%
+ \edef\afterframedbox {\getvalue{\@@framed\c!onder}\raggedbottomcommand}%
+ \fi
+ \ifx\localoffset\v!geen
+ \boxhasoffsetfalse
+ \boxhasstrutfalse
+ \boxisoverlaidfalse
+ \@@localoffset=\linewidth
+ \else\ifx\localoffset\v!overlay
+ \boxhasoffsetfalse
+ \boxhasstrutfalse
+ \boxisoverlaidtrue
+ \@@localoffset=\!!zeropoint
+ \else
+ \boxhasoffsettrue
+ \boxhasstruttrue
+ \boxisoverlaidfalse
+ \ifx\localoffset\v!default % new per 2-6-2000
+ \let\localoffset\defaultframeoffset
+ \letvalue{\@@framed\c!offset}\defaultframeoffset
+ \else
+ \let\defaultframeoffset\localoffset
+ \fi
+ \@@localoffset=\localoffset
+ \advance\@@localoffset by \linewidth
+ \fi\fi
+ \ifx\localwidth\v!passend
+ \ifboxhasformat
+ \boxhaswidthtrue
+ \!!widtha=\hsize
+ \else
+ \boxhaswidthfalse
+ \fi
+ \else\ifx\localwidth\v!ruim
+ \boxhaswidthtrue
+ \!!widtha=\hsize
+ \else
+ \boxhaswidthtrue
+ \!!widtha=\localwidth
+ \fi\fi
+ \ifx\localheight\v!passend
+ \boxhasheightfalse % no longer: \boxhasstrutfalse
+ \else\ifx\localheight\v!ruim
+ \boxhasheightfalse
+ \else
+ \boxhasheighttrue
+ \!!heighta=\localheight
+ \fi\fi
\ifdim\!!widtha=\hsize
\parindent=\!!zeropoint
\setlocalhsize
@@ -655,8 +831,9 @@
\fi
\advance\!!widtha by -2\@@localoffset
\advance\!!heighta by -2\@@localoffset
- \doif{\localstrut}{\v!nee}
- {\boxhasstrutfalse}%
+ \ifx\localstrut\v!nee
+ \boxhasstrutfalse
+ \fi
\ifboxhasstrut
\setstrut
\let\localbegstrut=\begstrut
@@ -715,7 +892,9 @@
\afterassignment\dowithframedbox
\setbox\framebox=\next}
-
+\let\afterframedbox \relax
+\let\beforeframedbox\relax
+
%D Carefull analysis of this macro will learn us that not all
%D branches in the last conditionals can be encountered, that
%D is, some assignments to \type{\next} will never occur.
@@ -739,6 +918,8 @@
\doif{\localwidth}{\v!passend}
{\ifreshapeframebox\doreshapeframedbox\fi
\boxhaswidthfalse}%
+ \else
+ \resetshapeframebox
\fi
\ifboxhaswidth
\wd\framebox=\!!widtha
@@ -759,9 +940,9 @@
\ifx\postprocessframebox\undefined \else
\postprocessframebox\framebox
\fi
- \doifelsevalue{\@@framed\c!kader}{\v!overlay}
- {\edef\overlaylinecolor{\getvalue{\@@framed\c!kaderkleur}}%
- \edef\overlaylinewidth{\the\linewidth}}%
+ \edef\overlaylinecolor{\getvalue{\@@framed\c!kaderkleur}}%
+ \edef\overlaylinewidth{\the\linewidth}%
+ \doifnotvalue{\@@framed\c!kader}{\v!overlay} % faster -)
{\doframedbox}%
\doifvaluesomething{\@@framed\c!achtergrond}
{\dobackedbox}%
@@ -947,17 +1128,12 @@
%D putting rules around boxes, inserting offsets and aligning
%D text. Each step is handled by separate macros.
-\def\dooffsetframebox%
- {\doifinstringelse{\getvalue{\@@framed\c!offset}}{\v!geen\c!offset}
- {}{\doifelsevaluenothing{\@@framed\c!offset}
- {}{\edef\do{\kern\getvalue{\@@framed\c!offset}}%
- \setbox\framebox=\vbox{\do\hbox{\do\box\framebox\do}\do}}}}
+\def\dowidenframebox#1%
+ {\setbox\framebox=\vbox
+ {\kern#1\hbox{\kern#1\box\framebox\kern#1}\kern#1}}
-\def\dolocateframebox%
- {\setbox\framebox=\vbox
- {\kern\linewidth
- \hbox{\kern\linewidth\box\framebox\kern\linewidth}
- \kern\linewidth}}
+\def\dooffsetframebox{\dowidenframebox\localoffset}
+\def\dolocateframebox{\dowidenframebox\linewidth }
%D Let's hope that the next few examples show us enough of
%D what needs to be done by the auxiliary macros.
@@ -1044,12 +1220,17 @@
%D have to take care of additional offsets.
\def\dobackedbox%
+ {\doifelsevalue{\@@framed\c!achtergrondoffset}{\v!kader} % new
+ {\dodobackedbox\c!kaderoffset}
+ {\dodobackedbox\c!achtergrondoffset}}
+
+\def\dodobackedbox#1%
{\setbox\framebox=\vbox
{\dobackgroundbox\framebox
\background \getvalue{\@@framed\c!achtergrond}%
\color \getvalue{\@@framed\c!achtergrondkleur}%
\raster \getvalue{\@@framed\c!achtergrondraster}%
- \offset \getvalue{\@@framed\c!achtergrondoffset}%
+ \offset \getvalue{\@@framed#1}%
\corner \getvalue{\@@framed\c!achtergrondhoek}%
\radius \getvalue{\@@framed\c!achtergrondstraal}%
\depth \getvalue{\@@framed\c!achtergronddiepte}\\}}
@@ -1200,18 +1381,33 @@
%D \egroup
%D \stopuitstellen
+%D \macros
+%D {framednoflines, framedlastlength}
+%D
%D It is possible to let the frame macro calculate the width
%D of a centered box automatically (\type{\v!passend}). When
%D doing so, we need to reshape the box:
+\newcount\framednoflines
+\newdimen\framedlastlength
+
+\def\resetshapeframebox%
+ {\framednoflines=0
+ \framedlastlength=\!!zeropoint}
+
\def\doreshapeframedbox%
{\beginofshapebox
\unvcopy\framebox
\endofshapebox
\global\@@globalwidth=\!!zeropoint
+ \resetshapeframebox
\reshapebox
{\setbox0=\hbox
{\strut\ifhbox\shapebox\unhbox\else\box\fi\shapebox}%
+ \global\advance\framednoflines by 1
+ \ifdim\framedlastlength>\!!zeropoint\else
+ \global\framedlastlength=\wd0
+ \fi
\ifdim\wd0>\@@globalwidth
\global\@@globalwidth=\wd0
\fi}%
@@ -1230,7 +1426,13 @@
\reshapebox{\hbox to \hsize{\ifhbox\shapebox\unhbox\else\box\fi\shapebox}}%
\innerflushshapebox}%
\dp\framebox=\dp\strutbox
- \fi}
+ \fi
+ \ifdim\framedlastlength=\!!zeropoint\global\framednoflines=\wd\framebox\fi
+ \ifcase\framednoflines\global\framednoflines=1\fi}
+
+%D The two variables \type {\framednoflines} and \type
+%D {\framedlastlength} can be used in a second pass to
+%D optimized framed material.
%D The examples on the next page show how one can give the
%D frame as well as the background an additional offset and
@@ -1783,8 +1985,7 @@
{\ifoptimizethinrules\penalty500\fi}
%D \macros
-%D {startframedtext, setupframedtexts,
-%D defineframedtext, start<<framedtext>>, <<framedtext>>}
+%D {startframedtext, setupframedtexts, defineframedtext}
%D
%D The general framing command we discussed previously, is not
%D entirely suited for what we call framed texts, as for
@@ -2076,7 +2277,7 @@
{\bgroup
\advance\hsize by -\rightskip
\advance\hsize by -\leftskip
- \setbox0=\hbox to \hsize
+ \setbox\scratchbox=\hbox to \hsize
{\dimen4=.5ex
\dimen6=-.5ex
\advance\dimen4 by .5\linewidth
@@ -2093,9 +2294,9 @@
\fi
\color[\@@tllijnkleur]
{\leaders\hrule\!!height\dimen4\!!depth\dimen6\hfill}}%
- \ht0=\ht\strutbox
- \dp0=\dp\strutbox
- \noindent\box0
+ \ht\scratchbox=\ht\strutbox
+ \dp\scratchbox=\dp\strutbox
+ \noindent\box\scratchbox
\egroup}
\def\dotoptextrule#1%
@@ -2113,7 +2314,7 @@
\fi
\dimen0=\dp\strutbox
\ifdim\prevdepth<\dp\strutbox
- \ifdim\prevdepth>\!!zeropoint
+ \ifdim\prevdepth>\!!zeropoint
\advance\dimen0 by -\prevdepth
\fi
\fi
@@ -2493,7 +2694,7 @@
\setupframed
[\c!breedte=\v!passend,
\c!hoogte=\v!ruim,
- \c!offset=0.25ex,
+ \c!offset=0.25ex, % \defaultframeoffset
\c!leeg=\v!nee,
\c!kader=\v!aan,
\c!bovenkader=,
diff --git a/tex/context/base/core-sec.tex b/tex/context/base/core-sec.tex
index ea24cf852..e37f015fa 100644
--- a/tex/context/base/core-sec.tex
+++ b/tex/context/base/core-sec.tex
@@ -8,8 +8,8 @@
%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
-%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
-%C details.
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
\writestatus{loading}{Context Core Macros / Sectioning}
@@ -37,7 +37,19 @@
2: konec oddilu (sekce) --
\stopmessages
-\unprotect
+\startmessages italian library: structures
+ title: struttura
+ 1: inizio del blocco (sezione) --
+ 2: fine del blocco (sezione) --
+\stopmessages
+
+\startmessages norwegian library: structures
+ title: struktur
+ 1: starten av blokk -- (seksjon)
+ 2: slutten av blokk -- (seksjon)
+\stopmessages
+
+\unprotect
\def\dodochecknummer#1#2#3%
{\bgroup
@@ -125,7 +137,7 @@
\huidigenummer[#1]%
\rawreference{#2}{#3}{\hetnummer}}
-% sectioning
+% sectioning
\newcount\nofsections
@@ -152,7 +164,7 @@
\setvalue{\??by\v!per }{\v!tekst}
\setvalue{\??by\v!per\v!tekst }{\v!tekst}
\setvalue{\??by\v!per\v!alles }{\v!tekst}
-\setvalue{\??by\v!per\v!pagina}{\v!tekst} % see footnotes
+\setvalue{\??by\v!per\v!pagina}{\v!tekst} % see footnotes
%%%%%%%%% old
@@ -165,7 +177,7 @@
\def\stelsectiein%
{\dodoubleargument\dostelsectiein}
-%%%%%%%%% new, multilingual
+%%%%%%%%% new, multilingual
\def\dostelsectiein[#1][#2][#3]%
{\ifthirdargument
@@ -255,10 +267,10 @@
% \def\@@sectionconversion#1%
% {\getvalue{\??cv\getvalue{\??se#1\@@sectieblok\c!conversie}}}
-% suited for chinese too:
+% suited for chinese too:
\def\@@sectionconversion#1#2% a doublure with \@@shortsectionnumber
- {\ifnum#2=0 0\else % else troubles with \uchar
+ {\ifnum#2=0 0\else % else troubles with \uchar
\@EA\ifx\csname\??se#1\@@sectieblok\c!conversie\endcsname\relax
\@EA\ifx\csname\??se#1\c!conversie\endcsname\relax
#2%
@@ -398,7 +410,7 @@
\@@sectionconversion{#1}{\@@sectionvalue{#1}}%
\fi}
-% suited for chinese too:
+% suited for chinese too:
\def\@@shortsectionnumber#1%
{\@EA\ifx\csname\??se#1\@@sectieblok\c!conversie\endcsname\relax
@@ -424,11 +436,12 @@
\def\dostartsectieblok#1#2%
{\begingroup
- \doaroundsectieblok{#1}%
- \getvalue{\??sb#1}%
- \expandafter\csname#2true\endcsname % vervangen door mode
- \enablemode[\systemmodeprefix#1]%
- \getvalue{\??sb\@@sectieblok\c!voor}% don't move
+ \doaroundsectieblok{#1}% % going to a new page or so
+ \getvalue{\??sb#1}% % set name of section block
+ \getsectieblokomgeving{#1}% % special settings, grouped
+ %\expandafter\csname#2true\endcsname % obsolete
+ \enablemode[\systemmodeprefix#1]% % can be used in conditionals
+ \getvalue{\??sb\@@sectieblok\c!voor}% this one is not to be moved!
\showmessage{\m!structures}{1}{\@@sectieblokken}}
\def\dostopsectieblok%
@@ -443,10 +456,43 @@
\def\stelsectieblokin%
{\dodoubleargument\dostelsectieblokin}
-% We used to use the first char as id, but a counter is
-% better, because in english we get a name clash.
-
-\newcounter\currentsectionblock
+\long\def\setsectieblokomgeving#1#2%
+ {\long\setvalue{\??sb\s!do#1}{\do{#2}}}
+
+\def\getsectieblokomgeving#1%
+ {\let\do\firstofoneargument\getvalue{\??sb\s!do#1}}
+
+\setvalue{\e!start\e!sectieblokomgeving}%
+ {\dosingleargument\dostartsectieblokomgeving}
+
+\def\dostartsectieblokomgeving[#1]% evt \pushendofline \popendofline
+ {\long\def\do##1##2{\setsectieblokomgeving{#1}{##1##2}}%
+ \grabuntil{\e!stop\e!sectieblokomgeving}{\getvalue{\??sb\s!do#1}}}
+
+%D \starttypen
+%D \startsectionblockenvironment[frontpart]
+%D \setuppagenumbering[conversion=romannumerals]
+%D \stopsectionblockenvironment
+%D
+%D \startsectionblockenvironment[bodypart]
+%D \setuppagenumber[number=1]
+%D \stopsectionblockenvironment
+%D
+%D \startsectionblockenvironment[frontpart]
+%D \setuppagenumbering[conversion=character]
+%D \stopsectionblockenvironment
+%D
+%D \starttext
+%D \startfrontmatter \chapter{test} \stopfrontmatter
+%D \startbodymatter \chapter{test} \stopbodymatter
+%D \startappendices \chapter{test} \stopappendices
+%D \stoptext
+%D \stoptypen
+
+% We used to use the first char as id, but a counter is
+% better, because in english we get a name clash.
+
+\newcounter\currentsectionblock
\def\dodefinieersectieblok[#1][#2][#3]%
{\getparameters
@@ -457,7 +503,8 @@
%\c!na=,
#3]%
\expandafter\newif\csname if#2\endcsname
- \doglobal\increment\currentsectionblock
+ \doglobal\increment\currentsectionblock
+ \setsectieblokomgeving{#1}{}%
\setevalue{\??sb#1}%
{\noexpand\dosetlocalsectieblok{\currentsectionblock}{#1}{#2}}%
\setvalue{\e!start#2}%
@@ -557,17 +604,17 @@
%\def\dolocalkopsetup#1% koppeling met standaard kopcommando / engels
% {\forgetall
-% \doifvaluesomething{\??ko#1\c!uitlijnen}
+% \doifvaluesomething{\??ko#1\c!uitlijnen}
% {\ExpandFirstAfter\steluitlijnenin[\getvalue{\??ko#1\c!uitlijnen}]}%
-% \doifvaluesomething{\??ko#1\c!tolerantie}
+% \doifvaluesomething{\??ko#1\c!tolerantie}
% {\ExpandFirstAfter\steltolerantiein[\getvalue{\??ko#1\c!tolerantie}]}%
% \def\\{\crlf\strut\ignorespaces}}
\def\dolocalkopsetup#1% koppeling met standaard kopcommando / engels
{\forgetall
- \doifvaluesomething{\??ko#1\c!uitlijnen}
+ \doifvaluesomething{\??ko#1\c!uitlijnen}
{\expanded{\steluitlijnenin[\getvalue{\??ko#1\c!uitlijnen}]}}%
- \doifvaluesomething{\??ko#1\c!tolerantie}
+ \doifvaluesomething{\??ko#1\c!tolerantie}
{\expanded{\steltolerantiein[\getvalue{\??ko#1\c!tolerantie}]}}%
\def\\{\crlf\strut\ignorespaces}}
@@ -651,7 +698,7 @@
\def\setsomeheadconversion#1#2%
{\someheadconversionfalse
- \doifelsevalue{\??ko#1\c!eigennummer}{\v!ja}
+ \doifelsevalue{\??ko#1\c!eigennummer}{\v!ja}
{\def\someheadconversion{#2}}
{\bepaalkopnummer[#1]%
\@EA\ifx\csname\??se\@@sectie\@@sectieblok\c!kopconversie\endcsname\relax
@@ -674,11 +721,11 @@
\def\someheadconversion%
{\fullsectionnumber{#1}{\getvalue{\??se\@@sectie\@@sectieblok\c!kopconversie}}{#2}}%
\fi
- \fi}}
+ \fi}}
-\def\writtenfullsectionnumber{\string\fullsectionnumber}
-\def\ignoredfullsectionnumber#1#2#3{#3}
-\let\storedfullsectionnumber\relax
+ \def\writtenfullsectionnumber {\string\fullsectionnumber}
+ \def\ignoredfullsectionnumber#1#2#3{#3}
+ \let \storedfullsectionnumber \relax
\unexpanded\def\naturalfullsectionnumber#1#2#3{\sectiebloklabel{#1}{\getvalue{\??cv#2}{#3}}}
\unexpanded\def\limitedfullsectionnumber#1#2#3{\getvalue{\??cv#2}{#3}}
@@ -694,7 +741,7 @@
% \dodododosomekop IS NON GROUPED, SO WE NEED TO RESTORE !!!!
%
-% dit kan dus beter \everyaroundhead zijn
+% dit kan dus beter \everyaroundhead zijn
\def\dodododosomekop#1[#2]#3#4#5% % pas met \ExpandFirstAfter op bij twee||taligheid
{\flushingcolumnfloatsfalse % #3=#1=redundant
@@ -745,7 +792,7 @@
\getvalue{\e!volgende\@@sectie}%
\getvalue{\??ko#1\c!tussen}%
\ifkopnummer
-\setsomeheadconversion{#1}{#4}%
+\setsomeheadconversion{#1}{#4}%
\ifsomeheadconversion
\let\fullsectionnumber\naturalfullsectionnumber
\doplaatskopnummertekst
@@ -780,7 +827,7 @@
{\marking[#1]{#5}%
\doifelsevalue{\??ko#1\c!eigennummer}{\v!ja} % rommelig omdat
{\edef\finalsectionnumber{#4}} % #4 al is toegekend
- {\bepaalkopnummer[#1]}% migreert naar 3e argument
+ {\bepaalkopnummer[#1]}% migreert naar 3e argument
\expanded{\marking[#1\v!nummer]{\finalsectionnumber}}}%
\writesection{#1}{#4}{#5}%
\fi
@@ -818,7 +865,7 @@
\resetsectionmarks[\@@sectie]%
\marking[#1]{#5}%
\doifelsevalue{\??ko#1\c!eigennummer}{\v!ja}
- {\edef\finalsectionnumber{#4}}
+ {\edef\finalsectionnumber{#4}}
{\bepaalkopnummer[#1]}%
\expanded{\marking[#1\v!nummer]{\finalsectionnumber}}%
\ExpandFirstAfter\soortpagina[\@@koppeling]%
@@ -869,7 +916,7 @@
\def\doplaatskoptekst#1#2#3#4%
{\beginheadplacement{#1}%
- \setbox0=\hbox
+ \setbox0=\ifvertical\vbox\else\hbox\fi % \vhbox
{\getvalue{\??ko#1\c!commando}
{} % no number
{\doattributes
@@ -897,7 +944,7 @@
\def\doplaatskopnummertekst#1#2#3#4#5%
{\beginheadplacement{#1}%
- \setbox0=\hbox
+ \setbox0=\ifvertical\vbox\else\hbox\fi % \vhbox
{\getvalue{\??ko#1\c!commando}%
{\doattributes{\??ko#1}\c!letter\c!kleur
{\doattributes{\??ko#1}\c!nummerletter\c!nummerkleur
@@ -953,27 +1000,35 @@
\startsynchronisatie}
\def\endheadplacement#1#2%
- {\doifvaluenothing{\??ko#1\c!file}{\locationfalse}%
+ {\doifelsevalue{\??rf#1\c!status}{\v!start}
+ {\doifvaluenothing{\??ko#1\c!file}{\autocrossdocumentfalse}}
+ {\autocrossdocumentfalse}%
+ % no message needed here, should be a proper switch
+ \let\unknownreference\relax
+ %
\ifdisplaysectionhead
\let\headlastlinewidth\!!zeropoint
\snaptogrid\hbox
{\iflocation
\ifautocrossdocument
- \naarbox{\box0}[\getvalue{\??ko#1\c!file}::#1]%
+ \doifreferencefoundelse{\getvalue{\??ko#1\c!file}::#1}
+ {\edef\currentinnerreference{\s!aut:\currenttextreference}% stored in
+ \gotoouterlocation{}{\box0}} % text slot
+ {\hbox{\box0}}%
\else
\hbox{\box0}%
\fi
\else
\hbox{\box0}%
- \fi
- \doflushfootnotes}% new
+ \fi}%
+ \doflushfootnotes % new, not really needed
\endgraf
\nointerlineskip
\dosomebreak\nobreak
#2%
\else
\strut
- \doflushfootnotes % new
+ \doflushfootnotes % new, here since we're in par mode
\iflocation
\ifautocrossdocument
\hhboxindent=\ifcontinuoushead\headlastlinewidth\else\!!zeropoint\fi
@@ -1003,7 +1058,6 @@
\stopsynchronisatie
\egroup
\egroup
- \doflushfootnotes % new, still needed?
\ifdisplaysectionhead
\doifvalue{\??ko#1\c!springvolgendein}{\v!nee}{\noindentation}%
\else
@@ -1088,8 +1142,8 @@
\def\plaatskopalinea#1#2%
{\vbox
- {\localkopsetup
- \begstrut\doifsomething{#1}{#1\hskip\numberheaddistance}#2}}
+ {\localkopsetup
+ \begstrut\doifsomething{#1}{#1\hskip\numberheaddistance}#2}}
\def\plaatskopnormaal#1#2%
{\doifelsenothing{#1}
@@ -1124,7 +1178,7 @@
\def\plaatskopintekst#1#2%
{\bgroup
- \localkopsetup % no stretch in distance
+ \localkopsetup % no stretch in distance
\doifsomething{#1}{{#1}\kern\numberheaddistance}{\begstrut#2}%
\egroup}
@@ -1469,7 +1523,7 @@
[\v!sub\v!sub\v!sub\v!sub\v!paragraaf]
[\c!breedte=7em]
-% hm
+% hm
\stelnummeringin % na instellen hoofdteksten !
[\c!variant=\v!enkelzijdig,
@@ -1485,7 +1539,7 @@
\c!tekstscheider=\tfskip,
\c!status=\v!start,
\c!commando=,
- \c!letter=\v!normaal,
+ \c!letter=, % \v!normaal, % empty, otherwise conflict
\c!kleur=]
-\protect \endinput
+\protect \endinput
diff --git a/tex/context/base/core-syn.tex b/tex/context/base/core-syn.tex
index ad19dc973..6b6678392 100644
--- a/tex/context/base/core-syn.tex
+++ b/tex/context/base/core-syn.tex
@@ -327,7 +327,9 @@
\dowritesort{#2}{#4}{#4}%
\fi}
-\def\dodefinieersorteren[#1][#2][#3]%
+% if #3=\relax or \v!geen, then no command but still protected
+
+\def\dodefinieersorteren[#1][#2][#3]%
{\getparameters[\??so#1]
[%\c!commando=, % we test for defined !
\c!status=\v!start,
@@ -336,11 +338,13 @@
\c!voor=,
\c!na=\endgraf]%
\presetheadtext[#2=\Word{#2}]%
- \setvalue{\e!stel#2\e!in}[##1]% vervalt tzt
+ \setvalue{\e!stel#2\e!in}[##1]% vervalt tzt, soort oo-mode
{\getparameters[\??so#1][##1]}%
\ifthirdargument
- \def#3##1%
- {\getvalue{\??so:#1:##1}}
+ \ConvertConstantAfter\doifnot{#3}{\v!geen}
+ {\ifx#3\relax \else
+ \def#3##1{\getvalue{\??so:#1:##1}}
+ \fi}%
\setvalue{#1}%
{\dotripleempty\docomplexsort[\??so:#1:][#1]}%
\else
diff --git a/tex/context/base/core-tab.tex b/tex/context/base/core-tab.tex
index b216cf448..58025c2b5 100644
--- a/tex/context/base/core-tab.tex
+++ b/tex/context/base/core-tab.tex
@@ -487,12 +487,13 @@
\def\EndTableParBox%
{\removelastskip % added
- %\MakeStrut{0pt}{\StrutDepthFactor\StrutUnit} % removed
+ %\MakeStrut{0pt}{\StrutDepthFactor\StrutUnit} % removed
+ \par \ifnum\prevgraf>0 \strut \vskip-\lineheight \fi % added
\egroup % finishes the \vtop begun by \BeginTableParbox
- \getboxheight\scratchdimen\of\box\scratchbox\relax % added
- \ifdim\scratchdimen>\TABLEparheight % added
- \global\TABLEparheight=\scratchdimen % added
- \fi % added
+ \getboxheight\scratchdimen\of\box\scratchbox\relax % added
+ \ifdim\scratchdimen>\TABLEparheight % added
+ \global\TABLEparheight=\scratchdimen % added
+ \fi % added
\box\scratchbox}
%D To give an impression of what the (well documented) source
diff --git a/tex/context/base/core-tbl.tex b/tex/context/base/core-tbl.tex
index db534fca7..9776464ac 100644
--- a/tex/context/base/core-tbl.tex
+++ b/tex/context/base/core-tbl.tex
@@ -129,7 +129,15 @@
\newbox \tabulatebox
-\let\handletabulatecharalign\empty
+% [|lg{.}|] => \NG 12.34 \NC
+
+\gdef\handletabulatecharalign#1 % space delimited !
+ {\edef\alignmentclass{\tabulatecolumn}%
+ \edef\alignmentcharacter{\getvalue{\@@tabalign@@\tabulatecolumn}}%
+ \ifcase\tabulatepass\or
+ \setfirstpasscharacteralign\checkalignment{#1}%
+ \fi % force hsize
+ \setsecondpasscharacteralign\checkalignment{#1}}
\def\noftabcolumns{16} % quick and dirty stack
@@ -685,6 +693,7 @@
\setbox0=\vbox % outside if because of line counting
{\footnotesenabledfalse
\let\tabulateindent\!!zeropoint
+\trialtypesettingtrue
\@EA\halign\@EA{\the\!!toksa\cr\tabulatecontent\crcr}}%
\ifnum\nofautotabulate>0
\tabulatewidth\hsize
diff --git a/tex/context/base/core-uti.tex b/tex/context/base/core-uti.tex
index 721ca9e69..8bd490fb8 100644
--- a/tex/context/base/core-uti.tex
+++ b/tex/context/base/core-uti.tex
@@ -163,6 +163,8 @@
\def\checkutilityfile%
{}
+\def\currentutilityfilename{\jobname}
+
\long\def\doutilities#1#2#3#4#5% % introduceren in utility file
{\restorecatcodes
\resetutilities
@@ -170,9 +172,13 @@
{\getvalue{\s!set##1}}% % in een pass worden gedaan,
\processcommacommand[#1]\docommando % zie bijvoorbeeld lijsten
\begingroup
+ \def\currentutilityfilename{#2}%
\footnotesenabledfalse
\doinpututilitiestrue
\global\utilitydonefalse
+\catcode`\\=\@@escape
+\catcode`\{=\@@begingroup
+\catcode`\}=\@@endgroup
\catcode`\%=\@@comment\relax
\pushendofline % geeft problemen zodra andere file wordt ingelezen
\ifunprotectutilities % nog nodig ?
diff --git a/tex/context/base/core-var.tex b/tex/context/base/core-var.tex
index 2b17ef1c5..ab9c3d6b0 100644
--- a/tex/context/base/core-var.tex
+++ b/tex/context/base/core-var.tex
@@ -29,6 +29,7 @@
\newevery \everystarttext \relax
\newevery \everystoptext \relax
\newevery \everypagebody \relax
+\newevery \everyforgetall \relax
%D \macros
%D {ifproductionrun}
diff --git a/tex/context/base/core-ver.tex b/tex/context/base/core-ver.tex
index e85f23c7a..31a32f408 100644
--- a/tex/context/base/core-ver.tex
+++ b/tex/context/base/core-ver.tex
@@ -1,6 +1,6 @@
%D \module
%D [ file=core-ver,
-%D version=1996.06.01,
+%D version=2000.05.09,
%D title=\CONTEXT\ Core Macros,
%D subtitle=Verbatim,
%D author=Hans Hagen,
@@ -33,6 +33,16 @@
1: soubor -- neexistuje
\stopmessages
+\startmessages italian library: verbatims
+ title: verbatim
+ 1: il file -- non esiste
+\stopmessages
+
+\startmessages norwegian library: verbatims
+ title: verbatim
+ 1: fil -- eksisterer ikke
+\stopmessages
+
\unprotect
% \type{ <crlf> char} geeft bagger
@@ -46,41 +56,104 @@
\def\prettyidentifier {TEX}
\def\prettypalet {}
+% \def\setupprettiesintype#1%
+% {\edef\prettyidentifier{#1}%
+% \doifinstringelse{\prettyidentifier}{tex,TEX}
+% {\def\prettyidentifier{TEX}}
+% {\doifinstringelse{\prettyidentifier}{perl,pl,pm,PERL,PL,PM}
+% {\def\prettyidentifier{PL}}
+% {\doifinstringelse{\prettyidentifier}{metapost,mp,metafont,mf,METAPOST,MP,METAFONT,MF}
+% {\def\prettyidentifier{MP}}
+% {\doifinstringelse{\prettyidentifier}{javascript,js,java,jv,JAVASCRIPT,JS,JAVA,JV}
+% {\def\prettyidentifier{JV}}
+% {\doifinstringelse{\prettyidentifier}{sql,SQL}
+% {\def\prettyidentifier{SQL}}
+% {\doifinstringelse{\prettyidentifier}{pascal,pas,PAS,modula,mod,MOD,delphi,DELPHI}
+% {\def\prettyidentifier{PAS}}
+% {\doifinstringelse{\prettyidentifier}{eiffel,e,E,EIFFEL}
+% {\def\prettyidentifier{EIF}}
+% {\doifinstringelse{\prettyidentifier}{xml,XML}
+% {\def\prettyidentifier{XML}}
+% {\def\prettyidentifier{TEX}}}}}}}}}%
+% \doifundefined{setuppretty\prettyidentifier type}%
+% {\bgroup
+% \setbox0=\hbox % get rid of spaces when in-line \newpretty loading
+% {\restorecatcodes % also needed when loading during \newpretty
+% \startreadingfile % restore < and > if needed
+% \lowercasestring verb-\prettyidentifier.tex\to\filename
+% \readsysfile{\filename}{}{}
+% \stopreadingfile}%
+% \egroup}%
+% \doifdefinedelse{setuppretty\prettyidentifier type}%
+% {\def\setupprettytype{\getvalue{setuppretty\prettyidentifier type}}}
+% {\let\setupprettytype=\relax}}
+
+\def\installprettytype%
+ {\dodoubleargument\doinstallprettytype}
+
+\def\doinstallprettytype[#1][#2]% map #1 onto #2
+ {\uppercasestring#1\to\asciiA
+ \uppercasestring#2\to\asciiB
+ \setevalue{\??ty\??ty\asciiA}{\asciiB}}
+
\def\setupprettiesintype#1%
- {\edef\prettyidentifier{#1}%
- \doifinstringelse{\prettyidentifier}{tex,TEX}
- {\def\prettyidentifier{TEX}}
- {\doifinstringelse{\prettyidentifier}{perl,pl,pm,PERL,PL,PM}
- {\def\prettyidentifier{PL}}
- {\doifinstringelse{\prettyidentifier}{metapost,mp,metafont,mf,METAPOST,MP,METAFONT,MF}
- {\def\prettyidentifier{MP}}
- {\doifinstringelse{\prettyidentifier}{javascript,js,java,jv,JAVASCRIPT,JS,JAVA,JV}
- {\def\prettyidentifier{JV}}
- {\doifinstringelse{\prettyidentifier}{sql,SQL}
- {\def\prettyidentifier{SQL}}
- {\def\prettyidentifier{TEX}}}}}}%
+ {\uppercasestring#1\to\ascii
+ \edef\prettyidentifier%
+ {\ifundefined{\??ty\??ty\ascii}TEX%
+ \else\getvalue{\??ty\??ty\ascii}\fi}%
\doifundefined{setuppretty\prettyidentifier type}%
{\bgroup
\setbox0=\hbox % get rid of spaces when in-line \newpretty loading
{\restorecatcodes % also needed when loading during \newpretty
\startreadingfile % restore < and > if needed
\lowercasestring verb-\prettyidentifier.tex\to\filename
- \readsysfile{\filename}{}{}
+ \readsysfile{\filename}{}{}%
\stopreadingfile}%
\egroup}%
\doifdefinedelse{setuppretty\prettyidentifier type}%
{\def\setupprettytype{\getvalue{setuppretty\prettyidentifier type}}}
{\let\setupprettytype=\relax}}
+\installprettytype [TEX] [TEX]
+
+\installprettytype [PERL] [PL]
+\installprettytype [PL] [PL]
+\installprettytype [PM] [PL]
+
+\installprettytype [METAPOST] [MP]
+\installprettytype [METAFONT] [MP]
+\installprettytype [MP] [MP]
+\installprettytype [MF] [MP]
+
+\installprettytype [JAVASCRIPT] [JV]
+\installprettytype [JAVA] [JV]
+\installprettytype [JS] [JV]
+\installprettytype [JV] [JV]
+
+\installprettytype [SQL] [SQL]
+
+\installprettytype [PASCAL] [PAS]
+\installprettytype [PAS] [PAS]
+\installprettytype [MODULA] [PAS]
+\installprettytype [MOD] [PAS]
+
+\installprettytype [EIFFEL] [EIF]
+\installprettytype [EIF] [EIF]
+\installprettytype [E] [EIF]
+
+\installprettytype [XML] [XML]
+
\installnewpretty M {\setupprettiesintype {MP}\setupprettytype}
\installnewpretty P {\setupprettiesintype {PL}\setupprettytype}
\installnewpretty T {\setupprettiesintype{TEX}\setupprettytype}
\installnewpretty J {\setupprettiesintype {JV}\setupprettytype}
\installnewpretty S {\setupprettiesintype{SQL}\setupprettytype}
+\installnewpretty W {\setupprettiesintype{PAS}\setupprettytype} % Wirth
+\installnewpretty E {\setupprettiesintype{EIF}\setupprettytype}
+\installnewpretty X {\setupprettiesintype{XML}\setupprettytype}
\def\setupcommonverbatim#1%
- {\def\verbatimfont{\tttf}%
- \def\prettyidentifier{TEX}%
+ {\def\prettyidentifier{TEX}%
%
\doifelsevalue{#1\c!tekst}{\v!ja}
{\naturaltextexttrue}{\naturaltextextfalse}%
@@ -106,8 +179,8 @@
\s!unknown=>\setupprettiesintype{\getvalue{#1\c!optie}}%
\let\obeycharacters=\setupprettytype
\let\obeytabs=\ignoretabs]%
- \edef\prettypalet%
- {\prettyidentifier\getvalue{#1\c!palet}}}
+ \def\verbatimfont{\getvalue{#1\c!letter}}%
+ \setupverbatimcolor{#1}}
%D The verbatim commands have a rather long and turbulent
%D history. Most users of \CONTEXT\ probably will never use
@@ -153,7 +226,7 @@
\unexpanded\def\type%
{\bgroup
- \getvalue{\getvalue{\??ty\c!kleur}}% hm, assumes \somecolor
+ \verbatimcolor
\catcode`\<=\@@other
\catcode`\>=\@@other
\futurelet\next\dotype}
@@ -321,10 +394,36 @@
\fi
\fi}
+%\def\setupcommandsintype#1%
+% {\setupgroupedtype
+% \edef\!!stringa{\getvalue{#1\c!escape}}%
+% \@EA\catcode\@EA`\!!stringa=\@@escape}
+
\def\setupcommandsintype#1%
{\setupgroupedtype
- \edef\!!stringa{\getvalue{#1\c!escape}}%
- \@EA\catcode\@EA`\!!stringa=\@@escape}
+ \edef\\{\getvalue{#1\c!escape}}%
+ \letvalue{\\}=\\% for instance \/=/
+ \@EA\catcode\@EA`\\=\@@escape
+ \def\BTEX##1\ETEX##2% ##2 gobbles active space
+ {\naturaltextext##1\unskip\relax}}
+
+%D The following lines show what happens when we set
+%D \type {option=commands}.
+%D
+%D \startbuffer
+%D \starttyping
+%D test//test test/BTEX \footnote{test test test}/ETEX test
+%D test//test test/BTEX \footnote{test test test}/ETEX test
+%D test test test/BTEX \bf(nota bene)/ETEX test
+%D test test test /BTEX \bf(nota bene)/ETEX test
+%D \stoptyping
+%D \stopbuffer
+%D
+%D % \bgroup\setuptyping[option=commands]\getbuffer\egroup
+%D
+%D this was keyed in as:
+%D
+%D \typebuffer
\def\setupslantedtype%
{\setupgroupedtype
@@ -357,7 +456,7 @@
\def\initializetype%
{\let\obeylines=\ignorelines
- \setupcommonverbatim{\??ty}%
+ \setupcommonverbatim\??ty
\setupinlineverbatim}
%D \macros
@@ -373,6 +472,7 @@
\setuptype
[\c!spatie=\v!uit,
\c!kleur=,
+ \c!letter=\tttf,
\c!pagina=\v!nee,
\c!tab=\v!nee,
\c!optie=\v!normaal]
@@ -514,7 +614,11 @@
\v!geen=>\scratchskip=\!!zeropoint,
\s!unknown=>\scratchskip=\commalistelement]%
\ifgridsnapping
- \edef\verbatimbaselineskip{\the\baselineskip}%
+ \ifdim\scratchskip=.5\baselineskip\relax
+ \edef\verbatimbaselineskip{\the\scratchskip}% new
+ \else
+ \edef\verbatimbaselineskip{\the\baselineskip}%
+ \fi
\else
\edef\verbatimbaselineskip{\the\scratchskip}%
\fi
@@ -527,12 +631,12 @@
\def\dostarttyping#1%
{\getvalue{\??tp#1\c!voor}%
\startopelkaar % includes \bgroup
- \startcolor[\getvalue{\??tp#1\c!kleur}]%
\initializetyping{#1}%
+ \startverbatimcolor
\expandafter\processdisplayverbatim\expandafter{\s!stop#1}}
\def\dostoptyping#1%
- {\stopcolor
+ {\stopverbatimcolor
\stopopelkaar % includes \egroup
\getvalue{\??tp#1\c!na}%
\doifvalue{\??tp#1\c!springvolgendein}{\v!nee}{\noindentation}}
@@ -584,9 +688,10 @@
\c!optie=\v!geen,
\c!palet=colorpretty,
\c!tekst=\v!nee,
+ \c!letter=\tttf,
\c!icommando=\ttsl,
\c!vcommando=,
- \c!ccommando=\tf,
+ \c!ccommando=\tttf,
\c!springvolgendein=\v!ja,
\c!marge=\!!zeropoint,
\c!evenmarge=\!!zeropoint,
@@ -614,7 +719,7 @@
\def\presettyping[#1][#2]%
{\copyparameters
[\??tp#1][\??tp]
- [\c!voor,\c!na,\c!spatie,\c!pagina,\c!tab,\c!kleur,
+ [\c!voor,\c!na,\c!spatie,\c!pagina,\c!tab,\c!kleur,\c!letter,
\c!tekst,\c!icommando,\c!vcommando,\c!ccommando,
\c!optie,\c!palet,\c!marge,\c!evenmarge,\c!onevenmarge,
\c!springvolgendein,\c!blanko,\c!escape]%
@@ -632,13 +737,20 @@
\definetyping[\v!typen]
-\definetyping[MP] [\c!optie=MP]
-\definetyping[PL] [\c!optie=PL]
-\definetyping[PM] [\c!optie=PL]
-\definetyping[JS] [\c!optie=JS]
-\definetyping[JV] [\c!optie=JV]
-\definetyping[SQL][\c!optie=SQL]
-\definetyping[TEX][\c!optie=TEX]
+\definetyping[MP] [\c!optie=MP]
+\definetyping[PL] [\c!optie=PL]
+\definetyping[PM] [\c!optie=PL]
+\definetyping[JS] [\c!optie=JS]
+\definetyping[JV] [\c!optie=JV]
+\definetyping[SQL] [\c!optie=SQL]
+\definetyping[TEX] [\c!optie=TEX]
+\definetyping[PAS] [\c!optie=PAS]
+\definetyping[PASCAL][\c!optie=PAS]
+\definetyping[MOD] [\c!optie=PAS]
+\definetyping[MODULA][\c!optie=PAS]
+\definetyping[DELPHI][\c!optie=PAS]
+\definetyping[EIFFEL][\c!optie=EIF]
+\definetyping[XML] [\c!optie=XML]
%D We use the \CONTEXT\ color system for switching to and from
%D color mode. We can always redefine these colors afterwards.
@@ -669,29 +781,65 @@
% ---> naar verb-* ? of predefine als undefined?
-\definepalet [TEXcolorpretty] [colorpretty]
-\definepalet [TEXgraypretty] [graypretty]
-\definepalet [PLcolorpretty] [colorpretty]
-\definepalet [PLgraypretty] [graypretty]
-\definepalet [PMcolorpretty] [colorpretty]
-\definepalet [PMgraypretty] [graypretty]
-\definepalet [MPcolorpretty] [colorpretty]
-\definepalet [MPgraypretty] [graypretty]
-\definepalet [JVcolorpretty] [colorpretty]
-\definepalet [JVgraypretty] [graypretty]
-\definepalet [JScolorpretty] [colorpretty]
-\definepalet [JSgraypretty] [graypretty]
-\definepalet [SQLcolorpretty] [colorpretty]
-\definepalet [SQLgraypretty] [graypretty]
+\definepalet [TEXcolorpretty] [colorpretty]
+\definepalet [TEXgraypretty] [graypretty]
+\definepalet [PLcolorpretty] [colorpretty]
+\definepalet [PLgraypretty] [graypretty]
+\definepalet [PMcolorpretty] [colorpretty]
+\definepalet [PMgraypretty] [graypretty]
+\definepalet [MPcolorpretty] [colorpretty]
+\definepalet [MPgraypretty] [graypretty]
+\definepalet [JVcolorpretty] [colorpretty]
+\definepalet [JVgraypretty] [graypretty]
+\definepalet [JScolorpretty] [colorpretty]
+\definepalet [JSgraypretty] [graypretty]
+\definepalet [SQLcolorpretty] [colorpretty]
+\definepalet [SQLgraypretty] [graypretty]
+\definepalet [PAScolorpretty] [colorpretty]
+\definepalet [PASgraypretty] [graypretty]
+\definepalet [EIFcolorpretty] [colorpretty]
+\definepalet [EIFgraypretty] [graypretty]
+\definepalet [XMLcolorpretty] [colorpretty]
+\definepalet [XMLgraypretty] [graypretty]
+
+% Some real in-depth knowlegde of palets: `palet:color' it is!
%D We can use some core color commands. These are faster than
%D the standard color switching ones and work ok on a line by
%D line basis.
-
-% Some real in-depth knowlegde of palets: `palet:color' it is!
-
-\def\beginofpretty[#1]{\startcolormode{\prettypalet:#1}}
-\def\endofpretty {\stopcolormode}
+%D
+%D \starttypen
+%D \def\setupverbatimcolor#1%
+%D {\edef\prettypalet{\prettyidentifier\getvalue{#1\c!palet}}%
+%D \def\beginofpretty[##1]{\startcolormode{\prettypalet:##1}}%
+%D \def\endofpretty {\stopcolormode}}
+%D \stoptypen
+%D
+%D Since we support a global color too, the folowing
+%D definition is better:
+
+\def\setupverbatimcolor#1% fast and local versus slow and global
+ {\doifelsevaluenothing{#1\c!kleur}
+ {\def\beginofpretty[##1]{\startcolormode{\prettypalet:##1}}%
+ \let\endofpretty \stopcolormode
+ \let\startverbatimcolor \relax
+ \let\stopverbatimcolor \relax
+ \let\verbatimcolor \relax}
+ {\def\beginofpretty[##1]{\startcolor[\prettypalet:##1]}%
+ \let\endofpretty \stopcolor
+ \def\startverbatimcolor{\startcolor[\getvalue{#1\c!kleur}]}%
+ \let\stopverbatimcolor \stopcolor
+ \def\verbatimcolor {\getvalue{\getvalue{#1\c!kleur}}}}%
+ \doifelsevaluenothing{#1\c!palet}
+ {\let\prettypalet\empty
+ \let\endofpretty\relax
+ \def\beginofpretty[##1]{}}
+ {\edef\prettypalet{\prettyidentifier\getvalue{#1\c!palet}}}}
+
+\let\prettypalet \empty
+\let\startverbatimcolor\relax
+\let\stopverbatimcolor \relax
+\let\verbatimcolor \relax
%D In the verbatim module, there are some examples given of
%D the more obscure features of the verbatim environments.
@@ -802,23 +950,28 @@
\presettyping[\v!file][]
-\def\typefile#1%
- {\getvalue{\??tp\v!file\c!voor}%
- \doiflocfileelse{\pathplusfile\f!currentpath{#1}}
+\definecomplexorsimple\typefile
+
+\def\simpletypefile%
+ {\complextypefile[\v!file]}
+
+\def\complextypefile[#1]#2%
+ {\getvalue{\??tp#1\c!voor}%
+ \doiflocfileelse{\pathplusfile\f!currentpath{#2}}
{\startopelkaar % includes \bgroup
- \startcolor[\getvalue{\??tp\v!file\c!kleur}]%
- \doifinset{\getvalue{\??tp\v!file\c!optie}}{\v!commandos,\v!schuin,\v!normaal}
- {\setuptyping[\v!file][\c!optie=\v!geen]}%
- \doifvalue{\??tp\v!file\c!optie}{\v!kleur}
- {\expandafter\aftersplitstring#1\at.\to\prettyidentifier
- \letvalue{\??tp\v!file\c!optie}=\prettyidentifier}%
- \initializetyping\v!file
- \processfileverbatim{\pathplusfile\f!currentpath{#1}}%
- \stopcolor
+ \doifinset{\getvalue{\??tp#1\c!optie}}{\v!commandos,\v!schuin,\v!normaal}
+ {\setuptyping[#1][\c!optie=\v!geen]}%
+ \doifvalue{\??tp#1\c!optie}{\v!kleur}
+ {\expandafter\aftersplitstring#2\at.\to\prettyidentifier
+ \letvalue{\??tp#1\c!optie}=\prettyidentifier}%
+ \initializetyping{#1}%
+ \startverbatimcolor
+ \processfileverbatim{\pathplusfile\f!currentpath{#2}}%
+ \stopverbatimcolor
\stopopelkaar} % includes \egroup
- {{\tttf[\makemessage{\m!verbatims}{1}{#1}]}%
- \showmessage{\m!verbatims}{1}{#1}}%
- \getvalue{\??tp\v!file\c!na}}
+ {{\tttf[\makemessage{\m!verbatims}{1}{#2}]}%
+ \showmessage{\m!verbatims}{1}{#2}}%
+ \getvalue{\??tp#1\c!na}}
%D \macros
%D {filename}
diff --git a/tex/context/base/enco-ans.tex b/tex/context/base/enco-ans.tex
index 79bb55d67..7936a9b18 100644
--- a/tex/context/base/enco-ans.tex
+++ b/tex/context/base/enco-ans.tex
@@ -3,9 +3,9 @@
%D version=1995.1.1,
%D title=\CONTEXT\ Encoding Macros,
%D subtitle=\YandY\ texnansi Encoding,
-%D author=J. Hagen,
+%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=J. Hagen]
+%D copyright=Hans Hagen]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-chi.tex b/tex/context/base/enco-chi.tex
index 2e420a9f7..5addd57e9 100644
--- a/tex/context/base/enco-chi.tex
+++ b/tex/context/base/enco-chi.tex
@@ -11,6 +11,8 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
+% actually this is also a filter -> enco-fcn.tex
+
%D This is an experimental definition. Since we are dealing
%D with unicode's, the registered values are not saved, so
%D actually we're dealing with an pseudo encoding. The digits
@@ -126,6 +128,28 @@
\defineudigit 10000* 184 85
\defineudigit 100000000* 187 245
+\defineudigit 20 164 220
+\defineudigit 21 164 64
+\defineudigit 22 164 71
+\defineudigit 23 164 84
+\defineudigit 24 165 124
+\defineudigit 25 164 173
+\defineudigit 26 164 187
+\defineudigit 27 164 67
+\defineudigit 28 164 75
+\defineudigit 29 164 69
+
+\defineudigit 30 164 202
+\defineudigit 31 164 64
+\defineudigit 32 164 71
+\defineudigit 33 164 84
+\defineudigit 34 165 124
+\defineudigit 35 164 173
+\defineudigit 36 164 187
+\defineudigit 37 164 67
+\defineudigit 38 164 75
+\defineudigit 39 164 69
+
\stopencoding
\startencoding[gbk]
@@ -210,6 +234,28 @@
\defineudigit 10000* 200 102
\defineudigit 100000000* 210 218
+\defineudigit 20 216 165
+\defineudigit 21 210 187
+\defineudigit 22 182 254
+\defineudigit 23 200 253
+\defineudigit 24 203 196
+\defineudigit 25 206 229
+\defineudigit 26 193 249
+\defineudigit 27 198 223
+\defineudigit 28 176 203
+\defineudigit 29 190 197
+
+\defineudigit 30 216 166
+\defineudigit 31 210 187
+\defineudigit 32 182 254
+\defineudigit 33 200 253
+\defineudigit 34 203 196
+\defineudigit 35 206 229
+\defineudigit 36 193 249
+\defineudigit 37 198 223
+\defineudigit 38 176 203
+\defineudigit 39 190 197
+
\stopencoding
\endinput
diff --git a/tex/context/base/enco-ec.tex b/tex/context/base/enco-ec.tex
index 611523885..83cbf0174 100644
--- a/tex/context/base/enco-ec.tex
+++ b/tex/context/base/enco-ec.tex
@@ -173,8 +173,8 @@
\definecharacter OE 215
\definecharacter o 248
\definecharacter O 216
-\definecharacter sz 255 % was 223
-\definecharacter SS 255 % was 223
+\definecharacter sz 255
+\definecharacter SS 223
\definecharacter th 254
\definecharacter TH 222
diff --git a/tex/context/base/enco-fde.tex b/tex/context/base/enco-fde.tex
new file mode 100644
index 000000000..fe6ea0312
--- /dev/null
+++ b/tex/context/base/enco-fde.tex
@@ -0,0 +1,118 @@
+%D \module
+%D [ file=enco-fde,
+%D version=2000.08.20,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=German Input Filter,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=Hans Hagen]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D These definitions used to be part of lang-ger.tex.
+
+\unprotect
+
+\startlanguagespecifics[\s!de]
+
+ \installcompoundcharacter "a {\moveaccent{-.1ex}\"a\midworddiscretionary}
+ \installcompoundcharacter "e {\moveaccent{-.1ex}\"e\midworddiscretionary}
+ \installcompoundcharacter "i {\moveaccent{-.1ex}\"\i\midworddiscretionary}
+ \installcompoundcharacter "o {\moveaccent{-.1ex}\"o\midworddiscretionary}
+ \installcompoundcharacter "u {\moveaccent{-.1ex}\"u\midworddiscretionary}
+ \installcompoundcharacter "s {\sz}
+ \installcompoundcharacter "z {\sz}
+
+
+ \installcompoundcharacter "A {\smashaccent\"A}
+ \installcompoundcharacter "E {\smashaccent\"E}
+ \installcompoundcharacter "I {\smashaccent\"I}
+ \installcompoundcharacter "O {\smashaccent\"O}
+ \installcompoundcharacter "U {\smashaccent\"U}
+ \installcompoundcharacter "Z {SZ}
+ \installcompoundcharacter "S {SS}
+
+\stoplanguagespecifics
+
+\startlanguagespecifics[\s!de]
+
+ \installcompoundcharacter "ck {\discretionary {k-}{k}{ck}}
+ \installcompoundcharacter "ff {\discretionary{ff-}{f}{ff}}
+ \installcompoundcharacter "ll {\discretionary{ll-}{l}{ll}}
+ \installcompoundcharacter "mm {\discretionary{mm-}{m}{mm}}
+ \installcompoundcharacter "nn {\discretionary{nn-}{n}{nn}}
+ \installcompoundcharacter "pp {\discretionary{pp-}{p}{pp}}
+ \installcompoundcharacter "rr {\discretionary{rr-}{r}{rr}}
+ \installcompoundcharacter "tt {\discretionary{tt-}{t}{tt}}
+
+ \installcompoundcharacter "CK {\discretionary {K-}{K}{CK}}
+ \installcompoundcharacter "FF {\discretionary{FF-}{F}{FF}}
+ \installcompoundcharacter "LL {\discretionary{LL-}{L}{LL}}
+ \installcompoundcharacter "MM {\discretionary{MM-}{M}{MM}}
+ \installcompoundcharacter "NN {\discretionary{NN-}{N}{NN}}
+ \installcompoundcharacter "PP {\discretionary{PP-}{P}{PP}}
+ \installcompoundcharacter "RR {\discretionary{RR-}{R}{RR}}
+ \installcompoundcharacter "TT {\discretionary{TT-}{T}{TT}}
+
+\stoplanguagespecifics
+
+\startlanguagespecifics[\s!de]
+
+ \installcompoundcharacter "` {\handlequotation\c!leftquotation}
+ \installcompoundcharacter "' {\handlequotation\c!rightquotation}
+ \installcompoundcharacter ". {\kern.1em\ignorespaces}
+
+ \def\setupDElanguage%
+ {\setuplanguage
+ [\s!de]
+ [\c!leftsentence=\leftguillemot,
+ \c!rightsentence=\rightguillemot,
+ \c!leftsubsentence=\leftsubguillemot,
+ \c!rightsubsentence=\rightsubguillemot]}
+
+ \installcompoundcharacter "< {{\setupDElanguage|<|}}
+ \installcompoundcharacter "> {{\setupDElanguage|>|}}
+
+\stoplanguagespecifics
+
+%D An experimental hack:
+
+\startencoding[pdfdoc]
+ \startlanguagespecifics[\s!de]% hm, a % is needed
+ \defineactivecharacter " {\"} % no {\simplifiedcompoundcharacter"}
+ \stoplanguagespecifics
+\stopencoding
+
+\startencoding[ec]
+ \startlanguagespecifics[\s!de]%
+ \installcompoundcharacter "a {\"a}
+ \installcompoundcharacter "e {\"e}
+ \installcompoundcharacter "i {\"\i}
+ \installcompoundcharacter "o {\"o}
+ \installcompoundcharacter "u {\"u}
+ \installcompoundcharacter "A {\"A}
+ \installcompoundcharacter "E {\"E}
+ \installcompoundcharacter "I {\"I}
+ \installcompoundcharacter "O {\"O}
+ \installcompoundcharacter "U {\"U}
+ \stoplanguagespecifics
+\stopencoding
+
+\startencoding[texnansi]
+ \startlanguagespecifics[\s!de]%
+ \installcompoundcharacter "a {\"a}
+ \installcompoundcharacter "e {\"e}
+ \installcompoundcharacter "i {\"\i}
+ \installcompoundcharacter "o {\"o}
+ \installcompoundcharacter "u {\"u}
+ \installcompoundcharacter "A {\"A}
+ \installcompoundcharacter "E {\"E}
+ \installcompoundcharacter "I {\"I}
+ \installcompoundcharacter "O {\"O}
+ \installcompoundcharacter "U {\"U}
+ \stoplanguagespecifics
+\stopencoding
+
+\protect \endinput
diff --git a/tex/context/base/enco-fpl.tex b/tex/context/base/enco-fpl.tex
new file mode 100644
index 000000000..acf3caa50
--- /dev/null
+++ b/tex/context/base/enco-fpl.tex
@@ -0,0 +1,90 @@
+%D \module
+%D [ file=enco-fpl,
+%D version=2000.08.20,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=Polish Input Filter,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=Hans Hagen]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D These definitions used to be part of lang-sla.tex.
+
+\unprotect
+
+\startlanguagespecifics[\s!pl]
+
+ \installcompoundcharacter /a {\k a}
+ \installcompoundcharacter /c {\'c}
+ \installcompoundcharacter /e {\k e}
+ \installcompoundcharacter /l {\l}
+ \installcompoundcharacter /n {\'n}
+ \installcompoundcharacter /o {\'o}
+ \installcompoundcharacter /s {\'s}
+ \installcompoundcharacter /x {\'z}
+ \installcompoundcharacter /z {\.z}
+ \installcompoundcharacter /A {\k A}
+ \installcompoundcharacter /C {\'C}
+ \installcompoundcharacter /E {\k E}
+ \installcompoundcharacter /L {\L}
+ \installcompoundcharacter /N {\'N}
+ \installcompoundcharacter /O {\'O}
+ \installcompoundcharacter /S {\'S}
+ \installcompoundcharacter /X {\'Z}
+ \installcompoundcharacter /Z {\.Z}
+
+\stoplanguagespecifics
+
+\startlanguagespecifics[\s!pl]
+
+ \installcompoundcharacter /, {\handlequotation\c!leftquotation}
+ \installcompoundcharacter /' {\handlequotation\c!rightquotation}
+
+ \def\setupPLlanguage%
+ {\setuplanguage
+ [\s!pl]
+ [\c!leftsentence=\leftguillemot,
+ \c!rightsentence=\rightguillemot,
+ \c!leftsubsentence=\leftsubguillemot,
+ \c!rightsubsentence=\rightsubguillemot]}
+
+ \installcompoundcharacter /< {{\setupPLlanguage|<|}}
+ \installcompoundcharacter /> {{\setupPLlanguage|>|}}
+
+ \installcompoundcharacter /- {|-|}
+
+\stoplanguagespecifics
+
+\startlanguagespecifics[\s!pl]
+
+ \definesortkey {/a}{a}{a}{\k a}
+ \definesortkey {/A}{a}{a}{\k a}
+ \definesortkey {/c}{c}{a}{\'c}
+ \definesortkey {/C}{c}{a}{\'c}
+ \definesortkey {/e}{e}{a}{\k e}
+ \definesortkey {/E}{e}{a}{\k e}
+ \definesortkey {/l}{l}{a}{\l }
+ \definesortkey {/L}{l}{a}{\l }
+ \definesortkey {/n}{n}{a}{\'n}
+ \definesortkey {/N}{n}{a}{\'n}
+ \definesortkey {/o}{o}{a}{\'o}
+ \definesortkey {/O}{o}{a}{\'o}
+ \definesortkey {/s}{s}{a}{\'s}
+ \definesortkey {/S}{s}{a}{\'s}
+ \definesortkey {/x}{z}{a}{\'x}
+ \definesortkey {/X}{z}{a}{\'x}
+ \definesortkey {/z}{z}{b}{\.z}
+ \definesortkey {/Z}{z}{b}{\.z}
+
+\stoplanguagespecifics
+
+\startencoding[pdfdoc]
+ \startlanguagespecifics[pl]% hm
+ \defineactivecharacter / {\simplifiedcompoundcharacter/}
+ \stoplanguagespecifics
+\stopencoding
+
+\protect \endinput
diff --git a/tex/context/base/enco-fro.tex b/tex/context/base/enco-fro.tex
new file mode 100644
index 000000000..8b12dfefd
--- /dev/null
+++ b/tex/context/base/enco-fro.tex
@@ -0,0 +1,33 @@
+%D \module
+%D [ file=enco-fro,
+%D version=2000.08.20,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=Romanian Input Filter,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=Hans Hagen]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D These definitions used to be part of lang-ita.tex.
+
+\unprotect
+
+\startlanguagespecifics[\s!ro]
+
+ \installcompoundcharacter "a {\u{a}}
+ \installcompoundcharacter "i {\^{\i}}
+ \installcompoundcharacter "s {\c{s}}
+ \installcompoundcharacter "t {\c{t}}
+ \installcompoundcharacter "A {\^{a}}
+ \installcompoundcharacter "I {\^{I}}
+ \installcompoundcharacter "S {\c{S}}
+ \installcompoundcharacter "T {\c{T}}
+ \installcompoundcharacter "` {\handlequotation\c!leftquotation}
+ \installcompoundcharacter "' {\handlequotation\c!rightquotation}
+
+\stoplanguagespecifics
+
+\protect \endinput
diff --git a/tex/context/base/enco-ibm.tex b/tex/context/base/enco-ibm.tex
index 382c87795..24c7cfb9d 100644
--- a/tex/context/base/enco-ibm.tex
+++ b/tex/context/base/enco-ibm.tex
@@ -57,7 +57,7 @@
\stopregime
-\enableregime[windows]
+\enableregime[ibm]
%D The next section will be changed as soon as we get grip on
%D the other encodings.
diff --git a/tex/context/base/enco-il2.tex b/tex/context/base/enco-il2.tex
index 25767ea4f..4230f04bc 100644
--- a/tex/context/base/enco-il2.tex
+++ b/tex/context/base/enco-il2.tex
@@ -3,9 +3,9 @@
%D version=1998.12.1,
%D title=\CONTEXT\ Encoding Macros,
%D subtitle=Czech and Slovak ISO Latin 2 Encoding,
-%D author=J. Hagen,
+%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=J. Hagen]
+%D copyright=Hans Hagen]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-ini.tex b/tex/context/base/enco-ini.tex
index 874114eb9..533852389 100644
--- a/tex/context/base/enco-ini.tex
+++ b/tex/context/base/enco-ini.tex
@@ -82,10 +82,25 @@
3: nezname kodovani --
\stopmessages
+\startmessages italian library: encodings
+ title: codifica
+ 1: codifica --
+ 2: codifica -- caricata
+ 3: codifica sconosciuta --
+\stopmessages
+
+\startmessages norwegian library: encodings
+ title: koding
+ 1: koding --
+ 2: koding -- er lest inn
+ 3: ukjent koding --
+\stopmessages
+
%D First we define a few local or not yet initialized constants.
\def\@map@{@m@ap@} % mapping prefix
\def\@reg@{@r@eg@} % regime prefix
+\def\@fha@{@f@ha@} % font prefix
\ifx\currentlanguage\undefined \let\currentlanguage\s!en \fi
@@ -125,13 +140,13 @@
%D low level implementation may change.
\def\startregime[#1]%
- {\pushmacro\characterregime
+ {\localpushmacro\characterregime
\edef\characterregime{@#1@}%
\doifundefined{\@reg@\characterregime}
{\expanded{\newtoks\csname\@reg@\characterregime\endcsname}}}
\def\stopregime%
- {\popmacro\characterregime}
+ {\localpopmacro\characterregime}
%\long\def\startregime[#1]#2\stopregime{}
@@ -800,6 +815,105 @@
\stoptextrule
\egroup}
+%D {\em The next section is experimental and implemnts font
+%D specific features, like hanging punctuation.}
+
+\def\startfonthandling[#1]%
+ {\def\fonthandling{#1}%
+ \doifundefined{\@fha@\fonthandling}
+ {\expanded{\newtoks\csname\@fha@\fonthandling\endcsname}}}
+
+\def\stopfonthandling%
+ {\let\fonthandling\empty}
+
+\def\setfonttoks%
+ {\@EA\let\@EA\fonttoks\csname\@fha@\fonthandling\endcsname}
+
+\def\definefonthandling%
+ {\dotripleempty\dodefinefonthandling}
+
+\def\dodefinefonthandling[#1][#2][#3]%
+ {\setvalue{\@fha@\@fha@#1}{#2}%
+ \getparameters[\@fha@\@fha@#1][\c!links=1,\c!rechts=1,#3]}
+
+\def\setupfonthandling%
+ {\dodoubleempty\dosetupfonthandling}
+
+\def\dosetupfonthandling[#1][#2]%
+ {\getparameters[\@fha@\@fha@#1][#2]}
+
+\def\doenablehandling#1%
+ {\doifdefined{\@fha@#1}{\@EA\the\csname\@fha@#1\endcsname}}
+
+\def\enablehandling[#1]%
+ {\doifdefinedelse{\@fha@\@fha@#1}%
+ {\setprotrudingfactor
+ {\getvalue{\@fha@\@fha@#1\c!links}}
+ {\getvalue{\@fha@\@fha@#1\c!rechts}}%
+ \edef\fonthandling{\getvalue{\@fha@\@fha@#1}}%
+ \@EA\rawprocesscommalist\@EA[\fonthandling]\doenablehandling}
+ {\doenablehandling{#1}}}
+
+\ifx\undefined\pdfprotrudechars % we don't use pdftex
+
+ \def\defineprotrudefactor#1 #2 #3 {}
+ \def\setprotrudingfactor #1#2{}
+ \def\enableprotruding {}
+ \def\disableprotruding {}
+
+\else
+
+ \newdimen\lproddimen
+ \newdimen\rproddimen
+ \let\prodfont\font
+
+ \def\enableprotruding {\pdfprotrudechars=2 }
+ \def\disableprotruding{\pdfprotrudechars=0 }
+
+ \appendtoks \disableprotruding \to \everyforgetall % Here or not here?
+
+ \def\setprotrudingfactor#1#2%
+ {\lproddimen=#1pt\multiply\lproddimen\!!thousand\divide\lproddimen \!!maxcard\relax
+ \rproddimen=#2pt\multiply\rproddimen\!!thousand\divide\rproddimen \!!maxcard\relax}
+
+ \setprotrudingfactor{1}{1}
+
+ \def\dodefineprotrudefactor#1 #2 #3 %
+ {\scratchdimen=#2\lproddimen\lpcode\prodfont#1=\number\scratchdimen
+ \scratchdimen=#3\rproddimen\rpcode\prodfont#1=\number\scratchdimen}
+
+ \def\dodefinefonthandling[#1][#2][#3]%
+ {\setvalue{\@fha@\@fha@#1}{#2}%
+ \getparameters[\@fha@\@fha@#1][\c!links=1,\c!rechts=1,#3]}
+
+ \def\defineprotrudefactor#1 #2 #3 %
+ {\setfonttoks
+ \doifnumberelse{\string#1}
+ {\appendtoks\dodefineprotrudefactor #1 #2 #3 \to\fonttoks} %
+ {\appendtoks\dodefineprotrudefactor`#1 #2 #3 \to\fonttoks}}%
+
+ \def\defineprotrudefactor#1 #2 #3 %
+ {\setfonttoks
+ \doifnumberelse{\string#1}
+ {\appendtoks\dodefineprotrudefactor #1 #2 #3 \to\fonttoks}
+ {\doifcharactercodeelse{#1}
+ {\@EA\appendtoks\@EA\dodefineprotrudefactor\charactercode #2 #3 \to\fonttoks}
+ {\appendtoks\dodefineprotrudefactor`#1 #2 #3 \to\fonttoks}}}
+
+\fi
+
+%D {\em Another experiment: named glyphs. Incomplete yet.}
+
+\def\definecharactercode#1 #2 %
+ {\setvalue{\characterencoding-#1}{#2}}
+
+\def\doifcharactercodeelse#1#2#3%
+ {\doifdefinedelse{\characterencoding-\string#1}
+ {\edef\charactercode{\getvalue{\characterencoding-#1}\space}#2}
+ {#3}}
+
+%D {\em So far for the experiment.}
+
%D \macros
%D {everyuppercase, EveryUppercase,
%D everyuppercase, EveryUppercase}
diff --git a/tex/context/base/enco-pdf.tex b/tex/context/base/enco-pdf.tex
index a4fbfdac2..c8f03e3d0 100644
--- a/tex/context/base/enco-pdf.tex
+++ b/tex/context/base/enco-pdf.tex
@@ -3,9 +3,9 @@
%D version=1995.1.1,
%D title=\CONTEXT\ Encoding Macros,
%D subtitle=\YandY\ texnansi Encoding,
-%D author=J. Hagen,
+%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=J. Hagen]
+%D copyright=Hans Hagen]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-pol.tex b/tex/context/base/enco-pol.tex
index 40c9dfa86..283d074a8 100644
--- a/tex/context/base/enco-pol.tex
+++ b/tex/context/base/enco-pol.tex
@@ -3,7 +3,7 @@
%D version=1999.28.8,
%D title=\CONTEXT\ Encoding Macros,
%D subtitle=Polish Mixed Encoding,
-%D author=Taco Hoekwater,
+%D author={Taco Hoekwater \& Hans Hagen},
%D date=\currentdate,
%D copyright=Hans Hagen]
%C
diff --git a/tex/context/base/enco-pro.tex b/tex/context/base/enco-pro.tex
new file mode 100644
index 000000000..b245554e3
--- /dev/null
+++ b/tex/context/base/enco-pro.tex
@@ -0,0 +1,72 @@
+%D \module
+%D [ file=enco-pro,
+%D version=2000.29.9,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=Protruding Factors,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=Hans Hagen]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This is an experimental definition file. The protruding
+%D values we use here are those found from \THANH's thesis.
+
+\unprotect
+
+\definecharactercode leftupperninequote 92
+\definecharactercode rightupperninequote 34
+\definecharactercode endash 123
+\definecharactercode emdash 124
+
+\startfonthandling[defpunc]
+
+ \defineprotrudefactor ! 0 .2
+ \defineprotrudefactor ' 0 .7
+ \defineprotrudefactor ` .7 0
+ \defineprotrudefactor ( .05 0
+ \defineprotrudefactor ) 0 .05
+ \defineprotrudefactor , 0 .7
+ \defineprotrudefactor - 0 .7
+ \defineprotrudefactor . 0 .7
+ \defineprotrudefactor : 0 .5
+ \defineprotrudefactor ; 0 .5
+
+ \defineprotrudefactor rightupperninequote 0 .5
+ \defineprotrudefactor leftupperninequote .5 0
+ \defineprotrudefactor endash 0 .3
+ \defineprotrudefactor emdash 0 .2
+
+\stopfonthandling
+
+\startfonthandling[defalph]
+
+ \defineprotrudefactor A .05 .05
+ \defineprotrudefactor F 0 .05
+ \defineprotrudefactor J .05 0
+ \defineprotrudefactor K 0 .05
+ \defineprotrudefactor L 0 .05
+ \defineprotrudefactor T .05 .05
+ \defineprotrudefactor V .05 .05
+ \defineprotrudefactor W .05 .05
+ \defineprotrudefactor X .05 .05
+ \defineprotrudefactor Y .05 .05
+
+ \defineprotrudefactor k 0 .05
+ \defineprotrudefactor r 0 .05
+ \defineprotrudefactor t 0 .05
+ \defineprotrudefactor v .05 .05
+ \defineprotrudefactor w .05 .05
+ \defineprotrudefactor x .05 .05
+ \defineprotrudefactor y .05 .05
+
+\stopfonthandling
+
+\definefonthandling [normal] [defpunc,defalph]
+\definefonthandling [slanted] [defpunc] [\c!rechts=1.5]
+\definefonthandling [bold] [defpunc,defalph]
+\definefonthandling [boldslanted] [defpunc] [\c!links=1.5]
+
+\protect \endinput
diff --git a/tex/context/base/enco-win.tex b/tex/context/base/enco-win.tex
index e31fb311a..06f8ab41f 100644
--- a/tex/context/base/enco-win.tex
+++ b/tex/context/base/enco-win.tex
@@ -3,7 +3,7 @@
%D version=1997.08.29,
%D title=\CONTEXT\ Encoding Macros,
%D subtitle=Windows 1252 ANSI keys,
-%D author=Hans Hagen / Tobias Burnus,
+%D author={Tobias Burnus \& Hans Hagen},
%D date=\currentdate,
%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
%C
@@ -76,7 +76,7 @@
\defineactivecharacter Š {\v{S}}
\defineactivecharacter š {\v{s}}
-\defineactivecharacter ß {\SS{}}
+\defineactivecharacter ß {\sz{}}
\defineactivecharacter Ù {\`U}
\defineactivecharacter Ú {\'U}
@@ -102,7 +102,7 @@
\defineactivecharacter — {---}
\defineactivecharacter … {\dots{}}
\defineactivecharacter © {\copyright{}}
-\defineactivecharacter £ {\pounds{}}
+\defineactivecharacter £ {\sterling{}}
\defineactivecharacter „ {\char44\kern-.1em\char44 }
\defineactivecharacter “ {\char96\kern-.1em\char96 }
diff --git a/tex/context/base/enco-x5.tex b/tex/context/base/enco-x5.tex
index f654be0ec..910c7a35c 100644
--- a/tex/context/base/enco-x5.tex
+++ b/tex/context/base/enco-x5.tex
@@ -3,9 +3,9 @@
%D version=1999.12.12,
%D title=\CONTEXT\ Encoding Macros,
%D subtitle=Vietnamese Encoding,
-%D author=J. Hagen,
+%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=J. Hagen]
+%D copyright=Hans Hagen]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/font-aer.tex b/tex/context/base/font-aer.tex
new file mode 100644
index 000000000..4e21fc1d8
--- /dev/null
+++ b/tex/context/base/font-aer.tex
@@ -0,0 +1,69 @@
+%D \module
+%D [ file=font-aer,
+%D version=2000.09.20,
+%D title=\CONTEXT\ Font Macros,
+%D subtitle=Computer Modern,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This file remaps the default Computer Modern Font Files
+%D onto the virtual EC ones, so that hyphenations work well.
+
+\resetfontdefinitionfile[cmr]
+
+\definefontsynonym [cmb10] [aeb10] [encoding=ec]
+\definefontsynonym [cmcsc10] [aecsc10] [encoding=ec]
+\definefontsynonym [cmsl10] [aesl10] [encoding=ec]
+\definefontsynonym [cmssbx10] [aessbx10] [encoding=ec]
+\definefontsynonym [cmti7] [aeti7] [encoding=ec]
+\definefontsynonym [cmbx10] [aebx10] [encoding=ec]
+\definefontsynonym [cmitt10] [aeitt10] [encoding=ec]
+\definefontsynonym [cmsl12] [aesl12] [encoding=ec]
+\definefontsynonym [cmssdc10] [aessdc10] [encoding=ec]
+\definefontsynonym [cmti8] [aeti8] [encoding=ec]
+\definefontsynonym [cmbx12] [aebx12] [encoding=ec]
+\definefontsynonym [cmr10] [aer10] [encoding=ec]
+\definefontsynonym [cmsl8] [aesl8] [encoding=ec]
+\definefontsynonym [cmssi10] [aessi10] [encoding=ec]
+\definefontsynonym [cmti9] [aeti9] [encoding=ec]
+\definefontsynonym [cmbx5] [aebx5] [encoding=ec]
+\definefontsynonym [cmr12] [aer12] [encoding=ec]
+\definefontsynonym [cmsl9] [aesl9] [encoding=ec]
+\definefontsynonym [cmssi12] [aessi12] [encoding=ec]
+\definefontsynonym [cmtt10] [aett10] [encoding=ec]
+\definefontsynonym [cmbx6] [aebx6] [encoding=ec]
+\definefontsynonym [cmr17] [aer17] [encoding=ec]
+\definefontsynonym [cmsltt10] [aesltt10] [encoding=ec]
+\definefontsynonym [cmssi17] [aessi17] [encoding=ec]
+\definefontsynonym [cmtt12] [aett12] [encoding=ec]
+\definefontsynonym [cmbx7] [aebx7] [encoding=ec]
+\definefontsynonym [cmr5] [aer5] [encoding=ec]
+\definefontsynonym [cmss10] [aess10] [encoding=ec]
+\definefontsynonym [cmssi8] [aessi8] [encoding=ec]
+\definefontsynonym [cmtt8] [aett8] [encoding=ec]
+\definefontsynonym [cmbx8] [aebx8] [encoding=ec]
+\definefontsynonym [cmr6] [aer6] [encoding=ec]
+\definefontsynonym [cmss12] [aess12] [encoding=ec]
+\definefontsynonym [cmssi9] [aessi9] [encoding=ec]
+\definefontsynonym [cmtt9] [aett9] [encoding=ec]
+\definefontsynonym [cmbx9] [aebx9] [encoding=ec]
+\definefontsynonym [cmr7] [aer7] [encoding=ec]
+\definefontsynonym [cmss17] [aess17] [encoding=ec]
+\definefontsynonym [cmtcsc10] [aetcsc10] [encoding=ec]
+\definefontsynonym [cmbxsl10] [aebxsl10] [encoding=ec]
+\definefontsynonym [cmr8] [aer8] [encoding=ec]
+\definefontsynonym [cmss8] [aess8] [encoding=ec]
+\definefontsynonym [cmti10] [aeti10] [encoding=ec]
+\definefontsynonym [cmbxti10] [aebxti10] [encoding=ec]
+\definefontsynonym [cmr9] [aer9] [encoding=ec]
+\definefontsynonym [cmss9] [aess9] [encoding=ec]
+\definefontsynonym [cmti12] [aeti12] [encoding=ec]
+
+\setupbodyfont[cmr]
+
+\endinput
diff --git a/tex/context/base/font-ber.tex b/tex/context/base/font-ber.tex
index e748305bd..3ad42a96e 100644
--- a/tex/context/base/font-ber.tex
+++ b/tex/context/base/font-ber.tex
@@ -37,12 +37,12 @@
\definefontsynonym [AntykwaTorunska-Italic] [zatri8t] [encoding=ec]
\definefontsynonym [AntykwaTorunska-Bold] [zatb8t] [encoding=ec]
-\definefontsynonym [Palatino-Roman] [uplr8r] [encoding=ec]
-\definefontsynonym [Palatino-Italic] [uplri8r] [encoding=ec]
-\definefontsynonym [Palatino-Slanted] [uplro8r] [encoding=ec]
-\definefontsynonym [Palatino-Bold] [uplb8r] [encoding=ec]
-\definefontsynonym [Palatino-BoldItalic] [uplbi8r] [encoding=ec]
-\definefontsynonym [Palatino-BoldSlanted] [uplbo8r] [encoding=ec]
+\definefontsynonym [Palatino-Roman] [uplr8t] [encoding=ec]
+\definefontsynonym [Palatino-Italic] [uplri8t] [encoding=ec]
+\definefontsynonym [Palatino-Slanted] [uplro8t] [encoding=ec]
+\definefontsynonym [Palatino-Bold] [uplb8t] [encoding=ec]
+\definefontsynonym [Palatino-BoldItalic] [uplbi8t] [encoding=ec]
+\definefontsynonym [Palatino-BoldSlanted] [uplbo8t] [encoding=ec]
\definefontsynonym [AvantGarde] [pag]
\definefontsynonym [BookmanLight] [pbk]
diff --git a/tex/context/base/font-chi.tex b/tex/context/base/font-chi.tex
index 9c2d8d5ce..b8e332927 100644
--- a/tex/context/base/font-chi.tex
+++ b/tex/context/base/font-chi.tex
@@ -5,34 +5,36 @@
%D subtitle=Chinese,
%D author=Hans Hagen,
%D date=\currentdate,
-%D suggestions=Wang Lei,
+%D suggestions=Wang Lei,
%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
-%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
-%C details.
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
\writestatus{loading}{Context Font Macros / Chinese}
-%D Still to be implemented:
+% much will to typo-chi.tex
+
+%D Still to be implemented:
%D
%D \startopsomming
-%D \som columns left right touch
+%D \som columns left right touch
%D \som distance = (hsize-n*bodyfontsize)/(n-1)
-%D \som char grids
-%D \som char tables
-%D \som all kind of rotated combinations
+%D \som char grids
+%D \som char tables
+%D \som all kind of rotated combinations
%D \som hanging puctuation
%D \som a few more encodings
-%D \som rotation list
+%D \som rotation list
%D \stopopsomming
%M \stelkorpsin[chi]
-%M
+%M
%M \def\WangLei%
%M {\purechinese{\uchar{205}{245}\uchar{192}{218}}}
-\useencoding[chi]
+\useencoding[chi]
%D When \WangLei\ sent me a mail asking if \CONTEXT\ was able
%D to support Chinese, I wasn't sure if the answer could be
@@ -55,7 +57,7 @@
%D character set. I wrote some macros that could process the
%D small \type {Hello World} file \WangLei\ had send me, and
%D after some bug fixes real Chinese came out. I started to
-%D like the look and fel of Chinese glyphs, so on we went.
+%D like the look and fel of Chinese glyphs, so on we went.
%D
%D The first comments concerned spacing. The mix of English
%D and Chinese demands some rather deliberate handling of
@@ -66,8 +68,8 @@
%D labels and texts, and implementing these was rather
%D straightforward. But, there were still some issues to deal
%D with: conversion of numbers, date handling and index
-%D sorting.
-%D
+%D sorting.
+%D
%D I consider(ed) writing Chinese support to be a nice puzzle,
%D since I have to act on chinese \CONTEXT\ code, where I only
%D understand the \CONTEXT\ part. The drawings \WangLei\ made
@@ -75,42 +77,42 @@
%D these modules from scratch, although I fall back on some
%D basic encoding and font modules, I consider them to be
%D rather clean. This cannot be said of all \CONTEXT\ font
-%D modules \type {-)}.
+%D modules \type {-)}.
\unprotect
-%D Because Chinese glyphs have more height than the average
-%D Latin glyph, and at the same time don't have much depth,
-%D we adapt the scale.
+%D Because Chinese glyphs have more height than the average
+%D Latin glyph, and at the same time don't have much depth,
+%D we adapt the scale.
%D
-%D Before and after the glyph we have to deal with Chinese
-%D spacing. Special attention is given to punctuation.
+%D Before and after the glyph we have to deal with Chinese
+%D spacing. Special attention is given to punctuation.
%D
-%D \starttypen
+%D \starttypen
%D [some short nice chinese text with () and english]
-%D \stoptypen
+%D \stoptypen
%D
-%D We insert a bit of stretch and introduce a signal to
-%D keep track of previous characters.
+%D We insert a bit of stretch and introduce a signal to
+%D keep track of previous characters.
%D \macros
%D {chineseunicodescale, chineseinterglyphskip,
%D chineseunicodeheight, chineseunicodedepth, chinesespace}
%D
-%D There are a few variables, that can be (re|)|set
-%D depending on the current font. They default to:
+%D There are a few variables, that can be (re|)|set
+%D depending on the current font. They default to:
-\def\chineseunicodescale {1.00} % not smaller than .85
+\def\chineseunicodescale {1.00} % not smaller than .85
\def\chineseunicodeheight {1.00}
\def\chineseunicodedepth {1.00}
-\def\chineseinterglyphskip{0pt plus .05em minus .01em}
+\def\chineseinterglyphskip{0pt plus .05em minus .01em}
\def\chinesesurroundskip {.25em plus .15em minus .05em}
-%D We define a few signals. (Another examples of using
-%D such signals can be found in the module \type {m-units}.)
+%D We define a few signals. (Another examples of using
+%D such signals can be found in the module \type {m-units}.)
-\newsignal\chineseLsignal % left boundary character
-\newsignal\chineseRsignal % right boundary character
+\newsignal\chineseLsignal % left boundary character
+\newsignal\chineseRsignal % right boundary character
\newsignal\chineseSsignal % any other character (symbol)
\chardef\chineseBstatus=0 % 0=unknown 1=left 2=right 3=chinese 4=nospace
@@ -119,7 +121,7 @@
\sfcode`(=2000 % a temporary hack
-\def\chinesenobreak%
+\def\chinesenobreak%
{\relax
\iftracechinese
\nobreak
@@ -137,7 +139,7 @@
\def\insertchineseglyph%
{\iftracechinese\tracedchineseglyph\else\insertunicodeglyph\fi}
-\newif\ifverticalchinese
+\newif\ifverticalchinese
\def\handlechineseunicodeglyph%
{\ifinpagebody
@@ -148,16 +150,16 @@
\horizontalchineseunicodeglyph
\fi\fi}
-% This is a previous, very encoding specific, attempt. The
-% current implementation is more versatile.
+% This is a previous, very encoding specific, attempt. The
+% current implementation is more versatile.
%
-% \starttypen
+% \starttypen
% \def\chineseleftglyph {\chardef\chineseSstatus=1 }
% \def\chineserightglyph {\chardef\chineseSstatus=2 }
% \def\chinesecenterglyph {\chardef\chineseSstatus=3 }
%
% \def\analyzechineseunicodeglyph%
-% {% left
+% {% left
% \ifnum\unicodeposition=161174 \chineseleftglyph \else
% \ifnum\unicodeposition=161176 \chineseleftglyph \else
% \ifnum\unicodeposition=161178 \chineseleftglyph \else
@@ -206,10 +208,10 @@
% \chardef\chineseSstatus=0
% \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi
% \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi}
-% \stoptypen
+% \stoptypen
%
% chinese classes: left=1|right=2|center=3
-
+
\def\analyzechineseunicodeglyph%
{\chardef\chineseSstatus=0\getvalue{uc\the\unicodeposition}\relax}
@@ -252,15 +254,19 @@
\fi
\fi\fi\fi
\fi\fi\fi}
-
-\def\horizontalchineseunicodeglyph
+
+\def\horizontalchineseunicodeglyph%
{\relax
+ \ifhmode\else\dontleavehmode\fi % added
+ \setunicodescale\chineseunicodescale
+ \setunicodestrut\chineseunicodeheight\chineseunicodedepth
\ifprocessingverbatim
- \insertunicodeglyph
+ \iftracechinese
+ \ruledhbox{\insertunicodeglyph}%
+ \else
+ \insertunicodeglyph
+ \fi
\else
- \ifhmode\else\dontleavehmode\fi % added
- \setunicodescale\chineseunicodescale
- \setunicodestrut\chineseunicodeheight\chineseunicodedepth
\analyzechineseunicodeglyph
\analyzechineseunicodeenviroment
\ifcase\chineseSstatus\relax
@@ -271,7 +277,7 @@
\chineseunskip
\chinesenobreak % left
\or
- \ifcorrectchineseboundarychars\else\chineseunskip\fi
+ \ifcorrectchineseboundarychars\else\chineseunskip\fi
\hskip\chineseinterglyphskip % right
\or
\chineseunskip
@@ -305,7 +311,7 @@
\hskip\chineseSsignal
\fi
\or % left
- \ifcorrectchineseboundarychars
+ \ifcorrectchineseboundarychars
\let\unicodecharcommand\chineseleftcharcommand
\fi
\chineseunskip
@@ -313,7 +319,7 @@
\chinesenobreak
\hskip\chineseLsignal
\or % right
- \ifcorrectchineseboundarychars
+ \ifcorrectchineseboundarychars
\let\unicodecharcommand\chineserightcharcommand
\fi
\chineseunskip
@@ -321,7 +327,7 @@
\insertchineseglyph
\hskip\chineseRsignal
\else % center
- \chineseunskip
+ \chineseunskip
\chinesenobreak
\insertchineseglyph
\hskip\chineseinterglyphskip
@@ -332,8 +338,8 @@
\def\verticalchineseunicodeglyph%
{\relax
- \ifprocessingverbatim
- \insertunicodeglyph
+ \ifprocessingverbatim % to do
+ \horizontalchineseunicodeglyph
\else
\setunicodescale\chineseunicodescale
\setunicodestrut\chineseunicodeheight\chineseunicodedepth
@@ -349,25 +355,27 @@
\hss}%
\ht\scratchbox=\unicodeheight\ht\strutbox
\dp\scratchbox=\unicodedepth \dp\strutbox
- \nointerlineskip
- \ifcase\prevchineseSstatus\relax
- \ifnum\chineseSstatus=2\nobreak\else\allowbreak\fi
- \or % left
- \nobreak
- \or % right
- \ifnum\chineseSstatus=2\nobreak\else\allowbreak\fi
+ \ifvmode % catches \hbox{...}, actually \hbox should be \vbox -)
+ \nointerlineskip
\fi
- \global\chardef\prevchineseSstatus=\chineseSstatus % pagebody ...
- \box\scratchbox
+ \ifcase\prevchineseSstatus\relax
+ \ifnum\chineseSstatus=2 \par\nobreak\else\allowbreak\fi
+ \or % left
+ \par\nobreak
+ \or % right
+ \ifnum\chineseSstatus=2 \par\nobreak\else\allowbreak\fi
+ \fi
+ \global\chardef\prevchineseSstatus=\chineseSstatus % pagebody ...
+ \box\scratchbox\par
\aftergroup\ignorespaces % watch this
\fi}
%D \macros
%D {setupchinese,startvertical,nochinese}
%D
-%D The previous macros implement horizontal as well as
+%D The previous macros implement horizontal as well as
%D vertical typesetting. Vertical typesetting is implemented
-%D on top of the multi||column routines.
+%D on top of the multi||column routines.
\def\setupchinese%
{\dodoubleargument\getparameters[\??vt]}
@@ -379,14 +387,21 @@
{\bgroup
\def\maxnofcolumns{25}%
\verticalchinesetrue
- \global\chardef\prevchineseSstatus=0
+ \global\chardef\prevchineseSstatus=0
\let\nochinese=\nochineseinvertical
+ \doif{\@@vtn}{\v!passend}
+ {\dimen0=\textwidth
+ \advance\dimen0 by \@@vtafstand
+ \dimen2=\bodyfontsize
+ \advance\dimen2 by \@@vtafstand
+ \divide\dimen0 by \number\dimen2
+ \edef\@@vtn{\number\dimen0}}%
\startkolommen
[\c!richting=\@@vtrichting,
\c!balanceren=\@@vtbalanceren,
\c!afstand=\@@vtafstand,
\c!n=\@@vtn,
- #1]}
+ #1]}
\def\stopvertical%
{\stopkolommen
@@ -395,10 +410,10 @@
\setupchinese
[\c!richting=\v!links,
\c!balanceren=\v!nee,
- \c!n=12,
+ \c!n=\v!passend,
\c!afstand=1.5\bodyfontsize]
-%D We can set up vertical typesetting with \type
+%D We can set up vertical typesetting with \type
%D {\setupchinese}.
%D \macros
@@ -423,14 +438,14 @@
%D \macros
%D {correctchineseboundarychars}
%D
-%D Careful reading of the previous macro learns that we
-%D treat left and right glyphs differently. When we say
+%D Careful reading of the previous macro learns that we
+%D treat left and right glyphs differently. When we say
%D
-%D \starttypen
+%D \starttypen
%D \correctchineseboundarycharstrue
%D \stoptypen
%D
-%D For the moment correction in on by default.
+%D For the moment correction in on by default.
\correctchineseboundarycharstrue
@@ -444,7 +459,7 @@
% \def\chineserightcharcommand#1%
% {\setbox\scratchbox=\hbox{#1}%
-% \scratchdimen=.5em
+% \scratchdimen=.5em
% \ifdim\wd\scratchbox>\scratchdimen
% \iftracechinese\ruledhbox\else\hbox\fi \!!to \scratchdimen
% {\box\scratchbox\hss}%
@@ -455,9 +470,9 @@
% \def\chineseleftcharcommand#1%
% {\setbox\scratchbox=\hbox{#1}%
-% \scratchdimen=.5em
+% \scratchdimen=.5em
% \ifdim\wd\scratchbox>\scratchdimen
-% \ifnum\chineseBstatus<4
+% \ifnum\chineseBstatus<4
% \hskip.5\scratchdimen\!!plus.5\scratchdimen\relax
% \fi
% \iftracechinese\ruledhbox\else\hbox\fi \!!to \scratchdimen
@@ -466,40 +481,40 @@
% \box\scratchbox
% \fi}
-%D The long list of numbers in the previous macro identify the
-%D characters where special care is needed for breaking lines.
-%D A linebreak is not permitted before:
-%D
+%D The long list of numbers in the previous macro identify the
+%D characters where special care is needed for breaking lines.
+%D A linebreak is not permitted before:
+%D
%D \def\DoIt #1 #2 %
%D {\hbox{\hbox to 2em{\uchar{#1}{#2}\hss}#1 #2}\par}
-%D
-%D \startkolommen[n=5]
-%D \DoIt 161 162 \DoIt 161 163 \DoIt 161 164 \DoIt 161 167 \DoIt 161 173
-%D \DoIt 161 175 \DoIt 161 177 \DoIt 161 179 \DoIt 161 181 \DoIt 161 183
+%D
+%D \startkolommen[n=5]
+%D \DoIt 161 162 \DoIt 161 163 \DoIt 161 164 \DoIt 161 167 \DoIt 161 173
+%D \DoIt 161 175 \DoIt 161 177 \DoIt 161 179 \DoIt 161 181 \DoIt 161 183
%D \DoIt 161 185 \DoIt 161 187 \DoIt 161 189 \DoIt 161 191 \DoIt 161 227
-%D \DoIt 161 228 \DoIt 161 229 \DoIt 163 161 \DoIt 163 162 \DoIt 163 167
-%D \DoIt 163 169 \DoIt 163 172 \DoIt 163 174 \DoIt 163 186 \DoIt 163 187
+%D \DoIt 161 228 \DoIt 161 229 \DoIt 163 161 \DoIt 163 162 \DoIt 163 167
+%D \DoIt 163 169 \DoIt 163 172 \DoIt 163 174 \DoIt 163 186 \DoIt 163 187
%D \DoIt 163 190 \DoIt 163 191 \DoIt 163 221 \DoIt 163 253
%D \stopkolommen
-%D
-%D A linebreak is not permitted after the following glyphs:
-%D
+%D
+%D A linebreak is not permitted after the following glyphs:
+%D
%D \startkolommen[n=5]
-%D \DoIt 161 174 \DoIt 161 176 \DoIt 161 178 \DoIt 161 180 \DoIt 161 182
-%D \DoIt 161 184 \DoIt 161 186 \DoIt 161 188 \DoIt 161 190 \DoIt 163 168
+%D \DoIt 161 174 \DoIt 161 176 \DoIt 161 178 \DoIt 161 180 \DoIt 161 182
+%D \DoIt 161 184 \DoIt 161 186 \DoIt 161 188 \DoIt 161 190 \DoIt 163 168
%D \DoIt 163 219 \DoIt 163 224 \DoIt 163 251
%D \stopkolommen
-%D \macros
+%D \macros
%D {tracechinesetrue, showchinesetracelegend}
%D
-%D When we say \type {\tracechinesetrue}, we get some
-%D insight in the way \CONTEXT\ handles the Chinese glyphs.
-%D The symbols and color used represent:
-%D
+%D When we say \type {\tracechinesetrue}, we get some
+%D insight in the way \CONTEXT\ handles the Chinese glyphs.
+%D The symbols and color used represent:
+%D
%D \showchinesetracelegend
-\newif\iftracechinese
+\newif\iftracechinese
\def\showchinesetracelegend%
{\definetabulate[\s!dummy][|c|l|l|l|]%
@@ -509,7 +524,7 @@
\NC l \NC left boundary character \NC \color[red]{previous} \NC u l r c n \NC\NR
\NC r \NC right boundary character \NC \color[blue]{next} \NC u l r s \NC\NR
\NC c \NC chinese character \NC \NC \NC\NR
- \NC s \NC following space \NC \NC \NC\NR
+ \NC s \NC following space \NC \NC \NC\NR
\NC n \NC no preceding space \NC \NC \NC\NR \HL
\stopdummy}
@@ -537,59 +552,59 @@
{\ifcase\chineseAstatus\relax u\or l\or r\or s\fi}%
\hss}}}}
-%D The following example shows how tracing works.
-%D
+%D The following example shows how tracing works.
+%D
%D \start \tracechinesetrue
%D ÔÚÕâÒ»´Î¸üÐÂÖÐÎÒÃǽ«½éÉܶÔÖÐÎĵÄÖ§³Ö¡£µ±±¾ÎĵÄÖÐÎÄÒëÕßÍõÀÚ
%D ѯÎÊÎÒ \nochinese{\CONTEXT} ÊÇ·ñÄÜ´¦ÀíººÓïʱ£¬ËûÒѾ­³¢ÊÔ¹ý
%D ÔËÐÐÏÖÓеĺ꼯£¬µ«ÊÇûÓеõ½½á¹û¡£ÕâÒâζ×ŶÔÖÐÎĵÄÖ§³Ö»¹Ã»
%D ÓÐʵÏÖ¡£
-%D
+%D
%D ÔÚÕâÒ»(´Î¸üÐÂ)ÖÐÎÒÃÇ (½«½é) ÉܶÔÖÐÎĵÄÖ§³Ö¡£µ±±¾ÎĵÄÖÐÎÄÒë,
%D ÕßÍõÀÚѯÎÊÎÒ\nochinese{\CONTEXT}ÊÇ·ñÄÜ´¦ÀíººÓïʱ£¬ËûÒѾ­³¢
%D ÊÔ¹ýÔËÐÐÏÖÓеĺ꼯£¬µ«ÊÇûÓеõ½½á¹û¡£ÕâÒâζ×ŶÔÖÐÎĵÄÖ§³Ö
%D »¹Ã»ÓÐʵÏÖ¡£.
%D \stop
-%D Because fonts are defined each time a \UNICODE\ is
-%D encountered |<|which is less inefficient than one would
-%D imagine, because \TEX\ is optimized quite well in this
-%D repect|>| we can define macros like this to take care of
-%D font switches. When available, one can add definitions
-%D for italic, slanted, bold fonts and combinations of these.
+%D Because fonts are defined each time a \UNICODE\ is
+%D encountered |<|which is less inefficient than one would
+%D imagine, because \TEX\ is optimized quite well in this
+%D repect|>| we can define macros like this to take care of
+%D font switches. When available, one can add definitions
+%D for italic, slanted, bold fonts and combinations of these.
-%D \macros
+%D \macros
%D {chinesenumber}
%D
-%D The chinese numbering systems rather straightforward. First
-%D there are the digits:
-%D
+%D The chinese numbering systems rather straightforward. First
+%D there are the digits:
+%D
%D \starttabulatie[|c|c|c|c|c|c|c|c|c|c|]
%D \NC 0 \NC 1 \NC 2 \NC 3 \NC 4 \NC 5 \NC 6 \NC 7 \NC 8 \NC 9 \NC\NR
-%D \NC \chinesenumber{0} \NC \chinesenumber{1} \NC \chinesenumber{2}
-%D \NC \chinesenumber{3} \NC \chinesenumber{4} \NC \chinesenumber{5}
-%D \NC \chinesenumber{6} \NC \chinesenumber{7} \NC \chinesenumber{8}
+%D \NC \chinesenumber{0} \NC \chinesenumber{1} \NC \chinesenumber{2}
+%D \NC \chinesenumber{3} \NC \chinesenumber{4} \NC \chinesenumber{5}
+%D \NC \chinesenumber{6} \NC \chinesenumber{7} \NC \chinesenumber{8}
%D \NC \chinesenumber{9} \NC\NR
%D \stoptabulatie
-%D
-%D Apart from these numbers, we have dedicated representations
+%D
+%D Apart from these numbers, we have dedicated representations
%D of some powers of~$10$.
-%D
+%D
%D \starttabulatie[|c|c|c|c|c|]
-%D \NC 10 \NC 100 \NC 1000 \NC 10000 \NC 100000000 \NC\NR
-%D \NC \chinesenumber{10} \NC \chinesenumber{100}
-%D \NC \chinesenumber{1000} \NC \chinesenumber{10000}
+%D \NC 10 \NC 100 \NC 1000 \NC 10000 \NC 100000000 \NC\NR
+%D \NC \chinesenumber{10} \NC \chinesenumber{100}
+%D \NC \chinesenumber{1000} \NC \chinesenumber{10000}
%D \NC \chinesenumber{100000000} \NC\NR
%D \stoptabulatie
-%D
+%D
%D The number~12 is a combination of $1\times10+2$, or:
%D \chinesenumber {12}, while~22 becomes \chinesenumber {22}.
-%D The numbers below 20 are treated a bit different, just like
-%D numbers with series of $0$'s. So $2\times10$ comes out as
-%D two glyphs, but $1\times10$ as one, because in the latter
-%D case the~$1$ is redundant. The same is true for the powers
-%D of~10.
-%D
+%D The numbers below 20 are treated a bit different, just like
+%D numbers with series of $0$'s. So $2\times10$ comes out as
+%D two glyphs, but $1\times10$ as one, because in the latter
+%D case the~$1$ is redundant. The same is true for the powers
+%D of~10.
+%D
%D \starttabulatie[|r|r|r|r|r|r|]
%D \NC 1 \NC \chinesenumber {1} \NC
%D 9 \NC \chinesenumber {9} \NC
@@ -604,23 +619,23 @@
%D 9999 \NC \chinesenumber {9999} \NC
%D 65536 \NC \chinesenumber {65536} \NC\NR
%D \stoptabulatie
-%D
+%D
%D The implementation is rather simple. For internal purposes,
%D we let zero expand to~0. The digits $0-9$ and numbers $10$,
-%D $100$, $1000$, $10000$ and $100000000$ are hard coded.
+%D $100$, $1000$, $10000$ and $100000000$ are hard coded.
-% This was the first implementation, before \WangLei\ asked
-% me to look into Big Five encoding, so, like everthing in
-% \TEX, things become a bit more complicated, but also more
-% versatile.
+% This was the first implementation, before \WangLei\ asked
+% me to look into Big Five encoding, so, like everthing in
+% \TEX, things become a bit more complicated, but also more
+% versatile.
%
-% \starttypen
+% \starttypen
% \def\chinesedigit#1%
% {\ifnum #1=100000000 \uchar{210}{218}% 100000000
% \else\ifnum #1=10000 \uchar{205}{242}% 10000
% \else\ifnum #1=1000 \uchar{199}{167}% 1000
% \else\ifnum #1=100 \uchar{176}{217}% 100
-% \else\ifnum #1=10 \uchar{202}{174}% 10
+% \else\ifnum #1=10 \uchar{202}{174}% 10
% \else\ifcase#1 \uchar{193}{227}% 0
% \or \uchar{210}{187}% 1
% \or \uchar{182}{254}% 2
@@ -632,110 +647,163 @@
% \or \uchar{176}{203}% 8
% \or \uchar{190}{197}% 9
% \fi\fi\fi\fi\fi\fi}
-% \stoptypen
+% \stoptypen
+%D We will implement four methods, the one described earlier,
+%D a derived one with capitalized characters, an extended
+%D version of the first method, and a rather Arabic method.
+%D
+%D \starttabulate[|l|l|]
+%D \HL
+%D \NC \bf command \NC \bf number 39 \NC\NR
+%D \HL
+%D \NC \type{\normalchinesenumber} \NC \normalchinesenumber {39} \NC\NR
+%D \NC \type{\capitalizedchinesenumber} \NC \capitalizedchinesenumber{39} \NC\NR
+%D \NC \type{\arabicchinesenumber} \NC \arabicchinesenumber {39} \NC\NR
+%D \NC \type{\extendedchinesenumber} \NC \extendedchinesenumber {39} \NC\NR
+%D \HL
+%D \stoptabulate
+%D
%D We use a dirty trick to enable Chinese Capital Digits. In
-%D the encoding vectors, we define these by appending a suffix
-%D \type {*} to the digit. For the moment this method works ok.
-%D With \type {\capstyle} one can switch to those capitalized
-%D digits.
+%D the encoding vectors, we define these by appending a suffix
+%D \type {*} to the digit, which in the following macro is
+%D appended or not (by passing \type {\empty}).
-\def\enablechinesecapdigits%
- {\def\chinesedigitsuffix{*}}
+\def\chinesedigit#1#2% #2: suffix, here * or \empty
+ {\udigit{\chineseencoding}{\number#1#2}}
-\def\disablechinesecapdigits%
- {\let\chinesedigitsuffix\empty}
+% Normal Chinese Number
-\disablechinesecapdigits
+\def\normalchinesenumber#1%
+ {\expandafter\dochinesenumber\number#1\relax\empty}
-\let\capstyle\enablechinesecapdigits
-
-\def\chinesedigit#1%
- {\udigit{\chineseencoding}{\number#1\chinesedigitsuffix}}
-
-\def\chinesenumber#1%
- {\expandafter\dochinesenumber\number#1\relax}
-
-\def\dochinesenumber#1#2\relax
+\def\dochinesenumber#1#2\relax#3%
{\ifnum#1#2<10 % 1-10
- \chinesedigit{#1}%
+ \chinesedigit{#1}#3%
\else\ifnum#1#2<20 % 11-99
- \chinesedigit{10}%
- \dodochinesenumberA#2\relax
+ \chinesedigit{10}#3%
+ \dodochinesenumberA#2\relax#3%
\else
- \dodochinesenumber#1#2\relax
+ \dodochinesenumber#1#2\relax#3%
\fi\fi}
-\def\dodochinesenumber#1#2\relax
+\def\dodochinesenumber#1#2\relax#3%
{\ifnum#1=0
- \chinesedigit{0}%
- \dododochinesenumber0#2\relax
+ \chinesedigit{0}#3%
+ \dododochinesenumber0#2\relax#3%
\else\ifnum#1#2<10 % 1-10
- \chinesedigit{#1#2}%
- \dodochinesenumberA#2\relax
+ \chinesedigit{#1#2}#3%
+ \dodochinesenumberA#2\relax#3%
\else\ifnum#1#2<100 % 11-99
- \dodochinesenumber#1\relax
- \chinesedigit{10}%
- \dodochinesenumberA#2\relax
+ \dodochinesenumber#1\relax#3%
+ \chinesedigit{10}#3%
+ \dodochinesenumberA#2\relax#3%
\else\ifnum#1#2<1000 % 100-999
- \dodochinesenumber#1\relax
- \chinesedigit{100}%
- \dodochinesenumberA#2\relax
+ \dodochinesenumber#1\relax#3%
+ \chinesedigit{100}#3%
+ \dodochinesenumberA#2\relax#3%
\else\ifnum#1#2<10000 % 1000-9999
- \dodochinesenumber#1\relax
- \chinesedigit{1000}%
- \dodochinesenumberA#2\relax
+ \dodochinesenumber#1\relax#3%
+ \chinesedigit{1000}#3%
+ \dodochinesenumberA#2\relax#3%
\else\ifnum#1#2<100000 % 10000-99999
- \dodochinesenumber#1\relax
- \chinesedigit{10000}%
- \dodochinesenumberA#2\relax
+ \dodochinesenumber#1\relax#3%
+ \chinesedigit{10000}#3%
+ \dodochinesenumberA#2\relax#3%
\else\ifnum#1#2<1000000 % 100000-999999
- \dodochinesenumberB#1#2\relax
+ \dodochinesenumberB#1#2\relax#3%
\else\ifnum#1#2<10000000 % 1000000-9999999
- \dodochinesenumberC#1#2\relax
+ \dodochinesenumberC#1#2\relax#3%
\else\ifnum#1#2<100000000 % 10000000-99999999
- \dodochinesenumberD#1#2\relax
+ \dodochinesenumberD#1#2\relax#3%
\else\ifnum#1#2<1000000000 % 10000000-99999999
- \dochinesenumber#1\relax
- \chinesedigit{100000000}%
- \dododochinesenumber#2\relax
+ \dochinesenumber#1\relax#3%
+ \chinesedigit{100000000}#3%
+ \dododochinesenumber#2\relax#3%
\else
- \dodochinesenumberE#1#2\relax
+ \dodochinesenumberE#1#2\relax#3%
\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
-\def\dododochinesenumber#1#2\relax
+\def\dododochinesenumber#1#2\relax#3%
{\ifnum#1=0
- \ifnum0#2>0 \dododochinesenumber#2\relax \fi
+ \ifnum0#2>0 \dododochinesenumber#2\relax#3\fi
\else
- \dodochinesenumber#1#2\relax
+ \dodochinesenumber#1#2\relax#3%
\fi}
-\def\dodochinesenumberA#1\relax
- {\ifcase0#1 \else\dodochinesenumber#1\relax\fi}
+\def\dodochinesenumberA#1\relax#2%
+ {\ifcase0#1 \else\dodochinesenumber#1\relax#2\fi}
-\def\dodochinesenumberB#1#2#3\relax
- {\dochinesenumber#1#2\relax
- \chinesedigit{10000}%
- \dododochinesenumber#3\relax}
+\def\dodochinesenumberB#1#2#3\relax#4%
+ {\dochinesenumber#1#2\relax#4%
+ \chinesedigit{10000}#4%
+ \dododochinesenumber#3\relax#4}
-\def\dodochinesenumberC#1#2#3#4\relax
- {\dochinesenumber#1#2#3\relax
- \chinesedigit{10000}%
- \dododochinesenumber#4\relax}
+\def\dodochinesenumberC#1#2#3#4\relax#5%
+ {\dochinesenumber#1#2#3\relax#5%
+ \chinesedigit{10000}#5%
+ \dododochinesenumber#4\relax#5}
-\def\dodochinesenumberD#1#2#3#4#5\relax
- {\dochinesenumber#1#2#3#4\relax
- \chinesedigit{10000}%
- \dododochinesenumber#5\relax}
+\def\dodochinesenumberD#1#2#3#4#5\relax#6%
+ {\dochinesenumber#1#2#3#4\relax#6%
+ \chinesedigit{10000}#6%
+ \dododochinesenumber#5\relax#6}
-\def\dodochinesenumberE#1#2#3\relax
- {\dochinesenumber#1#2\relax
- \chinesedigit{100000000}%
- \dododochinesenumber#3\relax}
+\def\dodochinesenumberE#1#2#3\relax#4%
+ {\dochinesenumber#1#2\relax#4%
+ \chinesedigit{100000000}#4%
+ \dododochinesenumber#3\relax#4}
-%D The next table demonstates the correctness of the
-%D conversion macro.
-%D
+% Capitalized Chinese Number
+
+\def\capitalizedchinesenumber#1%
+ {\expandafter\dochinesenumber\number#1\relax*}
+
+% Extended Chinese Number
+
+\def\extendedchinesenumber#1%
+ {\expandafter\doextendedchinesenumber\number#1\relax}
+
+\def\doextendedchinesenumber#1#2\relax%
+ {\ifnum #1#2<20 % 0-19
+ \dochinesenumber#1#2\relax\empty
+ \else\ifnum#1#2<30 % 20-29
+ \chinesedigit{20}\empty
+ \ifcase#2\else\chinesedigit{2#2}\fi
+ \else\ifnum#1#2<40 % 30-39
+ \chinesedigit{30}\empty
+ \ifcase#2\else\chinesedigit{3#2}\fi
+ \else
+ \dochinesenumber#1#2\relax\empty
+ \fi\fi\fi}
+
+% Arabic Chinese Number
+
+\def\arabicchinesenumber#1%
+ {\expandafter\doarabicchinesenumber\number#1@\relax}
+
+\def\doarabicchinesenumber#1#2\relax%
+ {\if#1@\else
+ \chinesedigit{#1}\empty
+ \doarabicchinesenumber#2\relax
+ \fi}
+
+% The short call:
+
+\def\chinesenumber{\normalchinesenumber}
+
+% \dorecurse{40}
+% {\hbox
+% {\processingverbatimtrue
+% \hbox to 1cm{\hss\recurselevel}\quad
+% \hbox to 3cm{\hss\strut\normalchinesenumber {\recurselevel}}\quad
+% \hbox to 3cm{\hss\strut\capitalizedchinesenumber{\recurselevel}}\quad
+% \hbox to 3cm{\hss\strut\arabicchinesenumber {\recurselevel}}\quad
+% \hbox to 3cm{\hss\strut\extendedchinesenumber {\recurselevel}}\crlf}}
+
+%D The next table demonstates the correctness of the
+%D conversion macro.
+%D
%D \startbuffer
%D \starttabel[|l|l|l|l|l|l|]
%D \HL
@@ -779,72 +847,77 @@
%D that deal with numbers |<|those familiar with \TEX\ macro
%D programming will notice that the macro if fully
%D expandable|>| in many cases Chinese documents use western
-%D digits. So, in practice, the change that the next example
-%D shows up, is minimal.
-%D
+%D digits. So, in practice, the change that the next example
+%D shows up, is minimal.
+%D
%D \starttabulatie[|r|r|c|]
-%D \NC 2546 \NC \chinesenumber {2546} \NC \NC\NR
-%D \NC 9258 \NC \chinesenumber {9258} \NC $+$ \NC\NR
-%D \HL
+%D \NC 2546 \NC \chinesenumber {2546} \NC \NC\NR
+%D \NC 9258 \NC \chinesenumber {9258} \NC $+$ \NC\NR
+%D \HL
%D \NC 11804 \NC \chinesenumber {11804} \NC \NC\NR
%D \stoptabulatie
-%D
+%D
%D While in arabic arithmics addition leads to more digits, in
%D Chinese the number of glyphs can (temporary) decrease.
%D Given that the number of people dealing with Chinese is
%D considerably larger than the number of latin speaking
%D people, a successor of \TEX\ definitely must provide a
-%D \type {\chinesenumeral} primitive.
-
-\defineconversion[c] [\chinesenumber]
-\defineconversion[chinese][\chinesenumber]
+%D \type {\chinesenumeral} primitive.
+
+\defineconversion [c] [\normalchinesenumber]
+\defineconversion [chinese] [\normalchinesenumber]
+\defineconversion [nc] [\normalchinesenumber]
+\defineconversion [normalchinese] [\normalchinesenumber]
+\defineconversion [cc] [\capitalizedchinesenumber]
+\defineconversion [capitalizedchinese] [\capitalizedchinesenumber]
+\defineconversion [ec] [\extendedchinesenumber]
+\defineconversion [extendedchinese] [\extendedchinesenumber]
+\defineconversion [ac] [\arabicchinesenumber]
+\defineconversion [arabicchinese] [\arabicchinesenumber]
%D \macros
%D {SimChi, TraChi}
%D
%D These components enable us to construct dedicated Chinese
-%D font switches, like:
+%D font switches, like:
\setupunicodefont
[chinese]
- [ \c!schaal=\chineseunicodescale,
- \c!hoogte=\chineseunicodeheight,
- \c!diepte=\chineseunicodedepth,
+ [ \c!schaal=\chineseunicodescale,
+ \c!hoogte=\chineseunicodeheight,
+ \c!diepte=\chineseunicodedepth,
\c!conversie=\chinesenumber,
- \c!commandos=\setchineseencoding, % needed for digits
+ \c!commandos=\setchineseencoding, % needed for digits
\c!commando=\handlechineseunicodeglyph]
-\defineunicodefont [SimChi] [SimplifiedChinese] [chinese]
-\defineunicodefont [TraChi] [TraditionalChinese] [chinese]
-
-%D For the moment, this encoding is implemented rather ugly. The
-%D trick is to move the encoding value from the current font
-%D definition to the \type {\chineseencoding} macro.
+%D For the moment, this encoding is implemented rather ugly. The
+%D trick is to move the encoding value from the current font
+%D definition to the \type {\chineseencoding} macro.
\let\chineseencoding\empty
-\def\setchineseencoding% normally SomeChineseRegular
+\def\setchineseencoding% normally SomeChineseRegular
{\getfontfileparameters\unicodestyle
\ifx\currentfontfileencoding\undefined \else
\let\chineseencoding\currentfontfileencoding
\fi}
-%D We could have said:
-%D
+%D We could have said:
+%D
%D \starttypen
-%D \defineunicodefont
-%D [SimChi]
+%D \defineunicodefont
+%D [SimChi]
%D [SimplifiedChinese]
-%D [ \c!schaal=\chineseunicodescale,
-%D \c!hoogte=\chineseunicodeheight,
-%D \c!diepte=\chineseunicodedepth,
+%D [ \c!schaal=\chineseunicodescale,
+%D \c!hoogte=\chineseunicodeheight,
+%D \c!diepte=\chineseunicodedepth,
%D \c!conversie=\chinesenumber,
-%D \c!commandos=\setchineseencoding, % needed for digits
+%D \c!commandos=\setchineseencoding, % needed for digits
%D \c!commando=\handlechineseunicodeglyph]
%D \stoptypen
-%D
-%D However, the former definitions is more general. Next we
-%D map a few fonts:
+%D
+%D However, the former definitions is more general. Next we
+%D map a few fonts:
\definefontsynonym [SimplifiedChineseRegular] [gbsong] [encoding=gbk]
\definefontsynonym [SimplifiedChineseSlanted] [gbsongsl] [encoding=gbk]
@@ -853,44 +926,118 @@
\definefontsynonym [SimplifiedChineseBoldSlanted] [gbheisl] [encoding=gbk]
\definefontsynonym [SimplifiedChineseBoldItalic] [gbheisl] [encoding=gbk]
-% Yet to be defined:
-
-\definefontsynonym [TraditionalChineseRegular] [b5ming] [encoding=big5]
-\definefontsynonym [TraditionalChineseSlanted] [b5mingsl] [encoding=big5]
-\definefontsynonym [TraditionalChineseItalic] [b5mingsl] [encoding=big5]
+\definefontsynonym [TraditionalChineseRegular] [b5song] [encoding=big5]
+\definefontsynonym [TraditionalChineseSlanted] [b5songsl] [encoding=big5]
+\definefontsynonym [TraditionalChineseItalic] [b5songsl] [encoding=big5]
\definefontsynonym [TraditionalChineseBold] [b5hei] [encoding=big5]
\definefontsynonym [TraditionalChineseBoldSlanted] [b5heisl] [encoding=big5]
\definefontsynonym [TraditionalChineseBoldItalic] [b5heisl] [encoding=big5]
-%D We default to these so called Simplified Chinese fonts.
+\defineunicodefont [SimChi] [SimplifiedChinese] [chinese]
+\defineunicodefont [TraChi] [TraditionalChinese] [chinese]
+
+%D We default to these so called Simplified Chinese fonts.
\SimChi
+%D In addition to these fonts, we (pre|)|define some commonly
+%D used fonts:
+
+\definefontsynonym [SimSongTiRegular] [gbsong] [encoding=gbk]
+\definefontsynonym [SimSongTiSlanted] [gbsongsl] [encoding=gbk]
+\definefontsynonym [SimSongTiBold] [gbsong] [encoding=gbk]
+\definefontsynonym [SimSongTiBoldSlanted] [gbsongsl] [encoding=gbk]
+
+\definefontsynonym [TraSongTiRegular] [b5song] [encoding=big5]
+\definefontsynonym [TraSongTiSlanted] [b5songsl] [encoding=big5]
+\definefontsynonym [TraSongTiBold] [b5song] [encoding=big5]
+\definefontsynonym [TraSongTiBoldSlanted] [b5songsl] [encoding=big5]
+
+\definefontsynonym [SimHeiTiRegular] [gbhei] [encoding=gbk]
+\definefontsynonym [SimHeiTiSlanted] [gbheisl] [encoding=gbk]
+\definefontsynonym [SimHeiTiBold] [gbhei] [encoding=gbk]
+\definefontsynonym [SimHeiTiBoldSlanted] [gbheisl] [encoding=gbk]
+
+\definefontsynonym [TraHeiTiRegular] [b5hei] [encoding=big5]
+\definefontsynonym [TraHeiTiSlanted] [b5heisl] [encoding=big5]
+\definefontsynonym [TraHeiTiBold] [b5hei] [encoding=big5]
+\definefontsynonym [TraHeiTiBoldSlanted] [b5heisl] [encoding=big5]
+
+\definefontsynonym [SimKaiTiRegular] [gbkai] [encoding=gbk]
+\definefontsynonym [SimKaiTiSlanted] [gbkaisl] [encoding=gbk]
+\definefontsynonym [SimKaiTiBold] [gbkai] [encoding=gbk]
+\definefontsynonym [SimKaiTiBoldSlanted] [gbkaisl] [encoding=gbk]
+
+\definefontsynonym [TraKaiTiRegular] [b5kai] [encoding=big5]
+\definefontsynonym [TraKaiTiSlanted] [b5kaisl] [encoding=big5]
+\definefontsynonym [TraKaiTiBold] [b5kai] [encoding=big5]
+\definefontsynonym [TraKaiTiBoldSlanted] [b5kaisl] [encoding=big5]
+
+\definefontsynonym [SimFangSongRegular] [gbfs] [encoding=gbk]
+\definefontsynonym [SimFangSongSlanted] [gbfssl] [encoding=gbk]
+\definefontsynonym [SimFangSongBold] [gbfs] [encoding=gbk]
+\definefontsynonym [SimFangSongBoldSlanted] [gbfssl] [encoding=gbk]
+
+\definefontsynonym [TraFangSongRegular] [b5fs] [encoding=big5]
+\definefontsynonym [TraFangSongSlanted] [b5fssl] [encoding=big5]
+\definefontsynonym [TraFangSongBold] [b5fs] [encoding=big5]
+\definefontsynonym [TraFangSongBoldSlanted] [b5fssl] [encoding=big5]
+
+\definefontsynonym [SimLiShuRegular] [gbfs] [encoding=gbk]
+\definefontsynonym [SimLiShuSlanted] [gbfssl] [encoding=gbk]
+\definefontsynonym [SimLiShuBold] [gbfs] [encoding=gbk]
+\definefontsynonym [SimLiShuBoldSlanted] [gbfssl] [encoding=gbk]
+
+\definefontsynonym [TraLiShuRegular] [b5fs] [encoding=big5]
+\definefontsynonym [TraLiShuSlanted] [b5fssl] [encoding=big5]
+\definefontsynonym [TraLiShuBold] [b5fs] [encoding=big5]
+\definefontsynonym [TraLiShuBoldSlanted] [b5fssl] [encoding=big5]
+
+%D The following definitions provide us the commands to switch
+%D to these fonts.
+
+\defineunicodefont [SimSongTi] [SimplifiedChinese] [chinese]
+\defineunicodefont [TraSongTi] [TraditionalChinese] [chinese]
+
+\defineunicodefont [SimHeiTi] [SimplifiedChinese] [chinese]
+\defineunicodefont [TraHeiTi] [TraditionalChinese] [chinese]
+
+\defineunicodefont [SimKaiTi] [SimplifiedChinese] [chinese]
+\defineunicodefont [TraKaiTi] [TraditionalChinese] [chinese]
+
+\defineunicodefont [SimFangSong] [SimplifiedChinese] [chinese]
+\defineunicodefont [TraFangSong] [TraditionalChinese] [chinese]
+
+\defineunicodefont [SimLiShu] [SimplifiedChinese] [chinese]
+\defineunicodefont [TraLiShu] [TraditionalChinese] [chinese]
+
+% \definealternativestyle [ChineseTitleFont] [\bfd\SimKaiTi] []
+
%D \macros
%D {purechinese}
-%D
-%D Use this macro to suppress spacing around Chinese text.
+%D
+%D Use this macro to suppress spacing around Chinese text.
-\def\purechinese#1% evt geen rek
+\def\purechinese#1% evt geen rek
{\hskip\chineseSsignal\relax
#1\unskip\unskip\unskip
\hskip\chineseSsignal\relax}
%D \macros
%D {stillchinese}
-%D
-%D Use the next macro when you want the next item to be put
+%D
+%D Use the next macro when you want the next item to be put
%D tight to the previous chinese character.
\def\stillchinese%
{\hskip\chineseSsignal\relax}
-%D \macros
+%D \macros
%D {nochinese}
%D
-%D When we want to be sure of non||Chinese inline text,
-%D we can package the for instance english text in \type
-%D {\nochinese}.
+%D When we want to be sure of non||Chinese inline text,
+%D we can package the for instance english text in \type
+%D {\nochinese}.
\def\nochinese#1%
{\unskip\unskip\unskip
@@ -901,41 +1048,79 @@
\hskip\chinesesurroundskip
\ignorespaces}
-%D Now it's time for some real Chinese. This example
-%D also shows that font switching is supported.
-%D
+%D \macros
+%D {chisize}
+%D
+%D Chinese font sizes are specified in a different way,
+%D using positive and negative numbers:
+
+\def\chisize#1%
+ {\ifnum#11<0 % a trick to catch -0
+ \ifcase#1\space36\or24\or18\or15\or12\or9\or\else6.5\fi
+ \else
+ \ifcase#1\space42\or26\or22\or16\or14\or10.5\or7.5\or5.5\else5\fi
+ \fi pt}
+
+%D So:
+%D
+%D \startbuffer
+%D [\chisize{-1}] [\chisize{7}] [\chisize{+4}]
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D gives:
+%D
+%D \getbuffer
+%D
+%D The full range of sizes is:
+%D
+%D \starttabulatie[|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|]
+%D \NC 8 \NC 7 \NC -6 \NC 6 \NC
+%D -5 \NC 5 \NC -4 \NC 4 \NC
+%D -3 \NC 3 \NC -2 \NC 2 \NC
+%D -1 \NC 1 \NC -0 \NC 0 \NC\NR
+%D \NC\chisize {8}\NC\chisize{7}\NC\chisize{-6}\NC\chisize{6}\NC
+%D \chisize{-5}\NC\chisize{5}\NC\chisize{-4}\NC\chisize{4}\NC
+%D \chisize{-3}\NC\chisize{3}\NC\chisize{-2}\NC\chisize{2}\NC
+%D \chisize{-1}\NC\chisize{1}\NC\chisize{-0}\NC\chisize{0}\NC\NR
+%D \stoptabulatie
+
+%D Now it's time for some real Chinese. This example
+%D also shows that font switching is supported.
+%D
%D \startsmaller
-%D \regelmidden{\tfd Ë®µ÷¸èÍ·}
+%D \regelmidden{\tfd Ë®µ÷¸èÍ·}
%D \blanko
-%D \regelmidden{\tfb ±û³½ÖÐÇ»¶Òû´ïµ©£¬´ó×í×÷´Ëƪ£¬¼æ»³×ÓÓÉ¡£}
+%D \regelmidden{\tfb ±û³½ÖÐÇ»¶Òû´ïµ©£¬´ó×í×÷´Ëƪ£¬¼æ»³×ÓÓÉ¡£}
%D \blanko
-%D \regelmidden{\tfb ËÕéø}
+%D \regelmidden{\tfb ËÕéø}
%D \blanko
%D Ã÷Ô¼¸Ê±ÓУ¿°Ñ¾ÆÎÊÇàÌì¡£²»ÖªÌìÉϹ¬ãÚ£¬½ñϦÊǺÎÄꣿÎÒÓû³Ë·ç¹éÈ¥
-%D £¬ÓÖ¿ÖÇíÂ¥ÓñÓ¸ß´¦²»Ê¤º®¡£ÆðÎèŪÇåÓ°£¬ºÎËÆÔÚÈ˼䣿
+%D £¬ÓÖ¿ÖÇíÂ¥ÓñÓ¸ß´¦²»Ê¤º®¡£ÆðÎèŪÇåÓ°£¬ºÎËÆÔÚÈ˼䣿
%D \blanko
%D תÖì¸ó£¬µÍ»§£¬ÕÕÎÞÃß¡£²»Ó¦Óкޣ¬ºÎÊÂÆ«Ïò±ðʱԲ£¿ÈËÓб¯»¶ÀëºÏ£¬
%D ÔÂÓÐÒõÇçԲȱ£¬´ËʹÅÄÑÈ«¡£µ«Ô¸È˳¤¾Ã£¬Ç§Àﹲ濾ꡣ
%D \stopsmaller
-%D
-%D The english translation is:
-%D
+%D
+%D The english translation is:
+%D
%D \startsmaller
-%D \regelmidden{\tfd Tune: Prelude to the Melody of Water}
-%D \blanko
+%D \regelmidden{\tfd Tune: Prelude to the Melody of Water}
+%D \blanko
%D \regelmidden{\tfb On the night of the Mid||Autumn Festival of
%D 1076, I drank happily till dawn and wrote this in my cups
-%D while thinking of Zi||you.}
-%D \blanko
-%D \regelmidden{\tfb Su Shi}
+%D while thinking of Zi||you.}
+%D \blanko
+%D \regelmidden{\tfb Su Shi}
%D \blanko
%D How long will the bright moon appear? Wine||cup in hand, I
%D ask the sky. I do not know waht time of year it would be
%D tonight in the palace on high. Riding the wind, there I
%D would fly, yet I fear the crystal palace would be far too
%D high and cold for me. I rise and dance, with my shadow I
-%D play. On high as on earth, would it be as gay?
-%D \blanko
+%D play. On high as on earth, would it be as gay?
+%D \blanko
%D The moon goes round the mansion red though gauze||draped
%D windows soft to shed her light upon the sleepless bed.
%D Against man she should have no spite. Why then when people
@@ -944,7 +1129,7 @@
%D may wax or wane. There has been nothing perfect since the
%D olden days. So let us wish that man will live long as he
%D can! Though miles apart, we'll share the beauty she
-%D displays.
+%D displays.
%D \stopsmaller
%D This package is written in the city of Hasselt, a pretty
@@ -955,6 +1140,10 @@
%D be the same, since now I can at least pretend to know the
%D glyphs all around the place. The numbers should pose me no
%D problems, but I fear I will never manage to recognize those
-%D scribles they draw on their pads when thay take your order.
+%D scribles they draw on their pads when thay take your order.
+
+%D To make our lives more easy, we put it here (too):
+
+\setuptyping[\c!tab=\v!nee]
\protect \endinput
diff --git a/tex/context/base/font-fil.tex b/tex/context/base/font-fil.tex
index 9daebf9fc..7c0b656e6 100644
--- a/tex/context/base/font-fil.tex
+++ b/tex/context/base/font-fil.tex
@@ -55,6 +55,11 @@
\definefontsynonym [Times-Bold] [tib] [encoding=texnansi]
\definefontsynonym [Times-BoldItalic] [tibi] [encoding=texnansi]
+\definefontsynonym [Times-MathRoman] [tir] [encoding=texnansi]
+\definefontsynonym [Times-MathExtension] [mtex]
+\definefontsynonym [Times-MathItalic] [mtmi]
+\definefontsynonym [Times-MathSymbol] [mtsy]
+
\definefontsynonym [LucidaBlackletter] [lbl] [encoding=texnansi]
\definefontsynonym [LucidaBright] [lbr] [encoding=texnansi]
\definefontsynonym [LucidaBright-Demi] [lbd] [encoding=texnansi]
diff --git a/tex/context/base/font-ini.tex b/tex/context/base/font-ini.tex
index 258c60125..e00701367 100644
--- a/tex/context/base/font-ini.tex
+++ b/tex/context/base/font-ini.tex
@@ -71,6 +71,34 @@
10: neznamy font --
\stopmessages
+\startmessages italian library: fonts
+ title: font del corpo
+ 1: codifica --
+ 2: variante -- caricata
+ 3: variante sconosciuta --
+ 4: corpo del testo -- non definito
+ 5: stile -- non definito
+ 6: -- caricato
+ 7: formato sconosciuto --
+ 8: stile -- definito
+ 9: mappatura -- caricata
+ 10: file di font sconosciuto --
+\stopmessages
+
+\startmessages norwegian library: fonts
+ title: hovedfont
+ 1: koding --
+ 2: variant -- er lest inn
+ 3: ukjent variant --
+ 4: hovedfont -- er ikke definert
+ 5: stil -- er ikke definert
+ 6: -- er lest inn
+ 7: ukjent format --
+ 8: stil -- definert
+ 9: avbildning -- er lest inn
+ 10: ukjent fontfil --
+\stopmessages
+
%D This module is one of the oldest modules of \CONTEXT. The
%D macros below evolved out of the \PLAIN\ \TEX\ macros and
%D therefore use a similar naming scheme (\type{\rm},
@@ -535,16 +563,16 @@
%D families for {\ss sans serif} and \type{teletype} we use the
%D more general \type{\tffam}, which stands for typeface.
-\newfam\bsfam % 8 (ConTeXt) BoldSlanted
-\newfam\bifam % 9 (ConTeXt) BoldItalic
-\newfam\scfam % A (ConTeXt) SmallCaps
-\newfam\tffam % B (ConTeXt) TypeFace
+\chardef\bsfam=8 % \newfam\bsfam % 8 (ConTeXt) BoldSlanted
+\chardef\bifam=9 % \newfam\bifam % 9 (ConTeXt) BoldItalic
+\chardef\scfam=10 % \newfam\scfam % A (ConTeXt) SmallCaps
+\chardef\tffam=11 % \newfam\tffam % B (ConTeXt) TypeFace
%D Because Taco needs a few more math families, we reuse
%D family~7 for all those typefaces that have no related
%D family, and therefore are grouped into one.
-\let\nnfam\ttfam % 7 (ReUsed) NoName
+\chardef\nnfam=7 % \let\nnfam\ttfam % 7 (ReUsed) NoName
%D Normally \type{\mrfam} equals \type{\tffam}, but a more
%D distinctive alternatives are possible, for instance the
@@ -555,13 +583,21 @@
%D needed for the \AMS\ Symbol Fonts and Extended Lucida
%D Bright.
-\newfam\mafam % C (ConTeXt) Math A Fam (AmsTeX A)
-\newfam\mbfam % D (ConTeXt) Math B Fam (AmsTeX B)
-\newfam\mcfam % E (ConTeXt) Math C Fam
+\chardef\mafam=12 % \newfam\mafam % C (ConTeXt) Math A Fam (AmsTeX A)
+\chardef\mbfam=13 % \newfam\mbfam % D (ConTeXt) Math B Fam (AmsTeX B)
+\chardef\mcfam=14 % \newfam\mcfam % E (ConTeXt) Math C Fam
+\chardef\mdfam=15 % \newfam\mdfam % F (ConTeXt) Math D Fam (MathTime)
%D Because there are 16~families and because \type{\ttfam}
-%D is reused, at the moment we have one families left:~F.
-%D
+%D is reused, at the moment we have no so many families
+%D left. By default, we map any newly defined family on the
+%D last one (F).
+
+\def\newfam#1{\chardef#1=15 }
+
+%D This hack is also needed because in \ETEX\ we are going
+%D to reuse the \type {\newfam} allocation counter.
+
%D To ease the support of font packages, we als define
%D shortcuts to these familynames. This is necessary because
%D the family names are in fact \type{\chardef}'s, which means
@@ -572,7 +608,7 @@
\def\hexnumber#1%
{\ifcase#1 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or
- 8\or 9\or A\or B\or C\or D\or E\or F\fi}
+ 8\or 9\or A\or B\or C\or D\or E\or F\else 0\fi}
\edef\hexmrfam {\hexnumber\mrfam} \edef\hexbsfam {\hexnumber\bsfam}
\edef\hexmifam {\hexnumber\mifam} \edef\hexbifam {\hexnumber\bifam}
@@ -581,8 +617,7 @@
\edef\hexitfam {\hexnumber\itfam} \edef\hexmafam {\hexnumber\mafam}
\edef\hexslfam {\hexnumber\slfam} \edef\hexmbfam {\hexnumber\mbfam}
\edef\hexbffam {\hexnumber\bffam} \edef\hexmcfam {\hexnumber\mcfam}
-
-\edef\hexnnfam {\hexnumber\nnfam}
+\edef\hexnnfam {\hexnumber\nnfam} \edef\hexmdfam {\hexnumber\mdfam}
%D \macros
%D {lchexnumber,uchexnumber,lchexnumbers}
@@ -593,7 +628,7 @@
\def\lchexnumber#1%
{\ifcase#1 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or
- 8\or 9\or a\or b\or c\or d\or e\or f\fi}
+ 8\or 9\or a\or b\or c\or d\or e\or f\else 0\fi}
\let\uchexnumber=\hexnumber
@@ -705,73 +740,135 @@
%D These macros enable the use of definitions like \type{sa
%D \magfactor3} which saves us both (mis|)|calculations and
%D potential mistypings.
-%D
-%D Because \type{sa} is not a \TEX\ supported alternative, we
-%D have to test for it ourselves. In doing so, we need an
-%D auxiliary \DIMENSION. We cannot use \type{\scratchdimen}
-%D because font loading can happen at any moment due to
-%D postponed loading. We could instead have used dirty grouping
-%D tricks, but this one works too.
+%D
+%D Because \type {sa} (scaled at) and \type {mo} (mapped on)
+%D are not low level \TEX\ supported alternatives, we have to
+%D test for it ourselves. In doing so, we need an auxiliary
+%D \DIMENSION. We cannot use \type{\scratchdimen} because font
+%D loading can happen at any moment due to postponed loading.
+%D We could instead have used dirty grouping tricks, but this
+%D one works too.
+
+%%% \newdimen\scaledfont
+%%%
+%%% REPLACED
+%%%
+%%% % \def\docalculatefont#1 sa #2sa#3*#4*#5*% The spaces are needed!
+%%% % {\edef\fontscale{#2}%
+%%% % \ifx\fontscale\empty
+%%% % \expandafter\font\csname#4#5\endcsname=#1\relax
+%%% % \else
+%%% % \scaledfont=#4\relax
+%%% % \expandafter\font\csname#4#5\endcsname=#1 at \fontscale\scaledfont\relax
+%%% % \fi}
+%%%
+%%% \def\splitfontdefinition#1 #2 #3 #4\end%
+%%% {\def\somefontname{#1}%
+%%% \doifelse{#2}{*}
+%%% {\let\somefontspec=\empty}
+%%% {\def\somefontspec{ #2 #3}}}
+%%%
+%%% % \def\docalculatefont#1 sa #2sa#3*#4*#5*% The spaces are needed!
+%%% % {\edef\fontscale{#2}%
+%%% % \expandafter\splitfontdefinition#1 * * \end
+%%% % \ifx\fontscale\empty \else
+%%% % \scaledfont=#4\relax
+%%% % \def\somefontspec{ at \fontscale\scaledfont}%
+%%% % \fi
+%%% % \expandafter\font\csname#4#5\endcsname=
+%%% % \truefilename{\somefontname}\somefontspec\relax}
+%%%
+%%% %D We also accept \type{sa a}||\type{sa d} as specification.
+%%%
+%%% \def\checkfontscale#1#2\end% should be optimized
+%%% {\doifnumberelse{#1}{}
+%%% {\doifdefinedelse{\??ft\s!default#1}
+%%% {\edef\fontscale{\getvalue{\??ft\s!default#1}}}
+%%% {\edef\fontscale{1}}}}
+%%%
+%%% % \def\docalculatefont#1 sa #2sa#3*#4*#5*% The spaces are needed!
+%%% % {\edef\fontscale{#2}%
+%%% % \expandafter\splitfontdefinition#1 * * \end
+%%% % \ifx\fontscale\empty \else
+%%% % \expandafter\checkfontscale#2 \end % #2 can be "a " (space!)
+%%% % \scaledfont=#4\relax
+%%% % \def\somefontspec{ at \fontscale\scaledfont}%
+%%% % \fi
+%%% % \expandafter\font\csname#4#5\endcsname=
+%%% % \truefilename{\somefontname}\somefontspec\relax}
+%%%
+%%% \def\defaultfontfile{cmtt10}
+%%% \edef\nullfontname {\fontname\nullfont}
+%%% \edef\dummyfontname {font\strippedcsname\\}
+%%%
+%%% \def\docalculatefont#1 sa #2sa#3*#4*#5*% The spaces are needed!
+%%% {\edef\fontscale{#2}%
+%%% \expandafter\splitfontdefinition#1 * * \end
+%%% \ifx\fontscale\empty \else
+%%% \expandafter\checkfontscale#2 \end % #2 can be "a " (space!)
+%%% \scaledfont=#4\relax
+%%% \def\somefontspec{ at \fontscale\scaledfont}%
+%%% \fi
+%%% \edef\fontfile{\truefontname\somefontname}%
+%%% \ifx\fontfile\s!unknown
+%%% \let\fontfile\defaultfontfile
+%%% \else
+%%% \edef\fontdata{\truefontdata\somefontname}%
+%%% \ifx\fontdata\empty \else
+%%% %\@EA\getparameters\@EA[\@EA\fontfile\@EA]\@EA[\fontdata]%
+%%% \@EA\rawgetparameters\@EA[\@EA\fontfile\@EA]\@EA[\fontdata]%
+%%% \fi
+%%% \fi
+%%% % faster
+%%% %\expandafter\font\csname#4#5\endcsname\fontfile\somefontspec\relax
+%%% % nicer
+%%% \edef\lastfontname{\fontfile\somefontspec}%
+%%% \expandafter\font\csname#4#5\endcsname\lastfontname
+%%% \expandafter\font\csname\dummyfontname\endcsname\lastfontname\relax}
+%%% % safer but sometimes introducing newlines in the log
+%%% %\batchmode
+%%% %\font\lastloadedfont\fontfile\somefontspec\relax
+%%% %\errorstopmode
+%%% %\edef\lastfontname{\fontname\lastloadedfont}%
+%%% %\ifx\lastfontname\nullfontname
+%%% % \showmessage{\m!fonts}{10}{\fontfile}%
+%%% % \expandafter\font\csname#4#5\endcsname=\defaultfontfile\somefontspec\relax
+%%% %\else
+%%% % \expandafter\let\csname#4#5\endcsname\lastloadedfont
+%%% %\fi}
\newdimen\scaledfont
-% \def\docalculatefont#1 sa #2sa#3*#4*#5*% The spaces are needed!
-% {\edef\fontscale{#2}%
-% \ifx\fontscale\empty
-% \expandafter\font\csname#4#5\endcsname=#1\relax
-% \else
-% \scaledfont=#4\relax
-% \expandafter\font\csname#4#5\endcsname=#1 at \fontscale\scaledfont\relax
-% \fi}
-
-\def\splitfontdefinition#1 #2 #3 #4\end%
- {\def\somefontname{#1}%
- \doifelse{#2}{*}
- {\let\somefontspec=\empty}
- {\def\somefontspec{ #2 #3}}}
-
-% \def\docalculatefont#1 sa #2sa#3*#4*#5*% The spaces are needed!
-% {\edef\fontscale{#2}%
-% \expandafter\splitfontdefinition#1 * * \end
-% \ifx\fontscale\empty \else
-% \scaledfont=#4\relax
-% \def\somefontspec{ at \fontscale\scaledfont}%
-% \fi
-% \expandafter\font\csname#4#5\endcsname=
-% \truefilename{\somefontname}\somefontspec\relax}
+\def\parsefontspec[#1]%
+ {\edef\somefontspec{#1}%
+ \@EA\@EA\@EA\doparsefontspec\@EA\somefontspec\space\relax]}
-%D We also accept \type{sa a}||\type{sa d} as specification.
-
-\def\checkfontscale#1#2\end%
- {\doifnumberelse{#1}{}
- {\doifdefinedelse{\??ft\s!default#1}
- {\edef\fontscale{\getvalue{\??ft\s!default#1}}}
- {\edef\fontscale{1}}}}
-
-% \def\docalculatefont#1 sa #2sa#3*#4*#5*% The spaces are needed!
-% {\edef\fontscale{#2}%
-% \expandafter\splitfontdefinition#1 * * \end
-% \ifx\fontscale\empty \else
-% \expandafter\checkfontscale#2 \end % #2 can be "a " (space!)
-% \scaledfont=#4\relax
-% \def\somefontspec{ at \fontscale\scaledfont}%
-% \fi
-% \expandafter\font\csname#4#5\endcsname=
-% \truefilename{\somefontname}\somefontspec\relax}
-
-\def\defaultfontfile{cmtt10}
-\edef\nullfontname {\fontname\nullfont}
-\edef\dummyfontname {font\strippedcsname\\}
-
-\def\docalculatefont#1 sa #2sa#3*#4*#5*% The spaces are needed!
- {\edef\fontscale{#2}%
- \expandafter\splitfontdefinition#1 * * \end
- \ifx\fontscale\empty \else
- \expandafter\checkfontscale#2 \end % #2 can be "a " (space!)
- \scaledfont=#4\relax
+\def\doparsefontspec#1 #2#3]#4#5%
+ {\ifx#2\relax
+ \let\somefontname\somefontspec
+ \let\somefontspec\empty
+ \donoparsefontspec{#5}%
+ \else
+ \@EA\dodoparsefontspec\@EA[\somefontspec]{#4}{#5}%
+ \fi}
+
+\def\dodoparsefontspec[#1 #2#3#4]#5#6% [spec]{sa/mo size}{name}
+ {\edef\somefontname{#1}%
+ \edef\fontscale%
+ {\ifx#2s\ifx#3a#4\fi\else % sa = scaled at
+ \ifx#2m\ifx#3o#4\fi\fi\fi}% mo = mapped on
+ \ifx\fontscale\empty
+ \edef\somefontspec{ #2#3#4}%
+ \else
+ \expandafter\checkfontscale\fontscale\end
+ \scaledfont=#5\relax
+ \ifx#2m\setmappedfontsize\scaledfont\fi
\def\somefontspec{ at \fontscale\scaledfont}%
\fi
- \edef\fontfile{\truefontname\somefontname}%
+ \donoparsefontspec{#6}}
+
+\def\donoparsefontspec#1%
+ {\edef\fontfile{\truefontname\somefontname}%
\ifx\fontfile\s!unknown
\let\fontfile\defaultfontfile
\else
@@ -781,23 +878,37 @@
\@EA\rawgetparameters\@EA[\@EA\fontfile\@EA]\@EA[\fontdata]%
\fi
\fi
- % faster
- %\expandafter\font\csname#4#5\endcsname\fontfile\somefontspec\relax
- % nicer
- \edef\lastfontname{\fontfile\somefontspec}%
- \expandafter\font\csname#4#5\endcsname\lastfontname
- \expandafter\font\csname\dummyfontname\endcsname\lastfontname\relax}
- % safer but sometimes introducing newlines in the log
- %\batchmode
- %\font\lastloadedfont\fontfile\somefontspec\relax
- %\errorstopmode
- %\edef\lastfontname{\fontname\lastloadedfont}%
- %\ifx\lastfontname\nullfontname
- % \showmessage{\m!fonts}{10}{\fontfile}%
- % \expandafter\font\csname#4#5\endcsname=\defaultfontfile\somefontspec\relax
- %\else
- % \expandafter\let\csname#4#5\endcsname\lastloadedfont
- %\fi}
+ \edef\lastfontname{\fontfile\somefontspec}% not really needed
+ \expandafter\font\csname#1\endcsname\lastfontname
+ % the second \font definition prevents fuzzy font refs
+ % \expandafter\font\csname\dummyfontname\endcsname\lastfontname
+ % but somehow they changed tex so that it does not matter any more
+ \relax}
+
+\def\defaultfontfile{cmtt10}
+\edef\nullfontname {\fontname\nullfont}
+\edef\dummyfontname {font\strippedcsname\\}
+
+% safer but sometimes introducing newlines in the log
+%
+% \batchmode
+% \font\lastloadedfont\fontfile\somefontspec\relax
+% \errorstopmode
+% \edef\lastfontname{\fontname\lastloadedfont}%
+% \ifx\lastfontname\nullfontname
+% \showmessage{\m!fonts}{10}{\fontfile}%
+% \expandafter\font\csname#1\endcsname=\defaultfontfile\somefontspec\relax
+% \else
+% \expandafter\let\csname#1\endcsname\lastloadedfont
+% \fi
+
+%D We also accept \type{sa a}||\type{sa d} as specification.
+
+\def\checkfontscale#1#2\end% should be optimized
+ {\doifnumberelse{#1}{}
+ {\doifdefinedelse{\??ft\s!default#1}
+ {\edef\fontscale{\getvalue{\??ft\s!default#1}}}
+ {\edef\fontscale{1}}}}
%D The duplicate font definition, using the ever the same dummy
%D font name, results in less fuzzy error messages. In the log
@@ -878,9 +989,10 @@
%D one for local use:
%D
%D \starttypen
-%D \definefont[Some][LucidaBright at 100pt] \Some some text
-%D \definefont[More][LucidaBright scaled 3000] \More more text
-%D \definefont[Last][LucidaBright sa 5.4] \Last last text
+%D \definefont[Some][LucidaBright at 100pt] \Some some
+%D \definefont[More][LucidaBright scaled 3000] \More more
+%D \definefont[Nice][LucidaBright mp 2] \Nice nice
+%D \definefont[Text][LucidaBright sa 5.4] \Text last
%D \stoptypen
%D
%D The implementation one looks familiar:
@@ -888,26 +1000,40 @@
\def\definefont%
{\dodoubleargument\dodefinefont}
-% \def\dodefinefont[#1][#2]%
-% {\unexpanded\setvalue{#1}{\dododefinefont{#1}#2 sa sa*}}
-%
-% A more friendly version, which defaults to \type {sa 1} is:
+%%% REPLACED
+%%%
+%%% \def\dodefinefont[#1][#2]%
+%%% {\doifinstringelse{ }{#2}
+%%% {\unexpanded\setvalue{#1}{\dododefinefont{#1}#2 sa sa*}}
+%%% {\dodefinefont[#1][#2 sa 1]}}
+%%%
+%%% \def\dododefinefont#1#2sa #3sa#4*%
+%%% {\edef\fontscale{#3}%
+%%% \expandafter\splitfontdefinition#2 * * \end
+%%% \ifx\fontscale\empty\else % new 2000/8/31
+%%% \expandafter\checkfontscale#3 \end
+%%% \fi
+%%% \expandafter\font\csname#1\endcsname=\truefontname\somefontname
+%%% \ifx\fontscale\empty
+%%% \somefontspec
+%%% \else
+%%% \space at \fontscale\bodyfontsize
+%%% \fi
+%%% \getvalue{#1}}
\def\dodefinefont[#1][#2]%
{\doifinstringelse{ }{#2}
- {\unexpanded\setvalue{#1}{\dododefinefont{#1}#2 sa sa*}}
+ {\unexpanded\setvalue{#1}{\dododefinefont{#1}{#2}}}
{\dodefinefont[#1][#2 sa 1]}}
-\def\dododefinefont#1#2sa #3sa#4*%
- {\edef\fontscale{#3}%
- \expandafter\splitfontdefinition#2 * * \end
- \expandafter\font\csname#1\endcsname=\truefontname\somefontname
- \ifx\fontscale\empty
- \somefontspec
- \else
- \space at \fontscale\bodyfontsize
- \fi
- \getvalue{#1}}
+%D The * makes the switch local, so that we can redefine a
+%D logical name and/or change the size in between.
+
+% \def\dododefinefont#1#2%
+% {\parsefontspec[#2]{\bodyfontsize}{#1}\getvalue{#1}}
+
+\def\dododefinefont#1#2%
+ {\parsefontspec[#2]{\bodyfontsize}{*#1*}\getvalue{*#1*}}
%D I considered checking for mistakenly use of \PLAIN's
%D \type{\magstep}'s but although it would take only a few
@@ -919,11 +1045,54 @@
%D \definebodyfont [12pt] [rm] [hyphenchar=45]
%D \stoptypen
+%%% REPLACED
+%%%
+%%% \beginTEX
+%%%
+%%% \def\dodoloadfont#1#2#3#4%
+%%% {\edef\calculatedfont{\csname\??ft#1#2#3\endcsname\space}%
+%%% \expandafter\docalculatefont\calculatedfont sa sa*#1*#2#3*%
+%%% \@EA\hyphenchar\csname#1#2#3\endcsname=
+%%% \@EA\ifx\csname\??ft#1#2\s!hyphenchar\endcsname\relax
+%%% #4%
+%%% \else
+%%% \csname\??ft#1#2\s!hyphenchar\endcsname
+%%% \fi\relax
+%%% \csname#1#2#3\endcsname}
+%%%
+%%% \endTEX
+%%%
+%%% \beginETEX \ifcsname
+%%%
+%%% \def\dodoloadfont#1#2#3#4%
+%%% {\edef\calculatedfont{\csname\??ft#1#2#3\endcsname\space}%
+%%% \expandafter\docalculatefont\calculatedfont sa sa*#1*#2#3*%
+%%% \@EA\hyphenchar\csname#1#2#3\endcsname=
+%%% \ifcsname\??ft#1#2\s!hyphenchar\endcsname
+%%% \csname\??ft#1#2\s!hyphenchar\endcsname
+%%% \else
+%%% #4%
+%%% \fi\relax
+%%% \csname#1#2#3\endcsname}
+%%%
+%%% \endETEX
+
+%D The loading macro is used in two macros. One of them takes
+%D care of fixed width teletype fonts.
+
+\def\doloadfont#1#2#3%
+ {%\debuggerinfo{\m!fonts}{loaded #1#2#3}%
+ \dodoloadfont{#1}{#2}{#3}{45}}
+
+\def\doloadttfont#1#2#3%
+ {%\debuggerinfo{\m!fonts}{loaded fixed #1#2#3}%
+ \dodoloadfont{#1}{#2}{#3}{-1}}
+
\beginTEX
\def\dodoloadfont#1#2#3#4%
- {\edef\calculatedfont{\csname\??ft#1#2#3\endcsname\space}%
- \expandafter\docalculatefont\calculatedfont sa sa*#1*#2#3*%
+ {\edef\calculatedfont{[\csname\??ft#1#2#3\endcsname]}%
+ \@EA\parsefontspec\calculatedfont{#1}{#1#2#3}%
\@EA\hyphenchar\csname#1#2#3\endcsname=
\@EA\ifx\csname\??ft#1#2\s!hyphenchar\endcsname\relax
#4%
@@ -937,8 +1106,8 @@
\beginETEX \ifcsname
\def\dodoloadfont#1#2#3#4%
- {\edef\calculatedfont{\csname\??ft#1#2#3\endcsname\space}%
- \expandafter\docalculatefont\calculatedfont sa sa*#1*#2#3*%
+ {\edef\calculatedfont{[\csname\??ft#1#2#3\endcsname]}%
+ \@EA\parsefontspec\calculatedfont{#1}{#1#2#3}%
\@EA\hyphenchar\csname#1#2#3\endcsname=
\ifcsname\??ft#1#2\s!hyphenchar\endcsname
\csname\??ft#1#2\s!hyphenchar\endcsname
@@ -949,16 +1118,58 @@
\endETEX
-%D The loading macro is used in two macros. One of them takes
-%D care of fixed width teletype fonts.
+%D \macros
+%D {mapfontsize}
+%D
+%D For special purposes, like in math, you may want to use
+%D slightly different sizes than the ones given. This happens
+%D for instance with the Math Times fonts. Mapped font sizes
+%D can be specified by using the \type {mo} key instead of
+%D \type {sa} in font definitions.
+%D
+%D \startbuffer
+%D \mapfontsize[10pt][11pt]
+%D \mapfontsize[11pt][12pt]
+%D \mapfontsize[12pt][13pt]
+%D
+%D \definefont[test][Serif]\test TEST \par
+%D \definefont[test][Serif sa 5]\test TEST \par
+%D \definefont[test][Serif mo 5]\test TEST \par
+%D \definefont[test][Serif sa d]\test TEST \par
+%D \definefont[test][Serif at 60pt]\test TEST \par
+%D \definefont[test][Serif scaled 6000]\test TEST \par
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D \startopelkaar
+%D \haalbuffer
+%D \stopopelkaar
-\def\doloadfont#1#2#3%
- {%\debuggerinfo{\m!fonts}{loaded #1#2#3}%
- \dodoloadfont{#1}{#2}{#3}{45}}
+\def\mapfontsize%
+ {\dodoubleargument\domapfontsize}
-\def\doloadttfont#1#2#3%
- {%\debuggerinfo{\m!fonts}{loaded fixed #1#2#3}%
- \dodoloadfont{#1}{#2}{#3}{-1}}
+\def\domapfontsize[#1][#2]%
+ {\scratchdimen#1\relax % \relax is really needed here
+ \setvalue{\??ft*\the\scratchdimen}{#2}}
+
+\beginTEX
+
+\def\setmappedfontsize#1%
+ {\expandafter\ifx\csname\??ft*\the#1\endcsname\relax\else
+ #1=\csname\??ft*\the#1\endcsname
+ \fi}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\def\setmappedfontsize#1%
+ {\ifcsname\??ft*\the#1\endcsname
+ #1=\csname\??ft*\the#1\endcsname
+ \fi}
+
+\endETEX
%D \macros
%D {getfontname}
@@ -1340,7 +1551,6 @@
%D These macros show that quite some definitions take place.
%D Fonts are not loaded yet! This means that at format
%D generation time, no font files are preloaded.
-%D
% %D We could have use \type{\unexpanded\setvalue} instead of
% %D the \type{\donottest} prefixes. However, this would lead to
@@ -1479,7 +1689,7 @@
%D All things related to fonts are grouped into files with
%D names like \type{font-cmr}. These files are loaded by:
-\def\resetfontdefinitionfile#1%
+\def\resetfontdefinitionfile[#1]%
{\letbeundefined{\c!file\f!fontprefix#1}}
\def\doreadfontdefinitionfile#1%
@@ -2140,7 +2350,6 @@
\def\dosettypeface#1#2%
{\doifdefinedelse{@\normalizedbodyfontsize#1#2@} % the definition bound one
-% {\edef\characterencoding{\getvalue{@\normalizedbodyfontsize#1#2@}}}
{\enablecoding[\getvalue{@\normalizedbodyfontsize#1#2@}]}
{\enablecoding[\s!default]}%
\edef\fontalternative{#2}%
@@ -2153,6 +2362,8 @@
{\expandafter\fam\getvalue{\c!nn\s!fam}}%
\getvalue{#1#2}%
\ifcase\currentxfontsize\or\tx\or\txx\fi
+ \doifdefined{\purefontname\font\s!handling} % the file bound one
+ {\enablehandling[\getvalue{\purefontname\font\s!handling}]}%
\doifdefined{\purefontname\font\s!encoding} % the file bound one
{\enablecoding[\getvalue{\purefontname\font\s!encoding}]}%
\doifdefinedelse{\purefontname\font\s!mapping} % the file bound one
@@ -2723,8 +2934,90 @@
% \fi
% \font\temp=\truefontname{#1} at \bodyfontsize \temp#2\relax}}
-\def\getglyph#1#2%
- {{\definefont[\s!dummy][#1 sa \currentfontscale]\dummy#2}}
+% \def\getglyph#1#2%
+% {{\definefont[\s!dummy][#1 sa \currentfontscale]\dummy#2}}
+
+\def\fontstringA%
+ {\ifx\fontstyle\c!rm \s!Serif \else
+ \ifx\fontstyle\c!ss \s!Sans \else
+ \ifx\fontstyle\c!tt \s!Mono \else
+ \s!Serif \fi\fi\fi}
+
+\def\fontstringB%
+ {\ifx\fontstyle\c!rm \s!Regular \else
+ \ifx\fontstyle\c!ss \s!Support \else
+ \ifx\fontstyle\c!tt \s!Type \else
+ \s!Serif \fi\fi\fi}
+
+\def\fontstringC%
+ {\ifnum\fam=\bffam \s!Bold \else
+ \ifnum\fam=\slfam \s!Slanted \else
+ \ifnum\fam=\itfam \s!Italic \else
+ \ifnum\fam=\bsfam \s!BoldSlanted \else
+ \ifnum\fam=\bifam \s!BoldItalic \s!Regular \fi\fi\fi\fi\fi}
+
+\beginETEX \ifcsname
+
+\def\glyphfontfile#1%
+ {#1%
+ \ifcsname\??ff#1\fontstringA\fontstringC\endcsname
+ \fontstringA\fontstringC
+ \else\ifcsname\??ff#1\fontstringB\fontstringC\endcsname
+ \fontstringB\fontstringC
+ \else\ifcsname\??ff#1\fontstringA\endcsname
+ \fontstringA
+ \else\ifcsname\??ff#1\fontstringB\endcsname
+ \fontstringB
+ \else\ifcsname\??ff#1\fontstringC\endcsname
+ \fontstringC
+ \fi\fi\fi\fi\fi}
+
+\endETEX
+
+\beginTEX \ifcsname
+
+\def\glyphfontfile#1%
+ {#1%
+ \expandafter\ifx\csname\??ff#1\fontstringA\fontstringC\endcsname\relax
+ \expandafter\ifx\csname\??ff#1\fontstringB\fontstringC\endcsname\relax
+ \expandafter\ifx\csname\??ff#1\fontstringA\endcsname\relax
+ \expandafter\ifx\csname\??ff#1\fontstringB\endcsname\relax
+ \expandafter\ifx\csname\??ff#1\fontstringC\endcsname\relax
+ \else \fontstringC \fi
+ \else \fontstringB \fi
+ \else \fontstringA \fi
+ \else \fontstringB\fontstringC \fi
+ \else \fontstringA\fontstringC \fi}
+
+\endTEX
+
+\def\getglyph#1#2%
+ {{\definefont[\s!dummy][\glyphfontfile{#1} sa \currentfontscale]\dummy#2}}
+
+%D The last implementation of \type {\getglyph} permits
+%D definitions like:
+%D
+%D \starttypen
+%D \definefontsynonym [EuroSans] [eurose]
+%D \definefontsynonym [EuroSansBold] [euroseb]
+%D \definefontsynonym [EuroSansItalic] [eurosei]
+%D \definefontsynonym [EuroSansSlanted] [eurosei]
+%D \definefontsynonym [EuroSansBoldItalic] [eurosebi]
+%D \definefontsynonym [EuroSansBoldSlanted] [eurosebi]
+%D
+%D \definesymbol [euro] [\getglyph{Euro}{\char160}]
+%D
+%D \def\euro{\symbol[euro]}
+%D \stoptypen
+%D
+%D These definitions guarantee that the next calls work okay:
+%D
+%D \starttypen
+%D \ss \tf\euro \bf\euro \sla\euro \itd\euro \bs\euro \bic\euro
+%D \stoptypen
+%D
+%D The shape as well as the size is adapted to the current
+%D environment.
%D Fonts can only be used when loaded. In \CONTEXT\ we
%D postpone the loading of fonts, even when we load \PLAIN.
@@ -2774,7 +3067,7 @@
%D
%D We are going to redefine \type{\ss} but for those wo still
%D want to have access to the german \SS, we save it's value in
-%D \type{\SS}. Ok, I should have used \type{\sf} insead of
+%D \type{\SS}. Ok, I should have used \type{\sf} instead of
%D \type{\ss} in the first place.
\ifx\undefined\SS \let\SS=\ss \fi
diff --git a/tex/context/base/font-uni.tex b/tex/context/base/font-uni.tex
index 800a45235..2c0e2a690 100644
--- a/tex/context/base/font-uni.tex
+++ b/tex/context/base/font-uni.tex
@@ -37,6 +37,14 @@
21: Verwenden von (pdf)eTeX ist sicherer
\stopmessages
+\startmessages italian library: fonts
+ 21: l'uso di (pdf)eTeX è più sicuro
+\stopmessages
+
+\startmessages norwegian library: fonts
+ 21: å bruke (pdf)eTeX er tryggere
+\stopmessages
+
\unprotect
%D \macros
@@ -391,7 +399,7 @@
\definefontsynonym[#2\s!Italic] [#2\s!Regular]%
\definefontsynonym[#2\s!BoldSlanted][#2\s!Slanted]%
\definefontsynonym[#2\s!BoldItalic] [#2\s!Italic]}%
- \setvalue{#1}{\enableunicodefont{#1}}}}
+ \unexpanded\setvalue{#1}{\enableunicodefont{#1}}}}
\def\setupunicodefont%
{\dodoubleempty\dosetupunicodefont}
diff --git a/tex/context/base/java-fld.tex b/tex/context/base/java-fld.tex
index d349392e8..0ce30f8fc 100644
--- a/tex/context/base/java-fld.tex
+++ b/tex/context/base/java-fld.tex
@@ -11,6 +11,8 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
+% will be simplified, since we now parse functions
+
% nu nog alles geladen, moet dus anders
\startJSpreamble {Sanitize_TeX_Input} used later
@@ -125,7 +127,9 @@
event.value = Sanitized_TeX_String(event.value) ;
\stopJScode
-\startJSpreamble {Do_With_Field} used now
+%\startJSpreamble {Do_With_Field} used now
+
+\startJSpreamble {Field} used now
var visible_field = new Array() ; % no garbage collection !
var visible_fields = 0 ;
@@ -188,19 +192,22 @@ function Flip_Fields ( Name )
{ v.hidden = !v.hidden ;
v.value = "On" } } }
-\stopJSpreamble
+function Forget_Changes ()
+ { this.dirty = false }
-\startJScode{Hide_When_Down} Hide_When_Down() \stopJScode
-\startJScode{Hide_Field} Hide_Field(JS_S_1) \stopJScode
-\startJScode{Vide_Field} Vide_Field(JS_S_1) \stopJScode
-\startJScode{Toggle_Hide} Toggle_Hide(JS_S_1) \stopJScode
-\startJScode{Field_On} Field_On(JS_S_1) \stopJScode
-\startJScode{Field_Off} Field_Off(JS_S_1) \stopJScode
-\startJScode{Toggle_Value} Toggle_Value(JS_S_1) \stopJScode
-\startJScode{Toggle_Read} Toggle_Read(JS_S_1) \stopJScode
-\startJScode{Flip_Fields} Flip_Fields(JS_S_1) \stopJScode
+\stopJSpreamble
-\startJScode{Forget_Changes} this.dirty = false \stopJScode
+%\startJScode{Hide_When_Down} Hide_When_Down() \stopJScode
+%\startJScode{Hide_Field} Hide_Field(JS_S_1) \stopJScode
+%\startJScode{Vide_Field} Vide_Field(JS_S_1) \stopJScode
+%\startJScode{Toggle_Hide} Toggle_Hide(JS_S_1) \stopJScode
+%\startJScode{Field_On} Field_On(JS_S_1) \stopJScode
+%\startJScode{Field_Off} Field_Off(JS_S_1) \stopJScode
+%\startJScode{Toggle_Value} Toggle_Value(JS_S_1) \stopJScode
+%\startJScode{Toggle_Read} Toggle_Read(JS_S_1) \stopJScode
+%\startJScode{Flip_Fields} Flip_Fields(JS_S_1) \stopJScode
+%
+%\startJScode{Forget_Changes} this.dirty = false \stopJScode
\definereference[ForgetChanges][JS(Forget_Changes)]
@@ -219,7 +226,7 @@ function Flip_Fields ( Name )
% { v = this.getField(FieldSet+":"+1) }
% if (v)
% { v.value = "On" }
-% break }
+% break }
% i++ }
% else
% { break } } }
@@ -229,8 +236,58 @@ function Flip_Fields ( Name )
% \startJScode {Walk_Field} uses {Walk_Field}
% Walk_Field (JS_S_1) ;
% \stopJScode
+%
+% \startJSpreamble {Set_Field} used later
+%
+% function Set_Field ( FieldSet, FieldName )
+% { var i = 1 ;
+% while (true)
+% { v = this.getField(FieldSet+":"+i) ;
+% if (!v)
+% { break }
+% else if (i==FieldName)
+% { v.value = "On" }
+% else
+% { v.value = "Off" }
+% i++ } }
+%
+% \stopJSpreamble
+%
+% \startJScode {Set_Field} uses {Set_Field}
+% Set_Field (JS_S_1,JS_S_2) ;
+% \stopJScode
-\startJSpreamble {Walk_Field} used later
+\startJSpreamble {FieldStack} used later
+
+function Reset_Fields ( FieldSet )
+ { var i = 1 ;
+ while (true)
+ { v = this.getField(FieldSet+":"+i) ;
+ if (!v)
+ { break }
+ else
+ { v.value = "Off" }
+ i++ } }
+
+function Set_Fields ( FieldSet )
+ { var i = 1 ;
+ while (true)
+ { v = this.getField(FieldSet+":"+i) ;
+ if (!v)
+ { break }
+ else
+ { v.value = "On" }
+ i++ } }
+
+function Set_Field ( FieldSet, FieldName )
+ { Reset_Fields(FieldSet) ;
+ v = this.getField(FieldSet+":"+FieldName) ;
+ if (v) { v.value = "On" } }
+
+function Reset_Field ( FieldSet, FieldName )
+ { Set_Fields(FieldSet) ;
+ v = this.getField(FieldSet+":"+FieldName) ;
+ if (v) { v.value = "Off" } }
function Walk_Field ( FieldSet )
{ var i = 1 ;
@@ -252,28 +309,4 @@ function Walk_Field ( FieldSet )
\stopJSpreamble
-\startJScode {Walk_Field} uses {Walk_Field}
- Walk_Field (JS_S_1) ;
-\stopJScode
-
-\startJSpreamble {Set_Field} used later
-
-function Set_Field ( FieldSet, FieldName )
- { var i = 1 ;
- while (true)
- { v = this.getField(FieldSet+":"+i) ;
- if (!v)
- { break }
- else if (i==FieldName)
- { v.value = "On" }
- else
- { v.value = "Off" }
- i++ } }
-
-\stopJSpreamble
-
-\startJScode {Set_Field} uses {Set_Field}
- Set_Field (JS_S_1,JS_S_2) ;
-\stopJScode
-
\endinput
diff --git a/tex/context/base/java-ini.tex b/tex/context/base/java-ini.tex
index d3c4aff0b..301834a01 100644
--- a/tex/context/base/java-ini.tex
+++ b/tex/context/base/java-ini.tex
@@ -57,6 +57,18 @@
2: neznama preambule --
\stopmessages
+\startmessages italian library: javascript
+ title: javascript
+ 1: caricamento dello script set --
+ 2: preambolo sconosciuto --
+\stopmessages
+
+\startmessages norwegian library: javascript
+ title: javascript
+ 1: leser inn scriptsett --
+ 2: ukjent 'preamble' --
+\stopmessages
+
%D \TEX\ is not the right tool to check the \JAVA\ code; the
%D most we can do is reporting some passed variables:
@@ -643,8 +655,8 @@
%D \stoptypen
%D
%D The not so complicated implementation of this macro is:
-
-\def\douseJSscripts#1%
+
+\def\dodouseJSscripts#1%
{\doifelse{#1}{\v!reset}
{\let\allJSpreambles=\empty}
{\doifundefined{\c!file\f!javascriptprefix#1}
@@ -658,8 +670,12 @@
\stopreadingfile}%
\egroup}}}
-\def\useJSscripts[#1]%
- {\processcommalist[#1]\douseJSscripts}
+\def\douseJSscripts[#1][#2]%
+ {\processcommalist[#1]\dodouseJSscripts
+ \processcommalist[#2]\useJSpreamblenow}
+
+\def\useJSscripts%
+ {\dodoubleempty\douseJSscripts}
\protect
diff --git a/tex/context/base/lang-alt.tex b/tex/context/base/lang-alt.tex
index e721219ae..815fa570c 100644
--- a/tex/context/base/lang-alt.tex
+++ b/tex/context/base/lang-alt.tex
@@ -11,13 +11,19 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
+\writestatus{loading}{Altaic Languages}
+
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+
% Uigur, Uzbek
% Azeri/Azerbaijani, Chuvash, Turkish, Turkmen
% Kazakh, Kazar, Kireghiz, Noghay, Talar
% Buryat, Kalmuck, Khalkha
-\writestatus{loading}{Altaic Languages}
-
\unprotect
\installlanguage
diff --git a/tex/context/base/lang-ana.tex b/tex/context/base/lang-ana.tex
index 19fecb0c9..8f14082c4 100644
--- a/tex/context/base/lang-ana.tex
+++ b/tex/context/base/lang-ana.tex
@@ -13,6 +13,12 @@
\writestatus{loading}{Anatolian Languages}
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+
\unprotect
\protect
diff --git a/tex/context/base/lang-art.tex b/tex/context/base/lang-art.tex
index 87d243a62..0c1c775b2 100644
--- a/tex/context/base/lang-art.tex
+++ b/tex/context/base/lang-art.tex
@@ -11,10 +11,16 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-% Esperanto
-
\writestatus{loading}{Artificial Languages}
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+
+% Esperanto
+
\unprotect
\protect
diff --git a/tex/context/base/lang-bal.tex b/tex/context/base/lang-bal.tex
index 7ef8e8e49..4c5907320 100644
--- a/tex/context/base/lang-bal.tex
+++ b/tex/context/base/lang-bal.tex
@@ -11,10 +11,16 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-% Lettish/Latvian, Lithuanian
-
\writestatus{loading}{Baltic Languages}
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+
+% Lettish/Latvian, Lithuanian
+
\unprotect
\protect
diff --git a/tex/context/base/lang-cel.tex b/tex/context/base/lang-cel.tex
index b4eae8b52..d22705804 100644
--- a/tex/context/base/lang-cel.tex
+++ b/tex/context/base/lang-cel.tex
@@ -11,10 +11,16 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-% Breton, Welsh, Irish, Manx, Scottish Gaelic
-
\writestatus{loading}{Celtic Languages}
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+
+% Breton, Welsh, Irish, Manx, Scottish Gaelic
+
\unprotect
\protect
diff --git a/tex/context/base/lang-ger.tex b/tex/context/base/lang-ger.tex
index e539bdc70..006265a55 100644
--- a/tex/context/base/lang-ger.tex
+++ b/tex/context/base/lang-ger.tex
@@ -11,11 +11,23 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
+\writestatus{loading}{Germanic Languages}
+
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+%D
+%D \starttabulate[|lB|l|]
+%D \NC Norwegian \NC Hans Fredrik Nordhaug \NC \NR
+%D \NC Danish \NC Arne Jorgensen \NC \NR % check the o
+%D \NC Afrikaans \NC \NC \NR
+%D \stoptabulate
+
% Danish, Faeroese, Icelandic, Norwegian, Swedish, German, Yiddish
% Afrikaans, Dutch, English, Flemush, Frisian, Plattdeutsch
-\writestatus{loading}{Germanic Languages}
-
\unprotect
\installlanguage
@@ -63,16 +75,15 @@
\installlanguage
[\s!da]
[\c!spatiering=\v!opelkaar,
- \c!leftsentence=---,
- \c!rightsentence=---,
- \c!leftsubsentence=---,
- \c!rightsubsentence=---,
- \c!leftquote=\upperleftsinglesixquote,
- \c!rightquote=\upperrightsingleninequote,
- \c!leftquotation=\upperleftdoublesixquote,
- \c!rightquotation=\upperrightdoubleninequote,
- \c!datum={\v!jaar,\ ,\v!maand,\ ,\v!dag},
- \c!status=\v!stop]
+ \c!leftsentence={\hbox{--\hskip.5em}},
+ \c!rightsentence={\hbox{\hskip.5em--}},
+ \c!leftsubsentence={--},
+ \c!rightsubsentence={--},
+ \c!leftquote=\lowerleftsingleninequote,
+ \c!rightquote=\upperrightsinglesixquote,
+ \c!leftquotation=\lowerleftdoubleninequote,
+ \c!rightquotation=\upperrightdoublesixquote,
+ \c!datum={\v!dag,{.},\ ,\v!maand,\ ,\v!jaar}]
\installlanguage
[\s!sv]
@@ -113,7 +124,7 @@
\c!rightquote=\upperrightsingleninequote,
\c!leftquotation=\upperleftdoublesixquote,
\c!rightquotation=\upperrightdoubleninequote,
- \c!datum={\v!jaar,\ ,\v!maand,\ ,\v!dag},
+ \c!datum={\v!dag,{.},\ ,\v!maand,\ ,\v!jaar},
\c!status=\v!stop]
%D Hey look, some experiment:
@@ -145,6 +156,7 @@
%D For compatibility reasons we also define:
\installlanguage [du] [\s!de] % old times context
+\installlanguage [sp] [\s!es] % old times context
\installlanguage [usenglish] [\s!us]
\installlanguage [ukenglish] [\s!uk]
@@ -155,109 +167,145 @@
\installlanguage [swedish] [\s!sv]
\installlanguage [afrikaans] [\s!af]
\installlanguage [norwegian] [\s!no]
-
-%D The next section is dedicated to Tobias Burnus.
-
-\startlanguagespecifics[\s!de]
-
- \installcompoundcharacter "a {\moveaccent{-.1ex}\"a\midworddiscretionary}
- \installcompoundcharacter "e {\moveaccent{-.1ex}\"e\midworddiscretionary}
- \installcompoundcharacter "i {\moveaccent{-.1ex}\"\i\midworddiscretionary}
- \installcompoundcharacter "o {\moveaccent{-.1ex}\"o\midworddiscretionary}
- \installcompoundcharacter "u {\moveaccent{-.1ex}\"u\midworddiscretionary}
- \installcompoundcharacter "s {\SS}
- \installcompoundcharacter "z {\SS}
-
- \installcompoundcharacter "A {\smashaccent\"A}
- \installcompoundcharacter "E {\smashaccent\"E}
- \installcompoundcharacter "I {\smashaccent\"I}
- \installcompoundcharacter "O {\smashaccent\"O}
- \installcompoundcharacter "U {\smashaccent\"U}
- \installcompoundcharacter "Z {SZ}
- \installcompoundcharacter "S {SS}
-
-\stoplanguagespecifics
-
-\startlanguagespecifics[\s!de]
-
- \installcompoundcharacter "ck {\discretionary {k-}{k}{ck}}
- \installcompoundcharacter "ff {\discretionary{ff-}{f}{ff}}
- \installcompoundcharacter "ll {\discretionary{ll-}{l}{ll}}
- \installcompoundcharacter "mm {\discretionary{mm-}{m}{mm}}
- \installcompoundcharacter "nn {\discretionary{nn-}{n}{nn}}
- \installcompoundcharacter "pp {\discretionary{pp-}{p}{pp}}
- \installcompoundcharacter "rr {\discretionary{rr-}{r}{rr}}
- \installcompoundcharacter "tt {\discretionary{tt-}{t}{tt}}
-
- \installcompoundcharacter "CK {\discretionary {K-}{K}{CK}}
- \installcompoundcharacter "FF {\discretionary{FF-}{F}{FF}}
- \installcompoundcharacter "LL {\discretionary{LL-}{L}{LL}}
- \installcompoundcharacter "MM {\discretionary{MM-}{M}{MM}}
- \installcompoundcharacter "NN {\discretionary{NN-}{N}{NN}}
- \installcompoundcharacter "PP {\discretionary{PP-}{P}{PP}}
- \installcompoundcharacter "RR {\discretionary{RR-}{R}{RR}}
- \installcompoundcharacter "TT {\discretionary{TT-}{T}{TT}}
-
-\stoplanguagespecifics
-
-\startlanguagespecifics[\s!de]
-
- \installcompoundcharacter "` {\handlequotation\c!leftquotation}
- \installcompoundcharacter "' {\handlequotation\c!rightquotation}
- \installcompoundcharacter ". {\kern.1em\ignorespaces}
-
- \def\setupDElanguage%
- {\setuplanguage
- [\s!de]
- [\c!leftsentence=\leftguillemot,
- \c!rightsentence=\rightguillemot,
- \c!leftsubsentence=\leftsubguillemot,
- \c!rightsubsentence=\rightsubguillemot]}
-
- \installcompoundcharacter "< {{\setupDElanguage|<|}}
- \installcompoundcharacter "> {{\setupDElanguage|>|}}
-
-\stoplanguagespecifics
-
-%D An experimental hack:
-
-\startencoding[pdfdoc]
- \startlanguagespecifics[\s!de]% hm, a % is needed
- \defineactivecharacter " {\"} % no {\simplifiedcompoundcharacter"}
- \stoplanguagespecifics
-\stopencoding
-
-\startencoding[ec]
- \startlanguagespecifics[\s!de]%
- \installcompoundcharacter "a {\"a}
- \installcompoundcharacter "e {\"e}
- \installcompoundcharacter "i {\"\i}
- \installcompoundcharacter "o {\"o}
- \installcompoundcharacter "u {\"u}
- \installcompoundcharacter "A {\"A}
- \installcompoundcharacter "E {\"E}
- \installcompoundcharacter "I {\"I}
- \installcompoundcharacter "O {\"O}
- \installcompoundcharacter "U {\"U}
- \stoplanguagespecifics
-\stopencoding
-
-\startencoding[texnansi]
- \startlanguagespecifics[\s!de]%
- \installcompoundcharacter "a {\"a}
- \installcompoundcharacter "e {\"e}
- \installcompoundcharacter "i {\"\i}
- \installcompoundcharacter "o {\"o}
- \installcompoundcharacter "u {\"u}
- \installcompoundcharacter "A {\"A}
- \installcompoundcharacter "E {\"E}
- \installcompoundcharacter "I {\"I}
- \installcompoundcharacter "O {\"O}
- \installcompoundcharacter "U {\"U}
- \stoplanguagespecifics
-\stopencoding
-
-%D This hack should be perfected.
+\installlanguage [norsk] [\s!no] % bonus switch
+
+% GERMAN
+%
+% %D The next section is dedicated to Tobias Burnus.
+%
+% \startlanguagespecifics[\s!de]
+%
+% \installcompoundcharacter "a {\moveaccent{-.1ex}\"a\midworddiscretionary}
+% \installcompoundcharacter "e {\moveaccent{-.1ex}\"e\midworddiscretionary}
+% \installcompoundcharacter "i {\moveaccent{-.1ex}\"\i\midworddiscretionary}
+% \installcompoundcharacter "o {\moveaccent{-.1ex}\"o\midworddiscretionary}
+% \installcompoundcharacter "u {\moveaccent{-.1ex}\"u\midworddiscretionary}
+% \installcompoundcharacter "s {\SS}
+% \installcompoundcharacter "z {\SS}
+%
+% \installcompoundcharacter "A {\smashaccent\"A}
+% \installcompoundcharacter "E {\smashaccent\"E}
+% \installcompoundcharacter "I {\smashaccent\"I}
+% \installcompoundcharacter "O {\smashaccent\"O}
+% \installcompoundcharacter "U {\smashaccent\"U}
+% \installcompoundcharacter "Z {SZ}
+% \installcompoundcharacter "S {SS}
+%
+% \stoplanguagespecifics
+%
+% \startlanguagespecifics[\s!de]
+%
+% \installcompoundcharacter "ck {\discretionary {k-}{k}{ck}}
+% \installcompoundcharacter "ff {\discretionary{ff-}{f}{ff}}
+% \installcompoundcharacter "ll {\discretionary{ll-}{l}{ll}}
+% \installcompoundcharacter "mm {\discretionary{mm-}{m}{mm}}
+% \installcompoundcharacter "nn {\discretionary{nn-}{n}{nn}}
+% \installcompoundcharacter "pp {\discretionary{pp-}{p}{pp}}
+% \installcompoundcharacter "rr {\discretionary{rr-}{r}{rr}}
+% \installcompoundcharacter "tt {\discretionary{tt-}{t}{tt}}
+%
+% \installcompoundcharacter "CK {\discretionary {K-}{K}{CK}}
+% \installcompoundcharacter "FF {\discretionary{FF-}{F}{FF}}
+% \installcompoundcharacter "LL {\discretionary{LL-}{L}{LL}}
+% \installcompoundcharacter "MM {\discretionary{MM-}{M}{MM}}
+% \installcompoundcharacter "NN {\discretionary{NN-}{N}{NN}}
+% \installcompoundcharacter "PP {\discretionary{PP-}{P}{PP}}
+% \installcompoundcharacter "RR {\discretionary{RR-}{R}{RR}}
+% \installcompoundcharacter "TT {\discretionary{TT-}{T}{TT}}
+%
+% \stoplanguagespecifics
+%
+% \startlanguagespecifics[\s!de]
+%
+% \installcompoundcharacter "` {\handlequotation\c!leftquotation}
+% \installcompoundcharacter "' {\handlequotation\c!rightquotation}
+% \installcompoundcharacter ". {\kern.1em\ignorespaces}
+%
+% \def\setupDElanguage%
+% {\setuplanguage
+% [\s!de]
+% [\c!leftsentence=\leftguillemot,
+% \c!rightsentence=\rightguillemot,
+% \c!leftsubsentence=\leftsubguillemot,
+% \c!rightsubsentence=\rightsubguillemot]}
+%
+% \installcompoundcharacter "< {{\setupDElanguage|<|}}
+% \installcompoundcharacter "> {{\setupDElanguage|>|}}
+%
+% \stoplanguagespecifics
+%
+% %D An experimental hack:
+%
+% \startencoding[pdfdoc]
+% \startlanguagespecifics[\s!de]% hm, a % is needed
+% \defineactivecharacter " {\"} % no {\simplifiedcompoundcharacter"}
+% \stoplanguagespecifics
+% \stopencoding
+%
+% \startencoding[ec]
+% \startlanguagespecifics[\s!de]%
+% \installcompoundcharacter "a {\"a}
+% \installcompoundcharacter "e {\"e}
+% \installcompoundcharacter "i {\"\i}
+% \installcompoundcharacter "o {\"o}
+% \installcompoundcharacter "u {\"u}
+% \installcompoundcharacter "A {\"A}
+% \installcompoundcharacter "E {\"E}
+% \installcompoundcharacter "I {\"I}
+% \installcompoundcharacter "O {\"O}
+% \installcompoundcharacter "U {\"U}
+% \stoplanguagespecifics
+% \stopencoding
+%
+% \startencoding[texnansi]
+% \startlanguagespecifics[\s!de]%
+% \installcompoundcharacter "a {\"a}
+% \installcompoundcharacter "e {\"e}
+% \installcompoundcharacter "i {\"\i}
+% \installcompoundcharacter "o {\"o}
+% \installcompoundcharacter "u {\"u}
+% \installcompoundcharacter "A {\"A}
+% \installcompoundcharacter "E {\"E}
+% \installcompoundcharacter "I {\"I}
+% \installcompoundcharacter "O {\"O}
+% \installcompoundcharacter "U {\"U}
+% \stoplanguagespecifics
+% \stopencoding
+%
+% %D This hack should be perfected.
+
+%% NORWEGIAN
+%
+% These three letters (in this order) are the
+% last in the norwegian alphabet (and hence should
+% come after z in the latin alphabet).
+% I'm not sure about the syntax for
+% \definesortkey so I left some of it open ...
+%
+% \startlanguagespecifics[\s!no]
+%
+% \definesortkey {\ae}{z}{b}{\ae}
+% \definesortkey {\AE}{z}{b}{\AE}
+% \definesortkey {\o}{z} {c}{\o}
+% \definesortkey {\O}{z} {c}{\O}
+% \definesortkey {\aa}{z}{d}{\aa}
+% \definesortkey {\AA}{z}{d}{\AA}
+%
+% \stoplanguagespecifics
+%
+% Active characters - just for texnansi encoding now.
+% Will the other encodings be the same?
+%
+% \startencoding[texnansi]
+% \startlanguagespecifics[\s!no]%
+% \defineactivecharacter æ {\ae{}}
+% \defineactivecharacter Æ {\AE{}}
+% \defineactivecharacter ø {\o{}}
+% \defineactivecharacter Ø {\O{}}
+% \defineactivecharacter å {\aa{}}
+% \defineactivecharacter Å {\AA{}}
+% \stoplanguagespecifics
+% \stopencoding
\setupheadtext [\s!en] [\v!inhoud=Contents]
\setupheadtext [\s!nl] [\v!inhoud=Inhoud]
@@ -270,34 +318,34 @@
\setupheadtext [\s!en] [\v!tabellen=Tables]
\setupheadtext [\s!nl] [\v!tabellen=Tabellen]
\setupheadtext [\s!de] [\v!tabellen=Tabellen]
-\setupheadtext [\s!da] [\v!tabellen=Tablen]
+\setupheadtext [\s!da] [\v!tabellen=Tabeller]
\setupheadtext [\s!sv] [\v!tabellen=Tabellen]
\setupheadtext [\s!af] [\v!tabellen=Tabelle]
-\setupheadtext [\s!no] [\v!tabellen=Tabellen]
+\setupheadtext [\s!no] [\v!tabellen=Tabeller]
\setupheadtext [\s!en] [\v!figuren=Figures]
\setupheadtext [\s!nl] [\v!figuren=Figuren]
\setupheadtext [\s!de] [\v!figuren=Abbildungen]
-\setupheadtext [\s!da] [\v!figuren=Figuren]
+\setupheadtext [\s!da] [\v!figuren=Figurer]
\setupheadtext [\s!sv] [\v!figuren=Figuren]
\setupheadtext [\s!af] [\v!figuren=Figure]
-\setupheadtext [\s!no] [\v!figuren=Avbildningen]
+\setupheadtext [\s!no] [\v!figuren=Figurer]
\setupheadtext [\s!en] [\v!grafieken=Graphics]
\setupheadtext [\s!nl] [\v!grafieken=Grafieken]
\setupheadtext [\s!de] [\v!grafieken=Graphiken]
-\setupheadtext [\s!da] [\v!grafieken=Grafiken]
+\setupheadtext [\s!da] [\v!grafieken=Grafik]
\setupheadtext [\s!sv] [\v!grafieken=Grafiskt]
\setupheadtext [\s!af] [\v!grafieken=Grafieke]
-\setupheadtext [\s!no] [\v!grafieken=Grafikken]
+\setupheadtext [\s!no] [\v!grafieken=Grafikk]
\setupheadtext [\s!en] [\v!intermezzos=Intermezzos]
\setupheadtext [\s!nl] [\v!intermezzos=Intermezzo's]
\setupheadtext [\s!de] [\v!intermezzos=Intermezzi]
-\setupheadtext [\s!da] [\v!intermezzos=Intermezzos]
+\setupheadtext [\s!da] [\v!intermezzos=Intermezzoer]
\setupheadtext [\s!sv] [\v!intermezzos=Intermezzot]
\setupheadtext [\s!af] [\v!intermezzos=Intermezzos]
-\setupheadtext [\s!no] [\v!intermezzos=Intermezzos]
+\setupheadtext [\s!no] [\v!intermezzos=Intermesso]
\setupheadtext [\s!en] [\v!index=Index]
\setupheadtext [\s!nl] [\v!index=Index]
@@ -310,26 +358,26 @@
\setupheadtext [\s!en] [\v!afkortingen=Abbreviations]
\setupheadtext [\s!nl] [\v!afkortingen=Afkortingen]
\setupheadtext [\s!de] [\v!afkortingen=Abk\"urzungen]
-\setupheadtext [\s!da] [\v!afkortingen=Abbreviations]
+\setupheadtext [\s!da] [\v!afkortingen=Forkortelser]
\setupheadtext [\s!sv] [\v!afkortingen=F\"orkortningen]
\setupheadtext [\s!af] [\v!afkortingen=Afkortings]
-\setupheadtext [\s!no] [\v!afkortingen=Forkortelsen]
+\setupheadtext [\s!no] [\v!afkortingen=Forkortelser]
\setupheadtext [\s!en] [\v!logos=Logos]
\setupheadtext [\s!nl] [\v!logos=Logo's]
\setupheadtext [\s!de] [\v!logos=Logos]
-\setupheadtext [\s!da] [\v!logos=Logos]
+\setupheadtext [\s!da] [\v!logos=Logoer]
\setupheadtext [\s!sv] [\v!logos=Logo]
\setupheadtext [\s!af] [\v!logos=Logos]
-\setupheadtext [\s!no] [\v!logos=Logos]
+\setupheadtext [\s!no] [\v!logos=Logoer]
\setupheadtext [\s!en] [\v!eenheden=Units]
\setupheadtext [\s!nl] [\v!eenheden=Eenheden]
\setupheadtext [\s!de] [\v!eenheden=Einheiten]
-\setupheadtext [\s!da] [\v!eenheden=Enheden]
+\setupheadtext [\s!da] [\v!eenheden=Enheder]
\setupheadtext [\s!sv] [\v!eenheden=Enheten]
\setupheadtext [\s!af] [\v!eenheden=Eenhede]
-\setupheadtext [\s!no] [\v!eenheden=Enheten]
+\setupheadtext [\s!no] [\v!eenheden=Enheter]
\setuplabeltext [\s!en] [\v!tabel=Table ]
\setuplabeltext [\s!nl] [\v!tabel=Tabel ]
@@ -345,7 +393,7 @@
\setuplabeltext [\s!da] [\v!figuur=Figur ]
\setuplabeltext [\s!sv] [\v!figuur=Figur ]
\setuplabeltext [\s!af] [\v!figuur=Figuur ]
-\setuplabeltext [\s!no] [\v!figuur=Avbildning ]
+\setuplabeltext [\s!no] [\v!figuur=Figur ]
\setuplabeltext [\s!en] [\v!intermezzo=Intermezzo ]
\setuplabeltext [\s!nl] [\v!intermezzo=Intermezzo ]
@@ -353,7 +401,7 @@
\setuplabeltext [\s!da] [\v!intermezzo=Intermezzo ]
\setuplabeltext [\s!sv] [\v!intermezzo=Intermezzo ]
\setuplabeltext [\s!af] [\v!intermezzo=Intermezzo ]
-\setuplabeltext [\s!no] [\v!intermezzo=Intermezzo ]
+\setuplabeltext [\s!no] [\v!intermezzo=Intermesso ]
\setuplabeltext [\s!en] [\v!grafiek=Graphic ]
\setuplabeltext [\s!nl] [\v!grafiek=Grafiek ]
@@ -406,7 +454,7 @@
\setuplabeltext [\s!en] [\v!bijlage=]
\setuplabeltext [\s!nl] [\v!bijlage=]
\setuplabeltext [\s!de] [\v!bijlage=]
-\setuplabeltext [\s!da] [\v!bijlage=]
+\setuplabeltext [\s!da] [\v!bijlage=] % [\v!bijlage=bilag]
\setuplabeltext [\s!sv] [\v!bijlage=]
\setuplabeltext [\s!af] [\v!bijlage=] % [\v!bijlage=bylae]
\setuplabeltext [\s!no] [\v!bijlage=]
@@ -422,7 +470,7 @@
\setuplabeltext [\s!en] [\v!regel=line ]
\setuplabeltext [\s!nl] [\v!regel=regel ]
\setuplabeltext [\s!de] [\v!regel=Zeile ]
-\setuplabeltext [\s!da] [\v!regel=linie ]
+\setuplabeltext [\s!da] [\v!regel=linie ] % or linje
\setuplabeltext [\s!sv] [\v!regel=rad ]
\setuplabeltext [\s!af] [\v!regel=re\"el ]
\setuplabeltext [\s!no] [\v!regel=linje ]
@@ -430,10 +478,10 @@
\setuplabeltext [\s!en] [\v!regels=lines ]
\setuplabeltext [\s!nl] [\v!regels=regels ]
\setuplabeltext [\s!de] [\v!regels=Zeilen ]
-\setuplabeltext [\s!da] [\v!regels=linien ]
+\setuplabeltext [\s!da] [\v!regels=linier ] % or linjer
\setuplabeltext [\s!sv] [\v!regels=raden ]
\setuplabeltext [\s!af] [\v!regels=re\"els ]
-\setuplabeltext [\s!no] [\v!regels=linjen ]
+\setuplabeltext [\s!no] [\v!regels=linjer ]
\setuplabeltext [\s!en] [\v!january=January]
\setuplabeltext [\s!en] [\v!february=February]
@@ -514,7 +562,7 @@
\setuplabeltext [\s!af] [\v!december=desember]
\setuplabeltext [\s!no] [\v!january=januar]
-\setuplabeltext [\s!no] [\v!february=februae]
+\setuplabeltext [\s!no] [\v!february=februar]
\setuplabeltext [\s!no] [\v!march=mars]
\setuplabeltext [\s!no] [\v!april=april]
\setuplabeltext [\s!no] [\v!may=mai]
@@ -600,7 +648,19 @@
\setuplabeltext [\s!de] [\v!oppagina=auf Seite ]
\setuplabeltext [\s!de] [\v!hierboven=siehe oben]
\setuplabeltext [\s!de] [\v!hieronder=siehe unten]
-\setuplabeltext [\s!de] [\v!zie=sieh ]
+\setuplabeltext [\s!de] [\v!zie=siehe ]
+
+\setuplabeltext [\s!da] [\v!pagina=Side ]
+\setuplabeltext [\s!da] [\v!oppagina=p\aa\ side ]
+\setuplabeltext [\s!da] [\v!hierboven=se foroven]
+\setuplabeltext [\s!da] [\v!hieronder=se forneden]
+\setuplabeltext [\s!da] [\v!zie=se ]
+
+\setuplabeltext [\s!no] [\v!pagina=Side ]
+\setuplabeltext [\s!no] [\v!oppagina=p\aa\ side ]
+\setuplabeltext [\s!no] [\v!hierboven=se foroven]
+\setuplabeltext [\s!no] [\v!hieronder=se forneden]
+\setuplabeltext [\s!no] [\v!zie=se ]
%D ... and to be completed!
diff --git a/tex/context/base/lang-grk.tex b/tex/context/base/lang-grk.tex
index 4ecfdd95c..4cda4f3c1 100644
--- a/tex/context/base/lang-grk.tex
+++ b/tex/context/base/lang-grk.tex
@@ -11,10 +11,16 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-% Modern Greek
-
\writestatus{loading}{Greek Languages}
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+
+% Modern Greek
+
\unprotect
\protect
diff --git a/tex/context/base/lang-ind.tex b/tex/context/base/lang-ind.tex
index f00e6ab19..1a92b355e 100644
--- a/tex/context/base/lang-ind.tex
+++ b/tex/context/base/lang-ind.tex
@@ -11,10 +11,16 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-% 34 languages
-
\writestatus{loading}{Indo-Iranian Languages}
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+
+% 34 languages
+
\unprotect
\protect
diff --git a/tex/context/base/lang-ini.tex b/tex/context/base/lang-ini.tex
index 53b4f6e88..6ae98221a 100644
--- a/tex/context/base/lang-ini.tex
+++ b/tex/context/base/lang-ini.tex
@@ -78,6 +78,34 @@
10: vzory --nacteny
\stopmessages
+\startmessages italian library: linguals
+ title: lingua
+ 1: schemi -- per -- caricati (n=--)
+ 2: niente schemi -- per -- (n=--)
+ 3: sillabazione -- per -- caricata (n=--)
+ 4: niente sillabazione -- per -- (n=--)
+ 5: schemi per -- non caricati
+ 6: lingua -- non definita
+ 7: opzioni specifiche per la lingua [--] introducono un salto --
+ 8: opzioni specifiche per la lingua [--] aggiunte trasparentemente
+ 9: lingua -- attiva
+ 10: schemi -- caricati
+\stopmessages
+
+\startmessages norwegian library: linguals
+ title: språk
+ 1: orddelingsmønster -- for -- er lest inn (n=--)
+ 2: ingen orddelingsmønster -- for -- (n=--)
+ 3: orddelingsdefinisjon -- for -- er lest inn (n=--)
+ 4: ingen orddelingsdefinisjon -- for -- (n=--)
+ 5: orddelingsmønster for -- er ikke lest inn
+ 6: språk -- er udefinert
+ 7: språk spesifikk opsjon [--] introduserer et -- hopp
+ 8: språk spesifikk opsjon [--] problemfritt tilføyd
+ 9: språk -- er aktivt
+ 10: orddelingsmønster -- er lest inn
+\stopmessages
+
% dutch : \lccode`\'=`\'
% english : \lccode`\'=0
% german : \lccode`\'=`\'
@@ -618,7 +646,7 @@
%D \NC \bf mnemonic \NC \bf language \NC \bf group \NC\SR
%D \HL
%D \NC \s!fr \NC french \NC italic \NC\FR
-%D \NC \s!sp \NC spanish \NC italic \NC\MR
+%D \NC \s!es \NC spanish \NC italic \NC\MR
%D \NC \s!it \NC italian \NC italic \NC\MR
%D \NC \s!la \NC latin \NC italic \NC\MR
%D \NC \s!pt \NC portuguese \NC italic \NC\LR
diff --git a/tex/context/base/lang-ita.tex b/tex/context/base/lang-ita.tex
index af1f93d94..3be8fc5c2 100644
--- a/tex/context/base/lang-ita.tex
+++ b/tex/context/base/lang-ita.tex
@@ -3,7 +3,7 @@
%D version=1997.09.03,
%D title=\CONTEXT\ Language Macros,
%D subtitle=Italic Languages,
-%D author=Hans Hagen / Tobias Burnus,
+%D author=Hans Hagen / Tobias Burnus,
%D date=\currentdate,
%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
%C
@@ -11,11 +11,22 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
+\writestatus{loading}{Italic Languages}
+
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+%D
+%D \starttabulate[|lB|l|]
+%D \NC Italian \NC Giuseppe Bilotta \NC \NR
+%D \NC Rumanian \NC Dan Seracu \NC \NR
+%D \stoptabulate
+
% Latin, Italian, Rhaeto-Romanic, Rumanian, Sardian
% Catalan, French, Ladino, Portuguese, Proven\c{c}al, Spanish
-\writestatus{loading}{Italic Languages}
-
\unprotect
\installlanguage
@@ -33,7 +44,7 @@
\c!status=\v!stop]
\installlanguage
- [\s!sp]
+ [\s!es]
[\c!spatiering=\v!opelkaar,
\c!leftsentence=---,
\c!rightsentence=---,
@@ -49,14 +60,14 @@
\installlanguage
[\s!it]
[\c!spatiering=\v!opelkaar,
- \c!leftsentence=---,
- \c!rightsentence=---,
- \c!leftsubsentence=---,
- \c!rightsubsentence=---,
+ \c!leftsentence=\leftguillemot,
+ \c!rightsentence=\rightguillemot,
+ \c!leftsubsentence=\leftsubguillemot,
+ \c!rightsubsentence=\rightsubguillemot,
\c!leftquote=\upperleftsinglesixquote,
- \c!rightquote=\lowerrightsingleninequote,
+ \c!rightquote=\upperrightsingleninequote,
\c!leftquotation=\upperleftdoublesixquote,
- \c!rightquotation=\lowerrightdoubleninequote,
+ \c!rightquotation=\upperrightdoubleninequote,
\c!datum={\v!dag,\ ,\v!maand,\ ,\v!jaar},
\c!status=\v!stop]
@@ -88,149 +99,186 @@
\c!datum={\v!jaar,\ ,\v!maand,\ ,\v!dag},
\c!status=\v!stop]
+\installlanguage
+ [\s!ro]
+ [\c!spatiering=\v!opelkaar,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\leftguillemot,
+ \c!rightquote=\rightguillemot,
+ \c!leftquotation=\lowerrightdoubleninequote,
+ \c!rightquotation=\upperleftdoublesixquote,
+ \c!datum={\v!dag,\ ,\v!maand,\ ,\v!jaar},
+ \c!status=\v!stop]
+
%D For compatibility reasons we also define:
-\installlanguage [fa] [\s!fr]
+\installlanguage [fa] [\s!fr] % for dutchies only
\installlanguage [french] [\s!fr]
-\installlanguage [spanish] [\s!sp]
+\installlanguage [spanish] [\s!es]
\installlanguage [italian] [\s!it]
\installlanguage [latin] [\s!la]
\installlanguage [portuguese] [\s!pt]
+\installlanguage [romanian] [\s!ro]
%D Labels and header texts.
\setupheadtext [\s!fr] [\v!inhoud=Table des mati\`eres]
-\setupheadtext [\s!sp] [\v!inhoud=\'Indice]
+\setupheadtext [\s!es] [\v!inhoud=\'Indice]
\setupheadtext [\s!it] [\v!inhoud=Indice]
\setupheadtext [\s!la] [\v!inhoud=Quod in libro continetur] %Argumentum
\setupheadtext [\s!pt] [\v!inhoud=Conte\'ud]
+\setupheadtext [\s!ro] [\v!inhoud=Cuprins]
\setupheadtext [\s!fr] [\v!tabellen=Tables]
-\setupheadtext [\s!sp] [\v!tabellen=Tablas]
+\setupheadtext [\s!es] [\v!tabellen=Tablas]
\setupheadtext [\s!it] [\v!tabellen=Tabelle]
\setupheadtext [\s!la] [\v!tabellen=Tabulae]
\setupheadtext [\s!pt] [\v!tabellen=Tabelas]
+\setupheadtext [\s!ro] [\v!tabellen=Tabele]
\setupheadtext [\s!fr] [\v!figuren=Figures]
-\setupheadtext [\s!sp] [\v!figuren=Ilustraci\'ons]
-\setupheadtext [\s!it] [\v!figuren=Illustrazioni]
+\setupheadtext [\s!es] [\v!figuren=Ilustraci\'ons]
+\setupheadtext [\s!it] [\v!figuren=Figure]
\setupheadtext [\s!la] [\v!figuren=Imagines]
\setupheadtext [\s!pt] [\v!figuren=Figuras]
+\setupheadtext [\s!ro] [\v!figuren=Figuri]
\setupheadtext [\s!fr] [\v!grafieken=Graphiques]
-\setupheadtext [\s!sp] [\v!grafieken=Gr\'aficos]
-\setupheadtext [\s!it] [\v!grafieken=Grafice]
+\setupheadtext [\s!es] [\v!grafieken=Gr\'aficos]
+\setupheadtext [\s!it] [\v!grafieken=Grafici]
\setupheadtext [\s!la] [\v!grafieken=Typi]
\setupheadtext [\s!pt] [\v!grafieken=Gr\'aficos]
+\setupheadtext [\s!ro] [\v!grafieken=Grafice]
\setupheadtext [\s!fr] [\v!intermezzos=Interm\`edes]
-\setupheadtext [\s!sp] [\v!intermezzos=intermedios]
+\setupheadtext [\s!es] [\v!intermezzos=intermedios]
\setupheadtext [\s!it] [\v!intermezzos=Intermezzi]
\setupheadtext [\s!la] [\v!intermezzos=Intermissa]
\setupheadtext [\s!pt] [\v!intermezzos=Intermezzi]
+\setupheadtext [\s!ro] [\v!intermezzos=Intermzzo]
\setupheadtext [\s!fr] [\v!index=Index]
-\setupheadtext [\s!sp] [\v!index=\'Indice]
+\setupheadtext [\s!es] [\v!index=\'Indice]
\setupheadtext [\s!it] [\v!index=Indice]
\setupheadtext [\s!la] [\v!index=Indices]
\setupheadtext [\s!pt] [\v!index=\'Indice]
+\setupheadtext [\s!ro] [\v!index=Index]
\setupheadtext [\s!fr] [\v!afkortingen=Abr\'eviations]
-\setupheadtext [\s!sp] [\v!afkortingen=Abreviaci\'ons]
+\setupheadtext [\s!es] [\v!afkortingen=Abreviaci\'ons]
\setupheadtext [\s!it] [\v!afkortingen=Abbreviazioni]
\setupheadtext [\s!la] [\v!afkortingen=Notae]
\setupheadtext [\s!pt] [\v!afkortingen=Abreviaturas]
+\setupheadtext [\s!ro] [\v!afkortingen=Abrevieri]
\setupheadtext [\s!fr] [\v!logos=Logos]
-\setupheadtext [\s!sp] [\v!logos=Logotipos]
+\setupheadtext [\s!es] [\v!logos=Logotipos]
\setupheadtext [\s!it] [\v!logos=Logotipi]
\setupheadtext [\s!la] [\v!logos=Typi negotiales]
\setupheadtext [\s!pt] [\v!logos=Logotipos]
+\setupheadtext [\s!ro] [\v!logos=Logo-uri]
\setupheadtext [\s!fr] [\v!eenheden=Unit\'es]
-\setupheadtext [\s!sp] [\v!eenheden=Unidads]
+\setupheadtext [\s!es] [\v!eenheden=Unidads]
\setupheadtext [\s!it] [\v!eenheden=Unit\`a]
\setupheadtext [\s!la] [\v!eenheden=Modi]
\setupheadtext [\s!pt] [\v!eenheden=Unidades]
+\setupheadtext [\s!ro] [\v!eenheden=Unit\u{a}\c{t}i]
\setuplabeltext [\s!fr] [\v!tabel=Table ]
-\setuplabeltext [\s!sp] [\v!tabel=Tablas ]
+\setuplabeltext [\s!es] [\v!tabel=Tablas ]
\setuplabeltext [\s!it] [\v!tabel=Tabella ]
\setuplabeltext [\s!la] [\v!tabel=Tabula ]
\setuplabeltext [\s!pt] [\v!tabel=Tabela ]
+\setuplabeltext [\s!ro] [\v!tabel=Tabelul ]
\setuplabeltext [\s!fr] [\v!figuur=Figure ]
-\setuplabeltext [\s!sp] [\v!figuur=Ilustraci\'on ]
-\setuplabeltext [\s!it] [\v!figuur=Illustrazione ]
+\setuplabeltext [\s!es] [\v!figuur=Ilustraci\'on ]
+\setuplabeltext [\s!it] [\v!figuur=Fig. ]
\setuplabeltext [\s!la] [\v!figuur=Imago ]
\setuplabeltext [\s!pt] [\v!figuur=Figura ]
+\setuplabeltext [\s!ro] [\v!figuur=Figura ]
\setuplabeltext [\s!fr] [\v!intermezzo=Interm\`ede ]
-\setuplabeltext [\s!sp] [\v!intermezzo=intermedio ]
+\setuplabeltext [\s!es] [\v!intermezzo=intermedio ]
\setuplabeltext [\s!it] [\v!intermezzo=Intermezzo ]
\setuplabeltext [\s!la] [\v!intermezzo=Intermissum ]
\setuplabeltext [\s!pt] [\v!intermezzo=Intermezzo ]
+\setuplabeltext [\s!ro] [\v!intermezzo=Intermezzo ]
\setuplabeltext [\s!fr] [\v!grafiek=Illustration ]
-\setuplabeltext [\s!sp] [\v!grafiek=Gr\'afico ]
-\setuplabeltext [\s!it] [\v!grafiek=Grafica ]
+\setuplabeltext [\s!es] [\v!grafiek=Gr\'afico ]
+\setuplabeltext [\s!it] [\v!grafiek=Grafico ]
\setuplabeltext [\s!la] [\v!grafiek=Typus ]
\setuplabeltext [\s!pt] [\v!grafiek=Gr\'afico ]
+\setuplabeltext [\s!ro] [\v!grafiek=Graficul ]
\setuplabeltext [\s!fr] [\v!hoofdstuk=]
-\setuplabeltext [\s!sp] [\v!hoofdstuk=]
+\setuplabeltext [\s!es] [\v!hoofdstuk=]
\setuplabeltext [\s!it] [\v!hoofdstuk=]
\setuplabeltext [\s!la] [\v!hoofdstuk=]
\setuplabeltext [\s!pt] [\v!hoofdstuk=]
+\setuplabeltext [\s!ro] [\v!hoofdstuk=]
\setuplabeltext [\s!fr] [\v!paragraaf=]
-\setuplabeltext [\s!sp] [\v!paragraaf=]
+\setuplabeltext [\s!es] [\v!paragraaf=]
\setuplabeltext [\s!it] [\v!paragraaf=]
\setuplabeltext [\s!la] [\v!paragraaf=]
\setuplabeltext [\s!pt] [\v!paragraaf=]
+\setuplabeltext [\s!ro] [\v!paragraaf=]
\setuplabeltext [\s!fr] [\v!sub\v!paragraaf=]
-\setuplabeltext [\s!sp] [\v!sub\v!paragraaf=]
+\setuplabeltext [\s!es] [\v!sub\v!paragraaf=]
\setuplabeltext [\s!it] [\v!sub\v!paragraaf=]
\setuplabeltext [\s!la] [\v!sub\v!paragraaf=]
\setuplabeltext [\s!pt] [\v!sub\v!paragraaf=]
+\setuplabeltext [\s!ro] [\v!sub\v!paragraaf=]
\setuplabeltext [\s!fr] [\v!sub\v!sub\v!paragraaf=]
-\setuplabeltext [\s!sp] [\v!sub\v!sub\v!paragraaf=]
+\setuplabeltext [\s!es] [\v!sub\v!sub\v!paragraaf=]
\setuplabeltext [\s!it] [\v!sub\v!sub\v!paragraaf=]
\setuplabeltext [\s!la] [\v!sub\v!sub\v!paragraaf=]
\setuplabeltext [\s!pt] [\v!sub\v!sub\v!paragraaf=]
+\setuplabeltext [\s!ro] [\v!sub\v!sub\v!paragraaf=]
\setuplabeltext [\s!fr] [\v!sub\v!sub\v!sub\v!paragraaf=]
-\setuplabeltext [\s!sp] [\v!sub\v!sub\v!sub\v!paragraaf=]
+\setuplabeltext [\s!es] [\v!sub\v!sub\v!sub\v!paragraaf=]
\setuplabeltext [\s!it] [\v!sub\v!sub\v!sub\v!paragraaf=]
\setuplabeltext [\s!la] [\v!sub\v!sub\v!sub\v!paragraaf=]
\setuplabeltext [\s!pt] [\v!sub\v!sub\v!sub\v!paragraaf=]
+\setuplabeltext [\s!ro] [\v!sub\v!sub\v!sub\v!paragraaf=]
\setuplabeltext [\s!fr] [\v!bijlage=]
-\setuplabeltext [\s!sp] [\v!bijlage=]
+\setuplabeltext [\s!es] [\v!bijlage=]
\setuplabeltext [\s!it] [\v!bijlage=]
\setuplabeltext [\s!la] [\v!bijlage=]
\setuplabeltext [\s!pt] [\v!bijlage=]
+\setuplabeltext [\s!ro] [\v!bijlage=]
\setuplabeltext [\s!fr] [\v!deel=Section ]
-\setuplabeltext [\s!sp] [\v!deel=Parte ]
+\setuplabeltext [\s!es] [\v!deel=Parte ]
\setuplabeltext [\s!it] [\v!deel=Parte ]
\setuplabeltext [\s!la] [\v!deel=Pars ]
\setuplabeltext [\s!pt] [\v!deel=Parte ]
+\setuplabeltext [\s!ro] [\v!deel=Partea ]
\setuplabeltext [\s!fr] [\v!regel=ligne ]
-\setuplabeltext [\s!sp] [\v!regel=l\'\i nea ]
+\setuplabeltext [\s!es] [\v!regel=l\'\i nea ]
\setuplabeltext [\s!it] [\v!regel=riga ]
\setuplabeltext [\s!la] [\v!regel=versus ]
\setuplabeltext [\s!pt] [\v!regel=linha ]
+\setuplabeltext [\s!ro] [\v!regel=linia ]
\setuplabeltext [\s!fr] [\v!regels=lignes ]
-\setuplabeltext [\s!sp] [\v!regels=l\'\i neas ]
-\setuplabeltext [\s!it] [\v!regels=rige ]
+\setuplabeltext [\s!es] [\v!regels=l\'\i neas ]
+\setuplabeltext [\s!it] [\v!regels=righe ]
\setuplabeltext [\s!la] [\v!regels=versus ]
\setuplabeltext [\s!pt] [\v!regels=linhas ]
+\setuplabeltext [\s!ro] [\v!regels=liniile ]
\setuplabeltext [\s!fr] [\v!january=janvier]
\setuplabeltext [\s!fr] [\v!february=f\'evrier]
@@ -245,18 +293,18 @@
\setuplabeltext [\s!fr] [\v!november=novembre]
\setuplabeltext [\s!fr] [\v!december=d\'ecembre]
-\setuplabeltext [\s!sp] [\v!january=jenero]
-\setuplabeltext [\s!sp] [\v!february=febrero]
-\setuplabeltext [\s!sp] [\v!march=marzo]
-\setuplabeltext [\s!sp] [\v!april=abril]
-\setuplabeltext [\s!sp] [\v!may=mayo]
-\setuplabeltext [\s!sp] [\v!june=junio]
-\setuplabeltext [\s!sp] [\v!july=julio]
-\setuplabeltext [\s!sp] [\v!august=agosto]
-\setuplabeltext [\s!sp] [\v!september=septimbre]
-\setuplabeltext [\s!sp] [\v!october=octubre]
-\setuplabeltext [\s!sp] [\v!november=noviembre]
-\setuplabeltext [\s!sp] [\v!december=deciembre]
+\setuplabeltext [\s!es] [\v!january=jenero]
+\setuplabeltext [\s!es] [\v!february=febrero]
+\setuplabeltext [\s!es] [\v!march=marzo]
+\setuplabeltext [\s!es] [\v!april=abril]
+\setuplabeltext [\s!es] [\v!may=mayo]
+\setuplabeltext [\s!es] [\v!june=junio]
+\setuplabeltext [\s!es] [\v!july=julio]
+\setuplabeltext [\s!es] [\v!august=agosto]
+\setuplabeltext [\s!es] [\v!september=septimbre]
+\setuplabeltext [\s!es] [\v!october=octubre]
+\setuplabeltext [\s!es] [\v!november=noviembre]
+\setuplabeltext [\s!es] [\v!december=deciembre]
\setuplabeltext [\s!it] [\v!january=gennaio]
\setuplabeltext [\s!it] [\v!february=febbraio]
@@ -297,6 +345,19 @@
\setuplabeltext [\s!pt] [\v!november=novembro]
\setuplabeltext [\s!pt] [\v!december=dezembro]
+\setuplabeltext [\s!ro] [\v!january=ianuarie]
+\setuplabeltext [\s!ro] [\v!february=februarie]
+\setuplabeltext [\s!ro] [\v!march=martie]
+\setuplabeltext [\s!ro] [\v!april=aprilie]
+\setuplabeltext [\s!ro] [\v!may=mai]
+\setuplabeltext [\s!ro] [\v!june=iunie]
+\setuplabeltext [\s!ro] [\v!july=iulie]
+\setuplabeltext [\s!ro] [\v!august=august]
+\setuplabeltext [\s!ro] [\v!september=septembrie]
+\setuplabeltext [\s!ro] [\v!october=octombrie]
+\setuplabeltext [\s!ro] [\v!november=noiembrie]
+\setuplabeltext [\s!ro] [\v!december=decembrie]
+
\setuplabeltext [\s!fr] [\v!sunday=dimanche]
\setuplabeltext [\s!fr] [\v!monday=lundi]
\setuplabeltext [\s!fr] [\v!tuesday=mardi]
@@ -305,13 +366,13 @@
\setuplabeltext [\s!fr] [\v!friday=vendredi]
\setuplabeltext [\s!fr] [\v!saturday=samedi]
-\setuplabeltext [\s!sp] [\v!sunday=domingo]
-\setuplabeltext [\s!sp] [\v!monday=lunes]
-\setuplabeltext [\s!sp] [\v!tuesday=martes]
-\setuplabeltext [\s!sp] [\v!wednesday=mi\'ercoles]
-\setuplabeltext [\s!sp] [\v!thursday=jueves]
-\setuplabeltext [\s!sp] [\v!friday=viernes]
-\setuplabeltext [\s!sp] [\v!saturday=s\'abado]
+\setuplabeltext [\s!es] [\v!sunday=domingo]
+\setuplabeltext [\s!es] [\v!monday=lunes]
+\setuplabeltext [\s!es] [\v!tuesday=martes]
+\setuplabeltext [\s!es] [\v!wednesday=mi\'ercoles]
+\setuplabeltext [\s!es] [\v!thursday=jueves]
+\setuplabeltext [\s!es] [\v!friday=viernes]
+\setuplabeltext [\s!es] [\v!saturday=s\'abado]
\setuplabeltext [\s!it] [\v!sunday=domenica]
\setuplabeltext [\s!it] [\v!monday=luned\`\i]
@@ -337,11 +398,35 @@
\setuplabeltext [\s!pt] [\v!friday=sexta-feira]
\setuplabeltext [\s!pt] [\v!saturday=s\'abado]
+\setuplabeltext [\s!ro] [\v!sunday=duminic\u{a}]
+\setuplabeltext [\s!ro] [\v!monday=luni]
+\setuplabeltext [\s!ro] [\v!tuesday=mar\c{t}i]
+\setuplabeltext [\s!ro] [\v!wednesday=miercuri]
+\setuplabeltext [\s!ro] [\v!thursday=joi]
+\setuplabeltext [\s!ro] [\v!friday=vineri]
+\setuplabeltext [\s!ro] [\v!saturday=s\^{a}mb\u{a}t\u{a}]
+
+% \startlanguagespecifics[\s!ro]
+%
+% \installcompoundcharacter "a {\u{a}}
+% \installcompoundcharacter "i {\^{\i}}
+% \installcompoundcharacter "s {\c{s}}
+% \installcompoundcharacter "t {\c{t}}
+% \installcompoundcharacter "A {\^{a}}
+% \installcompoundcharacter "I {\^{I}}
+% \installcompoundcharacter "S {\c{S}}
+% \installcompoundcharacter "T {\c{T}}
+% \installcompoundcharacter "` {\handlequotation\c!leftquotation}
+% \installcompoundcharacter "' {\handlequotation\c!rightquotation}
+%
+% \stoplanguagespecifics
+
%D \ShowAllLanguageValues [\s!fr] [french] franse slag
-%D \ShowAllLanguageValues [\s!sp] [spanish] spaans benauwd
+%D \ShowAllLanguageValues [\s!es] [spanish] spaans benauwd
%D \ShowAllLanguageValues [\s!it] [italian] italiaanse ...
%D \ShowAllLanguageValues [\s!la] [latin] latijnse missen
%D \ShowAllLanguageValues [\s!pt] [portuguese] portugese ...
+%D \ShowAllLanguageValues [\s!ro] [romanian] romanian ...
\protect
diff --git a/tex/context/base/lang-lab.tex b/tex/context/base/lang-lab.tex
index 714188dab..eb42fee76 100644
--- a/tex/context/base/lang-lab.tex
+++ b/tex/context/base/lang-lab.tex
@@ -136,6 +136,7 @@
{#4}}}
\newif\iflabeltextdone % needs to be reset elsewhere
+\newif\iftracinglabels % shows missing labels
\unexpanded\def\dogetupsometextprefix#1#2#3%
{\global\labeltextdonetrue
@@ -143,7 +144,7 @@
{\dodogetupsometextprefix{\defaultlanguage{#1}}{#2}{#3}
{\dodogetupsometextprefix{\s!en}{#2}{#3}
{\dodogetupsometextprefix{\s!nl}{#2}{#3}
- {{\tttf[#2:~#3/#1]~}}}}}}
+ {\iftracinglabels{\tttf[#2:~#3/#1]~}\fi}}}}}
%D \macros
%D {presetheadtext,presetlabeltext}
diff --git a/tex/context/base/lang-sla.tex b/tex/context/base/lang-sla.tex
index 8df66aa90..cd9fbef84 100644
--- a/tex/context/base/lang-sla.tex
+++ b/tex/context/base/lang-sla.tex
@@ -11,8 +11,17 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-%D Thanks to Grzegorz Sapijaszko for fine||tuning the Polish
-%D section and Zeljko Vrba for the Croation translations.
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+%D
+%D \starttabulate[|lB|l|]
+%D \NC Czech \NC Tom Hidec, Petr Sojka \NC \NR
+%D \NC Polish \NC Grzegorz Sapijaszko \NC \NR
+%D \NC Croatian \NC Zeljko Vrba \NC \NR
+%D \stoptabulate
% Belarussian, Russian, Ukrainian, Bulgarian, Macedonian,
% Serbo-Croatian, Slovenian, Czech, Kushubian,
@@ -85,79 +94,79 @@
\installlanguage [croatian] [\s!hr]
% specifics
-
-\startlanguagespecifics[\s!pl]
-
- \installcompoundcharacter /a {\k a}
- \installcompoundcharacter /c {\'c}
- \installcompoundcharacter /e {\k e}
- \installcompoundcharacter /l {\l}
- \installcompoundcharacter /n {\'n}
- \installcompoundcharacter /o {\'o}
- \installcompoundcharacter /s {\'s}
- \installcompoundcharacter /x {\'z}
- \installcompoundcharacter /z {\.z}
- \installcompoundcharacter /A {\k A}
- \installcompoundcharacter /C {\'C}
- \installcompoundcharacter /E {\k E}
- \installcompoundcharacter /L {\L}
- \installcompoundcharacter /N {\'N}
- \installcompoundcharacter /O {\'O}
- \installcompoundcharacter /S {\'S}
- \installcompoundcharacter /X {\'Z}
- \installcompoundcharacter /Z {\.Z}
-
-\stoplanguagespecifics
-
-\startlanguagespecifics[\s!pl]
-
- \installcompoundcharacter /, {\handlequotation\c!leftquotation}
- \installcompoundcharacter /' {\handlequotation\c!rightquotation}
-
- \def\setupPLlanguage%
- {\setuplanguage
- [\s!pl]
- [\c!leftsentence=\leftguillemot,
- \c!rightsentence=\rightguillemot,
- \c!leftsubsentence=\leftsubguillemot,
- \c!rightsubsentence=\rightsubguillemot]}
-
- \installcompoundcharacter /< {{\setupPLlanguage|<|}}
- \installcompoundcharacter /> {{\setupPLlanguage|>|}}
-
- \installcompoundcharacter /- {|-|}
-
-\stoplanguagespecifics
-
-\startlanguagespecifics[\s!pl]
-
- \definesortkey {/a}{a}{a}{\k a}
- \definesortkey {/A}{a}{a}{\k a}
- \definesortkey {/c}{c}{a}{\'c}
- \definesortkey {/C}{c}{a}{\'c}
- \definesortkey {/e}{e}{a}{\k e}
- \definesortkey {/E}{e}{a}{\k e}
- \definesortkey {/l}{l}{a}{\l }
- \definesortkey {/L}{l}{a}{\l }
- \definesortkey {/n}{n}{a}{\'n}
- \definesortkey {/N}{n}{a}{\'n}
- \definesortkey {/o}{o}{a}{\'o}
- \definesortkey {/O}{o}{a}{\'o}
- \definesortkey {/s}{s}{a}{\'s}
- \definesortkey {/S}{s}{a}{\'s}
- \definesortkey {/x}{z}{a}{\'x}
- \definesortkey {/X}{z}{a}{\'x}
- \definesortkey {/z}{z}{b}{\.z}
- \definesortkey {/Z}{z}{b}{\.z}
-
-\stoplanguagespecifics
-
-\startencoding[pdfdoc]
- \startlanguagespecifics[pl]% hm
- \defineactivecharacter / {\simplifiedcompoundcharacter/}
- \stoplanguagespecifics
-\stopencoding
-
+%
+% \startlanguagespecifics[\s!pl]
+%
+% \installcompoundcharacter /a {\k a}
+% \installcompoundcharacter /c {\'c}
+% \installcompoundcharacter /e {\k e}
+% \installcompoundcharacter /l {\l}
+% \installcompoundcharacter /n {\'n}
+% \installcompoundcharacter /o {\'o}
+% \installcompoundcharacter /s {\'s}
+% \installcompoundcharacter /x {\'z}
+% \installcompoundcharacter /z {\.z}
+% \installcompoundcharacter /A {\k A}
+% \installcompoundcharacter /C {\'C}
+% \installcompoundcharacter /E {\k E}
+% \installcompoundcharacter /L {\L}
+% \installcompoundcharacter /N {\'N}
+% \installcompoundcharacter /O {\'O}
+% \installcompoundcharacter /S {\'S}
+% \installcompoundcharacter /X {\'Z}
+% \installcompoundcharacter /Z {\.Z}
+%
+% \stoplanguagespecifics
+%
+% \startlanguagespecifics[\s!pl]
+%
+% \installcompoundcharacter /, {\handlequotation\c!leftquotation}
+% \installcompoundcharacter /' {\handlequotation\c!rightquotation}
+%
+% \def\setupPLlanguage%
+% {\setuplanguage
+% [\s!pl]
+% [\c!leftsentence=\leftguillemot,
+% \c!rightsentence=\rightguillemot,
+% \c!leftsubsentence=\leftsubguillemot,
+% \c!rightsubsentence=\rightsubguillemot]}
+%
+% \installcompoundcharacter /< {{\setupPLlanguage|<|}}
+% \installcompoundcharacter /> {{\setupPLlanguage|>|}}
+%
+% \installcompoundcharacter /- {|-|}
+%
+% \stoplanguagespecifics
+%
+% \startlanguagespecifics[\s!pl]
+%
+% \definesortkey {/a}{a}{a}{\k a}
+% \definesortkey {/A}{a}{a}{\k a}
+% \definesortkey {/c}{c}{a}{\'c}
+% \definesortkey {/C}{c}{a}{\'c}
+% \definesortkey {/e}{e}{a}{\k e}
+% \definesortkey {/E}{e}{a}{\k e}
+% \definesortkey {/l}{l}{a}{\l }
+% \definesortkey {/L}{l}{a}{\l }
+% \definesortkey {/n}{n}{a}{\'n}
+% \definesortkey {/N}{n}{a}{\'n}
+% \definesortkey {/o}{o}{a}{\'o}
+% \definesortkey {/O}{o}{a}{\'o}
+% \definesortkey {/s}{s}{a}{\'s}
+% \definesortkey {/S}{s}{a}{\'s}
+% \definesortkey {/x}{z}{a}{\'x}
+% \definesortkey {/X}{z}{a}{\'x}
+% \definesortkey {/z}{z}{b}{\.z}
+% \definesortkey {/Z}{z}{b}{\.z}
+%
+% \stoplanguagespecifics
+%
+% \startencoding[pdfdoc]
+% \startlanguagespecifics[pl]% hm
+% \defineactivecharacter / {\simplifiedcompoundcharacter/}
+% \stoplanguagespecifics
+% \stopencoding
+%
% this can best be handled by \quotation and ||
%
% \startlanguagespecifics[\s!hr]
diff --git a/tex/context/base/lang-ura.tex b/tex/context/base/lang-ura.tex
index 8ec95b5e3..f80bf6189 100644
--- a/tex/context/base/lang-ura.tex
+++ b/tex/context/base/lang-ura.tex
@@ -11,11 +11,17 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
+\writestatus{loading}{Uralic Languages}
+
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+
% Cheremiss, Estonian, Finnish, Karelian, Laap, Mordvinian,
% Permian tongues, Hungarianm Ostyak, Vogul, Samoyed
-\writestatus{loading}{Uralic Languages}
-
\unprotect
\installlanguage
diff --git a/tex/context/base/lang-vn.tex b/tex/context/base/lang-vn.tex
index 78866750e..d249bfff9 100644
--- a/tex/context/base/lang-vn.tex
+++ b/tex/context/base/lang-vn.tex
@@ -11,6 +11,18 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
+\writestatus{loading}{Vietnamese Language}
+
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+%D
+%D \starttabulate[|lB|l|]
+%D \NC Vietnamese \NC \THANH\ \NC \NR
+%D \stoptabulate
+
\unprotect
\definesystemconstant {vietnamese} \definesystemconstant {vn}
diff --git a/tex/context/base/m-chart.tex b/tex/context/base/m-chart.tex
index 7598da088..e4b84abc1 100644
--- a/tex/context/base/m-chart.tex
+++ b/tex/context/base/m-chart.tex
@@ -8,21 +8,21 @@
%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
-%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
-%C details.
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% to do: \localpushmacro/\localpopmacro (dosetflowchart etc)
%D This is an experimental module. Pieces of code will be moved
-%D to other modules. More features are possible but will be
+%D to other modules. More features are possible but will be
%D interfaces later.
%D
-%D When finished this module will be documented. The main macro
-%D is a rather big one. I'm not sure if splitting it up is wise.
-
-% The 1pt offset is due to 'error' in pdftex form placement,
-% version 14a+ will be ok. This needs checking.
+%D When finished this module will be documented. The main macro
+%D is still a rather big one and there is some redundant and
+%D slow code that needs a clean up.
% arrow, dash
-% crossing
+% crossing
% \goto -> \normalgoto
% class -> class:name (ref prefix)
% c, automatisch geen overlap zoeken
@@ -46,7 +46,9 @@
% y : y offset (clipping)
% nx : minimaal aantal cellen horizontaal
% ny : minimaal aantal cellen vertikaal
-
+%
+% shape none en geen equivalent maken
+%
% kaderkleur achtergrondkleur
% lijnkleur lijndikte
% focus focuskaderkleur focusachtergrondkleur
@@ -56,83 +58,159 @@
\unprotect
-\def\setFLOWname#1#2%
- {\bgroup
+\definieersorteren [flowchart] [flowcharts] [\v!geen] % no access
+\stelsorterenin [flowchart] [\c!status=\v!stop] % off by default
+
+\def\@FLOW@{@FLOW@}
+\def\@FLOC@{@FLOC@}
+\def\@FLOX@{@FLOX@}
+
+\def\@@FLOW{@@FLOW}
+\def\@@FLOL{@@FLOL}
+\def\@@FLOS{@@FLOS}
+\def\@@FLOF{@@FLOF}
+\def\@@FLOT{@@FLOT}
+\def\@@FLOX{@@FLOX}
+
+\def\@@MPx {@@MPx}
+\def\@@MPy {@@MPy}
+
+\def\FLOWbufferprefix{flw-}
+
+\def\setFLOWname#1#2% funny hack that makes sure that we get
+ {\bgroup % names that are acceptable for METAPOST
\lccode`0=`a\lccode`1=`b\lccode`2=`c\lccode`3=`d\lccode`4=`e%
\lccode`5=`f\lccode`6=`g\lccode`7=`h\lccode`8=`i\lccode`9=`j%
\lccode` =`\_\lccode`-=`\_\lccode`_=`\_%
\lowercase{\gdef#1{#2}}%
\egroup}
+% een gobble als default is sneller, en dan alleen setten als
+% nodig
+
\def\resetFLOWcell%
- {\global\let\FLOWname \empty
+ {% variables
+ \global\let\FLOWname \empty
\global\let\FLOWalign \empty
\global\let\FLOWshape \empty
\global\let\FLOWlocation \empty
- \global\let\FLOWtext \empty
+ \global\let\FLOWtext \empty
\global\let\FLOWhelp \empty
\global\let\FLOWdestination\empty
\global\let\FLOWoverlay \empty
\global\let\FLOWfocus \empty
\global\let\tFLOWlabel \empty
\global\let\bFLOWlabel \empty
- \global\let\bcFLOWlabel \empty
\global\let\lFLOWlabel \empty
\global\let\rFLOWlabel \empty
- \def\name ##1{\def\FLOWcell{##1}\setFLOWname\FLOWname{name_##1}\ignorespaces}%
- \def\shape ##1{\gdef\FLOWshape{##1}\ignorespaces}%
- \def\destination ##1{\gdef\FLOWdestination{##1}\ignorespaces}%
- \def\location ##1{\setFLOWlocation##1\end\ignorespaces}%
- \def\focus ##1{\gdef\FLOWfocus{##1}\ignorespaces}%
- \def\overlay ##1{\gdef\FLOWoverlay{##1}\ignorespaces}%
- \def\figure ##1{\defineoverlay
- [dummy]
- [{\externalfigure
- [##1]
- [\c!breedte=\overlaywidth,
- \c!hoogte=\overlayheight]}]%
- \overlay{dummy}}%
- \def\dotext [##1]##2{\gdef\FLOWalign{##1}\gdef\FLOWtext{##2}}%
- \def\text {\dosingleempty\dotext}%
- \def\comment [##1]##2{\ignorespaces\dogobblesingleempty}%
- \def\label [##1]##2{\setgvalue{##1FLOWlabel}{##2}\ignorespaces}%
- \def\help ##1{\gdef\FLOWhelp{##1}\ignorespaces}%
- \def\connection[##1]##2{\ignorespaces}%
- \def\connect {\connection}%
- \def\locate {\location}}
+ \global\let\bcFLOWlabel \empty
+ \global\let\tcFLOWlabel \empty
+ \global\let\lcFLOWlabel \empty
+ \global\let\rcFLOWlabel \empty
+ \global\let\tFLOWexit \empty
+ \global\let\bFLOWexit \empty
+ \global\let\lFLOWexit \empty
+ \global\let\rFLOWexit \empty
+ % commands
+ \let\name \doFLOWname
+ \let\shape \doFLOWshape
+ \let\destination\doFLOWdestination
+ \let\location \doFLOWlocation
+ \let\focus \doFLOWfocus
+ \let\overlay \doFLOWoverlay
+ \let\figure \doFLOWfigure
+ \let\text \doFLOWtext
+ \let\comment \doFLOWcomment
+ \let\label \doFLOWlabel
+ \let\help \doFLOWhelp
+ \let\connection \doFLOWconnection
+ \let\exit \doFLOWexit
+ % convenience commands
+ \let\locate \doFLOWlocate
+ \let\connect \doFLOWconnect}
+
+\def\doFLOWname#1%
+ {\def\FLOWcell{#1}\setFLOWname\FLOWname{name_#1}\ignorespaces}
+
+\def\doFLOWshape#1%
+ {\gdef\FLOWshape{#1}\ignorespaces}
+
+\def\doFLOWdestination#1%
+ {\gdef\FLOWdestination{#1}\ignorespaces}
+
+\def\doFLOWlocation#1%
+ {\setFLOWlocation#1\end\ignorespaces}
+
+\def\doFLOWfocus#1%
+ {\gdef\FLOWfocus{#1}\ignorespaces}
+
+\def\doFLOWoverlay#1%
+ {\gdef\FLOWoverlay{#1}\ignorespaces}
+
+\def\doFLOWfigure#1%
+ {\defineoverlay
+ [\s!dummy]
+ [{\externalfigure
+ [#1]
+ [\c!breedte=\overlaywidth,
+ \c!hoogte=\overlayheight]}]%
+ \overlay{\s!dummy}}
+
+\def\doFLOWtext%
+ {\dosingleempty\dodoFLOWtext}
+
+\def\dodoFLOWtext[#1]#2%
+ {\gdef\FLOWalign{#1}\gdef\FLOWtext{#2}}
+
+\def\doFLOWcomment[#1]#2%
+ {\ignorespaces\dogobblesingleempty}
+
+\def\doFLOWlabel[#1]#2% wordt dit gebruikt ?
+ {\setgvalue{#1FLOWlabel}{#2}\ignorespaces}
+
+\def\doFLOWhelp#1%
+ {\gdef\FLOWhelp{#1}\ignorespaces}
+
+\def\doFLOWconnection[#1]#2%
+ {\ignorespaces}
+
+\def\doFLOWconnect%
+ {\connection}
+
+\def\doFLOWlocate%
+ {\location}
+
+\def\doFLOWexit[#1]#2%
+ {\setgvalue{#1FLOWexit}{#2}\ignorespaces}
\def\startFLOWchart%
{\bgroup
\let\stopFLOWchart\egroup
- \obeylines % lelijk, buffers nog eens fatsoeneren
+ \obeylines % lelijk, buffers nog eens fatsoeneren
\dodoubleempty\dostartFLOWchart}
\def\dostartFLOWchart[#1][#2]%
{\doglobal\increment\nofFLOWcharts
- \setxvalue{FLOW-#1}%
+ \flowchart{#1}%
+ \setxvalue{\@FLOW@-#1}%
{\noexpand\dosetFLOWchart[\nofFLOWcharts][#2]}%
- \dostartbuffer[flw-\nofFLOWcharts][startFLOWchart][stopFLOWchart]}
-
-\def\setupFLOWcharts%
- {\dodoubleargument\getparameters[@@FLOW]}
-
-\def\setupFLOWlines%
- {\dodoubleargument\getparameters[@@FLOL]}
+ \dostartbuffer[\FLOWbufferprefix\nofFLOWcharts][startFLOWchart][stopFLOWchart]}
-\def\setupFLOWshapes%
- {\dodoubleargument\getparameters[@@FLOS]}
-
-\def\setupFLOWfocus%
- {\dodoubleargument\getparameters[@@FLOF]}
+\def\setupFLOWcharts{\dodoubleargument\getparameters[\@@FLOW]}
+\def\setupFLOWlines {\dodoubleargument\getparameters[\@@FLOL]}
+\def\setupFLOWshapes{\dodoubleargument\getparameters[\@@FLOS]}
+\def\setupFLOWfocus {\dodoubleargument\getparameters[\@@FLOF]}
+\def\setupFLOWsets {\dodoubleargument\getparameters[\@@FLOX]}
\setupFLOWcharts
[\c!optie=,
+ \c!korps=,
\c!punt=, % private option
\c!breedte=12\bodyfontsize,
\c!hoogte=7\bodyfontsize,
\c!maxbreedte=,
\c!maxhoogte=,
- \c!offset=0pt, % auto offset: .5\bodyfontsize,
+ \c!offset=\v!standaard, % == auto offset
\c!dx=2\bodyfontsize,
\c!dy=2\bodyfontsize,
\c!nx=0, % 1,
@@ -173,10 +251,10 @@
\c!lijndikte=\@@FLOSlijndikte,
\c!offset=\@@FLOSoffset]
-\definecolor[FLOWfocuscolor] [s=.2]
-\definecolor[FLOWlinecolor] [s=.5]
-\definecolor[FLOWframecolor] [s=.7]
-\definecolor[FLOWbackgroundcolor] [s=.9]
+\definecolor [FLOWfocuscolor] [s=.2]
+\definecolor [FLOWlinecolor] [s=.5]
+\definecolor [FLOWframecolor] [s=.7]
+\definecolor [FLOWbackgroundcolor] [s=.9]
\newcounter\includeFLOWx
\newcounter\includeFLOWy
@@ -188,17 +266,15 @@
{\pushmacro\includeFLOWx
\pushmacro\includeFLOWy
\getparameters[FLOWi][x=1,y=1,#2]%
- \increment(\includeFLOWx,0\FLOWix)%
- \decrement(\includeFLOWx,1)%
- \increment(\includeFLOWy,0\FLOWiy)%
- \decrement(\includeFLOWy,1)%
+ \increment(\includeFLOWx,0\FLOWix)\decrement\includeFLOWx
+ \increment(\includeFLOWy,0\FLOWiy)\decrement\includeFLOWy
\def\dodoincludeFLOWchart##1%
- {\doifdefined{FLOW-##1}
+ {\doifdefined{\@FLOW@-##1}
{\pushmacro\dosetFLOWchart
- \def\dosetFLOWchart[####1][####2]%
+ \gdef\dosetFLOWchart[####1][####2]%
{\popmacro\dosetFLOWchart
- \haalbuffer[flw-####1]}%
- \getvalue{FLOW-##1}}}%
+ \haalbuffer[\FLOWbufferprefix####1]}%
+ \getvalue{\@FLOW@-##1}}}%
\processcommalist[#1]\dodoincludeFLOWchart
\popmacro\includeFLOWx
\popmacro\includeFLOWy}
@@ -216,7 +292,7 @@
left, right}
\def\FLOWlines%
- {up, down, left, right}
+ {up, down, left, right}
\def\FLOWsetconnect#1%
{\donefalse
@@ -248,93 +324,44 @@
\newif\ifFLOWscaling \FLOWscalingtrue
+\def\@@FLOW@@offset{\@@FLOWoffset}
+
\def\getFLOWchart%
{\dodoubleempty\dogetFLOWchart}
\def\dogetFLOWchart[#1][#2]%
- {\doifundefinedelse{FLOW-#1}
+ {\doifundefinedelse{\@FLOW@-#1}
{\writestatus{FLOW}{unknown chart #1}%
\framed
[\c!breedte=12\bodyfontsize,\c!hoogte=8\bodyfontsize]
{\tttf [chart #1]}}
{\dodogetFLOWchart[#1][#2]}}
-\def\dodogetFLOWchart[#1][#2]%
- {\bgroup
-\forgetall
-\offinterlineskip
+\def\dodogetFLOWchart[#1][#2]% to be split a bit more
+ {\vbox\bgroup
+ \forgetall
+ \dontcomplain
+ \offinterlineskip
\def\dosetFLOWchart[##1][##2]%
{\def\currentFLOWnumber{##1}%
- \getparameters[@@FLOW][##2]}%
- \getvalue{FLOW-#1}%
- \getparameters[@@FLOW][#2]% dubbelop ?
+ \getparameters[\@@FLOW][##2]}%
+ \getvalue{\@FLOW@-#1}%
+ \getparameters[\@@FLOW][#2]% dubbelop ?
\doifsomething{\@@FLOWautofocus}
- {\def\@@FLOWminx{100}\let\@@FLOWminy\@@FLOWminx
- \def\@@FLOWmaxx {0}\let\@@FLOWmaxy\@@FLOWmaxx
- \def\@@FLOWabsx {0}\let\@@FLOWabsy\@@FLOWabsx
- \def\startFLOWcell%
- {\resetFLOWcell}%
- \def\dodolocation##1##2##3##4%
- {\ifnum##1##2##4\relax
- \!!counta=##1\advance\!!counta by ##31\relax
- \edef##4{\ifnum\!!counta<1 1\else\the\!!counta\fi}%
- \fi}%
- \def\dolocation##1,##2\end%
- {\ifnum##1>\@@FLOWabsx\def\@@FLOWabsx{##1}\fi
- \ifnum##2>\@@FLOWabsy\def\@@FLOWabsy{##2}\fi
- \ExpandBothAfter\doifinset{\FLOWcell}{\@@FLOWautofocus}
- {\dodolocation{##1}<-\@@FLOWminx
- \dodolocation{##1}>+\@@FLOWmaxx
- \dodolocation{##2}<-\@@FLOWminy
- \dodolocation{##2}>+\@@FLOWmaxy}}%
- \def\stopFLOWcell%
- {\expandafter\dolocation\FLOWlocation\end}%
- \haalbuffer[flw-\currentFLOWnumber]%
- %\message{AUTOSHAPE 1: (\@@FLOWminx,\@@FLOWminy)->(\@@FLOWmaxx,\@@FLOWmaxy)}%
- \ifnum\@@FLOWabsx<\@@FLOWmaxx\let\@@FLOWmaxx\@@FLOWabsx\fi
- \ifnum\@@FLOWabsy<\@@FLOWmaxy\let\@@FLOWmaxy\@@FLOWabsy\fi
- %\message{AUTOSHAPE 2: (\@@FLOWminx,\@@FLOWminy)->(\@@FLOWmaxx,\@@FLOWmaxy)}%
- \donetrue
- \ifnum\@@FLOWminx=100 \donefalse\fi
- \ifnum\@@FLOWminy=100 \donefalse\fi
- \ifnum\@@FLOWmaxx=0 \donefalse\fi
- \ifnum\@@FLOWmaxy=0 \donefalse\fi
- \def\do##1##2##3##4%
- {\ifdone
- \let##1=##2%
- \!!counta=##3%
- \advance\!!counta 1\advance\!!counta -##2\relax
- \ifnum\!!counta<1 \!!counta=1 \fi
- \edef##4{\the\!!counta}%
- \else
- \def##1{1}\def##4{0}% {1}%
- \fi}%
- \do\@@FLOWx\@@FLOWminx\@@FLOWmaxx\@@FLOWnx
- \do\@@FLOWy\@@FLOWminy\@@FLOWmaxy\@@FLOWny}%
+ {\checkFLOWautofocus}%
%\message{AUTOSHAPE 3: (\@@FLOWx,\@@FLOWy)->(\@@FLOWnx,\@@FLOWny)}\wait
\let\FLOWwidth \@@FLOWnx
\let\FLOWheight\@@FLOWny
- \def\getFLOWlocation##1,##2\end%
- {\ifnum0##1>\FLOWwidth \edef\FLOWwidth {##1}\fi
- \ifnum0##2>\FLOWheight\edef\FLOWheight{##2}\fi}%
- \long\def\startFLOWcell##1\stopFLOWcell%
- {\resetFLOWcell
- \ignorespaces##1\unskip
- \expandafter\getFLOWlocation\FLOWlocation\end
- \ignorespaces}%
- \haalbuffer[flw-\currentFLOWnumber]%
- \ifcase\@@FLOWnx\relax
- \let\@@FLOWnx\FLOWwidth
- \fi
- \ifcase\@@FLOWny\relax
- \let\@@FLOWny\FLOWheight
- \fi
+ \let\startFLOWcell\startFLOWcellA
+ \haalbuffer[\FLOWbufferprefix\currentFLOWnumber]%
+ \ifcase\@@FLOWnx\relax \let\@@FLOWnx\FLOWwidth \fi
+ \ifcase\@@FLOWny\relax \let\@@FLOWny\FLOWheight \fi
\doifnothing{\@@FLOWmaxbreedte\@@FLOWmaxhoogte}{\FLOWscalingfalse}%
- \ifFLOWscaling
+ \ifFLOWscaling
\doifnothing{\@@FLOWmaxbreedte}{\let\@@FLOWmaxbreedte\maxdimen}%
\doifnothing{\@@FLOWmaxhoogte} {\let\@@FLOWmaxhoogte \maxdimen}%
\scratchcounter=\bodyfontpoints
- \doloop % NOG FONTSWITCH OM EX EN EM TE LATEN WERKEN
+ \doloop % NOG FONTSWITCH OM EX EN EM TE LATEN WERKEN
{\ifnum\scratchcounter>1 % NU DIMENSIONS IN TERMS OF BODYFONTSIZE
\bodyfontsize=\the\scratchcounter pt
\dimen0=\@@FLOWmaxbreedte
@@ -364,7 +391,9 @@
\expanded{\switchtobodyfont[\the\scratchcounter pt]}%
\forgetall
\offinterlineskip
- \fi
+ \else\ifx\@@FLOWkorps\empty\else
+ \expanded{\switchtobodyfont[\@@FLOWkorps]}% \expanded ?
+ \fi\fi
\global\let\FLOWcells\empty
\dimen0=\@@FLOWbreedte
\edef\FLOWshapewidth{\the\dimen0}%
@@ -397,44 +426,47 @@
\scratchdimen=\@@FLOLstraal
\edef\@@FLOLstraal{\the\scratchdimen}%
\fi
- \ifdim\@@FLOWoffset=\!!zeropoint
- \edef\@@FLOWoffset{\the\scratchdimen}%
- \else
- \scratchdimen=\@@FLOWoffset
- \edef\@@FLOWoffset{\the\scratchdimen}%
- \fi
+ \processaction % magic 2.5
+ [\@@FLOWoffset]
+ [ \v!geen=>\scratchdimen=-2.5\scratchdimen,
+ \v!overlay=>\scratchdimen=-2.5\scratchdimen,
+ \v!standaard=>\scratchdimen=\scratchdimen,
+ \s!unknown=>\scratchdimen=\@@FLOWoffset,
+ \s!default=>\scratchdimen=-2.5\scratchdimen]%
+ \edef\@@FLOW@@offset{\the\scratchdimen}%
\forgetall
\offinterlineskip
\resetMPdrawing
\doglobal\newcounter\FLOWcomment
\startMPdrawing
- input mp-chart.mp ;
+ input mp-char.mp ;
grid_width := \FLOWgridwidth ;
grid_height := \FLOWgridheight ;
shape_width := \FLOWshapewidth ;
shape_height := \FLOWshapeheight ;
connection_line_width := \@@FLOLlijndikte ;
- connection_smooth_size := \@@FLOLstraal ; % 2.5connection_line_width ;
- connection_arrow_size := \@@FLOLstraal ; % 2.5connection_line_width ;
- connection_dash_size := \@@FLOLstraal ; % 2.5connection_line_width ;
- \stopMPdrawing
-% \def\getFLOWlocation##1,##2\end%
-% {\ifnum0##1>\FLOWwidth \edef\FLOWwidth {##1}\fi
-% \ifnum0##2>\FLOWheight\edef\FLOWheight{##2}\fi}%
-% \long\def\startFLOWcell##1\stopFLOWcell%
-% {\resetFLOWcell
-% \ignorespaces##1\unskip
-% \expandafter\getFLOWlocation\FLOWlocation\end
-% \ignorespaces}%
-% \haalbuffer[flw-\currentFLOWnumber]%
-% \ifnum\@@FLOWnx\@@FLOWny=11 % listig
-% \let\@@FLOWnx\FLOWwidth
-% \let\@@FLOWny\FLOWheight
-% \fi
- \startMPdrawing
+ connection_smooth_size := \@@FLOLstraal ;
+ connection_arrow_size := \@@FLOLstraal ;
+ connection_dash_size := \@@FLOLstraal ;
+% \stopMPdrawing
+% \def\getFLOWlocationX##1,##2\end%
+% {\ifnum0##1>\FLOWwidth \edef\FLOWwidth {##1}\fi
+% \ifnum0##2>\FLOWheight\edef\FLOWheight{##2}\fi}%
+% \long\def\startFLOWcellX##1\stopFLOWcell%
+% {\resetFLOWcell
+% \ignorespaces##1\unskip
+% \expandafter\getFLOWlocationX\FLOWlocation\end
+% \ignorespaces}%
+% \let\startFLOWcell\startFLOWcellX
+% \haalbuffer[\FLOWbufferprefix\currentFLOWnumber]%
+% \ifnum\@@FLOWnx\@@FLOWny=11 % listig
+% \let\@@FLOWnx\FLOWwidth
+% \let\@@FLOWny\FLOWheight
+% \fi
+% \startMPdrawing
begin_chart(0,\FLOWwidth,\FLOWheight);
reverse_y := true ;
- chart_offset := \@@FLOWoffset ;
+ chart_offset := \@@FLOW@@offset ;
\stopMPdrawing
\doifelsenothing{\@@FLOWachtergrondkleur}
{\startMPdrawing
@@ -448,7 +480,7 @@
show_con_points := true ;
show_mid_points := true ;
show_all_points := true ;
- \stopMPdrawing}
+ \stopMPdrawing}%
\processaction % private
[\@@FLOWpunt]
[ \v!ja=>\startMPdrawing
@@ -459,86 +491,10 @@
\s!unknown=>\startMPdrawing
show_\@@FLOWpunt_points := true ;
\stopMPdrawing]%
- \long\def\startFLOWcell##1\stopFLOWcell%
- {\resetFLOWcell
- \ignorespaces##1\unskip
- \setxvalue{FLOW-loc-\FLOWname}{\FLOWlocation}%
- \ifx\FLOWshape\empty
- \global\let\FLOWshape\@@FLOSdefault
- \fi
- \doifnot{\FLOWshape}{\v!geen}
- {\ExpandBothAfter\doifinsetelse{\FLOWshape}{\FLOWshapes}
- {\edef\FLOWshapetag{shape_\FLOWshape}%
- \@EA\setFLOWname\@EA\FLOWshapetag\@EA{\FLOWshapetag}}
- {\doifnumberelse{\FLOWshape}
- {\let\FLOWshapetag\FLOWshape}
- {\let\FLOWshapetag\empty}}%
- \ifx\FLOWshapetag\empty \else
- \ExpandBothAfter\doifinsetelse{\FLOWshape}{\FLOWlines}
- {\chardef\FLOWstate=0 }
- {\ExpandBothAfter\doifcommonelse{\FLOWcell,\FLOWfocus}{\@@FLOWfocus}
- {\chardef\FLOWstate=1 }
- {\chardef\FLOWstate=2 }}%
- \startMPdrawing
- begin_sub_chart ;
- \ifcase\FLOWstate
- shape_line_color := \MPcolor{\@@FLOLkleur} ;
- shape_fill_color := \MPcolor{\@@FLOLkleur} ;
- shape_line_width := \@@FLOLlijndikte ;
- \or
- shape_line_color := \MPcolor{\@@FLOFkaderkleur} ;
- shape_fill_color := \MPcolor{\@@FLOFachtergrondkleur} ;
- shape_line_width := \@@FLOFlijndikte ;
- \or
- shape_line_color := \MPcolor{\@@FLOSkaderkleur} ;
- shape_fill_color := \MPcolor{\@@FLOSachtergrondkleur} ;
- shape_line_width := \@@FLOSlijndikte ;
- \fi
- \ifx\FLOWoverlay\empty
- peepshape := false ;
- \else
- peepshape := true ;
- \fi
- new_shape(\FLOWlocation,\FLOWshapetag) ;
- end_sub_chart ;
- \stopMPdrawing
- \fi}%
- \ignorespaces}%
- \haalbuffer[flw-\currentFLOWnumber]%
- \long\def\startFLOWcell##1\stopFLOWcell%
- {\resetFLOWcell
- \def\connection[####1]####2%
- {\doglobal\increment\FLOWcomment
- \setFLOWname\otherFLOWname{name_####2}%
- \doifdefinedelse{FLOW-loc-\FLOWname}
- {\edef\FLOWfrom{\getvalue{FLOW-loc-\FLOWname}}}
- {\edef\FLOWfrom{0,0}}%
- \doifdefinedelse{FLOW-loc-\otherFLOWname}
- {\edef\FLOWto {\getvalue{FLOW-loc-\otherFLOWname}}}
- {\edef\FLOWto {0,0}}%
- \FLOWsetconnect{####1}%
- \ifx\cFLOWfrom\empty\else
- \doifelse{\@@FLOLhoek}{\v!rond}
- {\startMPdrawing smooth := true ; \stopMPdrawing}
- {\startMPdrawing smooth := false ; \stopMPdrawing}%
- \doifelse{\@@FLOLstreep}{\v!ja}
- {\startMPdrawing dashline := true ; \stopMPdrawing}
- {\startMPdrawing dashline := false ; \stopMPdrawing}%
- \doifelse{\@@FLOLpijl}{\v!ja}
- {\startMPdrawing arrowtip := true ; \stopMPdrawing}
- {\startMPdrawing arrowtip := false ; \stopMPdrawing}%
- \doifelse{\@@FLOLoffset}{\v!geen}
- {\startMPdrawing touchshape := true ; \stopMPdrawing}
- {\startMPdrawing touchshape := false ; \stopMPdrawing}%
- \startMPdrawing
- connection_line_color := \MPcolor{\@@FLOLkleur} ;
- connection_line_width := \@@FLOLlijndikte ;
- connect_\cFLOWfrom_\cFLOWto (\FLOWfrom,\zFLOWfrom) (\FLOWto,\zFLOWto) ;
- \stopMPdrawing
- \fi
- \ignorespaces}%
- \ignorespaces##1\unskip}%
- \haalbuffer[flw-\currentFLOWnumber]%
+ \let\startFLOWcell\startFLOWcellB
+ \haalbuffer[\FLOWbufferprefix\currentFLOWnumber]%
+ \let\startFLOWcell\startFLOWcellC
+ \haalbuffer[\FLOWbufferprefix\currentFLOWnumber]%
\startMPdrawing
clip_chart(\@@FLOWx,\@@FLOWy,\@@FLOWnx,\@@FLOWny) ;
end_chart ;
@@ -548,213 +504,34 @@
\def\MPmessage##1%
{\writestatus{MP charts}{##1}}%
\def\MPposition##1##2##3%
- {\setvalue{MPx##1}{##2}\setvalue{MPy##1}{##3}}%
+ {\setvalue{\@@MPx##1}{##2}\setvalue{\@@MPy##1}{##3}}%
\def\MPclippath##1##2##3##4%
{\def\clipMPllx{##1bp}\def\clipMPlly{##2bp}%
\def\clipMPurx{##3bp}\def\clipMPury{##4bp}}%
\def\MPareapath##1##2##3##4%
{\def\areaMPllx{##1bp}\def\areaMPlly{##2bp}%
\def\areaMPurx{##3bp}\def\areaMPury{##4bp}}%
- \readfile{\MPdatafile}{}{}%
+ \getMPdata
\doglobal\newcounter\FLOWcomment
- \long\def\startFLOWcell##1\stopFLOWcell%
- {\resetFLOWcell
- \ignorespaces##1\unskip
- \def\doprocessFLOWcell####1,####2\end % kan ook met area
- {\!!counta=####1\relax
- \!!countb=####2\relax
- \!!countc=\@@FLOWx
- \!!countd=\@@FLOWy
- \advance\!!countc \@@FLOWnx
- \advance\!!countd \@@FLOWny
- \advance\!!countc -1
- \advance\!!countd -1
- \ifnum\!!counta<\@@FLOWx\relax
- \donefalse
- \else\ifnum\!!counta>\!!countc
- \donefalse
- \else\ifnum\!!countb<\@@FLOWy\relax
- \donefalse
- \else\ifnum\!!countb>\!!countd
- \donefalse
- \else
- \donetrue
- \doglobal\addtocommalist\FLOWcell\FLOWcells
- \advance\!!counta by -\@@FLOWx\advance\!!counta by 1
- \advance\!!countb by -\@@FLOWy\advance\!!countb by 1
- \dimen0=\FLOWgridwidth\dimen0=\!!counta\dimen0
- \advance\dimen0 by -\FLOWgridwidth
- \dimen4=\FLOWgridwidth\advance\dimen4 by -\FLOWshapewidth
- \advance\dimen0 by .5\dimen4
- \dimen2=\FLOWgridheight\dimen2=\!!countb\dimen2
- \dimen4=\FLOWgridheight\advance\dimen4 by -\FLOWshapeheight
- \advance\dimen2 by -.5\dimen4
- \setbox0=\hbox
- {\ifx\FLOWalign\empty\else
- \setupframed
- [\c!uitlijnen=\v!normaal,\c!onder=\vfill,\c!boven=\vfill]%
- \@EA\processallactionsinset\@EA
- [\FLOWalign]
- [t=>{\setupframed[\c!onder=\vfill,\c!boven=]},
- b=>{\setupframed[\c!onder=,\c!boven=\vfill]},
- l=>{\setupframed[\c!uitlijnen=\v!rechts]},
- r=>{\setupframed[\c!uitlijnen=\v!links]},
- m=>{\setupframed[\c!uitlijnen=\v!midden]},
- c=>{\setupframed[\c!uitlijnen=\v!midden]}]%
- \fi
- \doifelse{\FLOWshape}{\v!geen}
- {\setupframed[\c!offset=\v!overlay]}
- {\setupframed[\c!offset=.5\bodyfontsize]}%
- \framed
- [\c!kader=\v!uit,\c!breedte=\FLOWshapewidth,\c!hoogte=\FLOWshapeheight]
- {\FLOWtext}}%
- \showFLOWhelp0
- \ifx\FLOWdestination\empty\else
- \setbox0=\hbox
- {\setupinteraction[\c!kleur=,\c!contrastkleur=]%
- \naarbox{\box0}[\FLOWdestination]}%
- \fi
- \edef\FLOWdx{\the\dimen0}%
- \edef\FLOWdy{\the\dimen2}%
- \def\positionFLOWzero%
- {\setbox0=\hbox{\hskip\FLOWdx\lower\FLOWdy\box0}%
- \smashbox0
- \box0} %
- \positionFLOWzero
- \dimen0=\FLOWshapewidth \dimen2=.5\dimen0
- \dimen4=\FLOWshapeheight\dimen6=.5\dimen4
- \boxoffset=.5\bodyfontsize
- \setbox0=\hbox{\hskip\dimen2\raise\dimen4
- \hbox{\righttopbox{\strut\tFLOWlabel}}}%
- \positionFLOWzero
- \setbox0=\hbox{\hskip\dimen2
- \hbox{\rightbottombox{\strut\bFLOWlabel}}}%
- \positionFLOWzero
- \setbox0=\hbox{\raise\dimen6
- \hbox{\lefttopbox {\strut\lFLOWlabel}}}%
- \positionFLOWzero
- \setbox0=\hbox{\hskip\dimen0\raise\dimen6
- \hbox{\righttopbox{\strut\rFLOWlabel}}}%
- \positionFLOWzero
- \setbox0=\hbox{\hskip\dimen2 % for me only
- \hbox{\bottombox{\strut\bcFLOWlabel}}}%
- \positionFLOWzero
- \fi\fi\fi\fi}%
- \expandafter\doprocessFLOWcell\FLOWlocation\end
- \def\connection[####1]####2%
- {\doglobal\increment\FLOWcomment
- \ignorespaces}%
- \def\comment[####1]####2%
- {\bgroup
- \let\FLOW \middlebox
- \let\FLOWb \bottombox
- \let\FLOWbl\bottomleftbox
- \let\FLOWbr\bottomrightbox
- \let\FLOWt \topbox
- \let\FLOWtl\topleftbox
- \let\FLOWtr\toprightbox
- \let\FLOWl \leftbox
- \let\FLOWlt\lefttopbox
- \let\FLOWlb\leftbottombox
- \let\FLOWr \rightbox
- \let\FLOWrt\righttopbox
- \let\FLOWrb\rightbottombox
- \let\FLOWc \middlebox
- \ifcase0\getvalue{MPx\FLOWcomment}\getvalue{MPy\FLOWcomment}\relax
- \else
- \ifdim\getvalue{MPx\FLOWcomment}bp<\areaMPllx\relax\else
- \ifdim\getvalue{MPx\FLOWcomment}bp>\areaMPurx\relax\else
- \ifdim\getvalue{MPy\FLOWcomment}bp<\areaMPlly\relax\else
- \ifdim\getvalue{MPy\FLOWcomment}bp>\areaMPury\relax\else
- \dimen0=\getvalue{MPx\FLOWcomment}bp
- \advance\dimen0 by -\@@FLOWoffset
- \advance\dimen0 by -\clipMPllx
- \dimen2=\clipMPury
- \advance\dimen2 by -\@@FLOWoffset
- \advance\dimen2 by -\getvalue{MPy\FLOWcomment}bp
- \setbox0=\hbox{\strut####2}%
- \boxoffset=.5\bodyfontsize
- \setbox0=\hbox
- {\hskip\dimen0\lower\dimen2\getvalue{FLOW####1}{\box0}}%
- \wd0=\!!zeropoint\ht0=\!!zeropoint\dp0=\!!zeropoint
- \box0
- \fi
- \fi
- \fi
- \fi
- \fi
- \egroup
- \ignorespaces}%
- \ignorespaces##1\unskip
- \ignorespaces}%
+ \let\startFLOWcell\startFLOWcellD
\setbox2=\vbox to \ht0
{\forgetall%%%\offinterlineskip
- \haalbuffer[flw-\currentFLOWnumber]\vss}%
+ \haalbuffer[\FLOWbufferprefix\currentFLOWnumber]\vss}%
\setbox2=\hbox
- {\hskip\@@FLOWoffset\lower\@@FLOWoffset\box2}%
+ {\hskip\@@FLOW@@offset\lower\@@FLOW@@offset\box2}%
\wd2=\wd0\ht2=\ht0\dp2=\dp0
- %%%%%%%%
- \long\def\startFLOWcell##1\stopFLOWcell%
- {\resetFLOWcell
- \ignorespaces##1\unskip
- \def\doprocessFLOWcell####1,####2\end % redundant
- {\ifx\FLOWoverlay\empty \else
- \!!counta=####1\relax
- \!!countb=####2\relax
- \!!countc=\@@FLOWx
- \!!countd=\@@FLOWy
- \advance\!!countc \@@FLOWnx
- \advance\!!countd \@@FLOWny
- \advance\!!countc -1
- \advance\!!countd -1
- \ifnum\!!counta<\@@FLOWx\relax
- \donefalse
- \else\ifnum\!!counta>\!!countc
- \donefalse
- \else\ifnum\!!countb<\@@FLOWy\relax
- \donefalse
- \else\ifnum\!!countb>\!!countd
- \donefalse
- \else
- \donetrue
- \fi\fi\fi\fi
- \ifdone
- \advance\!!counta by -\@@FLOWx\advance\!!counta by 1
- \advance\!!countb by -\@@FLOWy\advance\!!countb by 1
- \dimen0=\FLOWgridwidth\dimen0=\!!counta\dimen0
- \advance\dimen0 by -\FLOWgridwidth
- \dimen4=\FLOWgridwidth\advance\dimen4 by -\FLOWshapewidth
- \advance\dimen0 by .5\dimen4
- \dimen2=\FLOWgridheight\dimen2=\!!countb\dimen2
- \dimen4=\FLOWgridheight\advance\dimen4 by -\FLOWshapeheight
- \advance\dimen2 by -.5\dimen4
- \edef\FLOWdx{\the\dimen0}%
- \edef\FLOWdy{\the\dimen2}%
- \setbox0=\hbox
- {\framed
- [\c!kader=\v!uit,
- \c!achtergrond={\@@FLOWachtergrond,\FLOWoverlay},
- \c!achtergrondkleur=\@@FLOSachtergrondkleur,
- \c!breedte=\FLOWshapewidth,\c!hoogte=\FLOWshapeheight]
- {}}%
- \setbox0=\hbox{\hskip\FLOWdx\lower\FLOWdy\box0}%
- \smashbox0
- \box0
- \fi
- \fi}%
- \expandafter\doprocessFLOWcell\FLOWlocation\end}%
+ \let\startFLOWcell\startFLOWcellE
\setbox4=\vbox to \ht0
{\forgetall%%%\offinterlineskip
- \haalbuffer[flw-\currentFLOWnumber]\vss}%
+ \haalbuffer[\FLOWbufferprefix\currentFLOWnumber]\vss}%
\setbox4=\hbox
- {\hskip\@@FLOWoffset\lower\@@FLOWoffset\box4}%
+ {\hskip\@@FLOW@@offset\lower\@@FLOW@@offset\box4}%
\wd4=\wd0\ht4=\ht0\dp4=\dp0
- %%%%%%%%
\doifelse{\@@FLOWoptie}{\v!test}
{\setbox6=\vbox
{\forgetall
- \vskip\@@FLOWoffset
- \hskip\@@FLOWoffset
+ \vskip\@@FLOW@@offset
+ \hskip\@@FLOW@@offset
\rooster
[\c!x=\@@FLOWx,\c!nx=\@@FLOWnx,\c!dx=\withoutpt\FLOWgridwidth,
\c!y=\@@FLOWy,\c!ny=\@@FLOWny,\c!dy=\withoutpt\FLOWgridheight,
@@ -763,11 +540,11 @@
\wd6=\wd0\ht6=\ht0\dp6=\dp0
\setbox8=\vbox
{\forgetall\offinterlineskip
- \vskip\@@FLOWoffset
+ \vskip\@@FLOW@@offset
\dostepwiserecurse{\@@FLOWy}{\@@FLOWny}{1}
{\vbox to \FLOWgridheight
{\vfill
- \hskip\@@FLOWoffset
+ \hskip\@@FLOW@@offset
\hbox
{\dostepwiserecurse{\@@FLOWx}{\@@FLOWnx}{1}
{\hbox to \FLOWgridwidth
@@ -780,13 +557,13 @@
\hfill}}}
\vfill}}}%
\wd8=\wd0\ht8=\ht0\dp8=\dp0
- \framed
+ \framed
[\c!offset=\v!overlay,\c!kaderkleur=green]
{\hbox{\box4\hskip-\wd0\box0\hskip-\wd2\box2\hskip-\wd6\box6\hskip-\wd8\box8}}}
{\framed
[\c!offset=\v!overlay,
\c!kader=\@@FLOWkader,
-\c!lijndikte=\@@FLOWlijndikte,
+ \c!lijndikte=\@@FLOWlijndikte,
\c!kaderkleur=\@@FLOWkaderkleur,
\c!achtergrond=\@@FLOWachtergrond,
\c!achtergrondkleur=\@@FLOWachtergrondkleur]
@@ -794,41 +571,408 @@
%\message{[\FLOWcells]}\wait
\egroup}
+% Pass A
+
+\long\def\startFLOWcellA#1\stopFLOWcell%
+ {\resetFLOWcell
+ \ignorespaces#1\unskip
+ \expandafter\getFLOWlocationA\FLOWlocation\end
+ \ignorespaces}
+
+\def\getFLOWlocationA#1,#2\end%
+ {\ifnum0#1>\FLOWwidth \edef\FLOWwidth {#1}\fi
+ \ifnum0#2>\FLOWheight\edef\FLOWheight{#2}\fi}
+
+% Pass B
+%
+% beware: the - after \@FLOC@ is needed since name can be
+% empty and we don't want to redefine \@FLOC@ itself by
+% mistake
+
+\long\def\startFLOWcellB#1\stopFLOWcell%
+ {\resetFLOWcell\ignorespaces#1\unskip%
+ \setxvalue{\@FLOC@-\FLOWname}{\FLOWlocation}% kost veel cs's
+ \ifx\FLOWshape\empty
+ \global\let\FLOWshape\@@FLOSdefault
+ \fi
+ \doifnot{\FLOWshape}{none} % {\v!geen}
+ {\ExpandBothAfter\doifinsetelse{\FLOWshape}{\FLOWshapes}
+ {\edef\FLOWshapetag{shape_\FLOWshape}% beter \expanded
+ \@EA\setFLOWname\@EA\FLOWshapetag\@EA{\FLOWshapetag}}
+ {\doifnumberelse{\FLOWshape}
+ {\let\FLOWshapetag\FLOWshape}
+ {\let\FLOWshapetag\empty}}%
+ \ifx\FLOWshapetag\empty \else
+ \ExpandBothAfter\doifinsetelse{\FLOWshape}{\FLOWlines}
+ {\chardef\FLOWstate=0 }
+ {\ExpandBothAfter\doifcommonelse{\FLOWcell,\FLOWfocus}{\@@FLOWfocus}
+ {\chardef\FLOWstate=1 }
+ {\chardef\FLOWstate=2 }}%
+ \startMPdrawing
+ begin_sub_chart ;
+ \ifcase\FLOWstate
+ shape_line_color := \MPcolor{\@@FLOLkleur} ;
+ shape_fill_color := \MPcolor{\@@FLOLkleur} ;
+ shape_line_width := \@@FLOLlijndikte ;
+ \or
+ shape_line_color := \MPcolor{\@@FLOFkaderkleur} ;
+ shape_fill_color := \MPcolor{\@@FLOFachtergrondkleur} ;
+ shape_line_width := \@@FLOFlijndikte ;
+ \or
+ shape_line_color := \MPcolor{\@@FLOSkaderkleur} ;
+ shape_fill_color := \MPcolor{\@@FLOSachtergrondkleur} ;
+ shape_line_width := \@@FLOSlijndikte ;
+ \fi
+ %\ifx\FLOWoverlay\empty
+ % peepshape := false ;
+ %\else
+ % peepshape := true ;
+ %\fi
+ peepshape := \ifx\FLOWoverlay\empty false \else true \fi ;
+ new_shape(\FLOWlocation,\FLOWshapetag) ;
+ end_sub_chart ;
+ \stopMPdrawing
+ \fi}%
+ \ignorespaces}
+
+% Pass C
+
+\long\def\startFLOWcellC#1\stopFLOWcell%
+ {\resetFLOWcell
+ \ignorespaces#1\unskip % makes sure that vars are set
+ \let\connection\doFLOWconnectionC
+ \ignorespaces#1\unskip}
+
+\def\FLOWorigin{0,0}
+
+\def\doFLOWconnectionC[#1]#2%
+ {\doglobal\increment\FLOWcomment
+ \setFLOWname\otherFLOWname{name_#2}%
+ \doifdefinedelse{\@FLOC@-\FLOWname}
+ {\edef\FLOWfrom{\getvalue{\@FLOC@-\FLOWname}}}
+ {\let \FLOWfrom \FLOWorigin}%
+ \ifx\FLOWfrom\FLOWorigin \else
+ \doifdefinedelse{\@FLOC@-\otherFLOWname}
+ {\edef\FLOWto {\getvalue{\@FLOC@-\otherFLOWname}}}
+ {\let \FLOWto \FLOWorigin}%
+ \ifx\FLOWto\FLOWorigin \else
+ \FLOWsetconnect{#1}%
+ \ifx\cFLOWfrom\empty \else
+ \doifelse{\@@FLOLhoek}{\v!rond}
+ {\startMPdrawing smooth := true ; \stopMPdrawing}
+ {\startMPdrawing smooth := false ; \stopMPdrawing}%
+ \doifelse{\@@FLOLstreep}{\v!ja}
+ {\startMPdrawing dashline := true ; \stopMPdrawing}
+ {\startMPdrawing dashline := false ; \stopMPdrawing}%
+ \doifelse{\@@FLOLpijl}{\v!ja}
+ {\startMPdrawing arrowtip := true ; \stopMPdrawing}
+ {\startMPdrawing arrowtip := false ; \stopMPdrawing}%
+ \doifelse{\@@FLOLoffset}{none} % {\v!geen}
+ {\startMPdrawing touchshape := true ; \stopMPdrawing}
+ {\startMPdrawing touchshape := false ; \stopMPdrawing}%
+ \startMPdrawing
+ connection_line_color := \MPcolor{\@@FLOLkleur} ;
+ connection_line_width := \@@FLOLlijndikte ;
+ connect_\cFLOWfrom_\cFLOWto (\FLOWfrom,\zFLOWfrom) (\FLOWto,\zFLOWto) ;
+ \stopMPdrawing
+ \fi
+ \fi
+ \fi
+ \ignorespaces}
+
+% Pass D
+
+\long\def\startFLOWcellD#1\stopFLOWcell%
+ {\resetFLOWcell
+ \ignorespaces#1\unskip % presets vars
+ \let\doprocessFLOWcell\doprocessFLOWcellD
+ \expandafter\doprocessFLOWcellD\FLOWlocation\end
+ \let\connection\doFLOWconnectionD
+ \let\comment\doFLOWcommentD
+ \ignorespaces#1\unskip\ignorespaces}
+
+\def\doFLOWconnectionD[#1]#2%
+ {\doglobal\increment\FLOWcomment
+ \ignorespaces}
+
+\def\doFLOWcommentD[#1]#2%
+ {\bgroup
+ \let\FLOW \middlebox
+ \let\FLOWb \bottombox
+ \let\FLOWbl\bottomleftbox
+ \let\FLOWbr\bottomrightbox
+ \let\FLOWt \topbox
+ \let\FLOWtl\topleftbox
+ \let\FLOWtr\toprightbox
+ \let\FLOWl \leftbox
+ \let\FLOWlt\lefttopbox
+ \let\FLOWlb\leftbottombox
+ \let\FLOWr \rightbox
+ \let\FLOWrt\righttopbox
+ \let\FLOWrb\rightbottombox
+ \let\FLOWc \middlebox
+%\ifdefined{FLOW#1}%
+ \ifcase0\getvalue{\@@MPx\FLOWcomment}\getvalue{\@@MPy\FLOWcomment}\relax
+ \else
+ \ifdim\getvalue{\@@MPx\FLOWcomment}bp<\areaMPllx\relax\else
+ \ifdim\getvalue{\@@MPx\FLOWcomment}bp>\areaMPurx\relax\else
+ \ifdim\getvalue{\@@MPy\FLOWcomment}bp<\areaMPlly\relax\else
+ \ifdim\getvalue{\@@MPy\FLOWcomment}bp>\areaMPury\relax\else
+ \dimen0=\getvalue{\@@MPx\FLOWcomment}bp
+ \advance\dimen0 by -\@@FLOW@@offset
+ \advance\dimen0 by -\clipMPllx
+ \dimen2=\clipMPury
+ \advance\dimen2 by -\@@FLOW@@offset
+ \advance\dimen2 by -\getvalue{\@@MPy\FLOWcomment}bp
+ \setbox0=\hbox{\strut#2}%
+ \boxoffset=.5\bodyfontsize
+ \setbox0=\hbox
+ {\hskip\dimen0\lower\dimen2\getvalue{FLOW#1}{\box0}}%
+ \wd0=\!!zeropoint\ht0=\!!zeropoint\dp0=\!!zeropoint
+ \box0
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+%\fi
+ \egroup
+ \ignorespaces}
+
+\def\doprocessFLOWcellD#1,#2\end % kan ook met area
+ {\!!counta=#1\relax
+ \!!countb=#2\relax
+ \!!countc=\@@FLOWx
+ \!!countd=\@@FLOWy
+ \advance\!!countc \@@FLOWnx
+ \advance\!!countd \@@FLOWny
+ \advance\!!countc -1
+ \advance\!!countd -1
+ \ifnum\!!counta<\@@FLOWx\relax \donefalse
+ \else\ifnum\!!counta>\!!countc \donefalse
+ \else\ifnum\!!countb<\@@FLOWy\relax \donefalse
+ \else\ifnum\!!countb>\!!countd \donefalse
+ \else \donetrue
+ \doglobal\addtocommalist\FLOWcell\FLOWcells
+ \advance\!!counta by -\@@FLOWx\advance\!!counta by 1
+ \advance\!!countb by -\@@FLOWy\advance\!!countb by 1
+ \dimen0=\FLOWgridwidth\dimen0=\!!counta\dimen0
+ \advance\dimen0 by -\FLOWgridwidth
+ \dimen4=\FLOWgridwidth\advance\dimen4 by -\FLOWshapewidth
+ \advance\dimen0 by .5\dimen4
+ \dimen2=\FLOWgridheight\dimen2=\!!countb\dimen2
+ \dimen4=\FLOWgridheight\advance\dimen4 by -\FLOWshapeheight
+ \advance\dimen2 by -.5\dimen4
+ \setbox0=\hbox
+ {\ifx\FLOWalign\empty\else
+ \setupframed
+ [\c!uitlijnen=\v!normaal,\c!onder=\vfill,\c!boven=\vfill]%
+ \@EA\processallactionsinset\@EA
+ [\FLOWalign]
+ [t=>{\setupframed[\c!onder=\vfill,\c!boven=]},
+ b=>{\setupframed[\c!onder=,\c!boven=\vfill]},
+ l=>{\setupframed[\c!uitlijnen=\v!rechts]},
+ r=>{\setupframed[\c!uitlijnen=\v!links]},
+ m=>{\setupframed[\c!uitlijnen=\v!midden]},
+ c=>{\setupframed[\c!uitlijnen=\v!midden]}]%
+ \fi
+ \doifelse{\FLOWshape}{none} % {\v!geen}
+ {\setupframed[\c!offset=\v!overlay]}
+ {\setupframed[\c!offset=.5\bodyfontsize]}%
+ \framed
+ [\c!kader=\v!uit,\c!breedte=\FLOWshapewidth,\c!hoogte=\FLOWshapeheight]
+ {\FLOWtext}}%
+ \showFLOWhelp0
+ \ifx\FLOWdestination\empty\else
+ \setbox0=\hbox
+ {\setupinteraction[\c!kleur=,\c!contrastkleur=]%
+ \naarbox{\box0}[\FLOWdestination]}%
+ \fi
+ \edef\FLOWdx{\the\dimen0}%
+ \edef\FLOWdy{\the\dimen2}%
+ \def\positionFLOWzero% assumes \FLOWdx and \FLOWdy are set
+ {\setbox0=\hbox{\hskip\FLOWdx\lower\FLOWdy\box0}%
+ \smashbox0\box0}%
+ \def\doFLOWtlabel##1##2##3%
+ {\scratchdimen=\ifcase##2 \!!zeropoint\else\@@FLOWdy\fi
+ \setbox0=\hbox{\hskip\dimen2\raise\scratchdimen
+ \hbox{\raise\dimen4\hbox{##1{\strut##3}}}}%
+ \positionFLOWzero}%
+ \def\doFLOWblabel##1##2##3%
+ {\scratchdimen=\ifcase##2 \!!zeropoint\else\@@FLOWdy\fi
+ \setbox0=\hbox{\hskip\dimen2\raise-\scratchdimen
+ \hbox{##1{\strut##3}}}%
+ \positionFLOWzero}%
+ \def\doFLOWllabel##1##2##3%
+ {\scratchdimen=\ifcase##2 \!!zeropoint\else\@@FLOWdx\fi
+ \setbox0=\hbox{\hskip-\scratchdimen\raise\dimen6
+ \hbox{##1{\strut##3}}}%
+ \positionFLOWzero}%
+ \def\doFLOWrlabel##1##2##3%
+ {\scratchdimen=\ifcase##2 \!!zeropoint\else\@@FLOWdx\fi
+ \setbox0=\hbox{\hskip\dimen0\hskip\scratchdimen
+ \hbox{\raise\dimen6\hbox{##1{\strut##3}}}}%
+ \positionFLOWzero}%
+ \positionFLOWzero
+ \dimen0=\FLOWshapewidth \dimen2=.5\dimen0
+ \dimen4=\FLOWshapeheight\dimen6=.5\dimen4
+ \boxoffset=.5\bodyfontsize
+ \doFLOWtlabel \righttopbox0\tFLOWlabel
+ \doFLOWblabel\rightbottombox0\bFLOWlabel
+ \doFLOWllabel \lefttopbox0\lFLOWlabel
+ \doFLOWrlabel \righttopbox0\rFLOWlabel
+ \doFLOWtlabel \topbox0\tcFLOWlabel % for me only
+ \doFLOWblabel \bottombox0\bcFLOWlabel % for me only
+ \doFLOWllabel \leftbox0\lcFLOWlabel % for me only
+ \doFLOWrlabel \rightbox0\rcFLOWlabel % for me only
+ \ifnum#1=\@@FLOWx\relax \doFLOWllabel \leftbox1\lFLOWexit \fi
+ \ifnum#1=\!!countc \doFLOWrlabel \rightbox1\rFLOWexit \fi
+ \ifnum#2=\@@FLOWy\relax \doFLOWtlabel \topbox1\tFLOWexit \fi
+ \ifnum#2=\!!countd \doFLOWblabel \bottombox1\bFLOWexit \fi
+ \fi\fi\fi\fi}
+
+% Pass E
+
+\long\def\startFLOWcellE#1\stopFLOWcell%
+ {\resetFLOWcell
+ \ignorespaces#1\unskip
+ \let\doprocessFLOWcell\doprocessFLOWcellE
+ \expandafter\doprocessFLOWcell\FLOWlocation\end}
+
+\def\doprocessFLOWcellE#1,#2\end % redundant
+ {\ifx\FLOWoverlay\empty \else
+ \!!counta=#1\relax
+ \!!countb=#2\relax
+ \!!countc=\@@FLOWx
+ \!!countd=\@@FLOWy
+ \advance\!!countc \@@FLOWnx
+ \advance\!!countd \@@FLOWny
+ \advance\!!countc -1
+ \advance\!!countd -1
+ \ifnum\!!counta<\@@FLOWx\relax
+ \donefalse
+ \else\ifnum\!!counta>\!!countc
+ \donefalse
+ \else\ifnum\!!countb<\@@FLOWy\relax
+ \donefalse
+ \else\ifnum\!!countb>\!!countd
+ \donefalse
+ \else
+ \donetrue
+ \fi\fi\fi\fi
+ \ifdone
+ \advance\!!counta by -\@@FLOWx\advance\!!counta by 1
+ \advance\!!countb by -\@@FLOWy\advance\!!countb by 1
+ \dimen0=\FLOWgridwidth\dimen0=\!!counta\dimen0
+ \advance\dimen0 by -\FLOWgridwidth
+ \dimen4=\FLOWgridwidth\advance\dimen4 by -\FLOWshapewidth
+ \advance\dimen0 by .5\dimen4
+ \dimen2=\FLOWgridheight\dimen2=\!!countb\dimen2
+ \dimen4=\FLOWgridheight\advance\dimen4 by -\FLOWshapeheight
+ \advance\dimen2 by -.5\dimen4
+ \edef\FLOWdx{\the\dimen0}%
+ \edef\FLOWdy{\the\dimen2}%
+ \setbox0=\hbox
+ {\framed
+ [\c!kader=\v!uit,
+ \c!achtergrond={\@@FLOWachtergrond,\FLOWoverlay},
+ \c!achtergrondkleur=\@@FLOSachtergrondkleur,
+ \c!breedte=\FLOWshapewidth,\c!hoogte=\FLOWshapeheight]
+ {}}%
+ \setbox0=\hbox{\hskip\FLOWdx\lower\FLOWdy\box0}%
+ \smashbox0
+ \box0
+ \fi
+ \fi}
+
+% Pass F
+
+\def\checkFLOWautofocus%
+ {\def\@@FLOWminx{100}\let\@@FLOWminy\@@FLOWminx
+ \def\@@FLOWmaxx {0}\let\@@FLOWmaxy\@@FLOWmaxx
+ \def\@@FLOWabsx {0}\let\@@FLOWabsy\@@FLOWabsx
+ \let\startFLOWcell\startFLOWcellF
+ \haalbuffer[\FLOWbufferprefix\currentFLOWnumber]%
+ %\message{AUTOSHAPE 1: (\@@FLOWminx,\@@FLOWminy)->(\@@FLOWmaxx,\@@FLOWmaxy)}%
+ \ifnum\@@FLOWabsx<\@@FLOWmaxx\let\@@FLOWmaxx\@@FLOWabsx\fi
+ \ifnum\@@FLOWabsy<\@@FLOWmaxy\let\@@FLOWmaxy\@@FLOWabsy\fi
+ %\message{AUTOSHAPE 2: (\@@FLOWminx,\@@FLOWminy)->(\@@FLOWmaxx,\@@FLOWmaxy)}%
+ \donetrue
+ \ifnum\@@FLOWminx=100 \donefalse\fi
+ \ifnum\@@FLOWminy=100 \donefalse\fi
+ \ifnum\@@FLOWmaxx=0 \donefalse\fi
+ \ifnum\@@FLOWmaxy=0 \donefalse\fi
+ \doFLOWcheckF\@@FLOWx\@@FLOWminx\@@FLOWmaxx\@@FLOWnx
+ \doFLOWcheckF\@@FLOWy\@@FLOWminy\@@FLOWmaxy\@@FLOWny}
+
+\def\startFLOWcellF#1\stopFLOWcell%
+ {\resetFLOWcell
+ \ignorespaces#1\unskip
+ \expandafter\doFLOWlocationF\FLOWlocation\end}%
+
+\def\doFLOWlocationF#1,#2\end%
+ {\ifnum#1>\@@FLOWabsx\def\@@FLOWabsx{#1}\fi
+ \ifnum#2>\@@FLOWabsy\def\@@FLOWabsy{#2}\fi
+ \ExpandBothAfter\doifinset{\FLOWcell}{\@@FLOWautofocus}
+ {\dodoFLOWlocationF{#1}<-\@@FLOWminx
+ \dodoFLOWlocationF{#1}>+\@@FLOWmaxx
+ \dodoFLOWlocationF{#2}<-\@@FLOWminy
+ \dodoFLOWlocationF{#2}>+\@@FLOWmaxy}}
+
+\def\dodoFLOWlocationF#1#2#3#4%
+ {\ifnum#1#2#4\relax
+ \!!counta=#1\advance\!!counta by #31\relax
+ \edef#4{\ifnum\!!counta<1 1\else\the\!!counta\fi}%
+ \fi}
+
+\def\doFLOWcheckF#1#2#3#4%
+ {\ifdone
+ \let#1=#2%
+ \!!counta=#3%
+ \advance\!!counta 1\advance\!!counta -#2\relax
+ \ifnum\!!counta<1 \!!counta=1 \fi
+ \edef#4{\the\!!counta}%
+ \else
+ \def#1{1}\def#4{0}% no {1}
+ \fi}
+
% \useFLOWchart[name][parent][setting,setting][additional settings]
% \useFLOWchart[name][parent][additional settings]
+\let\currentFLOWchart\empty
+
\def\useFLOWchart
{\doquadrupleempty\douseFLOWchart}
\def\douseFLOWchart[#1][#2][#3][#4]% name parent sets mainsettings
{\iffourthargument
- \setvalue{FLOW--#1}[##1]{\setgetFLOWchart[#2][#3][#4,##1]}%
+ \setvalue{\@FLOW@--#1}[##1]{\setgetFLOWchart[#2][#3][#4,##1]}%
\else
\checkparameters[#3]%
\ifparameters
- \setvalue{FLOW--#1}[##1]{\setgetFLOWchart[#2][][#3,##1]}%
+ \setvalue{\@FLOW@--#1}[##1]{\setgetFLOWchart[#2][][#3,##1]}%
\else
- \setvalue{FLOW--#1}[##1]{\setgetFLOWchart[#2][#3][##1]}%
+ \setvalue{\@FLOW@--#1}[##1]{\setgetFLOWchart[#2][#3][##1]}%
\fi
\fi}
\def\setgetFLOWchart[#1][#2][#3]%
- {\def\docommando##1%
- {}% cell line focus
+ {\def\docommando##1{}% cell line focus ?
\processcommalist[#2]\docommando
\getFLOWchart[#1][#3]}
\def\doFLOWchart[#1][#2]%
{\hbox\bgroup\vbox\bgroup % vmode suppresses spaces
- \doifundefinedelse{FLOW--#1}
+\def\currentFLOWchart{#1}%
+ \doifundefinedelse{\@FLOW@--#1}
{\getFLOWchart[#1][#2]}
- {\getvalue{FLOW--#1}[#2]}%
+ {\getvalue{\@FLOW@--#1}[#2]}%
\egroup\egroup}
\def\FLOWchart%
{\dodoubleempty\doFLOWchart}
-%D A hook into the help system.
+%D A hook into the help system.
\def\showFLOWhelp#1%
{\doifhelpinfo{\FLOWhelp}
@@ -842,7 +986,7 @@
{\forgetall\offinterlineskip\box#1\box\scratchbox}%
\box#1}}}
-%D The next section is dedicated to splitting up charts.
+%D The next section is dedicated to splitting up charts.
\def\getFLOWsize[#1]%
{\bgroup\let\dodogetFLOWchart\dogetFLOWsize\FLOWchart[#1]\egroup}
@@ -854,14 +998,15 @@
\def\getFLOWlocation##1,##2\end%
{\ifnum0##1>\FLOWmaxwidth \xdef\FLOWmaxwidth {##1}\fi
\ifnum0##2>\FLOWmaxheight\xdef\FLOWmaxheight{##2}\fi}%
+ \resetFLOWcell
\long\def\startFLOWcell##1\stopFLOWcell%
- {\resetFLOWcell##1\expandafter\getFLOWlocation\FLOWlocation\end}%
+ {{##1\expandafter\getFLOWlocation\FLOWlocation\end}}%
\def\dosetFLOWchart[##1][##2]%
- {\haalbuffer[flw-##1]}%
- \getvalue{FLOW-#1}}}
+ {\haalbuffer[\FLOWbufferprefix##1]}%
+ \getvalue{\@FLOW@-#1}}}
\def\setupFLOWsplit%
- {\dodoubleargument\getparameters[@@FLOT]}
+ {\dodoubleargument\getparameters[\@@FLOT]}
\setupFLOWsplit%
[\c!nx=3,\c!ny=3,
@@ -870,68 +1015,181 @@
\c!markering=\v!aan,
\c!voor=,\c!na=]
+\def\FLOWsplitx {1}
+\def\FLOWsplity {1}
+\def\FLOWsplitnx{1}
+\def\FLOWsplitny{1}
+
\def\FLOWcharts%
{\dodoubleempty\doFLOWcharts}
+%D While splitting, the following variables are available:
+%D
+%D \starttypen
+%D \FLOWsplitnx \FLOWsplitny \FLOWsplitx \FLOWsplity
+%D \stoptypen
+
\def\doFLOWcharts[#1][#2]%
{\bgroup
\getFLOWsize[#1]%
- \def\@@FLOTx{1}%
- \doloop
- {\def\@@FLOTy{1}%
- \doloop
+ \dodoFLOWcharts\relax
+ \global\let\FLOWsplitnx\FLOWsplitx
+ \global\let\FLOWsplitny\FLOWsplity
+ \dodoFLOWcharts{\dododoFLOWcharts[#1][#2]}%
+ \egroup}
+
+\def\dodoFLOWcharts#1%
+ {\def\@@FLOTx{1}%
+ \global\let\FLOWsplitx\@@FLOTx
+ \doloop
+ {\def\@@FLOTy{1}%
+ \global\let\FLOWsplity\@@FLOTy
+ \doloop
{\bgroup
- \scratchcounter=\FLOWmaxwidth
+ \scratchcounter=\FLOWmaxwidth
\advance\scratchcounter by -\@@FLOTx
\advance\scratchcounter by 1
\ifnum\scratchcounter<\@@FLOTnx\edef\@@FLOTnx{\the\scratchcounter}\fi
- \scratchcounter=\FLOWmaxheight
+ \scratchcounter=\FLOWmaxheight
\advance\scratchcounter by -\@@FLOTy
\advance\scratchcounter by 1
\ifnum\scratchcounter<\@@FLOTny\edef\@@FLOTny{\the\scratchcounter}\fi
- \doifnot{\@@FLOTmarkering}{\v!aan}{\let\cuthbox\relax}%
- \@@FLOTvoor
- \cuthbox
- {\@@FLOTcommando
- {\FLOWchart[#1][#2,
- \c!x=\@@FLOTx,\c!nx=\@@FLOTnx,
- \c!y=\@@FLOTy,\c!ny=\@@FLOTny]}}%
- \@@FLOTna
+ #1% does something with the float, or not
\egroup
\increment(\@@FLOTy,\@@FLOTny)%
\ifnum\@@FLOTy>\FLOWmaxheight
\exitloop
- \else
+ \else
+ \doglobal\increment\FLOWsplity
\decrement(\@@FLOTy,\@@FLOTdy)%
\fi}%
\increment(\@@FLOTx,\@@FLOTnx)%
- \ifnum\@@FLOTx>\FLOWmaxwidth
+ \ifnum\@@FLOTx>\FLOWmaxwidth
\exitloop
- \else
+ \else
+ \doglobal\increment\FLOWsplitx
\decrement(\@@FLOTx,\@@FLOTdx)%
- \fi}%
+ \fi}}
+
+\def\dododoFLOWcharts[#1][#2]%
+ {\bgroup
+ \@@FLOTvoor
+ \doifnot{\@@FLOTmarkering}{\v!aan}{\let\cuthbox\hbox}%
+ \cuthbox
+ {\@@FLOTcommando
+ {\FLOWchart[#1][#2,
+ \c!x=\@@FLOTx,\c!nx=\@@FLOTnx,
+ \c!y=\@@FLOTy,\c!ny=\@@FLOTny]}}%
+ \@@FLOTna
\egroup}
-%D An example of splitting is given below:
-%D
-%D \starttypen
+%D An example of splitting is given below:
+%D
+%D \starttypen
%D \setupFLOWsplit
%D [nx=5,ny=10,
%D dx=0,dy=0,
%D before=,
%D after=\pagina]
-%D
+%D
%D \FLOWcharts[mybigflow]
-%D \stoptypen
+%D \stoptypen
%D
-%D Or, one can say:
+%D Or, one can say:
%D
-%D \starttypen
+%D \starttypen
%D \splitsplaatsblok
%D {\plaatsfiguur{What a big flowchart this is!}}
%D {\FLOWcharts[mybigflow]}
+%D \stoptypen
+
+%D \macros
+%D {typeFLOWchart}
+%D
+%D For documentation purposes the following macro is
+%D provided. Watch the use of the first and last line hooks,
+%D which is needed because the start and stop commands are
+%D not part of the buffer.
+
+\def\typeFLOWchart[#1]%
+ {\bgroup
+ \def\dosetFLOWchart[##1][##2]{\typebuffer[\FLOWbufferprefix##1]}%
+ \convertargument\startFLOWchart[#1]\to\firstverbatimfileline
+ \convertargument \stopFLOWchart\to\lastverbatimfileline
+ \getvalue{\@FLOW@-#1}
+ \egroup}
+
+%D New:
+%D
+%D \starttypen
+%D \setupFLOWcharts[command=\Whow]
+%D
+%D \startFLOWset[convert-en] % [tag][convert-en]
+%D \subFLOWchart[a][x=1,y=1,nx=3,ny=3]
+%D \subFLOWchart[b][x=1,y=2,nx=3,ny=3]
+%D \subFLOWchart[c][x=2,y=1,nx=3,ny=3]
+%D \stopFLOWset
+%D
+%D \def\Whow#1%
+%D {\ifnum\currentFLOWset=1 \framed{Some Chart}\fi}
+%D
+%D \handleFLOWset[convert-en] % [tag]
+%D
+%D \def\Whow#1%
+%D {\stelhoofdin[status=hoog]
+%D \startstandardmakeup
+%D \centerbox{#1}
+%D \stopstandardmakeup}
+%D
+%D \handleFLOWset[convert-en] % [tag]
%D \stoptypen
+\def\startFLOWset%
+ {\dodoubleempty\dostartFLOWset}
+
+\def\dostartFLOWset[#1][#2]#3\stopFLOWset% tag name data
+ {\ifsecondargument
+ \long\setvalue{\@FLOX@#1}{\dohandleFLOWset{#1}{#2}{#3}}%
+ \else
+ \long\setvalue{\@FLOX@#1}{\dohandleFLOWset{#1}{#1}{#3}}%
+ \fi}
+
+\long\def\dohandleFLOWset#1#2#3% tag name data
+ {\bgroup
+ \def\subFLOWchart%
+ {\dodoubleempty\dosubFLOWchart}%
+ \def\dosubFLOWchart[##1][##2]% subtag settings
+ {\ifsecondargument
+ \dodohandleFLOWset{#1}{##1}{#2}{##2}%
+ \else
+ \subFLOWchart[][##1]%
+ \fi}%
+ #3%
+ \egroup}
+
+\def\dodohandleFLOWset#1#2#3#4% tag subtag name settings
+ {\increment\currentFLOWset
+ \bgroup
+ \@@FLOXcommando
+ {\ifnum\currentFLOWset=1 \pagereference[#1]\fi
+ \doifsomething{#2}
+ {\setupreferencing[\c!prefix=]%
+ \pagereference[#1:#2]% -:#1:#2
+ \setupreferencing[\c!prefix=#1:#2]}%
+ \FLOWchart[#3][#4]}%
+ \egroup}
+
+\def\FLOWset[#1]%
+ {\newcounter\currentFLOWset
+ \doifdefinedelse{\@FLOX@#1}
+ {\getvalue{\@FLOX@#1}}
+ {\dodohandleFLOWset{#1}{}{#1}{}}}
+
+\newcounter\currentFLOWset
+
+\setupFLOWsets
+ [\c!commando=]
+
\protect
\endinput
diff --git a/tex/context/base/m-cweb.tex b/tex/context/base/m-cweb.tex
new file mode 100644
index 000000000..57b1ab8b9
--- /dev/null
+++ b/tex/context/base/m-cweb.tex
@@ -0,0 +1,1371 @@
+%D \module
+%D [ file=m-cweb,
+%D version=1997.01.15,
+%D title=\CONTEXT\ Extra Modules,
+%D subtitle=\CWEB\ Pretty Printing Macros,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D First some auxiliary stuff, to be moved to system module.
+
+\def\dodofindfirstcharacter#1%
+ {\ifx#1\relax
+ \let\next=\egroup
+ \else
+ \handlecase
+ {\expandafter\ifnum\expandafter\catcode\expandafter`#1=11
+ \def\next##1\relax{\egroup\def\firstcharacter{#1}}%
+ \fi}%
+ \fi
+ \next}
+
+\def\dofindfirstcharacter#1#2%
+ {\def\firstcharacter{}%
+ \bgroup
+ \convertargument#2\to\ascii
+ \let\next=\dodofindfirstcharacter
+ \let\handlecase=#1
+ \expandafter\next\ascii\relax}
+
+\def\normalcase#1%
+ {#1}
+
+\def\findfirstcharacter%
+ {\dofindfirstcharacter\lowercase}
+
+\def\FindFirstCharacter%
+ {\dofindfirstcharacter\normalcase}
+
+\def\FINDFIRSTCHARACTER%
+ {\dofindfirstcharacter\uppercase}
+
+% nog doen:
+%
+% \deactivateCWEB in output routine
+% status info
+% gelinkte entries
+% parskip en parindent
+
+%D \gdef\CWEBquote#1.{{\em Quote :}\ #1.} % checks the .
+
+%D This module (re)implements the \CWEB\ macros as defined in
+%D the file \type{cwebmac.tex}.
+%D
+%D \CWEB\ uses short, often one character long, names for
+%D macros. This is no real problem because no one is supposed
+%D to read and understand the files generated by \CWEB. The
+%D standard macros are meant for \PLAIN\ \TEX\ users. In
+%D \CONTEXT\ and other macro packages however, there is a
+%D potential conflict with format specific or user defined
+%D commands. Furthermore, the \CWEB\ macros implement their own
+%D output routines. When integrating \CWEB\ documents in
+%D another environment, the \CWEB\ specific macros have to be
+%D made local. The first part of this module is dedicated to
+%D this feature.
+%D
+%D Instead of using \type{\def} and \type{\let} for defining
+%D macros, we use:
+%D
+%D \starttypen
+%D \defCEBmacro arguments {meaning}
+%D \letCEBmacro arguments {meaning}
+%D \stoptypen
+%D
+%D \CWEB files contain implicit calls to macros that generate
+%D the table of contents, the lists of sections and the index.
+%D Because we want to be much more flexible, we implemented our
+%D own alternatives, and therefore have to bypass the original
+%D ones. The next macro is used for defining these obsolete
+%D \CWEB\ macros. The dummies take care of arguments.
+%D
+%D \starttypen
+%D \defCEBdummy arguments {meaning}
+%D \stoptypen
+%D
+%D The list of \CWEB\ specific macro names is saved in a
+%D \TOKENLIST. This serves two purposes. First it enables us to
+%D activate the \CWEB\ macros, which are saved under a
+%D different name, second it can be used to temporary restore
+%D the meanings, for instance when the output routine builds
+%D the page.
+
+\newtoks\CWEBmacros
+
+%D Activating and deactivating is done by means of:
+%D
+%D \starttypen
+%D \activateCWEB
+%D \deactivateCWEB
+%D \stoptypen
+%D
+%D Which are implemented as:
+
+\def\activateCWEB%
+ {\let\doCWEB=\activateCWEBmacro
+ \the\CWEBmacros}
+
+\def\deactivateCWEB%
+ {\let\doCWEB=\deactivateCWEBmacro
+ \the\CWEBmacros}
+
+%D The three definition macros append the name of the macro to
+%D the list. The first two macros save the meaning, the last one
+%D assigns \type{{}} to the macro and gobbles original meaning.
+
+\long\def\defCWEBmacro#1%
+ {\appendtoks\doCWEB#1\to\CWEBmacros
+ \setvalue{newCWEB\string#1}}
+
+\long\def\letCWEBmacro#1%
+ {\appendtoks\doCWEB#1\to\CWEBmacros
+ \letvalue{newCWEB\string#1}}
+
+\long\def\defCWEBdummy#1#2#%
+ {\appendtoks\doCWEB#1\to\CWEBmacros
+ \setvalue{newCWEB\string#1}#2{}%
+ \gobbleoneargument}
+
+%D The macro \type{\defCWEBdummy} of course takes care of the
+%D argument. This leaves the two (de|)|activating macros:
+
+\def\CWEBmacro#1%
+ {\getvalue{newCWEB\string#1}}
+
+\def\activateCWEBmacro#1%
+ {\letvalue{oldCWEB\string#1}=#1%
+ \def#1{\CWEBmacro#1}}
+
+\def\deactivateCWEBmacro#1%
+ {\expandafter\let\expandafter#1\expandafter=\csname oldCWEB\string#1\endcsname}
+
+%D I did consider loading the \CWEB\ macros using temporary
+%D substitutes of \type{\def}, \type{\font}, \type{\newbox} etc.
+%D The main problem is that the file contains more than
+%D definitions and taking all kind of assignments into account
+%D too would not make things easier. So I decided to stick to
+%D the method as just described.
+
+%D Now we're ready for the real job. What follows is a partial
+%D adaption of the file \type{cwebmac.tex}, version 3.1, dated
+%D September 1994 and written by Levy and Knuth. When possible
+%D we kept the original meaning, but we've granted ourselves
+%D the freedom to reformat the macro's for readibility.
+%D
+%D We'll only present the macros we actually use. The source
+%D however contains the original implementation.
+
+% standard macros for CWEB listings (in addition to plain.tex)
+% Version 3.1 --- September 1994.
+%
+% \ifx\documentstyle\undefined\else\endinput\fi % LaTeX will use other macros
+%
+% \xdef\fmtversion{\fmtversion+CWEB3.1}
+
+%D \macros{.}{}
+%D
+%D \CWEBquote preserve a way to get the dot accent (all
+%D other accents will still work as usual).
+
+\letCWEBmacro\: = \.
+
+% \parskip = 0pt % no stretch between paragraphs
+% \parindent = 1em % for paragraphs and for the first line of C text
+
+% \font\ninerm = cmr9
+% \let\mc = \ninerm % medium caps
+% \font\eightrm = cmr8
+% \let\sc = \eightrm % small caps (NOT a caps-and-small-caps font)
+% \let\mainfont = \tenrm
+% \let\cmntfont = \tenrm
+% \font\tenss = cmss10
+% \let\cmntfont = \tenss % alternative comment font
+% \font\titlefont = cmr7 scaled \magstep4 % title on the contents page
+% \font\ttitlefont = cmtt10 scaled \magstep2 % typewriter type in title
+% \font\tentex = cmtex10 % TeX extended character set (used in strings)
+% \fontdimen7\tentex = 0pt % no double space after sentences
+
+%D \macros{mc,sc,cmntfont,eightrm}{}
+%D
+%D The naming of the fonts in in line with those in \PLAIN\
+%D \TEX. Although \CONTEXT\ implements its own scheme, there is
+%D still support for the \PLAIN\ ones. We keep the original
+%D names, but change their meaning. That way the macros obey
+%D switching to other sizes or styles.
+
+\defCWEBmacro\mc {\tx}
+\defCWEBmacro\sc {\txx}
+\defCWEBmacro\cmntfont {\ss}
+\defCWEBmacro\eightrm {\tx}
+
+%D \macros{tentex,sevenrm,sevensy,teni}{}
+%D
+%D The next one uses a temporary solution. The \type{cmtex10}
+%D font is not part of the default mechanism. We make use of
+%D the \CONTEXT\ variables \type{\textface}, \type{\scriptface}
+%D and \type{\scriptscriptface}, which hold the current
+%D sizes.
+
+\defCWEBmacro\tentex%
+ {\font\next=cmtex10 at \textface
+ \fontdimen7\next=0pt
+ \next}
+
+\defCWEBmacro\sevenrm {\getvalue{\scriptface rmtf}}
+\defCWEBmacro\sevensy {\getvalue{\scriptface mmsy}}
+\defCWEBmacro\teni {\getvalue{\textface mmmi}}
+
+%D \macros{CWEBpt}{}
+%D
+%D The original macros are based on a 10~point bodyfont size. We
+%D therefore have to specify dimension in points a bit
+%D different. Specifications like .6pt are changed to
+%D \type{.06} times \type{\korpsgrootte}.
+
+\defCWEBmacro\CWEBpt {\korpsgrootte} % still dutch
+
+%D \macros{CEE,UNIX,TEX,CPLUSPLUS}{}
+%D
+%D Next come some logo's. It does not make much sense to use
+%D the \CONTEXT\ logo mechanism here, so we simply say:
+
+\defCWEBmacro \CEE/{{\mc C\spacefactor1000}}
+\defCWEBmacro \UNIX/{{\mc U\kern-.05emNIX\spacefactor1000}}
+\defCWEBmacro \TEX/{\TeX}
+\defCWEBmacro\CPLUSPLUS/{{\mc C\PP\spacefactor1000}}
+\defCWEBmacro \Cee{\CEE/} % for backward compatibility
+
+%D \macros{\ }{}
+%D
+%D Now we come to the real work: the short commands that make
+%D up the typography.
+%D
+%D \CWEBquote italic type for identifiers.
+
+\defCWEBmacro\\#1%
+ {\leavevmode\hbox{\it#1\/\kern.05em}}
+
+%D \macros{\string|}{}
+%D
+%D \CWEBquote one letter identifiers look better this way.
+
+\defCWEBmacro\|#1%
+ {\leavevmode\hbox{$#1$}}
+
+%D \macros{\string&}{}
+%D
+%D \CWEBquote boldface type for reserved words.
+
+\defCWEBmacro\&#1%
+ {\leavevmode
+ \hbox
+ {\def\_%
+ {\kern.04em
+ \vbox{\hrule width.3em height .06\CWEBpt}% .6pt}%
+ \kern.08em}%
+ \bf#1\/\kern.05em}}
+
+%D \macros{.}{}
+%D
+%D Here we use the previously saved period. This macro
+%D takes care of special characters in strings.
+
+\defCWEBmacro\.#1%
+ {\leavevmode
+ \hbox
+ {\tentex % typewriter type for strings
+ \let\\=\BS % backslash in a string
+ \let\{=\LB % left brace in a string
+ \let\}=\RB % right brace in a string
+ \let\~=\TL % tilde in a string
+ \let\ =\SP % space in a string
+ \let\_=\UL % underline in a string
+ \let\&=\AM % ampersand in a string
+ \let\^=\CF % circumflex in a string
+ #1\kern.05em}}
+
+%D \macros{)}{}
+%D
+%D Some discretionary hack.
+
+\defCWEBmacro\)%
+ {\discretionary{\hbox{\tentex\BS}}{}{}}
+
+%D \macros{AT}{}
+%D
+%D \CWEBquote at sign for control text (not needed in versions
+%D $>=$ 2.9).
+
+\defCWEBmacro\AT{@}
+
+%D \macros{ATL,postATL,NOATL}{}
+%D
+%D A two step macro that handles whatever.
+
+\defCWEBmacro\ATL%
+ {\par
+ \noindent
+ \bgroup
+ \catcode`\_=12
+ \postATL}
+
+\defCWEBmacro\postATL#1 #2 %
+ {\bf letter \\{\uppercase{\char"#1}} tangles as \tentex "#2"%
+ \egroup
+ \par}
+
+\defCWEBmacro\noATL#1 #2 %
+ {}
+
+%D \macros{noatl}{}
+%D
+%D \CWEBquote suppress output from \type{@l}.
+
+\defCWEBmacro\noatl%
+ {\let\ATL=\noATL}
+
+% \defCWEBmacro\ATH%
+% {\X\kern-.5em:Preprocessor definitions\X}
+
+%D \macros{PB}
+%D
+%D \CWEBquote hook for program brackets {\tttf\string|...\string|}
+%D in TeX part or section name.
+
+\defCWEBmacro\PB%
+ {\relax}
+
+% \chardef\AM = `\& % ampersand character in a string
+% \chardef\BS = `\\ % backslash in a string
+% \chardef\LB = `\{ % left brace in a string
+% \chardef\RB = `\} % right brace in a string
+% \chardef\TL = `\~ % tilde in a string
+% \chardef\UL = `\_ % underline character in a string
+% \chardef\CF = `\^ % circumflex character in a string
+
+\defCWEBmacro\AM {\char`\&} % ampersand character in a string
+\defCWEBmacro\BS {\char`\\} % backslash in a string
+\defCWEBmacro\LB {\char`\{} % left brace in a string
+\defCWEBmacro\RB {\char`\}} % right brace in a string
+\defCWEBmacro\TL {\char`\~} % tilde in a string
+\defCWEBmacro\UL {\char`\_} % underline character in a string
+\defCWEBmacro\CF {\char`\^} % circumflex character in a string
+
+\defCWEBmacro\SP {{\tt\char`\ }} % (visible) space in a string
+
+% \newbox\PPbox \setbox\PPbox=\hbox
+% {\kern.5pt\raise1pt\hbox{\sevenrm+\kern-1pt+}\kern.5pt}
+% \newbox\MMbox \setbox\MMbox=\hbox
+% {\kern.5pt\raise1pt\hbox{\sevensy\char0\kern-1pt\char0}\kern.5pt}
+% \newbox\MGbox \setbox\MGbox=\hbox % symbol for ->
+% {\kern-2pt\lower3pt\hbox{\teni\char'176}\kern1pt}
+% \newbox\MODbox \setbox\MODbox=\hbox
+% {\eightrm\%}
+%
+% \def\PP {\copy\PPbox}
+% \def\MM {\copy\MMbox}
+% \def\MG {\copy\MGbox}
+% \def\MOD {\mathbin{\copy\MODbox}}
+
+\defCWEBmacro\PP% symbol for ++
+ {\kern.05\CWEBpt
+ \raise.1\CWEBpt\hbox{\sevenrm+\kern-.1\CWEBpt+}%
+ \kern.05\CWEBpt}
+
+\defCWEBmacro\MM%
+ {\kern.05\CWEBpt
+ \raise.1\CWEBpt\hbox{\sevensy\char0\kern-.1\CWEBpt\char0}%
+ \kern.05\CWEBpt}
+
+\defCWEBmacro\MG%
+ {\kern-.2\CWEBpt
+ \lower.3\CWEBpt\hbox{\teni\char'176}%
+ \kern .1\CWEBpt}
+
+\defCWEBmacro\MRL#1%
+ {\mathrel{\let\K==#1}}
+
+% \def\MRL#1%
+% {\KK#1}
+% \def\KK#1#2%
+% {\buildrel\;#1\over{#2}}
+
+\letCWEBmacro\GG = \gg
+\letCWEBmacro\LL = \ll
+\letCWEBmacro\NULL = \Lambda
+
+% \mathchardef\AND = "2026 % bitwise and; also \& (unary operator)
+
+\defCWEBmacro\AND% redefines itself (funny)
+ {\mathchardef\AND="2026 \AND} % bitwise and; also \& (unary operator)
+
+\letCWEBmacro\OR = \mid % bitwise or
+\letCWEBmacro\XOR = \oplus % bitwise exclusive or
+\defCWEBmacro\CM {{\sim}} % bitwise complement
+\defCWEBmacro\MOD {\mathbin{\eightrm\%}}
+\defCWEBmacro\DC {\kern.1em{::}\kern.1em} % symbol for ::
+\defCWEBmacro\PA {\mathbin{.*}} % symbol for .*
+\defCWEBmacro\MGA {\mathbin{\MG*}} % symbol for ->*
+\defCWEBmacro\this {\&{this}}
+
+% \newbox \bak % backspace one em
+% \newbox \bakk % backspace two ems
+%
+% \setbox\bak =\hbox to -1em{}
+% \setbox\bakk=\hbox to -2em{}
+
+\newcount\CWEBind % current indentation in ems
+
+\defCWEBmacro\1% indent one more notch
+ {\global\advance\CWEBind by 1
+ \hangindent\CWEBind em}
+
+\defCWEBmacro\2% indent one less notch
+ {\global\advance\CWEBind by -1 }
+
+\defCWEBmacro\3#1% optional break within a statement
+ {\hfil
+ \penalty#10
+ \hfilneg}
+
+\defCWEBmacro\4% backspace one notch
+ {\hbox to -1em{}}
+
+\defCWEBmacro\5% optional break
+ {\hfil
+ \penalty-1
+ \hfilneg
+ \kern2.5em
+ \hbox to -2em{}%
+ \ignorespaces}
+
+\defCWEBmacro\6% forced break
+ {\ifmmode
+ \else
+ \par
+ \hangindent\CWEBind em
+ \noindent
+ \kern\CWEBind em
+ \hbox to -2em{}%
+ \ignorespaces
+ \fi}
+
+\defCWEBmacro\7% forced break and a little extra space
+ {\Y
+ \6}
+
+\defCWEBmacro\8% no indentation
+ {\hskip-\CWEBind em
+ \hskip 2em}
+
+\defCWEBmacro\9#1%
+ {}
+
+\newcount\gdepth % depth of current major group, plus one
+\newcount\secpagedepth
+\secpagedepth=3 % page breaks will occur for depths -1, 0, and 1
+
+% \newtoks\gtitle % title of current major group
+% \newskip\intersecskip
+% \intersecskip=12pt minus 3pt % space between sections
+
+% \let\yskip=\smallskip
+
+\defCWEBmacro\?%
+ {\mathrel?}
+
+% \def\note#1#2.%
+% {\Y\noindent
+% {\hangindent2em\baselineskip10pt\eightrm#1~#2.\par}}
+
+\defCWEBmacro\lapstar%
+ {\rlap{*}}
+
+% \def\stsec%
+% {\rightskip=0pt % get out of C mode (cf. \B)
+% \sfcode`;=1500
+% \pretolerance 200
+% \hyphenpenalty 50
+% \exhyphenpenalty 50
+% \noindent{\let\*=\lapstar\bf\secstar.\quad}}
+%
+% \let\startsection=\stsec
+
+\defCWEBmacro\defin#1%
+ {\global\advance\CWEBind by 2 \1\&{#1 } } % begin `define' or `format'
+
+% \def\A% xref for doubly defined section name
+% {\note{See also section}}
+%
+% \def\As% xref for multiply defined section name
+% {\note{See also sections}}
+
+\defCWEBmacro\B%
+ {\rightskip=0pt plus 100pt minus 10pt % go into C mode
+ \sfcode`;=3000
+ \pretolerance 10000
+ \hyphenpenalty 1000 % so strings can be broken (discretionary \ is inserted)
+ \exhyphenpenalty 10000
+ \global\CWEBind=2 \1\ \unskip}
+
+\defCWEBmacro\C#1%
+ {\5\5\quad$/\ast\,${\cmntfont #1}$\,\ast/$}
+
+% \let\SHC\C % "// short comments" treated like "/* ordinary comments */"
+
+\defCWEBmacro\SHC#1%
+ {\5\5\quad$//\,${\cmntfont#1}}
+
+% \def\C#1{\5\5\quad$\triangleright\,${\cmntfont#1}$\,\triangleleft$}
+% \def\SHC#1{\5\5\quad$\diamond\,${\cmntfont#1}}
+
+\defCWEBmacro\D% macro definition
+ {\defin{\#define}}
+
+\letCWEBmacro\E=\equiv % equivalence sign
+
+% \def\ET% conjunction between two section numbers
+% { and~}
+%
+% \def\ETs% conjunction between the last two of several section numbers
+% {, and~}
+
+\defCWEBmacro\F% format definition
+ {\defin{format}}
+
+\letCWEBmacro\G = \ge % greater than or equal sign
+
+% \H is long Hungarian umlaut accent
+
+\letCWEBmacro\I = \ne % unequal sign
+
+\defCWEBmacro\J% TANGLE's join operation
+ {\.{@\&}}
+
+% \let\K== % assignment operator
+
+\letCWEBmacro\K = \leftarrow % "honest" alternative to standard assignment operator
+
+% \L is Polish letter suppressed-L
+
+% \outer\def\M#1%
+% {\MN{#1}%
+% \ifon
+% \vfil
+% \penalty-100
+% \vfilneg % beginning of section
+% \vskip\intersecskip
+% \startsection
+% \ignorespaces}
+%
+% \outer\def\N#1#2#3.%
+% {\gdepth=#1%
+% \gtitle={#3}%
+% \MN{#2}% beginning of starred section
+% \ifon
+% \ifnum#1<\secpagedepth
+% \vfil
+% \eject % force page break if depth is small
+% \else
+% \vfil
+% \penalty-100
+% \vfilneg
+% \vskip\intersecskip
+% \fi
+% \fi
+% \message{*\secno}% progress report
+% \edef\next%
+% {\write\cont % write to contents file
+% {\ZZ{#3}{#1}{\secno}{\noexpand\the\pageno}}}%
+% \next % \ZZ{title}{depth}{sec}{page}
+% \ifon
+% \startsection
+% {\bf#3.\quad}%
+% \ignorespaces}
+%
+% \def\MN#1%
+% {\par % common code for \M, \N
+% {\xdef\secstar{#1}%
+% \let\*=\empty
+% \xdef\secno{#1}}% remove \* from section name
+% \ifx\secno\secstar
+% \onmaybe
+% \else
+% \ontrue
+% \fi
+% \mark{{{\tensy x}\secno}{\the\gdepth}{\the\gtitle}}}
+%
+% each \mark is {section reference or null}{depth plus 1}{group title}
+
+% \O is Scandinavian letter O-with-slash
+% \P is paragraph sign
+
+\defCWEBmacro\Q {\note{This code is cited in section}} % xref for mention of a section
+\defCWEBmacro\Qs {\note{This code is cited in sections}} % xref for mentions of a section
+
+% \S is section sign
+
+\defCWEBmacro\T#1%
+ {\leavevmode % octal, hex or decimal constant
+ \hbox
+ {$\def\?{\kern.2em}%
+ \def\$##1{\egroup_{\,\rm##1}\bgroup}% suffix to constant
+ \def\_{\cdot 10^{\aftergroup}}% power of ten (via dirty trick)
+ \let\~=\oct
+ \let\^=\hex
+ {#1}$}}
+
+\defCWEBmacro\U {\note{This code is used in section}} % xref for use of a section
+\defCWEBmacro\Us {\note{This code is used in sections}} % xref for uses of a section
+
+\letCWEBmacro\R = \lnot % logical not
+\letCWEBmacro\V = \lor % logical or
+\letCWEBmacro\W = \land % logical and
+
+% defined later on
+%
+% \def\X#1:#2\X%
+% {\ifmmode
+% \gdef\XX{\null$\null}%
+% \else
+% \gdef\XX{}%
+% \fi % section name
+% \XX$\langle\,${#2\eightrm\kern.5em#1}$\,\rangle$\XX}
+
+\unprotect
+
+\def\theCWEByskip {\blanko[\v!klein]}
+\def\theCWEBvskip {\blanko[\v!groot]}
+
+\protect
+
+\defCWEBmacro\Y%
+ {\par
+ \yskip}
+
+\defCWEBmacro\yskip%
+ {\theCWEByskip}
+
+\letCWEBmacro\Z = \le
+% \letCWEBmacro\ZZ = \let % now you can \write the control sequence \ZZ
+\letCWEBmacro\* = *
+
+\defCWEBmacro\oct%
+ {\hbox{$^\circ$\kern-.1em\it\aftergroup\?\aftergroup}}
+
+\defCWEBmacro\hex%
+ {\hbox{$^{\scriptscriptstyle\#}$\tt\aftergroup}}
+
+\defCWEBmacro\vb#1%
+ {\leavevmode
+ \hbox
+ {\kern.2\CWEBpt
+ \vrule
+ \vtop
+ {\vbox
+ {\hrule
+ \hbox{\strut\kern.2\CWEBpt\.{#1}\kern.2\CWEBpt}}
+ \hrule}%
+ \vrule
+ \kern.2\CWEBpt}} % verbatim string
+
+\def\onmaybe%
+ {\let\ifon=\maybe}
+
+\let\maybe=\iftrue
+
+\newif\ifon
+
+% \newif\iftitle
+% \newif\ifpagesaved
+%
+% \def\lheader%
+% {\mainfont
+% \the\pageno
+% \eightrm
+% \qquad
+% \grouptitle
+% \hfill
+% \title
+% \qquad
+% \mainfont
+% \topsecno} % top line on left-hand pages
+%
+% \def\rheader%
+% {\mainfont
+% \topsecno
+% \eightrm
+% \qquad
+% \title
+% \hfill
+% \grouptitle
+% \qquad
+% \mainfont
+% \the\pageno} % top line on right-hand pages
+%
+% \def\grouptitle
+% {\let\i=I
+% \let\j=J
+% \uppercase\expandafter{\expandafter\takethree\topmark}}
+%
+% \def\topsecno%
+% {\expandafter\takeone\topmark}
+%
+% \def\takeone #1#2#3{#1}
+% \def\taketwo #1#2#3{#2}
+% \def\takethree #1#2#3{#3}
+%
+% \def\nullsec%
+% {\eightrm
+% \kern-2em} % the \kern-2em cancels \qquad in headers
+%
+% \let\page=\pagebody % \def\page {\box255 }
+% \raggedbottom % \normalbottom % faster, but loses plain TeX footnotes
+%
+% \def\normaloutput#1#2#3%
+% {\shipout\vbox
+% {\ifodd
+% \pageno
+% \hoffset=\pageshift
+% \fi
+% \vbox to \fullpageheight
+% {\iftitle
+% \global\titlefalse
+% \else
+% \hbox to \pagewidth
+% {\vbox to 10pt{}%
+% \ifodd\pageno #3\else#2\fi}
+% \fi
+% \vfill#1}} % parameter #1 is the page itself
+% \global\advance\pageno by 1}
+%
+% \gtitle={\.{CWEB} output} % this running head is reset by starred sections
+%
+% \mark{\noexpand\nullsec0{\the\gtitle}}
+%
+% \def\title%
+% {\expandafter\uppercase\expandafter{\jobname}}
+%
+% \def\topofcontents%
+% {\centerline{\titlefont\title}
+% \vskip.7in
+% \vfill} % this material will start the table of contents page
+
+\def\botofcontents%
+ {\vfill
+ \centerline{\covernote}} % this material will end the table of contents page
+
+\def\covernote%
+ {}
+
+% some leftover
+
+\defCWEBmacro\contentspagenumber{0} % default page number for table of contents
+
+% \newdimen\pagewidth \pagewidth = 158mm % the width of each page
+% \newdimen\pageheight \pageheight = 223mm % the height of each page
+% \newdimen\fullpageheight \fullpageheight = 240mm % page height including headlines
+% \newdimen\pageshift \pageshift = 0in % shift righthand pages wrt lefthand ones
+%
+% \def\magnify#1%
+% {\mag=#1
+% \pagewidth=6.5truein
+% \pageheight=8.7truein
+% \fullpageheight=9truein
+% \setpage}
+%
+% \def\setpage%
+% {\hsize\pagewidth
+% \vsize\pageheight} % use after changing page size
+%
+% \def\contentsfile {\jobname.toc} % file that gets table of contents info
+% \def\readcontents {\input \contentsfile}
+% \def\readindex {\input \jobname.idx}
+% \def\readsections {\input \jobname.scn}
+%
+% \newwrite\cont
+% \output{\setbox0=\page % the first page is garbage
+% \openout\cont=\contentsfile
+% \write\cont{\catcode `\noexpand\@=11\relax} % \makeatletter
+% \global\output{\normaloutput\page\lheader\rheader}}
+% \setpage
+% \vbox to \vsize{} % the first \topmark won't be null
+
+\defCWEBdummy\magnify#1% magnify the page
+ {}
+
+\defCWEBmacro\ch%
+ {\note{The following sections were changed by the change file:}
+ \let\*=\relax}
+
+% \newbox\sbox % saved box preceding the index
+% \newbox\lbox % lefthand column in the index
+%
+% \def\inx%
+% {\par\vskip6pt plus 1fil % we are beginning the index
+% \def\page{\box255 }
+% \normalbottom
+% \write\cont{} % ensure that the contents file isn't empty
+% \write\cont{\catcode `\noexpand\@=12\relax} % \makeatother
+% \closeout\cont % the contents information has been fully gathered
+% \output
+% {\ifpagesaved
+% \normaloutput{\box\sbox}\lheader\rheader
+% \fi
+% \global\setbox\sbox=\page
+% \global\pagesavedtrue}
+% \pagesavedfalse
+% \eject % eject the page-so-far and predecessors
+% \setbox\sbox\vbox{\unvbox\sbox} % take it out of its box
+% \vsize=\pageheight
+% \advance\vsize by -\ht\sbox % the remaining height
+% \hsize=.5\pagewidth
+% \advance\hsize by -10pt
+% % column width for the index (20pt between cols)
+% \parfillskip 0pt plus .6\hsize % try to avoid almost empty lines
+% \def\lr{L} % this tells whether the left or right column is next
+% \output
+% {\if L\lr
+% \global\setbox\lbox=\page
+% \gdef\lr{R}
+% \else
+% \normaloutput
+% {\vbox to\pageheight
+% {\box\sbox
+% \vss
+% \hbox to\pagewidth{\box\lbox\hfil\page}}}
+% \lheader
+% \rheader
+% \global\vsize\pageheight\gdef\lr{L}\global\pagesavedfalse\fi}
+% \message{Index:}
+% \parskip 0pt plus .5pt
+% \outer\def\I##1, {\par\hangindent2em\noindent##1:\kern1em} % index entry
+% \def\[##1]{$\underline{##1}$} % underlined index item
+% \rm
+% \rightskip0pt plus 2.5em
+% \tolerance 10000
+% \let\*=\lapstar
+% \hyphenpenalty 10000
+% \parindent0pt
+% \readindex}
+%
+% \def\fin%
+% {\par\vfill\eject % this is done when we are ending the index
+% \ifpagesaved\null\vfill\eject\fi % output a null index column
+% \if L\lr\else\null\vfill\eject\fi % finish the current page
+% \parfillskip 0pt plus 1fil
+% \def\grouptitle{NAMES OF THE SECTIONS}
+% \let\topsecno=\nullsec
+% \message{Section names:}
+% \output={\normaloutput\page\lheader\rheader}
+% \setpage
+% \def\note##1##2.{\quad{\eightrm##1~##2.}}
+% \def\Q{\note{Cited in section}} % crossref for mention of a section
+% \def\Qs{\note{Cited in sections}} % crossref for mentions of a section
+% \def\U{\note{Used in section}} % crossref for use of a section
+% \def\Us{\note{Used in sections}} % crossref for uses of a section
+% \def\I{\par\hangindent 2em}\let\*=*
+% \readsections}
+%
+% \def\con%
+% {\par\vfill\eject % finish the section names
+% %\ifodd\pageno\else\titletrue\null\vfill\eject\fi % for duplex printers
+% \rightskip = 0pt
+% \hyphenpenalty = 50
+% \tolerance = 200
+% \setpage
+% \output={\normaloutput\page\lheader\rheader}
+% \titletrue % prepare to output the table of contents
+% \pageno=\contentspagenumber
+% \def\grouptitle{TABLE OF CONTENTS}
+% \message{Table of contents:}
+% \topofcontents
+% \line{\hfil Section\hbox to3em{\hss Page}}
+% \let\ZZ=\contentsline
+% \readcontents\relax % read the contents info
+% \botofcontents
+% \end} % print the contents page(s) and terminate
+%
+% \def\contentsline#1#2#3#4%
+% {\ifnum#2=0
+% \smallbreak
+% \fi
+% \line{\consetup{#2}#1
+% \rm\leaders\hbox to .5em{.\hfil}\hfil\ #3\hbox to3em{\hss#4}}}
+%
+
+\defCWEBmacro\consetup#1%
+ {\ifcase#1 \bf % depth -1 (@**)
+ \or % depth 0 (@*)
+ \or \hskip2em % depth 1 (@*1)
+ \or \hskip4em % depth 2 (@*2)
+ \or \hskip6em % depth 3 (@*3)
+ \or \hskip8em % depth 4 (@*4)
+ \or \hskip10em % depth 5 (@*5)
+ \else \hskip12em
+ \fi} % depth 6 or more
+
+\defCWEBdummy \inx {} % index
+\defCWEBdummy \fin {} % finish
+\defCWEBdummy \con {} % table of contents and finish
+
+\defCWEBdummy \noinx {} % no indexes or table of contents
+\defCWEBdummy \nosecs {} % no index of section names or table of contents
+\defCWEBdummy \nocon {} % no table of contents
+
+\defCWEBmacro\,%
+ {\relax
+ \ifmmode
+ \mskip\thinmuskip
+ \else
+ \thinspace
+ \fi}
+
+% \def\noinx%
+% {\let\inx=\end}
+%
+% \def\nosecs%
+% {\let\FIN=\fin
+% \def\fin%
+% {\let\parfillskip=\end
+% \FIN}}
+%
+% \def\nocon%
+% {\let\con=\end}
+%
+% \newcount\twodigits
+%
+% \def\hours%
+% {\twodigits=\time
+% \divide\twodigits by 60
+% \printtwodigits
+% \multiply\twodigits by -60
+% \advance\twodigits by \time
+% :\printtwodigits}
+%
+% \def\gobbleone1{}
+%
+% \def\printtwodigits%
+% {\advance\twodigits by 100
+% \expandafter\gobbleone\number\twodigits
+% \advance\twodigits by -100 }
+%
+% \def\today%
+% {\ifcase\month
+% \or January\or February\or March\or April\or May\or June%
+% \or July\or August\or September\or October\or November\or December%
+% \fi
+% \space
+% \number\day, \number\year}
+%
+% \def\datethis%
+% {\def\startsection%
+% {\leftline{\sc\today\ at \hours}
+% \bigskip
+% \let\startsection=\stsec
+% \stsec}}
+%
+% \def\datecontentspage%
+% {\def\topofcontents%
+% {\leftline{\sc\today\ at \hours}
+% \bigskip
+% \centerline{\titlefont\title}
+% \vfill}}
+
+\defCWEBdummy\datethis {} % say `\datethis' in limbo, to get your listing timestamped before section 1
+\defCWEBdummy\datecontentspage {} % timestamps the contents page
+
+\defCWEBmacro\TeX%
+ {{\ifmmode\it\fi
+ \leavevmode
+ \hbox{T\kern-.1667em\lower.424ex\hbox{E}\hskip-.125em X}}}
+
+% alternative implementation
+
+\newif\ifCWEBnotes
+
+\defCWEBmacro\Q {\CWEBnotesfalse \note{This code is cited in section}} % xref for mention of a section
+\defCWEBmacro\Qs {\CWEBnotestrue \note{This code is cited in sections}} % xref for mentions of a section
+
+\defCWEBmacro\U {\CWEBnotesfalse \note{This code is used in section}} % xref for use of a section
+\defCWEBmacro\Us {\CWEBnotestrue \note{This code is used in sections}} % xref for uses of a section
+
+\defCWEBmacro\A {\CWEBnotesfalse \note{See also section}} % xref for doubly defined section name
+\defCWEBmacro\As {\CWEBnotestrue \note{See also sections}} % xref for multiply defined section name
+
+\defCWEBmacro\ET% conjunction between two section numbers
+ { and~}
+
+\defCWEBmacro\ETs% conjunction between the last two of several section numbers
+ {, and~}
+
+%\def\processCWEBsectionnumbers[#1]%
+% {\bgroup
+% \def\CWEBcomma%
+% {\def\CWEBcomma{, }}%
+% \def\docommando##1%
+% {\bgroup
+% \def\[####1]{####1}%
+% \xdef\CWEBreference{##1}%
+% \egroup
+% \CWEBcomma{\naar{\donottest{##1}}[web:\CWEBreference]}}%
+% \processcommalist[{#1}]\docommando
+% \egroup}
+
+% \def\processCWEBsectionnumbers[#1]%
+% {\bgroup
+% \def\CWEBcomma%
+% {\def\CWEBcomma{, }}%
+% \def\docommando##1%
+% {\bgroup
+% \def\(####1){####1}%
+% \xdef\CWEBreference{##1}%
+% \egroup
+% \CWEBcomma
+% {\localcolortrue\naar{\donottest{##1}}[web:\CWEBreference]}}%
+% \bgroup
+% \def\[##1]{\(##1)}\let\(=\relax\xdef\CWEBreferences{#1}%
+% \egroup
+% \unexpanded\def\(##1){\[##1]}%
+% \processcommacommand[\CWEBreferences]\docommando
+% \egroup}
+
+\def\processCWEBsectionnumbers[#1]%
+ {\bgroup
+ \def\CWEBcomma%
+ {\def\CWEBcomma{, }}%
+ \def\docommando##1%
+ {\bgroup
+ \def\[####1]{####1}%
+ \xdef\CWEBreference{##1}%
+ \egroup
+ \CWEBcomma{\localcolortrue\naar{\donottest{##1}}[web:\CWEBreference]}}%
+ \processlist{(}{)}{,}\docommando(#1)
+ \egroup}
+
+\def\processCWEBsectionnotes%
+ {\catcode`\s=12
+ \doprocessCWEBsectionnotes}
+
+\def\doprocessCWEBsectionnotes#1.%
+ {\ifCWEBnotes
+ \def\next##1\ET##2##3.%
+ {\processCWEBsectionnumbers[##1]%
+ \if##2s%
+ {, and~\naar{##3}[web:##3]}%
+ \else
+ { and~\naar{##2##3}[web:##2##3]}%
+ \fi}%
+ \next#1.%
+ \else
+ \naar{#1}[web:#1]%
+ \fi
+ \afterCWEBnote % inside group!
+ \egroup}
+
+\let\afterCWEBnote=\relax
+
+\defCWEBmacro\note#1%
+ {\bgroup
+ \Y\noindent
+ \def\afterCWEBnote{\par}%
+ \hangindent2em
+ %\baselineskip10pt
+ \eightrm#1~\processCWEBsectionnotes}
+
+\def\oldCWEBmacroX#1:#2\X% original
+ {\ifmmode
+ \gdef\XX{\null$\null}%
+ \else
+ \gdef\XX{}%
+ \fi % section name
+ \XX$\langle\,${#2\eightrm\kern.5em#1}$\,\rangle$\XX}
+
+\defCWEBmacro\ATH%
+ {\oldCWEBmacroX\kern-.5em:Preprocessor definitions\X}
+
+\def\newCWEBmacroX#1:#2\X% original
+ {\ifmmode
+ \gdef\XX{\null$\null}%
+ \else
+ \gdef\XX{}%
+ \fi % section name
+ \XX$\langle\,$%
+ {#2\eightrm\kern.5em\processCWEBsectionnumbers[{#1}]}%
+ $\,\rangle$\XX}
+
+\defCWEBmacro\X#1:#2\X%
+ {\newCWEBmacroX#1:#2\X}
+
+\definieermarkering[CWEBfilename]
+\definieermarkering[CWEBsectiontitle]
+\definieermarkering[CWEBsectionnumber]
+\definieermarkering[CWEBsectiondepth]
+
+\defCWEBmacro\M#1%
+ {\MN{#1}%
+ \ifon
+ \vfil
+ \penalty-100
+ \vfilneg % beginning of section
+ \theCWEBvskip
+ \startsection
+ \pagereference[web:#1]%
+ \expanded{\marking[CWEBsectionnumber]{\secno}}%
+ \expanded{\marking[CWEBsectiondepth]{\the\gdepth}}%
+ \ignorespaces}
+
+\defCWEBmacro\N#1#2#3.%
+ {\gdepth=#1%
+ \MN{#2}% beginning of starred section
+ \ifon
+ \ifnum#1<\secpagedepth
+ \vfil
+ \eject % force page break if depth is small
+ \else
+ \vfil
+ \penalty-100
+ \vfilneg
+ \theCWEBvskip
+ \fi
+ \fi
+ \message{*\secno}% progress report
+ \makesectionformat % context
+ \convertargument#3\to\ascii
+ \edef\next%
+ {\write\CWEBcont % write to contents file
+ {\string\ZZ{\ascii}{#1}{\secno}%
+ {\sectionformat::\noexpand\userfolio}{\noexpand\realfolio}}}%
+ \next % \ZZ{title}{depth}{sec}{page}
+ \ifon
+ \startsection
+ \pagereference[web:#2]%
+ \marking[CWEBsectiontitle] {#3}%
+ \expanded{\marking[CWEBsectionnumber]{\secno}}%
+ \expanded{\marking[CWEBsectiondepth]{\the\gdepth}}%
+ {\bf#3.\quad}%
+ \ignorespaces}
+
+\defCWEBmacro\MN#1%
+ {\par % common code for \M, \N
+ {\xdef\secstar{#1}%
+ \let\*=\empty
+ \xdef\secno{#1}}% remove \* from section name
+ \ifx\secno\secstar
+ \onmaybe
+ \else
+ \ontrue
+ \fi}
+
+\newif\iflinktoCWEBfile
+
+\def\setCWEBlinkfile#1%
+ {\linktoCWEBfiletrue
+ \def\otherCWEBfile{#1}}
+
+\unprotect
+
+\def\gotoCWEBsection#1[#2]%
+ {\iflinktoCWEBfile
+ \bgroup
+ \setupinteraction[\c!kleur=,\c!letter=]%
+ \let\savedreferenceprefix=\referenceprefix
+ \localcolortrue
+ \naar{#1}[\otherCWEBfile::\savedreferenceprefix web:#2]%
+ \egroup
+ \else
+ #1%
+ \fi}
+
+\protect
+
+\defCWEBmacro\startsection%
+ {\rightskip=0pt % get out of C mode (cf. \B)
+ \sfcode`;=1500
+ \pretolerance 200
+ \hyphenpenalty 50
+ \exhyphenpenalty 50
+ \noindent
+ \bgroup
+ \let\*=\lapstar
+ \gotoCWEBsection{\bf\secstar.\quad}[\secno]%
+ \egroup}
+
+\def\ignoreCWEBinput%
+ {\let\normalinput=\input
+ \def\input ##1 %
+ {\let\input=\normalinput}}
+
+\def\loadCWEBmacros#1%
+ {\let\oldN=\N
+ \def\N{\bgroup\setbox0=\vbox\bgroup\endinput}%
+ \ignoreCWEBinput
+ \ReadFile{#1.tex}%
+ \egroup\egroup
+ \let\N=\oldN}
+
+\def\resetCWEBcontext%
+ {\catcode`\|=12 % used in context discretionaries
+ \everypar{} % used for context indentation and floats
+ \parskip=0pt % no stretch between cweb paragraphs
+ \parindent=1em} % is related to cweb backspace etc
+
+\newwrite\CWEBcont
+
+\def\processCWEBsource #1 %
+ {\bgroup
+ \resetCWEBcontext
+ \activateCWEB
+ \ignoreCWEBinput
+ \immediate\openout\CWEBcont=#1.toc
+ \write\CWEBcont{\noexpand\unprotect}
+ \message{Source:}
+ \marking[CWEBfilename]{#1}
+ \ReadFile{#1.tex}\relax
+ \write\CWEBcont{\noexpand\protect}
+ \closeout\CWEBcont
+ \par
+ \egroup}
+
+\def\resetCWEBindexentry%
+ {\xdef\currentCWEBindexentry{}}
+
+\def\showCWEBindexentry#1% can be redefined
+ {\theCWEBvskip
+ \vskip3\lineheight
+ \goodbreak
+ \vskip-3\lineheight
+ {\pagereference[web:#1]\bf#1}%
+ \theCWEBvskip}
+
+\def\checkCWEBindexentry#1%
+ {\bgroup
+ \def\\##1{##1}% a dummy that also removes the {}
+ \def\|##1{##1}% another dummy
+ \def\.##1{*##1}% and another (the typewriter one)
+ \def\&##1{##1}% and a last one
+ \def\9##1{##1}% hold this one
+ \catcode`*=11
+ \expandafter\def\expandafter\entry\expandafter{#1}%
+ \convertcommand\entry\to\ascii
+ \expanded{\FINDFIRSTCHARACTER{\ascii}}%
+ \doifnot{\currentCWEBindexentry}{\firstcharacter}
+ {\doifnot{\firstcharacter}{*} % signal for \firstbunch
+ {\global\let\currentCWEBindexentry=\firstcharacter
+ \showCWEBindexentry{\currentCWEBindexentry}}}%
+ \egroup}
+
+\def\theCWEBbeforeindex {\startkolommen}
+\def\theCWEBafterindex {\stopkolommen}
+
+\def\processCWEBindex #1 %
+ {\bgroup
+ \resetCWEBcontext
+ \activateCWEB
+ \resetCWEBindexentry
+ \def\I##1, %
+ {\par
+ \checkCWEBindexentry{##1}%
+ \hangindent2em
+ \noindent##1:\kern1em%
+ \def\next####1.%
+ {\processCWEBsectionnumbers[{####1}]}%
+ \next}%
+ \def\[##1]%
+ {$\underline{##1}$}%
+ \let\*=\lapstar
+ \parfillskip 0pt plus .6\hsize % try to avoid almost empty lines
+% \parskip 0pt plus .5pt
+ \rightskip0pt plus 2.5em
+ \tolerance 10000
+ \hyphenpenalty 10000
+ \parindent0pt
+ \message{Index:}
+ \marking[CWEBfilename] {#1}
+ \marking[CWEBsectiontitle] {index}
+ \marking[CWEBsectionnumber]{}
+ \marking[CWEBsectiondepth]{}
+ \loadCWEBmacros{#1}
+ \theCWEBbeforeindex
+ \ReadFile{#1.idx}\relax
+ \theCWEBafterindex
+ \par
+ \egroup}
+
+\def\processCWEBsections #1 %
+ {\bgroup
+ \resetCWEBcontext
+ \activateCWEB
+ \loadCWEBmacros{#1}
+ \parfillskip = 0pt plus 1fil
+ \parindent = 0pt
+ \let\topsecno=\nullsec
+ \def\note##1%
+ {\quad
+ \bgroup
+ \eightrm
+ ##1~\processCWEBsectionnotes}
+ \def\Q {\CWEBnotesfalse \note{Cited in section}} % crossref for mention of a section
+ \def\Qs{\CWEBnotestrue \note{Cited in sections}} % crossref for mentions of a section
+ \def\U {\CWEBnotesfalse \note{Used in section}} % crossref for use of a section
+ \def\Us{\CWEBnotestrue \note{Used in sections}} % crossref for uses of a section
+ \def\I {\par\hangindent 2em}%
+ \let\*=*
+ \message{Section names:}
+ \marking[CWEBfilename] {#1}
+ \marking[CWEBsectiontitle] {sections}
+ \marking[CWEBsectionnumber]{}
+ \marking[CWEBsectiondepth]{}
+ \loadCWEBmacros{#1}
+ \ReadFile{#1.scn}\relax
+ \par
+ \botofcontents
+ \par
+ \egroup}
+
+\def\processCWEBcontents #1 %
+ {\bgroup
+ \resetCWEBcontext
+ \activateCWEB
+ \loadCWEBmacros{#1}
+ \rightskip = 0pt
+ \hyphenpenalty = 50
+ \tolerance = 200
+ \parindent = 0pt
+ \line{\hfil Section\hbox to3em{\hss Page}}
+ \let\ZZ=\contentsline
+ \message{Table of contents:}
+ \marking[CWEBfilename] {#1}
+ \marking[CWEBsectiontitle] {table of contents}
+ \marking[CWEBsectionnumber]{}
+ \marking[CWEBsectiondepth]{}
+ \loadCWEBmacros{#1}
+ \ReadFile{#1.toc}\relax
+ \par
+ \egroup}
+
+\defCWEBmacro\contentsline#1#2#3#4#5%
+ {\ifnum#2=0
+ \smallbreak
+ \fi
+ \line{\consetup{#2}#1
+ \rm
+ \leaders\hbox to .5em{.\hfil}\hfil\
+ {\localcolortrue\naar{#3}[web:#3]}% below: \gotorealpage ? should be changed
+ \hbox to3em{\localcolortrue\hss\gotorealpage{}{}{#5}{\translatednumber[#4]\presetgoto}}}}
+
+%D A last hack, needed because a file can overload of the
+%D above. (Some day: a check like \ifx#1\CWEBdefined.)
+
+\def\outer#1#2%
+ {\ifx#2\undefined
+ \expandafter#1\expandafter#2%
+ \else
+ \expandafter#1\expandafter\ThrowAway
+ \fi}
+
+\endinput
diff --git a/tex/context/base/m-pictex.tex b/tex/context/base/m-pictex.tex
index ac74c1d6b..408105581 100644
--- a/tex/context/base/m-pictex.tex
+++ b/tex/context/base/m-pictex.tex
@@ -239,7 +239,7 @@
%D Now we can load \PICTEX:
-\loadpictec
+\loadpictex
%D Finally we restore the old definitions of \type{\newdimen}
%D and \type{\newskip}:
diff --git a/tex/context/base/m-units.tex b/tex/context/base/m-units.tex
index f0f13c48f..fd82b1499 100644
--- a/tex/context/base/m-units.tex
+++ b/tex/context/base/m-units.tex
@@ -44,6 +44,16 @@
1: Verwende \string\Degrees\space\string\Celsius\space statt \string\Celsius !
\stopmessages
+\startmessages italian library: units
+ title: unità
+ 1: usare \string\Degrees\space\string\Celsius\space invece di \string\Celsius !
+\stopmessages
+
+\startmessages norwegian library: units
+ title: enheter
+ 1: bruk \string\Degrees\space\string\Celsius\space istedenfor \string\Celsius !
+\stopmessages
+
\unprotect
%D This runtime loadable module implements a way of defining
@@ -593,12 +603,12 @@
%D Some more, thanks to Tobias:
-\getvalue{\v!eenheid} [Gray] {Gr} {Gray}
-\getvalue{\v!eenheid} [Weber] {Wb} {Weber}
-\getvalue{\v!eenheid} [Henry] {H} {Henry}
-\getvalue{\v!eenheid} [Sterant] {sr} {Sterant}
-\getvalue{\v!eenheid} [Angstom] {\AA} {\AA ngstr\"om}
-\getvalue{\v!eenheid} [Gauss] {G} {Gauss}
+\getvalue{\v!eenheid} [Gray] {Gr} {Gray}
+\getvalue{\v!eenheid} [Weber] {Wb} {Weber}
+\getvalue{\v!eenheid} [Henry] {H} {Henry}
+\getvalue{\v!eenheid} [Sterant] {sr} {Sterant}
+\getvalue{\v!eenheid} [Angstrom] {\AA} {\AA ngstr\"om}
+\getvalue{\v!eenheid} [Gauss] {G} {Gauss}
\setuplabeltext
[\s!nl]
diff --git a/tex/context/base/main-001.tex b/tex/context/base/main-001.tex
index db1a16b4a..5a1e0758d 100644
--- a/tex/context/base/main-001.tex
+++ b/tex/context/base/main-001.tex
@@ -13,12 +13,6 @@
%D This module is still to be split and documented.
-% nog oplossen: voetnoot setten ivm later veranderde
-% witruimte; probleem: als lijn graphic
-
-% The %I etc thing will be replaced by documentation. Some
-% years ago they served as helpinfo blocks for our editor.
-
\writestatus{loading}{Context Core Macros (1)}
\newevery \everybodyfont \Everybodyfont % just to be sure
@@ -51,7 +45,6 @@
\protect
-
\unprotect
\startmessages dutch library: systems
@@ -178,6 +171,68 @@
27: verze
\stopmessages
+\startmessages italian library: systems
+ title: sistema
+ 1: caricamento dei file supplementari posticipato (typemode)
+ 2: -- caricato
+ 3: provare LaTeX
+ 4: comando -- già definito
+ 5: macro del modulo -- caricate
+ 6: nessuna macro trovata nel modulo --
+ 7: macro del modulo -- già caricate
+ 8: nuova versione del file supplementare, seconda passata necessaria
+ 9: -- non trovato/elaborato
+ 10: non usare em in --
+ 11: costruzione di un semplice supplemento
+ 12: file di supplemento non ordinato, usare texutil
+ 13: marcatura -- definita --
+ 14: nuova pagina obbligata in lista a --
+ 15: salvataggio del buffer --
+ 16: composizione del buffer --
+ 17: composizione verbatim del buffer --
+ 18: sinonimo -- -- non esistente
+ 19: significato (sinonimi) di -- caricato
+ 20: significato (specie) di -- caricato
+ 21: nessuna informazione supplementare caricata
+ 22: usare un file supplementare valido
+ 23: -- sistemato a --
+ 24: Oggetti mobili
+ 25: Riferimenti
+ 26: Registri
+ 27: Versione
+\stopmessages
+
+\startmessages norwegian library: systems
+ title: system
+ 1: innlesning av hjelpefila utsatt (typemode)
+ 2: -- er lest inn
+ 3: forsøker LaTeX
+ 4: kommando -- er allerede definert
+ 5: makroene i modul -- er lest inn
+ 6: ingen makroer funnet i modul ---
+ 7: makroene i modul -- er allerede lest inn
+ 8: ny versjon av hjelpefil, andre gjennomkjøring nødvendig
+ 9: -- ikke funnet/behandlet
+ 10: ikke bruk em i --
+ 11: lager enkel hjelpefil
+ 12: hjelpefila er ikke sortert, bruk texutil
+ 13: markering -- definert --
+ 14: tvunget sideskift i liste ved --
+ 15: lagrer Buffer --
+ 16: tegnsetter buffer --
+ 17: tegnsetter verbatim-buffer --
+ 18: synonym -- -- eksisterer ikke
+ 19: betydning (synonymer) av -- er lest inn
+ 20: betydning (sorterer) av -- er lest inn
+ 21: hjelpefila er ikke lest inn
+ 22: bruk en gyldig hjelpefil
+ 23: -- arrangert på --
+ 24: Flytblokker
+ 25: Referanser
+ 26: Registere
+ 27: Versjon
+\stopmessages
+
\startmessages dutch library: floatblocks
title: plaatsblokken
1: -- hernummerd / -- => --
@@ -242,6 +297,38 @@
12: nedefinovano
\stopmessages
+\startmessages italian library: floatblocks
+ title: oggetti mobili
+ 1: -- rinumerato / -- => --
+ 2: -- salavto
+ 3: -- mosso
+ 4: -- sistemato
+ 5: ordine aggiustato
+ 6: n di top floats limitato a --
+ 7: n di bottom floats limitato a --
+ 8: meno di -- righe
+ 9: ordine disturbato
+ 10: -- limitato
+ 11: nessun oggetto specificato
+ 12: non definito
+\stopmessages
+
+\startmessages norwegian library: floatblocks
+ title: flytblokker
+ 1: -- renummerert / -- => --
+ 2: -- lagret
+ 3: -- flyttet
+ 4: -- plassert
+ 5: rekkefølge tilpasset
+ 6: maksimalt -- flytblokker øverst
+ 7: maksimalt -- flytblokker nederst
+ 8: mindre enn -- linjer
+ 9: rekkefølge endret
+ 10: -- begrenset
+ 11: ingen blokk oppgitt
+ 12: udefinert
+\stopmessages
+
\startmessages dutch library: layouts
title: layout
1: teksthoogte aangepast met -- op pagina --
@@ -297,6 +384,34 @@
10: -- a -- nedava dohromady 1.0
11: svisla mezera -- neni povolena v pevnem radkovem rejstriku
\stopmessages
+
+\startmessages italian library: layouts
+ title: layout
+ 1: altezza del testo adattata con -- a pagina --
+ 2: posizionato testo posticipato -- volte
+ 3: testo posticipato -- volte
+ 4: blocchi in margine attivi
+ 5: blocchi in margine inattivi
+ 6: gruppo di sottopagine -- elaborato (dimensione --)
+ 7: calcolo dello spazio per logo
+ 8: calcolo dello sfondo
+ 10: -- e -- non sommano a 1.0
+ 11: spaziatura -- non permessa in modo griglia
+\stopmessages
+
+\startmessages norwegian library: layouts
+ title: layout
+ 1: teksthøyde tilpasset med -- på side --
+ 2: -- ganger forskjøvet tekst plassert
+ 3: -- ganger tekst forskjøvet
+ 4: margblokker aktive
+ 5: margblokker inaktive
+ 6: delside sett -- behandlet (størrelse --)
+ 7: beregner plass for logo
+ 8: beregner bakgrunn
+ 10: -- og -- er ikke 1.0 til sammen
+ 11: mellomrom -- ikke tillatt i gridmodus
+\stopmessages
% \CONTEXTtrue % Now we know that we can use ConTeXt commands.
@@ -466,13 +581,15 @@
{\emergencystretch\!!zeropoint\relax}
\def\forgetall%
- {\let\par=\endgraf % i.v.m. getpar etc
- \notragged
- \forgetparskip
- \forgetparindent
- \forgetbothskips
- \forgetspacing % i.v.m. funny spacing in pagebody
- \everypar{}} % indeed!
+ {\the\everyforgetall}
+
+\appendtoks \let\par=\endgraf \to \everyforgetall % i.v.m. getpar etc
+\appendtoks \notragged \to \everyforgetall
+\appendtoks \forgetparskip \to \everyforgetall
+\appendtoks \forgetparindent \to \everyforgetall
+\appendtoks \forgetbothskips \to \everyforgetall
+\appendtoks \forgetspacing \to \everyforgetall % i.v.m. funny spacing in pagebody
+\appendtoks \everypar\emptytoks \to \everyforgetall % indeed!
\def\localvbox#1#%
{\vbox#1\bgroup
@@ -509,6 +626,10 @@
\newskip\leftskipadaption
\def\doadaptleftskip#1%
+ {\dosetleftskipadaption{#1}%
+ \advance\leftskip by \leftskipadaption}
+
+\def\dosetleftskipadaption#1%
{\leftskipadaption\!!zeropoint
\processaction[#1] % \ExpandFirstAfter
[\v!standaard=>\leftskipadaption=
@@ -516,8 +637,7 @@
\v!ja=>\leftskipadaption=
\ifdim\voorwit=\!!zeropoint\@@sllinks\else\voorwit\fi,
\v!nee=>,
- \s!unknown=>\leftskipadaption=#1]%
- \advance\leftskip by \leftskipadaption}
+ \s!unknown=>\leftskipadaption=#1]}
\def\herhaal {\dorepeat}
\def\herhaler {\repeater}
@@ -609,18 +729,6 @@
\catcode`\^^L=\@@endofline
-%I n=Struts
-%I c=\strut,\setnostrut,\setstrut,\toonstruts,\pseudostrut
-%I
-%I Struts zijn onzichtbare 'karakters' met alleen een hoogte
-%I en diepte. De volgende commando's hebben betrekking op
-%I struts
-%I
-%I \strut
-%I \setstrut
-%I \setnostrut
-%I \toonstruts
-
\def\toonstruts%
{\setteststrut}
@@ -674,6 +782,7 @@
\def\baselinegluefactor {0}
\def\normallineheight {\baselinefactor ex}
+\def\minimallinedistance {\lineskip}
\def\strutheight {0pt}
\def\strutdepth {0pt}
@@ -736,7 +845,7 @@
\openlineheight
\!!plus\baselinegluefactor\openlineheight
\!!minus\baselinegluefactor\openlineheight
- \normallineskip\!!onepoint\relax
+ \normallineskip\minimallinedistance\relax % \!!onepoint\relax
\normallineskiplimit\!!zeropoint\relax
\normalbaselines}
@@ -776,18 +885,66 @@
% The double \hbox construction enables us to \backtrack
% boxes.
+% \def\setstrut%
+% {\setstrutdimen\strutheight\strutheightfactor\spacingfactor
+% \setstrutdimen\strutdepth \strutdepthfactor \spacingfactor
+% \let\strut=\normalstrut
+% \setbox\strutbox=\normalhbox
+% {\normalhbox
+% {\vrule
+% \!!width \strutwidth
+% \!!height \strutheight
+% \!!depth \strutdepth
+% \normalkern-\strutwidth}}}
+
\def\setstrut%
{\setstrutdimen\strutheight\strutheightfactor\spacingfactor
\setstrutdimen\strutdepth \strutdepthfactor \spacingfactor
- \let\strut=\normalstrut
- \setbox\strutbox=\normalhbox
- {\normalhbox
- {\vrule
- \!!width \strutwidth
- \!!height \strutheight
- \!!depth \strutdepth
- \normalkern-\strutwidth}}}
+ \dosetstrut}
+
+\def\setcharstrut#1%
+ {\setbox\strutbox=\hbox{#1}%
+ \edef\strutheight{\the\ht\strutbox}%
+ \edef\strutdepth {\the\dp\strutbox}%
+ \dosetstrut}
+
+\def\setcapstrut% could be M, but Q has descender
+ {\setcharstrut{Q}}
+%D Centered looks nicer:
+
+\def\dosetstrut%
+ {\let\strut=\normalstrut
+ \setbox\strutbox=\normalhbox
+ {\normalhbox to \!!zeropoint
+ {% \hss % new, will be option
+ \vrule
+ \!!width \strutwidth
+ \!!height\strutheight
+ \!!depth \strutdepth
+ \hss}}}
+%D Sometimes a capstrut comes in handy
+%D
+%D \starttabulatie[|Tl|l|l|]
+%D \NC yes \NC normal strut \NC {\toonstruts\setupstrut[ja]\strut} \NC \NR
+%D \NC no \NC no strut \NC {\toonstruts\setupstrut[nee]\strut} \NC \NR
+%D \NC kap \NC a capital strut (i.e. Q) \NC {\toonstruts\setupstrut[kap]\strut} \NC \NR
+%D \NC A B \unknown \NC a character strut (e.g. A) \NC {\toonstruts\setupstrut[A]\strut} \NC \NR
+%D \NC \NC a normal strut \NC {\toonstruts\setupstrut\strut} \NC \NR
+%D \stoptabulatie
+
+\def\setupstrut%
+ {\dosingleempty\dosetupstrut}
+
+\def\dosetupstrut[#1]% yet undocumented
+ {\processaction
+ [#1]
+ [ \v!ja=>\setstrut,
+ \v!nee=>\setnostrut,
+ \v!kap=>\setcapstrut,
+ \s!default=>\setstrut,
+ \s!unknown=>\setcharstrut{\commalistelement}]}
+
\def\setteststrut%
{\def\strutwidth{.8pt}%
\setstrut}
@@ -845,6 +1002,10 @@
\def\setfontparameters%
{\the\everybodyfont}
+%D Handy:
+
+\def\baselinedistance{\the\lineheight}
+
%D We need \type{\normaloffinterlineskip} because the new
%D definition contains an assignment, and |<|don't ask me
%D why|>| this assignment gives troubles in for instance the
@@ -1180,110 +1341,6 @@
\def\startglobal {\dostartglobaldefs<+}
\def\stopglobal {\dostopglobaldefs}
-%I n=Zetspiegel
-%I c=\stellayoutin,\definieerpapierformaat,\stelpapierformaatin
-%I c=\paslayoutaan
-%I
-%I De zetspiegel is het door de tekst gevormde vlak.
-%I Hiertoe behoren ¢¢k de hoofd- en voetmarge. De zetspiegel
-%I wordt ingesteld met:
-%I
-%I \stellayoutin[breedte=,hoogte=,rugwit=,kopwit=]
-%I
-%I Er dienen maten te worden ingevuld, waarbij de eenheid
-%I direkt achter het getal staat: 10pt, 100mm, 5cm, 3.5in.
-%I
-%I De parameters hebben de volgende betekenis:
-%I
-%I breedte breedte van het tekstvlak, inclusief marges
-%I hoogte hoogte van het tekstvlak, inclusief marges
-%I rugwit witruimte aan de binnenzijde, zonder marge
-%I kopwit witruimte aan de bovenzijde, zonder marge
-%P
-%I Rond de zetspiegel vinden we marges, randen, het hoofd en
-%I de voet. Ook deze worden ingesteld met:
-%I
-%I \stellayoutin[breedte=,hoogte=,rugwit=,kopwit=]
-%I
-%I hoofd hoogte van de bovenmarge binnen de zetspiegel
-%I voet hoogte van de ondermarge binnen de zetspiegel
-%I marge breedte van de marge naast de zetspiegel
-%I
-%I en
-%I
-%I rand breedte van de rand naast de marge
-%I boven hoogte van de rand boven het hoofd
-%I onder hoogte van de rand onder de voet
-%I
-%I Alleen het hoofd en de voet hangen dus samen met de
-%I zetspiegel.
-%P
-%I Eventueel kunnen de linker- en rechtermarge en apart
-%I worden ingesteld:
-%I
-%I \stellayoutin[linkermarge=,rechtermarge=]
-%I
-%I Het zelfde geldt voor de randen. In dat geval wordt bij
-%I dubbelzijdig zetten gespiegeld. Oppassen dus!
-%I
-%I De afstanden tussen marges, randen enz. kunnen worden
-%I ingesteld met:
-%I
-%I bovenafstand, onderafstand
-%I hoofdafstand,voetafstand
-%I linkermargeafstand,rechtermargeafstand,
-%I linkerrandafstand,rechterrandafstand
-%P
-%I De zetspiegel kan (tijdelijk) worden aangepast met het
-%I commando:
-%I
-%I \paslayoutaan[hoogte=]
-%I
-%I Men dient een positieve (+) of negatieve (-) maat op te
-%I geven. De zethoogte blijft gelijk, maar de teksthoogte
-%I wordt aangepast ten koste van de voethoogte. Eventueel
-%I kan 'max' worden opgegeven.
-%I
-%I Er kan een reeks aanpassingen worden opgegeven:
-%I
-%I \paslayoutaan[nr,nr,nr,...][hoogte=]
-%I
-%I Hierbij is staat nr voor het paginanummer, dat wil
-%I zeggen: het volgnummer in de tekst.
-%I
-%I Bij voorlopige versies wordt onderaan de pagina de
-%I aanpassing weergegeven.
-%P
-%I Beeldmerken en achtergronden worden uit oogpunt van
-%I verwerkingssnelheid niet vaker berekend dan nodig. Mocht
-%I om een of andere reden een beeldmerk of achtergrond niet
-%I overeenkomen komen met de wensen, dan kan herberekenen
-%I worden geforceerd met:
-%I
-%I \stellayoutin[reset]
-%P
-%I Het papierformaat is in te stellen met het commando
-%I
-%I \stelpapierformaatin[DIN-formaat]
-%I
-%I Mogelijke DIN-formaten zijn A4 tot en met A9. De
-%I afmetingen van een A4 zijn:
-%I
-%I breedte : 21.0cm = 8.18in = 589pt
-%I hoogte : 29.7cm = 11.58in = 834pt
-%I
-%I Optioneel kan men het printer papierformaat instellen door
-%I een tweede argument mee te geven. Standaard wordt
-%I uitgegaan van A4.
-%I
-%I \stelpapierformaatin[A5][A4]
-%I
-%P Men kan zelf een papierformaat definieren met
-%I
-%I \definieerpapierformaat [naam] [hoogte=,breedte=]
-%I
-%I waarbij de offset betrekking heeft op dubbelzijdig zetten.
-
\ifx\stelpapierformaatin\undefined
\let\stelpapierformaatin\relax
\fi
@@ -1352,6 +1409,8 @@
\def\dodostelpapierformaatin[#1][#2]%
{\ifsecondargument
+ \xdef\herstelpapierformaat%
+ {\noexpand\stelpapierformaatin[#1][#2]}%
\dostelpapierrichtingin{#1}\paperlandscape\paperrotation\paperreverse\papermirror
\dostelpapierrichtingin{#2}\printlandscape\printrotation\printreverse\printmirror
\def\docommando##1%
@@ -1360,7 +1419,7 @@
\global\papierhoogte=\getvalue{\??pp##1\c!hoogte}%
\calculatepaperoffsets{##1}%
\xdef\papierformaat{##1}}}}%
- \processcommalist[#1]\docommando
+ \processcommacommand[#1]\docommando
\doifdefinedelse{\??pp#1\c!schaal}
{\edef\papierschaal{\getvalue{\??pp#1\c!schaal}}}
{\edef\papierschaal{1}}%
@@ -1369,7 +1428,7 @@
{\global\printpapierbreedte=\getvalue{\??pp##1\c!breedte}%
\global\printpapierhoogte=\getvalue{\??pp##1\c!hoogte}%
\xdef\printpapierformaat{##1}}}}%
- \processcommalist[#2]\docommando
+ \processcommacommand[#2]\docommando
\ifnum\paperlandscape>0
\doglobal\swapdimens\papierbreedte\papierhoogte
\fi
@@ -1390,9 +1449,11 @@
\else\iffirstargument
\stelpapierformaatin[#1][#2]%
\else\ifx\papierformaat\undefined\else
- \stelpapierformaatin[\papierformaat][\printpapierformaat]%
+ \herstelpapierformaat
\fi\fi\fi}
+\let\herstelpapierformaat\relax
+
\def\stelpapierformaatin%
{\dodoubleempty\dostelpapierformaatin}
@@ -1431,9 +1492,11 @@
\doifelse{\@@lybreedte}{\v!midden}
{\global\zetbreedte=\papierbreedte
\global\advance\zetbreedte by -\rugwit
- \doifelsenothing{\@@lysnijwit}
- {\global\advance\zetbreedte by -\rugwit}
- {\global\advance\zetbreedte by -\@@lysnijwit}}
+ \scratchdimen=\@@lysnijwit\relax
+ \ifdim\scratchdimen=\!!zeropoint
+ \scratchdimen=\rugwit
+ \fi
+ \global\advance\zetbreedte by -\scratchdimen}
{\doifelse{\@@lybreedte}{\v!passend}
{\global\zetbreedte=\papierbreedte
\global\advance\zetbreedte by -\rugwit
@@ -1457,16 +1520,18 @@
{\doifelse{\@@lyhoogte}{\v!midden}
{\global\zethoogte=\papierhoogte
\global\advance\zethoogte by -\kopwit
- \doifelsenothing{\@@lybodemwit}
- {\global\advance\zethoogte by -\kopwit}
- {\global\advance\zethoogte by -\@@lybodemwit}}
+ \scratchdimen=\@@lybodemwit\relax
+ \ifdim\scratchdimen=\!!zeropoint
+ \scratchdimen=\kopwit
+ \fi
+ \global\advance\zethoogte by -\scratchdimen}
{\doifelse{\@@lyhoogte}{\v!passend}
{\global\zethoogte=\papierhoogte
\global\advance\zethoogte by -\kopwit
\scratchdimen=\kopwit
\advance\scratchdimen by -\bovenhoogte
\advance\scratchdimen by -\bovenafstand
- \ifdim\scratchdimen<\!!zeropoint
+ \ifdim\scratchdimen<\!!zeropoint
\scratchdimen=\!!zeropoint
\fi
\global\advance\zethoogte by -\onderafstand
@@ -1481,10 +1546,7 @@
\calculatehsizes
\calculatevsizes
\global\newlogostrue
- \global\newbackgroundtrue
- \setMPpagedata}
-
-\ifx\setMPpagedata\undefined \let\setMPpagedata\relax \fi
+ \global\newbackgroundtrue}
\def\checklayout%
{\doifsomething{\@@lyregels}
@@ -1590,23 +1652,6 @@
\def\paslayoutaan%
{\dodoubleempty\dopaslayoutaan}
-%I n=Margeblokken
-%I c=\startmargeblok,\stelmargeblokkenin
-%I
-%I voorlopig:
-%I
-%I \stelmargeblokkenin
-%I [plaats=,breedte,letter=,uitlijnen=,
-%I voor=,na=,links=,rechts=,boven=,onder=,tussen=]
-%I
-%I plaats = inmarge, links, rechts, midden
-%I links, rechts, voor, na = rule
-%I boven, onder, tussen = skip
-%I status=
-%I
-%I \startmargeblok
-%I \stopmargeblok
-
\newif\ifmargeblokken
\def\dostelmargeblokkenin[#1]%
@@ -1632,10 +1677,8 @@
\def\dosomenextfloat[#1]%
{\global\setbox\marginbox=\vbox
{\hsize\@@mbbreedte
- \unvbox\marginbox
- \ifvoid\marginbox\else
- \@@mbtussen
- \fi
+ \unvcopy\marginbox
+ \ifvoid\marginbox\else\expandafter\@@mbtussen\fi
\box\floatbox\filbreak}%
\ifdim\ht\marginbox>\teksthoogte
\dosavefloatinfo
@@ -1735,42 +1778,6 @@
\egroup
\@@mbna}
-%I n=Uitstellen
-%I c=\startuitstellen
-%I
-%I Zetcommando's kunnen in een wachtrij worden gezet en na
-%I een pagina worden uitgevoerd. Dit gebeurt met het commando:
-%I
-%I \startuitstellen
-%I ...
-%I \stopuitstellen
-%I
-%I Dit kan handig zijn bij bijvoorbeeld grote tussen te voegen
-%I figuren, tabellen, formulieren enz.
-%I
-%I \startuitstellen
-%I \plaatsfiguur[pagina][]{...}{...}
-%I \stopuitstellen
-%I
-%I Er kunnen meerdere commando's in de wachtrij worden
-%I geplaatst.
-%P
-%I Het mechanisme werkt nog niet vlekkeloos. Zo wordt
-%I nog gerekend met waarden van de vorige pagina. Dit heeft
-%I bijvoorbeeld als gevolg dat figuren kunnen worden
-%I opgespaard.
-%I
-%I Het kan gebeuren dat een (te) groot figuur er voor zorgt
-%I dat ook andere figuren worden verplaatst. De volgorde
-%I blijft immers gehandhaafd. In dat geval kan zo'n groot
-%I figuur worden verplaatst naar de eerstvolgende voor de
-%I handliggende pagina:
-%I
-%I \startuitstellen
-%I \plaatsfiguur[pagina][]{...}{...}
-%I \pagina
-%I \stopuitstellen
-
\newcounter\nofpostponedblocks
\newif\ifinuitstellen
@@ -1825,7 +1832,7 @@
\def\dostelsubpaginanummerin[#1]%
{\doifelse{#1}{\v!reset}
- {\resetnummer[\s!subpage]}
+ {\resetsubpaginanummer} % \resetnummer[\s!subpage]
{\getparameters[\??sn][#1]%
\processaction
[\@@snstatus]
@@ -2052,7 +2059,7 @@
\fi}
\def\myshipout#1%
- {\voorpagina
+ {\voorpagina % voor de pagebody dus !
\dontshowcomposition
\ifarrangingpages
\actualarrange
@@ -2280,8 +2287,10 @@
\ifbottomnotes
\ht0=\!!zeropoint
\fi
+%% \setbox0= % todo, there must be a faster way to kill funny depths
\vbox to \teksthoogte
{\box0\box2\ifbottomnotes\else\vfill\fi}%
+%% \dp0=\!!zeropoint \box0 % new
\egroup}
\def\dodummypageskip#1%
@@ -2347,6 +2356,7 @@
\hss}% new
\ht0=\teksthoogte
\wd0=\zetbreedte
+\dp0=\!!zeropoint % new, maybe a reason for small shifts
\ifshowgrid
\setgridbox2\zetbreedte\teksthoogte
\hbox{\color[red]{\box2}\hskip-\zetbreedte\box0}%
@@ -2662,8 +2672,8 @@
{\getallmarks
\the\everypagebody
\startcolorpage
- \gotonextsubpage
- \dontshowboxes
+ \gotonextsubpage % nog eens: als in pagina (tbv standaard opmaak)
+ \dontshowboxes % dan hier blokkeren en verderop resetten
\naastpagina
\checkreferences
\checkmargeblokken
@@ -2763,31 +2773,10 @@
\def\dooutput%
{\finaloutput\unvbox\normalpagebox}
+\maxdeadcycles=1000
+
\output={\dooutput}
-%I n=Beeldmerken
-%I c=\definieerbeeldmerk,\plaatsbeeldmerken
-%I
-%I In het hoofd of in de voet kan een logo worden gezet met
-%I het commando:
-%I
-%I \plaatsbeeldmerken[naam]
-%I
-%I Plaatsen kan dan ook pas nadat een beeldmerk is gedefinieerd:
-%I
-%I \definieerbeeldmerk[naam][lokatie][plaats][commando=,status=]
-%I
-%I waarbij status 'start' of 'stop' kan zijn. In geval van
-%I 'start' wordt op elke bladzijde het logo geplaatst.
-%I
-%I Mogelijke lokaties zijn 'boven', 'hoofd', 'voet' en 'onder' en
-%I als plaats kan worden opgegeven 'linkerrand', 'linkermarge',
-%I 'links', 'midden', 'rechts', 'rechtermarge' en 'rechterrand'.
-%I
-%I Logo's worden boven, onder of in de hoofd- of voetregel gezet,
-%I zo hoog of laag mogelijk. Verdere positionering zal dus in
-%I het commando moeten plaatsvinden!
-
\newbox\leftlogos
\newbox\rightlogos
@@ -2930,38 +2919,6 @@
{\copy\rightlogos}%
\fi}
-%I n=Spatiering
-%I c=\stelspatieringin
-%I c=\omlaag,\opelkaar,\spatie,\vastespaties
-%I
-%I De ruimte na interpunctie worden ingesteld met:
-%I
-%I \stelspatieringin[instelling]
-%I
-%I waarbij de volgende instellingen mogelijk zijn:
-%I
-%I ruim flexibele ruimte na interpunctie
-%I opelkaar een spatie na interpunctie
-%I
-%I Bij een smalle layout levert de instelling 'ruim' minder
-%I in de marge uitstekende (niet af te breken) woorden op.
-%I
-%P
-%I Andere commando's zijn:
-%I
-%I \omlaag[afstand] een vaste afstand omlaag
-%I \opelkaar ruimte tussen regels weghalen
-%I
-%I \spatie een (harde) spatie
-%I \geenspatie geen vorige/volgende spatie
-%I
-%I \hfil \hfill \hfilll opvullen met horizontaal wit
-%I \vfil \vfill \vfilll opvullen met vertikaal wit
-%I
-%I \strut karakter-box zonder breedte
-%I
-%I \vastespaties geeft ~ de breedte van een cijfer
-
% \frenchspacing leidt soms tot afbreken tussen -, vandaar
% de variant \newfrenchspacing.
@@ -3010,51 +2967,6 @@
{\nointerlineskip
\vskip#1 }
-%I n=Witruimte
-%I c=\stelwitruimtein,\witruimte,\geenwitruimte
-%I c=\startopelkaar,\startvanelkaar
-%I c=\startregelcorrectie,\corrigeerwitruimte
-%I
-%I De afstand tussen paragrafen is in te stellen met:
-%I
-%I \stelwitruimtein[maat]
-%I
-%I In te vullen op de plaats van 'maat' (12pt, 1cm) of een
-%I van de aanduidingen klein, middel of groot. Als niets
-%I wordt meegegeven, dus alleen \stelwitruimtein, dan
-%I wordt de ingestelde witruimte aangepast aan het formaat
-%I letter.
-%I
-%I Voor elke lege regel in de ASCII-file voegt TEX de
-%I ingestelde witruimte tussen.
-%I
-%I Het commando \witruimte dwingt witruimte af en het
-%I commando \geenwitruimte maakt witruimte ongedaan.
-%I
-%I Behalve met de hier beschreven witruimte-commando's is de
-%I witruimte tussen paragrafen te be‹nvloeden met behulp van
-%I de elders beschreven blanko-commando's.
-%P
-%I Een stuk tekst kan zonder witruimte worden gezet door het
-%I tussen de volgende commando's op te nemen:
-%I
-%I \startopelkaar
-%I \stopopelkaar
-%I
-%I Waarbij een optioneel argument [blanko] mogelijk is. De
-%I tegenhanger hiervan is:
-%I
-%I \startvanelkaar
-%I \stopvanelkaar
-%P
-%I TeX handelt de interlinie van een (omlijnde) box of een
-%I rule anders af dan van een regel tekst. In dergelijke
-%I gevallen kan de volgende constructie worden gebruikt:
-%I
-%I \startregelcorrectie
-%I \omlijnd{tekst}
-%I \stopregelcorrectie
-
\newskip\tussenwit
\tussenwit=\!!zeropoint
@@ -3246,27 +3158,6 @@
\stopbaselinecorrection}%
\vbox}
-%I n=Regelafstand
-%I c=\stelinterliniein
-%I
-%I De regelafstand is in te stellen met het commando:
-%I
-%I \stelinterliniein[factor]
-%I
-%I Invulmogelijkheden voor 'factor' zijn: klein (1.00),
-%I middel (1.25), groot (1.50) of een getal. OOk kan
-%I aan of uit worden opgegeven.
-%I
-%I Als het commando zonder [factor] wordt gegeven, dan
-%I worden de interlinie aangepast aan het formaat van het
-%I actuele letterformaat. Een aan het formaat aangepaste
-%I interlinie kan ook worden ingesteld met:
-%I
-%I \stelinterliniein[reset,factor]
-%I
-%I In z'n eenvoudigste vorm \stelinterliniein wordt de
-%I interlinie aangepast aan het formaat letter.
-
%D There are two ways to influence the interline spacing. The
%D most general and often most consistent way is using
%D
@@ -3323,11 +3214,12 @@
\let\@@itdiepte=\strutdepthfactor
\else
\let\strutheightfactor=\@@ithoogte
- \let\strutdepthfactor =\@@itdiepte
+ \let\strutdepthfactor=\@@itdiepte
\fi
- \let\normallineheight=\@@itregel
- \let\topskipfactor =\@@itboven
- \let\maxdepthfactor =\@@itonder
+ \let\minimallinedistance=\@@itafstand
+ \let\normallineheight=\@@itregel % let ! ! ! ! ! ivm ex
+ \let\topskipfactor=\@@itboven
+ \let\maxdepthfactor=\@@itonder
\setfontparameters % redundant \setstrut
\updateraggedskips} % yes indeed
{\processallactionsinset % \regelwit = dummy !
@@ -3346,65 +3238,6 @@
\definecomplexorsimple\stelinterliniein
-%I n=Blanko
-%I c=\blanko,\geenblanko,\stelblankoin
-%I c=\startregelcorrectie
-%I
-%I Behalve met de hier beschreven blanko-commando's is de
-%I witruimte tussen paragrafen te be‹nvloeden met behulp van
-%I de elders beschreven witruimte-commando's.
-%I
-%I Het commando
-%I
-%I \blanko[sprong]
-%I
-%I voegt witruimte tussen paragrafen toe.
-%I
-%I Mogelijke instellingen voor 'sprong' zijn: terug, klein,
-%I middel, groot. Per blanko is elke combinatie van
-%I instellingen toegestaan. Ook een veelvoud van een instelling
-%I is mogelijk. Enkele voorbeelden:
-%I
-%I \blanko[terug,3*groot]
-%I \blanko[klein,middel]
-%P
-%I Naast de genoemde instellingen zijn enkele bijzondere
-%I instellingen mogelijk:
-%I
-%I wit tussenvoegen van \witruimte
-%I geenwit terugspringen van \witruimte
-%I blokkeer overslaan van de volgende \blanko
-%I reset opheffen van \blanko[blokkeer]
-%I forceer afdwingen van een blanko (bovenaan)
-%I
-%I Ook deze instellingen zijn in combinatie met andere te
-%I gebruiken. Een voorbeeld: \blanko[forceer,wit,2*middel].
-%I
-%I Het commando \blanko (zonder instelling) is gelijk aan
-%I \blanko[groot].
-%I
-%I Het commando \geenblanko maakt het commando \blanko
-%I ongedaan.
-%P
-%I Met het commando's
-%I
-%I \stelblankoin[maat]
-%I
-%I is het mogelijk de spronggrootte in te stellen. De maat
-%I kan worden opgegeven in getallen en eenheden (12pt, 1cm).
-%I De standaard instellingen krijgt met met 'normaal',
-%I regelafstanden met 'regel'.
-%I
-%I Het commando \stelblankoin (zonder argument) past de sprong
-%I aan het formaat letter aan.
-%P
-%I Rond omlijnde tekst, of algemener: rond lijnen, wordt
-%I geen witruimte gegenereerd. Wil men dit wel, dan dient men
-%I de betreffende tekst te omringen met:
-%I
-%I \startregelcorrectie
-%I \stopregelcorrectie
-
% In earlier versions \type{\bigskipamount} was
% \type{\ht\strutbox} and the stretch was plus or minus
% \type{.4\dp\strutbox}. Don't ask me why. The most recent
@@ -3528,6 +3361,7 @@
\par
\ifvmode
\ifblankoforceer\ifdim\prevdepth>\!!zeropoint\else
+ % -1000pt signals top of page or column (\ejectcolumn)
\vbox{\strut}\kern-\lineheight
\fi\fi
\ifblankoblokkeer
@@ -3763,34 +3597,15 @@
\noexpand\blankoflexibelfalse
\fi}}
+\def\inhibitblank% the fast, local way
+ {\endgraf\ifvmode\prevdepth\newprevdepth\fi}
+
%D Now.
\definieerblanko
[\s!default]
[\v!wit]
-%I n=Inspringen
-%I c=\inspringen,\nietinspringen,\welinspringen
-%I c=\stelinspringenin
-%I
-%I Het inspringen van de eerste regel van een paragraaf
-%I wordt ingesteld met het commando:
-%I
-%I \inspringen[parameter]
-%I
-%I waarbij als parameter kan worden meegegeven:
-%I
-%I niet de volgende paragraaf niet inspringen
-%I nooit de volgende paragrafen niet inspringen
-%I altijd de volgende paragrafen inspringen
-%I
-%I De mate van inspringen wordt ingesteld met:
-%I
-%I \stelinspringenin[maat]
-%I
-%I waarbij maat staat voor een TeX-maat of het woord klein,
-%I middel, groot of geen.
-
\let\currentvoorwit=\empty
\newdimen\voorwit
@@ -3834,37 +3649,6 @@
\def\nietinspringen{\inspringen[\v!nee,\v!volgende]}
\def\welinspringen {\inspringen[\v!ja,\v!eerste]}
-%I n=Positioneren
-%I c=\startpositioneren,\stelpositionerenin
-%I
-%I Er kan (binnen zekere grenzen) gepositioneerd worden met
-%I de commando's:
-%I
-%I \startpositioneren
-%I \stoppositioneren
-%I
-%I met daartussen
-%I
-%I \positioneer(x,y){...}
-%I
-%I waarbij x en y alleen getallen worden ingevuld. Ongewenste
-%I spaties moeten zonodig met worden voorkomen met een %-teken.
-%P
-%I Een en ander kan worden ingesteld met:
-%I
-%I \stelpositionerenin[eenheid=,factor=,schaal=,xstap=,
-%I ystap=,xoffset=,yoffset=,offset=]
-%I
-%I Standaard is de eenheid cm en de factor 1. Mogelijke
-%I stapaanduidingen zijn 'absoluut' en 'relatief'. Deze
-%I instellingen kunnen \resetpositioneren worden hersteld.
-%I
-%I Als men negatieve coordinaten (of een negatieve offset)
-%I gebruikt, dan kan het soms wenselijk zijn het nulpunt te
-%I laten samenvallen met de linkerbovenhoek van de omringende
-%I box. In dat geval kan met offset=nee instellen. De negatieve
-%I posities vallen in dat geval buiten de box.
-
% Het gebruik van \skip's spaart \dimen's.
\newskip\xpositie
@@ -3924,7 +3708,7 @@
\resetpositioneren
\def\stelpositionerenin%
- {\resetpositioneren%
+ {\resetpositioneren
\dodoubleargument\getparameters[\??ps]}%
% \def\positioneer(#1,#2)#3% \nextbox
@@ -3981,50 +3765,32 @@
\def\dopositioneer[#1]#2(#3,#4)%
{\dowithnextbox
{\bgroup
- \stelpositionerenin[#1]%
+ \getparameters[\??ps][#1]%
\dontcomplain
\berekenpositioneren{#3}{\@@psxstap}{\xpositie}
{\@@psxoffset}{\wd\nextbox}{\xafmeting}{\xoffset}
{\@@psxschaal}{\@@psxfactor}%
- \scratchdimen=\ht\nextbox \advance\scratchdimen \dp\nextbox
+ \scratchdimen=\ht\nextbox \advance\scratchdimen by \dp\nextbox
\berekenpositioneren{#4}{\@@psystap}{\ypositie}
{\@@psyoffset}{\scratchdimen}{\yafmeting}{\yoffset}
{\@@psyschaal}{\@@psyfactor}%
- \setbox\nextbox=\hbox
- {\hskip\xpositie\lower\ypositie\box\nextbox}%
- \smashbox\nextbox
- \box\nextbox
+ \vbox to \!!zeropoint % kan beter.
+ {\vskip\ypositie
+ \hbox to \!!zeropoint
+ {\hskip\xpositie
+ \box\nextbox
+ \hskip-\xpositie}%
+ \vskip-\ypositie}%
+ \xdef\dopoppositioneer%
+ {\xpositie=\the\xpositie
+ \ypositie=\the\ypositie
+ \noexpand\def\noexpand\@@psxoffset{\@@psxoffset}%
+ \noexpand\def\noexpand\@@psyoffset{\@@psyoffset}}%
\egroup
+ \dopoppositioneer
\ignorespaces}
\hbox}
-%I n=Kolommen
-%I c=\stelkolommenin,\startkolommen,\kolom
-%I
-%I Tekst kan in kolommen worden gezet. Het aantal kolommen
-%I en het al dan niet opnemen van een vertikale lijn kan
-%I worden ingesteld.
-%I
-%I \stelkolommenin[n=,lijn=,tolerantie=,afstand=,
-%I balanceren=,uitlijnen=,hoogte=]
-%I
-%I Hierin staat n voor het aantal kolommen. Aan lijn
-%I kan aan of uit worden toegekend. Aan voor en na kan
-%I een commando worden toegekend, bijvoorbeeld ~~.
-%I
-%I Mogelijke waarden voor de tolerantie zijn: zeerstreng,
-%I streng, soepel en zeersoepel.
-%P
-%I De in kolommen te zetten tekst moet worden opgenomen
-%I tussen de commando's:
-%I
-%I \startkolommen
-%I \stopkolommen
-%I
-%I Er wordt naar een nieuwe kolom gesprongen met:
-%I
-%I \kolom
-
\newif\ifbinnenkolommen
\newif\if@@klbalanceren
\newif\if@@kluitlijnen
@@ -4143,30 +3909,60 @@
\definecomplexorsimpleempty\startkolommen
+%\def\kolom%
+% {\ifbinnenkolommen
+% \ejectcolumn
+% \fi}
+
+\def\preferredejectcolumn%
+ {\goodbreak}
+
+% \def\forcedejectcolumn%
+% {\vfil
+% \penalty-200
+% \prevdepth=-1000pt % signals top of column to \blanko
+% \vfilneg}
+
+\def\forcedejectcolumn%
+ {\par % todo: since
+ {\testrulewidth\!!zeropoint\ruledvskip\teksthoogte} % we misuse a
+ \penalty-200 % side effect
+ \vskip-\teksthoogte
+ \prevdepth=-1000pt} % signals top of column to \blanko
+
\def\kolom%
+ {\dosingleempty\dokolom}
+
+\def\dokolom[#1]%
{\ifbinnenkolommen
- \ejectcolumn
+ \iffirstargument
+ \processaction
+ [#1]
+ [ \v!ja=>\forcedejectcolumn,
+ \v!voorkeur=>\preferredejectcolumn]%
+ \else
+ \preferredejectcolumn
+ \fi
\fi}
-%I n=Kader
-%I c=\toonkader,\tooninstellingen,\toonlayout
-%I
-%I Met behulp van de drie commando's:
-%I
-%I \toonkader
-%I \tooninstellingen
-%I
-%I kan de zetspiegel zichtbaar worden gemaakt, of eventueel
-%I met:
-%I
-%I \toonkader [rand,tekst,marge]
-%I
-%I Het commando:
-%I
-%I \toonlayout
-%I
-%I genereert enkele (linker en rechter) pagina's.
+%D Undocumented and still under development.
+
+\def\startsimplecolumns%
+ {\dosingleempty\dostartsimplecolumns}
+
+\def\dostartsimplecolumns[#1]%
+ {\bgroup
+ \getparameters[\??kl][\c!breedte=\hsize,\c!afstand=1em,\c!n=2,#1]%
+ \setrigidcolumnhsize\@@klbreedte\@@klafstand\@@kln
+ \setbox\scratchbox=\vbox\bgroup
+ \forgetall} % \blanko[\v!blokkeer]
+\def\stopsimplecolumns%
+ {\removebottomthings
+ \egroup
+ \rigidcolumnbalance\scratchbox
+ \egroup}
+
\def\dotoonkader[#1][#2]%
{\ifsecondargument
\stelachtergrondenin
@@ -4410,58 +4206,6 @@
\herhaal[4*\tooninstellingen\pagina]
\egroup}
-%I n=Uitlijnen
-%I c=\startuitlijnen,\steluitlijnenin,\steltolerantiein
-%I c=\regellinks,\regelrechts,\regelmidden,
-%I c=\woordrechts
-%I
-%I De regelval kan worden ingesteld met:
-%I
-%I \steluitlijnenin[instelling]
-%I
-%I waarbij de volgende instellingen mogelijk zijn:
-%I
-%I links links niet uitvullen
-%I midden links/rechts niet uitvullen = centreren
-%I rechts rechts niet uitvullen
-%I breedte uitvullen over breedte (default)
-%I beide wisselend (afhankelijk bladzijde)
-%I onder onderkant niet uitgelijnd (default)
-%I hoogte uitvullen over hoogte (op baseline)
-%I regel uitvullen over hoogte (binnen kader)
-%I reset uitvullen over breedte en hoogte
-%I
-%I In combinatie met links, midden en rechts kan 'ruim'
-%I worden opgegeven.
-%P
-%I Aanvullend zijn de volgende commando's beschikbaar:
-%I
-%I \startuitlijnen[instelling]
-%I \stopuitlijnen
-%I
-%I Een regel kan op verschillende manieren worden uitgelijnd
-%I met behulp van de commando's:
-%I
-%I \regellinks{tekst}
-%I \regelrechts{tekst}
-%I \regelmidden{tekst}
-%I
-%I Aan het eind van een paragraaf kan een stukje tekst
-%I worden geplaatst met: \woordrechts{ziezo}
-%P
-%I De tolerantie waarbinnen het uitlijnen plaatsvindt kan
-%I worden ingesteld met:
-%I
-%I \steltolerantiein[instelling]
-%I
-%I Mogelijke waarden zijn: zeerstreng, streng, soepel en
-%I zeersoepel.
-%I
-%I Standaard heeft de tolerantie betrekking op horizontaal
-%I uitlijnen. Vertikaal kan het uitlijnen worden beinvloed
-%I door het trefwoord 'vertikaal' mee te geven. Standaard
-%I geldt [vertikaal,streng] en [horizontaal,zeerstreng].
-
\definetwopasslist{\s!paragraph}
\newcounter\nofraggedparagraphs
@@ -4493,6 +4237,8 @@
#2\relax
\fi}
+% \let\doifrightpageelse\setraggedparagraphmode
+
% De onderstaande macro's zijn opgenomen in Plain TeX.
%
% \def\raggedright%
@@ -4511,28 +4257,52 @@
%
% en worden hieronder wat aangepast.
+% the three boolean will become obsolete some day in favour
+% of \bottomraggedness
+
+\chardef\bottomraggedness=0 % 0=ragged 1=normal/align 2=baseline
+
+\def\bottomalignlimit{3\lineheight}
+
\newif\ifn@rmalbottom
\newif\ifr@ggedbottom
\newif\ifb@selinebottom
-\def\normalbottom%
- {\n@rmalbottomtrue
- \r@ggedbottomfalse
+\def\raggedbottom%
+ {\chardef\bottomraggedness=0
+ \n@rmalbottomfalse
+ \r@ggedbottomtrue
\b@selinebottomfalse
\settopskip}
-\def\raggedbottom%
- {\n@rmalbottomfalse
- \r@ggedbottomtrue
+\def\alignbottom%
+ {\chardef\bottomraggedness=1
+ \n@rmalbottomtrue
+ \r@ggedbottomfalse
\b@selinebottomfalse
\settopskip}
\def\baselinebottom%
- {\n@rmalbottomfalse
+ {\chardef\bottomraggedness=2
+ \n@rmalbottomfalse
\r@ggedbottomfalse
\b@selinebottomtrue
\settopskip}
+\let\normalbottom=\alignbottom % downward compatible
+
+% so, the new one will be
+%
+% \chardef\bottomraggedness=0 % 0=ragged 1=normal/align 2=baseline
+%
+% \def\bottomalignlimit{3\lineheight} % will be settable
+%
+% \def\raggedbottom {\chardef\bottomraggedness=0 \settopskip}
+% \def\alignbottom {\chardef\bottomraggedness=1 \settopskip}
+% \def\baselinebottom{\chardef\bottomraggedness=2 \settopskip}
+%
+% \let\normalbottom =\alignbottom
+
% \hyphenpenalty = ( 2.5 * \hsize ) / \raggedness
% \tolerance >= 1500 % was 200
% \raggedness = 2 .. 6\korpsgrootte
@@ -4543,14 +4313,33 @@
\def\rightraggedness {2\bodyfontsize}
\def\middleraggedness {6\bodyfontsize}
+%D More hyphenation control, will be combined with align
+%D setup.
+
+\def\nohyphens%
+ {\ifx\dohyphens\relax
+ \edef\dohyphens%
+ {\hyphenpenalty\the\hyphenpenalty
+ \exhyphenpenalty\the\exhyphenpenalty\relax}%
+ \fi
+ \hyphenpenalty\@M
+ \exhyphenpenalty\@M}
+
+\let\dohyphens\relax
+
+%D To prevent unwanted side effects, we also have to check
+%D for hyphens here:
+
\def\setraggedness#1%
{\ifnum\tolerance<1500\relax % small values have
\tolerance=1500\relax % unwanted side effects
- \fi %
- \spaceskip=2.5\hsize % we misuse these
- \xspaceskip=#1\relax % registers for temporary
- \divide\spaceskip by \xspaceskip % storage; they are
- \hyphenpenalty=\spaceskip} % changed anyway
+ \fi
+ \spaceskip=2.5\hsize % we misuse these registers
+ \xspaceskip=#1\relax % for temporary storage;
+ \divide\spaceskip by \xspaceskip % they are changed anyway
+ \ifx\dohyphens\relax
+ \hyphenpenalty=\spaceskip % \else no hyphens is active
+ \fi}
\let\updateraggedskips\relax
@@ -4639,6 +4428,10 @@
\v!rechts=>\if!!donea\veryraggedright \else\raggedright \fi,
\v!midden=>\if!!doneb\raggedwidecenter\else
\if!!donea\veryraggedcenter\else\raggedcenter\fi\fi,
+ \v!hangend=>\enableprotruding,
+ \v!niethangend=>\disableprotruding,
+ \v!afgebroken=>\dohyphens,
+\v!nietafgebroken=>\nohyphens,
\v!reset=>\notragged\normalbottom]}
\def\dosteluitlijnenin[#1]%
@@ -4726,90 +4519,6 @@
\def\woordrechts%
{\groupedcommand{\hfill\hbox}{\parfillskip\!!zeropoint}}
-%I n=Margeteksten
-%I c=\inmarge,\inlinker,\inrechter,\stelinmargein
-%I c=\margetitel,\figuurinmarge
-%I c=\oplinker
-%I
-%I Een paragraaf kan worden ingeluid met een tekst in
-%I de marge:
-%I
-%I \inmarge{tekst}
-%I \inlinker{tekst}
-%I \inrechter{tekst}
-%I
-%I Met \\ kan binnen een margetekst naar een volgende regel
-%I worden gesprongen.
-%P
-%I Het onderstaande commando kan gebruikt worden om een
-%I paragraafaanduiding in de marge te plaatsen. Het commando
-%I moet aan het begin van de paragraaf staan. Er wordt
-%I gecontroleerd of een en ander nog op de bladzijde past.
-%I
-%I \margetitel{tekst}
-%I
-%I Tussen \margetitel{tekst} en de volgende alinea mag,
-%I omwille van de overzichtelijkheid, een lege regels staan.
-%I Als dit commando wordt gebruikt na een commando als
-%I \paragraaf, kan het controlemechanisme leiden tot een
-%I ongewenste overgang naar een nieuwe bladzijde. In dat
-%I geval kan beter het volgende commando worden gebruikt.
-%I
-%I \margewoord{tekst}
-%I
-%I Dit commando komt overeen met \inmarge, alleen is bij
-%I \margewoord de lege regel toegestaan.
-%P
-%I Er kan eventueel voor {tekst} een [referentie] worden
-%I meegegeven. In dat geval kan worden verwezen naar het
-%I paginanummer waarop het margewoord staat.
-%I
-%I Als TeX twijfelt in welke marge het woord moet staan, is
-%I een tweede verwerkingsslag nodig. Als een margewoord bij
-%I herhaling verkeerd wordt geplaatst, dan kan het
-%I automatisme worden verstoord door [+] mee te geven. Een
-%I margewoord kan lager worden gezet met [laag]. Combinaties
-%I kunnen ook:
-%I
-%I \margewoord[+,laag][referentie]{woord}
-%P
-%I De wijze van weergeven kan worden ingesteld met het
-%I commando:
-%I
-%I \stelinmargein[letter=,plaats=,voor=,na=,uitlijnen=]
-%I
-%I Als plaats kan links, rechts of beide worden meegegeven. In
-%I het laatste geval hangt de plaats af van het
-%I enkel/dubbelzijdig zetten.
-%I
-%I Uitlijnen kent twee instellingen: 'ja' en 'nee'. Inhet
-%I eerste geval (default) worden de margewoorden tegen de
-%I kantlijn geplaatst.
-%P
-%I Vooruitlopend op meer commando's is er al vast het
-%I commando:
-%I
-%I \oplinker{tekst}
-%I
-%I Dit commando kan bijvoorbeeld worden gebruikt binnen
-%I een midden-uitgelijnde tekst. Het commando is nog niet
-%I definitief en robuust.
-
-% %P
-% %I Aanvullend zijn commando's beschikbaar om figuren in
-% %I de marge te plaatsen:
-% %I
-% %I \figuurinmarge{figuur}
-% %I \figuurinlinker{figuur}
-% %I \figuurinrechter{figuur}
-
-%T n=margetitel
-%T m=mar
-%T a=m
-%T
-%T \margetitel{?}
-%T
-
\newif\iflowinmargin
\def\stelinmargein%
@@ -4856,6 +4565,11 @@
\ifnum\margetekstnummer=0
\def\margetekstnummer{#2}%
\fi
+\doifnumberelse{\margetekstnummer}
+ {\ifnum\margetekstnummer>25 % to be translated
+ \writestatus{\m!systems}{potential margin stack overflow (\margetekstnummer)}%
+ \fi}
+ {}%
\processaction
[\getvalue{\??im\margetekstnummer\c!uitlijnen}]
[ \v!ja=>\setvalue{\??im\margetekstnummer\c!uitlijnen}{#2},
@@ -4925,7 +4639,16 @@
\ht0=\!!zeropoint
\dp0=\!!zeropoint
\gdef\margestrutheight{\the\ht\strutbox}%
- \vadjust{\box0}}
+ %\vadjust{\box0}} % fails in high math lines, let it be
+ %\hbox{\lower\dp\strutbox\box0}} % alas, wrong lapping, therefore useless
+ \dopositionmarginbox0}
+
+%D This approach permits us to implement a better mechanism
+%D later.
+
+\ifx\dopositionmarginbox\undefined
+ \def\dopositionmarginbox#1{\vadjust{\box#1}}
+\fi
\def\doinlinker#1%
{\doplacemargintext
@@ -5037,6 +4760,41 @@
\expandafter\doflushmargincontents % speed up the \fi scan by
\fi} % using a \do..
+% \def\doflushmargincontents% % links + rechts
+% {\bgroup
+% \forgetall
+% \global\marginheight\!!zeropoint
+% \dorecurse{\margincontent}
+% {\bgroup
+% \edef\margetekstafstand {\getvalue{\??im\recurselevel\c!afstand}}%
+% \edef\margetekstregels {\getvalue{\??im\recurselevel\c!regel}}%
+% \edef\margetekstscheider{\getvalue{\??im\recurselevel\c!scheider}}%
+% \let\margetekstnummer=\recurselevel
+% \getvalue{\??im\recurselevel}%
+% \global\setvalue{\??im\recurselevel}{}%
+% \egroup}%
+% \ifdim\marginheight>\lineheight % This is something real dirty!
+% \advance\marginheight by \pagetotal
+% \advance\marginheight by \lineheight % a sort of bonus
+% \ifdim\marginheight>\pagegoal
+% \xdef\restoreinterlinepenalty%
+% {\global\let\restoreinterlinepenalty\relax
+% \global\interlinepenalty=\the\interlinepenalty}%
+% \global\interlinepenalty=10000
+% \fi
+% \else % We need the above because interlinepenalties overrule vadjusted \nobreaks.
+% %\vadjust
+% % {\forgetall
+% % \global\advance\marginheight by \lineheight
+% % \global\divide\marginheight by \lineheight
+% % \dorecurse{\number\marginheight}
+% % {\nobreak\vskip\lineheight}%
+% % \kern-\number\marginheight\lineheight}%
+% \vadjust{\nobreak}%
+% \fi
+% \doglobal\newcounter\margincontent
+% \egroup}
+
\def\doflushmargincontents% % links + rechts
{\bgroup
\forgetall
@@ -5050,7 +4808,14 @@
\getvalue{\??im\recurselevel}%
\global\setvalue{\??im\recurselevel}{}%
\egroup}%
- \ifdim\marginheight>\lineheight % This is something real dirty!
+\ifbinnenkolommen
+ \donetrue % how fuzzy
+\else\ifdim\marginheight>\lineheight\relax
+ \donetrue % how dirty
+\else
+ \donefalse % how needed
+\fi\fi
+\ifdone
\advance\marginheight by \pagetotal
\advance\marginheight by \lineheight % a sort of bonus
\ifdim\marginheight>\pagegoal
@@ -5072,6 +4837,8 @@
\doglobal\newcounter\margincontent
\egroup}
+% Some day: \definieermarkering[\v!margetitel]
+
\def\docomplexmargewoord#1#2#3%
{\@EA\setgvalue\@EA{\@EA\??im\@EA\margincontent\@EA}\@EA
{\@EA\stelinmargein\@EA[\margincontent][]% see next macro
@@ -5247,40 +5014,6 @@
{\doquintupleempty\doinmarge
[\@@implaats][\woordinlinker][\woordinrechter]}
-%I n=Paginanummer
-%I c=\stelpaginanummerin,\stelsubpaginanummerin
-%I
-%I Het paginanummer kan worden ingesteld met het commando:
-%I
-%I \stelpaginanummerin[nummer=,status=]
-%I
-%I Het nummeren kan gedurende een of meerdere pagina's worden
-%I stilgezet door in plaats van een nummer start, stop of
-%I handhaaf mee te geven.
-%I
-%I Het paginanummer is oproepbaar met:
-%I
-%I \paginanummer
-%I
-%I en het totaal aantal paginanummers met:
-%I
-%I \totaalaantalpaginas
-%P
-%I Er zijn subnummers beschikbaar. De wijze van nummeren
-%I wordt ingesteld met:
-%I
-%I \stelsubpaginanummerin[wijze=,status=]
-%I
-%I De status kan 'stop', 'start' of 'geen' zijn. In het
-%I laatste geval wordt gewoon doorgenummerd, maar wordt het
-%I nummer niet geplaatst.
-%I
-%I Standaard wordt 'perdeel' genummerd. De subnummers zijn
-%I oproepbaar met:
-%I
-%I \subpaginanummer
-%I \aantalsubpaginas
-
% Standaard is \count0 in Plain TeX de paginateller. Omwille
% van de afhandeling van lokaal nummeren, definieren we
% echter een eigen nummer.
@@ -5292,12 +5025,17 @@
\c!status=\@@nmstatus,
\c!start=1]
+% \@@pnstatus global, but \@@nmstatus local and only start/stop
+
+\global\let\@@pnstatus\@@pnstatus
+
\def\dostelpaginanummerin[#1]%
{\getparameters
[\??pn]
- [\c!status=\v!start,
+ [%\c!status=\v!start,
\c!nummer=,
#1]%
+ \global\let\@@pnstatus\@@pnstatus
\doifsomething{\@@pnnummer}
{\setnummer[\s!page]{\@@pnnummer}%
\setuserpageno{\ruwenummer[\s!page]}}}
@@ -5306,45 +5044,20 @@
{\dosingleargument\dostelpaginanummerin}
\def\verlaagpaginanummer%
- {\doif{\@@pnstatus}{\v!start}
+ {\doifinset{\@@pnstatus}{\v!start,\v!leeg,\v!geen}
{\verlaagnummer[\s!page]%
\setuserpageno{\ruwenummer[\s!page]}}}
\def\verhoogpaginanummer%
- {\processaction
- [\@@pnstatus]
- [ \v!start=>{\verhoognummer[\s!page]%
- \setuserpageno{\ruwenummer[\s!page]}},
- \v!handhaaf=>{\doassign[\??pn][\c!status=\v!start]}]}
+ {\doifinset{\@@pnstatus}{\v!start,\v!leeg,\v!geen}
+ {\verhoognummer[\s!page]%
+ \setuserpageno{\ruwenummer[\s!page]}}%
+ \doifinset{\@@pnstatus}{\v!handhaaf,\v!leeg}
+ {\global\let\@@pnstatus\v!start}}
\def\checkpagecounter%
{\checknummer{\s!page}}
-%I n=Pagina
-%I c=\pagina
-%I
-%I Het volgende commando kan worden gebruikt om pagina's af
-%I te dwingen of blokkeren:
-%I
-%I \pagina[instelling]
-%I
-%I Waarbij als instelling kan worden gegeven:
-%I
-%I ja een geforceerde paginaovergang met \vfill
-%I opmaak een geforceerde paginaovergang zonder \vfill
-%I nee bij voorkeur geen paginaovergang
-%I voorkeur bij voorkeur de paginaovergang hier (3)
-%I grotevoorkeur bij voorkeur de paginaovergang hier (7)
-%I links ga naar een linker pagina
-%I rechts ga naar een rechter pagina
-%I leeg een lege pagina
-%I blokkeer blokkeer ja ... grotevoorkeur (1 pagina)
-%I reset het blokkering ja ... grotevoorkeur op
-%I
-%I Als geen instelling wordt meegegeven (\pagina), wordt een
-%I overgang geforceerd. Als een nummer wordt meegegeven, wordt
-%I naar de opgegeven pagina gegaan.
-
\newif\ifpaginageblokkeerd
\paginageblokkeerdfalse
@@ -5405,11 +5118,11 @@
\fi
\fi},
\v!grotevoorkeur=>{\ifpaginageblokkeerd\else
- \ifbinnenkolommen
- \dosomebreak\goodbreak
- \else
- \testpagina[5][\!!zeropoint]%
- \fi
+ \ifbinnenkolommen
+ \dosomebreak\goodbreak
+ \else
+ \testpagina[5][\!!zeropoint]%
+ \fi
\fi},
\v!leeg=>{\ejectinsert
\ejectpage
@@ -5524,146 +5237,6 @@
\global\rightpagetrue
\fi}
-%I n=Hoofdteksten
-%I c=\stelnummeringin
-%I c=\stelhoofdtekstenin,\stelvoettekstenin,\stelhoofdin,\stelvoetin
-%I c=\stelboventekstenin,\stelondertekstenin,\stelbovenin,\stelonderin
-%I
-%I Zogeheten hoofd- en/of voetteksten kan men instellen
-%I met:
-%I
-%I \stelhoofdtekstenin [linker tekst] [rechter tekst]
-%I \stelvoettekstenin [linker tekst] [rechter tekst]
-%I
-%I Bij dubbelzijdig zetten worden de linker en rechter
-%I teksten gespiegeld.
-%I
-%I In plaats van een tekst kunnen de woorden 'hoofdstuk',
-%I 'paragraaf' en 'deel' worden meegegeven. Ook kan het
-%I woord 'datum' worden meegegeven.
-%P
-%I Als men op de even en oneven pagina's een andere tekst
-%I wil hebben, dan kan men een tweede paar meegeven. In dat
-%I geval zijn er dus vier argumenten: [][][][].
-%I
-%I Als men in de marge of randen teksten wil, kan men dat
-%I direct achter het commando aangeven:
-%I
-%I \stelhoofdtekstenin [lokatie] [links] [rechts]
-%I \stelvoettekstenin [lokatie] [links] [rechts]
-%I
-%I Mogelijke lokaties zijn: tekst, marge en rand.
-%P
-%I In de tekst opgenomen commando's kunnen soms voor
-%I problemen zorgen. Commando's kan men daarom laten
-%I voorafgaan \geentest, bijvoorbeeld:
-%I
-%I \stelvoettekstenin[\geentest\lastigcommando][]
-%I
-%I Meestal geven commando's geen problemen. Wel moet men
-%I oppassen met []. Accolades zijn hiervoor de oplossing:
-%I
-%I \stelvoettekstenin[{{\huidigedatum[mm,/,jj]}}][]
-%I
-%I of
-%I
-%I \stelvoettekstenin[\geentest{\huidigedatum[mm,/,jj]}][]
-%P
-%I De wijze van nummeren wordt gedefinieerd met:
-%I
-%I \stelnummeringin[variant=,plaats=,conversie=,
-%I links=,rechts=,tekst=,tekstscheider=,nummerscheider,
-%I wijze=,blok=,status=,letter=,<sectie>nummer=,commando=]
-%I
-%I De plaats van het nummer hangt af van het eerste
-%I meegegeven argument:
-%I
-%I enkelzijdig dubbelzijdig
-%I
-%I links, rechts kantlijn (links of rechts)
-%I marge marge (links of rechts)
-%I midden midden
-%I inlinker, inrechter inlinker, inrechter
-%P
-%I Met plaats geeft men tevens aan of het nummer in het hoofd
-%I of in de voet komt {hoofd,midden}. Met 'nummerscheider' geeft
-%I men aan wat er binnen een (eventueel) samengestelde nummer
-%I als scheider wordt gezet, standaard: 2-3. Met 'tekstscheider'
-%I geeft men aan wat er tussen het paginanummer en een hoofd- of
-%I voettekst wordt gezet (in geval van plaatsen op de marge).
-%I
-%I Liefhebbers kunnen aan 'commando' een eigen commando om het
-%I nummer te zetten meegeven. Dit eigen commando krijgt als
-%I argument het paginanummer mee.
-%I
-%I Het is mogelijk een dubbelzijdige tekst met enkelzijdige
-%I marges te zetten:
-%I
-%I \stelnummeringin[variant={enkelzijdig,dubbelzijdig}]
-%I
-%I In dit geval worden de hoofd- en voetregels dus wel
-%I gespiegeld en hebben commando's als \pagina[rechts] betekenis.
-%P
-%I Als 'conversie' is mogelijk: cijfers, letters, Letters,
-%I romeins en Romeins. Als 'status' kan 'start' of 'stop'
-%I worden meegegeven. Op deze manier kan het aangeven van
-%I een paginanummer worden aan- en uitgezet.
-%I
-%I Er kan per sectienummer (deelnummer, hoofdstuknummer enz.)
-%I worden ingesteld of het zichtbaar is ('ja' of 'nee').
-%I
-%I Mogelijke wijzen van nummeren zijn: perdeel of perhoofdstuk.
-%P
-%I Hoofd- en voetregels blijven achterwege of juist niet na het
-%I commando:
-%I
-%I \geenhoofdenvoetregels
-%I \welhoofdenvoetregels
-%I
-%I of na:
-%I
-%I \stelhoofdin[lokatie][linkerletter=,rechterletter=,
-%I letter=,linkerbreedte=,rechterbreedte=,voor=,na=]
-%I \stelvoetin[locatie][linkerletter=,rechterletter=,
-%I letter=,linkerbreedte=,rechterbreedte=,voor=,na=]
-%I
-%I mogelijke lokaties zijn: tekst, marge en rand. Als [lokatie]
-%I wordt wegelaten, dan wordt tekst verondersteld.
-%I
-%I Als de breedte wordt ingesteld, dan wordt de weergegeven
-%I tekst zonodig ingekort en gevolgd door ...
-%P
-%I Het is mogelijk het plaatsen van hoofd- en voetregels
-%I stop te zetten:
-%I
-%I \stelhoofdin[status=]
-%I \stelvoetin[status=]
-%I
-%I Aan status kunnen de olgende aarden worden toegekend:
-%I
-%I geen de kop/voet vervalt (de tekst schuift omhoog)
-%I leeg de kop/voet blijft 1 pagina leeg
-%I hoog de kop/voet vervalt 1 pagina leeg (idem)
-%I normaal de kop/voet wordt gezet
-%I stop de kop/voet blijft vanaf nu leeg
-%I start de kop/voet wordt vanaf nu weer gevuld
-%I
-%I Het is ook mogelijk bij \stelhoofdin en \stelvoetin als
-%I parameters [voor=] en [na=] mee te geven. De toegekende
-%I commando's worden in dat geval voor en na het hoofd en de
-%I de voet uitgevoerd.
-%P
-%I Boven het hoofd en onder de voet is ook ruimte. Deze kan
-%I worden gedefinieerd met vergelijkbare commando's:
-%I
-%I \stelboventekstenin[...][...][...]
-%I \stelondertekstenin[...][...][...]
-%I
-%I \stelbovenin[...]
-%I \stelonderin[...]
-%I
-%I \geenbovenenonderregels
-%I \welbovenenonderregels
% De onderstaande macro's lijken op het eerste gezicht vrij
% ingewikkeld en omslachtig. Dit is het gevolg van een
@@ -5717,8 +5290,8 @@
{\ConvertConstantAfter\doifelse{\v!paginanummer}{#6}
{\@@plaatspaginanummer}
{\ConvertConstantAfter\doifelse{\v!datum}{#6}
- {\currentdate}
- {\opeenregel\dolimitateteksten{#1#2#5}{#6}}}}}}%
+ {\currentdate} % #6{}{}{} -> {} needed for lookahead macros, like \uniqueMPgraphic
+ {\opeenregel\dolimitateteksten{#1#2#5}{#6{}{}{}}}}}}}%
\egroup}
\def\dodoteksten#1#2#3#4#5#6%
@@ -5953,10 +5526,6 @@
\def\placepositionanchors{\vskip\teksthoogte}
\fi
-%\def\@@plaatspaginascheider%
-% {\doif{\@@nmstatus}{\v!start}%
-% {\@@nmtekstscheider}}
-
\def\@@nmin {} % kan vervallen (upward compatibility)
\def\@@nmplaats {} % mag {plaats, in} zijn
@@ -6068,11 +5637,13 @@
\egroup}
\unexpanded\def\@@plaatspaginanummer% called in empty tests
- {\doif{\@@nmstatus}{\v!start}%
+ %{\doif{\@@pnstatus}{\v!start}
+ {\doif{\@@nmstatus\@@pnstatus}{\v!start\v!start}
{{\@@nmcommando{\doattributes\??nm\c!letter\c!kleur{\volledigepaginanummer}}}}}
-\def\@@plaatspaginascheider%
- {\doif{\@@nmstatus}{\v!start}%
+\def\@@plaatspaginascheider% still used ?
+ %{\doif{\@@pnstatus}{\v!start}%
+ {\doif{\@@nmstatus\@@pnstatus}{\v!start\v!start}
{\@@nmtekstscheider}}
\def\userfolio% naast realfolio
@@ -6081,47 +5652,38 @@
\def\pagenumber%
{\userfolio}
-\def\volledigepaginanummer% alleen voor paginanummers !!
- {\@@nmlinks
- \def\donexttrackcommando##1%
- {\doifvalue{\??nm##1\v!nummer}{\v!ja} % v
- {\ifnum\countervalue{\??se##1}>0\relax
- \getvalue{##1\c!nummer}\@@nmnummerscheider
- \fi}%
- \doifsomething{\@@nmtekst}
- {\@@nmtekst\@@nmnummerscheider}%
- \donexttracklevel{##1}}%
- \donexttrackcommando{\firstsection}%
- \pagenumber
- \@@nmrechts}
+\def\pageprefixes%
+ {\def\donexttrackcommando##1%
+ {\doifvalue{\??nm##1\v!nummer}{\v!ja} % v
+ {\ifnum\countervalue{\??se##1}>0\relax
+ \getvalue{##1\c!nummer}\@@nmnummerscheider
+ \fi}%
+ \doifsomething{\@@nmtekst}
+ {\@@nmtekst\@@nmnummerscheider}%
+ \donexttracklevel{##1}}%
+ \donexttrackcommando{\firstsection}}
+
+\unexpanded\def\volledigepaginanummer%
+ {\doif{\@@nmstatus\@@pnstatus}{\v!start\v!start}
+ {\@@nmlinks\labeltexts{\v!paginanummer}{\pageprefixes\pagenumber}\@@nmrechts}}
+
+\unexpanded\def\plaatspaginanummer%
+ {\doif{\@@nmstatus\@@pnstatus}{\v!start\v!start}
+ {\labeltexts{\v!paginanummer}{\pagenumber}}}
\def\translatednumber[#1::#2::#3]%
{#3}
-%I n=Selecteren
-%I c=\soortpagina,\verwerkpagina,\koppelpagina
-%I
-%I Het is mogelijk pagina's te markeren en selectief te
-%I verwerken. Markering vindt plaats met het commando:
-%I
-%I \soortpagina[aanduiding]
-%I
-%I en selecteren vindt plaats met:
-%I
-%I \verwerkpagina[aanduiding,...][instelling]
-%I
-%I waarbij de instelling 'ja' of 'nee' is en meerdere
-%I aanduidingen worden gescheiden door een comma.
-%P
-%I Er kunnen commando's worden gekoppeld aan pagina's:
-%I
-%I \koppelpagina[aanduiding,...][voor=,na=,optie=]
-%I
-%I De opgegeven commando's worden voor respectievelijk na het
-%I vrijgeven van de pagina uitgevoerd.
-
% hier nog uti blokkeren
+% don't change this / test case:
+%
+% \setupbackgrounds[state=repeat]
+% \setupbackgrounds[text][text][background=whatever]
+% \couplepage[chapter][before={\defineoverlay[whatever][ON]}]
+% \setuphead[chapter][before={\pagetype[chapter]}]
+% \chapter{First} \page test \chapter{second} \page test
+
\newif\ifgeselecteerd
\geselecteerdtrue
@@ -6283,70 +5845,6 @@
\unexpanded\def\referencepagenumber[#1]%
{\paginaprefix\??rf[#1]\translatednumber[#1]}
-%I n=Regels
-%I c=\startregels,\stelregelsin
-%I c=\startregelnummeren,\stelregelnummerenin
-%I c=\crlf
-%I c=\startregel,\stopregel,\eenregel,\inregel
-%I
-%I Het is mogelijk de indeling in regels zoals die in de ruwe
-%I tekst wordt gehanteerd af te dwingen. Er wordt in dit
-%I geval niet ingesprongen. De regels worden gezet tussen de
-%I twee commando's:
-%I
-%I \startregels
-%I
-%I ...................................................
-%I
-%I \stopregels
-%P
-%I Er kan met betrekking tot regels een en ander worden
-%I ingesteld:
-%I
-%I \stelregelsin[voor=,na=,inspringen=]
-%I
-%I Aan 'inspringen' kan men 'ja', 'nee', 'even' of 'oneven'
-%I toekennen.
-%P
-%I Het is mogelijk regels te nummeren door ze tussen de
-%I volgende commando's te plaatsen:
-%I
-%I \startregelnummeren
-%I \stopregelnummeren
-%I
-%I Als de regelovergangen moeten worden gehandhaafd, dan moet
-%I \startregels voor \startregelnummeren worden gegeven.
-%I
-%I Het nummeren begint steeds opnieuw bij 1. Als verder moet
-%I worden genummeren, dan kan achter \startregelnummeren
-%I [verder] worden meegegeven.
-%I
-%I Standaard worden regels alinea-gewijs genummerd. Als men
-%I over een paginagrens wil nummeren, dan moet [opelkaar]
-%I worden meegegeven.
-%P
-%I De wijze van nummeren kan worden ingesteld met:
-%I
-%I \stelregelnummerenin[conversie=,start=,stap=,letter=,
-%I plaats=,breedte=,letter=]
-%I
-%I Als 'conversie' kan worden meegegeven: cijfers, letters,
-%I Letters, romeins of Romeins. Aan 'start' en 'stap' kan
-%I een getal worden toegekend, aan 'letter' een trefwoord,
-%I aan 'breedte' een maat (bij voorkeur in ex) en aan
-%I 'plaats' het trefwoord 'inmarge' of 'intekst'.
-%P
-%I Er kan worden overgegaan naar een nieuwe regel met:
-%I
-%I \crlf
-%P
-%I .... testfase ...
-%I
-%I \startregel[tag] ... \stopregel[tag]
-%I \eenregel[tag]
-%I
-%I \inregel[tag]
-
\newif\ifinregels
\newif\ifregelnummersinmarge
@@ -6416,6 +5914,10 @@
% het gebruik van \setlocalreference scheelt een hash entry
+\def\dodoshowlinenumber% for use elsewhere, to be extended
+ {\doschrijfregelnummer
+ \global\advance\linenumber by 1\relax}%
+
\def\regelweergave%
{\convertnumber\@@rnconversie\linenumber}%
@@ -6677,49 +6179,6 @@
\doshowparagraphnumberA
\fi}
-%I n=Opmaak
-%I c=\definieeropmaak,\testopmaak,\startstandaardopmaak
-%I
-%I Het is mogelijk een lege pagina op te maken. Hiertoe wordt
-%I een blok gereserveerd met het commando:
-%I
-%I \definieeropmaak[naam][breedte=,hoogte=,voffset=,
-%I hoffset=,pagina=,commandos=,voor=,na=,dubbelzijdig=]
-%I
-%I Hierbij wordt bij de eerste vier parameters een getal
-%I meegegeven (5cm, 24pt, enz.). Met 'pagina' geeft men aan
-%I of naar een nieuwe pagina wordt gesprongen (standaard
-%I 'rechts'). Aan de 'commandos' kunnen commando's worden
-%I toekend die tijdens de opmaak gelden. Aan de laatste twee
-%I parameters toegekende commando's worden voor en na het
-%I opmaken van de pagina uitgevoerd. De opgemaakte pagina
-%I kan worden geselecteerd op naam. Met 'dubbelzijdig' geeft
-%I men aan of er een lege achterkant moet worden opgemaakt
-%I (standaard: ja). Dit geldt aleen bij dubbelzijdig zetten.
-%I
-%I Naast het bovenstaande commando is er het commando:
-%I
-%I \stelopmaakin[naam][instellingen]
-%P
-%I Na het geven van dit commando zijn twee commando's
-%I beschikbaar: \startnaamopmaak en \stopnaamopmaak. Tussen
-%I deze twee commando's kunnen zetopdrachten en teksten
-%I worden opgenomen. Een en ander wordt op een lege bladzijde
-%I gezet.
-%I
-%I Met het commando \testopmaak kunnen hulplijnen worden
-%I opgeroepen.
-%I
-%I De commando's \startstandaardopmaak en \stopstandaardopmaak
-%I maken het opmaken binnen de standaard-layout mogelijk.
-%P
-%I Eventueel kunnen de volgende twee commando's worden gebruikt
-%I om een pagina op te maken met hoofd- en voetregels.
-%I
-%I \startopmaak
-%I .....
-%I \stopopmaak
-
\newbox\opmaak
\def\setopmaaklayout[#1]%
@@ -6849,31 +6308,6 @@
\def\stelopmaakin%
{\dodoubleargument\dostelopmaakin}
-%I n=Smaller
-%I c=\startsmaller,\stelsmallerin
-%I
-%I Een paragraaf kan smaller gezet worden met behulp van de
-%I commando's:
-%I
-%I \startsmaller[afstand]
-%I \stopsmaller
-%I
-%I Als maat wordt links, rechts, midden of een combinatie
-%I hiervan meegegeven. Eventueel wordt geen afstand meegegeven.
-%I
-%I De linker, rechter of dubbele inspringing kan worden
-%I ingesteld met:
-%I
-%I \stelsmallerin[links=,rechts=,midden=]
-%I
-%I Enkele voorbeelden van smelelr zetten zijn:
-%I
-%I \startsmaller[2*links,rechts]
-%I \stopsmaller
-%I
-%I \startsmaller[midden,rechts]
-%I \stopsmaller
-
\newskip\linkssmaller
\newskip\rechtssmaller
\newskip\middensmaller
@@ -6918,33 +6352,6 @@
\def\stelsmallerin%
{\dodoubleargument\getparameters[\??sl]}
-%I n=Boxen
-%I c=\definieerhbox,\cbox,\lbox,\rbox,\sbox
-%I
-%I Het is mogelijk een tekst in een blok met een vaste
-%I omvang te zetten. Dit is vergelijkbaar met het opmaken
-%I van een tabel.
-%I
-%I \hbox?{tekst} (horizontaal blok)
-%I
-%I De box wordt eerst gedefinieerd met:
-%I
-%I \definieerhbox[?][maat]
-%I
-%I Er kan een links, rechts of midden uitgelijnde \vbox worden
-%I gezet met de commando:
-%I
-%I \lbox{tekst\\tekst\\tekst} of \lbox to <maat>{...}
-%I \rbox{tekst\\tekst\\tekst} of \rbox to <maat>{...}
-%I \cbox{tekst\\tekst\\tekst} of \cbox to <maat>{...}
-%I
-%I Het commando \\ forceert een overgang naar een nieuwe regel.
-%I
-%I Een (hoge) box kan een gedwongen hoogte gelijk aan die
-%I van een strut krijgen met:
-%I
-%I \sbox{box}
-
\def\dodefinieerhbox[#1][#2]%
{\setvalue{hbox#1}##1%
{\hbox to #2{\begstrut##1\endstrut\hss}}}
@@ -6986,159 +6393,55 @@
\s!default=>\let\raggedbox\hbox,
\s!unknown=>\let\raggedbox\hbox]}
-\def\dosetraggedcommand#1% ook ruim,rechts en zo
- {\processaction
+% \def\dosetraggedcommand#1% ook ruim,rechts en zo
+% {\processaction
+% [#1]
+% [ \v!links=>\def\raggedcommand{\raggedleft},
+% \v!rechts=>\def\raggedcommand{\raggedright},
+% \v!midden=>\def\raggedcommand{\raggedcenter},
+% \v!nee=>\def\raggedcommand{\raggedright},
+% \v!normaal=>\let\raggedcommand\relax,
+% \s!default=>\def\raggedcommand{\raggedcenter},
+% \s!unknown=>\let\raggedcommand\relax]}
+
+\def\dosetraggedcommand#1%
+ {\expanded{\dodosetraggedcommand{#1}}}
+
+\def\dodosetraggedcommand#1%
+ {\doifinsetelse{\v!ruim} {#1}{\!!doneatrue}{\!!doneafalse}%
+ \doifinsetelse{\v!breed}{#1}{\!!donebtrue}{\!!donebfalse}%
+ \let\raggedcommand\relax
+ \let\raggedtopcommand\empty
+ \let\raggedbottomcommand\empty
+ \!!donectrue
+ \ExpandFirstAfter\processallactionsinset
[#1]
- [ \v!links=>\def\raggedcommand{\raggedleft},
- \v!rechts=>\def\raggedcommand{\raggedright},
- \v!midden=>\def\raggedcommand{\raggedcenter},
+ [ \v!links=>\if!!donea \def\raggedcommand{\veryraggedleft}%
+ \else \def\raggedcommand{\raggedleft}%
+ \fi
+ \!!donecfalse, % {\v!links,\v!midden}
+ \v!rechts=>\if!!donea \def\raggedcommand{\veryraggedright}%
+ \else \def\raggedcommand{\raggedright}%
+ \fi
+ \!!donecfalse, % {\v!rechts,\v!midden}
+ \v!midden=>\if!!donec
+ \if!!doneb \def\raggedcommand{\raggedwidecenter}%
+ \else\if!!donea \def\raggedcommand{\veryraggedcenter}%
+ \else \def\raggedcommand{\raggedcenter}%
+ \fi\fi
+ \!!donecfalse % {\v!midden,\v!midden}
+ \else
+ \let\raggedbottomcommand\vfilll % bonus, pretty strong
+ \let\raggedtopcommand \vfilll % used with \framed for
+ \fi, % instance in tables
+ \v!hoog=>\let\raggedbottomcommand\vfilll, % and since we lack a
+ \v!laag=>\let\raggedtopcommand \vfilll, % proper keyword, but
+ \v!laho=>\let\raggedbottomcommand\vfilll % we do support the
+ \let\raggedtopcommand \vfilll, % ugly laho (lohi)
\v!nee=>\def\raggedcommand{\raggedright},
- \v!normaal=>\let\raggedcommand\relax,
- \s!default=>\def\raggedcommand{\raggedcenter},
- \s!unknown=>\let\raggedcommand\relax]}
+ \v!ja=>\let\raggedcommand\relax,
+ \v!normaal=>\let\raggedcommand\relax]}
-%I n=Blokken
-%I c=\stelplaatsblokkenin,\stelblokkopjesin
-%I c=\definieerplaatsblok,\stelplaatsblokin
-%I c=\reserveer,\leeg,\plaats,\volledigelijstmet,\plaatslijstmet
-%I
-%I Figuren, tabellen, grafieken enz. kunnen in de tekst
-%I worden geplaatst met het commando:
-%I
-%I \plaats<bloknaam>[voorkeur][referentie]{titel}{blok}
-%I
-%I Als voorkeur kan worden opgegeven:
-%I
-%I hier bij voorkeur op deze plaats in de tekst
-%I forceer per se op deze plaats in de tekst
-%I pagina op een nieuwe pagina
-%I boven bovenaan de huidige pagina
-%I onder onderaan de huidige pagina
-%I
-%I links links in de paragraaf
-%I rechts rechts in de paragraaf
-%I
-%I inlinker in linker marge (gelijke hoogte)
-%I inrechter in rechter marge (gelijke hoogte)
-%I inmarge in linker/rechter marge (gelijke hoogte)
-%I marge in de marge
-%P
-%I Als er op de huidige bladzijde geen plaats is, dan wordt
-%I standaard de figuur verplaatst (eerste vier opties) en/of
-%I wordt overgegaan naar een nieuwe bladzijde (laatste twee
-%I opties.
-%I
-%I Men kan plaatsen afdwingen door het trefwoord altijd
-%I mee te geven: \plaats[hier,altijd][]{}{}. Er zijn dan
-%I twee runs nodig, omdat de nummering van de blokken moet
-%I worden aangepast.
-%I
-%I Als in plaats van een titel 'geen' wordt meegegeven, wordt
-%I geen titel geplaatst.
-%I
-%I Als het blok nog onbekend is, kan in plaats van het blok
-%I een van de volgende commando's worden meegegeven:
-%I
-%I \leeg<bloknaam>
-%I \lege<bloknaam>
-%P
-%I Het is mogelijk ruimte voor een blok te reserveren:
-%I
-%I \reserveer<bloknaam>[hoogte=,breedte=,kader=][voorkeur]
-%I [referentie]{titel}
-%I
-%I Beide commando's kunnen ook gegeven worden zonder [],
-%I dus in de vorm
-%I
-%I \plaats<bloknaam>{titel}{blok}
-%I \reserveer<bloknaam>{titel}
-%I
-%I Ten behoeve van een consistente verwijzing wordt het
-%I commando:
-%I
-%I \in<bloknaam>[referentie]
-%I
-%I gedefinieerd. Dit levert in de tekst op:
-%I
-%I 'in <bloknaam> <nummer>'
-%P
-%I Blokken kunnen worden gedefinieerd met het commando:
-%I
-%I \definieerplaatsblok[blok][blokken]
-%I
-%I Hierna zijn de volgende commando's beschikbaar:
-%I
-%I \plaatsblok[plaats][referentie]{titel}{blok}
-%I \reserveerblok[afmetingen][plaats][referentie]{titel}
-%I \leegblok
-%I
-%I Het is mogelijk een en ander in te stellen met het
-%I commando:
-%I
-%I \stelplaatsblokin[blok][hoogte=,breedte=,kader=,
-%I bovenkader=,onderkader=,linkerkader=,rechterkader=,
-%I paginaovergangen=]
-%I
-%I De hoogte en breedte hebben betrekking op de te reserveren
-%I ruimte.
-%P
-%I Naast de eerder genoemde commando's zijn nog beschikbaar:
-%I
-%I \plaatslijstmetblokken
-%I \volledigelijstmetblokken
-%I
-%I en een (extra) commando om tekst naast een blok (hier met
-%I de naam 'blok') te plaatsen:
-%I
-%I \startbloktekst[plaats][referentie]{kop}{blok}
-%I ...
-%I \stopbloktekst
-%I
-%I Mogelijke plaatsen zijn 'links', 'rechts', 'hoog', 'laag' en
-%I 'midden'. Ook is een combinatie van deze instellingen
-%I mogelijk, bijvoorbeeld [links,hoog]. De instelling 'offset'
-%I resulteert in een verschuiving van 1 regel.
-%P
-%I Blokken die tussen de tekst staan kunnen links, rechts of in
-%I het midden worden uitgelijnd. De plaats wordt ingesteld met:
-%I
-%I \stelplaatsblokkenin[plaats=,breedte=,kader=,bovenkader=,
-%I onderkader=,linkerkader=,rechterkader=,offset=,voorwit=,
-%I nawit=,marge=]
-%I
-%I De genummerde kopjes bij blokken kunnen worden ingesteld
-%I met:
-%I
-%I \stelblokkopjesin[plaats=,voor=,tussen=,na=,letter=,
-%I kopletter=,breedte=,nummer=,uitlijnen=]
-%I
-%I waarbij als plaats kan worden meegegeven: 'boven', 'onder',
-%I 'geen', 'hoog', 'laag' of 'midden'. Als breedte kan 'passend'
-%I of 'max' worden meegegeven. De parameter nummer kan 'ja' of
-%I 'nee' zijn. Als breedte=max, dan wordt het kopje over de
-%I hele breedte geplaatst. In dat geval kan uitlijnen worden
-%I ingesteld: 'links', 'midden' of 'rechts'.
-%P
-%I Als er geen plaats is, worden plaatsblokken tijdelijk
-%I achtergehouden. De opgespaarde blokken worden op de
-%I volgende bladzijde(n) geplaatst. Dit plaatsen is te
-%I beinvloeden met:
-%I
-%I \stelplaatsblokkenin[nboven=,nonder=,nregels=]
-%I
-%I Standaard worden maximaal 2 blokken bovenaan de
-%I bladzijde geplaatst en 0 blokken onder. Er wordt overgegaan
-%I op een nieuwe bladzijde als het aantal regels groter is
-%I dan 4. Deze waarden kunnen worden ingesteld.
-%P
-%I Kopjes boven lijsten en labels voor nummers kunnen worden
-%I ingesteld met de elders beschreven commando's:
-%I
-%I \stellabeltekstin[label=...]
-%I \stelkoptekstin[tekst=...]
-%I
-%I Standaard zijn deze ingesteld op de opgegeven namen.
-
\def\stelplaatsblokkenin%
{\dodoubleargument\getparameters[\??bk]}
@@ -7171,7 +6474,8 @@
\hsize=\@@mbbreedte}%
\fi
\global\insidefloattrue
- \dowithnextbox
+ \dowithnextboxcontent
+ {\postponefootnotes} % new
{\docompletefloat
{#1}{#3}{#1}{#2}{#1}{#4}
{\box\nextbox}}%
@@ -7432,7 +6736,8 @@
\witruimte
\previoussidefloat
\stallsidefloat
- \setbox\floatbox=\hbox{\vbox{\vskip\sidefloattopoffset#1}}
+ \setbox\floatbox=\hbox{\vbox % pretty ugly, will be rewritten
+ {\vskip\ifmarginfloat-\sidefloattopskip\else\sidefloattopoffset\fi#1}}
\measuresidefloat
\ifroomforfloat
\setsidefloat
@@ -7995,7 +7300,8 @@
\blanko[\@@bkvoorwit]%
\flushfloatbox
\blanko[\@@bknawit]%
- \doinsertfloatinfo}
+ \doinsertfloatinfo
+ \doif{\@@bkspringvolgendein}{\v!nee}{\noindentation}} % new
\def\somefixdfloat[#1]%
{\doroomfloat
@@ -8020,7 +7326,8 @@
\v!rechts=>\rightfloat{\box\floatbox},
\v!inlinker=>\leftmarginfloat{\box\floatbox},
\v!inrechter=>\rightmarginfloat{\box\floatbox},
- \v!inmarge=>{\doinmargenormal\leftmarginfloat\rightmarginfloat[]{\box\floatbox}}]%
+ \v!inmarge=>{\doinmargenormal\leftmarginfloat
+ \rightmarginfloat{\box\floatbox}}]%
\doifinset{\v!lang}{#1}
{\flushsidefloatsafterpar}%
\fi}
@@ -8047,6 +7354,7 @@
\setbox\floattext=\vbox to \floattextheight}
{\setbox\floattext=\vbox}%
\bgroup
+\forgetall\stelblankoin\stelwitruimtein % new, also needed for footnotes
\blanko[\v!blokkeer]
\hsize\floattextwidth
\ignorespaces}
@@ -8258,10 +7566,10 @@
{\doregelplaats\@@flflplaats}%
\ConvertToConstant\doifelse{#3}{\v!geen}
{\global\setbox\floatbox=\vbox % pas op als wd groter dan hsize
- {\ifbinnenkolommen\ifdim\wd4>\hsize
- \let\locatefloat\relax
- \fi\fi
- \locatefloat{\box4}}}
+ {\ifbinnenkolommen\ifdim\wd4>\hsize
+ \let\locatefloat\relax
+ \fi\fi
+ \locatefloat{\copy4}}} % we need \wd4 later
{\setbox2=\hbox
{\footnotesenabledfalse\putcompletecaption{#4}{#2}{#3}{0}}%
\doifinsetelse{\@@kjkjplaats}{\v!hoog,\v!midden,\v!laag}
@@ -8303,10 +7611,11 @@
\hsize=0.9\wd4
\putcompletecaption{#4}{#2}{#3}{0}}%
\else
- \setbox0=\vbox
- {\forgetall
- \hsize=1.0\wd4
- \putcompletecaption{#4}{#2}{#3}{0}}%
+ %\setbox2=\vbox % was 0, bug
+ % {\forgetall
+ % \hsize=1.0\wd4
+ % \putcompletecaption{#4}{#2}{#3}{0}}%
+ \setbox2=\hbox{\putcompletecaption{#4}{#2}{#3}{0}}%
\fi
\else
\setbox0=\vbox
@@ -8326,20 +7635,24 @@
\fi
\putcompletecaption{#4}{#2}{#3}{0}}%
\else
- \setbox0=\vbox
- {\forgetall
- \dimen2=1.5\dimen0\relax
- \ifdim\dimen2<\hsize
- \hsize=\dimen2\relax
- \fi
- \putcompletecaption{#4}{#2}{#3}{0}}%
+ %\setbox2=\vbox % was 0, bug
+ % {\forgetall
+ % \dimen2=1.5\dimen0\relax
+ % \ifdim\dimen2<\hsize
+ % \hsize=\dimen2\relax
+ % \fi
+ % \putcompletecaption{#4}{#2}{#3}{0}}%
+ \setbox2=\hbox{\putcompletecaption{#4}{#2}{#3}{0}}%
\fi
\fi}
{\dosetraggedvbox{\@@kjkjuitlijnen}%
\setbox2=\raggedbox
{\hsize\@@kjkjbreedte
\putcompletecaption{#4}{#2}{#3}{0}}}%
- \fi}}%
+ \else
+ \setbox2=\hbox % we want footnotes !
+ {\putcompletecaption{#4}{#2}{#3}{0}}%
+ \fi}}%
\global\setbox\floatbox=\vbox
{\forgetall
\processaction
@@ -8377,13 +7690,32 @@
\tfskip
\copy4}},
\v!geen=>\locatefloat{\copy4}]}}%
- \ifdim\wd4>\hsize
- \global\setbox\floatbox=
- \hbox to \ifbinnenkolommen\wd4\else\hsize\fi
- {\hss\box\floatbox\hss}%
- \fi
+ % extended:
+ \postcenterfloatbox{\wd4}%
+ %\ifdim\wd4>\hsize
+ % \global\setbox\floatbox=
+ % \hbox to \ifbinnenkolommen\wd4\else\hsize\fi
+ % {\hss\box\floatbox\hss}%
+ %\fi
\egroup}
+\newif\ifpostponecolumnfloats \postponecolumnfloatsfalse % don't change
+
+\def\postcenterfloatbox#1%
+ {\ifbinnenkolommen
+ \ifpostponecolumnfloats
+ \scratchdimen=\makeupwidth
+ \else
+ \scratchdimen=#1\relax
+ \fi
+ \else\ifdim#1>\hsize
+ \scratchdimen=\hsize
+ \else
+ \scratchdimen=\wd\floatbox
+ \fi\fi
+ \global\setbox\floatbox=\hbox to \scratchdimen
+ {\hfill\box\floatbox\hfill}} % geen \hss, gaat mis in kolommen !
+
\def\dosetparfloat#1#2#3#4%
{\bgroup
\forgetall
@@ -8436,7 +7768,7 @@
\edef\@@kjkjplaats {\getvalue{\??kj#4\c!plaats}}%
\edef\@@kjkjuitlijnen{\getvalue{\??kj#4\c!uitlijnen}}%
\edef\@@flflplaats {\getvalue{\??fl#4\c!plaats}}%
- \ifparfloat
+ \ifparfloat
\dosetparfloat{#1}{#2}{#3}{#4}%
\else
\dosetpagfloat{#1}{#2}{#3}{#4}%
@@ -8532,76 +7864,6 @@
#4%
\pagina[\v!ja]}
-%I n=Figuren
-%I c=\plaatsfiguur,\reserveerfiguur,\startfiguurtekst
-%I c=\leegfiguur,\volledigelijstmetfiguren
-%I c=\plaatstabel,\reserveertabel,\starttabeltekst
-%I c=\legetabel,\volledigelijstmettabellen
-%I
-%I Figuren en tabellen (gebruik ..tabel.. in plaats van
-%I ..figuur..) kunnen in de tekst worden geplaatst met het
-%I commando:
-%I
-%I \plaatsfiguur[plaats][referentie]{titel}{figuur}
-%I
-%I Als voorkeur kan worden opgegeven 'hier', 'forceer',
-%I 'pagina', 'boven', 'onder', 'links' en 'rechts'. In plaats
-%I van een titel kan 'geen' worden meegegeven, in dat geval
-%I wordt geen titel geplaatst. Eventueel kan in combinatie
-%I met links en rechts 'lang' worden opgegeven.
-%I
-%I De volgorde kan worden afgedwongen met 'altijd',
-%I bijvoorbeeld [hier,altijd]. In dat geval wordt bij een
-%I volgende run zonodig de nummering aangepast.
-%I
-%I In plaats van een titel kan {geen} worden ingevuld. In
-%I dat geval blijft de titel achterwege.
-%P
-%I Het is mogelijk ruimte voor een figuur te reserveren:
-%I
-%I \reserveerfiguur[hoogte=,breedte=,kader=][voorkeur]
-%I [referentie]{titel}
-%P
-%I Een lijst met figuren kan worden opgeroepen met:
-%I
-%I \plaatslijstmetfiguren
-%I \volledigelijstmetfiguren
-%I
-%I Men kan een tekst naast een figuur zetten met:
-%I
-%I \startfiguurtekst[plaats][referentie]{kop}{figuur}
-%I ...
-%I \stopfiguurtekst
-%I
-%I Mogelijke plaatsen zijn (combinaties van) 'links', 'rechts',
-%I 'hoog', 'laag' en 'midden'. Met 'offset' dwingt men een
-%I verschuiving omlaag van van 1 regel af.
-%I
-%I Zie verder onder plaatsblokken.
-
-%I n=Tabellen
-%I
-%I Zie figuren.
-
-%I n=Intermezzo
-%I
-%I Zie figuren.
-
-%I n=Grafieken
-%I
-%I Zie figuren.
-
-%T n=figuur
-%T m=fig
-%T a=f
-%T
-%T \plaatsfiguur
-%T [hier]
-%T [fig:]
-%T {}
-%T {\naam{?}}
-%T
-
\definieernummer
[\??si]
[\c!wijze=\v!per\v!tekst,
@@ -8652,53 +7914,6 @@
\def\splitsplaatsblok%
{\dosingleempty\dosplitsplaatsblok}
-%I n=Formules
-%I c=\plaatsformule,\plaatssubformule,\stelformulesin
-%I
-%I Formules kunnen in de tekst worden geplaatst met
-%I het commando:
-%I
-%I \plaatsformule[referentie]subnummer$$formule$$
-%I
-%I Dit commando handelt de witruimtes om de formules af en
-%I plaatst nummers. Als geen nummer nodig is, en dus ook
-%I geen referentie, dan moet met het commando als volgt
-%I gebruiken:
-%I
-%I \plaatsformule-$$...$$ of \plaatsformule[-]$$...$$
-%I
-%I Als het nummer niet moet worden opgehoogd, gebruikt men
-%I
-%I \plaatssubformule[referentie]subnummer$$formule$$
-%P
-%I PAS OP:
-%I
-%I Binnen een aantal wiskundige commando's, zoals
-%I \displaylines, moet men het nummer zelf plaatsen. Dit
-%I kan gebeuren met: \formulenummer of \subformulenummer.
-%I Ook hier kan een [referentie] en een {subnummer} worden
-%I meegegeven.
-%I
-%I \plaatsformule
-%I $$\displaylines
-%I {x \hfill\formulenummer[eerste]{}\cr
-%I y \hfill\cr
-%I z \hfill\formulenummer[derde]{}\cr}
-%I $$
-%P
-%I De wijze waarop formules worden genummerd kan worden
-%I be‹nvloed door het commando:
-%I
-%I \stelformulesin[links=,rechts=,plaats=]
-%I
-%I De nummers kunnen links en rechts worden gezet. Standaard
-%I worden de symbolen ( en ) gebruikt.
-%I
-%I Tussen twee formules kan witruimte worden geforceerd met
-%I het commando:
-%I
-%I \blanko[formule]
-
\abovedisplayskip = \!!zeropoint\relax
\abovedisplayshortskip = \!!zeropoint\relax % evt. 0pt minus 3pt
\belowdisplayskip = \!!zeropoint\relax
@@ -8780,7 +7995,7 @@
\belowdisplayskip\!!zeropoint
\abovedisplayshortskip\!!zeropoint
\belowdisplayshortskip\!!zeropoint
-\vbox{\strut}\vskip-2\lineheight % Why 2 and not 1?
+\vbox{\strut}\vskip-2\openlineheight % Why 2 and not 1? ; 'open' is new
$$\def\dostopformula{$$\egroup}}
\def\plaatsformule%
@@ -8849,17 +8064,6 @@
\ignorespaces
\endgroup}
-%I n=Naast
-%I c=\startnaast,\stelnaastplaatsenin
-%I
-%I Experiment:
-%I
-%I \startnaast
-%I ...
-%I \stopnaast
-%I
-%I \stelnaastplaatsenin[status=]
-
\newbox\facingbox
\newbox\facingpage
@@ -8915,43 +8119,6 @@
\def\stelnaastplaatsenin%
{\dosingleargument\dostelnaastplaatsenin}
-%I n=Achtergronden
-%I c=\stelachtergrondenin
-%I
-%I Achter de tekst kan een achtergrond worden geplaatst.
-%I Voor de afzonderlijke elementen van een tekst wordt een
-%I achtergrond gedefinieerd met het commando:
-%I
-%I \stelachtergrondenin
-%I [boven,hoofd,tekst,voet,onder]
-%I [linkerrand,rechterrand,linkermarge,reachtermarge,tekst]
-%I [achtergrond=,kleur=,raster=]
-%I
-%I Voor de hele bladzijde gebruiken we:
-%I
-%I \stelachtergrondenin
-%I [pagina]
-%I [achtergrond=,kleur=,raster=]
-%P
-%I Het is mogelijk elk blok iets ruimer om de tekst te
-%I plaatsen met:
-%I
-%I \stelachtergrondenin
-%I [pagina]
-%I [offset=,diepte=]
-%I
-%I Een offset van .25\korpsgrootte en een diepte van
-%I .5\korpsgrootte voldoen aardig.
-%I
-%I Er kunnen ronde hoeken worden gezet met:
-%I
-%I \stelachtergrondenin
-%I [pagina]
-%I [hoek=,straal=]
-%I
-%I Hierbij kan voor hoek de instelling rond of recht worden
-%I meegegeven en voor straal een dimensie.
-
% Don't use \@@mawhatevercommand directly, use \getvalue instead.
\newif\ifnewbackground
@@ -9246,93 +8413,6 @@
\egroup
\fi}
-%I n=File-management
-%I c=\starttekst,\startprojekt,\startonderdeel,\startprodukt
-%I c=\startomgeving,\startdeelomgeving
-%I
-%I Een eenvoudige tekst wordt gestart en gestopt met de
-%I commando's:
-%I
-%I \starttekst
-%I \stoptekst
-%P
-%I Het is mogelijk een projektstructuur op te zetten. Per
-%I projekt wordt een file aangemaakt waarin de volgende
-%I commando's voorkomen:
-%I
-%I \startprojekt naam
-%I \stopprojekt
-%I
-%I Als deze file in TeX wordt geladen, dan worden alle
-%I produkten achter elkaar gezet.
-%I
-%I Een produkt wordt gedefinieerd met:
-%I
-%I \startprodukt naam
-%I \stopprodukt
-%I
-%I Deze file kan zelfstandig door TeX worden gehaald.
-%P
-%I Een omgeving wordt gedefinieerd door:
-%I
-%I \startomgeving naam
-%I \stopomgeving
-%I
-%I Een onderdeel wordt gedefinieerd door:
-%I
-%I \startonderdeel naam
-%I \stoponderdeel
-%I
-%I Files worden eerst gezocht op het actuele gebied. Als een
-%I file niet aanwezig is wordt op de 'roots' gezocht.
-%I
-%I Een onderdeel kan zelfstandig door TeX worden gehaald.
-%P
-%I Binnen een projekt, produkt, omgeving of onderdeel komen
-%I de volgende instellingen voor (tussen haakjes=facultatief):
-%I
-%I projekt omgeving produkt onderdeel
-%I
-%I \projekt naam * *
-%I \omgeving naam (*) (*) (*) (*)
-%I \produkt naam *
-%I \onderdeel naam (*) (*)
-%I
-%I Binnen een omgeving kunnen deelomgevingen worden gedefinieerd
-%I die alleen voor bepaalde produkten, onderdelen enz. gelden.
-%I
-%I \startdeelomgeving[naam,...,naam]
-%I commando's
-%I \stopdeelomgeving
-%P
-%I Het programma TeXEdit doorzoekt bij het aanmaken van een
-%I file-menu de hele tekst op de genoemde commando's. Bij een
-%I lange tekst kan dit misschien 'te' lang duren. Met het
-%I commando:
-%I
-%I \geenfilesmeer
-%I
-%I kan worden aangegeven dat er geen structuurcommando's meer
-%I volgen.
-%I
-%I Ten behoeve van TeXUtil moet in plaats van het commando
-%I \input het commando \verwerkfile{naam} worden gebruikt.
-%P
-%I Als men standaard een en ander wil instellen, dan kan men
-%I dit doen in de file 'cont-sys.tex'. Deze file wordt direkt
-%I na het opstarten geladen cq. uitgevoerd. Daarnaast wordt,
-%I indien aanwezig, de file 'cont-new.tex' geladen.
-
-%T n=starttekst
-%T m=sta
-%T a=x
-%T
-%T \starttekst
-%T
-%T ?
-%T
-%T \stoptekst
-
\def\currentproject {}
\def\currentproduct {}
\def\currentenvironment {}
@@ -9348,7 +8428,7 @@
\setvalue{\c!file::0}{\jobname}
-\def\processedfile%
+\def\processedfile% is used in styles, don't change !
{\getvalue{\c!file::\fileprocesslevel}}
%\def\processfile#1%
@@ -9392,7 +8472,7 @@
{\addtocommalist{##1}\allinputpaths}}%
\processcommalist[#1]\docommando}
-\def\registreerfileinfo[#1#2]#3%
+\def\registreerfileinfo[#1#2]#3% geen \showmessage ?
{\writestatus{\m!systems}{#1#2 file #3 at line \the\inputlineno}%
\immediatewriteutility{f #1 {#3}}}
@@ -9428,8 +8508,8 @@
\loadallsystemfiles\f!filfilename
\loadallsystemfiles\f!sysfilename}
-%D Loading of \type {cont-usr.tex} and \type {cont-exe.tex}
-%D (the one generated by texexec).
+%D Loading of \type {cont-usr.tex} (edited by the user)
+%D and \type {cont-fmt.tex} (generated by texexec).
\def\loaduserspecifications
{\readsysfile{\f!usrfilename}
@@ -9452,19 +8532,20 @@
% \newevery \everyjob \EveryJob
% \appendtoks ... \to \everyjob
-\prependtoks \showcontextbanner \to \everyjob
-
-\appendtoks \loadsystemfiles \to \everyjob
-\appendtoks \preloadfonts \to \everyjob
-\appendtoks \settopskip \to \everyjob
-\appendtoks \preloadlanguages \to \everyjob
-\appendtoks \preloadspecials \to \everyjob
-\appendtoks \openspecialfile \to \everyjob
-\appendtoks \checkutilityfile \to \everyjob
-\appendtoks \openutilities \to \everyjob
-\appendtoks \loadoptionfile \to \everyjob
-\appendtoks \loadtwopassdata \to \everyjob
-\appendtoks \setupfootnotes \to \everyjob % pas op: hangt af van korps
+\prependtoks \showcontextbanner \to \everyjob
+
+\appendtoks \loadsystemfiles \to \everyjob
+\appendtoks \preloadfonts \to \everyjob
+\appendtoks \settopskip \to \everyjob
+\appendtoks \preloadlanguages \to \everyjob
+\appendtoks \preloadspecials \to \everyjob
+\appendtoks \openspecialfile \to \everyjob
+\appendtoks \checkutilityfile \to \everyjob
+\appendtoks \openutilities \to \everyjob
+\appendtoks \loadoptionfile \to \everyjob
+\appendtoks \loadtwopassdata \to \everyjob
+\appendtoks \setupfootnotes \to \everyjob % depends on bodyfont
+\appendtoks \initializeMPgraphics \to \everyjob % after loading system files
\appendtoks \pagina[\v!laatste] \pagina \to \everybye
\appendtoks \ifarrangingpages\poparrangedpages\fi \to \everybye
@@ -9760,43 +8841,6 @@
\wd0=\!!zeropoint
\box0\relax}
-%I n=Commando's
-%I c=\definieer,\naam
-%I c=\gebruikcommandos
-%I
-%I Het is mogelijk eigen commando's te definieren met behulp
-%I van het commando:
-%I
-%I \definieer[aantal argumenten]\commando{betekenis}
-%I
-%I Een argument kan worden opgeroepen door een # gevolgd
-%I een nummer, bijvoorbeeld #2.
-%I
-%I \definieer\test{ziezo} \ziezo
-%I \definieer[1]\test{ziezo #1} \ziezo{}
-%I \definieer[2]\test{ziezo #1 en #2} \ziezo{}{}
-%P
-%I In commandonamen mogen alleen karakters voorkomen. Mocht
-%I onverhoopt een cijfer nodig zijn, dan kunnen dergelijke
-%I commando's worden opgeroepen met:
-%I
-%I \naam{}
-%I
-%I In een aantal gevallen, bijvoorbeeld bij het wegschrijven
-%I naar lijsten, worden commando's \noexpand-ed. Dit is
-%I bijvoorbeeld het geval bij synoniemen en sorteren, als
-%I het criterium ongelijk is aan 'alles'. Dergelijke (zelf)
-%I gedefinieerde commando's dienen eerst te worden
-%I geactiveerd met :
-%I
-%I \gebruikcommandos{\commando}
-%I
-%I Er mogen meerdere commando's tegelijk worden opgegeven:
-%I
-%I \gebruikcommandos{\alfa,\beta,gamma}
-%I
-%I waarbij de \ facultatief is. Er wordt niets gezet!
-
% \docommando kan niet worden gebruikt omdat deze macro
% soms lokaal wordt gebruikt
@@ -9858,33 +8902,6 @@
\processcommalist[#1]\docommando
\egroup}
-%I n=Groeperen
-%I c=\start,\definieerstartstop
-%I
-%I Met behulp van de volgende commando's kan de werking van
-%I andere commando's worden beperkt:
-%I
-%I \start[label]
-%I \stop[label]
-%I
-%I Men is vrij in de keuze van het commentaar. Het gebruik
-%I van deze commando's komt overeen met het gebruiken van {}.
-%P
-%I Er kunnen \start-\stop-paren worden gedefinieerd en
-%I ingesteld met:
-%I
-%I \definieerstartstop[label][voor=,na=,commandos=,
-%I letter=]
-%I
-%I De aan 'voor' en 'na' toegekende commando's worden voor
-%I \start en na \stop uitgevoerd; de aan 'commando'
-%I toegekende commando's direct na \start.
-%I
-%I Naast het \start-\stop-paar is ook het verkorte commando
-%I beschikbaar:
-%I
-%I \label{tekst}
-
\def\complexstart[#1]{\bgroup\getvalue{\e!start#1}}
\def\complexstop [#1]{\getvalue{\e!stop #1}\egroup}
@@ -9933,16 +8950,6 @@
\def\copyright
{\omcirkeld{c}}
-%I n=Systeem
-%I c=\stelsysteemin
-%I
-%I Systeemvariabelen kunnen worden ingesteld met het
-%I commando:
-%I
-%I \stelsysteemin[resolutie=,korps=]
-%I
-%I Aan 'resolutie' dient het aantal dpi (300).
-
\def\dosetupsystem[#1]%
{\getparameters[\??sv][#1]%
\setuprandomize[\@@svwillekeur]%
@@ -9966,6 +8973,8 @@
\s!unknown=>\time=#1]%
\nextrandom
\egroup}}
+
+\def\outputfilename{\@@svfile}
% Default-instellingen (verborgen)
@@ -9979,8 +8988,9 @@
\setupsystem
[\c!gebied=,
- \c!resolutie=300dpi,
+ \c!resolutie=600dpi,
\c!willekeur=,
+ \c!file=\jobname,
\c!korps=\normalizedlocalbodyfontsize] % of iets anders
% Pas op:
@@ -9991,7 +9001,6 @@
\stellayoutin
[ \c!kopwit=.08417508418\papierhoogte, % .08333 2.5cm
- %\c!boven=.03367003367\papierhoogte, % .03331 1.0cm
\c!boven=\!!zeropoint,
\c!bovenafstand=\!!zeropoint,
\c!hoofd=.06734006734\papierhoogte, % .06667 2.0cm
@@ -10002,11 +9011,8 @@
\c!onderafstand=\@@lybovenafstand,
\c!onder=\!!zeropoint,
\c!rugwit=.11904761905\papierbreedte, % 2.5cm
- %\c!rand=.14285714286\papierbreedte, % 3.0cm
\c!rand=\!!zeropoint,
\c!randafstand=\@@lymargeafstand,
- %\c!marge=\@@lyrugwit,
- %\c!marge=.07888078409\papierbreedte, % rugwit-2*afstand
\c!marge=.12649983170\papierbreedte, % snijwit-2*afstand
\c!margeafstand=.02008341748\papierbreedte, % 12.0pt
\c!linkerrand=\@@lyrand,
@@ -10023,7 +9029,7 @@
\c!tekstbreedte=, % dangerous here \tekstbreedte
\c!letter=,
\c!markering=\v!uit,
- \c!plaats=\v!enkelzijdig,
+ \c!plaats=, % \v!enkelzijdig, but empty is signal
\c!schaal=1,
\c!nx=1,
\c!ny=1,
@@ -10031,8 +9037,8 @@
\c!dy=\!!zeropoint,
\c!grid=\v!nee,
\c!regels=,
- \c!snijwit=,
- \c!bodemwit=]
+ \c!snijwit=\!!zeropoint,
+ \c!bodemwit=\!!zeropoint]
% instellingen hierop terugvallen, bijvoorbeeld de volgende:
@@ -10106,6 +9112,7 @@
\c!diepte=.28,
\c!boven=1.0,
\c!onder=0.4,
+ \c!afstand=1pt,
\c!regel=2.8ex]
\stelkolommenin
@@ -10468,6 +9475,7 @@
\c!nawit=\v!groot,
\c!zijvoorwit=\@@bkvoorwit,
\c!zijnawit=\@@bknawit,
+ \c!springvolgendein=\v!nee,
\c!marge=1em,
\c!nboven=2,
\c!nonder=0,
@@ -10519,7 +9527,8 @@
[\v!definitief]
\stelpaginanummerin
- [\c!nummer=1]
+ [\c!status=\v!start,
+ \c!nummer=1]
\stelsubpaginanummerin
[\c!wijze=\v!per\v!deel,
diff --git a/tex/context/base/main-002.tex b/tex/context/base/main-002.tex
index 169f5a0aa..6abe6cb1b 100644
--- a/tex/context/base/main-002.tex
+++ b/tex/context/base/main-002.tex
@@ -17,46 +17,6 @@
\unprotect
-%I n=Items
-%I c=\items,\stelitemsin
-%I
-%I Met het commando \items kunnen invullijsten worden
-%I gegenereerd:
-%I
-%I \items{alternatief1,alternatief2,...,alternatiefN}
-%I
-%I Als in plaats van een alternatief een - wordt gegeven,
-%I dan wordt ruimte opengelaten.
-%I
-%I De wijze waarop items worden weergegeven wordt ingesteld
-%I met het commando:
-%I
-%I \stelitemsin[plaats=,symbool=,breedte=,n=,voor=,
-%I tussen=,na=,uitlijnen=]
-%I
-%I Mogelijke plaatsen zijn links, rechts, onder, boven en
-%I inmarge. Als breedte wordt de breedte van de totale tekst
-%I opgegeven. Het aantal is facultatief, eventueel kan er
-%I 'onbekend' worden meegegeven. Uitlijnen is 'ja' of 'nee'.
-%P
-%I Indien gewenst, kan de instelling direkt achter \item worden
-%I geplaatst:
-%I
-%I \items[plaats=,symbool=,...]{alternatief1,...}
-%I
-%I In plaats van een symbool kan ook een van de volgende
-%I aanduidingen worden meegegeven:
-%I
-%I a a, b, c, d, ...
-%I A A, B, C, D, ...
-%I n 1, 2, 3, 4, ...
-%I r i, ii, iii, ...
-%I R I, II, III, ...
-%I
-%I Eventueel kan een nummer worden meegegeven. In dat
-%I geval wordt het overeenkomstige symbool van de
-%I opsomming gebruikt (1--n).
-
%\def\checkinterlineskip%
% {\ifvmode
% \ifdim\lastskip>\!!zeropoint\relax
@@ -96,14 +56,14 @@
\fi\fi}%
\vbox{#2}}
-\def\dostelitemsin[#1]% maakt direkt gebruik van \??ss en \??cv
+\def\dostelitemsin[#1]%
{\getparameters[\??is][#1]%
\doif{\@@isbreedte}{\v!onbekend}
{\def\@@isbreedte{\hsize}}%
- \doifdefinedelse{\??cv\@@issymbool}
+ \doifconversiondefinedelse{\@@issymbool}
{\def\doitembullet##1{\convertnumber{\@@issymbool}{##1}}}
- {\doifdefined{\??ss\@@issymbool}
- {\def\doitembullet##1{\symbol[\@@issymbool]}}}}
+ {\doifsymboldefinedelse{\@@issymbool}
+ {\def\doitembullet##1{\symbol[\@@issymbool]}}{}}}
\def\makeitemsandbullets#1%
{\doifelse{\@@isn}{\v!onbekend}
@@ -184,36 +144,6 @@
\definecomplexorsimpleempty\items
-%I n=Tabulatie (1)
-%I c=\definieeralineas,\stelalineasin
-%I
-%I Er kunnen paragrafen in meerdere kolommen worden gezet na
-%I het commando:
-%I
-%I \definieeralineas[naam][n=,voor=,na=,afstand=,
-%I hoogte=,lijn=,binnen=]
-%I
-%I Kolommen worden vervolgens gezet met:
-%I
-%I \startnaam .... \naam .... \naam .... \stopnaam
-%I
-%I of (soms verwarrend):
-%I
-%I \naam .... \naam .... \naam .... \naam
-%I
-%I of (lekker kort):
-%I
-%I \naam .... \\ .... \\ .... \\
-%I
-%I waarbij het aantal malen .... \naam of \\ gelijk is
-%I aan n. Naast \naam en \\ is ook \volgendenaam toegestaan.
-%P
-%I Het is mogelijk per kolom een en ander in te stellen met
-%I het commando:
-%I
-%I \stelalineasin[naam][kolomnummer][afstand=,breedte=,
-%I hoogte=,boven=,onder=,letter=,binnen=,lijn=,
-%I uitlijnen=,tolerantie=]
% Te zijner tijd [plaats=boven,onder,midden] implementeren,
% in dat geval moet eerst de maximale hoogte worden bepaald.
@@ -405,21 +335,6 @@
\par
\getvalue{\??al#1\c!na}}%
-%I n=Tabulatie (2)
-%I c=\steltabin,\tab
-%I
-%I Eenvoudige tabulatie is mogelijk met het commando:
-%I
-%I \tab{tekst} tekst tekst tekst .....
-%I
-%I Instelling vindt plaats met het commando:
-%I
-%I \steltabin[monster=,breedte=,kopletter=,voor,na=]
-%I
-%I Dit commando is een vereenvoudigde variant van het
-%I commando \doordefinieren. In de regel kan volstaan
-%I worden met het opgeven van een monster. Dit is het
-%I woord dat de breedte bepaalt.
\def\dosteltabin[#1]%
{\getparameters[\??ta]
@@ -444,27 +359,6 @@
\def\steltabin%
{\dosingleargument\dosteltabin}
-%I n=Diversen
-%I c=\celsius,\bedrag,\breuk
-%I c=\procent,\promille
-%I
-%I De volgende commando's vatten (vooral mathematische)
-%I zetcommando's samen:
-%I
-%I \chem{symbool}{onder}{boven} chemische symbolen
-%I \celsius{graden} graden Celsius (..~øC)
-%I \breuk{boven}{onder} breuken («)
-%I \bedrag{getal} geldbedragen (Ÿ~..)
-%I \punten[n] puntjes (. . .)
-%I \ongeveer plus-minus (ñ)
-%I \inch inch ('')
-%I \doorsnede \circ doorsneden met /
-%I \graden ø (^\circ)
-%I \procent percentage (vgl promille)
-%I \promille promilage
-%I \dollar dollar teken
-%I \sterling pound sterling teken
-%I \florijn gulden teken
% The following macro's are derived from PPCHTEX and
% therefore take some LaTeX font-switching into account.
@@ -662,37 +556,6 @@
f%
\egroup}
-%I n=Citaten
-%I c=\startcitaat,\citaat,\stelcitatenin
-%I c=\citeer,\stelciterenin
-%I
-%I Als variant op \startsmaller is het volgende commando
-%I beschikbaar:
-%I
-%I \startcitaat
-%I tekst
-%I \stopcitaat
-%I
-%I Rond de tekst worden in de marge dubbele quotes
-%I geplaatst. Ook bij dit commando kunnen tussen [] maten
-%I worden opgegeven:
-%I
-%I \startcitaat[2*links,rechts]
-%I
-%I In de lopende tekst kan gebruik worden gemaakt van:
-%I
-%I \citaat{tekst}
-%I \citeer{tekst}
-%I
-%I Het eerste commando levert dubbele quotes en het tweede
-%I enkele quotes.
-%P
-%I Er zijn twee varianten (1 en 2) beschikbaar die kunnen
-%I worden ingesteld met:
-%I
-%I \stelciterenin
-%I [letter=]
-
\newsignal\quotationsignal
\def\quotationskip{.125em}
@@ -787,15 +650,6 @@
\def\activiteit#1#2%
{\sym{\tijdspan{#1}{#2}}}
-%I n=Toevoegen
-%I c=\toevoegen
-%I
-%I Er kan witruimte worden gemarkeerd met het commando:
-%I
-%I \toevoegen[instelling]{korte tekst}
-%I
-%I waarbij als instellingen mogelijk zijn: klein, middel of
-%I groot.
\def\dotoevoegen#1%
{\def\next{#1}%
@@ -814,25 +668,6 @@
\definecomplexorsimpleempty\toevoegen
-%I n=Roosters
-%I c=\rooster
-%I
-%I Er kunnen roosters (te vergelijken met ruitjespapier)
-%I worden gemaakt met:
-%I
-%I \rooster[nx=,ny=,dx=,dy=,eenheid=,xstap=,ystap=,
-%I offset=,schaal=,factor=]
-%I
-%I De instelling [nx=20,ny=20,dx=.5,dy=.5,eenheid=cm] levert
-%I een patroon van 10cm bij 10cm van hokjes van 0.5cm op.
-%I
-%I Met '.stap' kunnen getallen langs de assen worden gezet.
-%I als 0 wordt ingevuld (default), dan worden geen getallen
-%I gezet. Met offset (ja of nee) kan men aangeven of de
-%I getallen langs de assen binnen of buiten de box rond
-%I het rooster vallen (vergelijk \stelpositionerenin).
-%I
-%I !! Dit commando wordt nog aangepast/uitgebreid. !!
\def\dorooster[#1]%
{\begingroup
@@ -945,33 +780,6 @@
\def\rooster%
{\dosingleempty\dorooster}
-%I n=Literatuurlijsten
-%I c=\stelpublicatiesin,\startpublicatie,\publicatie
-%I
-%I Literatuurlijsten kunnen worden opgemaakt met het commando:
-%I
-%I \startpublicatie[referentie]
-%I \naam ....
-%I \titel ....
-%I \jaar ....
-%I \plaats ....
-%I \uitgever ....
-%I \stoppublicatie
-%I
-%I Een publicatie wordt opgeroepen met:
-%I
-%I \publicatie[referentie]
-%P
-%I Het formaat kan worden ingesteld met het commando:
-%I
-%I \stelpublicatiesin[variant=,voor=,na=,nummeren=,
-%I breedte=,kopletter=,links=,rechts=]
-%I
-%I waarbij mogelijke varianten zijn: normaal apa en normaal.
-%I Nummeren kan 'ja' of 'nee' zijn; links en rechts
-%I hebben betrekking op de weergave in de tekst en zijn
-%I standaard [ en ].
-
% Dit wordt:
%
% \doorverwijzen[naam][instellingen] enz.
@@ -1040,27 +848,6 @@
\def\publicatie#1[#2]%
{\@@pblinks\in{#1}[#2]\@@pbrechts}
-%I n=Kenmerken
-%I c=\kenmerk,\kenmerkdatum
-%I
-%I Er kan een kenmerk worden gezet met het commando:
-%I
-%I \kenmerk[bet=,ken=,dat=,van=,aan=,ref=]
-%I
-%I waarbij de verplichte parameters staan voor 'betreft',
-%I 'kenmerk' en 'datum' en de optionele voor 'van', 'aan' en
-%I 'referentie'.
-%I
-%I Een kenmerk-datum kan worden gezet met het commando:
-%I
-%I \kenmerkdatum
-%I
-%I zodat een kenmerk er bijvoorbeeld uitziet als:
-%I
-%I \kenmerk
-%I [bet=rekening eerste termijn,
-%I ken=\kenmerkdatum.sork.gvk / afo,
-%I dat=\currentdate]
\def\kenmerkdatum%
{\currentdate[\v!kenmerk]}
diff --git a/tex/context/base/main-003.tex b/tex/context/base/main-003.tex
index 989e6a792..3f401c0e0 100644
--- a/tex/context/base/main-003.tex
+++ b/tex/context/base/main-003.tex
@@ -32,33 +32,15 @@
\startmessages czech library: systems
41: externi soubor -- ve skupine -- neexistuje
\stopmessages
-
-%I n=Formules+
-%I c=\startlegenda,\startgegeven
-%I
-%I Ten behoeve van een consistente toelichting op een
-%I formule zijn er de volgende commando's:
-%I
-%I \startlegenda
-%I \leg symbool \\ betekenis \\ dimensie \\
-%I \leg symbool \\ betekenis \\ dimensie \\
-%I \stoplegenda
-%I
-%I \startgegeven
-%I \geg betekenis \\ symbool \\ waarde \\
-%I \geg betekenis \\ symbool \\ waarde \\
-%I \stopgegeven
-%I
-%I Ten behoeve van het zetten van ub- en superscripts zijn
-%I er, naast \hbox, de commando's \xbox en \xxbox.
-%P
-%I Het onderstaande mag ook:
-%I
-%I \startlegenda[twee]
-%I \leg symbool \\ symbool \\ betekenis \\ dimensie \\
-%I \leg symbool \\ symbool \\ betekenis \\ dimensie \\
-%I \stoplegenda
+\startmessages italian library: systems
+ 41: il file esterno -- del gruppo -- non esiste
+\stopmessages
+
+\startmessages norwegian library: systems
+ 41: ekstern fil -- i gruppe -- eksisterer ikke
+\stopmessages
+
\definetabulate
[\e!legenda]
[|emj1|i1|mR|]
@@ -89,13 +71,97 @@
% {$\rm#1$}
%D \macros
-%D {setuplegend, placelegend}
+%D {definepairedbox, setuppairedbox, placepairedbox}
%D
-%D It makes sense to typeset a legend to a figure in \TEX\ and
-%D not in a drawing package. The macro \type {\placelegend}
-%D combines a figure (or something else) and its legend.
+%D Paired boxes, formally called legends, but from now on a
+%D legend is just an instance, are primarily meant for
+%D typesetting some text alongside an illustration. Although
+%D there is quite some variation possible, the functionality is
+%D kept simple, if only because in most cases such pairs are
+%D typeset sober.
+%D
+%D The location specification accepts a pair, where the first
+%D keyword specifies the arrangement, and the second one the
+%D alignment. The first key of the location pair is one of
+%D \type {left}, \type {right}, \type {top} or \type {bottom},
+%D while the second key can also be \type {middle}.
+%D
+%D The first box is just collected in an horizontal box, but
+%D the second one is a vertical box that gets passed the
+%D bodyfont and alignment settings.
+
+% \startbuffer[test]
+% \test left \test left,top \test left,bottom \test left,middle
+% \test right \test right,top \test right,bottom \test right,middle
+% \test top \test top,left \test top,right \test top,middle
+% \test bottom \test bottom,left \test bottom,right \test bottom,middle
+% \stopbuffer
+%
+% \def\showtest#1%
+% {\pagina
+% \typebuffer[demo]
+% \def\test##1
+% {\startlinecorrection[blank]
+% \getbuffer[demo]%
+% \ruledhbox\placelegend
+% [bodyfont=6pt,location={##1}]
+% {\framed[width=.25\textwidth]{\tttf##1}}
+% {#1}
+% \stoplinecorrection}
+% \getbuffer[test]}
+%
+% \startbuffer[demo]
+% \setuplegend
+% [width=\hsize,maxwidth=\makeupwidth,
+% height=\vsize,maxheight=\makeupheight]
+% \stopbuffer
+%
+% \showtest{These examples demonstrate the default settings.}
+%
+% \startbuffer[demo]
+% \setuplegend
+% [width=\textwidth,
+% maxwidth=\textwidth]
+% \stopbuffer
+%
+% \showtest{\input tufte }
+%
+% \startbuffer[demo]
+% \setuplegend
+% [width=.65\textwidth]
+% \stopbuffer
+%
+% \showtest{\input knuth }
+%
+% \startbuffer[demo]
+% \setuplegend
+% [height=2cm]
+% \stopbuffer
+%
+% \showtest{These examples demonstrate some other settings.}
+%
+% \startbuffer[demo]
+% \setuplegend
+% [width=.65\textwidth,
+% height=2cm]
+% \stopbuffer
+%
+% \showtest{These examples demonstrate some other settings.}
+%
+% \startbuffer[demo]
+% \setuplegend
+% [n=2,align=right,width=.5\textwidth]
+% \stopbuffer
+%
+% \showtest{\input zapf }
+
+%D \macros
+%D {setuplegend, placelegend}
%D
-%D \showsetup{placelegend}
+%D It makes sense to typeset a legend to a figure in \TEX\
+%D and not in a drawing package. The macro \type {\placelegend}
+%D combines a figure (or something else) and its legend. This
+%D command is just a paired box.
%D
%D The legend is placed according to \type {location}, being
%D \type {bottom} or \type {right}. The macro macro is used as
@@ -153,121 +219,231 @@
%D \item head \item legs \item tail \item belly \item horns
%D \stopitemize}}
%D \stoptypen
-%D
-%D There are a few more parameters:
-%D
-%D \showsetup{setuplegend}
-\def\setuplegend%
- {\dodoubleargument\getparameters[\??ld]}
+% \def\setuplegend%
+% {\dodoubleargument\getparameters[\??ld]}
+%
+% \setuplegend
+% [\c!n=1,
+% \c!afstand=1em,
+% \c!tussen={\blanko[\v!middel]},
+% \c!breedte=\hsize,
+% \c!hoogte=\vsize,
+% \c!korps=,
+% \c!plaats=\v!onder]
+%
+% \def\placelegend%
+% {\bgroup
+% \dosingleempty\doplacelegend}
+%
+% \def\doplacelegend[#1]% watch the hsize/vsize tricks
+% {\setuplegend[#1]% % and don't change them
+% \dowithnextbox
+% {\switchtobodyfont[\@@ldkorps]% split under same regime
+% \scratchdimen=\wd\nextbox
+% \doifelse{\@@ldplaats}{\v!rechts}
+% {\vsize=\ht\nextbox
+% \vsize=\@@ldhoogte
+% \hsize=\zetbreedte
+% \advance\hsize by -\scratchdimen
+% \advance\hsize by -\@@ldafstand
+% \plaatsnaastelkaar{\box\nextbox}\bgroup}
+% {\hsize\scratchdimen
+% \plaatsonderelkaar{\box\nextbox}\bgroup}%
+% \hsize\@@ldbreedte
+% \doif{\@@ldplaats}{\v!rechts}{\hskip\@@ldafstand}%
+% \ifnum\@@ldn>1
+% \setrigidcolumnhsize\hsize\@@ldafstand\@@ldn
+% \fi
+% \dowithnextbox
+% {\doifelse{\@@ldplaats}{\v!rechts}
+% {\vbox to \vsize
+% {\ifnum\@@ldn>1
+% \rigidcolumnbalance\nextbox
+% \else
+% \box\nextbox
+% \fi
+% \vfill}}
+% {\vbox
+% {\@@ldtussen
+% \ifnum\@@ldn>1
+% \rigidcolumnbalance\nextbox
+% \else
+% \box\nextbox
+% \fi}}%
+% \egroup\egroup}%
+% \vbox
+% \bgroup
+% \forgetall
+% \tolerantTABLEbreaktrue % hm.
+% \blanko[\v!blokkeer]%
+% \everypar{\begstrut}%
+% \let\next=}
+% \hbox}
+
+\newbox\firstpairedbox
+\newbox\secondpairedbox
+
+\def\definepairedbox%
+ {\dodoubleempty\dodefinepairedbox}
+
+\def\dodefinepairedbox[#1][#2]%
+ {\getparameters
+ [\??ld#1]
+ [\c!n=1,
+ \c!afstand=\bodyfontsize,
+ \c!tussen={\blanko[\v!middel]},
+ \c!breedte=\hsize,
+ \c!hoogte=\vsize,
+ \c!maxbreedte=\zetbreedte,
+ \c!maxhoogte=\zethoogte,
+ \c!korps=,
+ \c!uitlijnen=,
+ \c!plaats=\v!onder,
+ #2]%
+ \setvalue{\e!stel#1\e!in}{\setuppairedbox[#1]}%
+ \setvalue{\e!plaats#1}{\placepairedbox[#1]}}
+
+\def\setuppairedbox%
+ {\dodoubleempty\dosetuppairedbox}
+
+\def\dosetuppairedbox[#1]%
+ {\getparameters[\??ld#1]}
+
+\def\placepairedbox%
+ {\bgroup\dodoubleempty\doplacepairedbox}
+
+\def\doplacepairedbox[#1][#2]% watch the hsize/vsize tricks
+ {\setuppairedbox[#1][#2]% % and don't change them
+ \copyparameters
+ [\??ld][\??ld#1]
+ [\c!n,\c!afstand,\c!tussen,
+ \c!breedte,\c!hoogte,\c!maxbreedte,\c!maxhoogte,
+ \c!korps,\c!uitlijnen,\c!plaats]%
+ \beforefirstpairedbox
+ \dowithnextbox
+ {\betweenbothpairedboxes
+ \dowithnextbox
+ {\afterbothpairedboxes
+ \egroup}
+ \vbox\bgroup
+ \insidesecondpairedbox
+ \let\next=}
+ \hbox}
-\setuplegend
- [\c!n=1,
- \c!afstand=1em,
- \c!tussen={\blanko[\v!middel]},
- \c!breedte=\hsize,
- \c!hoogte=\vsize,
- \c!korps=,
- \c!plaats=\v!onder]
+\def\beforefirstpairedbox%
+ {\chardef\pairedlocationa=1 % left
+ \chardef\pairedlocationb=4 % middle
+ \getfromcommacommand[\@@ldplaats][1]%
+ \processaction
+ [\commalistelement]
+ [ \v!links=>\chardef\pairedlocationa=0,
+ \v!rechts=>\chardef\pairedlocationa=1,
+ \v!boven=>\chardef\pairedlocationa=2,
+ \v!onder=>\chardef\pairedlocationa=3]%
+ \getfromcommacommand[\@@ldplaats][2]%
+ \processaction
+ [\commalistelement]
+ [ \v!links=>\chardef\pairedlocationb=0,
+ \v!rechts=>\chardef\pairedlocationb=1,
+ \v!hoog=>\chardef\pairedlocationb=2,
+ \v!boven=>\chardef\pairedlocationb=2,
+ \v!laag=>\chardef\pairedlocationb=3,
+ \v!onder=>\chardef\pairedlocationb=3,
+ \v!midden=>\chardef\pairedlocationb=4]}
+
+\def\betweenbothpairedboxes%
+ {\switchtobodyfont[\@@ldkorps]% split under same regime
+ \setbox\firstpairedbox=\box\nextbox
+ \ifnum\pairedlocationa<2
+ \hsize\wd\firstpairedbox % trick
+ \hsize=\@@ldbreedte
+ \scratchdimen=\wd\firstpairedbox
+ \advance\scratchdimen by \@@ldafstand
+ \bgroup\advance\scratchdimen by \hsize
+ \ifdim\scratchdimen>\@@ldmaxbreedte\relax
+ \egroup
+ \hsize=\@@ldmaxbreedte
+ \advance\hsize by -\scratchdimen
+ \else
+ \egroup
+ \fi
+ \else
+ \hsize\wd\firstpairedbox
+ \hsize\@@ldbreedte % can be \hsize
+ \ifdim\hsize>\@@ldmaxbreedte\relax \hsize=\@@ldmaxbreedte \fi % can be \hsize
+ \fi
+ \ifnum\@@ldn>1
+ \setrigidcolumnhsize\hsize\@@ldafstand\@@ldn
+ \fi}
-\def\placelegend%
- {\bgroup
- \dosingleempty\doplacelegend}
+\def\afterbothpairedboxes%
+ {\setbox\secondpairedbox=\vbox
+ {\ifnum\@@ldn>1 \rigidcolumnbalance\nextbox \else \box\nextbox \fi}%
+ \ifnum\pairedlocationa<2\hbox\else\vbox\fi\bgroup % hide vsize
+ \forgetall
+ \ifnum\pairedlocationa<2
+ \scratchdimen=\maxoftwoboxdimens\ht\firstpairedbox\secondpairedbox
+ \vsize=\scratchdimen
+ \ifdim\scratchdimen<\@@ldhoogte\relax % can be \vsize
+ \scratchdimen=\@@ldhoogte
+ \fi
+ \ifdim\scratchdimen>\@@ldmaxhoogte\relax
+ \scratchdimen=\@@ldmaxhoogte
+ \fi
+ \valignpairedbox\firstpairedbox \scratchdimen
+ \valignpairedbox\secondpairedbox\scratchdimen
+ \else
+ \scratchdimen=\maxoftwoboxdimens\wd\firstpairedbox\secondpairedbox
+ \halignpairedbox\firstpairedbox \scratchdimen
+ \halignpairedbox\secondpairedbox\scratchdimen
+ \scratchdimen=\ht\secondpairedbox
+ \vsize=\scratchdimen
+ \ifdim\ht\secondpairedbox<\@@ldhoogte\relax % can be \vsize
+ \scratchdimen=\@@ldhoogte\relax % \relax needed
+ \fi
+ \ifdim\scratchdimen>\@@ldmaxhoogte\relax % todo: totale hoogte
+ \scratchdimen=\@@ldmaxhoogte\relax % \relax needed
+ \fi
+ \ifdim\scratchdimen>\ht\secondpairedbox
+ \setbox\secondpairedbox\vbox to \scratchdimen
+ {\ifnum\pairedlocationa=3 \vss\fi
+ \box\secondpairedbox
+ \ifnum\pairedlocationa=2 \vss\fi}%
+ \fi
+ \fi
+ \ifcase\pairedlocationa
+ \box\secondpairedbox\hskip\@@ldafstand\box\firstpairedbox \or
+ \box\firstpairedbox \hskip\@@ldafstand\box\secondpairedbox\or
+ \box\secondpairedbox\par \@@ldtussen \box\firstpairedbox \or
+ \box\firstpairedbox \par \@@ldtussen \box\secondpairedbox\else
+ \fi
+ \egroup}
-\def\doplacelegend[#1]% watch the hsize/vsize tricks
- {\setuplegend[#1]% % and don't change them
- \dowithnextbox
- {\switchtobodyfont[\@@ldkorps]% split under same regime
- \scratchdimen=\wd\nextbox
- \doifelse{\@@ldplaats}{\v!rechts}
- {\vsize=\ht\nextbox
- \vsize=\@@ldhoogte
- \hsize=\zetbreedte
- \advance\hsize by -\scratchdimen
- \advance\hsize by -\@@ldafstand
- \plaatsnaastelkaar{\box\nextbox}\bgroup}
- {\hsize\scratchdimen
- \plaatsonderelkaar{\box\nextbox}\bgroup}%
- \hsize\@@ldbreedte
- \doif{\@@ldplaats}{\v!rechts}{\hskip\@@ldafstand}%
- \ifnum\@@ldn>1
- \setrigidcolumnhsize\hsize\@@ldafstand\@@ldn
- \fi
- \dowithnextbox
- {\doifelse{\@@ldplaats}{\v!rechts}
- {\vbox to \vsize
- {\ifnum\@@ldn>1
- \rigidcolumnbalance\nextbox
- \else
- \box\nextbox
- \fi
- \vfill}}
- {\vbox
- {\@@ldtussen
- \ifnum\@@ldn>1
- \rigidcolumnbalance\nextbox
- \else
- \box\nextbox
- \fi}}%
- \egroup\egroup}%
- \vbox
- \bgroup
- \forgetall
- \tolerantTABLEbreaktrue % hm.
- \blanko[\v!blokkeer]%
- \everypar{\begstrut}%
- \let\next=}
- \hbox}
+\def\insidesecondpairedbox%
+ {\forgetall
+ \steluitlijnenin[\@@lduitlijnen]%
+ \tolerantTABLEbreaktrue % hm.
+ \blanko[\v!blokkeer]%
+ \everypar{\begstrut}}
+
+\def\maxoftwoboxdimens#1#2#3%
+ {#1\ifdim#1#2>#1#3 #2\else#3\fi}
+
+\def\valignpairedbox#1#2%
+ {\setbox#1=\vbox to #2
+ {\ifcase\pairedlocationb\or\or\or\vss\or\vss\fi
+ \box#1\relax
+ \ifcase\pairedlocationb\or\or\vss\or\or\vss\fi}}
+
+\def\halignpairedbox#1#2%
+ {\setbox#1=\hbox to #2
+ {\ifcase\pairedlocationb\or\hss\or\or\or\hss\fi
+ \box#1\relax
+ \ifcase\pairedlocationb\hss\or\or\or\or\hss\fi}}
+
+\definepairedbox[\e!legenda]
-%I n=Combinaties
-%I c=\startcombinatie,\stelcombinatiesin
-%I
-%I Er kunnen meerdere tabellen, figuren enz. worden
-%I gecombineerd. Dit gebeurt met het commando:
-%I
-%I \startcombinatie[n*m]
-%I {inhoud 1}{ondertitel 1}
-%I {inhoud 2}{ondertitel 2}
-%I .....
-%I \stopcombinatie
-%I
-%I Eventueel kan volstaan worden met [n]. Vier inhouden
-%I kunnen bijvoorbeeld worden gecombineerd als:
-%I
-%I [4*1] of [4] vier inhouden naast elkaar
-%I [1*4] vier inhouden onder elkaar
-%I [2*2] inhouden twee aan twee onder elkaar
-%P
-%I Dit commando is goed te combineren met \plaats-commando's:
-%I
-%I \plaatsfiguur[][]{}
-%I \startcombinatie[2]
-%I {\legefiguur}{a}
-%I {\legefiguur}{b}
-%I \stopcombinatie
-%I
-%I Rond \start-\stopcombineer hoeven geen {} te worden
-%I geplaatst.
-%I
-%I De afstanden tussen de inhouden en de titels kunnen worden
-%I ingesteld met:
-%I
-%I \stelcombinatiesin[voor=,na=,tussen=,afstand=,
-%I uitlijnen=,hoogte=,breedte=]
-%I
-%I Waarbij de afstand betrekking heeft op de horizontale
-%I afstand (een maat dus) en voor, na en tussen commando's
-%I zijn (bijvoorbeeld \blanko).
-
-%T n=combinaties
-%T m=com
-%T a=c
-%T
-%T \startcombinatie
-%T {?} {}
-%T {} {}
-%T \stopcombinatie
-
\newcount\horcombinatie % counter
\newcount\totcombinatie
@@ -396,24 +572,6 @@
\def\plaatsnaastelkaar%
{\plaatsondernaastelkaar\valign\vss}
-%I n=Files
-%I c=\definieerfile
-%I
-%I De onderstaande commando's zijn beschikbaar, maar nog in
-%I ontwikkeling.
-%I
-%I \gebruikexternefile [groep] [naam] [file] [instellingen]
-%I
-%I \gebruikexternefiles [groep] [korps=,file=]
-%I \stelexternefilesin [groep] [korps=,file=]
-%I
-%I \naam{naam} of \naam
-%I
-%I Standaard zijn gedefinieerd:
-%I
-%I \gebruikexternefiles[pictex][korps=klein,file=pictex]
-%I \gebruikexternefiles[table][file=table]
-
\def\dogebruikexternefiles[#1][#2]%
{\getparameters
[\??fi#1]
@@ -453,24 +611,6 @@
\def\gebruikexternefile%
{\doquadrupleargument\dogebruikexternefile}
-%I n=Roteren
-%I c=\roteer
-%I
-%I Er is een rotatiecommando beschikbaar:
-%I
-%I \roteer[rotatie=]{}
-%I
-%I Waarbij als rotatie 0, 90, 180 of 270 kan worden opgegeven.
-%I Als extra instellingen kunnen de instellingen van
-%I \omlijnd worden meegegeven. Er wordt gebruik gemaakt van
-%I het \special commando en het rotatiemechanisme van
-%I PostScript. Dit betekent dat in de previewer de tekst
-%I niet (!) geroteerd wordt. Overigens draagt TeX zorg voor
-%I de exacte plaatsing, uitlijnen enz. De afhankelijkheid
-%I van PostScript is dus tot een minimum beperkt.
-%I
-%I Verder zijn dezelfde instellingen mogelijk als bij
-%I \omlijnd.
\presetlocalframed[\??ro]
@@ -484,10 +624,11 @@
\vbox to #1\nextbox
{#2\relax
\hbox to #4\nextbox
- {#5\relax
+ {#5\relax % \number removes leading spaces too
+ \edef\@@rorotatie{\number\@@rorotatie}%
\doifelsenothing{\@@rorotatie}
{\dostartrotation{90}}
- {\dostartrotation{\@@rorotatie}}%
+ {\dostartrotation{\@@rorotatie}}%
\wd\nextbox=\!!zeropoint
\ht\nextbox=\!!zeropoint
\box\nextbox
@@ -496,6 +637,7 @@
#3}%
\egroup}
+
\def\dostoproteer%
{\!!counta=\@@rorotatie
\divide\!!counta by 90
@@ -535,28 +677,54 @@
% schaal
+\def\doscalelikeafigure%
+ {\doifsomething{\@@xyfactor\@@xyschaal\@@xyhfactor\@@xybreedte\@@xyhoogte}
+ {\let \@@efschaal \@@xyschaal
+ \let \@@effactor \@@xyfactor
+ \let \@@efbfactor\@@xybfactor
+ \let \@@efhfactor\@@xyhfactor
+ \let \@@efbreedte\@@xybreedte
+ \let \@@efhoogte \@@xyhoogte
+ \let \@@epx \!!zeropoint
+ \let \@@epy \!!zeropoint
+ \edef\@@epw {\the\wd\nextbox}%
+ \edef\@@eph {\the\ht\nextbox}%
+ \setfactorfiguresize
+ \setscalefiguresize
+ \setdimensionfiguresize
+ \convertfigureinsertscale\@@epx\figx\figxsca\scax
+ \convertfigureinsertscale\@@epy\figy\figysca\scay
+ \scratchdimen=\scax pt \divide\scratchdimen by 100
+ \edef\@@xysx{\withoutpt\the\scratchdimen}%
+ \scratchdimen=\scay pt \divide\scratchdimen by 100
+ \edef\@@xysy{\withoutpt\the\scratchdimen}}}
+
\def\doschaal[#1]%
{\bgroup
\forgetall
- \getparameters[\??xy][\c!sx=1,\c!sy=1,#1]%
+ \getparameters
+ [\??xy]
+ [\c!schaal=,\c!breedte=,\c!hoogte=,
+ \c!factor=,\c!hfactor=,\c!bfactor=,
+ \c!sx=1,\c!sy=1,#1]%
\dowithnextbox
{\dontshowcomposition
+ \doscalelikeafigure
\dimen0=\@@xysy\ht\nextbox
\dimen2=\@@xysy\dp\nextbox
\dimen4=\@@xysx\wd\nextbox
- \dimen6=\dimen0\advance\dimen6 by \dimen2
+ \dimen6=\dimen0\advance\dimen6 by \dimen2
\setbox\nextbox=\vbox to \dimen6
{\ht\nextbox=\!!zeropoint
\dp\nextbox=\!!zeropoint
\vfill % erbij
- \dostartscaling\@@xysx\@@xysy\box\nextbox\dostopscaling
- }% was \vfill}%
+ \dostartscaling\@@xysx\@@xysy\box\nextbox\dostopscaling}%
\ht\nextbox=\dimen0
\dp\nextbox=\dimen2
\wd\nextbox=\dimen4
\box\nextbox
\egroup}
- \hbox} % was \vbox}
+ \hbox}
\def\schaal%
{\dosingleempty\doschaal}
@@ -583,7 +751,8 @@
%
%\spiegel{\ruledhbox{\copy0 \schaal{\box0}}}
-% verdelen \hsize in fracties
+% verdelen \hsize in fracties, wordt nog wat algemener,
+% beetje vaag nu
%
% \fractie[n/m,elementen,afstand]
%
diff --git a/tex/context/base/meta-clp.tex b/tex/context/base/meta-clp.tex
new file mode 100644
index 000000000..8b841e876
--- /dev/null
+++ b/tex/context/base/meta-clp.tex
@@ -0,0 +1,164 @@
+%D \module
+%D [ file=meta-clp,
+%D version=2000.07.06,
+%D title=\METAPOST\ Graphics,
+%D subtitle=Clipping,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D In this library, we define a bunch of clipping paths that
+%D can be fed to \type {\clip}.
+
+\startMPclip{ellipse}
+ clip currentpicture to unitcircle
+ xscaled \width yscaled \height ;
+\stopMPclip
+
+\startMPclip{negellipse}
+ clip currentpicture to (unitcircle peepholed unitsquare)
+ xscaled \width yscaled \height ;
+\stopMPclip
+
+\startMPclip{urellipse}
+ clip currentpicture to urcircle scaled 2
+ xscaled \width yscaled \height ;
+\stopMPclip
+
+\startMPclip{ulellipse}
+ clip currentpicture to ulcircle scaled 2 shifted (1,0)
+ xscaled \width yscaled \height ;
+\stopMPclip
+
+\startMPclip{llellipse}
+ clip currentpicture to llcircle scaled 2 shifted (1,1)
+ xscaled \width yscaled \height ;
+\stopMPclip
+
+\startMPclip{lrellipse}
+ clip currentpicture to lrcircle scaled 2 shifted (0,1)
+ xscaled \width yscaled \height ;
+\stopMPclip
+
+\startMPclip{tellipse}
+ clip currentpicture to tcircle shifted (.5,0) yscaled 2
+ xscaled \width yscaled \height ;
+\stopMPclip
+
+\startMPclip{bellipse}
+ clip currentpicture to bcircle shifted (.5,.5) yscaled 2
+ xscaled \width yscaled \height ;
+\stopMPclip
+
+\startMPclip{lellipse}
+ clip currentpicture to lcircle shifted (.5,.5) xscaled 2
+ xscaled \width yscaled \height ;
+\stopMPclip
+
+\startMPclip{rellipse}
+ clip currentpicture to rcircle shifted (0,.5) xscaled 2
+ xscaled \width yscaled \height ;
+\stopMPclip
+
+\startMPclip{diamond}
+ clip currentpicture to unitdiamond
+ xscaled \width yscaled \height ;
+\stopMPclip
+
+\startMPclip{negdiamond}
+ clip currentpicture to (unitdiamond peepholed unitsquare)
+ xscaled \width yscaled \height ;
+\stopMPclip
+
+\startMPclip{urtriangle}
+ clip currentpicture to urtriangle scaled 2
+ xscaled \width yscaled \height ;
+\stopMPclip
+
+\startMPclip{ultriangle}
+ clip currentpicture to ultriangle scaled 2 shifted (1,0)
+ xscaled \width yscaled \height ;
+\stopMPclip
+
+\startMPclip{lltriangle}
+ clip currentpicture to lltriangle scaled 2 shifted (1,1)
+ xscaled \width yscaled \height ;
+\stopMPclip
+
+\startMPclip{lrtriangle}
+ clip currentpicture to lrtriangle scaled 2 shifted (0,1)
+ xscaled \width yscaled \height ;
+\stopMPclip
+
+% More efficient:
+%
+% \def\dosimpleMPclip#1
+% {clip currentpicture to (#1) xscaled \width yscaled \height ;}
+%
+% \def\simpleMPclip#1#2%
+% {\startMPclip{#1}\dosimpleMPclip{#2}\stopMPclip}
+%
+% \simpleMPclip {ellipse} {unitcircle}
+% \simpleMPclip {diamond} {unitdiamond}
+%
+% \simpleMPclip {negellipse} {unitcircle peepholed unitsquare}
+% \simpleMPclip {negdiamond} {unitdiamond peepholed unitsquare}
+%
+% \simpleMPclip {urellipse} {urcircle scaled 2 shifted (0,0)}
+% \simpleMPclip {ulellipse} {ulcircle scaled 2 shifted (1,0)}
+% \simpleMPclip {llellipse} {llcircle scaled 2 shifted (1,1)}
+% \simpleMPclip {lrellipse} {lrcircle scaled 2 shifted (0,1)}
+%
+% \simpleMPclip {tellipse} {tcircle shifted (.5,0) yscaled 2}
+% \simpleMPclip {bellipse} {bcircle shifted (.5,.5) yscaled 2}
+% \simpleMPclip {lellipse} {lcircle shifted (.5,.5) xscaled 2}
+% \simpleMPclip {rellipse} {rcircle shifted (0,.5) xscaled 2}
+%
+% \simpleMPclip {urtriangle} {urtriangle scaled 2 shifted (0,0)}
+% \simpleMPclip {ultriangle} {ultriangle scaled 2 shifted (1,0)}
+% \simpleMPclip {lltriangle} {lltriangle scaled 2 shifted (1,1)}
+% \simpleMPclip {lrtriangle} {lrtriangle scaled 2 shifted (0,1)}
+
+%D \in {Figure} [fig:clipping paths] shows which paths are
+%D predefined. When applied to a whole picture, their usage
+%D is:
+%D
+%D \starttypen
+%D \clip[nx=1,ny=1,mp=ellipse]{some clippable content}
+%D \stoptypen
+%D
+%D \startbuffer
+%D \setupclipping [nx=1,ny=1,x=1,y=1]
+%D \setupblackrules[width=2cm,height=1cm]
+%D \startcombinatie[6*3] % \startcombination[6*3]
+%D {\clip[mp=urellipse] {\blackrule}} {urellipse}
+%D {\clip[mp=ulellipse] {\blackrule}} {ulellipse}
+%D {\clip[mp=llellipse] {\blackrule}} {llellipse}
+%D {\clip[mp=lrellipse] {\blackrule}} {lrellipse}
+%D {\clip[mp=ellipse] {\blackrule}} {ellipse}
+%D {\clip[mp=negellipse]{\blackrule}} {negellipse}
+%D {\clip[mp=tellipse] {\blackrule}} {tellipse}
+%D {\clip[mp=bellipse] {\blackrule}} {bellipse}
+%D {\clip[mp=lellipse] {\blackrule}} {lellipse}
+%D {\clip[mp=rellipse] {\blackrule}} {rellipse}
+%D {} {}
+%D {} {}
+%D {\clip[mp=urtriangle]{\blackrule}} {urtriangle}
+%D {\clip[mp=ultriangle]{\blackrule}} {ultriangle}
+%D {\clip[mp=lltriangle]{\blackrule}} {lltriangle}
+%D {\clip[mp=lrtriangle]{\blackrule}} {lrtriangle}
+%D {\clip[mp=diamond] {\blackrule}} {diamond}
+%D {\clip[mp=negdiamond]{\blackrule}} {negdiamond}
+%D \stopcombinatie % \stopcombination
+%D \stopbuffer
+%D
+%D \plaatsfiguur % \placefigure
+%D [here][fig:clipping paths]
+%D {The predefined clipping paths.}
+%D {\haalbuffer} % {\getbuffer}
+
+\endinput
diff --git a/tex/context/base/meta-fig.tex b/tex/context/base/meta-fig.tex
new file mode 100644
index 000000000..c282f36c7
--- /dev/null
+++ b/tex/context/base/meta-fig.tex
@@ -0,0 +1,85 @@
+%D \module
+%D [ file=meta-fig,
+%D version=2000.09.07,
+%D title=\METAPOST\ Graphics,
+%D subtitle=Stand Alone Graphics,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{MetaPost Graphics / Stand Alone Graphics}
+
+\unprotect
+
+%D This module implements a method for defining
+%D stand||alone||graphics, that is, each graphic gets is own
+%D page. Because graphics are wrapped in a \type {\framed},
+%D you can add overlays to the graphic directly, and since the
+%D whole \CONTEXT\ machinery is available, you can also add
+%D page backgrounds.
+%D
+%D \starttypen
+%D \setupMPpage
+%D [offset=1pt,
+%D background=color,
+%D backgroundcolor=green]
+%D
+%D \startMPpage
+%D fill fullcircle scaled 10cm withcolor red ;
+%D \stopMPpage
+%D
+%D \startMPpage
+%D fill fullsquare rotated 45 scaled 8cm withcolor blue ;
+%D \stopMPpage
+%D \stoptypen
+%D
+%D Although this is hardly of any use, you can mix these
+%D definitions with the text flow, since all settings are
+%D kept local. The page is clipped to the image size.
+
+\presetlocalframed[\??mp]
+
+\def\setupMPpage%
+ {\dodoubleargument\getparameters[\??mp]}
+
+\def\startMPpage%
+ {\dosingleempty\dostartMPpage}
+
+\long\def\dostartMPpage[#1]#2\stopMPpage
+ {\page
+ \bgroup
+ \setbox\scratchbox=\hbox
+ {\localframed[\??mp][#1]{\startMPcode#2\stopMPcode}}
+ \edef\MPwd{\the\wd\scratchbox}
+ \edef\MPht{\the\ht\scratchbox}
+ \definepapersize
+ [\s!dummy]
+ [\c!breedte=\MPwd,
+ \c!hoogte=\MPht]
+ \startlocal % keep settings as local as can be
+ \setuppapersize
+ [\s!dummy][\s!dummy]
+ \setuplayout
+ [\c!breedte=\MPwd,\c!hoogte=\MPht,
+ \c!kopwit=\!!zeropoint,\c!rugwit=\!!zeropoint,
+ \c!snijwit=\!!zeropoint,\c!bodemwit=\!!zeropoint,
+ \c!hoofd=\!!zeropoint,\c!voet=\!!zeropoint]
+ \stoplocal % which saves us the trouble of push/pop
+ \startstandardmakeup
+ \centerbox{\box\scratchbox}
+ \stopstandardmakeup
+ \egroup}
+
+\setupMPpage
+ [\c!strut=\v!nee,
+ \c!uitlijnen=,
+ \c!offset=\v!overlay,
+ \c!breedte=\v!passend,
+ \c!hoogte=\v!passend,
+ \c!kader=\v!uit]
+
+\protect \endinput
diff --git a/tex/context/base/meta-ini.tex b/tex/context/base/meta-ini.tex
new file mode 100644
index 000000000..1554c175d
--- /dev/null
+++ b/tex/context/base/meta-ini.tex
@@ -0,0 +1,510 @@
+%D \module
+%D [ file=meta-ini,
+%D version=1999.07.10,
+%D title=\METAPOST\ Graphics,
+%D subtitle=Initialization,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{MetaPost Graphics / Initializations}
+
+\unprotect
+
+\startmessages dutch library: metapost
+ title: metapost
+ 1: metapost bibliotheek -- wordt geladen
+\stopmessages
+
+\startmessages english library: metapost
+ title: metapost
+ 1: loading metapost library --
+\stopmessages
+
+\startmessages german library: metapost
+ title: metapost
+ 1: loading metapost library --
+\stopmessages
+
+\startmessages czech library: metapost
+ title: metapost
+ 1: loading metapost library --
+\stopmessages
+
+\startmessages italian library: metapost
+ title: metapost
+ 1: caricamento della libreria metapost --
+\stopmessages
+
+\startmessages norwegian library: metapost
+ title: metapost
+ 1: metapost bibliotek -- blir lest inn
+\stopmessages
+
+%D This module extends the functionality of the support module
+%D \type {supp-mps}, the module that is responsible for
+%D \METAPOST\ inclusion in \CONTEXT. Some basic macros will be
+%D extended. Since some support is depends on \METAPOST\
+%D macros. so let's first preload a few auxiliary \METAPOST\
+%D files.
+
+\appendtoks
+ if unknown context_tool : input mp-tool ; fi ;
+ if unknown context_spec : input mp-spec ; fi ;
+\to \MPinitializations
+
+%D Since we want lables to follow the document settings, we
+%D also set the font related variables.
+
+\appendtoks
+ defaultfont := "\truefontname{Regular}" ;
+ defaultscale := \the\bodyfontsize/10pt ; % not good yet
+\to \MPinitializations
+
+%D We save the number of graphics for the sake of \TEXEXEC.
+
+\newcounter\totalnumberofMPgraphics
+\def\thecurrentMPgraphic{\the\currentMPgraphic}
+
+\appendtoks
+ \savecurrentvalue\totalnumberofMPgraphics\thecurrentMPgraphic
+\to \everybye
+
+%D \macros
+%D {setupMPvariables}
+%D
+%D When we build collections of \METAPOST\ graphics, like
+%D background and buttons, the need for passing settings
+%D arises. By (mis|)|using the local prefix that belongs to
+%D \type {\framed}, we get a rather natural interface to
+%D backgrounds. To prevent conflicts, we will use the \type
+%D {-} in \METAPOST\ specific variables, like:
+%D
+%D \starttypen
+%D \setupMPvariables[meta:button][size=20pt]
+%D \stoptypen
+
+\def\@@meta{meta:}
+
+\def\setupMPvariables%
+ {\dodoubleempty\dosetupMPvariables}
+
+\def\dosetupMPvariables[#1][#2]%
+ {\ifsecondargument
+ \getrawparameters[#1:][#2]%
+ \else
+ \getrawparameters[\@@meta][#1]%
+ \fi}
+
+\let\@@framed\s!unknown
+
+\def\MPvariable#1%
+ {\getvalue{\ifundefined{\@@framed\@@meta#1}\else\@@framed\fi\@@meta#1}}
+
+\let\MPvar\MPvariable
+
+%D \macros
+%D {startuniqueMPgraphic, uniqueMPgraphic}
+%D
+%D This macros is probably of most use to myself, since I like
+%D to use graphics that adapt themselves. The next \METAPOST\
+%D kind of graphic is both unique and reused when possible.
+%D
+%D \starttypen
+%D \defineoverlay[example][\uniqueMPgraphic{test}]
+%D
+%D \startuniqueMPgraphic {test}
+%D draw unitsquare xscaled \overlaywidth yscaled \overlayheight ;
+%D \stopuniqueMPgraphic
+%D \stoptypen
+
+%D For educational purposes, we show the original version
+%D first. This one used a rather simple method for determining
+%D the uniqueness.
+%D
+%D \starttypen
+%D \long\def\startuniqueMPgraphic#1#2\stopuniqueMPgraphic%
+%D {\setvalue{MP:#1}%
+%D {\startreusableMPgraphic{\overlaystamp:#1}#2\stopreusableMPgraphic
+%D \reuseMPgraphic{\overlaystamp:#1}}}
+%D
+%D \def\uniqueMPgraphic#1%
+%D {\getvalue{MP:#1}}
+%D \stoptypen
+
+\def\overlaystamp% watch the \MPcolor, since colors can be redefined
+ {\overlaywidth:\overlayheight:\overlaydepth
+ :\MPcolor{\overlaycolor}:\MPcolor{\overlaylinecolor}}
+
+%D A better approach is to let additional variables play a role
+%D in determining the uniqueness. In the next macro, the
+%D second, optional, argument is used to guarantee the
+%D uniqueness, as well as prepare variables for passing them to
+%D \METAPOST.
+%D
+%D \starttypen
+%D \startuniqueMPgraphic{meta:hash}{gap,angle,...}
+%D \stoptypen
+%D
+%D The calling macro also accepts a second argument. For
+%D convenient use in overlay definitions, we use \type {{}}
+%D instead of \type {[]}.
+%D
+%D \starttypen
+%D \uniqueMPgraphic{meta:hash}{gap=10pt,angle=30}
+%D \stoptypen
+
+\def\handleuniqueMPgraphic#1#2#3%
+ {\def\@@meta{#1:}%
+ \extendMPoverlaystamp{#2}% incl prepare
+ %\startreusableMPgraphic{\overlaystamp:#1}#3\stopreusableMPgraphic
+ %\getvalue{MP:\overlaystamp:#1}} % no \reuseMPgraphic, else wrong \@@meta
+ \ifundefined{MP:\overlaystamp:#1}%
+ \enableincludeMPgraphics
+ \startMPgraphic#3\stopMPgraphic
+ \doifobjectssupportedelse{}{\useMPboxfalse}%
+ \ifuseMPbox
+ \douseMPbox{MP:\overlaystamp:#1}%
+ \else
+ \nouseMPbox{MP:\overlaystamp:#1}%
+ \fi
+ \fi
+ \getvalue{MP:\overlaystamp:#1}}
+
+\long\def\startuniqueMPgraphic%
+ {\dodoublegroupempty\dostartuniqueMPgraphic}
+
+\long\def\dostartuniqueMPgraphic#1#2#3\stopuniqueMPgraphic%
+ {\setvalue{MP:#1}{\handleuniqueMPgraphic{#1}{#2}{#3}}}
+
+\unexpanded\def\uniqueMPgraphic%
+ {\dodoublegroupempty\douniqueMPgraphic}
+
+\def\douniqueMPgraphic#1#2%
+% {{\def\@@meta{#1:}\setupMPvariables[#2]\getvalue{MP:#1}{}}}
+ {{\setupMPvariables[#1][#2]\getvalue{MP:#1}{}}}
+
+\long\def\handleuseMPgraphic#1#2#3%
+ {\bgroup
+ \def\@@meta{#1:}%
+ \prepareMPvariables{#2}%
+ \enableincludeMPgraphics
+ \startMPgraphic#3\stopMPgraphic
+ \loadMPgraphic{\MPgraphicfile.\the\currentMPgraphic}{}%
+ \deallocateMPslot\currentMPgraphic
+ \placeMPgraphic
+ \egroup}
+
+\long\def\startuseMPgraphic%
+ {\dodoublegroupempty\dostartuseMPgraphic}
+
+\long\def\dostartuseMPgraphic#1#2#3\stopuseMPgraphic%
+ {\long\setgvalue{MP:#1}{\handleuseMPgraphic{#1}{#2}{#3}}}
+
+\long\def\handlereusableMPgraphic#1#2#3%
+ {\bgroup
+ \def\@@meta{#1:}%
+ \prepareMPvariables{#2}%
+ \enableincludeMPgraphics
+ \startMPgraphic#3\stopMPgraphic
+ \doifobjectssupportedelse{}{\useMPboxfalse}%
+ \ifuseMPbox
+ \douseMPbox{MP:#1}%
+ \else
+ \nouseMPbox{MP:#1}%
+ \fi
+ \getvalue{MP:#1}%
+ \egroup}
+
+\long\def\startreusableMPgraphic%
+ {\dodoublegroupempty\dostartreusableMPgraphic}
+
+\long\def\dostartreusableMPgraphic#1#2#3\stopreusableMPgraphic%
+ {\ifundefined{MP:#1}%
+ \long\setgvalue{MP:#1}{\handlereusableMPgraphic{#1}{#2}{#3}}%
+ \fi}
+
+\unexpanded\def\useMPgraphic%
+ {\dodoublegroupempty\douseMPgraphic}
+
+\def\douseMPgraphic#1#2%
+ {{\setupMPvariables[#1][#2]\getvalue{MP:#1}{}}}
+
+\let\reuseMPgraphic\useMPgraphic
+
+\def\enableincludeMPgraphics%
+ {\let\handleuseMPgraphic \thirdofthreearguments
+ \let\handlereusableMPgraphic\thirdofthreearguments}
+
+%D One way of defining a stamp is:
+%D
+%D \starttypen
+%D \def\extendMPoverlaystamp#1%
+%D {\def\docommando##1%
+%D {\edef\overlaystamp{\overlaystamp:\MPvariable{##1}}}%
+%D \processcommalist[#1]\docommando}
+%D \stoptypen
+
+%D Since we need to feed \METAPOST\ with expanded dimensions,
+%D we introduce a dedicated expansion engine.
+
+\def\prepareMPvariable#1%
+ {\ifundefined{\@@framed\@@meta#1}%
+ \doprepareMPvariable{\@@meta#1}%
+ \else
+ \doprepareMPvariable{\@@framed\@@meta#1}%
+ \fi}
+
+\def\doprepareMPvariable#1%
+ {\doifelsenothing{\getvalue{#1}}
+ {\setevalue{#1}{\MPcolor{black}}}
+ {\doifcolorelse{\getvalue{#1}}
+ {\setevalue{#1}{\MPcolor{\getvalue{#1}}}}
+ {\setbox\scratchbox=\hbox{\scratchdimen=\getvalue{#1}sp}%
+ \ifdim\wd\scratchbox=\!!zeropoint
+ \scratchcounter=\getvalue{#1}\relax
+ \setevalue{#1}{\the\scratchcounter}%
+ \else
+ \scratchdimen=\getvalue{#1}\relax
+ \setevalue{#1}{\the\scratchdimen}%
+ \fi}}}
+
+%D We redefine \type {\extendMPoverlaystamp} to preprocess
+%D variables using \type {\prepareMPvariable}.
+
+\def\extendMPoverlaystamp#1%
+ {\def\docommando##1%
+ {\prepareMPvariable{##1}%
+ \edef\overlaystamp{\overlaystamp:\MPvariable{##1}}}%
+ \processcommalist[#1]\docommando}
+
+\def\prepareMPvariables#1%
+ {\processcommalist[#1]\prepareMPvariable}
+
+%D \macros
+%D {MPdatafile}
+%D
+%D We redefine a macro from \type {supp-mps.tex}:
+
+\def\MPdatafile%
+ {\bufferprefix mpd-\the\currentMPgraphic.mpd}
+
+%D We also have to make sure that \METAPOST\ knows this:
+
+\appendtoks
+ if not known _data_prefix_ :
+ string _data_prefix_ , _data_suffix_ ;
+ fi ;
+ _data_prefix_ := "\bufferprefix mpd-" ;
+ _data_suffix_ := ".mpd" ;
+\to \MPinitializations
+
+%D \macros
+%D {getMPdata}
+%D
+%D The current data is loaded with:
+
+\def\getMPdata%
+ {\readlocfile{\MPdatafile}{}{}}
+
+%D When we collect graphics in one file, we run into
+%D troubles, since \METAPOST\ has a built in limit (of 4)
+%D on the number of files it can handle. It's therefore
+%D better to collect all data in one file and filter it.
+
+\def\getMPdata%
+ {\long\def\MPdata##1##2%
+ {\ifnum##1=\currentMPgraphic\relax##2\fi}%
+ \readlocfile{\MPgraphicfile.mpd}{}{}}
+
+%D We have to enable this mechanism with:
+
+\appendtoks
+ boolean collapse_data ; collapse_data := true ;
+ _data_suffix_ := ".mpd" ; % overloads previous one
+\to \MPinitializations
+
+%D For the moment, the next one is a private macro:
+
+\def\processMPbuffer%
+ {\dosingleempty\doprocessMPbuffer}
+
+\def\doprocessMPbuffer[#1]%
+ {\doifelsenothing{#1}
+ {\doprocessMPbuffer[\jobname]}
+ {\bgroup
+ \let\par\empty
+ \!!toksa=\emptytoks
+ \def\copyMPbufferline{\expandafter\appendtoks\fileline\to\!!toksa}%
+ \def\dodoprocessMPbuffer##1%
+ {\doprocessfile\scratchread{\TEXbufferfile{##1}}\copyMPbufferline}%
+ \processcommalist[#1]\dodoprocessMPbuffer
+ \ifMPrun
+ \@EA\startMPrun\the\!!toksa\stopMPrun
+ \else
+ \@EA\startuseMPgraphic\@EA{\@EA\s!dummy\@EA}\the\!!toksa\stopuseMPgraphic
+ \useMPgraphic{\s!dummy}%
+ \fi
+ \egroup}}
+
+%D \macros
+%D {startMPenvironment, resetMPenvironment}
+%D
+%D In order to synchronize the main \TEX\ run and the runs
+%D local to \METAPOST, environments can be passed.
+
+\ifx\everyMPTEXgraphic\undefined
+ \newtoks\everyMPTEXgraphic
+\fi
+
+\def\startMPenvironment% % second arg gobbles spaces, so
+ {\dodoubleempty\dostartMPenvironment} % that reset gives \emptytoks
+
+\long\def\dostartMPenvironment[#1][#2]#3\stopMPenvironment%
+ {\doif{#1}{\s!reset}{\resetMPenvironment}%
+ \appendtoks#3\to\everyMPTEXgraphic}
+
+\def\resetMPenvironment%
+ {\everyMPTEXgraphic=\emptytoks} % = is really needed !
+
+%D This command takes \type {[reset]} as optional
+%D argument.
+%D
+%D \starttypen
+%D \startMPenvironment
+%D \setupbodyfont[pos,14.4pt]
+%D \stopMPenvironment
+%D
+%D \startMPcode
+%D draw btex \sl Hans Hagen etex scaled 5 ;
+%D \stopMPcode
+%D \stoptypen
+%D
+%D The \type {\resetMPenvironment} is a quick way to erase
+%D the token list.
+
+%D We don't want spurious files, do we?
+
+\def\initializeMPgraphics% \unlinkfile{\MPgraphicfile.mp} -> empty file
+ {%\ifx\bufferprefix\empty \else
+ \immediate\openout\MPwrite\MPgraphicfile.mp
+ \immediate\write\MPwrite{end.}%
+ \immediate\closeout\MPwrite
+ }%\fi}
+
+%D Loading specific \METAPOST\ related definitions is
+%D accomplished by:
+
+\def\douseMPlibrary#1%
+ {\doifundefined{\c!file\f!javascriptprefix#1}
+ {\setvalue{\c!file\f!javascriptprefix#1}{}
+ \makeshortfilename[\f!metapostprefix#1]
+ \showmessage{\m!metapost}{1}{#1}
+ \startreadingfile
+ \readsysfile{\shortfilename}{}{}
+ \stopreadingfile}}
+
+\def\useMPlibrary[#1]%
+ {\processcommalist[#1]\douseMPlibrary}
+
+%D \macros
+%D {setMPtext, MPtext, MPstring, MPbetex}
+%D
+%D To be documented:
+%D
+%D \starttyping
+%D \setMPtext{identifier}{text}
+%D
+%D \MPtext {identifier}
+%D \MPstring{identifier}
+%D \MPbetex {identifier}
+%D \stoptyping
+
+\def\@@MPT{@MPT@}
+
+\def\forceMPTEXgraphic%
+ {\long\def\checkMPTEXgraphic##1{\global\MPTEXgraphictrue}}
+
+\def\setMPtext#1#2%
+ {%\forceMPTEXgraphic
+ \convertargument#2\to\ascii
+ \setevalue{\@@MPT#1}{\ascii}}
+
+\def\MPtext #1{\getvalue{\@@MPT#1}}
+\def\MPstring#1{"\getvalue{\@@MPT#1}"}
+\def\MPbetex #1{btex \getvalue{\@@MPT#1} etex}
+
+%D In order to communicate conveniently with the \TEX\
+%D engine, we introduce some typesetting variables.
+
+\startuseMPgraphic{init data}
+ color OverlayColor, OverlayLineColor ;
+ %
+ OverlayWidth := \overlaywidth ;
+ OverlayHeight := \overlayheight ;
+ OverlayDepth := \overlayheight ;
+ OverlayColor := \MPcolor{\overlaycolor} ;
+ OverlayLineWidth := \overlaylinewidth ;
+ OverlayLineColor := \MPcolor{\overlaylinecolor} ;
+ %
+ BaseLineSkip := \the\baselineskip ;
+ LineHeight := \the\baselineskip ;
+ BodyFontSize := \the\bodyfontsize ;
+ %
+ StrutHeight := \strutheight ;
+ StrutDepth := \strutdepth ;
+ %
+ CurrentWidth := \the\hsize ;
+ CurrentHeight := \the\vsize ;
+ %
+ EmWidth := \the\fontdimen6\font ;
+ ExHeight := \the\fontdimen5\font ;
+ %
+ PageNumber := \the\realpageno ;
+ RealPageNumber := \the\pageno ;
+ LastPageNumber := \lastpage ;
+\stopuseMPgraphic
+
+\appendtoks
+ \includeMPgraphic{init data}
+\to \MPinitializations
+
+% this will become (more efficient)
+%
+% \startuseMPgraphic{init data}
+% tx1 := \the\baselineskip ;
+% tx2 := \the\baselineskip ;
+% tx3 := \the\bodyfontsize ;
+% tx4 := \strutheight ;
+% tx5 := \strutdepth ;
+% tx6 := \the\hsize ;
+% tx7 := \the\vsize ;
+% tx8 := \the\fontdimen6\font ;
+% tx9 := \the\fontdimen5\font ;
+% \stopuseMPgraphic
+%
+% def map_tx_variables =
+% BaseLineSkip := tx1 ;
+% LineHeight := tx2 ;
+% BodyFontSize := tx3 ;
+% StrutHeight := tx4 ;
+% StrutDepth := tx5 ;
+% CurrentWidth := tx6 ;
+% Currentheight := tx7 ;
+% EmWidth := tx8 ;
+% ExHeight := tx9 ;
+% enddef ;
+%
+% extra_begin_fig ....
+
+\protect \endinput
+
+% also:
+%
+% linecap := rounded ;
+% linejoin := rounded ;
+% drawoptions () ;
diff --git a/tex/context/base/meta-pag.tex b/tex/context/base/meta-pag.tex
new file mode 100644
index 000000000..7252cf868
--- /dev/null
+++ b/tex/context/base/meta-pag.tex
@@ -0,0 +1,115 @@
+%D \module
+%D [ file=meta-ini,
+%D version=1999.07.10,
+%D title=\METAPOST\ Graphics,
+%D subtitle=Initialization,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D These definitions used to be part of the old \type
+%D {core-mps} file, later changed into \type {meta-ini}, but
+%D keeping them separate is cleaner.
+
+\writestatus{loading}{MetaPost Graphics / Page Data Management}
+
+\unprotect
+
+\appendtoks
+ if unknown context_page : input mp-page ; fi ;
+\to \MPinitializations
+
+%D The next few macros tell \METAPOST\ how the \CONTEXT\
+%D pagebody looks.
+
+\startuseMPgraphic{page data}
+ boolean PageStateAvailable ; PageStateAvailable := true ;
+ boolean OnRightPage ; OnRightPage := true ;
+ def LoadPageState =
+ OnRightPage := \MPonrightpage ;
+ PageNumber := \realfolio ;
+ PaperHeight := \the\papierhoogte ;
+ PaperWidth := \the\papierbreedte ;
+ PrintPaperHeight := \the\printpapierhoogte ;
+ PrintPaperWidth := \the\printpapierbreedte ;
+ TopSpace := \the\kopwit ;
+ BackSpace := \the\rugwit ;
+ MakeupHeight := \the\zethoogte ;
+ MakeupWidth := \the\zetbreedte ;
+ TopHeight := \the\bovenhoogte ;
+ TopDistance := \bovenafstand ;
+ HeaderHeight := \the\hoofdhoogte ;
+ HeaderDistance := \hoofdafstand ;
+ TextHeight := \the\teksthoogte ;
+ FooterDistance := \voetafstand ;
+ FooterHeight := \the\voethoogte ;
+ BottomDistance := \onderafstand ;
+ BottomHeight := \the\onderhoogte ;
+ LeftEdgeWidth := \the\linkerrandbreedte ;
+ LeftEdgeDistance := \linkerrandafstand ;
+ LeftMarginWidth := \the\linkermargebreedte ;
+ LeftMarginDistance := \linkermargeafstand ;
+ TextWidth := \the\tekstbreedte ;
+ RightMarginDistance := \rechtermargeafstand ;
+ RightMarginWidth := \the\rechtermargebreedte ;
+ RightEdgeDistance := \rechterrandafstand ;
+ RightEdgeWidth := \the\rechterrandbreedte ;
+ PageOffset := \MPpageoffset ;
+ PageDepth := \MPpagedepth ;
+ enddef ;
+\stopuseMPgraphic
+
+\def\MPonrightpage{true}
+\let\MPpageoffset \!!zeropoint
+\let\MPpagedepth \!!zeropoint
+
+\def\freezeMPpagelayout%
+ {\doifelsevalue{\??ma\v!pagina\c!offset}{\v!overlay}
+ {\let\MPpageoffset\!!zeropoint}
+ {\edef\MPpageoffset{\getvalue{\??ma\v!pagina\c!offset}}}%
+ \edef\MPpagedepth{\getvalue{\??ma\v!pagina\c!diepte}}%
+ \freezedimenmacro\MPpageoffset
+ \freezedimenmacro\MPpagedepth
+ \doifbothsides
+ \def\MPonrightpage{true}%
+ \orsideone
+ \def\MPonrightpage{true}%
+ \orsidetwo
+ \def\MPonrightpage{false}%
+ \od}
+
+\def\freezeMPlayout% must be done more efficient
+ {\freezedimenmacro\bovenafstand
+ \freezedimenmacro\hoofdafstand
+ \freezedimenmacro\voetafstand
+ \freezedimenmacro\onderafstand
+ \freezedimenmacro\linkerrandafstand
+ \freezedimenmacro\linkermargeafstand
+ \freezedimenmacro\rechtermargeafstand
+ \freezedimenmacro\rechterrandafstand}
+
+%D We need to freeze the pagelayout before the backgrounds
+%D are build, because the overlay will temporarily become
+%D zero (overlay).
+
+\appendtoks
+ \freezeMPpagelayout
+\to \everypagebody
+
+%D By freezing these value every graphic, we can use layout
+%D variables that change halfways a page, whatever use that
+%D has.
+
+\prependtoks
+ \freezeMPlayout % to be used grouped !!!
+\to \everyMPgraphic
+
+\appendtoks
+ \includeMPgraphic{page data}
+\to \MPinitializations
+
+\protect \endinput
diff --git a/tex/context/base/meta-txt.tex b/tex/context/base/meta-txt.tex
new file mode 100644
index 000000000..d39b20ef5
--- /dev/null
+++ b/tex/context/base/meta-txt.tex
@@ -0,0 +1,261 @@
+%D \module
+%D [ file=meta-txt,
+%D version=2000.07.06,
+%D title=\METAPOST\ Graphics,
+%D subtitle=Text Tricks,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D In this library some handy text manipulations are defined
+
+\unprotect
+
+\appendtoks
+ input mp-text ;
+\to \MPinitializations
+
+%%%%%%%
+
+% \def\newchar#1{\chardef#1=0 }
+
+\newdimen\parwidth
+\newdimen\parheight
+\newdimen\parvoffset
+\newdimen\parhoffset
+\newcount\parlines
+\newtoks \partoks
+\newbox \shapetextbox
+\newif \ifparseries
+\chardef \parfirst=0
+
+\def\startshapetext[#1]%
+ {\global\newcounter\currentshapetext
+ \global\setbox\shapetextbox=\vbox\bgroup
+ \expanded{\switchtobodyfont[\@@shkorps]}%
+ \dontcomplain
+ \hsize\parwidth
+ \setuptolerance[\v!zeersoepel,\v!rek]%
+ \!!counta=0
+ \!!toksa=\emptytoks
+ \def\docommando##1%
+ {\setbox\scratchbox=\hbox{\useMPgraphic{##1}}%
+ \global\chardef\parfirst=0
+ \getMPdata % \readlocfile{\MPdatafile}{}{}%
+ \setshapecharacteristics
+ \advance\!!counta by \parlines
+ \expandafter\appendtoks\the\partoks\to\!!toksa}%
+ \processcommalist[#1]\docommando
+ \global\parseriestrue
+ \xdef\totalparlines{\the\!!counta}%
+ \global\partoks\!!toksa
+ \expanded{\parshape \the\!!counta \the\!!toksa}%
+ \setshapecharacteristics % extra dummy
+ \ifparseries\def\par{\endgraf\adaptparshape}\fi
+ \EveryPar{\begstrut}}
+
+\def\stopshapetext%
+ {\endstrut
+ %\removebottomthings
+ \egroup
+ \global\newcounter\currentshapetext
+ \getshapecharacteristics}
+
+\def\adaptparshape%
+ {\def\docommando##1%
+ {\ifcase\!!counta
+ \expandafter\appendtoks\space##1 \to\!!toksa
+ \else
+ \advance\!!counta by -1
+ \fi}%
+ \!!counta=\prevgraf
+ \doglobal\decrement(\totalparlines,\!!counta)%
+ \multiply\!!counta by 2
+ \!!toksa=\emptytoks
+ \expanded{\processseparatedlist[\the\partoks][\space]}\docommando
+ \global\partoks=\!!toksa
+ \expanded{\parshape\totalparlines\the\partoks}}
+
+\def\getshapecharacteristics%
+ {\doglobal\increment\currentshapetext
+ \doifdefinedelse{parlines:\currentshapetext}
+ {\global\parlines =\getvalue{parlines:\currentshapetext}%
+ \global\chardef\parfirst =\getvalue{parfirst:\currentshapetext}%
+ \global\parvoffset =\getvalue{parvoffset:\currentshapetext}%
+ \global\parhoffset =\getvalue{parhoffset:\currentshapetext}%
+ \global\parwidth =\getvalue{parwidth:\currentshapetext}%
+ \global\parheight =\getvalue{parheight:\currentshapetext}}
+ {\global\parlines =1
+ \global\chardef\parfirst =0
+ \global\parvoffset =\!!zeropoint
+ \global\parhoffset =\!!zeropoint
+ \global\parwidth =\hsize
+ \global\parheight =\vsize}}
+
+\def\setshapecharacteristics%
+ {\doglobal\increment\currentshapetext
+ \setxvalue{parlines:\currentshapetext }{\the\parlines}%
+ \setxvalue{parfirst:\currentshapetext }{\the\parfirst}%
+ \setxvalue{parvoffset:\currentshapetext}{\the\parvoffset}%
+ \setxvalue{parhoffset:\currentshapetext}{\the\parhoffset}%
+ \setxvalue{parwidth:\currentshapetext }{\the\parwidth}%
+ \setxvalue{parheight:\currentshapetext }{\the\parheight}}
+
+\def\getshapetext% option: unvbox
+ {\vbox\bgroup
+ \forgetall
+ \setbox\scratchbox\vbox to \parheight
+ {\expanded{\switchtobodyfont[\@@shkorps]}% evt strutheight en
+ \splittopskip=\strutheight % lineheight opslaan
+ \vskip\parvoffset % scheelt switch en
+ \ifcase\parfirst\or\vskip\lineheight\fi % is ook veiliger
+ \hskip\parhoffset
+ \hbox{\vsplit\shapetextbox to \parlines\lineheight}}%
+ \wd\scratchbox=\parwidth
+ \ht\scratchbox=\parheight
+ \dp\scratchbox=\!!zeropoint
+ \box\scratchbox
+ \getshapecharacteristics
+ \egroup}
+
+\def\setupshapetexts%
+ {\dodoubleempty\getparameters[\??sh]}
+
+\setupshapetexts%
+ [\c!korps=]
+
+%%%%%%%
+
+\doifundefined{RotFont}{\definefont[RotFont][RegularBold]}
+
+\def\processfollowingtoken#1% strut toegevoegd
+ {\appendtoks#1\to\MPtoks
+ \setbox\MPbox=\hbox{\RotFont\setstrut\strut\the\MPtoks}%
+ \startMPdrawing
+ n := n + 1 ; len[n] := \the\wd\MPbox ;
+ \stopMPdrawing
+ \startMPdrawing[-]
+ pic[n] := btex \RotFont\setstrut\strut#1 etex ;
+ \stopMPdrawing}
+
+\startuseMPgraphic{followtokens}
+ % we default to nothing
+\stopuseMPgraphic
+
+\def\followtokens#1%
+ {\vbox\bgroup
+ \forgetall
+ \dontcomplain
+ \MPtoks\emptytoks
+ \resetMPdrawing
+ \startMPdrawing
+ \includeMPgraphic{followtokens}
+ picture pic[] ; numeric len[], n ; n := 0 ;
+ \stopMPdrawing
+ \handletokens#1\with\processfollowingtoken
+ \startMPdrawing
+ if unknown RotPath : path RotPath ; RotPath := origin ; fi ;
+ if unknown TraceRot : boolean TraceRot ; TraceRot := false ; fi ;
+ if unknown ExtraRot : numeric ExtraRot ; ExtraRot := 0 ; fi ;
+ numeric al, at, pl, wid, pos ; pair ap, ad ;
+ al := arclength RotPath ;
+ if al=0 :
+ al := len[n] + ExtraRot ;
+ RotPath := origin -- (al,0) ;
+ fi ;
+ if al<len[n]:
+ RotPath := RotPath scaled ((len[n]+ExtraRot)/al) ;
+ al := arclength RotPath ;
+ fi ;
+ pl := (al-len[n])/(n-1) ;
+ if TraceRot :
+ draw RotPath withpen pencircle scaled 1pt withcolor blue ;
+ fi ;
+ for i=1 upto n :
+ wid := abs(xpart lrcorner pic[i] - xpart llcorner pic[i]) ;
+ pos := len[i]-wid/2 + (i-1)*pl ;
+ at := arctime pos of RotPath ;
+ ap := point at of RotPath ;
+ ad := direction at of RotPath ;
+ draw pic[i] shifted (-wid/2,0) rotated(angle(ad)) shifted ap ;
+ if TraceRot :
+ draw boundingbox
+ pic[i] shifted (-wid/2,0) rotated(angle(ad)) shifted ap
+ withpen pencircle scaled .25pt withcolor red ;
+ draw ap
+ withpen pencircle scaled .50pt withcolor green ;
+ fi ;
+ endfor ;
+ \stopMPdrawing
+ \MPdrawingdonetrue
+ \getMPdrawing
+ \resetMPdrawing
+ \egroup}
+
+% \followtokens
+% {This is just a dummy text, kerned by T{\kern
+% -.1667em\lower .5ex\hbox {E}}{\kern -.125emX} and typeset
+% in a circle using {\setMFPfont M}{\setMFPfont
+% E}{\setMFPfont T}{\setMFPfont A}{\setMFPfont
+% P}{\setMFPfont O}{\setMFPfont S}{\setMFPfont T}.\quad}
+
+\startuseMPgraphic{fuzzycount}
+ begingroup
+ save height, span, drift, d, cp ;
+ height := 3/ 5 * \baselinedistance ;
+ span := 1/ 3 * height ;
+ drift := 1/10 * height ;
+ pickup pencircle scaled (1/12 * height) ;
+ def d = (uniformdeviate drift) enddef ;
+ for i := 1 upto \MPvar{n} :
+ draw
+ if (i mod 5)=0 : ((-d-4.5span,d)--(+d-0.5span,height-d))
+ else : ((-d,+d)--(+d,height-d)) fi
+ shifted (span*i,d-drift) ;
+ endfor;
+ picture cp ; cp := currentpicture ; % for readability
+ setbounds currentpicture to
+ (llcorner cp shifted (0,-ypart llcorner cp) --
+ lrcorner cp shifted (0,-ypart lrcorner cp) --
+ urcorner cp -- ulcorner cp -- cycle) ;
+ endgroup ;
+\stopuseMPgraphic
+
+\setupMPvariables
+ [fuzzycount]
+ [n=10]
+
+\def\fuzzycount#1%
+ {{\tx\useMPgraphic{fuzzycount}{n=#1}}}
+
+\defineconversion[fuzzy][\fuzzycount]
+
+%%%%%%%
+
+\setupMPvariables
+ [EnglishRule]
+ [height=1ex,
+ width=\the\localhsize, % without \the, problems in non e-tex
+ color=darkgray]
+
+\defineblank
+ [EnglishRule]
+ [medium]
+
+\startuniqueMPgraphic{EnglishRule}{height,width,color}
+ height = \MPvar{height} ;
+ x1 = 0 ; x3 = \MPvar{width} ; x2 = x4 = .5x3 ;
+ y1 = y3 = 0 ; y2 = -y4 = height/2 ;
+ fill z1..z2..z3 & z3..z4..z1 & cycle withcolor \MPvar{color} ;
+\stopuniqueMPgraphic
+
+\def\EnglishRule%
+ {\startlinecorrection[EnglishRule]
+ \setlocalhsize \noindent \reuseMPgraphic{EnglishRule}
+ \stoplinecorrection}
+
+\protect \endinput
diff --git a/tex/context/base/mult-com.tex b/tex/context/base/mult-com.tex
index 3df62fa62..748cab454 100644
--- a/tex/context/base/mult-com.tex
+++ b/tex/context/base/mult-com.tex
@@ -21,7 +21,8 @@
%D future english will be the core language.}
%D
%D The German translations were provided by Tobias Burnus,
-%D and the Czech ones by Tom Hudec.
+%D the Czech ones by Tom Hudec, and the italian interface was
+%D provided by Guiseppe Bilottta.
\writestatus{loading}{Context Multilingual Macros / Commands}
@@ -38,1283 +39,1666 @@
%D \startcompressdefinitions
-\startcommands dutch english
- german czech
-
- language: taal language
- sprache jazyk
- mainlanguage: hoofdtaal mainlanguage
- hauptsprache hlavnijazyk
- translate: vertaal translate
- uebersetzten prelozit
- installlanguage: installeertaal installlanguage
- installieresprache jazykinstalace
- setuplanguage: steltaalin setuplanguage
- stellespracheein nastavjazyk
-
- showmakeup: toonopmaak showmakeup
- zeigeumbruch ukazupravu
-
- useencoding: usecodering useencoding
- benutzekodierung uzijkodovani
-
- usespecials: gebruikspecials usespecials
- benutzespezielles uzijspeciality
- defineoutput: definieeruitvoer defineoutput
- defineoutput definujvystup
- setupoutput: steluitvoerin setupoutput
- stelleausgabeein nastavvystup
-
-% system redefineaccent: herdefinieeraccent redefineaccent
-% redefiniereakzent redefinujakcent
-% system redefinecharacter: herdefinieerkarakter redefinecharacter
-% redefinierezeichen redefinujznak
-% system redefinecommand: herdefinieercommando redefinecommand
-% redefinierbefehl redefinujprikaz
- defineaccent: definieeraccent defineaccent
- definiereakzent definujakcent
- definecharacter: definieerkarakter definecharacter
- definierezeichen definujznak
- definecommand: definieercommando definecommand
- definierebefehl definujprikaz
- startcoding: startcodering startcoding
- startkodierung startkodovani
- stopcoding: stopcodering stopcoding
- stopkodierung stopkodovani
- definebodyfontenvironment: definieerkorpsomgeving definebodyfontenvironment
- definierefliesstextumgebung definebodyfontenvironment % TOM, was duplicate
- setupbodyfontenvironment: stelkorpsomgevingin setupbodyfontenvironment
- stellefliesstextumgebungein nastavprostredizakladnihofont
- definebodyfont: definieerkorps definebodyfont
- definierefliesstext definujzakladnifont
- definefont: definieerfont definefont
- definiereschrift definujfont
- definefontsynonym: definieerfontsynoniem definefontsynonym
- defineschriftsynonym definujsynonumumfontu
- definestyle: definieerletter definestyle
- definierestil definujstyl
- definefontstyle: definieerfontstijl definefontstyle
- definiereschriftstil definujstylfontu
- setupstrut: stelstrutin setupstrut
- setupstrut setupstrut
-
- setuptype: steltypein setuptype
- stelletipein nastavtype
- type: type type
- tippen type
- typ: typ typ
- tip typ
- arg: arg arg
- arg arg
- tex: tex tex
- tex tex
- definetyping: definieertypen definetyping
- definieretippen definujopis
- setuptyping: steltypenin setuptyping
- stelletippenein nastavopis
-% generated starttyping: starttypen starttyping
-% starttippen startopis
-% generated stoptyping: stoptypen stoptyping
-% stoptippen stopopis
- typefile: typefile typefile
- tippedatei typesoubor
-
- setupfootnotes: stelvoetnotenin setupfootnotes
- stellefussnotenein nastavpoznamkypodcarou
- setupfootnotedefinition: stelvoetnootdefinitiein setupfootnotedefinition
- stellefussnotendefinitionein nastavdefinicipoznamekpodcarou
- note: noot note
- notiz poznamka
- footnote: voetnoot footnote
- fussnote poznamkapodcarou
- startlocalfootnotes: startlokalevoetnoten startlocalfootnotes
- startlokalefussnoten startlokalnipoznamkypodcarou
- stoplocalfootnotes: stoplokalevoetnoten stoplocalfootnotes
- stoplokalefussnoten stoplokalnipoznamkypodcarou
- placelocalfootnotes: plaatslokalevoetnoten placelocalfootnotes
- platzierelokalefussnoten umistilokalnipoznamkypodcarou
- placefootnotes: plaatsvoetnoten placefootnotes
- platzierefussnoten umistipoznamkypodcarou
-
- currentdate: huidigedatum currentdate
- heutigesdatum aktualnidatum
- date: datum date
- datum datum
- weekday: weekdag weekday
- wochentag vsedniden
- WEEKDAY: WEEKDAG WEEKDAY
- WOCHENTAG VSEDNIDEN
- month: maand month
- monat mesic
- MONTH: MAAND MONTH
- MONAT MESIC
-
- Numbers: Cijfers Numbers
- Ziffern Cisla
- numbers: cijfers numbers
- ziffern cisla
- romannumerals: romeins romannumerals
- roemischezahlen rimskecislice
- Romannumerals: Romeins Romannumerals
- Roemischezahlen Rimskecislice
- character: letter character
- buchstabe znak
- Character: Letter Character
- Buchstabe Znak
- characters: letters characters
- buchstaben znaky
- Characters: Letters Characters
- Buchstaben Znaky
-
- unknown: onbekend unknown
- unbekant neznamo
-
- definesymbol: definieersymbool definesymbol
- definieresymbol definujsymbol
- definefiguresymbol: definieerfiguursymbool definefiguresymbol
- definiereabbsymbol definujobrazeksymbol
- symbol: symbool symbol
- symbol symbol
- setupsymbolset: stelsymboolsetin setupsymbolset
- stellesymbolsetein nastavsadusymbolu
- showsymbolset: toonsymboolset showsymbolset
- showsymbolset ukazsadusymbolu
- startsymbolset: startsymboolset startsymbolset
- startsymbolset startsadasymbolu
- usesymbols: gebruiksymbolen usesymbols
- verwendesymbole uzijsymbol
-
- defineconversion: definieerconversie defineconversion
- definierekonversion definujkonverzi
- convertnumber: converteernummer convertnumber
- konvertierezahl konvertujcislo
-
- setupcapitals: stelkapitalenin setupcapitals
- stelleversalienein nastavverzalky
-
- kap: kap kap
- kap kap
- KAP: KAP CAP
- KAP KAP
- nokap: nokap nocap
- nokap nokap
- Kap: Kap Cap
- Kap Kap
- Kaps: Kaps Caps
- Kaps Kaps
- WORD: WOORD WORD
- WORT SLOVO
- WORDS: WOORDEN WORDS
- WOERTER SLOVA
- Word: Woord Word
- Wort Slovo
- Words: Woorden Words
- Woerter Slova
- stretched: uitgerekt stretched
- gestreckt roztazene
- overstrike: doorstreep overstrike
- durchgestrichen preskrtnuto
- overstrikes: doorstrepen overstrikes
- durchstreichen preskrtnuti
- overbar: overstreep overbar
- ueberstrichen nadtrzeno
- overbars: overstrepen overbars
- ueberstreichen nadtrzeni
- underbar: onderstreep underbar
- unterstrichen podtrzeno
- underbars: onderstrepen underbars
- unterstreichen podtrzeni
- setupunderbar: stelonderstrepenin setupunderbar
- stelleunterstreichenein nastavpodtrzeni
-
- setupbodyfont: stelkorpsin setupbodyfont
- stellefliesstextein nastavzakladnifont
- switchtobodyfont: switchnaarkorps switchtobodyfont
- wechselezumfliesstext prepninazakladnifont
- showbodyfont: toonkorps showbodyfont
- zeigefliesstext ukazzakladnifont
- showbodyfontenvironment: toonkorpsomgeving showbodyfontenvironment
- zeigefliesstextumgebung ukazpostredizakladnihofontu
-
- headtext: koptekst headtext
- ueberschrifttext texthlavicky
- labeltext: labeltekst labeltext
- labeltext textpopisku
- LABELTEXT: LABELTEKST LABELTEXT
- LABELTEXT TEXTPOPISKU
- setupheadtext: stelkoptekstin setupheadtext
- stelleueberschrifttextein nastavtexthlavicky
- setuplabeltext: stellabeltekstin setuplabeltext
- stellelabeltextein nastavtextpopisku
-
- marginrule: kantlijn marginrule
- marginallinie marginalnilinka
- startmarginrule: startkantlijn startmarginrule
- startmarginallinie startmarginalnilinka
- stopmarginrule: stopkantlijn stopmarginrule
- stopmarginallinie stopmarginalnilinka
- setupmarginrules: stelkantlijnin setupmarginrules
- stellemarginallinieein nastavmarginalnilinky
-
- blackrule: blokje blackrule
- rechteck cernalinka
- blackrules: blokjes blackrules
- rechtecke cernelinky
- setupblackrules: stelblokjesin setupblackrules
- stellerechteckein nastavcernelinky
-
- setupscreens: stelrastersin setupscreens
- stellerasterein nastavrastr
-
- framed: omlijnd framed
- umrahmt oramovani
- inframed: inlijnd inframed
- imumriss zaramovani
- mframed: wilijnd maframed
- maumrise maoramovani
- inmframed: inwilijnd inmaframed
- immaumrise mazaramovani
-
- setupframed: stelomlijndin setupframed
- stelleumrahmtein nastavoramovani
-% setuprules: stellijnenin setuprules
-% stelleumrissein nastavobrys
- setuplinewidth: stellijndiktein setuplinewidth
- stellelinienbreiteein nastavsirkucary
-
- setupthinrules: steldunnelijnenin setupthinrules
- stelleduennerumrissein nastavtenkelinky
- thinrule: dunnelijn thinrule
- duennelinie tenkalinka
- thinrules: dunnelijnen thinrules
- duennerumriss tenkelinky
- hairline: haarlijn hairline
- haarlinie vlasovalinka
-
- vl: vl vl
- vl vl
- hl: hl hl
- hl hl
-
- defineframed: definieeromlijnd defineframed
- definiereumrahmt definujoramovani
-
- defineframedtext: definieerkadertekst defineframedtext
- definiereumrahmtertext definujoramovanytext
-% startframedtext: startkadertekst startframedtext
-% startumrahmtertext startoramovanytext
-% stopframedtext: stopkadertekst stopframedtext
-% stopumrahmtertext stoporamovanytext
- setupframedtexts: stelkadertekstenin setupframedtexts
- stelleumrahmtetexteein nastavoramovanetexty
-
- defineoverlay: definieeroverlay defineoverlay
- definiereoverlay definujprekryv
- background: achtergrond background
- hintergrund pozadi
- startbackground: startachtergrond startbackground
- starthintergrund startpozadi
- stopbackground: stopachtergrond stopbackground
- stophintergrund stoppozadi
- setupbackground: stelachtergrondin setupbackground
- stellehintergrundein nastavpozadi
-
- fillinrules: invullijnen fillinrules
- gefuelltesrechteck vyplnovelinky % ve formulari
- setupfillinrules: stelinvullijnenin setupfillinrules
- stellegefuelltesrechteckein nastavvyplnovelinky
- fillintext: invultekst fillintext
- ausfuelltext vyplnenytext
-
- setupfillinlines: stelinvulregelsin setupfillinlines
- stellegefuelltezeileein nastavvyplnoveradky
- fillinline: invulregel fillinline
- gefuelltezeile vyplnovyradek
-
- setuptextrules: steltekstlijnenin setuptextrules
- stelletextumrissein nastavtextovelinky
- textrule: tekstlijn textrule
- textlinie textovalinka
- starttextrule: starttekstlijn starttextrule
- starttextlinie starttextovalinka
- stoptextrule: stoptekstlijn stoptextrule
- stoptextlinie stoptextovalinka
-
- usemodule: gebruikmodule usemodule
- verwendemodul uzijmodul
- usemodules: gebruikmodules usemodules
- verwendemodule uzijmoduly
-
- starttekst: starttekst starttext
- starttext starttext
- stoptekst: stoptekst stoptext
- stoptext stoptext
-
- margetitel: margetitel margintitle
- marginaltitel marginalninadpis
- margewoord: margewoord marginword
- marginalwort marginalnislovo
- margetekst: margetekst margintext
- marginaltext marginalnitext
-
- inlinker: inlinker inleft
- imlinken vlevo
- inmarge: inmarge inmargin
- inmarginalie naokraj
- inanderemarge: inanderemarge inothermargin
- inanderermarginale nadruhyokraj
- inrechter: inrechter inright
- imrechten vpravo
- startmargeblok: startmargeblok startmarginblock
- startmarginalblock startmarginalniblok
- stopmargeblok: stopmargeblok stopmarginblock
- stopmarginalblock stopmarginalniblok
- stelinmargein: stelinmargein setupinmargin
- stelleinmarginalieein nastavmarginalie
- stelmargeblokkenin: stelmargeblokkenin setupmarginblocks
- stellemarginalblockein nastavmarginalniblok
-
- inleftside: inlinkerrand inleftside
- imlinkenrand nalevo
- inleftmargin: inlinkermarge inleftmargin
- inlinkermarginale nalevyokraj
- inrightmargin: inrechtermarge inrightmargin
- inrechtermarginale napravyokraj
- inrightside: inrechterrand inrightside
- imrechtenrand napravo
-
- woordrechts: woordrechts wordright
- wortrechts slovovpravo
-
- definieerblanko: definieerblanko defineblank
- definiereblanko definujbilemisto
- blanko: blanko blank
- blanko bilemisto
- stelblankoin: stelblankoin setupblank
- stelleblankoein nastavbilemisto
- corrigeerwitruimte: corrigeerwitruimte correctwhitespace
- korrigierezwischenraum korekcebilehomista
- fixedspaces: vastespaties fixedspaces
- festesspatium tvrdemezery
- fixedspace: vastespatie fixedspace
- festesspatium tvrdamezera
- nospace: geenspatie nospace
- keinspatium zadnamezera
- space: spatie space
- spatium mezera
- geenwitruimte: geenwitruimte nowhitespace
- keinzwischenraum zadnebilemisto
- opelkaar: opelkaar packed
- kleinerdurchschuss zhustene
- startopelkaar: startopelkaar startpacked
- startkleinerdurchschuss startzhustene
- stopopelkaar: stopopelkaar stoppacked
- stopkleinerdurchschuss stopzhustene
- startvanelkaar: startvanelkaar startunpacked
- startgrosserdurchschuss startnezhustene
- stopvanelkaar: stopvanelkaar stopunpacked
- stopgrosserdurchschuss stopnezhustene
- startregelcorrectie: startregelcorrectie startlinecorrection
- startzeilenkorrektur startkorekceradku
- stopregelcorrectie: stopregelcorrectie stoplinecorrection
- stopzeilenkorrektur stopkorekceradku
- omlaag: omlaag godown
- nachunten jdidolu
- witruimte: witruimte whitespace
- zwischenraum bilemisto
-
- nietinspringen: nietinspringen noindenting
- nichteinziehen zadneodsazovani
- inspringen: inspringen indenting
- einziehen odsazovani
- stelinspringenin: stelinspringenin setupindenting
- stelleeinziehenein nastavodsazovani
-
- startuitlijnen: startuitlijnen startalignment
- startausrichtung startzarovnavani
- stopuitlijnen: stopuitlijnen stopalignment
- stopausrichtung stopzarovnavani
-
- startregels: startregels startlines
- startzeilen startradky
- stopregels: stopregels stoplines
- stopzeilen stopradky
- stelparagraafnummerenin: stelparagraafnummerenin setupparagraphnumbering
- stelleabsatznummerierungein nastavcislovaniodstavcu
- stelregelnummerenin: stelregelnummerenin setuplinenumbering
- stellezeilennumerierungein nastavcislovaniradku
- startregelnummeren: startregelnummeren startlinenumbering
- startzeilennumerierung startcislovaniradku
- stopregelnummeren: stopregelnummeren stoplinenumbering
- stopzeilennumerierung stopcislovaniradku
- startregel: startregel startline
- startzeile startradek
- stopregel: stopregel stopline
- stopzeile stopradek
- eenregel: eenregel someline
- einezeile nejakyradek
- inregel: inregel inline
- inzeile vradku
- crlf: crlf crlf
- crlf crlf
- stelregelsin: stelregelsin setuplines
- stellezeilenein nastavradky
-
- startsmaller: startsmaller startnarrower
- startenger startzuzeni
- stopsmaller: stopsmaller stopnarrower
- stopenger stopzuzeni
- stelsmallerin: stelsmallerin setupnarrower
- stelleengerein nastavzuzeni
-
- definetabulate: definieertabulatie definetabulate
- definieretabulator definujtabelaci
- setuptabulate: steltabulatiein setuptabulate
- stelletabulatorein nastavtabelaci
-
- starttabel: starttabel starttable
- starttabelle starttabulka
- stoptabel: stoptabel stoptable
- stoptabelle stoptabulka
- starttabellen: starttabellen starttables
- starttabellen starttabulky
- stoptabellen: stoptabellen stoptables
- stoptabellen stoptabulky
- steltabellenin: steltabellenin setuptables
- stelletabellenein nastavtabulky
- definetabletemplate: definieertabelvorm definetabletemplate
- definieretabellenvorlage definujsablonutabulky
-
- pagina: pagina page
- seite strana
- koppelpagina: koppelpagina couplepage
- doppelseite parovastrana
- soortpagina: soortpagina pagetype
- seitentyp typstrany
- verwerkpagina: verwerkpagina processpage
- bearbeiteseite zpracujstranu
- koppelpapier: koppelpapier couplepaper
- doppelseitigespapier dvoustrannypapir
- selecteerpapier: selecteerpapier selectpaper
- waehlepapieraus vyberpapir
- scherm: scherm screen
- bildschirm obrazovka
-
- definieersectie: definieersectie definesection
- definiereabschnitt definujsekci
- definieersectieblok: definieersectieblok definesectionblock
- definiereabschnittsblock definujbloksekce
- stelsectieblokin: stelsectieblokin setupsectionblock
- stelleabschnittsblockein nastavbloksekce
- stelsectiein: stelsectiein setupsection
- stelleabschnittein nastavsekci
-
- geenbovenenonderregels: geenbovenenonderregels notopandbottomlines
- keinzeilenobenundunten zadnehorniadolniradky
- geenhoofdenvoetregels: geenhoofdenvoetregels noheaderandfooterlines
- keinekopfundfusszeilen zadnezahlaviaupati
- stelbovenin: stelbovenin setuptop
- stellenobenein nastavhorejsek
- stelboventekstenin: stelboventekstenin setuptoptexts
- stelletextobenein nastavhornitexty
- stelhoofdin: stelhoofdin setupheader
- stellekopfzeileein nastavzahlavi
- stelhoofdtekstenin: stelhoofdtekstenin setupheadertexts
- stellekopfzeilentextein nastavtextyzahlavi
- stelnummeringin: stelnummeringin setuppagenumbering
- stelleseitennummeriernungein nastavcislovanistran
- stelonderin: stelonderin setupbottom
- stelleuntenein nastavspodek
- stelondertekstenin: stelondertekstenin setupbottomtexts
- stelletextuntenein nastavdolnitexty
- stelvoetin: stelvoetin setupfooter
- stellefusszeileein nastavupati
- stelvoettekstenin: stelvoettekstenin setupfootertexts
- stellefusszeilentextein nastavtextyupati
- stelpaginanummerin: stelpaginanummerin setuppagenumber
- stelleseitennummerein nastavcislostrany
- stelsubpaginanummerin: stelsubpaginanummerin setupsubpagenumber
- stelleunterseitennummerein nastavpodcislostrany
- steltekstin: steltekstin setuptext
- stelletextein nastavtext
- stelteksttekstenin: stelteksttekstenin setuptexttexts
- stelletexttexteein nastavtexttexty
- definieertekst: definieertekst definetext
- definieretext definujtext
-
- pagenumber: paginanummer pagenumber
- seitenummer cislostrany
-
- items: items items
- posten polozky
- stelitemsin: stelitemsin setupitems
- stellepostenein nastavpolozky
-
- regellinks: regellinks leftaligned
- linksbuendig zarovnanovlevo
- regelmidden: regelmidden midaligned
- zentriert zarovnanonastred
- regelrechts: regelrechts rightaligned
- rechtsbuendig zarovnanovpravo
-
- startkolommen: startkolommen startcolumns
- startspalten startsloupce
- stopkolommen: stopkolommen stopcolumns
- stopspalten stopsloupce
- stelkolommenin: stelkolommenin setupcolumns
- stellespaltenein nastavsloupce
- kolom: kolom column
- spalte sloupec
-
- kop: kop head
- kopf nadpis
- but: but but
- but spodek % bottom
- som: som item
- pos polozka
- nop: nop nop
- nop nop
- mar: mar mar
- mar okr % okraj
- sym: sym sym
- sym sym
- its: its its
- its pol % abbr. of polozka (item)
- ran: ran ran
- ran ran
- startopsomming: startopsomming startitemize
- startaufzaehlung startvycet
- stelopsommingenin: stelopsommingenin setupitemizations
- stelleaufzaehlungenein nastavvycty
- stelopsommingin: stelopsommingin setupitemize
- stelleaufzaehlungein nastavvycet
- stopopsomming: stopopsomming stopitemize
- stopaufzaehlung stopvycet
-
- definieerkop: definieerkop definehead
- definiereueberschrift definujnadpis
- stelkopin: stelkopin setuphead
- stelleueberschriftein nastavnadpis
- stelkoppenin: stelkoppenin setupheads
- stelleueberschriftenein nastavnadpisy
- stelkopnummerin: stelkopnummerin setupheadnumber
- stellekopfzahlein nastavcislonadpisu
- kopnummer: kopnummer headnumber
- kopfnummer cislonadpisu
- huidigekopnummer: huidigekopnummer currentheadnumber
- heutigeskopfnummer aktualnicislonadpisu
- bepaalkopnummer: bepaalkopnummer determineheadnumber
- bestimmekopfnummer stanovcislonadpisu
-
- resetmarkering: resetmarkering resetmarking
- ruecksetztenbeschriftung resetznaceni
- stelmarkeringin: stelmarkeringin setupmarking
- stellebeschriftungein nastavznaceni
- definieermarkering: definieermarkering definemarking
- definierebeschriftung definujznaceni
- geenmarkering: geenmarkering nomarking
- keinebeschriftung zadneznaceni
- marking: markeer marking
- beschriftung znaceni
- ontkoppelmarkering: ontkoppelmarkering decouplemarking
- entknuepfebeschriftung rozpojeneznaceni
- koppelmarkering: koppelmarkering couplemarking
- verknuepfebeschriftung propojeneznaceni
- haalmarkering: haalmarkering getmarking
- holebeschriftung ziskejznaceni
-
- stellayoutin: stellayoutin setuplayout
- stellelayoutein nastavvzhled
- paslayoutaan: paslayoutaan adaptlayout
- passelayoutan prizpusobvzhled
- steloffsetin: steloffsetin setupoffset
- stelleoffsetein nastavoffset
- plaatsopgrid: plaatsopgrid placeongrid
- amgitterausrichten umistinamrizku
- verplaatsopgrid: verplaatsopgrid moveongrid
- amgitterneuausrichten premistinamrizku
-
- tooninstellingen: tooninstellingen showsetups
- zeigeeinstellungen ukaznastaveni
- toonkader: toonkader showframe
- zeigerahmen ukazramecek
- toongrid: toongrid showgrid
- zeigegitter ukazmrizku
- toonopbouw: toonopbouw showbuildup
- zeigeaufbau ukazstrukturu
- toonlayout: toonlayout showlayout
- zeigelayout ukazvzhled
- toonprint: toonprint showprint
- zeigedruck ukazvytisk
- toonstruts: toonstruts showstruts
- zeigestruts ukazpodpery
-
- definieerpapierformaat: definieerpapierformaat definepapersize
- definierepapierformat definujvelikostpapiru
- stelpapierformaatin: stelpapierformaatin setuppapersize
- stellepapierformatein nastavvelikostpapiru
- stelarrangerenin: stelarrangerenin setuparranging
- stelleanordnenein nastavusporadani
-
- versie: versie version
- version verze
-
- stelachtergrondenin: stelachtergrondenin setupbackgrounds
- stellehintergruendeein nastavpozadi
-
- steluitlijnenin: steluitlijnenin setupalign
- stelleausrichtungein nastavzarovnani
- stelwitruimtein: stelwitruimtein setupwhitespace
- stellezwischenraumein nastavbilamista
-
- setupinteraction: stelinteractiein setupinteraction
- stelleinteraktionein nastavinterakci
- stelinteractiemenuin: stelinteractiemenuin setupinteractionmenu
- stelleinteraktionsmenueein nastavinterakcnimenu
- definieerinteractiemenu: definieerinteractiemenu defineinteractionmenu
- definiereinteraktionsmenue definujinterakcnimenu
-% startinteractiemenu: startinteractiemenu startinteractionmenu
-% startinteraktionsmenue startinterakcnimenu
- blokkeerinteractiemenu: blokkeerinteractiemenu disableinteractionmenu
- inaktiviereinteraktionsmenue zablokujinterakcnimenu
- interactiebuttons: interactiebuttons interactionbuttons
- interaktionsknopfe interakcnitlacitka
- interactiebalk: interactiebalk interactionbar
- interaktionsbalken interakcnilista
- stelinteractiebalkin: stelinteractiebalkin setupinteractionbar
- stelleinteraktionsbalkenein nastavinterakcnilistu
- stelinteractieschermin: stelinteractieschermin setupinteractionscreen
- stelleinteraktionsbildschirmein nastavinterakcniobrazovku
-
- placebookmarks: plaatsbookmarks placebookmarks
- platzierebookmarks umistizalozky
- bookmark: bookmark bookmark
- bookmark zalozka
-
- definieerbeeldmerk: definieerbeeldmerk definelogo
- definierelogo definujlogo
- plaatsbeeldmerken: plaatsbeeldmerken placelogos
- platzierelogo umistiloga
-
- definecolor: definieerkleur definecolor
- definierefarbe definujbarvu
- definecolorgroup: definieerkleurgroep definecolorgroup
- definierefarbengruppe definujskupinubarev
- definepalet: definieerpalet definepalet
- definierepalette definujpaletu
- graycolor: grijskleur graycolor
- graufarbe sedabarva
- color: kleur color
- farbe barva
- startcolor: startkleur startcolor
- startfarbe startbarva
- stopcolor: stopkleur stopcolor
- stopfarbe stopbarva
- setupcolors: stelkleurenin setupcolors
- stellefarbenein nastavbarvy
- setupcolor: stelkleurin setupcolor
- stellefarbeein nastavbarvu
- setuppalet: stelpaletin setuppalet
- stellepaletteein nastavpaletu
- showcolor: toonkleur showcolor
- zeigefarbe ukazbarvu
- showcolorgroup: toonkleurgroep showcolorgroup
- zeigefarbengruppe ukazskupinubarev
- showpalet: toonpalet showpalet
- zeigepalette ukazpaletu
- comparecolorgroup: vergelijkkleurgroep comparecolorgroup
- vergleichefarbengruppe porovnejskupinubarev
- comparepalet: vergelijkpalet comparepalet
- vergleichepalette porovnejpaletu
- colorvalue: kleurwaarde colorvalue
- farbewert hodnotabarvy
- greyvalue: grijswaarde greyvalue
- grauwert hodnotasedi
-
- startraster: startraster startraster
- startraster startrastr
- stopraster: stopraster stopraster
- stopraster stoprastr
-
- definieerblok: definieerblok defineblock
- definiereblock definujblok
- stelblokin: stelblokin setupblock
- stelleblockein nastavblok
- gebruikblokken: gebruikblokken useblocks
- verwendebloecke uzijbloky
- verwerkblokken: verwerkblokken processblocks
- bearbeitebloecke zpracujbloky
- handhaafblokken: handhaafblokken keepblocks
- behaltebloecke zachovejbloky
- selecteerblokken: selecteerblokken selectblocks
- waehlebloeckeaus vyberbloky
- verbergblokken: verbergblokken hideblocks
- verbergebloecke schovejbloky
- geenblokkenmeer: geenblokkenmeer nomoreblocks
- keinebloeckemehr zadnedalsibloky
-
- definieerlijst: definieerlijst definelist
- definiereliste definujseznam
- definieersamengesteldelijst: definieersamengesteldelijst definecombinedlist
- definierezusammengestellteliste definujkombinovanyseznam
- plaatslijst: plaatslijst placelist
- platziereliste umistiseznam
- plaatssamengesteldelijst: plaatssamengesteldelijst placecombinedlist
- platzierezusammengestellteliste umistikombinovanyseznam
- schrijfnaarlijst: schrijfnaarlijst writetolist
- schreibezurliste zapisdoseznamu
- schrijftussenlijst: schrijftussenlijst writebetweenlist
- schreibezwischenliste zapismeziseznam
- stellijstin: stellijstin setuplist
- stellelisteein nastavseznam
- stelsamengesteldelijstin: stelsamengesteldelijstin setupcombinedlist
- stellezusammengestelltelisteein nastavkombinovanyseznam
-
- bepaallijstkenmerken: bepaallijstkenmerken determinelistcharacteristics
- bestimmelistencharakeristika stanovcharakteristickuseznamu
- lijstlengte: lijstlengte listlength
- listenlaenge delkaseznamu
- lijstbreedte: lijstbreedte listwidth
- listenbreite sirkaseznamu
- lijsthoogte: lijsthoogte listheight
- listenhoehe vyskaseznamu
-
- geenlijst: geenlijst nolist
- keineliste zadnyseznam
-
-% zal vervallen
-
- definieerreferentielijst: definieerreferentielijst definereferencelist
- definierereferenzliste definujseznamodkazu
- plaatsreferentielijst: plaatsreferentielijst placereferencelist
- platzierereferenzliste umistiseznamodkazu
- schrijfnaarreferentielijst: schrijfnaarreferentielijst writetoreferencelist
- schreibezurreferenzliste zapisdoseznamuodkazu
- stelreferentielijstin: stelreferentielijstin setupreferencelist
- stellereferenzlisteein nastavseznamodkazu
-
- definieerplaatsblok: definieerplaatsblok definefloat
- definieregleitobjekt definujplvouciobjekt
- stelplaatsblokin: stelplaatsblokin setupfloat
- stellegleitobjektein nastavplvouciobjekt
- stelplaatsblokkenin: stelplaatsblokkenin setupfloats
- stellegleitobjekteein nastavplvouciobjekty
- splitsplaatsblok: splitsplaatsblok splitfloat
- teilegleitobjekt rozdelplvouciobjekt
- stelplaatsblokkensplitsenin: stelplaatsblokkensplitsenin setupfloatsplitting
- stelleplatziegeteiltegleitobjekteein nastavdeleniplvoucichobjektu
- startcombinatie: startcombinatie startcombination
- startkombination startspojeni
- stopcombinatie: stopcombinatie stopcombination
- stopkombination stopspojeni
- plaatsnaastelkaar: plaatsnaastelkaar placesidebyside
- platzierenebeneinander umistivedlesebe
- plaatsonderelkaar: plaatsonderelkaar placeontopofeachother
- platziereuntereinander umistinadsebe
-
- stelblokkopjein: stelblokkopjein setupcaption
- stellebildunterschriftein nastavpopisek
- stelblokkopjesin: stelblokkopjesin setupcaptions
- stellebilderunterschriftein nastavpopisky
- stelcombinatiesin: stelcombinatiesin setupcombinations
- stellekombinationein nastavspojeni
-
- startoverlay: startoverlay startoverlay
- startoverlay startprekryv
- stopoverlay: stopoverlay stopoverlay
- stopoverlay stopprekryv
-
- definieerregister: definieerregister defineregister
- definiereregister definujrejstrik
- koppelregister: koppelregister coupleregister
- verknuepfregister propojenyrejstrik
- stelregisterin: stelregisterin setupregister
- stelleregisterein nastavrejstrik
- schrijfnaarregister: schrijfnaarregister writetoregister
- schreibezumregister zapisdorejstriku
- plaatsregister: plaatsregister placeregister
- platziereregister umistirejstrik
-
- bepaalregisterkenmerken: bepaalregisterkenmerken determineregistercharacteristics
- bestimmeregistercharakteristika urcicharakteristikurejstriku
-
- definieersorteren: definieersorteren definesorting
- definieresortieren definujtrideni
- definieersynoniemen: definieersynoniemen definesynonyms
- definieresynonyme definujsynonyma
- stelsorterenin: stelsorterenin setupsorting
- stellesortierenein nastavtrideni
- stelsynoniemenin: stelsynoniemenin setupsynonyms
- stellesynonymein nastavsynonyma
-
- startsynchronisatie: startsynchronisatie startsynchronization
- startsynchronisation startsynchronizace
- stopsynchronisatie: stopsynchronisatie stopsynchronization
- stopsynchronisation stopsynchronizace
- stelsynchronisatiebalkin: stelsynchronisatiebalkin setupsynchronizationbar
- stellesynchronisationsbalkenein nastavsynchronizacnilistu
- stelsynchronisatiein: stelsynchronisatiein setupsynchronization
- stellesynchronisationein nastavsynchronizaci
- synchronisatiebalk: synchronisatiebalk synchronizationbar
- synchronisationsbalken synchronizacnilista
- synchroniseer: synchroniseer synchronize
- synchronisieren synchronizovat
-
- gebruikexterndocument: gebruikexterndocument useexternaldocument
- verwendeexteresdokument uzijexternidokument
- gebruikURL: gebruikURL useURL
- verwendeURL uzijURL
- gebruikurl: gebruikurl useurl
- verwendeurl uzijurl
- setupurl: stelurlin setupurl
- stelleurlein nastavurl
- coupledocument: koppeldocument coupledocument
- verknuepfedokument propojenydokument
-
- stelprogrammasin: stelprogrammasin setupprograms
- stelleprogrammein nastavprogramy
- definieerprogramma: definieerprogramma defineprogram
- definiereprogramme definujprogram
- programma: programma program
- programm program
-
- stelpaginaovergangenin: stelpaginaovergangenin setuppagetransitions
- stelleseitenuebergangein nastavprechodstrany
-
- definieerprofiel: definieerprofiel defineprofile
- definiereprofil definujprofil
- definieerversie: definieerversie defineversion
- definiereversion definujverzi
- markeerversie: markeerversie markversion
- beschrifteversion oznacverzi
- selecteerversie: selecteerversie selectversion
- waehleversionaus vyberverzi
- startprofiel: startprofiel startprofile
- startprofil startprofil
- startversie: startversie startversion
- startversion startverze
- stelprofielenin: stelprofielenin setupprofiles
- stelleprofilein nastavprofily
- stelversiesin: stelversiesin setupversions
- stelleversionein nastavverze
- stopprofiel: stopprofiel stopprofile
- stopprofil stopprofil
- stopversie: stopversie stopversion
- stopversion stopverze
- volgprofiel: volgprofiel followprofile
- folgeprofil dodrzujprofil
- volgprofielversie: volgprofielversie followprofileversion
- folgeprofilversion dodrzujverziprofilu
- volgversie: volgversie followversion
- folgeversion dodrzujverzi
-
- doordefinieren: doordefinieren definedescription
- definierebeschreibung definujpopis
- doorlabelen: doorlabelen definelabel
- definierelabel definujpopisek
- doornummeren: doornummeren defineenumeration
- definierenummerierung definujvycet
- doorspringen: doorspringen defineindenting
- definiereeinzug definujodsazovani
- steldoordefinierenin: steldoordefinierenin setupdescriptions
- definierebeschreibungen nastavpopisy
- steldoornummerenin: steldoornummerenin setupenumerations
- stellebeschreibungein nastavvycty
- steldoorspringenin: steldoorspringenin setupindentations
- stelleeinzuegein nastavodsazovani
-
- steltabin: steltabin setuptab
- stelletabein nastavtab
- tab: tab tab
- tab tab
-
- setupexternalfigures: stelexternefigurenin setupexternalfigures
- stelleexterneabbildungenein nastavexterniobrazy
- showexternalfigures: toonexternefiguren showexternalfigures
- zeigeexterneabbildungen ukazexterniobrazy
- externalfigure: externfiguur externalfigure
- externeabbildung externiobraz
-% showexternalfigure: toonexternfiguur showexternalfigure
-% zeigeexterneabbildung ukazexterniobrazy
- useexternalfigure: gebruikexternfiguur useexternalfigure
- verwendeexterneabbildung uzijexterniobraz
-
- startfigure: startfiguur startfigure
- startabbildung startobraz
-% stopfigure: stopfiguur stopfigure
-% stopabbildung stopobraz
- referring: refereer referring
- referieren odkazujici
-% marking: markeer marking
-% beschriftung oznacujici
- remark: toelichting remark
- bemerkung remark % other word than poznamka/note, a commenting note
- colorbar: kleurenbalk colorbar
- farbbalken barevnalista
-
- rooster: rooster grid
- gitter mrizka
-
- button: button button
- knopf tlacitko
- menubutton: menubutton menubutton
- menueknopf tlacitkomenu
- stelbuttonsin: stelbuttonsin setupbuttons
- stelleknopfein nastavtlacitka
-
- usereferences: gebruikreferenties usereferences
- verwendereferenzen uzijodkazy
- reflijst: reflijst reflist
- refliste seznamodkazu
- stelreferentielijstin: stelreferentielijstin setupreferencelist
- stellereferenzlisteein nastavseznamodkazu
- setupreferencing: stelrefererenin setupreferencing
- stellereferenzierenein nastavodkazovani
-
- textreference: tekstreferentie textreference
- textreferenz odkaznatext
- pagereference: paginareferentie pagereference
- seitenreferenz odkaznastranu
- reference: referentie reference
- referenz odkaz
- definereference: definieerreferentie definereference
- definierereferenz definujodkaz
- definereferenceformat: definieerreferentieformaat definereferenceformat
- definierereferenzformat definujformatodkazu
-
- useJSscripts: gebruikJSscripts useJSscripts
- verwendeJSscript uzijJSscripts
-
- uit: uit from
- von from % z
- in: in in
- in in % v
- op: op at
- bei at % v
- over: over about
- ueber about % o
- naar: naar goto
- zu jdina
- atpage: oppagina atpage
- aufseite nastrane
- somewhere: ergens somewhere
- irgendwo nekde
- ref: ref ref
- ref odk % short
- naarbox: naarbox gotobox
- zurbox jdinabox
- naarpagina: naarpagina gotopage
- zurseite jdinastranu
-
-% startformule: startformule startformula
-% startformel startrovnice
-% stopformule: stopformule stopformula
-% stopformel stoprovnice
- plaatsformule: plaatsformule placeformula
- platziereformel umistirovnici
- plaatssubformule: plaatssubformule placesubformula
- platziereunterformel umistipodrovnici
- stelformulesin: stelformulesin setupformulae
- stelleformelnein nastavrovnice
- formulenummer: formulenummer formulanumber
- formelnummer cislorovnice
-
- subformulenummer: subformulenummer subformulanumber
- unterformelnummer cislopodrovnice
-
-% startgegeven: startgegeven startfact
-% startgegeben startfakt
-% stopgegeven: stopgegeven stopfact
-% stopgegeben stopfakt
-% startlegenda: startlegenda startlegend
-% startlegende startlegenda
-% stoplegenda: stoplegenda stoplegend
-% stoplegende stoplegenda
- leg: leg leg
- leg leg
- geg: geg fact
- geg fakt
-
- mathematics: wiskunde mathematics
- mathematik matematika
- dimension: dimensie dimension
- dimension rozmer
- nodimension: geendimensie nodimension
- keindimension zadnyrozmer
-
- startomgeving: startomgeving startenvironment
- startumgebung startprostredi
- stopomgeving: stopomgeving stopenvironment
- stopumgebung stopprostredi
- startdeelomgeving: startdeelomgeving startlocalenvironment
- startlokaleumgebung startlokalnihoprostredi
- startonderdeel: startonderdeel startcomponent
- startkomponente startkomponenta
- stoponderdeel: stoponderdeel stopcomponent
- stopkomponente stopkomponenta
- startprodukt: startprodukt startproduct
- startprodukt startprodukt
- stopprodukt: stopprodukt stopproduct
- stopprodukt stopprodukt
- startproject: startproject startproject
- startprojekt startprojekt
- stopproject: stopproject stopproject
- stopprojekt stopprojekt
-
- setups: instellingen setups
- einstellungen nastaveni
-
- project: project project
- projekt projekt
- onderdeel: onderdeel component
- komponente komponenta
- produkt: produkt product
- produkt produkt
- omgeving: omgeving environment
- umgebung prostredi
- geenfilesmeer: geenfilesmeer nomorefiles
- keinedateienmehr zadnedalsisoubory
-
- haalbuffer: haalbuffer getbuffer
- holepuffer ziskejbuffer
-% startbuffer: startbuffer startbuffer
-% startbuffer startbuffer
-% stopbuffer: stopbuffer stopbuffer
-% stopbuffer stopbuffer
- stelbufferin: stelbufferin setupbuffer
- stellepufferein nastavbuffer
- typebuffer: typebuffer typebuffer
- tippepuffer typebuffer
- definieerbuffer: definieerbuffer definebuffer
- definierepuffer definujbuffer
-
- betekenis: betekenis unitmeaning
- bedeutung vyznam
- voluit: voluit infull
- volleswort plnezneni
-
- citaat: citaat quotation
- zitat citace
- citeer: citeer quote
- zitieren citovat
- startcitaat: startcitaat startquotation
- startzitat startcitace
- stopcitaat: stopcitaat stopquotation
- stopzitat stopcitace
- stelciterenin: stelciterenin setupquote
- stellezitierenein nastavcitaci
-
- definieer: definieer define
- definieren definuj
- herhaal: herhaal redo
- wiederholen opakovat
- gebruikcommandos: gebruikcommandos usecommands
- verwendebefehl uzijprikazy
- definieerstartstop: definieerstartstop definestartstop
- definierestartstop definujstartstop
- startlocal: startlokaal startlocal
- startlokal startlokalni
- stoplocal: stoplokaal stoplocal
- stoplokal stoplokalni
- startglobal: startglobaal startglobal
- startglobal startglobalni
- stopglobal: stopglobaal stopglobal
- stopglobal stopglobalni
- naam: naam name
- name jmeno
-
- definieeropmaak: definieeropmaak definemakeup
- definiereumbruch definujupravu
- stelopmaakin: stelopmaakin setupmakeup
- stelleumbruchein nastavupravu
- startopmaak: startopmaak startmakeup
- startumbruch startuprava
- stopopmaak: stopopmaak stopmakeup
- stopumbruch stopuprava
-
- useexternalsoundtrack: gebruikexterngeluidsfragment useexternalsoundtrack
- verwendeexternestonstueck uzijexternizvuk
-
- gebruikexternefile: gebruikexternefile useexternalfile
- verwendeexternedatei uzijexternisoubor
- gebruikexternefiles: gebruikexternefiles useexternalfiles
- verwendeexternedateien uzijexternisoubory
-
- kenmerk: kenmerk referral
- verweis odkaz
- kenmerkdatum: kenmerkdatum referraldate
- verweisdatum odkaznadatum
-
- high: hoog high
- hoch vysoky
- lohi: laho lohi
- hoti nivy
- low: laag low
- tief nizky
-
-% startuitstellen: startuitstellen startpostponing
-% startverschieben startodsunuti
-% stopuitstellen: stopuitstellen stoppostponing
-% stopverschieben stopodsunuti
-% startverbergen: startverbergen starthiding
-% startverbergen startukryti
-% stopverbergen: stopverbergen stophiding
-% stopverbergen stopukryti
-
- breuk: breuk fraction
- bruch zlomek
- chem: chem chem
- chem chem
-
- startnaast: startnaast startopposite
- startgegenueber startprotejsek
-
- stopnaast: stopnaast stopopposite
- stopgegenueber stopprotejsek
- stelnaastplaatsenin: stelnaastplaatsenin setupoppositeplacing
- stellegegenueberplatzierenein nastavumisteniprotejsku
-
- startpositioneren: startpositioneren startpositioning
- startpositionieren startumistovani
- stoppositioneren: stoppositioneren stoppositioning
- stoppositionieren stopumistovani
- positioneer: positioneer position
- position pozice
- stelpositionerenin: stelpositionerenin setuppositioning
- stellepositionierenein nastavumistovani
-
- roteer: roteer rotate
- drehen otocit
- stelroterenin: stelroterenin setuprotate
- stelledrehenein nastavotoceni
-
- spiegel: spiegel mirror
- spiegeln zrcadlit
- schaal: schaal scale
- format meritko
-
- stelnummerenin: stelnummerenin setupnumbering
- stellenummerierungein nastavcislovani
- reset: reset reset
- ruecksetzten reset
-
- stelpublicatiesin: stelpublicatiesin setuppublications
- stellepublikationein nastavpublikace
- publicatie: publicatie publication
- publikation publikace
-
- definieerhbox: definieerhbox definehbox
- definierehbox definujhbox
-
- toevoegen: toevoegen adding
- zusatz scitani
-
- punten: punten periods
- punkt tecky
-
- stelkoppeltekenin: stelkoppeltekenin setuphyphenmark
- stellebindestrichein nastavdelitko
- stelinterliniein: stelinterliniein setupinterlinespace
- stellezeilenabstandein nastavmeziradkovoumezeru
- stelspatieringin: stelspatieringin setupspacing
- stellespatiumein nastavradkovani
- steltolerantiein: steltolerantiein setuptolerance
- stelletoleranzein nastavtoleranci
-
- setupsystem: stelsysteemin setupsystem
- stellesystemein nastavsystem
- usepath: gebruikgebied usedirectory
- benutzeverzeichnis uzijcestu % TOBIAS
-
- definieeralineas: definieeralineas defineparagraphs
- definiereabsaetze definujodstavce
- stelalineasin: stelalineasin setupparagraphs
- stelleabsaetzeein nastavodstavce
-
- geentest: geentest donttest
- keintest zadnytest
-
- stelcommentaarin: stelcommentaarin setupcomment
- stellekommentarein nastavkomentar
- commentaar: commentaar comment
- kommentar komentar
-
- definefield: definieerveld definefield
- definierefeld definujpole
- definemainfield: definieerhoofdveld definemainfield
- definierehauptfeld definujhlavnipole
- definesubfield: definieersubveld definesubfield
- definieresubfeld definujpodpole
- clonefield: kloonveld clonefield
- klonierefeld klonujpole
- copyfield: copieerveld copyfield
- kopierefeld kopirujpole
- setupfield: stelveldin setupfield
- stellefeldein nastavpole
- setupfields: stelveldenin setupfields
- stellefelderin nastavvsechnapole
- field: veld field
- feld pole
- fitfield: passendveld fitfield
- passendfeld prizpusobivepole % or vhodnepole ?
- logfields: registreervelden logfields
- registrierefelder zaznamovepole
- showfields: toonvelden showfields
- zeigefelder ukazpole
- tooltip: suggestie tooltip
- tooltip bublinkovanapoveda
- fillinfield: invulveld fillinfield
- ausfuellfeld vyplnovepole
- definefieldstack: definieerveldstapel definefieldstack
- definierefeldstapel definujzasobnikpoli
- fieldstack: veldstapel fieldstack
- feldstapel zasobnikpoli
-
- setupclipping: stelclipin setupclipping
- stelleausschnittein nastavorez
- clip: clip clip
- ausschnitt orez
-
- placelegend: plaatslegenda placelegend
- platzierelegende umistilegendu
- setuplegend: stellegendain setuplegend
- stellelegendeein nastavlegendu
-
- setuppagecomment: stelpaginacommentaarin setuppagecomment
- stelleseitenkommentarein nastavkomentarstrany
-
- setupstrut: stelstrutin setupstrut
- setupstrut setupstrut
-
- definerule: definieerlijn definerule
- definerule definerule
- placerule: plaatslijn placerule
- placerule placerule
- setuprule: stellijnin setuprule
- setuprule setuprule
-
- definetextvariable: definieertekstvariabele definetextvariable
- definetextvariable definetextvariable
- setuptextvariable: steltekstvariabelein setuptextvariable
- setuptextvariable setuptextvariable
- settextvariable: kentekstvariabeletoe settextvariable
- settextvariable settextvariable
- placetextvariable: plaatstekstvariabele placetextvariable
- placetextvariable placetextvariable
- textvariable: tekstvariabele textvariable
- textvariable textvariable
-
- definetextposition: definieertekstpositie definetextposition
- definetextposition definetextposition
- setuptextposition: steltekstpositiein setuptextposition
- setuptextposition setuptextposition
- positiontext: positioneertekst positiontext
- positiontext positiontext
- definerawfont: definerawfont definerawfont
- definerawfont definerawfont
- switchtorawfont: switchtorawfont switchtorawfont
- switchtorawfont switchtorawfont
-
+\startcommands dutch english
+ german czech
+ italian
+
+ language: taal language
+ sprache jazyk
+ lingua
+ mainlanguage: hoofdtaal mainlanguage
+ hauptsprache hlavnijazyk
+ linguaprincipale
+ translate: vertaal translate
+ uebersetzten prelozit
+ traduci
+ installlanguage: installeertaal installlanguage
+ installieresprache instalacejazyka
+ linguainstallazione
+ setuplanguage: steltaalin setuplanguage
+ stellespracheein nastavjazyk
+ impostalingua % GB
+ showmakeup: toonopmaak showmakeup
+ zeigeumbruch ukazupravu
+ mostramakeup % GB
+ useencoding: usecodering useencoding
+ benutzekodierung uzijkodovani
+ usacodifica
+ usespecials: gebruikspecials usespecials
+ benutzespezielles uzijspeciality
+ usaspecialita % GB
+ defineoutput: definieeruitvoer defineoutput
+ defineoutput definujvystup
+ definiscioutput % GB
+ setupoutput: steluitvoerin setupoutput
+ stelleausgabeein nastavvystup
+ impostaoutput % GB
+ defineaccent: definieeraccent defineaccent
+ definiereakzent definujakcent
+ definisciaccento
+ definecharacter: definieerkarakter definecharacter
+ definierezeichen definujznak
+ definiscicarattere
+ definecommand: definieercommando definecommand
+ definierebefehl definujprikaz
+ definiscicomando
+ startcoding: startcodering startcoding
+ startkodierung startkodovani
+ iniziacodifica
+ stopcoding: stopcodering stopcoding
+ stopkodierung stopkodovani
+ terminacodifica
+ definebodyfontenvironment: definieerkorpsomgeving definebodyfontenvironment
+ definierefliesstextumgebung definujprostredizakladnihofontu
+ definisciambientefontdelcorpo
+ setupbodyfontenvironment: stelkorpsomgevingin setupbodyfontenvironment
+ stellefliesstextumgebungein nastavprostredizakladnihofontu
+ impostaambientefontdelcorpo
+ definebodyfont: definieerkorps definebodyfont
+ definierefliesstext definujzakladnifont
+ definiscifontdelcorpo
+ definefont: definieerfont definefont
+ definiereschrift definujfont
+ definiscifont
+ definefontsynonym: definieerfontsynoniem definefontsynonym
+ defineschriftsynonym definujsynonumumfontu
+ definiscisinonimofont
+ definestyle: definieerletter definestyle
+ definierestil definujstyl
+ definiscistile
+ definefontstyle: definieerfontstijl definefontstyle
+ definiereschriftstil definujstylfontu
+ definiscistilefont
+ setupstrut: stelstrutin setupstrut
+ setupstrut setupstrut
+ impostastrut
+ setuptype: steltypein setuptype
+ stelletipein nastavtype
+ impostatype
+ type: type type
+ tippen opis
+ type
+ typ: typ typ
+ tip pis
+ typ
+ arg: arg arg
+ arg arg
+ arg
+ tex: tex tex
+ tex tex
+ tex
+ definetyping: definieertypen definetyping
+ definieretippen definujopis
+ definiscityping %GB
+ setuptyping: steltypenin setuptyping
+ stelletippenein nastavopis
+ impostatyping %GB
+ typefile: typefile typefile
+ tippedatei opissoubor
+ typefile %GB
+ setupfootnotes: stelvoetnotenin setupfootnotes
+ stellefussnotenein nastavpoznamkypodcarou
+ impostanotepdp
+ setupfootnotedefinition: stelvoetnootdefinitiein setupfootnotedefinition
+ stellefussnotendefinitionein nastavdefinicipoznamekpodcarou
+ impostadefinizionenotepdp
+ note: noot note
+ notiz poznamka
+ nota
+ footnote: voetnoot footnote
+ fussnote poznamkapodcarou
+ notapdp
+ startlocalfootnotes: startlokalevoetnoten startlocalfootnotes
+ startlokalefussnoten startlokalnipoznamkypodcarou
+ inizianotepdplocali
+ stoplocalfootnotes: stoplokalevoetnoten stoplocalfootnotes
+ stoplokalefussnoten stoplokalnipoznamkypodcarou
+ terminanotepdplocali
+ placelocalfootnotes: plaatslokalevoetnoten placelocalfootnotes
+ platzierelokalefussnoten umistilokalnipoznamkypodcarou
+ mettinotepdplocali
+ placefootnotes: plaatsvoetnoten placefootnotes
+ platzierefussnoten umistipoznamkypodcarou
+ mettinotepdp
+ currentdate: huidigedatum currentdate
+ heutigesdatum aktualnidatum
+ datadioggi
+ date: datum date
+ datum datum
+ data
+ weekday: weekdag weekday
+ wochentag vsedniden
+ giornosettimana
+ WEEKDAY: WEEKDAG WEEKDAY
+ WOCHENTAG VSEDNIDEN
+ GIORNOSETTIMANA
+ month: maand month
+ monat mesic
+ mese
+ MONTH: MAAND MONTH
+ MONAT MESIC
+ MESE
+ Numbers: Cijfers Numbers
+ Ziffern Cisla
+ Numeri
+ numbers: cijfers numbers
+ ziffern cisla
+ numeri
+ romannumerals: romeins romannumerals
+ roemischezahlen rimskecislice
+ numeriromani
+ Romannumerals: Romeins Romannumerals
+ Roemischezahlen Rimskecislice
+ Numeriromani
+ character: letter character
+ buchstabe znak
+ carattere
+ Character: Letter Character
+ Buchstabe Znak
+ Carattere
+ characters: letters characters
+ buchstaben znaky
+ caratteri
+ Characters: Letters Characters
+ Buchstaben Znaky
+ Caratteri
+ unknown: onbekend unknown
+ unbekant neznamo
+ ignoto
+ definesymbol: definieersymbool definesymbol
+ definieresymbol definujsymbol
+ definiscisimbolo
+ definefiguresymbol: definieerfiguursymbool definefiguresymbol
+ definiereabbsymbol definujobrazeksymbol
+ definiscifigurasimbolo
+ symbol: symbool symbol
+ symbol symbol
+ simbolo
+ setupsymbolset: stelsymboolsetin setupsymbolset
+ stellesymbolsetein nastavsadusymbolu
+ impostasetsimboli
+ showsymbolset: toonsymboolset showsymbolset
+ showsymbolset ukazsadusymbolu
+ mostrasetsimboli % TB
+ startsymbolset: startsymboolset startsymbolset
+ startsymbolset startsadasymbolu
+ iniziasetsimboli % TB
+ usesymbols: gebruiksymbolen usesymbols
+ verwendesymbole uzijsymbol
+ usasimboli
+ defineconversion: definieerconversie defineconversion
+ definierekonversion definujkonverzi
+ definisciconversione
+ convertnumber: converteernummer convertnumber
+ konvertierezahl konvertujcislo
+ convertinumero
+ setupcapitals: stelkapitalenin setupcapitals
+ stelleversalienein nastavkapitalky
+ impostamaiuscole
+ kap: kap kap
+ kap kap
+ kap
+ KAP: KAP CAP
+ KAP KAP
+ CAP
+ nokap: nokap nocap
+ nokap nokap
+ nocap
+ Kap: Kap Cap
+ Kap Kap
+ Cap
+ Kaps: Kaps Caps
+ Kaps Kaps
+ Caps
+ WORD: WOORD WORD
+ WORT SLOVO
+ PAROLA
+ WORDS: WOORDEN WORDS
+ WOERTER SLOVA
+ PAROLE
+ Word: Woord Word
+ Wort Slovo
+ Parola
+ Words: Woorden Words
+ Woerter Slova
+ Parole
+ stretched: uitgerekt stretched
+ gestreckt roztazene
+ stirato
+ overstrike: doorstreep overstrike
+ durchgestrichen preskrtnuto
+ sbarrato
+ overstrikes: doorstrepen overstrikes
+ durchstreichen preskrtnuti
+ sbarrati
+ overbar: overstreep overbar
+ ueberstrichen nadtrzeno
+ sopralinea
+ overbars: overstrepen overbars
+ ueberstreichen nadtrzeni
+ sopralinee
+ underbar: onderstreep underbar
+ unterstrichen podtrzeno
+ sottolinea
+ underbars: onderstrepen underbars
+ unterstreichen podtrzeni
+ sottolinee
+ setupunderbar: stelonderstrepenin setupunderbar
+ stelleunterstreichenein nastavpodtrzeni
+ impostasottolinea
+ setupbodyfont: stelkorpsin setupbodyfont
+ stellefliesstextein nastavzakladnifont
+ impostafontdelcorpo
+ switchtobodyfont: switchnaarkorps switchtobodyfont
+ wechselezumfliesstext prepninazakladnifont
+ cambiaafontdelcorpo
+ showbodyfont: toonkorps showbodyfont
+ zeigefliesstext ukazzakladnifont
+ mostrafontdelcorpo
+ showbodyfontenvironment: toonkorpsomgeving showbodyfontenvironment
+ zeigefliesstextumgebung ukazpostredizakladnihofontu
+ mostraambientefontdelcorpo
+ headtext: koptekst headtext
+ ueberschrifttext texthlavicky
+ testoinstestazioni
+ labeltext: labeltekst labeltext
+ labeltext textpopisku
+ testoetichette
+ LABELTEXT: LABELTEKST LABELTEXT
+ LABELTEXT TEXTPOPISKU
+ TESTOETICHETTA
+ setupheadtext: stelkoptekstin setupheadtext
+ stelleueberschrifttextein nastavtexthlavicky
+ impostatestointestazioni
+ setuplabeltext: stellabeltekstin setuplabeltext
+ stellelabeltextein nastavtextpopisku
+ impostatestoetichette
+ marginrule: kantlijn marginrule
+ marginallinie marginalnilinka
+ lineamargine
+ startmarginrule: startkantlijn startmarginrule
+ startmarginallinie startmarginalnilinka
+ inizialineamargine
+ stopmarginrule: stopkantlijn stopmarginrule
+ stopmarginallinie stopmarginalnilinka
+ terminalineamargine
+ setupmarginrules: stelkantlijnin setupmarginrules
+ stellemarginallinieein nastavmarginalnilinky
+ impostalineamargine
+ blackrule: blokje blackrule
+ rechteck cernalinka
+ lineanera
+ blackrules: blokjes blackrules
+ rechtecke cernelinky
+ lineenere
+ setupblackrules: stelblokjesin setupblackrules
+ stellerechteckein nastavcernelinky
+ impostalineenere
+ setupscreens: stelrastersin setupscreens
+ stellerasterein nastavrastr
+ impostaschermi
+ framed: omlijnd framed
+ umrahmt oramovani
+ incorniciato
+ inframed: inlijnd inframed
+ imumriss zaramovani
+ inframed % GB
+ mframed: wilijnd maframed
+ maumrise maoramovani
+ maframed
+ inmframed: inwilijnd inmaframed
+ immaumrise mazaramovani
+ inmaframed
+ setupframed: stelomlijndin setupframed
+ stelleumrahmtein nastavoramovani
+ impostaincorniciato
+ setuplinewidth: stellijndiktein setuplinewidth
+ stellelinienbreiteein nastavsirkucary
+ impostaampiezzariga
+ setupthinrules: steldunnelijnenin setupthinrules
+ stelleduennerumrissein nastavtenkelinky
+ impostalineesottili
+ thinrule: dunnelijn thinrule
+ duennelinie tenkalinka
+ lineasottile
+ thinrules: dunnelijnen thinrules
+ duennerumriss tenkelinky
+ lineesottili
+ hairline: haarlijn hairline
+ haarlinie vlasovalinka
+ filodicapello
+ vl: vl vl
+ vl vl
+ vl
+ hl: hl hl
+ hl hl
+ hl
+ defineframed: definieeromlijnd defineframed
+ definiereumrahmt definujoramovani
+ definisciincorniciato
+ defineframedtext: definieerkadertekst defineframedtext
+ definiereumrahmtertext definujoramovanytext
+ definiscitestoincorniciato
+ setupframedtexts: stelkadertekstenin setupframedtexts
+ stelleumrahmtetexteein nastavoramovanetexty
+ impostatestoincorniciato
+ defineoverlay: definieeroverlay defineoverlay
+ definiereoverlay definujprekryv
+ definiscisovrapposizione
+ background: achtergrond background
+ hintergrund pozadi
+ sfondo
+ startbackground: startachtergrond startbackground
+ starthintergrund startpozadi
+ iniziasfondo
+ stopbackground: stopachtergrond stopbackground
+ stophintergrund stoppozadi
+ terminasfondo
+ setupbackground: stelachtergrondin setupbackground
+ stellehintergrundein nastavpozadi
+ impostasfondo
+ fillinrules: invullijnen fillinrules
+ gefuelltesrechteck vyplnovelinky % ve formulari
+ lineeriempimento
+ setupfillinrules: stelinvullijnenin setupfillinrules
+ stellegefuelltesrechteckein nastavvyplnovelinky
+ impostalineeriempimento
+ fillintext: invultekst fillintext
+ ausfuelltext vyplnenytext
+ testoriempimento
+ setupfillinlines: stelinvulregelsin setupfillinlines
+ stellegefuelltezeileein nastavvyplnoveradky
+ impostarigheriempimento
+ fillinline: invulregel fillinline
+ gefuelltezeile vyplnovyradek
+ lineariempimento
+ setuptextrules: steltekstlijnenin setuptextrules
+ stelletextumrissein nastavtextovelinky
+ impostalineetesto
+ textrule: tekstlijn textrule
+ textlinie textovalinka
+ lineatesto
+ starttextrule: starttekstlijn starttextrule
+ starttextlinie starttextovalinka
+ inizialineatesto
+ stoptextrule: stoptekstlijn stoptextrule
+ stoptextlinie stoptextovalinka
+ terminalineatesto
+ usemodule: gebruikmodule usemodule
+ verwendemodul uzijmodul
+ usamodulo
+ usemodules: gebruikmodules usemodules
+ verwendemodule uzijmoduly
+ usamoduli
+ starttekst: starttekst starttext
+ starttext starttext
+ iniziatesto
+ stoptekst: stoptekst stoptext
+ stoptext stoptext
+ terminatesto
+ margetitel: margetitel margintitle
+ marginaltitel marginalninadpis
+ titoloinmargine
+ margewoord: margewoord marginword
+ marginalwort marginalnislovo
+ parolainmargine
+ margetekst: margetekst margintext
+ marginaltext marginalnitext
+ testoinmargine
+ inlinker: inlinker inleft
+ imlinken vlevo
+ insinistra
+ inmarge: inmarge inmargin
+ inmarginalie naokraj
+ inmargine
+ inanderemarge: inanderemarge inothermargin
+ inanderermarginale nadruhyokraj
+ inaltromargine
+ inrechter: inrechter inright
+ imrechten vpravo
+ indestra
+ startmargeblok: startmargeblok startmarginblock
+ startmarginalblock startmarginalniblok
+ iniziabloccomargine
+ stopmargeblok: stopmargeblok stopmarginblock
+ stopmarginalblock stopmarginalniblok
+ terminabloccomargine
+ stelinmargein: stelinmargein setupinmargin
+ stelleinmarginalieein nastavmarginalie
+ impostainmargine
+ stelmargeblokkenin: stelmargeblokkenin setupmarginblocks
+ stellemarginalblockein nastavmarginalniblok
+ impostablocchimargine
+ inleftside: inlinkerrand inleftside
+ imlinkenrand nalevo
+ inlatosinistro
+ inleftmargin: inlinkermarge inleftmargin
+ inlinkermarginale nalevyokraj
+ inmarginesinistro
+ inrightmargin: inrechtermarge inrightmargin
+ inrechtermarginale napravyokraj
+ inmarginedestro
+ inrightside: inrechterrand inrightside
+ imrechtenrand napravo
+ inlatodestro
+ woordrechts: woordrechts wordright
+ wortrechts slovovpravo
+ paroladestra
+ definieerblanko: definieerblanko defineblank
+ definiereblanko definujpreskok
+ definisciblank % GB
+ blanko: blanko blank
+ blanko preskoc
+ blank
+ stelblankoin: stelblankoin setupblank
+ stelleblankoein nastavpreskok
+ impostablank
+ corrigeerwitruimte: corrigeerwitruimte correctwhitespace
+ korrigierezwischenraum korekcebilehomista
+ correggiwhitespace
+ fixedspaces: vastespaties fixedspaces
+ festesspatium tvrdemezery
+ spazifissi
+ fixedspace: vastespatie fixedspace
+ festesspatium tvrdamezera
+ spaziofisso
+ nospace: geenspatie nospace
+ keinspatium zadnamezera
+ nientespazio
+ space: spatie space
+ spatium mezera
+ spazio
+ geenwitruimte: geenwitruimte nowhitespace
+ keinzwischenraum zadnebilemisto
+ nientewhitespace
+ opelkaar: opelkaar packed
+ kleinerdurchschuss zhustene
+ impaccato
+ startopelkaar: startopelkaar startpacked
+ startkleinerdurchschuss startzhustene
+ iniziaimpaccato
+ stopopelkaar: stopopelkaar stoppacked
+ stopkleinerdurchschuss stopzhustene
+ terminaimpaccato
+ startvanelkaar: startvanelkaar startunpacked
+ startgrosserdurchschuss startnezhustene
+ iniziaunpacked % GB
+ stopvanelkaar: stopvanelkaar stopunpacked
+ stopgrosserdurchschuss stopnezhustene
+ terminaunpacked
+ startregelcorrectie: startregelcorrectie startlinecorrection
+ startzeilenkorrektur startkorekceradku
+ iniziacorrezioneriga
+ stopregelcorrectie: stopregelcorrectie stoplinecorrection
+ stopzeilenkorrektur stopkorekceradku
+ terminacorrezioneriga
+ omlaag: omlaag godown
+ nachunten jdidolu
+ vaigiu % GB
+ witruimte: witruimte whitespace
+ zwischenraum bilemisto
+ whitespace % GB
+ nietinspringen: nietinspringen noindenting
+ nichteinziehen zadneodsazovani
+ nienterientro
+ inspringen: inspringen indenting
+ einziehen odsazovani
+ rientro
+ stelinspringenin: stelinspringenin setupindenting
+ stelleeinziehenein nastavodsazovani
+ impostarientro
+ startuitlijnen: startuitlijnen startalignment
+ startausrichtung startzarovnavani
+ iniziaallineamento
+ stopuitlijnen: stopuitlijnen stopalignment
+ stopausrichtung stopzarovnavani
+ terminaallineamento
+ startregels: startregels startlines
+ startzeilen startradky
+ iniziarighe
+ stopregels: stopregels stoplines
+ stopzeilen stopradky
+ terminarighe
+ stelparagraafnummerenin: stelparagraafnummerenin setupparagraphnumbering
+ stelleabsatznummerierungein nastavcislovaniodstavcu
+ impostanumerazionecapoversi
+ stelregelnummerenin: stelregelnummerenin setuplinenumbering
+ stellezeilennumerierungein nastavcislovaniradku
+ impostanumerazionerighe
+ startregelnummeren: startregelnummeren startlinenumbering
+ startzeilennumerierung startcislovaniradku
+ inizianumerazionerighe
+ stopregelnummeren: stopregelnummeren stoplinenumbering
+ stopzeilennumerierung stopcislovaniradku
+ terminanumerazionerighe
+ startregel: startregel startline
+ startzeile startradek
+ iniziariga
+ stopregel: stopregel stopline
+ stopzeile stopradek
+ terminariga
+ eenregel: eenregel someline
+ einezeile nejakyradek
+ qualcheriga
+ inregel: inregel inline
+ inzeile vradku
+ inriga
+ crlf: crlf crlf
+ crlf crlf
+ crlf
+ stelregelsin: stelregelsin setuplines
+ stellezeilenein nastavradky
+ impostarighe
+ startsmaller: startsmaller startnarrower
+ startenger startzuzeni
+ iniziapiustretto
+ stopsmaller: stopsmaller stopnarrower
+ stopenger stopzuzeni
+ terminapiustretto
+ stelsmallerin: stelsmallerin setupnarrower
+ stelleengerein nastavzuzeni
+ impostapiustretto
+ definetabulate: definieertabulatie definetabulate
+ definieretabulator definujtabelaci
+ definiscitabulate % GB
+ setuptabulate: steltabulatiein setuptabulate
+ stelletabulatorein nastavtabelaci
+ impostatabulate
+ starttabel: starttabel starttable
+ starttabelle starttabulka
+ iniziatabella
+ stoptabel: stoptabel stoptable
+ stoptabelle stoptabulka
+ terminatabella
+ starttabellen: starttabellen starttables
+ starttabellen starttabulky
+ iniziatabelle
+ stoptabellen: stoptabellen stoptables
+ stoptabellen stoptabulky
+ terminatabelle
+ steltabellenin: steltabellenin setuptables
+ stelletabellenein nastavtabulky
+ impostatabelle
+ definetabletemplate: definieertabelvorm definetabletemplate
+ definieretabellenvorlage definujsablonutabulky
+ definiscimodellotabella
+ pagina: pagina page
+ seite strana
+ pagina
+ koppelpagina: koppelpagina couplepage
+ doppelseite parovastrana
+ accoppiapagina % GB
+ soortpagina: soortpagina pagetype
+ seitentyp typstrany
+ tipopagina
+ verwerkpagina: verwerkpagina processpage
+ bearbeiteseite zpracujstranu
+ elaborapagina
+ koppelpapier: koppelpapier couplepaper
+ doppelseitigespapier dvoustrannypapir
+ accoppiacarta % GB
+ selecteerpapier: selecteerpapier selectpaper
+ waehlepapieraus vyberpapir
+ selezionacarta
+ scherm: scherm screen
+ bildschirm obrazovka
+ schermo
+ definieersectie: definieersectie definesection
+ definiereabschnitt definujsekci
+ definiscisezione
+ definieersectieblok: definieersectieblok definesectionblock
+ definiereabschnittsblock definujbloksekce
+ definiscibloccosezione
+ stelsectieblokin: stelsectieblokin setupsectionblock
+ stelleabschnittsblockein nastavbloksekce
+ impostabloccosezione
+ stelsectiein: stelsectiein setupsection
+ stelleabschnittein nastavsekci
+ impostasezione
+ geenbovenenonderregels: geenbovenenonderregels notopandbottomlines
+ keinzeilenobenundunten zadnehorniadolniradky
+ nientelineecimafondo
+ geenhoofdenvoetregels: geenhoofdenvoetregels noheaderandfooterlines
+ keinekopfundfusszeilen zadnezahlaviaupati
+ nientelineintestazionepdp
+ stelbovenin: stelbovenin setuptop
+ stellenobenein nastavhorejsek
+ impostacima
+ stelboventekstenin: stelboventekstenin setuptoptexts
+ stelletextobenein nastavhornitexty
+ impostatesticima
+ stelhoofdin: stelhoofdin setupheader
+ stellekopfzeileein nastavzahlavi
+ impostainstestazione
+ stelhoofdtekstenin: stelhoofdtekstenin setupheadertexts
+ stellekopfzeilentextein nastavtextyzahlavi
+ impostatestiintestazioni
+ stelnummeringin: stelnummeringin setuppagenumbering
+ stelleseitennummeriernungein nastavcislovanistran
+ impostanumerazionepagina
+ stelonderin: stelonderin setupbottom
+ stelleuntenein nastavspodek
+ impostafondo
+ stelondertekstenin: stelondertekstenin setupbottomtexts
+ stelletextuntenein nastavdolnitexty
+ impostatestifondo
+ stelvoetin: stelvoetin setupfooter
+ stellefusszeileein nastavupati
+ impostapdp
+ stelvoettekstenin: stelvoettekstenin setupfootertexts
+ stellefusszeilentextein nastavtextyupati
+ impostatestipdp
+ stelpaginanummerin: stelpaginanummerin setuppagenumber
+ stelleseitennummerein nastavcislostrany
+ impostanumeropagina
+ stelsubpaginanummerin: stelsubpaginanummerin setupsubpagenumber
+ stelleunterseitennummerein nastavpodcislostrany
+ impostanumerosottopagina
+ steltekstin: steltekstin setuptext
+ stelletextein nastavtext
+ impostatesto
+ stelteksttekstenin: stelteksttekstenin setuptexttexts
+ stelletexttexteein nastavtexttexty
+ impostatestotesti
+ definieertekst: definieertekst definetext
+ definieretext definujtext
+ definiscitesto
+ pagenumber: paginanummer pagenumber
+ seitenummer cislostrany
+ numeropagina
+ completepagenumber: volledigepaginanummer completepagenumber
+ completepagenumber completepagenumber % TOBIAS % TO
+ numeropaginacompleto % TB TH
+ placepagenumber: plaatspaginanummer placepagenumber
+ placepagenumber placepagenumber % TOBIAS % TOM
+ mettinumeropagina % TB TH
+ items: items items
+ posten polozky
+ elementi
+ stelitemsin: stelitemsin setupitems
+ stellepostenein nastavpolozky
+ impostaelementi
+ regellinks: regellinks leftaligned
+ linksbuendig zarovnanovlevo
+ asinistra % GB
+ regelmidden: regelmidden midaligned
+ zentriert zarovnanonastred
+ alcentro
+ regelrechts: regelrechts rightaligned
+ rechtsbuendig zarovnanovpravo
+ adestra
+ startkolommen: startkolommen startcolumns
+ startspalten startsloupce
+ iniziacolonne
+ stopkolommen: stopkolommen stopcolumns
+ stopspalten stopsloupce
+ terminacolonne
+ stelkolommenin: stelkolommenin setupcolumns
+ stellespaltenein nastavsloupce
+ impostacolonne
+ kolom: kolom column
+ spalte sloupec
+ colonna
+ kop: kop head
+ kopf nadpis
+ testa % GB
+ but: but but
+ but spodek
+ fondo
+ som: som item
+ pos polozka
+ elemento
+ nop: nop nop
+ nop nop
+ nop
+ mar: mar mar
+ mar okr
+ mar
+ sym: sym sym
+ sym sym
+ sim
+ its: its its
+ its pol % abbr. of polozka (it em)
+ el %abbr. of elemento
+ ran: ran ran
+ ran ran
+ ran
+ startopsomming: startopsomming startitemize
+ startaufzaehlung startvycet
+ iniziaitemize % GB
+ stelopsommingenin: stelopsommingenin setupitemizations
+ stelleaufzaehlungenein nastavvycty
+ impostaitemization
+ stelopsommingin: stelopsommingin setupitemize
+ stelleaufzaehlungein nastavvycet
+ impostaitemize
+ stopopsomming: stopopsomming stopitemize
+ stopaufzaehlung stopvycet
+ terminaitemize
+ definieerkop: definieerkop definehead
+ definiereueberschrift definujnadpis
+ definiscitesta % GB
+ stelkopin: stelkopin setuphead
+ stelleueberschriftein nastavnadpis
+ impostatesta
+ stelkoppenin: stelkoppenin setupheads
+ stelleueberschriftenein nastavnadpisy
+ impostateste
+ stelkopnummerin: stelkopnummerin setupheadnumber
+ stellekopfzahlein nastavcislonadpisu
+ impostanumerotesta
+ kopnummer: kopnummer headnumber
+ kopfnummer cislonadpisu
+ numerotesta
+ huidigekopnummer: huidigekopnummer currentheadnumber
+ heutigeskopfnummer aktualnicislonadpisu
+ numerotestacorrente
+ bepaalkopnummer: bepaalkopnummer determineheadnumber
+ bestimmekopfnummer stanovcislonadpisu
+ determinanumerotesta
+ resetmarkering: resetmarkering resetmarking
+ ruecksetztenbeschriftung resetznaceni
+ reimpostamarcatura
+ stelmarkeringin: stelmarkeringin setupmarking
+ stellebeschriftungein nastavznaceni
+ impostamarcatura
+ definieermarkering: definieermarkering definemarking
+ definierebeschriftung definujznaceni
+ definiscimarcatura
+ geenmarkering: geenmarkering nomarking
+ keinebeschriftung zadneznaceni
+ nientemarcatura
+ marking: markeer marking
+ beschriftung znaceni
+ marcatura
+ ontkoppelmarkering: ontkoppelmarkering decouplemarking
+ entknuepfebeschriftung rozpojeneznaceni
+ decouplemarcatura % GB
+ koppelmarkering: koppelmarkering couplemarking
+ verknuepfebeschriftung propojeneznaceni
+ accoppiamarcatura % GB
+ haalmarkering: haalmarkering getmarking
+ holebeschriftung ziskejznaceni
+ prendimarcatura % GB
+ stellayoutin: stellayoutin setuplayout
+ stellelayoutein nastavvzhled
+ impostalayout
+ paslayoutaan: paslayoutaan adaptlayout
+ passelayoutan prizpusobvzhled
+ adattalayout
+ steloffsetin: steloffsetin setupoffset
+ stelleoffsetein nastavoffset
+ impostaoffest
+ plaatsopgrid: plaatsopgrid placeongrid
+ amgitterausrichten umistinamrizku
+ mettiingriglia
+ verplaatsopgrid: verplaatsopgrid moveongrid
+ amgitterneuausrichten premistinamrizku
+ spostaagriglia
+ tooninstellingen: tooninstellingen showsetups
+ zeigeeinstellungen ukaznastaveni
+ mostraimpostazioni
+ toonkader: toonkader showframe
+ zeigerahmen ukazramecek
+ mostracornice
+ toongrid: toongrid showgrid
+ zeigegitter ukazmrizku
+ mostragriglia
+ toonopbouw: toonopbouw showbuildup
+ zeigeaufbau ukazstrukturu
+ mostrabuildup % GB
+ toonlayout: toonlayout showlayout
+ zeigelayout ukazvzhled
+ mostralyout
+ toonprint: toonprint showprint
+ zeigedruck ukazvytisk
+ mostrastampa
+ toonstruts: toonstruts showstruts
+ zeigestruts ukazpodpery
+ mostrastruts
+ definieerpapierformaat: definieerpapierformaat definepapersize
+ definierepapierformat definujvelikostpapiru
+ definiscidimensionicarta
+ stelpapierformaatin: stelpapierformaatin setuppapersize
+ stellepapierformatein nastavvelikostpapiru
+ impostadimensionicarta
+ stelarrangerenin: stelarrangerenin setuparranging
+ stelleanordnenein nastavusporadani
+ impostaparranging % GB
+ versie: versie version
+ version verze
+ versione
+ stelachtergrondenin: stelachtergrondenin setupbackgrounds
+ stellehintergruendeein nastavpozadi
+ impostasfondi
+ steluitlijnenin: steluitlijnenin setupalign
+ stelleausrichtungein nastavzarovnani
+ impostaallineamento
+ stelwitruimtein: stelwitruimtein setupwhitespace
+ stellezwischenraumein nastavbilamista
+ impostawhitespace % GB
+ setupinteraction: stelinteractiein setupinteraction
+ stelleinteraktionein nastavinterakci
+ impostainterazione
+ stelinteractiemenuin: stelinteractiemenuin setupinteractionmenu
+ stelleinteraktionsmenueein nastavinterakcnimenu
+ impostamenuinterazione
+ definieerinteractiemenu: definieerinteractiemenu defineinteractionmenu
+ definiereinteraktionsmenue definujinterakcnimenu
+ definiscimenuinterazione
+ blokkeerinteractiemenu: blokkeerinteractiemenu disableinteractionmenu
+ inaktiviereinteraktionsmenue zablokujinterakcnimenu
+ disabilitamenuinterazione
+ interactiebuttons: interactiebuttons interactionbuttons
+ interaktionsknopfe interakcnitlacitka
+ pulsantinterazione
+ interactiebalk: interactiebalk interactionbar
+ interaktionsbalken interakcnilista
+ barrainterazione
+ stelinteractiebalkin: stelinteractiebalkin setupinteractionbar
+ stelleinteraktionsbalkenein nastavinterakcnilistu
+ impostabarrainterazione
+ stelinteractieschermin: stelinteractieschermin setupinteractionscreen
+ stelleinteraktionsbildschirmein nastavinterakcniobrazovku
+ impostaschermointerazione
+ placebookmarks: plaatsbookmarks placebookmarks
+ platzierebookmarks umistizalozky
+ mettisegnalibro
+ bookmark: bookmark bookmark
+ bookmark zalozka
+ segnalibro
+ definieerbeeldmerk: definieerbeeldmerk definelogo
+ definierelogo definujlogo
+ definiscilogo
+ plaatsbeeldmerken: plaatsbeeldmerken placelogos
+ platzierelogo umistiloga
+ mettiloghi
+ definecolor: definieerkleur definecolor
+ definierefarbe definujbarvu
+ definiscicolore
+ definecolorgroup: definieerkleurgroep definecolorgroup
+ definierefarbengruppe definujskupinubarev
+ definiscigruppocolori
+ definepalet: definieerpalet definepalet
+ definierepalette definujpaletu
+ definiscitavolozza
+ graycolor: grijskleur graycolor
+ graufarbe sedabarva
+ coloregrigio
+ color: kleur color
+ farbe barva
+ colore
+ startcolor: startkleur startcolor
+ startfarbe startbarva
+ iniziacolore
+ stopcolor: stopkleur stopcolor
+ stopfarbe stopbarva
+ terminacolore
+ setupcolors: stelkleurenin setupcolors
+ stellefarbenein nastavbarvy
+ impostacolori
+ setupcolor: stelkleurin setupcolor
+ stellefarbeein nastavbarvu
+ impostacolore
+ setuppalet: stelpaletin setuppalet
+ stellepaletteein nastavpaletu
+ impostatavolozza
+ showcolor: toonkleur showcolor
+ zeigefarbe ukazbarvu
+ mostracolore
+ showcolorgroup: toonkleurgroep showcolorgroup
+ zeigefarbengruppe ukazskupinubarev
+ mostragruppocolori
+ showpalet: toonpalet showpalet
+ zeigepalette ukazpaletu
+ mostratavolozza
+ comparecolorgroup: vergelijkkleurgroep comparecolorgroup
+ vergleichefarbengruppe porovnejskupinubarev
+ confrontagruppocolori
+ comparepalet: vergelijkpalet comparepalet
+ vergleichepalette porovnejpaletu
+ confrontatavolozza
+ colorvalue: kleurwaarde colorvalue
+ farbewert hodnotabarvy
+ valorecolore
+ greyvalue: grijswaarde greyvalue
+ grauwert hodnotasedi
+ valoregrigio
+ startraster: startraster startraster
+ startraster startrastr
+ iniziaraster % GB
+ stopraster: stopraster stopraster
+ stopraster stoprastr
+ terminaraster
+ definieerblok: definieerblok defineblock
+ definiereblock definujblok
+ definisciblocco
+ stelblokin: stelblokin setupblock
+ stelleblockein nastavblok
+ impostablocco
+ gebruikblokken: gebruikblokken useblocks
+ verwendebloecke uzijbloky
+ usablocco
+ verwerkblokken: verwerkblokken processblocks
+ bearbeitebloecke zpracujbloky
+ elaborablocchi
+ handhaafblokken: handhaafblokken keepblocks
+ behaltebloecke zachovejbloky
+ tieniblocchi
+ selecteerblokken: selecteerblokken selectblocks
+ waehlebloeckeaus vyberbloky
+ selezionablocchi
+ verbergblokken: verbergblokken hideblocks
+ verbergebloecke schovejbloky
+ nascondiblocchi
+ passeerblokken: passeerblokken bypassblocks
+ bypassblocks bypassblocks
+ saltablocchi
+ forceerblokken: forceerblokken forceblocks
+ forceblocks forceblocks
+ forzablocchi
+ geenblokkenmeer: geenblokkenmeer nomoreblocks
+ keinebloeckemehr zadnedalsibloky
+ bastablocchi
+ definieerlijst: definieerlijst definelist
+ definiereliste definujseznam
+ definiscielenco
+ definieersamengesteldelijst: definieersamengesteldelijst definecombinedlist
+ definierezusammengestellteliste definujkombinovanyseznam
+ definiscielencocombinato
+ plaatslijst: plaatslijst placelist
+ platziereliste umistiseznam
+ mettielenco
+ plaatssamengesteldelijst: plaatssamengesteldelijst placecombinedlist
+ platzierezusammengestellteliste umistikombinovanyseznam
+ mettilistacombinata
+ schrijfnaarlijst: schrijfnaarlijst writetolist
+ schreibezurliste zapisdoseznamu
+ scriviinelenco
+ schrijftussenlijst: schrijftussenlijst writebetweenlist
+ schreibezwischenliste zapismeziseznam
+ scrivitraelenchi
+ stellijstin: stellijstin setuplist
+ stellelisteein nastavseznam
+ impostaelenco
+ stelsamengesteldelijstin: stelsamengesteldelijstin setupcombinedlist
+ stellezusammengestelltelisteein nastavkombinovanyseznam
+ impostaelencocombinato
+ bepaallijstkenmerken: bepaallijstkenmerken determinelistcharacteristics
+ bestimmelistencharakeristika stanovcharakteristickuseznamu
+ determinacarattersticheelenco
+ lijstlengte: lijstlengte listlength
+ listenlaenge delkaseznamu
+ lunghezzaelenco
+ lijstbreedte: lijstbreedte listwidth
+ listenbreite sirkaseznamu
+ ampiezzaelenco
+ lijsthoogte: lijsthoogte listheight
+ listenhoehe vyskaseznamu
+ altezzaelenco
+ geenlijst: geenlijst nolist
+ keineliste zadnyseznam
+ nienteelenco
+ definieerreferentielijst: definieerreferentielijst definereferencelist
+ definierereferenzliste definujseznamodkazu
+ definiscielencoriferimenti
+ plaatsreferentielijst: plaatsreferentielijst placereferencelist
+ platzierereferenzliste umistiseznamodkazu
+ mettielencoriferimenti
+ schrijfnaarreferentielijst: schrijfnaarreferentielijst writetoreferencelist
+ schreibezurreferenzliste zapisdoseznamuodkazu
+ scriviinelencoriferimenti
+ stelreferentielijstin: stelreferentielijstin setupreferencelist
+ stellereferenzlisteein nastavseznamodkazu
+ impostaelencoriferimenti
+ definieerplaatsblok: definieerplaatsblok definefloat
+ definieregleitobjekt definujplvouciobjekt
+ definiscioggettomobile
+ stelplaatsblokin: stelplaatsblokin setupfloat
+ stellegleitobjektein nastavplvouciobjekt
+ impostaoggettomobile
+ stelplaatsblokkenin: stelplaatsblokkenin setupfloats
+ stellegleitobjekteein nastavplvouciobjekty
+ impostaoggettimobili
+ splitsplaatsblok: splitsplaatsblok splitfloat
+ teilegleitobjekt rozdelplvouciobjekt
+ spezzaoggettomobile
+ stelplaatsblokkensplitsenin: stelplaatsblokkensplitsenin setupfloatsplitting
+ stelleplatziegeteiltegleitobjekt nastavdeleniplvoucichobjektu
+ impostaspezzamentooggettomobile
+ startcombinatie: startcombinatie startcombination
+ startkombination startspojeni
+ iniziacombinazione
+ stopcombinatie: stopcombinatie stopcombination
+ stopkombination stopspojeni
+ terminacombinazione
+ plaatsnaastelkaar: plaatsnaastelkaar placesidebyside
+ platzierenebeneinander umistivedlesebe
+ mettifiancoafianco
+ plaatsonderelkaar: plaatsonderelkaar placeontopofeachother
+ platziereuntereinander umistinadsebe
+ mettiunosullaltro
+ stelblokkopjein: stelblokkopjein setupcaption
+ stellebildunterschriftein nastavpopisek
+ impostacaption % GB
+ stelblokkopjesin: stelblokkopjesin setupcaptions
+ stellebilderunterschriftein nastavpopisky
+ impostacaptions % GB
+ stelcombinatiesin: stelcombinatiesin setupcombinations
+ stellekombinationein nastavspojeni
+ impostacombinazioni
+ startoverlay: startoverlay startoverlay
+ startoverlay startprekryv
+ iniziasovrapposizione
+ stopoverlay: stopoverlay stopoverlay
+ stopoverlay stopprekryv
+ terminasovrapposizione
+ definieerregister: definieerregister defineregister
+ definiereregister definujrejstrik
+ definisciregistro
+ koppelregister: koppelregister coupleregister
+ verknuepfregister propojenyrejstrik
+ accoppiaregistro
+ stelregisterin: stelregisterin setupregister
+ stelleregisterein nastavrejstrik
+ impostaregistro
+ schrijfnaarregister: schrijfnaarregister writetoregister
+ schreibezumregister zapisdorejstriku
+ scriviinregistro
+ plaatsregister: plaatsregister placeregister
+ platziereregister umistirejstrik
+ mettiregistro
+ bepaalregisterkenmerken: bepaalregisterkenmerken determineregistercharacteristics
+ bestimmeregistercharakteristika urcicharakteristikurejstriku
+ determinacaratteristicheregistro
+ definieersorteren: definieersorteren definesorting
+ definieresortieren definujtrideni
+ definisciordinamento
+ definieersynoniemen: definieersynoniemen definesynonyms
+ definieresynonyme definujsynonyma
+ definiscisinonimi
+ stelsorterenin: stelsorterenin setupsorting
+ stellesortierenein nastavtrideni
+ impostaordinamento
+ stelsynoniemenin: stelsynoniemenin setupsynonyms
+ stellesynonymein nastavsynonyma
+ impostasinonimi
+ startsynchronisatie: startsynchronisatie startsynchronization
+ startsynchronisation startsynchronizace
+ iniziasincronizzazione
+ stopsynchronisatie: stopsynchronisatie stopsynchronization
+ stopsynchronisation stopsynchronizace
+ terminasincronizzazione
+ stelsynchronisatiebalkin: stelsynchronisatiebalkin setupsynchronizationbar
+ stellesynchronisationsbalkenein nastavsynchronizacnilistu
+ impostabarrasincronizzazione
+ stelsynchronisatiein: stelsynchronisatiein setupsynchronization
+ stellesynchronisationein nastavsynchronizaci
+ impostasincronizzazione
+ synchronisatiebalk: synchronisatiebalk synchronizationbar
+ synchronisationsbalken synchronizacnilista
+ barrasincronizzazione
+ synchroniseer: synchroniseer synchronize
+ synchronisieren synchronizovat
+ sincronizza
+ gebruikexterndocument: gebruikexterndocument useexternaldocument
+ verwendeexteresdokument uzijexternidokument
+ usadocumentoesterno
+ gebruikURL: gebruikURL useURL
+ verwendeURL uzijURL
+ usaURL
+ gebruikurl: gebruikurl useurl
+ verwendeurl uzijurl
+ usaurl
+ setupurl: stelurlin setupurl
+ stelleurlein nastavurl
+ impostaurl
+ coupledocument: koppeldocument coupledocument
+ verknuepfedokument propojenydokument
+ accoppiadocumento
+ stelprogrammasin: stelprogrammasin setupprograms
+ stelleprogrammein nastavprogramy
+ impostaprogrammi
+ definieerprogramma: definieerprogramma defineprogram
+ definiereprogramme definujprogram
+ definisciprogramma
+ programma: programma program
+ programm program
+ programma
+ stelpaginaovergangenin: stelpaginaovergangenin setuppagetransitions
+ stelleseitenuebergangein nastavprechodstrany
+ impostatransizionepagina
+ definieerprofiel: definieerprofiel defineprofile
+ definiereprofil definujprofil
+ definisciprofilo
+ definieerversie: definieerversie defineversion
+ definiereversion definujverzi
+ definisciversion
+ markeerversie: markeerversie markversion
+ beschrifteversion oznacverzi
+ marcaversione % GB
+ selecteerversie: selecteerversie selectversion
+ waehleversionaus vyberverzi
+ selezionaversione % GB
+ startprofiel: startprofiel startprofile
+ startprofil startprofil
+ iniziaprofilo
+ startversie: startversie startversion
+ startversion startverze
+ iniziaversione
+ stelprofielenin: stelprofielenin setupprofiles
+ stelleprofilein nastavprofily
+ impostaprofili
+ stelversiesin: stelversiesin setupversions
+ stelleversionein nastavverze
+ impostaversioni
+ stopprofiel: stopprofiel stopprofile
+ stopprofil stopprofil
+ terminaprofili
+ stopversie: stopversie stopversion
+ stopversion stopverze
+ terminaversioni
+ volgprofiel: volgprofiel followprofile
+ folgeprofil dodrzujprofil
+ seguiprofilo
+ volgprofielversie: volgprofielversie followprofileversion
+ folgeprofilversion dodrzujverziprofilu
+ seguiversioneprofilo
+ volgversie: volgversie followversion
+ folgeversion dodrzujverzi
+ seguiversione
+ doordefinieren: doordefinieren definedescription
+ definierebeschreibung definujpopis
+ definiscidescrizione
+ doorlabelen: doorlabelen definelabel
+ definierelabel definujpopisek
+ definiscietichetta
+ doornummeren: doornummeren defineenumeration
+ definierenummerierung definujvycet
+ definiscienumerazione
+ doorspringen: doorspringen defineindenting
+ definiereeinzug definujodsazovani
+ definiscirientro
+ steldoordefinierenin: steldoordefinierenin setupdescriptions
+ definierebeschreibungen nastavpopisy
+ impostadescrizioni
+ steldoornummerenin: steldoornummerenin setupenumerations
+ stellebeschreibungein nastavvycty
+ impostaenumerazioni
+ steldoorspringenin: steldoorspringenin setupindentations
+ stelleeinzuegein nastavodsazovani
+ impostarientri
+ steltabin: steltabin setuptab
+ stelletabein nastavtab
+ impostatab
+ tab: tab tab
+ tab tab
+ tab
+ setupexternalfigures: stelexternefigurenin setupexternalfigures
+ stelleexterneabbildungenein nastavexterniobrazy
+ impostafigureesterne
+ showexternalfigures: toonexternefiguren showexternalfigures
+ zeigeexterneabbildungen ukazexterniobrazy
+ mostrafiguresterne
+ externalfigure: externfiguur externalfigure
+ externeabbildung externiobraz
+ figuraesterna
+ useexternalfigure: gebruikexternfiguur useexternalfigure
+ verwendeexterneabbildung uzijexterniobraz
+ usafiguraesterna
+ startfigure: startfiguur startfigure
+ startabbildung startobraz
+ iniziafigura
+ referring: refereer referring
+ referieren odkazujici
+ referring % GB
+ remark: toelichting remark
+ bemerkung oznaceni
+ commento
+ colorbar: kleurenbalk colorbar
+ farbbalken barevnalista
+ barracolori
+ rooster: rooster grid
+ gitter mrizka
+ griglia
+ button: button button
+ knopf tlacitko
+ pulsante
+ menubutton: menubutton menubutton
+ menueknopf tlacitkomenu
+ pulsantemenu
+ stelbuttonsin: stelbuttonsin setupbuttons
+ stelleknopfein nastavtlacitka
+ impostapulsanti
+ usereferences: gebruikreferenties usereferences
+ verwendereferenzen uzijodkazy
+ usariferimenti
+ reflijst: reflijst reflist
+ refliste seznamodkazu
+ listarif
+ stelreferentielijstin: stelreferentielijstin setupreferencelist
+ stellereferenzlisteein nastavseznamodkazu
+ impostalistariferimenti
+ setupreferencing: stelrefererenin setupreferencing
+ stellereferenzierenein nastavodkazovani
+ impostariferimento
+ textreference: tekstreferentie textreference
+ textreferenz odkaznatext
+ riferimentotesto
+ pagereference: paginareferentie pagereference
+ seitenreferenz odkaznastranu
+ riferimentopagina
+ reference: referentie reference
+ referenz odkaz
+ riferimento
+ definereference: definieerreferentie definereference
+ definierereferenz definujodkaz
+ definisciriferimento
+ definereferenceformat: definieerreferentieformaat definereferenceformat
+ definierereferenzformat definujformatodkazu
+ definisciformatoriferimento
+ useJSscripts: gebruikJSscripts useJSscripts
+ verwendeJSscript uzijJSscripts
+ usaJSscripts
+ uit: uit from
+ von zref
+ da
+ in: in in
+ in tref
+ in
+ op: op at
+ bei pref
+ al % GB
+ over: over about
+ ueber oref
+ intorno
+ naar: naar goto
+ zu jdina
+ vaia
+ atpage: oppagina atpage
+ aufseite nastrane
+ apagina
+ somewhere: ergens somewhere
+ irgendwo nekde
+ daqualcheparte
+ ref: ref ref
+ ref ref
+ rif
+ naarbox: naarbox gotobox
+ zurbox jdinabox
+ vaiabox % GB
+ naarpagina: naarpagina gotopage
+ zurseite jdinastranu
+ vaiapagina
+ plaatsformule: plaatsformule placeformula
+ platziereformel umistirovnici
+ mettiformula
+ plaatssubformule: plaatssubformule placesubformula
+ platziereunterformel umistipodrovnici
+ mettisottoformula
+ stelformulesin: stelformulesin setupformulae
+ stelleformelnein nastavrovnice
+ impostaformule
+ formulenummer: formulenummer formulanumber
+ formelnummer cislorovnice
+ numeroformula
+ subformulenummer: subformulenummer subformulanumber
+ unterformelnummer cislopodrovnice
+ numerosottoformula
+ leg: leg leg
+ leg leg
+ leg
+ geg: geg fact
+ geg fakt
+ fatto
+ mathematics: wiskunde mathematics
+ mathematik matematika
+ matematica
+ dimension: dimensie dimension
+ dimension rozmer
+ dimensione
+ nodimension: geendimensie nodimension
+ keindimension zadnyrozmer
+ nientedimensioni
+ startomgeving: startomgeving startenvironment
+ startumgebung startprostredi
+ iniziaambiente
+ stopomgeving: stopomgeving stopenvironment
+ stopumgebung stopprostredi
+ terminaambiente
+ startdeelomgeving: startdeelomgeving startlocalenvironment
+ startlokaleumgebung startlokalnihoprostredi
+ iniziaambientelocale
+ startonderdeel: startonderdeel startcomponent
+ startkomponente startkomponenta
+ iniziacomponente
+ stoponderdeel: stoponderdeel stopcomponent
+ stopkomponente stopkomponenta
+ terminacomponente
+ startprodukt: startprodukt startproduct
+ startprodukt startprodukt
+ iniziaprodotto
+ stopprodukt: stopprodukt stopproduct
+ stopprodukt stopprodukt
+ terminaprodotto
+ startproject: startproject startproject
+ startprojekt startprojekt
+ iniziaprogetto
+ stopproject: stopproject stopproject
+ stopprojekt stopprojekt
+ terminaprogetto
+ setups: instellingen setups
+ einstellungen nastaveni
+ impostazioni
+ project: project project
+ projekt projekt
+ progetto
+ onderdeel: onderdeel component
+ komponente komponenta
+ componenet
+ produkt: produkt product
+ produkt produkt
+ prodotto
+ omgeving: omgeving environment
+ umgebung prostredi
+ amiente
+ geenfilesmeer: geenfilesmeer nomorefiles
+ keinedateienmehr zadnedalsisoubory
+ bastafile
+ haalbuffer: haalbuffer getbuffer
+ holepuffer ziskejbuffer
+ prendibuffer
+ stelbufferin: stelbufferin setupbuffer
+ stellepufferein nastavbuffer
+ impostabuffer
+ typebuffer: typebuffer typebuffer
+ tippepuffer typebuffer
+ typebuffer % GB
+ definieerbuffer: definieerbuffer definebuffer
+ definierepuffer definujbuffer
+ definiscibuffer
+ betekenis: betekenis unitmeaning
+ bedeutung vyznam
+ nomeunita % GB
+ voluit: voluit infull
+ volleswort plnezneni
+ perlungo
+ citaat: citaat quotation
+ zitat citace
+ quotation % GB
+ citeer: citeer quote
+ zitieren citovat
+ quote
+ startcitaat: startcitaat startquotation
+ startzitat startcitace
+ iniziaquotation
+ stopcitaat: stopcitaat stopquotation
+ stopzitat stopcitace
+ terminaquotation
+ stelciterenin: stelciterenin setupquote
+ stellezitierenein nastavcitaci
+ impostaquote
+ definieer: definieer define
+ definieren definuj
+ definisci
+ herhaal: herhaal redo
+ wiederholen opakovat
+ rifai
+ gebruikcommandos: gebruikcommandos usecommands
+ verwendebefehl uzijprikazy
+ usacomandi
+ definieerstartstop: definieerstartstop definestartstop
+ definierestartstop definujstartstop
+ definisciiniziatermina
+ startlocal: startlokaal startlocal
+ startlokal startlokalni
+ inizialocale
+ stoplocal: stoplokaal stoplocal
+ stoplokal stoplokalni
+ terminalocale
+ startglobal: startglobaal startglobal
+ startglobal startglobalni
+ iniziaglobale
+ stopglobal: stopglobaal stopglobal
+ stopglobal stopglobalni
+ terminaglobale
+ naam: naam name
+ name jmeno
+ nome
+ definieeropmaak: definieeropmaak definemakeup
+ definiereumbruch definujupravu
+ definiscimakeup % GB
+ stelopmaakin: stelopmaakin setupmakeup
+ stelleumbruchein nastavupravu
+ impostamakeup
+ startopmaak: startopmaak startmakeup
+ startumbruch startuprava
+ iniziamakeup
+ stopopmaak: stopopmaak stopmakeup
+ stopumbruch stopuprava
+ terminamakeup
+ useexternalsoundtrack: gebruikexterngeluidsfragment useexternalsoundtrack
+ verwendeexternestonstueck uzijexternizvuk
+ usacolonnasonoraesterna
+ gebruikexternefile: gebruikexternefile useexternalfile
+ verwendeexternedatei uzijexternisoubor
+ usafileesterno
+ gebruikexternefiles: gebruikexternefiles useexternalfiles
+ verwendeexternedateien uzijexternisoubory
+ usafileesterni
+ kenmerk: kenmerk referral
+ verweis odkaz
+ referral % GB
+ kenmerkdatum: kenmerkdatum referraldate
+ verweisdatum odkaznadatum
+ datareferral
+ high: hoog high
+ hoch vysoky
+ ap
+ lohi: laho lohi
+ tiho nivy
+ pedap
+ low: laag low
+ tief nizky
+ ped
+ breuk: breuk fraction
+ bruch zlomek
+ frazione
+ chem: chem chem
+ chem chem
+ chim
+ startnaast: startnaast startopposite
+ startgegenueber startprotejsek
+ iniziaopposto
+ stopnaast: stopnaast stopopposite
+ stopgegenueber stopprotejsek
+ terminaopposto
+ stelnaastplaatsenin: stelnaastplaatsenin setupoppositeplacing
+ stellegegenueberplatzierenein nastavumisteniprotejsku
+ impostaposizionamentoopposti
+ startpositioneren: startpositioneren startpositioning
+ startpositionieren startumistovani
+ iniziaposizionamento
+ stoppositioneren: stoppositioneren stoppositioning
+ stoppositionieren stopumistovani
+ terminaposizionamento
+ positioneer: positioneer position
+ position pozice
+ posizione
+ stelpositionerenin: stelpositionerenin setuppositioning
+ stellepositionierenein nastavumistovani
+ impostaposizionamento
+ roteer: roteer rotate
+ drehen otocit
+ rotazione % GB
+ stelroterenin: stelroterenin setuprotate
+ stelledrehenein nastavotoceni
+ impostarotazione
+ spiegel: spiegel mirror
+ spiegeln zrcadlit
+ riflessione
+ schaal: schaal scale
+ format meritko
+ scale % GB
+ stelnummerenin: stelnummerenin setupnumbering
+ stellenummerierungein nastavcislovani
+ impostanumerazione
+ reset: reset reset
+ ruecksetzten reset
+ reimposta
+ stelpublicatiesin: stelpublicatiesin setuppublications
+ stellepublikationein nastavpublikace
+ impostapubblicazioni
+ publicatie: publicatie publication
+ publikation publikace
+ pubblicazione
+ definieerhbox: definieerhbox definehbox
+ definierehbox definujhbox
+ definiscihbox
+ toevoegen: toevoegen adding
+ zusatz scitani
+ adding % GB
+ punten: punten periods
+ punkt tecky
+ punti
+ stelkoppeltekenin: stelkoppeltekenin setuphyphenmark
+ stellebindestrichein nastavdelitko
+ impostasegnosillabazione % GB
+ stelinterliniein: stelinterliniein setupinterlinespace
+ stellezeilenabstandein nastavmeziradkovoumezeru
+ impostainterlinea
+ stelspatieringin: stelspatieringin setupspacing
+ stellespatiumein nastavradkovani
+ impostaspaziatura
+ steltolerantiein: steltolerantiein setuptolerance
+ stelletoleranzein nastavtoleranci
+ impostatolleranza
+ setupsystem: stelsysteemin setupsystem
+ stellesystemein nastavsystem
+ impostasistema
+ usepath: gebruikgebied usedirectory
+ benutzeverzeichnis uzijadresar % TOBIAS
+ usacartella % GB
+ definieeralineas: definieeralineas defineparagraphs
+ definiereabsaetze definujodstavce
+ definiscicapoversi
+ stelalineasin: stelalineasin setupparagraphs
+ stelleabsaetzeein nastavodstavce
+ impostacapoversi
+ geentest: geentest donttest
+ keintest zadnytest
+ notest
+ stelcommentaarin: stelcommentaarin setupcomment
+ stellekommentarein nastavkomentar
+ impostacommento
+ commentaar: commentaar comment
+ kommentar komentar
+ commento
+ definefield: definieerveld definefield
+ definierefeld definujpole
+ definiscicampo
+ definemainfield: definieerhoofdveld definemainfield
+ definierehauptfeld definujhlavnipole
+ definiscicampoprincipale
+ definesubfield: definieersubveld definesubfield
+ definieresubfeld definujpodpole
+ definiscisottocampo
+ clonefield: kloonveld clonefield
+ klonierefeld klonujpole
+ clonacampo
+ copyfield: copieerveld copyfield
+ kopierefeld kopirujpole
+ copiacampo
+ setupfield: stelveldin setupfield
+ stellefeldein nastavpole
+ impostacampo
+ setupfields: stelveldenin setupfields
+ stellefelderin nastavvsechnapole
+ impostacampi
+ field: veld field
+ feld pole
+ campi
+ fitfield: passendveld fitfield
+ passendfeld prizpusobivepole % or vhodnepole
+ adattacampo
+ logfields: registreervelden logfields
+ registrierefelder zaznamovepole
+ logcampi % GB
+ showfields: toonvelden showfields
+ zeigefelder ukazpole
+ mostracampi
+ tooltip: suggestie tooltip
+ tooltip bublinkovanapoveda
+ tooltip % GB
+ fillinfield: invulveld fillinfield
+ ausfuellfeld vyplnovepole
+ camporiempimento
+ definefieldstack: definieerveldstapel definefieldstack
+ definierefeldstapel definujzasobnikpoli
+ definiscistackcampi % GB
+ fieldstack: veldstapel fieldstack
+ feldstapel zasobnikpoli
+ stackcampi
+ setupforms: stelformulierenin setupforms
+ setupforms setupforms
+ impostaforms % GB
+ setupclipping: stelclipin setupclipping
+ stelleausschnittein nastavorez
+ impostaclippling % GB
+ clip: clip clip
+ ausschnitt orez
+ clip
+ placelegend: plaatslegenda placelegend
+ platzierelegende umistilegendu
+ mettilegenda
+ setuplegend: stellegendain setuplegend
+ stellelegendeein nastavlegendu
+ impostalegenda
+ setuppagecomment: stelpaginacommentaarin setuppagecomment
+ stelleseitenkommentarein nastavkomentarstrany
+ impostacommentopagina
+ setupstrut: stelstrutin setupstrut
+ setupstrut setupstrut
+ impostastrut
+ definerule: definieerlijn definerule
+ definerule definerule
+ definiscilinea
+ placerule: plaatslijn placerule
+ placerule placerule
+ mettilinea
+ setuprule: stellijnin setuprule
+ setuprule setuprule
+ impostalinea
+ definetextvariable: definieertekstvariabele definetextvariable
+ definetextvariable definetextvariable
+ definiscivariabiletesto
+ setuptextvariable: steltekstvariabelein setuptextvariable
+ setuptextvariable setuptextvariable
+ impostavariabiletesto
+ settextvariable: kentekstvariabeletoe settextvariable
+ settextvariable settextvariable
+ setvariabiletesto % GB
+ placetextvariable: plaatstekstvariabele placetextvariable
+ placetextvariable placetextvariable
+ mettivariabiletesto
+ textvariable: tekstvariabele textvariable
+ textvariable textvariable
+ variabiletesto
+ definetextposition: definieertekstpositie definetextposition
+ definetextposition definetextposition
+ definisciposizionetesto
+ setuptextposition: steltekstpositiein setuptextposition
+ setuptextposition setuptextposition
+ impostaposizionetesto
+ positiontext: positioneertekst positiontext
+ positiontext positiontext
+ posizionetesto % GB
+ definerawfont: definerawfont definerawfont
+ definerawfont definerawfont
+ definiscifontgrezzo
+ switchtorawfont: switchtorawfont switchtorawfont
+ switchtorawfont switchtorawfont
+ passaafontgrezzo
\stopcommands
% ^ ^ ^ nadenken over \settextvariable vs \setuptextvariable in nl
@@ -1327,79 +1711,109 @@
%D \startcompressdefinitions
-\startcommands dutch english
- german czech
-
-
- bovenhoogte: bovenhoogte topheight
- hoeheoben vyskahorejsku
- bovenafstand: bovenafstand topdistance
- abstandoben vzdalenosthorejsku
- hoofdhoogte: hoofdhoogte headerheight
- kopfzeilenhoehe vyskazahlavi
- hoofdafstand: hoofdafstand headerdistance
- kopfzeilenabstand vzdalenostzahlavi
- teksthoogte: teksthoogte textheight
- texthoehe vyskatextu
- voetafstand: voetafstand footerdistance
- fusszeileabstand vzdalenostupati
- voethoogte: voethoogte footerheight
- fusszeilenhoehe vyskaupati
- onderafstand: onderafstand bottomdistance
- abstandunten vzdalenostspodku
- onderhoogte: onderhoogte bottomheight
- hoeheunten vyskaspodku
- margebreedte: margebreedte marginwidth
- marginalbreite sirkamarginalie
- linkermargebreedte: linkermargebreedte leftmarginwidth
- linkemarginalbreite sirkalevemarginalie
- rechtermargebreedte: rechtermargebreedte rightmarginwidth
- rechtemarginalbreite sirkapravemarginalie
- margeafstand: margeafstand margindistance
- marginalafstand vzdalenostmarginalie
- linkermargeafstand: linkermargeafstand leftmargindistance
- linkemarginalafstand vzdalenostlevemarginalie
- rechtermargeafstand: rechtermargeafstand rightmargindistance
- rechtemarginalafstand vzdalenostpravemarginalie
- randbreedte: randbreedte edgewidth
- randbreite sirkaokraje
- linkerrandbreedte: linkerrandbreedte leftedgewidth
- breitelinkerrand sirkalevehookraje
- rechterrandbreedte: rechterrandbreedte rightedgewidth
- breiterechterrand sirkapravehookraje
- randafstand: randafstand edgedistance
- randabstand vzdalenostokraje
- linkerrandafstand: linkerrandafstand leftedgedistance
- abstandlinkerrand vzdalenostlevehookraje
- rechterrandafstand: rechterrandafstand rightedgedistance
- abstandrechterrand vzdalenostpravehookraje
- tekstbreedte: tekstbreedte textwidth
- textbreite sirkatextu
- zetbreedte: zetbreedte makeupwidth
- satzbreite sirkasazby
- zethoogte: zethoogte makeupheight
- satzhoehe vyskasazby
- kopwit: kopwit topspace
- kopfweite hornimezera
- rugwit: rugwit backspace
- rumpfweite spodnimezera
-
- papierbreedte: papierbreedte paperwidth
- papierbreite sirkapapiru
- papierhoogte: papierhoogte paperheight
- papierhoehe vyskapapiru
- printpapierbreedte: printpapierbreedte printpaperwidth
- printpapierbreite sirkatiskpapiru
- printpapierhoogte: printpapierhoogte printpaperheight
- printpapierhoehe vyskatiskpapiru
- kopniveau: kopniveau headlevel
- kopfniveau hlavniuroven
-
- linewidth: lijndikte linethickness
- liniendicke tloustkacary
-
- totaalaantalpaginas: totaalaantalpaginas totalnumberofpages
- gesamtseitenanzahl celkovypocetstran
+\startcommands dutch english
+ german czech
+ italian
+
+ bovenhoogte: bovenhoogte topheight
+ hoeheoben vyskahorejsku
+ altezzacima
+ bovenafstand: bovenafstand topdistance
+ abstandoben vzdalenosthorejsku
+ distanzacima
+ hoofdhoogte: hoofdhoogte headerheight
+ kopfzeilenhoehe vyskazahlavi
+ altezzaintestazione
+ hoofdafstand: hoofdafstand headerdistance
+ kopfzeilenabstand vzdalenostzahlavi
+ distanzaintestazione
+ teksthoogte: teksthoogte textheight
+ texthoehe vyskatextu
+ altezzatesto
+ voetafstand: voetafstand footerdistance
+ fusszeileabstand vzdalenostupati
+ distanzapdp
+ voethoogte: voethoogte footerheight
+ fusszeilenhoehe vyskaupati
+ altezzapdp
+ onderafstand: onderafstand bottomdistance
+ abstandunten vzdalenostspodku
+ distanzafondo
+ onderhoogte: onderhoogte bottomheight
+ hoeheunten vyskaspodku
+ altezzafondo
+ margebreedte: margebreedte marginwidth
+ marginalbreite sirkamarginalie
+ ampiezzamargine % GB
+ linkermargebreedte: linkermargebreedte leftmarginwidth
+ linkemarginalbreite sirkalevemarginalie
+ ampiezzamarginesinistro
+ rechtermargebreedte: rechtermargebreedte rightmarginwidth
+ rechtemarginalbreite sirkapravemarginalie
+ ampiezzamarginedestro
+ margeafstand: margeafstand margindistance
+ marginalafstand vzdalenostmarginalie
+ distanzamargine
+ linkermargeafstand: linkermargeafstand leftmargindistance
+ linkemarginalafstand vzdalenostlevemarginalie
+ distanzamarginesinistro
+ rechtermargeafstand: rechtermargeafstand rightmargindistance
+ rechtemarginalafstand vzdalenostpravemarginalie
+ distanzamarginedestro
+ randbreedte: randbreedte edgewidth
+ randbreite sirkaokraje
+ ampiezzabordo
+ linkerrandbreedte: linkerrandbreedte leftedgewidth
+ breitelinkerrand sirkalevehookraje
+ ampiezzabordosinistro
+ rechterrandbreedte: rechterrandbreedte rightedgewidth
+ breiterechterrand sirkapravehookraje
+ ampiezzabordodestro
+ randafstand: randafstand edgedistance
+ randabstand vzdalenostokraje
+ distanzabordo
+ linkerrandafstand: linkerrandafstand leftedgedistance
+ abstandlinkerrand vzdalenostlevehookraje
+ distanzabordosinistro
+ rechterrandafstand: rechterrandafstand rightedgedistance
+ abstandrechterrand vzdalenostpravehookraje
+ distanzabordodestro
+ tekstbreedte: tekstbreedte textwidth
+ textbreite sirkatextu
+ ampiezzatesto
+ zetbreedte: zetbreedte makeupwidth
+ satzbreite sirkasazby
+ ampiezzamakeup % GB
+ zethoogte: zethoogte makeupheight
+ satzhoehe vyskasazby
+ altezzamakeup
+ kopwit: kopwit topspace
+ kopfweite odsazenishora
+ spaziocima
+ rugwit: rugwit backspace
+ rumpfweite odsazenizleva
+ spaziodietro % GB
+ papierbreedte: papierbreedte paperwidth
+ papierbreite sirkapapiru
+ ampiezzacarta
+ papierhoogte: papierhoogte paperheight
+ papierhoehe vyskapapiru
+ altezzacarta
+ printpapierbreedte: printpapierbreedte printpaperwidth
+ printpapierbreite sirkatiskpapiru
+ ampiezzacartastampa % GB
+ printpapierhoogte: printpapierhoogte printpaperheight
+ printpapierhoehe vyskatiskpapiru
+ altezzacartastampa % GB
+ kopniveau: kopniveau headlevel
+ kopfniveau hlavniuroven
+ livellotesta % GB
+ linewidth: lijndikte linethickness
+ liniendicke tloustkacary
+ spessoreriga
+ totaalaantalpaginas: totaalaantalpaginas totalnumberofpages
+ gesamtseitenanzahl celkovypocetstran
+ numerototaledipagine
\stopcommands
@@ -1411,35 +1825,49 @@
%D \startcompressdefinitions
-\startcommands dutch english
- german czech
-
- startdocument: startdocument startdocument
- startdokument startdokument
- stopdocument: stopdocument stopdocument
- stopdokument stopdokument
- startoverzicht: startoverzicht startoverview
- startueberblick startprehled
- stopoverzicht: stopoverzicht stopoverview
- stopueberblick stopprehled
- stelbrievenin: stelbrievenin setupcorrespondence
- stellekorrespondenzein nastavkorespondenci
- brieven: brieven letters
- briefe dopisy
- brief: brief letter
- brief dopis
- label: label label
- label poppisek
- sheet: sheet sheet
- blatt list
- stelstickersin: stelstickersin setupstickers
- stellestickerein nastavetikety
- stelsheetsin: stelsheetsin setupsheets
- stelleblattein nastavlisty
- labels: labels labels
- labels popisky
- woonplaats: woonplaats domicile
- wohnort bydliste
+\startcommands dutch english
+ german czech
+ italian
+
+ startdocument: startdocument startdocument
+ startdokument startdokument
+ iniziadocumento
+ stopdocument: stopdocument stopdocument
+ stopdokument stopdokument
+ terminadocumento
+ startoverzicht: startoverzicht startoverview
+ startueberblick startprehled
+ iniziaoverview % GB
+ stopoverzicht: stopoverzicht stopoverview
+ stopueberblick stopprehled
+ terminaoverview
+ stelbrievenin: stelbrievenin setupcorrespondence
+ stellekorrespondenzein nastavkorespondenci
+ impostacorrispondenza
+ brieven: brieven letters
+ briefe dopisy
+ lettere
+ brief: brief letter
+ brief dopis
+ lettera
+ label: label label
+ label poppisek
+ etichetta
+ sheet: sheet sheet
+ blatt list
+ foglio
+ stelstickersin: stelstickersin setupstickers
+ stellestickerein nastavetikety
+ impostafrancobolli % GB
+ stelsheetsin: stelsheetsin setupsheets
+ stelleblattein nastavlisty
+ impostafogli
+ labels: labels labels
+ labels popisky
+ etichette
+ woonplaats: woonplaats domicile
+ wohnort bydliste
+ domicilio
\stopcommands
diff --git a/tex/context/base/mult-con.tex b/tex/context/base/mult-con.tex
index 765011727..8e94e01e1 100644
--- a/tex/context/base/mult-con.tex
+++ b/tex/context/base/mult-con.tex
@@ -1,6 +1,6 @@
%D \module
%D [ file=mult-con,
-%D version=1996.06.01,
+%D version=2000.09.12,
%D title=\CONTEXT\ Multilingual Macros,
%D subtitle=Constants,
%D author=Hans Hagen,
@@ -14,8 +14,8 @@
%D In this rather large definition file we are going to tell
%D \CONTEXT\ which constants, variables and elements we use.
%D
-%D The German translations were provided by Tobias Burnus,
-%D and the Czech ones by Tom Hudec.
+%D The German translations were provided by Tobias Burnus,
+%D and the Czech ones by Tom Hudec.
\writestatus{loading}{Context Multilingual Macros / Constants}
@@ -26,14 +26,25 @@
%D \startcompressdefinitions
-\startvariables dutch english german czech
-
- een: een one eins jedna
- twee: twee two zwei dve
- drie: drie three drei tri
- vier: vier four vier ctyri
- vijf: vijf five fuenf pet
-
+\startvariables dutch english
+ german czech
+ italian
+
+ een: een one
+ eins jedna
+ uno
+ twee: twee two
+ zwei dve
+ due
+ drie: drie three
+ drei tri
+ tre
+ vier: vier four
+ vier ctyri
+ quattro
+ vijf: vijf five
+ fuenf pet
+ cinque
\stopvariables
%D \stopcompressdefinitions
@@ -42,42 +53,90 @@
%D \startcompressdefinitions
-\startvariables dutch english german czech
-
- sunday: zondag sunday sonntag nedele
- monday: maandag monday montag pondeli
- tuesday: dinsdag tuesday dienstag utery
- wednesday: woensdag wednesday mittwoch streda
- thursday: donderdag thursday donnerstag ctvrtek
- friday: vrijdag friday freitag patek
- saturday: zaterdag saturday samstag sobota
-
+\startvariables dutch english
+ german czech
+ italian
+
+ sunday: zondag sunday
+ sonntag nedele
+ domenica
+ monday: maandag monday
+ montag pondeli
+ lunedi
+ tuesday: dinsdag tuesday
+ dienstag utery
+ martedi
+ wednesday: woensdag wednesday
+ mittwoch streda
+ mercoledi
+ thursday: donderdag thursday
+ donnerstag ctvrtek
+ giovedi
+ friday: vrijdag friday
+ freitag patek
+ venerdi
+ saturday: zaterdag saturday
+ samstag sobota
+ sabato
\stopvariables
-\startvariables dutch english german czech
-
- january: januari January Januar leden
- february: februari February Februar unor
- march: maart March Maerz brezen
- april: april April April duben
- may: mei May Mai kveten
- june: juni June Juni cerven
- july: juli July Juli cervenec
- august: augustus August August srpen
- september: september September September zari
- october: oktober October Oktober rijen
- november: november November November listopad
- december: december December Dezember prosinec
-
+\startvariables dutch english
+ german czech
+ italian
+
+ january: januari January
+ Januar leden
+ gennaio
+ february: februari February
+ Februar unor
+ febbraio
+ march: maart March
+ Maerz brezen
+ marzo
+ april: april April
+ April duben
+ aprile
+ may: mei May
+ Mai kveten
+ maggio
+ june: juni June
+ Juni cerven
+ giugno
+ july: juli July
+ Juli cervenec
+ luglio
+ august: augustus August
+ August srpen
+ agosto
+ september: september September
+ September zari
+ settembre
+ october: oktober October
+ Oktober rijen
+ ottobre
+ november: november November
+ November listopad
+ novembre
+ december: december December
+ Dezember prosinec
+ dicembre
\stopvariables
%D Next we introduce some general label bound variables:
-\startvariables dutch english german czech
+\startvariables dutch english
+ german czech
+ italian
- oppagina: oppagina atpage aufseite nastrance
- hierboven: hierboven hencefore vorher vyse
- hieronder: hieronder hereafter nachher nize
+ oppagina: oppagina atpage
+ aufseite nastrance
+ apagina
+ hierboven: hierboven hencefore
+ vorher vyse
+ precedente
+ hieronder: hieronder hereafter
+ nachher nize
+ seguente
\stopvariables
@@ -87,67 +146,82 @@
%D use variable when defining them. First we define some
%D general structuring variables:
-%D \startcompressdefinitions
-
-% to be added: sub subsub subsubsub subsubsubsub
-
-\startvariables dutch english german
- czech
-
- sectionlevel: sectie section abschnitt
- oddil
-
- deel: deel part teil
- cast
- hoofdstuk: hoofdstuk chapter kapitel
- kapitola
- onderwerp: onderwerp subject thema
- tema
- paragraaf: paragraaf section absatz
- sekce
- titel: titel title titel
- titul
-
- margetitel: margetitel margintitle marginaltitel
- titulmarginalie
-
- inhoud: inhoud content inhalt
- obsah
- inhouden: inhouden contents inhalte
- obsah
-
- bijlage: bijlage appendix anhang
- dodatek
- bijlagen: bijlagen appendices anhaenge
- dodatky
- hoofdtekst: hoofdtekst bodypart haupttext
- hlavnicast
- hoofdteksten: hoofdteksten bodymatter haupttexte
- hlavnicasti
- inleiding: inleiding frontpart einleitung
- prednicast
- inleidingen: inleidingen frontmatter einleitungen
- prednicasti
- uitleiding: uitleiding backpart epilog
- epilog
- uitleidingen: uitleidingen backmatter epiloge
- epilogy
-
- voetnoot: voetnoot footnote fussnote
- poznamkapodcarou
-
- systeem: systeem system systeme
- system
+%D \startcompressdefinitions
+
+\startvariables dutch english
+ german czech
+ italian
+
+ sectionlevel: sectie section
+ abschnitt oddil
+ sezione
+ deel: deel part
+ teil cast
+ parte
+ hoofdstuk: hoofdstuk chapter
+ kapitel kapitola
+ capitolo
+ onderwerp: onderwerp subject
+ thema tema
+ argomento
+ paragraaf: paragraaf section
+ absatz sekce
+ capoverso %paragrafo
+ titel: titel title
+ titel titul
+ titolo
+ margetitel: margetitel margintitle
+ marginaltitel titulmarginalie
+ titoloinmargine
+ inhoud: inhoud content
+ inhalt obsah
+ indice % GB
+ inhouden: inhouden contents
+ inhalte obsah
+ indici % GB
+ bijlage: bijlage appendix
+ anhang dodatek
+ appendice
+ bijlagen: bijlagen appendices
+ anhaenge dodatky
+ appendici
+ hoofdtekst: hoofdtekst bodypart
+ haupttext hlavnicast
+ bodypart % GB
+ hoofdteksten: hoofdteksten bodymatter
+ haupttexte hlavnicasti
+ bodymatter % GB
+ inleiding: inleiding frontpart
+ einleitung prednicast
+ frontpart % GB
+ inleidingen: inleidingen frontmatter
+ einleitungen prednicasti
+ frontmatter % GB
+ uitleiding: uitleiding backpart
+ epilog epilog
+ backpart % GB
+ uitleidingen: uitleidingen backmatter
+ epiloge epilogy
+ backmatter % GB
+ voetnoot: voetnoot footnote
+ fussnote poznamkapodcarou
+ notapdp
+ systeem: systeem system
+ systeme system
+ sistema
\stopvariables
-\startvariables dutch english german
- czech
+\startvariables dutch english
+ german czech
+ italian
- typen: typen typing tippen
- typing
- file: file file datei
- soubor
+ typen: typen typing
+ tippen typing
+ typing % GB
+ file: file file
+ datei soubor
+ file % GB
\stopvariables
@@ -159,56 +233,75 @@
%D \startcompressdefinitions
-\startvariables dutch english german
- czech
-
- formule: formule formula formel
- rovnice
- formules: formules formulae formeln
- rovnice
-
- figuur: figuur figure abbildung
- obrazek
- figuren: figuren figures abbildungen
- obrazky
- tabel: tabel table tabelle
- tabulka
- tabellen: tabellen tables tabellen
- tabulky
- grafiek: grafiek graphic grafik
- graf
- grafieken: grafieken graphics grafiken
- grafy
- intermezzo: intermezzo intermezzo intermezzo
- intermezzo
- intermezzos: intermezzos intermezzi intermezzi
- intermezzi
-
- index: index index index
- rejstrik
- indices: indices indices indizies
- rejstriky
-
- afkorting: afkorting abbreviation abkuerzung
- zkratka
- afkortingen: afkortingen abbreviations abkuerzungen
- zkratky
- logo: logo logo logo
- logo
- logos: logos logos logos
- loga
- eenheid: eenheid unit einheit
- jednotka
- eenheden: eenheden units einheiten
- jednotky
-
- regel: regel line zeile
- radek
- regels: regels lines zeilen
- radky
-
- framedtext: kadertekst framedtext umrahmtertext
- oramovanytext
+\startvariables dutch english
+ german czech
+ italian
+
+ formule: formule formula
+ formel rovnice
+ formula
+ formules: formules formulae
+ formeln rovnice
+ formule
+ figuur: figuur figure
+ abbildung obrazek
+ figura
+ figuren: figuren figures
+ abbildungen obrazky
+ figure
+ tabel: tabel table
+ tabelle tabulka
+ tabella
+ tabellen: tabellen tables
+ tabellen tabulky
+ tabelle
+ grafiek: grafiek graphic
+ grafik graf
+ grafico
+ grafieken: grafieken graphics
+ grafiken grafy
+ grafici
+ intermezzo: intermezzo intermezzo
+ intermezzo intermezzo
+ intermezzo
+ intermezzos: intermezzos intermezzi
+ intermezzi intermezzi
+ intermezzi
+ index: index index
+ index rejstrik
+ indiceanalitico
+ indices: indices indices
+ indizies rejstriky
+ indicianalitici
+ afkorting: afkorting abbreviation
+ abkuerzung zkratka
+ abbreviazione
+ afkortingen: afkortingen abbreviations
+ abkuerzungen zkratky
+ abbreviazioni
+ logo: logo logo
+ logo logo
+ logo
+ logos: logos logos
+ logos loga
+ loghi
+ eenheid: eenheid unit
+ einheit jednotka
+ unita
+% GB: unita in italian means "joined", the previous should be "unit\`a";
+% moreover, the plural (following) is the same as the singular. What should I do?
+ eenheden: eenheden units
+ einheiten jednotky
+ unita
+ regel: regel line
+ zeile radek
+ riga
+ regels: regels lines
+ zeilen radky
+ righe
+ framedtext: kadertekst framedtext
+ umrahmtertext oramovanytext
+ testoincorniciato
\stopvariables
@@ -221,627 +314,937 @@
%D \startcompressdefinitions
-\startconstants dutch english german
- czech
-
- leftquotation: linkercitaat leftquotation linkerzitat
- citacevlevo
- rightquotation: rechtercitaat rightquotation rechterzitat
- citacevpravo
- leftquote: linkerciteer leftquote linkerzitieren
- citovatvlevo
- rightquote: rechterciteer rightquote rechterzitieren
- citovatvpravo
- leftsentence: linkerzin leftsentence linkersatz
- vetavlevo
- rightsentence: rechterzin rightsentence rechtersatz
- vetavpravo
- leftsubsentence: linkersubzin leftsubsentence linkersubsatz
- podvetavlevo
- rightsubsentence: rechtersubzin rightsubsentence rechtersubsatz
- podvetavpravo
-
- datum: datum date datum
- datum
-
- voorwit: voorwit spacebefore vorspatium
- mezerapred
- nawit: nawit spaceafter nachspatium
- mezeraza
- zijvoorwit: zijvoorwit sidespacebefore nebenvorspatium
- bocnimezerapred
- zijnawit: zijnawit sidespaceafter nebennachspatium
- bocnimezeraza
-
- aan: aan to zu
- na
- aanduiding: aanduiding indicator indikator
- indikator
- achtergrond: achtergrond background hintergrund
- pozadi
- achtergronddiepte: achtergronddiepte backgrounddepth hintergrundtiefe
- hloubkapozadi
- achtergrondhoek: achtergrondhoek backgroundcorner hintergrundwinkel
- rohpozadi
- achtergrondkleur: achtergrondkleur backgroundcolor hintergrundfarbe
- barvapozadi
- achtergrondoffset: achtergrondoffset backgroundoffset hintergrundoffset
- offsetpozadi
- achtergrondraster: achtergrondraster backgroundscreen hintergrundraster
- rastrpozadi
- achtergrondstraal: achtergrondstraal backgroundradius hintergrundradius
- polomerpozadi
- adres: adres address adresse
- adresa
- afsluiter: afsluiter stopper abschnitttrenner
- predel
- afstand: afstand distance abstand
- vzdalenost
- alinea: alinea paragraph absatz
- odstavec
- assenstelsel: assenstelsel axis achsen
- osa
- auteur: auteur author autor
- autor
- balanceren: balanceren balance ausgleichen
- rovnovaha
- bfactor: bfactor wfactor bfaktor
- sfaktor
- binnen: binnen inner innen
- vnitrni
- blanko: blanko blank blanko
- prazdny
- blokkade: blokkade obstruction gesperrt
- prekazka
- blokwijze: blokwijze blockway blockauf
- dobloku
- bodemwit: bodemwit bottomspace bottomspace
- bottomspace
- boven: boven top oben
- vrsek
- bovenafstand: bovenafstand topdistance obenabstand
- vzdalenostvrsku
- bovenkader: bovenkader topframe obenrahmen
- vrchniramecek
- bovenoffset: bovenoffset topoffset obenoffset
- offsetvrsku
- bovenstatus: bovenstatus topstate statusoben
- statusvrsku
- breedte: breedte width breite
- sirka
- maxbreedte: maxbreedte maxwidth maxbreite
- maxsirka
- bron: bron source quelle
- zdroj
- commando: commando command befehl
- prikaz
- commandos: commandos commands befehle
- prikazy
- contrastkleur: contrastkleur contrastcolor kontrastfarbe
- kontrastnibarva
- conversie: conversie conversion konversion
- konverze
- kopconversie: kopconversie headconversion headconversion
- konverzehlavicky % TOBIAS
- koplabel: koplabel headlabel headlabel
- popisekhlavicky % TOBIAS
- criterium: criterium criterium kriterium
- kriterium
- datum: datum date datum
- datum
- default: default default default
- implicitni
- diepte: diepte depth tiefe
- hloubka
- dieptecorrectie: dieptecorrectie depthcorrection tiefekorrektur
- korekcehloubky
- dikte: dikte thickness dicke
- tloustka
- doorgaan: doorgaan continue fortsetzen
- pokracovat
- dubbelzijdig: dubbelzijdig doublesided doppelseitig
- oboustranne
- dummy: dummy dummy dummy
- dummy
- eenheid: eenheid unit einheit
- jednotka
- eigennummer: eigennummer ownnumber eigenenummer
- vlastnicislo
- evenmarge: evenmarge evenmargin geraderand
- sudamarginalie
- expansie: expansie expansion expansion
- expanzen
- factor: factor factor faktor
- faktor
- converteerfile: converteerfile convertfile konvertieredatei
- konverzesouboru
- file: file file datei
- soubor
- formaat: formaat size groesse
- velikost
- autofocus: autofocus autofocus autofocus
- autoostreni
- focus: focus focus focus
- zaostreni
- gebied: gebied directory verzeichnis
- adresar
- grid: grid grid gritter
- mrizka
- groot: groot big gross
- velky
- haal: haal get hole
- ziskat
- hang: hang hang haengend
- zaveseni
- herhaal: herhaal repeat wiederholen
- opakovat
- hfactor: hfactor hfactor hfaktor
- vfaktor
- hoek: hoek corner winkel
- roh
- hoffset: hoffset hoffset hoffset
- hoffset
- hokjes: hokjes frames umrahmen
- ramecky
- hoofd: hoofd header kopfzeile
- zahlavi
- hoofdafstand: hoofdafstand headerdistance kopfzeilenabstand
- vzdalenostzahlavi
- hoofdstatus: hoofdstatus headerstate kopfzeilenstatus
- statuszahlavi
- hoogte: hoogte height hoehe
- vyska
- maxhoogte: maxhoogte maxheight maxhoehe
- maxvyska
- huidige: huidige current aktuell
- aktualni
- in: in in in
- v
- inspringen: inspringen indenting einziehen
- odsazovani
- interactie: interactie interaction interaktion
- interakce
- interlinie: interlinie interlinespace zeilenabstande
- meziradkovamezera
- items: items items posten
- polozky
- kader: kader frame rahmen
- ramecek
- kaderdiepte: kaderdiepte framedepth rahmentiefe
- hloubkaramecku
- kaderhoek: kaderhoek framecorner rahmenwinkel
- rohramecku
- kaderkleur: kaderkleur framecolor rahmenfarbe
- barvaramecku
- kaderoffset: kaderoffset frameoffset rahmenoffset
- offsetramecku
- kaderstraal: kaderstraal frameradius rahmenradius
- polomerramecku
- kantlijn: kantlijn marginedge marginalkante
- textovahrana
- kantlijntekst: kantlijntekst marginedgetext marginalkantetext
- textmarginalnihookraje
- karakteruitlijnen: karakteruitlijnen aligncharacter aligncharacter
- aligncharacter % TOBIAS / TOM
- uitlijnkarakter: uitlijnkarakter alignmentcharacter alignmentcharacter
- alignmentcharacter % TOBIAS / TOM
- klein: klein small klein
- male
- kleur: kleur color farbe
- barva
- kolom: kolom column spalte
- sloupec
- kolomafstand: kolomafstand columndistance spaltenabstand
- vzdalenostsloupcu
- kopkleur: kopkleur headcolor kopffarbe
- barvahlavicky
- kopletter: kopletter headstyle kopfstil
- stylhlavicky
- kopna: kopna afterhead nachkopf
- pohlavicce
- kopoffset: kopoffset veroffset kopfoffset
- offsethlavicky
- koppeling: koppeling coupling verknuepfung
- propojeni
- koppelwijze: koppelwijze couplingway verkopplungsart
- zpusobpropojeni
- kopvoor: kopvoor beforehead vorkopf
- predhlavickou
- kopwit: kopwit topspace kopfspatium
- svrchnimezera
- korps: korps bodyfont fliesstext
- zakladnifont
- label: label label label
- popisek
- leeg: leeg empty leer
- prazdne
- letter: letter style stil
- pismeno
- lijn: lijn rule linie
- linka
- lijndikte: lijndikte rulethickness liniendicke
- tloustkalinky
- lijnkleur: lijnkleur rulecolor linienfarbe
- barvalinky
- lijst: lijst list liste
- seznam
- linkerbreedte: linkerbreedte leftwidth linkerbreite
- sirkavlevo
- linkerkader: linkerkader leftframe linkerrahmen
- ramecekvlevo
- linkerkleur: linkerkleur leftcolor linkerfarbe
- barvavlevo
- linkerletter: linkerletter leftstyle linkerstil
- stylvlevo
- linkermarge: linkermarge leftmargin linkerrand
- levyokraj
- linkermargeafstand: linkermargeafstand leftmargindistance linkerrandabstand
- vzdalenostlevehookraje
- linkeroffset: linkeroffset leftoffset linkeroffset
- levyoffset
- linkerrand: linkerrand leftedge linkekante
- levahrana
- linkerrandafstand: linkerrandafstand leftedgedistance linkerkantenabstand
- vzdalenostlevehrany
- linkertekst: linkertekst lefttext linkertext
- textvlevo
- links: links left links
- vlevo
- logo: logo logo logo
- logo
- logos: logos logos logos
- loga
- lokaal: lokaal local lokal
- lokalne
- marge: marge margin marginalie
- marginalie
- margeafstand: margeafstand margindistance marginalabstand
- vzdalenostokraje
- margetekst: margetekst margintext marginaltext
- textmarginalie
- markering: markering marking beschriftung
- znaceni
- markleur: markleur marcolor beschrfarbe
- barvaznacky
- marletter: marletter marstyle beschrstil
- stylsnacky
- menu: menu menu menue
- menu
- methode: methode method methode
- metoda
- midden: midden middle mittig
- stredni
- middentekst: middentekst middletext mittigertext
- strednitext
- min: min min min
- min
- monster: monster sample muster
- vzor
- na: na after nach
- po
- naam: naam name name
- jmeno
- nacommando: nacommando commandafter zumbefehl
- prikazpo
- nboven: nboven ntop noben
- nvrsek
- niveau: niveau level niveau
- uroven
- niveaus: niveaus levels niveaus
- urovne
- nonder: nonder nbottom nunten
- nspodek
- norm: norm norm norm
- norm
- nregels: nregels nlines zzeile
- nradky
- nummer: nummer number nummer
- cislo
- nummercommando: nummercommando numbercommand nummerbefehl
- ciselnyprikaz
- nummeren: nummeren numbering nummerierung
- cislovani
- nummerkleur: nummerkleur numbercolor nummernfarbe
- barvacisla
- nummerletter: nummerletter numberstyle nummernstil
- stylcisla
- nummerscheider: nummerscheider numberseparator nummernseperator
- oddelovaccisla
- object: object object objekt
- objekt
- offset: offset offset offset
- offset
- onder: onder bottom unten
- spodek
- onderafstand: onderafstand bottomdistance abstandunten
- vzdalenostspodku
- onderkader: onderkader bottomframe untenrahmen
- ramecekspodku
- onderoffset: onderoffset bottomoffset untenoffset
- offsetspodku
- onderstatus: onderstatus bottomstate untenstatus
- statusspodku
- onevenmarge: onevenmarge oddmargin ungeraderand
- lichyokraj
- op: op at bei
- u % not 'na', since that's already taken by 'aan'
- optie: optie option option
- volba
- pagina: pagina page seite
- stranka
- paginacommando: paginacommando pagecommand seitenbefehl
- strankovyprikaz
- paginakleur: paginakleur pagecolor seitenfarbe
- barvastranky
- paginaletter: paginaletter pagestyle seitenstil
- stylstranky
- paginanummer: paginanummer pagenumber seitennummer
- cislostranky
- paginaovergangen: paginaovergangen pageboundaries seitenbegrenzung
- hranicestranky
- palet: palet palet palette
- paleta
- papier: papier paper papier
- papir
- plaats: plaats location platz
- misto
- plaatsafsluiter: plaatsafsluiter placestopper setzetrenner
- predelmista
- plaatsen: plaatsen place platziere
- umistit
- plaatskop: plaatskop placehead setzekopf
- umistihlavicku
- prefix: prefix prefix prefix
- prefix
- preset: preset preset voreinstellung
- prednastaveni
- preview: preview preview vorschau
- nahled
- punt: punt dot punkt
- tecka
- pijl: pijl arrow pfeil
- sipka
- rand: rand edge kante
- hrana
- randafstand: randafstand edgedistance kantenabstand
- vzdalenosthrany
- raster: raster screen raster
- rastr
- rechterbreedte: rechterbreedte rightwidth rechterbreite
- sirkavpravo
- rechterkader: rechterkader rightframe rechterrahmen
- ramecekvpravo
- rechterkleur: rechterkleur rightcolor rechterfarbe
- barvavpravo
- rechterletter: rechterletter rightstyle rechterstil
- stylvpravo
- rechtermarge: rechtermarge rightmargin rechterrand
- pravyokraj
- rechtermargeafstand: rechtermargeafstand rightmargindistance rechterrandabstand
- vzdalenostpravehookraje
- rechteroffset: rechteroffset rightoffset rechterabstand
- pravyoffset
- rechterrand: rechterrand rightedge rechtekante
- pravahrana
- rechterrandafstand: rechterrandafstand rightedgedistance rechterkantenabstand
- vzdalenostpravehrany
- rechtertekst: rechtertekst righttext rechtertext
- textvpravo
- rechts: rechts right rechts
- vpravo
- reductie: reductie reduction reduktion
- redukce
- refereren: refereren referencing referieren
- odkazujici
- regel: regel line zeile
- radek
- regelcorrectie: regelcorrectie linecorrection zeilekorrektur
- korekceradku
- regels: regels lines zeilen
- radky
- resolutie: resolutie resolution aufloesung
- rozliseni
- rotatie: rotatie rotation rotation
- rotace
- rugoffset: rugoffset horoffset rumpfabstand
- horoffset
- rugwit: rugwit backspace rumpfspatium
- zpetnamezera
- richting: richting direction richtung
- smer
- schaal: schaal scale format
- meritko
- scheider: scheider separator seperator
- oddelovac
- scherm: scherm display bildschirm
- obrazovka
- scope: scope scope bereich
- rozsah
- sectie: sectie section abschnitt
- oddil
- sectienummer: sectienummer sectionnumber abschnittsnummer
- cislooddilu
- snijwit: snijwit cutspace cutspace
- cutspace
- soort: soort family familie
- rodina
- spatie: spatie space spatium
- mezera
- spatiering: spatiering spacing spatiumausgleich
- mezerovani
- springvolgendein: springvolgendein indentnext ziehefolgendeein
- odsadpristi
- stap: stap step schritt
- krok
- start: start start start
- start
- status: status state status
- status
- stop: stop stop stop
- stop
- straal: straal radius radius
- polomer
- streep: streep dash strich
- pomlcka
- sub: sub sub unter
- pod
- subtitel: subtitel subtitle untertitel
- podtitulek
- symbool: symbool symbol symbol
- symbol
- symboolset: symboolset symbolset symbolset
- sadasymbolu
- symkleur: symkleur symcolor symfarbe
- barvasymbolu
- symletter: symletter symstyle symstil
- stylsymboly
- synoniem: synoniem synonym synonym
- synonymum
- synoniemkleur: synoniemkleur synonymcolor synonymfarbe
- barvasynonyma
- synoniemletter: synoniemletter synonymstyle synonymstil stylsynonyma
- tab: tab tab tab
- tab
- teken: teken sign zeichen
- znak
- tekst: tekst text text
- text
- tekstbreedte: tekstbreedte textwidth textbreite
- sirkatextu
- tekstcommando: tekstcommando textcommand textbefehl
- textovyprikaz
- tekstformaat: tekstformaat textsize textgroesse
- velikosttextu
- tekstkleur: tekstkleur textcolor textfarbe
- barvatextu
- tekstletter: tekstletter textstyle textstil
- styltextu
- tekstscheider: tekstscheider textseparator textseparator
- oddelovactextu
- tekststatus: tekststatus textstate textstatus
- statustextu
- titel: titel title titel
- titul
- titeluitlijnen: titeluitlijnen aligntitle titelausrichten
- zarovnejtitul
- tolerantie: tolerantie tolerance toleranz
- tolerance
- tussen: tussen inbetween zwischen
- mezi
- type: type type typ
- typ
- uitlijnen: uitlijnen align ausrichtung
- zarovnani
- urlspatie: urlspatie urlspace urlspatium
- prostorurl
- urlvariant: urlvariant urlalternative urlalternative
- urlalternativa
- van: van from von
- z
- variant: variant alternative alternative
- alternativa
- verhoog: verhoog increment erhoehen
- zvysit
- verhoognummer: verhoognummer incrementnumber nummererhoehen
- zvysujicicislo
- verwijzing: verwijzing reference referenz
- odkaz
- onbekendeverwijzing: onbekendeverwijzing unknownreference unbekantereferenz
- neznamyodkaz
- voet: voet footer fusszeile
- upati
- voetafstand: voetafstand footerdistance fusszeilenabstand
- vzdalenostupati
- voetstatus: voetstatus footerstate fusszeilenstatus
- statusupati
- voffset: voffset voffset voffset
- voffset
- volgende: volgende next folgende
- dalsi
- voor: voor before vor
- pred
- voorcommando: voorcommando commandbefore vorbefehl
- predchoziprikaz
- vorige: vorige previous vorige
- predchozi
- vorigenummer: vorigenummer previousnumber vorigenummer
- predchozicislo
- wachttijd: wachttijd delay wartezeit
- prodleva
- wijze: wijze way art
- zpusob
- willekeur: willekeur random zufaellig
- nahodne
- wit: wit white weiss
- bily
- xfactor: xfactor xfactor xfaktor
- xfaktor
- xmax: xmax xmax xmax
- xmax
- xoffset: xoffset xoffset xoffset
- xoffset
- xschaal: xschaal xscale xformat
- xmeritko
- xstap: xstap xstep xschritt
- xkrok
- yfactor: yfactor yfactor yfaktor
- yfaktor
- ymax: ymax ymax ymax
- ymax
- yoffset: yoffset yoffset yoffset
- yoffset
- yschaal: yschaal yscale yformat
- ymeritko
- ystap: ystap ystep yschritt
- ykrok
- zelfdepagina: zelfdepagina samepage selbeseite
- stejnastranka
- zij: zij side objektabstand
- strana
-
-veldachtergrondkleur: veldachtergrondkleur fieldbackgroundcolor feldhintergrundfarbe
- barvapozadipole
- veldkaderkleur: veldkaderkleur fieldframecolor feldrahmenfarbe
- barvarameckupole
- veldoffset: veldoffset fieldoffset feldoffset
- offsetpole
-
- openactie: openactie openaction oeffenaktion
- otevriakci
- sluitactie: sluitactie closeaction schliessenaktion
- zavriakci
-
- openpaginaactie: openpaginaactie openpageaction openpageaction
- akceotevrenistranky % TOBIAS
- sluitpaginaactie: sluitpaginaactie closepageaction closepageaction
- akcezavrenistranky % TOBIAS
-
- klikin: klikin clickin klickin
- klikuvnitr
- klikuit: klikuit clickout klickaus
- klikvne
- gebiedin: gebiedin regionin regionin
- oblastuvnitr
- gebieduit: gebieduit regionout regionaus
- oblastvne
- natoets: natoets afterkey nachtaste
- klavesapo
- formatteer: formatteer format formatieren
- formatovat
- valideer: valideer validate validieren
- validovat
- bereken: bereken calculate berechnen
- pocitat
-
- klik: klik click klick
- klik
-
- vcommando: vcommando vcommand vbefehl
- vprikaz
- icommando: icommando icommand ibefehl
- iprikaz
- ccommando: ccommando ccommand cbefehl
- cprikaz
+\startconstants dutch english
+ german czech
+ italian
+
+ leftquotation: linkercitaat leftquotation
+ linkerzitat citacevlevo
+ leftquotation % GB
+ rightquotation: rechtercitaat rightquotation
+ rechterzitat citacevpravo
+ rightquotation % GB
+ leftquote: linkerciteer leftquote
+ linkerzitieren citovatvlevo
+ leftquote % GB
+ rightquote: rechterciteer rightquote
+ rechterzitieren citovatvpravo
+ rightquote % GB
+ leftsentence: linkerzin leftsentence
+ linkersatz vetavlevo
+ leftsentence % GB
+ rightsentence: rechterzin rightsentence
+ rechtersatz vetavpravo
+ rightsentence % GB
+ leftsubsentence: linkersubzin leftsubsentence
+ linkersubsatz podvetavlevo
+ leftsubsentence % GB
+ rightsubsentence: rechtersubzin rightsubsentence
+ rechtersubsatz podvetavpravo
+ rightsubsentence % GB
+ datum: datum date
+ datum datum
+ data
+ voorwit: voorwit spacebefore
+ vorspatium mezerapred
+ spazioprima
+ nawit: nawit spaceafter
+ nachspatium mezeraza
+ spaziodopo
+ zijvoorwit: zijvoorwit sidespacebefore
+ nebenvorspatium bocnimezerapred
+ sidespacebefore % GB
+ zijnawit: zijnawit sidespaceafter
+ nebennachspatium bocnimezeraza
+ sidespaceafter % GB
+ aan: aan to
+ zu na
+ a
+ aanduiding: aanduiding indicator
+ indikator indikator
+ indicator % GB
+ achtergrond: achtergrond background
+ hintergrund pozadi
+ sfondo
+ achtergronddiepte: achtergronddiepte backgrounddepth
+ hintergrundtiefe hloubkapozadi
+ profonditasfondo
+ achtergrondhoek: achtergrondhoek backgroundcorner
+ hintergrundwinkel rohpozadi
+ angolosfondo
+ achtergrondkleur: achtergrondkleur backgroundcolor
+ hintergrundfarbe barvapozadi
+ coloresfondo
+ achtergrondoffset: achtergrondoffset backgroundoffset
+ hintergrundoffset offsetpozadi
+ offsetsfondo
+ achtergrondraster: achtergrondraster backgroundscreen
+ hintergrundraster rastrpozadi
+ schermosfondo
+ achtergrondstraal: achtergrondstraal backgroundradius
+ hintergrundradius polomerpozadi
+ raggiosfondo
+ adres: adres address
+ adresse adresa
+ indirizzo
+ afsluiter: afsluiter stopper
+ abschnitttrenner predel
+ stopper
+ afstand: afstand distance
+ abstand vzdalenost
+ distanza
+ alinea: alinea paragraph
+ absatz odstavec
+ capoverso %paragrafo
+ assenstelsel: assenstelsel axis
+ achsen osa
+ asse
+ auteur: auteur author
+ autor autor
+ autore
+ autofile: autofile autofile
+ autofile autofile
+ autofile % TB TH GB
+ balanceren: balanceren balance
+ ausgleichen rovnovaha
+ bilanciamento
+ bfactor: bfactor wfactor
+ bfaktor sfaktor
+ wfactor % GB
+ binnen: binnen inner
+ innen vnitrni
+ interno
+ blanko: blanko blank
+ blanko prazdny
+ blank % GB
+ blokkade: blokkade obstruction
+ gesperrt prekazka
+ ostruzione
+ blokwijze: blokwijze blockway
+ blockauf dobloku
+ blockway % GB
+ bodemwit: bodemwit bottomspace
+ bottomspace bottomspace
+ spaziofondo
+ boven: boven top
+ oben vrsek
+ cima
+ bovenafstand: bovenafstand topdistance
+ obenabstand vzdalenostvrsku
+ distanzacima
+ bovenkader: bovenkader topframe
+ obenrahmen rameceknahore
+ cornicecima
+ bovenoffset: bovenoffset topoffset
+ obenoffset offsetvrsku
+ offsetcima
+ bovenstatus: bovenstatus topstate
+ statusoben statusvrsku
+ statocima
+ breedte: breedte width
+ breite sirka
+ ampiezza
+ maxbreedte: maxbreedte maxwidth
+ maxbreite maxsirka
+ ampiezzamax
+ minbreedte: minbreedte minwidth
+ minbreite minsirka
+ ampiezzamin % TB TH
+ bron: bron source
+ quelle zdroj
+ origine
+ commando: commando command
+ befehl prikaz
+ comando
+ commandos: commandos commands
+ befehle prikazy
+ comandi
+ contrastkleur: contrastkleur contrastcolor
+ kontrastfarbe kontrastnibarva
+ colorecontrasto
+ conversie: conversie conversion
+ konversion konverze
+ conversione
+ kopconversie: kopconversie headconversion
+ headconversion konverzehlavicky
+ headconversion % TB GB
+ koplabel: koplabel headlabel
+ headlabel popisekhlavicky
+ headlabel % TB GB
+ criterium: criterium criterium
+ kriterium kriterium
+ criterio
+ datum: datum date
+ datum datum
+ data
+ default: default default
+ default implicitni
+ implicito
+ diepte: diepte depth
+ tiefe hloubka
+ profondita
+ dieptecorrectie: dieptecorrectie depthcorrection
+ tiefekorrektur korekcehloubky
+ correzioneprofondita
+ dikte: dikte thickness
+ dicke tloustka
+ spessore
+ doorgaan: doorgaan continue
+ fortsetzen pokracovat
+ continua
+ dubbelzijdig: dubbelzijdig doublesided
+ doppelseitig oboustranne
+ doppiafaccia
+ dummy: dummy dummy
+ dummy dummy
+ dummy
+ eenheid: eenheid unit
+ einheit jednotka
+ unita
+ eigennummer: eigennummer ownnumber
+ eigenenummer vlastnicislo
+ proprionumero % GB
+ evenmarge: evenmarge evenmargin
+ geraderand sudamarginalie
+ marginepari
+ expansie: expansie expansion
+ expansion expanzen
+ espansione
+ factor: factor factor
+ faktor faktor
+ fattore
+ converteerfile: converteerfile convertfile
+ konvertieredatei konverzesouboru
+ convertfile % GB
+ file: file file
+ datei soubor
+ file
+ formaat: formaat size
+ groesse velikost
+ dimensione
+ autofocus: autofocus autofocus
+ autofocus autoostreni
+ autofocus
+ focus: focus focus
+ focus zaostreni
+ focus % GB
+ gebied: gebied directory
+ verzeichnis adresar
+ directory %cartella
+ grid: grid grid
+ gritter mrizka
+ griglia
+ groot: groot big
+ gross velky
+ grande
+ haal: haal get
+ hole ziskat
+ prendi
+ hang: hang hang
+ haengend zaveseni
+ sospendi % GB
+ herhaal: herhaal repeat
+ wiederholen opakovat
+ ripeti % GB
+ hfactor: hfactor hfactor
+ hfaktor vfaktor
+ hfactor % GB
+ hoek: hoek corner
+ winkel roh
+ angolo
+ hoffset: hoffset hoffset
+ hoffset hoffset
+ hoffset % GB
+ hokjes: hokjes frames
+ umrahmen ramecky
+ frames % GB
+ hoofd: hoofd header
+ kopfzeile zahlavi
+ intestazione %testatina
+ hoofdafstand: hoofdafstand headerdistance
+ kopfzeilenabstand vzdalenostzahlavi
+ distanzaintestazione
+ hoofdstatus: hoofdstatus headerstate
+ kopfzeilenstatus statuszahlavi
+ statointestazione
+ hoogte: hoogte height
+ hoehe vyska
+ altezza
+ maxhoogte: maxhoogte maxheight
+ maxhoehe maxvyska
+ altezzamax
+ huidige: huidige current
+ aktuell aktualni
+ corrente
+ in: in in
+ in v
+ in
+ inspringen: inspringen indenting
+ einziehen odsazovani
+ rientro
+ interactie: interactie interaction
+ interaktion interakce
+ interazione
+ interlinie: interlinie interlinespace
+ zeilenabstande meziradkovamezera
+ interlinea
+ items: items items
+ posten polozky
+ elemnti
+ kader: kader frame
+ rahmen ramecek
+ cornice
+ kaderdiepte: kaderdiepte framedepth
+ rahmentiefe hloubkaramecku
+ profonditacornice
+ kaderhoek: kaderhoek framecorner
+ rahmenwinkel rohramecku
+ angolocornice
+ kaderkleur: kaderkleur framecolor
+ rahmenfarbe barvaramecku
+ colorecornice
+ kaderoffset: kaderoffset frameoffset
+ rahmenoffset offsetramecku
+ offsetcornice
+ kaderstraal: kaderstraal frameradius
+ rahmenradius polomerramecku
+ raggiocornice
+ kantlijn: kantlijn marginedge
+ marginalkante textovahrana
+ bordomargine
+ kantlijntekst: kantlijntekst marginedgetext
+ marginalkantetext textmarginalnihookraje
+ testobordomargine
+ karakteruitlijnen: karakteruitlijnen aligncharacter
+ aligncharacter aligncharacter
+ aligncharacter % TB TH GB
+ uitlijnkarakter: uitlijnkarakter alignmentcharacter
+ alignmentcharacter alignmentcharacter
+ carattereallineamento % TB TH
+ klein: klein small
+ klein male
+ piccolo
+ kleur: kleur color
+ farbe barva
+ colore
+ kolom: kolom column
+ spalte sloupec
+ colonna
+ kolomafstand: kolomafstand columndistance
+ spaltenabstand vzdalenostsloupcu
+ distanzacolonne
+ kopkleur: kopkleur headcolor
+ kopffarbe barvahlavicky
+ coloreintestazione
+ kopletter: kopletter headstyle
+ kopfstil stylhlavicky
+ stileintestazione
+ kopna: kopna afterhead
+ nachkopf pohlavicce
+ dopointestazione
+ kopoffset: kopoffset veroffset
+ kopfoffset offsethlavicky
+ veroffset % GB
+ koppeling: koppeling coupling
+ verknuepfung propojeni
+ accoppiamento
+ koppelwijze: koppelwijze couplingway
+ verkopplungsart zpusobpropojeni
+ modoaccoppiamento
+ kopvoor: kopvoor beforehead
+ vorkopf predhlavickou
+ primadiintestazione
+ kopwit: kopwit topspace
+ kopfspatium svrchnimezera
+ spaziocima
+ korps: korps bodyfont
+ fliesstext zakladnifont
+ fontcorpo
+ label: label label
+ label popisek
+ etichetta
+ leeg: leeg empty
+ leer prazdne
+ vuoto
+ letter: letter style
+ stil pismeno
+ stile
+ lijn: lijn rule
+ linie linka
+ linea
+ lijndikte: lijndikte rulethickness
+ liniendicke tloustkalinky
+ spessorelinea
+ lijnkleur: lijnkleur rulecolor
+ linienfarbe barvalinky
+ colorelinea
+ lijst: lijst list
+ liste seznam
+ elenco
+ linkerbreedte: linkerbreedte leftwidth
+ linkerbreite sirkavlevo
+ ampiezzasinistra
+ linkerkader: linkerkader leftframe
+ linkerrahmen ramecekvlevo
+ cornicesinistra
+ linkerkleur: linkerkleur leftcolor
+ linkerfarbe barvavlevo
+ coloresinistra
+ linkerletter: linkerletter leftstyle
+ linkerstil stylvlevo
+ stilesinistra
+ linkermarge: linkermarge leftmargin
+ linkerrand levyokraj
+ marginesinistro
+ linkermargeafstand: linkermargeafstand leftmargindistance
+ linkerrandabstand vzdalenostlevehookraje
+ distanzamarginesinistro
+ linkeroffset: linkeroffset leftoffset
+ linkeroffset levyoffset
+ offsetsinistro % GB
+ linkerrand: linkerrand leftedge
+ linkekante levahrana
+ bordosinistro
+ linkerrandafstand: linkerrandafstand leftedgedistance
+ linkerkantenabstand vzdalenostlevehrany
+ distanzabordosinistro
+ linkertekst: linkertekst lefttext
+ linkertext textvlevo
+ testosinistro % GB
+ links: links left
+ links vlevo
+ sinistra
+ logo: logo logo
+ logo logo
+ logo
+ logos: logos logos
+ logos loga
+ loghi
+ lokaal: lokaal local
+ lokal lokalne
+ locale
+ marge: marge margin
+ marginalie marginalie
+ margine
+ margeafstand: margeafstand margindistance
+ marginalabstand vzdalenostokraje
+ distanzamargine
+ margetekst: margetekst margintext
+ marginaltext textmarginalie
+ testomargine
+ markering: markering marking
+ beschriftung znaceni
+ marcatura
+ markleur: markleur marcolor
+ beschrfarbe barvaznacky
+ coloremarcatura
+ marletter: marletter marstyle
+ beschrstil stylsnacky
+ stilemarcatura
+ menu: menu menu
+ menue menu
+ menu
+ methode: methode method
+ methode metoda
+ metodo
+ midden: midden middle
+ mittig stredni
+ mezzo % GB
+ middentekst: middentekst middletext
+ mittigertext strednitext
+ testocentro % GB
+ min: min min
+ min min
+ min
+ monster: monster sample
+ muster vzor
+ campione
+ na: na after
+ nach po
+ dopo
+ naam: naam name
+ name jmeno
+ nome
+ nacommando: nacommando commandafter
+ zumbefehl prikazpo
+ comdandodopo
+ nboven: nboven ntop
+ noben nvrsek
+ ncima
+ niveau: niveau level
+ niveau uroven
+ livello
+ niveaus: niveaus levels
+ niveaus urovne
+ livelli
+ nonder: nonder nbottom
+ nunten nspodek
+ nfondo
+ norm: norm norm
+ norm norm
+ norma
+ nregels: nregels nlines
+ zzeile nradky
+ nrighe
+ nummer: nummer number
+ nummer cislo
+ numero
+ nummercommando: nummercommando numbercommand
+ nummerbefehl ciselnyprikaz
+ comandonumero
+ nummeren: nummeren numbering
+ nummerierung cislovani
+ numerazione
+ nummerkleur: nummerkleur numbercolor
+ nummernfarbe barvacisla
+ colorenumero
+ nummerletter: nummerletter numberstyle
+ nummernstil stylcisla
+ stilenumero
+ nummerscheider: nummerscheider numberseparator
+ nummernseperator oddelovaccisla
+ separatorenumero
+ object: object object
+ objekt objekt
+ oggetto
+ offset: offset offset
+ offset offset
+ offset
+ onder: onder bottom
+ unten spodek
+ fondo
+ onderafstand: onderafstand bottomdistance
+ abstandunten vzdalenostspodku
+ distanzafondo
+ onderkader: onderkader bottomframe
+ untenrahmen ramecekdole
+ cornicefondo
+ onderoffset: onderoffset bottomoffset
+ untenoffset offsetspodku
+ offsetfondo
+ onderstatus: onderstatus bottomstate
+ untenstatus statusspodku
+ statofondo
+ onevenmarge: onevenmarge oddmargin
+ ungeraderand lichyokraj
+ marginedispari
+ op: op at
+ bei u
+ ad
+ optie: optie option
+ option volba
+ opzione
+ pagina: pagina page
+ seite stranka
+ pagina
+ paginacommando: paginacommando pagecommand
+ seitenbefehl strankovyprikaz
+ comandopagina
+ paginakleur: paginakleur pagecolor
+ seitenfarbe barvastranky
+ colorepagina
+ paginaletter: paginaletter pagestyle
+ seitenstil stylstranky
+ stilepagina
+ paginanummer: paginanummer pagenumber
+ seitennummer cislostranky
+ numeropagina
+ paginaovergangen: paginaovergangen pageboundaries
+ seitenbegrenzung hranicestranky
+ limitipagina
+ palet: palet palet
+ palette paleta
+ tavolozza
+ papier: papier paper
+ papier papir
+ carta
+ plaats: plaats location
+ platz misto
+ location
+ plaatsafsluiter: plaatsafsluiter placestopper
+ setzetrenner predelmista
+ mettistopper % GB
+ plaatsen: plaatsen place
+ platziere umistit
+ metti % GB
+ plaatskop: plaatskop placehead
+ setzekopf umistihlavicku
+ mettitesta % GB
+ positie: positie position
+ position position
+ position % TB TH GB
+ prefix: prefix prefix
+ prefix prefix
+ prefisso
+ preset: preset preset
+ voreinstellung prednastaveni
+ preimpostato % GB
+ preview: preview preview
+ vorschau nahled
+ anteprima
+ punt: punt dot
+ punkt tecka
+ punto
+ pijl: pijl arrow
+ pfeil sipka
+ freccia
+ rand: rand edge
+ kante hrana
+ bordo
+ randafstand: randafstand edgedistance
+ kantenabstand vzdalenosthrany
+ distanzabordo
+ raster: raster screen
+ raster rastr
+ schermo
+ rechterbreedte: rechterbreedte rightwidth
+ rechterbreite sirkavpravo
+ ampiezzadestra
+ rechterkader: rechterkader rightframe
+ rechterrahmen ramecekvpravo
+ cornicedestra
+ rechterkleur: rechterkleur rightcolor
+ rechterfarbe barvavpravo
+ coloredestra
+ rechterletter: rechterletter rightstyle
+ rechterstil stylvpravo
+ stiledestra
+ rechtermarge: rechtermarge rightmargin
+ rechterrand pravyokraj
+ marginedestro
+ rechtermargeafstand: rechtermargeafstand rightmargindistance
+ rechterrandabstand vzdalenostpravehookraje
+ distanzamarginedestro
+ rechteroffset: rechteroffset rightoffset
+ rechterabstand pravyoffset
+ offsetdestro
+ rechterrand: rechterrand rightedge
+ rechtekante pravahrana
+ bordodestro
+ rechterrandafstand: rechterrandafstand rightedgedistance
+ rechterkantenabstand vzdalenostpravehrany
+ distanzabordodestro
+ rechtertekst: rechtertekst righttext
+ rechtertext textvpravo
+ testodestro % GB
+ rechts: rechts right
+ rechts vpravo
+ destra
+ reductie: reductie reduction
+ reduktion redukce
+ riduzione
+ refereren: refereren referencing
+ referieren odkazujici
+ referencing % GB
+ regel: regel line
+ zeile radek
+ riga
+ regelcorrectie: regelcorrectie linecorrection
+ zeilekorrektur korekceradku
+ correzioneriga
+ regels: regels lines
+ zeilen radky
+ righe
+ resolutie: resolutie resolution
+ aufloesung rozliseni
+ risoluzione
+ rotatie: rotatie rotation
+ rotation rotace
+ rotazione
+ rugoffset: rugoffset horoffset
+ rumpfabstand horoffset
+ horoffset % GB
+ rugwit: rugwit backspace
+ rumpfspatium zpetnamezera
+ backspace % GB
+ richting: richting direction
+ richtung smer
+ direzione
+ schaal: schaal scale
+ format meritko
+ scale % GB
+ scheider: scheider separator
+ seperator oddelovac
+ separatore
+ scherm: scherm display
+ bildschirm obrazovka
+ display % GB
+ scope: scope scope
+ bereich rozsah
+ scope % GB
+ sectie: sectie section
+ abschnitt oddil
+ sezione
+ sectienummer: sectienummer sectionnumber
+ abschnittsnummer cislooddilu
+ numerosezione
+ snijwit: snijwit cutspace
+ cutspace cutspace
+ cutspace % GB
+ soort: soort family
+ familie rodina
+ famiglia
+ spatie: spatie space
+ spatium mezera
+ spazio
+ spatiering: spatiering spacing
+ spatiumausgleich mezerovani
+ spaziatura
+ splitsen: splitsen split
+ split split
+ split % TB TH GB
+ springvolgendein: springvolgendein indentnext
+ ziehefolgendeein odsadpristi
+ rientrosuccessivo
+ stap: stap step
+ schritt krok
+ passo
+ start: start start
+ start start
+ inizia
+ status: status state
+ status status
+ stato
+ stop: stop stop
+ stop stop
+ termina
+ straal: straal radius
+ radius polomer
+ raggio
+ streep: streep dash
+ strich pomlcka
+ dash % GB
+ sub: sub sub
+ unter pod
+ sotto
+ subtitel: subtitel subtitle
+ untertitel podtitulek
+ sottotitolo
+ symbool: symbool symbol
+ symbol symbol
+ simbolo
+ symboolset: symboolset symbolset
+ symbolset sadasymbolu
+ setsimboli
+ symkleur: symkleur symcolor
+ symfarbe barvasymbolu
+ coloresimbolo
+ symletter: symletter symstyle
+ symstil stylsymboly
+ stilesimbolo
+ synoniem: synoniem synonym
+ synonym synonymum
+ sinonimo
+ synoniemkleur: synoniemkleur synonymcolor
+ synonymfarbe barvasynonyma
+ coloresinonimi
+ synoniemletter: synoniemletter synonymstyle
+ synonymstil stylsynonyma
+ stilesinonimi
+ tab: tab tab
+ tab tab
+ tab
+ teken: teken sign
+ zeichen znak
+ segno
+ tekst: tekst text
+ text text
+ testo
+ tekstbreedte: tekstbreedte textwidth
+ textbreite sirkatextu
+ ampiezzatesto
+ tekstcommando: tekstcommando textcommand
+ textbefehl textovyprikaz
+ comandotesto
+ tekstformaat: tekstformaat textsize
+ textgroesse velikosttextu
+ dimensionetesto
+ tekstkleur: tekstkleur textcolor
+ textfarbe barvatextu
+ coloretesto
+ tekstletter: tekstletter textstyle
+ textstil styltextu
+ stiletesto
+ tekstscheider: tekstscheider textseparator
+ textseparator oddelovactextu
+ separatoretesto
+ tekststatus: tekststatus textstate
+ textstatus statustextu
+ statotesto
+ titel: titel title
+ titel titul
+ titolo
+ titeluitlijnen: titeluitlijnen aligntitle
+ titelausrichten zarovnejtitul
+ allineatitolo
+ tolerantie: tolerantie tolerance
+ toleranz tolerance
+ tolleranza
+ tussen: tussen inbetween
+ zwischen mezi
+ tra
+ type: type type
+ typ typ
+ type % GB
+ uitlijnen: uitlijnen align
+ ausrichtung zarovnani
+ allinea
+ urlspatie: urlspatie urlspace
+ urlspatium prostorurl
+ spaziourl
+ urlvariant: urlvariant urlalternative
+ urlalternative urlalternativa
+ alternativaurl
+ van: van from
+ von z
+ da
+ variant: variant alternative
+ alternative alternativa
+ alternativa
+ verhoog: verhoog increment
+ erhoehen zvysit
+ incremento % GB
+ verhoognummer: verhoognummer incrementnumber
+ nummererhoehen zvysujicicislo
+ incrementanumero
+ verwijzing: verwijzing reference
+ referenz odkaz
+ riferimento
+ onbekendeverwijzing: onbekendeverwijzing unknownreference
+ unbekantereferenz neznamyodkaz
+ riferimentoingoto
+ voet: voet footer
+ fusszeile upati
+ piedipagina
+ voetafstand: voetafstand footerdistance
+ fusszeilenabstand vzdalenostupati
+ distanzapdp
+ voetstatus: voetstatus footerstate
+ fusszeilenstatus statusupati
+ statopdp
+ voffset: voffset voffset
+ voffset voffset
+ voffset
+ volgende: volgende next
+ folgende dalsi
+ successivo
+ voor: voor before
+ vor pred
+ prima
+ voorcommando: voorcommando commandbefore
+ vorbefehl predchoziprikaz
+ comandoprima
+ vorige: vorige previous
+ vorige predchozi
+ precedente
+ vorigenummer: vorigenummer previousnumber
+ vorigenummer predchozicislo
+ numeroprecedente
+ wachttijd: wachttijd delay
+ wartezeit prodleva
+ attesa
+ wijze: wijze way
+ art zpusob
+ modo
+ willekeur: willekeur random
+ zufaellig nahodne
+ casuale
+ wit: wit white
+ weiss bily
+ bianco
+ xfactor: xfactor xfactor
+ xfaktor xfaktor
+ xfactor % GB
+ xmax: xmax xmax
+ xmax xmax
+ xmax % GB
+ xoffset: xoffset xoffset
+ xoffset xoffset
+ xoffset % GB
+ xschaal: xschaal xscale
+ xformat xmeritko
+ xscale % GB
+ xstap: xstap xstep
+ xschritt xkrok
+ xstep % GB
+ yfactor: yfactor yfactor
+ yfaktor yfaktor
+ yfactor % GB
+ ymax: ymax ymax
+ ymax ymax
+ ymax % GB
+ yoffset: yoffset yoffset
+ yoffset yoffset
+ yoffset % GB
+ yschaal: yschaal yscale
+ yformat ymeritko
+ yscale % GB
+ ystap: ystap ystep
+ yschritt ykrok
+ ystep % GB
+ zelfdepagina: zelfdepagina samepage
+ selbeseite stejnastranka
+ stessapagina
+ zij: zij side
+ objektabstand pocitat
+ lato
+ veldachtergrondkleur: veldachtergrondkleur fieldbackgroundcolor
+ feldhintergrundfarbe barvapozadipole
+ coloresfondocampo
+ veldkaderkleur: veldkaderkleur fieldframecolor
+ feldrahmenfarbe barvarameckupole
+ colorecornicecampo
+ veldoffset: veldoffset fieldoffset
+ feldoffset offsetpole
+ offsetcampo
+ openactie: openactie openaction
+ oeffenaktion otevriakci
+ azioneapri
+ sluitactie: sluitactie closeaction
+ schliessenaktion zavriakci
+ azionechiudi
+ openpaginaactie: openpaginaactie openpageaction
+ openpageaction akceotevrenistranky
+ azioneapripagina % TB
+ sluitpaginaactie: sluitpaginaactie closepageaction
+ closepageaction akcezavrenistranky
+ azionechiudipagina % TB
+ klikin: klikin clickin
+ klickin klikuvnitr
+ clickdentro
+ klikuit: klikuit clickout
+ klickaus klikvne
+ clickfuori
+ gebiedin: gebiedin regionin
+ regionin oblastuvnitr
+ entraregione
+ gebieduit: gebieduit regionout
+ regionaus oblastvne
+ esciregione
+ natoets: natoets afterkey
+ nachtaste klavesapo
+ dopotasto
+ formatteer: formatteer format
+ formatieren formatovat
+ format % GB
+ valideer: valideer validate
+ validieren validovat
+ verifica
+ bereken: bereken calculate
+ berechnen pocitat
+ calcola
+ klik: klik click
+ klick klik
+ click
+ vcommando: vcommando vcommand
+ vbefehl vprikaz
+ vcomando
+ icommando: icommando icommand
+ ibefehl iprikaz
+ icomando
+ ccommando: ccommando ccommand
+ cbefehl cprikaz
+ ccomando
\stopconstants
@@ -853,502 +1256,773 @@ veldachtergrondkleur: veldachtergrondkleur fieldbackgroundcolor feldhintergrund
%D \startcompressdefinitions
-\startvariables dutch english german
- czech
-
- aan: aan on an
- zap % opposite of off
-
- aanelkaar: aanelkaar serried kleinerabstand
- semknuto
- aansluitend: aansluitend joinedup keinabstand
- spojeno
- absoluut: absoluut absolute absolut
- absolutni
- achtergrond: achtergrond background hintergrund
- pozadi
- achteruit: achteruit backward rueckwaerts
- zpet
- actie: actie action aktion
- akce
- afsluiter: afsluiter stopper trenner
- predel
- alinea: alinea paragraph absatz
- odstavec
- alles: alles all alles
- vse
- altijd: altijd always immer
- vzdy
- autointro: autointro autointro autointro
- autouvod
- beide: beide both beide
- obe
- binnen: binnen inner innen
- vnitrni
- blanko: blanko blank blanko
- prazdny
- blokkeer: blokkeer disable sperren
- zablokovat
- boven: boven top oben
- vrsek
- breed: breed wide breit
- siroce
- breedte: breedte width breite
- sirka
- buffer: buffer buffer puffer
- buffer
- buiten: buiten outer aussen
- vnejsi
- cijfers: cijfers numbers ziffern
- cisla
- Cijfers: Cijfers Numbers Ziffern
- Cisla
- commando: commando command befehl
- prikaz
- commandos: commandos commands befehle
- prikazy
- concept: concept concept konzept
- koncept
- dag: dag day tag
- den
- datum: datum date datum
- datum
- default: default default default
- implicitni
- definitief: definitief final endfassung
- finalni
- diepte: diepte depth tiefe
- podlehloubky % ? hloubka
- dubbelzijdig: dubbelzijdig doublesided doppelseitig
- dvoustranny
- eerste: eerste first erste
- prvni
- elk: elk each jede
- kazdy
- enkelzijdig: enkelzijdig singlesided einzelseitig
- jednostranne
- ergens: ergens somewhere irgendwo
- nekde
- nergens: nergens nowhere nirgens
- nikde
- even: even even gerade
- sude
- extern: extern external extern
- externi
- file: file file datei
- soubor
- flexibel: flexibel flexible flexibel
- prizpusobive
- forceer: forceer force zwinge
- sila
- gebruikt: gebruikt used verwende
- uzito
- geen: geen none kein
- zadny
- geenmarkering: geenmarkering nomarking keinebeschriftung
- zadneznaceni
- geenwit: geenwit nowhite keinweiss
- zadnabila
- geroteerd: geroteerd rotated gedreht
- otoceno
- gespiegeld: gespiegeld mirrored gespiegelt
- zrcadleno
- globaal: globaal global global
- globalne
- grid: grid grid gritter
- mrizka
- groot: groot big gross
- velky
- grotevoorkeur: grotevoorkeur bigpreference grosszuegig
- vysokapriorita
- grijs: grijs gray grau
- seda
- halveregel: halveregel halfline halbezeile
- pulradku
- handhaaf: handhaaf keep behalte
- drzet
- hangend: hangend hanging haengend
- visici
- herhaal: herhaal repeat wiederholen
- opakovat
- herstel: herstel fix stellewiederher
- fixuj
- hier: hier here hier
- zde
- hoofd: hoofd header kopfzeile
- zahlavi
- hoog: hoog high hoch
- vysoko
- hoogte: hoogte height hoehe
- vyska
- horizontaal: horizontaal horizontal horizontal
- horizontalne
- huidige: huidige current aktuell
- aktualni
- italic: italic italic italic
- kurziva
- inlinker: inlinker inleft imlinken
- vlevo
- inmarge: inmarge inmargin imrand
- naokraji
- inrechter: inrechter inright imrechten
- vpravo
- interactie: interactie interaction interaktion
- interakce
- intekst: intekst intext imtext
- dotextu
- intro: intro intro intro
- uvod
- its: its its its
- pol
- ja: ja yes ja
- ano
- jaar: jaar year jahr
- rok
- kader: kader frame rahmen
- ramecek
- kantlijn: kantlijn marginedge marginalkante
- textovahrana
- kap: kap cap kap
- kap
- kapitaal: kapitaal capital versalien
- verzalky
- kenmerk: kenmerk referral merkmal
- znacka
- klein: klein small klein
- male
- kleinnormaal: kleinnormaal smallnormal kleinnormal
- malenormalni
- kleinschuin: kleinschuin smallslanted kleingeneigt
- malesklonene
- kleinschuinvet: kleinschuinvet smallslantedbold kleingeneigtfett
- malesklonenetucne
- kleinitalic: kleinitalic smallitalic kleinitalic
- malekurzivni
- kleinitalicvet: kleinitalicvet smallitalicbold kleinitalicfett
- malekurzivnitucne
- kleintype: kleintype smalltype kleintippen
- maletype
- kleinvet: kleinvet smallbold kleinfett
- maletucne
- kleinvetschuin: kleinvetschuin smallboldslanted kleinfettgeneigt
- maletucnesklonene
- kleinvetitalic: kleinvetitalic smallbolditalic kleinfettitalic
- maletucnekurzivni
- kleur: kleur color farbe
- barevne
- kolommen: kolommen columns spalten
- sloupce
- kop: kop head kopf
- hlavicka
- laag: laag low tief
- nizko
- laatste: laatste last letzte
- posledni
- label: label label label
- popisek
- lang: lang tall lang
- vysoko
- leeg: leeg empty leer
- prazdne
- Letter: Letter Character Buchstabe
- Pismeno
- letter: letter character buchstabe
- pismeno
- Letters: Letters Characters Buchstaben
- Pismena
- letters: letters characters buchstaben
- pismena
- liggend: liggend landscape querformat
- nasirku
- lijn: lijn rule linie
- linka
- lijst: lijst list liste
- seznam
- linkermarge: linkermarge leftmargin linkerrand
- levyokraj
- linkerpagina: linkerpagina leftpage linkerseite
- levastranka
- linkerrand: linkerrand leftedge linkekante
- levahrana
- links: links left links
- vlevo
- lokaal: lokaal local lokal
- lokalne
- nieuw: nieuw new neu
- novy
- MAAND: MAAND MONTH MONAT
- MESIC
- maand: maand month monat
- mesic
- mar: mar mar mar
- mar
- marge: marge margin marginalie
- marginalie
- max: max max max
- max
- mediaeval: mediaeval mediaeval mittelalterlich
- stredoveky
- middel: middel medium mittel
- stredni
- midden: midden middle mittig
- nastred
- na: na after nach
- po
- naam: naam name name
- jmeno
- naast: naast opposite gegenueber
- naproti % ? opacna
- nee: nee no nein
- ne
- negatief: negatief negative negativ
- negativ
- niet: niet not nicht
- ne
- nooit: nooit never nie
- nikdy
- normaal: normaal normal normal
- normalni
- nummer: nummer number nummer
- cislo
- offset: offset offset offset
- offset
- onbekend: onbekend unknown unbekannt
- neznamy
- onder: onder bottom unten
- spodek
- oneven: oneven odd ungerade
- liche
- opelkaar: opelkaar packed gepackt
- zhustene
- vanelkaar: vanelkaar unpacked ungepackt
- rozbalene
- opmaak: opmaak markup umbruch
- zlom
- opmarge: opmarge atmargin amrand
- naokraji
- overlay: overlay overlay overlay
- prekryv
- pagina: pagina page seite
- stranka
- paginanummer: paginanummer pagenumber seitennummer
- cislostranky
- papier: papier paper papier
- papir
- scherm: scherm display bildschirm
- obrazovka
- passend: passend fit passend
- prizpusobive
- postscript: postscript postscript postscript
- postscript
- preview: preview preview vorschau
- nahled
- programma: programma program programm
- program
- punt: punt dot punkt
- tecka
- ran: ran ran ran
- rozsah
- rand: rand edge kante
- hrana
- raster: raster screen raster
- rastr
- recht: recht rectangular rechteckig
- pravouhly
- rechtermarge: rechtermarge rightmargin rechterrand
- pravyokraj
- rechterpagina: rechterpagina rightpage rechterseite
- pravastranka
- rechterrand: rechterrand rightedge rechterkante
- pravahrana
- rechts: rechts right rechts
- vpravo
- regel: regel line zeile
- radek
- register: register register register
- rejstrik
- relatief: relatief relative relativ
- relativni
- reset: reset reset zuruecksetzten
- reset
- Romeins: Romeins Romannumerals Roemischezahlen
- Rimskecislice
- romeins: romeins romannumerals roemischezahlen
- rimskecislice
- grieks: grieks greek griechisch
- recky
- Grieks: Grieks Greek Griechisch
- Recky
- rond: rond round rund
- zaobleny
- roteer: roteer rotate drehe
- otoc
- rek: rek stretch strecken
- natahnout
- ruim: ruim broad breit
- siroky
- schuin: schuin slanted geneigt
- sklonene
- schuinvet: schuinvet slantedbold geneigtfett
- sklonenetucne
- italicvet: italicvet italicbold italicfett
- kurzivnitucne
- sectienummer: sectienummer sectionnumber abschnittsnummer
- cislooddilu
- smal: smal narrow schmall
- uzky
- soepel: soepel tolerant tolerant
- tolerantni
- standaard: standaard standard standard
- standardni
- start: start start start
- start
- stop: stop stop stop
- stop
- streng: streng strict streng
- striktni
- strut: strut strut strut
- strut
- sub: sub sub unter
- pod
- sym: sym sym sym
- sym
- symbool: symbool symbol symbol
- symbol
- tekst: tekst text text
- text
- back: terug back zurueck
- zpet
- test: test test test
- test
- tussen: tussen inbetween zwischen
- mezi
- type: type type tippen
- type
- uit: uit off aus
- vyp % opposite of on
- url: url url url
- url
- URL: URL URL URL
- URL
- vast: vast fixed fest
- fixne
- los: los loose lose
- uvolnene
- verder: verder continue fortsetzten
- pokracovat
- vertikaal: vertikaal vertical vertikal
- vertikalne
- vet: vet bold fett
- tucne
- vetschuin: vetschuin boldslanted fettgeneigt
- tucnesklonene
- vetitalic: vetitalic bolditalic fettitalic
- tucnekurzivni
- viertal: viertal quadruple viertel
- ctyrnasobny
- voet: voet footer fusszeile
- upati
- volgende: volgende next folgende
- dalsi
- voor: voor before vor
- pred
- voorgrond: voorgrond foreground vordergrund
- popredi
- voorkeur: voorkeur preference einstellung
- nastaveni
- voorlopig: voorlopig temporary temporaer
- docasne
- vooruit: vooruit forward vorwaerts
- vpred
- vorige: vorige previous vorig
- predchozi
- waarde: waarde value wert
- hodnota
- week: week week woche
- tyden
- weekdag: weekdag weekday wochentag
- vsedniden
- WEEKDAG: WEEKDAG WEEKDAY WOCHENTAG
- VSEDNIDEN
- willekeurig: willekeurig random zufaellig
- nahodny
- wit: wit white weiss
- bily
- zeer: zeer very sehr
- velmi
- zeersoepel: zeersoepel verytolerant sehrtolerant
- velmitolerantni
- zeerstreng: zeerstreng verystrict sehrstreng
- velmistriktni
- zie: zie see sieh
- viz
-
- smallcaps: smallcaps smallcaps smallcaps
- maleverzalky
- WOORD: WOORD WORD WORT
- SLOVO
-
- eerstepagina: eerstepagina firstpage ersteseite
- prvnistranka
- vorigepagina: vorigepagina previouspage vorigeseite
- predchozistranka
- volgendepagina: volgendepagina nextpage folgendeseite
- dalsistranka
- laatstepagina: laatstepagina lastpage letzteseite
- poslednistranka
- eerstesubpagina: eerstesubpagina firstsubpage ersteunterseite
- prvnipodstranka
- vorigesubpagina: vorigesubpagina previoussubpage vorigeunterseite
- predchozipodstranka
- volgendesubpagina: volgendesubpagina nextsubpage folgendeunterseite
- dalsipodstranka
- laatstesubpagina: laatstesubpagina lastsubpage letzteunterseite
- poslaednipodstranka
-
- volgendeevenpagina: volgendeevenpagina nextevenpage naechstegeradeseite
- dalsisudastranka
-volgendeonevenpagina: volgendeonevenpagina nextoddpage naechsteungeradeseite
- dalsilichastranka
- vorigeevenpagina: vorigeevenpagina previousevenpage vorigegeradeseite
- predchozisudastranka
- vorigeonevenpagina: vorigeonevenpagina previousoddpage vorigeungeradeseite
- predchozilichastranka
-
- alleenleesbaar: alleenleesbaar readonly nurlesbar
- pouzeprocteni
- verplicht: verplicht required obligatorisch
- pozadovane
- beschermd: beschermd protected geschuetzt
- chranene
- gesorteerd: gesorteerd sorted sortiert
- tridene
- nietbeschikbaar: nietbeschikbaar unavailable nichtverfuegbar
- nedostupne
- verborgen: verborgen hidden versteckt
- skryte
- printbaar: printbaar printable druckbar
- tisknutelne
-
- bookmark: bookmark bookmark bookmark
- zalozka
-
+\startvariables dutch english
+ german czech
+ italian
+
+ aan: aan on
+ an zap
+ attivo
+ aanelkaar: aanelkaar serried
+ kleinerabstand semknuto
+ serried % GB
+ aansluitend: aansluitend joinedup
+ keinabstand spojeno
+ uniti
+ absoluut: absoluut absolute
+ absolut absolutni
+ assoluto
+ achtergrond: achtergrond background
+ hintergrund pozadi
+ sfondo
+ achteruit: achteruit backward
+ rueckwaerts zpet
+ indietro
+ actie: actie action
+ aktion akce
+ azione
+ afsluiter: afsluiter stopper
+ trenner predel
+ stopper
+ alinea: alinea paragraph
+ absatz odstavec
+ capoverso %paragrafo
+ alles: alles all
+ alles vse
+ tutti
+ altijd: altijd always
+ immer vzdy
+ sempre
+ autointro: autointro autointro
+ autointro autouvod
+ autointro
+ beide: beide both
+ beide obe
+ entrambi
+ binnen: binnen inner
+ innen uvnitr
+ interno
+ blanko: blanko blank
+ blanko prazdny
+ blank % GB
+ blokkeer: blokkeer disable
+ sperren zablokovat
+ disattiva
+ boven: boven top
+ oben vrsek
+ cima
+ breed: breed wide
+ breit siroce
+ ampio
+ breedte: breedte width
+ breite sirka
+ ampiezza
+ buffer: buffer buffer
+ puffer buffer
+ buffer
+ buiten: buiten outer
+ aussen vnejsi
+ esterno
+ cijfers: cijfers numbers
+ ziffern cisla
+ numeri
+ Cijfers: Cijfers Numbers
+ Ziffern Cisla
+ Numeri
+ commando: commando command
+ befehl prikaz
+ comando
+ commandos: commandos commands
+ befehle prikazy
+ comandi
+ concept: concept concept
+ konzept koncept
+ concetto
+ dag: dag day
+ tag den
+ giorno
+ datum: datum date
+ datum datum
+ data
+ default: default default
+ default implicitni
+ implicito
+ definitief: definitief final
+ endfassung finalni
+ finale
+ diepte: diepte depth
+ tiefe podlehloubky
+ profondita % GB
+ dubbelzijdig: dubbelzijdig doublesided
+ doppelseitig dvoustranny
+ doppiafaccia
+ eerste: eerste first
+ erste prvni
+ primo
+ elk: elk each
+ jede kazdy
+ ogni
+ enkelzijdig: enkelzijdig singlesided
+ einzelseitig jednostranne
+ facciasingola
+ ergens: ergens somewhere
+ irgendwo nekde
+ daqualcheparte
+ nergens: nergens nowhere
+ nirgens nikde
+ danessunaparte
+ even: even even
+ gerade sude
+ pari
+ extern: extern external
+ extern externi
+ esterno
+ file: file file
+ datei soubor
+ file
+ flexibel: flexibel flexible
+ flexibel prizpusobive
+ flessibile
+ forceer: forceer force
+ zwinge sila
+ forza
+ gebruikt: gebruikt used
+ verwende uzito
+ usato
+ geen: geen none
+ kein zadny
+ nessuno
+ geenmarkering: geenmarkering nomarking
+ keinebeschriftung zadneznaceni
+ nomarcature
+ geenwit: geenwit nowhite
+ keinweiss zadnabila
+ nobianco
+ geroteerd: geroteerd rotated
+ gedreht otoceno
+ ruotato
+ gespiegeld: gespiegeld mirrored
+ gespiegelt zrcadleno
+ riflesso
+ globaal: globaal global
+ global globalne
+ globale
+ grid: grid grid
+ gritter mrizka
+ griglia
+ groot: groot big
+ gross velke
+ grande
+ grotevoorkeur: grotevoorkeur bigpreference
+ grosszuegig vysokapriorita
+ grandepreferenza
+ grijs: grijs gray
+ grau seda
+ grigio
+ halveregel: halveregel halfline
+ halbezeile pulradku
+ mezzariga
+ handhaaf: handhaaf keep
+ behalte drzet
+ mantieni
+ hangend: hangend hanging
+ haengend visici
+ sospeso
+ herhaal: herhaal repeat
+ wiederholen opakovat
+ ripeti
+ herstel: herstel fix
+ stellewiederher fixuj
+ fisso
+ hier: hier here
+ hier zde
+ qui
+ hoofd: hoofd header
+ kopfzeile zahlavi
+ intestazione %testatina
+ hoog: hoog high
+ hoch vysoko
+ alto
+ hoogte: hoogte height
+ hoehe vyska
+ altezza
+ horizontaal: horizontaal horizontal
+ horizontal horizontalne
+ orizzontale
+ huidige: huidige current
+ aktuell aktualni
+ corrente
+ italic: italic italic
+ italic kurziva
+ corsivo
+ inlinker: inlinker inleft
+ imlinken vlevo
+ insinistra
+ inmarge: inmarge inmargin
+ imrand naokraji
+ inmargine
+ inrechter: inrechter inright
+ imrechten vpravo
+ indestra
+ interactie: interactie interaction
+ interaktion interakce
+ interazione
+ intekst: intekst intext
+ imtext dotextu
+ intesto
+ intro: intro intro
+ intro uvod
+ intro
+ its: its its
+ its pol
+ suo
+ ja: ja yes
+ ja ano
+ si
+ jaar: jaar year
+ jahr rok
+ anno
+ kader: kader frame
+ rahmen ramecek
+ cornice
+ kantlijn: kantlijn marginedge
+ marginalkante textovahrana
+ bordomargine
+ kap: kap cap
+ kap kap
+ cap % GB
+ kapitaal: kapitaal capital
+ versalien kapitalky
+ maiuscolo
+ kenmerk: kenmerk referral
+ merkmal znacka
+ referral % GB
+ klein: klein small
+ klein male
+ piccolo
+ kleinnormaal: kleinnormaal smallnormal
+ kleinnormal malenormalni
+ piccolonormale
+ kleinschuin: kleinschuin smallslanted
+ kleingeneigt malesklonene
+ piccoloinclinato
+ kleinschuinvet: kleinschuinvet smallslantedbold
+ kleingeneigtfett malesklonenetucne
+ piccoloinclinatograssetto
+ kleinitalic: kleinitalic smallitalic
+ kleinitalic malekurzivni
+ piccolocorsivo
+ kleinitalicvet: kleinitalicvet smallitalicbold
+ kleinitalicfett malekurzivnitucne
+ piccolocorsivograssetto
+ kleintype: kleintype smalltype
+ kleintippen maletype
+ piccolotype % GB
+ kleinvet: kleinvet smallbold
+ kleinfett maletucne
+ piccolograssetto
+ kleinvetschuin: kleinvetschuin smallboldslanted
+ kleinfettgeneigt maletucnesklonene
+ piccolograssettoinclinato
+ kleinvetitalic: kleinvetitalic smallbolditalic
+ kleinfettitalic maletucnekurzivni
+ piccolograssettocorsivo
+ kleur: kleur color
+ farbe barevne
+ colore
+ kolom: kolom column
+ column column
+ colonna % TB TH
+ kolommen: kolommen columns
+ spalten sloupce
+ colonne
+ kop: kop head
+ kopf hlavicka
+ testa % GB
+ laag: laag low
+ tief nizko
+ basso
+ laatste: laatste last
+ letzte posledni
+ ultimo
+ label: label label
+ label popisek
+ etichetta
+ laho: laho lohi
+ hoti nivy
+ pedap % TB TH
+ lang: lang tall
+ lang vysoko
+ alto % GB
+ leeg: leeg empty
+ leer prazdne
+ vuoto
+ Letter: Letter Character
+ Buchstabe Pismeno
+ Carattere
+ letter: letter character
+ buchstabe pismeno
+ carattere
+ Letters: Letters Characters
+ Buchstaben Pismena
+ Caratteri
+ letters: letters characters
+ buchstaben pismena
+ caratteri
+ liggend: liggend landscape
+ querformat nasirku
+ orizzontale
+ lijn: lijn rule
+ linie linka
+ linea
+ lijst: lijst list
+ liste seznam
+ elenco
+ linkermarge: linkermarge leftmargin
+ linkerrand levyokraj
+ marginesinistro
+ linkerpagina: linkerpagina leftpage
+ linkerseite levastranka
+ paginasinistra
+ linkerrand: linkerrand leftedge
+ linkekante levahrana
+ bordosinistro
+ links: links left
+ links vlevo
+ sinistra
+ lokaal: lokaal local
+ lokal lokalne
+ locale
+ nieuw: nieuw new
+ neu novy
+ nuovo
+ MAAND: MAAND MONTH
+ MONAT MESIC
+ MESE
+ maand: maand month
+ monat mesic
+ mese
+ mar: mar mar
+ mar mar
+ mar % GB
+ marge: marge margin
+ marginalie marginalie
+ margine
+ max: max max
+ max max
+ max
+ mediaeval: mediaeval mediaeval
+ mittelalterlich stredoveky
+ medievale
+ middel: middel medium
+ mittel stredni
+ medio
+ midden: midden middle
+ mittig nastred
+ centro
+ na: na after
+ nach po
+ dopo
+ naam: naam name
+ name jmeno
+ nome
+ naast: naast opposite
+ gegenueber naproti
+ opposto
+ nee: nee no
+ nein ne
+ no
+ negatief: negatief negative
+ negativ negativ
+ negativo
+ niet: niet not
+ nicht ne
+ non
+ nooit: nooit never
+ nie nikdy
+ mai
+ normaal: normaal normal
+ normal normalni
+ normale
+ nummer: nummer number
+ nummer cislo
+ numero
+ offset: offset offset
+ offset offset
+ offset
+ onbekend: onbekend unknown
+ unbekannt neznamy
+ ignoto
+ onder: onder bottom
+ unten spodek
+ fondo
+ oneven: oneven odd
+ ungerade liche
+ dispari
+ opelkaar: opelkaar packed
+ gepackt zhustene
+ raggruppati
+ vanelkaar: vanelkaar unpacked
+ ungepackt rozbalene
+ unpacked % GB
+ opmaak: opmaak markup
+ umbruch zlom
+ markup % GB
+ opmarge: opmarge atmargin
+ amrand naokraji
+ almargine
+ overlay: overlay overlay
+ overlay prekryv
+ sovrapponi
+ pagina: pagina page
+ seite stranka
+ pagina
+ paginanummer: paginanummer pagenumber
+ seitennummer cislostranky
+ numeropagina
+ papier: papier paper
+ papier papir
+ carta
+ scherm: scherm display
+ bildschirm obrazovka
+ display % GB
+ passend: passend fit
+ passend prizpusobive
+ adatta
+ postscript: postscript postscript
+ postscript postscript
+ postscript
+ preview: preview preview
+ vorschau nahled
+ anteprima
+ programma: programma program
+ programm program
+ programma
+ punt: punt dot
+ punkt tecka
+ punto
+ ran: ran ran
+ ran rozsah
+ corse
+ rand: rand edge
+ kante hrana
+ bordo
+ raster: raster screen
+ raster rastr
+ schermo
+ recht: recht rectangular
+ rechteckig pravouhly
+ rettangolare
+ rechtermarge: rechtermarge rightmargin
+ rechterrand pravyokraj
+ marginedestro
+ rechterpagina: rechterpagina rightpage
+ rechterseite pravastranka
+ paginadestra
+ rechterrand: rechterrand rightedge
+ rechterkante pravahrana
+ bordodestro
+ rechts: rechts right
+ rechts vpravo
+ destra
+ regel: regel line
+ zeile radek
+ riga
+ register: register register
+ register rejstrik
+ registro
+ relatief: relatief relative
+ relativ relativni
+ relativo
+ reset: reset reset
+ zuruecksetzten reset
+ reimposta
+ Romeins: Romeins Romannumerals
+ Roemischezahlen Rimskecislice
+ Numeriromani
+ romeins: romeins romannumerals
+ roemischezahlen rimskecislice
+ numeriromani
+ grieks: grieks greek
+ griechisch recky
+ greco
+ Grieks: Grieks Greek
+ Griechisch Recky
+ Greco
+ rond: rond round
+ rund zaobleny
+ rotondo
+ roteer: roteer rotate
+ drehe otoc
+ ruota
+ rek: rek stretch
+ strecken natahnout
+ dilata
+ ruim: ruim broad
+ breit siroky
+ ampio
+ rij: rij row
+ row row
+ row % TB TH GB
+ schuin: schuin slanted
+ geneigt sklonene
+ inclinato
+ schuinvet: schuinvet slantedbold
+ geneigtfett sklonenetucne
+ inclinatograssetto
+ italicvet: italicvet italicbold
+ italicfett kurzivnitucne
+ corsivograssetto
+ sectienummer: sectienummer sectionnumber
+ abschnittsnummer cislooddilu
+ numerosezione
+ smal: smal narrow
+ schmall uzky
+ stretto
+ soepel: soepel tolerant
+ tolerant tolerantni
+ tollerante
+ standaard: standaard standard
+ standard standardni
+ standard
+ start: start start
+ start start
+ inizia
+ stop: stop stop
+ stop stop
+ termina
+ streng: streng strict
+ streng striktni
+ strict % GB
+ strut: strut strut
+ strut strut
+ strut
+ sub: sub sub
+ unter pod
+ sotto
+ sym: sym sym
+ sym sym
+ sim
+ symbool: symbool symbol
+ symbol symbol
+ simbolo
+ tekst: tekst text
+ text text
+ testo
+ back: terug back
+ zurueck zpet
+ dietro % GB
+ test: test test
+ test test
+ test
+ tussen: tussen inbetween
+ zwischen mezi
+ tra
+ type: type type
+ tippen type
+ type % GB
+ uit: uit off
+ aus vyp
+ disattivo
+ url: url url
+ url url
+ url
+ URL: URL URL
+ URL URL
+ URL
+ vast: vast fixed
+ fest fixne
+ fisso
+ los: los loose
+ lose uvolnene
+ lento
+ verder: verder continue
+ fortsetzten pokracovat
+ continua
+ vertikaal: vertikaal vertical
+ vertikal vertikalne
+ verticale
+ vet: vet bold
+ fett tucne
+ grassetto
+ vetschuin: vetschuin boldslanted
+ fettgeneigt tucnesklonene
+ grassettoinclinato
+ vetitalic: vetitalic bolditalic
+ fettitalic tucnekurzivni
+ grassettocorsivo
+ viertal: viertal quadruple
+ viertel ctyrnasobny
+ quadruplo
+ voet: voet footer
+ fusszeile upati
+ piedipagina
+ volgende: volgende next
+ folgende dalsi
+ successivo
+ voor: voor before
+ vor pred
+ prima
+ voorgrond: voorgrond foreground
+ vordergrund popredi
+ foreground % GB
+ voorkeur: voorkeur preference
+ einstellung nastaveni
+ preferenza
+ voorlopig: voorlopig temporary
+ temporaer docasne
+ temporaneo
+ vooruit: vooruit forward
+ vorwaerts vpred
+ avanti
+ vorige: vorige previous
+ vorig predchozi
+ precedente
+ waarde: waarde value
+ wert hodnota
+ valore
+ week: week week
+ woche tyden
+ settimana
+ weekdag: weekdag weekday
+ wochentag vsedniden
+ giornosettimana
+ WEEKDAG: WEEKDAG WEEKDAY
+ WOCHENTAG VSEDNIDEN
+ GIORNOSETTIMANA
+ willekeurig: willekeurig random
+ zufaellig nahodny
+ casuale
+ wit: wit white
+ weiss bily
+ bianco
+ zeer: zeer very
+ sehr velmi
+ molto
+ zeersoepel: zeersoepel verytolerant
+ sehrtolerant velmitolerantni
+ moltotollerante
+ zeerstreng: zeerstreng verystrict
+ sehrstreng velmistriktni
+ moltostrict % GB
+ zie: zie see
+ sieh viz
+ vedi
+ smallcaps: smallcaps smallcaps
+ smallcaps kapitalky
+ maiuscoletto
+ WOORD: WOORD WORD
+ WORT SLOVO
+ PAROLA
+ eerstepagina: eerstepagina firstpage
+ ersteseite prvnistranka
+ primapagina
+ vorigepagina: vorigepagina previouspage
+ vorigeseite predchozistranka
+ paginaprecedente
+ volgendepagina: volgendepagina nextpage
+ folgendeseite dalsistranka
+ paginasuccessiva
+ laatstepagina: laatstepagina lastpage
+ letzteseite poslednistrana
+ ultimapagina
+ eerstesubpagina: eerstesubpagina firstsubpage
+ ersteunterseite prvnipodstranka
+ primasottopagina
+ vorigesubpagina: vorigesubpagina previoussubpage
+ vorigeunterseite predchozipodstranka
+ sottopaginaprecedente
+ volgendesubpagina: volgendesubpagina nextsubpage
+ folgendeunterseite dalsipodstranka
+ sottopaginasuccessiva
+ laatstesubpagina: laatstesubpagina lastsubpage
+ letzteunterseite poslaednipodstranka
+ ultimasottopagina
+ volgendeevenpagina: volgendeevenpagina nextevenpage
+ naechstegeradeseite dalsisudastranka
+ paginaparisuccessiva
+ volgendeonevenpagina: volgendeonevenpagina nextoddpage
+ naechsteungeradeseite dalsilichastranka
+ paginadisparisuccessiva
+ vorigeevenpagina: vorigeevenpagina previousevenpage
+ vorigegeradeseite predchozisudastranka
+ paginapariprecedente
+ vorigeonevenpagina: vorigeonevenpagina previousoddpage
+ vorigeungeradeseite predchozilichastranka
+ paginadispariprecedente
+ alleenleesbaar: alleenleesbaar readonly
+ nurlesbar pouzeprocteni
+ solalettura
+ verplicht: verplicht required
+ obligatorisch pozadovane
+ richiestp
+ beschermd: beschermd protected
+ geschuetzt chranene
+ protetto
+ gesorteerd: gesorteerd sorted
+ sortiert tridene
+ ordinato
+ nietbeschikbaar: nietbeschikbaar unavailable
+ nichtverfuegbar nedostupne
+ non disponibile
+ verborgen: verborgen hidden
+ versteckt skryte
+ nascosto
+ printbaar: printbaar printable
+ druckbar tisknutelne
+ stampabile
+ bookmark: bookmark bookmark
+ bookmark zalozka
+ segnalibro
\stopvariables
+% nieuw, to be translated
+
+\startvariables dutch english
+ german czech
+ italian
+
+ niethangend: niethangend nothanging
+ nothanging nothanging
+ nothanging
+ afgebroken: afgebroken hyphenated
+ hyphenate hyphenated
+ hyphenate
+ nietafgebroken: afgebroken nothyphenated
+ nothyphenated nothyphenated
+ nothyphenated
+
+\stopvariables
+
+\startconstants dutch english
+ german czech
+ italian
+
+ globaal: globaal global
+ global globalne
+ globale
+
+\stopconstants
+
+% so far
+
%D \stopcompressdefinitions
-%D Maybe it's better to make the next few variables into
+%D Maybe it's better to make the next few variables into
%D elements as well.
%D \startcompressdefinitions
-\startvariables dutch english german
- czech
+\startvariables dutch english
+ german czech
+ italian
- conversie: conversie conversion konversion
- konverze
- per: per by pro
- skrz
+ conversie: conversie conversion
+ konversion konverze
+ coversione
+ per: per by
+ pro skrz
+ da
\stopvariables
@@ -1359,26 +2033,24 @@ volgendeonevenpagina: volgendeonevenpagina nextoddpage naechsteungerades
%D \startcompressdefinitions
-\startconstants all
-
- dx: dx
- dy: dy
- nx: nx
- ny: ny
- nr: nr
- nc: nc
- sx: sx
- sy: sy
- n: n
- vfil: vfil
- hfil: hfil
- strut: strut
- reset: reset
- set: set
-
- escape: escape
-
- apa: apa
+\startconstants all
+
+ dx: dx
+ dy: dy
+ nx: nx
+ ny: ny
+ nr: nr
+ nc: nc
+ sx: sx
+ sy: sy
+ n: n
+ vfil: vfil
+ hfil: hfil
+ strut: strut
+ reset: reset
+ set: set
+ escape: escape
+ apa: apa
\stopconstants
@@ -1389,33 +2061,43 @@ volgendeonevenpagina: volgendeonevenpagina nextoddpage naechsteungerades
%D \startcompressdefinitions
-\startvariables dutch english german
- czech
-
- calligraphic: calligrafie calligraphic kalligraphie
- krasopisne
- handwritten: handschrift handwritten handschrift
- rukopisne
- sansserif: schreefloos sansserif grotesk
- bezserifu
- roman: romaan roman antiqua
- antikva
- teletype: teletype teletype fernschreiber
- dalnopis
-
- type: type type tippen
- type
-
- serif: serif serif serif
- serif
- regular: regular regular regular
- radne
- support: support support support
- podpora
- sans: sans sans sans
- sans
- mono: mono mono mono
- mono
+\startvariables dutch english
+ german czech
+ italian
+
+ calligraphic: calligrafie calligraphic
+ kalligraphie kaligraficke
+ calligrafico
+ handwritten: handschrift handwritten
+ handschrift rukopisne
+ grafiamanuale
+ sansserif: schreefloos sansserif
+ grotesk bezserifu
+ sansserif % GB
+ roman: romaan roman
+ antiqua antikva
+ roman % GB
+ teletype: teletype teletype
+ fernschreiber strojopis
+ teletype % GB
+ type: type type
+ tippen opis
+ type % GB
+ serif: serif serif
+ serif serif
+ serif % GB
+ regular: regular regular
+ regular pravidelne
+ regolare
+ support: support support
+ support podpora
+ supporto
+ sans: sans sans
+ sans sans
+ sans
+ mono: mono mono
+ mono mono
+ mono
\stopvariables
@@ -1429,43 +2111,61 @@ volgendeonevenpagina: volgendeonevenpagina nextoddpage naechsteungerades
%D \startcompressdefinitions
-\startsetupvariables dutch english german
- czech
-
- doornummering: doornummering enumeration nummerierung
- vycet
- doordefinitie: doordefinitie description beschreibung
- popis
- doorsprong: doorsprong indentation einzug
- odsazovani
- doorlabel: doorlabel labeling beschriften
- oznacovani
- samengesteldelijst: samengesteldelijst combinedlist kombiniereliste
- kombinovanyseznam
- sectie: sectie section abschnitt
- oddil
- register: register register register
- rejstrik
- interactie: interactie interaction interaktion
- interakce
- synoniem: synoniem synonym synonym
- synonymum
- synoniemen: synoniemen synonyms synonyme
- synonyma
- sorteer: sorteer sort sortiere
- trid
- sorteren: sorteren sorts sortieren
- tridit
- naam: naam name name
- jmeno
- blok: blok float gleitobjekt
- plvouciobjekt
- blokken: blokken floats gleitobjekte
- plvouciobjekty
- alinea: alinea paragraph absatz
- odstavec
- framedtext: kadertekst framedtext umrahmtertext
- oramovanytext
+\startsetupvariables dutch english
+ german czech
+ italian
+
+ doornummering: doornummering enumeration
+ nummerierung vycet
+ enumerazione
+ doordefinitie: doordefinitie description
+ beschreibung popis
+ descrizione
+ doorsprong: doorsprong indentation
+ einzug odsazovani
+ rientro
+ doorlabel: doorlabel labeling
+ beschriften oznacovani
+ etichettatura
+ samengesteldelijst: samengesteldelijst combinedlist
+ kombiniereliste kombinovanyseznam
+ elencocombinato
+ sectie: sectie section
+ abschnitt oddil
+ sezione
+ register: register register
+ register rejstrik
+ registro
+ interactie: interactie interaction
+ interaktion interakce
+ interazione
+ synoniem: synoniem synonym
+ synonym synonymum
+ sinonimo
+ synoniemen: synoniemen synonyms
+ synonyme synonyma
+ sinonimi
+ sorteer: sorteer sort
+ sortiere trid
+ sort % GB
+ sorteren: sorteren sorts
+ sortieren tridit
+ sorts % GB
+ naam: naam name
+ name jmeno
+ nome
+ blok: blok float
+ gleitobjekt plvouciobjekt
+ oggettomobile
+ blokken: blokken floats
+ gleitobjekte plvouciobjekty
+ oggettimobili
+ alinea: alinea paragraph
+ absatz odstavec
+ capoverso
+ framedtext: kadertekst framedtext
+ umrahmtertext oramovanytext
+ testoincorniciato
\stopsetupvariables
@@ -1477,94 +2177,136 @@ volgendeonevenpagina: volgendeonevenpagina nextoddpage naechsteungerades
%D \startcompressdefinitions
-\startelements dutch english german
- czech
-
- beginvan: beginvan begin anfang
- zacatek
- buffer: buffer buffer puffer
- buffer
- commentaar: commentaar comment kommentar
- komentar
- eindvan: eindvan end ende
- konec
- formule: formule formula formel
- rovnice
- gekoppelde: gekoppelde coupled verknuepft
- propojeny
- haal: haal get get
- ziskat
- huidigelokale: huidigelokale currentlocal aktuelllokal
- aktualnelokalni
- in: in - ein
- - % v, not really needed
- instellingen: instellingen setups einstellungen
- nastaveni
- interactiemenu: interactiemenu interactionmenu interaktionsmenue
- interaktivnimenu
- laad: laad load laden
- nacist
- leeg: leeg empty leer
- prazdne
- lege: lege empty leer
- prazdne
- lijst: lijst list auflisten
- seznam
- lijstmet: lijstmet listof auflistenvon
- seznam
- lokale: lokale local lokal
- lokalne
- opmaak: opmaak makeup umbruch
- zlom
- plaats: plaats place platziere
- umisti % better than 'misto'
- reserveer: reserveer reserve reservieren
- rezervovat
- start: start start start
- start
- stel: stel setup stelle
- nastaveni
- stop: stop stop stop
- stop
- tabelkop: tabelkop tablehead tabellenueberschrift
- zahlavitabulky
- tabelstaart: tabelstaart tabletail tabellenende
- konectabulky
- tabulate: tabulatie tabulate tabulator
- tabelator
- tekst: tekst text text
- text
- type: type type type
- type
- uitstellen: uitstellen postponing verschieben
- odlozit
- verbergen: verbergen hiding verbergen
- skryt
- verhoog: verhoog increment erhoehen
- zvysit
- volgende: volgende next folgende
- dalsi
- volledige: volledige complete vollende
- uplny
- vorige: vorige previous vorige
- predchozi
- vorigelokale: vorigelokale previouslocal voriglokal
- predchozilokalni
- zie: zie see sieh
- viz
- register: register register register
- rejstrik
-
- gegeven: gegeven fact gegeben
- fakt
- legenda: legenda legend legende
- legenda
-
- helptext: helptekst helptext hilfetext
- textnapovedy
-
- pagecomment: paginacommentaar pagecomment pagecomment
- komentarstranky % TOBIAS
+\startelements dutch english
+ german czech
+ italian
+
+ beginvan: beginvan begin
+ anfang zacatek
+ inizio
+ buffer: buffer buffer
+ puffer buffer
+ buffer
+ commentaar: commentaar comment
+ kommentar komentar
+ commento
+ eindvan: eindvan end
+ ende konec
+ fine
+ formule: formule formula
+ formel rovnice
+ formula
+ gekoppelde: gekoppelde coupled
+ verknuepft propojene
+ accoppiato
+ haal: haal get
+ get ziskat
+ prendi
+ huidigelokale: huidigelokale currentlocal
+ aktuelllokal aktualnelokalni
+ correntelocale
+ in: in -
+ ein -
+ in
+ instellingen: instellingen setups
+ impostazioni einstellungen
+ nastaveni
+ interactiemenu: interactiemenu interactionmenu
+ interaktionsmenue interaktivnimenu
+ menuinterattivo
+ laad: laad load
+ laden nacist
+ carica
+ leeg: leeg empty
+ vuoto leer
+ prazdne
+ lege: lege empty
+ leer prazdne
+ vuoti
+ lijst: lijst list
+ auflisten seznam
+ elenco
+ lijstmet: lijstmet listof
+ auflistenvon seznam
+ elencodi
+ lokale: lokale local
+ lokal lokalne
+ locale
+ opmaak: opmaak makeup
+ umbruch zlom
+ makeup % GB
+ plaats: plaats place
+ platziere umisti
+ metti
+ reserveer: reserveer reserve
+ reservieren rezervovat
+ riserva
+ start: start start
+ start start
+ inizia
+ stel: stel setup
+ stelle nastaveni
+ imposta
+ stop: stop stop
+ stop stop
+ termina
+ tabelkop: tabelkop tablehead
+ tabellenueberschrift zahlavitabulky
+ testatabella % GB
+ tabelstaart: tabelstaart tabletail
+ tabellenende konectabulky
+ codatabella % GB
+ tabulate: tabulatie tabulate
+ tabulator tabelator
+ tabulate % GB
+ tekst: tekst text
+ text text
+ testo
+ type: type type
+ type opis
+ type % GB
+ uitstellen: uitstellen postponing
+ verschieben odlozit
+ posporre % GB
+ verbergen: verbergen hiding
+ verbergen skryt
+ nascondere
+ verhoog: verhoog increment
+ erhoehen zvysit
+ incrementa
+ volgende: volgende next
+ folgende dalsi
+ successivo
+ volledige: volledige complete
+ vollende uplny
+ completo
+ vorige: vorige previous
+ vorige predchozi
+ precedente
+ vorigelokale: vorigelokale previouslocal
+ voriglokal predchozilokalni
+ precedentelocale
+ zie: zie see
+ sieh viz
+ vedi
+ register: register register
+ register rejstrik
+ registro
+ gegeven: gegeven fact
+ gegeben fakt
+ fatto
+ legenda: legenda legend
+ legende legenda
+ legenda
+ helptext: helptekst helptext
+ hilfetext textnapovedy
+ testoaiuto
+ pagecomment: paginacommentaar pagecomment
+ pagecomment komentarstranky
+ commentopagina % TB
+ sectieblokomgeving: sectieblokomgeving sectionblockenvironment
+ sectionblockenvironment sectionblockenvironment
+ ambientebloccosezione % TB TH
\stopelements
@@ -1576,93 +2318,131 @@ volgendeonevenpagina: volgendeonevenpagina nextoddpage naechsteungerades
%D \startcompressdefinitions
-\startvariables dutch english german
- czech
-
- FirstPage: EerstePagina FirstPage ErsteSeite
- PrvniStrana
- PreviousPage: VorigePagina PreviousPage VorigeSeite
- JdiNaStranku
- NextPage: VolgendePagina NextPage FolgendeSeite
- DalsiStrana
- LastPage: LaatstePagina LastPage LetzteSeite
- PosledniStrana
- PreviousJump: VorigeSprong PreviousJump VorigerSprung
- PredchoziSkok
- NextJump: VolgendeSprong NextJump NaechsterSprung
- DalsiSkok
- SwapViewer: WisselViewer SwapViewer WechseleViewer
- ZamenitProhlizec
- ExitViewer: VerlaatViewer ExitViewer BeendeViewer
- SkoncitProhlizec
- CloseDocument: SluitDocument CloseDocument SchliesseDokument
- ZavritDokument
- SaveDocument: BewaarDocument SaveDocument SpeichereDokument
- UlozitDokument
- ViewerHelp: ViewerHelp ViewerHelp ViewerHilfe
- NapovedaProhlizece
- PrintDocument: PrintDocument PrintDocument DruckeDokument
- VytisknoutDokument
- SearchDocument: DoorzoekDocument SearchDocument DokumentDurchsuchen
- ProhledatDokument
- SearchAgain: HerhaalZoeken SearchAgain WeiterSuchen
- HledatZnovu
- GotoPage: GaNaarPagina GotoPage GotoPage % Tobias
- GaNaarPagina % TOM
-
- StartMovie: StartFilm StartMovie StartFilm
- SpustitFilmu
- StopMovie: StopFilm StopMovie StopFilm
- ZastavitFilm
- PauseMovie: PauzeerFilm PauseMovie PauseFilm
- PozastavitFilm
- ResumeMovie: HervatFilm ResumeMovie FortsetzenFilm
- PokracovatVeFilmu
-
- StartSound: StartGeluid StartSound StartSound
- StartZvuk % TOBIAS
- StopSound: StopFilm StopSound StopSound
- StopZvuk % TOBIAS
- PauseSound: PauzeerFilm PauseSound PauseSound
- PauzaZvuk % TOBIAS
- ResumeSound: HervatSound ResumeSound ResumeSound
- PokracovatZvuk % TOBIAS
-
- SaveForm: BewaarFormulier SaveForm SpeicheFormular
- UlozitFormular
- LoadForm: LaadFormulier LoadForm LadeFormular
- NacistFormular
- ResetForm: ResetFormulier ResetForm ZuruecksetzenFormular
- ResetFormulare
- SubmitForm: VerzendFormulier SubmitForm VersendeFormular
- PoslatFormular
-
- HideField: VerbergVeld HideField VerbergeFeld
- SkryjPole
- ShowField: ToonVeld ShowField ZeigeFeld
- UkazPole
+\startvariables dutch english
+ german czech
+ italian
+
+ FirstPage: EerstePagina FirstPage
+ ErsteSeite PrvniStrana
+ PrimaPagina
+ PreviousPage: VorigePagina PreviousPage
+ VorigeSeite PredchoziStrana
+ PaginaPrecedente
+ NextPage: VolgendePagina NextPage
+ FolgendeSeite DalsiStrana
+ PaginaSuccessiva
+ LastPage: LaatstePagina LastPage
+ LetzteSeite PosledniStrana
+ UltimaPagina
+ PreviousJump: VorigeSprong PreviousJump
+ VorigerSprung PredchoziSkok
+ SaltoPrecedente
+ NextJump: VolgendeSprong NextJump
+ NaechsterSprung NasledujiciSkok
+ SaltoSuccessivo
+ SwapViewer: WisselViewer SwapViewer
+ WechseleViewer ZmenitProhlizec
+ ScambiaVisualizzatore
+ ExitViewer: VerlaatViewer ExitViewer
+ BeendeViewer UkoncitProhlizec
+ EsciVisualizzatore
+ CloseDocument: SluitDocument CloseDocument
+ SchliesseDokument ZavritDokument
+ ChiudiDocumento
+ SaveDocument: BewaarDocument SaveDocument
+ SpeichereDokument UlozitDokument
+ SalvaDocumento
+ ViewerHelp: ViewerHelp ViewerHelp
+ ViewerHilfe NapovedaProhlizece
+ AiutoVisualizzatore
+ PrintDocument: PrintDocument PrintDocument
+ DruckeDokument VytisknoutDokument
+ StampaDocumento
+ SearchDocument: DoorzoekDocument SearchDocument
+ DokumentDurchsuchen ProhledatDokument
+ CercaDocumento
+ SearchAgain: HerhaalZoeken SearchAgain
+ WeiterSuchen HledatZnovu
+ CercaAncora
+ Query: RaadpleegDocument Query
+ Query Query
+ Query % TB TH GB
+ QueryAgain: HerhaalRaadplegen QueryAgain
+ QueryAgain QueryAgain
+ QueryAgain % TB TH GB
+ GotoPage: GaNaarPagina GotoPage
+ GotoPage JdiNaStranku
+ VaiAPagina % TB
+ StartMovie: StartFilm StartMovie
+ StartFilm SpustitFilm
+ IniziaFilm
+ StopMovie: StopFilm StopMovie
+ StopFilm ZastavitFilm
+ FermaFilm
+ PauseMovie: PauzeerFilm PauseMovie
+ PauseFilm PozastavitFilm
+ PausaFilm
+ ResumeMovie: HervatFilm ResumeMovie
+ FortsetzenFilm PokracovatFilm
+ RiprendiFilm
+ StartSound: StartGeluid StartSound
+ StartSound StartZvuk
+ IniziaSuono % TB
+ StopSound: StopFilm StopSound
+ StopSound StopZvuk
+ FermaSuono % TB
+ PauseSound: PauzeerFilm PauseSound
+ PauseSound PozastavitZvuk
+ PausaSuono % TB
+ ResumeSound: HervatSound ResumeSound
+ ResumeSound PokracovatZvuk
+ RiprendiSuono % TB
+ SaveForm: BewaarFormulier SaveForm
+ SpeicheFormular UlozitFormular
+ SalvaForm
+ LoadForm: LaadFormulier LoadForm
+ LadeFormular NacistFormular
+ CaricaForm
+ ResetForm: ResetFormulier ResetForm
+ ZuruecksetzenFormular ResetFormulare
+ ReimpostaForm
+ SubmitForm: VerzendFormulier SubmitForm
+ VersendeFormular PoslatFormular
+ MandaForm
+ HideField: VerbergVeld HideField
+ VerbergeFeld SkryjPole
+ NascondiCampo
+ ShowField: ToonVeld ShowField
+ ZeigeFeld UkazPole
+ MostraCampo
\stopvariables
%D Here are some symbol names. We capitalize them because they are
%D viewer specific.
-\startvariables dutch english german
- czech
-
- New: Nieuw New Neu
- Novy
- Balloon: Ballon Balloon Ballon
- Bublinka
- Addition: Toevoeging Addition Zusatz
- Pridavek % Dodatek
- Help: Help Help Hilfe
- Napoveda
- Paragraph: Paragraaf Paragraph Absatz
- Odstavec
- Key: Sleutel Key Schluessel
- Klic
-
+\startvariables dutch english
+ german czech
+ italian
+
+ New: Nieuw New
+ Neu Novy
+ Nuovo
+ Balloon: Ballon Balloon
+ Ballon Bublinka
+ Pallone
+ Addition: Toevoeging Addition
+ Zusatz Pridavek
+ Aggiunta
+ Help: Help Help
+ Hilfe Napoveda
+ Aiuto
+ Paragraph: Paragraaf Paragraph
+ Absatz Odstavec
+ Capoverso
+ Key: Sleutel Key
+ Schluessel Klavesa
+ Tasto
\stopvariables
%D \stopcompressdefinitions
@@ -1672,21 +2452,25 @@ volgendeonevenpagina: volgendeonevenpagina nextoddpage naechsteungerades
%D \startcompressdefinitions
-\startconstants all
- bet: bet
- dat: dat
- ken: ken
- ref: ref
+\startconstants all
+
+ bet: bet
+ dat: dat
+ ken: ken
+ ref: ref
+
\stopconstants
-\startvariables all
- formeel: formeel
- informeel: informeel
- rekening: rekening
- sticker: sticker
- sheet: sheet
- brief: brief
- ls: ls
+\startvariables all
+
+ formeel: formeel
+ informeel: informeel
+ rekening: rekening
+ sticker: sticker
+ sheet: sheet
+ brief: brief
+ ls: ls
+
\stopvariables
%D \stopcompressdefinitions
diff --git a/tex/context/base/mult-ini.tex b/tex/context/base/mult-ini.tex
index 16e67b67f..ca650b1dd 100644
--- a/tex/context/base/mult-ini.tex
+++ b/tex/context/base/mult-ini.tex
@@ -13,7 +13,18 @@
%D This module implements the multi||lingual interface to
%D \CONTEXT. These capabilities concern messages, commands and
-%D parameters.
+%D parameters. Currently the following interfaces are
+%D supported:
+%D
+%D \starttabulatie[|l|l|c|c|]
+%D \NC\bf language\NC\bf translator \NC\bf messages\NC\bf interface\NC\NR
+%D \NC dutch \NC Hans Hagen \NC yes \NC yes \NC\NR
+%D \NC english \NC Hans Hagen \NC yes \NC yes \NC\NR
+%D \NC german \NC Tobias Burnus \NC yes \NC yes \NC\NR
+%D \NC czech \NC Tom Hudec \NC yes \NC yes \NC\NR
+%D \NC italian \NC Giuseppe Bilotta \NC yes \NC yes \NC\NR
+%D \NC norwegian \NC Hans Fredrik Nordhaug\NC yes \NC no \NC\NR
+%D \stoptabulatie
\writestatus{loading}{Context Multilingual Macros / Initialization}
@@ -180,6 +191,17 @@
%D not ask for interface specifications when these are already
%D defined (like in cont-nl.tex and alike).
+\ifx\undefined\scratchwrite \newwrite\scratchwrite \fi
+\ifx\undefined\scratchread \newwrite\scratchread \fi
+
+\immediate\openin\scratchread=mult-def.tex % may overload the defaults
+
+\ifeof\scratchread % no high level commands yet
+ \immediate\closein\scratchread
+\else
+ \immediate\closein\scratchread \input mult-def.tex
+\fi
+
\ifx\defaultinterface\undefined
\def\defaultinterface{english}
@@ -205,7 +227,7 @@
\def\selectinterface%
{\writestatus{interface}{defining \currentinterface\space interface}%
\writeline
- \writestatus{interface}{using \currentresponses\space messages}%
+ \writestatus{interface}{using \currentresponses\space messages}%
\writeline
\let\selectinterface\relax}
@@ -388,7 +410,7 @@
\fi
\next}
-\gdef\startmessages #1 library: #2
+\def\startmessages #1 library: #2
{\definemessageconstant{#2}% handy for modules
\bgroup
\obeylines
@@ -401,6 +423,40 @@
{\long\def\next##1\stopmessages{\egroup}}%
\next}
+%D Here, the messages are stored in a way that saves hash
+%D entries, i.e. they are packed in one macro per library.
+%D This was important in the days when we used \TEX's with
+%D hash tables of about 10.000. The next, less efficient way
+%D of storing the message, makes \CONTEXT\ run upto 5\%
+%D faster by storing each message in a macro. In July 2000,
+%D this costs some 185 additional hash entries, and since
+%D we run large \TEX's, let do it!
+
+\def\startmessages #1 library: #2
+ {\definemessageconstant{#2}% handy for modules
+ \bgroup
+ \obeylines
+ \doifinsetelse{#1}{\currentresponses,all}
+ {\def\next%
+ {\def\currentmessagelibrary{#2}%
+ \futurelet\next\getinterfacemessage}}
+ {\long\def\next##1\stopmessages{\egroup}}%
+ \next}
+
+\def\findinterfacemessage#1#2%
+ {\edef#2{\getvalue{\??ms\currentmessagelibrary#1}}}
+
+\def\doaddinterfacemessage#1#2%
+ {\doifdefined{\??ms\currentmessagelibrary#1}
+ {\debuggerinfotrue % we consider this an important error
+ \debuggerinfo
+ {message}
+ {duplicate tag #1
+ in library \currentmessagelibrary\space
+ of interface \currentresponses}}%
+ \setxvalue{\??ms\currentmessagelibrary#1}{#2}%
+ \futurelet\next\getinterfacemessage}
+
%D \macros
%D {ifshowwarnings, ifshowmessages}
%D
@@ -461,7 +517,7 @@
%D These macros are called upon quite often and so we optimized
%D them a bit.
-\def\dosetvalue#1#2#3%
+\def\dosetvalue#1#2#3%
{\let\c!internal!\c!internal!n
\p!doifundefined{\k!prefix!#2}%
\let\c!internal!\c!internal!y
@@ -473,7 +529,7 @@
\@EA\def\csname#1\csname\k!prefix!#2\endcsname\endcsname{#3}%
\fi}
-\def\dosetevalue#1#2#3%
+\def\dosetevalue#1#2#3%
{\let\c!internal!\c!internal!n
\p!doifundefined{\k!prefix!#2}%
\let\c!internal!\c!internal!y
@@ -485,7 +541,7 @@
\@EA\edef\csname#1\csname\k!prefix!#2\endcsname\endcsname{#3}%
\fi}
-\def\docopyvalue#1#2#3%
+\def\docopyvalue#1#2#3%
{\let\c!internal!\c!internal!n
\p!doifundefined{\k!prefix!#3}%
\let\c!internal!\c!internal!y
@@ -502,11 +558,11 @@
\def\doresetvalue#1#2%
{\dosetvalue{#1}{#2}{}}
-%\def\dogetvalue#1#2%
+%\def\dogetvalue#1#2%
% {\csname#1\csname\k!prefix!#2\endcsname\endcsname}
%D Although maybe not clearly visible, there is a
-%D considerable profit in further optimalization. By expanding
+%D considerable profit in further optimization. By expanding
%D the embedded \type {\csname} we can reduce the format file
%D by about 5\% (60~KB out of 1.9~MB).
@@ -523,11 +579,11 @@
\endcsname\@EA{\csname#2\csname\k!prefix!#3\endcsname\endcsname}%
\fi}
-%D The next alternatives are slightly faster.
+%D The next alternatives are slightly faster.
\beginTEX
-\def\dosetvalue#1#2#3%
+\def\dosetvalue#1#2#3%
{\let\c!internal!\c!internal!n
\@EA\ifx\csname\k!prefix!#2\endcsname\relax
\let\c!internal!\c!internal!y
@@ -537,7 +593,7 @@
\@EA\def\csname#1\csname\k!prefix!#2\endcsname\endcsname{#3}%
\fi}
-\def\dosetevalue#1#2#3%
+\def\dosetevalue#1#2#3%
{\let\c!internal!\c!internal!n
\@EA\ifx\csname\k!prefix!#2\endcsname\relax
\let\c!internal!\c!internal!y
@@ -547,7 +603,7 @@
\@EA\edef\csname#1\csname\k!prefix!#2\endcsname\endcsname{#3}%
\fi}
-\def\dosetgvalue#1#2#3%
+\def\dosetgvalue#1#2#3%
{\let\c!internal!\c!internal!n
\@EA\ifx\csname\k!prefix!#2\endcsname\relax
\let\c!internal!\c!internal!y
@@ -557,7 +613,7 @@
\@EA\gdef\csname#1\csname\k!prefix!#2\endcsname\endcsname{#3}%
\fi}
-\def\docopyvalue#1#2#3%
+\def\docopyvalue#1#2#3%
{\let\c!internal!\c!internal!n
\@EA\ifx\csname\k!prefix!#3\endcsname\relax
\let\c!internal!\c!internal!y
@@ -575,7 +631,7 @@
\beginETEX \protected
-\def\dosetvalue#1#2#3%
+\def\dosetvalue#1#2#3%
{\let\c!internal!\c!internal!n
\ifcsname\k!prefix!#2\endcsname
\let\c!internal!\c!internal!y
@@ -585,7 +641,7 @@
\@EA\def\csname#1#2\endcsname{#3}%
\fi}
-\def\dosetevalue#1#2#3%
+\def\dosetevalue#1#2#3%
{\let\c!internal!\c!internal!n
\ifcsname\k!prefix!#2\endcsname
\let\c!internal!\c!internal!y
@@ -595,7 +651,7 @@
\@EA\edef\csname#1#2\endcsname{#3}%
\fi}
-\def\dosetgvalue#1#2#3%
+\def\dosetgvalue#1#2#3%
{\let\c!internal!\c!internal!n
\ifcsname\k!prefix!#2\endcsname
\let\c!internal!\c!internal!y
@@ -605,7 +661,7 @@
\@EA\gdef\csname#1#2\endcsname{#3}%
\fi}
-\def\docopyvalue#1#2#3%
+\def\docopyvalue#1#2#3%
{\let\c!internal!\c!internal!n
\ifcsname\k!prefix!#3\endcsname
\let\c!internal!\c!internal!y
@@ -647,7 +703,7 @@
\fi
\fi}
-\def\dogetargument#1#2#3#4%
+\long\def\dogetargument#1#2#3#4%
{\doifnextcharelse{#1}
{\let\expectedarguments\noexpectedarguments
#3\dodogetargument}
@@ -676,6 +732,28 @@
\nextargument}%
\futurelet\nextargument\nextnextargument}
+\def\dogetgroupargument#1#2%
+ {\def\nextnextargument%
+ {\normalifx\nextargument\bgroup
+ \endrobusttest
+ \let\expectedarguments\noexpectedarguments
+ \def\nextargument{#1\dodogetargument}%
+ %\normalelse\normalifx\nextargument\lineending % this can be an option
+ % \def\nextargument{\bgroup\def\\ {\egroup\dogetgroupargument#1#2}\\}%
+ %\normalelse\normalifx\nextargument\blankspace % but may never be default
+ % \def\nextargument{\bgroup\def\\ {\egroup\dogetgroupargument#1#2}\\}%
+ \normalelse
+ \endrobusttest
+ \ifnum\expectedarguments>\noexpectedarguments
+ \showmessage{check}{2}{\the\expectedarguments,\the\inputlineno}%
+ \fi
+ \let\expectedarguments\noexpectedarguments
+ \def\nextargument{#2\dodogetargument{}}%
+ \normalfi%\normalfi\normalfi % so let's get rid of it
+ \nextargument}%
+ \beginrobusttest
+ \futurelet\nextargument\nextnextargument}
+
\def\checkdefined#1#2#3%
{\doifdefined{#3}
{\showmessage{check}{3}{#2,#3}}}
@@ -967,8 +1045,6 @@
%D The next few macros come into action when we generate
%D interface log files:
-\ifx\undefined\scratchwrite \newwrite\scratchwrite \fi
-
\newif\iflogginginterface
\def\flushinterfaceelementline%
@@ -1286,12 +1362,12 @@
%D \stoptypen
%D
%D Giving \type{\interfaced{breedte}} results in \type{width}
-%D or, when not defined, in \type{breedte} itself. This
-%D macro is used in the font switching mechanism.
+%D or, when not defined, in \type{breedte} itself. This
+%D macro is used in the font switching mechanism.
\beginTEX
-\def\interfaced#1%
+\def\interfaced#1%
{\expandafter\ifx\csname\k!prefix!#1\endcsname\relax
#1%
\else
@@ -1302,7 +1378,7 @@
\beginETEX \ifcsname
-\def\interfaced#1%
+\def\interfaced#1%
{\ifcsname\k!prefix!#1\endcsname
\csname\k!prefix!#1\endcsname
\else
@@ -1336,7 +1412,7 @@
\ifx\undefined\normaldump
\newtoks\everydump
- \let\normaldump\dump
+ \let\normaldump\dump
\def\dump{\the\everydump\normaldump}
\fi
diff --git a/tex/context/base/mult-sys.tex b/tex/context/base/mult-sys.tex
index 599d063c1..ba597846e 100644
--- a/tex/context/base/mult-sys.tex
+++ b/tex/context/base/mult-sys.tex
@@ -46,8 +46,9 @@
\definesystemconstant {norwegian} \definesystemconstant {no}
\definesystemconstant {polish} \definesystemconstant {pl}
\definesystemconstant {portuguese} \definesystemconstant {pt}
+\definesystemconstant {romanian} \definesystemconstant {ro}
\definesystemconstant {slovak} \definesystemconstant {sk}
-\definesystemconstant {spanish} \definesystemconstant {sp}
+\definesystemconstant {spanish} \definesystemconstant {es}
\definesystemconstant {swedish} \definesystemconstant {sv}
\definesystemconstant {turkish} \definesystemconstant {tr}
\definesystemconstant {ukenglish} \definesystemconstant {uk}
@@ -65,6 +66,10 @@
\definesystemconstant {BoldSlanted}
\definesystemconstant {BoldItalic}
+\definesystemconstant {Serif} \definesystemconstant {Regular}
+\definesystemconstant {Sans} \definesystemconstant {Support}
+\definesystemconstant {Mono} \definesystemconstant {Type}
+
%D As the name of their define command states, the next set of
%D constants is used in the message macro's.
@@ -145,6 +150,8 @@
\definesystemconstant {done}
+\definesystemconstant {font}
+
%D A more experienced \TEX\ user will recognize the next four
%D constants. We need these because font-definitions are
%D partially english.
@@ -162,6 +169,7 @@
\definesystemconstant {encoding}
\definesystemconstant {mapping}
\definesystemconstant {patterns}
+\definesystemconstant {handling}
%D Just to be complete we define the standard \TEX\ units.
@@ -334,6 +342,7 @@
\definesystemvariable {cr} % kleur (ColoR)
\definesystemvariable {cv} % ConVersie
\definesystemvariable {da} % DAte
+\definesystemvariable {dc} % DroppedCaps
\definesystemvariable {dd} % DoorDefinieren
\definesystemvariable {de} % DEel
\definesystemvariable {dl} % DunneLijnen
@@ -351,6 +360,7 @@
\definesystemvariable {fl} % Floats
\definesystemvariable {fm} % ForMules
\definesystemvariable {fp} % FilegroeP
+\definesystemvariable {fr} % ForM
\definesystemvariable {fs} % FileSynonym
\definesystemvariable {ft} % FonTs
\definesystemvariable {ia} % Interactie
@@ -374,6 +384,7 @@
\definesystemvariable {ko} % KOp(pen)
\definesystemvariable {kp} % KopPelteken
\definesystemvariable {kr} % KoRps
+\definesystemvariable {ks} % KolomSpan
\definesystemvariable {kt} % KonTakten
\definesystemvariable {kw} % KontaktWaarde
\definesystemvariable {la} % LAnguage
@@ -386,6 +397,7 @@
\definesystemvariable {ly} % LaYout
\definesystemvariable {ma} % MargeAchtergrond
\definesystemvariable {mb} % MargeBlokken
+\definesystemvariable {mp} % MetaPost
\definesystemvariable {mk} % MarKering
\definesystemvariable {nm} % Nummering
\definesystemvariable {np} % NaastPlaatsen
@@ -396,6 +408,7 @@
\definesystemvariable {oo} % OpsOmmingen
\definesystemvariable {op} % OPsomming
\definesystemvariable {os} % OffSet
+\definesystemvariable {ov} % OVerlay
\definesystemvariable {pa} % PAlet
\definesystemvariable {pb} % PuBlicatie
\definesystemvariable {pc} % PageComment
@@ -420,6 +433,7 @@
\definesystemvariable {sc} % SCherm
\definesystemvariable {sd} % SounD
\definesystemvariable {se} % SEctie
+\definesystemvariable {sh} % ShapeText
\definesystemvariable {si} % SplIt
\definesystemvariable {sk} % SectieKop
\definesystemvariable {sl} % SmalLer
@@ -538,6 +552,7 @@
\definefileconstant {javascriptprefix} {java-}
\definefileconstant {languageprefix} {lang-}
\definefileconstant {specialprefix} {spec-}
+\definefileconstant {metapostprefix} {meta-}
\definefileconstant {moduleprefix} {m-}
\definefileconstant {styleprefix} {s-}
\definefileconstant {privateprefix} {p-}
@@ -593,6 +608,7 @@
\defineinterfaceconstant {jpg} {jpg}
\defineinterfaceconstant {pdf} {pdf}
\defineinterfaceconstant {png} {png}
+\defineinterfaceconstant {avi} {avi}
\defineinterfaceconstant {mov} {mov}
\defineinterfaceconstant {tex} {tex}
\defineinterfaceconstant {tmp} {tmp}
@@ -638,6 +654,20 @@
3: -- -- nahrazuje makro, uzijte VERZALKY!
\stopmessages
+\startmessages italian library: check
+ title: controllo
+ 1: '=' mancante dopo '--' alla riga --
+ 2: -- argomento/i attesi alla riga --
+ 3: -- -- sostituisce una macro, usare le MAIUSCOLE!
+\stopmessages
+
+\startmessages norwegian library: check
+ title: kontroll
+ 1: manglende '=' etter '--' i linje --
+ 2: -- argument forventet i linje --
+ 3: -- -- overskygger en makro, bruk STORE BOKSTAVER!
+\stopmessages
+
\fi
%D Ok, here are some more, because we've got ouselves some
diff --git a/tex/context/base/s-abr-01.tex b/tex/context/base/s-abr-01.tex
index 870dee7a7..40c650745 100644
--- a/tex/context/base/s-abr-01.tex
+++ b/tex/context/base/s-abr-01.tex
@@ -41,6 +41,7 @@
\logo [DVI] {dvi}
\logo [EC] {ec}
\logo [EMACS] {emacs}
+\logo [EIFFEL] {Eiffel}
\logo [EMTEX] {em\TeX}
\logo [EPS] {eps}
\logo [ETEX] {\eTeX}
@@ -67,6 +68,10 @@
\logo [MIKTEX] {Mik\TeX}
\logo [METAFONT] {\MetaFont}
\logo [METAPOST] {\MetaPost}
+\logo [OMEGA] {Omega}
+\logo [PASCAL] {Pascal}
+\logo [ALGOL] {ALGOL}
+\logo [MLTEX] {ml\TeX}
\logo [MODULA] {Modula}
\logo [MOV] {mov}
\logo [MPS] {mps}
@@ -74,6 +79,7 @@
\logo [MSWINDOWS] {MSWindows}
\logo [NTG] {ntg}
\logo [NTS] {nts}
+\logo [PDFTOPS] {pdftops}
\logo [PDFETEX] {pdf-\eTeX}
\logo [PDFTEX] {pdf\TeX}
\logo [PDF] {pdf}
@@ -125,6 +131,7 @@
\logo [UNICODE] {Unicode}
\logo [UNIX] {unix}
\logo [LINUX] {linux}
+\logo [WEB] {web}
\logo [WEBC] {web2c}
\logo [WDT] {wdt}
\logo [WWW] {www}
@@ -134,9 +141,12 @@
\logo [XDVI] {Xdvi}
\logo [XINDY] {Xindy}
\logo [YandY] {y\&y}
+\logo [WYSIWYG] {wysiwyg}
\logo [WINNX] {Win9x}
\logo [WINNT] {WinNT}
+\def\METAFUN {\MetaFun}
+
\def\SystemSpecialA#1{$\langle\it#1\rangle$}
\def\SystemSpecialB#1{{\tttf<#1>}}
diff --git a/tex/context/base/s-chi-00.tex b/tex/context/base/s-chi-00.tex
index 36c372c00..9bddd057d 100644
--- a/tex/context/base/s-chi-00.tex
+++ b/tex/context/base/s-chi-00.tex
@@ -22,6 +22,8 @@
\stelsectiein [\v!sectionlevel-2] [\c!kopconversie=\s!chinese]
\stelsectiein [\v!sectionlevel-3] [\c!kopconversie=\s!chinese]
+\stelsectiein [\v!sectionlevel-2] [\v!bijlage\c!conversie=]
+
\stelkopin [\v!hoofdstuk] [\c!afstand=1.25em]
\stelkopin [\v!paragraaf] [\c!afstand=1.25em]
\stelkopin [\v!sub\v!paragraaf] [\c!afstand=1.00em]
@@ -44,4 +46,8 @@
\definereferenceformat [inchapter] [\c!label=\v!hoofdstuk]
\definereferenceformat [insection] [\c!label=\v!paragraaf]
+% important
+
+\setuptyping[\c!tab=\v!nee]
+
\protect \endinput
diff --git a/tex/context/base/s-map-01.tex b/tex/context/base/s-map-01.tex
index 4f1f06dd6..07cb3b935 100644
--- a/tex/context/base/s-map-01.tex
+++ b/tex/context/base/s-map-01.tex
@@ -60,8 +60,13 @@
%D \type{groot} meegeven. Met \type{x} geven we de maat aan van
%D de pseudo klein||kapitalen. De \MAPS\ wordt gezet in 9pt.
-\setupbodyfont
- [map,mty,9pt]
+\setupbodyfont[map,9pt]
+
+\startnotmode[localfonts]
+
+ \setupbodyfont[mty]
+
+\stopnotmode
%D We gebruiken echte small caps:
@@ -475,7 +480,7 @@
\setbox0=\hbox{X}%
\advance\dimen0 by -\ht0
\getpagestatus
- \ifodd\MapsPagina \rightpagetrue \fi
+ \ifodd\MapsPagina\relax \rightpagetrue \fi
\setbox0=\vtop
{\hsize\margebreedte
\forgetall
diff --git a/tex/context/base/s-pre-05.tex b/tex/context/base/s-pre-05.tex
index dac9efc9c..a25dd6040 100644
--- a/tex/context/base/s-pre-05.tex
+++ b/tex/context/base/s-pre-05.tex
@@ -49,6 +49,10 @@
[state=repeat]
\setupbackgrounds
+ [page]
+ [backgroundcolor=white]
+
+\setupbackgrounds
[text][text]
[background={HashFrameA,NextPage},
backgroundoffset=20pt]
@@ -113,7 +117,7 @@
{}[forward]}
\def\StartTitlePage%
- {\setupbackgrounds[page][background={TitleGraphic,NextPage}]
+ {\setupbackgrounds[page][background={color,TitleGraphic,NextPage}]
\setupbackgrounds[text][text][background=]
\setupinteraction[menu=off]
\setupinteractionbar[state=stop]
@@ -131,7 +135,7 @@
\setuplayout[width=430pt,rightedge=110pt]
\setupinteraction[menu=on]
\setupinteractionbar[state=start]
- \setupbackgrounds[page][background=]
+ \setupbackgrounds[page][background=color]
\setupbackgrounds[text][text][background={HashFrameA,NextPage}]}
\def\TitlePage#1%
diff --git a/tex/context/base/s-pre-15.tex b/tex/context/base/s-pre-15.tex
new file mode 100644
index 000000000..df27ea562
--- /dev/null
+++ b/tex/context/base/s-pre-15.tex
@@ -0,0 +1,179 @@
+%D \module
+%D [ file=s-pre-15,
+%D version=1999.09.01,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Presentation Environment 15,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This is one of the styles I made for the presentation on
+%D the \NTS\ project at Euro\TeX\ 1998. You need balls to let
+%D \TEX\ typeset graphics, but thsi style demonstrates that it
+%D can be done.
+%D
+%D This presentation is meant for presentations that build up
+%D an idea stepwise.
+%D
+%D \starttyping
+%D \TitlePage{Do you know \TEX ?}
+%D
+%D \StartIdea
+%D \StartItem We use \TEX\ for typesetting \unknown \StopItem
+%D \StartItem mathematical text \unknown \StopItem
+%D \StartItem but also for text that has no math \unknown \StopItem
+%D \StartItem or presentations like this \unknown \StopItem
+%D \StartItem and whatever you can come up with! \StopItem
+%D \StopIdea
+%D \stoptyping
+
+%D The basic layout is rather simple and used as much of the
+%D screen as possible.
+
+\setuppapersize
+ [S6][S6]
+
+\setuplayout
+ [backspace=25pt,
+ topspace=25pt,
+ width=middle,
+ height=middle,
+ header=0pt,
+ footer=0pt]
+
+\setupinteraction
+ [state=start,
+ display=new,
+ color=LineColor,
+ contrastcolor=LineColor,
+ click=no]
+
+\setupinteractionscreen
+ [option=max]
+
+\setupbodyfont
+ [lbr,14.4pt]
+
+%D We use a lot of color. You can remap them if you want
+%D differend ones. The ideas circulate over the colors.
+
+\setupcolors
+ [state=start]
+
+\definecolor[TextColor][s=.8]
+\definecolor[PageColor][s=.6]
+\definecolor[LineColor][s=.4]
+
+\definecolor[red] [r=.4] \definecolor[cyan] [g=.4,b=.4]
+\definecolor[green][g=.4] \definecolor[magenta][r=.4,b=.4]
+\definecolor[blue] [b=.4] \definecolor[yellow] [r=.4,g=.4]
+
+\definecolor[linecolor 1][red] \definecolor[linecolor 5][cyan]
+\definecolor[linecolor 2][green] \definecolor[linecolor 6][magenta]
+\definecolor[linecolor 3][blue] \definecolor[linecolor 4][yellow]
+
+%D We use variables to make sure that the graphics are reused
+%D but unique.
+
+\setupMPvariables[pageframe][pagecolor=PageColor,linecolor=LineColor]
+\setupMPvariables[textframe][textcolor=TextColor,linecolor=LineColor]
+
+\setupbackgrounds
+ [page]
+ [background={pageframe,nextpage}]
+
+\defineoverlay [pageframe] [\uniqueMPgraphic{pageframe}]
+\defineoverlay [textframe] [\uniqueMPgraphic{textframe}]
+\defineoverlay [nextpage] [\overlaybutton{forward}]
+
+\startuniqueMPgraphic{pageframe}{pagecolor,linecolor}
+ path p ; p := fullsquare xyscaled (\overlaywidth,\overlayheight) ;
+ pickup pencircle scaled 10pt ;
+ fill p withcolor \MPvar{pagecolor} ;
+ draw p withcolor \MPvar{linecolor} ;
+\stopuniqueMPgraphic
+
+\startuniqueMPgraphic{textframe}{textcolor,linecolor}
+ path p ; p := fullcircle xyscaled (\overlaywidth,\overlayheight) ;
+ pickup pencircle scaled 10pt ;
+ fill p withcolor \MPvar{textcolor} ;
+ draw p withcolor \MPvar{linecolor} ;
+\stopuniqueMPgraphic
+
+%D The rest of the file implements the nasty part: typesetting
+%D text embedded in a graphic. The text is collected in a box
+%D so that we can reuse it.
+
+\newbox\CollectedIdeas
+\newcounter\CurrentTopic
+
+\def\StartItem%
+ {\setbox\CollectedIdeas=\hbox\bgroup
+ \ifdim\wd\CollectedIdeas>0pt \unhbox\CollectedIdeas\hskip25pt \fi
+ \setbox\scratchbox=\hbox\bgroup
+ \framed
+ [width=160pt,height=160pt,align=middle,frame=off,
+ background=textframe,offset=15pt,top=\vfill,bottom=\vfill]
+ \bgroup}
+
+\def\StopItem%
+ {\egroup
+ \egroup
+ \setbox\scratchbox=\hbox{\lower.5\ht\scratchbox\box\scratchbox}%
+ \ht\scratchbox=.5\ht\scratchbox
+ \dp\scratchbox= \ht\scratchbox
+ \box\scratchbox
+ \egroup
+ \startstandardmakeup
+ \dontcomplain
+ \leftskip 0pt plus 50pt
+ \rightskip 0pt plus 50pt
+ \parfillskip 0pt
+ \baselineskip 100pt
+ \unhcopy\CollectedIdeas
+ \stopstandardmakeup}
+
+\def\StartIdea%
+ {\ifnum\CurrentTopic=6 \doglobal\newcounter\CurrentTopic \fi
+ \doglobal\increment\CurrentTopic
+ \definecolor[LineColor][linecolor \CurrentTopic]
+ \setbox\CollectedIdeas=\null}
+
+\def\StopIdea%
+ {}
+
+\def\TitlePage#1%
+ {\startstandardmakeup
+ \setupalign[middle]
+ \def\\{\vfil\bfb\setupinterlinespace}
+ \bfd\setupinterlinespace
+ \vfil#1\vfil\vfil
+ \stopstandardmakeup}
+
+\endinput
+
+%D A simple test on functionality.
+
+\setupoutput[pdftex]
+
+\starttext
+
+\TitlePage{Do you know \TEX ?}
+
+\startbuffer
+\StartIdea
+ \StartItem We use \TEX\ for typesetting \unknown \StopItem
+ \StartItem mathematical text \unknown \StopItem
+ \StartItem but also for text that has no math \unknown \StopItem
+ \StartItem or presentations like this \unknown \StopItem
+ \StartItem and whatever you can come up with! \StopItem
+\StopIdea
+\stopbuffer
+
+\dorecurse{6}{\getbuffer}
+
+\stoptext
diff --git a/tex/context/base/s-pre-19.tex b/tex/context/base/s-pre-19.tex
new file mode 100644
index 000000000..f93deb1a7
--- /dev/null
+++ b/tex/context/base/s-pre-19.tex
@@ -0,0 +1,328 @@
+%D \module
+%D [ file=s-pre-19,
+%D version=2000.07.31,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Presentation Environment 19,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This style is made in the process or writing the \METAFUN\
+%D manual. It exploits a few tricks, like graphics calculated
+%D using positional information. It also uses the (at that
+%D moment) new menu list placement alternative. If you forget
+%D about the definition of the button shapes, which is
+%D complicated in any system, this style is not even that hard
+%D to follow. Watch how the left side of the buttons follow
+%D the right side of the text graphic.
+%D
+%D While playing bit with this style, the random alternative
+%D made me think of those organic building with non equal
+%D windows (we have a few in The Netherlands), so I decided to
+%D label this style as \type {pre-organic}.
+%D
+%D At the end of this file, there is a small test file, so
+%D when you process this file with \TEXEXEC\ and the options
+%D \type {--mode=demo} and \type {--pdf}, you will get a demo
+%D document.
+
+%D We use one of the standard screen \quote {paper} sizes, and
+%D map it onto the same size, so that we get a nicely cropped
+%D page.
+
+\setuppapersize
+ [S6][S6]
+
+%D Like in the \METAFUN\ manual, we use the Palatino as main
+%D bodyfont. This font is quite readable on even low
+%D resolution screens, although I admit that this style is
+%D developed using an $1400\times1050$ pixel LCD screen, so I
+%D may be biased.
+
+\setupbodyfont
+ [ppl]
+
+%D The layout specification sets up a text area and a right
+%D edge area where the menus will go. Watch the rather large
+%D edge distance. By setting the header and footer dimensions
+%D to zero, we automatically get rid of page body ornaments,
+%D like the pagenumber.
+
+\setuplayout
+ [topspace=48pt,
+ backspace=48pt,
+ cutspace=12pt,
+ width=400pt,
+ margin=0cm,
+ rightedge=88pt,
+ rightedgedistance=48pt,
+ header=0cm,
+ footer=0cm,
+ height=middle]
+
+%D We use a moderate, about a line height, interparagraph
+%D white space.
+
+\setupwhitespace
+ [big]
+
+%D Of course we use colors, since on computer displays they
+%D come for free.
+
+\setupcolors
+ [state=start]
+
+\definecolor [red] [r=.75]
+\definecolor [yellow] [r=.75,g=.75]
+\definecolor [gray] [s=.50]
+\definecolor [white] [s=.85]
+
+%D This is an interactive document, so we enable interaction.
+%D In this style, we disable the viewer's \quote {highlight a
+%D hyperlink when it's clicked on} feature. We will use a
+%D menu, so we enable menus. Later we will see the contract
+%D color |<|hyperlinks gets that color when we are already on
+%D the location|>| in action.
+
+\setupinteraction
+ [state=start,
+ click=off,
+ color=red,
+ contrastcolor=gray,
+ menu=on]
+
+%D The menu itself is set up as follows. Because we will
+%D calculate menubuttons based on their position on the page,
+%D we have to keep track of the positions. Therefore, we set
+%D the \type {position} variable to \type {yes}.
+
+\setupinteractionmenu
+ [right]
+ [frame=off,
+ position=yes,
+ align=middle,
+ topoffset=-.75cm,
+ bottomoffset=-.75cm,
+ color=gray,
+ contrastcolor=gray,
+ style=bold,
+ before=,
+ after=]
+
+%D The menu content is rather sober: a list of topics (later
+%D we will define the command that generates topic entries),
+%D and a close button.
+
+\startinteractionmenu[right]
+ \placelist[Topic][alternative=right]
+ \vfill
+ \but [CloseDocument] close \\
+\stopinteractionmenu
+
+%D We have now arived at the more interesting part of the style
+%D definition: the graphic that goes in the page background.
+%D Because this graphic will change, we define a usable
+%D \METAPOST\ graphic. Page backgrounds are recalculated each
+%D page, opposite to the other backgrounds that are calculated
+%D when a new background is defined, or when repetitive
+%D calculation is turned on.
+
+\setupbackgrounds
+ [page]
+ [background=page]
+
+\defineoverlay
+ [page]
+ [\useMPgraphic{page}]
+
+\setupMPvariables
+ [page]
+ [alternative=3]
+
+\startuseMPgraphic{page}
+
+ \includeMPgraphic{rightsuperbutton}
+
+ StartPage ;
+
+ path p, q ; pickup pencircle scaled 3pt ;
+
+ p := Field[Text][Text] enlarged 36pt superellipsed .90 ;
+
+
+ fill Page withcolor \MPcolor{yellow} ;
+ fill p withcolor \MPcolor{white} ;
+ draw p withcolor \MPcolor{red} ;
+
+ p := Field[Text][Text] enlarged 48pt superellipsed .90 ;
+
+ def right_menu_button (expr nn, rr, pp, xx, yy, ww, hh, dd) =
+ if (pp>0) and (rr>0) :
+ q := rightsuperbutton(p,xx,yy,RightEdgeWidth,hh) ;
+ fill q withcolor \MPcolor{white} ;
+ draw q withcolor if rr=2 : \MPcolor{gray} else : \MPcolor{red} fi ;
+ fi ;
+ enddef ;
+
+ \MPmenubuttons{right}
+
+ StopPage ;
+\stopuseMPgraphic
+
+\startuseMPgraphic{page}
+
+ \includeMPgraphic{rightsuperbutton}
+
+ StartPage ;
+
+ numeric alternative, seed, superness, squeezeness, randomness ;
+ path p, q ; transform t ;
+
+ alternative := \MPvar{alternative} ;
+ seed := uniformdeviate 100 ;
+
+ if alternative > 10 :
+ superness := .85 + ((\realfolio-1)/\lastpage) * .15 ;
+ squeezeness := 12pt - ((\realfolio-1)/\lastpage) * 10pt ;
+ else :
+ superness := .90 ;
+ squeezeness := 12pt ;
+ fi ;
+
+ randomness := squeezeness ;
+
+ alternative := alternative mod 10 ;
+
+ t := identity if alternative=3: shifted (9pt,-9pt) fi ;
+
+ % first we draw the shape that surrounds the text
+
+ randomseed := seed ;
+
+ p := Field[Text][Text] enlarged if
+ alternative = 1 : 36pt superellipsed superness elseif
+ alternative = 2 : 36pt squeezed squeezeness elseif
+ alternative = 3 : 36pt randomized randomness else
+ : 36pt fi ;
+
+ pickup pencircle scaled 3pt ;
+
+ fill Page withcolor \MPcolor{yellow} ;
+ fill p withcolor \MPcolor{white} ;
+ draw p withcolor \MPcolor{red} ;
+
+ % we set p to the wider shape from which we will chip off pieces
+
+ randomseed := seed ;
+
+ p := ( Field[Text][Text] enlarged if
+ alternative = 1 : 48pt superellipsed superness elseif
+ alternative = 2 : 48pt squeezed squeezeness elseif
+ alternative = 3 : 36pt randomized randomness else
+ : 48pt fi ) transformed t ;
+
+ % calls to *_menu_button are generated automatically ...
+
+ def right_menu_button (expr nn, rr, pp, xx, yy, ww, hh, dd) =
+ if (pp>0) and (rr>0) :
+ q := rightsuperbutton(p,xx,yy,RightEdgeWidth,hh) ; % \MPw{menu:right:\realfolio}
+ fill q withcolor \MPcolor{white} ;
+ draw q withcolor if rr=2 : \MPcolor{gray} else : \MPcolor{red} fi ;
+ fi ;
+ enddef ;
+
+ % ... and inserted when the graphic data is flushed here ...
+
+ \MPmenubuttons{right}
+
+ StopPage ;
+\stopuseMPgraphic
+
+\startuseMPgraphic{rightsuperbutton}
+
+vardef rightsuperbutton (expr pat, xpos, ypos, wid, hei) =
+
+ save p, ptop, pbot, t, b, edge, shift, width, height ;
+ path p, ptop, pbot ; pair t, b ; numeric edge, shift, width, height ;
+
+ edge := xpos + wid ; shift := ypos + hei ;
+
+ p := rightpath pat ;
+
+ ptop := ((-infinity,shift)--(edge,shift)) ;
+ pbot := ((-infinity,shift-hei)--(edge,shift-hei)) ;
+
+ t := p intersectionpoint ptop ;
+ b := p intersectionpoint pbot ;
+
+ p := subpath(0,xpart (p intersectiontimes ptop)) of p ;
+ p := subpath(xpart (p intersectiontimes pbot),length(p)) of p ;
+
+ (p -- t -- point 1 of ptop &
+ point 1 of ptop -- point 1 of pbot &
+ point 1 of pbot -- b
+ -- cycle)
+
+enddef ;
+
+\stopuseMPgraphic
+
+%D Topics are identified with \type {\Topic}, which is an
+%D instance of chapter headings. The number is made invisible.
+%D Since it still is a numbered section header, \CONTEXT\ will
+%D write the header to the table of contents.
+
+\definehead
+ [Topic]
+ [chapter]
+
+\setuphead
+ [Topic]
+ [number=no]
+
+%D We will use a bold font in the table of contents. We also
+%D force a complete list.
+
+\setuplist
+ [Topic]
+ [criterium=all,
+ style=bold,
+ before=,
+ after=]
+
+%D The \type {\TitlePage} macro looks horrible, because we
+%D want to keep the interface simple: a list of small
+%D sentences, separated by \type {\\}.
+
+\def\TitlePage#1%
+ {\startstandardmakeup
+ \switchtobodyfont[big]
+ \def\\{\vfill\bfb\let\\=\par}
+ \bfd\setupinterlinespace\gray
+ \vskip.5cm#1\\\vskip.5cm % \\ is really needed -)
+ \stopstandardmakeup}
+
+\doifnotmode{demo}{\endinput}
+
+\starttext
+
+% \useenvironment[pre-organic]
+% \setupoutput[pdftex]
+
+\setupMPvariables[page][alternative=1]
+
+\TitlePage
+ {A Few Nice Quotes\\
+ A Simple Style Demo\\
+ Hans Hagen, August 2000}
+
+\Topic {Rudolf D. Hofstadter} \input douglas \page
+\Topic {Donald E. Knuth} \input knuth \page
+\Topic {Edward R. Tufte} \input tufte \page
+\Topic {Hermann Zapf} \input zapf \page
+
+\stoptext
diff --git a/tex/context/base/spec-fdf.tex b/tex/context/base/spec-fdf.tex
index dd440d9aa..0150390a3 100644
--- a/tex/context/base/spec-fdf.tex
+++ b/tex/context/base/spec-fdf.tex
@@ -154,12 +154,23 @@
\ScaledPointsToWholeBigPoints{\number\!!heighta}\bottom
\ScaledPointsToWholeBigPoints{\number\!!widtha }\width
\ScaledPointsToWholeBigPoints{\number\!!heightb}\height
- \doPDFpagesattribute
+ \xdef\currentPDFcropbox% \doPDFpagesattribute
{/CropBox [\left\space\bottom\space\width\space\height]}%
- \doPDFaddtocatalog
+ \xdef\currentPDFpagemode% \doPDFaddtocatalog
{/PageMode \ifcase#6 /UseNone\or/FullScreen\or/UseOutlines\fi}%
\egroup}
+\global\let\currentPDFcropbox \empty
+\global\let\currentPDFpagemode\empty
+
+\appendtoks % hack to prevent duplicates
+ \ifcase\realfolio\or\doPDFaddtocatalog{\currentPDFpagemode}\fi
+\to\everyshipout
+
+\appendtoks
+ \doPDFpageattribute{\currentPDFcropbox}%
+\to\everyshipout
+
%D \macros
%D {doPDFsetupopenaction,doPDFsetupcloseaction,
%D doPDFsetupopenpageaction,doPDFsetupclosepageaction}
@@ -223,6 +234,8 @@
%D The goto macros use the switch \type{\ifsecondaryreference}
%D to determine if actions should be linked.
+\def\locationfilesuffix{pdf}
+
\def\doPDFstartgotolocation#1#2#3#4#5#6%
{\bgroup
\doifelsenothing{#3}
@@ -233,8 +246,9 @@
{\let\PDFfile\empty}
{\doifparentfileelse{#4}
{\let\PDFfile\empty}
- {\setreferencefilename R /F (#4.pdf)\to\PDFfile
- \ifgotonewwindow\edef\PDFfile{\PDFfile\space/NewWindow true}\fi}}%
+ {\setreferencefilename#4.\locationfilesuffix\to\PDFfile
+ \edef\PDFfile%
+ {R /F (\PDFfile)\ifgotonewwindow\space/NewWindow true \fi}}}%
\edef\action%
{/S /GoTo\PDFfile\space /D (\PDFdestination)}}}
{\doifelsenothing{#4}
@@ -269,8 +283,9 @@
{\let\PDFfile\empty}
{\doifparentfileelse{#4}
{\let\PDFfile\empty}
- {\setreferencefilename R /F (#4.pdf)\to\PDFfile % becomes /GotoR
- \ifgotonewwindow\edef\PDFfile{\PDFfile\space/NewWindow true}\fi}}%
+ {\setreferencefilename#4.\locationfilesuffix\to\PDFfile
+ \edef\PDFfile%
+ {R /F (\PDFfile)\ifgotonewwindow\space/NewWindow true \fi}}}%
\edef\action%
{/S /GoTo\PDFfile\space
/D [\PDFdestination\PDFpageviewwrd]}%
@@ -334,14 +349,11 @@
\def\PDFformcode#1%
{\doFDFiffieldset{#1}{/Field [\doFDFgetfieldset{#1}]}}
-\chardef\PDFsubmitformat=1 % 0=FDF 1=HTML
-
\def\PDFexecuteimportform {/Named /N /AcroForm:ImportFDF}
\def\PDFexecuteexportform {/Named /N /AcroForm:ExportFDF}
\def\PDFexecuteresetform {/ResetForm \PDFformcode\argumentA}
\def\PDFexecutesubmitform {/SubmitForm \PDFformcode\argumentB
- %/Flags \ifnum\PDFsubmitformat=1 12\fi
- %/Flags \ifnum\PDFsubmitformat=1 4\fi
+ /Flags \ifnum\submitoutputformat=2 12\else4\fi
/F (\argumentA)}
\def\PDFexecutehide {/Hide /T (\argumentA) /H true}
@@ -362,6 +374,9 @@
\def\PDFexecutesearch {/Named /N /Find}
\def\PDFexecutesearchagain {/Named /N /FindAgain}
\def\PDFexecutegotopage {/Named /N /GoToPage}
+\def\PDFexecutequery {/Named /N /AcroSrch:Query}
+\def\PDFexecutequeryagain {/Named /N /AcroSrch:NextHit}
+
\def\doPDFstartexecutecommand#1#2#3#4%
{\doifdefined{PDFexecute#3}
@@ -513,10 +528,11 @@
\def\doPDFinsertsoundtrack#1#2#3%
{\bgroup
\xdef\currentsound{#2}%
- \doPDFannotation width 0 height 0 data
- {/Subtype /Movie
- /T (sound \currentsound)
- /Movie <</F (#1)>>}%
+ \flushatshipout % since it can be buried in a chained box
+ {\doPDFannotation width 0 height 0 data
+ {/Subtype /Movie
+ /T (sound \currentsound)
+ /Movie <</F (#1)>>}}%
\egroup}
%D \macros
diff --git a/tex/context/base/spec-ini.tex b/tex/context/base/spec-ini.tex
index f1a37104e..8e4586f72 100644
--- a/tex/context/base/spec-ini.tex
+++ b/tex/context/base/spec-ini.tex
@@ -66,6 +66,28 @@
7: neznamy ovladac (driver) --
\stopmessages
+\startmessages italian library: specials
+ title: specialità
+ 1: -- caricato
+ 2: non è permesso un annidamento maggiore --
+ 3: -- reimpostato
+ 4: il comando -- non esiste
+ 5: caricamento del file di definizione --
+ 6: annidamento non permesso
+ 7: driver sconosciuto --
+\stopmessages
+
+\startmessages norwegian library: specials
+ title: specials
+ 1: -- er lest inn
+ 2: dypere 'nesting' er ikke tillatt --
+ 3: -- er tilbakestilt
+ 4: kommando -- eksisterer ikke
+ 5: leser inn definisjonsfil for --
+ 6: 'nesting' er ikke tillatt
+ 7: ukjent driver --
+\stopmessages
+
\startmessages dutch library: interactions
21: -- code tussengevoegd
\stopmessages
@@ -82,6 +104,14 @@
21: -- kod vlozen
\stopmessages
+\startmessages italian library: interactions
+ 21: codice -- inserito
+\stopmessages
+
+\startmessages norwegian library: interactions
+ 21: -- kode satt inn / tilføyd
+\stopmessages
+
%D \TEX\ produces files in the \DVI\ format. This format is
%D well defined and stable. In this format one||byte commands
%D are used which can optionally be followed by length
@@ -272,11 +302,11 @@
\addtocommalist\currentspecial\preloadedspecials}
\def\startspecials%
- {\pushmacro\currentspecial
+ {\localpushmacro\currentspecial
\dodoubleempty\dostartspecials}
\def\stopspecials%
- {\popmacro\currentspecial
+ {\localpopmacro\currentspecial
\protect}
%D \macros
diff --git a/tex/context/base/spec-mis.tex b/tex/context/base/spec-mis.tex
index 2722ee686..ae7c61e44 100644
--- a/tex/context/base/spec-mis.tex
+++ b/tex/context/base/spec-mis.tex
@@ -121,6 +121,15 @@
\fi
+%D When submitting forms, we need to communicate the format.
+
+\chardef\submitoutputformat=0 % 0=unknown 1=HTML 2=FDF
+
+\def\setsubmitoutputformat#1%
+ {\doifinsetelse{#1}{FDF,fdf}
+ {\chardef\submitoutputformat=2}
+ {\chardef\submitoutputformat=1}}
+
\protect
\endinput
diff --git a/tex/context/base/spec-pdf.tex b/tex/context/base/spec-pdf.tex
index 377821506..6b1565eff 100644
--- a/tex/context/base/spec-pdf.tex
+++ b/tex/context/base/spec-pdf.tex
@@ -187,6 +187,9 @@
\definefileinsertion{yy}{mov}{\doPDFinsertmov}
\definefileinsertion{tr}{mov}{\doPDFinsertmov}
+\definefileinsertion{yy}{avi}{\doPDFinsertmov}
+\definefileinsertion{tr}{avi}{\doPDFinsertmov}
+
%D \macros
%D {doinsertsoundtrack}
%D
@@ -433,25 +436,22 @@
%D Next come our housekeeping macros.
\def\doPDFaddtocatalog#1%
- {\special
- {\@@insertpostscriptretain
- [ {Catalog} << #1 >>
- /PUT
- pdfmark}}
+ {\doifsomething{#1}
+ {\special
+ {\@@insertpostscriptretain
+ [ {Catalog} << #1 >> /PUT pdfmark}}}
\def\doPDFpageattribute#1%
- {\special
- {\@@insertpostscriptretain
- [ {ThisPage} #1
- /PUT
- pdfmark}}
+ {\doifsomething{#1}
+ {\special
+ {\@@insertpostscriptretain
+ [ {ThisPage} << #1 >> /PUT pdfmark}}}
\def\doPDFpagesattribute#1%
- {\special
- {\@@insertpostscriptretain
- [ #1
- /PAGES
- pdfmark}}
+ {\doifsomething{#1}
+ {\special
+ {\@@insertpostscriptretain
+ [ #1 /PAGES pdfmark}}}
\let\doPDFresetpageattributes=\relax
diff --git a/tex/context/base/spec-ps.tex b/tex/context/base/spec-ps.tex
index 2906f0e6b..9a5a81490 100644
--- a/tex/context/base/spec-ps.tex
+++ b/tex/context/base/spec-ps.tex
@@ -75,7 +75,7 @@
{\special
{\@@insertpostscriptliteral
gsave currentpoint currentpoint translate
- #1 rotate neg exch neg exch translate}}
+ \number#1\space\space rotate neg exch neg exch translate}}
\definespecial\dostoprotation%
{\special
diff --git a/tex/context/base/spec-tpd.tex b/tex/context/base/spec-tpd.tex
index 3b6065ec9..d7059a8b5 100644
--- a/tex/context/base/spec-tpd.tex
+++ b/tex/context/base/spec-tpd.tex
@@ -169,10 +169,11 @@
\definefileinsertion{tpd}{mps}#1#2#3#4#5#6#7#8#9%
{\hbox
- {\convertMPcolors{#1}%
+ {%\convertMPcolors{#1}% plugged in supp-mpe
\scratchdimen=#3pt \PointsToReal{.01\scratchdimen}\xscale
\scratchdimen=#4pt \PointsToReal{.01\scratchdimen}\yscale
- \convertMPtoPDF{#1}\xscale\yscale}}
+ \convertMPtoPDF{#1}\xscale\yscale
+ \global\let\PDFimagereference\empty}}
%D The old, \TEX\ base \PDF\ insertion macro:
%D
@@ -263,6 +264,7 @@
%D general \PDF\ one.
\definefileinsertion{tpd}{mov}{\doPDFinsertmov}
+\definefileinsertion{tpd}{avi}{\doPDFinsertmov}
%D \macros
%D {doinsertsoundtrack}
@@ -358,6 +360,11 @@
\def\dogetfiguresizetif{\dogetTPDfiguresize\normaldogetfiguresizetif}
\def\dogetfiguresizejpg{\dogetTPDfiguresize\normaldogetfiguresizejpg}
+\appendtoks \let\dogetfiguresizepdf\normaldogetfiguresizepdf \to \everyresetspecials
+\appendtoks \let\dogetfiguresizepng\normaldogetfiguresizepng \to \everyresetspecials
+\appendtoks \let\dogetfiguresizetif\normaldogetfiguresizetif \to \everyresetspecials
+\appendtoks \let\dogetfiguresizejpg\normaldogetfiguresizejpg \to \everyresetspecials
+
%D \macros
%D {doregisterfigure}
%D
diff --git a/tex/context/base/spec-tr.tex b/tex/context/base/spec-tr.tex
index 5a29ed1e0..1d12a80b5 100644
--- a/tex/context/base/spec-tr.tex
+++ b/tex/context/base/spec-tr.tex
@@ -73,7 +73,7 @@
{\special
{\@@insertpostscriptliteral
gsave currentpoint currentpoint translate
- #1 neg rotate neg exch neg exch translate}}
+ \number#1\space\space neg rotate neg exch neg exch translate}}
\definespecial\dostoprotation%
{\special
diff --git a/tex/context/base/supp-ali.tex b/tex/context/base/supp-ali.tex
new file mode 100644
index 000000000..363c239bc
--- /dev/null
+++ b/tex/context/base/supp-ali.tex
@@ -0,0 +1,140 @@
+%D \module
+%D [ file=supp-ali,
+%D version=2000.4.17,
+%D title=\CONTEXT\ Support Macros,
+%D subtitle=Alignment,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Yet undocumented.
+
+% 0 = centered
+% 1 = left in before
+% 2 = right in before
+% 3 = left in after
+% 4 = right in after
+
+\unprotect
+
+\chardef\characteralignmentmode=4
+
+\let\afterassignwidth \!!zeropoint
+\let\beforeassignwidth\!!zeropoint
+
+\def\alignmentcharacter{.}
+
+\let\alignmentclass\s!default % can be used to handle multiple mixed ones
+
+\def\setfirstpasscharacteralign%
+ {\popcharacteralign
+ \expanded{\dosetfirstpasscharacteralign{\alignmentcharacter}}}
+
+\def\dosetfirstpasscharacteralign#1%
+ {\def\checkalignment##1%
+ {\popcharacteralign
+ \setbox\scratchbox=\hbox{#1}%
+ \edef\characterassignwidth{\the\wd\scratchbox}%
+ \setbox\scratchbox=\hbox{}%
+ \docheckalignment#1##1#1\relax\relax
+ \scratchdimen=-\wd\scratchbox
+ \setbox\scratchbox=\hbox{##1}%
+ \advance\scratchdimen by \wd\scratchbox
+ \ifdim\scratchdimen>\beforeassignwidth\relax
+ \edef\beforeassignwidth{\the\scratchdimen}%
+ \fi
+ \ifdim\scratchdimen=\!!zeropoint
+ \setbox\scratchbox=\hbox{##1}%
+ \scratchdimen=\wd\scratchbox
+ \ifnum\characteralignmentmode=0
+ % do nothing
+ \else\ifnum\characteralignmentmode<3
+ \advance\scratchdimen by \characterassignwidth
+ \ifdim\scratchdimen>\beforeassignwidth\relax
+ \edef\beforeassignwidth{\the\scratchdimen}%
+ \fi
+ \else
+ \ifdim\scratchdimen>\afterassignwidth\relax
+ \edef\afterassignwidth{\the\scratchdimen}%
+ \fi
+ \fi\fi
+ \fi
+ \pushcharacteralign}%
+ \def\docheckalignment##1#1##2##3\relax%
+ {\ifx##2\relax
+ \setbox\scratchbox=\hbox{##1}%
+ \ifdim\wd\scratchbox>\afterassignwidth
+ \edef\afterassignwidth{\the\wd\scratchbox}%
+ \fi
+ \else
+ \docheckalignment##2##3\relax
+ \fi}}
+
+\def\setsecondpasscharacteralign%
+ {\popcharacteralign
+ \expanded{\dosetsecondpasscharacteralign{\alignmentcharacter}}}
+
+\def\dosetsecondpasscharacteralign#1%
+ {\def\checkalignment##1%
+ {\popcharacteralign
+ \setbox\scratchbox=\hbox{#1}%
+ \edef\characterassignwidth{\the\wd\scratchbox}%
+ \setbox\scratchbox=\hbox{}%
+ \docheckalignment#1##1#1\relax\relax
+ \scratchdimen=\wd\scratchbox
+ \setbox\scratchbox=\hbox{##1}%
+ \ifdim\scratchdimen=\wd\scratchbox
+ \ifcase\characteralignmentmode
+ \noindent\box\scratchbox
+ \else
+ \noindent\hbox
+ {\dontcomplain
+ \hbox to \beforeassignwidth
+ {\ifcase\characteralignmentmode\or
+ \box\scratchbox\hss
+ \or
+ \hss\box\scratchbox\hskip\characterassignwidth
+ \or
+ \hss\rlap{\box\scratchbox}%
+ \or
+ \hss\rlap{\hbox to \afterassignwidth{\hss\box\scratchbox}}%
+ \fi}%
+ \hskip\afterassignwidth}%
+ \fi
+ \else
+ \noindent\hbox
+ {\hbox to \beforeassignwidth
+ {\hss\box\scratchbox\hskip-\scratchdimen}%
+ \hskip\afterassignwidth}%
+ \fi}%
+ \def\docheckalignment##1#1##2##3\relax%
+ {\ifx##2\relax
+ \setbox\scratchbox=\hbox{##1}%
+ \else
+ \docheckalignment##2##3\relax
+ \fi}}
+
+% provide a means to use multiple alignments mixed
+
+\def\pushcharacteralign%
+ {\setxvalue{@cac@\alignmentclass}{\noexpand\do
+ {\afterassignwidth}{\beforeassignwidth}{\alignmentcharacter}}}
+
+\def\popcharacteralign%
+ {\def\do##1##2##3%
+ {\def\afterassignwidth {##1}%
+ \def\beforeassignwidth {##2}%
+ \def\alignmentcharacter{##3}}%
+ \getvalue{@cac@\alignmentclass}}
+
+\long\def\startcharacteralign#1\stopcharacteralign%
+ {\bgroup
+ \setfirstpasscharacteralign #1%
+ \setsecondpasscharacteralign#1%
+ \egroup}
+
+\protect \endinput
diff --git a/tex/context/base/supp-box.tex b/tex/context/base/supp-box.tex
index abc14fc67..aa6f3a7d5 100644
--- a/tex/context/base/supp-box.tex
+++ b/tex/context/base/supp-box.tex
@@ -18,6 +18,12 @@
\writestatus{loading}{Context Support Macros / Boxes}
\unprotect
+
+%D First a hack to make this module loadable in plain \TEX.
+
+\ifx\outer\relax \else
+ \def\newbox{\alloc@4\box\chardef\insc@unt}
+\fi
%D \macros
%D {nextdepth}
@@ -111,8 +117,7 @@
%D \stoptypen
\def\getboxheight#1\of#2\box#3%
- {#1=\ht#3%
- \advance#1 by \dp#3\relax}
+ {#1=\ht#3\advance#1 by \dp#3\relax}
%D \macros
%D {doiftextelse, doiftext}
@@ -183,6 +188,9 @@
\afterassignment\dododowithnextbox
\setbox\nextbox}
+\def\dododowithnextbox%
+ {\aftergroup\dodowithnextbox}
+
% Better but first to be checked:
%
%\long\def\dowithnextbox#1%
@@ -190,9 +198,6 @@
% \afterassignment\dododowithnextbox
% \setbox\nextbox}
-\def\dododowithnextbox%
- {\aftergroup\dodowithnextbox}
-
%D So in fact we get:
%D
%D \starttypen
@@ -225,7 +230,29 @@
%D \stoptypen
%D
%D This alternative also accepts \type{\box0} and alike, but
-%D we don't really need this functionality now.
+%D we don't really need this functionality now.
+
+%D \macros
+%D {dowithnextboxcontent}
+%D
+%D But, occasionally we do need to pass some local settings
+%D without wanting to use additional grouping. Therefore we
+%D provide:
+%D
+%D \starttypen
+%D \dowithnextboxcontent{inside}{after}{box content}
+%D \stoptypen
+
+\long\def\dowithnextboxcontent#1#2% inside, after
+ {\long\def\dodowithnextbox{#2}%
+ \def\dododowithnextbox{#1\aftergroup\dodowithnextbox}%
+ \afterassignment\dododowithnextbox
+ \setbox\nextbox}
+
+%D Now we can redefine \type {\dowithnextbox} as follows:
+
+\def\dowithnextbox%
+ {\dowithnextboxcontent{}}
%D \macros
%D {beginofshapebox,
@@ -363,7 +390,7 @@
\newcount\shapecounter
-\def\reshapebox#1%
+\def\reshapebox#1%
{\doreshapebox
{#1}
{\penalty\shapepenalty}
@@ -376,50 +403,50 @@
\unvcopy\oldshapebox
\setbox\newshapebox=\box\voidb@x
\shapecounter=0
- \loop
- \someshapelefttrue
- \ifdim\lastskip=\!!zeropoint\relax
- \ifdim\lastkern=\!!zeropoint\relax
- \ifnum\lastpenalty=0
- \setbox\shapebox=\lastbox
- \ifvoid\shapebox
- \unskip\unpenalty\unkern
- \else
- \ifdim\wd\shapebox=\shapesignal\relax
- \someshapeleftfalse
- \else
- \shapecounter=0
- \setbox\newshapebox=
- \normalvbox{#1\unvbox\newshapebox}
- \fi
- \fi
- \else
- \shapepenalty=\lastpenalty
- \setbox\newshapebox=
- \normalvbox{#2\unvbox\newshapebox}
- \unpenalty
- \fi
+ \doloop{\dodoreshapebox{#1}{#2}{#3}{#4}}%
+ \unvbox\newshapebox
+ \egroup}
+
+\def\dodoreshapebox#1#2#3#4% \shapebox, \shapepenalty, \shapekern, \shapeskip
+ {\ifdim\lastskip=\!!zeropoint\relax
+ \ifdim\lastkern=\!!zeropoint\relax
+ \ifnum\lastpenalty=0
+ \setbox\shapebox=\lastbox
+ \ifvoid\shapebox
+ \unskip\unpenalty\unkern
+ \else
+ \ifdim\wd\shapebox=\shapesignal\relax
+ \exitloop
\else
- \shapekern=\lastkern
+ \shapecounter=0
\setbox\newshapebox=
- \normalvbox{#3\unvbox\newshapebox}
- \unkern
+ \normalvbox{#1\unvbox\newshapebox}
\fi
- \else
- \shapeskip=\lastskip
- \setbox\newshapebox=
- \normalvbox{#4\unvbox\newshapebox}
- \unskip
\fi
- \ifnum\shapecounter>100 % can be less
- \message{<<forced exit from shapebox>>}%
- \someshapeleftfalse
\else
- \advance\shapecounter by 1
+ \shapepenalty=\lastpenalty
+ \setbox\newshapebox=
+ \normalvbox{#2\unvbox\newshapebox}
+ \unpenalty
\fi
- \ifsomeshapeleft \repeat
- \unvbox\newshapebox
- \egroup}
+ \else
+ \shapekern=\lastkern
+ \setbox\newshapebox=
+ \normalvbox{#3\unvbox\newshapebox}
+ \unkern
+ \fi
+ \else
+ \shapeskip=\lastskip
+ \setbox\newshapebox=
+ \normalvbox{#4\unvbox\newshapebox}
+ \unskip
+ \fi
+ \ifnum\shapecounter>100 % can be less
+ \message{<<forced exit from shapebox>>}%
+ \exitloop
+ \else
+ \advance\shapecounter by 1
+ \fi}
\def\beginofshapebox%
{\setbox\oldshapebox=\normalvbox
@@ -493,6 +520,21 @@
%D \som \type{\shapekern}
%D \som \type{\shapeskip}
%D \stopopsomming
+
+%D \macros
+%D {shapedhbox}
+%D
+%D When constructing a new box, using the content of \type
+%D {\shapebox}, one can best use \type {\shapedhbox} instead
+%D of \type {\hbox}, since it manages the height and depth of
+%D the line.
+
+\def\shapedhbox%
+ {\dowithnextbox
+ {\ht\nextbox=\!!zeropoint
+ \dp\nextbox=\!!zeropoint
+ \box\nextbox}
+ \hbox}
%D \macros
%D {hyphenatedword,
@@ -586,32 +628,48 @@
%D third argument into account, which leads to a bit more
%D complex macro than needed at first sight.
+% \def\dodoboundtext#1%
+% {\setbox0=\hbox{\unhcopy0 #1}%
+% \ifdim\wd0>\dimen0
+% \let\dodoboundtext=\gobbleoneargument
+% \else
+% #1\relax
+% \fi}
+%
+% \def\doboundtext#1#2#3%
+% {\hbox
+% {\setbox0=\hbox{#1}%
+% \dimen0=#2\relax
+% \ifdim\wd0>\dimen0
+% \setbox2=\hbox{#3}%
+% \advance\dimen0 by -\wd2
+% \setbox0=\hbox{}%
+% \processtokens
+% {\dodoboundtext}
+% {\dodoboundtext}
+% {}
+% {\space}
+% {#1}%
+% \box2
+% \else
+% \box0
+% \fi}}
+
\def\dodoboundtext#1%
- {\setbox0=\hbox{\unhcopy0 #1}%
- \ifdim\wd0>\dimen0
- \let\dodoboundtext=\gobbleoneargument
- \else
- #1\relax
- \fi}
+ {\setbox2=\hbox{#1}%
+ \advance\dimen0 by -\wd2
+ \ifdim\dimen0>\!!zeropoint\relax#1\fi}%
\def\doboundtext#1#2#3%
{\hbox
{\setbox0=\hbox{#1}%
\dimen0=#2\relax
\ifdim\wd0>\dimen0
- \setbox2=\hbox{#3}%
- \advance\dimen0 by -\wd2
- \setbox0=\hbox{}%
- \processtokens
- {\dodoboundtext}
- {\dodoboundtext}
- {}
- {\space}
- {#1}%
- \box2
- \else
- \box0
- \fi}}
+ \setbox0=\hbox{#3}%
+ \advance\dimen0 by -\wd0
+ \handletokens#1\with\dodoboundtext
+ \fi
+ \box0}}
%D \macros
%D {limitatetext}
@@ -630,33 +688,104 @@
\ifx\fakecompoundhyphen\undefined \let\fakecompoundhyphen\relax \fi
+%D The simple alternative is as follows:
+%D
+%D \starttypen
+%D \unexpanded\def\limitatetext%
+%D {\bgroup % evt \setstrut
+%D \fakecompoundhyphen % dangerous ! ! ! ! ! ! ! ! !
+%D \dowithnextbox\dolimitatetext\hbox}
+%D
+%D \def\dolimitatetext#1#2%
+%D {\doifelsenothing{#1}
+%D {\unhbox\nextbox}
+%D {\widowpenalty=0
+%D \clubpenalty=0
+%D \scratchdimen=#1\relax
+%D \ifdim\wd\nextbox>\scratchdimen
+%D \setbox\scratchbox=\hbox{ #2}%
+%D \advance\scratchdimen by -\wd\scratchbox
+%D \setbox\nextbox=\vbox
+%D {\hsize=\scratchdimen
+%D \hfuzz\maxdimen
+%D \veryraggedright
+%D \strut\unhcopy\nextbox}%
+%D \ifdim\ht\nextbox>\ht\strutbox \else
+%D \setbox\scratchbox\null % overfull and not split
+%D \fi
+%D \setbox\nextbox=\vbox % if omitted: missing brace reported
+%D {\splittopskip=\openstrutheight
+%D \setbox\nextbox=\vsplit\nextbox to \ht\strutbox
+%D \unvbox\nextbox
+%D \setbox\nextbox=\lastbox
+%D \global\setbox1=\hbox
+%D {\unhbox\nextbox\unskip\kern\!!zeropoint\box\scratchbox\unskip}}%
+%D \unhbox1
+%D \else
+%D \unhbox\nextbox
+%D \fi}%
+%D \egroup}
+%D \stoptypen
+%D
+%D The next alternative accepts a negative width. A negative
+%D value crops the beginning. The macro thereby becomes less
+%D readable, which is why we kept the original here too.
+
\unexpanded\def\limitatetext%
- {\bgroup
+ {\bgroup % evt \setstrut
+ \fakecompoundhyphen % dangerous ! ! ! ! ! ! ! ! !
\dowithnextbox\dolimitatetext\hbox}
-
+
\def\dolimitatetext#1#2%
{\doifelsenothing{#1}
{\unhbox\nextbox}
- {\fakecompoundhyphen
- \widowpenalty=0
+ {\widowpenalty=0
\clubpenalty=0
\scratchdimen=#1\relax
+ \ifdim\scratchdimen<\!!zeropoint\relax % we'll take the last line
+ \donefalse
+ \scratchdimen=-\scratchdimen
+ \else
+ \donetrue
+ \fi
\ifdim\wd\nextbox>\scratchdimen
- \setbox\scratchbox=\hbox{ #2}%
+ \setbox\scratchbox=\hbox{\ifdone\space#2\else#2\space\fi}%
\advance\scratchdimen by -\wd\scratchbox
+ \setbox0=\box\nextbox
\setbox\nextbox=\vbox
{\hsize=\scratchdimen
\hfuzz\maxdimen
\veryraggedright
- \strut\unhbox\nextbox}%
- \setbox\nextbox=\vbox % if omitted: missing brace reported
- {\splittopskip=\openstrutheight
- \setbox\nextbox=\vsplit\nextbox to \ht\strutbox
- \unvbox\nextbox
- \setbox\nextbox=\lastbox
- \global\setbox1=\hbox
- {\unhbox\nextbox\unskip\kern\!!zeropoint\box\scratchbox\unskip}}%
- \unhbox1
+ \strut
+ \ifdone \else
+ \parfillskip=\!!zeropoint
+ \rightskip=\!!zeropoint
+ \hskip\!!zeropoint \!!plus 1\!!fill % \hsize
+ \fi
+ \unhcopy0}%
+ \ifdim\ht\nextbox>\ht\strutbox
+ \setbox\nextbox=\vbox % if omitted: missing brace reported
+ {\splittopskip=\openstrutheight
+ \ifdone
+ \setbox\nextbox=\vsplit\nextbox to \ht\strutbox
+ \else
+ \doloop
+ {\setbox0=\vsplit\nextbox to \ht\strutbox
+ \ifdim\ht\nextbox>\ht\strutbox \else \exitloop \fi}%
+ \fi
+ \unvbox\nextbox
+ \setbox\nextbox=\lastbox
+ \global\setbox1=\hbox
+ {\ifdone
+ \unhbox\nextbox\unskip\kern\!!zeropoint\box\scratchbox
+ \else
+ \box\scratchbox\unhbox\nextbox
+ \fi
+ \unskip}}%
+ \unhbox1
+ \else
+ \unhbox0
+ \fi
\else
\unhbox\nextbox
\fi}%
@@ -757,6 +886,8 @@
%D In order to prevent problems with nested isolated words, we
%D do process them, but only split at the outermost level.
+\newskip\isolatedlastskip
+
\def\processisolatedwords#1#2% todo: vbox ipv hbox ivm afbreken!
{\bgroup % todo: doloop
\fakecompoundhyphen
@@ -768,7 +899,7 @@
\global\let\localbetweenisolatedwords\betweenisolatedwords
\setbox0=\hbox % we default to spaces, but from inside out
{\ignorespaces#1% \localbetweenisolatedwords can be overruled
- \xdef\isolatedlastskip{\the\lastskip}}%
+ \global\isolatedlastskip=\lastskip}%
\setbox2=\vbox
{%\hyphenpenalty10000 % this one fails in \url breaking,
\lefthyphenmin=\!!maxcard % but this trick works ok, due to them
@@ -792,11 +923,20 @@
\vbox % outer \hbox needed
{\unvbox4 % for nested use
\setbox4=\lastbox
- \hbox{#2{\hbox{\unhbox4}}}}}%
- \ifdim\ht2>\!!zeropoint \localbetweenisolatedwords \repeat
+ \hbox{#2{\hbox
+ {\unhbox4
+ \unskip\unpenalty % remove end of line stuff
+ \global\dimen1=\lastkern}}}}}%
+ \ifdim\ht2>\!!zeropoint\relax
+ \ifdim\dimen1=\compoundbreakpoint
+ \allowbreak
+ \else
+ \localbetweenisolatedwords
+ \fi
+ \repeat
\unskip}%
\unhbox0\unskip
- \ifdim\isolatedlastskip=\!!zeropoint\else % added
+ \ifdim\isolatedlastskip=\!!zeropoint\relax\else % added
\hskip\isolatedlastskip
\fi
\fi
@@ -1003,45 +1143,41 @@
\advance\hsize by \scratchdimen
\divide\hsize by #3\relax}
+\newbox\rigidcolumnbox
+
\def\rigidcolumnbalance#1%
- {\global\chardef\rigidcolumnbox=#1\relax
- \ifnum\rigidcolumns=1
- \ifinner\ifhmode\box\else\unvbox\fi\else\unvbox\fi\rigidcolumnbox
+ {\ifnum\rigidcolumns=1 % tzt ook h/d correctie
+ \ifinner\ifhmode\box\else\unvbox\fi\else\unvbox\fi#1\relax
\else
- \hbox to \savedrigidhsize % was \hsize
- {\vbadness=10000
- \tabskip\!!zeropoint
+ \vbox
+ {\forgetall
+ \dontcomplain
\setbox\rigidcolumnbox=\vbox
- {\unvbox\rigidcolumnbox
- \unpenalty\removelastskip}% get rid of \blank's
- %\splittopskip=\openstrutheight
- \splittopskip=\!!zeropoint
- %\scratchdimen=\ht\rigidcolumnbox % sensitive for overflow
- %\divide\scratchdimen by \rigidcolumns % therefore we need the hack:
- \scratchdimen=1pt
- \divide\scratchdimen by \rigidcolumns
- \expanded{\scratchdimen=\withoutpt{\the\scratchdimen}\ht\rigidcolumnbox}%
- \advance\scratchdimen by \ht\strutbox
- \valign{##\vfill\cr\dorigidcolumnsplits}}%
- \fi}
-
-\def\dorigidcolumnsplits%
- {\ifnum\rigidcolumns>0
- \setbox\scratchbox=\vsplit\rigidcolumnbox to \scratchdimen
- \hbox to \hsize
- \bgroup
- \ifalignrigidcolumns
- \vbox to \ifstretchrigidcolumns\vsize\else\scratchdimen\fi
- {\unvbox\scratchbox}%
- \else
- \vbox{\unvbox\scratchbox}%
- \fi
- \hss
- \egroup
- \doglobal\decrement\rigidcolumns
- \cr
- \ifnum\rigidcolumns>0\noalign{\hfil}\fi
- \expandafter\dorigidcolumnsplits
+ {\line{}\goodbreak\unvbox#1\removebottomthings}%
+ \splittopskip=\openstrutheight
+ \setbox\scratchbox=\vsplit\rigidcolumnbox to \!!zeropoint
+ \scratchdimen=\ht\rigidcolumnbox
+ \divide\scratchdimen by \rigidcolumns
+ \getnoflines\scratchdimen
+ \scratchdimen=\noflines\lineheight
+ \setbox\scratchbox=\hbox to \savedrigidhsize
+ {\dorecurse{\rigidcolumns}
+ {\setbox\scratchbox=\vsplit\rigidcolumnbox to \scratchdimen
+ \dp\scratchbox=\openstrutdepth
+ \setbox\scratchbox=\vtop
+ \ifalignrigidcolumns to
+ \ifstretchrigidcolumns\vsize\else\scratchdimen\fi
+ \fi
+ {\unvbox\scratchbox}%
+ \wd\scratchbox=\hsize
+ \box\scratchbox
+ \hfill}%
+ \hfillneg}%
+ \advance\scratchdimen by -\openstrutdepth
+ \setbox\scratchbox\hbox{\raise\scratchdimen\box\scratchbox}
+ \dp\scratchbox=\openstrutdepth
+ \ht\scratchbox=\scratchdimen
+ \box\scratchbox}
\fi}
%D \macros
@@ -1492,6 +1628,19 @@
\egroup}
\hbox}
+%D \macros
+%D {lhbox,mhbox,rhbox}
+%D
+%D A few more boxes.
+
+\def\lhbox{\dowithnextbox{\hbox to \hsize{\box\nextbox\hss }}\hbox}
+\def\mhbox{\dowithnextbox{\hbox to \hsize{\hss\box\nextbox\hss}}\hbox}
+\def\rhbox{\dowithnextbox{\hbox to \hsize{\hss\box\nextbox }}\hbox}
+
+\let\lefthbox =\lhbox
+\let\midhbox =\mhbox
+\let\righthbox=\rhbox
+
%D \macros
%D {boxofsize}
%D
@@ -1641,6 +1790,71 @@
\def\middlebox#1%
{\hbox{\setbox0=\placedbox{#1}\boxoffset=-.5\wd0\rightbox{\box0}}}
+%D \macros
+%D {initializeboxstack,savebox,foundbox}
+%D
+%D At the cost of some memory, but saving box registers, we
+%D have implemented a box repository.
+%D
+%D \starttypen
+%D \initializeboxstack{one}
+%D
+%D \savebox{one}{a}{test a}
+%D \savebox{one}{p}{test p}
+%D \savebox{one}{q}{test q}
+%D
+%D \hbox{a:\foundbox{one}{a}} \par
+%D \hbox{q:\foundbox{one}{q}} \par
+%D \hbox{p:\foundbox{one}{p}} \par
+%D \hbox{x:\foundbox{one}{x}} \par
+%D \hbox{y:\foundbox{two}{a}} \par
+%D \stoptypen
+
+\def\@@stackbox{boxstack:b:}
+\def\@@stackmax{boxstack:m:}
+\def\@@stacktag{boxstack:t:}
+
+\def\initializeboxstack#1%
+ {\ifundefined{\@@stackbox#1}%
+ \@EA\newbox\csname\@@stackbox#1\endcsname
+ \else
+ \@EA\global\@EA\setbox\csname\@@stackbox#1\endcsname\vbox{}%
+ \fi
+ % actually we should erase the old values
+ \setgvalue{\@@stackmax#1}{0}}
+
+\def\savebox#1#2% stack name
+ {\dowithnextbox
+ {\doifdefined{\@@stackbox#1}
+ {\@EA\doglobal\@EA\increment\csname\@@stackmax#1\endcsname
+ \setxvalue{\@@stacktag#2}{\csname\@@stackmax#1\endcsname}%
+ \global\setbox\csname\@@stackbox#1\endcsname=\vbox
+ {\forgetall
+ \setbox\scratchbox=\vbox{\box\nextbox}
+ \ht\scratchbox=\!!onepoint
+ \dp\scratchbox=\!!zeropoint
+ \unvbox\csname\@@stackbox#1\endcsname
+ \offinterlineskip
+ \allowbreak
+ \box\scratchbox}}}%
+ \vbox}
+
+\def\foundbox#1#2%
+ {\vbox
+ {\doifdefined{\@@stackbox#1}
+ {\doifdefined{\@@stacktag#2}
+ {\setbox\scratchbox=\vbox
+ {\splittopskip\!!zeropoint
+ \setbox0=\copy\csname\@@stackbox#1\endcsname
+ \dimen0=\getvalue{\@@stacktag#2}pt
+ \advance\dimen0 by -\!!onepoint
+ \setbox2=\vsplit0 to \dimen0
+ \ifdim\ht0>\!!onepoint
+ \setbox0=\vsplit0 to \!!onepoint
+ \fi
+ \unvbox0\setbox0=\lastbox\unvbox0}%
+ \unvbox\scratchbox}}}}
+
%D \macros
%D {removedepth, obeydepth}
%D
@@ -1654,6 +1868,42 @@
\def\obeydepth%
{\par \removedepth \ifvmode \kern\dp\strutbox \fi}
+%D \macros
+%D {removebottomthings, removelastskip}
+%D
+%D A funny (but rather stupid) one, plus a redefinition.
+
+\def\removebottomthings%
+ {\dorecurse{5}{\unskip\unkern\unpenalty}}
+
+\def\removelastskip% \ifvmode the plain tex one \fi
+ {\ifvmode\ifdim\lastskip=\z@\else\vskip-\lastskip\fi\fi}
+
+%D \macros
+%D {raisebox,lowerbox}
+%D
+%D Some more box stuff, related to positioning (under
+%D construction). Nice stuff for a tips and tricks maps
+%D article.
+%D
+%D \starttypen
+%D \raisebox{100pt}\hbox{test}
+%D \raisebox50pt\hbox{test}
+%D \hsmash{\raisebox{100pt}\hbox{test}}
+%D \stoptypen
+
+\def\doraiselowerbox#1#2% a nice trick us used to accept
+ {\def\next% % both direct and {} dimensions
+ {\dowithnextbox
+ {\setbox\nextbox=\hbox{#1\scratchdimen\box\nextbox}%
+ \ht\nextbox=\ht\strutbox
+ \dp\nextbox=\dp\strutbox
+ \box\nextbox}}%
+ \afterassignment\next\scratchdimen=#2}
+
+\def\raisebox{\doraiselowerbox\raise}
+\def\lowerbox{\doraiselowerbox\raise}
+
% maybe some day we need this
%
% \def\appendvbox#1% % uses \box8
diff --git a/tex/context/base/supp-emp.tex b/tex/context/base/supp-emp.tex
new file mode 100644
index 000000000..2f8a72710
--- /dev/null
+++ b/tex/context/base/supp-emp.tex
@@ -0,0 +1,382 @@
+%D \module
+%D [ file=supp-emp,
+%D version=2000.08.09,
+%D title=\CONTEXT\ Support Macros,
+%D subtitle=\EMTEX\ specials to \PDF\ conversion,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D When \THANH, the author of \PDFTEX, and I were exchanging
+%D some emails on \PDFTEX\ functionality, positional
+%D information popped up as potential extension. Actually, it
+%D did not take that much time to cook up the basic
+%D functionality and the author had implemented it before I
+%D could even start to think about real advanced applications.
+%D
+%D I'm sure that \TEX\ programmers can spend many days on how
+%D and what kind of information is needed if you want to have
+%D access to positions, but since high level macros will
+%D probably be used anyway, even things like multiple reference
+%D points have proved to be rather unimportant at the system
+%D level.
+%D
+%D Therefore, \PDFTEX\ provides just these three primitives:
+%D
+%D \starttabulatie[|l|l|]
+%D \NC \type {\pdfsavepos} \NC marks the current position \NC \NR
+%D \NC \type {\pdflastxpos} \NC the last marked horizontal position \NC \NR
+%D \NC \type {\pdflastypos} \NC the last marked vertical position \NC \NR
+%D \stoptabulatie
+%D
+%D Based on these three primitives, very advanced systems can
+%D be build, and for some time now, \CONTEXT\ has such a
+%D system in its core. However, not everyone uses \CONTEXT, so
+%D we will demonstrate position tracking in generic applications.
+%D
+%D Because \PDFTEX\ produces its output directly, many of those
+%D nice tricks provided by back||ends by means of \type
+%D {\special} fail when producing \PDF\ code directly. Take for
+%D instance \EMTEX\ specials. When someone sent me a mail
+%D asking if \PDFTEX\ did support those specials, the original
+%D answer was \citaat {no}, but in the last few years I have learned
+%D that you must never underestimate \TEX's capabilities.
+%D
+%D I must admit that I never use those specials myself, but
+%D from the way they were used in the macros I was sent, I
+%D learned that they depend on the back||end's capability to
+%D access the current position. For those who know \TEX\ this
+%D may be bad news, since pure \TEX\ does not provide any
+%D positional information. So in order to use those specials,
+%D you must be sure that they are supported by every driver you
+%D use. However, the good news is that \PDFTEX\ does support
+%D position tracking, so here is our generic example.
+%D
+%D The two \EMTEX\ specials we need to implement are packaged
+%D into the macros \type {\EMmoveto} and \type {\EMlineto},
+%D like:
+%D
+%D \starttypen
+%D \def\EMmoveto{\special{em:moveto}}
+%D \def\EMlineto{\special{em:lineto}}
+%D \stoptypen
+%D
+%D They are used in macro packages to draw lines, and the
+%D results are often boxes with content like the following:
+%D
+%D \startbuffer
+%D \vbox to 2cm
+%D {\offinterlineskip \EMmoveto
+%D \hskip 7cm \EMlineto
+%D \vskip 2cm \EMlineto
+%D \vskip-2cm \EMlineto}
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D This box will contain a triangle, and when typeset, it should
+%D look like:
+%D
+%D \startregelcorrectie[blanko]
+%D \haalbuffer
+%D \stopregelcorrectie
+
+\ifx\dosetpositionpt\undefined % non context part
+
+%D These two macros can be implemented as follows. When moving
+%D to a position, we only have to register the new coordinates.
+%D Once they are known, we use them to draw a line and
+%D afterwards we save these end coordinates as starting point
+%D for the next line segment. So, at each point specified by
+%D \type {\EMlineto} we need to know the coordinates.
+
+\def\EMmoveto%
+ {\EMgetposition\EMlastmovex\EMlastmovey}
+
+%D The primitives \type {\pdflastxpos} and \type
+%D {\pdflastypos} return a number, representing the $x$ and
+%D $y$ coordinate in scaled points, \TEX's smallest unit of
+%D length. We need to convert this number into base points as
+%D used by \POSTSCRIPT\ and \PDF. When done, we insert some
+%D literal \PDF\ code into the text using \type {\pdfliteral}.
+%D Here, the \type {m} means \citeer {moveto}, the \type {l}
+%D means \citeer {lineto} and the \type {S} operator \citeer
+%D {strokes} (draws) the line. The macro \type {\EMlinewd}
+%D holds the linewidth in basepoints.
+
+\def\EMlinewd{.4}
+
+\def\EMlineto%
+ {\bgroup
+ \EMgetposition\EMlastlinex\EMlastliney
+ \count0=\EMlastmovex \advance\count0 by -\EMlastlinex
+ \count2=\EMlastmovey \advance\count2 by -\EMlastliney
+ \divide\count0 by 65536
+ \divide\count2 by 65536
+ \pdfliteral{\EMlinewd\space w 0 0 m \the\count0 \space\the\count2 \space l S}%
+ \global\let\EMlastmovex\EMlastlinex
+ \global\let\EMlastmovey\EMlastliney
+ \egroup}
+
+%D We need a fresh start, so we first set the current position
+%D to zero.
+
+\def\resetEMspecials%
+ {\gdef\EMlastmovex{0}\gdef\EMlastmovey{0}}
+
+%D Next comes the macro that keeps track of the position. The
+%D current position is marked with \type {\pdfsavepos} and its
+%D coordinates are written to a file whenever the page is
+%D shipped out, since \type {\write} postpones its action
+%D until that moment. The file has entries like:
+%D
+%D \starttypen
+%D \EMsetpos 1 4661756 46651918
+%D \EMsetpos 2 5000359 46990521
+%D \EMsetpos 3 4661756 46313315
+%D \EMsetpos 4 5338962 46990521
+%D \EMsetpos 5 4661756 45974712
+%D \stoptypen
+%D
+%D These lines are written with the command:
+%D
+%D \starttypen
+%D \write\EMfile
+%D {\EMsetpos\number\EMcounter
+%D \space\number\pdflastxpos\space\number\pdflastypos}%
+%D \stoptypen
+%D
+%D In reality the argument to \type {\write} looks slightly
+%D more complicated, because we have to make sure that the
+%D number of the current position is frozen and \type
+%D {\EMsetpos} is not expanded. We do so by explicitly
+%D expanding the number beforehand and preventing expansion of
+%D \type {\EMsetpos}.
+
+\def\EMgetposition#1#2%
+ {\bgroup
+ \pdfsavepos
+ \global\advance\EMcounter by 1
+ \expandafter\write\expandafter\EMfile\expandafter
+ {\expandafter\noexpand\expandafter\EMsetpos\number\EMcounter
+ \space\number\pdflastxpos\space\number\pdflastypos}%
+ \EMsetcounters
+ \xdef#1{\the\count0}%
+ \xdef#2{\the\count2}%
+ \egroup}
+
+%D The counter mentioned a few lines ago needs to be
+%D declared before it can be used.
+
+\newcount\EMcounter
+
+%D We also need a dedicated file slot.
+
+\newwrite\EMfile
+
+%D Before we open the file for writing, we read in the data
+%D written in the previous pass, but only if the file is
+%D present.
+
+\def\EMfilename{\jobname.emp}
+
+\def\startEMspecials%
+ {\resetEMspecials
+ \openin\scratchread=\EMfilename \relax
+ \ifeof\scratchread\else \input \EMfilename \relax \fi
+ \closein\scratchread
+ \immediate\openout\EMfile=\EMfilename\relax}
+
+\def\stopEMspecials%
+ {\closeout\EMfile}
+
+%D Just to be sure, we test if \type {\scratchread} is defined,
+%D and if not, we allocate a slot.
+
+\ifx\undefined\scratchread \newread\scratchread \fi
+
+%D This leaves us two commands. The \type {\EMsetpos} command
+%D that ends up in the file stores each position in a macro.
+%D When this macro is expanded, it assigns the coordinates to
+%D two scratch counters.
+
+\def\EMsetpos#1 #2 #3 % number x y
+ {\expandafter\xdef\csname EM:#1\endcsname{\count0=#2 \count2=#3}}
+
+%D This position is recalled with its companion macro. First we
+%D set the counters to zero. When the position is unknown,
+%D nothing happens since the \type {\csname...} will expand to
+%D \type {\relax}.
+
+\def\EMsetcounters%
+ {\count0=0 \count2=0
+ \csname EM:\the\EMcounter\endcsname}
+
+%D These macros are rather independent of the macro package you
+%D use. For instance, in \CONTEXT\ the following works well:
+%D
+%D \startbuffer[pos-en]
+%D \setuppositioning[unit=ex]
+%D \startpositioning
+%D \dostepwiserecurse{-10}{10}{1}
+%D {\position(0,\recurselevel){\EMmoveto}
+%D \position(\recurselevel,0){\EMlineto}}
+%D \stoppositioning
+%D \stopbuffer
+%D
+%D \startbuffer[pos-nl]
+%D \stelpositionerenin[eenheid=ex]
+%D \startpositioneren
+%D \dostepwiserecurse{-10}{10}{1}
+%D {\positioneer(0,\recurselevel){\EMmoveto}
+%D \positioneer(\recurselevel,0){\EMlineto}}
+%D \stoppositioneren
+%D \stopbuffer
+%D
+%D \typebuffer[pos-en]
+%D
+%D Here, we hook the \EMTEX\ macros into an existing text
+%D positioning mechanism, which positions the commands
+%D using \TEX's skips and kerns.
+%D
+%D \startregelcorrectie[blanko]
+%D \haalbuffer[pos-nl]
+%D \stopregelcorrectie
+%D
+%D Of course one should start and end the file with:
+%D
+%D \starttypen
+%D \startEMspecials
+%D \stopEMspecials
+%D \stoptypen
+%D
+%D and, if needed, reset the begin position at each page using:
+%D
+%D \starttypen
+%D \resetEMspecials
+%D \stoptypen
+
+\fi % end of non context part
+
+\ifx\dosetpositionpt\undefined \else % context part
+
+%D A few pages ago, we mentioned that \CONTEXT\ has built||in
+%D position tracking. This means that when we want to implement
+%D this kind of trickery in this macro package, we can fall
+%D back on existing functionality. In the following alternative
+%D we will also use a few skips. This keeps the source readable
+%D and \CONTEXT\ has plenty of unused registers to accomodate
+%D this strategy.
+
+\newcount\EMcounter \def\EMvariable{EM:\the\EMcounter}
+
+\newskip \EMlastmovex \newskip \EMlastmovey
+\newskip \EMlastlinex \newskip \EMlastliney
+
+\def\resetEMspecials%
+ {\global\EMlastmovex=0pt \global\EMlastmovey=\EMlastmovex}
+
+\resetEMspecials \appendtoks\resetEMspecials\to\everyshipout
+
+%D Watch how we reset the specials after a page is flushed. We
+%D don't have to bother about files here, because saving and
+%D recalling is already implemented. Although not needed, we
+%D define the start||stop macros, so that \CONTEXT\ users who
+%D key them in are not confronted with error messages.
+
+\let\startEMspecials\relax \let\stopEMspecials\relax
+
+\def\EMgetposition#1#2%
+ {\global\advance\EMcounter 1
+ \setposition\EMvariable
+ \global#1=\POSx\EMvariable
+ \global#2=\POSy\EMvariable}
+
+\def\EMmoveto%
+ {\EMgetposition\EMlastmovex\EMlastmovey}
+
+\def\EMlineto%
+ {\EMgetposition\EMlastlinex\EMlastliney
+ \global\advance\EMlastmovex -\EMlastlinex
+ \global\advance\EMlastmovey -\EMlastliney
+ \ScaledPointsToBigPoints{\number\EMlastmovex}\EMx
+ \ScaledPointsToBigPoints{\number\EMlastmovey}\EMy
+ \pdfliteral{\EMlinewd\space w 0 0 m \EMx \space \EMy \space l S}%
+ \global\EMlastmovex\EMlastlinex
+ \global\EMlastmovey\EMlastliney}
+
+%D The command \type {\setposition} registers a position by
+%D name (here \type {\EMvariable}), while \type {\POSx} and
+%D \type {\POSy} give you access to the coordinates.
+%D
+%D These three commands are containes in a suite of low level
+%D commands that can be used to register and get access to
+%D positional information. The current mechanism is not yet
+%D complete, but already provides enough hooks for advanced
+%D embedded graphics. Its functionality is a natural extension
+%D to the \METAPOST\ support already present in \CONTEXT.
+%D Therefore, more advanced examples can be found in the
+%D \METAFUN\ manual, since they fall beyond the scope of this
+%D module.
+
+\fi % end of context part
+
+%D As a bonus, I will now provide a few macros that will make
+%D this mechanism transparant to \DVI\ as well as \PDF\
+%D output. We will use \type {\pdfoutput} as trigger.
+
+\ifx\pdfoutput\undefined \chardef\pdfoutput=0 \fi
+
+%D We save some of the macros we defined previously:
+
+\let\pdfEMmoveto\EMmoveto \let\pdfstartEMspecials\startEMspecials
+\let\pdfEMlineto\EMlineto \let\pdfstopEMspecials \stopEMspecials
+
+%D We now redefine them to support \DVI\ and \PDF.
+
+\def\EMmoveto{\ifcase\pdfoutput\special{em:moveto}\else\pdfEMmoveto\fi}
+\def\EMlineto{\ifcase\pdfoutput\special{em:lineto}\else\pdfEMlineto\fi}
+
+\def\startEMspecials{\ifcase\pdfoutput\else\pdfstartEMspecials\fi}
+\def\stopEMspecials {\ifcase\pdfoutput\else\pdfstopEMspecials \fi}
+
+%D If there is any real demand for this in \CONTEXT, I will
+%D hook these macros in the special drivers, so that their
+%D support becomes more natural.
+
+%D You may want to change the default linewidth. The following
+%D macro does the job. Beware of the fact that \type
+%D {\special}'s may interfere with the typesetting process.
+%D
+%D \starttypen
+%D \setEMlinewidth{1pt}
+%D \stoptypen
+
+\def\setEMlinewidth#1% this could be done more efficient for
+ {\bgroup % context alone, but it's a hack anyway
+ \dimen0=#1\relax
+ \count0=\dimen0
+ \divide\count0 by 65536
+ \ifcase\pdfoutput
+ \special{em:linewidth \the\dimen0}%
+ \fi
+ \xdef\EMlinewd{\the\count0}%
+ \egroup}
+
+%D You may wonder to what extent positional tracking is
+%D \PDFTEX\ specific. In \CONTEXT, we also support position
+%D tracking in \DVI\ by using specials and analyzing the \DVI\
+%D file afterwards using a \PERL\ script created by Taco
+%D Hoekwater. Since many of the advanced \TEX\ features depend
+%D on some kind of back||end, we don't consider it to be a
+%D disadvantage. Of course, the \PDFTEX\ way is not only
+%D cleaner, but also faster. It was more out of curiosity than
+%D out of need that we provided the \DVI\ methods as well.
+%D Also, it is always good to have more roads to reach the same
+%D goal.
+
+\protect \endinput
diff --git a/tex/context/base/supp-eps.tex b/tex/context/base/supp-eps.tex
index ad16fd760..c9374b08e 100644
--- a/tex/context/base/supp-eps.tex
+++ b/tex/context/base/supp-eps.tex
@@ -19,7 +19,7 @@
%D were put in \type{supp-pdf}, I considered it more suitable
%D to give the \EPS\ macros their own module.
-\writestatus{loading}{Context Support Macros / PDF}
+\writestatus{loading}{Context Support Macros / EPS}
%D \macros
%D {dogetEPSboundingbox}
@@ -61,13 +61,17 @@
\let\EPSurx\!!zeropoint \let\MPurx\EPSurx % in fast mode we set
\let\EPSury\!!zeropoint \let\MPury\EPSury % them to 0pt.
-\chardef\EPSfound=0 \chardef\EPScreator=0 \chardef\EPSspecial=0
+\chardef\EPSfound =0
+\chardef\EPScreator=0
+\chardef\EPSspecial=0
+\chardef\EPSstatus =0
\def\dogetEPSboundingbox#1#2#3#4#5%
{\bgroup
\global\chardef\EPSfound=0
\global\chardef\EPScreator=0
\global\chardef\EPSspecial=0
+ \global\chardef\EPSstatus=0
\uncatcodespecials
\def\doprocessEPSline%
{\expandafter\checkEPSboundingbox\fileline:. \end}%
@@ -86,6 +90,7 @@
#4=\!!zeropoint
#5=\!!zeropoint
\fi
+ %\message{[bbox #1: \EPSllx\space\EPSurx\space\EPSlly\space\EPSury]}%
\global\let\MPllx\EPSllx \global\let\MPlly\EPSlly
\global\let\MPurx\EPSurx \global\let\MPury\EPSury}
@@ -98,6 +103,8 @@
\gdef\EPScreatortag {%Creator}
\gdef\EPSmetaposttag { MetaPost :. }
\gdef\EPSmetapostspecialtag {%MetaPostSpecial}
+\gdef\EPSmetapostspecialstag{%MetaPostSpecials}
+\gdef\EPSpagetag {%Page}
\egroup
\long\def\checkEPSboundingbox#1#2:#3\end%
@@ -118,10 +125,22 @@
\global\chardef\EPSfound=2
\dofinishfile
\else\ifx\!!stringa\EPSmetapostspecialtag % only before finish!
- \global\chardef\EPSspecial=1
- \fi\fi\fi\fi\fi
+ \global\chardef\EPSspecial=1 % ah, we've met some MP extensions
+ \else\ifx\!!stringa\EPSmetapostspecialstag % only before finish!
+ \global\chardef\EPSspecial=1 % ah, we've met some MP extensions
+ \else\ifx\!!stringa\EPSpagetag
+ \global\chardef\EPSstatus=1 % we passed MP font defs
+ \fi\fi\fi\fi\fi\fi\fi
\else\ifnum\EPSfound>0
- \dofinishfile
+ \ifnum\EPScreator=1 % that is, we are dealing with MP output
+ \ifcase\EPSstatus
+ % we've run into MP fontdefs
+ \or
+ \dofinishfile
+ \fi
+ \else
+ \dofinishfile
+ \fi
\fi\fi}
\def\getEPSboundingbox #1 #2 #3 #4 #5\end%
diff --git a/tex/context/base/supp-fil.tex b/tex/context/base/supp-fil.tex
index 59e21a663..b9b517abb 100644
--- a/tex/context/base/supp-fil.tex
+++ b/tex/context/base/supp-fil.tex
@@ -30,7 +30,13 @@
\writestatus{loading}{Context Support Macros / Files}
\unprotect
-
+
+\ifx\undefined\f!pathseparator
+ \def\f!pathseparator{/}
+ \def\f!currentpath {.}
+ \def\f!parentpath {..}
+\fi
+
%D \macros
%D {normalwrite, normalimmediate}
%D
@@ -86,7 +92,6 @@
\def\unlinkfile#1%
{\immediate\openout\scratchwrite=#1\immediate\closeout\scratchwrite}
-
%D \macros
%D {doprocessfile,fileline,fileprocessedtrue,dofinishfile}
@@ -95,7 +100,7 @@
%D line by line basis.
%D
%D \starttypen
-%D \processfile \identifier {name} \action
+%D \doprocessfile \identifier {name} \action
%D \stoptypen
%D
%D The first argument can for instance be \type{\scratchread}.
@@ -130,7 +135,7 @@
\fi}
%D \macros
-%D {pathplusfile,sanitizefilename}
+%D {pathplusfile,assignfullfilename,sanitizefilename}
%D
%D Use \type{\pathplusfile} to compose a full file name, like
%D in:
@@ -143,6 +148,21 @@
\def\pathplusfile#1#2{#1\f!pathseparator#2}
+%D This one constructs a filename from a (possible empty)
+%D path and filename. % The special \type {system} is ignored.
+
+\def\assignfullfilename#1#2\to#3%
+ {\doifelsenothing{#1}
+ {\edef#3{#2}}
+ {\edef#3{#1\f!pathseparator#2}}}
+
+% \def\assignfullfilename#1#2\to#3%
+% {\doifelsenothing{#1}
+% {\edef#3{#2}}
+% {\doifelse{#1}{system} % special case, honors default searching
+% {\edef#3{#2}}
+% {\edef#3{#1\f!pathseparator#2}}}}
+
%D For the moment, we limit sanitizing to taking care of
%D active \type {/}.
@@ -405,12 +425,27 @@
%D \starttypen
%D \doifparentfileelse{filename}{yes}{no}
%D \stoptypen
+%D
+%D Since \TEXEXEC\ (and thereby \CONTEXT) supports renaming of
+%D the outputfile, we also need to check on that alternative
+%D name.
+
+\ifx\outputfilename\undefined \def\outputfilename{\jobname} \fi
+
+% \def\doifparentfileelse#1#2#3%
+% {\edef\!!stringa{#1}%
+% \edef\!!stringb{\jobname}%
+% \edef\!!stringc{\outputfilename}%
+% \convertcommand\!!stringa\to\!!stringa
+% \convertcommand\!!stringb\to\!!stringb
+% \convertcommand\!!stringc\to\!!stringc
+% \ifx\!!stringa\!!stringb#2\else
+% \ifx\!!stringa\!!stringc#2\else
+% #3\fi\fi}
\def\doifparentfileelse#1#2#3%
- {\edef\!!stringa{#1}%
- \@EA\convertargument\!!stringa\to\!!stringa
- \@EA\def\@EA\!!stringb\@EA{\jobname}%
- \ifx\!!stringa\!!stringb#2\else#3\fi}
+ {\doifsamestringelse{#1}{\jobname} {#2}
+ {\doifsamestringelse{#1}{\outputfilename}{#2}{#3}}}
% \newcounter\readingfilelevel
%
diff --git a/tex/context/base/supp-fun.tex b/tex/context/base/supp-fun.tex
index bfddf5cd4..a2220996e 100644
--- a/tex/context/base/supp-fun.tex
+++ b/tex/context/base/supp-fun.tex
@@ -116,13 +116,52 @@
%D fact that the offsets depend on the design of the glyphs
%D used.
-\let\DroppedIndent\zeropoint \def\DroppedLines{0}
+\let\DroppedIndent\!!zeropoint \def\DroppedLines{0}
\def\DroppedString%
{ABCDEFGHIJKLMNOPQRSTUVWXYZ}
-\def\DroppedCaps#1#2#3#4#5#6#7%
- {\ExpandBothAfter\doifinstringelse{#7}{\DroppedString} %
+% \def\DroppedCaps#1#2#3#4#5#6#7%
+% {\ExpandBothAfter\doifinstringelse{#7}{\DroppedString} %
+% {\ifvmode % this one is \EveryPar save, precede by \par if needed
+% \vskip#6\baselineskip
+% \penalty-200
+% \vskip-#6\baselineskip
+% \fi
+% \ifhmode
+% \hskip-\parindent
+% \fi
+% \setbox0=\hbox
+% {\definefont[temp][#2 at #3]\temp#1{#7}\hskip#4}%
+% \ifdim\dp0>\dp\strutbox % one of those Q's , will be option
+% \setbox2=\hbox{\raise\dp0\hbox{\lower\dp\strutbox\copy0}}%
+% \ht2=\ht0 \dp0=\dp\strutbox \setbox0=\box2
+% \fi
+% \setbox0=\hbox
+% {\lower#5\box0}%
+% \ht0=\ht\strutbox
+% \dp0=\dp\strutbox
+% \edef\DroppedIndent{\the\wd0}%
+% \edef\DroppedLines {\number#6}%
+% \hangindent\DroppedIndent
+% \hangafter-\DroppedLines
+% \noindent
+% \hskip-\DroppedIndent
+% \vbox{\forgetall\box0}%
+% \nobreak
+% \ignorespaces} % Could be a one character word !
+% {\edef\DroppedIndent{0pt}%
+% \edef\DroppedLines {\number\maxdimen}%
+% #7}}
+
+\let\globaldropcaps\global % will be an option, but on by default
+
+\chardef\DroppedStatus=0 % 0=done 1=starting 2=doing 3=error
+
+\def\DroppedCaps#1#2#3#4#5#6#7% does not yet handle accented chars
+ {\convertargument #7\to\asciia
+ \convertcommand \DroppedString\to\asciib
+ \ExpandBothAfter\doifinstringelse{\asciia}{\asciib}
{\ifvmode % this one is \EveryPar save, precede by \par if needed
\vskip#6\baselineskip
\penalty-200
@@ -141,19 +180,21 @@
{\lower#5\box0}%
\ht0=\ht\strutbox
\dp0=\dp\strutbox
- \edef\DroppedIndent{\the\wd0}%
- \edef\DroppedLines {\number#6}%
- \hangindent\DroppedIndent
- \hangafter-\DroppedLines
+ \globaldropcaps\edef\DroppedIndent{\the\wd0}%
+ \globaldropcaps\edef\DroppedLines {\number#6}%
+ \globaldropcaps\chardef\DroppedStatus=2
+ \globaldropcaps\hangindent\DroppedIndent
+ \globaldropcaps\hangafter-\DroppedLines
\noindent
\hskip-\DroppedIndent
\vbox{\forgetall\box0}%
\nobreak
- \ignorespaces} % Could be a one character word !
- {\edef\DroppedIndent{0pt}%
- \edef\DroppedLines {\number\maxdimen}%
- #7}}
-
+ \let\next=\ignorespaces} % Could be a one character word !
+ {\globaldropcaps\edef\DroppedIndent{0pt}%
+ \globaldropcaps\edef\DroppedLines {\number\maxdimen}%
+ \globaldropcaps\chardef\DroppedStatus=3
+ \def\next{#7}}%
+ \next}
%D Before we go to the next topic, we summarize this command:
%D
@@ -164,6 +205,66 @@
%D \stoptypen
%D \macros
+%D {AutoDroppedCaps, CheckDroppedCaps}
+%D
+%D {\em To be documented.}
+
+% example usage
+%
+% \def\bpar{\ifvmode\CheckDroppedCaps\fi}
+% \def\epar{\ifhmode\par\fi\CheckDroppedCaps}
+
+\newcount\lastprevgraf
+\newcount\droppedlines
+
+\def\CheckDroppedCaps%
+ {\global\lastprevgraf\prevgraf}
+
+\def\AutoDroppedCaps% will be proper core stuff since it
+ {\globaldropcaps\chardef\DroppedStatus=1
+ \global\lastprevgraf=0
+ \global\droppedlines=0
+ \EveryPar{\doAutoDroppedCaps}}
+
+\let\AutoDroppedNext\relax
+
+\def\doAutoDroppedCaps%
+ {\ifcase\DroppedStatus % done
+ \let\next\relax
+ \or % starting
+ % \ifnum\lastprevgraf>0 % tricky, probably a wrong par
+ % \globaldropcaps\chardef\DroppedStatus=3 % and inhibits dropped
+ % \let\next\relax % caps after titles and more than once
+ % \else % so let's nill this rubishly code fragment
+ \def\next{\NiceDroppedCaps{}{\@@dcfont}{.125em}{\@@dcn}}%
+ % \fi % and hope for the best
+ \or % doing
+ \global\advance\droppedlines by \lastprevgraf
+ \ifnum\droppedlines=0
+ \globaldropcaps\chardef\DroppedStatus=0
+ \let\next\relax
+ \else\ifnum\droppedlines>0
+ \ifnum\droppedlines<\DroppedLines\relax
+ \globaldropcaps\hangindent=\DroppedIndent
+ \globaldropcaps\hangafter=-\DroppedLines
+ \globaldropcaps\advance\hangafter by \droppedlines
+ \hskip-\parindent
+ \let\next\AutoDroppedNext
+ \else
+ \globaldropcaps\chardef\DroppedStatus=0
+ \let\next\relax
+ \fi
+ \else
+ \globaldropcaps\chardef\DroppedStatus=0
+ \let\next\relax
+ \fi\fi
+ \or % error
+ \globaldropcaps\chardef\DroppedStatus=0
+ \let\next\relax
+ \fi
+ \next}
+
+%D \macros
%D {LineDroppedCaps, NiceDroppedCaps}
%D
%D To save definitions, we also provide:
diff --git a/tex/context/base/supp-lan.tex b/tex/context/base/supp-lan.tex
index dc0ab5660..f97ac3c1f 100644
--- a/tex/context/base/supp-lan.tex
+++ b/tex/context/base/supp-lan.tex
@@ -508,8 +508,23 @@
\def\currentspaceskip%
{\fontdimen2\font\!!plus\fontdimen3\font\!!minus\fontdimen4\font\relax}
-\def\fakecompoundhyphen%
- {\def|##1|{\compoundhyphen\nobreak\hskip-\currentspaceskip\allowbreak}}
+% \def\fakecompoundhyphen% wrong
+% {\def|##1|{\compoundhyphen\nobreak\hskip-\currentspaceskip\allowbreak}}
+
+\ifx\newsignal\undefined
+
+ \let\fakecompoundhyphen\relax
+
+\else
+
+ \newsignal\compoundbreakpoint
+
+ \def\fakecompoundhyphen%
+ {\def|##1|%
+ {\doifelsenothing{##1}{\compoundhyphen}{##1}%
+ \kern\compoundbreakpoint\allowbreak}}
+
+\fi
%D One of the drawbacks of this mechanism is that characters can
%D be made active afterwards. The next alternative can be used
@@ -623,8 +638,8 @@
%D \type{\ifnum} or \type{\ifdim} statements.
%D And then came the Polish users, and who can deny them? Like
-%D the German \TEX\ users demand an active \type {"}, the
-%D Polish cannot do without the \type {/}. The next alternative
+%D the German \TEX\ users demand an active \type {"}, some
+%D Polish users like using the \type {/}. The next alternative
%D is a bit slower but far the most robust alternative. As a
%D bonus it also offers \type {|^|} and even \type {|||} which
%D both result in a breakable|^|bar.
@@ -745,11 +760,15 @@
%D arguments, which complicates things a bit.
\def\@nc@{@nc@} % normal character
+\def\@nn@{@nn@} % normal catcode
\def\@cc@{@cc@} % compound character
\def\@cs@{@cs@} % compound characters
\def\installcompoundcharacter #1#2#3 #4% {{#4}} keeps move local
{\setvalue{\@nc@\string#1}{\char`#1}%
+ \ifnum\catcode`#1=\@@active \else
+ \setevalue{\@nn@\string#1}{\number\catcode`#1}% new
+ \fi
\def\!!stringa{#3}%
\ifx\!!stringa\empty
\setvalue{\@cc@\string#1\string#2}{{#4}}%
@@ -762,6 +781,16 @@
\uppercase{\unexpanded\def~{\handlecompoundcharacter~}}%
\uccode`~=\scratchcounter}
+%D A compound character can be reset with the following
+%D command.
+%D
+%D \starttypen
+%D \restorecompoundcharacter /
+%D \stoptypen
+
+\def\restorecompoundcharacter#1% new
+ {\catcode`#1=\getvalue{\@nn@\string#1}\relax}
+
%D In handling the compound characters we have to take care of
%D \type{\bgroup} and \type{\egroup} tokens, so we end up with
%D a multi||step interpretation macro. We look ahead for a
@@ -967,8 +996,51 @@
\bgroup \catcode`\~=\active \catcode`\/=\active
+% why not convert to ascii first?
+
+% \unexpanded\gdef\hyphenatedurl#1% {}{} handles accents
+% {\bgroup
+% \obeyhyphens
+% \def\splitbefore##1%
+% {\setbox\scratchbox=\hbox{##1{}{}}%
+% \ifcase\urlsplitmode
+% \box\scratchbox
+% \or
+% \postwordbreak\box\scratchbox\prewordbreak
+% \or
+% \prewordbreak\discretionary{\box\scratchbox}{}{\box\scratchbox}\prewordbreak
+% \else
+% \postwordbreak\box\scratchbox\prewordbreak
+% \fi}%
+% \def\splitafter##1%
+% {\ifcase\urlsplitmode
+% ##1{}{}%
+% \or
+% \prewordbreak\discretionary{##1{}{}}{}{##1{}{}}\prewordbreak
+% \or
+% \prewordbreak\discretionary{##1{}{}}{}{##1{}{}}\prewordbreak
+% \else
+% \prewordbreak\discretionary{}{##1{}{}}{##1{}{}}\prewordbreak
+% \fi}%
+% \def\flushurl%
+% {\savedurl\let\savedurl\empty}%
+% \def\\%
+% {\spliturl\#}%
+% \let\~=\tildeletter \let~=\~%
+% \let\/=\slashletter \let/=\/%
+% \let\savedurl\empty
+% \handletokens#1\with\scanurl
+% \egroup}
+%
+% Better (a mere copy with \dohyphens):
+
+\bgroup \catcode`\~=\active \catcode`\/=\active
+
\unexpanded\gdef\hyphenatedurl#1% {}{} handles accents
{\bgroup
+ \ifnum\hyphenpenalty<10000 \else
+ \def\discretionary##1##2##3{##1\allowbreak##2}%
+ \fi
\obeyhyphens
\def\splitbefore##1%
{\setbox\scratchbox=\hbox{##1{}{}}%
@@ -1003,6 +1075,15 @@
\egroup
+%D This would be better, but it spoils \type {\~} and so:
+%D
+%D \starttypen
+%D \convertargument#1\to\ascii
+%D \expandafter\handletokens\ascii\with\scanurl
+%D \stoptypen
+
+\egroup
+
\def\scanurl#1%
{\ifx#1\~%
\flushurl\splitbefore\~%
@@ -1048,6 +1129,22 @@
#1%
\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
+%D When Joop Susan asked (on the \CONTEXT\ mailing list) how
+%D to handle url's passed as argument, the following solutions
+%D came to my mind:
+%D
+%D \starttypen
+%D \def\whateverurl#1%
+%D {{\def~{\string~}\useURL[dummy][#1]\goto{\url[dummy]}[URL(dummy)]}}
+%D
+%D \def\whateverurl#1%
+%D {{\let~\tildeletter\useURL[dummy][#1]\goto{\url[dummy]}[URL(dummy)]}}
+%D
+%D \def\whateverurl#1%
+%D {\convertargument#1\to\ascii
+%D \expanded{\useURL[dummy][\ascii]}\goto{\url[dummy]}[URL(dummy)]}
+%D \stoptypen
+
%D \macros
%D {hyphenatedfile}
%D
@@ -1059,6 +1156,17 @@
\let\hyphenatedfile\hyphenatedurl
+% to be finished
+%
+% \def\hyphenatedstring#1%
+% {\bgroup
+% \nohyphens
+% \def\next##1{##1\doif{##1}{-}{\allowbreak}}%
+% \handletokens#1\with\next
+% \egroup}
+%
+% {\hsize1cm\hyphenatedstring{ABXXXXXXXXXXC-12345-12345}}
+
\protect
\endinput
diff --git a/tex/context/base/supp-mat.tex b/tex/context/base/supp-mat.tex
index 810b71c02..a2a436fee 100644
--- a/tex/context/base/supp-mat.tex
+++ b/tex/context/base/supp-mat.tex
@@ -96,19 +96,19 @@
%D \TEX\ uses \type{^} and \type{_} for entering super- and
%D subscript mode. We want however a bit more control than
%D normally provided, and therefore provide \type {\super}
-%D and \type{suber}.
+%D and \type{\suber} (\type {\sub} is already taken).
\global\let\normalsuper=^
\global\let\normalsuber=_
-\newcount\supsubmode
+\newcount\supersubmode
-\newevery\everysupsub \EverySupSub
+\newevery\everysupersub \EverySuperSub
-\appendtoks \advance\supsubmode by 1\relax \to \everysupsub
+\appendtoks \advance\supersubmode by 1\relax \to \everysupersub
-% \def\dodosuper#1{\normalsuper{\the\everysupsub#1}}
-% \def\dodosuber#1{\normalsuber{\the\everysupsub#1}}
+% \def\dodosuper#1{\normalsuper{\the\everysupersub#1}}
+% \def\dodosuber#1{\normalsuber{\the\everysupersub#1}}
%
% \def\dosuper{\ifx\next\bgroup\expandafter\dodosuper\else\normalsuper\fi}
% \def\dosuber{\ifx\next\bgroup\expandafter\dodosuber\else\normalsuber\fi}
@@ -116,8 +116,8 @@
% \def\super{\futurelet\next\dosuper}
% \def\suber{\futurelet\next\dosuber}
-\def\super#1{\normalsuper{\the\everysupsub#1}}
-\def\suber#1{\normalsuber{\the\everysupsub#1}}
+\def\super#1{\normalsuper{\the\everysupersub#1}}
+\def\suber#1{\normalsuber{\the\everysupersub#1}}
%D \macros
%D {enablesupsub}
diff --git a/tex/context/base/supp-mis.tex b/tex/context/base/supp-mis.tex
index 5fe26ba9a..5178da896 100644
--- a/tex/context/base/supp-mis.tex
+++ b/tex/context/base/supp-mis.tex
@@ -161,7 +161,7 @@
\ifnocontextobject \@@comment \do \chardef\@@comment = 14 \fi
%D \macros
-%D {@EA,expanded}
+%D {@EA,expanded,expandoneargafter,expandtwoargsafter}
%D
%D Also needed:
@@ -170,6 +170,12 @@
\def\expanded#1%
{\edef\@@expanded{\noexpand#1}\@@expanded}
+\def\expandoneargafter#1#2%
+ {\@EA#1\@EA{#2}}
+
+\def\expandtwoargsafter#1#2#3%
+ {\@EA\@EA\@EA#1\@EA\@EA\@EA{\@EA#2\@EA}\@EA{#3}}
+
%D \macros
%D {everyline,EveryLine,EveryPar}
%D
@@ -248,7 +254,7 @@
\fi
%D \macros
-%D {setvalue,getvalue,letvalue,setgvalue}
+%D {setvalue,setevalue,setxvalue,getvalue,letvalue,setgvalue}
%D
%D The next two macros expand their argument to
%D \type{\argument}. The first one is used to define macro's
@@ -257,9 +263,11 @@
\ifnocontextobject \setvalue \do
\def\setvalue #1{\expandafter\def\csname#1\endcsname}
+ \def\setevalue#1{\expandafter\edef\csname#1\endcsname}
+ \def\setgvalue#1{\expandafter\gdef\csname#1\endcsname}
+ \def\setxvalue#1{\expandafter\xdef\csname#1\endcsname}
\def\getvalue #1{\csname#1\endcsname}
\def\letvalue #1{\expandafter\let\csname#1\endcsname}
- \def\setgvalue#1{\expandafter\gdef\csname#1\endcsname}
\fi
@@ -309,7 +317,8 @@
\fi
%D \macros
-%D {withoutpt}
+%D {withoutpt,
+%D ScaledPointsToBigPoints,ScaledPointsToWholeBigPoints}
%D
%D \TEX\ lacks some real datastructure. We can however use
%D \DIMENSIONS. This kind of trickery is needed when we want
@@ -331,6 +340,14 @@
\scratchdimen=.996264\scratchdimen
\edef#2{\withoutpt{\the\scratchdimen}}}
+ \def\ScaledPointsToWholeBigPoints#1#2%
+ {\scratchdimen=#1sp
+ \scratchdimen=.996264\scratchdimen
+ \scratchcounter=\scratchdimen
+ \advance\scratchcounter by 32768
+ \divide\scratchcounter by 65536
+ \edef#2{\the\scratchcounter}}
+
\fi
%D \macros
@@ -432,7 +449,7 @@
\fi
%D \macros
-%D {dostepwiserecurse}
+%D {dostepwiserecurse, dorecurse, doloop, exitloop}
%D
%D The next loop macro is a real weak one, and does not offer
%D the full \CONTEXT\ functionality, let alone nesting, but
@@ -452,6 +469,57 @@
\advance\recursecounter by #3\relax
\repeat}
+\def\dorecurse#1%
+ {\dostepwiserecurse{1}{#1}{1}}
+
+\def\doloop%
+ {\dostepwiserecurse{1}{\maxdimen}{1}}
+
+\def\exitloop%
+ {\recursecounter=\maxdimen}
+
+%D \macros
+%D {doifdefined,doifundefined,
+%D doifdefinedelse,doifundefinedelse}
+%D
+%D These alteratives are not robust but suitable for simple
+%D usage.
+
+\ifnocontextobject \doifdefined \do
+
+ \def\doifdefinedelse#1#2#3%
+ {\expandafter\ifx\csname#1\endcsname\relax#3\else#2\fi}
+
+ \def\doifundefinedelse#1#2#3%
+ {\expandafter\ifx\csname#1\endcsname\relax#2\else#3\fi}
+
+ \def\doifdefined#1#2%
+ {\expandafter\ifx\csname#1\endcsname\relax\else#2\fi}
+
+ \def\doifundefined#1#2%
+ {\expandafter\ifx\csname#1\endcsname\relax#2\fi}
+
+\fi
+
+%D \macros
+%D {doifinstringelse}
+%D
+%D It seems like we end up with more and more macros here.
+%D Sigh.
+
+\ifnocontextobject \doifinstringelse \do
+
+ \def\p!doifinstringelse#1#2%
+ {\def\pp!doifinstringelse##1#1##2##3\war%
+ {\csname if\if##2@fals\else tru\fi e\endcsname}%
+ \expanded{\pp!doifinstringelse#2#1@@\noexpand\war}}
+
+ \long\def\doifinstringelse#1#2#3#4%
+ {\edef\@@@instring{#1}%
+ \@EA\p!doifinstringelse\@EA{\@@@instring}{#2}#3\else#4\fi}
+
+\fi
+
%D \macros
%D {twodigitrounding}
%D
@@ -459,6 +527,45 @@
\def\twodigitrounding#1{#1}
+%D \macros
+%D {lineheight}
+%D
+%D In \CONTEXT\ we have \type{\lineheight}, which in many
+%D cases matches \type {\baselineskip}.
+
+\ifnocontextobject \lineheight \do
+
+ \def\lineheight{\baselineskip}
+
+\fi
+
+%D \macros
+%D {dohandletokens}
+%D
+%D The following macro is the simplified version, but good
+%D enough for day to day hacks.
+%D
+%D \starttypen
+%D \dohandletokens some text\with\somemacro
+%D \stoptypen
+
+\ifnocontextobject \dohandletokens \do
+
+\def\dodohandletokens%
+ {\ifx\next\end \else
+ \docommando{\next}%
+ \expandafter\dohandletokens
+ \fi}
+
+\def\dohandletokens%
+ {\afterassignment\dodohandletokens\let\next= }
+
+\long\def\handletokens#1\with#2%
+ {\let\docommando=#2%
+ \dohandletokens#1\end}
+
+\fi
+
%D That's it. Please forget this junk and take a look at how
%D it should be done.
diff --git a/tex/context/base/supp-mpe.tex b/tex/context/base/supp-mpe.tex
index 92d2e860d..d3dc45ea0 100644
--- a/tex/context/base/supp-mpe.tex
+++ b/tex/context/base/supp-mpe.tex
@@ -8,86 +8,98 @@
%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
-%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
-%C details.
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
%D This module is still experimental and deals with some
%D extensions to \METAPOST. When using \POSTSCRIPT\ output,
%D these extensions can be supplied by means of proper
%D preamble definitions, but when producing \PDF\ we have to
%D set up the appropriate datastructures ourselves. It acts as
-%D a plug in into \type {supp-pdf}. As soon as we need more
-%D extensions, we will generalize these macro.
+%D a plug in into \type {supp-pdf}. As soon as we need more
+%D extensions, we will generalize these macro. Some
+%D definitions will move to the special drivers.
\writestatus{loading}{MetaPost Special Extensions}
%D We implement extensions by using the \METAPOST\ special
%D mechanism. Opposite to \TEX's specials, the \METAPOST\ ones
%D are flushed before or after the graphic data, but thereby
-%D are no longer connected to a position.
-%D
+%D are no longer connected to a position.
+%D
%D We implement specials by overloading the \type {fill}
%D operator. By counting the fills, we can let the converter
%D treat the appropriate fill in a special way. The
%D specification of the speciality can have two forms,
-%D determined by the setting of a boolean variable:
+%D determined by the setting of a boolean variable:
%D
-%D \starttypen
-%D _inline_shading_ := false ; % comment like code (default)
-%D _inline_shading_ := true ; % command like code
-%D \stoptypen
-%D
-%D When the specification is embedded as comment, it looks
-%D like:
+%D \starttypen
+%D _inline_specials_ := false ; % comment like code (default)
+%D _inline_specials_ := true ; % command like code
+%D \stoptypen
%D
-%D \starttypen
-%D %%MetaPostSpecial <size> <data> <number> <identifier>
-%D \stoptypen
+%D When the specification is embedded as comment, it looks
+%D like:
%D
-%D The in||line alternative is more tuned for \POSTSCRIPT,
+%D \starttypen
+%D %%MetaPostSpecial <size> <data> <number> <identifier>
+%D \stoptypen
+%D
+%D The in||line alternative is more tuned for \POSTSCRIPT,
%D since it permits us to define a macro \type {special}.
%D
-%D \starttypen
+%D \starttypen
%D inline : <data> <number> <identifier> <size> special
-%D \stoptypen
-%D
+%D \stoptypen
+%D
%D The \type {identifier} determines what to do, and the data
%D can be used to accomplish this. A type~2 shading function
%D has identifier~2. Alltogether, the number of parameters is
%D specified in \type {size}. The \type {number} is the number
%D of the fill that needs the special treatment. For a type~2
%D and~3 shaded fill, the datablock contains the following
-%D data:
-%D
-%D \starttypen
-%D from to n inner_r g b x y outer_r g b x y
-%D from to n inner_r g b x y radius outer_r g b x y radius
+%D data:
+%D
+%D \starttypen
+%D from to n inner_r g b x y outer_r g b x y
+%D from to n inner_r g b x y radius outer_r g b x y radius
%D \stoptypen
-%D
-%D The implementation below, saves the data on the stack in
-%D a way similar to the macros in \type {supp-pdf.tex}, and
-%D just overload a few already defined handlers. That way,
-%D the existing macros are still generic. \voetnoot {Actually,
-%D the macros here are just as generic.}
-%D
+%D
+%D The implementation below saves the data on the stack in
+%D a way similar to the macros in \type {supp-pdf.tex}, and
+%D just overload a few already defined handlers. That way,
+%D the existing macros are still generic. \voetnoot {Actually,
+%D the macros here are just as generic.}
+%D
%D Currently the only extension concerns shading, which is
%D accomplished by handling yet another value of \type
-%D {\finiMPpath}. The recource disctionary is stored and
-%D later picked up by the general \CONTEXT\ figure inclusion
-%D macros.
+%D {\finiMPpath}. The recource disctionary is stored and
+%D later picked up by the general \CONTEXT\ figure inclusion
+%D macros.
+
+\unprotect
-\unprotect
+%D The \type {%%MetaPostSpecials: version.revision signal} line
+%D triggers this module into handling color specifications kind
+%D of special. We need this safeguard for non||special
+%D usage.
+
+\chardef\MPspecialversion = 0 % specials when >1
+\chardef\MPspecialrevision = 0 % specials when >1
+\chardef\MPspecialsignal = 0 % passed on by graphic
+
+\newcount\currentPDFshade % 0 % global (document wide) counter
+\chardef\inlineMPspecials = 1 % only needed for stack resetting
-\newcount\currentPDFshade % global count
-\newcount\currentMPshade % local count
-\newcount\currentMPfill % local count
-\chardef\inlineMPspecials=0 % only needed for stack resetting
\let\currentMPshades\empty
-\def\dohandleMPspecialcomment#1
+%D This macro handles the special definitions that are
+%D passed as comment.
+
+\def\dohandleMPspecialcomment#1
{\setMPargument{#1}%
- \advance\scratchcounter by -1
- \ifcase\scratchcounter
+ \advance\scratchcounter by -1
+ \ifcase\scratchcounter
\handleMPspecialcommand
\donetrue
\doresetMPstack
@@ -97,10 +109,10 @@
\expandafter\dohandleMPspecialcomment
\fi}
-\def\handleMPspecialcomment #1 % number of arguments
+\def\handleMPspecialcomment #1 % number of arguments
{\doresetMPstack
\scratchcounter=#1\relax
- \ifcase\scratchcounter % when zero, inline shading is used
+ \ifcase\scratchcounter % when zero, inline shading is used
\chardef\inlineMPspecials=1
\let\handleMPsequence=\dohandleMPsequence
\expandafter\handleMPsequence
@@ -109,12 +121,41 @@
\expandafter\dohandleMPspecialcomment
\fi}
+%D When defined inline, we use another macro to handle the
+%D definitions. Actually, this macro is called by the
+%D previous ones.
+
+\def\handleMPspecialcommand%
+ {\ifcase\inlineMPspecials\or
+ \advance\nofMParguments by -1 % pop the size
+ \fi
+ \doifundefinedelse{\MPspecial}
+ {\message{[unknown \MPspecial]}}
+ {\getvalue{\MPspecial}}%
+ \ifcase\inlineMPspecials
+ \doresetMPstack % 0
+ \else
+ \resetMPstack % 1
+ \fi}
+
+%D This macro triggers special support. Currently, the
+%D version and revision number are not used. Any version number
+%D greater than zero will enable special support.
+
+\def\handleMPspecialscomment #1.#2 #3 % version.revision signal
+ {\doresetMPstack
+ \chardef\MPspecialversion =#1
+ \chardef\MPspecialrevision=#2
+ \chardef\MPspecialsignal =#3
+ \let\handleMPsequence=\dohandleMPsequence
+ \handleMPsequence}
+
+%D In case of \PDF, we need to prepare resourcs.
+
\def\startMPresources%
{\global\let\currentMPshades\empty
- \global\currentMPfill=0
- \global\currentMPshade=0
\ifx\currentPDFresources\empty\else
- \message{unused resources before shade \the\currentPDFshade}%
+ \message{unused resources before shade \the\currentPDFshade}%
\fi
\global\let\currentPDFresources\empty}
@@ -130,42 +171,124 @@
{\edef\currentMPspecial{\gMPs{#1}}}
\def\stopMPshading%
- {\global\advance\currentPDFshade by 1
- \global\advance\currentMPshade by 1
- \setevalue{mps:Sh:\currentMPspecial}% non global !!
- {\the\currentPDFshade}%
- \xdef\currentMPshades%
- {\currentMPshades/Sh\the\currentPDFshade\space\the\pdflastobj\space0 R }}
-
-\def\processMPpath%
- {\global\advance\currentMPfill by 1
- \ifnum\finiMPpath=2 \ifx\currentMPshades\empty \else
- \doifdefined{mps:Sh:\the\currentMPfill}
- {\chardef\finiMPpath=4 \PDFcode{q /Pattern cs}}%
- \fi \fi
+ {\global\advance\currentPDFshade by 1
+ \setxvalue{obj:Sh:\currentMPspecial}%
+ {/Sh\the\currentPDFshade\space\the\pdflastobj\space0 R }%
+ \setxvalue{mps:Sh:\currentMPspecial}%
+ {\the\currentPDFshade}}
+
+%D Since colors are not subjected to transformations, we can
+%D only use colors as signal. In our case, we use a dummy colored
+%D path with a red color component of \type {0.n}, so \type
+%D {0.001} is the first path and \type {0.010} the tenth. Since
+%D \METAPOST strips trailing zeros, we have to padd the string.
+
+\ifx\normalhandleMPrgbcolor\undefined % in case we reload this module
+
+ \let\normalhandleMPrgbcolor \handleMPrgbcolor
+ \let\normalhandleMPcmykcolor\handleMPcmykcolor
+ \let\normalhandleMPgraycolor\handleMPgraycolor
+
+\fi
+
+%D When we are using \CONTEXT, we will fall back to the
+%D better color conversion routines. This also has the advantage
+%D that we don't have to parse and convert the file. In this
+%D alternative, \type {\!MP} is not (yet) supported.
+
+\ifCONTEXT
+
+ \def\normalhandleMPrgbcolor%
+ {\dostartcolormodeR\gMPa1:\gMPa2:\gMPa3\od}
+
+ \def\normalhandleMPcmykcolor%
+ {\dostartcolormodeC\gMPa1:\gMPa2:\gMPa3:\gMPa4\od}
+
+ \def\normalhandleMPgraycolor%
+ {\dostartcolormodeS\gMPa1\od}
+
+\fi
+
+% In the previous macros we use the special drivers. A more
+% direct approach would have been:
+%
+% \def\doPDFstartrgbcolormode#1#2#3%
+% {\PDFcode{#1 #2 #3 rg #1 #2 #3 RG}}
+%
+% \def\doPDFstartcmykcolormode#1#2#3#4%
+% {\PDFcode{#1 #2 #3 #4 k #1 #2 #3 #4 K}}
+%
+% \def\doPDFstartgraycolormode#1%
+% {\PDFcode{#1 g #1 G}}
+%
+% \appendtoks
+% \let\dostartrgbcolormode \doPDFstartrgbcolormode
+% \let\dostartcmykcolormode\doPDFstartcmykcolormode
+% \let\dostartgraycolormode\doPDFstartgraycolormode
+% \to \everyMPtoPDFconversion
+
+%D Now we can handle special color signals. We only do this
+%D when special are detected.
+
+\def\MPrgbnumber#1{\expandafter\doMPrgbnumber#1000.0000\relax}
+\def\doMPrgbnumber#1.#2#3#4#5\relax{#2#3#4}
+
+\def\handleMPrgbcolor%
+ {\setMPcolor
+ \ifcase\MPspecialversion
+ \resetMPcolor\normalhandleMPrgbcolor
+ \else\ifnum\MPrgbnumber\lastMPrvalue=\MPspecialsignal
+ % consider it to be a signal
+ \else
+ \resetMPcolor\normalhandleMPrgbcolor
+ \fi\fi}
+
+\def\handleMPcmykcolor%
+ {\resetMPcolor\normalhandleMPcmykcolor}
+
+\def\handleMPgraycolor%
+ {\resetMPcolor\normalhandleMPgraycolor}
+
+\def\resetMPcolor%
+ {\def\lastMPrvalue{0.0}%
+ \def\lastMPgvalue{0.0}%
+ \def\lastMPbvalue{0.0}}
+
+\def\setMPcolor%
+ {\edef\lastMPrvalue{\gMPa1}%
+ \edef\lastMPgvalue{\gMPa2}%
+ \edef\lastMPbvalue{\gMPa3}}
+
+\resetMPcolor
+
+%D The path processing macro is slightly extended.
+
+\def\processMPpath%
+ {\ifcase\MPspecialversion\else
+ \ifnum\MPrgbnumber\lastMPrvalue=\MPspecialsignal
+ \scratchcounter=\MPrgbnumber\lastMPbvalue
+ \edef\currentMPspecial{\the\scratchcounter}%
+ \ifnum\finiMPpath=2
+ \doifdefined{mps:Sh:\currentMPspecial}
+ {\edef\currentMPshade{\getvalue{obj:Sh:\currentMPspecial}}%
+ \doifinstringelse{\currentMPshade}{\currentMPshades}
+ {}{\xdef\currentMPshades{\currentMPshades\currentMPshade}}%
+ \chardef\finiMPpath=4 \PDFcode{q /Pattern cs}}%
+ \fi
+ \fi
+ \fi
\flushMPpath
\closeMPpath
\PDFcode
- {\ifcase\finiMPpath
- W n\or S\or f\or B\or W n /Sh\getvalue{mps:Sh:\the\currentMPfill} sh Q%
+ {\ifcase\finiMPpath
+ W n\or S\or f\or B\or W n /Sh\getvalue{mps:Sh:\currentMPspecial} sh Q%
\fi}%
\let\handleMPsequence=\dohandleMPsequence
\resetMPstack
\nofMPsegments=0
\handleMPsequence}
-\def\handleMPspecialcommand%
- {\ifcase\inlineMPspecials\or
- \advance\nofMParguments by -1 % pop the size
- \fi
- \doifundefinedelse{\MPspecial}
- {\message{[unknown \MPspecial]}}
- {\getvalue{\MPspecial}}%
- \ifcase\inlineMPspecials
- \doresetMPstack % 0
- \else
- \resetMPstack % 1
- \fi}
+%D Specials are define and recalled using:
\def\MPspecial%
{MP special \gMPs\nofMParguments}
@@ -177,8 +300,8 @@
%D but users will seldom encounter those complications. Here
%D we only show a few simple examples, but many other
%D alternatives are possible by setting up the functions built
-%D in \PDF\ in the appropriate way.
-%D
+%D in \PDF\ in the appropriate way.
+%D
%D Shading has to do with interpolation between two or more
%D points or user supplied ranges. In \PDF, the specifications
%D of a shade has to be encapsulated in objects and passed on
@@ -186,49 +309,49 @@
%D simulate three dimensional shades as well and define simple
%D functions using a limited set of \POSTSCRIPT\ primitives.
%D Given the power of \METAPOST\ and these \PDF\ features, we
-%D can achieve superb graphic effects.
-%D
+%D can achieve superb graphic effects.
+%D
%D Since everything is hidden in \TEX\ and \METAPOST\ graphics,
-%D we can stick to high level \CONTEXT\ command, as shown in
+%D we can stick to high level \CONTEXT\ command, as shown in
%D the following exmples.
-%D
+%D
%D \startbuffer
%D \startuniqueMPgraphic{CircularShade}
%D path p ; p := unitsquare xscaled \overlaywidth yscaled \overlayheight ;
%D circular_shade(p,0,.2red,.9red) ;
%D \stopuniqueMPgraphic
-%D
+%D
%D \startuniqueMPgraphic{LinearShade}
%D path p ; p := unitsquare xscaled \overlaywidth yscaled \overlayheight ;
%D linear_shade(p,0,.2blue,.9blue) ;
%D \stopuniqueMPgraphic
-%D
+%D
%D \startuniqueMPgraphic{DuotoneShade}
%D path p ; p := unitsquare xscaled \overlaywidth yscaled \overlayheight ;
%D linear_shade(p,2,.5green,.5red) ;
%D \stopuniqueMPgraphic
%D \stopbuffer
-%D
-%D \typebuffer
-%D
+%D
+%D \typebuffer
+%D
%D \haalbuffer
-%D
-%D These graphics can be hooked into the overlay mechanism,
+%D
+%D These graphics can be hooked into the overlay mechanism,
%D which is available in many commands.
-%D
+%D
%D \startbuffer
%D \defineoverlay[demo 1][\uniqueMPgraphic{CircularShade}]
%D \defineoverlay[demo 2][\uniqueMPgraphic {LinearShade}]
%D \defineoverlay[demo 3][\uniqueMPgraphic {DuotoneShade}]
%D \stopbuffer
-%D
-%D \typebuffer
-%D
+%D
+%D \typebuffer
+%D
%D \haalbuffer
-%D
-%D These backgrounds can for instance be applied to \type
-%D {\framed}:
-%D
+%D
+%D These backgrounds can for instance be applied to \type
+%D {\framed}:
+%D
%D \startbuffer
%D \setupframed[breedte=3cm,hoogte=2cm,kader=uit]
%D \startcombinatie[3*1]
@@ -237,17 +360,17 @@
%D {\framed[achtergrond=demo 3]{\bfd \white Demo 3}} {}
%D \stopcombinatie
%D \stopbuffer
-%D
-%D \typebuffer
-%D
+%D
+%D \typebuffer
+%D
%D \startregelcorrectie
%D \haalbuffer
%D \stopregelcorrectie
-%D
-%D There are a few more alternatives, determined by the second
+%D
+%D There are a few more alternatives, determined by the second
%D parameter passed to \type {circular_shade} and alike.
-%D
-%D \def\SomeShade#1#2#3#4#5%
+%D
+%D \def\SomeShade#1#2#3#4#5%
%D {\startuniqueMPgraphic{Shade-#1}
%D width := \overlaywidth ;
%D height := \overlayheight ;
@@ -256,87 +379,87 @@
%D \stopuniqueMPgraphic
%D \defineoverlay[Shade-#1][\uniqueMPgraphic{Shade-#1}]%
%D \framed[achtergrond=Shade-#1,breedte=2cm,hoogte=2cm,kader=uit]{}}
-%D
+%D
%D \startregelcorrectie
%D \startcombinatie[5*1]
-%D {\SomeShade{10}{circular}{0}{.3blue}{.9blue}} {circular 0}
-%D {\SomeShade{11}{circular}{1}{.3blue}{.9blue}} {circular 1}
-%D {\SomeShade{12}{circular}{2}{.3blue}{.9blue}} {circular 2}
-%D {\SomeShade{13}{circular}{3}{.3blue}{.9blue}} {circular 3}
-%D {\SomeShade{14}{circular}{4}{.3blue}{.9blue}} {circular 4}
+%D {\SomeShade{10}{circular}{0}{.3blue}{.9blue}} {circular 0}
+%D {\SomeShade{11}{circular}{1}{.3blue}{.9blue}} {circular 1}
+%D {\SomeShade{12}{circular}{2}{.3blue}{.9blue}} {circular 2}
+%D {\SomeShade{13}{circular}{3}{.3blue}{.9blue}} {circular 3}
+%D {\SomeShade{14}{circular}{4}{.3blue}{.9blue}} {circular 4}
%D \stopcombinatie
%D \stopregelcorrectie
-%D
+%D
%D \blanko
-%D
+%D
%D \startregelcorrectie
%D \startcombinatie[5*1]
-%D {\SomeShade{20}{circular}{0}{.9green}{.3green}} {circular 0}
-%D {\SomeShade{21}{circular}{1}{.9green}{.3green}} {circular 1}
-%D {\SomeShade{22}{circular}{2}{.9green}{.3green}} {circular 2}
-%D {\SomeShade{23}{circular}{3}{.9green}{.3green}} {circular 3}
-%D {\SomeShade{24}{circular}{4}{.9green}{.3green}} {circular 4}
+%D {\SomeShade{20}{circular}{0}{.9green}{.3green}} {circular 0}
+%D {\SomeShade{21}{circular}{1}{.9green}{.3green}} {circular 1}
+%D {\SomeShade{22}{circular}{2}{.9green}{.3green}} {circular 2}
+%D {\SomeShade{23}{circular}{3}{.9green}{.3green}} {circular 3}
+%D {\SomeShade{24}{circular}{4}{.9green}{.3green}} {circular 4}
%D \stopcombinatie
%D \stopregelcorrectie
-%D
+%D
%D \blanko
-%D
+%D
%D \startregelcorrectie
%D \startcombinatie[4*1]
-%D {\SomeShade{30}{linear}{0}{.3red}{.9red}} {linear 0}
-%D {\SomeShade{31}{linear}{1}{.3red}{.9red}} {linear 1}
-%D {\SomeShade{32}{linear}{2}{.3red}{.9red}} {linear 2}
-%D {\SomeShade{33}{linear}{3}{.3red}{.9red}} {linear 3}
+%D {\SomeShade{30}{linear}{0}{.3red}{.9red}} {linear 0}
+%D {\SomeShade{31}{linear}{1}{.3red}{.9red}} {linear 1}
+%D {\SomeShade{32}{linear}{2}{.3red}{.9red}} {linear 2}
+%D {\SomeShade{33}{linear}{3}{.3red}{.9red}} {linear 3}
%D \stopcombinatie
%D \stopregelcorrectie
-%D
+%D
%D These macros closely cooperate with the \METAPOST\ module
%D \type {mp-spec.mp}, which is part of the \CONTEXT\
-%D distribution.
-%D
-%D The low level (\PDF) implementation is based on the \TEX\
-%D based \METAPOST\ to \PDF\ converter. Shading is supported
-%D by overloading the \type {fill} operator as implemented
-%D earlier. In \PDF\ type~2 and~3 shading functions are
-%D specified in terms of:
-%D
+%D distribution.
+%D
+%D The low level (\PDF) implementation is based on the \TEX\
+%D based \METAPOST\ to \PDF\ converter. Shading is supported
+%D by overloading the \type {fill} operator as implemented
+%D earlier. In \PDF\ type~2 and~3 shading functions are
+%D specified in terms of:
+%D
%D \starttabulatie[|Tl|l|]
-%D \NC /Domain \NC sort of meeting range \NC \NR
-%D \NC /C0 \NC inner shade \NC \NR
-%D \NC /C1 \NC outer shade \NC \NR
-%D \NC /N \NC smaller values, bigger inner circles \NC \NR
+%D \NC /Domain \NC sort of meeting range \NC \NR
+%D \NC /C0 \NC inner shade \NC \NR
+%D \NC /C1 \NC outer shade \NC \NR
+%D \NC /N \NC smaller values, bigger inner circles \NC \NR
%D \stoptabulatie
-\defineMPspecial{2}
- {\startMPshading{14}% type 2
- \immediate\pdfobj
+\defineMPspecial{2}
+ {\startMPshading{14}% type 2
+ \immediate\pdfobj
{<</FunctionType 2
- /Domain [\gMPs1 \gMPs2]
- /C0 [\gMPs4 \gMPs5 \gMPs6]
- /C1 [\gMPs9 \gMPs{10} \gMPs{11}]
- /N \gMPs3>>}%
- \immediate\pdfobj
+ /Domain [\gMPs1 \gMPs2]
+ /C0 [\gMPs4 \gMPs5 \gMPs6]
+ /C1 [\gMPs9 \gMPs{10} \gMPs{11}]
+ /N \gMPs3>>}%
+ \immediate\pdfobj
{<</ShadingType 2
/ColorSpace /DeviceRGB
/Function \the\pdflastobj\space 0 R
- /Coords [\gMPs7 \gMPs8 \gMPs{12} \gMPs{13}]
+ /Coords [\gMPs7 \gMPs8 \gMPs{12} \gMPs{13}]
/Extend [true true]>>}%
\stopMPshading}
-\defineMPspecial{3}
- {\startMPshading{16}% type 3
- \immediate\pdfobj
+\defineMPspecial{3}
+ {\startMPshading{16}% type 3
+ \immediate\pdfobj
{<</FunctionType 2
- /Domain [\gMPs1 \gMPs2]
- /C0 [\gMPs4 \gMPs5 \gMPs6]
- /C1 [\gMPs{10} \gMPs{11} \gMPs{12}]
- /N \gMPs3>>}%
- \immediate\pdfobj
+ /Domain [\gMPs1 \gMPs2]
+ /C0 [\gMPs4 \gMPs5 \gMPs6]
+ /C1 [\gMPs{10} \gMPs{11} \gMPs{12}]
+ /N \gMPs3>>}%
+ \immediate\pdfobj
{<</ShadingType 3
/ColorSpace /DeviceRGB
/Function \the\pdflastobj\space 0 R
- /Coords [\gMPs7 \gMPs8 \gMPs9 \gMPs{13} \gMPs{14} \gMPs{15}]
+ /Coords [\gMPs7 \gMPs8 \gMPs9 \gMPs{13} \gMPs{14} \gMPs{15}]
/Extend [true true]>>}%
\stopMPshading}
-\protect \endinput
+\protect \endinput
diff --git a/tex/context/base/supp-mps.tex b/tex/context/base/supp-mps.tex
index 20885bebc..87af24b4a 100644
--- a/tex/context/base/supp-mps.tex
+++ b/tex/context/base/supp-mps.tex
@@ -8,14 +8,8 @@
%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
-%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
-%C details.
-
-% E-tex : a primitive that tells us that \write18 works
-% E-tex : \executeMetaPost filename
-% ConTeXt : automatic flush at end of job
-
-% The MP generation support is still experimental.
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
%D \METAPOST\ is John Hobbys alternative for \METAFONT\ and
%D produces superior \POSTSCRIPT\ code. In this module we
@@ -63,7 +57,8 @@
%D This is implemented as:
\long\def\startMPgraphic#1\stopMPgraphic%
- {\startwritingMPgraphic
+ {\checkMPTEXgraphic{#1}%
+ \startwritingMPgraphic
\writeMPgraphic{#1}%
\stopwritingMPgraphic}
@@ -72,7 +67,7 @@
%D
%D If we just want to run \METAPOST\ code, that is, not to
%D explictly generate a figure in terms of \type{beginfig} and
-%D \type{endfig}, we can use:
+%D \type{endfig}, we can use:
%D
%D \starttypen
%D \startMPgraphic
@@ -97,22 +92,24 @@
\ifCONTEXT
- \long\def\dostartMPrun#1#2\stopMPrun%
+ \long\def\dostartMPrun#1#2\stopMPrun%
{\bgroup
\MPruntrue
\doifsomething{#1}{\def\MPgraphicfile{#1}}%
+ \checkMPTEXgraphic{#2}%
\startwritingMPgraphic
\writeMPgraphic{#2}%
\stopwritingMPgraphic
\egroup}
-
+
\def\startMPrun%
{\dosinglegroupempty\dostartMPrun}
\else
- \long\def\startMPrun#1\stopMPrun%
+ \long\def\startMPrun#1\stopMPrun%
{\MPruntrue
+ \checkMPTEXgraphic{#1}%
\startwritingMPgraphic
\writeMPgraphic{#1}%
\stopwritingMPgraphic
@@ -139,7 +136,7 @@
%D \stoptypen
%D \macros
-%D {ifrunMPgraphics,ifinsertMPgraphics}
+%D {ifrunMPgraphics,ifrunMPTEXgraphics,ifinsertMPgraphics}
%D
%D These macros look a bit more complicated that one would
%D expect at first sight. This is due to the two ways of
@@ -147,8 +144,9 @@
%D paragraph. Which method is used, the direct or indirect
%D one, depends on a boolean.
-\newif\ifrunMPgraphics \runMPgraphicsfalse
-\newif\ifinsertMPgraphics \insertMPgraphicstrue
+\newif\ifrunMPgraphics \runMPgraphicsfalse
+\newif\ifrunMPTEXgraphics \runMPTEXgraphicsfalse
+\newif\ifinsertMPgraphics \insertMPgraphicstrue
%D If set to true, one can do with a single pass, else one must
%D process the \METAPOST\ file \type{mpgraph} between two
@@ -157,8 +155,9 @@
\ifx\MPgraphicfile\undefined
\def\MPgraphicfile{mp\ifMPrun run\else graph\fi}
+ \def\MPruntimefile{mprun}
-\fi
+\fi
%D \macros
%D {MPgraphic}
@@ -167,7 +166,7 @@
%D processed at once, which means that we reuse this file many
%D times. When however the execution is delayed, all graphics
%D are saved in a separate figure. The current graphic is
-%D characterized bij a \COUNTER. This counter is available
+%D characterized bij a \COUNTER. This counter is available
%D in \type{\MPgraphic}.
\newcount\currentMPgraphic
@@ -179,7 +178,7 @@
% %D
% %D If one want to reuse grapics, one can save much redundant
% %D run time by setting the next switch to true.
-%
+%
% \newif\ifreuseMPgraphics \reuseMPgraphicstrue
%D The three macros responsible for writing the graphic
@@ -189,16 +188,16 @@
%D {MPinclusions, startMPinclusions, MPinitializations}
%D
%D One can include for instance common input commands by
-%D passing them to \type{\MPinclusions}:
+%D passing them to \type{\MPinclusions}:
%D
%D \starttypen
%D \MPinclusions{input mp-mine}
%D \stoptypen
%D
-%D The token register \type {\MPinitializations} is expanded
-%D before all other inclusions.
+%D The token register \type {\MPinitializations} is expanded
+%D before all other inclusions.
-\newtoks \MPinitializations
+\newtoks \MPinitializations
\long\def\startMPinclusions#1\stopMPinclusions%
{\long\def\theMPinclusions%
@@ -226,13 +225,18 @@
\ifx \overlayheight \undefined \def \overlayheight {3cm} \fi
\ifx \overlaylinewidth \undefined \def \overlaylinewidth {0pt} \fi
-\long\def\writeMPgraphic#1%
- {\bgroup
- \edef\overlaywidth {\overlaywidth \space}%
+\def\presetMPdefinitions%
+ {\edef\overlaywidth {\overlaywidth \space}%
\edef\overlayheight {\overlayheight \space}%
\edef\overlaylinewidth {\overlaylinewidth\space}%
+ \edef\currentwidth {\the\hsize \space}%
+ \edef\currentheight {\the\vsize \space}}
+
+\long\def\writeMPgraphic#1% \expanded testen
+ {\bgroup
+ \presetMPdefinitions
+ \let\par=\space
\iflongMPlines
- \let\par=\empty
\long\def\flush##1##2\par%
{\ifx##1\relax \else
\immediate\write\MPwrite{##1##2}%
@@ -249,42 +253,93 @@
\fi
\egroup}
-%D The \type {;} aware method (the \type {\else} branch) also
-%D takes care of \type {btex}||\type {etex}, \type
-%D {verbatimtex}||\type {etex}. The space after \type {tex}
-%D is essential, since it protects \type {text}.
+%D The \type {;} aware method (the \type {\else} branch) also
+%D takes care of \type {btex}||\type {etex}, \type
+%D {verbatimtex}||\type {etex}. The space after \type {tex}
+%D is essential, since it protects \type {text}.
+
+\newif\ifMPTEXgraphic
\def\dowriteMPgraphicline%
{\futurelet\next\dodowriteMPgraphicline}
+%D A first version:
+%D
+%D \starttypen
+%D \long\def\dodowriteMPgraphicline#1tex #2#3etex#4\MPend%
+%D {\ifx\next\empty\else\ifx\next\relax\else
+%D \bgroup
+%D \let\par=\space
+%D \ifx#2\relax
+%D \immediate\write\MPwrite{#1;}%
+%D \egroup
+%D \else
+%D \global\MPTEXgraphictrue
+%D \convertargument#2#3\to\ascii
+%D \immediate\write\MPwrite{#1tex \ascii etex}%
+%D \egroup
+%D \dowriteMPgraphicline#4tex \relax etex\MPend
+%D \fi
+%D \fi\fi}
+%D \stoptypen
+
+%D The next alternative also handles inclusions well.
+
+\newtoks \everyMPTEXgraphic
+
+\long\def\checkMPTEXgraphic#1%
+ {\expandafter\convertargument #1\to\asciiA
+ \convertargument etex\to\asciiB
+ \convertargument text\to\asciiC
+ \expandtwoargsafter\doifinstringelse{\asciiB}{\asciiA}
+ {\global\MPTEXgraphictrue}
+ {\expandtwoargsafter\doifinstringelse{\asciiC}{\asciiA}
+ {\global\MPTEXgraphictrue}
+ {\global\MPTEXgraphicfalse}}}
+
+\def\flushMPTEXgraphic%
+ {\ifMPTEXgraphic \ifx\everyMPTEXgraphic\emptytoks \else
+ \immediate\write\MPwrite{verbatimtex \the\everyMPTEXgraphic\space etex;}%
+ \fi \fi}
+
\long\def\dodowriteMPgraphicline#1tex #2#3etex#4\MPend%
{\ifx\next\empty\else\ifx\next\relax\else
\bgroup
- \let\par=\empty
+ \let\par=\space
\ifx#2\relax
- \immediate\write\MPwrite{#1;}%
+ \iflongMPlines
+ \immediate\write\MPwrite{#1;}%
+ \else
+ \edef\ascii{#1}%
+ \long\def\flush##1##2;%
+ {\ifx##1\relax \else
+ \immediate\write\MPwrite{##1##2;}%
+ \expandafter\flush
+ \fi}%
+ \expandafter\flush\ascii\empty;\relax;%
+ \fi
\egroup
\else
\convertargument#2#3\to\ascii
- \immediate\write\MPwrite{#1tex \ascii etex}%
+ \immediate\write\MPwrite{#1tex \ascii etex}%
\egroup
\dowriteMPgraphicline#4tex \relax etex\MPend
\fi
\fi\fi}
%D This stripper is suboptimal in the sense that more
-%D \type{;}'s are output than feasible. Anyhow, \METAPOST\
-%D can handle this and users may consider it being a sort
-%D of error prevention bonus.
+%D \type{;}'s are output than feasible. Anyhow, \METAPOST\
+%D can handle this and users may consider it being a sort
+%D of error prevention bonus.
%D \macros
%D {everyMPgraphic}
%D
-%D Because some graphics interact with \TEX\ (i.e.\ \CONTEXT), we
+%D Because some graphics interact with \TEX\ (i.e.\ \CONTEXT), we
%D provide a hook for additional actions: \type {\everyMPgraphic}.
-\bgroup
-\catcode`\%=12\gdef\percentletter{%}
+\bgroup
+\catcode`\%=12\gdef\percentletter{%}
\egroup
\newtoks\everyMPgraphic
@@ -293,27 +348,35 @@
{\immediate\write\MPwrite{mpgraph:=\the\currentMPgraphic;}}
\def\startwritingMPgraphic%
- {\ifMPrun \else
+ {\bgroup
+ \def\_{\string_}%
+ \def\&{\string&}%
+ \def\{{\iftrue \string{\else}\fi}%
+ \def\}{\iffalse{\else\string}\fi}%
+ \ifMPrun \else
\allocateMPslot\currentMPgraphic
\fi
+ \enableincludeMPgraphics
\ifrunMPgraphics
\the\everyMPgraphic
\xdef\MPgraphic{\the\currentMPgraphic}%
\immediate\openout\MPwrite=\MPgraphicfile.mp
- \immediate\write\MPwrite{\percentletter\space runtime generated graphic}%
+ \immediate\write\MPwrite{\percentletter\space runtime generated graphics of job "\jobname"}%
\writeMPgraph
\setMPrandomseed
- \theMPinclusions
+ \theMPinclusions % no reset here !
\else
\xdef\MPgraphic{\the\currentMPgraphic}%
+ \the\everyMPgraphic
\ifnum\currentMPgraphic=1
- \the\everyMPgraphic
\immediate\openout\MPwrite=\MPgraphicfile.mp
+ \immediate\write\MPwrite{\percentletter\space collected graphics of job "\jobname"}%
\writeMPgraph
\setMPrandomseed
- \theMPinclusions
\fi
+ \theMPinclusions \let\theMPinclusions\relax % reset here !
\fi
+ \flushMPTEXgraphic
\ifMPrun \else
\immediate\write\MPwrite{beginfig(\the\currentMPgraphic);}%
\fi
@@ -321,12 +384,13 @@
\global\let\stopwritingMPgraphic=\dostopwritingMPgraphic}
\def\dostopwritingMPgraphic%
- {\ifMPrun \else
+ {\ifMPrun \else
\immediate\write\MPwrite{endfig;}%
\fi
\ifrunMPgraphics
\dodostopwritingMPgraphic
- \fi}
+ \fi
+ \egroup}
\def\dodostopwritingMPgraphic%
{\ifnum\currentMPgraphic>0
@@ -346,8 +410,8 @@
\let\stopwritingMPgraphic=\relax
\let\flushMPgraphics =\relax
-%D By default each graphic gets its own slot (number). Later
-%D on we will define a recycle bin.
+%D By default each graphic gets its own slot (number). Later
+%D on we will define a recycle bin.
\def \allocateMPslot#1{\global\advance#1 by 1 }
\def\deallocateMPslot#1{}
@@ -355,13 +419,13 @@
%D \macros
%D {setMPrandomseed}
%D
-%D Did you notice the random seed initialization? This is
-%D needed because \METAPOST\ has a rather poor initialization,
-%D which in some implementations depends on the time in
-%D minutes. So, in quick successive runs, random is not that
-%D random.
+%D Did you notice the random seed initialization? This is
+%D needed because \METAPOST\ has a rather poor initialization,
+%D which in some implementations depends on the time in
+%D minutes. So, in quick successive runs, random is not that
+%D random.
-\newif\ifsetMPrandomseed % false by default
+\newif\ifsetMPrandomseed \setMPrandomseedtrue % false by default
\def\setMPrandomseed%
{\ifsetMPrandomseed \ifx\getrandomnumber\undefined \else
@@ -369,8 +433,8 @@
\writeMPgraphic{randomseed := \localMPseed ;}%
\fi\fi}
-%D This feature has become optional. Thanks to Fabrice Popineau,
-%D \METAPOST\ can now do a far better job!
+%D This feature has become optional. Thanks to Fabrice Popineau,
+%D \METAPOST\ can now do a far better job!
%D \macros
%D {flushMPgraphics}
@@ -380,7 +444,7 @@
%D every \type{\stopMPgraphic}. Therefore we need to say:
%D
%D \starttypen
-%D \flushMPgraphic
+%D \flushMPgraphics
%D \stoptypen
%D
%D else the file is closed without writing the \METAPOST\ end
@@ -406,7 +470,8 @@
\newbox\MPgraphicbox
\def\doloadcurrentMPgraphic#1%
- {\loadMPgraphic{\MPgraphicfile.\the\currentMPgraphic}{#1}}
+ {\loadMPgraphic{\MPgraphicfile.\the\currentMPgraphic}{#1}%
+ \deallocateMPslot\currentMPgraphic} % added
\ifCONTEXT
\def\loadcurrentMPgraphic{\dosinglegroupempty\doloadcurrentMPgraphic}
@@ -437,7 +502,7 @@
%D to be reused. When the next switch is set, graphics are
%D cached.
-\newif\ifuseMPbox \useMPboxtrue
+\newif\ifuseMPbox \useMPboxtrue
\def\douseMPbox#1%
{\setobject{MP}{#1}
@@ -449,49 +514,61 @@
\setgvalue{#1}%
{\getobject{MP}{#1}}}
+% More save is to use a number for {MP}{#1} which permits
+% redefinition. I have to test it first.
+%
+% \newcounter\MPobjectcounter
+%
+% \def\douseMPbox#1%
+% {\doglobal\increment\MPobjectcounter
+% \setobject{MP}{\MPobjectcounter}
+% \vbox
+% {\forgetall
+% \loadMPgraphic{\MPgraphicfile.\the\currentMPgraphic}{}%
+% \deallocateMPslot\currentMPgraphic
+% \placeMPgraphic}%
+% \setxvalue{#1}%
+% {\noexpand\getobject{MP}{\MPobjectcounter}}}
+
\def\nouseMPbox#1%
{\setxvalue{#1}%
{\noexpand\forgetall
\noexpand\loadMPgraphic{\MPgraphicfile.\the\currentMPgraphic}{}%
+ \deallocateMPslot\currentMPgraphic
\noexpand\placeMPgraphic}}
\ifCONTEXT \else \let\douseMPbox=\nouseMPbox \fi
\ifCONTEXT \else \let\doifobjectssupportedelse=\relax \fi
% \long\def\startreusableMPgraphic#1#2\stopreusableMPgraphic%
-% {%\reuseMPgraphicstrue
-% \doifundefined{MP:#1}
-% {\startMPgraphic#2\stopMPgraphic
-% \doifobjectssupportedelse{}{\useMPboxfalse}%
-% \ifuseMPbox
-% \douseMPbox{MP:#1}%
-% \else
-% \nouseMPbox{MP:#1}%
-% \fi}}
-
-%\long\def\startreusableMPgraphic#1#2\stopreusableMPgraphic%
-% {\doifundefined{MP:#1}
-% {\long\setgvalue{MP:#1}%
+% {\ifundefined{MP:#1}%
+% \long\setgvalue{MP:#1}%
% {\startMPgraphic#2\stopMPgraphic
-% \doifobjectssupportedelse{}{\useMPboxfalse}%
+% \doifobjectssupportedelse{}{\useMPboxfalse}%
% \ifuseMPbox
% \douseMPbox{MP:#1}%
% \else
% \nouseMPbox{MP:#1}%
% \fi
-% \getvalue{MP:#1}}}}
+% \getvalue{MP:#1}}%
+% \fi}
+
+\long\def\handlereusableMPgraphic#1#2%
+ {\bgroup
+ \enableincludeMPgraphics
+ \startMPgraphic#2\stopMPgraphic
+ \doifobjectssupportedelse{}{\useMPboxfalse}%
+ \ifuseMPbox
+ \douseMPbox{MP:#1}%
+ \else
+ \nouseMPbox{MP:#1}%
+ \fi
+ \getvalue{MP:#1}%
+ \egroup}
\long\def\startreusableMPgraphic#1#2\stopreusableMPgraphic%
- {\ifundefined{MP:#1}%
- \long\setgvalue{MP:#1}%
- {\startMPgraphic#2\stopMPgraphic
- \doifobjectssupportedelse{}{\useMPboxfalse}%
- \ifuseMPbox
- \douseMPbox{MP:#1}%
- \else
- \nouseMPbox{MP:#1}%
- \fi
- \getvalue{MP:#1}}%
+ {\ifundefined{MP:#1}%
+ \long\setgvalue{MP:#1}{\handlereusableMPgraphic{#1}{#2}}%
\fi}
\def\reuseMPgraphic#1%
@@ -503,16 +580,58 @@
%D The every||time||it's||used original one is defined below.
%D This one makes sense when the graphic uses random numbers.
+\long\def\handleuseMPgraphic#1#2%
+ {\bgroup
+ \enableincludeMPgraphics
+ \startMPgraphic#2\stopMPgraphic
+ \loadMPgraphic{\MPgraphicfile.\the\currentMPgraphic}{}%
+ \deallocateMPslot\currentMPgraphic
+ \placeMPgraphic
+ \egroup}
+
\long\def\startuseMPgraphic#1#2\stopuseMPgraphic%
- {%\reuseMPgraphicstrue
- \long\setgvalue{MP:#1}%
- {\startMPgraphic#2\stopMPgraphic
- \loadMPgraphic{\MPgraphicfile.\the\currentMPgraphic}{}%
- \deallocateMPslot\currentMPgraphic
- \placeMPgraphic}}
+ {\long\setgvalue{MP:#1}{\handleuseMPgraphic{#1}{#2}}}
+
+\long\def\startusableMPgraphic#1#2\stopusableMPgraphic% dummy
+ {\long\setgvalue{MP:#1}{\handleuseMPgraphic{#1}{#2}}} % unsafe {}{}
\let\useMPgraphic=\reuseMPgraphic
+%D \macro
+%D {doifMPgraphicelse}
+%D
+%D For (mainly internal) pusposes we provide a test macro.
+
+\def\doifMPgraphicelse#1%
+ {\doifdefinedelse{MP:#1}}
+
+%D \macros
+%D {includeMPgraphic}
+%D
+%D In a graphic one can call up another (predefined one)
+%D like:
+%D
+%D \starttypen
+%D \startuseMPgraphic{a}
+%D fill fullcircle scaled 100 ;
+%D \stopuseMPgraphic
+%D
+%D \startuseMPgraphic{b}
+%D \includeMPgraphic{a}
+%D fill fullsquare rotated 45 scaled 50 withcolor red ;
+%D \stopuseMPgraphic
+%D
+%D \useMPgraphic{b}
+%D \stoptypen
+
+\def\includeMPgraphic#1%
+ %{\getvalue{MP:#1}}
+ {\csname MP:#1\endcsname}
+
+\def\enableincludeMPgraphics%
+ {\let\handleuseMPgraphic \secondoftwoarguments
+ \let\handlereusableMPgraphic\secondoftwoarguments}
+
%D We didn't yet define the macro responsible for processing
%D the graphic from within \TEX.
@@ -524,11 +643,26 @@
\fi}
%D \macros
+%D {useMETAFUNformat}
+%D
+%D For faster running, one can generate a format, saying
+%D
+%D \startypen
+%D mpost -ini context
+%D \stoptypen
+%D
+%D (The resulting \type {mem} file should be moved to the
+%D right location. Watch out for misatching \type {progname}
+%D directives, since they can clutter memory.
+
+\newif\ifuseMETAFUNformat
+
+%D \macros
%D {executeMetaPost, executeMETAPOST, executesystemcommand}
%D
%D With \type{\executeMETAPOST} being defined as:
-\ifx\undefined\executeMetaPost
+\ifx\undefined\executeMETAPOST
\def\executeMETAPOST#1{\executesystemcommand{\executeMetaPost{#1}}}
\fi
@@ -539,7 +673,39 @@
\fi
\ifx\undefined\executeMetaPost
- \def\executeMetaPost#1{mpost #1}
+
+ \ifx\undefined\interactionmode \chardef\interactionmode=255 \fi
+
+% \def\executeMPOST#1%
+% {mpost
+% \ifcase\interactionmode -int=batchmode \fi
+% \ifuseMETAFUNformat -progname=mpost -mem=metafun \fi #1}
+
+ \def\MPOSTbatchswitch {-int=batchmode}
+ \def\MPOSTformatswitch{-progname=mpost -mem=}
+
+ \def\executeMPOST#1%
+ {mpost
+ \ifcase\interactionmode \MPOSTbatchswitch\space \fi
+ \ifuseMETAFUNformat \MPOSTformatswitch metafun \fi #1}
+
+ \def\executeMPTEX#1%
+ {texexec
+ --batch \ifcase\interactionmode --logfile='mptex.log' \fi
+ --output=dvips
+ \ifuseMETAFUNformat --mpformat=metafun \fi --mptex --nomp --once #1}
+
+ \def\executeMetaPost#1%
+ {\ifrunMPTEXgraphics
+ \ifMPTEXgraphic
+ \executeMPTEX{#1}%
+ \else
+ \executeMPOST{#1}%
+ \fi
+ \else
+ \executeMPOST{#1}%
+ \fi}
+
\fi
%D \macros
@@ -555,7 +721,13 @@
{\ifx\undefined\externalfigure
\message{[insert file #1 here]}%
\else
- \externalfigure[#1][\c!type=\c!mps,\c!object=\v!nee,#2]%
+ \externalfigure
+ [#1]
+ [\c!type=\c!mps,\c!object=\v!nee,
+ \c!symbool=\v!ja,\c!reset=\v!ja,
+ \c!maxbreedte=,\c!maxhoogte=,
+ \c!kader=\v!uit,\c!achtergrond=,
+ #2]%
\fi}
\fi
@@ -565,40 +737,40 @@
%D of its use can be found in the modules \type{supp-tpi} and
%D \type{prag-log}.
-%D This module can be used in \PLAIN\ \TEX too. When using
+%D This module can be used in \PLAIN\ \TEX too. When using
%D \DVIPS, just try to process:
-%D
+%D
%D \starttypen
%D \input supp-mps
%D
%D \runMPgraphicstrue
-%D
+%D
%D \def\insertMPfile#1#2%
%D {\special{psfile=#1}}
-%D
+%D
%D \startuseMPgraphic{1}
%D prologues := 1;
%D draw (0,0) withpen pencircle scaled 100;
%D \stopuseMPgraphic
-%D
+%D
%D \useMPgraphic{1}
%D \stoptypen
-%D
+%D
%D Don't forget to enable \type{\write18}. When does not say
-%D \type{\runMPgraphicstrue}, the \METAPOST\ scratch file
+%D \type{\runMPgraphicstrue}, the \METAPOST\ scratch file
%D must be closed by saying
-%D
+%D
%D \starttypen
%D \flushMPgraphics
%D \stoptypen
%D
%D When using the indirect method, one has to process the file
-%D \type{mpgraph.mp} between two successive \TEX\ runs.
-
-%D For some reason, \METAPOST\ needs the public domain \DVI\ to
-%D \POSTSCRIPT\ converter \DVIPS. This symbiosis originates in
-%D the need to include the fonts (glyphs) that \METAPOST\ uses
-%D in the \POSTSCRIPT\ file. Driver independancy was one of my
+%D \type{mpgraph.mp} between two successive \TEX\ runs.
+%D
+%D \METAPOST\ needs the public domain \DVI\ to \POSTSCRIPT\
+%D converter \DVIPS. This symbiosis originates in the need to
+%D include the fonts (glyphs) that \METAPOST\ uses in the
+%D \POSTSCRIPT\ file. Driver independancy was one of my
%D prerequisites for using \METAPOST, so I decided to build
%D this kind of support myself. Personally I consider driver
%D dependancy a drawback for the dissemination of such a
@@ -655,9 +827,9 @@
%D that handles the inclusion. The characters are in the file
%D but made invisible.
%D
-%D In \CONTEXT\ font handling is intergrated in the figure
+%D In \CONTEXT\ font handling is intergrated in the figure
%D inclusion macros. A decent plain \TEX\ alternative is:
-%D
+%D
%D \starttypen
%D \def\includeMPgraphic#1%
%D {\hbox\bgroup
@@ -676,10 +848,10 @@
%D urx=\EPSurx\space
%D ury=\EPSury\space}}%
%D \egroup}
-%D \stoptypen
+%D \stoptypen
%D
-%D This macro needs \type {supp-eps.tex} and provided no
-%D scaling. For \LATEX\ users the next one wil do:
+%D This macro needs \type {supp-eps.tex} and provided no
+%D scaling. For \LATEX\ users the next one wil do:
%D
%D \starttypen
%D \def\includeMPgraphic#1#%
@@ -688,8 +860,8 @@
%D {\includeMPfonts{##1}%
%D \includegraphics[type=mps,#1]{##1}% or whatever type they use
%D \egroup}%
-%D \includeMPgraphics}
-%D \stoptypen
+%D \includeMPgraphics}
+%D \stoptypen
%D We scan the graphics file for the \type{fshow} operator,
%D that is, lines that start with \type{(}. If found it
@@ -769,7 +941,7 @@
%D {\font\temp=#2 at #3bp\temp#1}
%D \stoptypen
%D
-%D While processing some \TUG~98 proceedings, I also had to
+%D While processing some \TUG~98 proceedings, I also had to
%D deal with:
%D
%D \starttypen
@@ -777,7 +949,7 @@
%D (T) ANTTB 7.13086 nfont fshow
%D \stoptypen
%D
-%D which comes to rounding sizes. This is something
+%D which comes to rounding sizes. This is something
%D experimental.
\def\PSnfont{nfont}
@@ -789,8 +961,8 @@
\ifdim\scratchdimen<1pt
\def\size{1pt}%
\else
- \advance\scratchdimen by .5pt
- \def\size##1.##2\relax{\def\size{##1pt}}%
+ \advance\scratchdimen by .5pt
+ \def\size##1.##2\relax{\def\size{##1pt}}%
\expandafter\size\the\scratchdimen\relax
\fi
\else
@@ -860,7 +1032,7 @@
%D saves time in a succesive passes and can't harm, simply
%D because MP can generate them anew.
-\def\convertMPcolorpath{}
+\def\convertMPcolorpath{}
\def\convertMPcolorfile{metacmyk.tmp}
\def\convertMPcolors#1%
@@ -935,9 +1107,9 @@
\withoutpt{\the\dimen2} \space
\withoutpt{\the\dimen4} \space
\withoutpt{\the\dimen6} \space setcmykcolor #4}%
- \fi
- \egroup
- \donetrue} % needed for message
+ \fi
+ \egroup
+ \donetrue} % needed for message
\def\handleMPcopy%
{\immediate\write\scratchwrite{\fileline}}
@@ -1068,7 +1240,7 @@
%D {experimental}
%D
%D Some experimental macros:
-%D
+%D
%D \starttypen
%D \startMPdrawing
%D \stopMPdrawing
@@ -1076,10 +1248,11 @@
%D \popMPdrawing
%D \resetMPdrawing
%D \ifMPdrawingdone
+%D \getMPdrawing
%D \MPdivten[number]
%D \stoptypen
%D
-%D These macros are used in \PPCHTEX.
+%D These macros are used in \PPCHTEX.
\let\MPdrawingdata\empty
@@ -1089,7 +1262,7 @@
\def\resetMPdrawing%
{\global\let\MPdrawingdata\empty
\global\MPdrawingdonefalse}
-
+
\def\pushMPdrawing%
{\pushmacro\MPdrawingdata
\global\let\MPdrawingdata\empty}
@@ -1097,32 +1270,27 @@
\def\popMPdrawing%
{\popmacro\MPdrawingdata}
-% \def\getMPdrawing%
-% {\ifMPdrawingdone
-% \bgroup
-% \setbox0=\hbox
-% {\expandafter\startMPgraphic\MPdrawingdata\stopMPgraphic
-% \loadcurrentMPgraphic\empty
-% \placeMPgraphic}%
-% \ifMPshiftdrawing
-% \dimen0=\MPllx bp
-% \dimen2=\MPlly bp
-% \hbox{\hskip\dimen0\raise\dimen2\box0}%
-% \else
-% \box0
-% \fi
-% \egroup
-% \fi}
-
\def\getMPdrawing%
{\ifMPdrawingdone
\expandafter\startMPgraphic\MPdrawingdata\stopMPgraphic
\loadcurrentMPgraphic\empty
+ \deallocateMPslot\currentMPgraphic % new
\placeMPgraphic
\fi}
-\long\def\startMPdrawing#1\stopMPdrawing%
- {\long\xdef\MPdrawingdata{\MPdrawingdata#1}}
+\def\startMPdrawing%
+ {\dosingleempty\dostartMPdrawing}
+
+\long\def\dostartMPdrawing[#1]#2\stopMPdrawing%
+ {\relax
+ \bgroup
+ \enableincludeMPgraphics
+ \presetMPdefinitions
+ \doifelse{#1}{-}
+ {\convertargument#2\to\asciiA}
+ {\long\def\asciiA{#2}}%
+ \long\xdef\MPdrawingdata{\MPdrawingdata\asciiA}%
+ \egroup}
\def\MPdivten[#1]%
{\@EA\@EA\@EA\doMPdivten\@EA\@EA\@EA[\@EA#1]}
@@ -1147,27 +1315,29 @@
\def\dodoMPdivtenE #1#2{#1.#2}
\def\dodoMPdivtenF #1{.#1}
-%D \macros
+%D \macros
%D {startMPclip,grabMPclippath}
%D
-%D We can use \METAPOST\ to calculate arbitrary clipping
-%D paths. Such a path is defined by (for instance):
+%D We can use \METAPOST\ to calculate arbitrary clipping
+%D paths. Such a path is defined by (for instance):
%D
%D \starttypen
%D \startMPclip{window}
-%D clip currentpicture to fullcircle xscaled \width yscaled \height ;
+%D clip currentpicture to fullcircle xscaled \width yscaled \height ;
%D \stopMPclip
%D \stoptypen
%D
%D Such a path can be extracted (processed) by:
%D
-%D \starttypen
-%D \grabMPpath{window}{method}{width}{height}{default path}
+%D \starttypen
+%D \grabMPclippath{window}{method}{width}{height}{default path}
%D \stoptypen
%D
-%D Currently only method 1 makes sense; it produces \PDF\
-%D code. This macro only makes sense when hooked into a
-%D special routine.
+%D Currently only method 1 makes sense; it produces \PDF\
+%D code. This macro only makes sense when hooked into a
+%D special routine.
+
+\let\MPclippath\empty
\long\def\startMPclip#1#2\stopMPclip%
{\long\setgvalue{MPC:#1}%
@@ -1181,7 +1351,7 @@
{\getvalue{MPC:#1}%
\setxvalue{MPC:#1}{\noexpand\xdef\noexpand\MPclippath{\MPclippath}}}%
{\xdef\MPclippath{#5}}%
- \ifcase#2\else
+ \ifcase#2\else % method 1 :
\doglobal\stripcharacter urveto\from\MPclippath\to\MPclippath
\doglobal\stripcharacter oveto\from\MPclippath\to\MPclippath
\doglobal\stripcharacter ineto\from\MPclippath\to\MPclippath
@@ -1189,27 +1359,34 @@
\egroup}
%D We pose some restrictions to the \METAPOST\ code and pickup
-%D the last path in the file.
+%D the clip path from the file.
+%D
+%D We turn the slash into a comment. The \type {\hbox} grabs spaces
+%D and the \type {%} triggers the grabber. Next we filter the
+%D clipping path, or actually, the first path.
\bgroup
\catcode`\%=\@@active
\catcode`\/=\@@comment
-\gdef\dograbMPclippath/ / the slash is now comment
- {\setbox\scratchbox=\hbox\bgroup/ / the box grabs spaces
- \catcode`\%=\@@active / the % token is a trigger
- \obeylines\let\obeyedline\space / lines are ignores
- \def%##1newpath##2closepath##3showpage/ we only need the path
- {\xdef\MPclippath{##2}\endinput}/ / and can ignore the rest
+\gdef\dograbMPclippath/
+ {\setbox\scratchbox=\hbox\bgroup/
+ \catcode`\%=\@@active
+ \obeylines\let\obeyedline\space
+ \def\do##1newpath##2closepath##3\od/
+ {\xdef\MPclippath{##2}\endinput}/
+ \def%##1%%EOF/
+ {\do##1newpathclosepath\od\endinput}/
\readfile{\MPgraphicfile.\the\currentMPgraphic}{}{}/
+ \deallocateMPslot\currentMPgraphic / new
\egroup}
\egroup
%D \macros
%D {recycleMPslots}
%D
-%D When coding and embedding many \METAPOST\ figures in a
-%D document, one can save quite some disk space by using
-%D \PDFTEX\ and setting the next switch:
+%D When coding and embedding many \METAPOST\ figures in a
+%D document, one can save quite some disk space by using
+%D \PDFTEX\ and setting the next switch:
\newif\ifrecycleMPslots \recycleMPslotsfalse
@@ -1240,10 +1417,36 @@
%\message{[MP slot - \number#1]}%
\fi}
-%D Experimental:
+%D Experimental and overloaded later, since we need to be
+%D more clever due to \METAPOST's limit of 4~open files.
\def\MPdatafile%
- {mp-\the\currentMPgraphic.tmp}
+ {mp-\the\currentMPgraphic.mpd}
+
+\def\getMPdata%
+ {\input \MPdatafile\relax}
+
+%D \macros
+%D {MPtoks, MPbox}
+%D
+%D For convenience, we provide some scratch registers:
+
+\ifx\undefined\MPtoks \newtoks\MPtoks \fi
+\ifx\undefined\MPbox \newbox \MPbox \fi
+
+%D \macros
+%D {startMPcode}
+%D
+%D We can save some typing with:
+%D
+%D \starttypen
+%D \startMPcode whatever \stopMPcode
+%D \stoptypen
+%D
+%D this automatically places the graphic
+
+\long\def\startMPcode#1\stopMPcode%
+ {\startuseMPgraphic{@@}#1\stopuseMPgraphic\useMPgraphic{@@}}
\protect
diff --git a/tex/context/base/supp-pdf.tex b/tex/context/base/supp-pdf.tex
index 83205eb13..559e95644 100644
--- a/tex/context/base/supp-pdf.tex
+++ b/tex/context/base/supp-pdf.tex
@@ -1,6 +1,6 @@
%D \module
%D [ file=supp-pdf,
-%D version=2000.04.28,
+%D version=2000.10.14,
%D title=\CONTEXT\ Support Macros,
%D subtitle=\METAPOST\ to \PDF\ conversion,
%D author=Hans Hagen,
@@ -33,14 +33,16 @@
\unprotect
-\ifx\pdfliteral\undefined
- \def\PDFcode#1{\message{[ignored pdfliteral: #1]}}
-\else
- \let\PDFcode\pdfliteral
+\ifx\PDFcode\undefined
+ \ifx\pdfliteral\undefined
+ \def\PDFcode#1{\special{PDF: #1}}
+ \else
+ \let\PDFcode\pdfliteral
+ \fi
\fi
%D \macros
-%D {pdfimage,pdfimages}
+%D {pdfimage,pdfimages,pdfclippedimage}
%D
%D Starting with pdftex version 14, images are included more
%D natural to the form embedding. This enables alternative
@@ -53,12 +55,21 @@
%D
%D The first one replaces the pre||version||14 original,
%D while the latter provides alternative images.
+%D
+%D The next macro is dedicated to Maarten Gelderman, who
+%D needed to paste prepared \PDF\ pages into conference
+%D proceedings.
+%D
+%D \starttypen
+%D \pdfclippedimage <optional dimensions> {file} {l} {r} {t} {b}
+%D \stoptypen
\ifx\pdftexversion\undefined
-
\writestatus{\m!systems}{Why not use pdf(e)TeX binaries?}
+ \protect\expandafter\endinput
+\fi
-\else\ifnum\pdftexversion>13
+\ifnum\pdftexversion>13
\def\pdfimage#1#%
{\dopdfimage{#1}}
@@ -79,13 +90,33 @@
attr {/Alternates \the\pdflastobj\space0 R}{#3}%
\pdfrefximage\pdflastximage}
+ \def\pdfclippedimage#1#% specs {file}{left}{right}{top}{bottom}
+ {\dopdfclippedimage{#1}}
+
+ \def\dopdfclippedimage#1#2#3#4#5#6%
+ {\bgroup
+ \pdfximage#1{#2}%
+ \setbox\scratchbox=\hbox
+ {\pdfrefximage\pdflastximage}%
+ \hsize=\wd\scratchbox
+ \advance\hsize by -#3
+ \advance\hsize by -#4
+ \vsize=\ht\scratchbox
+ \advance\vsize by -#5
+ \advance\vsize by -#6
+ \setbox\scratchbox=\vbox to \vsize
+ {\vskip-#5\hbox to \hsize{\hskip-#3\box\scratchbox\hss}}%
+ \pdfxform\scratchbox
+ \pdfrefxform\pdflastxform
+ \egroup}
+
%D For old times sake:
\let\pdfform =\pdfxform
\let\pdflastform=\pdflastxform
\let\pdfrefform =\pdfrefxform
-\fi\fi
+\fi
%D \macros
%D {convertPDFtoPDF}
@@ -332,6 +363,7 @@
\def \PSHiResBoundingBox {HiResBoundingBox:}
\def \PSExactBoundingBox {ExactBoundingBox:}
\def \PSMetaPostSpecial {MetaPostSpecial:}
+\def \PSMetaPostSpecials {MetaPostSpecials:}
\def \PSPage {Page:}
%D By the way, the \type {setcmykcolor} operator is not
@@ -554,15 +586,13 @@
\PDFcode{\gMPa1 \gMPa2 \gMPa3 \gMPa4 \gMPa5 \gMPa6 cm}%
\resetMPstack
\else\ifx\somestring\PSsetrgbcolor
- \PDFcode{\!MP{\gMPa1} \!MP{\gMPa2} \!MP{\gMPa3} rg
- \!MP{\gMPa1} \!MP{\gMPa2} \!MP{\gMPa3} RG}%
+ \handleMPrgbcolor
\resetMPstack
\else\ifx\somestring\PSsetcmykcolor
- \PDFcode{\!MP{\gMPa1} \!MP{\gMPa2} \!MP{\gMPa3} \!MP{\gMPa4} k
- \!MP{\gMPa1} \!MP{\gMPa2} \!MP{\gMPa3} \!MP{\gMPa4} K}%
+ \handleMPcmykcolor
\resetMPstack
\else\ifx\somestring\PSsetgray
- \PDFcode{\!MP{\gMPa1} g \!MP{\gMPa1} G}%
+ \handleMPgraycolor
\resetMPstack
\else\ifx\somestring\PStranslate
\PDFcode{1 0 0 1 \gMPa1 \gMPa2 cm}%
@@ -602,6 +632,22 @@
\fi
\handleMPsequence}
+%D Since colors are not sensitive to transformations, they
+%D are sometimes used for signaling. Therefore, we handle them
+%D separately. The next macro can be redefined if needed.
+
+\def\handleMPrgbcolor%
+ {\PDFcode{\!MP{\gMPa1} \!MP{\gMPa2} \!MP{\gMPa3} rg
+ \!MP{\gMPa1} \!MP{\gMPa2} \!MP{\gMPa3} RG}}
+
+\def\handleMPcmykcolor%
+ {\PDFcode{\!MP{\gMPa1} \!MP{\gMPa2} \!MP{\gMPa3} \!MP{\gMPa4} k
+ \!MP{\gMPa1} \!MP{\gMPa2} \!MP{\gMPa3} \!MP{\gMPa4} K}}
+
+\def\handleMPgraycolor%
+ {\PDFcode{\!MP{\gMPa1} g
+ \!MP{\gMPa1} G}}
+
%D Beginning and ending the graphics is taken care of by the
%D macro \type{\handleMPgraphic}, which is redefined when
%D the first graphics operator is met.
@@ -624,11 +670,13 @@
\let\handleMPsequence=\finishMPgraphic
\else\ifx\somestring\PSPage
\let\handleMPsequence=\handleMPpage
+ \else\ifx\somestring\PSMetaPostSpecials
+ \let\handleMPsequence=\handleMPspecialscomment
\else\ifx\somestring\PSMetaPostSpecial
\let\handleMPsequence=\handleMPspecialcomment
\else
\setMPargument{#1}% kan weg
- \fi\fi\fi\fi\fi\fi}
+ \fi\fi\fi\fi\fi\fi\fi}
\let\handleMPgraphic=\handleMPbegingraphic
@@ -684,6 +732,8 @@
\let\handleMPsequence=\dohandleMPsequence
\handleMPsequence}
+\let\handleMPspecialscomment\handleMPspecialcomment
+
%D We use the \type{page} comment as a signal that
%D stackbuilding can be started.
@@ -743,14 +793,14 @@
\else
\scratchcounter=1
\def\dodo##1%
- {\edef\!!stringa{##1}\ifx\!!stringa\space\char32\else##1\fi}%
+ {\edef\!!stringa{##1}\ifx\!!stringa\space\MPspacechar\else##1\fi}%
\def\do(##1{\dodo{##1}}%
- \gMPa\scratchcounter\space
+ \gMPa\scratchcounter\MPspacechar
\let\do\relax
\loop
\advance\scratchcounter by 1
- \ifnum\scratchcounter<\nofMParguments
- [\gMPa\scratchcounter]\space
+ \ifnum\scratchcounter<\nofMParguments\relax
+ \gMPa\scratchcounter\MPspacechar
\repeat
\def\do##1){\dodo{##1}}%
\gMPa\scratchcounter
@@ -778,6 +828,25 @@
\box\scratchbox
\egroup}
+%D You could consider the following definition to be the most
+%D natural one.
+
+\def\MPspacechar% normal case
+ {\space}
+
+%D However, the following implementation is more robust, since
+%D some fonts have funny visible spaces in the space slot. This
+%D gives a mismatch between the space that \METAPOST\ took into
+%D account and the \quote {natural} space. This only happens in
+%D labels, since \type {btex}||\type {etex} thingies don't have
+%D spaces. This phenomena showed up when preparing the
+%D \METAFUN\ manual, where Palatino fonts are used. We can
+%D safely assume that \METAPOST\ considers \type {\char32} to
+%D be the space.
+
+\def\MPspacechar%
+ {\setbox\scratchbox=\hbox{\char32}\kern\wd\scratchbox}%
+
%D Most operators are just converted and keep their
%D arguments. Dashes however need a bit different treatment,
%D otherwise \PDF\ viewers complain loudly. Another
@@ -1359,6 +1428,8 @@
\let\currentPDFresources\empty
+\newtoks\everyMPtoPDFconversion
+
\def\convertMPtoPDF#1#2#3%
{\bgroup
\setbox\scratchbox=\vbox\bgroup
@@ -1374,6 +1445,7 @@
\def\doprocessMPtoPDFfile#1#2#3% file xscale yscale
{\setMPspecials
+ \the\everyMPtoPDFconversion
\catcode`\^^M=\@@endofline
\startMPscanning
\let\do=\empty
@@ -1406,7 +1478,7 @@
\ifcase\makeMPintoPDFobject
\box\scratchbox
\or
- \immediate\pdfxform attr{\currentPDFresources}\scratchbox
+ \immediate\pdfxform resources{\currentPDFresources}\scratchbox
\xdef\lastPDFMPobject{\the\pdflastxform}%
\pdfrefxform\lastPDFMPobject
\global\let\currentPDFresources\empty
@@ -1415,6 +1487,8 @@
\fi
\egroup}
+% funny clip in viewer
+%
% \setbox\scratchbox=\vbox
% {\forgetall
% \dimen0=\MPllx bp
@@ -1425,7 +1499,7 @@
% \wd\scratchbox=\!!zeropoint
% \hbox
% {\PDFcode{q \MPxscale\space 0 0 \MPyscale\space 0 0 cm}%
-% \lower\MPheight\box\scratchbox
+% \lower\MPshift\box\scratchbox
% \PDFcode{Q}}}%
%D \macros
diff --git a/tex/context/base/supp-ran.tex b/tex/context/base/supp-ran.tex
index efac4fa94..ec0f73f15 100644
--- a/tex/context/base/supp-ran.tex
+++ b/tex/context/base/supp-ran.tex
@@ -37,10 +37,9 @@
%D The randomseed can be set by:
%D
%D \starttypen
-%D \setrandomseed{number>0]
+%d \setrandomseed{number>0]
%D \stoptypen
-
\ifx\nextrandom\undefined
\readfile{random.tex}
@@ -56,7 +55,8 @@
\else
- \let\normalnextrandom=\nextrandom
+ \let\normalnextrandom = \nextrandom
+ \let\restorerandomseed = \relax
\def\nextrandom%
{\bgroup
@@ -65,11 +65,28 @@
\let\month=\normalmonth
\let\year =\normalyear
\normalnextrandom
- \global\let\nextrandom=\normalnextrandom
+ \gdef\nextrandom{\restorerandomseed\normalnextrandom}%
\egroup}
+ % avoid scratch dimens 0 and 2
+
+ \unprotect
+
+ \def\setrandim#1#2#3% dimen register, minimum length, maximum length
+ {\scratchdimen=#2\edef\!!stringa{\number\scratchdimen}%
+ \scratchdimen=#3\edef\!!stringb{\number\scratchdimen}%
+ \setrannum\ranval\!!stringa\!!stringb
+ #1\ranval sp\relax}
+
+ \protect
+
\fi
+\def\freezerandomseed%
+ {\xdef\restorerandomseed%
+ {\global\randomi\number\randomi
+ \global\let\noexpand\restorerandomseed\relax}}
+
\let\getrandomcount = \setrannum
\let\getrandomdimen = \setrandim
diff --git a/tex/context/base/symb-eur.tex b/tex/context/base/symb-eur.tex
new file mode 100644
index 000000000..7b21ffa2e
--- /dev/null
+++ b/tex/context/base/symb-eur.tex
@@ -0,0 +1,52 @@
+%D \module
+%D [ file=symb-eur,
+%D version=2000.06.22,
+%D title=\CONTEXT\ Symbol Libraries,
+%D subtitle=Adobe Euro Symbols,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\definefontsynonym [EuroSerif] [eurose]
+\definefontsynonym [EuroSerifBold] [euroseb]
+\definefontsynonym [EuroSerifItalic] [eurosei]
+\definefontsynonym [EuroSerifSlanted] [eurosei]
+\definefontsynonym [EuroSerifBoldItalic] [eurosebi]
+\definefontsynonym [EuroSerifBoldSlanted] [eurosebi]
+
+\definefontsynonym [EuroSans] [eurosa]
+\definefontsynonym [EuroSansBold] [eurosab]
+\definefontsynonym [EuroSansItalic] [eurosai]
+\definefontsynonym [EuroSansSlanted] [eurosai]
+\definefontsynonym [EuroSansBoldItalic] [eurosabi]
+\definefontsynonym [EuroSansBoldSlanted] [eurosabi]
+
+\definefontsynonym [EuroMono] [euromo]
+\definefontsynonym [EuroMonoBold] [euromob]
+\definefontsynonym [EuroMonoSlanted] [euromoi]
+\definefontsynonym [EuroMonoItalic] [euromoi]
+\definefontsynonym [EuroMonoBoldItalic] [euromobi]
+\definefontsynonym [EuroMonoBoldSlanted] [euromobi]
+
+\definesymbol [euro] [\getglyph{Euro}{\char160}]
+
+\unexpanded\def\euro{\symbol[euro]}
+
+%D The next table shows the complete set of symbols:
+%D
+%D \starttabulate[|l|c|c|c|c|c|c|]
+%D \NC \NC \tex{tf} \NC \tex{bf} \NC \tex{sl}
+%D \NC \tex{it} \NC \tex{bs} \NC \tex{bi} \NC\NR
+%D \NC \rm Serif \NC \rm\tf\euro \NC \rm\bf\euro \NC \rm\sl\euro
+%D \NC \rm\it\euro \NC \rm\bs\euro \NC \rm\bi\euro \NC\NR
+%D \NC \ss Sans \NC \ss\tf\euro \NC \ss\bf\euro \NC \ss\sl\euro
+%D \NC \ss\it\euro \NC \ss\bs\euro \NC \ss\bi\euro \NC\NR
+%D \NC \tt Mono \NC \tt\tf\euro \NC \tt\bf\euro \NC \tt\sl\euro
+%D \NC \tt\it\euro \NC \tt\bs\euro \NC \tt\bi\euro \NC\NR
+%D \stoptabulate
+
+\endinput
diff --git a/tex/context/base/symb-ini.tex b/tex/context/base/symb-ini.tex
index 16a05c096..18822256e 100644
--- a/tex/context/base/symb-ini.tex
+++ b/tex/context/base/symb-ini.tex
@@ -41,6 +41,16 @@
1: nacita se soubor symbolu --
\stopmessages
+\startmessages italian library: symbols
+ title: simboli
+ 1: caricamento gruppo di simboli --
+\stopmessages
+
+\startmessages norwegian library: symbols
+ title: symboler
+ 1: leser inn symbolsett --
+\stopmessages
+
%D \macros
%D {definesymbol, symbol}
%D
@@ -63,34 +73,48 @@
%D \definesymbol [level 5] [$\star$]
%D \stoptypen
+% ss:tag -> symbol
+% ss:set:tag -> symbol out of set
+% sstag -> list of symbols in set
+
\def\dodefinesymbol[#1][#2]%
{\ifx\currentsymbolset\empty
- \setvalue{\??ss#1}{#2}%
+ \setvalue{\??ss:#1}{#2}%
\else
- \doifundefinedelse{\??ss:\currentsymbolset}
+ \doifundefinedelse{\??ss\currentsymbolset}
{\let\currentsymbollist\empty}
- {\edef\currentsymbollist{\csname\??ss:\currentsymbolset\endcsname}}%
+ {\edef\currentsymbollist{\csname\??ss\currentsymbolset\endcsname}}%
\addtocommalist{#1}\currentsymbollist
- \setvalue{\??ss\currentsymbolset#1}{#2}%
- \letvalue{\??ss:\currentsymbolset}\currentsymbollist
+ \setvalue{\??ss:\currentsymbolset:#1}{#2}%
+ \letvalue{\??ss\currentsymbolset}\currentsymbollist
\fi}
\def\definesymbol%
{\dodoubleargument\dodefinesymbol}
-\def\dosymbol[#1][#2]%
+\unexpanded\def\symbol% % This one always gobbles spaces,
+ {\dodoubleempty\dosymbol} % so never change it again!
+
+\def\dosymbol[#1][#2]%
{\ifsecondargument
- \doifdefinedelse{\??ss#1#2}
- {\getvalue{\??ss#1#2}}
- {\doifdefinedelse{\??ss#2}{\getvalue{\??ss#2}}{#2}}%
+ \doifdefinedelse{\??ss:#1:#2}
+ {\dodosymbol{#1:#2}}
+ {\doifdefinedelse{\??ss:#2}{\dodosymbol{#2}}{#2}}%
+ \else\ifx\currentsymbolset\empty
+ \doifdefinedelse{\??ss:#1}{\dodosymbol{#1}}{#1}%
\else
- \doifdefinedelse{\??ss\currentsymbolset#1}
- {\getvalue{\??ss\currentsymbolset#1}}
- {\doifdefinedelse{\??ss#1}{\getvalue{\??ss#1}}{#1}}%
- \fi}
+ \doifdefinedelse{\??ss:\currentsymbolset:#1}
+ {\dodosymbol{\currentsymbolset:#1}}
+ {\doifdefinedelse{\??ss:#1}{\dodosymbol{#1}}{#1}}%
+ \fi\fi}
-\unexpanded\def\symbol% % This one always gobbles spaces,
- {\dodoubleempty\dosymbol} % so never change it again!
+\def\dodosymbol#1%
+ {{\the\everysymbol\getvalue{\??ss:#1}}}
+
+\newtoks\everysymbol
+
+% % % % %
+% this should go in symb-fig, to be loaded after core-fig
%D \macros
%D {definefiguresymbol}
@@ -104,13 +128,21 @@
\def\defaultsymbolfactor{10}
+\def\dohandlefiguresymbol#1#2%
+ {\externalfigure[#1][\c!reset=\v!ja,\c!symbool=\v!ja,\c!hfactor=\defaultsymbolfactor,#2]}
+
+\appendtoks \resetexternalfigures \to \everysymbol
+
+\def\definefiguresymbol%
+ {\dotripleempty\dodefinefiguresymbol}
+
\def\dodefinefiguresymbol[#1][#2][#3]%
{\ifsecondargument
- \definesymbol[#1][{\externalfigure[#2][\c!symbool=\v!ja,\c!hfactor=\defaultsymbolfactor,#3]}]%
+ \definesymbol[#1][\dohandlefiguresymbol{#2}{#3}]%
\fi}
-
-\def\definefiguresymbol%
- {\dotripleempty\dodefinefiguresymbol}
+
+% but for the moment we keep it here
+% % % % % %
%\def\objectsymbol[#1]%
% {\dopresetfieldsymbol{#1}\dogetfieldsymbol{#1}}
@@ -121,8 +153,12 @@
%D A handy private one:
\def\doifsymboldefinedelse#1#2#3%
- {\doifdefinedelse{\??ss\currentsymbolset#1}
- {#2}{\doifdefinedelse{\??ss#1}{#2}{#3}}}
+ {\ifx\currentsymbolset\empty
+ \doifdefinedelse{\??ss:#1}{#2}{#3}%
+ \else
+ \doifdefinedelse{\??ss:\currentsymbolset:#1}
+ {#2}{\doifdefinedelse{\??ss:#1}{#2}{#3}}%
+ \fi}
%D \macros
%D {setupsymbolset,startsymbolset}
@@ -156,13 +192,15 @@
\let\currentsymbolset\empty
-\def\startsymbolset[#1]%
- {\def\currentsymbolset{:#1:}}
+\def\startsymbolset%
+ {\localpushmacro\currentsymbolset
+ \setupsymbolset}
\def\stopsymbolset%
- {\let\currentsymbolset\empty}
+ {\localpopmacro\currentsymbolset}
-\let\setupsymbolset\startsymbolset
+\def\setupsymbolset[#1]%
+ {\def\currentsymbolset{#1}}
%D \macros
%D {showsymbolset}
@@ -174,13 +212,13 @@
\blanko
\getparameters[\??ss][\c!n=5,#2]%
\setupsymbolset[#1]%
- \doifdefined{\??ss:\currentsymbolset}
+ \doifdefined{\??ss\currentsymbolset}
{\global\let\allfigures=\empty
\doglobal\newcounter\figurecounter
\setupcolors[\c!status=\v!start]% to prevent mps color conversion
\mindermeldingen
- \def\doshowsymbols%
- {\expanded{\globalprocesscommalist[\getvalue{\??ss:\currentsymbolset}]\noexpand\docommando}}%
+ \def\doshowsymbols% global needed due to grouping in alignment
+ {\expanded{\globalprocesscommalist[\getvalue{\??ss\currentsymbolset}]\noexpand\docommando}}%
\def\docommando##1%
{\vbox
{\forgetall
diff --git a/tex/context/base/syst-etx.tex b/tex/context/base/syst-etx.tex
new file mode 100644
index 000000000..e00eab73c
--- /dev/null
+++ b/tex/context/base/syst-etx.tex
@@ -0,0 +1,215 @@
+\ifx\undefined\unprotect \catcode`\@=11 \fi
+
+%D Constants to be used with \type {\grouptype}.
+
+\chardef\@@bottomlevelgroup = 0
+\chardef\@@simplegroup = 1
+\chardef\@@hboxgroup = 2
+\chardef\@@adjustedhboxgroup = 3
+\chardef\@@vboxgroup = 4
+\chardef\@@vtopgroup = 5
+\chardef\@@aligngroup = 6
+\chardef\@@noaligngroup = 7
+\chardef\@@outputgroup = 8
+\chardef\@@mathgroup = 9
+\chardef\@@discretionarygroup = 10
+\chardef\@@insertgroup = 11
+\chardef\@@vcentergroup = 12
+\chardef\@@mathchoicegroup = 13
+\chardef\@@semisimplegroup = 14
+\chardef\@@mathshiftgroup = 15
+\chardef\@@mathleftgroup = 16
+
+\chardef\@@vadjustgroup = \@@insertgroup
+
+%D Constants to be used with \type {\interactionmode}.
+
+\chardef\@@batchmode = 0
+\chardef\@@nonstopmode = 1
+\chardef\@@scrollmode = 2
+\chardef\@@errorstopmode = 3
+
+%D Constants to be used with \type {\nodetype}.
+
+\chardef\@@charnode = 0
+\chardef\@@hlistnode = 1
+\chardef\@@vlistnode = 2
+\chardef\@@rulenode = 3
+\chardef\@@insertnode = 4
+\chardef\@@marknode = 5
+\chardef\@@adjustnode = 6
+\chardef\@@ligaturenode = 7
+\chardef\@@discretionarynode = 8
+\chardef\@@whatsitnode = 9
+\chardef\@@mathnode = 10
+\chardef\@@gluenode = 11
+\chardef\@@kernnode = 12
+\chardef\@@penaltynode = 13
+\chardef\@@unsetnode = 14
+\chardef\@@mathsnode = 15
+
+%D Constants to be used with \type {\iftype}.
+
+\chardef\@@charif = 1
+\chardef\@@catif = 2
+\chardef\@@numif = 3
+\chardef\@@dimif = 4
+\chardef\@@oddif = 5
+\chardef\@@vmodeif = 6
+\chardef\@@hmodeif = 7
+\chardef\@@mmodeif = 8
+\chardef\@@innerif = 9
+\chardef\@@voidif = 10
+\chardef\@@hboxif = 11
+\chardef\@@vboxif = 12
+\chardef\@@xif = 13
+\chardef\@@eofif = 14
+\chardef\@@trueif = 15
+\chardef\@@falseif = 16
+\chardef\@@caseif = 17
+\chardef\@@definedif = 18
+\chardef\@@csnameif = 19
+\chardef\@@fontcharif = 20
+
+%D Just in case we are not using \ETEX, we define some out of
+%D range constants.
+
+\beginTEX
+
+\chardef\grouptype = 255
+\chardef\interactionmode = 255
+\chardef\nodetype = 255
+\chardef\iftype = 255
+
+\endTEX
+
+%D Of course we want even bigger log files, so we copied this
+%D from the \ETEX\ source files.
+
+\beginETEX \tracing...
+
+\def\tracingall%
+ {\tracingonline =\@ne
+ \tracingcommands =\thr@@
+ \tracingstats =\tw@
+ \tracingpages =\@ne
+ \tracingoutput =\@ne
+ \tracinglostchars =\tw@
+ \tracingmacros =\tw@
+ \tracingparagraphs=\@ne
+ \tracingrestores =\@ne
+ \showboxbreadth =\maxdimen
+ \showboxdepth =\maxdimen
+ \tracinggroups =\@ne
+ \tracingifs =\@ne
+ \tracingscantokens=\@ne
+ \tracingnesting =\@ne
+ \tracingassigns =\tw@
+ \errorstopmode}
+
+\def\loggingall%
+ {\tracingall
+ \tracingonline=\z@}
+
+\def\tracingnone%
+ {\tracingassigns =\z@
+ \tracingnesting =\z@
+ \tracingscantokens=\z@
+ \tracingifs =\z@
+ \tracinggroups =\z@
+ \showboxdepth =\thr@@
+ \showboxbreadth =5
+ \tracingrestores =\z@
+ \tracingparagraphs=\z@
+ \tracingmacros =\z@
+ \tracinglostchars =\@ne
+ \tracingoutput =\z@
+ \tracingpages =\z@
+ \tracingstats =\z@
+ \tracingcommands =\z@
+ \tracingonline =\z@ }
+
+\endETEX
+
+%D Just to be sure:
+
+\ifx\eTeX\undefined
+
+ \def\eTeX{$\varepsilon$-\TeX}
+
+\fi
+
+%D In \ETEX\ we have lots of registers, so we redefine a few
+%D low level macros. We reserve some extra space for inserts
+%D and as soon as we near the end of the first register
+%D memory bank (often some 10 less than 255), we switch to the
+%D slower range \@@medallocation||\@@maxallocation.
+
+\beginETEX \new...
+
+%D First we redefine the plain \TEX\ register allocation macros.
+
+\def\newcount {\myalloc@0\count \countdef \@@maxallocation}
+\def\newdimen {\myalloc@1\dimen \dimendef \@@maxallocation}
+\def\newskip {\myalloc@2\skip \skipdef \@@maxallocation}
+\def\newmuskip {\myalloc@3\muskip \muskipdef \@@maxallocation}
+\def\newbox {\myalloc@4\box \mathchardef\@@maxallocation}
+\def\newtoks {\myalloc@5\toks \toksdef \@@maxallocation}
+\def\newread {\myalloc@6\read \chardef \@@minallocation}
+\def\newwrite {\myalloc@7\write \chardef \@@minallocation}
+\def\newmarks {\myalloc@8\marks \mathchardef\@@maxallocation}
+\def\newlanguage{\myalloc@9\language\chardef \@@minallocation}
+
+%D Since in \CONTEXT\ we only have one math family left we
+%D redefine \type {\newfam}.
+
+\def\newfam#1{\chardef#1=15 }
+
+%D Therefore we should reset the related counter.
+
+\count18=1
+
+%D We use some constants in the tests.
+
+\mathchardef\@@minallocation= 16
+\mathchardef\@@medallocation= 256
+\mathchardef\@@maxallocation=32767
+
+%D I cannot imagine that more than~8 extra insert classes
+%D are needed, so we say:
+
+\chardef\@@insallocation=8
+
+%D My low level allocation macro now comes down to:
+
+\def\myalloc@#1#2#3#4#5%
+ {\global\advance\count1#1by\@ne
+ \ifnum\count1#1>\@@medallocation \else
+ \global\advance\insc@unt by -\@@insallocation
+ \ifnum\count1#1<\insc@unt \else
+ \global\count1#1=\@@medallocation % \wait
+ \fi
+ \global\advance\insc@unt by +\@@insallocation
+ \fi
+ \ifnum\count1#1>#4%
+ \global\count1#1=#4%
+ \errmessage{No room for (\string#2) \string#5}%
+ \fi
+ \allocationnumber=\count1#1%
+ \global#3#5=\allocationnumber
+ \wlog{\string#5=\string#2\the\allocationnumber}}
+
+\endETEX
+
+%D These macros can be checked by tests like:
+%D
+%D \starttypen
+%D \let\wlog\message \dorecurse{1000}{\newcount\dummy}
+%D \stoptypen
+
+%D A few bonus bindings.
+
+\let\normalprotected = \protected
+\let\normalunexpanded = \unexpanded
+
+\ifx\undefined\unprotect \catcode`\@=12 \fi \endinput
diff --git a/tex/context/base/syst-ext.tex b/tex/context/base/syst-ext.tex
index 229883caf..04a118cbd 100644
--- a/tex/context/base/syst-ext.tex
+++ b/tex/context/base/syst-ext.tex
@@ -260,15 +260,26 @@
%D searching till it's sure that no other glue component if
%D found. This search can be canceled by using \type{\relax}
%D when possible and needed.
+%D
+%D \starttypen
+%D \def\newskimen#1%
+%D {\ifx#1\undefined
+%D \ifnum\count11>\count12
+%D \newskip#1\relax
+%D \else
+%D \newdimen#1\relax
+%D \fi
+%D \fi}
+%D \stoptypen
+%D
+%D In order to make this macro work in plain \TEX\ too, we
+%D use the following alternative, which fools \TEX\ about
+%D the new commands being \type {\outer} ones.
\def\newskimen#1%
{\ifx#1\undefined
- \ifnum\count11>\count12
- \newskip#1\relax
- \else
- \newdimen#1\relax
- \fi
- \fi}
+ \csname new\ifnum\count11>\count12 skip\else dimen\fi\endcsname#1%
+ \fi}
%D \macros
%D {strippedcsname}
@@ -629,31 +640,63 @@
%D The real implementation is a bit more complicated but we
%D prefer something more versatile.
-\def\DoWithEvery#1%
- {\csname if\strippedcsname#1\endcsname \else
- \edef\next%
- {\@EA\noexpand\csname old\strippedcsname#1\endcsname=
- {\the#1}}%
- \next
- \fi
- \edef\next%
- {\noexpand#1=
- {\@EA\the\csname old\strippedcsname#1\endcsname\the\scratchtoks}}%
- \next
- \csname\strippedcsname#1true\endcsname}
+% the old one
+%
+% \def\DoWithEvery#1%
+% {\csname if\strippedcsname#1\endcsname \else
+% \edef\next%
+% {\@EA\noexpand\csname old\strippedcsname#1\endcsname=
+% {\the#1}}%
+% \next
+% \fi
+% \edef\next%
+% {\noexpand#1=
+% {\@EA\the\csname old\strippedcsname#1\endcsname\the\scratchtoks}}%
+% \next
+% \csname\strippedcsname#1true\endcsname}
+%
+% \def\dowithevery#1%
+% {\@EA\afterassignment\csname do\strippedcsname#1\endcsname\scratchtoks}
+%
+% \def\newevery#1#2%
+% {\ifx#1\undefined\newtoks#1\fi
+% \ifx#2\relax\else\ifx#2\undefined
+% \@EA\newtoks\csname old\strippedcsname#1\endcsname
+% \@EA\newif \csname if\strippedcsname#1\endcsname
+% \@EA\def \csname do\strippedcsname#2\endcsname{\DoWithEvery#1}%
+% \def#2{\dowithevery#2}%
+% \fi\fi}
+%
+% cleaner and more efficient
\def\dowithevery#1%
- {\@EA\afterassignment\csname do\strippedcsname#1\endcsname\scratchtoks}
+ {\def\dodowithevery%
+ {\ifcase\csname c\strippedcsname#1\endcsname \expandafter\chardef
+ \csname c\strippedcsname#1\endcsname=1
+ \csname t\strippedcsname#1\endcsname=#1%
+ \fi
+ \edef\next%
+ {#1={\the\csname t\strippedcsname#1\endcsname\the\scratchtoks}}%
+ \next}%
+ \afterassignment\dodowithevery\scratchtoks}
-\def\newevery#1#2%
- {\ifx#1\undefined\newtoks#1\fi
+\bgroup \let\newtoks\relax % plain safe (\outer)
+
+\gdef\newevery#1#2%
+ {\ifx#1\undefined\csname newtoks\endcsname#1\fi % plain safe (\outer)
\ifx#2\relax\else\ifx#2\undefined
- \@EA\newtoks\csname old\strippedcsname#1\endcsname
- \@EA\newif \csname if\strippedcsname#1\endcsname
- \@EA\def \csname do\strippedcsname#2\endcsname{\DoWithEvery#1}%
- \def#2{\dowithevery#2}%
+ \expandafter\newtoks\csname t\strippedcsname#1\endcsname
+ \expandafter\chardef\csname c\strippedcsname#1\endcsname=0
+ \def#2{\dowithevery#1}%
\fi\fi}
+\egroup
+
+%D The first \type {\outer} hack is needed to trick \TEX\
+%D into thinking that \type {\newtoks} is no outer macro,
+%D the second hack is needed due to some funny interaction
+%D between outer macros and \type {\if} at expansion time.
+
%D This one permits definitions like:
\newevery \everypar \EveryPar
@@ -742,25 +785,26 @@
\long\def\convertargument#1\to#2%
{\long\def\convertedargument{#1}%
- \dodoglobal\edef#2%
- {\convertedcommand\convertedargument}}
+ \dodoglobal\edef#2{\convertedcommand\convertedargument}}
\long\def\convertcommand#1\to#2%
- {\dodoglobal\edef#2%
- {\convertedcommand#1}}
+ {\dodoglobal\edef#2{\convertedcommand#1}}
\endTEX
%D In \ETEX\ we can use \type {\detokenize} and gain some
%D speed, but in general far less that 1\% for \type
%D {\convertargument} and nil for \type {\convertcommand}.
+%D This macro is more robust than the pure \TEX\ one,
+%D something I found out when primitives like \type
+%D {\jobname}.
\beginETEX \detokenize
-\def\convertargument#1\to#2%
+\long\def\convertargument#1\to#2%
{\dodoglobal\edef#2{\detokenize{#1}}}
-\def\convertcommand#1\to#2%
+\long\def\convertcommand#1\to#2%
{\@EA\dodoglobal\@EA\edef\@EA#2\@EA{\@EA\detokenize\@EA{#1}}}
\endETEX
@@ -777,6 +821,46 @@
%D The \type{-}, the delimiter \type{\\\\} and the the second
%D argument are completely redundant.
+% this does not work ok yet
+%
+% %D As said, the \TEX\ alternative fails on expanding primitives,
+% %D like in:
+% %D
+% %D \starttypen
+% %D \convertcommand\jobname\to\ascii
+% %D \stoptypen
+% %D
+% %D Because these primitives convert to themselves, we can use
+% %D the backslash as a signal to treat them different. At the
+% %D cost of slightly more overhead we can therefore define a
+% %D more robust alternative. The catcode trickery is needed to
+% %D get the backslash into the test as character (and not as
+% %D escape, letter or whatever code else).
+%
+% \beginTEX
+%
+% \let\dodoconvertargument\doconvertargument
+%
+% \bgroup
+% \catcode`\*=\@@escape
+% \catcode`\\=\@@other
+% *gdef*doconvertargument#1%
+% {*ifx#1\*else*expandafter*dodoconvertargument*fi#1}
+% *egroup
+%
+% \endTEX
+
+%D \macros
+%D {showvalue,showargument}
+%D
+%D A handy macro for testing purposes only, is the following:
+
+\def\showvalue#1%
+ {\expandafter\show\csname#1\endcsname}
+
+\def\showargument#1%
+ {\convertargument#1\to\ascii\show\ascii}
+
%D \macros
%D {doifmeaningelse}
%D
@@ -797,6 +881,20 @@
\ifx\!!stringa\!!stringb#3\else#4\fi}
%D \macros
+%D {doifsamestringselse}
+%D
+%D The next comparison macro converts the arguments into
+%D expanded strings. This command can be used to compare for
+%D instance \type {\jobname} with a name stored in a macro.
+
+\def\doifsamestringelse#1#2#3#4%
+ {\edef\!!stringa{#1}%
+ \edef\!!stringb{#2}%
+ \convertcommand\!!stringa\to\!!stringa
+ \convertcommand\!!stringb\to\!!stringb
+ \ifx\!!stringa\!!stringb#3\else#4\fi}
+
+%D \macros
%D {ExpandFirstAfter,ExpandSecondAfter,ExpandBothAfter}
%D
%D These three commands support expansion of arguments before
@@ -840,11 +938,6 @@
\edef\!!stringb{#3}%
\@EA#1\@EA{\@EA\!!stringa\@EA}\@EA{\!!stringb}}
-% \def\ExpandSecondAfter#1#2#3%
-% {\toks0={#2}%
-% \edef\!!stringa{#3}%
-% \@EA\@EA\@EA#1\@EA\@EA\@EA{\@EA\the\@EA\toks0\@EA}\@EA{\!!stringa}}
-
\def\ExpandBothAfter#1#2#3%
{\edef\!!stringa{#2}%
\edef\!!stringb{#3}%
@@ -1844,10 +1937,12 @@
\def\replaceincommalist#1#2% #1 = commalistelement #2 = position starts at 1
{\def\doreplaceincommalist##1%
{\ifnum\commalistcounter=#2\relax
- \ifnum\commalistcounter=1
- \let\newcommalist\newcommalistelement
- \else
- \@EA\@EA\@EA\def\@EA\@EA\@EA\newcommalist\@EA\@EA\@EA{\@EA\newcommalist\@EA,\newcommalistelement}%
+ \ifx\newcommalistelement\empty\else
+ \ifnum\commalistcounter=1
+ \let\newcommalist\newcommalistelement
+ \else
+ \@EA\@EA\@EA\def\@EA\@EA\@EA\newcommalist\@EA\@EA\@EA{\@EA\newcommalist\@EA,\newcommalistelement}%
+ \fi
\fi
\def\commalistelement{##1}%
\else
@@ -1992,17 +2087,32 @@
%D \pushmacro\macro
%D \popmacro\macro
%D \stoptypen
+%D
+%D Beware: global!
\def\@s@{@s@}
-\def\pushmacro#1% across groups !
+\def\globalpushmacro#1%
{\@EA\doglobal\@EA\increment\csname\@s@:\string#1\endcsname
\global\@EA\let\csname\csname\@s@:\string#1\endcsname:\string#1\endcsname#1}
-\def\popmacro#1%
+\def\globalpopmacro#1% \global\let
{\global\@EA\let\@EA#1\csname\csname\@s@:\string#1\endcsname:\string#1\endcsname
\@EA\doglobal\@EA\decrement\csname\@s@:\string#1\endcsname}
+% this one can be used to push a value over an \egroup
+
+\def\localpushmacro#1%
+ {\@EA\doglobal\@EA\increment\csname\@s@::\string#1\endcsname
+ \global\@EA\let\csname\csname\@s@::\string#1\endcsname::\string#1\endcsname#1}
+
+\def\localpopmacro#1% \local\let
+ {\@EA\let\@EA#1\csname\csname\@s@::\string#1\endcsname::\string#1\endcsname
+ \global\@EA\decrement\csname\@s@::\string#1\endcsname}
+
+\let\pushmacro\globalpushmacro
+\let\popmacro \globalpopmacro
+
%D \macros
%D {setlocalhsize}
%D
@@ -2024,7 +2134,7 @@
\def\complexsetlocalhsize[#1]% don't change !
{\localhsize=\hsize
- \advance\localhsize by -\parindent
+ % \advance\localhsize by -\parindent % changed anyway
\advance\localhsize by -\leftskip
\advance\localhsize by -\rightskip
\advance\localhsize by #1\relax}
@@ -2062,30 +2172,68 @@
%D The list of tokens may contain spaces, while \type{\\},
%D \type{{}} and \type{\ } are handled as space too.
+% \def\dodoprocesstokens%
+% {\ifx\next\lastcharacter
+% \after
+% \let\next=\relax
+% \else\ifx\next\bgroup
+% \def\next%
+% {\dowithnextbox
+% {\before\box\nextbox
+% \let\before=\between
+% \doprocesstokens}
+% \hbox\bgroup}%
+% \else
+% \expandafter\if\space\next
+% \before\white
+% \else
+% \before\next
+% \fi
+% \let\before=\between
+% \let\next=\doprocesstokens
+% \fi\fi
+% \next}
+%
+% \def\doprocesstokens% the space after = is essential
+% {\afterassignment\dodoprocesstokens\let\next= }
+%
+% \def\processtokens#1#2#3#4#5%
+% {\bgroup
+% \def\lastcharacter{\lastcharacter}%
+% \def\space{ }%
+% \let\\=\space
+% \def\before{#1}%
+% \def\between{#2}%
+% \def\after{#3}%
+% \def\white{#4}%
+% \doprocesstokens#5\lastcharacter
+% \egroup}
+
\def\dodoprocesstokens%
- {\ifx\next\lastcharacter
+ {\ifx\nextprocessedtoken\lastcharacter
\after
- \let\next=\relax
- \else\ifx\next\bgroup
- \def\next%
+ \let\nextprocessedtoken=\relax
+ \else\ifx\nextprocessedtoken\bgroup
+ \def\nextprocessedtoken%
{\dowithnextbox
- {\before\box\nextbox
- \let\before=\between
+ {\before{\box\nextbox}%
+ \let\before\between
\doprocesstokens}
\hbox\bgroup}%
\else
- \expandafter\if\space\next
- \before\white
+ \expandafter\if\space\nextprocessedtoken
+ \after\white
+ \let\before\savedbefore
\else
- \before\next
+ \before\nextprocessedtoken
+ \let\before\between
\fi
- \let\before=\between
- \let\next=\doprocesstokens
+ \let\nextprocessedtoken=\doprocesstokens
\fi\fi
- \next}
+ \nextprocessedtoken}
\def\doprocesstokens% the space after = is essential
- {\afterassignment\dodoprocesstokens\let\next= }
+ {\afterassignment\dodoprocesstokens\let\nextprocessedtoken= }
\def\processtokens#1#2#3#4#5%
{\bgroup
@@ -2096,6 +2244,7 @@
\def\between{#2}%
\def\after{#3}%
\def\white{#4}%
+ \let\savedbefore\before
\doprocesstokens#5\lastcharacter
\egroup}
@@ -2408,12 +2557,14 @@
%D
%D However, we want to handle all situations, like:
%D
-%D \starttypen
+%D \startbuffer
%D \processseparatedlist[{aap noot}] [ ]{\def\xxx} \show\xxx
%D \processseparatedlist[{aap} {noot}][ ]{\def\xxx} \show\xxx
%D \processseparatedlist[aap {noot}] [ ]{\def\xxx} \show\xxx
%D \processseparatedlist[aap noot] [ ]{\def\xxx} \show\xxx
-%D \stoptypen
+%D \stopbuffer
+%D
+%D \typebuffer \getbuffer
%D
%D Therefore we smuggle a \type {\relax} in front of the
%D argument, which we remove afterwards.
@@ -2435,6 +2586,41 @@
\def\processseparatedlist[%
{\doprocessseparatedlist\relax}
+%D \macros
+%D {processlist}
+%D
+%D An even more general list processing macro is the
+%D following one:
+%D
+%D \starttypen
+%D \processlist{beginsym}{endsym}{separator}\docommando list
+%D \stoptypen
+%D
+%D This one supports arbitrary open and close symbols as well
+%D as user defined separators.
+%D
+%D \starttypen
+%D \processlist(){=>}\docommando(a=>b=>c=>d)
+%D \stoptypen
+
+\def\processlist#1#2#3#4%
+ {\def\doprocesslist##1#2%
+ {\def\dodoprocesslist####1####2#3%
+ {\ifx#2####1%
+ \let\dodoprocesslist\relax
+ \else\ifx#2####2%
+ \let\dodoprocesslist\relax
+ \else\ifx\blankspace####2%
+ #4{####1}%
+ \else
+ #4{####1####2}%
+ \fi\fi\fi
+ \dodoprocesslist}%
+ \expandafter\dodoprocesslist\gobbleoneargument##1#3#2#3}%
+ \def\dodoprocesslist#1%
+ {\doprocesslist\relax}%
+ \dodoprocesslist}
+
% %D \macros
% %D {dohonorgroupedargument}
% %D
@@ -2468,24 +2654,26 @@
{\p!dodogetparameter[##1==\relax]}%
\processcommalist[#2]\p!dogetparameter}
-%D \macros
-%D {DoAfterFi,DoAfterFiFi}
-%D
-%D Sometimes \type{\fi}'s can get into the way. We can reach
-%D over such a troublemaker with:
-%D
-%D \starttypen
-%D \DoAfterFi{some commands}
-%D \DoAfterFiFi{some commands}
-%D \stoptypen
-%D
-%D It saves us a \type{\next} construction. Skipping
-%D \type{\else...\fi} is more tricky, so this one is not
-%D provided.
-
-\def\DoAfterFi#1\fi{\fi#1}
-\def\DoAfterFiFi#1\fi#2\fi{\fi\fi#1}
-
+% too ugly
+%
+% %D \macros
+% %D {DoAfterFi,DoAfterFiFi}
+% %D
+% %D Sometimes \type{\fi}'s can get into the way. We can reach
+% %D over such a troublemaker with:
+% %D
+% %D \starttypen
+% %D \DoAfterFi{some commands}
+% %D \DoAfterFiFi{some commands}
+% %D \stoptypen
+% %D
+% %D It saves us a \type{\next} construction. Skipping
+% %D \type{\else...\fi} is more tricky, so this one is not
+% %D provided.
+%
+% \def\DoAfterFi#1\fi{\fi#1}
+% \def\DoAfterFiFi#1\fi#2\fi{\fi\fi#1}
+
%D \macros
%D {untextargument
%D untexcommand}
@@ -2577,7 +2765,6 @@
\def\dontleavehmode{\ifmmode\else$ $\fi}
-
%D \macros
%D {uppercasestring,lowercasestring}
%D
@@ -2636,7 +2823,7 @@
%D \starttypen
%D \def\dodohandletokens%
%D {\ifx\next\end \else
-%D \docommando\next
+%D \docommando{\next}%
%D \expandafter\dohandletokens
%D \fi}
%D
@@ -2725,22 +2912,14 @@
%D
%D \unprotect\haalbuffer[next]\protect
%D
-%D That's why we finally end up with a macro that looks ahead
-%D by using an assignment, this time by using
-%D \type{\futurelet}, and grabbing an argument as well. That
-%D way we can handle both the sentinal and the blank space.
-
-\def\dodohandletokens#1%
- {\ifx\next\blankspace
- \dododohandletokens{ }%
- \fi
- \ifx#1\end \else
- \dododohandletokens{#1}%
- \expandafter\dohandletokens
- \fi}
+%D That's why we finally end up with a macro that looks
+%D ahead by using an assignment, this time by using \type
+%D {\futurelet}, and grabbing an argument as well. That
+%D way we can handle the sentinal, a blank space and grouped
+%D tokens.
\def\dohandletokens%
- {\futurelet\next\dodohandletokens}
+ {\futurelet\nexthandledtoken\dodohandletokens}
\long\def\handletokens#1\with#2%
{\global\let\dododohandletokens=#2%
@@ -2750,20 +2929,72 @@
%D use in alignments, I decided to use another placeholder, one
%D that is not sensitive to the global assignment.
-%D So our example finaly shows up as:
+%D This alternatives does not handle grouped tokens well, so
+%D next we had (for a short moment):
+%D
+%D \starttypen
+%D \def\dodohandletokens#1%
+%D {\ifx\nexthandledtoken\blankspace
+%D \dododohandletokens{ }%
+%D \fi
+%D \ifx#1\end \else
+%D \dododohandletokens{#1}%
+%D \expandafter\dohandletokens
+%D \fi}
+%D \stoptypen
+%D
+%D This one failed on a trailing space, something we
+%D encounter in \JAVASCRIPT\ cleaning.
+%D
+%D \starttypen
+%D \def\dodohandletokens#1%
+%D {\ifx\nexthandledtoken\blankspace
+%D \dododohandletokens{ }%
+%D \fi
+%D \ifx\nexthandledtoken\end \else
+%D \dododohandletokens{#1}%
+%D \expandafter\dohandletokens
+%D \fi}
+%D \stoptypen
+%D
+%D So, now we have:
+
+\def\dodohandletokens%
+ {\ifx\nexthandledtoken\blankspace
+ \def\next * {\dododohandletokens{ }\dohandletokens}%
+ \else\ifx\nexthandledtoken\end
+ \let\next\gobbletwoarguments
+ \else
+ \long\def\next *##1{\dododohandletokens{##1}\dohandletokens}%
+ \fi\fi
+ \next *}
+
+%D This macro is tested on:
+%D
+%D \def\xxx#1{[#1]}
+%D
+%D \startregels
+%D \handletokens abc\with\xxx
+%D \handletokens a b c\with\xxx
+%D \handletokens a b c\with\xxx
+%D \handletokens a{bc}d\with\xxx
+%D \handletokens a\space bc \with\xxx
+%D \stopregels
+%D
+%D And our previous example shows up as:
%D
%D \haalbuffer[example]
-% %D \macros
-% %D {iftrialtypesetting}
-% %D
-% %D The next boolean is at first sight a strange one. Sometimes
-% %D one does a trial typesetting run, for instance to determine
-% %D dimensions. Some mechanisms, like object inclusion, can fail
-% %D on such trials. Temporary setting the next boolean to true,
-% %D helps a lot.
-%
-% \newif\iftrialtypesetting
+%D \macros
+%D {iftrialtypesetting}
+%D
+%D The next boolean is at first sight a strange one. Sometimes
+%D one does a trial typesetting run, for instance to determine
+%D dimensions. Some mechanisms, like object inclusion, can fail
+%D on such trials. Temporary setting the next boolean to true,
+%D helps a lot.
+
+\newif\iftrialtypesetting
%D \macros
%D {startlocal, startglobal}
@@ -2983,12 +3214,12 @@
%D used to select arguments. Their names explain their
%D functionality.
-\def\firstofoneargument #1{#1}
-\def\firstoftwoarguments #1#2{#1}
-\def\firstofthreearguments #1#2#3{#1}
-\def\secondoftwoarguments #1#2{#2}
-\def\secondofthreearguments#1#2#3{#2}
-\def\thirdofthreearguments #1#2#3{#3}
+\long\def\firstofoneargument #1{#1}
+\long\def\firstoftwoarguments #1#2{#1}
+\long\def\firstofthreearguments #1#2#3{#1}
+\long\def\secondoftwoarguments #1#2{#2}
+\long\def\secondofthreearguments#1#2#3{#2}
+\long\def\thirdofthreearguments #1#2#3{#3}
%D \macros
%D {@saveprimitive}
@@ -3028,13 +3259,6 @@
%D In this macro, the message only shows up when the debugging
%D is turned on.
-%D \macros
-%D {emptytoks}
-%D
-%D Constant empty token register, analogous to \type {\empty}.
-
-\newtoks\emptytoks
-
%D \macros
%D {@True, @False, @Not, @And}
%D
diff --git a/tex/context/base/syst-gen.tex b/tex/context/base/syst-gen.tex
index 2d42c944d..5896bef8f 100644
--- a/tex/context/base/syst-gen.tex
+++ b/tex/context/base/syst-gen.tex
@@ -240,7 +240,7 @@
\newmuskip \scratchmuskip
\newbox \scratchbox
\newtoks \scratchtoks
-\newif \ifdone
+\newif \ifdone
%D \macros
%D {ifCONTEXT}
@@ -320,6 +320,26 @@
\def\expanded#1%
{\edef\@@expanded{\noexpand#1}\@@expanded}
+%D \macros
+%D {expandoneargafter,expandtwoargsafter}
+%D
+%D These two commands make macros more readable by hiding a
+%D lot of \type {\expandafter}'s. They expand the arguments
+%D after the first command.
+%D
+%D \starttypen
+%D \expandoneargafter \command{\abc}
+%D \expandtwoargsafter\command{\abc}{\def}
+%D \stoptypen
+%D
+%D These commands expect the arguments to be macros.
+
+\def\expandoneargafter#1#2%
+ {\@EA#1\@EA{#2}}
+
+\def\expandtwoargsafter#1#2#3%
+ {\@EA\@EA\@EA#1\@EA\@EA\@EA{\@EA#2\@EA}\@EA{#3}}
+
%D \macros
%D {gobbleoneargument,gobble...arguments}
%D
@@ -465,16 +485,15 @@
\def\resetvalue#1%
{\expandafter\let\csname#1\endcsname\empty}
-%D \macros
-%D {showvalue,showargument}
+%D \macros
+%D {globallet}
%D
-%D A handy macro for testing purposes only, is the following:
-
-\def\showvalue#1%
- {\expandafter\show\csname#1\endcsname}
+%D In \CONTEXT\ of May 2000 using \type {\globallet}
+%D instead of the two tokens will save us some
+%D $300\times4=1200$ bytes of format file on a 32~bit
+%D system. So:
-\def\showargument#1%
- {\convertargument#1\to\ascii\show\ascii}
+\def\globallet{\global\let}
%D \macros
%D {donottest,unexpanded}
@@ -493,7 +512,7 @@
%D \stoptypen
%D
%D This double definition can be made transparant by using
-%D \type{\protecte}, as in:
+%D \type{\unexpanded}, as in:
%D
%D \starttypen
%D \unexpanded\def\somecommand{... ... ...}
@@ -527,7 +546,7 @@
%D therefore explictly gobble \type{#1}.
%D \macros
-%D {honorunexpanded}
+%D {honorunexpanded,forceunexpanded}
%D
%D The fact that many macros have the same prefix, could have
%D a negative impact on searching in the hash table. Because
@@ -549,7 +568,6 @@
\def\dosetunexpanded#1#2%
{\@EA#1\@EA{\@EA#2\@EA}%
\@EA{\@EA\donottest\csname\s!do\@EA\string\csname#2\endcsname\endcsname}%
-% \@EA#1{\s!do\@EA\string\csname#2\endcsname}}
\@EA#1\@EA{\@EA\s!do\@EA\string\csname#2\endcsname}}
\def\docomunexpanded#1#2%
@@ -565,15 +583,24 @@
\fi#1}%
\futurelet\next\dounexpanded}
-\def\honorunexpanded%
+\def\honorunexpanded% for writing to a file or message
{\def\donottest##1{\expandafter\gobblethreearguments\string##1}}
+\def\forceunexpanded% for preventing expansion in \xdef
+ {\def\donottest##1%
+ {\expandafter\noexpand\csname\expandafter\gobblefourarguments\string##1\endcsname}}
+
+\def\resetunexpanded%
+ {\let\donottest\doprocesstest}
+
\endTEX
\beginETEX \protected
\let \unexpanded \normalprotected
\let \honorunexpanded \relax
+\let \forceunexpanded \relax
+\let \resetunexpanded \relax
\endETEX
@@ -1296,14 +1323,14 @@
%D \startbuffer
%D \def\dosomething#1{(#1)}
%D
-%D \processcommalist [\hbox{$a,b,c,d,e,f$}] \dosomething \par
-%D \processcommalist [{a,b,c,d,e,f}] \dosomething \par
-%D \processcommalist [{a,b,c},d,e,f] \dosomething \par
-%D \processcommalist [a,b,{c,d,e},f] \dosomething \par
-%D \processcommalist [a{b,c},d,e,f] \dosomething \par
-%D \processcommalist [{a,b}c,d,e,f] \dosomething \par
-%D \processcommalist [] \dosomething \par
-%D \processcommalist [{[}] \dosomething \par
+%D 1: \processcommalist [\hbox{$a,b,c,d,e,f$}] \dosomething \par
+%D 2: \processcommalist [{a,b,c,d,e,f}] \dosomething \par
+%D 3: \processcommalist [{a,b,c},d,e,f] \dosomething \par
+%D 4: \processcommalist [a,b,{c,d,e},f] \dosomething \par
+%D 5: \processcommalist [a{b,c},d,e,f] \dosomething \par
+%D 6: \processcommalist [{a,b}c,d,e,f] \dosomething \par
+%D 7: \processcommalist [] \dosomething \par
+%D 8: \processcommalist [{[}] \dosomething \par
%D \stopbuffer
%D
%D \typebuffer
@@ -1439,11 +1466,14 @@
%D use of this macro has its limits.
% why the \toks0? still needed?
+%
+% \def\processcommacommand[#1]%
+% {\edef\commacommand{#1}%
+% \toks0=\expandafter{\expandafter[\commacommand]}%
+% \expandafter\processcommalist\the\toks0 }
\def\processcommacommand[#1]%
- {\edef\commacommand{#1}%
- \toks0=\expandafter{\expandafter[\commacommand]}%
- \expandafter\processcommalist\the\toks0 }
+ {\expanded{\processcommalist[#1]}}
%D The argument to \type{\command} is not delimited. Because
%D we often use \type{[]} as delimiters, we also have:
@@ -1582,8 +1612,8 @@
%D \advance\processlevel by -1\relax}}
%D \stoptypen
%D
-%D The gain of speed in the (again) next implementation is around
-%D 20\%, depending on the application.
+%D The gain of speed in the (again) next implementation is
+%D around 20\%, depending on the application.
\newcount\processlevel
@@ -1854,12 +1884,6 @@
%D run time, simply because the less tokens we pass, the faster
%D \TEX\ runs. So finally the definition became:
-\def\p!doifinstringelse#1#2%
- {\def\pp!doifinstringelse##1#1##2##3\war%
- %{\csname\if##2@iffalse\else iftrue\fi\endcsname}%
- {\csname if\if##2@fals\else tru\fi e\endcsname}%
- \expanded{\pp!doifinstringelse#2#1@@\noexpand\war}} % expand #2 here
-
\long\def\doifinstringelse#1#2#3#4%
{\edef\@@@instring{#1}% expand #1 here
\@EA\p!doifinstringelse\@EA{\@@@instring}{#2}%
@@ -1868,6 +1892,24 @@
#4%
\fi}
+\beginTEX
+
+\def\p!doifinstringelse#1#2%
+ {\def\pp!doifinstringelse##1#1##2##3\war%
+ {\csname if\if##2@fals\else tru\fi e\endcsname}%
+ \expanded{\pp!doifinstringelse#2#1@@\noexpand\war}} % expand #2 here
+
+\endTEX
+
+\beginETEX \unless
+
+\def\p!doifinstringelse#1#2%
+ {\def\pp!doifinstringelse##1#1##2##3\war%
+ {\unless\if##2@}%
+ \expanded{\pp!doifinstringelse#2#1@@\noexpand\war}} % expand #2 here
+
+\endETEX
+
%D The next alternative proved to be upto twice as fast on
%D tasks like checking reserved words in pretty verbatim
%D typesetting! This is mainly due to the fact that passing
@@ -2009,7 +2051,7 @@
\def\rawprocessaction[#1]#2[#3]%
{\edef\!!stringa{#1}%
- \edef\!!stringb{undefined}%
+ \edef\!!stringb{undefined}% better \!!undefined
\let\!!processaction\!!stringb
\ifx\!!stringa\empty
\@EA\p!rawprocessaction\@EA[\s!default][#3]%
@@ -2024,6 +2066,13 @@
\!!processaction
\fi}
+% not needed
+%
+% \def\rawprocessallactionsinset[#1]#2[#3]%
+% {\def\docommando##1%
+% {\rawprocessaction[##1][#3]}%
+% \processcommalist[#1]\docommando}
+
%D When we process the list \type{a,b,c,d,e}, the raw routine
%D takes over 30\% less time, when we feed $20+$ character
%D strings we gain about 20\%. Alternatives which use
@@ -2412,6 +2461,11 @@
\toks0=\expandafter{\expandafter[\commacommand]}%
\expandafter\getcommalistsize\the\toks0 }
+% to be tested first
+%
+% \def\getcommacommandsize[#1]%
+% {\expanded{\getcommalistsize[#1]}}
+
% \def\p!dogetfromcommalist#1%
% {\advance\commalistcounter -1
% \ifcase\commalistcounter
@@ -2431,10 +2485,13 @@
\commalistcounter=#3\relax
\processcommalist[#1]\p!dogetfromcommalist}
-\def\getfromcommacommand[#1]% why so complicated, still needed?
- {\edef\commacommand{#1}%
- \toks0=\expandafter{\expandafter[\commacommand]}%
- \expandafter\getfromcommalist\the\toks0 }
+% \def\getfromcommacommand[#1]% why so complicated, still needed?
+% {\edef\commacommand{#1}%
+% \toks0=\expandafter{\expandafter[\commacommand]}%
+% \expandafter\getfromcommalist\the\toks0 }
+
+\def\getfromcommacommand[#1]%
+ {\expanded{\getfromcommalist[#1]}}
%D Because 0, 1 and~2 are often asked for, we optimize this
%D macro for those cases. The indirect call however slows
@@ -2622,7 +2679,7 @@
\chardef\noexpectedarguments=0
\chardef\expectedarguments =0
-\def\dogetargument#1#2#3#4% redefined in mult-ini
+\long\def\dogetargument#1#2#3#4% redefined in mult-ini
{\doifnextcharelse{#1}
{\let\expectedarguments\noexpectedarguments
#3\dodogetargument}
@@ -3066,45 +3123,92 @@
%D \macros
%D {dosinglegroupempty,dodoublegroupempty,dotriplegroupempty,
-%D doquadruplegroupempty}
+%D doquadruplegroupempty, doquintuplegroupempty}
%D
%D We've already seen some commands that take care of
%D optional arguments between \type{[]}. The next two commands
%D handle the ones with \type{{}}. They are called as:
%D
%D \starttypen
-%D \dosinglegroupempty \IneedONEargument
-%D \dodoublegroupempty \IneedTWOarguments
-%D \dotriplegroupempty \IneedTHREEarguments
-%D \dotriplegroupempty \IneedFOURarguments
+%D \dosinglegroupempty \ineedONEargument
+%D \dodoublegroupempty \ineedTWOarguments
+%D \dotriplegroupempty \ineedTHREEarguments
+%D \doquadruplegroupempty \ineedFOURarguments
+%D \doquintuplegroupempty \ineedFIVEarguments
%D \stoptypen
%D
-%D where \type{\IneedONEargument} takes one and the others
+%D where \type{\ineedONEargument} takes one and the others
%D two and three arguments. These macro's were first needed in
%D \PPCHTEX.
+%D
+%D \starttypen
+%D \def\dogetgroupargument#1#2% redefined in mult-ini
+%D {\def\nextnextargument%
+%D {\ifx\nextargument\bgroup
+%D \let\expectedarguments\noexpectedarguments
+%D \def\nextargument{#1\dodogetargument}%
+%D %\else\ifx\nextargument\lineending % this can be an option
+%D % \def\nextargument{\bgroup\def\\ {\egroup\dogetgroupargument#1#2}\\}%
+%D %\else\ifx\nextargument\blankspace % but it may never be default
+%D % \def\nextargument{\bgroup\def\\ {\egroup\dogetgroupargument#1#2}\\}%
+%D \else
+%D \ifnum\expectedarguments>\noexpectedarguments
+%D \writestatus
+%D {setup}
+%D {\the\expectedarguments\space argument(s) expected
+%D in line \the\inputlineno\space}%
+%D \fi
+%D \let\expectedarguments\noexpectedarguments
+%D \def\nextargument{#2\dodogetargument{}}%
+%D \fi%\fi\fi % so let's get rid of it
+%D \nextargument}%
+%D \futurelet\nextargument\nextnextargument}
+%D \stoptypen
+%D
+%D In order to catch \type {\nextargument}'s that expand to
+%D \type {\if} and friends, in practice we will use a
+%D slightly more complicated macro.
+
+\let\normalif \if
+\let\normalifx \ifx
+\let\normalifnum \ifnum
+\let\normalifcase \ifcase
+\let\normalor \or
+\let\normalelse \else
+\let\normalfi \fi
-\def\dogetgroupargument#1#2% redefined in mult-ini
- {\def\nextnextargument%
- {\ifx\nextargument\bgroup
+\def\beginrobusttest
+ {\bgroup
+ \let\if\relax\let\ifx\relax\let\ifnum\relax\let\ifcase\relax
+ \let\or\relax\let\else\relax\let\fi\relax}
+
+\let\endrobusttest\egroup
+
+\def\dogetgroupargument#1#2%
+ {\def\nextnextargument%
+ {\normalifx\nextargument\bgroup
+ \endrobusttest
\let\expectedarguments\noexpectedarguments
\def\nextargument{#1\dodogetargument}%
- %\else\ifx\nextargument\lineending % this can be an option
- % \def\nextargument{\bgroup\def\\ {\egroup\dogetgroupargument#1#2}\\}%
- %\else\ifx\nextargument\blankspace % but it may never be default
- % \def\nextargument{\bgroup\def\\ {\egroup\dogetgroupargument#1#2}\\}%
- \else
+ %\normalelse\normalifx\nextargument\lineending % this can be an option
+ % \def\nextargument{\bgroup\def\\ {\egroup\dogetgroupargument#1#2}\\}%
+ %\normalelse\normalifx\nextargument\blankspace % but may never be default
+ % \def\nextargument{\bgroup\def\\ {\egroup\dogetgroupargument#1#2}\\}%
+ \normalelse
+ \endrobusttest
\ifnum\expectedarguments>\noexpectedarguments
\writestatus
- {setup}
- {\the\expectedarguments\space argument(s) expected
- in line \the\inputlineno\space}%
+ {setup}
+ {\the\expectedarguments\space argument(s) expected
+ in line \the\inputlineno\space}%
\fi
\let\expectedarguments\noexpectedarguments
\def\nextargument{#2\dodogetargument{}}%
- \fi%\fi\fi % so let's get rid of it
+ \normalfi%\normalfi\normalfi % so let's get rid of it
\nextargument}%
+ \beginrobusttest
\futurelet\nextargument\nextnextargument}
-
+
\def\dosinglegroupempty#1%
{\def\dodogetargument%
{#1}%
@@ -3137,7 +3241,20 @@
\dogetgroupargument\secondargumenttrue\secondargumentfalse}%
\dogetgroupargument\firstargumenttrue\firstargumentfalse}
-%D These macros explictly take care of spaces, which means
+\def\doquintuplegroupempty#1%
+ {\def\dodogetargument##1%
+ {\def\dodogetargument####1%
+ {\def\dodogetargument########1%
+ {\def\dodogetargument################1%
+ {\def\dodogetargument%
+ {#1{##1}{####1}{########1}{################1}}%
+ \dogetgroupargument\fifthargumenttrue\fifthargumentfalse}%
+ \dogetgroupargument\fourthargumenttrue\fourthargumentfalse}%
+ \dogetgroupargument\thirdargumenttrue\thirdargumentfalse}%
+ \dogetgroupargument\secondargumenttrue\secondargumentfalse}%
+ \dogetgroupargument\firstargumenttrue\firstargumentfalse}
+
+%D These macros can explictly take care of spaces, which means
%D that the next definition and calls are valid:
%D
%D \starttypen
@@ -3220,6 +3337,7 @@
% \egroup}
\chardef\statuswidth=15
+\newcount\statuscounter
\def\writestring%
{\immediate\write16}
@@ -3228,30 +3346,37 @@
{\writestring{}}
\def\dosplitstatus#1%
- {\advance\scratchcounter 1
- \ifnum\scratchcounter<\statuswidth
- \edef\messagecontentA{\messagecontentA#1}%
- \expandafter\dosplitstatus
- \else
+ {\advance\statuscounter -1
+ \ifcase\statuscounter
\expandafter\nosplitstatus
+ \else
+ \@EA\scratchtoks\@EA{\the\scratchtoks#1}%
+ \expandafter\dosplitstatus
\fi}
\def\nosplitstatus#1\end%
{}
-\gdef\writestatus#1#2%
+\def\writestatus#1#2%
{\bgroup
- \let\messagecontentA\empty
- \edef\messagecontentB{#2}% maybe it's \the\scratchcounter
- \scratchcounter=0
+ \scratchtoks\emptytoks
+ \statuscounter=\statuswidth
\expandafter\dosplitstatus#1%
\space\space\space\space\space\space\space
\space\space\space\space\space\space\space
\space\space\space\space\space\space\end
- \writestring{\messagecontentA\space:\space\messagecontentB}%
+ \expanded{\writestring{\the\scratchtoks\space:\space#2}}%
\egroup}
%D \macros
+%D {emptytoks}
+%D
+%D For this we need an empty token register, analogous
+%D to \type {\empty}.
+
+\newtoks\emptytoks
+
+%D \macros
%D {debuggerinfo}
%D
%D For debugging purposes we can enhance macros with the
diff --git a/tex/context/base/syst-new.tex b/tex/context/base/syst-new.tex
index 419dcbe97..6c321f5e5 100644
--- a/tex/context/base/syst-new.tex
+++ b/tex/context/base/syst-new.tex
@@ -62,6 +62,14 @@
\def\doifnonzeropositiveelse#1%
{\bgroup\afterassignment\dodoifnonzeropositiveelse\scratchcounter=0#1\relax\empty\end}
+% here ?
+
+\def\dosetrawvalue#1#2#3%
+ {\setvalue{#1#2}{#3}}
+
+\def\getrawparameters%
+ {\dogetparameters\dosetrawvalue}
+
\def\splitskip#1%
{\scratchskip=0pt plus 1pt minus 1pt
\advance\scratchskip by #1
@@ -220,6 +228,35 @@
{\adddimenregister#1\to\scratchdimen
\edef#2{\the\scratchdimen}}
+%D \macros
+%D {freezedimenmacro}
+%D
+%D This macro is use as:
+%D
+%D \starttypen
+%D \freezedimenmacro\linkermargeafstand
+%D \stoptypen
+
+\def\freezedimenmacro#1%
+ {\scratchdimen#1\edef#1{\the\scratchdimen}}
+
+% \newcount\rawrecursecounter
+%
+% \def\rawrecurselevel{\the\rawrecursecounter}%
+%
+% \def\dorawrecurse#1#2%
+% {\rawrecursecounter=1\relax
+% \let\oldrecurselevel\recurselevel
+% \let\recurselevel\rawrecurselevel
+% \def\dodorawrecurse%
+% {\ifnum\rawrecursecounter>#1\relax
+% \let\recurselevel\oldrecurselevel
+% \else
+% #2\advance\rawrecursecounter by 1
+% \expandafter\dodorawrecurse
+% \fi}%
+% \dodorawrecurse}
+
\protect
\endinput
diff --git a/tex/context/base/syst-tex.tex b/tex/context/base/syst-tex.tex
index 5d0bc72c6..b231c7051 100644
--- a/tex/context/base/syst-tex.tex
+++ b/tex/context/base/syst-tex.tex
@@ -157,7 +157,8 @@
\gdef\dobeginETEX#1
{\egroup\immediate\write16%
- {line \the\inputlineno: inserting E-TEX code \detokenize{#1}}}
+ %{line \the\inputlineno: inserting E-TEX code \detokenize{#1}}}
+ {system (E-TEX) : [line \the\inputlineno] \detokenize{#1}}}
\global\let\endETEX\relax
@@ -168,29 +169,29 @@
%D Well, this redefintion of \type {\input} fails on \ETEX,
%D because of some \type {\cs\fi} constructs. So now we use:
-\beginETEX etex.src etexdefs.lib
-
- \def\input#1%
- {\bgroup
- \skipmessage{\string\input}%
- \expandafter\ifx\expandafter#1\csname l@ngdefnfile\endcsname
- \let\input\egroup
- \else
- \def\input##1 {\egroup}%
- \fi
- \input}
-
- \normalinput etex.src \relax
- \normalinput etexdefs.lib \relax
-
- \let\fmtversion\normalfmtversion
-
- \savinghyphcodes=1
-
-\endETEX
-
-\let\normalprotected = \protected
-\let\normalunexpanded = \unexpanded
+% \beginETEX etex.src etexdefs.lib
+%
+% \def\input#1%
+% {\bgroup
+% \skipmessage{\string\input}%
+% \expandafter\ifx\expandafter#1\csname l@ngdefnfile\endcsname
+% \let\input\egroup
+% \else
+% \def\input##1 {\egroup}%
+% \fi
+% \input}
+%
+% \normalinput etex.src \relax
+% \normalinput etexdefs.lib \relax
+%
+% \let\fmtversion\normalfmtversion
+%
+% \savinghyphcodes=1
+%
+% \endETEX
+%
+% \let\normalprotected = \protected
+% \let\normalunexpanded = \unexpanded
%D We restore some redefined primitives to their old meaning.
@@ -221,6 +222,10 @@
\def\wlog#1{}
+% \let\normalwlog\wlog
+%
+% \def\wlog#1{\normalwlog{system (\string\wlog) : #1}}
+
%D To prevent clashes, we slightly redefine the phantom
%D macros: we let them hide their behaviour by grouping.
diff --git a/tex/context/base/thrd-ran.tex b/tex/context/base/thrd-ran.tex
index ee3a7f6ac..24898df51 100644
--- a/tex/context/base/thrd-ran.tex
+++ b/tex/context/base/thrd-ran.tex
@@ -1,3 +1,7 @@
+% Since we cannot be sure that this file is available at any
+% system, we have copied the original in this file. These
+% macros are encapsulates and extended in supp-ran.tex.
+
% RANDOM.TEX v.1 (Donald Arseneau)
% Generating "random" numbers in TeX.
%
diff --git a/tex/context/base/thrd-tab.tex b/tex/context/base/thrd-tab.tex
index 1ddb11c55..d64d19436 100644
--- a/tex/context/base/thrd-tab.tex
+++ b/tex/context/base/thrd-tab.tex
@@ -1,3 +1,11 @@
+% Since this file is not available in every distribution, we
+% have copied the original in this file. The manuals to
+% Wichura's PiCTeX and TaBlE packages are not available on
+% line and are distributed by respectively the TeX Users Group
+% and Personal TeX Inc. Many macros of TaBlE are overloaded
+% and/or extended in core-tab.tex. The extensions concern
+% splitting over pages, color and consistent spacing.
+
% TABLE 1.0
% Copyright Michael J. Wichura August 1988
@@ -6,8 +14,6 @@
%% \input eight
%% \font\csc=cmcsc10
-
-
% The TABLE macros are divided into sections, roughly according to
% function:
diff --git a/tex/context/base/typo-ini.tex b/tex/context/base/typo-ini.tex
new file mode 100644
index 000000000..f6f3e88f9
--- /dev/null
+++ b/tex/context/base/typo-ini.tex
@@ -0,0 +1,40 @@
+%D \module
+%D [ file=typo-ini,
+%D version=2000.16.09,
+%D title=\CONTEXT\ Typographic Macros,
+%D subtitle=Initialization,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Since \CONTEXT\ is dealing with typographics, isn't
+%D September 2000 a bit late to start writing this module? It
+%D may seem so, but since more and more languages are
+%D supported, we think it is time to isolate language specific
+%D typographic extensions in modules. The first language that
+%D demands this is Chinese, and more will follow.
+
+\writestatus{loading}{Context Typographic Macros (ini)}
+
+\unprotect
+
+%D \macros
+%D {ifvertical}
+%D
+%D The following switch can be used to signal macros that they
+%D should adapt their behaviour.
+
+\newif\ifvertical
+
+%D \macros
+%D {vhbox}
+%D
+%D A stupid but useful macro.
+
+\def\vhbox{\ifvertical\vbox\else\hbox\fi}
+
+\protect \endinput
diff --git a/tex/context/base/verb-eif.tex b/tex/context/base/verb-eif.tex
new file mode 100644
index 000000000..16ee611e1
--- /dev/null
+++ b/tex/context/base/verb-eif.tex
@@ -0,0 +1,211 @@
+%D \module
+%D [ file=verb-eif,
+%D version=2000.08.23,
+%D title=\CONTEXT\ Verbatim Macros,
+%D subtitle=Pretty Eiffel Verbatim,
+%D author={Berend de Boer \& Hans Hagen},
+%D date=\currentdate,
+%D copyright={Berend de Boer \& Hans Hagen}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% This module will be cleaned up a bit in the process of more
+% flexible verbatim options.
+
+\writestatus{loading}{Context Support Macros / Pretty EIFFEL Verbatim}
+
+%D \startbuffer
+%D \startEIFFEL
+%D class TEST
+%D
+%D creation
+%D make
+%D
+%D feature -- creation
+%D
+%D make is
+%D do
+%D print ("hello world")
+%D end
+%D
+%D end
+%D \stopEIFFEL
+%D \stopbuffer
+%D
+%D
+%D If a variable in a comment is quoted with `..', it is typeset
+%D as a variable (common Eiffel convention for pretty typesetters):
+%D
+%D \startbuffer
+%D \startEIFFEL
+%D class TEST
+%D
+%D feature
+%D
+%D say (something: STRING) is
+%D -- say `something' to stdout
+%D do
+%D print (something)
+%D end
+%D
+%D end -- class TEST
+%D \stopEIFFEL
+%D \stopbuffer
+%D
+%D
+%D Recommended, OOSC2 style setting is:
+%D
+%D \setuptyping
+%D [EIFFEL]
+%D [margin=1em,palet=,color=blue,style=\it,icommand=\bf,ccommand=\tf]
+%D
+
+%D We borrow most of the macros from the \PERL\ driver.
+
+\ifx\undefined\setupprettyPLtype \input verb-pl \relax \fi
+
+\unprotect
+
+%D \EIFFEL\ has only the one line comment sequence \type{--}.
+
+\gdef\EIFsetspecials%
+ {\PLsetspecials
+ \setpretty`\#=32
+ \setpretty`\{=33 \setpretty`\}=33
+ \setpretty`\[=33 \setpretty`\]=33 \setpretty`\(=33 \setpretty`\)=33
+ \setpretty`\;=33 \setpretty`\:=33
+ \setpretty`\!=33 \setpretty`\?=33
+ \setpretty`\==33 \setpretty`\~=33 \setpretty`\<=33 \setpretty`\>=33
+ \setpretty`\-=33 \setpretty`\+=33 \setpretty`\/=33 \setpretty`\*=33
+ \setpretty`\^=33
+ \setpretty`\%=41 \setpretty`\-=45
+ \setpretty`\`=81 \setpretty`\'=82 }
+
+\gdef\EIFsethandlers%
+ {\PLsethandlers
+ \installprettyhandler 33 \EIFtypesymbol
+ \installprettyhandler 45 \EIFtypefourfive
+ \installprettyhandler 81 \EIFtypeeightone
+ \installprettyhandler 82 \EIFtypeeighttwo
+ \installprettyhandler 90 \EIFtypenine }
+
+\gdef\EIFsetcontrols%
+ {\PLsetcontrols
+ \def\flushrestofverbatimline%
+ {\endPLtypesix
+ \inPLcommentfalse
+ \verbatimfont
+ \PLverbosefalse
+ \PLverboseskipped=0}}
+
+\gdef\EIFsetvariables
+ {\PLsetvariables}
+
+\gdef\setupprettyEIFtype%
+ {\def\prettyidentifier{EIF}%
+ \let\PLidentifiers=\EIFidentifiers
+ \let\PLvariables=\EIFvariables
+ \EIFsetvariables
+ \EIFsetcontrols
+ \EIFsethandlers
+ \EIFsetspecials
+ \PLsetdiagnostics}
+
+% symbols should appear in roman
+
+\gdef\EIFtypesymbol#1%
+ {\endPLtypesix
+ \ifinPLcomment
+ \getpretty{#1}%
+ \else
+ {\prettynaturalfont\/%
+ \beginofpretty[\!!prettythree]\getpretty{#1}\endofpretty}%
+ \fi}
+
+% recognize comments
+
+\gdef\EIFtypefourfive%
+ {\handlenextnextpretty\doEIFtypefourfive\PLtypefourtwo}
+
+\gdef\doEIFtypefourfive#1#2%
+ {\endPLtypesix
+ \getprettydata{#2}%
+ \ifnum\prettytype=45
+ \let\next=\dodoEIFtypefourfive
+ \else
+ \let\next=\PLtypefourtwo
+ \fi
+ \next{#1}#2}
+
+\gdef\dodoEIFtypefourfive% #1%
+ {\endPLtypesix
+ \handlenextnextpretty\dododoEIFtypefourfive\dodododoPLtypefourfive}
+
+\gdef\dododoEIFtypefourfive%
+ {\ifnewpretty\expandafter\handlenewpretty\fi\dodododoEIFtypefourfive}
+
+\gdef\dodododoEIFtypefourfive#1#2%
+ {\ifinPLcomment
+ \getpretties{#1}{#2}%
+ \else
+ \ifinPLdouble
+ \getpretties{#1}{#2}%
+ \else
+ \global\inPLcommenttrue
+ \PLverbosecorrection
+ \def\next{\beginofpretty[\!!prettyone]\getpretties{#1}{#2}\endofpretty\prettynaturalfont}%
+ \expandafter\next
+ \fi
+ \fi}
+
+% recognize `name' in comments and format them like variables
+
+\gdef\EIFtypeeightone#1%
+ {\endPLtypesix
+ \ifinPLcomment
+ \verbatimfont
+ \else
+ \getpretty{#1}%
+ \fi}
+
+\gdef\EIFtypeeighttwo#1%
+ {\endPLtypesix
+ \ifinPLcomment
+ \prettynaturalfont
+ \else
+ {\prettynaturalfont\/%
+ \beginofpretty[\!!prettythree]\getpretty{#1}\endofpretty}%
+ \fi}
+
+% double quote
+
+\gdef\EIFtypenine#1%
+ {\endPLtypesix
+ \ifinPLcomment
+ \getpretty{#1}%
+ \else\ifinPLsingle
+ \getpretty{#1}%
+ \else\ifinPLdouble
+ \global\inPLdoublefalse
+ {\prettynaturalfont\/%
+ \beginofpretty[\!!prettythree]\getpretty{#1}\endofpretty}%
+ \else
+ \global\inPLdoubletrue
+ {\prettynaturalfont
+ \beginofpretty[\!!prettythree]\getpretty{#1}\endofpretty}%
+ \fi\fi\fi}
+
+\useprettyidentifiers \EIFidentifiers \EIFsetspecials
+ alias all and as check class create creation debug deferred do else
+ elseif end ensure expanded export external false feature from frozen
+ if implies indexing infix inherit inspect invariant is like local
+ loop not obsolete old once or prefix redefine rename require rescue
+ precursor retry select separate strip then true undefine unique
+ until variant when xor
+
+\useprettyidentifiers \EIFvariables \EIFsetspecials
+ not-yet-defined
+
+\protect \endinput
diff --git a/tex/context/base/verb-ini.tex b/tex/context/base/verb-ini.tex
index 5cc8f7676..93bf539b4 100644
--- a/tex/context/base/verb-ini.tex
+++ b/tex/context/base/verb-ini.tex
@@ -107,6 +107,11 @@
\def\obeyedline {\par}
\def\obeyedpage {\vfill\eject}
+%D Because we will introduce a status variable, we can define
+%D a better \type {\obeyedspace}.
+
+\def\obeyedspace {\ifprocessingverbatim\hbox{ }\else\space\fi}
+
%D \macros
%D {controlspace,setcontrolspaces}
%D
@@ -183,6 +188,19 @@
\egroup
%D \macros
+%D {processingverbatim}
+%D
+%D Typesetting a file in most cases results in more than one
+%D page. Because we don't want problems with files that are
+%D read in during the construction of the page, we set \type
+%D {\ifprocessingverbatim}, so the output routine can adapt
+%D its behavior. Originally we used \type {\scratchread}, but
+%D because we want to support nesting, we decided to use a
+%D separate input file.
+
+\newif\ifprocessingverbatim
+
+%D \macros
%D {processinlineverbatim}
%D
%D Although the inline verbatim commands presented here will be
@@ -238,6 +256,7 @@
\def\processinlineverbatim#1%
{\bgroup
+ \processingverbatimtrue
\localcatcodestrue % TeX processes paragraph's
\def\endofverbatimcommand{#1\egroup}%
\bgroup
@@ -249,19 +268,6 @@
%D typesetting inline verbatim.
%D \macros
-%D {processingverbatim}
-%D
-%D Typesetting a file in most cases results in more than one
-%D page. Because we don't want problems with files that are
-%D read in during the construction of the page, we set
-%D \type{\ifprocessingverbatim}, so the output routine can
-%D adapt its behavior. Originally we used
-%D \type{\scratchread}, but because we want to support nesting,
-%D we decided to use a separate input file.
-
-\newif\ifprocessingverbatim
-
-%D \macros
%D {optimizeverbatim}
%D
%D One day, a collegue asked me why I didn't prevent breaking
@@ -286,7 +292,7 @@
%D {\nobreak\hrule width 10cm\par\penalty500} % == \nobreak
%D
%D \def\doverbatimgoodbreak%
-%D {\nobreak\hrule width 3cm \par\penalty100} % >> \goodbreak
+%D {\nobreak\hrule width 3cm \par\penalty\linepenalty}
%D
%D \starttypen
%D test
@@ -321,7 +327,7 @@
{\ifoptimizeverbatim\penalty500\fi}
\def\doverbatimgoodbreak%
- {\ifoptimizeverbatim\penalty100\fi}
+ {\ifoptimizeverbatim\penalty\linepenalty\fi}
\def\doflushverbatimline%
{\expandafter\dodoverbatimline\expandafter{\savedverbatimline}}
@@ -475,7 +481,7 @@
%D \macros
%D {eightbitcharacters,
%D setcatcodes,uncatcodespecials,
-%D uncatcodecharacters,
+%D uncatcodecharacters,uncatcodespacetokens,
%D setnaturalcatcodes}
%D
%D As its name says, \type{\uncatcodecharacters} resets the
@@ -507,7 +513,10 @@
{\ifnum\catcode\scratchcounter=\@@letter\relax\else
\catcode\scratchcounter=\@@other
\fi}%
- \catcode`\ =\@@space
+ \uncatcodespacetokens}
+
+\def\uncatcodespacetokens%
+ {\catcode`\ =\@@space
\catcode`\^^L=\@@ignore
\catcode`\^^M=\@@endofline
\catcode`\^^?=\@@ignore}
@@ -550,13 +559,16 @@
%D The previous macros call for \type{\savecatcode}, which is
%D implemented as:
+\def\@@aa@@{@@aa@@}
+\def\@@cc@@{@@cc@@}
+
\newif\iflocalcatcodes
\def\savecatcode%
{\iflocalcatcodes \else
\saverestoreactivecatcode
- {\@EA\let\csname @@aa@@\the\scratchcounter\endcsname=~}%
- \@EA\chardef\csname @@cc@@\the\scratchcounter\endcsname
+ {\@EA\let\csname\@@aa@@\the\scratchcounter\endcsname=~}%
+ \@EA\chardef\csname\@@cc@@\the\scratchcounter\endcsname
=\catcode\scratchcounter
\fi}
@@ -564,9 +576,9 @@
\def\restorecatcode%
{\@EA\catcode\@EA\scratchcounter\@EA=
- \csname @@cc@@\the\scratchcounter\endcsname
+ \csname\@@cc@@\the\scratchcounter\endcsname
\saverestoreactivecatcode
- {\@EA\let\@EA~\@EA=\csname @@aa@@\the\scratchcounter\endcsname}}
+ {\@EA\let\@EA~\@EA=\csname\@@aa@@\the\scratchcounter\endcsname}}
%D Especially when we enable pretty printing, we need to
%D restore the meaning of active characters too. Just think of
@@ -604,6 +616,22 @@
\let\endrestorecatcodes =\egroup
\fi}
+%D \macros
+%D {makeallletter}
+%D
+%D With \type {\makeallletter} each character ($>0$) gets the
+%D category code 12.
+
+% \newtoks\makeallothertoks
+%
+% \dorecurse{255}
+% {\@EA\appendtoks\@EA\catcode\recurselevel=\@@other\to\makeallothertoks}
+%
+% \def\makeallother{\the\makeallothertoks}
+
+\def\makeallother%
+ {\dorecurse{255}{\catcode\recurselevel=\@@other}}
+
%D The main copying routine of display verbatim does an
%D ordinary string||compare on the saved closing command and
%D the current line. The space after \type{#1} in the
@@ -784,14 +812,14 @@
\let\endoftabskipping=\relax
-\def\processverbatimline#1{#1} % remove the fake grouping
-
\def\doprocesstabskipline#1%
{\bgroup
\scratchcounter=1
\dodoprocesstabskipline#1\relax\endoftabskipping
\egroup}
+\def\processverbatimline#1{#1} % remove the fake grouping
+
%D \macros
%D {processfileverbatim}
%D
@@ -828,21 +856,36 @@
\obeypages
\obeycharacters
\ignoreeofs
+ \catcode`\^^M=\@@ignore % \par is already taken care of
\openin\verbatiminput=#1\relax
\skipfirstverbatimlinefalse
\initializeverbatimline
\def\readline%
- {\read\verbatiminput to \verbatimline
+ {\ifx\firstverbatimfileline\empty
+ \read\verbatiminput to \verbatimline
+ \else
+ \let\verbatimline\firstverbatimfileline
+ \let\firstverbatimfileline\empty
+ \fi
\ifeof\verbatiminput
- \presetlastverbatimline
- \let\readline=\relax
+ \ifx\lastverbatimfileline\empty
+ \presetlastverbatimline
+ \let\readline=\relax
+ \else % we will re-enter the \ifeof branch twice
+ \presetnormalverbatimline
+ \def\readline%
+ {\let\verbatimline\lastverbatimfileline
+ \let\lastverbatimfileline\empty}%
+ \fi
+ \else\ifx\verbatimline\empty
+ \presetemptyverbatimline
\else\ifx\verbatimline\emptyline
\presetemptyverbatimline
\else\ifx\verbatimline\emptypage
\presetemptyverbatimline
\else
\presetnormalverbatimline
- \fi\fi\fi
+ \fi\fi\fi\fi
\handleverbatimline
\readline}%
\ifeof\verbatiminput \else
@@ -852,6 +895,24 @@
\egroup
\ignorespaces}
+%D \macros
+%D {firstverbatimfileline, lastverbatimfileline}
+%D
+%D The following two macros can be set to achieve special
+%D effects, like:
+%D
+%D \starttypen
+%D \convertargument\StartFake{something}\to\firstverbatimfileline
+%D \convertargument\StopFake\to\firstverbatimfileline
+%D \stoptypen
+%D
+%D These hooks were needed for typesetting flowchart
+%D definitions verbatim, since the temporary files does not
+%D have the start and stop commands embedded.
+
+\let\firstverbatimfileline\empty
+\let\lastverbatimfileline \empty
+
%D One can use the different \type{\obeysomething} commands to
%D influence the behavior of these macro's. We use for instance
%D \type{\obeycharacters} for making \type{/} an active
@@ -1730,6 +1791,27 @@
\handleverbatimline%
\copyverbatimline}}
+%D As a bonus, we provide the next alternative, which takes
+%D end tags like \type {Hello World!}.
+
+ \def\processtaggeddisplayverbatim#1%
+ {\par
+ \let\endofdisplayverbatim\relax
+ \convertargument#1\to\endofverbatimcommand
+ \bgroup
+ \parindent\!!zeropoint
+ \ifdim\lastskip<\parskip
+ \removelastskip
+ \vskip\parskip
+ \fi
+ \parskip\!!zeropoint
+ \processingverbatimtrue
+ \verbatimfont \spaceskip=.5em \xspaceskip=\spaceskip
+ \global\linepartrue % needed for paragraph numbering
+ \setupcopyverbatim
+ \initializeverbatimline
+ \copyverbatimline}
+
\fi
\protect
diff --git a/tex/context/base/verb-pas.tex b/tex/context/base/verb-pas.tex
new file mode 100644
index 000000000..4b9698022
--- /dev/null
+++ b/tex/context/base/verb-pas.tex
@@ -0,0 +1,266 @@
+%D \module
+%D [ file=verb-pas,
+%D version=1999.12.09,
+%D title=\CONTEXT\ Verbatim Macros,
+%D subtitle=Pretty \PASCAL\ and \MODULA\ Verbatim,
+%D author=Berend de Boer,
+%D date=\currentdate,
+%D copyright={Berend de Boer \& Hans Hagen]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% This module will be cleaned up a bit in the process of more
+% flexible verbatim options.
+
+\writestatus{loading}{Context Support Macros / Pretty PASCAL Verbatim}
+
+%D Typeset Pascal(-like) code:
+%D
+%D \startbuffer
+%D \startPAS
+%D program Hello;
+%D
+%D begin
+%D writeln('hello world.');
+%D end.
+%D \stopPAS
+%D \stopbuffer
+%D
+%D Berend's preferences:
+%D
+%D \startbuffer[setup]
+%D \setuptyping
+%D [DELPHI]
+%D [palet=,icommand=\bf,vcommand=,ccommand=\it]
+%D \stopbuffer
+
+\ifx\undefined\setupprettyPLtype \input verb-pl \relax \fi
+
+\unprotect
+
+\doglobal\newif\ifinPASbracketcomment
+\doglobal\newif\ifinPASslashstarcomment
+\doglobal\newif\ifinPASslashslashcomment
+
+
+\gdef\PASsetspecials%
+ {\PLsetspecials
+ \setpretty`\#=32
+ \setpretty`\%=41
+ \setpretty`\:=41
+ \setpretty`\/=43
+ \setpretty`\*=44
+ \setpretty`\{=45 \setpretty`\}=46 }
+
+\gdef\PASsethandlers%
+ {\PLsethandlers
+ \installprettyhandler 43 \PAStypefourthree
+ \installprettyhandler 44 \PAStypefourfour
+ \installprettyhandler 45 \PAStypefourfive
+ \installprettyhandler 46 \PAStypefoursix }
+
+\gdef\PASsetcontrols%
+ {\PLsetcontrols
+ \def\flushrestofverbatimline%
+ {\endPLtypesix
+ \ifinPASslashslashcomment
+ \PASstopslashslashcomment
+ \fi
+ \PLverbosefalse
+ \PLverboseskipped=0}}
+
+\gdef\PASsetvariables
+ {\PLsetvariables
+ \global\inPASbracketcommentfalse
+ \global\inPASslashstarcommentfalse
+ \global\inPASslashslashcommentfalse}
+
+\gdef\setupprettyPAStype%
+ {\def\prettyidentifier{PAS}%
+ \let\PLidentifiers=\PASidentifiers
+ \let\PLvariables=\PASvariables
+ \PASsetvariables
+ \PASsetcontrols
+ \PASsethandlers
+ \PASsetspecials
+ \PLsetdiagnostics}
+
+
+% the // and /* comments
+
+\gdef\PAStypefourthree%
+ {\handlenextnextpretty\doPAStypefourthree\PLtypefourtwo}
+
+\gdef\doPAStypefourthree#1#2%
+ {\ifinPLcomment
+ \let\next=\PLtypefourtwo
+ \else
+ \ifinPLsingle
+ \let\next=\PLtypefourtwo
+ \else
+ \getprettydata{#2}%
+ \ifnum\prettytype=43
+ \PLverbosecorrection
+ \let\next=\PASstartslashslashcomment
+ \else\ifnum\prettytype=44
+ \PLverbosecorrection
+ \let\next=\PASstartslashstarcomment
+ \else
+ \let\next=\PLtypefourtwo
+ \fi\fi
+ \fi
+ \fi
+ \next{#1}#2}
+
+\gdef\PASstartslashstarcomment#1#2%
+ {\global\inPLcommenttrue
+ \global\inPASslashstarcommenttrue
+ \prettynaturalfont
+ \beginofpretty[\!!prettyone]\getpretties{#1}{#2}\endofpretty}
+
+\gdef\PASstopslashstarcomment#1#2%
+ {\beginofpretty[\!!prettyone]\getpretties{#1}{#2}\endofpretty
+ \verbatimfont
+ \global\inPLcommentfalse
+ \global\inPASslashstarcommentfalse}
+
+\gdef\PASstartslashslashcomment#1#2%
+ {\global\inPLcommenttrue
+ \global\inPASslashslashcommenttrue
+ \prettynaturalfont
+ \beginofpretty[\!!prettyone]\getpretties{#1}{#2}\endofpretty}
+
+\gdef\PASstopslashslashcomment%
+ {\verbatimfont
+ \inPLcommentfalse
+ \inPASslashslashcommentfalse}
+
+% \gdef\dodoPAStypefourthree% #1%
+% {\endPLtypesix
+% \handlenextnextpretty\dododoPAStypefourthree\dodododoPLtypefourthree}
+
+% \gdef\dododoPAStypefourthree%
+% {\ifnewpretty\expandafter\handlenewpretty\fi\dodododoPAStypefourthree}
+
+% \gdef\dodododoPAStypefourthree#1#2%
+% {\ifinPLcomment
+% \getpretties{#1}{#2}%
+% \else
+% \global\inPLcommenttrue
+% \PLverbosecorrection
+% \beginofpretty[\!!prettyone]\getpretties{#1}{#2}\endofpretty
+% \fi}
+
+\gdef\PAStypefourfour%
+ {\handlenextnextpretty\doPAStypefourfour\PLtypefourtwo}
+
+\gdef\doPAStypefourfour#1#2%
+ {\ifinPASslashstarcomment
+ \getprettydata{#2}%
+ \ifnum\prettytype=43
+ \PASstopslashstarcomment{#1}#2%
+ \else
+ \endPLtypesix
+ \beginofpretty[\!!prettyfour]\getpretty{#1}\endofpretty
+ \expandafter#2%
+ \fi
+ \else
+ \endPLtypesix
+ \beginofpretty[\!!prettyfour]\getpretty{#1}\endofpretty
+ \expandafter#2%
+ \fi}
+
+
+% the { and } comments
+% we assume { is closed by } and do not follow the braindead Standard
+% Pascal standard in this respect
+% Note: brackets are not output correctly if natural font is \tf.
+% Therefore natural font is default to \tttf now (Hans is this ok??)
+% You have to use postscript fonts it seems to get brackets in that case.
+
+\gdef\PAStypefourfive#1%
+ {\endPLtypesix
+ \ifinPLcomment
+ \getpretty{#1}%
+ \else
+ \ifinPLsingle
+ \getpretty{#1}%
+ \else
+ \global\inPLcommenttrue
+ \global\inPASbracketcommenttrue
+ \prettynaturalfont
+ \beginofpretty[\!!prettyone]\getpretty{#1}\endofpretty
+ \fi
+ \fi}
+
+\gdef\PAStypefoursix#1%
+ {\endPLtypesix
+ \ifinPASbracketcomment
+ \prettynaturalfont\beginofpretty[\!!prettyone]\getpretty{#1}\endofpretty
+ \verbatimfont
+ \global\inPLcommentfalse
+ \global\inPASbracketcommentfalse
+ \else
+ \getpretty{#1}%
+ \fi}
+
+
+% Standard Pascal keywords (ISO/IEC 7185)
+
+\useprettyidentifiers \PASidentifiers \PASsetspecials
+ and array begin case const div do downto else end file
+ for function goto if in label mod nil not of or packed
+ procedure program record repeat set then to type until
+ var while with
+
+% Standard Pascal directives (ISO/IEC 7185)
+
+\useprettyidentifiers \PASidentifiers \PASsetspecials
+ forward
+
+% Extended Pascal keywords (ISO/IEC 10206)
+
+\useprettyidentifiers \PASidentifiers \PASsetspecials
+ and_then bindable export import module only or_else
+ otherwise pow protected qualified restricted
+
+% Extended Pascal directives (ISO/IEC 10206)
+
+\useprettyidentifiers \PASidentifiers \PASsetspecials
+ implementation interface
+
+% Object Pascal keywords (draft September 20, 1993)
+
+\useprettyidentifiers \PASidentifiers \PASsetspecials
+ abstract class constructor destructor inherited is
+ property view
+
+% Object Pascal directives (draft September 20, 1993)
+
+\useprettyidentifiers \PASidentifiers \PASsetspecials
+ override
+
+% Delphi keywords
+
+\useprettyidentifiers \PASidentifiers \PASsetspecials
+ as asm dispinterface except exports finalization finally
+ initialization inline library object out raise resourcestring
+ shl shr string threadvar try unit uses xor
+
+% Delphi directives
+% the read and write directive have been skipped
+% as they're pretty common procedure calls too
+
+\useprettyidentifiers \PASidentifiers \PASsetspecials
+ absolute assembler automated cdecl contains default dispid
+ dynamic external far implements index message name near
+ nodefault overload override package pascal private protected
+ public published readonly register reintroduce requires
+ resident safecall stdcall stored virtual writeonly
+
+\useprettyidentifiers \PASvariables \PASsetspecials
+ not-yet-defined
+
+\protect \endinput
diff --git a/tex/context/base/verb-pl.tex b/tex/context/base/verb-pl.tex
index 9ac354c7c..4495be13e 100644
--- a/tex/context/base/verb-pl.tex
+++ b/tex/context/base/verb-pl.tex
@@ -82,8 +82,6 @@
\PLverbosefalse
\PLverboseskipped=0}}
-
-
\gdef\setupprettyPLtype%
{\def\prettyidentifier{PL}%
\PLsetvariables
diff --git a/tex/context/base/verb-sql.tex b/tex/context/base/verb-sql.tex
index 7efd0127a..59218dc59 100644
--- a/tex/context/base/verb-sql.tex
+++ b/tex/context/base/verb-sql.tex
@@ -1,12 +1,15 @@
%D \module
%D [ file=verb-sql,
-%D version=1999.06.08,
+%D version=2000.05.09,
%D title=\CONTEXT\ Verbatim Macros,
%D subtitle=Pretty \SQL\ Verbatim,
-%D author={Berend de Boer, Hans Hagen},
+%D author={Berend de Boer \& Hans Hagen},
%D date=\currentdate,
-%D copyright={Berend de Boer, Hans Hagen}]
+%D copyright={Berend de Boer \& Hans Hagen}]
%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
\writestatus{loading}{Context Support Macros / Pretty SQL Verbatim}
@@ -64,6 +67,7 @@
\gdef\SQLsetspecials%
{\PLsetspecials
\setpretty`\#=32
+ \setpretty`\:=41
\setpretty`\%=41
\setpretty`\/=43
\setpretty`\*=44
@@ -83,7 +87,10 @@
{\PLsetcontrols
\def\flushrestofverbatimline%
{\endPLtypesix
- \ifcase\SQLcommentlevel \inPLcommentfalse \fi
+ \ifcase\SQLcommentlevel
+ \inPLcommentfalse
+ \verbatimfont
+ \fi
\PLverbosefalse
\PLverboseskipped=0}}
@@ -123,6 +130,7 @@
\gdef\SQLtogglecomment#1#2%
{\ifnum\SQLcommentlevel=1
+ \prettynaturalfont
\beginofpretty[\!!prettyone]\getpretties{#1}{#2}\endofpretty
\else
\getpretties{#1}{#2}%
@@ -152,7 +160,10 @@
\ifnum\prettytype=43
\SQLtogglecomment{#1}#2%
\global\advance\SQLcommentlevel by -1
- \ifcase\SQLcommentlevel \global\inPLcommentfalse \fi
+ \ifcase\SQLcommentlevel
+ \global\inPLcommentfalse
+ \prettyverbatimfont
+ \fi
\else
\endPLtypesix
\beginofpretty[\!!prettyfour]\getpretty{#1}\endofpretty
@@ -190,6 +201,7 @@
\ifnaturaltextext
\let\next\naturaltextext
\else
+ \prettynaturalfont
\def\next{\beginofpretty[\!!prettyone]\getpretties{#1}{#2}\endofpretty}%
\fi
\expandafter\next
diff --git a/tex/context/base/verb-xml.tex b/tex/context/base/verb-xml.tex
new file mode 100644
index 000000000..5806349bf
--- /dev/null
+++ b/tex/context/base/verb-xml.tex
@@ -0,0 +1,409 @@
+%D \module
+%D [ file=verb-xml,
+%D version=2000.05.09,
+%D title=\CONTEXT\ Verbatim Macros,
+%D subtitle=Pretty XML verbatim,
+%D author=Berend de Boer,
+%D date=2000.05.08,
+%D copyright={Berend de Boer \& Hans Hagen}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% This module will be cleaned up a bit in the process of more
+% flexible verbatim options.
+
+\writestatus{loading}{Context Support Macros / Pretty XML Verbatim}
+
+\unprotect
+
+%D Formats XML more or less like XMLWriter (http://XMLwriter.net)
+%D does.
+%D
+%D Known bugs:
+%D - CDATA not handled yet.
+%D
+%D Expects well-formed XML. Else parsing errors may occur, because
+%D this XML state machine is not robust.
+%D
+%D Examples:
+%D
+%D \startXML
+%D <?xml version="1.0" encoding="ISO-8859-1" ?>
+%D <!-- comment: example of a <resource> tag -->
+%D <resources>
+%D <resource id="5">
+%D <capacity>
+%D <kind>1</kind>
+%D <value>100</value>
+%D </capacity>
+%D </resource>
+%D </resources>
+%D \stopXML
+%D
+%D Another format:
+%D
+%D \startXML
+%D <?xml version="1.0" encoding="ISO-8859-1" ?>
+%D <address id="10"/>
+%D \stopXML
+%D
+%D A typical setup:
+%D
+%D \setuptyping[XML]
+%D [margin=1cm,
+%D before={\switchtobodyfont[9pt]\blank[medium]},
+%D after={\switchtobodyfont[11pt]\blank[medium]},
+%D letter=\ss]
+%D
+
+\gdef\setupprettyXMLtype%
+ {\def\prettyidentifier{XML}%
+ \XMLsetvariables
+ \XMLsetcontrols
+ \XMLsetspecials
+ \XMLsethandlers}
+
+\gdef\XMLsetvariables
+ {\global\inXMLpifalse
+ \global\inXMLtagfalse
+ \global\inXMLvaluefalse
+ \global\inXMLspecialfalse
+ \global\inXMLcommentfalse
+ \global\inXMLtagnamefalse
+ \global\inXMLattributefalse}
+
+\gdef\XMLsetcontrols%
+ {\saveprettycontrols
+ \def\obeyedspace%
+ {\XMLstartattribute
+ \oldobeyedspace}%
+ \def\flushrestofverbatimline%
+ {\endXMLtagname}%
+ \let\obeytabs=\ignoretabs}
+
+\gdef\XMLsetspecials%
+ {\setpretty`\<=10 \setpretty`\>=11
+ \setpretty`\?=12 \setpretty`\/=13
+ \setpretty`\!=14 \setpretty`\-=15
+ \setpretty`\\=17
+ % \setpretty`\0=17
+ % \setpretty`\1=17 \setpretty`\2=17 \setpretty`\3=17
+ % \setpretty`\4=17 \setpretty`\5=17 \setpretty`\6=17
+ % \setpretty`\7=17 \setpretty`\8=17 \setpretty`\9=17
+ \setpretty`\==16
+ \setpretty`\"=20
+ \setpretty`\(=30 \setpretty`\)=30 \setpretty`\,=30
+ \setpretty`\*=30 \setpretty`\+=30 \setpretty`\#=30
+ \setpretty`\:=30
+ \setpretty`\&=40 }
+
+\gdef\XMLsethandlers%
+ {%\installprettyhandler 17 \XMLnormal
+ \installprettyhandler 10 \XMLwhattag
+ \installprettyhandler 11 \XMLstoptag
+ \installprettyhandler 12 \XMLtypeonetwo
+ \installprettyhandler 13 \XMLtypeonethree
+ \installprettyhandler 14 \XMLtypeonefour
+ \installprettyhandler 15 \XMLtypeonefive
+ \installprettyhandler 16 \XMLtypeonesix
+ \installprettyhandler 20 \XMLdoublequote
+ \installprettyhandler 30 \XMLtypethree
+ \installprettyhandler 40 \XMLampersand}
+
+\doglobal\newif\ifinXMLpi
+\doglobal\newif\ifinXMLtag
+\doglobal\newif\ifinXMLvalue
+\doglobal\newif\ifinXMLspecial
+\doglobal\newif\ifinXMLcomment
+\doglobal\newif\ifinXMLtagname
+\doglobal\newif\ifinXMLattribute
+
+% the list of actions to be executed per state
+
+% test if we have a normal tag, processing instruction or a special,
+% i.e. <, <? or <!
+
+%\gdef\XMLnormal#1{\getpretty{#1}}
+
+\gdef\XMLwhattag%
+ {\handlenextnextpretty\XMLdowhattag\XMLstarttag}
+
+\gdef\XMLdowhattag#1#2%
+ {\ifinXMLcomment
+ \let\next=\getpretties
+ \else
+ \getprettydata{#2}%
+ \ifnum\prettytype=12
+ \let\next=\XMLstartpi
+ \else\ifnum\prettytype=14
+ \let\next=\XMLstartspecial
+ \else
+ \let\next=\XMLstarttag
+ \fi\fi
+ \fi
+ \next{#1}{#2}}
+
+% formats <?
+
+\gdef\XMLstartpi#1#2%
+ {\beginofpretty[\!!prettythree]\getpretties{#1}{#2}\endofpretty%
+ \beginofpretty[\!!prettyone]%
+ \global\inXMLtagtrue
+ \global\inXMLpitrue
+ \global\inXMLtagnametrue}
+
+% format <! (<!--, <!DOCTYPE, <![CDATA[ and such
+
+\gdef\XMLstartspecial#1#2%
+ {\beginofpretty[\!!prettythree]\getpretties{#1}{#2}\endofpretty%
+ \beginofpretty[\!!prettyone]%
+ \global\inXMLtagtrue
+ \global\inXMLspecialtrue
+ \global\inXMLtagnametrue}
+
+
+% formats plain <
+\gdef\XMLstarttag#1%
+ {\beginofpretty[\!!prettythree]\getpretty{#1}\endofpretty
+ \beginofpretty[\!!prettyone]%
+ \global\inXMLtagtrue
+ \global\inXMLtagnametrue}
+
+
+% catch >
+
+\gdef\XMLstoptag#1%
+ {\ifinXMLcomment
+ \getpretty{#1}%
+ \else
+ \ifinXMLvalue
+ \getpretty{#1}%
+ \else
+ \endXMLtagname
+ \beginofpretty[\!!prettythree]\getpretty{#1}\endofpretty
+ \doXMLstoptag
+ \fi
+ \fi}
+
+\gdef\doXMLstoptag%
+ {\global\inXMLpifalse % either end process instruction
+ \global\inXMLspecialfalse % or special
+ \global\inXMLtagfalse % and tag ends always
+ \global\inXMLtagnamefalse} % just to be sure
+
+% end typeset name of tag
+% because called often, we also use it to end the default
+% attribute color.
+
+\gdef\endXMLtagname%
+ {\ifinXMLtagname
+ \endofpretty
+ \inXMLtagnamefalse
+ \else
+ \XMLstopattribute
+ \fi}
+
+% start attribute formatting inside a tag if applicable
+
+\gdef\XMLstartattribute%
+ {\ifinXMLcomment
+ \else
+ \endXMLtagname
+ \ifinXMLtag
+ \doXMLstartattribute
+ \fi
+ \fi}
+
+\gdef\XMLstopattribute%
+ {\ifinXMLattribute
+ \endofpretty
+ \inXMLattributefalse
+ \fi}
+
+\gdef\doXMLstartattribute
+ {\inXMLattributetrue
+ \beginofpretty[\!!prettythree]}
+
+% `?' character, needed to recognize <? (see above)
+
+\gdef\XMLtypeonetwo%
+ {\endXMLtagname
+ \handlenextnextpretty\doXMLtypeonetwo\doXMLout}
+
+\gdef\doXMLtypeonetwo#1#2%
+ {\getprettydata{#2}%
+ \ifnum\prettytype=11
+ \let\next=\dododoXMLtypeonetwo
+ \else
+ \let\next=\dodoXMLtypeonetwo
+ \fi
+ \next{#1}#2}
+
+\gdef\dodoXMLtypeonetwo#1%
+ {\ifinXMLcomment
+ \getpretty{#1}%
+ \else
+ \ifinXMLtag
+ \ifinXMLvalue
+ \getpretty{#1}%
+ \else
+ \beginofpretty[\!!prettytwo]\getpretty{#1}\endofpretty
+ \fi
+ \else
+ \getpretty{#1}%
+ \fi
+ \fi}
+
+\gdef\dododoXMLtypeonetwo#1#2%
+ {\ifinXMLcomment
+ \getpretties{#1}{#2}%
+ \else
+ \ifinXMLtag
+ \ifinXMLvalue
+ \getpretties{#1}{#2}%
+ \else
+ \beginofpretty[\!!prettythree]\getpretties{#1}{#2}\endofpretty
+ \doXMLstoptag
+ \fi
+ \else
+ \getpretties{#1}{#2}%
+ \fi
+ \fi}
+
+% '/' character, catch /> and </, do nothing else
+
+\gdef\XMLtypeonethree#1%
+ {\ifinXMLcomment
+ \getpretty{#1}%
+ \else
+ \ifinXMLtag
+ \ifinXMLvalue
+ \getpretty{#1}%
+ \else
+ \endofpretty
+ \beginofpretty[\!!prettythree]\getpretty{#1}\endofpretty
+ \beginofpretty[\!!prettyone]%
+ \fi
+ \else
+ \getpretty{#1}%
+ \fi
+ \fi}
+
+% used to parse <!
+
+\gdef\XMLtypeonefour#1%
+ {\getpretty{#1}}
+
+% used to parse <!-- and -->
+% when <! is parsed we already assumed this is a comment
+% when -- is encountered, we only need to see if --> is ahead
+% so the comment can stop.
+
+\gdef\XMLtypeonefive%
+ {\endXMLtagname
+ \handlenextnextpretty\doXMLtypeonefive\doXMLout}
+
+\gdef\doXMLtypeonefive#1#2%
+ {\getprettydata{#2}%
+ \ifnum\prettytype=15
+ \ifinXMLcomment
+ \let\next=\dodoXMLtypeonefive
+ \else
+ \ifinXMLspecial
+ \let\next=\startXMLcomment
+ \else
+ \let\next=\doXMLouttwo
+ \fi
+ \fi
+ \else
+ \let\next=\doXMLouttwo
+ \fi
+ \next{#1}#2}
+
+\gdef\startXMLcomment#1#2%
+ {\beginofpretty[\!!prettyfour]\getpretties{#1}{#2}%
+ \global\inXMLcommenttrue}
+
+\gdef\dodoXMLtypeonefive#1% encountered -
+ {\getpretty{#1}\handlenextnextpretty\dododoXMLtypeonefive\doXMLout}
+
+\gdef\dododoXMLtypeonefive#1#2%
+ {\getprettydata{#2}#1#2%
+ \ifnum\prettytype=11
+ \endofpretty
+ \global\inXMLcommentfalse
+ \fi}
+
+%\gdef\doXMLout#1%
+% {\getpretty{#1}}
+%
+%\gdef\doXMLouttwo#1#2%
+% {\getpretties{#1}{#2}}
+
+\global\let\doXMLout \getpretty
+\global\let\doXMLouttwo\getpretties
+
+% '=' inside tags needs to be blue
+
+\gdef\XMLtypeonesix#1%
+ {\ifinXMLtag
+ \endofpretty
+ \beginofpretty[\!!prettythree]\getpretty{#1}\endofpretty
+ \beginofpretty[\!!prettyone]%
+ \else
+ \getpretty{#1}%
+ \fi}
+
+% catch attribute value parts
+
+\gdef\XMLdoublequote#1%
+ {\ifinXMLcomment
+ \getpretty{#1}%
+ \else
+ \ifinXMLtag
+ \ifinXMLvalue
+ \global\inXMLvaluefalse
+ \beginofpretty[\!!prettythree]\getpretty{#1}\endofpretty
+ \beginofpretty[\!!prettyone]%
+ \else
+ \endofpretty
+ \beginofpretty[\!!prettythree]\getpretty{#1}\endofpretty
+ \global\inXMLvaluetrue
+ \fi
+ \else
+ \getpretty{#1}%
+ \fi
+ \fi}
+
+% symbols like `(', `)' and `,' should be green
+
+\gdef\XMLtypethree#1%
+ {\ifinXMLcomment
+ \getpretty{#1}%
+ \else
+ \ifinXMLtag
+ \endXMLtagname
+ \ifinXMLvalue
+ \getpretty{#1}%
+ \else
+ \beginofpretty[\!!prettytwo]\getpretty{#1}\endofpretty
+ \XMLstartattribute% again
+ \fi
+ \else
+ \getpretty{#1}%
+ \fi
+ \fi}
+
+% special characters with `&'
+
+\gdef\XMLampersand#1%
+ {\ifinXMLcomment
+ \getpretty{#1}%
+ \else
+ \endXMLtagname
+ \beginofpretty[\!!prettytwo]\getpretty{#1}\endofpretty
+ \fi}
+
+\protect \endinput
diff --git a/tex/context/config/cont-cz.ini b/tex/context/config/cont-cz.ini
deleted file mode 100644
index 2317e4266..000000000
--- a/tex/context/config/cont-cz.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-\input cont-cz.tex
-\endinput \ No newline at end of file
diff --git a/tex/context/config/cont-de.ini b/tex/context/config/cont-de.ini
deleted file mode 100644
index f4ec36007..000000000
--- a/tex/context/config/cont-de.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-\input cont-de.tex
-\endinput \ No newline at end of file
diff --git a/tex/context/config/cont-en.ini b/tex/context/config/cont-en.ini
deleted file mode 100644
index de2df5ef5..000000000
--- a/tex/context/config/cont-en.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-\input cont-en.tex
-\endinput \ No newline at end of file
diff --git a/tex/context/config/cont-nl.ini b/tex/context/config/cont-nl.ini
deleted file mode 100644
index 1bd2bd47f..000000000
--- a/tex/context/config/cont-nl.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-\input cont-nl.tex
-\endinput \ No newline at end of file
diff --git a/tex/context/config/cont-uk.ini b/tex/context/config/cont-uk.ini
deleted file mode 100644
index 467026bd2..000000000
--- a/tex/context/config/cont-uk.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-\input cont-uk.tex
-\endinput \ No newline at end of file
diff --git a/tex/context/config/cont-usr.tex b/tex/context/config/cont-usr.tex
index 161c076c0..a02a01429 100644
--- a/tex/context/config/cont-usr.tex
+++ b/tex/context/config/cont-usr.tex
@@ -39,6 +39,7 @@
\definefilesynonym [lang-no.pat] [nohyph.tex]
\definefilesynonym [lang-pl.pat] [plhyph.tex]
\definefilesynonym [lang-pt.pat] [pthyph.tex]
+\definefilesynonym [lang-ro.pat] [rohyph.tex]
\definefilesynonym [lang-sk.pat] [skhyph.tex]
\definefilesynonym [lang-sp.pat] [sphyph.tex]
\definefilesynonym [lang-sv.pat] [sehyph.tex]
@@ -46,6 +47,20 @@
\definefilesynonym [lang-uk.pat] [ukhyphen.tex]
\definefilesynonym [lang-us.pat] [ushyph1.tex]
+%D When the dutch spelling changed, new patterns were
+%D constructed. For long these were named \type {dutch96.pat}.
+%D From 2000 however, the old \type {nehyph} files were
+%D replaced by \type {nehyph96.tex}. Typical something that
+%D you have to find out by accident. The names of hyphenation
+%D files as well as their coding is one of the dark areas of
+%D \TEX\ distributions.
+
+\doiffileelse{nehyph96.tex}
+ {\definefilesynonym[lang-nl.pat][nehyph96.tex]}
+ {\doiffileelse{dutch96.pat}
+ {\definefilesynonym[lang-nl.pat][dutch96.pat]}
+ {\definefilesynonym[lang-nl.pat][nehyph.tex]}}
+
%D Pattern files are (can be) encoded! And, alas, not all
%D pattern files are self contained, which is why (for the
%D moment) we specify encodings here.
@@ -79,8 +94,9 @@
% \installlanguage [\s!no] [\c!status=\v!start] % norwegian
% \installlanguage [\s!pl] [\c!status=\v!start] % polish
% \installlanguage [\s!pt] [\c!status=\v!start] % portuguese
+% \installlanguage [\s!ro] [\c!status=\v!start] % romanian
% \installlanguage [\s!sk] [\c!status=\v!start] % slovak
-% \installlanguage [\s!sp] [\c!status=\v!start] % spanish
+% \installlanguage [\s!es] [\c!status=\v!start] % spanish
% \installlanguage [\s!sv] [\c!status=\v!start] % swedish
% \installlanguage [\s!tr] [\c!status=\v!start] % turkish
% \installlanguage [\s!uk] [\c!status=\v!start] % english uk
@@ -105,8 +121,9 @@
% \setupcurrentlanguage[\s!no]
% \setupcurrentlanguage[\s!pl]
% \setupcurrentlanguage[\s!pt]
+% \setupcurrentlanguage[\s!ro]
% \setupcurrentlanguage[\s!sk]
-% \setupcurrentlanguage[\s!sp]
+% \setupcurrentlanguage[\s!es]
% \setupcurrentlanguage[\s!sv]
% \setupcurrentlanguage[\s!tr]
@@ -119,6 +136,13 @@
% \definefilesynonym [font-cmr] [font-csr] % czech & slovak
% \definefilesynonym [font-cmr] [font-plr] % polish
+%D In some languages, compound characters, like \type {"e}
+%D are used to get accented and non latin characters.
+
+ \useencoding[fde] % german
+% \useencoding[fro] % romanian
+% \useencoding[fpl] % polish
+
%D Don't remove the next few lines.
\protect \endinput
diff --git a/tex/context/config/context.ini b/tex/context/config/context.ini
deleted file mode 100644
index 403a3063f..000000000
--- a/tex/context/config/context.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-\input context.tex
-\endinput \ No newline at end of file
diff --git a/tex/generic/context/m-ch-de.tex b/tex/generic/context/m-ch-de.tex
new file mode 100644
index 000000000..467cdc670
--- /dev/null
+++ b/tex/generic/context/m-ch-de.tex
@@ -0,0 +1,10 @@
+% name : PPCHTEX / german interface
+% version : 1997.03.05
+% author : J. Hagen
+% copyright : J. Hagen, A.F. Otten
+
+\chardef\interfacenumber=2
+
+\input ppchtex.noc
+
+\endinput
diff --git a/tex/generic/context/m-ch-en.tex b/tex/generic/context/m-ch-en.tex
new file mode 100644
index 000000000..8c55a5669
--- /dev/null
+++ b/tex/generic/context/m-ch-en.tex
@@ -0,0 +1,10 @@
+% name : PPCHTEX / english interface
+% version : 1997.03.05
+% author : J. Hagen
+% copyright : J. Hagen, A.F. Otten
+
+\chardef\interfacenumber=0
+
+\input ppchtex.noc
+
+\endinput
diff --git a/tex/generic/context/m-ch-nl.tex b/tex/generic/context/m-ch-nl.tex
new file mode 100644
index 000000000..c9d77733a
--- /dev/null
+++ b/tex/generic/context/m-ch-nl.tex
@@ -0,0 +1,10 @@
+% name : PPCHTEX / english interface
+% version : 1997.03.05
+% author : J. Hagen
+% copyright : J. Hagen, A.F. Otten
+
+\chardef\interfacenumber=1
+
+\input ppchtex.noc
+
+\endinput
diff --git a/tex/generic/context/m-metapo.tex b/tex/generic/context/m-metapo.tex
new file mode 100644
index 000000000..6c2fa6fee
--- /dev/null
+++ b/tex/generic/context/m-metapo.tex
@@ -0,0 +1,89 @@
+%D \module
+%D [ file=m-metapo,
+%D version=1999.03.26,
+%D title=\LATEX\ Modules,
+%D subtitle=\METAPOST\ Inclusion,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ distribution and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D We quit when \CONTEXT\ is found and use some deep down
+%D macro to trigger this:
+
+\ifx\undefined\dodoplaceexternalfigure \else \expandafter \endinput \fi
+
+%D \macros
+%D {includeMPgraphics}
+%D
+%D This rather small \LATEX\ module is dedicated to David
+%D Arnold. It takes care of including the fonts used in
+%D \METAPOST\ graphics in the file. This hack is needed when
+%D one uses another \DVI\ driver than \DVIPS. This module
+%D falls back on the generic \CONTEXT\ support module:
+
+\ifx\undefined\includeMPfonts \input supp-mps.tex \relax \fi
+
+%D Instead of using \type {\includegraphics}, one should use its
+%D little brother \type {\includeMPgraphics}. This macro takes
+%D the same arguments.
+
+\def\includeMPgraphics#1#%
+ {\leavevmode\vbox\bgroup\hbox\bgroup
+ \def\includeMPgraphics##1%
+ {\includeMPfonts{##1}%
+ \includegraphics#1{##1}%
+ \egroup\egroup}%
+ \includeMPgraphics}
+
+%D An example of using this module is given below:
+%D
+%D \starttypen
+%D \documentclass[10pt]{article}
+%D
+%D \usepackage{graphicx}
+%D \usepackage{m-metapo}
+%D
+%D \begin{document}
+%D \includeMPgraphics{somefile.1}
+%D \includeMPgraphics[angle=90]{somefile.2}
+%D \end{document}
+%D \stoptypen
+%D
+%D This module needs \type {supp-mps} and \type {supp-mis},
+%D that both are present in the \CONTEXT\ path.
+%D
+%D Pleas do not forget to say \type {prologues:=2} at the
+%D top of the metapost file!
+%D
+%D For non \LATEX\ (and \CONTEXT) users we provide an
+%D alternative inclusion macro. This one has no optional
+%D arguments.
+
+\ifx\includegraphics\undefined
+
+ \ifx\undefined\dogetEPSboundingbox \input supp-eps.tex \relax \fi
+
+ \def\includeMPgraphics#1%
+ {\hbox\bgroup
+ \includeMPfonts{#1}%
+ \dogetEPSboundingbox{#1}{\dimen2}{\dimen4}{\dimen6}{\dimen8}%
+ \vbox to \dimen8
+ {\forgetall
+ \hsize\dimen6
+ \vfill
+ \hbox to \hsize
+ {\special
+ {PSfile="#1"\space
+ llx=\EPSllx\space
+ lly=\EPSlly\space
+ urx=\EPSurx\space
+ ury=\EPSury\space}}}%
+ \egroup}
+
+\fi
+
+\endinput
diff --git a/tex/generic/context/mptopdf.tex b/tex/generic/context/mptopdf.tex
new file mode 100644
index 000000000..15c56831d
--- /dev/null
+++ b/tex/generic/context/mptopdf.tex
@@ -0,0 +1,143 @@
+%D \module
+%D [ file=mptopdf,
+%D version=2000.03.27,
+%D title=\METAPOST,
+%D subtitle=conversion to \PDF,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D The file \type {mptopdf} provides a quick way to convert
+%D \METAPOST\ files to \PDF\ using a slightly stripped down
+%D plain \TEX, \PDFTEX, and a few \CONTEXT\ modules.
+%D
+%D First generate a format, which in \WEBC\ looks like:
+%D
+%D \starttypen
+%D pdftex --ini mptopdf
+%D \stoptypen
+%D
+%D or:
+%D
+%D \starttypen
+%D texexec --make --tex=pdftex --format=mptopdf --alone
+%D \stoptypen
+%D
+%D Since this conversion only works with \PDFTEX\ or \PDFETEX,
+%D the session is aborted when another \TEX\ is used. When
+%D finished, the resulting \type {fmt} file should be moved to
+%D the right location.
+%D
+%D The conversion itself is accomplished by:
+%D
+%D \starttypen
+%D pdftex &mptopdf \relax filename.number
+%D \stoptypen
+%D
+%D The \type {\relax} is needed since we don't want to process
+%D the file directly. Instead we pick up the filename using
+%D \type {\everypar}. Since this file is still the first one
+%D we load, although delayed, the jobname is as we expect. So,
+%D at least in \WEBC, the result of the conversion comes
+%D available in the file \type {filename.pdf}. This conversion
+%D process is roughly compatible with:
+%D
+%D \starttypen
+%D texexec --pdf --fig=c --result=filename filename.number
+%D \stoptypen
+%D
+%D This uses \CONTEXT, and is therefore slower. Therefore,
+%D we provide a small \PERL\ script that does a faster job,
+%D using the minimal format. Given that a format is
+%D generated, one can say:
+%D
+%D \starttypen
+%D mptopdf somefile
+%D mptopdf somefile.123
+%D mptopdf mp*.*
+%D \stoptypen
+%D
+%D The results are copied into files named \type
+%D {somefile-number}. This mechanism will also be available
+%D in a next release of \TEXUTIL.
+
+%D The \TEX\ implementation is rather simple, since we use some
+%D generic \CONTEXT\ modules. Because we need a few register
+%D allocation macros, we preload plain \TEX. We don't load
+%D fonts yet.
+
+\input syst-tex
+
+%D We check for the usage of \PDFTEX, and quit if another
+%D \TEX\ is used.
+
+\ifx\pdfoutput\undefined
+ \message{Sorry, you should use pdf(e)TeX instead.}
+ \expandafter \endinput
+\fi
+
+%D The conversion to \PDF\ is carried out by macros, that
+%D are collected in the file:
+
+\input supp-pdf
+\input supp-mpe
+
+%D We use no output routine.
+
+\output{}
+
+%D Since we need to calculate and set the bounding box,
+%D we definitely don't want to indent paragraphs.
+
+\parindent=0pt
+
+%D We use \type {\everypar} to pick up the filename and
+%D process the \METAPOST\ graphic.
+
+\everypar{\processMPfile}
+
+%D The main macro shows a few \PDFTEX\ primitives. The main
+%D work is done by the macro \type {\convertMPtoPDF} which is
+%D defined in \type supp-pdf}. This macro interprets the
+%D \METAPOST\ file. Close reading of this macro will probably
+%D learn a few (\PDF) tricks. Apart from some path
+%D transformations, which are needed since \PDF\ has a
+%D different vision on paths, the graphic is positioned in
+%D such a way that accuracy in \PDF\ xforms is guaranteed.
+
+\def\processMPfile#1 %
+ {\pdfoutput=1
+ \chardef\makeMPintoPDFobject=1
+ \hsize=100in
+ \vsize=\hsize
+ \hoffset=-1in
+ \voffset=\hoffset
+ \setbox0=\vbox{\convertMPtoPDF{#1}{1}{1}}%
+ \ifdim\wd0<1in \message{[warning: width<1in]}\fi
+ \ifdim\ht0<1in \message{[warning: height<1in]}\fi
+ \pdfpageheight=\ht0
+ \pdfpagewidth=\wd0
+ \box0
+ \bye}
+
+%D The \type {\chardef} forces the converter to build a so
+%D called xform object. This is needed in case the graphic
+%D uses special trickery, like shading.
+
+%D Since \ACROBAT\ has troubles with figures smaller than
+%D 1~inch, we issue a warning. When embedding graphics in
+%D documents, a size less that 1~inch does not harm. In
+%D order to overload runtime directives in the \PDFTEX\
+%D configuration file, we set the offsets and output method
+%D in the macro.
+%D
+%D The resulting \PDF\ file is about as efficient as such a
+%D self contained file can be. However, if needed, this \PDF\
+%D file can be converted to \EPS\ using for instance the
+%D \PDFTOPS\ program (in \WEBC) or \GHOSTSCRIPT.
+
+\dump
diff --git a/tex/generic/context/ppchtex.noc b/tex/generic/context/ppchtex.noc
new file mode 100644
index 000000000..81ec994e9
--- /dev/null
+++ b/tex/generic/context/ppchtex.noc
@@ -0,0 +1,206 @@
+%D \module
+%D [ file=ppchtex (m-chemie),
+%D version=1997.03.19,
+%D title=\CONTEXT\ Extra Modules,
+%D subtitle=\PPCHTEX\ (Plain Pictex Context cHemie \TEX),
+%D author=Hans Hagen,
+%D date=\huidigedatum,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten},
+%D suggestions={Tobias Burnus, Dirk Kuypers \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See licen-en.pdf for
+%C details.
+
+%D This module facilitates the use of \PPCHTEX\ in macro
+%D packages other than \CONTEXT. One of the features of
+%D \CONTEXT\ is that the user interface can be in any
+%D language. This language is defined at loading time.
+%D
+%D This module is indeed a surrogate one and is only a poor
+%D man's alternative to the more extensive \type{mult-***}
+%D modules of \CONTEXT. The extra overhead in terms of macros
+%D and functionality that these modules offer is only useful
+%D in \CONTEXT.
+%D
+%D Two interfaces are supported here, but others can easily be
+%D defined. This module expects the general system macros to be
+%D loaded as wel as a interface switch \type{\ifalternativeinterface}
+%D to be set.
+
+%D First we load some auxiliary macro's:
+
+\input supp-mis.tex \let\writestatus\undefined
+\input syst-gen.tex
+
+%D after which we can go on with:
+
+\unprotect
+
+%D 0 = english
+%D 1 = dutch
+%D 2 = german
+%D 3 = czech (not yet implemented here)
+
+\ifx\interfacenumber\undefined
+ \chardef\interfacenumber=0
+\fi
+
+\def\definesystemvariable #1 %
+ {\setvalue{??#1}{@@#1}}
+
+\def\definesystemconstant #1 %
+ {\setvalue{s!#1}{#1}}
+
+\def\definevariable #1 #2 #3 %
+ {\ifcase\interfacenumber
+ \setvalue{v!#2}{#1}
+ \or
+ \setvalue{v!#2}{#2}
+ \or
+ \setvalue{v!#2}{#3}
+ \fi}
+
+\def\defineconstant #1 #2 #3 %
+ {\ifcase\interfacenumber
+ \setvalue{c!#2}{#2}
+ \setvalue{c!#1}{#2}
+ \or
+ \setvalue{c!#2}{#2}
+ \or
+ \setvalue{c!#2}{#2}
+ \setvalue{c!#3}{#2}
+ \fi}
+
+\def\definecommand #1 #2 #3 %
+ {\ifcase\interfacenumber
+ % core commands are english
+ \or
+ \doifnot{#1}{#2}{\setvalue{#2}{\getvalue{#1}}}
+ \or
+ \doifnot{#1}{#3}{\setvalue{#3}{\getvalue{#1}}}
+ \fi}
+
+\long\def\startcommands#1\stopcommands%
+ {}
+
+\def\dosetvalue#1#2#3%
+ {\p!doifundefined{\c!prefix!#2}%
+ \let\donottest=\doprocesstest
+ \@EA\def\csname#1#2\endcsname{#3}%
+ \else
+ \let\donottest=\doprocesstest
+ \@EA\def\csname#1\csname\c!prefix!#2\endcsname\endcsname{#3}%
+ \fi}
+
+\def\dosetevalue#1#2#3%
+ {\p!doifundefined{\c!prefix!#2}%
+ \let\donottest=\doprocesstest
+ \@EA\edef\csname#1#2\endcsname{#3}%
+ \else
+ \let\donottest=\doprocesstest
+ \@EA\edef\csname#1\csname\c!prefix!#2\endcsname\endcsname{#3}%
+ \fi}
+
+\def\docopyvalue#1#2#3%
+ {\p!doifundefined{\c!prefix!#3}%
+ \let\donottest=\doprocesstest
+ \@EA\def\csname#1#3\endcsname%
+ {\csname#2#3\endcsname}%
+ \else
+ \let\donottest=\doprocesstest
+ \@EA\def\csname#1\csname\c!prefix!#3\endcsname\endcsname%
+ {\csname#2\csname\c!prefix!#3\endcsname\endcsname}%
+ \fi}
+
+\def\doresetvalue#1#2%
+ {\dosetvalue{#1}{#2}{}}
+
+\def\dogetvalue#1#2%
+ {\csname#1\csname\c!prefix!#2\endcsname\endcsname}
+
+\defineconstant axis assenstelsel achsen
+\defineconstant top boven oben
+\defineconstant width breedte breite
+\defineconstant size formaat groesse
+\defineconstant number getal nummer
+\defineconstant height hoogte hoehe
+\defineconstant frame kader rahmen
+\defineconstant bodyfont korps fliesstext
+\defineconstant style letter schriftstil
+\defineconstant left links links
+\defineconstant offset offset offset
+\defineconstant bottom onder unten
+\defineconstant option optie option
+\defineconstant location plaats platz
+\defineconstant right rechts rechts
+\defineconstant resolution resolutie aufloesung
+\defineconstant scale schaal format
+\defineconstant status status status
+\defineconstant text tekst text
+\defineconstant textsize tekstformaat textgroesse
+\defineconstant alternative variant alternative
+\defineconstant x x x
+\defineconstant y y y
+
+\definevariable on aan an
+\definevariable big groot gross
+\definevariable intext intekst imtext
+\definevariable small klein klein
+\definevariable medium middel mittel
+\definevariable fit passend passend
+\definevariable start start start
+\definevariable stop stop stop
+\definevariable test test test
+\definevariable off uit aus
+
+\definecommand definechemical definieerchemie definierechemie
+\definecommand setupchemical stelchemiein stellechemieein
+\definecommand chemical chemie chemie
+\definecommand tochemical naarchemie zurchemie
+\definecommand startchemical startchemie startchemie
+\definecommand stopchemical stopchemie stopchemie
+\definecommand toptext boventekst textueber
+\definecommand bottext ondertekst textunter
+\definecommand midtext middentekst textmitte
+
+\protect
+
+%D After those definitions we actually load \PPCHTEX:
+
+\input ppchtex.tex
+
+%D We also change some setup values. Let's hope that the next
+%D setups forever suits \LATEX.
+
+\unprotect
+
+\ifx\bodyfontsize\undefined
+ \ifx\f@size\undefined
+ \ifx\@ptsize\undefined
+ \setupchemical[\c!korps=11pt]
+ \else
+ \setupchemical[\c!korps=1\@ptsize pt]
+ \fi
+ \else
+ \setupchemical[\c!korps=\f@size pt]
+ \fi
+\else
+ \setupchemical[\c!korps=\bodyfontsize]
+\fi
+
+\ifx\mathrm\undefined
+ \setupchemical[\c!letter=\rm]
+\else
+ \setupchemical[\c!letter=\mathrm]
+\fi
+
+\ifx\outputresolution\undefined
+ \setupchemical[\c!resolutie=300]
+\else
+ \setupchemical[\c!resolutie=\outputresolution]
+\fi
+
+\protect
+
+\endinput
diff --git a/tex/latex/context/m-ch-de.sty b/tex/latex/context/m-ch-de.sty
new file mode 100644
index 000000000..d52078728
--- /dev/null
+++ b/tex/latex/context/m-ch-de.sty
@@ -0,0 +1 @@
+\input m-ch-de.tex \relax \endinput
diff --git a/tex/latex/context/m-ch-en.sty b/tex/latex/context/m-ch-en.sty
new file mode 100644
index 000000000..ba5a5e16c
--- /dev/null
+++ b/tex/latex/context/m-ch-en.sty
@@ -0,0 +1 @@
+\input m-ch-en.tex \relax \endinput
diff --git a/tex/latex/context/m-ch-nl.sty b/tex/latex/context/m-ch-nl.sty
new file mode 100644
index 000000000..492f5efd3
--- /dev/null
+++ b/tex/latex/context/m-ch-nl.sty
@@ -0,0 +1 @@
+\input m-ch-nl.tex \relax \endinput
diff --git a/tex/latex/context/m-metapo.sty b/tex/latex/context/m-metapo.sty
new file mode 100644
index 000000000..1df781eae
--- /dev/null
+++ b/tex/latex/context/m-metapo.sty
@@ -0,0 +1 @@
+\input m-metapo.tex \relax \endinput
diff --git a/tex/latex/context/m-pictex.sty b/tex/latex/context/m-pictex.sty
new file mode 100644
index 000000000..da9c18ed7
--- /dev/null
+++ b/tex/latex/context/m-pictex.sty
@@ -0,0 +1 @@
+\input m-pictex.tex \relax \endinput