Początki w LaTeX - pierwszy dokument, czyli LaTeX w Ubuntu (i nie tylko)

czwartek, 9 grudnia 2010
"Proszę Państwa, pewnie niektórzy wykładowcy będą namawiali Państwa do korzystania z LaTeX'a (LaTeX - wymowa "latech"), pozbawiając Was takiej atrakcji jak trudności z ustawianiem akapitów, formatowaniem tekstu, ustawianiem wcięć, problemów z numeracją wierszy, czy podziałem dokumentu na strony, ale nie dajcie się zwieść." Mniej więcej tymi słowami na wykładzie jeden z profesorów skomentował pracę z OpenOffice - w momencie, gdy w prezentacji utworzonej w tej aplikacji, niespodziewanie zaczęły rozjeżdżać się wiersze i nagle wszystko się rozsypało bez ładu i składu. Tymczasem okazuje się, że LaTeX to bardzo wygodne i PEWNE narzędzie do składania tekstu. Zaprezentuję swoją metodę tworzenia dokumentów LaTeX-owych przy pomocy programu Gedit.

Czym jest LaTeX?
Zanim przystąpimy do stworzenia pierwszego dokumentu, przedstawię trochę teorii zacytowanej z Wikipedii:
"Tworzenie tekstu w LaTeX-u opiera się na zasadzie WYSIWYM (What You See Is What You Mean - To co widzisz jest tym, o czym myślisz). Od zasady WYSIWYG (What You See Is What You Get - To co widzisz jest tym, co otrzymasz) odróżnia go to, że autor tekstu określa jedynie logiczną strukturę dokumentu (tzn. zaznacza, gdzie zaczyna się rozdział, co jest przypisem itp.), natomiast samym graficznym "ułożeniem" tekstu na stronie zajmuje się TeX, zwalniając tym samym użytkownika od tej funkcji. (...) LaTeX ułatwia skład tekstu, pozwalając autorowi skupić się na treści i strukturze tekstu."  

W telegraficznym skrócie, tworząc dokument w LaTeX-u, skupiamy się nie na wyglądzie, lecz na jego treści.

Instalacja
Na początku zalecam zainstalowanie pakietu LaTeX wraz z kompilatorem. Pod podanym linkiem dowiemy się jak kompilować pliki *.tex.

Początek ("konfiguracja" dokumentu)
Zaczynamy! Tworzymy nowy plik z rozszerzeniem *.tex. W nim będzie kod źródłowy naszej pracy. Pierwsze linie, to pewne ustalenia dotyczące całego dokumentu, takie jak marginesy, czy paczki(biblioteki), które zostaną użyte. W linii numer 1, zapisujemy wielkość czcionki, a także wielkośc papieru i rodzaj dokumentu. W naszym przypadku wybierzemy czcionkę 11pt, zwykły papier o rozmiarach a4, a nasz tekst będzie zwykłym artykułem. Kolejne linie to znaczniki otwarcia i zamknięcia dokumentu. Te 3 linie to najmniejsza treść kodu źródłowego, dla którego dokument przejdzie kompilację. Jednak w tym przypadku otrzymamy komunikat zwrotny "No pages of output.", co oznacza, że dokument jest pusty i brak w nim jakiejkolwiek treści.
\documentclass[11pt,a4paper]{article}
\begin{document}
\end{document}
Teraz dodamy tytuł. Jest to bardzo proste, bo wystarczy przed znacznik \begin{document} zapisać następującą instrukcję o przykładowej zawartości:
\title{Nasz pierwszy dokument\\ to jest podtytuł}
Po skompilowaniu nadal nie otrzymamy żadnej strony wynikowej. Dlaczego, skoro dodaliśmy tytuł? Aby dodać nagłówek dokumentu, tym samym też jego tytuł, musimy po znaczniku \begin{document} wstawić polecenie \maketitle.
Na tym etapie nasz kod źródłowy wygląda następująco:
\documentclass[11pt,a4paper]{article}
\title{Nasz pierwszy dokument\\ to jest podtytuł}
\begin{document}
\maketitle
\end{document}
A dokument wynikowy wygląda tak:
Screen 1: Początek dokumentu.
Należy zwrócić uwagę na kilka rzeczy:
- LaTeX numeruje strony domyślnie, bez naszej ingerencji - fajne, prawda? :)
- pod tytułem automatycznie została dodana data - często przydatne, ale w dalszej części artykułu pokażę jak w prosty sposób się tego pozbyć
- w tytule, w słowie "podtytuł" brakuje litery "ł"
Jak dodać polskie znaki w dokumencie LaTeX? Otóż jeśli zainstalowaliśmy wszystko, tak jak było mówione w tym artykule, w naszym systemie jest paczka z polskimi znakami. Wystarczy ją teraz dodać do kodu źródłowego. Dodatkowo musimy ustalić jakie kodowanie znaków przyjmujemy. By użyć polskich znaków w systemach Linux używamy kodowania "latin2" lub "utf8", dla Windows "cp1250". My użyjemy "utf8". Przed znacznikiem tytułu dodajemy następujące polecenia: 
\usepackage{polski}
\usepackage[utf8]{inputenc}
Jak pozbyć się daty w LaTeX-u? Bardzo prosto:
\date{} przed znacznikiem początku dokumentu, dodajemy instrukcję daty bez podania argumentu :)

Gdy zaczynałem przygodę z LaTeX-em, przeszkadzały mi zbyt duże marginesy, chciałem zmieścić na stronie więcej tekstu. Marginesy ustawiamy w banalny sposób:
\addtolength{\textwidth}{4cm}
\addtolength{\hoffset}{-2cm}
\addtolength{\textheight}{4cm}
\addtolength{\voffset}{-2cm}
Zapomniałbym o najważniejszym - o autorze. Ładną informację zapisujemy tak (przed rozpoczęciem dokumentu):
\author{sortris.blogspot.com}
Rozdziały, podrozdziały, wyliczenia, kod źródłowy
Omówię teraz szybko podstawowe elementy składania właściwego dokumentu. Otóż cały tekst podzielony jest na:
- rozdziały \section{Tytuł rozdziału}
- podrozdziały \subsection{Tytuł podrozdziału} 
- podpodrozdziały \subsubsection{Tytuł podpodrozdziału}
niestety nie ma podpodpodrozdziałów ;-)

Wybrany fragment tekstu pogrubiamy poleceniem \textbf{Pogrubiony tekst}. Możemy także zmienić czcionkę na pismo techniczne instrukcją \texttt{treść pisma technicznego}, pochylamy natomiast za pomocą \textsl{tekst do pochylenia}.
Wyliczenie rozpoczęte kropkami wstawiamy następująco:
\begin{itemize}
\item pierwszy element
\item drugi element
\item trzeci element...
\end{itemize}
Możemy również dodać ponumerowane elementy zmieniając jedynie argument w poleceniu \begin{itemize} na \begin{enumerate}, a kolejne elementy dodajemy tak samo, czyli \item "tekst". Należy pamiętać o zamknięciu części wyliczającej poprzez \end{itemize} lub odpowiednio \end{enumerate}. Co ciekawe, zagnieżdząjąc wyliczenie elementów w \begin{enumerate}, w zagnieżdżonej tej sekcji każde wyliczenie rozpoczyna się małą literą alfabetu, czyli (a) "treść", (b) "treść".
Znaki nowego wiersza (Enter) dodajemy poprzez \\, a nową stronę \newpage.

Przydatną opcją jest wstawianie kodu źródłowego z zachowanym formatowaniem. Możemy to zrobić wstawiając nasz kod w instrukcje \begin{verbatim} oraz \end{verbatim}. Niestety LaTeX w tym wypadku jako białe znaki przyjmuje tylko spacje, a tabulatory ignoruje, dlatego przy dłuższym kodzie zamiana wszystkich tabulatorów na spacje jest bardzo uciążliwa. Dodatkowo automatycznie czcionka zostaje zmieniona na techniczną :)

Co dalej?
To bardzo niewielka część tego, co umożliwia LaTeX. Aż ciężko to wszystko opisać, bowiem umożliwione jest jeszcze dodawanie grafiki do dokumentu(package graphics), dodawanie tabel, bardzo proste i przyjemne umieszczanie wzorów matematycznych (package math), czy odnośników bibliograficznych. Przeczytałem kiedyś słowa twórcy TeX-a (czyli też LaTeX-a)- Donalda E. Knutha, że testował ten system będąc w najgorszym, najbardziej wrednym i nieprzyjemnym humorze w jakim mógł być, dając do sparsowania najgorszy kod źródłowy jaki mógł stworzyć w najgorszy z możliwych sposobów. Z tego co kojarzę jest nawet jakaś nagroda pieniężna (1000$ ?) za znalezienie błędu w LaTeX-u ;)

Polecam LaTeX-a każdemu, kto chce na początku spędzić kilka godzin na nauce poleceń i konfiguracji kompilatora, by później w szybki i BEZSTRESOWY sposób tworzyć przejrzyste, czytelne i logicznie rozłożone dokumenty. Mimo dziwnie wyglądającego sposobu zapisu spowodowany przez kod źródłowy i kompilacje, używam LaTeX-a bardzo często, gdy tylko potrzebuję dodać wyliczenia, rozdziały, czy po prostu stworzyć łatwo i szybko dobrze wyglądający dokument. Na pewno przyda się to osobom, które piszą lub będą pisać pracę dyplomową.
To wszystko na dziś, pozdrawiam.

PS. Ile czasu zajęłoby Wam stworzenie takiej strony w Wordzie lub OpenOffice? Mi zajęło to niecałe 5minut :)
Screen 2: Spis treści.

Kod powyższego dokumentu:
\documentclass[11pt,a4paper]{article}
\addtolength{\hoffset}{-2cm}
\addtolength{\textheight}{4cm}
\addtolength{\textwidth}{4cm}
\addtolength{\voffset}{-2cm}
\usepackage{polski}
\usepackage[utf8]{inputenc}
\title{Nasz pierwszy dokument\\ to jest podtytuł}
\author{sortris.blogspot.com}
\date{}

\begin{document}
\maketitle
\section{Prolog}
\subsection{Podrozdział, który zdradzi całą treść}
\subsubsection{Podpodrozdział}
\begin{itemize}
\item element pierwszy
 \begin{enumerate}
 \item element drugi
  \begin{enumerate}
  \item kolejny element
  \item i następny
  \item i kolejny
   \begin{itemize}
   \item jeszcze dalej wgłąb
   \item jeszcze jeden element
    \begin{enumerate}
    \item hmmm, a może tu?
    \item czy tu?
    \item kolejny
    \end{enumerate}
   \item ciut wyżej
   \end{itemize}
  \item a teraz wracamy wyżej
  \end{enumerate}
 \item i jeszcze wyżej
  \begin{itemize}
  \item a może i nie?
  \end{itemize}
 \item jednak wracamy
 \end{enumerate}
\item już jesteśmy tu
\end{itemize}
\subsubsection{następny podpodrozdział}
\end{document}

3 komentarze:

Amaterasu pisze...

Jestem naprawdę wdzięczny czegoś takiego właśnie szukałem. Nie wiedziałem od czego zacząć jeżeli chodzi o pakiety do texlive. Wielkie dzięki.

Szwagier pisze...

Świetne

Anonimowy pisze...

Polecam wszystkim, nauka korzystania z Latexa jest niczym w porównaniu z korzyściami jakie to ze sobą niesie. Dokument wygląda profesjonalnie i o wiele łatwiej się go czyta niż nawet najstaranniej przygotowany dokument w standardowych edytorach. Na prawdę warto.

Prześlij komentarz