Problém se stránkovým zlomem

Vit Zyka vit.zyka at seznam.cz
Sat Jul 30 00:26:35 CEST 2005


Marcel Svitalský wrote:
> 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é.

Neni zcela jasne, "co mel nastavit", tak nabizim dva obecne postupy:

1. Merit zaplneni strany pomoci \pagetotal a porovnavat s \pagegoal a 
podle toho se rozhodovat.

2. Pokud to, co nastavujete, je zavisle na cisle strany, pak si ji 
zapiste do souboru (bez \immediate) a ve druhem pruchodu se ridte podle 
nej. Cislo bude odpovidat skutecnemu zalomeni a ne strane pri zpracovani.

Vit Zyka

> 
> 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ý





More information about the csTeX mailing list