%D \module %D [ file=page-ini, %D version=2000.10.20, %D title=\CONTEXT\ Page Macros, %D subtitle=Initializations, %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 Page Macros / Initializations} %D This class of modules implements the output routines and %D floating body support. Although the modules are relatively %D new, the code herein is rather old. This reordering was %D needed when column sets were implemented and sharing code %D started to make sense. %D The history shows from the code, since both column %D mechanism use a different way of looping over columns. \unprotect \def\m!otr{otr} % message will be distributed \startmessages dutch library: systems title: systeem 1: laden hulpfile uitgesteld (typemode) 2: -- geladen % 3: probeer LaTeX eens 4: commando -- is al gedefinieerd 5: macro's uit module -- geladen 6: geen macro's in module -- gevonden 7: macro's uit module -- reeds geladen 8: nieuwe versie hulpfile, tweede run nodig 9: -- niet gevonden/geplaatst 10: gebruik geen em in -- 11: aanmaken basale hulpfile 12: de hulpfile is niet gesorteerd, gebruik texutil 13: markering -- gedefinieerd -- 14: geforceerde paginaovergang in lijst voor -- 15: wegschrijven buffer -- 16: inlezen buffer -- 17: verbatim inlezen buffer -- 18: synoniem -- -- bestaat niet 19: betekenissen (synoniemen) van -- geladen 20: betekenissen (sorteren) van -- geladen 21: de hulpfile is niet geladen 22: gebruik een goede hulpfile 23: -- gearrangeerd op -- 24: Plaatsblokken 25: Verwijzingen 26: Registers 27: Versie \stopmessages \startmessages english library: systems title: system 1: loading utility-file postponed (typemode) 2: -- loaded % 3: try LaTeX 4: command -- is already defined 5: macros of module -- loaded 6: no macros found in module -- 7: macros of module -- already loaded 8: new version of utility file, second pass needed 9: -- not found/processed 10: don't use em in -- 11: building simple util 12: the utility-file is not sorted, use texutil 13: mark -- defined -- 14: forced newpage in list at -- 15: saving buffer -- 16: typesetting buffer -- 17: typesetting verbatim buffer -- 18: synonym -- -- does not exist 19: meaning (synonyms) of -- loaded 20: meaning (sorts) of -- loaded 21: no utility data is loaded 22: use a valid utilityfile 23: -- arranged at -- 24: Floatblocks 25: References 26: Registers 27: Version \stopmessages \startmessages german library: systems title: system 1: Laden der Hilfsdatei verschoben (tippenmodus) 2: -- geladen % 3: Versuche LaTeX 4: Befehl -- ist bereits definiert 5: Makros aus Modul -- geladen 6: Keine Makros in Modul -- gefunden 7: Makros aus Modul -- bereits geladen 8: Neue Version der Hilfsdatei, zweiter Durchlauf benoetigt 9: -- nicht gefunden/verarbeitet 10: Benutzte kein em in -- 11: Erstelle einfache Hilfdatei 12: Die Hilfdatei ist nicht sortiert, verwende texutil 13: Beschriftung -- definiert -- 14: Erzwungendes Seitenumbruch in Liste bei -- 15: Speichere Buffer -- 16: Setzte Buffer -- 17: Setzte tippen-Buffer -- 18: Synonym -- -- existiert nicht 19: Bedeutung (synonyme) von -- geladen 20: Bedeutung (sortieren) von -- geladen 21: Die Hilfsdatei ist nicht geladen 22: Benoetige gueltige Hilfsdateie 23: -- angeordnet auf -- 24: Fliessbloecke 25: Referenzen 26: Register 27: Version \stopmessages \startmessages czech library: systems title: system 1: nacteni pomocneho souboru odlozeno (typemode) 2: -- nacteno % 3: zkuste LaTeX 4: prikaz -- je jiz definovan 5: makra z -- nactena 6: zadna makra v -- nenalezena 7: makra z -- jsou jiz nactena 8: nova verze pomocneho souboru, je treba druheho behu 9: -- nenalezeno/nezpracovano 10: nepouzivejte em v -- 11: vytvarim jednoduchy pomocny soubor 12: pomosny soubor neni setriden, pouzijte texutil 13: znacka -- definovana -- 14: vynucena nova stranka v seznamu na -- 15: uklada se buffer -- 16: sazi se buffer -- 17: sazi se doslovny (verbatim) buffer -- 18: synonymum -- -- neexistuje 19: vyznam (synonyma) -- nacten 20: vyznam (trideni) -- nacten 21: pomocny soubor necten 22: pouzijte platny pomocny soubor 23: -- upraveno na -- 24: plovouci bloky 25: reference 26: registry 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 romanian library: systems title: sistem 1: se incarca utilitarul-fisierul este amanat (typemode) 2: -- s-a incarcat % 3: incercati LaTeX 4: comanda -- este deja definita 5: macro-urile din modulul -- s-au incarcat 6: nu s-au gasit macro-uri in modulul -- 7: macro-urile din modulul -- s-au incarcat deja 8: o noua versiune de fisier utilitar, este necesara o noua trecere 9: -- nu este gasit/procesat 10: nu folositi em in -- 11: se creeaza un utilitar simplu 12: fisierul utilitar nu este sortat, folositi texutil 13: marcajul -- definit -- 14: s-a fortat trecere pa pagina noua in lista la -- 15: buffer salvat -- 16: buffer-ul -- s-a cules 17: se culege buffer-ul verbatim -- 18: sinonimul -- -- nu exista 19: intelesul (sinonimele) pentru -- incarcat 20: intelesul (ordinea) pentru -- incarcat 21: nici o data utilitara nu este incarcata 22: folositi un fisier utilitar valid 23: -- aranjat la -- 24: Blocuri 25: Referinte 26: Registri 27: Versiune \stopmessages \startmessages dutch library: layouts title: layout 1: teksthoogte aangepast met -- op pagina -- 2: -- maal uitgestelde tekst tussengevoegd 3: -- maal tekst plaatsen uitstellen 4: margeblokken actief 5: margeblokken inactief 6: subpagina reeks -- verwerkt (aantal --) % 7: beeldmerken berekenen % 8: achtergronden berekenen 10: -- en -- tellen niet op tot 1.0 11: interlinie -- niet toegestaan in gridmode \stopmessages \startmessages english library: layouts title: layout 1: textheight adapted with -- at page -- 2: -- times postponed text placed 3: -- times text postponed 4: marginblocks active 5: marginblocks inactive 6: subpage set -- processed (size --) % 7: calculating logospace % 8: calculating backgrounds 10: -- and -- don't add up to 1.0 11: spacing -- not permitted in gridmode \stopmessages \startmessages german library: layouts title: Layout 1: Texthoehe angepasst mit -- auf Seite -- 2: -- mal verschobener Text plaziert 3: -- mal Text verschoben 4: marginalbloecke aktiv 5: marginalbloecke inaktiv 6: Unterseitenfolge -- verarbeitet (Groesse --) % 7: berechne Platz des Logo % 8: berechne Hintergrund 10: -- und -- ergeben zusammen nicht 1.0 11: Zwischenraum -- nicht im Grittermoduserlau \stopmessages \startmessages czech library: layouts title: layout 1: vyska textu prizpusobena s -- na strane -- 2: -- krat odlozeny text umisten 3: -- krat text odlozen 4: okrajove bloky aktivni 5: okrajove bloky neaktivni 6: sada stran -- zpracovana (velikost --) % 7: pocita se misto pro logo % 8: pocita se pozadi 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 \startmessages romanian library: layouts title: aranjamente 1: textheight adaptat cu -- la pagina -- 2: textul amanat de -- ori a fost plasat 3: textul amanat de -- ori 4: blocuri marginale active 5: blocuri marginale inactive 6: setul -- de subpagini procesat (dimensiunea --) % 7: se calculeaza spatiul pentru logo % 8: se calculeaza fundalurile 10: -- si -- nu se adauga pana la 1.0 11: spatierea -- nu este permisa in gridmode \stopmessages \ifx\recalculatelayout\undefined \let \recalculatelayout \relax \fi \ifx\recalculatelogos\undefined \let \recalculatelogos \relax \let \addlogobackground \gobbleoneargument % \fi \ifx\recalculatebackgrounds\undefined \let \recalculatebackgrounds \relax \let \addmainbackground \gobbleoneargument % \let \addtextbackground \gobbleoneargument % \let \addpagebackground \gobbleoneargument % \let \addprintbackground \gobbleoneargument % \let \addstatusinfo \gobbleoneargument % \fi % principle: % % multiple otr's % % (1) single column, simple routine (old one) % (2) multi column, collect and split routine (old one) % (3) multi column, page by page (new one, needed for taco) % (4) single column, spread handling (for fun) % (5) multi column, page by page, spread handling (as challenge) % % common components % % (1) float placement % (2) float flushing % (3) page body building % (4) ... % % ort % % + balancing % - mixed / one / multi / balancetofit % + backgrounds % + pre / post % + distances / heights % + ragged / baseline / normal % - pos sync % - last page % % - itemize / subtexts -> old mechanism % % floats % % - top / bottom / side / page / column / spead % - flush / packed flush / current page / next page / area % % footnotes % % + carry over pre column / local to column % + last column / pre last column / each column % - multiple classes % - area / page / end % % areas % % - top / bottom / mid in spread % % IMPORTANT % % switchtobodyfont in between ivm top % floats: % % tricky in balancing mode, a la huidige multi columns \startmessages dutch library: columns title: kolommen 1: maximaal -- kolommen 2: gebruik eventueel \string\filbreak 3: probleempje, probeer [balanceren=nee] 4: plaatsblok boven nog niet mogelijk 5: plaatsblok onder nog niet mogelijk 6: -- plaatsblok(en) opgeschort 7: balanceren afgebroken na 100 stappen 8: gebalanceerd in -- stap(pen) 9: uitlijnen controleren! 10: (minder dan) 1 regel over 11: plaatsblok te breed voor kolom 12: plaatsblok verplaatst naar volgende kolom / -- 13: breed figuur geplaatst boven kolommen \stopmessages \startmessages english library: columns title: columns 1: only -- columns possible 2: use \string\filbreak\space as alternative 3: problems, disable balancing 4: top float not yet supported 5: bottom float not yet supported 6: -- float(s) postponed 7: balancing aborted after 100 steps 8: balanced in -- step(s) 9: check raggedness 10: (less than) 1 line left 11: float to wide for column 12: float moved to next column / -- 13: wide float moved to top of columns \stopmessages \startmessages german library: columns title: Spalten 1: nur -- Spalten moeglich 2: benutzte \string\filbreak\space als Alternative 3: Problem, verwende [ausgleich=nein] 4: Gleitobjekt oben ncoh nicht unterstuetzt 5: Gleitobjekt unten ncoh nicht unterstuetzt 6: -- Gleitobjekt(e) verschoben 7: ausgleich nach 100 Schritten abgebrocheb 8: ausgeglichen nach -- Schritt(en) 9: Ausrichtung ueberpruefen 10: (weniger als) 1 Zeile uebrig 11: Gleitobjekt zu breit fuer Spalte 12: Gleitobjekt in naechste Zeile verschoben / -- 13: breites Gleitobjekt an den Anfang der Spalten verschoben \stopmessages \startmessages czech library: columns title: sloupce 1: je mozno pouze -- sloupcu 2: pouzijte \string\filbreak\space jako alternativu 3: problem, vypina se vyvazovani 4: horni plovouci objekt jeste neni podporovan 5: spodni plovouci objekt jeste neni podporovan 6: -- plovouci objekt(y) odlozeny 7: vyvazovani ukonceno po 100 krocich 8: vyvazeno v -- krocich 9: kontrola nerovnost 10: zbyl (mene nez) 1 radek 11: plovouci objekt je pro sloupec prilis siroky 12: plovouci objekt je presunut do nasledujiciho sloupce / -- 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 \startmessages romanian library: columns title: coloane 1: este posibil numai -- coloane 2: folositi \string\filbreak\space ca alternativa 3: probleme, se dezactiveaza alinierea 4: cadrele top (top float) nu sunt inca suportate 5: cadrele bottom (bottom float) nu sunt inca suportate 6: -- blocurile sunt amanate 7: alinierea este oprita dupa 100 de incercari 8: aliniat in -- pas(i) 9: verificat alinierea 10: a mai ramas (mai putin de) 1 linie 11: blocul este prea lat pentru coloana 12: blocul este mutat pe urmatoarea coloana / -- 13: blocul lat este mutat in partea de sus a coloanelor \stopmessages %D In case we're not running \ETEX, we need to bypass a %D couple of primitives. \beginTEX \...discards \chardef \savingvdiscards 1 \let \splitdiscards \relax \let \pagediscards \relax \endTEX % ONE = single column % MUL = multi column % SET = columns sets \def\@@OTR{OTR} % \beginETEX \ifcsname % % \let\ifcs \ifcsname % \let\endcs\endcsname % % \endETEX % % \beginTEX \ifcsname % % \def\ifcs#1\endcs{\@EA\ifx\csname#1\endcsname\relax\else} % % \endTEX % % \def\OTRcommand#1% % {\csname\@@OTR % \ifcs\@@OTR\OTRidentifier\strippedcsname#1\endcs\OTRidentifier\fi % \strippedcsname#1\endcsname} \let\OTRdefault\empty \beginETEX \ifcsname \def\OTRcommand#1% {\csname\@@OTR \ifcsname\@@OTR\OTRidentifier\strippedcsname#1\endcsname \OTRidentifier \else\ifcsname\@@OTR\OTRdefault\strippedcsname#1\endcsname % fallback \OTRidentifier \fi\fi \strippedcsname#1\endcsname} \endETEX \beginTEX \def\OTRcommand#1% {\csname\@@OTR \@EA\ifx\csname\@@OTR\OTRidentifier\strippedcsname#1\endcsname\relax \@EA\ifx\csname\@@OTR\OTRdefault\strippedcsname#1\endcsname\relax % fallback \else \OTRdefault \fi \else \OTRidentifier \fi \strippedcsname#1\endcsname} \endTEX % obsolete \def\installotr#1% andere naam, beter \connectotr of zo {\def\OTRidentifier{#1}} \def\activateotr#1#2% {\def\OTRidentifier{#1}% \def\OTRdefault {#2}} %D The initialization of the \type {\hsize} and \type {\vsize} %D depends on the OTR used. \def\setvsize {\OTRcommand\setvsize} \def\sethsize {\OTRcommand\sethsize} \def\setfootnotehsize {\OTRcommand\setfootnotehsize} \def\finalsidefloatoutput {\OTRcommand\finalsidefloatoutput} \def\dopagecontents {\OTRcommand\dopagecontents} \def\dosettopinserts {\OTRcommand\dosettopinserts} \def\dosetbotinserts {\OTRcommand\dosetbotinserts} \def\dotopinsertions {\OTRcommand\dotopinsertions} \def\dobotinsertions {\OTRcommand\dobotinsertions} \def\dosetbothinserts {\OTRcommand\dosetbothinserts} \def\doflushfloats {\OTRcommand\doflushfloats} \def\flushfloatbox {\OTRcommand\flushfloatbox} \def\docheckiffloatfits {\OTRcommand\docheckiffloatfits} \def\someherefloat {\OTRcommand\someherefloat} \def\somefixdfloat {\OTRcommand\somefixdfloat} \def\somepagefloat {\OTRcommand\somepagefloat} \def\sometopsfloat {\OTRcommand\sometopsfloat} \def\somebotsfloat {\OTRcommand\somebotsfloat} \def\somesidefloat {\OTRcommand\somesidefloat} \def\nextcolumn {\OTRcommand\nextcolumn} % beter een \installotr#1 met #1 = macro en auto test \newif\iftraceotr \newcount\otrlevel \def\outputcounter{-100010} \def\doinvokeoutput% {\iftraceotr \expandafter\dodotracedoutput \else \expandafter\dodoinvokeoutput \fi} \def\dodoinvokeoutput#1% {\bgroup\par\penalty#1\relax\egroup} %\def\dodoinvokeoutput#1% % {\advance\otrlevel 1 % \ifnum\otrlevel>1 \writestatus{otr}{nested output #1}\fi % \bgroup\par\penalty#1\relax\egroup % \advance\otrlevel -1 } \def\dodotracedoutput#1% {\writestatus{\m!otr}{start \the\outputpenalty\space in column \number\mofcolumns}% \writestatus{\m!otr}{v:\the\vsize,g:\the\pagegoal,t:\the\pagetotal,f:\the\ht\footins}% \dodoinvokeoutput{#1}% \writestatus{\m!otr}{v:\the\vsize,g:\the\pagegoal,t:\the\pagetotal,f:\the\ht\footins}% \writestatus{\m!otr}{stop \the\outputpenalty\space in column \number\mofcolumns}} \def\installoutput#1#2% \invoke \action {\decrement\outputcounter \edef#1{\noexpand\doinvokeoutput{\outputcounter}}% \setvalue{\@@OTR\outputcounter}{#2}} \installoutput\dosynchronizeoutput {\ifvoid\footins\else\insert\footins{\unvbox\footins}\fi \ifvoid\topins \else\insert\topins {\unvbox\topins }\fi \ifvoid\botins \else\insert\botins {\unvbox\botins }\fi \unvbox\normalpagebox} \newtoks\mainoutput \mainoutput {\doifdefinedelse{\@@OTR\the\outputpenalty} {\getvalue{\@@OTR\the\outputpenalty}} {\the\OTRcommand\output}} %\mainoutput % {\advance\otrlevel 1 % \ifnum\otrlevel>1 \writestatus{otr}{nested main output}\fi % \doifdefinedelse{\@@OTR\the\outputpenalty} % {\getvalue{\@@OTR\the\outputpenalty}} % {\the\OTRcommand\output}% % \advance\otrlevel -1 } \output{\the\mainoutput} %D In order to force consistent use of variables, we %D predefine a lot of them here. %D The next two registers can be used to store pre column %D material as well as footnotes or so. \newbox\precolumnbox \newdimen\precolumnboxheight \newbox\postcolumnbox \newdimen\postcolumnboxheight %D We reserve a counter for the number of columns as well as %D the current column. Both are not to be changed by users! \newcount\nofcolumns \nofcolumns = 1 \newcount\mofcolumns \mofcolumns = 1 \chardef\maxnofcolumns = 50 \chardef\allocatednofcolumns = 0 %D The next dimensions reports the final column height \newdimen\finalcolumnheights \newcount\finalcolumnlines %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 %D them in one box, but we've got enough boxes. %D %D Two sets of boxes are declared, the txtboxes are used for %D the text, the topboxes are for moved column floats. \def\@col@{@col@} \def\initializecolumns#1% {\ifnum#1>\maxnofcolumns \showmessage{\m!columns}{1}{\maxnofcolumns}% \nofcolumns=\maxnofcolumns \else \nofcolumns=#1\relax \fi \ifnum\nofcolumns>\allocatednofcolumns \dorecurse\nofcolumns {\ifnum\recurselevel>\allocatednofcolumns\relax % \newbox\next \global\letvalue{\@col@-\recurselevel-t}=\next \@EA\newbox\csname\@col@-\recurselevel-t\endcsname % text \@EA\newbox\csname\@col@-\recurselevel-f\endcsname % foot \@EA\newbox\csname\@col@-\recurselevel-h\endcsname % top insert \@EA\newbox\csname\@col@-\recurselevel-l\endcsname % top insert \fi}% \global\chardef\allocatednofcolumns=\nofcolumns \fi} \def\firstcolumnbox {\columntextbox1} \def\currentcolumnbox {\columntextbox\mofcolumns} \def\lastcolumnbox {\columntextbox\nofcolumns} \def\firsttopcolumnbox {\columntopbox 1} \def\currenttopcolumnbox{\columntopbox \mofcolumns} \def\lasttopcolumnbox {\columntopbox \nofcolumns} \def\columntextbox#1{\csname\@col@-\number#1-t\endcsname} \def\columnfootbox#1{\csname\@col@-\number#1-f\endcsname} \def\columntopbox #1{\csname\@col@-\number#1-h\endcsname} \def\columnbotbox #1{\csname\@col@-\number#1-l\endcsname} \def\columnsettextbox{\global\setbox\columntextbox} \def\columnsetfootbox{\global\setbox\columnfootbox} \def\columnsettopbox {\global\setbox\columntopbox} \def\columnsetbotbox {\global\setbox\columnbotbox} \def\columngettextbox{\copy\columntextbox} \def\columngetfootbox{\copy\columnfootbox} \def\columngettopbox {\copy\columntopbox} \def\columngetbotbox {\copy\columnbotbox} \def\columnerasetextboxes{\dorecurse\allocatednofcolumns{\columnsettextbox\recurselevel\emptybox}} \def\columnerasefootboxes{\dorecurse\allocatednofcolumns{\columnsetfootbox\recurselevel\emptybox}} \def\columnerasetopboxes {\dorecurse\allocatednofcolumns{\columnsettopbox \recurselevel\emptybox}} \def\columnerasebotboxes {\dorecurse\allocatednofcolumns{\columnsetbotbox \recurselevel\emptybox}} %D Without going in details we present two macro's which handle %D the columns. The action which is transfered by the the first %D and only parameter can do something with \type %D {\currentcolumnbox}. In case of the mid columns, \type %D {\firstcolumnbox} and \type {\lastcolumnbox} are handled %D outside these macro's. \def\dohandlecolumn#1% {\mofcolumns=\recurselevel \let\currentcolumn=\recurselevel #1\relax} \def\dohandleallcolumns#1% {\dorecurse{\nofcolumns}{\dohandlecolumn{#1}}} \def\dohandlerevcolumns#1% {\dostepwiserecurse{\nofcolumns}{1}{-1}{\dohandlecolumn{#1}}} \def\dohandlemidcolumns#1% {\dohandleallcolumns {\ifnum\recurselevel>1\relax\ifnum\recurselevel<\nofcolumns\relax \dohandlecolumn{#1}% \fi\fi}} %D This register can be used as a temporary storage for page %D content. \newbox\restofpage %D Features. \newif\ifintermediatefootnotes \newif\ifcarryoverfootnotes %\carryoverfootnotestrue \newif\iflastcolumnfootnotes %\lastcolumnfootnotestrue \newif\ifbalancecolumns %\balancecolumnstrue \newif\ifbalancetoheight %\balancetoheighttrue \newif\ifforcecolumngrid \forcecolumngridtrue \newif\ifstretchcolumns \stretchcolumnsfalse \newif\ifinheritcolumns \inheritcolumnsfalse \newif\ifheightencolumns \heightencolumnsfalse \newif\ifbalancingcolumns \newif\ifcollectingcontent \newif\ifcolumnoverflow \newif\iffinalflushingfloats \newif\ifpackflushedfloats \packflushedfloatstrue % for the moment \newdimen\intercolumnwidth \newdimen\localcolumnwidth \newdimen\savedpagetotal \chardef\columndirection=0 % 0:lr 1:rl \def\minbalancetoplines {1} \def\minfreecolumnlines {2} \newif\ifrecentercolumnbox \recentercolumnboxtrue \newif\ifrerecentercolumnbox \rerecentercolumnboxtrue \newif\ifpackcolumnfloats \packcolumnfloatstrue \newbox\collectedpagefloats %D The \type {\ifdim} test is needed, because otherwise the %D last line of a text end up on top of the baseline instead of %D on the baseline, as is the case with preceding pages. %D Also, a \type {\vfil} better than a \type {\vfill}. \def\doejectpage% {\par\ifdim\pagetotal>\pagegoal\else\normalvfil\fi} \def\ejectpage% {\doejectpage\eject} \def\superejectpage% {\doejectpage\supereject} \def\ejectinsert% {\flushfootnotes \bgroup \noftopfloats=\!!thousand \nofbotfloats=0 \doflushfloats \egroup} \def\ejectdummypage% {\ejectinsert \hardespatie % will be different \vfill \ejectpage} \def\beforefinaloutput% {} \def\afterfinaloutput% {\forgetall \vskip\!!zeropoint\relax \ifvoid\normalpagebox \else \unvbox\normalpagebox \penalty\outputpenalty \fi \ifnum\outputpenalty>-\@MM\relax \else \dosupereject \fi \inpagebodytrue % needed for enabling \blanko ! \dosetbothinserts % to be reconsidered !!!!!!!!!!!!!! \setvsize % this is needed for interacting components, like floats and multicolumns \adaptfuzzypagegoal} % watch this hack! \def\dofinaloutput#1#2% {\beforefinaloutput \the\everybeforeshipout \ifspecialbasedsettings \myshipout{\hbox{\hbox to \!!zeropoint{\the\pageboundsettings}\hbox{\dopagebody#1#2\setpagecounters}}}% \else \the\pageboundsettings \myshipout{\hbox{\dopagebody#1#2\setpagecounters}}% \fi \the\everyaftershipout \afterfinaloutput \popcolor} % ... and here ... \def\donofinaloutput#1#2% {\beforefinaloutput \the\everybeforeshipout \setpagecounters \message{[-\the\realpageno]}% \setbox0=\hbox {\the\everyshipout \dopagebody#1#2}% \deadcycles=0 \gotonextrealpage \the\everyaftershipout \afterfinaloutput \popcolor} % ... and here \def\finaloutput#1#2% {\checkpageversion \ifverwerken \ifgeselecteerd \dofinaloutput#1#2% \else \donofinaloutput#1#2% \fi \else \ifgeselecteerd \donofinaloutput#1#2% \else \dofinaloutput#1#2% \fi \fi \resetselectiepagina \verhoogpaginanummer \checkpagedimensions \ifnum\outputpenalty>-\@MM\relax \else \dosupereject \fi \douitstellen} \def\dooutput% {\finaloutput\unvbox\normalpagebox} \maxdeadcycles=1000 % will be installable tracer \newif\ifvoorlopig \voorlopigfalse \newif\ifconcept \conceptfalse \def\doplaatsversieaanduiding#1#2% {\doifsomething{#2} {\@EA\convertargument#2\to\ascii \ #1: \ascii\ \!!doneatrue}} \def\plaatsversieaanduiding% nog engels maken {\ifvoorlopig \vskip\!!sixpoint \hbox to \zetbreedte {\infofont \getmessage\m!systems{27}: \currentdate\ \doplaatsversieaanduiding{Project}\currentproject \doplaatsversieaanduiding{Produkt}\currentproduct \doplaatsversieaanduiding{Onderdeel}\currentcomponent \if!!donea\else\ File: \jobname\fi \hss\reportpagedimensions}% \fi \ifconcept \vskip\!!sixpoint \hbox to \zetbreedte {\infofont Concept: \currentdate \hss\reportpagedimensions}% \fi} % tot hier \def\doversie[#1]% {\voorlopigfalse \conceptfalse \overfullrule=\!!zeropoint \processaction [#1] [\v!voorlopig=>\voorlopigtrue\overfullrule=5pt, \v!concept=>\concepttrue]} \def\versie% {\dosingleargument\doversie} \def\addstatusinfo#1% {\ifvoorlopig \donetrue \fi \ifconcept \donetrue \fi \ifdone \setbox#1=\vbox to \papierhoogte {\vsmashbox#1\box#1 \offinterlineskip \vskip\topspace \hsize\papierbreedte \hfill\hbox{\plaatstestinfo\hskip.5cm}\vss \settexthoffset\hskip\texthoffset \tlap{\plaatsversieaanduiding} \vskip.5cm}% \fi} % this will be inserts some day %\newinsert\referentieinfobox %\newinsert\registerinfobox %\newinsert\floatinfobox \newbox\referentieinfobox \newbox\registerinfobox \newbox\floatinfobox \def\dotestinfo#1#2#3% {\ifvoorlopig\ifinpagebody\else \begingroup \convertargument#3\to\ascii \xdef\extratestinfo% {#2 \ascii}% \gdef\totaltestinfo% {\global\setbox#1=\vbox {\unvbox#1\relax %\insert#1{% \infofont \stelinterliniein \hbox {\strut \expandafter\doboundtext\expandafter {\extratestinfo} {12em} {..}% \quad}}}% \endgroup \ifinner \aftergroup\totaltestinfo \else \totaltestinfo \fi \fi\fi} \def\referentieinfo% {\dotestinfo\referentieinfobox} \def\registerinfo% {\dotestinfo\registerinfobox} \def\floatinfo% {\dotestinfo\floatinfobox} \def\plaatstestinfo% {\ifvoorlopig \vbox to \zethoogte {\forgetall \infofont \hsize10em \ifvoid\floatinfobox\else \strut \getmessage\m!systems{24} \vskip\!!sixpoint \unvbox\floatinfobox \vskip\!!twelvepoint \fi \ifvoid\referentieinfobox\else \strut \getmessage\m!systems{25} \vskip\!!sixpoint \unvbox\referentieinfobox \vskip\!!twelvepoint \fi \ifvoid\registerinfobox\else \strut \getmessage\m!systems{26} \vskip\!!sixpoint \unvbox\registerinfobox \fi \vss} \fi} \versie[\v!definitief] % Output routines % % \dopagecontents#1#2 : tekst, floats en footnotes % \dopagebody#1#2 : hoofd, \pagecontents, voet % \dooutput : outputroutine % % \ifinpagebody % De volgende macro's worden gedefinieerd in de module % colo-ini. Om resetten bij twee maal laden te voorkomen % checken we wel even. Anders krijgen we een mark-build-up. \newif\ifinpagebody \ifx\pushcolor\undefined \let \pushcolor \relax \let \popcolor \relax \let \startcolorpage \relax \let \stopcolorpage \relax \fi % bewaren tvb documentatie % % \hbox to \hsize % {\en % \switchnaarkorps[5pt]% % \emergencystretch2em % \dimen0=\baselineskip % \baselineskip=\dimen0 plus 1pt % \hsize=.2\hsize % \vsize=2\hsize % \ruledvbox to \vsize{\input tufte \par}\hss % \ruledvbox to \vsize{\input tufte \par\kern-\prevdepth}\hss % \ruledvbox to \vsize{\input tufte \par\kern0pt}\hss % \ruledvbox to \vsize{\input tufte \par\vfill}\hss % \ruledvbox to \vsize{\input tufte \par\kern-\prevdepth\vfill}} % % \hbox to \hsize % {\en % \switchnaarkorps[5pt]% % \emergencystretch2em % \dimen0=\baselineskip % \baselineskip=\dimen0 plus 1pt % \hsize=.18\hsize % \vsize=2.5\hsize % \setbox0=\vbox{\input tufte\relax}% % \ruledvbox to \vsize{\unvcopy0}\hss % \ruledvbox to \vsize{\unvcopy0\kern-\dp0}\hss % \ruledvbox to \vsize{\unvcopy0\kern0pt}\hss % \ruledvbox to \vsize{\unvcopy0\vfill}\hss % \ruledvbox to \vsize{\unvcopy0\kern-\dp0\vfill}} \newtoks\afterpage \newtoks\aftereverypage \newtoks\beforepage \newtoks\beforeeverypage \newif\ifshowgrid \showgridfalse \def\showgrid% {\tracegridsnappingtrue \showgridtrue} \def\buildpagebox#1% {\setbox#1=\vbox to \papierhoogte {\hsize\papierbreedte \vskip\kopwit \doifbothsides \hskip\rugwit \orsideone \hskip\rugwit \orsidetwo \hskip\papierbreedte \hskip-\rugwit \hskip-\zetbreedte \od \box#1}% \dp#1=\!!zeropoint} \newif\ifpagebodyornaments \pagebodyornamentstrue \newif\ifarrangingpages \arrangingpagesfalse \let\poparrangedpages=\relax \let\pusharrangedpage=\relax \def\reportarrangedpage#1% {\showmessage {\m!systems}{23} {\the\realpageno.\the\pageno\ifnum\subpageno>0 .\the\subpageno\fi,#1}} \newif\ifsavepagebody \newbox\savedpagebody \def\buildpagebody#1#2% {\ifsavepagebody\global\setbox\savedpagebody\fi \vbox {\beginrestorecatcodes \forgetall % igv problemen, check: \boxmaxdepth\maxdimen \boxmaxdepth\maxdimen % new \mindermeldingen \setbox0=\vbox {\offinterlineskip \ifpagebodyornaments % \getbackgroundbox % \getlogobox \bgroup % else footnotes get inconsistent font/baseline \doconvertfont{\@@lyletter}{}% layoutparameter ? \offinterlineskip \gettextboxes \egroup \fi \getmainbox#1#2}% including footnotes \ifpagebodyornaments \addmainbackground0% \addlogobackground0% \fi \buildpagebox0% \addstatusinfo0% new \ifpagebodyornaments \addpagebackground0% \fi \ifarrangingpages \else \addpagecutmarks0% \replicatepagebox0% \scalepagebox0% \mirrorpaperbox0% \rotatepaperbox0% \addpagecolormarks0% \centerpagebox0% \addprintbackground0% \mirrorprintbox0% \rotateprintbox0% \offsetprintbox0% \negateprintbox0% \fi \box0% \endrestorecatcodes}% \ifsavepagebody\copy\savedpagebody\fi} \def\finishpagebox#1% {\ifarrangingpages \addpagecutmarks#1% \addpagecolormarks#1% \centerpagebox#1% \mirrorprintbox#1% \rotateprintbox#1% \offsetprintbox#1% \negateprintbox#1% \fi} \chardef\normalpagebox=255 \appendtoks \restoreglobalbodyfont \to \everypagebody \appendtoks \restorecolumnsettings \to \everypagebody \def\dopagebody#1#2% {\getallmarks \the\everypagebody \startcolorpage \gotonextsubpage % nog eens: als in pagina (tbv standaard opmaak) \dontshowboxes % dan hier blokkeren en verderop resetten \naastpagina \checkreferences \checkmargeblokken \dotoks\beforeeverypage \flushtoks\beforepage \inpagebodytrue\buildpagebody#1#2% \flushtoks\afterpage \dotoks\aftereverypage \resetpagina \updatelistreferences \resetlayoutlines % will go to \aftereverypage \stopcolorpage} \newtoks\pageboundsettings \prependtoks \initializepaper \to \pageboundsettings \let\checkpageversion=\relax % not here \newif\ifpaginageblokkeerd \paginageblokkeerdfalse \def\testpagina[#1][#2]% {\ifpaginageblokkeerd \else \ifdim\pagetotal<\pagegoal \dimen0=\lineheight \multiply\dimen0 by #1\relax \advance\dimen0 by \pagetotal \ifdim\lastskip<\parskip \advance\dimen0 by \parskip \fi \advance\dimen0 by #2\relax \ifdim\dimen0>.99\pagegoal \penalty-\!!tenthousand\relax \fi \else \goodbreak \fi \fi} \let\resetcurrentsectionmarks=\relax % was: \resetsectionmarks[\firstsection], zie \handelpaginaaf \def\docomplexpagina[#1]% {\flushfootnotes \bgroup \processallactionsinset [#1] [ \v!reset=>\global\paginageblokkeerdfalse, \v!blokkeer=>\global\paginageblokkeerdtrue, \v!ja=>\ifpaginageblokkeerd\else \ejectinsert \ejectpage \ifbinnenkolommen \ejectpage % anders soms geen overgang \fi \fi, \v!opmaak=>\ifpaginageblokkeerd\else \eject \fi, \v!blanko=>\pagebodyornamentsfalse, \v!nee=>\ifpaginageblokkeerd\else \dosomebreak\nobreak \fi, \v!voorkeur=>{\ifpaginageblokkeerd\else \ifbinnenkolommen \dosomebreak\goodbreak \else \testpagina[3][\!!zeropoint]% \fi \fi}, \v!grotevoorkeur=>{\ifpaginageblokkeerd\else \ifbinnenkolommen \dosomebreak\goodbreak \else \testpagina[5][\!!zeropoint]% \fi \fi}, \v!leeg=>{\ejectinsert \ejectpage \doifnotvalue{\??tk\v!hoofd\v!tekst\c!status}{\v!stop} {\setupheader[\c!status=\v!leeg]}% \doifnotvalue{\??tk\v!voet\v!tekst\c!status}{\v!stop} {\setupfooter[\c!status=\v!leeg]}% \ejectdummypage}, \v!links=>{\ejectinsert \superejectpage \doifbothsidesoverruled \orsideone \resetcurrentsectionmarks \ejectdummypage \orsidetwo \od}, \v!rechts=>{\ejectinsert \superejectpage \doifbothsidesoverruled \orsideone \orsidetwo \resetcurrentsectionmarks \ejectdummypage \od}, \v!even=>\pagina \doifonevenpaginaelse {\resetcurrentsectionmarks\ejectdummypage}{}, \v!oneven=>\pagina \doifonevenpaginaelse {}{\resetcurrentsectionmarks\ejectdummypage}, \v!viertal=>{\ifdubbelzijdig \!!counta=\realpageno \!!countb=\realpageno \divide\!!counta by 4 \divide\!!countb by 2 \ifnum\!!counta=\!!countb \else \pagina \pagina[\v!leeg]% \pagina[\v!leeg]% \fi \fi}, \v!laatste=>{\ejectinsert \superejectpage \doifbothsidesoverruled \naastpagina \orsideone \orsidetwo %\ifodd\realpageno \else % kan weer weg \noheaderandfooterlines \ejectdummypage %\fi \od \filluparrangedpages}, \s!unknown=>\doifinstringelse{+}{#1} {\ejectinsert\ejectpage \dorecurse{#1}{\ejectdummypage}} {\doifnumberelse{#1} {\ejectinsert\ejectpage \doloop {\ifnum\userpageno<#1\relax \ejectdummypage \else \exitloop \fi}} {}}]% \egroup} \def\complexpagina[#1]% {\expanded{\docomplexpagina[#1]}} \def\simplepagina% % {\docomplexpagina[\v!ja]} {\flushfootnotes \ifpaginageblokkeerd\else \ejectinsert \ejectpage \ifbinnenkolommen \ejectpage % anders soms geen overgang \fi \fi} \definecomplexorsimple\pagina \def\resetpagina% {\global\paginageblokkeerdfalse} % 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 \newif\ifselecteren \selecterenfalse \newif\ifverwerken \verwerkentrue \def\selectie{} \def\paginasoort{} \let\naastpagina=\relax \let\napagina=\relax \let\voorpagina=\relax \def\dovoorpagina% {\doifsomething{\paginasoort} {\def\dododopagina##1% {\global\let\voorpagina=\relax \getvalue{\??pg##1\c!voor}}% \processcommacommand[\paginasoort]\dododopagina}} \def\dododonapagina#1% {\global\let\napagina=\relax \gdef\paginasoort{}% \getvalue{\??pg#1\c!na}} \def\donapagina% {\doifsomething{\paginasoort} {\def\dodopagina##1% {\doifelsevalue{\??pg##1\c!optie}{\v!dubbelzijdig} {\doifbothsidesoverruled \dododonapagina{##1}% \orsideone \dododonapagina{##1}% \orsidetwo \od}% {\dododonapagina{##1}}}% \processcommacommand[\paginasoort]\dodopagina}} \def\dosoortpagina[#1]% {\doglobal\addtocommalist{#1}\paginasoort \ifselecteren \ExpandBothAfter\doifcommon{#1}{\selectie} {\global\geselecteerdtrue}% \fi \gdef\voorpagina{\dovoorpagina}% \gdef\napagina{\donapagina}} \def\soortpagina% {\dosingleargument\dosoortpagina} \def\dokoppelpagina[#1][#2]% {\getparameters [\??pg] [\c!voor=, \c!na=, \c!optie=, #2]% \def\docommando##1% {\getparameters [\??pg##1] [\c!voor=\@@pgvoor, \c!na=\@@pgna, \c!optie=\@@pgoptie]}% \processcommalist[#1]\docommando}% \def\koppelpagina% {\dodoubleargument\dokoppelpagina} \def\doverwerkpagina[#1][#2]% {\processaction [#2] [ \v!ja=>\global\verwerkentrue, \v!nee=>\global\verwerkenfalse]% \gdef\selectie{#1}% \global\selecterentrue \global\geselecteerdfalse} \def\verwerkpagina% {\dodoubleargument\doverwerkpagina} \def\resetselectiepagina% {\ifselecteren \doifbothsidesoverruled \global\geselecteerdfalse \orsideone \orsidetwo \global\geselecteerdfalse \od \fi} \protect \endinput