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}
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}
 
 | ![]()  | 
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}  | 
 
 | 
| 
\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}  | 
 
 | 
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).
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}  | 
 
 | 
| 
\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}  | 
 
 | 
| 
\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}  | 
 
 | 
Wywołanie makroinstrukcji \BAparfootnotes powoduje, że przypisy będą składane jako jeden akapit (tylko w przypadku \BAtablenotestrue).