[cstex] dlouhé tabulky

Zdenek Wagner zdenek.wagner at gmail.com
Fri Jan 18 12:15:24 CET 2013


Dne 18. ledna 2013 11:34 Josef Tkadlec <tkadlec at fel.cvut.cz> napsal(a):
> Dobrý den,
>
> může mi, prosím, někdo pomoci s následujícím problémem?
>
> Chtěl bych (v LaTeXu) vysázet řadu tabulek různě dlouhých tak, aby
> * byly odděleny danou svislou mezerou,
> * pokud se tabulka nevejde na zbytek stránky (za jinou), začne na další,
> * tabulky delší než výška stránky se rozdělí.
>
> Napadlo mne použít prostředí longtable oddělená danou mezerou + \vfill (to
> by pro více tabulek na stránce mělo roztáhnout mezery mezi nimi, s čímž bych
> se smířil). Předpokládal jsem, že rozdělení tabulky je nějak penalizováno,
> takže \vfill upřednostní přechod na další stránku - pokud bude tabulka delší
> než stránka, tak už nezbude, než tabulku rozdělit.
>
> Bohužel to dělá několik nepřístojností (viz přiložený zdrojový soubor a pdf
> výstup):
>
> 1. Na začátku stránky se objevuje nějaká svislá mezera, kterou jsem
> zlikvidoval nastavením \topskip=0pt.
>
> 2. Mezera \vfill se projeví jen před poslední tabulkou na stránce. (To mi
> vyhovuje.)
>
Ja bych zkusil zapornou penalizaci zvyhodnit zlom mezi tabulkami, napr.takto:

\penalty -50
\vskip 1cm plus 1fil
\penalty -50
\vskip 0cm plus -1fil

Kdyz tak o tom premyslim, ta prvni penalta je zbytecna, protoze pokud
je na strance mene nez 1cm volneho mista, stejne se zlomi stranka v
prvnim \vskipu.

Kdysi davno jsem potreboval zpracovat tabulku dlouhou asi 2000 stran,
ktera byla slozena z podtabulek, takze pokud nevznikly hodne prazdne
stranky, mel strankovy zlom prednostne padnout mezi podtabulky a
prazdne misto melo zustat dole. Delal jsem to tak, ze jsem prepsal
longtable.sty, tj. podtabulky jsem skladal do \vboxu a podle vysky
tohoto pomocneho boxu a zbyleho mista na strance jsem bud vynutil
strankovy zlom a uschovany kod vypustil na dalsi stranu, nebo jsem to
pustil do tabulky a nechal puvodni algoritmy longtable, at si s tim
poradi. Navic jsem prepsal i \setlongtables, protoze jsem chtel sirku
sloupcu urcit jinym algoritmem. Sirka sloupcu totiz mela byt zachovana
v urcite sekci, ne v cele tabulce.

> 3. Tabulka, která se nevejde na zbytek stránky, nezačne na další stránce,
> ale rozdělí se (v ukázce je to za prvními řádky). Vypadá to, že dělení
> tabulky penalizováno není. Zkoušel jsem doplňovat penalizace do tabulky
> pomocí \nopagebreak[1], to ale nefunguje pro \hline.
>
> Nejlepší, k čemu jsem dospěl, je nahrazení \hline -> \cline uvnitř tabulky a
> nechat \hline na začátku (před prvním řádkem). V takovém případě se tabulka
> rozdělí v \hline, které se ale objeví i na konci předcházející stránky(?!) -
> toho bych se rád ho zbavil.
>
> Josef Tkadlec
> _______________________________________________
> csTeX mailing list
> csTeX at cs.felk.cvut.cz
> http://lists.felk.cvut.cz/mailman/listinfo/cstex



-- 
Zdeněk Wagner
http://hroch486.icpf.cas.cz/wagner/
http://icebearsoft.euweb.cz




More information about the csTeX mailing list