Nie za krótkie wprowadzenie do LaTeX-a

[Donald E. Knuth]

Computers are good at following instructions, but not at reading your mind.

— Donald E. Knuth

System TeX powstał w 1980 roku. Jego autorem jest prof. D. Knuth. Od tego czasu system jest stale rozwijany i udoskonalany.

Co to jest TeX? Krótko: TeX jest systemem do składu dokumentów. Długo: Najkrótsze wprowadzenie do systemu TeX.

Wzory matematyczne można też wyświetlać w przeglądarce. Wpisujemy je w LaTeX-u, a renderowanie zlecamy bibliotece MathJax, czyli „an open-source JavaScript display engine for LaTeX and MathML that works in all modern browsers”. Link do przykładowego dokumentu MathJax TeX Test Page.

Skompilować jakiś dokument z arXiv.

W systemie TeX znajdziemy około 300 różnych programów. Najważniejsze z nich to: latex, pdflatex, xelatex.

Najważniejsze biblioteki do języka TeX:

Biblioteka LaTeX (mówimy też format LaTeX) jest najczęściej używana. Autorem tej biblioteki jest Leslie Lamport.

Kilka zdań o rozszerzeniach w nazwach plików: .tex, .sty, .pdf, .eps, .ps, .png, .jpg.

Co będzie?

Dlaczego TeX a nie… ?

Praca z programem texworks

Cykl: edycja, kompilacja, podgląd.

Kod z błędami.

Korzystamy z szablonów.

~/.TeXworks/
...
|-- templates
|   |-- Basic XeLaTeX documents         # miejsce na nasze szablony
|   |   |-- article-hyperref.tex
|   |   `-- article-bibliography.tex
|   |-- Basic LaTeX documents           # standardowe szablony
|   |   |-- article.tex
|   |   `-- letter.tex
|   |-- Beamer presentations
|   |   |-- conference-ornate-20min.en.tex
|   |   |-- generic-ornate-15min-45min.en.tex
|   |   `-- speaker_introduction-ornate-2min.en.tex
|   `-- XeLaTeX documents
|       `-- article-fontspec.tex
...

Konfigurujemy texworks. Gotowe szablony do pobrania:

Na koniec dwie uwagi:

1. Na zajęciach będziemy korzystać z programu xetex. Program ten potrafi czytać pliki w kodowaniu UTF-8 (domyślne kodowanie na Sigmie).

2. Program xetex potrafi użyć do składu każdy font zainstalowany w systemie. Nie potrafi tego program tex.

Listę zainstalowanych fontów otrzymamy wykonując polecenie:

fc-list

Aby zainstalować lokalnie nowy font kopiujemy plik z fontem do katalogu ~/.fonts i wykonujemy polecenie:

fc-cache -v -f ~/.fonts
[Jonathan Kew]

Jonathan Kew autor XeTeX-a

Budowa typowego dokumentu latechowego

Szablon article-hyperref.tex pokazuje jak zmieniać wielkość fontu, jak ustawia się rozmiar strony, jak zmieniać font, jak wstawić spis treści (aby się złożył musimy dwukrotnie skompilować dokument).

% !TEX TS-program = xelatex
% !TEX encoding = UTF-8

% Szablon dokumentu:
% XeLaTeX + klasa article + pakiet hyperref

\documentclass[12pt]{article} % domyślne 10pt jest za małe

\usepackage{fontspec} % dokumentacja „fontspec.pdf”
\defaultfontfeatures{Mapping=tex-text} % konwencja: -- --- ,, ''
\usepackage{xunicode}
\usepackage{xltxtra}

\setmainfont{DejaVu Serif} % zmień font na „DejaVu Serif”
                           % font powinien byc zainstalowany w systemie?

\usepackage{geometry} % dokumentacja „geometry.pdf”
\geometry{a4paper}

\usepackage{hyperref} % wstaw odsyłacze

\usepackage{graphicx} % polecenie \includegraphics, dokumentacja „epslatex.pdf”

\usepackage[polish]{polyglossia} % najważniejszy pakiet

\title{Historia mojej rodziny}
\author{Hieronim Brzęczyszczykiewicz}
%\date{} % odkomentuj aby usunąć datę lub wstaw jakąś datę między {}
         % jeśli tego nie zrobisz będzie drukowana aktualna data

\begin{document}
\maketitle % składaj tytuł

\tableofcontents % składaj spis treści

\section{Pierwsza sekcja}

Akapity oddzielamy

pustym wierszem.

\subsection{Pierwsza podsekcja}

Więcej tekstu.

\end{document}

Wpisując swój tekst w powinniśmy zwrócić uwagę na to, że LaTeX rezerwuje te znaki do swoich celów:

%   $   #   &   \   {   }   ^   _   ~

Są to tzw. znaki specjalne. Jeśli chcemy wydrukować któryś z tych znaków, to wklepujemy odpowiednio:

\%  \$  \#  \&

Poniższe cztery znaki

"   |   <   >

też są znakami specjalnymi. Jeśli je wpiszesz, to zostaną wydrukowane zupełnie inne rzeczy.

Bibliografia – pakiet amsrefs

Na stronie The amsrefs package umieszczono link do dokumentacji oraz przykładów.

Prosty przykład może wyglądać tak, plik szablon.tex:

% !TEX TS-program = xelatex
% !TEX encoding = UTF-8 Unicode

\documentclass[12pt]{article}
\usepackage{amsrefs}

\usepackage{fontspec}
\defaultfontfeatures{Mapping=tex-text}
\usepackage{hyperref}
\usepackage{xunicode}
\usepackage{xltxtra}
\usepackage{url} % do przełamywania url
\usepackage[polish]{polyglossia}

\begin{document}

\section{Pierwszy rozdział}

SGML~\cite{Goldfarb2002} jest to \emph{metajęzyk}
służący do opisywania struktury i~zawartości dokumentów.

\section{Drugi rozdział}

Typowy proces produkcji dokumentów w~standardzie SGML
podzielony jest na kilka części. Najważniejsze elementy tego
procesu są opisane w~\cite{Eisenberg2002}.

\begin{bibdiv}
\begin{biblist}
  \bibselect{literatura}
\end{biblist}
\end{bibdiv}

\end{document}

Plik z bibliografią może wyglądać tak, literatura.ltb:

% !TEX TS-program = xelatex
% !TEX encoding = UTF-8 Unicode

\documentclass[12pt]{amsbook}
\usepackage{amsrefs}

\usepackage{fontspec}
\defaultfontfeatures{Mapping=tex-text}
\usepackage{xunicode}
\usepackage{xltxtra}
\usepackage[polish]{polyglossia}

\raggedbottom

\begin{document}

\begin{bibdiv}
\begin{biblist}

\bib{Goldfarb2002}{book}{
    author={Charles F. Goldfarb},
    author={Paul Prescod},
     title={Charles F. Goldfarb's XML handbook},
   edition={Fourth},
 publisher={Princeton-Hall},
   address={Englewood Cliffs, NJ 07632, USA},
      date={2002},
      ISBN={0-13-065198-2; 978-0-13-065198-3},
}
\bib{Eisenberg2002}{article}{
    author={Andrew Eisenberg},
    author={Jim Melton},
     title={SQL\slash XML is making good progress},
      date={2002},
      ISSN={0000-0000},
   journal={SIGMOD},
    volume={31},
    number={2},
     pages={101\ndash 108},
}

\end{biblist}
\end{bibdiv}
\end{document}

Dokument szablon.tex kompilujemy dwukrotnie:

xelatex szablon
xelatex szablon

Bibliografia klasycznie, czyli bibtex

Teraz przyjrzymy się bardziej skomplikowanemu dokumentowi. Pokazuje on jak przygotowywać bibliografię w systemie LaTeX.

% !TEX TS-program = xelatex
% !TEX encoding = UTF-8 Unicode

\documentclass[12pt]{article}
\usepackage{geometry}
\geometry{a4paper}

\usepackage{fontspec}
\usepackage{hyperref}
\usepackage{xunicode}
\usepackage{xltxtra}
\usepackage{url}  % do przełamywania url
\usepackage[polish]{polyglossia}

\bibliographystyle{unsrt}

\title{Bibliografia do przedmiotu\\,,Środowisko Programisty''}
\author{Włodzimierz Bzyl}
\date{20 października 2009}

\begin{document}
\maketitle
\tableofcontents

\section{Podstawy}\label{sec:basics}

W fontach maszynowych, ang. \emph{monospaced fonts},
wszystkie znaki mają taką samą  szerokość. Za pomocą takich
fontów składane są listingi lub kod programów.

\section{Poziom średnio zaawansowany}\label{sec:intermediate}

W książce ,,\LaTeX\ Web Companion'' opisano
format \LaTeX\ i podstawowe pakiety do niego.

\section{Rzeczy zaawansowane}\label{sec:advanced}

DocBookXsl jest ciekawym projektem. Więcej na ten temat
można poczytać w~\cite{wiki.docbookxsl}.

Do konwersji dokumentu z formatu latex na html najlepszym narzędziem
jest~\cite[uwaga, system szuka nowego opiekuna]{Gurari.TeX4ht}.

O fontach maszynowych już było na stronie~\pageref{sec:basics}.

\bibliography{sp}

\end{document}

Powyższy kod, po zapisaniu w pliku kompilujemy w taki sposób:

xelatex pracka
bibtex pracka
xelatex pracka
xelatex pracka

Potrzebne są 4 przebiegi. Dlaczego?

Plik z bibliografią użyty powyżej, sp.bib:

@Book{Goossens.lwc,
  author       = "Michel Goossens and Sebastian Rahtz",
  title        = "{\LaTeX} Web Companion",
  publisher    = "Addison-Wesley",
  year         = "2001"
}

@Booklet{Gurari.TeX4ht,
  title        = {TeX4ht: {\LaTeX} and {\TeX} for Hypertext},
  author       = "Eitan Gurari",
  howpublished = "\url{http://www.cse.ohio-state.edu/~gurari/TeX4ht/}",
  year         = 2004,
}

@Booklet{Veillard.libxslt,
  author       = {Daniel Veillard},
  title        = {{LIBXSLT} --- The {XSLT C} library for {G}nome},
  howpublished = {\url{http://xmlsoft.org/XSLT}},
  year         = 2003,
}

@Booklet{wiki.docbookxsl,
  author       = "Wiki",
  title        = "{DocBook} {XSL} {Stylesheets}",
  howpublished = {\url{http://wiki.docbook.org/topic/DocBookXslStylesheets}},
  year         = 2004,
}

@Booklet{jsMath.examples,
  title        = {Examples of jsMath},
  author       = "Davide Cervone",
  howpublished = "\url{http://www.math.union.edu/~dpvc/jsMath/examples/welcome.html}",
  year         = 2009,
}

Uwagi:

Korzystamy z pakietów: polecenie \usepackage

Na koniec ,,groch z kapustą'', czyli wstawianie obrazków, tabelek, korzystanie z koloru, notacja do wpisywania matematyki...

% !TEX TS-program = xelatex
% !TEX encoding = UTF-8 Unicode

\documentclass[12pt]{article}

\usepackage{geometry}
\geometry{a4paper}

\usepackage{fontspec}
\defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}
\setmainfont[Mapping=tex-text]{Minion Pro:+onum}
\setsansfont[Mapping=tex-text]{Myriad Pro}
\setmonofont{Monaco}

\usepackage{xunicode}
\usepackage{xltxtra}
\usepackage{hyperref}
\usepackage{color}
\usepackage{url}
\usepackage{graphicx} % polecenie \includegraphics

\usepackage[polish]{polyglossia}

\title{\color{red}{Grafika, tabelki...}}
\author{Włodzimierz Bzyl}
\date{\color{blue}{20 października 2009}}

\begin{document}

  \maketitle
  \tableofcontents
  \listoffigures
  \listoftables

\section{Podstawy}\label{sec:podstawy}
Książka ,,Sekunda komputera'' przedstawia to, co komputer
robi w~ciągu jednej sekundy -- taki jest \emph{bynajmniej} główny
kierunek rozważań.

\section{Otoczenie verbatim}\label{sec:verbatim}

W otoczeniu \emph{verbatim} umieszczamy kod programu,
wynik wykonania polecenia powloki itp.
\begin{verbatim}
$ fc-list | egrep "TeX Gyre Schola"
TeX Gyre Schola:style=Bold
TeX Gyre Schola:style=Italic
TeX Gyre Schola:style=Bold Italic
TeX Gyre Schola:style=Regular
\end{verbatim}

\section{Matematyka}\label{sec:wzory}
Ten wzór wszyscy znają: \(2+2=4\), a~ten jest znany tylko
niektórym: \[ e^{2\pi i}=-1 \]
Oba wzory wpisujemy w prosty sposób z~klawiatury:
\verb|\(2+2=4\)| oraz
\begin{verbatim}
\[ e^{2\pi i}=-1 \]
\end{verbatim}

\section{Więcej matematyki}
Jeszcze kilka wzorów:
\[
  \int_0^1 f(x)\,dx = 1
\]
\[
  {n\choose k} \equiv {\lfloor n/p\rfloor \choose \lfloor k/p\rfloor}
     {{n\bmod p} \choose {k\bmod p}} \pmod p
\]
\[
  A = \pmatrix{x-\lambda & 1 & 0\cr
                 0 & x-\lambda & 1\cr
                 0 & 0 & x-\lambda\cr}
   \qquad\qquad
  \left\lgroup\matrix{a&b&c\cr d&e&f}\right\rgroup
  \left\lgroup\matrix{u&x\cr v&y\cr w&z}\right\rgroup
\]

\section{Ilustracje}\label{sec:ilustracje}

Fajna ilustracja:
\begin{figure}
  \caption{Całkowita wariacja}
  \label{fig:wariacje}
  \begin{center}
  \includegraphics[width=.75\textwidth]{diagram}
  \end{center}
\end{figure}

\section{Tabelki}\label{sec:tabelki}

Moje wydatki umiesciłem w~tabelce:
\begin{table}
\caption{Wydatki}
\label{tab:wydatki}
\begin{center}
\begin{tabular}{clr}
  &Pozycja&Kwota\\
\hline
1.&Książki&2,000\\
  &Oprogramowanie&500\\
2.&Prąd&1,000\\
\cline{3-3}
  &Razem&3,500
\end{tabular}
\end{center}
\end{table}

\end{document}

Uwaga: brakujący obrazek diagram przygotować w trakcie wykładu:

Inkscape

Z manuala: „Inkscape − an SVG (Scalable Vector Graphics) editing program.” Od siebie dodam, że program jest łatwy w obsłudze, a obejrzenie kilku tutoriali ze strony Inkscape tutorials for the novice artist powinno przekonać do programu niedowiarków.

Linki