Zestaw ciekawych pakietów makr
Author: Włodzimierz Macewicz
Keywords: tex, latex, makroinstrukcje, pakiety makroinstrukcji, Wirtualna Akademia

## 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 standardowo w dystrybucjach LaTeX, a także pod adresem:
ftp://ftp.gust.org.pl/TeX/macros/latex/required/tools/array.dtx

Włodzimierz Macewicz

Ostatnie zmiany: 05.05.2014.