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,mlubb.
                        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,mlubb.
                        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ą \BAhhlinedyrektywę\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).