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).