Vyctova tabulka

Zdenek Wagner wagner at cesnet.cz
Fri Mar 18 10:15:44 CET 2005


On Thu, 17 Mar 2005 Derek.Pilous at seznam.cz wrote:

> Dobry den,
>
>   predem se omlouvam za imbecilitu sveho nasledujiciho dotazu. Jsem v
> LaTeXu naprosty zacatecnik a bohuzel se mi ani s pomoci literatury
> nepodarilo vyresit nasledujici problem: Pisi sbirku prikladu z matematiky
> a chci, aby byla formatovana tak, jak je u literatury tohoto typu obvykle,
> tedy aby ruzne varianty jedne ulohy byly "cislovany" abecedne, byly sazeny
> vedle sebe tak, aby se vesly na sirku stranky, zaroven byly zarovnany pod
> sebou a aby tento system nenarusil prechod na novou stranku. Protoze se
> vsak muze vyskytnout pripad, kdy jednotliva zadani budou delsi, nez sirka
> stranky, musi s tim system pocitat a vytvorit jediny sloupec, v jehoz
> polozkach bude mozny prechod na novy radek. Priklad:
>
> Slovni popis 1
>  (a) zadani1       (b) zadani2     (c) zadani3
>  (d) zadani4       (e) zadani5     (d) zadani4
> ---------------- zlom stranky -------------
>  (e) zadani5       (f) zadani6     (g) zadani7
>
> Vzdalenost mezi sloupci neni stejna, nybrz je dana nejdelsi polozkou v
> danem sloupci. Pripad dlouhych zadani:
>
> Slovni popis 2
>  (a) prvni cast zadani 1 \\
>      druha cast zadani 1 muze byt napriklad normalne lama-
>      ny text
>  (b) zadani 2 ...
>
Cislovani se da zaridit tim, ze si vytvorite vlastni citac, napr.
\newcounter{uloha} a definijete si jeho vzhled pomoci:
\newcommand\theuloha{(\alph{uloha})}. Na zacatku kazdeho zadani uvedete
\stepcounter{uloha}\theuloha

Pokud by slo jen o tu tabulku, pouzil bych balicek longtable. Po prvnim
pruchodu sice budou sloupce rozhazene, ale pred finalnim pruchodem pridate
do preambule prikaz \setlongtables a vse se srovna. Sazba pres vice
sloupcu se da zaridit pomoci \multicolumn. Sirku muzete zjistit tak, ze si
deklarujete novy rozmerovy registr, napr. \newdimen\SirkaUlohy a sirku
zadani urcite pomoci \settowidth\SirkaUlohy{text zadani ...}. To pak
muzete testovat pomoci \ifdim. Operace, ktere provedet v bunce tabulky,
jsou ale lokalni a tezko prenesitelne do jinych bunek. Potrebujete proto
stradat material do token registru a na vystup posilat cele radky. Token
registr si deklarujete pomoci \newtoks\RadekTabulky. Na zacatku jej vzdy
vymazete prikazem \RadekTabulky{}, text do nej pridavate pomoci
\RadekTabulky\expandafter{\the\RadekTabulky pridavany material} a po
zkompletovani radku provedete \the\RadekTabulky a vymazete registr. \\ bud
uvedete explicitne, nebo jej vlozite jako posledni prikaz do registru.

Pro zacatecnika dost tvrdy orisek, protoze je nutno znat leccos z plainu,
ale kdyz to zvladnete (urcite Vam to da dost zabrat a nenapisete to hned),
docela dost se naucite. Nevzdavejte se pri prvnim neuspechu, nez udelate
tohle makro, vytvorite postupne nekolik zcela nefunkcnich verzi.

> Bylo by hezke, kdyby prvni sloupec jednotlivych prikladu byl zarovnan pod
> sebe (dalsi uz samozrejme nikoli, sirky sloupcu v ruznych prikladech budou
> ruzne. No a nyni v cem spociva problem: naformatovat timto zpusobem
> natvrdo dany text by jiste nebyl problem, avsak sbirka nebude mit zadny
> konecny stav, priklady do ni budou prubezne pridavany. Je tedy treba
> vytvorit makro, ktere by zminene formatovani automaticky realizovalo.
> Pridavani prikladu by melo byt co nejjednodussi, celkove bych si
> predstavoval neco se syntaxi prostredi enumerate, kam by se pripadne jako
> volitelny parametr dal zadat natvrdo pocet sloupcu. Muzete mi prosim
> poradit?
>

Zdenek Wagner
e-mail: wagner at cesnet.cz

see also http://hroch486.icpf.cas.cz/wagner/
         http://icebearsoft.euweb.cz




More information about the csTeX mailing list