TeXобзор

Что такое TeX? TeX — это система компьютерной вёрстки, разработанная американским профессором информатики Дональдом Кнутом в целях создания компьютерной типографии. Что такое LaTeX? LaTeX — набор макрорасширений (или макропакет) системы компьютерной вёрстки ΤeΧ, который облегчает набор сложных документов.

Кому и зачем это нужно? Студентам, аспирантам, преподавателям, учёным мужам и всем, кому по долгу службы или по велению души нужно сделать качественную вёрстку текста. Не говоря уже об особях, чьё ремесло — издательское дело. Если вам хоть немного интересна эта тема, но вы не знаете, с чего начать: добро пожаловать на сегодняшний TeXобзор.

Пост разделён на несколько частей: установка texlive и подходящего текстового редактора, пример простой страницы и её вёрстки в pdf-формат, особенности использования TeX.

LaTeX. Первые шаги

Для начала нам понадобится установить пакет texlive — полный дистрибутив TeX с несколькими программами для создания профессиональных документов. В debian-based дистрибутивах он устанавливается легко и в полной комплектации, пользователи gentoo linux могут обратить свой взор на статью в вики и подумать с какими флагами им хотелось бы провести установку, а какие опустить. Под Windows... не знаю, но, думаю, ещё проще: выкачать программу инсталляции и следовать шагам установщика.

После того, как все компоненты будут установлены, следует заняться поиском подходящего редактора для работы с TeX. Как минимум он должен поддерживать синтаксис TeX, как максимум: показывать предпросмотр создаваемого документа. Наиболее используемые программы с кратким описанием каждой указаны там же, по ссылке выше. Выбирайте любой инструмент или попробуйте их все. Далее будут рассмотрены лишь самые простые: vim и sublime text 2.

Для vim есть пара неплохих плагинов: Vim-Latex и Automatic LATEX Plugin for Vim. Установка последнего сводится к скачиванию .tar.gz файла и его распаковке в директорию ~/.vim/. После чего нужно включить в .vimrc следующие строки:

filetype on
filetype plugin on
filetype indent on
syntax on

Готово. Выглядит это так:

vim-tex

Использование редактора Sublime Text 2 ещё проще, поскольку он уже знает, что такое TeX:

subl-tex

Редактор выбран, texlive установлен. Теперь попробуем сверстать первую простейшую страницу.

% - это комментарий
% задать формат страницы A4, шрифт 12pt
% article - класс, служащий для написания статей
% а report, к примеру, для книг
\documentclass[a4paper,12pt]{article}
% мы хотим на русском!
\usepackage[russian]{babel}
% и кодировочку в utf-8 (для windows в cp1251)
\usepackage[utf8]{inputenc}
% начало документа
\begin{document}
Привет, мир!
% конец документа
\end{document}

Чтобы собрать файл с расширением .tex в .pdf-формат вводим команду:

$ texi2pdf hello.tex

Или лучше так:

$ latex hello.tex
$ latex hello.latex

А сборка в .pdf будет выглядеть следующим образом:

$ pdflatex hello.latex

LaTeX. Особенности использования

Как уже наверняка заметил читатель, изготовление документов в LaTeX совершенно не похоже на привычные и повсеместно используемые MS Office, LibreOffice и иже с ними. Но пока совершенно неясно: чем он лучше? А начать разговор об этом следует издалека.

В 1974 году появилась технология WYSIWYG, работающая по принципу «что видишь, то и получишь». До появления оной при создании документов со сложным форматированием использовались программы, применяющие язык разметки подобно тому, как читатель изволил видеть выше. Первой программой, использующей WYSIWYG считается текстовый редактор Bravo, разработанный в Xerox PARC для компьютеров Alto. Современные WYSIWYG-редакторы являются объектно-ориентированными визуальными средами программирования, в которых имеются шаблоны (классы) объектов, наборы готовых форм-объектов для блочного визуального программирования, включая скрипт-объекты на языках JavaScript, VBScript и прочих. К ним и относятся все нынешние офисные пакеты, так широко используемые пользователями.

Почему они уступают LaTeX? Как справедливо отмечает товарищ Львовский в книге «Набор и вёрстка в системе LaTeX»:

  • никакая другая из существующих в настоящее время издательсикх систем не может сравниться с TeX’ом в полиграфическом качестве текстов с математическими формулами
  • система TeX реализована на всех современных компьютерных платформах
  • TeX стал международным языком для обмена математическими и физическими статьями
  • основные реализации TeX’а распространяются бесплатно

Кроме того, при написании, например, дипломной работы (чем мы, возможно, займёмся в последующем) проще использовать TeX, чем корпеть над форматированием документа в MS Word. Было бы ещё лучше, если бы учёные мужи из некоторых учебных заведений не поддерживали монополию закрытых коммерческих приложений, упирая на подготовку научных работ исключительно в Word'e.

Но давайте таки приступим к обзору возможностей.

Общие положения

Прежде всего стоит уберечь юного пользователя LaTeX'a от верных ошибок в отношении дефисов и тире, дабы он получил именно то, что ожидает на выходе. Разграничим понятия:

  • дефис упортебляется в словах «какой-то», «где-то», пишется одной короткой чертой '-'
  • короткое тире служит для обозначения диапазона значений, например, страницы 12-16, пишется как два дефиса '--' * длинное тире для пунктуации в предложениях (Gentoo — это операционная система), пишется как три дефиса '---'
  • математический знак минус также имеет своё начертание, а именно: $-$

Как будут выглядеть эти отличия на бумаге:

symbols

Также нас может взволновать вопрос с кавычками. Как их ставить? Также как и раньше, только вместо двойных кавычек нужно ставить две одинарные. Или использовать специальные теги для левой и правой кавычек Нам также могут быть важны русские кавычки-«ёлочки». Для получения таковых следует использовать немного иные символы:

Для определения \flqq{группы риска}\frqq использовались следующие методики

Например:

Кавычки и кавычки-ёлочки:\\
Пишем \dq{текст в кавычках}\dq. Или используем \flqq{кавычки-ёлочки}\frqq. Или вообще \lq\lq{вот так}\rq\rq.\\
Ещё можно написать команду \LaTeX'a: например, \texttt{verbatim}

Получим:

rq

Следующим любопытным вопросом является интернационализация. Как вы напишете, например, немецкую «a умляут»? ;) В LaTeX это просто. Нужно использовать управляющий символ. Наберите несколько слов:

mathemati\`que, centimetr\`e, szeg\"o

На выходе получите следующее:

symbols ]

Кстати: чтобы поставить ударение в файле с кодировкой UTF-8, следует заключить нужную букву в фигурные скобки:

Б\'{о}льшая часть кода написана на C

Изменение размера шрифта может задаваться для всего документа, а может быть изменено для отдельных слов или строк по ходу набора. Поскольку TeX имеет свои обозначения модификаторов размера шрифта, полагаю логичным указать их здесь.

Базовый шрифт документа10pt11pt12pt
\tiny566
\scriptsize788
\footnotesize8910
\small91010.95
\normalsize1010.9512
\large121214.4
\Large14.414.417.28
\LARGE17.2817.2820.74
\huge20.7420.7424.88
\Huge24.8824.8824.88

Выравнивание

Для выравнивания документа служат теги:

\flushleft — выравнивание по левому краю
\flushrigth — выравнивание по правому краю
\center — выравнивание по центру

Во всех этих случаях LaTeX не старается сделать строки одинаковой длины. А вот при написании курсовой или дипломной работы такое требование, как правило, присутствует. Не стоит волноваться по этому поводу: если не указано иное, TeX будет выравнивать текст по ширине.

Списки

Списки в LaTeX можно сделать нумерованными, ненумерованными, простыми и с описанием.

\begin{enumerate} % начало нумерованного списка
\item Во-первых % его пункт
\item[-] Во-вторых % пункт с "минусом" вместо "точки"
\item В третьих

\begin{itemize} % начало простого ненумерованного списка
\item учиться % его пункт
\item учиться
\item и ещё раз учиться
\end{itemize} % конец ненумерованного списка

\begin{descrption} % начало описания
\item[Гай Юлий Цезарь] был государственный и политический деятель.
  Своим завоеванием Галлии Цезарь расширил римскую державу до берегов северной Атлантики
\end{descrption} % конец описания
\end{enumerate} % конец нумерованного списка

Пишем стихи и цитаты

% \quotation для длинных цитат в несколько абзацев
% \quote для коротких цитат
% \verse для стихов
% для перехода на новую строку используется \newline
% или просто \
% для разделения строк \\ или Return
\begin{quote} % начали цитату
\flushleft Не держись указа аки стенки. К каждому указу надобно и голову приложить.\flushleft
\flushright
Пётр I
\end{quote} % закончили цитату
\begin{verse} % начали стих
Друг мой, друг мой, я очень и очень болен.

Сам не знаю, откуда взялась эта боль.

Толи ветер свистит над пустым и безлюдным полем,

Толь как рощу в сентябрь осыпает мозги алкоголь.


Голова моя машет ушами как крыльями птица.

Ей на шее ноги маячить больше невмочь.

Чёрный человек, чёрный, чёрный.

Чёрный человек на кровать ко мне садится.

Чёрный человек спать не даёт мне всю ночь.

Чёрный человек. Чёрный.
\end{verse} % закончили стих
quotes

Конечно, любопытнее было бы сверстать стихи Маяковского ;)

Таблицы

Расположение плавающих объектов может быть различным. Фигура или таблица могут вставляться сразу за основным текстом или на специально выделенной странице, на той же странице вверху или внизу. Чтобы понять как регулировать это расположение, смотрите комментарии в приведённом ниже коде.

Вначале указываются опции столбцов:

l — выравнивание столбца по левому краю

r — выравнивание столбца по правому краю

c — центрирование содержимого

| — вертикальная черта обозначает линию между столбцами

p{ширина} — фиксированная ширина столбца

Таблица
% Плавающие объекты
% \begin{figure}[!hbp]
% \begin{table}
% h - прямо по месту
% h! - настойчиво просим разместить прямо по месту
% H - прямо по месту и точка!
% b - на той же странице внизу
% p - на выделенной странице
% t - в верхней части страницы
% \caption - подпись к таблице, может располагаться
% вверху или внизу таблицы
\begin{table}[h] % расположение прямо по месту
\centering % центрируем
    \caption{Уровни социального статуса} % название
    \label{mytable} % метка
    \begin{tabular}{|l|l|r|r|r|} % выравнивание текста
    % заполняем, разделяя символом &
    \hline \No & Критерии & Низкий & Средний & Высокий \\ \hline
    1 & Социальный статус. Доход & 15,6 & 56,5 & 27,5 \\ \hline
    2 & Социальный статус. Образование & 9,0 & 48,6 & 44,0 \\ \hline
    3 & Социальный статус. Социально-должностная позиция & 2,8 & 57,5 & 14,5 \\ \hline
    \end{tabular} % закончили ввод данных таблицы
\end{table} % закрыли таблицу

Таким образом получим следующую таблицу:

table

Подсказка

Если таблица выходит за края документа, следует задать колонкам точный фиксированный размер.

\begin{table}[h] % расположение прямо по месту
\centering % центрируем
    \caption{Виды судимостей в \% соотношении} % название
    \label{sudimost} % метка
    \begin{tabular}{|p{3cm}|p{3cm}|r|r|r|} % выравнивание, ширина
    % заполняем, разделяя символом &
    \hline Судимость & Наркотизация в определении суда & Употребление & Хранение & Лечение \\ \hline
    Всего \% к общему числу опрошенных & 25,8\% & 19,5\% & 18,8\% & 42,0\% \\ \hline
    \end{tabular} % закончили ввод данных таблицы
\end{table} % закрыли таблицу

Так, {|p{3cm}|p{3cm}|r|r|r|} задаст первым двум колонкам фиксированный размер в 3cm.

Изображения

Для включения сложных рисунков лучше использовать внешние пакеты, а не стандартные средства LaTeX. В частности к таким пакетам относится graphicx. Поскольку на выходе нам нужно получить pdf-файл при помощи генерации его с pdflatex, файлы иллюстраций также должны быть подготовлены в pdf-формате или другом поддерживаемом формате(.png, .jpg). Это относится в частности к фотографиям. Рисунки, представляющие из себя чертежи или диаграммы следует готовить при помощи программ для работы с векторной графикой и не переводить в растровый формат.

\usepackage{graphicx} % подключаем graphicx
\begin{figure}[h] % фигура сразу под текстом
    \centering % отцентрировать
    % указание ширины и включение внешнего файла
    % с именем picture
    \includegraphics[width=0.9\textwidth]{picture}
    \caption{Диаграмма} % описание
    % метка, по которой можно будет
    % обращаться к элементу в тексте
    \label{diagramm}
\end{figure}
\end{document}

Получаем следующее:

images

Подсказка

Если изображение получилось слишком широким, можно уменьшить его, с помощью указания scale.

\begin{figure}[h!] % фигура сразу под текстом
    \centering{\includegraphics[scale=0.7]{percent}}
        \caption{Результаты диагностики шкалы риска }
        \label{percent}
\end{figure}

Программный код и математические формулы

С вводом программного кода всё достаточно просто: окружение verbatim поможет отобразить даже самый замысловатый программный код именно так, как он должен выглядеть. При этом будет использован моноширный шрифт.

Пример:

\begin{verbatim}
package = input('Choose file for sort: ')
try:
  file = open(package, 'r+')
  pos = 0
  line = file.readlines()
  file.seek(pos)
  sort_text = sorted(line)
  for new_line in sort_text:
      file.write(new_line)
      pos = file.tell()
      file.close()
  except IOError:
      print('No such file or directory. Repeat, please!')
\end{verbatim}
verbatim

Вводу математических формул посвящены целые главы. В первую очередь для этого и предназначен TeX. Поэтому данный вопрос не будет рассматриваться в обзоре, который и без того получился не самым коротким. Хотя ради иллюстрации всё же нужно продемонстрировать как выглядят формулы в LaTeX'e.

\newpage
Чтобы пронумеровать формулу, оберните её в процедуру \texttt{equation}:
\begin{equation}
    \int_{-\infty}^{\infty} dx \exp(-x^2) = \sqrt{\pi}
\end{equation}
form

Для полной поддержки математических формул в gentoo linux следует установить пакет texlive-mathextra. Формулы можно обернуть в квадратные скобки или вывести при помощи $\displaystyle$, вот так:

% квадратные скобки
\[
\neq A
\]
% или displaystyle
$\displaystyle{\neg A}$
$\displaystyle{A\vee B}$
$\displaystyle{A\supset B}$
$\displaystyle{A\equiv B}$
LaTeX Math

Список литературы для изучения LaTeX