Wprowadzenie do L A TEXa 10 marca 2009 Streszczenie Dokument opisuje podstawowe polecenia systemu L A TEX. Należy go czytac porównując dokument źródłowy (są w nim obszerne komentarze) z plikiem wynikowym. 1 Filozofia L A TEXa W edytorach typu WYSIWIG (What You See Is What You Get), np. w Wordzie lub Writerze, koncentrujemy się przede wszystkim na wyglądzie dokumentu. Już podczas składania tekstu myślimy o kroju czcionek, marginesach, podziale na strony itd. Konsekwencją tego są trudności w składaniu złożonych dokumentów, zwłaszcza wtedy, gdy ulegają one zmianie. Często po dołączeniu jednej tabeli lub rysunku pośrodku dokumentu narzekamy na to, że wygląd całości jest inny od oczekiwanego. Oczywiście dobrze złożony dokument w Wordzie nie powinien rozjeżdżać się po dołączeniu kilku rysunków, jednak większość użytkowników składa dokumenty szybko (z myślą o ich wyglądzie), a nie dobrze (z myślą o strukturze). Składając tekst w L A TEXu nie można przestać myśleć o jego strukturze, natomiast kwestię wyglądu zostawiamy kompilatorowi, choć oczywiście można mieć wpływ na wszystkie szczegóły wizualne. Nie one są jednak najważniejsze. L A TEXnie jest właściwie odrębnym środowiskiem, lecz nakładką (systemem makr) na TEXa system składu zaprojektowany przez Donalda Knutha. 2 Znaki specjalne, polecenia i środowiska 2.1 Znaki specjalne Znaki: $, &, %, #,, {, }, \ mają specjalne znaczenie dla kompilatora i nie można ich wstawić dosłownie. Aby wstawić któryś z takich znaków, należy w pliku źródłowym poprzedzić go backslashem: \$, \&, \%, \#, \_, \{, \}. Wyjątkiem jest backslash, którego nie uzyskujemy przez poprzedzenie backslashem, lecz za pomoca polecenia $\backslash$. Znak % oznacza początek komentarza. Po jego napotkaniu L A TEXignoruje resztę bieżącego wiersza. 2.2 Polecenia Polecenia L A TEXa zaczynają się od backslasha (\). Na przykład polecenie \LaTeX (uwaga na wielość liter!) powoduje wstawienie słowa LaTeX w charakterystycznym kształcie (L A TEX). Niektóre polecenia mogą zawierać argumenty. Podaje się je w nawiasach klamrowych. Na przykład polecenie \textit{tekst} powoduje wyróżnienie podanego w nawiasie tekstu kursywą. W przypadku większej liczby argumentów podaje się je w kolejnych nawiasach klamrowych 1
(np. polecenie \frac{a}{b} powoduje wstawienie ułamka a ; argumenty są tu dwa, a ich kolejność oczywiście istotna). b Poza argumentami polecenia mogą zawierać opcje (argumenty opcjonalne). Podaje się je w nawiasach kwadratowych, przed argumentami. W przypadku większej liczby opcji oddziela sie je przecinkami, a ich kolejność jeststruktura dokumentu.struktura dokumentu. nieistotna. Na przykład polecenie \sqrt{2} spowoduje wstawienie symbolu 2, zaś \sqrt[3]{2} wstawi symbol 3 2. Argument określający stopień pierwiastka jest więc opcjonalny. 2.3 Odstępy, łamanie linii i stron Nie należy bez wyraźnych powodów wymuszać łamania linii lub stron. Najlepiej pozostawić wybór kompilatorowi. Jeśli jednak trzeba zrobić to ręcznie, można wykorzystać polecenia \breakline (lub równoważnego skrótu, po prostu \\), które powoduje twarde łamanie linii albo polecenia \break wstawiającego miękki koniec linii. Polecenie \newpage wstawia nową stronę. Nowy akapit wstawiamy pozostawiając wolną linijkę w kodzie źródłowym. Kilka wolnych linijek kompilator traktuje jak jedną wolną linijkę. Podobnie kilka spacji L A TEXtraktuje jak jedną spację.g 2.4 Środowiska Aby objąć jakimś działaniem dłuższą partię tekstu, używamy środowisk. Ich użycie ma następującą składnię: \begin{nazwa środowiska}......... \end{nazwa środowiska} Przykłady środowisk: \center powoduje wycentrowanie fragmentu tekstu pomiędzy \begin{center} a \end{center}. \flushleft, \flushright wyrównanie fragmentów tekstu do lewej, do prawej. \enumerate, \itemize lista numerowana, lista wypunktowana. \tabular wstawienie tabeli. Środowiska L A TEXu można w zagnieżdżać, natomiast nie można ich przeplatać. 3 Struktura dokumentu 3.1 Klasy dokumentów W zależności od tego, jaki rodzaj dokumentu chcemy uzyskać, używamy jednej z predefiniowanych klas. Klasę dokumentu określamy instrukcją \documentclass[opcje]{klasa}. Najczęściej wykorzystywane są następujące klasy: article klasa wykorzystywana do składu artykułów i innych krótkich opracowań, 2
report klasa wykorzytywana do składu dłuższych opracowań, np. prac magisterskich, book klasa wykorzystywana do składu książek. Sposoby działania klas zmienia się za pomocą opcji. Najbardziej podstawowe z nich to: 10pt, 11pt, 12pt określają stopień pisma tekstu podstawowego w dokumencie. Domyślnie przyjmowana jest wartość 10 punktów. a4paper, a5paper, letterpaper ustala wymiary papieru. onecolumn, twocolumn skład jedno- lub dwukolunmowy. oneside, twoside wydruj jedno- lub dwustronny Przykład użycia: \documentclass[12pt,a4paper]{article} 3.2 Preambuła i blok wykonawczy dokumentu Plik źródłowy L A TEXa, podobnie jak kody źródłowe w wielu językach programowania, składa się z preambuły i bloku wykonawczego Pierwszym poleceniem w preambule pliku źródłowego jest \documentclass. Następnie, za pomocą polecenia \usepackage dołącza się pakiety niezbędne w przygotowywanym dokumencie. Wszystkich pakietów są setki i rozszerzają one znacznie możliwości L A TEXa. Pisząc po polski na pewno będziemy korzystać z pakietów polski oraz inputenc. Następnie w preambule można jeszcze podać inne informacje niezbędne w przygotowywanym dokumencie. Blok wykonawczy zaczyna się i kończy instrukcjami \begin{document} oraz \end{document}. Tak więc przygotowując dokument po polsku mamy plik źródłowy co najmniej takiej postaci: \documentclass[12pt]{article} \usepackage{polski} \usepackage[cp1250]{inputenc} %zamiast cp1250 może być utf8 lub iso-8859-2 \begin{document}... treść dokumentu... \end{document} 3.3 Podział dokumentu na części. Spis treści Do dzielenia dokumentu na części służą instrukcje: \section{...}, \subsection{...}, \subsubsection{...}, \paragraph{...} i \subparagraph{...}. Należy ich używać w odpowiedniej kolejności, tzn. sekcje ( section) mogą składać się z podsekcji (\subsection) itd. W klasach report i book mogą występować rozdziały, które znajdują się w hierachii nagłówków wyżej niż sekcje. Poprawne zdefiniowanie struktury dokumentu umożliwia automatyczne wstawienie spisu treści. Uzyskuje się go w miejscu wstawienia polecenia \tableofcontents. Aby spis zawierał poprawne numery stron, należy dokument skompiliwać dwa (niekiedy aż trzy) razy. Każda z wymienionych instrukcji podziału na części ma swoją wersję z gwiazdką. W wyniku działania tej wersji instrukcji nagłówek zostanie umieszczony w tekście, lecz nie będzie objęty numeracją ani ujęty w spisie treści. Na przykład nagłówek \section{wstęp} zostanie ponumerowany natomiast nagłówek \section*{wstęp} nie. 3
4 Tabele Tabele uzyskuje się za pomocą środowiska tabular. Argumentem tego polecenia jest specyfikacja kolumn tabeli. Dla każdej kolumny należy w argumencie wstawić jedną z liter l, r lub c określając wyrównanie tekstu w kolumnie (lewa, prawa, centrowanie). Można też użyć konstrukcji p{szer}, co pozwoli uzyskać kolumnę o stałej szerokości. Znak powoduje rozdzielenie kolumn pionową linią. Wewnątrz środowiska tabular oddzielamy wiersze poleceniem \\, natomiast komórki w jednym wierszu znakiem &. Polecenie \hline powoduje wstawienie poziomej linii pomiędzy wierszami. Na przykład tabelę uzyskujemy za pomocą kodu źródłowego: 1 2 1 2 2 4 + 1 2 1 4 4 \begin{tabular}{cccc} % 4 wycentrowane kolumny bez pionowych linii & & 1 & 2 \\ & $\times$ & 1 & 2 \\ \hline & & 2 & 4 \\ + & 1 & 2 & \\ \hline & 1 & 4 & 4 \end{tabular} 5 Formuły matematyczne 5.1 Tryb akapitowy i eksponowany. Numerowanie formuł Wyrażenia matematyczne należy składać w trybie matematycznym. Wyróżniamy dwa rodzaje takiego trybu: wewnątrzakapitowy i eksponowany. W trybie wewnątrzakapitowym wyrażenia są złożone w bieżącym akapicie. Tryb ten uruchamia się poleceniem \begin{math} i kończy poleceniem \end{math}. Zamiast tych poleceń można używać znaków dolara $. Na przykład polecenie lub \begin{math} e^x = \sum_{n=0}^{\infty} \frac{x^n}{n!} \end{math} $e^x = \sum_{n=0}^{\infty} \frac{x^n}{n!}$ zostanie skompilowane jako e x = x n n=0. Formuła jest w tym przypadku umieszczona wewnątrz bieżącej linii. n! Większe formuły wstawiamy w trybie eksponowanym, tzn. w osobnym wierszu, między akapitami. Tryb taki uruchamia się poleceniem \begin{displaymath} i kończy poleceniem \end{displaymath}. Można też użyć skrótu $$. Podobnie jak poprzednio, polecenie \begin{displaymath} e^x = \sum_{n=0}^{\infty} \frac{x^n}{n!} \end{displaymath} lub 4
zostanie skompilowane jako $$e^x = \sum_{n=0}^{\infty} \frac{x^n}{n!}$$ e x = n=0 Formuła jest w tym przypadku umieszczona wewnątrz bieżącej linii. Zwróćmy uwagę, że zmienił się nie tylko sposób osadzenia formuły, ale także wielkość i umiejscowienie granic sumowania oraz wielkość czcionki w liczniku i mianowniku ułamka. Formuły można numerować, aby później odwoływać się do nich. Naprościej robić to za pomocą środowiska equation. Na przykład polecenie \begin{equation}\label{wyroznikrownania} \Delta = b^2-4ac \end{equation} da efekt x n n!. = b 2 4ac, (1) co z kolei pozwoli odwołać się do wpisanej formuły poleceniem \ref{wyroznikrownania}. Dłuższe serie formuł z numeracją możemy składać za pomocą środowiska eqnarray. Środowiska te pozwalają ponadto wyrównywać formuły, np. do znaku =, za pomocą znaczników &. Na przykład wpisując \begin{eqnarray} \Delta &=& b^2-4ac\\ x_1 &=& \frac{-b-\sqrt{\delta}}{2a}\\ x_2 &=& \frac{-b-\sqrt{\delta}}{2a} \end{eqnarray} uzyskamy efekt: = b 2 4ac (2) x 1 = b (3) 2a x 2 = b (4) 2a Aby wyłączyć numerowanie którejkolwiek z formuł wewnątrz eqnarray, możmy użyć polecenia nonumber. Do składu bardziej skomplikowanych formuł warto używać pakietu amsmath i zawartych w nim środowisk align, multiline i in. 5.2 Wzory wielolinijkowe i macierze Wzory wielonijkowe możemy składać za pomocą środowiska array. Na przykład kod $$ x =\left\{ \begin{array}{rl} x & \hbox{dla } x\geq 0 \\ -x & \hbox{dla } x< 0 \\ \end{array} \right. $$ 5
zostanie skompilowany jako W tej formule: x = { x dla x 0 x dla x < 0 Polecenie array{specyfikacja kolumn} powoduje wstawienie tabeli; użyte w przykładzie parametry rl powodują wstawienie dwóch kolumn: jedna jest wyrównana do prawej, a druga do lewej. Kolumny rozdzielane są znacznikami &, zaś wiersze znacznikami \\. Polecenie \left\{ powoduje wstawienie nawiasu klamrowego o wysokości dostosowanej do zawartości wyrażenia objętego tym nawiasem (w naszym przypadku w nawiasie jest formuła dwulinijkowa). Ponieważ nawias nie ma być nigdzie zamknięty, używamy wirtualnego nawiasu zamykającego wstawianego poleceniem \right. (kropka zastępuje nawias). Ogólnie, polecenia typu \left(, \left[, \left\{ otwierają, zaś polecenia \right), \right], \right\] zamykają nawiasy o wysokości dostosowanej do wyrażenia znajdującego się w nawiasie. Polecenie \hbox powoduje wstawienie tekstu w trybie matematycznym. Szczegóły dotyczące poleceń używanych do składu formuł można znaleźć w rozdziale 3. Nie za krótkiego wprowadzenia do systemu L A TEX 2ε. 5.3 Definicje, twierdzenia, dowody... Aby uzyskać numerowane definicje, twierdzenia itd., w preambule dokumentu deklarujemy postać nagłówka twierdzenia oraz słowo oznaczające jego nagłówek. Na przykład zamieszczona w preambule definicja \newtheorem{tw}{twierdzenie} pozwala wykorzystać środowisko tw \begin{tw} Każdy prostokąt jest równoległobokiem \end{tw} \begin{tw}[o istnieniu nieprostokątów] Istnieją równoległoboki, które nie są prostokątami \end{tw} \begin{proof} Treść dowodu\ldots. \end{proof} co kompiluje się jako Twierdzenie 1. Każdy prostokąt jest równoległobokiem Twierdzenie 2 (O istnieniu nieprostokątów). Istnieją równoległoboki, które nie są prostokątami Dowód. Treść dowodu.... Więcej o poleceniu \newtheorem można przeczytać w opisie pakietu theorem na stronie http://www.ia.pw.edu.pl/~wujek/tex/latex2e/macro/theorem.html oraz w dokumentacji pakietu amsthm. 6
6 Indeksy i spisy 6.1 Spis treści Spis treści dołącza się za pomocą polecenia \tableofcontents. Prawidłwe wygenerowanie spisu wymaga co najmniej dwukrotnej kompilacji dokumentu. Zawartość spisu odpowiada podziałowi dokumentu na części. Głębokość spisu treści ustawia się za pomocą licznika tocdepth. Na przykład polecenie \setcounter{tocdepth}{1} spowoduje wstawienie spisu wyłącznie nadrzędnych jednostek podziału (tzn. section w klasie article, chapter w klasie book). Niekiedy chcemy uzyskać w spisie treści krótszą formę tytułu rozdziału czy paragrafu. Można to osiągnąć za pomocą opcji poleceń typu section, subsection itd. Na przykład komenda \section[domeyko i Doweyko]{Woyskiego powieść o pojedynku Domeyki z Doweyką} Spowoduje wstawienie rozdziału pod tytułem Woyskiego powieść o pojedynku Domeyki z Doweyką. W spisie treści będzie zaś widoczny tytuł skrócony Domeyko i Doweyko. 6.2 Spis tabel i ilustracji Polecenia \listoffigures oraz \listoftables generują odpowiednio spis ilustracji (wstawianych w środowisku figure) oraz spis tabel (wstawianych w środowisku table). Nazwy obietków pobierane są z poleceń caption. Polecenie to, podobnie jak section, ma opcjonalny argument opisujący postać tytułu w spisie ilustracji lub tabel. 6.3 Indeks rzeczowy Tworzenie indeksu rzeczowego wymaga użycia trzech komend, które tworzą zbiór haseł indeksowanych w dokumencie. Komendy te zawarte są w pakiecie makeidx, który trzeba włączyć za pomocą polecenia usepackage. Aby utworzyć indeks: 1. zaznaczamy w dokumencie słowa, które mają znaleźć się w indeksie. Na przykład komenda \index{czworokąt} doda do indeksu słowo czworokąt. Polecenia te należy wstawić w każdym miejscu, do którego ma się znaleźć odwołanie w indeksie. Można tworzyć hasła wielopoziomowe, oddzielając kolejne poziomy wykrzyknikami, na przykład \index{czworokąt} \index{czworokąt!równoległobok} \index{czworokąt!równoległobok!romb} spowoduje wstawienie haseł zagnieżdżonych. 2. W preambole dokumentu, po dołączeniu pakietu makeidx, uruchamiamy komendę makeindex. Zatem w preambule dokumentu z indeksem znajdują się dwie linijki, w takiej kolejności: \usepackage{makeidx} \makeindex 3. W miejscu, w którym chcemy uzyskać indeks rzeczowy, wstawiamy go za pomocą polecenia \printintex. Jeśli dodatkowo użyjemy pakietu hyperref, uzyskamy indeks z hiperłączami. Efekt jest następujący: 7
Skorowidz czworokąt, 7 równoległobok, 7 romb, 7 8