diff options
author | Hans Hagen <pragma@wxs.nl> | 2000-10-22 00:00:00 +0200 |
---|---|---|
committer | Hans Hagen <pragma@wxs.nl> | 2000-10-22 00:00:00 +0200 |
commit | e78478392e9717499b101d0fed642c945c104097 (patch) | |
tree | 7f3dbe64040cbcf413644cae6516872c0fb5cd2b | |
parent | 73000ea3b7c8225c980f40ef90b86e2d57fe4003 (diff) | |
download | context-e78478392e9717499b101d0fed642c945c104097.tar.gz |
stable 2000.10.22
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 Binary files differnew file mode 100644 index 000000000..4855544f0 --- /dev/null +++ b/context/perltk/runperl.zip 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 Binary files differnew file mode 100644 index 000000000..60f26390f --- /dev/null +++ b/doc/context/base/minstall.pdf diff --git a/doc/context/base/mreadme.pdf b/doc/context/base/mreadme.pdf Binary files differnew file mode 100644 index 000000000..a11043b37 --- /dev/null +++ b/doc/context/base/mreadme.pdf 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 Binary files differnew file mode 100644 index 000000000..c272e9d49 --- /dev/null +++ b/fonts/tfm/hoekwater/context/contnav.tfm diff --git a/fonts/type1/hoekwater/context/contnav.pfb b/fonts/type1/hoekwater/context/contnav.pfb Binary files differnew file mode 100644 index 000000000..ab81c4f69 --- /dev/null +++ b/fonts/type1/hoekwater/context/contnav.pfb 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\% + {\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 |