[cstex] dlouhé tabulky

Josef Tkadlec tkadlec at fel.cvut.cz
Fri Jan 18 13:41:30 CET 2013


Moc díky, tohle funguje.

Jenom dostávám hromadu (těch tabulek jsou stovky) chybových hlášek 
"Underfull \vbox (badness 10000) detected at line ..." ve kterých se 
ztratí vše ostatní. Ony byly už předtím (generovány asi longtable), ale 
bylo jich podstatně méně. Přitom mám \raggedbottom, takže by se vůbec 
neměly vyskytovat. Dá se to nějak odstranit?

Vím, že se dá nastavit \vbadness=10000, ale to myslím potlačí i výpisy 
overfull, což bych nechtěl.

Josef Tkadlec

Zdenek Wagner napsal(a):
> 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
>
>
>




More information about the csTeX mailing list