Zastaw ciekawych makroinstrukcji

array

Umożliwia dołączenie własnej specyfikacji typu kolumny i zmienia standardowe makropolecenia definiujące tabele: (\tabular i \array) -- na lepsze. Wskazane jest dołączenie pakietu w przypadku używania środowisk: tabular, array, tabularx, longtable i supertabular.

Definicja nowego typu kolumny:
\newcolumntype{x }[n ]{preambuła }
gdzie

x 
nazwa typu; używana potem w definicji preambuły tablicy
n 
liczba parametrów formalnych definicji rodzaju kolumny określonej specyfikacją (może być pominięte jeżeli definicja jest bezparametrowa; jeżeli paramatry występują, są one oznaczone jako: #1 #2, ...),
preambuła 
definicja rodzaju kolumn.

W specyfikacji makropolecenia \newcolumntype oraz w definicji preambuły tablicy mogą być użyte następujące określenia (w preambule tablicy może znaleźć się oczywiście nowy, zdefiniowany poleceniem \newcolumntype typ).
l dosunięcie tekstu do lewej
r dosunięcie tekstu do prawej
c centrowanie
m{width } Definiuje kolumnę o szerokości width . Środek celi tej kolumny (połowa wysokości) pokrywa się ze środkiem celi kolumny sąsiedniej (porównaj; cela bieżąca i sąsiednia). 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żyta przed jednym z następujących typów: l, r, c, p, m lub b. polecenie macro  będzie wykonywana zawsze przed rozpoczęciem cel w tak określonej kolumnie.
<{macro } Może być użyta po jednym z następujących typów: l, r, c, p, m lub b. Polecenie macro  będzie wykonywana zawsze po zakończeniu cel 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).
@{macro } Może być użyte w dowolnym miejscu preambuły zamiast |. Polecenie macro  zostanie wywołane między kolumnami (kasuje normalną odległość między kolumnami).
!{macro } Może być użyte w dowolnym miejscu preambuły zamiast |. Polecenie macro  zostanie wywołane między odpowiednimi kolumnami (w odróżnieniu od oryginalnej makroinstrukcji @{...} nie kasuje normalnej odległości między kolumnami).
*{n }{decl } n  -- krotne powtórzenie decl ; gdzie decl  jest ciągiem poprzednio określonych parametrów. Np. *{3}{c} oznacza trzy kolumny centrowane.

Parametry którymi można regulować sposób budowania tabeli:
Polecenie opis
\arraycolsep połowa szerokości odstępu między kolumnami tablicy w środowisku matematycznym (array) (domyślnie 5pt)
\tabcolsep połowa szerokości odstępu między kolumnami tablicy (domyślnie 6pt)
\arrayrulewidth szerokość pionowej linii separującej kolumny (o ile jest używana -- domyślnie 0.4pt)
\doublerulesep 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%)
\extrarowheight dodatkowy odstęp między liniami (domyślnie 0pt)

Uwaga
Niektóre polecenia (np. \raggedright) zmieniają definicje polecenia \\; tak więc specyfikacja typu ostatniej kolumny jako:
>{\raggedleft}p{20mm}
może spowodować błąd. Możemy temu zapobiec definiując makroinstrukcję odtwarzającą definicję polecenia \\
\newcommand{\PreserveBackslash}[1]% {\let\temp=\\#1\let\\=\temp}
\let\PBS=\PreserveBackslash
Argumentem pierwszego polecenia jest inne polecenie. Przed jego wykonaniem jest wykonywane makropodstawienie definicji \\ na zmienną \temp, następnie wykonanie polecenia i odtworzenie poprzedniej definicji \\ z zachowanej zmiennej \temp. Drugie polecenie utożsamia dla wygody (krótsza nazwa) zmienną \PBS z utworzonym poleceniem \PreserveBackslash. Poprawna definicja ostatniej kolumny będzie wyglądała teraz następująco:
>{\PBS\raggedleft}p{20mm}

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 skompensować wstawiając pustą przestrzeń o długości 0pt na początku celi (wykorzystując możliwości formowania preambuły tabeli) np.
>{\PBS\raggedleft\hspace{0pt}}p{20mm}

Pakiet jest dostępny pod adresem:
ftp://ftp.gust.org.pl/TeX/macros/latex/packages/tools/array.dtx>


Włodzimierz Macewicz