%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} % still a dutch/english mess %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 % 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: module -- geladen 6: geen module -- gevonden 7: 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: module -- loaded 6: module -- not found 7: 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: Modul -- geladen 6: Modul -- gefunden 7: 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 french library: systems title: système 1: chargement de fichier utilitaire reporté (typemode) 2: -- chargé % 3: try LaTeX 4: la commande -- est déjà définie 5: module -- chargé 6: module -- non trouvé 7: module -- déjà chargé 8: nouvelle version de fichier utilitaire, seconde passe nécessaire 9: -- non trouvé/traité 10: n'utilisez pas em dans -- 11: construction util simple 12: le fichier utilitaire n'est pas trié, utilise texutil 13: marquage -- defini -- 14: nouvellepage forcée dans la liste à -- 15: sauvegarde du tampon (buffer) -- 16: composition du tampon (buffer) -- 17: composition textuelle du tampon (buffer) -- 18: le synonyme -- -- n'existe pas 19: signification (synonymes) de -- chargée 20: signification (tris) de -- chargée 21: pas de données utilitaires chargées 22: utilise un fichier utilitaire valide 23: -- arrangé à -- 24: blocsflottants 25: Réferences 26: Registres 27: Version \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 \startmessages french library: layouts title: calque 1: hauteurtexte adaptée avec -- à la page -- 2: -- times postponed text placed 3: -- times text postponed 4: blocsmarge actifs 5: blocsmarge inactifs 6: jeu de souspage -- traité (taille --) % 7: calculating logospace % 8: calculating backgrounds 10: -- et -- ne sont pas ajoutés à 1.0 11: espacement -- non permis en modegrille \stopmessages \def\m!otr{otr} \chardef\normalpagebox=255 \newbox\pagebox \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 \ifx\realpageno\undefined \countdef\realpageno\zerocount \realpageno\plusone \fi \ifx\realfolio\undefined \def\realfolio{\the\realpageno} \fi \newcount\nofshipouts \appendtoks \global\advance\nofshipouts\plusone \to \everyaftershipout % 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 too 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 \startmessages french library: columns title: colonnes 1: seules -- colonnes possibles 2: utilisez \string\filbreak\space en tant qu'alternative 3: problèmes, désactive l'équilibrage 4: flottant en partie supérieure pas encore supporté 5: flottant en partie inférieure pas encore supporté 6: -- flottant(s) reporté(s) 7: équilibrage abandonné après 100 pas 8: équilibré en -- pas 9: vérification des irrégularités 10: (moins de) 1 ligne restante 11: flottant mis à la largeur de la colonne 12: flottant déplacé à la colonne suivante / -- 13: flottant large déplacé dans la partie supérieure de la colonne \stopmessages \ifx\dosetuplayout\undefined % overloaded in page-lay ! \def\setuplayout{\dodoubleempty\getparameters[\??ly]} \fi \ifx\mkprocesscolumncontents\undefined\let\mkprocesscolumncontents\gobbleoneargument\fi \ifx\mkprocesspagecontents \undefined\let\mkprocesspagecontents \gobbleoneargument\fi \ifx\mkprocessboxcontents \undefined\let\mkprocessboxcontents \gobbleoneargument\fi \def\normalejectpenalty{-\@M} \let\ejectpenalty\normalejectpenalty \def\normalsuperpenalty{-\@MM} \let\superpenalty\normalsuperpenalty %D In case we're not running \ETEX, we need to bypass a %D couple of primitives. \beginTEX \...discards \chardef \savingvdiscards \zerocount \let \splitdiscards \relax \let \pagediscards \relax \endTEX % ONE = single column % MUL = multi column % SET = columns sets \def\@@OTR{OTR} \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 \OTRdefault \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\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\flushsavedfloats {\OTRcommand\flushsavedfloats} \def\synchronizehsize {\OTRcommand\synchronizehsize} \def\gotonextpage {\OTRcommand\gotonextpage } \def\gotonextpageX{\OTRcommand\gotonextpageX} % will become obsolete % beter een \installotr#1 met #1 = macro en auto test \newif \iftraceotr \newif \ifinotr \newtoks \mainoutput \newcount\otrlevel % When issuing two \par\penalty-\@M's, only the first % triggers the otr; obscure feature or optimization? \def\outputcounter{-100010} % -10010 \def\doinvokeoutput {\iftraceotr \expandafter\dodotracedoutput \else \expandafter\dodoinvokeoutput \fi} \def\outputmessage#1#2#3% {\iftraceotr\writestatus\m!otr{#1 #2 \number#3}\fi} \def\dodoinvokeoutput#1% {\outputmessage+{special}{#1}% \bgroup\par\penalty#1\relax\egroup \outputmessage-{special}{#1}} \def\dodotracedoutput#1% {\outputmessage+{traced}{#1/\the\outputpenalty}% \writestatus\m!otr{c:\number\mofcolumns,v:\the\vsize,g:\the\pagegoal,t:\the\pagetotal}% \dodoinvokeoutput{#1}% \writestatus\m!otr{c:\number\mofcolumns,v:\the\vsize,g:\the\pagegoal,t:\the\pagetotal}% \outputmessage-{traced}{#1/\the\outputpenalty}} \def\installoutput#1#2% \invoke \action {\decrement\outputcounter \edef#1{\noexpand\doinvokeoutput{\outputcounter}}% \setvalue{\@@OTR\outputcounter}{#2}} \def\invokeoutputroutine {\outputmessage+{trying}\outputpenalty \executeifdefined{\@@OTR\the\outputpenalty}\dodonormaloutput \outputmessage-{trying}\outputpenalty} \def\dodonormaloutput {\outputmessage+{normal}\outputpenalty \the\OTRcommand\output \outputmessage-{normal}\outputpenalty} \mainoutput{\invokeoutputroutine} \output{\inotrtrue\the\mainoutput} %D Some hooks: \output{\inotrtrue\the\everybeforeoutput\the\mainoutput\the\everyafteroutput} \ifx\pagediscards\undefined \let\pagediscards\relax \fi \installoutput\synchronizeoutput % maybe add pagediscards {\ifvoid\normalpagebox\else \unvbox\normalpagebox \pagediscards % maybe not needed ? \fi} \installoutput\discardpage {\setbox\scratchbox\box\normalpagebox} %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!columns1\maxnofcolumns \nofcolumns\maxnofcolumns \else \nofcolumns#1\relax \fi \ifnum\nofcolumns>\allocatednofcolumns \dorecurse\nofcolumns {\ifnum\recurselevel>\allocatednofcolumns\relax % \newbox\next \letgvalue{\@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 {\columntextbox\plusone} \def\currentcolumnbox {\columntextbox\mofcolumns} \def\lastcolumnbox {\columntextbox\nofcolumns} \def\firsttopcolumnbox {\columntopbox \plusone} \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\plusone\minusone{\dohandlecolumn{#1}}} \def\dohandlemidcolumns#1% {\dohandleallcolumns {\ifnum\recurselevel>\plusone \ifnum\recurselevel<\nofcolumns \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 \newbox\collectedleftpagefloats \newbox\collectedrightpagefloats %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}. % to be replaced by \page[now] \page[final] / merged % \def\eject {\par\penalty-\@M } % == {\par\break} % plain % \def\supereject {\par\penalty-\@MM} % also plain \def\eject {\par\ifvmode\penalty\ejectpenalty\fi\resetpagebreak} % == {\par\break} % plain \def\supereject {\par\ifvmode\penalty\superpenalty\fi\resetpagebreak} % also plain \def\doejectpage {\par\ifvmode\ifdim\pagetotal>\pagegoal\else\normalvfil\fi\fi} % pg set to \textheight \def\ejectpage {\doejectpage\eject} \def\superejectpage{\doejectpage\supereject} \ifx\bye\undefined \def\bye{\par\vfill\supereject\end} \fi % plain tex command % floats % % \def\ejectinsert % {\flushnotes % \bgroup % \noftopfloats\plusthousand % \nofbotfloats\zerocount % \doflushfloats % \egroup} \def\ejectinsert {\flushnotes \bgroup \noftopfloats\plusthousand \nofbotfloats\zerocount % this is needed in case a float that has been stored % ends up at the current page; this border case occurs when % the calculated room is 'eps' smaller that the room available % when just flushing; so now we have (maybe optional): \pagebaselinecorrection % alas, this is tricky but needed (first surfaced in prikkels) \doflushfloats \egroup} \def\ejectdummypage {\endgraf \ifvmode \ejectinsert \hardespatie % will be different \vfill \gotonextpage \fi} \def\beforefinaloutput {} \def\afterfinaloutput {\forgetall \vskip\zeropoint\relax \ifvoid\normalpagebox \else \unvbox\normalpagebox \penalty\outputpenalty \fi % not really needed, replaced by \flushsavedfloats \ifnum\outputpenalty>\superpenalty \else % better use a proper otr signal \dosupereject \fi % but does not hurt either (we're still in the otr!) \inpagebodytrue % needed for enabling \blank ! \flushsavedfloats % was \dosetbothinserts; only otr one ! \setvsize % this is needed for interacting components, like floats and multicolumns \adaptfuzzypagegoal} % watch this hack! \def\dofinaloutput#1#2% \vbox: prevents spurious spaces in every..pagebody {\beforefinaloutput \the\everybeforeshipout % brrr not in shipout \ifspecialbasedsettings \myshipout{\hbox{\hbox to \zeropoint{\the\pageboundsettings}% \hbox{\vbox{\dopagebody#1#2\setpagecounters}}}}% \else \the\pageboundsettings \myshipout{\hbox{\vbox{\dopagebody#1#2\setpagecounters}}}% \fi \the\everyaftershipout \afterfinaloutput \popproperties} % ... and here ... \def\donofinaloutput#1#2% {\beforefinaloutput \the\everybeforeshipout \setpagecounters \message{[-\the\realpageno]}% \setbox\scratchbox\hbox {%\the\everyshipout % still needed here ? \dopagebody#1#2}% \deadcycles\zerocount \gotonextrealpage \the\everyaftershipout \afterfinaloutput \popproperties} % ... and here % beware: \ifprocessingpages is in use \ifx\checkpageversion\undefined \let\checkpageversion\relax \fi % todo: hook into \everybeforeshipout \ifx\doflushspread \undefined \let\doflushspread \relax \fi % todo \def\finaloutput#1#2% {\checkpageversion \ifprocessingpages \ifpageselected \@EAEAEA\dofinaloutput \else \@EAEAEA\donofinaloutput \fi \else \ifpageselected \@EAEAEA\donofinaloutput \else \@EAEAEA\dofinaloutput \fi \fi#1#2% \resetselectiepagina \incrementpagenumber \checkpagedimensions \ifnum\outputpenalty>\superpenalty \else \dosupereject \fi \doflushspread \dopostponeblock} \def\dooutput {\finaloutput\unvbox\normalpagebox} \maxdeadcycles=1000 % will be installable tracer; better use chardef % this needs a real cleanup \def\doplaceversiontext#1#2% {\doifsomething{#2} {\defconvertedcommand\ascii{#2}% \space#1:\space\ascii\space \!!doneatrue}} \def\placeversioninfo % nog engels maken {\ifcase\conceptmode % 0 : nothing \or % 1 : simple \vskip\!!sixpoint \hbox to \makeupwidth {\infofont \v!concept:\space\currentdate \hss\reportpagedimensions}% \else % 2/3 : extensive \vskip\!!sixpoint \hbox to \makeupwidth {\infofont \getmessage\m!systems{27}:\space\currentdate\space \doplaceversiontext\v!project \currentproject \doplaceversiontext\v!product \currentproduct \doplaceversiontext\v!component\currentcomponent \if!!donea\else\space\v!file:\space\jobname\fi \hss\reportpagedimensions}% \fi} % tot hier \def\doversion[#1]% {\chardef\conceptmode\zerocount \overfullrule\zeropoint \processaction % \v!final=> [#1] [ \v!concept=>\chardef\conceptmode\plusone, % simple banner \v!file=>\chardef\conceptmode\plustwo, % full banner \v!temporary=>\chardef\conceptmode\plusthree % full banner plus \overfullrule5\points]} % info in the margin \def\version {\dosingleargument\doversion} \def\addstatusinfo {\ifcase\conceptmode \@EA\gobbleoneargument \else \@EA\doaddstatusinfo \fi} \def\doaddstatusinfo#1% {\setbox#1\vbox to \paperheight {\vsmashbox#1\box#1% \offinterlineskip \vskip\topspace \hsize\paperwidth \hfill\hbox{\placetestinfo\hskip.5cm}\vss \settexthoffset\hskip\texthoffset % brrrr %\tlap{\placeversioninfo}\vskip.5cm \vbox to 1cm{\vss\placeversioninfo\vss}}} \def\dotestinfo#1#2#3% {\ifinpagebody\else\ifnum\conceptmode=\plusthree \begingroup \defconvertedcommand\ascii{#3}% \xdef\extratestinfo {#2\space\ascii}% \gdef\totaltestinfo {\global\setbox#1\vbox {\unvbox#1\relax \infofont \setupinterlinespace \hbox {\strut \expanded{\doboundtext{\extratestinfo}{12em}{..}}% \quad}}}% \endgroup \ifinner \aftergroup\totaltestinfo \else \totaltestinfo \fi \fi\fi} % this will be inserts some day % \installinsertion\referenceinfobox % \installinsertion\registerinfobox % \installinsertion\floatinfobox \newbox\referenceinfobox \newbox\registerinfobox \newbox\floatinfobox \def\referenceinfo{\dotestinfo\referenceinfobox} \def\registerinfo {\dotestinfo\registerinfobox} \def\floatinfo {\dotestinfo\floatinfobox} \def\placetestinfo {\vbox to \makeupheight {\forgetall \infofont \hsize10em \ifvoid\floatinfobox\else \strut \getmessage\m!systems{24}% \vskip\!!sixpoint \unvbox\floatinfobox \vskip\!!twelvepoint \fi \ifvoid\referenceinfobox\else \strut \getmessage\m!systems{25}% \vskip\!!sixpoint \unvbox\referenceinfobox \vskip\!!twelvepoint \fi \ifvoid\registerinfobox\else \strut \getmessage\m!systems{26}% \vskip\!!sixpoint \unvbox\registerinfobox \fi \vss}} \version[\v!final] % 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 \chardef\showgridstate=0 \def\showgrid {\dosingleempty\doshowgrid} \def\doshowgrid[#1]% {\chardef\showgridstate \plusone % downward compatible default \chardef\gridboxlinemode \plusone \chardef\gridboxlinenomode\plusone \processallactionsinset [#1]% [ \v!reset=>\chardef\showgridstate \zerocount, \v!bottom=>\chardef\showgridstate \plusone, \v!top=>\chardef\showgridstate \plustwo, \v!none=>\chardef\gridboxlinemode \zerocount, \v!all=>\chardef\gridboxlinemode \plusone, \v!lines=>\chardef\gridboxlinemode \plustwo, \v!frame=>\chardef\gridboxlinemode \plusthree, \v!nonumber=>\chardef\gridboxlinenomode\zerocount, \v!right=>\chardef\gridboxlinenomode\plusone, \v!left=>\chardef\gridboxlinenomode\plustwo]} \def\buildpagebox#1% {\setbox#1\vbox to \paperheight {\hsize\paperwidth \vskip\topspace \doifbothsides {\hskip\backspace} {\hskip\backspace} {\hskip\paperwidth \hskip-\backspace \hskip-\makeupwidth}% \box#1}% \dp#1\zeropoint} % \newif\ifpagebodyornaments \pagebodyornamentstrue % % \appendtoks % \global\pagebodyornamentstrue % \to \everyaftershipout \newif\ifarrangingpages \arrangingpagesfalse \chardef\pageornamentstate\zerocount % 0=on 1=one-off 2=always-off \def\pagebodyornamentstrue {\chardef\pageornamentstate\zerocount} % for a while \def\pagebodyornamentsfalse{\chardef\pageornamentstate\plusone} % for a while \appendtoks \ifcase\pageornamentstate\or \chardef\pageornamentstate\zerocount \fi \to \everyaftershipout \let\poparrangedpages\relax \let\pusharrangedpage\relax \ifx\shiftprintpagebox\undefined \let\shiftprintpagebox\gobbleoneargument \let\shiftpaperpagebox\gobbleoneargument \fi \ifx\registerpageposition\undefined \let\registerpageposition\gobbleoneargument \fi \def\reportarrangedpage#1% {\showmessage\m!systems {23}{\the\realpageno.\the\pageno\ifnum\subpageno>0 .\the\subpageno\fi,#1}} \newif\ifsavepagebody \newbox\savedpagebody % beware, \??ly is used before defined, i.e. bad module design \setuplayout[\c!method=\v!normal] \def\buildpagebody#1#2% {\ifsavepagebody\global\setbox\savedpagebody\fi \vbox {\beginrestorecatcodes \forgetall % igv problemen, check: \boxmaxdepth\maxdimen \boxmaxdepth\maxdimen % new \dontcomplain % the following plugin uses and sets pagebox; beware: this % will change and is for my (hh) personal experiments \executeifdefined{\??ly\c!method\@@lymethod}% {\getvalue{\??ly\c!method\v!normal}}#1#2% % the finishing touch \ifcase\pageornamentstate \addpagebackground \pagebox \fi \registerpageposition\pagebox \ifarrangingpages \shiftpaperpagebox \pagebox % \v!paper \else \clippagebox \pagebox \addpagecutmarks \pagebox \replicatepagebox \pagebox \scalepagebox \pagebox \mirrorpaperbox \pagebox \orientpaperbox \pagebox \addpagecolormarks \pagebox \centerpagebox \pagebox \addprintbackground\pagebox \mirrorprintbox \pagebox \orientprintbox \pagebox \shiftprintpagebox \pagebox % \v!page \offsetprintbox \pagebox \negateprintbox \pagebox \fi \box\pagebox \endrestorecatcodes}% \ifsavepagebody\copy\savedpagebody\fi} \setvalue{\??ly\c!method\v!normal}#1#2% {\setbox\pagebox\vbox {\offinterlineskip \ifcase\pageornamentstate \bgroup % else footnotes get inconsistent font/baseline \dostartattributes\??ly\c!style\c!color\empty \offinterlineskip \gettextboxes \dostopattributes \egroup \fi \getmainbox#1#2}% including footnotes \ifcase\pageornamentstate \addmainbackground \pagebox \addlogobackground \pagebox \fi \buildpagebox \pagebox \addstatusinfo \pagebox} \def\finishpagebox#1% {\ifarrangingpages \addpagecutmarks #1% \addpagecolormarks#1% \centerpagebox #1% \mirrorprintbox #1% \orientprintbox #1% \offsetprintbox #1% \negateprintbox #1% \fi} \appendtoks \restoreglobalbodyfont \to \everybeforepagebody \appendtoks \restorecolumnsettings \to \everybeforepagebody \ifx\nestednewbox\undefined \newbox\nestednextbox \fi \prependtoks \let\nextbox\nestednextbox \to \everybeforepagebody \def\dopagebody#1#2% {%\getallmarks % now in following token register \the\everybeforepagebody \starttextproperties \gotonextsubpage % nog eens: als in pagina (tbv standaard opmaak) \dontshowboxes % dan hier blokkeren en verderop resetten % \shipoutfacingpage \checkreferences \checkmargeblokken \the\beforeeverypage \flushtoks\beforepage \inpagebodytrue\buildpagebody#1#2% \flushtoks\afterpage \the\aftereverypage \resetpagebreak %updatelistreferences % now in aftereverypage \resetlayouttextlines % will go to \aftereverypage \stoptextproperties \the\everyafterpagebody} \newtoks\pageboundsettings \prependtoks \initializepaper \to \pageboundsettings % not here \newif\ifpaginageblokkeerd \paginageblokkeerdfalse % \chardef\testpagemethod=0 % todo: \testnewpage[method=,lines=,voffset=] % % \def\testpage {\dotripleempty\dotestpage[\plusone]} % \def\testpageonly{\dotripleempty\dotestpage[\plustwo]} % % \def\dotestpage[#1][#2][#3]% % {%\relax % needed before \if % \endgraf % \ifpaginageblokkeerd % % do nothing % \else % %ifnum#1=\plusone\synchronizeoutput\fi % \ifdim\pagegoal<\maxdimen \relax % \ifdim\pagetotal<\pagegoal \relax % \scratchdimen\lineheight % \multiply\scratchdimen#2\relax % \advance\scratchdimen \pagetotal % \ifdim\lastskip<\parskip % \advance\scratchdimen \parskip % \fi % \ifthirdargument % \advance\scratchdimen#3\relax % \fi % \ifcase\testpagemethod % \ifdim\scratchdimen>.99\pagegoal % \vfill\eject % \penalty-\!!tenthousand\relax % \fi % \or % \advance\scratchdimen-\pagegoal % \ifdim\scratchdimen>-\lineheight % \vfill\eject % \penalty-\!!tenthousand\relax % \fi % \or % \getnoflines\pagegoal % \advance\scratchdimen-\noflines\lineheight \relax % \ifdim\scratchdimen>-\lineheight % \vfill\eject % \penalty-\!!tenthousand\relax % \fi % \or % same as 0 but more accurate % \advance\scratchdimen-10\s!sp\relax % \ifdim\scratchdimen>\pagegoal % \vfill\eject % \penalty-\!!tenthousand\relax % \fi % \fi % \else % % force page break / new % % \vfill\eject % \penalty-\!!tenthousand\relax % \fi % \else % \ifnum#1=\plusone\goodbreak\fi % \fi % \fi} \chardef\testpagemethod \zerocount % todo: \testnewpage[method=,lines=,voffset=] \chardef\testpagetrigger\zerocount \def\testpage {\dotripleempty\dotestpage[\plusone ]} % \def\testpageonly{\dotripleempty\dotestpage[\plustwo ]} % no penalties added to the mvl \def\testpagesync{\dotripleempty\dotestpage[\plusthree]} % force sync \def\dotestpage[#1][#2][#3]% don't change, only add more methods {\relax % needed before \if \ifpaginageblokkeerd \endgraf \else % new from here \ifcase\testpagetrigger \endgraf \or \ifvmode \dosomebreak\allowbreak \else % indeed? \vadjust{\allowbreak}% \endgraf \fi \fi % till here \ifdim\pagegoal<\maxdimen \relax \ifdim\pagetotal<\pagegoal \relax \scratchdimen\lineheight \multiply\scratchdimen#2\relax \advance\scratchdimen \pagetotal \ifdim\lastskip<\parskip \advance\scratchdimen \parskip \fi \ifthirdargument \advance\scratchdimen#3\relax \fi \ifcase\testpagemethod \ifdim\scratchdimen>.99\pagegoal \penalty-\!!tenthousand\relax \fi \or \advance\scratchdimen-\pagegoal \ifdim\scratchdimen>-\lineheight \penalty-\!!tenthousand\relax \fi \or \getnoflines\pagegoal \advance\scratchdimen-\noflines\lineheight \relax \ifdim\scratchdimen>-\lineheight \penalty-\!!tenthousand\relax \fi \or % same as 0 but more accurate \advance\scratchdimen-10\s!sp\relax \ifdim\scratchdimen>\pagegoal \penalty-\!!tenthousand\relax \fi \fi \else \ifnum#1=\plusthree \flushpagesofar \fi \fi \else \ifnum#1=\plusone\goodbreak\fi \fi \fi} \def\flushpagesofar {\endgraf \ifdim\pagetotal>\pagegoal \ifdim\dimexpr\pagetotal-\pageshrink\relax>\pagegoal \goodbreak % \penalty0 \else \page \fi \else \fi} \def\testcolumn {\dodoubleempty\dotestcolumn} \def\dotestcolumn[#1][#2]% {%\relax % needed before \if ! \endgraf \ifdim\pagegoal<\maxdimen \ifdim\pagetotal<\pagegoal % \relax \scratchdimen\pagegoal \advance\scratchdimen-\pagetotal \ifdim\lastskip<\parskip \advance\scratchdimen \parskip \fi \ifsecondargument \advance\scratchdimen#2% \fi \getrawnoflines\scratchdimen % raw ! % \message{[\number#1>\number\noflines ?}\wait \ifnum#1>\noflines \column \fi \else \penalty-\!!tenthousand % untested ! ! \column \fi \fi} \let\resetcurrentsectionmarks\relax % was: \resetsectionmarks\firstsection, zie \handlepagebreak \def\page{\pagebreak} % the short form of \pagebreak (mult-com one) \def\resetpagebreak {\global\paginageblokkeerdfalse} \def\simplifypagebreak {\def\dopagebreak[##1]{\goodbreak}} \def\disablepagebreaks {\def\dopagebreak[##1]{}} \def\executepagebreakhandler#1% {\edef\@@pagespecification{#1}% \doifdefinedelse{\??pe:\@@pagespecification} {\getvalue{\??pe:\@@pagespecification}} {\doifdefinedelse{\??pe::\@@pagespecification} {\executepagebreakhandlers{\getvalue{\??pe::\@@pagespecification}}} {\getvalue{\??pe:\s!unknown}}}} \long\def\installpagebreakhandler#1#2% {\long\setvalue{\??pe:#1}{#2}} % \definecomplexorsimple\pagebreak % \def\simplepagebreak % {\executepagebreakhandler\v!ja} % \def\complexpagebreak[#1]% if empty, do nothing and avoid processing, % {\flushnotes % see head's; watch how we group % \doifsomething{#1}{\bgroup\executepagebreakhandlers{#1}\egroup}} \unexpanded\def\pagebreak {\dosingleempty\dopagebreak} \def\dopagebreak[#1]% so, page ornaments are reset after a pagebreak command, unless set {\bgroup \edef\prevrealpageno{\the\realpageno}% \ifcase\pageornamentstate \or % disable reset after shipout \global\chardef\pageornamentstate\plustwo \fi \iffirstargument % or if empty i.e. [] \flushnotes\executepagebreakhandlers{#1}% \else % so, no pagebreak when \pagebreak[] ! ! ! \flushnotes\executepagebreakhandler\v!yes \fi \ifnum\prevrealpageno<\realpageno \global\chardef\pageornamentstate\zerocount \fi \egroup} \def\executepagebreakhandlers#1% {\processcommacommand[#1]\executepagebreakhandler} \installpagebreakhandler \s!dummy {\ejectinsert \gotonextpage \ejectdummypage} \installpagebreakhandler \v!frame {\page\bgroup\showframe\page[\v!empty]\egroup} \installpagebreakhandler \s!unknown {\doifinstringelse{+}\@@pagespecification {\ejectinsert \gotonextpage \dorecurse\@@pagespecification\ejectdummypage} {\doifnumberelse\@@pagespecification {\ejectinsert \gotonextpage \doloop {\ifnum\userpageno<\@@pagespecification\relax \ejectdummypage \else \exitloop \fi}} {}}} \installpagebreakhandler \s!default {} % do nothing if empty \installpagebreakhandler \v!reset {% better not: \global\chardef\pageornamentstate\zerocount \resetpagebreak} \installpagebreakhandler \v!disable {\global\paginageblokkeerdtrue} \installpagebreakhandler \v!yes {\ifpaginageblokkeerd\else \ejectinsert \gotonextpage \ifinsidecolumns % this will move to MUL \ejectpage % anders soms geen overgang \fi \fi} \installpagebreakhandler \v!makeup % ?? {\ifpaginageblokkeerd\else \eject \fi} \installpagebreakhandler \v!blank {\ifcase\pageornamentstate \global\chardef\pageornamentstate\plusone \fi} \installpagebreakhandler \v!no {\ifpaginageblokkeerd\else \dosomebreak\nobreak \fi} \installpagebreakhandler \v!preference {\ifpaginageblokkeerd\else \ifinsidecolumns % this will move to MUL \dosomebreak\goodbreak \else \testpage[3][\zeropoint]% \fi \fi} \installpagebreakhandler \v!bigpreference {\ifpaginageblokkeerd\else \ifinsidecolumns % this will move to MUL \dosomebreak\goodbreak \else \testpage[5][\zeropoint]% \fi \fi} \installpagebreakhandler \v!empty {\ejectinsert \gotonextpage \doifnotvalue{\??tk\v!header\c!state}\v!stop{\setupheader[\c!state=\v!empty]}% \doifnotvalue{\??tk\v!footer\c!state}\v!stop{\setupfooter[\c!state=\v!empty]}% \ejectdummypage} \installpagebreakhandler \v!left {\ejectinsert \gotonextpageX % will become \gotonextpage \doifbothsidesoverruled{}{\resetcurrentsectionmarks\ejectdummypage}{}} \installpagebreakhandler \v!right {\ejectinsert \gotonextpageX % will become \gotonextpage \doifbothsidesoverruled{}{}{\resetcurrentsectionmarks\ejectdummypage}} \installpagebreakhandler \v!even {\page \doifoddpageelse{\resetcurrentsectionmarks\ejectdummypage}\donothing} \installpagebreakhandler \v!odd {\page \doifoddpageelse\donothing{\resetcurrentsectionmarks\ejectdummypage}} \installpagebreakhandler \v!quadruple % not yet ok inside columnsets {\ifdoublesided \!!counta\realpageno \!!countb\realpageno \divide\!!counta 4 \divide\!!countb 2 \ifnum\!!counta=\!!countb \else \executepagebreakhandler\v!yes \executepagebreakhandler\v!empty \executepagebreakhandler\v!empty \fi \fi} \installpagebreakhandler \v!last {\ejectinsert \gotonextpageX % will become \gotonextpage \relax \doifbothsidesoverruled {\shipoutfacingpage} {} {\noheaderandfooterlines \ejectdummypage}% \filluparrangedpages} \installpagebreakhandler \v!lastpage % handy for backpage preceded by empty pages {\executepagebreakhandler\v!yes \ifdoublesided \executepagebreakhandler\v!left \executepagebreakhandler\v!empty \executepagebreakhandler\v!empty \fi} \installpagebreakhandler \v!start {\globallet\shipout\normalshipout} \installpagebreakhandler \v!stop {\globallet\shipout\noshipout} % nb: \executepagebreakhandler\v!hoofd in other ones \installpagebreakhandler \v!header {\doifnotvalue{\??tk\v!header\c!state}\v!stop{\setupheader[\c!state=\v!empty]}} \installpagebreakhandler \v!footer {\doifnotvalue{\??tk\v!footer\c!state}\v!stop{\setupfooter[\c!state=\v!empty]}} % \definepagebreak % [chapter] % [yes,header,right] % % \setuphead % [chapter] % [page=chapter, % header=empty, % footer=chapter] % % \definepagebreak % untested % [lastpage] % [left,{empty,right},{empty,left}] % public page handler, beware: definepage already in use (core-ref) % % \definepagebreak[instance][forsure] % \definepagebreak[forsure][yes,+4] \def\definepagebreak {\dodoubleargument\dodefinepagebreak} \def\dodefinepagebreak[#1][#2]% non recursive, meant for simple mappings {\setvalue{\??pe::#1}{#2}} % 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 \long\def\installcolumnbreakhandler#1#2#3% #1=otr-id #2=tag {\long\setvalue{\??cn:#1:#2}{#3}} \def\definecolumnbreak {\dodoubleargument\dodefinecolumnbreak} \def\dodefinecolumnbreak[#1][#2]% non recursive, meant for simple mappings {\setvalue{\??cn::#1}{#2}} %\def\columnbreak % {\dosingleempty\docolumnbreak} % %\def\docolumnbreak[#1]% % {\expanded{\nextcolumn[\executeifdefined{\??cn::#1}{#1}]}} \definecomplexorsimple\columnbreak \def\simplecolumnbreak {\executecolumnbreakhandler\v!yes} \def\complexcolumnbreak[#1]% if empty, do nothing and avoid processing {\doifsomething{#1}{\executecolumnbreakhandlers{#1}}} \def\executecolumnbreakhandlers#1% {\processcommacommand[#1]\executecolumnbreakhandler} \def\executecolumnbreakhandler#1% here no commalist {\edef\@@columnspecification{#1}% \doifdefinedelse{\??cn:\OTRidentifier:\@@columnspecification} {\getvalue{\??cn:\OTRidentifier:\@@columnspecification}} {\doifdefinedelse{\??cn::\@@columnspecification} {\executecolumnbreakhandlers{\getvalue{\??cn::\@@columnspecification}}} {\getvalue{\??cn:\OTRidentifier:\s!unknown}}}} %let\nextcolumn\columnbreak \let\column \columnbreak % We don't want spurious last pages (due to left over marks): \ifx\undefined\normalshipout \let\normalshipout=\shipout \fi \def\noshipout {\writestatus\m!systems{ignoring further shipouts}% \global\advance\realpageno\minusone % else no flush of resources \dowithnextbox{\deadcycles\zerocount}} % \def\doignorerestoftext % {\ifarrangingpages \else \ifnum\textlevel>\zerocount \else % \globallet\shipout\noshipout % \fi \fi} % % better: \def\doignorerestoftext {\ifarrangingpages \else \ifnum\textlevel=\plusone \globallet\shipout\noshipout \fi \fi} \let\ignorerestoftext\donothing \prependtoks % only ignore in a symmetrical doc \globallet\ignorerestoftext\doignorerestoftext \to \everystarttext % \appendtoks % \ignorerestoftext % \to \everylastshipout \newif\ifpageselected \pageselectedtrue \newif\ifselectingpages \selectingpagesfalse \newif\ifprocessingpages\processingpagestrue \let\pageselection \empty \let\currentpageselection\empty \let\aftershipout \relax \let\beforeshipout \relax \def\dodobeforeshipout#1% {\global\let\beforeshipout\relax \getvalue{\??pg#1\c!before}} \def\dobeforeshipout {\doifsomething\currentpageselection {\processcommacommand[\currentpageselection]\dodobeforeshipout}} \def\dododoaftershipout#1% {\global\let\aftershipout\relax \global\let\currentpageselection\empty \getvalue{\??pg#1\c!after}} \def\dodoaftershipout#1% {\doifelsevalue{\??pg#1\c!option}\v!doublesided {\doifbothsidesoverruled {\dododoaftershipout{#1}} {\dododoaftershipout{#1}} {}} {\dododoaftershipout{#1}}} \def\doaftershipout {\doifsomething\currentpageselection {\processcommacommand[\currentpageselection]\dodoaftershipout}} % Dit wordt eigenlijk nooit en moet worden vervangen door % het meer algemene mechanisme. \def\dopagetype[#1]% {\edef\desoortpagina{#1}% \ifx\desoortpagina\empty \else \@EA\doglobal\@EA\addtocommalist\@EA{\desoortpagina}\currentpageselection \ifselectingpages \fullexpandtwoargsafter\doifcommon\desoortpagina\pageselection {\global\pageselectedtrue}% \fi \gdef\beforeshipout{\dobeforeshipout}% \gdef\aftershipout {\doaftershipout}% \fi} \def\pagetype {\dosingleargument\dopagetype} \def\docouplepage[#1][#2]% {\getparameters [\??pg] [\c!before=, \c!after=, \c!option=, #2]% \def\docommand##1% {\getparameters [\??pg##1] [\c!before=\@@pgbefore, \c!after=\@@pgafter, \c!option=\@@pgoption]}% \processcommalist[#1]\docommand}% \def\couplepage {\dodoubleargument\docouplepage} \def\doprocesspage[#1][#2]% {\processaction [#2] [\v!yes=>\global\processingpagestrue, \v!no=>\global\processingpagesfalse]% \gdef\pageselection{#1}% \global\selectingpagestrue \global\pageselectedfalse} \def\processpage {\dodoubleargument\doprocesspage} \def\resetselectiepagina {\ifselectingpages \doifbothsidesoverruled{\global\pageselectedfalse}{}{\global\pageselectedfalse}% \fi} \newif\ifregistertextareas \newif\iftracetextareas \newbox\registertextbox % \def\registeredtextarea#1#2#3% #1=lower-dp #2=correct-ht #3=box % {\hbox{\box#3}} \def\enabletextarearegistration{\global\registertextareastrue} \def\registeredtextarea#1#2#3% #1=lower-dp #2=correct-ht #3=box {\hbox\bgroup \ifregistertextareas \ifx\registerMPtextarea\undefined \else \setbox\registertextbox\null \wd\registertextbox\wd#3% \ht\registertextbox\ht#3% \dp\registertextbox\dp#3% \ifcase#1\or % 1 \setbox\registertextbox\hbox{\lower\strutdp\box\registertextbox}% \fi \ifcase#2\or % 1 \setbox\registertextbox\hbox{\raise\topskip\hbox{\lower\strutht\box\registertextbox}}% \dp\registertextbox\strutdp \fi \dp\registertextbox\strutdp % needed %\setbox\registertextbox\hbox % {\iftracetextareas\gray\boxrulewidth2pt\ruledhbox\fi % {\registerMPtextarea{\box\registertextbox}}}% \setbox\registertextbox\hbox {\registerMPtextarea{\box\registertextbox}}% \smashbox\registertextbox \box\registertextbox \fi \fi \box#3% \egroup} %D \macros %D {setupoppositeplacing,startopposite} %D %D \starttyping %D \starttext %D test \startopposite \blackrule[width=3cm,height=4cm] \stopopposite test %D test \startopposite \blackrule[width=3cm,height=4cm] \stopopposite test %D \stoptext %D \stoptyping % Moved from page-mar.tex, made english, cleaned up, but still to be % redesigned \newbox\facingpage \def\setupoppositeplacing {\dodoubleargument\getparameters[\??np]} \def\startopposite {\dowithnextboxcontent {\hsize\makeupwidth}% {\global\setbox\facingpage\vbox {\ifvoid\facingpage \@@npbefore \else \@@npinbetween \unvbox\facingpage \fi \box\nextbox}}% \vbox\bgroup} \def\stopopposite {\egroup} \def\finishfacingpage {\ifvoid\facingpage\else \global\setbox\facingpage\vbox to \makeupheight {\unvbox\facingpage \@@npafter \vss}% \fi} \def\shipoutfacingpage {\doif\@@npstate\v!start {\ifvoid\facingpage\else \ifnum\realpageno>\plusone \bgroup \chardef\pageornamentstate\plusone \finishfacingpage \myshipout{\buildpagebody\box\facingpage}% \egroup \else \global\setbox\facingpage\emptybox \fi \fi}} \setupoppositeplacing [\c!state=\v!start, \c!before=, \c!inbetween=\blank, \c!after=] \protect \endinput