Zobecneni makra pro tabulky

Jaroslav Hajtmar hajtmar at gyza.cz
Sat Dec 3 23:45:46 CET 2005


Pane Brezino,
dekuji mnohokrat za naprosto vycerpavajici odpoved a vynikajici studijni
material - verim, ze poslouzi i spouste jinych "lam", jako jsem ja :-).
TBN i Knutha samozrejme mam a jsem moc rad, ze jste napsal, ze je to
studium na dva tri vecery, nebot jsem uz zacal mit komplex menecennosti.
Koukal jsem totiz do TBN a trochu googlil, nez jsem psal do konfery a
trapne jsem si zrejme myslel, ze existuje nejaka "kralovska cesta" k
pochopeni tabulek.
Po cca hodine studia jsem to odlozil a mel pocit, ze jsem skoro nic
nepochopil (ach ta cinstina ... ) - rezervuji si na to par volnych
veceru ...:-)
Abych se priznal, ani se mi nechce verit kolik jste toho napsal - musel
jste nad tim stravit spoustu casu - nesmirne si toho vazim  a obdivuju
to. V dnesni dobe takovy pristup je neobvykly - obdivuju proto komunity,
ve kterych panuji takove vztahy, jako treba v teto TeXove. Klobouk dolu.
Slibuju vsem co jsou tady v konfere, ze vse co se naucim budu sirit dal
stejne nezistne jako vy vsichni! I kdyz pochybuju, ze se to nekdy naucim
tak jako vy tady.

Prubezne sice casto programuji v Pascalu, VisualBasicu, Delphi, PHP a
MySQL a nakonec jsem skoncil u PERLu... ale TeX je kapitola sama pro
sebe.. Mam pocit, ze se ho chtelo snad naucit snad jeste pred materskym
jazykem. Ovsem je to pro mne uchvatny jazyk ale... Docela by mne
zajimalo, jak dlouho uz se TeXu venujete ... napr. primo Vy nebo napr.
pan Olsak.. No radeji mi to nerikejte.. mam sebevedomi na bode mrazu. :-)

Jeste jednou diky a vsechny zdravim dekuji za ochotu .. .

Jarda (s.q.r.t.) Hajtmar



petr-brezina at volny.cz napsal(a):

>Dobry vecer,
>
>tvorba tabulek v TeXu je ponekud slozitejsi zalezitost. Pro snadnou
>tvorbu hezkych tabulek je zapotrebi pochopit, jak to funguje; pak
>budete schopen vytvaret tabulky podle svych predstav. Vrele
>doporucuji prostudovat si prislusnou kapitolu v Knuthove TeXbooku
>ci v Olsakove TeXbooku naruby (osobne se mi zdal Knuthuv vyklad
>teto problematiky o neco malo pristupnejsi nez Olsakuv). Je to
>cetba asi tak na dva tri vecery.
>
>Pro inspiraci prikladam dve rychla reseni Vaseho ukolu. Prvni
>reseni ma tu nevyhodu, ze polozky ve vsech sloupcich budou
>zarovnany pokazde vlevo (tak je to i v prikaldu z Vaseho mejlu).
>Druhe reseni umoznuje menit zarovnani jednotlivych sloupcu, resp.
>polozek; je ovsem zapotrebi pro kazdy sloupec rucne nastavit sirku.
>Zarovnani se uskutecnuje pomoci prikazu \vlevo a \vpravo, ktere
>mohou podle potreby nabyvat vyznamu \hfil nebo \relax; uzivatel
>muze operativne menit jejich vyznam pomoci prikazu \lh, \lr, \ph a
>\pr. Sirka sloupce se urcuje pomoci \bn{sirka}. Vertikalni cara
>mezi sloupci se kresli pomoci \x. Prikazy \bn, \lh, \lr, \ph, \pr
>se uvadeji pred sloupcem, k nemuz se vztahuji, a to tak, ze \bn a
>\lh ci \lr je pred prikazem \x a prikaz \ph ci \pr je az za
>priakazem \x. Vyjimkou je prvni radek; pro nej se sirka a zarovnani
>nastavuje zcela pred tabulkou.
>
>Poznamka k Vasemu makru: Prikazy \hfil, kterymi jste zrejme
>zamyslel zarovnat text v jednotlivych polozkach, jsou zcela
>bezvyznamne; natahovaci mezera, kterou vytvori, nema prostor, aby
>se natahla, takze zustane nulova. Zdanlive vystredeni cisel je
>zpusobeno tim, ze pred nimi je mezera (to je ta mezera za
>hvezdickou), kdezto pred "Po, Ut, St, Ct, Pa" mezera neni. Pokud
>byste trval na sve koncepci makra a chtel ho pouze "zobecnit pro
>predem neurceny pocet radku", tak ho muzete upravit napriklad timto
>zpusobem:
>
>\def\hr{\hrule\vskip2pt}% vod. linka s mezerou
>\def\tbb#1{\hr\hbox{\strut\hskip1mm\relax #1 }}% obsah jedne bunky
>\def\tsl{\vrule\vbox\bgroup\bunka}
>\def\konecsloupce{ \endtsl}
>\def\bunka#1*{%
>   \def\temp{#1}%
>   \ifx\temp\konecsloupce
>      \def\next{\hrule\egroup\ignorespaces}
>   \else
>      \def\next{\tbb{#1}\bunka}
>   \fi
>   \next}
>% volani: \tsl Po* 3* 3* 1* 2* 3* 4* 5* \endtsl*
>% (mezera pred \endtsl je povinna!)
>
>\tsl ---*Jonagold*Rubin*Idared* \endtsl*
>\tsl Po* 3* 3* 1* \endtsl*
>\tsl Ut* 2* 1* 0* \endtsl*
>\tsl St* 2* 1* 3* \endtsl*
>\tsl Ct* 3* 2* 3* \endtsl*
>\tsl Pa* 1* 2* 3* \endtsl*
>\tsl So* 2* 0* 1* \endtsl*
>\vrule
>
>
>% % % % %
>
>% Prve reseni
>
>% makro, ktere vysazi tabulku po sloupcich s neomezenym
>% poctem radku, zarovnanych vlevo:
>\def\tabulka{%
>   \vbox\bgroup
>   \hbox\bgroup
>   \valign\bgroup&\hrule\vfil
>      \hbox{\strut\kern5pt ##\unskip\kern5pt}\cr}
>% ukonceni makra \tabulka:
>\def\endtabulka{%
>   \egroup % konec skupiny pro \valign
>   \egroup % konec skupiny pro \hbox
>   \hrule % horizont. cara na konci tabulky
>   \egroup} % konec skupiny pro \vbox
>% vertikalni cara:
>\def\x{\crcr\noalign{\vrule}}
>
>\tabulka
>\x
>1 & 2 & 3 & 4 & 5 & 6 & 10 \x
>alfa & beta & gamma & delta & epsilon & dzeta & kappa \x
>a & b & g & d & kratke e & dz & k \x
>\endtabulka
>
>
>% Druhe reseni
>
>% makro, ktere vysazi tabulku po sloupcich s neomezenym
>% poctem radku, horizontalni zarovnani a sirka sloupcu
>% se reguluje pomoci specialnich prikazu (\bn, \lh, \lr, \ph, \pr),
>% zapsanych primo v tele tabulky
>\def\tabulka{%
>   \vbox\bgroup
>   \hbox\bgroup
>   \valign\bgroup&\hrule\vfil
>      \hbox to\bnwd{%
>         \strut\kern5pt\vlevo ##\unskip\vpravo\kern5pt}\cr}
>% ukonceni makra \tabulka:
>\def\endtabulka{%
>   \egroup % konec skupiny pro \valign
>   \egroup % konec skupiny pro \hbox
>   \hrule % horizont. cara na konci tabulky
>   \egroup} % konec skupiny pro \vbox
>% vertikalni cara:
>\def\x{\crcr\noalign{\vrule}}
>
>\newdimen\bnwd % sirka bunky
>\let\vlevo=\relax
>\let\vpravo=\relax
>\def\bn#1{\global\bnwd=#1} % sirka bunky nasledujiciho sloupce
>\def\lh{\global\let\vlevo=\hfil}
>\def\lr{\global\let\vlevo=\relax}
>\def\ph{\global\let\vpravo=\hfil}
>\def\pr{\global\let\vpravo=\relax}
>
>\bn{20pt}\lh\pr
>\tabulka
>\x
>1 & 2 & 3 & 4 & 5 & 6 & 10
>\bn{1.7cm}\lr\x\ph
>alfa & beta & gamma & delta & epsilon & dzeta & kappa
>\bn{2cm}\lh\x\ph
>a & b & g & d & kratke e & dz & k
>\x
>\endtabulka
>
>\bye
>
>
>
>--
>Zaregistrujte si svou .EU domenu vcas. S VOLNY mate sanci byt
>prvni. http://domeny.volny.cz/eu/
>
>
>
>
>
>---
>avast! Antivirus: Prichozi zprava cista.
>Virova databaze (VPS): 0548-2, 03.12.2005
>Testovano: 3.12.2005 21:48:33
>avast! (c) copyright 2000-2004 ALWIL Software.
>http://www.avast.com
>
>
>
>
>
>



---
avast! Antivirus: Odchozi zprava cista.
Virova databaze (VPS): 0548-2, 03.12.2005
Testovano: 3.12.2005 23:45:15
avast! (c) copyright 2000-2004 ALWIL Software.
http://www.avast.com






More information about the csTeX mailing list