% -- translate-file=il2-pl -- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Contents: Typesetting Part (LShort2e Introduction) % File: typeset.tex (Polish translation) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Składanie tekstu} \begin{intro} Po lekturze poprzedniego rozdziału znasz już podstawowe pojęcia związane z~systemem \LaTeXe. W~tym rozdziale Twoja wiedza wzbogaci się o~informacje niezbędne do tworzenia prawdziwych dokumentów. \end{intro} \section{Struktura tekstu i języka} \secby{Hanspeter Schmid}{hanspi@schmid-werren.ch} \noindent Głównym zadaniem słowa pisanego jest przekaz myśli, informacji lub wiedzy. Nadanie zapisowi odpowiedniej struktury pomaga czytelnikowi lepiej zrozumieć przekazywane treści. Skład typograficzny może czytelnikowi tę logiczną i~semantyczną strukturę tekstu przybliżyć. \LaTeX{} tym się różni od innych systemów składu, że do złożenia tekstu wystarcza mu znajomość logicznej i~semantycznej struktury tekstu. Postać typograficzna jest wyprowadzana na podstawie ,,reguł'' zawartych w~klasie dokumentu i~plikach z~makroinstrukcjami. Najważniejszą jednostką podziału tekstu w~\LaTeX{}u (a~także w~typografii) jest akapit. Jest to ,,jednostka podziału'' głównie dlatego, że według wszelkich kanonów sztuki typograficznej treść akapitu powinna być poświęcona jednej spójnej myśli lub pojęciu. Tak więc, gdy zaczyna się nowa myśl, powinien się zacząć nowy akapit. Kontynuacja dotychczasowej myśli w~nowym akapicie jest błędem. Niezgodne z~regułami sztuki jest też pojawienie się w~tym samym akapicie całkowicie nowej myśli. W~następnym punkcie omówimy instrukcje nakazujące \LaTeX{}owi złamanie linii bez rozpoczynania nowego akapitu, na przykład poleceniem \verb|\\|, a~także sposób rozpoczęcia nowego akapitu, na przykład przez umieszczenie w~kodzie źródłowym pustej linii. Większość ludzi całkowicie lekceważy znaczenie właściwej organizacji akapitów. Co więcej, wiele osób nawet nie zdaje sobie sprawy, czym akapit naprawdę jest, i~(szczególnie w~\LaTeX{}u) kończy akapit, nawet o~tym nie wiedząc. Błąd taki łatwo popełnić zwłaszcza w~tekście z~równaniami. Zobaczmy, dlaczego w~poniższych przykładach w~jednej z~takich sytuacji należy przejść do nowego akapitu, a~w~innej -- nie. Czytelnik, który nie zna jeszcze wszystkich poleceń użytych w~tych przykładach, powinien dokładnie przeczytać ten i~następny rozdział, a~następnie wrócić do tego punktu i~przeczytać go~jeszcze raz. \begin{code} \begin{verbatim} % Przykład 1 \ldots Słynne równanie Einsteina \begin{equation} e = m \cdot c^2 \; , \end{equation} jest najbardziej znanym, ale też najmniej rozumianym równaniem w~fizyce. % Przykład 2 \ldots którego wynikiem jest prądowe prawo Kirchhoffa: \begin{equation} \sum_{k=1}{n} I_k = 0 \; . \end{equation} Napięciowe prawo Kirchhoffa ma zaś swój początek w\ldots % Przykład 3 \ldots co ma określone zalety. \begin{equation} I_D = I_F - I_R \end{equation} jest rdzeniem innego modelu tranzystora. \ldots \end{verbatim} \end{code} %% \noindent Mniejszą od akapitu jednostką podziału tekstu jest zdanie. W~tekstach angielskojęzycznych odstęp po kropce kończącej zdanie jest większy od odstępu po kropce oznaczającej skrót. Zależnie od kontekstu \LaTeX{} stara się użyć krótszego lub dłuższego odstępu. W~razie pomyłek z~jego strony powinniśmy mu wskazać nasze intencje. Jak to zrobić, wyjaśniamy w~dalszej części tego rozdziału. Właściwa organizacja tekstu dotyczy nawet fragmentów zdań. Wiele języków ma bardzo skomplikowaną interpunkcję, ale w~większości wypadków (wliczając angielski i~niemiecki) stawiając przecinek w~określonym miejscu w~zdaniu, nie popełnimy na ogół błędu, pamiętając o~zasadzie, że przecinek oznacza krótką przerwę w~wypowiedzi. Dlatego -- jeśli nie jesteśmy pewni, gdzie w~zdaniu należy go postawić -- przeczytajmy zdanie na głos i~postawmy przecinki wszędzie tam, gdzie zrobiliśmy krótką przerwę na wdech. Ale nie sugerujmy się wyłącznie tym! Jeśli w~danym miejscu przecinek nie wygląda najlepiej, to go usuńmy; jeśli w~innym miejscu odczuwamy potrzebę wzięcia powietrza do płuc (lub zrobienia krótkiej przerwy), to postawmy tam przecinek. A~najlepiej w~celu rozwiania wątpliwości sięgnąć do słownika ortograficzno\=interpunkcyjnego, który zresztą zawsze warto mieć pod ręką. I na koniec: akapit nie jest największą logiczną jednostką podziału tekstu. Można jeszcze wspomnieć o rozdziałach, punktach, podpunktach itd. Jednakże od strony typograficznej już same nazwy poleceń w~rodzaju \verb|\section{Struktura tekstu i języka}| są na tyle oczywiste (dla znających język angielski), że sposób ich użycia jest łatwo zrozumiały. \section{Składanie akapitów i~łamanie stron} \subsection{Składanie akapitów\label{just-paragraphs}} Książki najczęściej składa się tak, że wszystkie wiersze w~akapitach są tej samej długości. Dążąc do optymalnej prezentacji akapitu, {\LaTeX} ustala miejsca złamań linii oraz wielkość odstępów między słowami. W~razie potrzeby przenosi wyrazy, których nie jest w~stanie zmieścić w~wierszu. Sposób składania akapitów zależy od użytej klasy dokumentu. Najczęściej pierwszy wiersz akapitu jest wcięty, a~między akapitami nie ma dodatkowych odstępów. Więcej na ten temat można przeczytać w~punkcie~\ref{parsp}. %% Zgodnie z~anglo-amerykańskimi zwyczajami typograficznymi {\LaTeX} nie wstawia wcięcia akapitowego bezpośrednio po tytułach rozdziałów, punktów itd. Polskie zwyczaje nakazują jednak rozpoczynanie także początkowych akapitów wcięciem. Efekt ten można osiągnąć przez dołączenie w~preambule pakietu \pai{indentfirst}. W~niniejszym tłumaczeniu nie stosujemy wcięć w~początkowych akapitach, gdyż akurat pod tym względem bardziej nam się podobają zwyczaje anglosaskie. %% Czasami przydaje się instrukcja nakazująca {\LaTeX}owi złamanie linii. Polecenie: \begin{command} \ci{\bs} lub \ci{newline} \end{command} \par \noindent rozpoczyna nową linię bez rozpoczynania nowego akapitu. \\ Natomiast instrukcja: \begin{command} \ci{\bs*} \end{command} % \noindent zakazuje dodatkowo złamania strony (w~miejscu złamania linii). Z~kolei instrukcja: \begin{command} \ci{newpage} \end{command} % \noindent rozpoczyna nową stronę. \noindent Instrukcje: % \begin{command} \ci{linebreak}\verb|[|\emph{n}\verb|]|, \ci{nolinebreak}\verb|[|\emph{n}\verb|]|, \ci{pagebreak}\verb|[|\emph{n}\verb|]| oraz \ci{nopagebreak}\verb|[|\emph{n}\verb|]| \end{command} % \noindent oznaczają, odpowiednio: zachętę do złamania wiersza, niezgodę na złamanie wiersza, zachętę do złamania strony i~niezgodę na złamanie strony (w~miejscu ich wystąpienia w~dokumencie). %%Ponadto Opcjonalny argument \emph{n}, o~dopuszczalnej wartości od $0$ do $4$, określa stopień tej zachęty (niezgody). Domyślna wartość~$4$ to bezwarunkowy zakaz lub nakaz złamania linii/strony. Wartość mniejsza od $4$ pozostawia \LaTeX-owi swobodę zignorowania instrukcji, jeżeli skład otrzymany w~jej rezultacie byłby kiepskiej jakości. Poleceń z~grupy \verb|break| nie należy mylić z~tymi z~grupy \verb|new|. Mimo otrzymania polecenia typu \verb|break| {\LaTeX} stara się wyrównać wiersz do prawego marginesu czy też wypełnić stronę do całej jej wysokości. Nietrudno zgadnąć, jakiej instrukcji należy użyć, gdy naprawdę zależy nam na rozpoczęciu nowego wiersza\footnote{Zagadka ta jest łatwa dla znających język angielski -- jest to polecenie \ci{newline}.}. %% Jeżeli w~wierszu zakończonym instrukcją \ci{newline} jest zbyt mało tekstu, to {\LaTeX} nie wyrówna tego wiersza do prawego marginesu, lecz wstawi po tekście odpowiedni odstęp. Jeżeli zamiast \ci{newline} użyjemy \ci{linebreak}, to {\LaTeX} postara się wyrównać zawartość kończonej linijki do prawego marginesu. Zbyt małe wypełnienie wiersza tekstem zmusi {\LaTeX}a do umieszczenia między wyrazami zbyt dużych odstępów. Efekt ten \LaTeX{} sygnalizuje podczas przetwarzania dokumentu, wyświetlając komunikat: % \begin{code} \begin{verbatim} Underfull \hbox (badness 10000) in paragraph at lines 4--5 \end{verbatim} \end{code} % Liczba po słowie \verb|badness| w~tym komunikacie wskazuje, jak bardzo \LaTeX{}owi ,,nie podoba się'' złożony wiersz. Tutaj jest to maksymalna %%w~\LaTeX{}u negatywna ocena \verb|10000|. Liczby na końcu komunikatu to numery pierwszej i~ostatniej linii akapitu, w~którym {\LaTeX} musiał złożyć wiersz z~nadmiernymi odstępami między wyrazami. Chociaż wielu użytkowników {\LaTeX}a nie zwraca uwagi na podobne ostrzeżenia, warto sobie zdawać sprawę, co one oznaczają. Oprócz wyżej wymienionych istnieją jeszcze w~{\LaTeX}u instrukcje: % \begin{command} \ci{clearpage}, \ci{cleardoublepage} \end{command} % \noindent Obydwie rozpoczynają skład nowej strony. Instrukcja \ci{cleardoublepage} działa tak jak \ci{clearpage}, z~tym że rozpoczynana strona ma numer nieparzysty; w~razie potrzeby tworzona jest strona pusta (wakatowa)\footnote{% Mówiąc precyzyjnie zależy to od stanu opcji \popti{openright}/\popti{openany}, w~szczególności w~klasie ,,article'' \ci{cleardoublepage} domyślnie działa tak jak \ci{clearpage}.\label{fnt:clrdblpg}}. %% W~trybie składu dwułamowego (opcja \popti{twocolumn}) instrukcja \ci{newpage} kończy łam, natomiast \ci{clearpage} oraz \ci{cleardoublepage} kończą stronę, pozostawiając w~razie potrzeby pusty prawy łam. Jeżeli na stronie zakończonej instrukcją \ci{newpage} albo \ci{clearpage} jest zbyt mało tekstu, to {\LaTeX} wstawia odpowiedni odstęp u~dołu strony, wypełniający pozostałą cześć kolumny. W~wypadku polecenia \ci{pagebreak} {\LaTeX} wyrównuje zawartość kolumny do dolnego brzegu, wstawiając odstępy pomiędzy akapitami lub innymi elementami na stronie. Jeżeli wstawione odstępy okazują się za duże, co zdarza się dość często, to podczas przetwarzania dokumentu generowane jest odpowiednie ostrzeżenie, na przykład: % \begin{code} \begin{verbatim} Underfull \vbox (badness 10000) has occurred while \output is active [7] \end{verbatim} \end{code} % W~powyższym komunikacie (z~uwagi na wąskość szpalty przełamanym na dwie linijki) liczba po słowie \verb|badness| wskazuje, jak bardzo {\LaTeX}owi nie podoba się złożona strona. Tutaj jest to \verb|10000| -- maksymalna w~{\TeX}u ujemna ocena jakości składu. Liczba w~nawiasach prostokątnych na końcu komunikatu oznacza numer strony, podczas składania której wystąpił problem. %% {\LaTeX} zawsze stara się znaleźć najlepszy podział akapitu na wiersze. Kiedy nie potrafi znaleźć podziału, który spełnia jego wysokie wymagania jakościowe, wtedy niektóre wyrazy wystają na prawy margines. Sytuacja taka jest sygnalizowana komunikatem podobnym do następującego: % \begin{code} \begin{verbatim} Overfull \hbox (5.5452pt too wide) in paragraph at lines 79--83 \end{verbatim} \end{code} %% W~komunikacie\index{overfull hbox} tym liczba w~nawiasie okrągłym oznacza, że pewien fragment tekstu wystaje o~5,5452 punktów drukarskich na prawy margines. Problem wystąpił w~akapicie, który w~pliku źródłowym jest w~wierszach od~79 do~83. Podobne ostrzeżenia pojawiają się najczęściej wówczas, gdy {\LaTeX} nie potrafi przenieść wyrazów w~akapicie zgodnie z~zadanymi wzorcami przenoszenia tak, by nie popsuć jakości składu. Komunikat typu \emph{\wi{overfull hbox}\/} nie wystarcza na ogół do dokładnego ustalenia przyczyny jego wystąpienia. Można wtedy jako argumentu polecenia \ci{documentclass} użyć opcji \popti{draft}, na skutek czego {\LaTeX} oznaczy wystające wiersze małą czarną sztabką na prawym marginesie szpalty. Deklaracja \ci{sloppy} nakazuje {\LaTeX}owi nieco obniżyć jego domyślnie wysokie standardy. Zapobiega to --~w~większości wypadków --~występowaniu zbyt długich linijek, kosztem jednak zwiększenia odstępów międzywyrazowych, czyli pogorszenia jakości składu. Mogą się pojawiać ostrzeżenia typu \emph{\wi{underfull hbox}}, co w~większości wypadków (zwłaszcza gdy podana miara kiepskości jest powyżej 5000) oznacza, że skład nie jest zbyt udany. Instrukcja \ci{fussy} działa w~odwrotnym kierunku, to znaczy przywraca domyślne, wysokie standardy {\LaTeX}a. \subsection{Przenoszenie wyrazów\label{hyph}} W~razie potrzeby {\LaTeX} przenosi (dzieli) wyrazy. Jeżeli algorytm podziału przeniósł jakiś wyraz błędnie, to właściwe miejsca przenoszenia można zadać instrukcją: % \begin{command} \ci{hyphenation}\verb|{|\emph{słowo1 słowo2 słowo3...}\verb|}| \end{command} % \noindent Słowa z~listy argumentów można dzielić wyłącznie w~miejscach oznaczonych znakiem \verb|-|. Instrukcji tej wolno użyć jedynie w~preambule dokumentu, a~wyrazy{\dywiz}argumenty mogą zawierać (oprócz znaku \verb|-|) wyłącznie litery. Nie ma natomiast znaczenia, czy w~tych wyrazach używa się liter wielkich czy małych. Instrukcja \ci{hyphenation} z~przykładu poniżej pozwala podzielić słowo ,,ćwierć-li-trówka'' jedynie w~dwóch zaznaczonych miejscach i~w~ogóle zabrania dzielić słowa ,,szczypce''. Wyrazy z~listy argumentów nie mogą zawierać żadnych znaków specjalnych ani symboli. Przykład: % \begin{code} \verb|\hyphenation{ćwierć-li-trówka szczypce}| \end{code} W~językach fleksyjnych, do jakich należy polski, instrukcja \ci{hyphenation} jest dużo mniej przydatna niż w~angielskim. Aby dany wyraz zawsze był dobrze przenoszony, należałoby wypisać wszystkie jego formy. Opracowane przez Hannę Kołodziejską\index{Kołodziejska Hanna}, Bogusława L.~Jackowskiego\index{Jackowski Bogusław} i~Marka Ryćko\index{Ryćko Marek} wzorce przenoszenia wyrazów dla języka polskiego sprawdzają się w~tak znacznej większości wypadków, że praktycznie nie ma potrzeby stosowania tej konkretnej instrukcji. Co więcej, próba użycia polecenia \ci{hyphenation} w~wypadku stosowania również pakietu \pai{inputenc} (por. punkt~\ref{int-support}) zakończy się błędem w~czasie przetwarzania dokumentu. Instrukcja \ci{-} wskazuje, w~których miejscach \emph{wolno} {\LaTeX}owi przenieść wyraz do nowego wiersza; {\LaTeX} nie podzieli tego wyrazu w~żadnym oprócz wskazanych miejsc. Instrukcja odnosi się do konkretnego wystąpienia słowa w~dokumencie i~nie wpływa na miejsca podziału w~innych jego wystąpieniach. Przydaje się ona szczególnie w~wypadku wyrazów ze znakami specjalnymi, na przykład akcentowanymi, gdyż automatycznie {\LaTeX} dzieli jedynie wyrazy złożone z~samych liter. % \begin{example} Nie\-bie\-sko\-bia\-ło\-zie\-lo\-% no\-nie\-bie\-ski \end{example} Tekst będący argumentem polecenia: % \begin{command} \ci{mbox}\verb|{|\emph{tekst}\verb|}| \end{command} % \noindent nigdy nie zostanie przeniesiony. % \begin{example} Numer mojego telefonu wkrótce się zmieni na \mbox{0116 291 2319}. Parametr \mbox{\emph{nazwa}} to nazwa pliku. \end{example} Polecenie \ci{fbox} jest podobne do \ci{mbox}, z~tym że dodatkowo dookoła argumentu rysuje ramkę (por.~punkt~\ref{sec:boxes}). \section{Kilka gotowych oznaczeń napisów} W~przykładach na poprzednich stronach pojawiło się kilka prostych instrukcji \LaTeX{}a do składania krótkich napisów. \vspace{1ex} \noindent \begin{tabular}{@{}lll@{}} Instrukcja&Przykład&Opis\\ \hline \ci{today} & \today & Bieżąca data\\ \ci{TeX} & \TeX & Twój ulubiony system składu\\ \ci{LaTeX} & \LaTeX & Nazwa tej gry\\ \ci{LaTeXe} & \LaTeXe & Obecne jej wcielenie\\ \end{tabular} \section{Znaki specjalne i~symbole } \subsection{Cudzysłowy\label{subsec:quotation}} Znaku cudzysłowu \verb|"| używa się inaczej niż na maszynie do pisania. W~publikacjach drukowanych różnie oznacza się początek i~koniec cudzysłowu. Występują także różnice w sposobach oznaczania cudzysłowów w~różnych językach. Dwa apostrofy \verb|`| otwierają, a~dwa apostrofy \verb|'| zamykają {\LaTeX}owy cudzysłów według reguł języka angielskiego: \begin{example} ``Please press the `x' key.'' \end{example} %% W~języku polskim cudzysłów otwierający oznacza się dwoma przecinkami \verb+,,+$\,$, natomiast zamykający -- dwoma apostrofami \verb+''+\footnote{Porównaj uwagi o~tym sposobie oznaczania cudzysłowów z~punktu~\ref{int-support} w~części dotyczącej fontów i~ich kodowania (str.~\pageref{fonty-kodowanie}). Dotyczy to również cudzysłowów francuskich.}. Gdy zachodzi konieczność użycia cudzysłowu w~tekście już objętym cudzysłowem, to stosuje się ,,cudzysłowy <>'', oznaczane w~pliku źródłowym znakami, odpowiednio, mniejszości \texttt{<<} i~większości \texttt{>>}. % \begin{example} ,,Przechodź tylko po <>''! \end{example} %% \subsection{Pauzy i~myślniki\label{subsec:pauzy} } Zwyczajne maszyny do pisania posiadają tylko jeden znak w~kształcie poziomej kreski ,,-''. W~składzie drukarskim występują aż cztery rodzaje kresek poziomych. Są to: łącznik, myślnik, półpauza i~minus, używany we wzorach matematycznych. %% Łącznik (dywiz) jest najkrótszą z~kresek. Stosuje się go do dzielenia i~przenoszenia wyrazów oraz do łączenia wyrazów wieloczłonowych (np. ,,niebiesko-czarny''). Zgodnie z~polskimi regułami wyraz wieloczłonowy można podzielić i~przenieść albo w~obrębie wyrazów składowych, albo na łączniku. W~drugim z~tych przypadków łącznik należy powtórzyć, to znaczy powinien się on znaleźć zarówno na końcu pierwszego wiersza, jak też na początku drugiego. Oto możliwe miejsca podziału wyrazu \mbox{niebiesko-czarny}: % \begin{flushleft} \begin{tabular}{llllllll} nie- && niebie- && niebiesko- && niebiesko-czar- \\ biesko-czarny && sko-czarny && -czarny && ny \\ \end{tabular} \end{flushleft} % \noindent Standardowy {\LaTeX} nie zna polskich norm i~dlatego dzieli wyrazy wieloczłonowe w~miejscu połączenia, bez powielania łącznika. Jeżeli do składu w~języku polskim korzystamy z~zestawu \pai{platex}, to w~pliku źródłowym w~miejsce łącznika w~wyrazach wieloczłonowych powinniśmy zastosować instrukcję \ci{dywiz} (np. \verb|niebiesko{\dywiz}czarny|). W~pewnych sytuacjach lepiej nie dzielić wyrazów połączonych łącznikiem. Jeżeli na przykład mówimy o~wydziale K-2, kodzie pocztowym czy numerze telefonu, to w~takich wypadkach łącznik zapisujemy w~pliku źródłowym jako pojedynczą kreskę -$\,$. Znaku łącznika używa się również do przenoszenia wyrazów. Jednak w~{\LaTeX}u odbywa się to automatycznie i~nie wymaga ręcznych ingerencji użytkownika. Półpauza to kreska o~połowę krótsza od myślnika. Stosuje się ją przede wszystkim w~zapisie zakresów liczbowych, np.~,,str.~11--13'', czy ,,w~latach 1960--1963''. Przed i~po półpauzie nie dodaje się odstępów. Odstępy takie muszą się pojawić w~sytuacjach takich jak: ,,11 października -- 13 listopada''. Półpauzę zapisuje się za pomocą dwóch następujących po sobie minusów~\texttt{--}. Myślnik ,,---'' to dłuższa kreska, używana jako znak przestankowy. Zapisujemy go za pomocą trzech następujących po sobie znaków \texttt{-}, czyli \texttt{---}$\,$. W~języku polskim należy przed i~po myślniku umieścić odstęp, inaczej niż w~krajach anglosaskich, gdzie nie otacza się myślnika odstępami. Wiele osób uważa konstrukcję złożoną z~odstępu, myślnika i~kolejnego odstępu za zbyt wybijającą się w~składzie. Z~tychże estetycznych powodów często w~roli myślnika używa się ,,dwukreskowej'' półpauzy, i~takie właśnie podejście zastosowano w~niniejszym tłumaczeniu. We wzorach matematycznych, czyli wewnątrz trybu matematycznego, znak minusa uzyskujemy, pisząc zwyczajnie \texttt{-}$\,$. Przykładowo, zapis \verb|$-2$| daje w~składzie $-2$, podczas gdy \verb|-2| daje~-2. %% %% \subsection {Odstępy niełamliwe} Polskie zasady typograficzne nie pozwalają łamać akapitów z~pozostawianiem na końcu wierszy jednoliterowych spójników bądź przyimków. Przykładowo, w~zdaniu ,,Jan Kochanowski urodził się w~Czernolesie'' nieładnie na końcu wiersza wyglądałby przyimek ,,w''. Odstępy, na których nie wolno złamać wiersza, zaznacza się w~pliku źródłowym znakiem tyldy ,,\verb|~|'' zamiast zwykłym odstępem. Na przykład, aby w~powyższej sytuacji zapobiec przeniesieniu składu do nowego wiersza, powinniśmy zapisać w~pliku źródłowym: \verb|w~Czarnolesie|. Jest wiele sytuacji, w~których związek fragmentów zdania jest tak silny, że wewnątrz nich nie należy łamać na wiersze. Nie zawsze decyzja jest tak prosta jak w~wypadku wspomnianych spójników. Oto garść przykładów: % \begin{code} \begin{verbatim} godz.~17.00; od~15 do 40~osób; na str.~2 napisano; rozdz.~2; 2~rozdziały; p.~Jan Nowak; p.~J.~Nowak; I~część IX~Symfonii. \end{verbatim} \end{code} Ze względu na zależność od kontekstu obowiązek decydowania o~użyciu tyldy spada na użytkownika {\LaTeX}a. %% \subsection{Tylda \texorpdfstring{($\sim$)}{}} W~adresach internetowych\index{www@\acro{WWW}}% \index{URL@\acro{URL}}\index{tilde} często występuje znak tyldy. W~\LaTeX{}u można by do jego uzyskania użyć instrukcji \verb|\~|, ale wynik: \~{} nie jest chyba tym, czego oczekujemy. Lepiej zrobić tak: % \begin{example} http://www.rich.edu/\~{}bush \\ http://www.clever.edu/$\sim$demo \end{example} % A jeszcze lepiej dołączyć do preambuły dokumentu pakiet \pai{url} i~korzystać z~polecenia \verb@\url{...}@. \subsection{Oznaczenie stopni \texorpdfstring{($\circ$)}{}} Poniższy przykład ilustruje, jak w~\LaTeX{}u uzyskuje się symbol stopni: % \begin{example} Jest $-30\,^{\circ}\mathrm{C}$. Niedługo zacznę nadprzewodzić. \end{example} % Pakiet \pai{textcomp} udostępnia symbol stopni także jako \ci{textcelsius}. \subsection{Symbol waluty euro \texorpdfstring{(\officialeuro)}{}} Pisząc dziś o~pieniądzach, nie można się obejść bez symbolu euro. Znak ten występuje w~wielu współczesnych fontach. Po załadowaniu pakietu \pai{textcomp} w~preambule: % \begin{command} \ci{usepackage}\verb|{textcomp}| \end{command} \noindent można do uzyskania symbolu euro użyć oznaczenia: \begin{command} \ci{texteuro} \end{command} Jeśli używany font nie zawiera własnego symbolu euro albo nam się on nie podoba, to mamy dwie dodatkowe możliwości: Pierwszą jest pakiet \pai{eurosym}. Udostępnia on oficjalny znak euro: % \begin{command} \ci{usepackage}\verb|[|\emph{official}\verb|]{eurosym}| \end{command} % Jeśli wolimy znak euro zgodny optycznie z~fontem, to zastąpmy opcję \popt{official} opcją \popt{gen}. % Komentarz z~oryginału (RK): %If the Adobe Eurofonts are installed on your system (they are available for %free from \url{ftp://ftp.adobe.com/pub/adobe/type/win/all}) you can use %either the package \pai{europs} and the command \ci{EUR} (for a Euro symbol %that matches the current font). % does not work % or the package % \pai{eurosans} and the command \ci{euro} (for the ``official Euro''). Pakiet \pai{marvosym} dostarcza wielu różnych symboli, w~tym euro pod nazwą \ci{EURtm}. Jego wadą jest to, że nie udostępnia wersji pochylonej i~wytłuszczonej euro. \begin{table}[!htbp] \caption{Torba pełna symboli euro} \label{eurosymb} \begin{lined}{10cm} \begin{tabular}{llccc} \acro{LM}+textcomp &\verb+\texteuro+ & \huge\texteuro &\huge\sffamily\texteuro &\huge\ttfamily\texteuro\\ eurosym &\verb+\euro+ & \huge\officialeuro &\huge\sffamily\officialeuro &\huge\ttfamily\officialeuro\\ $[$gen$]$eurosym &\verb+\euro+ & \huge\geneuro &\huge\sffamily\geneuro &\huge\ttfamily\geneuro\\ %europs &\verb+\EUR + & \huge\EURtm &\huge\EURhv % &\huge\EURcr\\ %eurosans &\verb+\euro+ & \huge\EUROSANS &\huge\sffamily\EUROSANS % & \huge\ttfamily\EUROSANS \\ %% <> %%marvosym &\verb+\EURtm+ & \huge\mvchr101 &\huge\mvchr101 %% &\huge\mvchr101 %% <> Dla dokumentów unikodowych należy użyć opcji \popti{utf8}\index{Unicode}. Chociaż pakiety \pai{babel} oraz \pai{inputenc} umożliwiają skład dokumentów w~języku polskim, to nie są pozbawione wad. Kłopoty mogą sprawiać dokumenty o~rozbudowanej strukturze, na przykład zawierające skorowidze. Inne podejście do sprawy języka polskiego w~\LaTeX{}u jest przedstawione w~punkcie~\ref{polski}. % Ten akapit nic nie wnosi: [tp] % Wykorzystując pakiet \pai{inputenc}, musimy sobie zdawać sprawę, że % część użytkowników nie będzie w~stanie odczytać tak % przygotowanych plików źródłowych. Przykładowo: znak \verb+ą+ ma numer 161 % w~standardzie ISO-8859-2, podczas gdy w~kodowaniu zgodnym z~CP 1250 ta % sama litera ma kod 169 (a znak o~kodzie 161 oznacza jakiś inny % ,,krzaczek''). % Dlatego, korzystając z~tej możliwości, powinniśmy % informować innych użytkowników tego samego pliku % źródłowego, jak zakodowano w~nim znaki diakrytyczne. Kodowanie znaków ma znaczenie nie tylko w~pliku źródłowym. Drugą stroną medalu jest układ znaków w~foncie, czyli kodowanie fontu\label{fonty-kodowanie}. Określa ono, w~których miejscach \emph{fontu} znajdują się poszczególne znaki. Standardowo \LaTeX{} używa kodowania o~nazwie \label{OT1}\fei{OT1}, przyjętego dla oryginalnych \TeX{}owych fontów Computer Modern\index{fonty!CM@\acro{CM}} (\acro{CM}). Są to fonty jedynie 128-znakowe, nie zawierają na przykład charakterystycznych polskich liter. Znak diakrytyczny można w~nich skonstruować metodą nałożenia dwóch innych: litery i~odpowiedniego akcentu. Ta metoda ma wady, bo {\TeX} nie może poprawnie przenosić wyrazów zawierających tak zapisane znaki diakrytyczne, kiepska jest też jakość typograficzna takich diakrytyków. Na szczęście wszystkie współczesne dystrybucje {\TeX}a zawierają komplet fontów \emph{European Computer Modern\/} (\acro{EC})\index{fonty!EC@\acro{EC}}. Są to fonty zawierające do 256 znaków w~kodowaniu \fei{T1}. Pierwszych 128 znaków fontu \acro{EC} jest (prawie) identycznych jak w~odpowiadającym mu foncie \acro{CM}. Pozostałe 128~znaków to znaki diakrytyczne występujące w~różnych językach europejskich, w~tym też komplet znaków niezbędnych do składania tekstów polskich. Fonty \acro{EC} umożliwiają poprawne przenoszenie wyrazów, znacznie lepsza jest też jakość typograficzna znaków diakrytycznych. Polscy użytkownicy mogą też korzystać z~rodziny fontów \acro{PL}\index{fonty!PL@\acro{PL}}\index{fonty!PL@\acro{PL}} (autorzy B.~Jackowski\index{Jackowski Bogusław}, M.~Ryćko\index{Ryćko Marek}, J.~Nowacki\index{Nowacki Janusz}) oraz nowszych fontów \acro{LM}\index{fonty!LM@\acro{LM}} (autorzy B.~Jackowski\index{Jackowski Bogusław} i~J.~Nowacki\index{Nowacki Janusz}). W~zakresie objętym przez rodzinę \acro{CM} fonty \acro{PL}/\acro{LM} są całkowicie z~nią zgodne, a~dodatkowo zawierają wszystkie polskie znaki diakrytyczne. Polskie diakrytyki w~fontach \acro{EC} są kopią odpowiednich znaków z~fontów \acro{PL}, czyli ,,ogonki'' wyglądają tak samo, niezależnie od tego, z~której z~rodzin korzystamy. W~fontach \acro{EC}, \acro{PL} i~\acro{LM} dostępne są ponadto znaki cudzysłowów francuskich i~polskiego otwierającego, których nie ma w~fontach \acro{CM}. Opisany w~punkcie~\ref{subsec:quotation} sposób wprowadzania tych znaków za pomocą par \verb+,,+$\,$, \verb+<<+ i~\verb+>>+$\,$ działa jedynie wówczas, gdy używamy fontów \acro{EC}, \acro{PL} bądź~\acro{LM}. % wszystkie już są w formacie PS: % Zaletą fontów \acro{PL} w~porównaniu z~rodziną \acro{EC} jest to, że % są dostępne także w~wersji obwiedniowej ({\PostScript}owej). Aby przełączyć się na fonty \acro{EC} lub \acro{PL}, trzeba do preambuły dokumentu dołączyć pakiet \pai{fontenc}: % \begin{command} \verb@\usepackage[T1]{fontenc}@ lub \verb@\usepackage[OT4]{fontenc}@ \end{command} % \noindent Argument \fei{T1}, określający kodowanie, jest ,,odpowiedzialny'' za przełączenie się na fonty \acro{EC}. Podobnie Argument \fei{OT4} włącza fonty \acro{PL}. Uwaga: Powyższe dołączenie pakietu \pai{fontenc} jest jedynie deklaracją. Jeżeli twoja dystrybucja {\LaTeX}a nie zawiera fontów, które chcesz włączyć, to powyższe polecenia nie zostaną wykonane, a~{\LaTeX} przełączy się na font domyślny, zwykle nie zawierający polskich znaków. % ten akapit musi się zmieścić w 2 wierszasz na wydruku! Reasumując, oto przykładowa preambuła artykułu składanego w~języku polskim przy wykorzystaniu pakietów \pai{babel}, \pai{inputenc} oraz \pai{fontenc}: %% \begin{code} \begin{verbatim} \documenclass{article} \usepackage[polish]{babel} \usepackage[cp1250]{inputenc} \usepackage[OT4]{fontenc} %% lub [T1] \end{verbatim} \end{code} %% Lepszy sposób polonizacji {\LaTeX}a opisano w~następnym punkcie. Rodzina fontów \acro{LH} zawiera litery potrzebne do składania dokumentów w~cyrylicy. Ze względu na dużą liczbę znaków w~różnych pismach cyrylickich są one zgrupowane w~czterech różnych kodowaniach: \fei{T2A}, \fei{T2B}, \fei{T2C}, i~\fei{X2}\footnote{Listę języków obsługiwanych w~tych kodowaniach można znaleźć w~\cite{cyrguide}.}. Rodzina \acro{CB}, w~kodowaniu \fei{LGR}, zawiera fonty do składu greki. \subsection{Język polski w~dokumentach\label{polski}} Jak wspomniano w~punkcie~\ref{int-support}, poprawny skład w~języku polskim wymaga trzech rzeczy: {\LaTeX}a z~wbudowanymi w~format\index{format} polskimi regułami przenoszenia wyrazów, fontów zawierających polskie znaki diakrytyczne oraz dodatkowego pakietu obsługującego specyficzne dla języka polskiego reguły typograficzne. W~tym punkcie zakładamy, że udało ci się skonfigurować {\LaTeX}a pod kątem pierwszych dwóch punktów, tj. wygenerowania formatu i~zainstalowania fontów \acro{PL} lub~\acro{EC}, i~koncentrujemy się na szczegółowym opisie ostatniego aspektu polonizacji. W~każdej %kompletnej dystrybucji {\LaTeX}a znajduje się wspomniany w~punkcie~\ref{int-support} pakiet \pai{babel}. Mimo występujących w~nim niedociągnięć można go polecić, szczególnie początkującym. Bardziej wymagający użytkownicy piszący po polsku powinni korzystać z~opisanego dalej zestawu polonizacyjnego~\pai{platex}. W~wypadku języka polskiego wiele kłopotów sprawia kodowanie znaków diakrytycznych. Wynika to przede wszystkim z~braku standardu: różne platformy systemowe promują w~tym zakresie różne rozwiązania\footnote{Lekarstwem na tę bolączkę może być kodowanie wielobajtowe, tj.~standard Unicode\index{Unicode} (\acro{UTF}). Wprawdzie {\LaTeX} potrafi przetwarzać dokumenty unikodowe jedynie w~ograniczonym zakresie, ale jest on wystarczający dla tekstów w~językach europejskich. Specjalna wersja {\TeX}a, XeTeX autorstwa Jonathana Kew\index{Kew Jonathan}\index{XeTeX}, potrafi przetwarzać dokumenty zakodowane w~unikodzie\index{Unicode}, a~także generować skład z~użyciem unikodowych fontów OpenType.\index{OpenType}}. Można wyróżnić dwa sposoby zapisu diakrytyków w~{\LaTeX}u: polecenia standardowe (opisane w~punkcie~\ref{acc:chars} oraz poniżej) i~notację ,,bezpośrednią'', posługującą się znakami o~kodach większych od 127\footnote{Jest jeszcze trzeci sposób: tak zwana notacja prefiksowa (\texttt{/a} --~ą, \texttt{/n} --~ń, \texttt{/S} --~Ś itp.). Metoda ta wyszła już w~zasadzie z~użytku, gdyż powszechnie dostępna jest metoda bezpośredniego wprowadzania znaków z~polskimi ogonkami z~klawiatury.}. Standardowe polecenia akcentowe {\LaTeX}a umożliwiają zapis wszystkich polskich znaków diakrytycznych w~następującej postaci\footnote{Z~notacją tą wiąże się jednak pewien problem: otoczenie \ei{tabbing} zmienia lokalnie definicję kilku makr, w~tym \ci{'}. Dlatego w~jego obrębie do uzyskiwania znaków z~akcentem \emph{acute} trzeba używać notacji typu \ci{a'o}. Konsekwencją jest to, że zarówno w~implementacji notacji prefiksowej, jak i~,,stron kodowych'' pakietu \pai{inputenc} trzeba się do akcentu \emph{acute} dostawać nieco naokoło.}: %% \begin{example} \k{a} \'c \k{e} \l{} \'n \'o \'s \'z \.z \k{A} \'C \k{E} \L{} \'N \'O \'S \'Z \.Z \end{example} %% \noindent Posługiwanie się powyższymi poleceniami do pisania tekstów po polsku jest %nad wyraz uciążliwe, ale przydaje się na przykład do wstawienia niewielkich fragmentów do dokumentu, który będzie przetwarzany przez kogoś, kto języka polskiego nie zna i~nie ma dobrze skonfigurowanej pod tym kątem instalacji (np. polskie wstawki w artykule konferencyjnym pisanym po angielsku). Bezpośrednie wprowadzanie polskich znaków umożliwia mechanizm przekodowywania, uruchamiany przez umieszczenie komentarza strukturalnego w~pierwszym wierszu pliku\footnote{Komentarz ten %% strukturalny należy umieścić w~pierwszym wierszu pliku, czyli jeszcze przed wierszem z~\ci{documentclass}, a~znak \texttt{\%} musi być pierwszym znakiem tego wiersza.}: % \begin{code} \begin{verbatim} %& --translate-file=cp1250pl \end{verbatim} \end{code} Wpis taki będzie poprawny w~wypadku redagowania plików w~systemie \acro{MS}~Windows i~stosowania domyślnego w~nim kodowania \acro{CP}~1250. W~wypadku systemu Unix/Linux należy zamiast \verb+cp1250pl+ wpisać \verb+il2-pl+ (przy założeniu, że posługujemy się kodowaniem \acro{ISO}~8859-2). % [tp] % Zamiast komentarza strukturalnego można skorzystać z~pakietu % \pai{inputenc}, opisanego w~punkcie \ref{int-support}. Komentarz strukturalny jest alternatywą dla pakietu \pai{inputenc}, opisanego w~punkcie \ref{int-support}\footnote{% Oznacza to, że jednoczesne użycie komentarza strukturalnego \texttt{translate-file} i~dołączanie pakietu \protect\pai{inputenc} jest błędem} %, % bo \LaTeX{} nie potrafi wówczas poprawnie przetwarzać znaków z~ogonkami. Mechanizm komentarza strukturalnego nie umożliwia poprawnego przetwarzania dokumentów unikodowych\index{Unicode}. Jeżeli upierasz się przy unikodzie to pozostaje ci tylko pakiet \pai{inputenc}. Zamiast pakietu \pkg{babel} można zastosować pakiet \pai{polski} z~zestawu \pai{platex} (autorzy Mariusz Olko\index{Olko Mariusz} i~Marcin Woliński)\index{Woliński Marcin}. Jego niewątpliwą zaletą jest staranniejsza polonizacja, np.~pakiet \pkg{polski} domyślnie przełącza się na fonty \acro{PL} bez potrzeby dołączania %do preambuły dokumentu pakietu \pai{fontenc}. W~wypadku przejścia z~pakietu \pai{babel} na \pai{polski} dokumenty nie wymagają modyfikacji, oprócz oczywistej wymiany nazwy ładowanego pakietu w~preambule. Pakiet \pkg{polski} dołączamy w~preambule dokumentu poleceniem: % \begin{command} \verb+\usepackage[+\emph{opcje}\verb+]{polski}+ \end{command} % Lista ważniejszych opcji obejmuje: % \begin{description} \item{\popti{OT4}} wybranie kodowania \texttt{OT4} fontów, co w~praktyce oznacza skład fontami~\acro{PL}; \item{\popti{T1} } wybranie kodowania \texttt{T1} fontów, co oznacza skład fontami~\acro{EC}; \item{\popti{OT1}} wybranie kodowania \texttt{OT1} fontów, co oznacza skład fontami \acro{CM} (niezalecane); \item{\popti{plmath}} włączenie polskich oznaczeń dla standardowych poleceń trygonometrycznych oraz symboli relacji mniejszy-lub{\dywiz}równy i~większy-lub{\dywiz}równy (zalecane); \item{\popti{nomathsymbols}} blokada zmiany znaczenia standardowych poleceń trygonometrycznych oraz symboli relacji mniejszy-lub{\dywiz}równy i~większy-lub{\dywiz}równy (por.~punkt~\ref{symbols}, str.~\pageref{mniejszy-lub-rowny}); \item{\popti{MeX}} tryb pełnej polonizacji (zalecane). \end{description} % Jeżeli opcję układu kodowania w~foncie pominięto, to pakiet \pai{polski} używa fontów \acro{PL} (w~wypadku ich braku {\LaTeX} będzie sygnalizował błędy). Dotyczy to zarówno fontów tekstowych, jak i~zawierających znaki matematyczne. W~instalacji zawierającej fonty \acro{PL} dołączenie pakietu \pai{polski} bez opcji jest równoważne poleceniu: % \begin{code} \verb+\usepackage[OT4,plmath]{polski}+ \end{code} % Polecenie \ci{selecthyphenation} pozwala przełączyć się na dany zestaw wzorców dzielenia wyrazów. Jest to odpowiednik polecenia \ci{selectlanguage} z~pakietu \pkg{babel}. Argumentem jest nazwa języka. Polonizacyjnym uzupełnieniem pakietu \pai{polski} jest zestaw klas Marcina Wolińskiego\index{Woliński Marcin} \texttt{mwart}\index{klasa!mwart}, \texttt{mwrep}\index{klasa!mwrep} i~\texttt{mwbook}\index{klasa!mwbook}, dostępny pod adresem \urlMWclasses. W~klasach tych zostały uwzględnione m.in.\ takie zwyczaje jak: umieszczanie kropek po numerach śródtytułów, sposób formatowania przypisów oraz pagin, zakaz przenoszenia słów w~śródtytułach, reguły umieszczania/pomijania paginacji. Uzyskano to za cenę znacznej ingerencji w~sposób działania klas standardowych, czego skutkiem jest niekompatybilność z~częścią pakietów {\LaTeX}a. Oto przykładowa preambuła artykułu składanego w~klasie \texttt{mwart}: \begin{code} \begin{verbatim} %& --translate-file=cp1250pl \documentclass{mwart} \usepackage[MeX]{polski} \begin{document} ... \end{verbatim} \end{code} %% Jest to zalecany sposób rozpoczynania dokumentów w~języku polskim. Warto z~niego korzystać, zaopatrzywszy się w~niezbędne elementy: fonty \acro{PL}, pakiet \pai{polski} i~klasy Marcina Wolińskiego. W~standardowej dystrybucji \LaTeX{}a, w~której na ogół znajdują się obecnie fonty \acro{PL}, zadziała natomiast taka preambuła: %% \begin{code} \begin{verbatim} %& --translate-file=cp1250pl \documentclass{article} \usepackage{polski} \end{verbatim} \end{code} \section{Odstępy między wyrazami } Aby wyrównać prawy margines, {\LaTeX} wstawia między słowami odstępy różnej wielkości. Odstęp wstawiany na końcu zdania jest trochę większy, ponieważ tak składa się książki w~krajach anglosaskich. {\LaTeX} zakłada, że zdania mogą się kończyć kropką, znakiem zapytania lub wykrzyknikiem. Jeżeli bezpośrednio przed kropką znajduje się duża litera, to {\LaTeX} nie traktuje takiego miejsca jako końca zdania, lecz jako kropkę po skrócie. Wyjątki od powyższych zasad trzeba wyraźnie zaznaczyć w~tekście. %W-tył-ciach Znak \verb|\| poprzedzający spację oznacza odstęp normalnej wielkości. Tylda \verb|~| również wstawia %odstęp normalnej wielkości, taki odstęp, z~tym że \LaTeX{}owi nie wolno na nim złamać wiersza. Umieszczenie instrukcji \verb|\@| przed kropką jest dla \LaTeX{}a wskazówką, że ta kropka kończy %zdanie, nawet jeśli po dużej literze. \cih{"@} \index{~@ \verb.~.} zdanie, nawet jeśli następuje po dużej literze. \cih{"@}% see. lamport 154 \index{~@\verb.~.}% \index{tylda@tylda (\verb.~.)}% %\index{., odstęp po} % ten wpis jest niejasny % \begin{example} Pan~Kowalski ucieszył się\\ na jej widok (zob.~Rys.~5).\\ Podoba mi się JAVA\@. A~tobie? \end{example} % \noindent Jak wspomniano, wstawianie większych odstępów na końcu zdań to zwyczaj anglosaski. W~Europie kontynentalnej tradycyjnie się tego nie robi. Wstawianie większych odstępów na końcu zdań można wyłączyć poleceniem: % \begin{command} \ci{frenchspacing} \end{command} Pakiet \pai{polski} domyślnie wykonuje instrukcję \ci{frenchspacing} za nas, czyli włącza odstępy ,,kontynentalne''. \section{Tytuły, śródtytuły i~punkty } %% Podzielenie dokumentu na rozdziały, punkty, podpunkty itd.\ pomaga czytelnikom lepiej orientować się w~tekście. Do dzielenia dokumentu na hierarchiczne części służą odpowiednie instrukcje {\LaTeX}owe. Do autora należy używanie tych poleceń w~odpowiednim porządku. W~klasie \texttt{article} mamy do dyspozycji następujące instrukcje podziału hierarchicznego: \nopagebreak \begin{code} \ci{section}\verb|{...} |\ci{paragraph}\verb|{...}|\\ \ci{subsection}\verb|{...} |\ci{subparagraph}\verb|{...} |\\ \ci{subsubsection}\verb|{...} |\ci{appendix} \end{code} W~klasach \texttt{report} (raport) i~\texttt{book} (książka) mogą występować rozdziały: \begin{code} \ci{chapter}\verb|{...}| \end{code} %% Jeśli raport bądź książkę trzeba podzielić na części bez naruszania numeracji punktów i~rozdziałów, to można użyć polecenia: \begin{command} \ci{part}\verb|{...}| \end{command} Ponieważ w~klasie \texttt{article} najwyższą jednostką w~hierarchii podziału jest \ci{section} (czyli \emph{punkt\/}), łatwo tworzy się książki (klasa \verb+book+), w~których rozdziałami są poszczególne artykuły. {\LaTeX} dobierze za nas odpowiednie odstępy między rozdziałami oraz wielkość i~krój pisma w~śródtytułach. %\pagebreak[3] Dwie z~wymienionych instrukcji działają nieco inaczej niż pozostałe: % \begin{itemize} \item instrukcja \ci{part} nie ma wpływu na numerację rozdziałów; \item instrukcja \ci{appendix} nie ma argumentów. Jest to deklaracja zmieniająca sposób numerowania z~cyfr na litery. Dotyczy to rozdziałów w~klasach \verb+book+ i~\verb+report+, a~punktów w~klasie \verb+article+. \end{itemize} %% \noindent Argumentu instrukcji podziału dokumentu {\LaTeX} używa do przygotowania spisu treści. Instrukcja: % \begin{command} \ci{tableofcontents} \end{command} % \noindent wstawia spis treści w~miejscu jej użycia. Aby w~spisie treści otrzymać poprawne numery stron, trzeba dokument przetworzyć (,,zlatechować'') dwukrotnie. Czasami niezbędna jest nawet trzecia kompilacja. Kolejny przebieg jest potrzebny, gdy pod koniec przetwarzania dokumentu {\LaTeX} pokazuje komunikat: % \begin{code} \begin{verbatim} LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right. \end{verbatim} \end{code} % %% {\LaTeX} przetwarza dokument strona po stronie i~w~pojedynczym przebiegu nie może wstawić spisu treści na początku dokumentu, ponieważ nie jest jeszcze znana jego treść ani numeracja stron. Podobnie ma się sprawa ze spisami tabel czy rysunków. Rozwiązanie tego problemu jest tyleż proste co skuteczne. Podczas przetwarzania dokumentu {\LaTeX} zapisuje odpowiednie informacje do plików pomocniczych -- w~celu ich wykorzystania podczas kolejnych przebiegów. Przeznaczenie danego pliku pomocniczego jest sygnalizowane przez rozszerzenie jego nazwy. I tak: plik o~rozszerzeniu \eei{.toc} zawiera spis treści, plik~\eei{.lot} -- spis tabel, plik~\eei{.lof} -- spis rysunków, \eei{.aux} -- informacje o~odsyłaczach wewnątrz dokumentu (odsyłacze omawiamy w~punkcie~\ref{sec:odsylacze}). Pełniejszy wykaz nazw plików \LaTeX{}owych podano w~punkcie~\ref{sec:latex-files} na stronie \pageref{sec:latex-files}. %% Wymienione wyżej instrukcje podziału hierarchicznego posiadają także wersje ,,z~gwiazdką''. Nazwa instrukcji w~wersji ,,z~gwiazdką'' składa się z~,,normalnej'' nazwy, po której występuje znak ,,\verb+*+''. W~wyniku działania takiej instrukcji tytuł rozdziału lub punktu zostanie umieszczony w~dokumencie, ale nie w~spisie treści; tytuł nie zostanie też objęty numeracją. Przykładowo, wersją ,,z~gwiazdką'' instrukcji \verb|\section{Pomoc}| jest \verb|\section*{Pomoc}|. %% Zwyczajem angielskim jest nieumieszczanie nienumerowanych śródtytułów w~spisie treści. Polscy redaktorzy często się domagają, by na przykład ,,Wstęp'' był śródtytułem nienumerowanym, a~jednocześnie występował w~spisie. Ten problem rozwiązujemy za pomocą polecenia: \begin{command} \ci{addcontentsline}\verb.{.\emph{spis}\verb.}{.\emph{poziom}\verb.}{.\emph{śródtytuł}\verb.}. \end{command} % \noindent gdzie: \emph{spis} to rozszerzenie nazwy pliku, w~którym ma zostać zapisana informacja, \emph{poziom} to \texttt{chapter}, \texttt{section} bądź inna nazwa polecenia hierarchicznego, a~\emph{śródtytuł} to sam śródtytuł. Przykład: % \begin{code} \begin{verbatim} \chapter*{Wstęp} \addcontentsline{toc}{chapter}{Wstęp} \end{verbatim} \end{code} %% Najczęściej hasła w~spisie treści pokrywają się z~tytułami rozdziałów czy punktów. Czasami jednak nie jest to pożądane, na przykład wówczas, gdy tekst hasła jest zbyt długi. W~takich wypadkach hasło do spisu treści można podać jako \emph{opcjonalny} argument instrukcji podziału hierarchicznego, na przykład tak: % \begin{code} \verb|\chapter[Krótki i~ekscytujący rozdział]{To jest|\\ \verb| bardzo długi i~wyjątkowo nudny rozdział}| \end{code} % W~wyniku wykonania tej instrukcji w~spisie treści pojawi się ,,Krótki i~ekscytujący rozdział'', natomiast w~tytule rozdziału ,,To jest bardzo długi i~wyjątkowo nudny rozdział''. {\LaTeX} składa część tytułową dokumentu, napotkawszy instrukcję: % \begin{command} \ci{maketitle} \end{command} % \noindent Należy ją umieścić po \verb+\begin{document}+, czyli nie w~preambule. Zawartość części tytułowej ustalają polecenia: % \begin{command} \ci{title}\verb|{...}|, \ci{author}\verb|{...}| oraz opcjonalnie \ci{date}\verb|{...}| \end{command} % \noindent Należy je umieścić w~preambule. Jeżeli dokument ma kilku autorów, to ich nazwiska i~imiona rozdzielamy instrukcją \ci{and}. Sposób użycia powyższych instrukcji demonstruje rysunek~\ref{document} ze strony~\pageref{document}. W~{\LaTeXe} istnieją trzy dodatkowe instrukcje dotyczące struktury dokumentu, dostępne jednak wyłącznie w~klasie \verb|book|. Oto ich nazwy, sposób użycia i~przeznaczenie: % \begin{description} \item[\ci{frontmatter}] powinna być pierwszą instrukcją w~treści dokumentu, czyli powinna wystąpić tuż po \verb|\begin{document}|. Włącza ona rzymski zapis numerów stron, wyłączając jednocześnie numerowanie punktów podziału. To tak, jakby się używało instrukcji ,,gwiazdkowanych'', w~rodzaju \verb|\chapter*{Preface}|. Punkty podziału trafią jednak do spisu treści. \item[\ci{mainmatter}] należy umieścić tuż przed pierwszym rozdziałem książki. Przełącza ona sposób oznaczania numerów stron na arabski, zerując zarazem licznik stron. \item[\ci{backmatter}] powinna wystąpić przed ostatnimi fragmentami książki, takim jak spis literatury albo skorowidz. \end{description} % \noindent Powyższe instrukcje przydają się do podzielenia książki na część wstępną (obejmującą tytulaturę, spisy treści, tabel, wstępy itd.), główną i~zakończenie (załączniki, skorowidze, kolofon itd.). W~części wstępnej tytuły rozdziałów są składane mniejszym stopniem pisma (czego należy oczekiwać), a~numery stron są w~notacji rzymskiej (co raczej odbiega od polskich zwyczajów typograficznych). \section{Odsyłacze\label{sec:odsylacze}} Książki, raporty i~artykuły często zawierają odsyłacze do rysunków, tabel i~innych fragmentów tekstu. Z~odsyłaczami związane są w~\LaTeX{}u następujące trzy instrukcje: % \begin{command} \ci{label}\verb|{|\emph{etykieta}\verb|}|, \ci{ref}\verb|{|\emph{etykieta}\verb|}| i \ci{pageref}\verb|{|\emph{etykieta}\verb|}| \end{command} % *** Przypis JG \noindent Argument \emph{etykieta} jest ciągiem liter, cyfr lub~znaków interpunkcyjnych. Nazwy etykiet ustala sam autor. \LaTeX{} zamienia \verb+\ref{+\emph{etykieta}\verb+}+ na numer tego rozdziału, punktu, rysunku, tabeli czy też równania matematycznego, \emph{bezpośrednio za\/} którym umieszczona została instrukcja \ci{label} zawierająca identyczną \emph{etykietę}. Instrukcja \verb+\pageref{+\emph{etykieta}\verb+}+ działa identycznie jak \ci{ref}, z~tym że wstawia numer strony, na której znajduje się element oznaczony etykietą\footnote{Warto pamiętać, że te instrukcje ,,nie wiedzą'', do czego tak naprawdę się odnoszą. Zadaniem instrukcji \ci{label} jest przechowanie związku wygenerowanej automatycznie liczby z~miejscem w~tekście.}. Oto przykład: % \begin{example} Odsyłacz do tego punktu \label{sec:this} wygląda tak: ,,patrz punkt~\ref{sec:this} na stronie~\pageref{sec:this}.'' \end{example} Podobnie jak w~wypadku spisów treści, tabel czy rysunków, do ustalenia właściwej numeracji odsyłaczy potrzebne są co najmniej dwie, a~z~reguły trzy kompilacje dokumentu. Podczas pierwszej \LaTeX{} wysyła do pliku pomocniczego z~rozszerzeniem \eei{.aux} (zob. punkt~\ref{sec:latex-files}) informacje o~odsyłaczach, które wykorzystuje podczas kolejnych kompilacji. \section{Przypisy } Do składania przypisów u~dołu strony służy instrukcja: % \begin{command} \ci{footnote}\verb|{|\emph{tekst przypisu}\verb|}| \end{command} % \noindent Należy ją wstawić bezpośrednio po słowie lub zdaniu, do którego się odnosi. W~krajach anglosaskich przypisy odnoszące się do całego zdania lub jego części umieszcza się natychmiast po kropce lub przecinku. W~Polsce najczęściej umieszcza się je \emph{przed} znakiem przestankowym (zasadę tę stosujemy w~niniejszym tłumaczeniu). %% {\LaTeX} numeruje przypisy automatycznie. Sposób ich numerowania zależy od używanej klasy. W~klasie \verb|article| numeracja jest ciągła, w~klasach \verb|report| i~\verb|book| przypisy są numerowane w~ramach rozdziałów. %% \begin{example} Przypisy\footnote{To jest właśnie przypis.} są często stosowane przez użytkowników {\LaTeX}a \end{example} \section{Wyróżnienia } W~tekstach pisanych na maszynie fragmenty, które mają zostać wyróżnione, $\underline{\mbox{podkreśla się}}$. W~dokumentach drukowanych wyróżnienie fragmentu odbywa się przez złożenie go \textit{kursywą}. Służy do tego \LaTeX{}owa instrukcja: % \begin{command} \ci{emph}\verb|{|\emph{tekst}\verb|}| \end{command} % \noindent Argumentem tej instrukcji jest tekst, który ma zostać wyróżniony. % \begin{example} \emph{\emph{Wyróżnienia} w~tekście już wyróżnionym są składane \emph{zwykłym} krojem pisma.} \end{example} Zwróćmy uwagę, że istnieje różnica między wyróżnieniem części tekstu a~złożeniem go inną czcionką: % \begin{example} \textit{Tekst można \emph{wyróżnić}, składając go kursywą,} \textsf{czcionką \emph{szeryfową},} \texttt{a nawet \emph{maszynowo}.} \end{example} \section{Otoczenia\label{env} } Do instrukcji formatujących zaliczają się \emph{otoczenia}\index{otoczenie} (zwane też \emph{środowiskami}\index{środowisko|see{otoczenie}}), czyli instrukcje postaci: % \begin{command} \cmd{begin}\verb|{|\emph{nazwa}\verb|}|\quad \emph{tekst}\quad \cmd{end}\verb|{|\emph{nazwa}\verb|}| \end{command} % \noindent gdzie \emph{nazwa} jest nazwą otoczenia, a~\emph{tekst} jest fragmentem dokumentu, który ma zostać złożony inaczej niż poza otoczeniem. Otoczenia można zagnieżdżać jedne w~drugich: % \begin{code} \verb|\begin{aaa}...\begin{bbb}...\end{bbb}...\end{aaa}| \end{code} % \noindent Niedopuszczalne jest natomiast ,,przeplatanie'' otoczeń: % \begin{code} \verb|\begin{aaa}...\begin{bbb}...\end{aaa}...\end{bbb}| \end{code} % % Otoczenie tworzy grupę, tak że instrukcje wykonane pomiędzy % \verb+\begin{+\emph{nazwa}\verb+}+ % a~\verb+\end{+\emph{nazwa}\verb+}+ dotyczą tylko jego wnętrza. % Innymi słowy ich działanie trwa aż do napotkania % zamykającego \verb+\end{nazwa}+. % Tu od nowego akapitu! Wiele standardowych poleceń \LaTeX{}a można zapisać w~formie ,,otoczeniowej''. W~takich wypadkach nazwa polecenia (bez w-tył-ciacha) jest nazwą otoczenia. Na przykład, zamiast polecenia \ci{em}, włączającego wyróżniający krój pisma, możemy zastosować otoczenie \verb+\begin{em}...\end{em}+. W~kolejnych punktach przedstawiamy częściej używane otoczenia. \subsection{Otoczenia \ei{itemize}, \ei{enumerate} i~\ei{description}} Otoczenia \ei{itemize} oraz \ei{description} służą do tworzenia wyszczególnień, zaś \ei{enumerate} do tworzenia wyliczeń. W~każdym z~nich element wyliczenia zaczyna się od instrukcji \ci{item}. \begin{example} \begin{enumerate} \item Taka lista: \begin{itemize} \item wygląda \item[--] śmiesznie. \end{itemize} \item Pamiętaj: \begin{description} \item[Głupoty] nie staną się mądrościami, gdy się je wyliczy. \item[Mądrości] można elegancko zestawiać w~wyliczeniach. \end{description} \end{enumerate} \end{example} \subsection{Otoczenia \ei{flushleft}, \ei{flushright} i~\ei{center}} W~otoczeniach \ei{flushleft} i~\ei{flushright} akapity są składane z~wyrównaniem, odpowiednio, do lewego bądź prawego marginesu. Wewnątrz otoczenia \ei{center} każdy wiersz akapitu jest wyśrodkowany w~osi szpalty. Tak jak zawsze, {\LaTeX} dzieli akapity na wiersze automatycznie, można jednak w~obrębie powyższych otoczeń wymusić zmianę wiersza poleceniem \ci{\bs}. % \begin{example} \begin{flushleft} To jest tekst\\ wyrównany do lewej. {\LaTeX} nie składa tu wierszy\\ z~zachowaniem jednakowej długości. \end{flushleft} \end{example} \begin{example} \begin{flushright} To jest tekst\\ wyrównany do prawej. {\LaTeX} nie składa tu wierszy\\ z~zachowaniem jednakowej długości. \end{flushright} \end{example} \begin{example} \begin{center} To jest tekst\\wyśrodkowany. \end{center} \end{example} \subsection{Otoczenia \ei{quote}, \ei{quotation} i~\ei{verse}} Otoczenie \ei{quote} przydaje się do składania cytatów oraz przykładów: % \begin{example} Jeżeli chodzi o~długość wierszy, to regułą kciuka jest, że: \begin{quote} Przeciętnie wiersz nie powinien zawierać więcej niż 66 znaków. Dlatego w~{\LaTeX}u standardowe strony mają szerokie marginesy. \end{quote} Dlatego też w~gazetach stosuje się druk wielołamowy. \end{example} \noindent Istnieją ponadto dwa otoczenia o~podobnym zastosowaniu: \ei{quotation} oraz \ei{verse}. Pierwsze z~nich przydaje się do formatowania cytatów dłuższych niż jeden akapit. W~przeciwieństwie do otoczenia \ei{quote}, wewnątrz \ei{quotation} {\LaTeX} rozpoczyna poszczególne akapity od wcięcia akapitowego. Otoczenie \ei{verse} służy do składania wierszy. Poszczególne linijki zwrotek należy kończyć instrukcją \ci{\bs}, poszczególne zaś zwrotki -- oddzielać pustą linią. \begin{example} Na pamięć znam tylko jeden angielski wiersz. Ten o~Humptym Dumptym. \begin{flushleft} \begin{verse} Humpty Dumpty sat on a wall:\\ Humpty Dumpty had a great fall.\\ All the King's horses and all the King's men\\ Couldn't put Humpty together again. \end{verse} \end{flushleft} \end{example} \subsection{Streszczenie} Publikacje naukowe zaczynają się zazwyczaj od streszczenia -- przeglądu tego, co czytelnik napotka w~dalszej części. W~\LaTeX{}u do wyróżniania streszczeń służy otoczenie \ei{abstract}. Używa się go na ogół w~dokumentach klasy \texttt{article}. \newenvironment{abstract}% {\begin{center}\begin{small}\begin{minipage}{0.8\textwidth}}% {\end{minipage}\end{small}\end{center}} \begin{example} \begin{abstract} Streszczenie streszczenia. \end{abstract} \end{example} \subsection{Symulacja maszynopisu\label{verb-envir} } Tekst zawarty między \verb|\begin{|\ei{verbatim}\verb|}| a~\verb|\end{verbatim}| jest przez \LaTeX{}a składany dosłownie, czyli tak, by wyglądał jak napisany na maszynie, z~zachowaniem zmian wiersza i~odstępów z~pliku źródłowego. Aby uzyskać ten efekt, krój pisma zmienia się na imitujący pismo maszynowe (grotesk). Wszystkie znaki w~tym kroju, włączając spację, mają jednakową szerokość. Zakończenie linii wewnątrz otoczenia \ei{verbatim} prowadzi do rozpoczęcia nowego wiersza w~wydruku, a~\emph{każda\/} spacja zamienia się na odstęp. Wewnątrz otoczenia \ei{verbatim} \emph{nie\/} są wykonywane instrukcje. Wewnątrz akapitów imitację maszynopisu uzyskuje się za pomocą instrukcji: % \begin{command} \ci{verb}\verb|+|\emph{tekst}\verb|+| \end{command} % \noindent Znak \verb|+| ogranicza %tu tekst, który ma zostać wydrukowany dosłownie. Zamiast \verb|+| można użyć innego znaku, byle to nie była litera, gwiazdka, spacja ani żaden znak, który występuje w~\emph{tekście}. Instrukcję \ci{verb} oraz otoczenie \pai{verbatim} wykorzystujemy często w~tej książce do składania przykładów {\LaTeX}owych. % \begin{example} Rozważmy przykład\ldots \begin{verbatim} { for (i=1;i<=NF;i++) {l[$i]++; } END {for (i in l) {print l[i]} \end{verbatim} \end{example} %$ % \noindent Otoczenie \ei{verbatim} oraz instrukcja \ci{verb} mają także wersje ,,z~gwiazdką'', w~których spacja z~pliku źródłowego jest zamieniana na znak \verb*+ +. Jest to jedyna różnica działania w~porównaniu do wersji bezgwiazdkowych: % \begin{example} \begin{verbatim*} gwiazdkowa wersja otoczenia verbatim wyróżnia spacje w tekście \end{verbatim*} \end{example} % \noindent Otoczenia \ei{verbatim} ani instrukcji \ci{verb} nie wolno używać wewnątrz argumentów innych instrukcji (więcej na ten temat w~punkcie~\ref{fragile:commands}). \subsection{Otoczenie \ei{tabular}\label{sec:tabular} } Do składania tabel służy otoczenie \ei{tabular}. {\LaTeX} automatycznie ustala szerokość poszczególnych rubryk tabeli. Otoczenie ma jeden parametr obowiązkowy, \emph{spec-kolumn}, który określa liczbę kolumn tabeli oraz sposób ich justowania: % \begin{command} \verb|\begin{tabular}{|\emph{spec-kolumn}\verb|}| \end{command} % \noindent Dla każdej kolumny należy w~argumencie wstawić jedną z~liter: \verb+l+, \verb+r+ lub \verb+c+, określając w~ten sposób justowania zawartości kolumny. Dosunięcie zawartości kolumny do lewej oznaczamy literą \verb+l+, do prawej -- znakiem \verb+r+, a~wyśrodkowanie -- znakiem \verb+c+. Zapisu \verb|p{|\emph{szer-kolumn}\verb|}| można użyć do zaznaczenia, że kolumna ma mieć szerokość \emph{szer-kolumn}. Wewnątrz takiej kolumny tekst jest składany w~prostokąt o~zadanej szerokości, z~wyrównywaniem obu marginesów. Znak \verb+|+ instruuje \LaTeX{}a, by kolumny tabeli rozdzielił pionową kreską. Wewnątrz otoczenia \ei{tabular} poszczególne wiersze oddzielamy instrukcją \ci{\bs}, a~rubryki w~wierszu -- znakiem \verb+&+. Instrukcja \ci{hline} wstawia poziomą kreskę na całą szerokość tabeli. % \index{"|@ \verb."|.} \begin{example} \begin{tabular}{|r|l|} \hline 7C0 & heksadecymalnie \\ 3700 & oktalnie \\ 11111000000 & binarnie \\ \hline \hline 1984 & dziesiętnie \\ \hline \end{tabular} \end{example} %% \vspace*{-.45ex} %% \begin{example} \begin{tabular}{|p{4.7cm}|} \hline Ten akapit jest wewnątrz pudełka. Mamy nadzieję, że uzyskany efekt się podoba.\\ \hline \end{tabular} \end{example} % \noindent Instrukcją \verb|@{...}| określamy odstęp między kolumnami. Zastępuje ona domyślny odstęp międzykolumnowy treścią umieszczoną między \verb+{+ a~\verb+}+. Stosuje się ją często do wyrównywania zestawień liczbowych według cyfr znaczących. Można ją także wykorzystać do usunięcia odstępów w~pierwszej i~ostatniej kolumnie tabeli, co ilustruje poniższy przykład: % \label{sec:tabular-et} \begin{example} \begin{tabular}{@{} l @{}} \hline bez odstępów na brzegach\\ \hline \end{tabular} \end{example} \vspace*{-.45ex} \begin{example} \begin{tabular}{l} \hline odstępy na brzegach tabeli\\ \hline \end{tabular} \end{example} \noindent W~{\LaTeX}u nie ma mechanizmu pozwalającego wyrównywać zestawienia liczbowe według cyfr znaczących\footnote{% Do wyrównywania cyfr można skorzystać %z~możliwości z~pakietu \pai{dcolumn} z~zestawu ,,tools''.}, ale efekt ten można %%osiągnąć, %% źle się składa uzyskać, %% dzięki temu akapit skraca się o 1 wiersz składając liczbę w~dwóch kolumnach: część całkowitą w~kolumnie wyrównywanej do prawego brzegu i~część dziesiętną w~kolumnie wyrównanej do lewego. Za pomocą instrukcji \verb|@{,}| zastępujemy przecinkiem odstęp wstawiany normalnie między kolumnami. Trzeba jednak pamiętać o~konieczności wpisywania znaku \verb|&| zamiast przecinków w~liczbach. Rubryki rozciągające się na kilka kolumn, jak nagłówek w~poniższym przykładzie, tworzymy poleceniem \ci{multicolumn}: \begin{example} \begin{tabular}{c r @{,} l} Wyrażenie & \multicolumn{2}{c}{Wartość}\\\hline $\pi$ & 3&1416 \\ $\pi^{\pi}$ & 36&46 \\ $(\pi^{\pi})^{\pi}$ & 80662&7 \\ \end{tabular} \end{example} % \noindent Polecenie \ci{cline}\verb+{+\emph{m}\verb+-+\emph{n}\verb+}+ wstawia poziomą kreskę ciągnącą się od kolumy \emph{m}~do kolumny~\emph{n}: \begin{example} \begin{tabular}{|c|c|c|c|l|}\hline 1 &\multicolumn{4}{c|}{0}\\ \cline{2-5} 1 & 2 & 3 & 4 &5 \\ \cline{2-4} 1 & 2 & 3 & 4 &5 \\ \hline \end{tabular} \end{example} %% W~punkcie~\ref{more:tables} opisano, jak sobie radzić ze składem bardziej skomplikowanych tabel. \section{Wstawki } Współczesne publikacje zawierają dużo rysunków i~tabel. Elementów tych nie należy dzielić między strony i~dlatego wymagają specjalnego potraktowania. W~sytuacji gdy nie mieszczą się one na bieżącej stronie, na ogół przenosi się je i~wstawia na początku strony następnej. W~wypadku przeniesienia rysunku lub tabeli miejsce pozostałe na stronie wypełniane jest tekstem. Tego typu elementy będziemy nazywać \emph{wstawkami}\index{wstawka}. Aby w~pełni skorzystać z~{\LaTeX}owego mechanizmu wstawek, trzeba choćby powierzchownie rozumieć, jak {\LaTeX} manipuluje takimi obiektami. W~przeciwnym razie wstawki mogą się stać źródłem irytacji, gdyż {\LaTeX} będzie je umieszczał wszędzie, tylko nie w~miejscach, w~którym byśmy sobie tego życzyli. Do tworzenia wstawek mamy w~{\LaTeX}u dwa otoczenia. Otoczenie \ei{figure} służy do tworzenia rysunków, a~otoczenie \ei{table} -- do tabel. Oba mają jeden parametr opcjonalny: % \begin{command} \verb|\begin{figure}[|\emph{miejsce}\verb|]| albo \verb|\begin{table}[|\emph{miejsce}\verb|]| \end{command} % \noindent Argument \emph{miejsce} określa, gdzie na stronie można umieścić wstaw\-kę. Powinna to być sekwencja od jednego do pięciu znaków: \verb+h+, \verb+t+, \verb+b+, \verb+p+ oraz \verb+!+. Każdy znak określa dopuszczalny sposób umieszczenia wstawki; szczegółowe informacje na ten temat zestawiono w~tabeli~\ref{tab:permiss}. \begin{table}[!tbp] \caption{Opcjonalny argument otoczeń \ei{table} i~\ei{figure} \label{tab:permiss} } \noindent \begin{minipage}{\textwidth} \medskip \begin{center} \begin{tabular}{@{}cp{10cm}@{}} Znak & Dopuszczalne miejsce umieszczenia wstawki \\ \hline \rule{0pt}{1.05em} \texttt{h} & bez przemieszczenia, dokładnie w~miejscu użycia \\[0.3ex] % poniższe nie jest prawdą: [tp] % (użyteczne w~wypadku niewielkich wstawek); \texttt{t} & na górze strony \\[0.3ex] \texttt{b} & na dole strony \\[0.3ex] \texttt{p} & na stronie zawierającej wyłącznie wstawki \\[0.3ex] \texttt{!} & ignorując większość parametrów kontrolujących umieszczanie wstawek\footnote{Są to parametry takie jak np.~maksymalna dopuszczalna liczba wstawek na stronie}, przekroczenie wartości, które mogą nie pozwolić na umieszczanie następnych wstawek na stronie. \end{tabular} \end{center} \end{minipage} \end{table} Przykładowa tabela może się zaczynać tak: % \begin{code} \verb|\begin{table}[!hbp]| \end{code} % \noindent Argument \verb|[!hbp]| oznacza, że tabelę można umieścić w~miejscu, w~którym pojawia się w~pliku źródłowym (\texttt{h}), albo na dole strony (\texttt{b}), albo wreszcie na osobnej stronie zawierającej wyłącznie wstawki (\texttt{p}). Ponadto ,,\texttt{!}'' oznacza, że {\LaTeX} ma pominąć większość parametrów sterujących umieszczaniem wstawek. Jeżeli %%instrukcji \ci{table} %% błąd [tp] otoczenia \ei{table} użyto bez opcjonalnego argumentu, to jego domyślnymi wartościami są~\verb|[tbp]|. \LaTeX{} umieszcza każdą wstawkę zgodnie ze specyfikacją autora podaną w~argumencie \emph{miejsce}. Jeżeli nie może umieścić wstawki na bieżącej stronie, to dołącza ją albo do \emph{kolejki rysunków}, albo do \emph{kolejki tabel}\footnote{Są to kolejki typu \acro{FIFO} (pierwsze weszło -- pierwsze wyjdzie).}. Na początku składania nowej strony {\LaTeX} sprawdza, czy można ją zapełnić wstawkami czekającymi w~kolejce. Jeśli nie jest to możliwe, to pierwsza wstawka każdej z~kolejek traktowana jest tak, jak gdyby właśnie pojawiła się w~tekście: {\LaTeX} stara się ją umieścić zgodnie z~wartościami parametru \emph{miejsce} (za wyjątkiem \verb+h+, gdyż nie jest to już oczywiście możliwe). Nowe wstawki dołączane są na koniec odpowiednich kolejek. {\LaTeX} dba o~właściwy porządek wstawek każdego typu. Może się zdarzyć, że pojedynczy rysunek, którego z~jakichś względów nie można poprawnie wstawić, ,,ciągnie'' za sobą wszystkie późniejsze rysunki, nawet aż na koniec dokumentu. Dlatego: \begin{quote} Jeżeli {\LaTeX} nie umieszcza wstawek zgodnie z~oczekiwaniami, to z~reguły któraś z~nich blokuje całą kolejkę, a~być może nawet wszystkie kolejki wstawek. \end{quote} %%\bigskip \noindent Wyjaśniwszy ów cokolwiek zawiły problem umieszczania wstawek, przejdź\-my do omówienia kilku pozostałych spraw z~nimi związanych. Poleceniem: % \begin{command} \ci{caption}\verb|{|\emph{tekst}\verb|}| \end{command} % \noindent wstawiamy tytuł rysunku lub tabeli. Kolejny numer rysunku bądź tabeli oraz słowo ,,Rysunek'' bądź ,,Tabela'' (lub ,,Tablica'' -- zależnie od używanego pakietu polonizacyjnego) zostaną wstawione automatycznie. Następujące instrukcje: % \begin{command} \ci{listoffigures} oraz \ci{listoftables} \end{command} % \noindent działają analogicznie do instrukcji \ci{tableofcontents}, wstawiając do dokumentu, odpowiednio, spis rysunków oraz spis tabel. Poszczególnymi pozycjami tych spisów będą tytuły rysunków bądź tabel będące argumentami instrukcji \ci{caption}. Jeżeli tytuł jest długi, to do spisu można przesłać jego wersję skróconą, podaną jako opcjonalny argument instrukcji \ci{caption}: % \begin{code} \verb|\caption[Short]{LLLLLoooooonnnnnggggg}| \end{code} % Za pomocą instrukcji \ci{label} oraz \ci{ref} można tworzyć odsyłacze do tabel i~rysunków. Polecenie \ci{label} należy umieszczać \emph{bezpośrednio za\/} instrukcją \ci{caption}. Dobrym pomysłem jest też umieszczenie jej wewnątrz argumentu instrukcji \ci{caption} (na przykład na końcu tytułu rysunku czy tabeli). Niektórzy użytkownicy błędnie sądzą, że wystarczy umieścić instrukcję \ci{label} wewnątrz otoczenia \ei{figure} czy \ei{table}, gdy tymczasem umieszczenie jej przed poleceniem \ci{caption} prowadzi do błędów w~numerach odsyłaczy. W~poniższym przykładzie wstawka zawiera prostokąt o~wymiarach 5~cm $\times$ 5~cm. Ten sposób postępowania można wykorzystać w~celu zarezerwowania miejsca na rysunki, które zostaną wklejone później -- do gotowego, wydrukowanego dokumentu. % to nie to samo co: [tp] % Tym sposobem można % zarezerwować miejsce na rysunki, które zostaną wklejone później -- % dopiero do gotowego, przeznaczonego do druku dokumentu. % \begin{code} \begin{verbatim} Rysunek~\ref{white} jest przykładem Pop-Artu. \begin{figure}[!htp] \makebox[\textwidth]{\framebox[5cm]{\rule{0pt}{5cm}}} \caption{Pięć na pięć centymetrów\label{white} } \end{figure} \end{verbatim} \end{code} % \noindent Zakładając w~tym przykładzie, że kolejka rysunków jest pusta, {\LaTeX} najpierw spróbuje umieścić rysunek bez przesuwania go dokądkolwiek (\texttt{h}). Jeżeli okaże się to niemożliwe, to spróbuje go umieścić na górze strony (\texttt{t}). Jeżeli i~to okaże się niewykonalne, to będzie się starał umieścić rysunek na stronie zawierającej wyłącznie wstawki (\texttt{p}). Jeżeli w~kolejkach rysunków i~tabel nie ma wstawek pozwalających wypełnić stronę, to \LaTeX{} rozpocznie nową stronę i~spróbuje umieścić na niej rysunek, traktując go znowu tak, jakby właśnie pojawił się w~tekście. Czasami może wystąpić konieczność wykonania instrukcji: % \begin{command} \ci{clearpage} albo nawet \ci{cleardoublepage} \end{command} % \noindent W~wyniku jej zadziałania {\LaTeX} umieszcza w~dokumencie wszystkie oczekujące w~kolejkach wstawki, a~następnie rozpoczyna skład od nowej strony. W~wypadku użycia instrukcji \ci{cleardoublepage} {\LaTeX} rozpoczyna skład od strony nieparzystej (por. przypis~\ref{fnt:clrdblpg} na str.~\pageref{fnt:clrdblpg}). W~dalszej części książki przedstawimy, jak można do dokumentu dołączać rysunki w~formacie {\PSi} (por.~\ref{eps:incl}). \section{Ochrona poleceń kruchych\label{fragile:commands}} Niektórych poleceń nie można umieszczać wewnątrz argumentów innych poleceń, na przykład polecenie \ci{footnote} albo \ci{verb} nie może się pojawić w~argumencie polecenia \ci{section} czy \ci{caption}. Kompilacja dokumentu zakończy się w~takiej sytuacji błędem, a~takie polecenia nazywamy \emph{kruchymi}\index{polecenie!kruche} (ang.~\UKemph{fragile command\/}). Polecenia kruche wymagają ,,ochrony''. Możemy je chronić, umieszczając przed nimi polecenie \ci{protect}. Polecenie \ci{protect} odnosi się wyłącznie do instrukcji znajdującej się tuż za nim, nie obejmuje swym działaniem nawet argumentów tej instrukcji. W~większości wypadków nadmiarowe użycie \ci{protect} nie powoduje szkód. %% \begin{code} \begin{verbatim} \section{Jestem przezorny% \protect\footnote{i~chronię przypisy}} \end{verbatim} \end{code} %% Uwaga: wiele osób lubi dodawać przypisy do śródtytułów. Naszym zdaniem jest to zły i~komplikujący życie zwyczaj; ostatecznie zawsze można umieścić przypis w~pierwszym akapicie pod śródtytułem. Rób jak uważasz, ale czy wiesz, jak usunąć numer przypisu ze spisu treści? \section {Listy \label{sec:letter}} Do pisania listów można użyć klasy \verb+letter+. Struktura pliku źródłowego tej klasy różni się od dokumentów z~klasy \verb+article+ czy \verb+book+. Klasę \verb+letter+ zaprojektowano tak, by bezproblemowo dało się napisać zarówno pojedynczy list do przysłowiowej ,,cioci'', jak też setki listów do różnych osób (korespondencja seryjna). Jeśli imię, nazwisko i~adres nadawcy mają być identyczne we wszystkich listach, to deklarujemy je poleceniem: % \begin{code} \verb+\address{+\emph{imię}\verb+\\+\emph{nazwisko}\verb+\\+ \emph{adres\dots}\verb+}+ \end{code} % \noindent Użycie instrukcji \ci{\bs} w~adresie powoduje złamanie wiersza. Polecenie \ci{signature} służy do zadeklarowania podpisu pod listem. Wewnątrz argumentu tego polecenia instrukcja \ci{\bs} służy do rozpoczęcia nowego wiersza, przykładowo: % \begin{example} Dyr. E.~K.~Tor,\\ Przewodniczący Zastępcy \end{example} % \noindent Do nagłówka listu automatycznie wstawiana jest bieżąca data. Aby wstawić inną, należy zastosować deklarację \ci{date}: % \begin{code} \verb+\date{16 Czerwca 1963~r.}+ \end{code} % \noindent Deklaracje \ci{address}, \ci{signature} oraz \ci{date} umieszcza się zwykle w~preambule, chociaż mogą one wystąpić również w~części zasadniczej pliku źródłowego. Treść listu powinniśmy wpisać wewnątrz otoczenia \ei{letter}. Otoczenie to ma jeden argument, którym jest adres osoby, do której piszemy. Wewnątrz otoczenia \ei{letter} można stosować kilka prostych poleceń służących do umieszczania w~odpowiednim miejscu elementów typowego listu\footnote{Elementy nietypowe zawsze można umieścić, korzystając z~innych poleceń poznanych w~tym rozdziale.}. Do złożenia nagłówka listu używamy polecenia \ci{opening}, a~do zakończenia -- \ci{closing}. Ponadto są polecenia: \ci{ps} do wstawienia \emph{post scriptum} oraz \ci{cc} do zdefiniowania wykazu osób, które mają otrzymać kopię listu. Oto pełny przykład listu: % \begin{code} \begin{verbatim} %& --translate-file=il2-pl \documentclass{letter} \usepackage{polski} \address{Dyr. E.~K.~Tor,\\ Przewodniczący Zastępcy\\ Firma z~o.o.\\ w/m} \signature{E.~.K.~Thor} \begin{document} % pierwszy list \begin{letter}{Henryk Potrykus\\ul.~Krótka\\Puck} \opening{Szanowny Panie} Z~przykrością zawiadamiam, że Pańskie podanie zostało... \closing{Z~poważaniem} \cc{cc: Józef Wujke} \end{letter} % drugi list \begin{letter}{Zofia Potrykus\\ul.~Szkolna\\Reda} \opening{Szanowna Pani} Odpowiadając na Pani pismo... ... \end{letter} \end{document} \end{verbatim} \end{code} %%% Local Variables: %%% mode: latex %%% TeX-master: "lshort2e" %%% coding: latin-2 %%% case-fold-search: nil %%% LocalWords: ghostscript acrobat makeindex plmindex kiepskości %%% LocalWords: Johannesa Braamsa %%% ispell-local-dictionary: "polish" %%% End