Problém se stránkovým zlomem

Marcel Svitalský marcel.svitalsky at centrum.cz
Fri Jul 29 23:51:31 CEST 2005


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Zdravím,

několikrát jsem v různé podobě narazil na v zásadě stejný problém (po
hříchu asi zaviněný mými chabými znalostmi), který jsem vždy nějak
vyřešil, avšak ta řešení mi nikdy nepřišla zrovna košer, a tak by mne
zajímalo, lze-li to dělat lépe a, ano-li, jak.

Oč jde: potřebuji sázet (pracuji v plainu) dlouhé mnohastránkové tabulky
se složitě strukturovanými řádky (z databáse), často víceřádkovými. Pro
ty řádky si připravím vhodná makra, nastavím \offinterlineskip a sypu
tam jeden za druhým. Občas mi to do logu psalo underfull vboxy, takže
jsem ještě upravil makro \pagebody (TBN 262) přidáním \vfill:

\def\pagebody{\vbox to\vsize{\boxmaxdepth=\maxdepth\pagecontents\vfill}}

Až potud vše v pořádku. Někdy tam však potřebuji přidat různé speciální
řádky (např. různé mezititulky apod.), u kterých není vhodné, aby byly
na stránce jako poslední, a které zároveň mají nastavit něco týkajícího
se stránky, na níž jsou umístěny (třeba headline aj.).

A kombinace těchto dvou požadavků mi působí problémy. Pokud totiž za
takovým speciálním řádkem zakáži stránkový zlom a následující normální
řádek se již na stránku nevejde, pak je i tento speciální řádek odebrán
z aktuální strany a přetažen na stranu novou; to však, co měl nastavit,
bylo již provedeno na stráně aktuální, protože se ještě nevědělo, že na
ní nebude, a provedeno to už pochopitelně nebude na té straně nové.

Jak jsem psal, zatím jsem to vždy nějak vyřešil (s pomocí různých kernů
plus a hned zase minus v Pišvejcových velikostech a nulových boxů, které
mají zajistit, aby, pokud se ten spec. řádek na stránku patrně nevejde,
došlo ke zlomu ještě dříve, než na něj dojde řada, atp.), avšak rád bych
věděl, lze-li "nějak zjistit", že box byl odebrán z aktuální strany, a
zajistit, aby se odestály akce, jež na ní vykonal, a provedly se znovu
na straně nové, či lze-li zkrátka tento problém řešit nějak čistěji.

Je možné, že řešení je v dostupné literatuře a já na ně jen dosud
nenarazil (TBN jsem přečetl prakticky celou, avšak nikdy naráz, vždy jen
části, jež jsem právě potřeboval, takže mi to snadno mohlo uniknout). Ať
tak či tak, budu vděčný a předem děkuji za jakoukoli radu nebo nasměrování.

S pozdravem,
Marcel Svitalský
- --

**********************************************************
~  GPG public key (ID 0xD98EC83A) fingerprint:
~  3BEB 4658 A998 B9B3 3476  AD64 EF87 D0A5 D98E C83A

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFC6qTb74fQpdmOyDoRAvl/AJ999DiojjCLpilaDgYHtkBU2kothgCfZauZ
iJrdtOETTEneivj99i0zXDU=
=83pR
-----END PGP SIGNATURE-----





More information about the csTeX mailing list