blkarray

Pakiet zawiera makroinstrukcje u�atwiaj�ce sk�ad tabel; zawiera w sobie polecenia analogiczne jak pakiety hhline (rozszerzone), array i multirow.

Pakiet definiuje �rodowisko blockarray zast�puj�ce �rodowiska tabular i array (wewn�trz trybu matematycznego zachowuje si� jak array, a w trybie tekstowym jak tabular). Posta� wywo�ania jest podobna jak w przypadku ww. konstrukcji.
\begin{blockarray}{preambu�a}
zawarto�� tabeli
\end{blockarray}

lub
\begin{blockarray}[s]{preambu�a}
zawarto�� tabeli
\end{blockarray}

gdzie s okre�la spos�b pozycjonowania tabeli wzgl�dem s�siedztwa; mo�e przyjmowa� warto�ci: c -- center (warto�� domy�lna), b -- d� tabeli r�wno z lini� s�siedni�, t -- g�ra tabeli r�wno z lini� s�siedni�

preambu�a definiuje spos�b prezentacji (sk�adu) poszczeg�lnych kolumn tabeli oraz okre�la separatory kolumn; mog� si� w niej znale�� nast�puj�ce oznaczenia:
l dosuni�cie tekstu do lewej
r dosuni�cie tekstu do prawej
c centrowanie
m{width} Definiuje kolumn� o szeroko�ci width . �rodek celi w tej kolumnie (po�owa jej wysoko�ci) pokrywa si� ze �rodkiem celi kolumny s�siedniej. Odpowiednik: \parbox{width}; tekst jest �amany na szeroko�ci width .
p{width} R�wnowa�na: \parbox[t]{width}. Pozycjonowanie w/g szczytu celi.
b{width} R�wnowa�na \parbox[b]{width}. Pozycjonowanie w/g do�u celi.
>{macro} Mo�e by� u�yte przed jednym z nast�puj�cych typ�w: l, r, c, p, m lub b. Polecenie macro  b�dzie wykonywane zawsze przed rozpocz�ciem analizy materia�u celi w tak okre�lonej kolumnie.
<{macro} Mo�e by� u�yte po jednym z nast�puj�cych typ�w: l, r, c, p, m lub b. Polecenie macro  b�dzie wykonywane zawsze na ko�cu materia�u celi w tak okre�lonej kolumnie.
| Wstawienie linii pionowej jako separatora kolumn; odleg�o�� mi�dzy kolumnami zostanie zwi�kszona o szeroko�� linii (w odr�nieniu od oryginalnej definicji tabeli). Mo�na wstawi� dwa znaki | -- separatorem b�dzie linia podw�jna (odleg�o�� mi�dzy liniami okre�la parametr \BAdoublerulesep).
@{macro} Mo�e by� u�yte w dowolnym miejscu preambu�y zamiast separatora (np.: |). Polecenie macro  zostanie wywo�ane mi�dzy kolumnami (kasowana jest normalna odleg�o�� mi�dzy kolumnami).
!{macro} Mo�e by� u�yte w dowolnym miejscu preambu�y zamiast separatora (np.: |). Polecenie macro zostanie wywo�ane mi�dzy kolumnami (w odr�nieniu od @{...} nie jest kasowana normalna odleg�o�� mi�dzy kolumnami).
& Znak umieszczony przed symbolem separatora kolumny (|) powoduje, �e w przypadku u�ycia polecenia \BAmulticolumn nie trzeba w nim powtarza� definicji obramowania celi (w przypadku u�ycia makra \BAmulticolumn w pierwszej kolumnie obramowanie z lewej strony musi by� redefiniowane). W przypadku podw�jnego obramowania (||) znak & nale�y umie�ci� tylko przed pierwszym znakiem |.
) dodatkowa kolumna obejmuj�ca nawiasem ca�� wysoko�� tabeli (p. �rodowisko block)
\} dodatkowa kolumna obejmuj�ca nawiasem ca�� wysoko�� tabeli (p. �rodowisko block)
] dodatkowa kolumna obejmuj�ca nawiasem ca�� wysoko�� tabeli (p. �rodowisko block)
( dodatkowa kolumna obejmuj�ca nawiasem ca�� wysoko�� tabeli (p. �rodowisko block)
\{ dodatkowa kolumna obejmuj�ca nawiasem ca�� wysoko�� tabeli (p. �rodowisko block)
[ dodatkowa kolumna obejmuj�ca nawiasem ca�� wysoko�� tabeli (p. �rodowisko block)
\Left{tekst}{delimiter} tekst i delimiter stanowi kolumn� o zerowej szeroko�ci; konstrukcja s�u�y do wstawienia dodatkowego opisu (sk�adanego antykw�) umieszczonego przed delimiterem (mo�e nim by� jeden z nawias�w ([{}])); delimiter obejmuje ca�� wysoko�� tabeli (p. block).
\Right{delimiter}{tekst} tekst i delimiter stanowi kolumn� o zerowej szeroko�ci; konstrukcja s�u�y do wstawienia dodatkowego opisu (sk�adanego antykw�) umieszczonego po delimiterze (mo�e nim by� jeden z nawias�w ([{}])); delimiter obejmuje ca�� wysoko�� tabeli (p. block).
\BAenum dodatkowa kolumna zawieraj�ca numer kolejny wiersza (szeroko�� kolumny jest ustalona na 2em bez wzgl�du czy si� to komu� podoba czy nie)
*{n}{parametry} n-krotne powt�rzenie specyfikacji kolumny np: *{3}{|c} jest r�wnowa�ne |c|c|c

Parametry kt�rymi mo�na regulowa� spos�b budowania tabeli:
Polecenie opis
\tabcolsep po�owa szeroko�ci odst�pu mi�dzy kolumnami tablicy (domy�lnie 6pt)
\BAarrayrulewidth szeroko�� pionowej linii separuj�cej kolumny (o ile jest u�ywana -- domy�lnie 0.4pt)
\BAdoublerulesep odleg�o�� mi�dzy dwoma liniami pionowymi stanowi�cymi separator kolumn (domy�lnie 2pt)
\arraystretch ,,mno�nik'' odst�pu mi�dzy wierszami tablicy (np. \renewcommand{\arraystretch}{1.5} zwi�ksza odst�p o 50%)
\BAextrarowheight dodatkowy odst�p mi�dzy liniami (domy�lnie 0pt)
\BAextraheightafterhline dodatkowy odst�p po poziomej linii oddzielaj�cej

Uwaga:
W zwi�zku z realizacj� tabeli wyst�puje efekt uboczny --- blokowane jest przenoszenie wyraz�w (hyphenation) dla pierwszego wyrazu w celi. Efekt mo�emy wyeliminowa� wstawiaj�c pust� przestrze� o d�ugo�ci 0pt na pocz�tku celi (wykorzystuj�c mo�liwo�ci formowania preambu�y tabeli) np.
>{\hspace{0pt}}p{20mm}

Obramowania tabeli

W pakiecie jest zdefiniowane polecenie \BAhhline umo�liwiaj�ce uzyskanie �adniejszych wyko�cze� tabeli:
Wywo�anie:
\BAhhline{parametry}
na li�cie parametr�w mog� wyst�powa� nast�puj�ce symbole:
= podw�jna linia o szeroko�ci danej kolumny
" podw�jna linia przerywana o szeroko�ci danej kolumny
- pojedyncza linia o szeroko�ci danej kolumny
. pojedyncza linia przerywana o szeroko�ci danej kolumny
~ brak linii w danej kolumnie (pozwala zast�pi� dyrektyw� \BAhhline dyrektyw� \cline)
| linia pionowa przecina (ma priorytet) konstrukcj� poziom�
: linia pionowa styka si� z podw�jn� poziom�
# skrzy�owanie podw�jnych linii
t g�rne wyko�czenie rogu (lewe lub prawe w zale�no�ci od s�siedztwa)
b dolne wyko�czenie rogu
* powt�rzenie sekwencji; np. *{3}{==#} jest r�wnowa�ne ==#==#==#

Przyk�ad ilustruje r�ne zestawienia po��cze� linii poziomych i pionowych (niekoniecznie poprawnych)
\begin{blockarray}{||cc||c|c||}
 \BAhhline{|t:==:t:==:t|}
 a & b & c & d\\
 \BAhhline{|:==:|~|~||}
 1 & 2 & 3 & 4\\
 \BAhhline{#==#~|=#}
 i & j & k & l\\
 \BAhhline{||--||--||}
 w & x & y & z\\
 \BAhhline{|:==|:==:|}
 1 & 2 & 3 & 4 \\
 \BAhhline{|:==::=|=:|}
 5 & 6 & 7 & 8 \\
 \BAhhline{|:="::"|=:|}
 9 & 10 & 11 & 12 \\
 \BAhhline{||-|.||.|-||}
 13 & 14 & 15 & 16\\
 \BAhhline{|b:==:b:==:b|}
 \end{blockarray}
 

Wstawienie materia�u o innej specyfikacji kolumn i delimiter�w (( , {, [ i ], }, ))

Pakiet udost�pnia �rodowisko block (i block*) o nast�puj�cej postaci wywo�ania:
\begin{block}{preambu�a}
.
.
.
\end{block}

lub
\begin{block*}{preambu�a}
.
.
.
\end{block*}

mo�e by� ono u�yte wy��cznie wewn�trz �rodowiska blockarray (mo�e by� wielokrotnie zagnie�d�any) preambu�a powinna by� zgodna co do liczby kolumn ze specyfikacj� kolumn umieszczon� w �rodowisku blockarray (opr�cz dost�pnych w niej parametr�w, dodatkowo mog� wyst�pi� polecenia \BAmulticolumn, obejmuj�ce kilka kolumn tabeli oraz \BAmultirow obejmuj�ce wszystkie wiersze zawarte w �rodowisku block). �rodowisko umo�liwia wstawienie kolumn, kt�re b�d� inaczej prezentowane ni� okre�la to specyfikacja �rodowiska blockarray. Wszystkie separatory kolumn i kolumny tabeli musz� by� redefiniowane. W przypadku u�ycia konstrukcji nawiasowych w specyfikacji tabeli wersja ,,bezgwiazdkowa'' �rodowiska umo�liwia zdefiniowanie innych konstrukcji nawiasowych (lub rezygnacj� z nich). W wersji ,,gwiazdkowej'' specyfikacja konstrukcji nawiasowych jest ignorowana (pozostaj� w mocy specyfikacje �rodowiska blockarray; r�nice najlepiej zilustruje przyk�ad:
\begin{blockarray}{[c|c]c\}}
1111111 & 222222 & 333333 \\
1 & 2 & 3 \\
\begin{block*}{(ll)l\}}
1111 & 2222 & 3333 \\
11 & 22 & 33 \\
\end{block*}
1 & 2 & 3 \\
\end{blockarray}
\begin{blockarray}{[c|c]c\}}
1111111 & 222222 & 333333 \\
1 & 2 & 3 \\
\begin{block}{(ll)l\}}
1111 & 2222 & 3333 \\
11 & 22 & 33 \\
\end{block}
1 & 2 & 3 \\
\end{blockarray}
Przyk�ad u�ycia polecenia \BAmulticolumn wewn�trz preambu�y �rodowiska block
\begin{blockarray}{||l|c|c|t{1cm}|c|c||}
\BAhhline{|t:======:t|}
2s & ss &ss &ss &ss&ss\\
\BAhhline{||------||}
\begin{block}{||l|l|\BAmulticolumn{2}{r}|l|l||}
1 & 2 & 3 4 & 5 & 6\\
\end{block}
\BAhhline{||------||}
a & b & c & d & e & f\\
\BAhhline{|b:======:b|}
\end{blockarray}

U�ycie konstrukcji \BAmultirow w preambule �rodowiska block wymaga dodatkowego komentarza. Materia� kt�ry ma by� sk�adany w bloku o wysoko�ci wszystkich wierszy �rodowiska block mo�e by� wprowadzany w jednym lub kilku wierszach (w tak okre�lonej kolumnie). Je�eli jest on podany w kilku wierszach to jedynym efektem jest zachowanie podzia�u na wiersze (zapis ,,od nowej linii''), b�dzie on i tak stanowi� ca�o��, kt�ra b�dzie pozycjonowana wzgl�dem �rodka wysoko�ci wszystkich wierszy.

\begin{blockarray}{||l|c|c|t{1cm}|c|c||}
\BAhhline{|t:======:t|}
2s & ss &ss &ss &ss&ss\\
\BAhhline{||------||}
\begin{block}{||l|l|l|l|l|\BAmultirow{1in}||}
1 & 2 & 3 & 4 & 5 & \relax\\
1 & 2 & 3 & 4 & 5 & to jest multirow to jest multirow \\
1 & 2 & 3 & 4 & 5 & \relax\\
1 & 2 & 3 & 4 & 5 & \relax\\
1 & 2 & 3 & 4 & 5 & to jest multirow to jest multirow \\
1 & 2 & 3 & 4 & 5 & \relax\\
1 & 2 & 3 & 4 & 5 & \relax\\
\end{block}
\BAhhline{||------||}
a & b & c & d & e & f\\
\BAhhline{|b:======:b|}
\end{blockarray}

Uwaga! zawarto�� kolumn, kt�re nie zawieraj� materia�u wchodz�cego w sk�ad kolumny musi zawiera� ,,co�'' np. materia� ,,pusty'' (\relax).

Je�li wysoko�� sk�adu materia�u przekracza wysoko�� wszystkich wierszy nie wp�ywa to na wysoko�� delimiter�w kolumn, pojawia si� efekt widoczny w poni�szym przyk�adzie
\begin{blockarray}{||l|c|c|t{1cm}|c|c||}
\BAhhline{|t:======:t|}
2s & ss &ss &ss &ss&ss\\
\BAhhline{||------||}
\begin{block}{||l|l|l|l|l|\BAmultirow{1in}||}
1 & 2 & 3 & 4 & 5 & \relax\\
1 & 2 & 3 & 4 & 5 & to jest multirow to jest multirow
to jest multirow to jest multirow to jest multirow \\
1 & 2 & 3 & 4 & 5 & \relax\\
1 & 2 & 3 & 4 & 5 & \relax\\
1 & 2 & 3 & 4 & 5 & to jest multirow to jest multirow \\
1 & 2 & 3 & 4 & 5 & \relax\\
1 & 2 & 3 & 4 & 5 & \relax\\
\end{block}
\BAhhline{||------||}
a & b & c & d & e & f\\
\BAhhline{|b:======:b|}
\end{blockarray}

Tworzenie nowych typ�w kolumn

Za pomoc� polecenia \BAnewcolumntype mo�na tworzy� nowe typy kolumn. Sk�adnia polecenia jest nast�puj�ca:
\BAnewcolumntype{nazwa}{definicja}
lub
\BAnewcolumntype[n]{nazwa}{definicja}
gdzie:
nazwa jest jednoliterowym okre�leniem nowego typu kolumny
definicja okre�la spos�b sk�adu zawarto�ci celi w danej kolumnie np:
\BAnewcolumntype{c}{>{\hfil}<{\hfil}}
definiuje kolumn�, w kt�rej zawarto�� celi jest centrowana
n jest liczb� parametr�w nowej specyfikacji kolumny np:
\BAnewcolumntype[1]{t}{>{\rightskip=0pt plus 1fil\vtop\BA@startpbox{#1}}<{\BA@endpbox}}
definiuje kolumn� analogiczn� do p ale �aman� w ,,chor�giewk�'' -- parametr okre�la szeroko�� sk�adu. Wersja ulepszona, w kt�rej r�wnie� pierwszy wyraz podlega podzia�owi wygl�da nast�puj�co:
\BAnewcolumntype[1]{x}{>{\rightskip=0pt plus 1fil\vtop\BA@startpbox{#1}\hskip0pt}<{\BA@endpbox}}

��czenie p�l tabeli w kolumnie (w pionie)

Pakiet blkarray udost�pnia polecenie \BAmultirow, umo�liwiaj�c� ��czenie cel tabeli w pionie, podobnie jak pakiet multirow, sk�adnia wywo�ania jest inna; wygl�da ona nast�puj�co:
\BAmulticolumn{szeroko��}{tekst}
Sk�adany materia� obejmuje ca�� wysoko�� tabeli (je�eli jest u�yte �rodowisko block to materia� b�dzie powielony (sic!))
\begin{blockarray}{||l|c|c|t{1cm}|c|c||}
\BAhhline{|t:======:t|}
2s & ss &ss &ss &ss&ss\\
\BAhhline{||------||}
1 & 2 & 3 & 4 & 5 & \\
1 & 2 & 3 & 4 & 5 & \\
\BAmultirow{4cm}{to jest multirow to
jest multirow} \\
1 & 2 & 3 & 4 & 5 & \\
\begin{block}{||l|l|l|l|l|l||}
1 & 2 & 3 & 4 & 5 & 6\\
\end{block}
1 & 2 & 3 & 4 & 5 & \\
1 & 2 & 3 & 4 & 5 & \\
1 & 2 & 3 & 4 & 5 & \\
\BAhhline{||------||}
a & b & c & d & e & f\\
\BAhhline{|b:======:b|}
\end{blockarray}

Je�eli chcemy, aby materia� obejmowa� jedynie okre�lon� liczb� wierszy (a nie wszystkie wiersze) w danej kolumnie to nale�y u�y� konstrukcji block ��cz�c j� z makroinstrukcj� \BAmultirow (p. u�ycie konstrukcji \BAmultirow w preambule �rodowiska block).

��czenie p�l tabeli w wierszu (w poziomie)

Podobnie jak w �rodowisku tabular mo�na uzyska� efekt po��czenia kilku cel tabeli w jedn�, obejmuj�c� kilka kolumn; s�u�y do tego makroinstrukcja \BAmulticolumn -- posta� wywo�ania jest nast�puj�ca:
\BAmulticolumn{n}{specyfikacja}{materia�}
n -- liczba kolumn, kt�r� ma obejmowa� konstrukcja,
specyfikacja -- okre�lenie sk�adu kolumny, analogicznie jak w specyfikacji kolumn tabeli. Je�li \BAmulticolumn obejmuje pierwsz� kolumn� tabeli specyfikacja musi zawiera� definicj� obramowania z lewej strony. Specyfikacj� obramowania z prawej strony celi mo�na pomin��, je�li definicja obramowania kolumny zawarta w specyfikacji tabeli, jest poprzedzona znakiem &
materia� okre�la zawarto�� celi i b�dzie sk�adany zgodnie ze specyfikacja

Przyk�ad:
separator podw�jnej celi z prawej strony jest zdefiniowany za pomoc� znaku &
\begin{blockarray}{||l|c|c&|t{1cm}|c|c||}
\BAhhline{|t:======:t|}
2s & ss &ss &ss &ss&ss\\
\BAhhline{||------||}
& \BAmulticolumn{2}{c}{a b} & c & d & e\\
\BAhhline{||------||}
a & b & c & d & e & f\\
\BAhhline{|b:======:b|}
\end{blockarray}
W poni�szej tabeli brak definicji separatora z prawej strony podw�jnej celi
\begin{blockarray}{||l|c|c|t{1cm}|c|c||}
\BAhhline{|t:======:t|}
2s & ss &ss &ss &ss&ss\\
\BAhhline{||------||}
& \BAmulticolumn{2}{c}{a b} & c & d & e\\
\BAhhline{||------||}
a & b & c & d & e & f\\
\BAhhline{|b:======:b|}
\end{blockarray}
Makroinstrukcj� \BAmulticolumn mo�na u�ywa� wewn�trz preambu�y �rodowiska block (oczywi�cie bez specyfikacji zawarto�ci celi; p. przyk�ad).

Wstawienie materia�u nie podlegaj�cego podzia�owi na kolumny

W pakiecie jest zdefiniowane polecenie \BAnoalign umo�liwiaj�ce wstawienie tekstu, kt�ry nie podlega podzia�owi na kolumny -- zajmie on szeroko�� ca�ej tabeli (mo�e by� ono u�yte wewn�trz �rodowiska block). Sk�adnia wywo�ania jest nast�puj�ca:
\BAnoalign{tekst}
lub
\BAnoalign*{tekst}
Polecenie tworzy ,,dziur�'' w normalnej strukturze tabeli. Wersja ,,gwiazdkowa'' nie powoduje przerwania ci�g�o�ci nawias�w separuj�cych (definiowanych konstrukcjami: (, {, [ i ], }, ), \Right i Left) -- niestety z powodu b��du wersja ta jest na og� bezu�yteczna. Ci�g�o�� linii pionowych jest zawsze przerywana.
\begin{blockarray}{l|c|c|t{1cm}|c|c\}}
2s & ss &ss &ss &ss&ss\\
2s & ss &ss &ss &ss&ss\\
\BAnoalign{ala ma kota, a kot ma Ale
ala ma kota, a kot ma Ale
ala ma kota, a kot ma Ale}
a & b & c & d & e & f\\
a & b & c & d & e & f\\
\end{blockarray}

Przypisy w tabelach

W tabelach definiowanych za pomoc� �rodowiska blockarray mo�na definiowa� przypisy (za pomoc� standardowego polecenie \footnote) Standardowo przypisy s� umieszczane bezpo�rednio pod tabel� i s� one numerowane za pomoc� polecenia \fnsymbol. U�ycie polecenia \BAtablenotesfalse (zmiana warto�ci zmiennej logicznej) powoduje, �e przypis b�dzie umieszczony na dole strony (tak jak wszystkie inne przypisy i z u�yciem standardowego licznika przypis�w). W typ wypadku, je�li �rodowisko blockarray jest umieszczone wewn�trz �rodowiska table lub figure przypisy nie b�d� prezentowane!).

Wywo�anie makroinstrukcji \BAparfootnotes powoduje, �e przypisy b�d� sk�adane jako jeden akapit (tylko w przypadku \BAtablenotestrue).


W�odzimierz Macewicz
Ostatnie zmiany: 05.05.2014.