%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Contents: Customising LaTeX output
% $Id$
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Adaptowanie \LaTeX{}a}

\begin{intro}
  Dokumenty składane za pomocą poznanych do tej pory poleceń
  będą się zapewne podobały zdecydowanej większości czytelników.
  Chociaż ich wygląd nie będzie może wyrafinowany, z pewnością jednak
  spełnią one podstawowe zasady składu, dzięki czemu
  będzie się je czytało łatwo i przyjemnie.

  W niektórych wypadkach może się jednak okazać, że brakuje polecenia
  czy otoczenia, za pomocą którego moglibyśmy złożyć dany fragment
  tekstu w sposób odpowiadający potrzebom, albo też że sposób działania
  dostępnej w \LaTeX{}u instrukcji nie spełnia naszych wymagań.

  W tym rozdziale przedstawimy, jak nauczyć \LaTeX{}a formatować
  dokumenty tak, aby wyglądały inaczej niż w wypadku korzystania
  jedynie ze standardowych klas i pakietów.
\end{intro}

\section{Definiowane instrukcji i otoczeń}

Czytelnicy zauważyli zapewne, że nowo wprowadzane w tej książce
polecenia ukazują się w ramkach oraz że znajdują się one w
skorowidzu. Aby to osiągnąć, nie korzystaliśmy za każdym razem z
wbudowanych w \LaTeX{}a instrukcji, lecz utworzyliśmy własny pakiet,
w którym zawarliśmy nowe, potrzebne nam polecenia i otoczenia.
Dysponując takim pakietem, wystarczy po prostu napisać:
\begin{example}
\begin{lscommand}
\ci{dum}
\end{lscommand}
\end{example}

W tym przykładzie użyliśmy zarówno zdefiniowanego otoczenia o nazwie
\ei{lscommand}, odpowiedzialnego za rysowanie ramek dookoła
instrukcji, jak i nowego polecenia \ci{ci}, służącego do składu nazw
poleceń i wprowadzania ich do skorowidza. Proponujemy Czytelnikom
odszukanie hasła \ci{dum} w skorowidzu; przy haśle powinny być podane
numery stron, na których ta instrukcja występuje w książce.

Jeśli kiedyś zdecydujemy się zaprzestać otaczać polecenia ramkami, to
do zmiany wyglądu wystarczy, że zmienimy definicję otoczenia
\texttt{command}. Jest to znacznie łatwiejsze od przebiegnięcia przez
cały dokument w celu wyłapania w nim wszystkich standardowych poleceń
\LaTeX{}a, które służą do rysowania ramek wokół słów.

%%<PLext>
% We wstępie do tego opracowania wspomnieliśmy, że w~\LaTeX{}u możemy
% się skupić na logicznej strukturze dokumentów. Wskazane jest
% rozróżnić w~tekście źródłowym wszystkie elementy logiczne dokumentu,
% nawet jeżeli ich formatowanie jest identyczne. Nierzadko bowiem to,
% co dzisiaj formatujemy w~taki sam sposób, w~przyszłości możemy chcieć
% rozróżnić.

% Zwykło się na przykład składać adresy internetowe imitacją kroju
% maszynowego. Ponieważ w~adresach mogą wystąpić znaki specjalne
% \LaTeX{}a, to można by do tego celu stosować instrukcję \ci{verb}.
% Lepiej jednak użyć specjalnej instrukcji, np.~\ci{url}. W~dokumencie
% papierowym nie ma to znaczenia, znakowanie logiczne pozwala jednak
% przedstawić dokument zarówno w~formie drukowanej, jak
% i~hipertekstowej, w~formacie \acro{HTML} lub \acro{PDF}.
%%</PLext>

\subsection{Nowe polecenia}

Do definiowania potrzebnych nam nowych poleceń możemy użyć instrukcji
\begin{lscommand}
  \ci{newcommand}\verb|{|%
  \emph{nazwa}\verb|}[|\emph{liczba}\verb|]{|\emph{definicja}\verb|}|
\end{lscommand}
\noindent Wymaga ona podania dwóch argumentów. Pierwszy z nich,
\emph{nazwa}, oznacza nazwę nowej instrukcji, natomiast \emph{definicja}
to jej znaczenie, czyli tekst, który ma zostać wstawiony do składu
w momencie wykonania instrukcji. Podawany w nawiasach kwadratowych
argument \emph{liczba} powinien być cyfrą od~1~do~9, określającą liczbę
(obowiązkowych) argumentów instrukcji. Argument \emph{num} jest
opcjonalny, a jego pominięcie oznacza, że definiowana instrukcja jest
bezargumentowa.

%%<PLext>
% W~części \emph{tekst} wolno używać zarówno standardowych instrukcji
% \LaTeX{}a, jak też zdefiniowanych przez użytkownika. Nie wolno jednak
% korzystać z~tych instrukcji, które same definiują inne polecenia, jak
% \ci{newcommand}, \ci{newenvironment} itp. Niedozwolona jest rekursja,
% nie wolno też w~nazwach instrukcji umieszczać polskich liter
% diakrytycznych.
%%</PLext>

Następujące przykłady pomogą lepiej zrozumieć zagadnienie. W
pierwszym z nich definiujemy instrukcję o nazwie \ci{kwle}, mającą
być skrótem dla słów ,,Nie za krótkie wprowadzenie do systemu
\LaTeXe''. Takie polecenie mogłoby się przydać, gdyby tytuł książki
miał w niej występować wielokrotnie.

\begin{example}
\newcommand{\kwle}{Nie za 
krótkie wprowadzenie 
do systemu \LaTeXe}
Oto ,,\kwle''\ldots{}
,,\kwle''
\end{example}

Następny przykład ilustruje sposób wykorzystania opcjonalnego
argumentu \emph{liczba}. Znacznik \verb|#1| oznacza pierwszy parametr
formalny, \verb|#2| oznacza drugi (\verb|#3| oznaczałby trzeci itd.).

\begin{example}
\newcommand{\txsit}[2]
 {Oto \emph{#1}
  #2 wprowadzenie
  do systemu \LaTeXe}
% w ciele dokumentu:
\begin{itemize}
\item \txsit{Nie za}{krótkie}
\item \txsit{Bardzo}{długie}
\end{itemize}
\end{example}

\LaTeX{} nie pozwala zdefiniować instrukcji nazwanej tak samo jak
wcześniej zdefiniowane polecenie. W wypadku gdy chcemy zmienić
znaczenie już istniejącej instrukcji, powinniśmy użyć polecenia
\ci{renewcommand}. Za wyjątkiem nazwy ma ono składnię identyczną jak
\verb|\newcommand|.

Czasami może się też przydać polecenie \ci{providecommand}. Działa
ono jak \verb|\newcommand|, z tym że jeśli istnieje już komenda o
takiej samej nazwie, to nie zastępuje ono starej, zwyczajnie
ignorując nową.

Nieco uwagi należy poświęcić temu, jaki skutek ma umieszczenie
odstępu po komendzie \LaTeX{}a. Informacje na ten temat można znaleźć
na stronie \pageref{whitespace}.

\subsection{Nowe otoczenia}
Odpowiednikiem definiującej nowe polecenie instrukcji
\verb|\newcommand| jest dla otoczeń instrukcja
\verb|\newenvironment|. Ma ona następującą składnię:

\begin{lscommand}
  \ci{newenvironment}\verb|{|%
  \emph{nazwa}\verb|}[|\emph{liczba}\verb|]{|%
  \emph{przed}\verb|}{|\emph{po}\verb|}|
\end{lscommand}

Podobnie jak w przypadku \ci{newcommand}, \ci{newenvironment} można
użyć z argumentem opcjonalnym albo bez niego. \LaTeX{} wstawia tekst
\emph{przed}, gdy w dokumencie napotyka napis
\verb+\begin{+\emph{nazwa}\verb+}+, a zawartość argumentu \emph{po}
-- po napotkaniu napisu \verb|\end{|\emph{nazwa}\verb|}|.

Poniższy przykład ilustruje sposób użycia instrukcji
\ci{newenvironment}.
\begin{example}
\newenvironment{król}
 {\rule{1ex}{1ex}%
      \hspace{\stretch{1}}}
 {\hspace{\stretch{1}}%
      \rule{1ex}{1ex}}

\begin{król}
Moi wierni poddani\ldots
\end{król}
\end{example}

Znaczenie argumentu \emph{num} jest takie samo jak w instrukcji
\verb|\newcommand|. \LaTeX{} nie pozwala zdefiniować otoczenia o już
istniejącej nazwie. W razie potrzeby zastąpienia już istniejącego
otoczenia powinniśmy użyć polecenia \ci{renewenvironment}, o składni
takiej samej jak \ci{newenvironment}.

Polecenia użyte w powyższym przykładzie są objaśniane dalej. O
poleceniu \ci{rule} można przeczytać na stronie \pageref{sec:rule}, o
\ci{stretch} -- na stronie \pageref{cmd:stretch}, a informacje na
temat \ci{hspace} można znaleźć na stronie \pageref{sec:hspace}.

\subsection{Nadmiarowe odstępy}

Gdy tworzymy nowe otoczenie, problemem mogą być niechciane przez nas
odstępy, które \LaTeX{} wstawia do składu. Rozważmy przykład
otoczenia, które ma się rozpoczynać od akapitu bez wcięcia, ponadto
pierwszy akapit po otoczeniu także nie ma mieć wcięcia. Polecenie
\ci{ignorespaces}, umieszczone jako ostatnie polecenie bloku
\emph{begin} otoczenia, spowoduje zignorowanie wszystkich odstępów
występujących przed pierwszym akapitem otoczenia. Usunięcie drugiego
wcięcia przez umieszczenie w bloku końcowym \ci{ignorespaces} jest
niemożliwe, gdyż zawsze ostatnim poleceniem będzie
\verb@\end{otoczenie}@, które anuluje działanie \ci{ignorespaces}. W
takiej sytuacji trzeba skorzystać z polecenia
\ci{ignorespacesafterend}. Napotkawszy je, \LaTeX{} wstawi
\ci{ignorespaces} dopiero po wykonaniu zamykającego
\verb|\end{otoczenie}|.   %znaków%% źle się łamie strona% zbędne

\begin{example}
\newenvironment{proste}%
 {\noindent}%
 {\par\noindent}

\begin{proste}
Zobacz odstęp\\z lewej strony.
\end{proste}
Tak samo\\tutaj.
\end{example}

\begin{example}
\newenvironment{poprawne}%
 {\noindent\ignorespaces}%
 {\par\noindent%
   \ignorespacesafterend}

\begin{poprawne}
Bez odstępu\\z lewej strony.
\end{poprawne}
Tak samo\\tutaj.
\end{example}

% Poniższe jest zupełnie niepotrzebne [tp]:
% Dlaczego? [ms]
\subsection{Wywoływanie \LaTeX{}a z linii poleceń}

Użytkownicy systemów operacyjnych typu Unix do obsługi \LaTeX{}owych
projektów stosują zapewne pliki Makefile. W tym kontekście ciekawa
byłaby możliwość tworzenia różnych wersji tego samego dokumentu
metodą podawaniu różnych parametrów w linii poleceń wołającej
\LaTeX{}a. Możemy to ułatwić, umieszczając w dokumencie coś takiego:
\begin{verbatim}
\usepackage{ifthen}
\ifthenelse{\equal{\blackandwhite}{true}}{
  % coś robimy w trybie "czarno--białym"
}{
  % robimy coś innego w trybie "kolorowym"
}
\end{verbatim}
Możemy teraz wywołać \LaTeX{}a w następujący sposób:
\begin{verbatim}
xelatex '\newcommand{\blackandwhite}{true}\input{test.tex}'
\end{verbatim}
Polecenie \verb|\blackandwhite| zostaje zdefiniowane jeszcze przed
odczytem pliku źródłowego. Zmieniając \verb|\blackandwhite| na
\ci{false} spowodujemy generowanie kolorowej wersji dokumentu.

\subsection{Własne pakiety}

W wypadku definiowania wielu nowych poleceń i otoczeń preambuła
dokumentu może się znacznie wydłużyć. Dobrze w takiej sytuacji
stworzyć pakiet zawierający definicje tych instrukcji i otoczeń. Taki
pakiet można później dołączyć do dokumentu poleceniem
\ci{usepackage}.

\begin{figure}[!htbp]
  \begin{lined}{\textwidth}
    \begin{verbatim}
% Przykładowy pakiet ***
\ProvidesPackage{demopack}
\newcommand{\kwle}{Nie za krótkie wprowadzenie do systemu \LaTeXe}
\newcommand{\wle}[1]{\emph{#1} wprowadzenie
do systemu \LaTeXe}
\newenvironment{król}{\begin{quote}}{\end{quote}}
\end{verbatim}
  \end{lined}
  \caption{Przykładowy pakiet.} \label{package}
\end{figure}

Tworzenie pakietu polega na skopiowaniu poleceń z preambuły do
oddzielnego pliku o rozszerzeniu \eei{.sty}. Jest tylko jedno
specjalne polecenie, które należy wpisać na początku pakietu
\begin{lscommand}
  \ci{ProvidesPackage}\verb|{|\emph{nazwa pakietu}\verb|}|
\end{lscommand}
%
\noindent Dzięki instrukcji \verb|\ProvidesPackage| \LaTeX{} poznaje
nazwę pakietu, a to pozwala mu na przykład ostrzec użytkownika w
wypadku powtórnego dołączenia pakietu do dokumentu. Rysunek
\ref{package} przedstawia niewielki pakiet z instrukcjami z
powyższych przykładów.

\section{Fonty i rozmiary}
\label{sec:fontsize}

\subsection{Polecenia do zmiany fontu}
\index{font}\index{rozmiar fontu}

\LaTeX{} automatycznie wybiera odpowiedni font i jego rozmiar
% TODO: Może coś z tym zrobić?
% dobiera krój, odmianę i~stopień pisma\footnote{ \emph{Pismo
%   drukarskie\index{pismo!drukarskie}\/} to pismo utrwalone na nośniku,
% tj.~materiale, na którym umieszczono negatywy lub pozytywy znaków
% pisma. \emph{Krój pisma}\index{pismo!krój} to obraz pisma
% drukarskiego o~jednolitych cechach graficznych, niezależnych od
% stopnia i~odmiany pisma. Każdy krój pisma posiada swoją nazwę (na
% przykład Times New Roman, Computer Modern czy Garamond).
% \emph{Odmiana kroju}\index{pismo!odmiana} pisma różnicuje pisma
% jednego kroju ze względu na grubość, szerokość i~pochylenie.
% \emph{Stopień pisma}\index{pismo!stopień} określa z~kolei wielkość
% znaków. Zestawy metalowych \emph{czcionek}\index{czcionka|see{pismo
% drukarskie}}, czyli kawałków metalu, w~których utrwalano znaki pisma,
% drukarze przechowywali w~\emph{kasztach}\index{kaszta}. Angielską,
% a~właściwie amerykańską nazwą zestawu czcionek jednego kroju
% i~wielkości, powszechnie dziś używaną w~terminologii komputerowej,
% jest \emph{font}\index{font} (zobacz też~\cite{chwialowski}).%

% Fonty \LaTeX{}a, takie jak \acro{PL}, \acro{EC} czy \acro{LM}, są
% optycznie identyczne, bo wszystkie są replikami kroju \emph{Computer
%   Modern}, różnią się jednak od najczęściej używanego w~edytorach
% biurowych, takich jak {\MSWord}, kroju \emph{Times New Roman}. }
na podstawie logicznej struktury dokumentu (tytułów rozdziałów,
sekcji, przypisów itp.). Czasami zachodzi jednak chciałoby się
,,ręcznie'' przełączyć krój bądź stopień pisma. Można do tego użyć
poleceń zestawionych w tabelach~\ref{fonts} i~\ref{sizes}. Rozmiar
fontu jest kwestią układu graficznego dokumentu i zależy od wybranej
klasy dokumentu oraz ustawienia odpowiednich opcji. W
tabeli~\ref{tab:ptsizes} zestawiono stopnie pisma w jednostkach
absolutnych dla poleceń zmieniających wielkość kroju w standardowych
klasach dokumentów.

\begin{example}
{\small Nieliczni lecz
\textbf{odważni}
Rzymianie rządzili}
{\Large wielką \textit{Italią}.}
\end{example}

Jedną z istotnych funkcji \LaTeXe{} jest fakt, że własności fontów są
niezależne. Oznacza to, że zmiana rozmiaru bądź fontu przez polecenia
nie zmienia ustawionych wcześniej własności takich jak pochylenie czy
pogrubienie.

W \emph{trybie matematycznym} korzystanie z \emph{poleceń} zmiany
fontu chwilowo opuszcza \emph{tryb matematyczny} i wstawia normalny
tekst. Aby zmienić font do składania matematyki należy użyć
specjalnych poleceń zestawionych w tabeli~\ref{mathfonts}.

\begin{table}[!bp]
  \caption{Fonty.} \label{fonts}
  \begin{lined}{12cm}
    %
    % Alan suggested not to tell about the other form of the command
    % e.g. \verb|\sffamily| or \verb|\bfseries|. This seems a good thing to me.
    %
    \begin{tabular}{@{}rl@{\qquad}rl@{}}
      \fni{textrm}\verb|{...}|     & \textrm{\wi{szeryfowe}}     &
      \fni{textsf}\verb|{...}|     & \textsf{\wi{bezszeryfowe}}    \\
      \fni{texttt}\verb|{...}|     & \texttt{maszynowe}            \\[6pt]
      \fni{textmd}\verb|{...}|     & \textmd{jasne}              &
      \fni{textbf}\verb|{...}|     & \textbf{\wi{pogrubione}}      \\[6pt]
      \fni{textup}\verb|{...}|     & \textup{\wi{proste}}        &
      \fni{textit}\verb|{...}|     & \textit{\wi{kursywa}}         \\
      \fni{textsl}\verb|{...}|     & \textsl{\wi{pochylone}}     &
      \fni{textsc}\verb|{...}|     & \textsc{\wi{Kapitaliki}}      \\[6pt]
      \fni{textnormal}\verb|{...}| & \textnormal{font dokumentu} &&
    \end{tabular}

    \bigskip
  \end{lined}
\end{table}

\begin{table}[!bp]
  \index{romziar fontu}
  \caption{Rozmiary fontów.} \label{sizes}
  \begin{lined}{12cm}
    \begin{tabular}{@{}ll}
      \fni{tiny}         & \tiny        mikroskopijny \\
      \fni{scriptsize}   & \scriptsize  bardzo mały   \\
      \fni{footnotesize} & \footnotesize  mniejszy    \\
      \fni{small}        & \small            mały     \\
      \fni{normalsize}   & \normalsize  normalny      \\
      \fni{large}        & \large       duży
    \end{tabular}%
    \qquad\begin{tabular}{ll@{}}
      \fni{Large} & \Large       większy     \\[5pt]
      \fni{LARGE} & \LARGE       bardzo duży \\[5pt]
      \fni{huge}  & \huge        ogromny     \\[5pt]
      \fni{Huge}  & \Huge        największy
    \end{tabular}

    \bigskip
  \end{lined}
\end{table}

\begin{table}[!tbp]
  \caption{Absolutny rozmiar fontów w klasach standardowych.}\label{tab:pointsizes}
  \label{tab:sizes}
  \begin{lined}{12cm}
    \begin{tabular}{lrrr}
      \multicolumn{1}{c}{Rozmiar}          &
      \multicolumn{1}{c}{10pt (domyślny) } &
      \multicolumn{1}{c}{opcja 11pt}       &
      \multicolumn{1}{c}{opcja 12pt}                            \\
      \verb|\tiny|                         & 5pt  & 6pt  & 6pt  \\
      \verb|\scriptsize|                   & 7pt  & 8pt  & 8pt  \\
      \verb|\footnotesize|                 & 8pt  & 9pt  & 10pt \\
      \verb|\small|                        & 9pt  & 10pt & 11pt \\
      \verb|\normalsize|                   & 10pt & 11pt & 12pt \\
      \verb|\large|                        & 12pt & 12pt & 14pt \\
      \verb|\Large|                        & 14pt & 14pt & 17pt \\
      \verb|\LARGE|                        & 17pt & 17pt & 20pt \\
      \verb|\huge|                         & 20pt & 20pt & 25pt \\
      \verb|\Huge|                         & 25pt & 25pt & 25pt \\
    \end{tabular}

    \bigskip
  \end{lined}
\end{table}

\begin{table}[!bp]
  \caption{Fonty matematyczne.} \label{mathfonts}
  \begin{lined}{0.7\textwidth}
    \begin{tabular}{@{}ll@{}}
      \fni{mathrm}\verb|{...}|     & $\mathrm{Font\ Prosty}$         \\
      \fni{mathbf}\verb|{...}|     & $\mathbf{Font\ Pogrubiony}$     \\
      \fni{mathsf}\verb|{...}|     & $\mathsf{Font\ bezszeryfowy}$   \\
      \fni{mathtt}\verb|{...}|     & $\mathtt{Font\ maszynowy}$      \\
      \fni{mathit}\verb|{...}|     & $\mathit{Kursywa}$              \\
      \fni{mathcal}\verb|{...}|    & $\mathcal{FONT\ KALIGRAFICZNY}$ \\
      \fni{mathnormal}\verb|{...}| & $\mathnormal{Normalny\ Font}$   \\
    \end{tabular}

    %\begin{tabular}{@{}lll@{}}
    %\textit{Command}&\textit{Example}&    \textit{Output}\\[6pt]
    %\fni{mathcal}\verb|{...}|&    \verb|$\mathcal{B}=c$|&     $\mathcal{B}=c$\\
    %\fni{mathscr}\verb|{...}|&    \verb|$\mathscr{B}=c$|&     $\mathscr{B}=c$\\
    %\fni{mathrm}\verb|{...}|&     \verb|$\mathrm{K}_2$|&      $\mathrm{K}_2$\\
    %\fni{mathbf}\verb|{...}|&     \verb|$\sum x=\mathbf{v}$|& $\sum x=\mathbf{v}$\\
    %\fni{mathsf}\verb|{...}|&     \verb|$\mathsf{G\times R}$|&        $\mathsf{G\times R}$\\
    %\fni{mathtt}\verb|{...}|&     \verb|$\mathtt{L}(b,c)$|&   $\mathtt{L}(b,c)$\\
    %\fni{mathnormal}\verb|{...}|& \verb|$\mathnormal{R_{19}}\neq R_{19}$|&
    %$\mathnormal{R_{19}}\neq R_{19}$\\
    %\fni{mathit}\verb|{...}|&     \verb|$\mathit{ffi}\neq ffi$|& $\mathit{ffi}\neq ffi$
    %\end{tabular}

    \bigskip
  \end{lined}
\end{table}

Przy okazji omawiania poleceń dotyczących fontów trzeba wspomnieć o
koncepcji \emph{grupowania}. Grupa\index{grupa} zaczyna się od znaku
\verb+{+, a kończy znakiem \verb+}+. Grupy służą do ograniczania
zasięgu działania poleceń \LaTeX{}a.\index{grupowanie}

\begin{example}
Lubię {\LARGE duże oraz
{\small małe} litery} i cyfry.
\end{example}

%%<PLext>
% Pierwszy nawias klamrowy rozpoczyna grupę, potem polecenie
% \verb+\LARGE+ zmienia stopień pisma na \emph{bardzo duży}, w~którym
% zostanie złożony napis ,,duże oraz''. Kolejny otwierający nawias
% klamrowy zaczyna następną grupę. W~jej obrębie polecenie
% \verb+\small+ zmienia stopień pisma na mały. Do złożenia w~tym
% stopniu przewidziano jedynie słowo ,,małe'', bo nawias \verb+}+ za
% tym słowem zamyka grupę. Po zamknięciu grupy następuje powrót do
% stopnia pisma aktualnego przed jej rozpoczęciem, czyli \verb+\LARGE+.
% W~nim zostanie złożone słowo ,,litery''. Zamknięcie tej grupy
% powoduje, że resztę tekstu \LaTeX{} złoży w~wyjściowym stopniu pisma.
% Jak widać, grupy można zagnieżdżać, nawet wielokrotnie.
%%</PLext>

Polecenia zmieniające rozmiar fontu zmieniają także interlinię.
Dzieje się tak jednak tylko wtedy, gdy przed zamknięciem odpowiedniej
grupy kończony jest akapit. Zwróćmy uwagę na miejsce, w którym
umieszczono instrukcję \ci{par} w poniższych dwóch
przykładach\footnote{\texttt{\bs{}par} jest równoważny wstawieniu
  pustej linii}.

\begin{example}
{\Large Nie czytaj tego!
 To nieprawda.
 Możesz mi zaufać!\par}
\end{example}

\begin{example}
{\Large To też jest nieprawda.
Ale pamiętaj, że jestem kłamcą.}
\par
\end{example}

Jeśli zachodzi konieczność zmiany stopnia pisma dla całego akapitu
lub jeszcze dłuższego tekstu, to możemy skorzystać ze składni
przyjętej dla otoczeń.

\begin{example}
\begin{Large}
To nie jest prawdziwe.
Ale cóż jest w dzisiejszych 
czasach\ldots
\end{Large}
\end{example}

\noindent Zapis taki pozwala unikać liczenia nawiasów klamrowych.

\subsection{Uważaj! Tu mogą być promile}

Jak zaznaczyliśmy na początku tego rozdziału, nie należy instrukcji
zmiany fontu wstawiać bezpośrednio do pliku źródłowego. Byłoby to
niezgodne z podstawową ideą \LaTeX{}a, jaką jest oddzielenie formy od
treści dokumentu i posługiwanie się formatowaniem logicznym, a nie
wizualnym. Jeżeli fragment tekstu ma zostać wyróżniony przez złożenie
go innym krojem lub stopniem pisma, to należy zdefiniować odpowiednie
polecenie i potem właśnie jego używać w treści dokumentu.

\begin{example}
\newcommand{\ups}[1]{%
 \textbf{#1}}
Nie \ups{wchodzić} do pokoju, 
jest zajęty przez \ups{maszyny}
nieznanego pochodzenia.
\end{example}

Niewątpliwą zaletą tego podejścia jest to, że kiedy później będziemy
chcieli wyróżnić wszystkie elementy, na które czytelnik powinien
zwrócić \emph{szczególną uwagę}, w sposób inny niż składając je
pismem pogrubionym, to nie musimy przeglądać całego pliku w celu
sprawdzenia, czy dane wystąpienie \ci{textbf} dotyczy tekstu, na
który ma zostać zwrócona \emph{szczególna uwaga}, czy też wstawione
zostało w zupełnie innym celu.

Zwróć uwagę, że poinstruowanie \LaTeX{}a do \emph{wyróżnienia} czegoś
jest różne od poinstruowania użycia innego \emph{fontu}. Poleceni
\ci{emph} działa inaczej w zależności od kontekstu, podczas gdy
polecenia zmiany fontu są absolutne.

\begin{example}
\textit{Możesz również
  \emph{wyróżnić} tekst 
  napisany kursywą,}
\textsf{w foncie
  \emph{bezszeryfowym},}
\texttt{jak i również
  \emph{maszynowym}.}
\end{example}

\subsection{Rada}

Na zakończenie naszej podróży w świat fontów i ich rozmiarów,
zostawiamy Was z drobną radą:\nopagebreak

\begin{quote}
  \underline{\textbf{Pamiętaj\Huge!}} \textit{Im}
  \textsf{W\textbf{\LARGE I} \texttt{Ę}\textsl{C}}ej fontów \Huge użyjesz
  \footnotesize \textbf{w} \small \texttt{dokumencie},
  \large \textit{tym} \normalsize bardziej \textsc{czytelny} i
  \textsl{\textsf{piękny} się s\large t\Large a\LARGE j\huge e}.
\end{quote}

\section{Odstępy}

\subsection{Interlinia}

\index{interlinia} Jeśli chcesz używać większej interlinii w
dokumencie, to możesz zmienić jej wartość przy użyciu polecenia
\begin{lscommand}
  \ci{linespread}\verb|{|\emph{factor}\verb|}|
\end{lscommand}
% 
\noindent w preambule dokumentu. Wstaw \verb|\linespread{1.3}| aby
otrzymać interlinię ,,jeden i pół'', a \verb|\linespread{1.6}| dla
,,podwójnej'' interlinii. Zwykła interlinia ma
wartość~1.\index{podwójna interlinia}

Polecenie \ci{linespread} wpływa na odstępy międzywierszowe w całym
dokumencie. Jeśli są wyraźne powody do zmiany odstępu tylko w pewnym
fragmencie dokumentu, to lepsza może się okazać instrukcja:
\begin{lscommand}
  \verb|\setlength{\baselineskip}{1.5\baselineskip}|
\end{lscommand}

\begin{example}
{\setlength{\baselineskip}%
           {1.5\baselineskip}
Ten akapit jest składany 
z \ci{baselineskip} ustawionym 
na 1,5 dotychczasowej wartości. 
Zwróćmy uwagę na wystąpienie 
\ci{par} na końcu akapitu.\par}

Przeznaczenie tego akapitu 
jest jasne. Ilustruje on, 
że po zamykającym nawiasie 
klamrowym następuje powrót 
do normalnego składu.
\end{example}

\subsection{Formatowanie akapitów}\label{parsp}

Dwa dodatkowe parametry określają w \LaTeX{}u wielkość, odpowiednio,
wcięcia akapitowego oraz odstępu między akapitami. Wpisując na
przykład do preambuły dokumentu
\begin{code}
\ci{setlength}\verb|{|\ci{parindent}\verb|}{0pt}| \\
\verb|\setlength{|\ci{parskip}\verb|}{1ex plus 0.5ex minus 0.2ex}|
\end{code}
możemy zmienić układ akapitów. Te dwa polecenia zmieniają odstęp
pomiędzy dwoma akapitami, a cięcie ustawiają na zero.

\texttt{plus} i \texttt{minus} w długości powyżej instruują \TeX{}a,
że dozwolone jest zwiększenie i zmniejszenie odstępów jeśli jest to
konieczne do idealnego składu akapitów na stronie.

W niektórych krajach Europejskich, akapity są często oddzielane przy
użyciu odstępu i nie mają wcięć. Zwróć jednak uwagę, że takie
ustawienie wpływa również na spis treści przez co on również jest
nieco obszerniejszy. Aby tego uniknąć możesz przenieść oba polecenia
z preambuły do miejsca w dokumencie pod poleceniem
\verb|\tableofcontents| lub po prostu korzystać z domyślnego
oddzielania akapitów, tak jak w większości profesjonalnych książek.

Jeśli chcesz wciąć akapit który nie jest wcięty, użyj
\begin{lscommand}
  \ci{indent}
\end{lscommand}
%
\noindent na początku akapitu\footnote{Dla uzyskania efektu wcięcia w
  pierwszym akapicie po tytule rozdziału, sekcji itd. należy dołączyć
  do dokumentu pakiet \pai{indentfirst} z zestawu pakietów ,,tools''.}.
Oczywiście, przyniesie to tylko pożądany efekt pod warunkiem, że
\verb|\parindent| nie jest ustawione na zero.

Aby uzyskać akapit bez wcięcia, należy przed nim umieścić polecenie
\begin{lscommand}
  \ci{noindent}
\end{lscommand}
\noindent Może to być użyteczne gdy zaczynasz dokument od tekstu, a nie od polecenia wstawiającego sekcje.

\subsection{Odstępy poziome}
\label{sec:hspace}

Wielkość odstępów między słowami oraz między zdaniami \LaTeX{} ustala
automatycznie. Dodatkowy odstęp poziomy\index{odstęp!poziomy} możemy
wstawić przy pomocy
\begin{lscommand}
  \ci{hspace}\verb|{|\emph{odległość}\verb|}|
\end{lscommand}
%
Jeżeli taki odstęp, w wyniku złamania akapitu na wiersze, wypadnie na
początku lub na końcu wiersza, to zostanie on usunięty -- aby
zapobiec justowaniu akapitu ,,w chorągiewkę''. Jeżeli \LaTeX{} ma
wstawić odstęp także na początku lub na końcu wiersza, to zamiast
\verb+\hspace+ należy użyć ,,gwiazdkowej'' wersji \ci{hspace*}.
Argument \emph{odległość} oznacza wymiar \LaTeX{}owy. W najprostszej
postaci jest to liczba wraz z jednostką odległości. Wykaz
ważniejszych spośród dostępnych w \LaTeX{}u jednostek odległości
znajduje się w tabeli~\ref{units}.\index{wymiary}\index{jednostki}

\begin{example}
To jest\hspace{1.5cm}odstęp 
równy 1,5~cm.
\end{example}
\suppressfloats
\begin{table}[tbp]
  \caption{Jednostki \TeX{}a.} \label{units}\index{jednostki}
  \begin{lined}{9.5cm}
    \begin{tabular}{@{}ll@{}}
      \texttt{mm} & milimetr $\approx 1/25$~cala \quad \demowidth{1mm}       \\
      \texttt{cm} & centymetr = 10~mm \quad \demowidth{1cm}                  \\
      \texttt{in} & cal $=$ 25,4~mm \quad \demowidth{1in}                    \\
      \texttt{pt} & punkt $\approx 1/72$~cala $\approx \frac{1}{3}$~mm
      \quad\demowidth{1pt}                                                   \\
      \texttt{em} & $\approx$ szerokość litery ,,M'' w bieżącym foncie \quad
      \demowidth{1em}                                                        \\
      \texttt{ex} & $\approx$ wysokość litery ,,x'' w bieżącym foncie \quad
      \demowidth{1ex}
    \end{tabular}

    \bigskip
  \end{lined}
\end{table}

%%<PLext>
% Często wygodnie jest użyć odległości ,,elastycznej'', zostawiając
% \LaTeX{}owi nieco swobody doboru takiej odległości, jaką uzna za
% najlepszą z~punktu widzenia jakości składu. Taką elastyczną odległość
% zapisujemy następująco: \emph{n}~\verb+plus+~\emph{p}
% \verb+minus+~\emph{m}. Części ,,\verb+plus+~\emph{p}''
% i~,,\verb+minus+~\emph{m}'' są opcjonalne (każdą z~nich można
% pominąć). Tego typu odległości mają naturalną wielkość \emph{n}
% i~mogą się kurczyć lub~rozciągać w~zakresie od $\emph{n} - \emph{m}$
% do $\emph{n} + \emph{p}$.

% Omawiany wcześniej odstęp między akapitami (\verb+\parskip+) jest
% przykładem \LaTeX{}owego wymiaru o~zmiennej wielkości. Część wymiarów
% może mieć wartości zmienne, część jednak musi mieć wartość stałą.
% Powinno być na przykład zrozumiałe, że wcięcie akapitowe musi być
% wielkością stałą, podobnie jak szerokość i~wysokość łamu.
%%</PLext>

\label{cmd:stretch} Polecenie
\begin{lscommand}
  \ci{stretch}\verb|{|\emph{n}\verb|}|
\end{lscommand}
\noindent wstawia specjalny rozciągliwy odstęp, który potrafi
wypełnić całą wolną przestrzeń w pionie lub w poziomie. Jeżeli na
przykład wstawimy w wierszu dwa lub więcej poleceń
\verb|\hspace{\stretch{|\emph{n}\verb|}}|, to odstępy dzięki nim
uzyskane będą miały wielkość według proporcji zadanych przez
argument \emph{n}.

\begin{example}
x\hspace{\stretch{1}}
x\hspace{\stretch{3}}x
\end{example}

Wielkość odstępów towarzyszących tekstowi warto dostosować do
aktualnego rozmiaru czcionki. Można do tego użyć względnych jednostek
miary \texttt{em} oraz \texttt{ex}:

\begin{example}
{\Large{}duż\hspace{1em}e}\\
{\tiny{}mał\hspace{1em}e}
\end{example}

\subsection{Odstępy pionowe}
Odstępy pionowe między akapitami, rozdziałami, sekcjami itp. \LaTeX{}
wstawia automatycznie. Jeśli zachodzi potrzeba wstawienia dodatkowego
odstępu pionowego \emph{pomiędzy dwoma akapitami}, to należy
zastosować polecenie:
\begin{lscommand}
  \ci{vspace}\verb|{|\emph{odległość}\verb|}|
\end{lscommand}

Polecenie to należy oddzielić pustymi liniami od otaczającego je
tekstu. Jeżeli w wyniku złamania strony odstęp taki znajdzie się na
początku lub na końcu strony (będzie zaczynał lub też kończył kolumnę
tekstu), to zostanie on usunięty. Jeżeli ma zostać wstawiony także na
początku lub końcu strony, to należy użyć wersji ,,gwiazdkowej''
\ci{vspace*}
% \footnote{Zwróćmy uwagę, że w takim
%   wypadku wysokość kolumny tekstu na sąsiednich stronach nie będzie
%   jednakowa, stosujmy zatem polecenie \ci{vspace*} z pewną
%   ostrożnością.}.
Argument \emph{odległość} oznacza \LaTeX{}owy
wymiar.\index{odstęp!pionowy}

Do rozmieszczania tekstu w pionie można używać polecenia
\ci{stretch}, łącznie z \ci{pagebreak}. Dzięki temu można uzyskać
tekst w ostatnim wierszu strony lub wyśrodkowany pionowo.
\begin{code}
\begin{verbatim}
Jakiś tekst\ldots

\vspace{\stretch{1}}
To będzie w ostatniej linii strony.\pagebreak
\end{verbatim}
\end{code}

Dodatkowy odstęp między dwoma wierszami \emph{tego samego} akapitu
lub między wierszami tabeli możemy uzyskać poleceniem
\begin{lscommand}
  \ci{\bs}\verb|[|\emph{odległość}\verb|]|
\end{lscommand}

Polecenia \ci{bigskip}, \ci{medskip} i \ci{smallskip} wstawiają
odpowiednio odstępy ,,elastyczne'' o następujących wielkościach: 12pt
$\pm$ 4pt, 6pt $\pm$ 2pt oraz 3pt $\pm$ 1pt.
% \footnote{Nie są to
%   wielkości przypadkowe: 12 punktów to typowa odległość między liniami
%   podstawowymi wierszy przy składzie pismem w stopniu 10 punktów.}.

\section{Układ graficzny strony}

\begin{figure}[!hp]
  \begin{center}
    \makeatletter\@mylayout\makeatother
  \end{center}
  \vspace*{1.8cm}
  \caption[Argumenty układu dla tej książki.]{Argumenty układu dla tej
    książki. Wypróbuj pakiet \pai{layouts} aby wyświetlić układ swojego
    własnego dokumentu.}
  \label{fig:layout}
  \cih{footskip}
  \cih{headheight}
  \cih{headsep}
  \cih{marginparpush}
  \cih{marginparsep}
  \cih{marginparwidth}
  \cih{oddsidemargin}
  \cih{paperheight}
  \cih{paperwidth}
  \cih{textheight}
  \cih{textwidth}
  \cih{topmargin}
\end{figure}
\index{układ strony}
Wymiary papieru można podać jako argumenty instrukcji
\verb+\documentclass+. Na podstawie zadeklarowanych wymiarów \LaTeX{}
oblicza szerokość i wysokość kolumny, marginesy i inne parametry. Na
rysunku \ref{fig:layout} przedstawiono dostępne parametry graficznego
układu strony. Do przygotowania rysunku użyliśmy pakietu \pai{layout}
z zestawu ,,tools''\footnote{\CTAN|macros/latex/packages/tools|.}.
Jeżeli obliczone przez \LaTeX{}a wartości są z pewnych względów
nieodpowiednie, to można je zmienić.\index{wymiar strony}\index{rozmiar kartki}

\textbf{UWAGA!}\ldots Zanim zaczniemy eksperymentować, zmniejszając
na przykład szerokość marginesu, chwilę pomyślmy. Za większością
wartości domyślnych ustawień w \LaTeX{}u stoją ważne powody. Nie
inaczej jest z szerokością marginesu.

Z pewnością w porównaniu z wydrukiem przygotowanym za pomocą świeżo
kupionego programu MS Word strona \LaTeX{}owa ma denerwująco szeroki
margines. Ale spójrz na Twoją ulubioną książkę\footnote{Mamy tu na
  myśli prawdziwą wydrukowaną książkę z renomowanego wydawnictwa.} i
policzmy na niej liczbę znaków w przeciętnym wierszu. Okaże się, że
wynosi ona około 66. Jeśli porównamy ją z wydrukiem złożonym przez
\LaTeX{}a, to zapewne i tym razem będzie ona zbliżona do 66. Z
doświadczeń wynika bowiem, że w miarę wzrostu liczby znaków w wierszu
czytanie staje się męczące. Dzieje się tak, gdyż przy długich
wierszach naszym oczom trudniej jest przenosić wzrok z końca jednego
wiersza na początek następnego. Jest to jedna z przyczyn stosowania
składu wielołamowego w gazetach i czasopismach.

Tak więc, jeśli zwiększamy szerokość kolumny, to pamiętajmy, że może
to utrudnić odbiorcom czytanie naszej pracy. No, ale dość już kazań.
Obiecaliśmy przecież wyjaśnić, jak można te rzeczy robić\dots

W \LaTeX{}u mamy dwie instrukcje do zmiany wielkości wymiarów,
używane zazwyczaj w obrębie preambuły dokumentu.

Pierwsza z nich nadaje parametrowi określoną wielkość:
\begin{lscommand}
  \ci{setlength}\verb|{|\emph{parametr}\verb|}{|\emph{wielkość}\verb|}|
\end{lscommand}

Drugie polecenie zwiększa wartość parametru o określoną wielkość:
\begin{lscommand}
  \ci{addtolength}\verb|{|\emph{parametr}\verb|}{|\emph{wielkość}\verb|}|
\end{lscommand}

Z tej pary częściej stosowana jest druga instrukcja, ponieważ pozwala
zmieniać wymiary. Przykładowo, aby zwiększyć szerokość tekstu o jeden
centymetr, umieszczamy w preambule dokumentu następujące polecenia:
\begin{code}
\verb|\addtolength{\hoffset}{-0.5cm}|\\
\verb|\addtolength{\textwidth}{1cm}|
\end{code}

Warto używać tutaj pakietu \pai{calc}. Pozwala on wykonywać operacje
arytmetyczne w argumentach do \ci{setlength} oraz innych miejsc gdzie
wprowadzane są wartości numeryczne.

\section{Więcej o odległościach}

Kiedy to tylko możliwe, unikajmy stosowania wymiarów zdefiniowanych w
jednostkach absolutnych, takich jak punkty czy milimetry. Starajmy
się raczej odnosić wymiary do już istniejących, takich jak wysokość
czy szerokość kolumny. Dla rysunków może to być szerokość linii
tekstu by mogły wypełnić określoną część strony.

Następujące trzy polecenia pozwalają określić szerokość, wysokość i
głębokość napisu.

\begin{lscommand}
  \ci{settoheight}\verb|{|\emph{nazwa}\verb|}{|\emph{napis}\verb|}|\\
  \ci{settodepth}\verb|{|\emph{nazwa}\verb|}{|\emph{napis}\verb|}|\\
  \ci{settowidth}\verb|{|\emph{nazwa}\verb|}{|\emph{napis}\verb|}|
\end{lscommand}

\noindent Przykład poniżej ilustruje zastosowanie tych poleceń.

\begin{example}
\newenvironment{vardesc}[1]{%
  \settowidth{\parindent}{#1:\ }
  \makebox[0pt][r]{#1:\ }}{}

\begin{displaymath}
a^2+b^2=c^2
\end{displaymath}

\begin{vardesc}{gdzie}$a$,
$b$ -- są bokami stykające 
się z kątem prostym.

$c$ -- jest bokiem naprzeciwko
kąta prostego i jest samotny.

$d$ -- który nie pokazuje się
tutaj w ogóle.
Zagadkowe, czyż nie?
\end{vardesc}
\end{example}

\section{Pudełka}
Każdą stronę \LaTeX{} tworzy z pudełek (box)\index{pudełko}, które
odpowiednio skleja. Elementarnymi pudełkami są litery, z których
sklejane są słowa. Słowa są następnie łączone w wiersze, a wiersze --
w akapity. Do łączenia używany jest specjalny klej, który dzięki
elastyczności pozwala wyrazy ścisnąć lub rozciągnąć tak, by dokładnie
wypełniały wiersze na stronie.

Trzeba przyznać, że takie ujęcie jest mocno uproszczoną wersją tego,
co się naprawdę dzieje, chociaż zasadniczo biorąc, działanie \TeX{}a
można jednak wyjaśnić właśnie w terminach pudełek oraz
kleju\index{klej} (odstępu wstawianego między pudełkami). Pudełkami
są nie tylko litery. Do pudełka można włożyć praktycznie wszystko,
także inne pudełka. Każde pudełko \LaTeX{} traktuje jak pojedynczą
literę.

Chociaż nie mówiliśmy o tym wprost, pudełka pojawiały się już w
poprzednich rozdziałach. Na przykład polecenie \ci{includegraphics}
albo otoczenie \ei{tabular} tworzą pudełka. Dzięki temu dwa rysunki
albo tabele można łatwo zestawić obok siebie. Trzeba jedynie zadbać o
to, by łączna szerokość połączonych obiektów nie przekraczała
szerokości tekstu.

To samo odnosi się do akapitów, które -- jeśli tego potrzebujemy --
możemy składać w pudełka o zadanej szerokości przy użyciu polecenia

\begin{lscommand}
  \ci{parbox}\verb|[|\emph{pozycja}\verb|]{|\emph{szerokość}\verb|}{|\emph{tekst}\verb|}|
\end{lscommand}

\noindent lub otoczenia

\begin{lscommand}
  \verb|\begin{|\ei{minipage}\verb|}[|\emph{pozycja}\verb|]{|\emph{szerokość}\verb|}| tekst
  \verb|\end{|\ei{minipage}\verb|}|
\end{lscommand}

\noindent Argument \texttt{pozycja} przyjmuje jedną z liter
\texttt{c, t} lub \texttt{b} aby sterować wyrównaniem pionowym tekstu
wokół. Argument \emph{szerokość} to wymiar określający szerokość
pudełka. Główna różnica między \ci{parbox} a \pai{minipage} polega na
tym, że wewnątrz \ci{parbox} nie wszystkie polecenia i otoczenia są
dozwolone, w przeciwieństwie do otoczenia \ei{minipage}.

Polecenie \ci{parbox} składa tekst w pudełku, w razie potrzeby
dzieląc tekst na linijki. Istnieją również pudełka, które operują
tylko na materiale wyrównanym poziomo. Znamy już jedno z nich: nazywa
się \ci{mbox}. Pakuje ono wiele pudełek w jedno i może być użyte by
zapobiec łamaniu słów przez \LaTeX{}a. Ponieważ pudełka można wkładać
do pudełek, to pudełka te dają nam pełną dowolność jeśli chodzi o
układ poziomy.

\begin{lscommand}
  \ci{makebox}\verb|[|\emph{szerokość}\verb|][|\emph{pozycja}\verb|]{|\emph{tekst}\verb|}|
\end{lscommand}

\noindent W opcjonalnym argumencie \emph{szerokość} możemy zadać
szerokość pudełka widoczną z zewnątrz\footnote{Może się ona różnić od
  faktycznej szerokości tekstu w pudełku; może wynosić zero, a nawet
  być wielkością ujemną! Ustawienie jej na wartość zero oznacza, że nie
  będzie ona wpływać na pozostałe pudełka w dokumencie.}. W obrębie
argumentu \emph{szerokość} możemy się też posługiwać wielkościami
\ci{width} (szerokość), \ci{height} (wysokość), \ci{depth}
(głębokość) oraz \ci{totalheight} (suma wysokości i głębokości).
Ponadto argument \emph{pozycja} określa sposób umieszczenia tekstu.
Litera \texttt{c} oznacza wyśrodkowanie, \texttt{l} -- dosunięcie do
lewej, \texttt{r} -- dosunięcie do prawej, a \texttt{s} --
rozstrzelenie zawartości.

Polecenie \ci{framebox} działa dokładnie tak samo jak \ci{makebox},
ale rysuje ramkę wokół tekstu.

Poniższy przykład obrazuje w jaki sposób można wykorzystać polecenia
\ci{makebox} oraz \ci{framebox}.

\begin{example}
\makebox[\textwidth]{%
    ś r o d k o w y}\par
\makebox[\textwidth][s]{%
    r o z s t r z e l o n y}\par
\framebox[1.1\width]{Chyba 
    jestem w ramce!} \par
\framebox[0.8\width][r]{Niech
    to, jestem za szerokie} \par
\framebox[1cm][l]{nie przejmuj
    się, ja też}
Możesz to przeczytać?
\end{example}

Ponieważ kontrolujemy już poziom, oczywistym następnym krokiem jest
przejęcie kontroli nad pionem\footnote{Pełną kontrolę można osiągnąć
  jedynie poprzez opanowanie zarówno poziomu jak i pionu\ldots}. Żaden
problem dla \LaTeX{}a. Polecenie

\begin{lscommand}
  \ci{raisebox}\verb|{|\emph{przesunięcie}\verb|}[|\emph{zasięg-powyżej-tekstu}\verb|][|\emph{zasięg-poniżej-tekstu}\verb|]{|\emph{tekst}\verb|}|
\end{lscommand}

\noindent pozwala definiować wartości pionowe pudełka. Możesz użyć
\ci{width}, \ci{height}, \ci{depth} i \ci{totalheight} w pierwszych
trzech argumentach by opierać się na wewnętrznym \emph{tekście}
pudełka.

\begin{example}
--- \raisebox{0pt}[0pt][0pt]{%
\Large\textbf{%
Aaaa\raisebox{-0.3ex}{a}%
\raisebox{-0.7ex}{aa}%
\raisebox{-1.2ex}{r}%
\raisebox{-2.2ex}{g}%
\raisebox{-4.5ex}{h}}}
--- krzyczała, ale nikt nie
zauważył, że coś się
jej przytrafiło.
\end{example}

\section{Kreski}
\label{sec:rule}

Kilka stron temu napotkaliśmy polecenie

\begin{lscommand}
  \ci{rule}\verb|[|\emph{przesunięcie}\verb|]{|\emph{szerokość}\verb|}{|\emph{wysokość}\verb|}|
\end{lscommand}

\noindent W normalnym użyciu tworzy ono zwyczajne czarne pudełko.

\begin{example}
\rule{3mm}{.1pt}%
\rule[-1mm]{5mm}{1cm}%
\rule{3mm}{.1pt}%
\rule[1mm]{1cm}{5mm}%
\rule{3mm}{.1pt}
\end{example}

\noindent Polecenie \ci{rule} służy zwykle do rysowania kresek
pionowych i poziomych. Na przykład gruba czarna krecha na stronie
tytułowej niniejszego \emph{Wprowadzenia} to wynik zadziałania tej
właśnie instrukcji.

%%<PLext>
% \section{Więcej o~składaniu tabel~\label{more:tables}}
% \subsection{Tabele o~zadanej szerokości}

% W~otoczeniu~\ei{tabular} szerokość poszczególnych kolumn tabeli jest
% ustalana automatycznie, a~szerokość tabeli jest sumą szerokości
% kolumn i~odstępów międzykolumnowych. Czasami jednak trzeba złożyć
% tabelę o~z~góry zadanej szerokości; jest to potrzebne przykładowo
% wtedy, gdy wszystkie tabele w~dokumencie mają mieć tę samą szerokość.

% Do tego celu można użyć albo otoczenia \ei{tabular*}, albo otoczenia
% \ei{tabularx} z~pakietu o~tej samej nazwie. Niestety każdy z~tych
% sposobów ma poważne ograniczenia funkcjonalne. Rozpocznijmy od
% otoczenia \ei{tabular*}, które różni się od \ei{tabular} tylko jednym
% dodatkowym parametrem obowiązkowym, określającym szerokość tabeli:
% %
% \begin{command}
%   \verb|\begin{tabular*}{|\emph{szerokość}\verb|}{|\emph{spec-kolumn}\verb|}|
% \end{command}
% %
% \noindent Rozważmy przykład tabeli zawierającej najważniejsze
% ,,parametry'' słynnych wzniesień i~przełęczy:
% \begin{code}
% \begin{verbatim}
% \begin{tabular}{|l|r|r|r|r|r|}\hline
% Nazwa   & \multicolumn{2}{|c|}{Wys. w~m~n.p.m.} &  
% Długość & \multicolumn{2}{|c|}{Nachylenie \%}\\ 
%  \cline{2-3} \cline{5-6}% \cline można wstawiać wielokrotnie
%         &  początek & koniec & w~km & śr. & max    \\ \hline
% Col du Galibier & 1401 & 2646 & 18,1 & 6,9\% & 14,5 \\
% Alpe D'Huez     &  724 & 1815 & 14,2 & 7,7\% & 15,0 \\
% Passo Gavia     & 1734 & 2618 & 13,5 & 6,5\% & 20,0 \\ \hline
% \end{tabular}
% \end{verbatim}
% \end{code}
% \noindent Złożone tabele wyglądają następująco: \par
% \medskip \noindent%%<-- ważne
% \begin{tabular}{|l|r|r|r|r|r|}\hline
%   Nazwa           & \multicolumn{2}{c|}{Wys. w~m~n.p.m.} & Długość & \multicolumn{2}{c|}{Nachylenie \%}                \\
%   \cline{2-3} \cline{5-6}
%                   & początek                             & koniec  & w~km                               & śr.   & max  \\ \hline
%   Col du Galibier & 1401                                 & 2646    & 18,1                               & 6,9\% & 14,5 \\
%   Alpe D'Huez     & 724                                  & 1815    & 14,2                               & 7,7\% & 15,0 \\
%   Passo Gavia     & 1734                                 & 2618    & 13,5                               & 6,5\% & 20,0 \\ \hline
% \end{tabular} \par
% \medskip
% %%
% \noindent Jeżeli tabela ma być złożona na przykład na szerokość łamu,
% to zastępujemy \ei{tabular} jego wersją z~gwiazdką oraz modyfikujemy
% preambułę tabeli:
% \begin{code}
% \begin{verbatim}
% \begin{tabular*}{\textwidth}%
% {@{\extracolsep{\stretch{1}}}|l|r|r|r|r|r|}\hline ...
% \end{tabular}
% \end{verbatim}
% \end{code}
% %%
% \noindent Złożona tabela wygląda następująco: \par \medskip

% \noindent%%<-- ważne
% \begin{tabular*}{\textwidth}%
%   {@{\extracolsep{\stretch{1}}}|l|r|r|r|r|r|}\hline
%   Nazwa   & \multicolumn{2}{c|}{Wys. w~m~n.p.m.} &  Długość & \multicolumn{2}{c|}{Nachylenie \%}\\
%   \cline{2-3} \cline{5-6}
%   &  początek & koniec & w~km & śr. & max \\ \hline
%   Col du Galibier & 1401 & 2646 & 18,1 & 6,9\% & 14,5 \\
%   Alpe D'Huez     &  724 & 1815 & 14,2 & 7,7\% & 15,0 \\
%   Passo Gavia     & 1734 & 2618 & 13,5 & 6,5\% & 20,0 \\ \hline
% \end{tabular*} \par
% \medskip \noindent Wewnątrz otoczenia \ei{tabular} \LaTeX{} odziela
% poszczególne kolumny stałym odstępem równym \ci{tabcolsep}. Do
% składania tabel o~określonej szerokości należy ten odstęp zamienić na
% taki, którego wielkość może się zmieniać
% (por.~punkt~\ref{sec:hspace}). Do tego celu należy użyć wspomnianej
% w~punkcie~\ref{sec:tabular} (s.~\pageref{sec:tabular-et}) instrukcji
% \verb+@+. Ponadto polecenie \ci{extracolsep}, umieszczone wewnątrz
% instrukcji \verb+@{...}+, wstawia \emph{dodatkowy odstęp\/} między
% kolejnymi kolumnami -- do odwołania poleceniem \ci{extracolsep} albo
% aż do końca tabeli.

% W~powyższym przykładzie polecenie \verb+@{...}+ usuwa domyślny odstęp
% międzykolumnowy, zastępując go specjalnym odstępem o~zmiennej
% wielkości (taki odstęp wstawia polecenie \ci{stretch}). Manipulując
% odstępem międzykolumnowym, \LaTeX{} dopasowuje szerokość tabeli do
% żądanej wielkości. Otoczenie \ei{tabular*}
% %do prawidłowego działania 
% powinno zawierać w~specyfikacji formatu kolumn co najmniej jedną
% konstrukcję \verb|@{\extracolsep{\stretch{1}}}|. Uważny czytelnik
% dostrzeże jednak, że kreski poziome pod pierwszym wierszem między
% kolumnami 2--3 oraz 5--6 nie są ,,dociągnięte'' do lewego brzegu.
% Niestety nie da się tego naprawić -- przynajmniej nie w~prosty
% sposób. Otoczenie \ei{tabular*} nadaje się do składania tabel, ale
% tylko wtedy, gdy nie korzystamy zbyt często z~polecenia \ci{cline}.

% Spróbujmy teraz zastosować otoczenie \ei{tabularx}. W~tym celu
% najpierw do preambuły dokumentu dołączamy pakiet \pai{tabularx}.
% Następnie zmieniamy tabelę w~taki sposób (kolumny, których szerokość
% ma być wyznaczona automatycznie, oznaczamy symbolem \verb@X@):
% \begin{code}
% \begin{verbatim}
% \begin{tabularx}{\textwidth}{|X|X|X|X|X|X|}\hline
% ...
% \end{tabularx}
% \end{verbatim}
% \end{code}

% \noindent Złożona tabela wygląda następująco: \par
% \medskip \begingroup \hbadness10001 \noindent %%<-- %%<-- ważne
% \begin{tabularx}{\textwidth}{|X|X|X|X|X|X|}\hline
%   Nazwa           & \multicolumn{2}{c|}{Wys. w~m~n.p.m.} & Długość & \multicolumn{2}{c|}{Nachylenie \%}                \\
%   \cline{2-3} \cline{5-6}
%                   & początek                             & koniec  & w~km                               & śr.   & max  \\ \hline
%   Col du Galibier & 1401                                 & 2646    & 18,1                               & 6,9\% & 14,5 \\
%   Alpe D'Huez     & 724                                  & 1815    & 14,2                               & 7,7\% & 15,0 \\
%   Passo Gavia     & 1734                                 & 2618    & 13,5                               & 6,5\% & 20,0 \\ \hline
% \end{tabularx} \par
% \endgroup
% %%
% \medskip \noindent Teraz wprawdzie wszystkie kreski są elegancko
% dociągnięte, ale jest problem z~pierwszą kolumną: jest ona zbyt
% wąska, a przez to zawartość rubryk już się nie mieści i~musi zostać
% przeniesiona\footnote{Ponadto lepiej, by kolumny 2--6 były wyrównane
%   do prawego, a~nie do lewego brzegu rubryki.}. Otoczenie \ei{tabularx}
% automatycznie dzieli bowiem tabelę wyłącznie na kolumny
% \emph{o~równej szerokości}. Jest to jego największe ograniczenie
% funkcjonalne.

% Specyfikacja kolumn tabeli oprócz \verb@X@ może zawierać także
% wartości ,,tradycyjne'', takie jak: \verb@l@, \verb@r@ lub \verb@c@.
% Odpowiadającym tym specyfikacjom kolumny mają naturalną szerokość.
% Przykładowo:
% %%
% \begin{code}
% \begin{verbatim}
% \begin{tabularx}{\textwidth}{|l|X|X|X|X|X|}\hline
% ...
% \end{tabularx}
% \end{verbatim}
% \end{code}
% %%
% \noindent Akurat w~naszym przykładzie osiągneliśmy zadowalający
% rezultat, gotowa tabela wygląda bowiem następująco: \par
% \medskip \noindent%%<-- ważne
% \begin{tabularx}{\textwidth}{|l|X|X|X|X|X|}\hline
%   Nazwa           & \multicolumn{2}{c|}{Wys. w~m~n.p.m.} & Długość & \multicolumn{2}{c|}{Nachylenie \%}                \\
%   \cline{2-3} \cline{5-6}
%                   & początek                             & koniec  & w~km                               & śr.   & max  \\ \hline
%   Col du Galibier & 1401                                 & 2646    & 18,1                               & 6,9\% & 14,5 \\
%   Alpe D'Huez     & 724                                  & 1815    & 14,2                               & 7,7\% & 15,0 \\
%   Passo Gavia     & 1734                                 & 2618    & 13,5                               & 6,5\% & 20,0 \\ \hline
% \end{tabularx}
% \medskip

% Tabele złożone z~użyciem otoczenia \ei{tabular} nie są automatycznie
% dzielone między stronami. Do składu tabel, które nie mieszczą się na
% pojedynczej stronie, służy pakiet~\ei{longtable}, opisany w~następnym
% punkcie.

% \subsection{Pakiet \pai{longtable} \label{sec:longtable}}

% Pakiet definiuje otoczenie \ei{longtable}, pozwalające składać tabele
% ciągnące się przez wiele kolejnych stron dokumentu. Aby zapewnić
% jednakowe szerokości rubryk na wszystkich stronach, wymagana jest
% dwukrotna kompilacja dokumentu. Oto przykład:
% %%
% \begin{verbatim}
% \begin{longtable}{|l|r|r|r|}
% \caption{Tytuł tabeli}\\\hline
% \multicolumn{4}{|c|}{To jest nagłówek pierwszej strony}\\\hline 
%   nazwa & wysokość & długość & nachylenie \\ \hline
%   k-1 & k-2  & k-3 & k-4 \\ \hline
% \endfirsthead
% \hline
% \multicolumn{4}{|c|}{To jest nagłówek następnych stron}\\
% \hline k-1 & k-2 & k-3 & k-4\\\hline
% \endhead
% \hline \multicolumn{4}{|c|}{Stopka tabeli}\\ \hline
% \endfoot
% \hline \multicolumn{4}{|c|}{Stopka na ostatniej stronie}\\
% \hline
% \endlastfoot
%  Col du T\'el\'egraphe & 1,566 & 12,0 & 6,7\% \\
%  Col du Galibier & 2,646 & 18,1 & 6,9\% \\
%  Col de la Madeleine & 2,000 & 25,4 & 6,1\% \\
%  %% ... 17 pominiętych wierszy ... 
%  La Bola del Mundo & 2257 & 21,8 & 6,2\% \\
% \end{longtable}
% \end{verbatim}
% %% http://www.salite.ch/struttura/salite.asp?stato=Francia
% %% coś tu dopisać nt toporności tego pakietu, tabular + longtable

% Po złożeniu efekt jest następujący\footnote{Dane z~tabeli pochodzą
%   z~katalogu \url{http://www.salite.ch}.}:

% \begin{longtable}{|l|r|r|r|}
%   \caption{Tytuł tabeli}                                                          \\\hline
%   \multicolumn{4}{|c|}{To jest nagłówek pierwszej strony}                         \\ \hline
%   nazwa                                         & wysokość & długość & nachylenie \\ \hline
%   k-1                                           & k-2      & k-3     & k-4        \\ \hline
%   \endfirsthead
%   \hline
%   \multicolumn{4}{|c|}{To jest nagłówek następnych stron}                         \\
%   \hline k-1                                    & k-2      & k-3     & k-4        \\\hline
%   \endhead
%   \hline \multicolumn{4}{|c|}{Stopka tabeli}                                      \\ \hline
%   \endfoot
%   \hline \multicolumn{4}{|c|}{Stopka na ostatniej stronie}                        \\
%   \hline
%   \endlastfoot
%   Col du T\'el\'egraphe                         & 1,566    & 12,0    & 6,7\%      \\
%   Col du Galibier                               & 2,646    & 18,1    & 6,9\%      \\
%   Col de la Madeleine                           & 2,000    & 25,4    & 6,1\%      \\
%   Alpe D'Huez                                   & 1815     & 14,2    & 7,7\%      \\
%   Col de la Croix de Fer                        & 2067     & 22,0    & 7,0\%      \\
%   %see http://pl.wikipedia.org/wiki/Fabio_Casartelli
%   %for the details concerning Fabio Casartelli
%   Col de Portet d'Aspet\index{Casartelli Fabio} & 1069     & 4,4     & 9,6\%      \\
%   %see http://en.wikipedia.org/wiki/Tom_Simpson
%   %for the details concerning Tom Simpson
%   Mont Ventoux\index{Simpson Tom}               & 1912     & 21,0    & 7,6\%      \\ Col de
%   l`Izoard                                      & 2361     & 15.9    & 6,9\%      \\ Passo dello Stelvio & 2758 & 24.3 &
%   7.4\%                                                                           \\ Col du Tr\'ebuchet & 1143 & 14.6 & 4.3\% \\ Passo Gavia &
%   2618                                          & 13.5     & 6.5\%                \\ Col du Grand Colombier & 1505 & 15.9 & 7.8\%
%   \\ Col de l`Iseran & 2770 & 48,0 & 4.1\% \\ Courchevel & 2000                      & 21,7
%                                                 & 6,5\%                           \\ Col de l`Aspin & 1489 & 12,0 & 6,5\% \\ Col de la Croix de
%   l`Homme Mort                                  & 1163     & 18,0    & 4,3\%      \\ Col de Notre Dame des Abeilles
%                                                 & 1000     & 13,9    & 5,1\%      \\ Paso del Morredero & 1872 & 25,0 & 5,4\% \\
%   Collado de la Caballar                        & 1308     & 14,5    & 7,5\%      \\ Capilla de la
%   Magdalena                                     & 1137     & 11,0    & 5,5\%      \\ La Bola del Mundo & 2257 & 21,8 &
%   6,2\%                                                                           \\
% \end{longtable}

% \subsection{Pakiet \pai{array}}

% Do składu tabel o~bardziej skomplikowanym układzie graficznym lepiej
% używać pakietu \pai{array}. Pakiet ten nie wprowadza żadnego nowego
% otoczenia, redefiniuje jedynie i~rozszerza standardowe otoczenie
% \ei{tabular}.

% W~,,standardowym'' otoczeniu \ei{tabular} konstrukcja
% \verb|p{|\emph{szer-kolumn}\verb|}| deklaruje kolumnę, w~której
% zawartość każdej rubryki będzie składana w~prostokąt o~zadanej
% szerokości, z~wyrównywaniem obu marginesów (odpowiednik
% \verb@\parbox[t]{szer}@). Pakiet \pai{array} wprowadza ponadto
% \verb@b{szer}@ -- odpowiednik \verb@\parbox[b]{szer}@ -- oraz
% \verb@m{szer}@ -- odpowiednik \verb@\parbox{szer}@. Przykład:
% %%
% \begin{code}
% \begin{verbatim}
% \begin{tabular}{|p{8mm}|p{8mm}|p{8mm}|} \hline
% x y z x y z x y z x y z x y z & x y z x y z x y y&
% 1 1 1 1 1 \\ \hline \end{tabular}
% \begin{tabular}{|m{8mm}|m{8mm}|m{8mm}|} \hline
% x y z x y z x y z x y z x y z & x y z x y z x y y&
% 2 2 2 2 2 \\ \hline \end{tabular}
% \begin{tabular}{|b{8mm}|b{8mm}|b{8mm}|} \hline
% x y z x y z x y z x y z x y z & x y z x y z x y y&
% 3 3 3 3 3 \\ \hline
% \end{tabular}
% \end{verbatim}
% \end{code}
% %%
% Złożone tabele wyglądają następująco:
% %%
% \par
% \medskip \noindent%%<-- ważne
% \begin{tabular}{|p{8mm}|p{8mm}|p{8mm}|} \hline
%   x y z x y z x y z x y z x y z & x y z x y z x y y &
%   1 1 1 1 1                                           \\ \hline
% \end{tabular}
% \quad
% \noindent
% \begin{tabular}{|m{8mm}|m{8mm}|m{8mm}|} \hline
%   x y z x y z x y z x y z x y z & x y z x y z x y y &
%   2 2 2 2 2                                           \\ \hline
% \end{tabular}
% \quad
% \noindent
% \begin{tabular}{|b{8mm}|b{8mm}|b{8mm}|} \hline
%   x y z x y z x y z x y z x y z & x y z x y z x y y &
%   3 3 3 3 3                                           \\ \hline
% \end{tabular}

% \par
% \bigskip \noindent Kolejnym użytecznym rozszerzeniem zdefiniowanym
% w~\pai{array} jest możliwość bardziej szczegółowego określenia
% sposobu formatowania rubryk tabeli, niż ma to miejsce w~standardowym
% otoczeniu \ei{tabular}, gdzie w~zasadzie możemy jedynie określić
% sposób justowania zawartości rubryk w~poszczególnych kolumnach.
% Wracając do przykładu tabeli zawierającej różne ,,parametry''
% dotyczące przełęczy i~wniesień, załóżmy, że nazwę wzniesienia chcemy
% złożyć kursywą, a~długość -- odmianą półgrubą. Można to oczywiście
% osiągnąć, wstawiając odpowiednie polecenia do każdej rubryki danej
% kolumny, ale sprawniej będzie zastosować zdefinowane w~pakiecie
% \pai{array} konstrukcje:
% \begin{command}
%   \verb|>{|\emph{polecenia}\verb|}| lub  \verb|<{|\emph{polecenia}\verb|}|
% \end{command}
% %%
% \noindent Konstrukcji \verb|>{|\emph{polecenia}\verb|}| można użyć
% w~preambule \emph{przed\/} \verb@c@, \verb@l@, \verb@r@, \verb@p@
% oraz \verb@m@ i~\verb@b@. Jej działanie polega na wstawieniu
% \emph{poleceń\/} na początku każdej rubryki w~tej kolumnie. Podobnie,
% \verb|<{|\emph{polecenia}\verb|}| można użyć \emph{po\/} \verb@c@,
% \verb@l@, \verb@r@, \verb@p@, \verb@m@ i~\verb@b@. W~rezultacie
% \emph{polecenia} zostaną wstawione na końcu każdej rubryki w~tej
% kolumnie.

% Wracając do przykładu, oto preambuła tabeli wykorzystująca omawiane
% konstrukcje pakietu \pai{array}:
% %%
% \begin{code}
% \begin{verbatim}
% \begin{tabular}{|>{\itshape}l|r|r|>{\bfseries}r|r|r|}\hline
% Nazwa   & \multicolumn{2}{|c|}{Wys. w~m~n.p.m.} &  
% Długość & \multicolumn{2}{|c|}{Nachylenie \%}\\
% ...
% \end{verbatim}
% \end{code}
% %%
% Wynik jest następujący:
% %%
% \par
% \medskip \noindent
% \begin{tabular}{|>{\itshape}l|r|r|>{\bfseries}r|r|r|}\hline
%   Nazwa           & \multicolumn{2}{c|}{Wys. w~m~n.p.m.} &
%   Długość         & \multicolumn{2}{c|}{Nachylenie \%}                                  \\
%   \cline{2-3} \cline{5-6}% 
%                   & początek                             & koniec & w~km & śr.   & max  \\ \hline
%   Col du Galibier & 1401                                 & 2646   & 18,1 & 6,9\% & 14,5 \\
%   Alpe D'Huez     & 724                                  & 1815   & 13,5 & 7,7\% & 15,0 \\
%   Passo Gavia     & 1734                                 & 2618   & 13,5 & 6,5\% & 20,0 \\ \hline
% \end{tabular} \par

% \medskip \noindent Do zmiany głębokości konkretnego wiersza służy
% opcjonalny argument polecenia~\verb@\\@, np. \verb@\\[2pt]@. Wysokość
% i~głębokość wiersza można zmienić za pomocą niewidzialnej kreski, np.
% \verb@\rule[-3mm]{0mm}{8mm}@. Przykładowo, w~powyższym przykładzie
% tabela będzie wyglądała lepiej, jeżeli dodamy do pierwszego wiersza:
% \begin{code}
% \begin{verbatim}
% Col du Galibier\rule[-3.5pt]{0pt}{15pt}
% \end{verbatim}
% \end{code}
% Spowoduje to wstawienie dodatkowego odstępu między kreską nad
% pierwszym wierszem tabeli a~zawartością wiersza.

% \subsection{Pakiet \pai{tap}}
% % --------------------

% Pakiet \pai{tap} (autorzy: Bogusław Jackowski\index{Jackowski
%   Bogusław}, Piotr Pianowski\index{Pianowski Piotr} i~Piotr
% Strzelczyk\index{Strzelczyk Piotr}) pozwala na eleganckie składanie
% nawet najbardziej ekstrawaganckich (jednostronicowych) tabel, z~tym
% że stosuje niestandardowy zapis\footnote{Tak naprawdę, nie jest to
%   nawet pakiet w~rozumieniu \LaTeX{}a i~zamiast poleceniem
%   \ci{usepackage} należy go dołączać poleceniem \ci{input}.}, co może
% powodować problemy w~integracji z~innymi pakietami \LaTeX{}a, np.
% pakietem \pai{colortbl}, służącym do kolorowania rubryk w~tabelach.
% Oto przykład: \par
% \medskip \noindent
% \begin{code}
% \begin{verbatim}
% \input{tap.tex} %% <- dołączenie pakietu
% \desiredwidth=\textwidth %% skład na szerokość łamu
% \begintable
% \begintableformat \left " &\right \endtableformat
% \=
% \B!^  | @2\center{Wys. w~m~n.p.m.} | Długość |
%      @2\center{Nachylenie \%} \E! 
% \B"- \center{Nazwa} " @2\- "  " @2\- \E"
% \B"_       | początek | koniec | w~km | śr.   | max  \E!
% \B! Col du Galibier | -- |  2645 | 17,5 | 6,9\% | 14,5 \E!
% \B! Alpe D'Huez     | -- |  1839 | 13,0 | 8,5\% | 15,0 \E!
% \B! Passo Gavia     | -- |  2621 | 17,3 | 7,9\% | 20,0 \E!
% \=
% \endtable
% \end{verbatim}
% \end{code}
% %%
% Wynik jest imponujący:
% %%
% \par
% \medskip \begingroup \input{tap.tex} \desiredwidth=\textwidth
% \begintable \begintableformat \left " &\right \endtableformat \= \B!^
% | @2\center{Wys. w~m~n.p.m.} | Długość | @2\center{Nachylenie \%} \E!
% \B"- \center{Nazwa} " @2\- " " @2\- \E" \B!_ | początek | koniec |
% w~km | śr. | max \E! \= \B!^ Col du Galibier | 1401 | 2646 | 18,1 |
% 6,9\% | 14,5 \E! \B!+ Alpe D'Huez | 724 | 1815 | 14,2 | 7,7\% | 15,0
% \E! \B!_ Passo Gavia | 1734 | 2618 | 13,5 | 6,5\% | 20,0 \E! \=
% \endtable \endgroup %% skład na szerokość łamu

% \medskip \noindent Więcej informacji można odnaleźć
% w~(polskojęzycznej) dokumentacji pakietu
% (\CTAN{macros/generic/tables/tap077.zip}).

% %% dodałem akapit, żeby się tak nie kończyło gwałtownie:-) [tp]:
% \medskip \noindent Na zakończenie uwaga: składanie tabel w~\LaTeX{}u
% nie jest może aż tak proste jak w~edytorach {\WYSIWYG}, ale za to
% można tworzyć konstrukcje niezwykle trudne lub wręcz niemożliwe do
% wykonania w~innych programach. Ponadto zadanie składania tabel można
% sobie znakomicie ułatwić, stosując skryptowe języki programowania,
% w~rodzaju Perla czy Pythona. Już stosunkowo niewielka umiejętność
% programowania w~wymienionych językach pozwala na szybką konwersję
% generowanych przez zewnętrzne aplikacje danych tabelarycznych do
% formatu \LaTeX{}a.

% To jest teraz wstawione do indeksu!
% \label{verylast}\mbox{}%% przeniesione do xtables
% </PLext>

\bigskip {\flushright Koniec.\par}

%

% Local Variables:
% TeX-master: "lshort2e"
% mode: latex
% mode: flyspell
% End:
